<?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>161569</bug_id>
          
          <creation_ts>2016-09-03 12:12:50 -0700</creation_ts>
          <short_desc>Add support for WASM Loops and Branches</short_desc>
          <delta_ts>2016-09-07 10:14:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>146064</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1226150</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-03 12:12:50 -0700</bug_when>
    <thetext>Add support for WASM Loops and Branches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226152</commentid>
    <comment_count>1</comment_count>
      <attachid>287866</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-03 12:13:07 -0700</bug_when>
    <thetext>Created attachment 287866
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226734</commentid>
    <comment_count>2</comment_count>
      <attachid>288032</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-06 10:23:18 -0700</bug_when>
    <thetext>Created attachment 288032
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226850</commentid>
    <comment_count>3</comment_count>
      <attachid>288032</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-06 14:58:51 -0700</bug_when>
    <thetext>Comment on attachment 288032
Patch

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

&gt; Source/JavaScriptCore/wasm/WASMFunctionParser.h:173
&gt; +        case OpType::Loop: {
&gt; +            if (!m_context.addLoop())
&gt; +                return false;
&gt; +            return parseBlock();
&gt; +        }

I&apos;ll fix this indentation before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227003</commentid>
    <comment_count>4</comment_count>
      <attachid>288032</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-09-06 18:52:45 -0700</bug_when>
    <thetext>Comment on attachment 288032
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:19
&gt; +        Another interesting thing of note is that we now only allocate the
&gt; +        continuation basic block. This is beneficial when the continuation

we now only allocate the continuation basic block *lazily*?

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:48
&gt; +static const bool verbose = false;

In B3, we started using anonymous namespaces like LLVM. This would be in the anonymous namespace instead of being a static variable.

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:74
&gt; +        LazyBlock(BasicBlock* block)

You could have 
    LazyBlock() = default;
to simplify ControlData.

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:79
&gt; +        explicit operator bool() { return m_block; }

!!m_block

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:97
&gt; +        BasicBlock* m_block;

Can be 
    BasicBlock* m_block { nullptr; }

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:102
&gt; +        ControlData(Optional&lt;Vector&lt;Variable*&gt;&gt;&amp;&amp; _stack, BasicBlock* _loopTarget = nullptr)

What&apos;s with the &quot;_&quot; prefix of the variables? 

Shouldn&apos;t there be a ControlData() = default; too for when you start one of those?

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:103
&gt; +            : continuation(nullptr)

This could go away if you do the changes above.

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:125
&gt; +        bool isLoop() { return loopTarget; }

const + !!loopTarget

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:289
&gt; +        return true;

Since you are not changing m_currentBlock, wouldn&apos;t you add instruction past the terminal?

Say:
(block
  (block
      (foo)
      (return)
  )
  (bar)
)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227115</commentid>
    <comment_count>5</comment_count>
      <attachid>288032</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-09-07 02:08:22 -0700</bug_when>
    <thetext>Comment on attachment 288032
Patch

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

&gt; Source/JavaScriptCore/wasm/WASMCallingConvention.cpp:1
&gt; +/*

Please add this new file to the cmake buildsystem too - Source/JavaScriptCore/CMakeLists.txt
(Don&apos;t need to remove B3CallingConventions.cpp, because it wasn&apos;t added ever.)

&gt; Source/JavaScriptCore/wasm/WASMCallingConvention.cpp:31
&gt; +#include &lt;wtf/NeverDestroyed.h&gt;
&gt; +
&gt; +#if ENABLE(WEBASSEMBLY)

Please move this include after the #if guard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227125</commentid>
    <comment_count>6</comment_count>
      <attachid>288032</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-09-07 02:33:11 -0700</bug_when>
    <thetext>Comment on attachment 288032
Patch

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

&gt; Source/JavaScriptCore/wasm/WASMCallingConvention.cpp:35
&gt; +namespace JSC {
&gt; +
&gt; +namespace WASM {

Use namespace JSC { namespace WASM { style similar to all JSC sources.
It would be great if you could fix this style in other WASM sources too.

&gt; Source/JavaScriptCore/wasm/WASMCallingConvention.cpp:50
&gt; +} // namespace B3
&gt; +
&gt; +} // namespace JSC

} } // namespace JSC::WASM

&gt; Source/JavaScriptCore/wasm/WASMCallingConvention.h:40
&gt; +namespace JSC {
&gt; +
&gt; +namespace WASM {

ditto

&gt; Source/JavaScriptCore/wasm/WASMCallingConvention.h:92
&gt; +} // namespace WASM
&gt; +
&gt; +} // namespace JSC

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227195</commentid>
    <comment_count>7</comment_count>
      <attachid>288032</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-07 09:25:53 -0700</bug_when>
    <thetext>Comment on attachment 288032
Patch

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

&gt;&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:48
&gt;&gt; +static const bool verbose = false;
&gt; 
&gt; In B3, we started using anonymous namespaces like LLVM. This would be in the anonymous namespace instead of being a static variable.

Changed.

&gt;&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:102
&gt;&gt; +        ControlData(Optional&lt;Vector&lt;Variable*&gt;&gt;&amp;&amp; _stack, BasicBlock* _loopTarget = nullptr)
&gt; 
&gt; What&apos;s with the &quot;_&quot; prefix of the variables? 
&gt; 
&gt; Shouldn&apos;t there be a ControlData() = default; too for when you start one of those?

Whoops deleted. 

Right now we don&apos;t need one. Although when I add if I&apos;ll need to add one then.

&gt;&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:289
&gt;&gt; +        return true;
&gt; 
&gt; Since you are not changing m_currentBlock, wouldn&apos;t you add instruction past the terminal?
&gt; 
&gt; Say:
&gt; (block
&gt;   (block
&gt;       (foo)
&gt;       (return)
&gt;   )
&gt;   (bar)
&gt; )

Whoops I forgot to add the code that prevents adding instructions when we are in unreachable.

The change is to add a check at the top of parseExpression that just returns if we are in unreachable code. Unless the value is a control value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227224</commentid>
    <comment_count>8</comment_count>
      <attachid>288032</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-07 10:01:28 -0700</bug_when>
    <thetext>Comment on attachment 288032
Patch

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

&gt;&gt; Source/JavaScriptCore/wasm/WASMCallingConvention.cpp:31
&gt;&gt; +#if ENABLE(WEBASSEMBLY)
&gt; 
&gt; Please move this include after the #if guard.

Fixed.

&gt;&gt; Source/JavaScriptCore/wasm/WASMCallingConvention.cpp:35
&gt;&gt; +namespace WASM {
&gt; 
&gt; Use namespace JSC { namespace WASM { style similar to all JSC sources.
&gt; It would be great if you could fix this style in other WASM sources too.

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227238</commentid>
    <comment_count>9</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-07 10:14:15 -0700</bug_when>
    <thetext>Committed r205552: &lt;http://trac.webkit.org/changeset/205552&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287866</attachid>
            <date>2016-09-03 12:13:07 -0700</date>
            <delta_ts>2016-09-06 10:23:15 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-161569-20160903121048.patch</filename>
            <type>text/plain</type>
            <size>57875</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
M2M2ODBkY2U3ZGU2NmE1MTBhN2U2NTMyNGQyZTYxNGVhYzZlYjI5Li4zNWZmYjA0NjU0MmM2MTYx
YTNhMGE3YWEwMjkzMTk3YmQ2Njg4ODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAxNi0wOS0wMyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV0FTTSBMb29wcyBhbmQgQnJhbmNoZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTU2OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQjNDYWxs
aW5nQ29udmVudGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6anNjQ2FsbGluZ0NvbnZlbnRp
b24pOiBEZWxldGVkLgorICAgICAgICAqIEIzQ2FsbGluZ0NvbnZlbnRpb25zLmg6CisgICAgICAg
IChKU0M6OkIzOjpDYWxsaW5nQ29udmVudGlvbjo6Q2FsbGluZ0NvbnZlbnRpb24pOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6Q2FsbGluZ0NvbnZlbnRpb246Oml0ZXJhdGUpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6bmV4dEpTQ09mZnNldCk6IERlbGV0ZWQuCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiMy9C
M1R5cGUuaDoKKyAgICAgICAgKiB0ZXN0V0FTTS5jcHA6CisgICAgICAgIChydW5XQVNNVGVzdHMp
OgorICAgICAgICAqIHdhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpX
QVNNOjpCM0lSR2VuZXJhdG9yOjpMYXp5QmxvY2s6OkxhenlCbG9jayk6CisgICAgICAgIChKU0M6
OldBU006OkIzSVJHZW5lcmF0b3I6OkxhenlCbG9jazo6b3BlcmF0b3IgYm9vbCk6CisgICAgICAg
IChKU0M6OldBU006OkIzSVJHZW5lcmF0b3I6OkxhenlCbG9jazo6Z2V0KToKKyAgICAgICAgKEpT
Qzo6V0FTTTo6QjNJUkdlbmVyYXRvcjo6TGF6eUJsb2NrOjpkdW1wKToKKyAgICAgICAgKEpTQzo6
V0FTTTo6QjNJUkdlbmVyYXRvcjo6Q29udHJvbERhdGE6OkNvbnRyb2xEYXRhKToKKyAgICAgICAg
KEpTQzo6V0FTTTo6QjNJUkdlbmVyYXRvcjo6Q29udHJvbERhdGE6OmR1bXApOgorICAgICAgICAo
SlNDOjpXQVNNOjpCM0lSR2VuZXJhdG9yOjpDb250cm9sRGF0YTo6dGFyZ2V0QmxvY2tGb3JCcmFu
Y2gpOgorICAgICAgICAoSlNDOjpXQVNNOjpCM0lSR2VuZXJhdG9yOjpDb250cm9sRGF0YTo6aXNM
b29wKToKKyAgICAgICAgKEpTQzo6V0FTTTo6QjNJUkdlbmVyYXRvcjo6YWRkTG9jYWwpOgorICAg
ICAgICAoSlNDOjpXQVNNOjpCM0lSR2VuZXJhdG9yOjphZGRBcmd1bWVudHMpOgorICAgICAgICAo
SlNDOjpXQVNNOjpCM0lSR2VuZXJhdG9yOjpzZXRMb2NhbCk6CisgICAgICAgIChKU0M6OldBU006
OkIzSVJHZW5lcmF0b3I6OmFkZEJsb2NrKToKKyAgICAgICAgKEpTQzo6V0FTTTo6QjNJUkdlbmVy
YXRvcjo6YWRkTG9vcCk6CisgICAgICAgIChKU0M6OldBU006OkIzSVJHZW5lcmF0b3I6OmVuZEJs
b2NrKToKKyAgICAgICAgKEpTQzo6V0FTTTo6QjNJUkdlbmVyYXRvcjo6YWRkUmV0dXJuKToKKyAg
ICAgICAgKEpTQzo6V0FTTTo6QjNJUkdlbmVyYXRvcjo6YWRkQnJhbmNoKToKKyAgICAgICAgKEpT
Qzo6V0FTTTo6QjNJUkdlbmVyYXRvcjo6aW5pdGlhbGl6ZUluY29tbWluZ1R5cGVzKToKKyAgICAg
ICAgKEpTQzo6V0FTTTo6QjNJUkdlbmVyYXRvcjo6dW5pZnlWYWx1ZXNXaXRoQmxvY2spOgorICAg
ICAgICAoSlNDOjpXQVNNOjpCM0lSR2VuZXJhdG9yOjpjb250cm9sRGF0YUZvckxldmVsKToKKyAg
ICAgICAgKEpTQzo6V0FTTTo6QjNJUkdlbmVyYXRvcjo6ZHVtcEdyYXBoQW5kQ29udHJvbFN0YWNr
KToKKyAgICAgICAgKEpTQzo6V0FTTTo6cGFyc2VBbmRDb21waWxlKToKKyAgICAgICAgKEpTQzo6
V0FTTTo6QjNJUkdlbmVyYXRvcjo6dW5pZnlWYWx1ZXNXaXRoTGV2ZWwpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpXQVNNOjpCM0lSR2VuZXJhdG9yOjpzdGFja0ZvckNvbnRyb2xMZXZlbCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OldBU006OkIzSVJHZW5lcmF0b3I6OmJsb2NrRm9yQ29udHJv
bExldmVsKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL1dBU01DYWxsaW5nQ29udmVudGlvbi5j
cHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQjNDYWxsaW5nQ29udmVudGlv
bnMuY3BwLgorICAgICAgICAoSlNDOjpXQVNNOjpqc2NDYWxsaW5nQ29udmVudGlvbik6CisgICAg
ICAgICogd2FzbS9XQVNNQ2FsbGluZ0NvbnZlbnRpb24uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9CM0NhbGxpbmdDb252ZW50aW9ucy5oLgorICAgICAgICAoSlNDOjpXQVNN
OjpDYWxsaW5nQ29udmVudGlvbjo6Q2FsbGluZ0NvbnZlbnRpb24pOgorICAgICAgICAoSlNDOjpX
QVNNOjpDYWxsaW5nQ29udmVudGlvbjo6aXRlcmF0ZSk6CisgICAgICAgIChKU0M6OldBU006Om5l
eHRKU0NPZmZzZXQpOgorICAgICAgICAqIHdhc20vV0FTTUZvcm1hdC5oOgorICAgICAgICAoSlND
OjpXQVNNOjp0b0IzVHlwZSk6CisgICAgICAgIChKU0M6OldBU006OmlzVmFsdWVUeXBlKToKKyAg
ICAgICAgKiB3YXNtL1dBU01GdW5jdGlvblBhcnNlci5oOgorICAgICAgICAoSlNDOjpXQVNNOjpG
dW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2UpOgorICAgICAgICAoSlNDOjpXQVNNOjpGdW5j
dGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dB
U01Nb2R1bGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXQVNNOjpNb2R1bGVQYXJzZXI6OnBh
cnNlRnVuY3Rpb25UeXBlcyk6CisgICAgICAgICogd2FzbS9XQVNNT3BzLmg6CisKIDIwMTYtMDkt
MDEgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAgICAgICAgIGpzYzogcHJv
dmlkZSBwcmludEVycigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQjNDYWxs
aW5nQ29udmVudGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0IzQ2FsbGluZ0NvbnZl
bnRpb25zLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjlhZWZmMmM0NDgyNGFh
MGYxNTliY2RkNmQ0MWJiZDNmNzFkNGJhZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQjNDYWxsaW5nQ29udmVudGlv
bnMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJCM0NhbGxpbmdDb252ZW50aW9ucy5oIgotCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+Ci0KLSNpZiBFTkFCTEUoQjNfSklUKQotCi1uYW1lc3BhY2UgSlNDIHsKLQotbmFtZXNwYWNl
IEIzIHsKLQotSlNDQ2FsbGluZ0NvbnZlbnRpb24mIGpzY0NhbGxpbmdDb252ZW50aW9uKCkKLXsK
LSAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPEpTQ0NhbGxpbmdDb252ZW50aW9uPiBzdGF0
aWNKU0NDYWxsaW5nQ29udmVudGlvbjsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgc3RhdGlj
SlNDQ2FsbGluZ0NvbnZlbnRpb25GbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKHN0YXRpY0pTQ0Nh
bGxpbmdDb252ZW50aW9uRmxhZywgW10gKCkgewotICAgICAgICBzdGF0aWNKU0NDYWxsaW5nQ29u
dmVudGlvbi5jb25zdHJ1Y3QoVmVjdG9yPEdQUlJlZz4oKSwgUmVnaXN0ZXJTZXQ6OmNhbGxlZVNh
dmVSZWdpc3RlcnMoKSk7Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gc3RhdGljSlNDQ2FsbGluZ0Nv
bnZlbnRpb247Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEIzCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwot
Ci0jZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9CM0NhbGxpbmdDb252ZW50aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0IzQ2Fs
bGluZ0NvbnZlbnRpb25zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyNGQ4Zjk0
N2I2Y2IyN2RhNWFhMjY5MjFmYmNkYjFkOGVmYTY0MTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0IzQ2FsbGluZ0Nv
bnZlbnRpb25zLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoQjNfSklUKQotCi0jaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCi0jaW5jbHVkZSAi
QjNCYXNpY0Jsb2NrLmgiCi0jaW5jbHVkZSAiQjNDb25zdDY0VmFsdWUuaCIKLSNpbmNsdWRlICJC
M01lbW9yeVZhbHVlLmgiCi0jaW5jbHVkZSAiQjNUeXBlLmgiCi0jaW5jbHVkZSAiQ2FsbEZyYW1l
LmgiCi0jaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLW5hbWVz
cGFjZSBCMyB7Ci0KLXR5cGVkZWYgdW5zaWduZWQgKCpOZXh0T2Zmc2V0KSh1bnNpZ25lZCBjdXJy
ZW50T2Zmc2V0LCBUeXBlIHR5cGUpOwotCi10ZW1wbGF0ZTx1bnNpZ25lZCBvZmZzZXQsIE5leHRP
ZmZzZXQgdXBkYXRlT2Zmc2V0PgotY2xhc3MgQ2FsbGluZ0NvbnZlbnRpb24gewotcHVibGljOgot
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoZWFkZXJTaXplID0gb2Zmc2V0OwotCi0gICAgQ2Fs
bGluZ0NvbnZlbnRpb24oVmVjdG9yPEdQUlJlZz4mJiByZWdpc3RlckFyZ3VtZW50cywgUmVnaXN0
ZXJTZXQmJiBjYWxsZWVTYXZlUmVnaXN0ZXJzKQotICAgICAgICA6IG1fcmVnaXN0ZXJBcmd1bWVu
dHMocmVnaXN0ZXJBcmd1bWVudHMpCi0gICAgICAgICwgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzKGNh
bGxlZVNhdmVSZWdpc3RlcnMpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+Ci0gICAgdm9pZCBpdGVyYXRlKGNvbnN0IFZlY3RvcjxUeXBlPiYgYXJndW1lbnRU
eXBlcywgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaywgT3JpZ2luIG9yaWdpbiwg
Y29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGN1
cnJlbnRPZmZzZXQgPSBoZWFkZXJTaXplOwotICAgICAgICBWYWx1ZSogZnJhbWVQb2ludGVyID0g
YmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRnJhbWVQb2ludGVyLCBvcmlnaW4pOwotCi0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudFR5cGVzLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgICAgICBWYWx1ZSogYXJndW1lbnQ7Ci0gICAgICAgICAgICBpZiAoaSA8IG1f
cmVnaXN0ZXJBcmd1bWVudHMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIGFyZ3VtZW50ID0gYmxv
Y2stPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBvcmlnaW4sIG1fcmVnaXN0ZXJB
cmd1bWVudHNbaV0pOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgVmFsdWUq
IGFkZHJlc3MgPSBibG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIG9yaWdpbiwgZnJh
bWVQb2ludGVyLAotICAgICAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3PENvbnN0NjRW
YWx1ZT4ocHJvYywgb3JpZ2luLCBjdXJyZW50T2Zmc2V0KSk7Ci0gICAgICAgICAgICAgICAgYXJn
dW1lbnQgPSBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBhcmd1bWVu
dFR5cGVzW2ldLCBvcmlnaW4sIGFkZHJlc3MpOwotICAgICAgICAgICAgICAgIGN1cnJlbnRPZmZz
ZXQgPSB1cGRhdGVPZmZzZXQoY3VycmVudE9mZnNldCwgYXJndW1lbnRUeXBlc1tpXSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBmdW5jdG9yKGFyZ3VtZW50LCBpKTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIGNvbnN0IFZlY3RvcjxHUFJSZWc+IG1fcmVnaXN0ZXJBcmd1bWVudHM7Ci0g
ICAgY29uc3QgUmVnaXN0ZXJTZXQgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOwotICAgIGNvbnN0IFJl
Z2lzdGVyU2V0IG1fY2FsbGVyU2F2ZVJlZ2lzdGVyczsKLX07Ci0KLWlubGluZSB1bnNpZ25lZCBu
ZXh0SlNDT2Zmc2V0KHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQsIFR5cGUpCi17Ci0gICAgcmV0dXJu
IGN1cnJlbnRPZmZzZXQgKyBzaXplb2YoUmVnaXN0ZXIpOwotfQotCi1jb25zdGV4cHIgdW5zaWdu
ZWQganNjSGVhZGVyU2l6ZSA9IEV4ZWNTdGF0ZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzICogc2l6
ZW9mKFJlZ2lzdGVyKTsKLXR5cGVkZWYgQ2FsbGluZ0NvbnZlbnRpb248anNjSGVhZGVyU2l6ZSwg
bmV4dEpTQ09mZnNldD4gSlNDQ2FsbGluZ0NvbnZlbnRpb247Ci0KLUpTQ0NhbGxpbmdDb252ZW50
aW9uJiBqc2NDYWxsaW5nQ29udmVudGlvbigpOwotCi19IC8vIG5hbWVzcGFjZSBCMwotCi19IC8v
IG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGY0OWFiNjA3YTBkYzE0YzYyZjQ0YjRlNDdkNjRiNmUxZGViMmJi
NWQuLmMzZDc5YmU0ODBkOWVhZmUwZGI3NGZmYTg0MmE2YTY5MDVlZTg1ZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTc5LDcgKzExNzksNiBAQAogCQk1MkM5NTJCOTE5QTI4
QTFDMDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQzk1MkI4MTlBMjhBMUMwMDY5QjM4NiAvKiBUeXBlUHJv
ZmlsZXIuY3BwICovOyB9OwogCQk1MzEzNzRCRDFENUNFNjc2MDBBRjdBMEIgLyogV0FTTVBsYW4u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMTM3NEJD
MUQ1Q0U2NzYwMEFGN0EwQiAvKiBXQVNNUGxhbi5oICovOyB9OwogCQk1MzEzNzRCRjFENUNFOTUw
MDBBRjdBMEIgLyogV0FTTVBsYW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTMxMzc0QkUxRDVDRTk1MDAwQUY3QTBCIC8qIFdBU01QbGFuLmNwcCAq
LzsgfTsKLQkJNTMxQjNDODcxRDc0QzYwMzAwNUIzMjM2IC8qIEIzQ2FsbGluZ0NvbnZlbnRpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzFCM0M4
NjFENzRDNjAzMDA1QjMyMzYgLyogQjNDYWxsaW5nQ29udmVudGlvbnMuaCAqLzsgfTsKIAkJNTM0
ODZCQjcxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8q
IEpTVHlwZWRBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsg
fTsgfTsKIAkJNTM0ODZCQkIxQzE4RTg0NTAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ4NkJCQTFDMThF
ODQ1MDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmNwcCAqLzsgfTsKIAkJNTM0OTAyODUxQzcyNzZC
NzAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ5MDI4MjFDNzI0MkM4MDAxMkJDQjggLyogVHlwZWRB
cnJheUNUZXN0LmNwcCAqLzsgfTsKQEAgLTExODgsNyArMTE4Nyw2IEBACiAJCTUzNTI5QTRDMUM0
NTdCNzUwMDBCNDlDNiAvKiBBUElVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTM1MjlBNEIxQzQ1N0I3NTAwMEI0OUM2IC8qIEFQSVV0aWxzLmgg
Ki87IH07CiAJCTUzNzBCNEY1MUJGMjYyMDIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzNzBCNEYzMUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUlu
ZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcCAqLzsgfTsKIAkJNTM3MEI0RjYx
QkYyNjIwNTAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2lu
dEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
NzBCNEY0MUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdh
dGNocG9pbnRCYXNlLmggKi87IH07Ci0JCTUzODhCNDA0MUQ3NjY0MEIwMEQzRDg1MiAvKiBCM0Nh
bGxpbmdDb252ZW50aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1Mzg4QjQwMzFENzY2NDBCMDBEM0Q4NTIgLyogQjNDYWxsaW5nQ29udmVudGlv
bnMuY3BwICovOyB9OwogCQk1MzkxN0U3QjFCNzkwNkZBMDAwRUJEMzMgLyogSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzOTE3RTdBMUI3OTA2RTQwMDBFQkQzMyAvKiBKU0dlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oICovOyB9OwogCQk1MzlFQjA3OTFE
NTU2MDcwMDBDODJFRjcgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIg
LyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJCTUzOUVCMDdBMUQ1NTYwNzAwMEM4MkVG
NyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNj
cmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwpAQCAtMTIwNiw2ICsxMjA0LDggQEAKIAkJNTNGNkJG
NkQxQzNGMDYwQTAwRjQxRTVEIC8qIEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNkJGNkMx
QzNGMDYwQTAwRjQxRTVEIC8qIEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUzRkEyQUUx
MUNGMzdGM0YwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzRkEyQUUwMUNGMzdGM0YwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1M0ZBMkFFMzFDRjM4MDM5MDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkEyQUUyMUNGMzgwMzkwMDIyNzExRCAvKiBMTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwICovOyB9OworCQk1
M0ZEMDREMzFEN0FCMjc3MDAzMjg3RDMgLyogV0FTTUNhbGxpbmdDb252ZW50aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkQwNEQxMUQ3QUIx
ODcwMDMyODdEMyAvKiBXQVNNQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovOyB9OworCQk1M0ZEMDRE
NDFEN0FCMjkxMDAzMjg3RDMgLyogV0FTTUNhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0ZEMDREMjFEN0FCMTg3MDAzMjg3
RDMgLyogV0FTTUNhbGxpbmdDb252ZW50aW9uLmggKi87IH07CiAJCTVENUQ4QUQxMEUwRDBFQkUw
MEY5QzY5MiAvKiBsaWJlZGl0LmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUQ1RDhBRDAwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHls
aWIgKi87IH07CiAJCTVEQkIxNTFCMTMxRDBCMzEwMDU2QUQzNiAvKiB0ZXN0YXBpLmpzIGluIENv
cHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRE
ODU3NzQwQTQ2OTZDODAwMzIxNDZDIC8qIHRlc3RhcGkuanMgKi87IH07CiAJCTVEQkIxNTI1MTMx
RDBCRDcwMDU2QUQzNiAvKiBtaW5pZG9tLmpzIGluIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQxMjExMEQwQTQ4Nzg4NzAwNDgwMjU1IC8q
IG1pbmlkb20uanMgKi87IH07CkBAIC0zMzczLDcgKzMzNzMsNiBAQAogCQk1MkM5NTJCODE5QTI4
QTFDMDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVQ
cm9maWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTM3NEJDMUQ1Q0U2
NzYwMEFGN0EwQiAvKiBXQVNNUGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXQVNNUGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzEzNzRCRTFENUNF
OTUwMDBBRjdBMEIgLyogV0FTTVBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV0FTTVBsYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MzFC
M0M4NjFENzRDNjAzMDA1QjMyMzYgLyogQjNDYWxsaW5nQ29udmVudGlvbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQjNDYWxsaW5nQ29udmVudGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRB
cnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJyYXkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0ODZCQkExQzE4RTg0NTAwRjZGM0FGIC8q
IEpTVHlwZWRBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1R5cGVkQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ5MDI4MjFD
NzI0MkM4MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFR5cGVkQXJyYXlDVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMv
VHlwZWRBcnJheUNUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzODQs
NyArMzM4Myw2IEBACiAJCTUzNTI5QTRCMUM0NTdCNzUwMDBCNDlDNiAvKiBBUElVdGlscy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElVdGlscy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MzcwQjRGMzFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRC
YXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM3MEI0RjQxQkYyNUVBMjAw
NUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
VmFsdWVXYXRjaHBvaW50QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1Mzg4
QjQwMzFENzY2NDBCMDBEM0Q4NTIgLyogQjNDYWxsaW5nQ29udmVudGlvbnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQjNDYWxsaW5nQ29udmVudGlvbnMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzkxN0U3QTFCNzkwNkU0MDAwRUJEMzMgLyog
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5j
dGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM5MTdFN0MxQjc5MTEwNjAw
MEVCRDMzIC8qIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MzkxN0U4MzFCNzkxQ0I4MDAwRUJEMzMgLyogVHlwZWRBcnJheVBy
b3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9IFR5cGVk
QXJyYXlQcm90b3R5cGUuanM7IHBhdGggPSBidWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpz
OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CkBAIC0zNDA0LDYgKzM0MDIsOCBAQAogCQk1
M0Y2QkY2QzFDM0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9m
aWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVybmFsRnVuY3Rpb25B
bGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0ZBMkFF
MDFDRjM3RjNGMDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1M0ZBMkFFMjFDRjM4MDM5MDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2Fk
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2lu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRkQwNEQxMUQ3QUIxODcwMDMy
ODdEMyAvKiBXQVNNQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0FTTUNhbGxpbmdDb252ZW50aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTNGRDA0RDIxRDdBQjE4NzAwMzI4N0QzIC8qIFdBU01DYWxsaW5nQ29u
dmVudGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXQVNNQ2FsbGluZ0Nv
bnZlbnRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTkzRDQzQ0NBMEJCRTA2
RDg5QzU5NzA3IC8qIE1hcERhdGFJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1hcERhdGFJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVE
NUQ4QUQwMEUwRDBFQkUwMEY5QzY5MiAvKiBsaWJlZGl0LmR5bGliICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7
IG5hbWUgPSBsaWJlZGl0LmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGliZWRpdC5keWxpYjsgc291
cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJNURBRkQ2Q0IxNDZCNjg2MzAwRkJFRkI0IC8q
IEpTQy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBKU0MueGNjb25maWc7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC00Nzc5LDggKzQ3NzksNiBAQAogCQkJCURDRkRGQkQ3MUQxRjVEOTgw
MEZFM0Q3MiAvKiBCM0JvdHRvbVByb3ZpZGVyLmggKi8sCiAJCQkJMEY2QjhBREUxQzRFRkUxNzAw
OTY5MDUyIC8qIEIzQnJlYWtDcml0aWNhbEVkZ2VzLmNwcCAqLywKIAkJCQkwRjZCOEFERjFDNEVG
RTE3MDA5NjkwNTIgLyogQjNCcmVha0NyaXRpY2FsRWRnZXMuaCAqLywKLQkJCQk1Mzg4QjQwMzFE
NzY2NDBCMDBEM0Q4NTIgLyogQjNDYWxsaW5nQ29udmVudGlvbnMuY3BwICovLAotCQkJCTUzMUIz
Qzg2MUQ3NEM2MDMwMDVCMzIzNiAvKiBCM0NhbGxpbmdDb252ZW50aW9ucy5oICovLAogCQkJCURD
OUEwQzFDMUQyRDk0RUYwMDg1MTI0RSAvKiBCM0Nhc2VDb2xsZWN0aW9uLmNwcCAqLywKIAkJCQlE
QzlBMEMxRDFEMkQ5NEVGMDA4NTEyNEUgLyogQjNDYXNlQ29sbGVjdGlvbi5oICovLAogCQkJCURD
OUEwQzFFMUQyRDk0RUYwMDg1MTI0RSAvKiBCM0Nhc2VDb2xsZWN0aW9uSW5saW5lcy5oICovLApA
QCAtNTU3OCwxMCArNTU3NiwxMiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJN0I5OEQxMzQxQjYw
Q0Q1QTAwMjNCMUE0IC8qIEpTV0FTTU1vZHVsZS5jcHAgKi8sCiAJCQkJN0I5OEQxMzUxQjYwQ0Q1
QTAwMjNCMUE0IC8qIEpTV0FTTU1vZHVsZS5oICovLAotCQkJCTUzRjQwRTkwMUQ1OTAzMDIwMDk5
QTFCNiAvKiBXQVNNT3BzLmggKi8sCi0JCQkJN0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4IC8qIFdB
U01Gb3JtYXQuaCAqLywKIAkJCQk1M0Y0MEU4RTFENTkwMjgyMDA5OUExQjYgLyogV0FTTUIzSVJH
ZW5lcmF0b3IuY3BwICovLAogCQkJCTUzRjQwRTkyMUQ1QTRBQjMwMDk5QTFCNiAvKiBXQVNNQjNJ
UkdlbmVyYXRvci5oICovLAorCQkJCTUzRkQwNEQxMUQ3QUIxODcwMDMyODdEMyAvKiBXQVNNQ2Fs
bGluZ0NvbnZlbnRpb24uY3BwICovLAorCQkJCTUzRkQwNEQyMUQ3QUIxODcwMDMyODdEMyAvKiBX
QVNNQ2FsbGluZ0NvbnZlbnRpb24uaCAqLywKKwkJCQk1M0Y0MEU5MDFENTkwMzAyMDA5OUExQjYg
LyogV0FTTU9wcy5oICovLAorCQkJCTdCQzU0N0QyMUI2OTU5OUIwMDk1OUI1OCAvKiBXQVNNRm9y
bWF0LmggKi8sCiAJCQkJNTNGNDBFOEExRDU5MDFCQjAwOTlBMUI2IC8qIFdBU01GdW5jdGlvblBh
cnNlci5oICovLAogCQkJCTUzRjQwRTk2MUQ1QTdCRUMwMDk5QTFCNiAvKiBXQVNNTW9kdWxlUGFy
c2VyLmNwcCAqLywKIAkJCQk1M0Y0MEU5NDFENUE3QUVGMDA5OUExQjYgLyogV0FTTU1vZHVsZVBh
cnNlci5oICovLApAQCAtODIyMyw2ICs4MjIzLDcgQEAKIAkJCQk5OTZCNzMyNzFCREEwOEVGMDAz
MzFCODQgLyogU3ltYm9sQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDVC
NDFCMDFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjMzRkNGQzFDMTYyNUJFMDAzMjNGNjcgLyogQjNEb21pbmF0b3JzLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1M0ZEMDRENDFEN0FCMjkxMDAzMjg3RDMgLyogV0FTTUNhbGxpbmdDb252ZW50aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDVCNDFCMjFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9s
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTZCNzMyODFCREEwOEVGMDAzMzFCODQg
LyogU3ltYm9sUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NkIwRTE2
RjVDRDAwQjM0NDYwIC8qIFN5bWJvbFRhYmxlLmggaW4gSGVhZGVycyAqLywKQEAgLTgyNzEsNyAr
ODI3Miw2IEBACiAJCQkJOTlEQTAwQjExQkQ1OTk0RTAwRjQ1NzVDIC8qIFVwZGF0ZUNvbnRlbnRz
LnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NjNCMzgxM0ZDNkZFOTAwMDJEOUIyIC8qIFZhbHVl
UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0MjZBNDgxNDYwQ0JCMzAwMTMxRjhGIC8q
IFZhbHVlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovLAotCQkJCTUzMUIzQzg3MUQ3NEM2MDMwMDVC
MzIzNiAvKiBCM0NhbGxpbmdDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlFRTBD
MDAxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNkM3MzUxMUFDOUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRlRmlyZURldGFp
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMkQxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9m
ZnNldC5oIGluIEhlYWRlcnMgKi8sCkBAIC04OTIzLDcgKzg5MjMsNiBAQAogCQkJCTcwOTRDNERF
MUFFNDM5NTMwMDQxQTJFRSAvKiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUMyRkNBRTEyMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzMzhFMEQxQkYwMjc2QzAwMTNDODhG
IC8qIEIzRGF0YVNlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTM4OEI0MDQxRDc2NjQw
QjAwRDNEODUyIC8qIEIzQ2FsbGluZ0NvbnZlbnRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTY1QjgzOTJGMUJBQ0FENkEwMDQ0RTgyNCAvKiBDYWNoZWRSZWNvdmVyeS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDI4MDgyRDEwN0VDMDU3MDAxM0U3QjIgLyogQ2FsbERhdGEuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY2NEIyNzkxQTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmNwcCBp
biBTb3VyY2VzICovLApAQCAtOTA1Niw2ICs5MDU1LDcgQEAKIAkJCQkwRkM5N0YzRjE4MjAyMTE5
MDAyQzlCMjYgLyogREZHSnVtcFJlcGxhY2VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZF
QTBDNDAyMUNERDdEMUQwMDQ4MTk5MSAvKiBGdW5jdGlvbldoaXRlbGlzdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNzNBNTM1QTE3OTlDRDVEMDAxNzBDMTkgLyogREZHTGF6eUpTVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTNGRDA0RDMxRDdBQjI3NzAwMzI4N0QzIC8qIFdBU01DYWxs
aW5nQ29udmVudGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2MkYyQUEzNzFCMEJFREUzMDA2
MTBDN0EgLyogREZHTGF6eU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEOUEyOTcxN0Ew
QkM3NDAwRUUyNjE4IC8qIERGR0xJQ01QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3OUM0
QjE1RDFCQTIxNThGMDBGRDU5MkUgLyogREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25Q
aGFzZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuaAppbmRleCAy
OWI3ZDM2ZjI4Y2UwMDc2NjNlNjdjNDQ5NWFmYzdkYTk2MTgyZThjLi4zOGQ1NzcxYjFmZTdiZTA3
NjlkOTBlM2U1NDNjMGQ5MmFhOThiMjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5oCkBA
IC0zOSwxMiArMzksMTEgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCiBlbnVt
IFR5cGUgOiBpbnQ4X3QgeworICAgIFZvaWQsCiAgICAgSW50MzIsCiAgICAgSW50NjQsCiAgICAg
RmxvYXQsCiAgICAgRG91YmxlLAotICAgIExhc3RWYWx1ZVR5cGUgPSBEb3VibGUsCi0gICAgVm9p
ZAogfTsKIAogaW5saW5lIGJvb2wgaXNJbnQoVHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RXQVNNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
V0FTTS5jcHAKaW5kZXggODkzMjc5YjcyYzdmODFiMWY5OGQ3ZTA4NjBhMjc5Y2NkMDkxZWE3ZC4u
YjU4ZjA0MTg3ZDk4ZjI2ZDUyNzhlZDVkYzI5NzI0MmUwNTExYzk5YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RXQVNNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdFdBU00uY3BwCkBAIC0zMjksMTEgKzMyOSwxODcgQEAgc3RhdGljIHZvaWQgcnVuV0FT
TVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNo
LgotICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHti
b3goMCksIGJveCgxKX0pID09IDEpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnZva2U8aW50
PigqcGxhbi5yZXN1bHRbMF0sIHtib3goMTAwKSwgYm94KDEpfSkgPT0gMTAxKTsKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7Ym94KC0xKSwgYm94
KDEpfSkgPT0gMCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXSwge2JveChzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSwgYm94KDEpfSkg
PT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCksIGJveCgxKSB9KSA9PSAx
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7
IGJveCgxMDApLCBib3goMSkgfSkgPT0gMTAxKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW52
b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgtMSksIGJveCgxKX0gKSA9PSAwKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveChz
dGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSwgYm94KDEpIH0pID09IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50Pjo6bWluKCkpOwogICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJh
dGVkIGZyb206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChmdW5jICJs
b2NhbHMiIChwYXJhbSAkeCBpMzIpIChyZXN1bHQgaTMyKSAobG9jYWwgJG51bSBpMzIpCisgICAg
ICAgIC8vICAgICAgKHNldF9sb2NhbCAkbnVtIChnZXRfbG9jYWwgJHgpKQorICAgICAgICAvLyAg
ICAgIChyZXR1cm4gKGdldF9sb2NhbCAkbnVtKSkKKyAgICAgICAgLy8gICAgICApCisgICAgICAg
IC8vICAgICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAg
ICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAw
eDc0LCAweDc5LCAweDcwLCAweDY1LCAweDg2LCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgw
MCwgMHgwMSwgMHg0MCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwOCwgMHg2NiwgMHg3NSwg
MHg2ZSwgMHg2MywgMHg3NCwgMHg2OSwgMHg2ZiwgMHg2ZSwKKyAgICAgICAgICAgIDB4ODIsIDB4
ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDYsIDB4NjUsIDB4NzgsIDB4NzAsIDB4NmYs
IDB4NzIsIDB4NzQsIDB4ODksIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAxLCAw
eDAwLCAweDA2LCAweDZjLCAweDZmLCAweDYzLCAweDYxLCAweDZjLCAweDczLCAweDA0LCAweDYz
LCAweDZmLCAweDY0LCAweDY1LCAweDkxLAorICAgICAgICAgICAgMHg4MCwgMHg4MCwgMHgwMCwg
MHgwMSwgMHg4YywgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgxNCwgMHgw
MCwgMHgxNSwgMHgwMSwgMHgxNCwKKyAgICAgICAgICAgIDB4MDEsIDB4MDksIDB4MDEsIDB4MGYK
KyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBp
ZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAgICAg
ICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7Cisg
ICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRv
ZXNuJ3QgY3Jhc2guCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXSwgeyBib3goMCkgfSkgPT0gMCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGludm9r
ZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMTApIH0pID09IDEwKTsKKyAgICB9CisKKyAg
ICB7CisgICAgICAgIC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAvLyAgICAobW9kdWxlCisg
ICAgICAgIC8vICAgICAoZnVuYyAiZHVtYi1tdWx0IiAocGFyYW0gJHggaTMyKSAocGFyYW0gJHkg
aTMyKSAocmVzdWx0IGkzMikgKGxvY2FsICR0b3RhbCBpMzIpIChsb2NhbCAkaSBpMzIpIChsb2Nh
bCAkaiBpMzIpCisgICAgICAgIC8vICAgICAgKHNldF9sb2NhbCAkdG90YWwgKGkzMi5jb25zdCAw
KSkKKyAgICAgICAgLy8gICAgICAoc2V0X2xvY2FsICRpIChpMzIuY29uc3QgMCkpCisgICAgICAg
IC8vICAgICAgKGJsb2NrCisgICAgICAgIC8vICAgICAgIChsb29wCisgICAgICAgIC8vICAgICAg
ICAoYnJfaWYgMSAoaTMyLmVxIChnZXRfbG9jYWwgJGkpIChnZXRfbG9jYWwgJHgpKSkKKyAgICAg
ICAgLy8gICAgICAgIChzZXRfbG9jYWwgJGogKGkzMi5jb25zdCAwKSkKKyAgICAgICAgLy8gICAg
ICAgIChzZXRfbG9jYWwgJGkgKGkzMi5hZGQgKGdldF9sb2NhbCAkaSkgKGkzMi5jb25zdCAxKSkp
CisgICAgICAgIC8vICAgICAgICAobG9vcAorICAgICAgICAvLyAgICAgICAgIChicl9pZiAxIChp
MzIuZXEgKGdldF9sb2NhbCAkaikgKGdldF9sb2NhbCAkeSkpKQorICAgICAgICAvLyAgICAgICAg
IChzZXRfbG9jYWwgJHRvdGFsIChpMzIuYWRkIChnZXRfbG9jYWwgJHRvdGFsKSAoaTMyLmNvbnN0
IDEpKSkKKyAgICAgICAgLy8gICAgICAgICAoc2V0X2xvY2FsICRqIChpMzIuYWRkIChnZXRfbG9j
YWwgJGopIChpMzIuY29uc3QgMSkpKQorICAgICAgICAvLyAgICAgICAgIChiciAwKQorICAgICAg
ICAvLyAgICAgICAgICkKKyAgICAgICAgLy8gICAgICAgICkKKyAgICAgICAgLy8gICAgICAgKQor
ICAgICAgICAvLyAgICAgIChyZXR1cm4gKGdldF9sb2NhbCAkdG90YWwpKQorICAgICAgICAvLyAg
ICAgICkKKyAgICAgICAgLy8gICAgICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9
IHsKKyAgICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4MDQsIDB4NzQsIDB4NzksIDB4NzAsIDB4NjUsIDB4ODYsIDB4ODAsIDB4ODAsCisg
ICAgICAgICAgICAweDAwLCAweDAxLCAweDQwLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDA4
LCAweDY2LCAweDc1LCAweDZlLCAweDYzLCAweDc0LCAweDY5LCAweDZmLCAweDZlLAorICAgICAg
ICAgICAgMHg4MiwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwNiwgMHg2NSwgMHg3
OCwgMHg3MCwgMHg2ZiwgMHg3MiwgMHg3NCwgMHg4NiwgMHg4MCwgMHg4MCwKKyAgICAgICAgICAg
IDB4MDAsIDB4MDEsIDB4MDAsIDB4MDMsIDB4NzMsIDB4NzUsIDB4NmQsIDB4MDQsIDB4NjMsIDB4
NmYsIDB4NjQsIDB4NjUsIDB4YWUsIDB4ODAsIDB4ODAsIDB4MDAsCisgICAgICAgICAgICAweDAx
LCAweGE5LCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDEwLCAweDAwLCAw
eDE1LCAweDAxLCAweDAyLCAweDAxLCAweDE0LCAweDAwLAorICAgICAgICAgICAgMHgxMCwgMHgw
MCwgMHg0ZCwgMHgwNywgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHgxNCwgMHgwMSwgMHg0MCwg
MHgxNSwgMHgwMSwgMHgxNCwgMHgwMCwgMHgxMCwKKyAgICAgICAgICAgIDB4MDEsIDB4NDEsIDB4
MTUsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDEsIDB4MGYsIDB4MGYsIDB4MTQsIDB4MDEsIDB4MDks
IDB4MDEsIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3Ip
OworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBd
KSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3Jy
ZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8g
VGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGludm9rZTxp
bnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCkgfSkgPT0gMCk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSkgfSkgPT0gMSk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3go
Mil9ICkgPT0gMyk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXSwgeyBib3goMTAwKSB9KSA9PSA1MDUwKTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IC8vIEdlbmVyYXRlZCBmcm9tOgorICAgICAgICAvLyAgICAobW9kdWxlCisgICAgICAgIC8vICAg
ICAoZnVuYyAiZHVtYi1tdWx0IiAocGFyYW0gJHggaTMyKSAocGFyYW0gJHkgaTMyKSAocmVzdWx0
IGkzMikgKGxvY2FsICR0b3RhbCBpMzIpIChsb2NhbCAkaSBpMzIpIChsb2NhbCAkaiBpMzIpCisg
ICAgICAgIC8vICAgICAgKHNldF9sb2NhbCAkdG90YWwgKGkzMi5jb25zdCAwKSkKKyAgICAgICAg
Ly8gICAgICAoc2V0X2xvY2FsICRpIChpMzIuY29uc3QgMCkpCisgICAgICAgIC8vICAgICAgKGJs
b2NrIChsb29wCisgICAgICAgIC8vICAgICAgICAgICAgICAoYnJfaWYgMSAoaTMyLmVxIChnZXRf
bG9jYWwgJGkpIChnZXRfbG9jYWwgJHgpKSkKKyAgICAgICAgLy8gICAgICAgICAgICAgIChzZXRf
bG9jYWwgJGogKGkzMi5jb25zdCAwKSkKKyAgICAgICAgLy8gICAgICAgICAgICAgIChzZXRfbG9j
YWwgJGkgKGkzMi5hZGQgKGdldF9sb2NhbCAkaSkgKGkzMi5jb25zdCAxKSkpCisgICAgICAgIC8v
ICAgICAgICAgICAgICAobG9vcAorICAgICAgICAvLyAgICAgICAgICAgICAgIChicl9pZiAxIChp
MzIuZXEgKGdldF9sb2NhbCAkaikgKGdldF9sb2NhbCAkeSkpKQorICAgICAgICAvLyAgICAgICAg
ICAgICAgIChzZXRfbG9jYWwgJHRvdGFsIChpMzIuYWRkIChnZXRfbG9jYWwgJHRvdGFsKSAoaTMy
LmNvbnN0IDEpKSkKKyAgICAgICAgLy8gICAgICAgICAgICAgICAoc2V0X2xvY2FsICRqIChpMzIu
YWRkIChnZXRfbG9jYWwgJGopIChpMzIuY29uc3QgMSkpKQorICAgICAgICAvLyAgICAgICAgICAg
ICAgIChiciAwKQorICAgICAgICAvLyAgICAgICAgICAgICAgICkKKyAgICAgICAgLy8gICAgICAg
ICAgICAgICkpCisgICAgICAgIC8vICAgICAgKHJldHVybiAoZ2V0X2xvY2FsICR0b3RhbCkpCisg
ICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBWZWN0b3I8dWludDhf
dD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwYywg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg3NCwgMHg3OSwgMHg3MCwgMHg2NSwgMHg4NywgMHg4
MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4NDAsIDB4MDIsIDB4MDEsIDB4MDEs
IDB4MDEsIDB4MDEsIDB4MDgsIDB4NjYsIDB4NzUsIDB4NmUsIDB4NjMsIDB4NzQsIDB4NjksIDB4
NmYsCisgICAgICAgICAgICAweDZlLCAweDgyLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAw
LCAweDA2LCAweDY1LCAweDc4LCAweDcwLCAweDZmLCAweDcyLCAweDc0LCAweDhjLCAweDgwLAor
ICAgICAgICAgICAgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwOSwgMHg2NCwgMHg3NSwgMHg2
ZCwgMHg2MiwgMHgyZCwgMHg2ZCwgMHg3NSwgMHg2YywgMHg3NCwgMHgwNCwgMHg2MywKKyAgICAg
ICAgICAgIDB4NmYsIDB4NjQsIDB4NjUsIDB4YzcsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4
YzIsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDMsIDB4MDEsIDB4MTAsCisgICAgICAgICAg
ICAweDAwLCAweDE1LCAweDAyLCAweDEwLCAweDAwLCAweDE1LCAweDAzLCAweDAxLCAweDAyLCAw
eDE0LCAweDAzLCAweDE0LCAweDAwLCAweDRkLCAweDA3LCAweDAwLAorICAgICAgICAgICAgMHgw
MSwgMHgxMCwgMHgwMCwgMHgxNSwgMHgwNCwgMHgxNCwgMHgwMywgMHgxMCwgMHgwMSwgMHg0MCwg
MHgxNSwgMHgwMywgMHgwMiwgMHgxNCwgMHgwNCwgMHgxNCwKKyAgICAgICAgICAgIDB4MDEsIDB4
NGQsIDB4MDcsIDB4MDAsIDB4MDEsIDB4MTQsIDB4MDIsIDB4MTAsIDB4MDEsIDB4NDAsIDB4MTUs
IDB4MDIsIDB4MTQsIDB4MDQsIDB4MTAsIDB4MDEsCisgICAgICAgICAgICAweDQwLCAweDE1LCAw
eDA0LCAweDA2LCAweDAwLCAweDAwLCAweDBmLCAweDBmLCAweDBmLCAweDE0LCAweDAyLCAweDA5
LCAweDAxLCAweDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVjdG9y
KTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3VsdFsw
XSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUgY29y
cmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDApLCBib3goMSkgfSkgPT0gMCk7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJv
eCgwKSB9KSA9PSAwKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDEpIH0pID09IDIpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMikgfSkgPT0g
Mik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwg
eyBib3goMiksIGJveCgyKSB9KSA9PSA0KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDYpIH0pID09IDEyKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMDAp
LCBib3goNikgfSkgPT0gNjAwKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxMDApLCBib3goMTAwKSB9KSA9PSAxMDAwMCk7CisgICAg
fQorCisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbToKKyAgICAgICAgLy8gICAgKG1v
ZHVsZQorICAgICAgICAvLyAgICAgKGZ1bmMgImR1bWItbGVzcy10aGFuIiAocGFyYW0gJHggaTMy
KSAocGFyYW0gJHkgaTMyKSAocmVzdWx0IGkzMikKKyAgICAgICAgLy8gICAgICAobG9vcAorICAg
ICAgICAvLyAgICAgICAoYmxvY2sKKyAgICAgICAgLy8gICAgICAgIChibG9jaworICAgICAgICAv
LyAgICAgICAgIChicl9pZiAwIChpMzIuZXEgKGdldF9sb2NhbCAkeCkgKGkzMi5jb25zdCAwKSkp
CisgICAgICAgIC8vICAgICAgICAgKGJyIDEpCisgICAgICAgIC8vICAgICAgICAgKQorICAgICAg
ICAvLyAgICAgICAgKHJldHVybiAoaTMyLmNvbnN0IDEpKQorICAgICAgICAvLyAgICAgICAgKQor
ICAgICAgICAvLyAgICAgICAoYmxvY2sKKyAgICAgICAgLy8gICAgICAgIChibG9jaworICAgICAg
ICAvLyAgICAgICAgIChicl9pZiAwIChpMzIuZXEgKGdldF9sb2NhbCAkeCkgKGdldF9sb2NhbCAk
eSkpKQorICAgICAgICAvLyAgICAgICAgIChiciAxKQorICAgICAgICAvLyAgICAgICAgICkKKyAg
ICAgICAgLy8gICAgICAgIChyZXR1cm4gKGkzMi5jb25zdCAwKSkKKyAgICAgICAgLy8gICAgICAg
ICkKKyAgICAgICAgLy8gICAgICAgKHNldF9sb2NhbCAkeCAoaTMyLnN1YiAoZ2V0X2xvY2FsICR4
KSAoaTMyLmNvbnN0IDEpKSkKKyAgICAgICAgLy8gICAgICAgKGJyIDApCisgICAgICAgIC8vICAg
ICAgICkKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAgICApCisgICAgICAgIFZlY3Rv
cjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAweDYxLCAweDczLCAweDZk
LCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDc0LCAweDc5LCAweDcwLCAweDY1LCAw
eDg3LCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHg0MCwgMHgwMiwgMHgw
MSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwOCwgMHg2NiwgMHg3NSwgMHg2ZSwgMHg2MywgMHg3NCwg
MHg2OSwgMHg2ZiwKKyAgICAgICAgICAgIDB4NmUsIDB4ODIsIDB4ODAsIDB4ODAsIDB4MDAsIDB4
MDEsIDB4MDAsIDB4MDYsIDB4NjUsIDB4NzgsIDB4NzAsIDB4NmYsIDB4NzIsIDB4NzQsIDB4OTEs
IDB4ODAsCisgICAgICAgICAgICAweDgwLCAweDAwLCAweDAxLCAweDAwLCAweDBlLCAweDY0LCAw
eDc1LCAweDZkLCAweDYyLCAweDJkLCAweDZjLCAweDY1LCAweDczLCAweDczLCAweDJkLCAweDc0
LAorICAgICAgICAgICAgMHg2OCwgMHg2MSwgMHg2ZSwgMHgwNCwgMHg2MywgMHg2ZiwgMHg2NCwg
MHg2NSwgMHhiOSwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHhiNCwgMHg4MCwgMHg4MCwKKyAg
ICAgICAgICAgIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDEsIDB4MDEsIDB4MTQsIDB4MDAsIDB4MTQs
IDB4MDEsIDB4NGQsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDEsCisgICAgICAg
ICAgICAweDBmLCAweDEwLCAweDAwLCAweDA5LCAweDAxLCAweDBmLCAweDAxLCAweDAxLCAweDE0
LCAweDAwLCAweDEwLCAweDAwLCAweDRkLCAweDA3LCAweDAwLCAweDAwLAorICAgICAgICAgICAg
MHgwNiwgMHgwMCwgMHgwMSwgMHgwZiwgMHgxMCwgMHgwMSwgMHgwOSwgMHgwMSwgMHgwZiwgMHgx
NCwgMHgwMCwgMHgxMCwgMHgwMSwgMHg0MSwgMHgxNSwgMHgwMCwKKyAgICAgICAgICAgIDB4MDYs
IDB4MDAsIDB4MDAsIDB4MGYsIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4o
KnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBs
YW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8g
Y29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisK
KyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMCksIGJveCgxKSB9KSk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94
KDEpLCBib3goMCkgfSkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghaW52b2tlPGludD4oKnBs
YW4ucmVzdWx0WzBdLCB7IGJveCgyKSwgYm94KDEpIH0pKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgxKSwgYm94KDIpIH0pKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIWludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3go
MiksIGJveCgyKSB9KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMSkgfSkpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goNikgfSkpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgx
MDApLCBib3goNikgfSkpOworICAgIH0KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VN
QkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3Iu
Y3BwCmluZGV4IDkzZTE3MzhkMzJlN2NlZGE0MmFlM2Y4YjQwNmU0NmJiMDE2M2ZiODkuLjMxNmZi
OGZlNWE4MjNlODMzZDNhZDg3MjMyMzY3YzVlMDkwY2MzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5jcHAKQEAgLTI5LDExICsyOSwxMyBA
QAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGlu
ZXMuaCIKLSNpbmNsdWRlICJCM0NhbGxpbmdDb252ZW50aW9ucy5oIgorI2luY2x1ZGUgIkIzRml4
U1NBLmgiCisjaW5jbHVkZSAiQjNWYWxpZGF0ZS5oIgogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiQjNWYXJpYWJsZS5oIgogI2luY2x1ZGUgIkIzVmFyaWFibGVWYWx1ZS5o
IgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgorI2luY2x1ZGUgIldBU01DYWxsaW5nQ29u
dmVudGlvbi5oIgogI2luY2x1ZGUgIldBU01GdW5jdGlvblBhcnNlci5oIgogI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgogCkBAIC00Myw2ICs0NSw4IEBAIG5hbWVzcGFjZSBXQVNNIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEIzOwogCitzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gdHJ1ZTsKKwog
aW5saW5lIEIzOjpPcGNvZGUgdG9CM09wKEJpbmFyeU9wVHlwZSBvcCkKIHsKICAgICBzd2l0Y2gg
KG9wKSB7CkBAIC02NCw4ICs2OCw3MiBAQCBpbmxpbmUgQjM6Ok9wY29kZSB0b0IzT3AoVW5hcnlP
cFR5cGUgb3ApCiB9CiAKIGNsYXNzIEIzSVJHZW5lcmF0b3IgeworcHJpdmF0ZToKKyAgICBjbGFz
cyBMYXp5QmxvY2sgeworICAgIHB1YmxpYzoKKyAgICAgICAgTGF6eUJsb2NrKEJhc2ljQmxvY2sq
IGJsb2NrKQorICAgICAgICA6IG1fYmxvY2soYmxvY2spCisgICAgICAgIHsKKyAgICAgICAgfQor
CisgICAgICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSB7IHJldHVybiBtX2Jsb2NrOyB9CisK
KyAgICAgICAgQmFzaWNCbG9jayogZ2V0KFByb2NlZHVyZSYgcHJvYykKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKCFtX2Jsb2NrKQorICAgICAgICAgICAgICAgIG1fYmxvY2sgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgICAgICAgICByZXR1cm4gbV9ibG9jazsKKyAgICAgICAgfQorCisgICAg
ICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAobV9ibG9jaykKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoKm1fYmxvY2spOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG91dC5wcmludCgiVW5pbml0aWFsaXpl
ZCIpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBCYXNpY0Jsb2NrKiBtX2Js
b2NrOworICAgIH07CisKKworICAgIHN0cnVjdCBDb250cm9sRGF0YSB7CisgICAgICAgIENvbnRy
b2xEYXRhKE9wdGlvbmFsPFZlY3RvcjxWYXJpYWJsZSo+PiYmIF9zdGFjaywgQmFzaWNCbG9jayog
X2xvb3BUYXJnZXQgPSBudWxscHRyLCBCYXNpY0Jsb2NrKiBfY29udGludWF0aW9uID0gbnVsbHB0
cikKKyAgICAgICAgOiBjb250aW51YXRpb24oX2NvbnRpbnVhdGlvbikKKyAgICAgICAgLCBsb29w
VGFyZ2V0KF9sb29wVGFyZ2V0KQorICAgICAgICAsIHN0YWNrKF9zdGFjaykKKyAgICAgICAgewor
ICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIG91dC5wcmludCgiQ29udGludWF0aW9uOiAiLCBjb250aW51
YXRpb24sICIsIFRhcmdldDogIik7CisgICAgICAgICAgICBpZiAobG9vcFRhcmdldCkKKyAgICAg
ICAgICAgICAgICBvdXQucHJpbnQoKmxvb3BUYXJnZXQpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIG91dC5wcmludChjb250aW51YXRpb24pOworICAgICAgICB9CisKKyAgICAg
ICAgQmFzaWNCbG9jayogdGFyZ2V0QmxvY2tGb3JCcmFuY2goUHJvY2VkdXJlJiBwcm9jKSB7Cisg
ICAgICAgICAgICBpZiAobG9vcFRhcmdldCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9vcFRh
cmdldDsKKyAgICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24uZ2V0KHByb2MpOworICAgICAg
ICB9CisKKyAgICAgICAgYm9vbCBpc0xvb3AoKSB7IHJldHVybiBsb29wVGFyZ2V0OyB9CisKKyAg
ICAgICAgLy8gV2UgdXNlIGEgTGF6eUJsb2NrIGZvciB0aGUgY29udGludWF0aW9uIGZvciB0aGUg
Y29udGludWF0aW9uIHNpbmNlIEIzOjp2YWxpZGF0ZSBkb2VzIG5vdCBsaWtlIG9ycGhhbmVkIGJs
b2Nrcy4KKyAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0byBjcmVhdGUgYW4gb3JwaGFuZWQgYmxv
Y2sgYnkgZG9pbmcgc29tZXRoaW5nIGxpa2UgKGJsb2NrIChyZXR1cm4gKC4uLikpKS4gSW4gdGhh
dCBleGFtcGxlLCBpZgorICAgICAgICAvLyB3ZSBlYWdlcmx5IGFsbG9jYXRlIGEgQmFzaWNCbG9j
ayBmb3IgdGhlIGNvbnRpbnVhdGlvbiBpdCB3aWxsIG5ldmVyIGJlIHJlYWNoYWJsZS4KKyAgICAg
ICAgTGF6eUJsb2NrIGNvbnRpbnVhdGlvbjsKKyAgICAgICAgQmFzaWNCbG9jayogbG9vcFRhcmdl
dDsKKyAgICAgICAgT3B0aW9uYWw8VmVjdG9yPFZhcmlhYmxlKj4+IHN0YWNrOworICAgIH07CisK
IHB1YmxpYzoKICAgICB0eXBlZGVmIFZhbHVlKiBFeHByZXNzaW9uVHlwZTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEV4cHJlc3Npb25UeXBlIGVtcHR5RXhwcmVzc2lvbiA9IG51bGxwdHI7CiAKICAg
ICBCM0lSR2VuZXJhdG9yKFByb2NlZHVyZSYpOwogCkBAIC03NCwyNSArMTQyLDM0IEBAIHB1Ymxp
YzoKICAgICBFeHByZXNzaW9uVHlwZSBhZGRDb25zdGFudChUeXBlLCB1aW50NjRfdCk7CiAKICAg
ICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBnZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVz
c2lvblR5cGUmIHJlc3VsdCk7CisgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gc2V0TG9jYWwo
dWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVlKTsKIAogICAgIGJvb2wgV0FSTl9V
TlVTRURfUkVUVVJOIGJpbmFyeU9wKEJpbmFyeU9wVHlwZSwgRXhwcmVzc2lvblR5cGUgbGVmdCwg
RXhwcmVzc2lvblR5cGUgcmlnaHQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogICAgIGJvb2wg
V0FSTl9VTlVTRURfUkVUVVJOIHVuYXJ5T3AoVW5hcnlPcFR5cGUsIEV4cHJlc3Npb25UeXBlIGFy
ZywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVS
TiBhZGRCbG9jaygpOwotICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGVuZEJsb2NrKFZlY3Rv
cjxFeHByZXNzaW9uVHlwZT4mIGV4cHJlc3Npb25TdGFjayk7CisgICAgYm9vbCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkTG9vcCgpOworICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGVuZEJsb2Nr
KFZlY3RvcjxFeHByZXNzaW9uVHlwZSwgMT4mIGV4cHJlc3Npb25TdGFjayk7CisKICAgICBib29s
IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRSZXR1cm4oY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBl
LCAxPiYgcmV0dXJuVmFsdWVzKTsKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRCcmFu
Y2goRXhwcmVzc2lvblR5cGUgY29uZGl0aW9uLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGUs
IDE+JiByZXR1cm5WYWx1ZXMsIHVpbnQzMl90IHRhcmdldCk7CisKKyAgICB2b2lkIGR1bXBHcmFw
aEFuZENvbnRyb2xTdGFjaygpOwogCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPFZlY3RvcjxWYXJp
YWJsZSo+PiYgc3RhY2tGb3JDb250cm9sTGV2ZWwodW5zaWduZWQpOwotICAgIEJhc2ljQmxvY2sq
IGJsb2NrRm9yQ29udHJvbExldmVsKHVuc2lnbmVkKTsKKyAgICBDb250cm9sRGF0YSYgY29udHJv
bERhdGFGb3JMZXZlbCh1bnNpZ25lZCk7CiAgICAgdm9pZCB1bmlmeShWYXJpYWJsZSogdGFyZ2V0
LCBjb25zdCBFeHByZXNzaW9uVHlwZSBzb3VyY2UpOwotICAgIFZlY3RvcjxWYXJpYWJsZSo+IGlu
aXRpYWxpemVJbmNvbW1pbmdUeXBlcyhCYXNpY0Jsb2NrKiwgY29uc3QgVmVjdG9yPEV4cHJlc3Np
b25UeXBlPiYpOwotICAgIHZvaWQgdW5pZnlWYWx1ZXNXaXRoTGV2ZWwoY29uc3QgVmVjdG9yPEV4
cHJlc3Npb25UeXBlPiYgcmVzdWx0U3RhY2ssIHVuc2lnbmVkKTsKKyAgICBWZWN0b3I8VmFyaWFi
bGUqPiBpbml0aWFsaXplSW5jb21taW5nVHlwZXMoQmFzaWNCbG9jayosIGNvbnN0IFZlY3RvcjxF
eHByZXNzaW9uVHlwZSwgMT4mKTsKKyAgICB2b2lkIHVuaWZ5VmFsdWVzV2l0aEJsb2NrKGNvbnN0
IFZlY3RvcjxFeHByZXNzaW9uVHlwZSwgMT4mIHJlc3VsdFN0YWNrLCBPcHRpb25hbDxWZWN0b3I8
VmFyaWFibGUqPj4mIHN0YWNrLCBCYXNpY0Jsb2NrKiB0YXJnZXQpOworCitwdWJsaWM6CisgICAg
Ym9vbCB1bnJlYWNoYWJsZSB7IGZhbHNlIH07CiAKK3ByaXZhdGU6CiAgICAgUHJvY2VkdXJlJiBt
X3Byb2M7CiAgICAgQmFzaWNCbG9jayogbV9jdXJyZW50QmxvY2s7CiAgICAgLy8gVGhpcyBpcyBh
IHBhaXIgb2YgdGhlIGNvbnRpbnVhdGlvbiBhbmQgdGhlIHR5cGVzIGV4cGVjdGVkIG9uIHRoZSBz
dGFjayBmb3IgdGhhdCBjb250aW51YXRpb24uCi0gICAgVmVjdG9yPHN0ZDo6cGFpcjxCYXNpY0Js
b2NrKiwgT3B0aW9uYWw8VmVjdG9yPFZhcmlhYmxlKj4+Pj4gbV9jb250cm9sU3RhY2s7CisgICAg
VmVjdG9yPENvbnRyb2xEYXRhPiBtX2NvbnRyb2xTdGFjazsKICAgICBWZWN0b3I8VmFyaWFibGUq
PiBtX2xvY2FsczsKIH07CiAKQEAgLTEwNiwxMiArMTgzLDExIEBAIHZvaWQgQjNJUkdlbmVyYXRv
cjo6YWRkTG9jYWwoVHlwZSB0eXBlLCB1aW50MzJfdCBjb3VudCkKIHsKICAgICBtX2xvY2Fscy5y
ZXNlcnZlQ2FwYWNpdHkobV9sb2NhbHMuc2l6ZSgpICsgY291bnQpOwogICAgIGZvciAodWludDMy
X3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQotICAgICAgICBtX2xvY2Fscy5hcHBlbmQobV9wcm9j
LmFkZFZhcmlhYmxlKHR5cGUpKTsKKyAgICAgICAgbV9sb2NhbHMuYXBwZW5kKG1fcHJvYy5hZGRW
YXJpYWJsZSh0b0IzVHlwZSh0eXBlKSkpOwogfQogCiB2b2lkIEIzSVJHZW5lcmF0b3I6OmFkZEFy
Z3VtZW50cyhjb25zdCBWZWN0b3I8VHlwZT4mIHR5cGVzKQogewotICAgIC8vIFRPRE86IEFkZCBs
b2NhbHMuCiAgICAgQVNTRVJUKCFtX2xvY2Fscy5zaXplKCkpOwogICAgIG1fbG9jYWxzLmdyb3co
dHlwZXMuc2l6ZSgpKTsKICAgICBqc2NDYWxsaW5nQ29udmVudGlvbigpLml0ZXJhdGUodHlwZXMs
IG1fcHJvYywgbV9jdXJyZW50QmxvY2ssIE9yaWdpbigpLApAQCAtMTI5LDYgKzIwNSwxMyBAQCBi
b29sIFdBUk5fVU5VU0VEX1JFVFVSTiBCM0lSR2VuZXJhdG9yOjpnZXRMb2NhbCh1aW50MzJfdCBp
bmRleCwgRXhwcmVzc2lvblR5cGUmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgV0FSTl9V
TlVTRURfUkVUVVJOIEIzSVJHZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHBy
ZXNzaW9uVHlwZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlQobV9sb2NhbHNbaW5kZXhdKTsKKyAgICBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KG1fcHJvYywgQjM6OlNldCwg
T3JpZ2luKCksIG1fbG9jYWxzW2luZGV4XSwgdmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQor
CiBib29sIEIzSVJHZW5lcmF0b3I6OnVuYXJ5T3AoVW5hcnlPcFR5cGUgb3AsIEV4cHJlc3Npb25U
eXBlIGFyZywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIHsKICAgICByZXN1bHQgPSBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIHRvQjNPcChvcCksIE9yaWdpbigpLCBh
cmcpOwpAQCAtMTYwLDMxICsyNDMsODYgQEAgQjNJUkdlbmVyYXRvcjo6RXhwcmVzc2lvblR5cGUg
QjNJUkdlbmVyYXRvcjo6YWRkQ29uc3RhbnQoVHlwZSB0eXBlLCB1aW50NjRfdCB2YWwKIAogYm9v
bCBCM0lSR2VuZXJhdG9yOjphZGRCbG9jaygpCiB7Ci0gICAgbV9jb250cm9sU3RhY2suYXBwZW5k
KHN0ZDo6bWFrZV9wYWlyKG1fcHJvYy5hZGRCbG9jaygpLCBOdWxsb3B0KSk7CisgICAgZGF0YUxv
Z0xuKCJBZGRpbmcgQmxvY2siKTsKKyAgICBkdW1wR3JhcGhBbmRDb250cm9sU3RhY2soKTsKKyAg
ICBtX2NvbnRyb2xTdGFjay5hcHBlbmQoQ29udHJvbERhdGEoTnVsbG9wdCkpOworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIEIzSVJHZW5lcmF0b3I6OmFkZExvb3AoKQoreworICAgIGRhdGFM
b2dMbigiQWRkaW5nIExvb3AiKTsKKyAgICBkdW1wR3JhcGhBbmRDb250cm9sU3RhY2soKTsKKyAg
ICBCYXNpY0Jsb2NrKiBib2R5ID0gbV9wcm9jLmFkZEJsb2NrKCk7CisgICAgbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEp1bXAsIE9yaWdpbigpLCBib2R5KTsK
KyAgICBib2R5LT5hZGRQcmVkZWNlc3NvcihtX2N1cnJlbnRCbG9jayk7CisgICAgbV9jdXJyZW50
QmxvY2sgPSBib2R5OworICAgIG1fY29udHJvbFN0YWNrLmFwcGVuZChDb250cm9sRGF0YShWZWN0
b3I8VmFyaWFibGUqPigpLCBib2R5KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQjNJ
UkdlbmVyYXRvcjo6ZW5kQmxvY2soVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgZXhwcmVzc2lvblN0
YWNrKQorYm9vbCBCM0lSR2VuZXJhdG9yOjplbmRCbG9jayhWZWN0b3I8RXhwcmVzc2lvblR5cGUs
IDE+JiBleHByZXNzaW9uU3RhY2spCiB7CisgICAgZHVtcEdyYXBoQW5kQ29udHJvbFN0YWNrKCk7
CiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHdlIGFyZSBleGl0aW5nIHRoZSBmdW5jdGlvbi4KICAg
ICBpZiAoIW1fY29udHJvbFN0YWNrLnNpemUoKSkgewogICAgICAgICAvLyBGSVhNRTogU2hvdWxk
IHRoaXMgcmVxdWlyZSB0aGUgc3RhY2sgaXMgZW1wdHk/IEl0J3Mgbm90IGNsZWFyIGZyb20gdGhl
IGN1cnJlbnQgc3BlYy4KICAgICAgICAgcmV0dXJuICFleHByZXNzaW9uU3RhY2suc2l6ZSgpOwog
ICAgIH0KIAotICAgIHVuaWZ5VmFsdWVzV2l0aExldmVsKGV4cHJlc3Npb25TdGFjaywgMCk7Cisg
ICAgQ29udHJvbERhdGEgZGF0YSA9IG1fY29udHJvbFN0YWNrLnRha2VMYXN0KCk7CisgICAgaWYg
KHVucmVhY2hhYmxlKSB7CisgICAgICAgIC8vIElmIG5vdGhpbmcgdGFyZ2V0cyB0aGUgY29udGlu
dWF0aW9uIG9mIHRoZSBjdXJyZW50IGJsb2NrIHRoZW4gd2UgZG9uJ3Qgd2FudCB0byBjcmVhdGUK
KyAgICAgICAgLy8gYW4gb3JwaGFuZWQgQmFzaWNCbG9jayBzaW5jZSBpdCBjYW4ndCBiZSByZWFj
aGVkIGJ5IGZhbGx0aHJvdWdoLgorICAgICAgICBpZiAoZGF0YS5jb250aW51YXRpb24pIHsKKyAg
ICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZGF0YS5jb250aW51YXRpb24uZ2V0KG1fcHJvYyk7
CisgICAgICAgICAgICB1bnJlYWNoYWJsZSA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KIAotICAgIG1fY3VycmVudEJsb2NrID0gbV9jb250cm9sU3RhY2su
dGFrZUxhc3QoKS5maXJzdDsKKyAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBkYXRhLmNv
bnRpbnVhdGlvbi5nZXQobV9wcm9jKTsKKyAgICB1bmlmeVZhbHVlc1dpdGhCbG9jayhleHByZXNz
aW9uU3RhY2ssIGRhdGEuc3RhY2ssIGNvbnRpbnVhdGlvbik7CisgICAgbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEp1bXAsIE9yaWdpbigpLCBjb250aW51YXRp
b24pOworICAgIGNvbnRpbnVhdGlvbi0+YWRkUHJlZGVjZXNzb3IobV9jdXJyZW50QmxvY2spOwor
ICAgIG1fY3VycmVudEJsb2NrID0gY29udGludWF0aW9uOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBib29sIEIzSVJHZW5lcmF0b3I6OmFkZFJldHVybihjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5
cGUsIDE+JiByZXR1cm5WYWx1ZXMpCiB7CisgICAgZHVtcEdyYXBoQW5kQ29udHJvbFN0YWNrKCk7
CiAgICAgQVNTRVJUKHJldHVyblZhbHVlcy5zaXplKCkgPD0gMSk7CiAgICAgaWYgKHJldHVyblZh
bHVlcy5zaXplKCkpCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFs
dWUobV9wcm9jLCBCMzo6UmV0dXJuLCBPcmlnaW4oKSwgcmV0dXJuVmFsdWVzWzBdKTsKICAgICBl
bHNlCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9j
LCBCMzo6UmV0dXJuLCBPcmlnaW4oKSk7CisgICAgdW5yZWFjaGFibGUgPSB0cnVlOworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIEIzSVJHZW5lcmF0b3I6OmFkZEJyYW5jaChFeHByZXNzaW9u
VHlwZSBjb25kaXRpb24sIGNvbnN0IFZlY3RvcjxFeHByZXNzaW9uVHlwZSwgMT4mIHJldHVyblZh
bHVlcywgdWludDMyX3QgbGV2ZWwpCit7CisgICAgQVNTRVJUKGxldmVsIDwgbV9jb250cm9sU3Rh
Y2suc2l6ZSgpKTsKKyAgICBDb250cm9sRGF0YSYgZGF0YSA9IGNvbnRyb2xEYXRhRm9yTGV2ZWwo
bGV2ZWwpOworICAgIGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nTG4oIkFkZGluZyBCcmFu
Y2ggZnJvbTogIiwgICptX2N1cnJlbnRCbG9jaywgIiB0YXJnZXRpbmc6ICIsIGxldmVsLCAiIHdp
dGggZGF0YTogIiwgZGF0YSk7CisKKyAgICBCYXNpY0Jsb2NrKiB0YXJnZXQgPSBkYXRhLnRhcmdl
dEJsb2NrRm9yQnJhbmNoKG1fcHJvYyk7CisgICAgdW5pZnlWYWx1ZXNXaXRoQmxvY2socmV0dXJu
VmFsdWVzLCBkYXRhLnN0YWNrLCB0YXJnZXQpOworICAgIGlmIChjb25kaXRpb24pIHsKKyAgICAg
ICAgQmFzaWNCbG9jayogY29udGludWF0aW9uID0gbV9wcm9jLmFkZEJsb2NrKCk7CisgICAgICAg
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQjM6OkJyYW5jaCwgT3Jp
Z2luKCksIGNvbmRpdGlvbik7CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5zZXRTdWNjZXNzb3Jz
KEZyZXF1ZW50ZWRCbG9jayh0YXJnZXQpLCBGcmVxdWVudGVkQmxvY2soY29udGludWF0aW9uKSk7
CisgICAgICAgIHRhcmdldC0+YWRkUHJlZGVjZXNzb3IobV9jdXJyZW50QmxvY2spOworICAgICAg
ICBjb250aW51YXRpb24tPmFkZFByZWRlY2Vzc29yKG1fY3VycmVudEJsb2NrKTsKKyAgICAgICAg
bV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb247CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEp1bXAsIE9yaWdpbigp
LCBGcmVxdWVudGVkQmxvY2sodGFyZ2V0KSk7CisgICAgICAgIHRhcmdldC0+YWRkUHJlZGVjZXNz
b3IobV9jdXJyZW50QmxvY2spOworICAgICAgICB1bnJlYWNoYWJsZSA9IHRydWU7CisgICAgfQor
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE5MywxMiArMzMxLDEyIEBAIHZvaWQgQjNJUkdl
bmVyYXRvcjo6dW5pZnkoVmFyaWFibGUqIHZhcmlhYmxlLCBFeHByZXNzaW9uVHlwZSBzb3VyY2Up
CiAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPihtX3Byb2MsIFNl
dCwgT3JpZ2luKCksIHZhcmlhYmxlLCBzb3VyY2UpOwogfQogCi1WZWN0b3I8VmFyaWFibGUqPiBC
M0lSR2VuZXJhdG9yOjppbml0aWFsaXplSW5jb21taW5nVHlwZXMoQmFzaWNCbG9jayogYmxvY2ss
IGNvbnN0IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIHNvdXJjZSkKK1ZlY3RvcjxWYXJpYWJsZSo+
IEIzSVJHZW5lcmF0b3I6OmluaXRpYWxpemVJbmNvbW1pbmdUeXBlcyhCYXNpY0Jsb2NrKiBibG9j
aywgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlLCAxPiYgc291cmNlKQogewogICAgIFZlY3Rv
cjxWYXJpYWJsZSo+IHJlc3VsdDsKICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShz
b3VyY2Uuc2l6ZSgpKTsKICAgICBmb3IgKEV4cHJlc3Npb25UeXBlIGV4cHIgOiBzb3VyY2UpIHsK
LSAgICAgICAgQVNTRVJUKGV4cHItPnR5cGUoKSAhPSBWb2lkKTsKKyAgICAgICAgQVNTRVJUKGV4
cHItPnR5cGUoKSAhPSBCMzo6Vm9pZCk7CiAgICAgICAgIFZhcmlhYmxlKiB2YXIgPSBtX3Byb2Mu
YWRkVmFyaWFibGUoZXhwci0+dHlwZSgpKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZCh2YXIpOwog
ICAgICAgICBibG9jay0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KG1fcHJvYywgQjM6OkdldCwg
T3JpZ2luKCksIHZhcik7CkBAIC0yMDcsMzAgKzM0NSwzMyBAQCBWZWN0b3I8VmFyaWFibGUqPiBC
M0lSR2VuZXJhdG9yOjppbml0aWFsaXplSW5jb21taW5nVHlwZXMoQmFzaWNCbG9jayogYmxvY2ss
IGNvbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQjNJUkdlbmVyYXRvcjo6dW5pZnlW
YWx1ZXNXaXRoTGV2ZWwoY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgcmVzdWx0U3RhY2ss
IHVuc2lnbmVkIGxldmVsKQordm9pZCBCM0lSR2VuZXJhdG9yOjp1bmlmeVZhbHVlc1dpdGhCbG9j
ayhjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGUsIDE+JiByZXN1bHRTdGFjaywgT3B0aW9uYWw8
VmVjdG9yPFZhcmlhYmxlKj4+JiBzdGFjaywgQmFzaWNCbG9jayogdGFyZ2V0KQogewotICAgIEFT
U0VSVChsZXZlbCA8IG1fY29udHJvbFN0YWNrLnNpemUoKSk7Ci0KLSAgICBPcHRpb25hbDxWZWN0
b3I8VmFyaWFibGUqPj4mIGV4cGVjdGVkU3RhY2sgPSBzdGFja0ZvckNvbnRyb2xMZXZlbChsZXZl
bCk7Ci0gICAgaWYgKCFleHBlY3RlZFN0YWNrKSB7Ci0gICAgICAgIGV4cGVjdGVkU3RhY2sgPSBp
bml0aWFsaXplSW5jb21taW5nVHlwZXMoYmxvY2tGb3JDb250cm9sTGV2ZWwobGV2ZWwpLCByZXN1
bHRTdGFjayk7CisgICAgaWYgKCFzdGFjaykgeworICAgICAgICBzdGFjayA9IGluaXRpYWxpemVJ
bmNvbW1pbmdUeXBlcyh0YXJnZXQsIHJlc3VsdFN0YWNrKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIEFTU0VSVChleHBlY3RlZFN0YWNrLnZhbHVlKCkuc2l6ZSgpICE9IHJlc3VsdFN0
YWNrLnNpemUoKSk7CisgICAgQVNTRVJUKHN0YWNrLnZhbHVlKCkuc2l6ZSgpID09IHJlc3VsdFN0
YWNrLnNpemUoKSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlc3VsdFN0YWNrLnNp
emUoKTsgKytpKQotICAgICAgICB1bmlmeShleHBlY3RlZFN0YWNrLnZhbHVlKClbaV0sIHJlc3Vs
dFN0YWNrW2ldKTsKKyAgICAgICAgdW5pZnkoc3RhY2sudmFsdWUoKVtpXSwgcmVzdWx0U3RhY2tb
aV0pOwogfQogICAgIAotT3B0aW9uYWw8VmVjdG9yPFZhcmlhYmxlKj4+JiBCM0lSR2VuZXJhdG9y
OjpzdGFja0ZvckNvbnRyb2xMZXZlbCh1bnNpZ25lZCBsZXZlbCkKK0IzSVJHZW5lcmF0b3I6OkNv
bnRyb2xEYXRhJiBCM0lSR2VuZXJhdG9yOjpjb250cm9sRGF0YUZvckxldmVsKHVuc2lnbmVkIGxl
dmVsKQogewotICAgIHJldHVybiBtX2NvbnRyb2xTdGFja1ttX2NvbnRyb2xTdGFjay5zaXplKCkg
LSAxIC0gbGV2ZWxdLnNlY29uZDsKKyAgICByZXR1cm4gbV9jb250cm9sU3RhY2tbbV9jb250cm9s
U3RhY2suc2l6ZSgpIC0gMSAtIGxldmVsXTsKIH0KIAotQmFzaWNCbG9jayogQjNJUkdlbmVyYXRv
cjo6YmxvY2tGb3JDb250cm9sTGV2ZWwodW5zaWduZWQgbGV2ZWwpCit2b2lkIEIzSVJHZW5lcmF0
b3I6OmR1bXBHcmFwaEFuZENvbnRyb2xTdGFjaygpCiB7Ci0gICAgcmV0dXJuIG1fY29udHJvbFN0
YWNrW21fY29udHJvbFN0YWNrLnNpemUoKSAtIDEgLSBsZXZlbF0uZmlyc3Q7CisgICAgZGF0YUxv
Z0xuKCJQcm9jZXNzaW5nIEdyYXBoOiIpOworICAgIGRhdGFMb2cobV9wcm9jKTsKKyAgICBkYXRh
TG9nTG4oIldpdGggY3VycmVudCBibG9jazoiLCAqbV9jdXJyZW50QmxvY2spOworICAgIGRhdGFM
b2dMbigiV2l0aCBDb250cm9sIFN0YWNrOiIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2NvbnRyb2xTdGFjay5zaXplKCk7ICsraSkKKyAgICAgICAgZGF0YUxvZ0xuKCJbIiwgaSwg
Il0gIiwgbV9jb250cm9sU3RhY2tbaV0pOworICAgIGRhdGFMb2dMbigiXG4iKTsKIH0KIAogc3Rk
Ojp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBwYXJzZUFuZENvbXBpbGUoVk0mIHZtLCBWZWN0b3I8
dWludDhfdD4mIHNvdXJjZSwgRnVuY3Rpb25JbmZvcm1hdGlvbiBpbmZvLCB1bnNpZ25lZCBvcHRM
ZXZlbCkKQEAgLTI0MSw2ICszODIsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBw
YXJzZUFuZENvbXBpbGUoVk0mIHZtLCBWZWN0b3I8dWludDhfdD4mIHNvdXJjZSwgRnUKICAgICBp
ZiAoIXBhcnNlci5wYXJzZSgpKQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogCisgICAgdmFsaWRhdGUocHJvY2VkdXJlLCAiQWZ0ZXIgcGFyc2luZzpcbiIpOworCisgICAg
Zml4U1NBKHByb2NlZHVyZSk7CisgICAgZGF0YUxvZygiUG9zdCBTU0E6ICIsIHByb2NlZHVyZSk7
CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29tcGlsYXRpb24+KHZtLCBwcm9jZWR1cmUs
IG9wdExldmVsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTUNhbGxpbmdDb252ZW50aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01DYWxsaW5nQ29udmVudGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ5N2VjYWQ1YTQzZTFiMDUxY2I4
NTVjNjU2YmUxZmE4YWYyNzVlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dBU01DYWxsaW5nQ29udmVudGlvbi5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXQVNNQ2FsbGluZ0NvbnZlbnRpb24uaCIKKworI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCituYW1lc3Bh
Y2UgSlNDIHsKKworbmFtZXNwYWNlIFdBU00geworCitKU0NDYWxsaW5nQ29udmVudGlvbiYganNj
Q2FsbGluZ0NvbnZlbnRpb24oKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SlND
Q2FsbGluZ0NvbnZlbnRpb24+IHN0YXRpY0pTQ0NhbGxpbmdDb252ZW50aW9uOworICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBzdGF0aWNKU0NDYWxsaW5nQ29udmVudGlvbkZsYWc7CisgICAgc3Rk
OjpjYWxsX29uY2Uoc3RhdGljSlNDQ2FsbGluZ0NvbnZlbnRpb25GbGFnLCBbXSAoKSB7CisgICAg
ICAgIHN0YXRpY0pTQ0NhbGxpbmdDb252ZW50aW9uLmNvbnN0cnVjdChWZWN0b3I8R1BSUmVnPigp
LCBSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICB9KTsKKworICAgIHJl
dHVybiBzdGF0aWNKU0NDYWxsaW5nQ29udmVudGlvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgQjMK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUNhbGxpbmdDb252ZW50aW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ2FsbGluZ0NvbnZlbnRpb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42MzhmMDVhOTIyNWY0ZmFmYWRjNWQ0MmEzY2Y2ZmI0MmZjNzUzOGMwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUNhbGxpbmdDb252ZW50
aW9uLmgKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCisj
aW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrLmgi
CisjaW5jbHVkZSAiQjNDb25zdDY0VmFsdWUuaCIKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgi
CisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKKyNpbmNs
dWRlICJXQVNNRm9ybWF0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2UgV0FTTSB7
CisKK3VzaW5nIG5hbWVzcGFjZSBCMzsKKwordHlwZWRlZiB1bnNpZ25lZCAoKk5leHRPZmZzZXQp
KHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQsIFR5cGUgdHlwZSk7CisKK3RlbXBsYXRlPHVuc2lnbmVk
IG9mZnNldCwgTmV4dE9mZnNldCB1cGRhdGVPZmZzZXQ+CitjbGFzcyBDYWxsaW5nQ29udmVudGlv
biB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGhlYWRlclNpemUgPSBvZmZz
ZXQ7CisKKyAgICBDYWxsaW5nQ29udmVudGlvbihWZWN0b3I8R1BSUmVnPiYmIHJlZ2lzdGVyQXJn
dW1lbnRzLCBSZWdpc3RlclNldCYmIGNhbGxlZVNhdmVSZWdpc3RlcnMpCisgICAgICAgIDogbV9y
ZWdpc3RlckFyZ3VtZW50cyhyZWdpc3RlckFyZ3VtZW50cykKKyAgICAgICAgLCBtX2NhbGxlZVNh
dmVSZWdpc3RlcnMoY2FsbGVlU2F2ZVJlZ2lzdGVycykKKyAgICB7CisgICAgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIGl0ZXJhdGUoY29uc3QgVmVjdG9yPFR5
cGU+JiBhcmd1bWVudFR5cGVzLCBQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrLCBP
cmlnaW4gb3JpZ2luLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAorICAgIHsKKyAgICAg
ICAgdW5zaWduZWQgY3VycmVudE9mZnNldCA9IGhlYWRlclNpemU7CisgICAgICAgIFZhbHVlKiBm
cmFtZVBvaW50ZXIgPSBibG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGcmFtZVBvaW50ZXIs
IG9yaWdpbik7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3VtZW50VHlw
ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFZhbHVlKiBhcmd1bWVudDsKKyAgICAgICAg
ICAgIGlmIChpIDwgbV9yZWdpc3RlckFyZ3VtZW50cy5zaXplKCkpCisgICAgICAgICAgICAgICAg
YXJndW1lbnQgPSBibG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIG9yaWdp
biwgbV9yZWdpc3RlckFyZ3VtZW50c1tpXSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IGJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFk
ZCwgb3JpZ2luLCBmcmFtZVBvaW50ZXIsCisgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBl
bmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBvcmlnaW4sIGN1cnJlbnRPZmZzZXQpKTsKKyAgICAg
ICAgICAgICAgICBhcmd1bWVudCA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2Ms
IExvYWQsIHRvQjNUeXBlKGFyZ3VtZW50VHlwZXNbaV0pLCBvcmlnaW4sIGFkZHJlc3MpOworICAg
ICAgICAgICAgICAgIGN1cnJlbnRPZmZzZXQgPSB1cGRhdGVPZmZzZXQoY3VycmVudE9mZnNldCwg
YXJndW1lbnRUeXBlc1tpXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmdW5jdG9yKGFy
Z3VtZW50LCBpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IFZlY3RvcjxHUFJSZWc+
IG1fcmVnaXN0ZXJBcmd1bWVudHM7CisgICAgY29uc3QgUmVnaXN0ZXJTZXQgbV9jYWxsZWVTYXZl
UmVnaXN0ZXJzOworICAgIGNvbnN0IFJlZ2lzdGVyU2V0IG1fY2FsbGVyU2F2ZVJlZ2lzdGVyczsK
K307CisKK2lubGluZSB1bnNpZ25lZCBuZXh0SlNDT2Zmc2V0KHVuc2lnbmVkIGN1cnJlbnRPZmZz
ZXQsIFR5cGUpCit7CisgICAgcmV0dXJuIGN1cnJlbnRPZmZzZXQgKyBzaXplb2YoUmVnaXN0ZXIp
OworfQorCitjb25zdGV4cHIgdW5zaWduZWQganNjSGVhZGVyU2l6ZSA9IEV4ZWNTdGF0ZTo6aGVh
ZGVyU2l6ZUluUmVnaXN0ZXJzICogc2l6ZW9mKFJlZ2lzdGVyKTsKK3R5cGVkZWYgQ2FsbGluZ0Nv
bnZlbnRpb248anNjSGVhZGVyU2l6ZSwgbmV4dEpTQ09mZnNldD4gSlNDQ2FsbGluZ0NvbnZlbnRp
b247CisKK0pTQ0NhbGxpbmdDb252ZW50aW9uJiBqc2NDYWxsaW5nQ29udmVudGlvbigpOworCit9
IC8vIG5hbWVzcGFjZSBXQVNNCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5B
QkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZvcm1hdC5oCmlu
ZGV4IDk3NWY4MmJkNjhhNWI0NmQxODE2YTQ0OWJkNGI2OTAzOGRlYTQwNWMuLjRlOGRiOTM4M2Zk
ZmJiN2EzNTJhYmM0MDlkMWY5YWZkYzYyYTQ0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01Gb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNRm9ybWF0LmgKQEAgLTU0LDE2ICs1NCw0NSBAQCBjbGFzcyBKU0Z1bmN0aW9uOwogCiBu
YW1lc3BhY2UgV0FTTSB7CiAKLXVzaW5nIEIzOjpUeXBlOwotdXNpbmcgQjM6OkludDMyOwotdXNp
bmcgQjM6OkludDY0OwotdXNpbmcgQjM6OkZsb2F0OwotdXNpbmcgQjM6OkRvdWJsZTsKLQotc3Rh
dGljX2Fzc2VydChJbnQzMiA9PSAwLCAiV0FTTSBuZWVkcyBCMzo6VHlwZTo6SW50MzIgdG8gaGF2
ZSB0aGUgdmFsdWUgMCIpOwotc3RhdGljX2Fzc2VydChJbnQ2NCA9PSAxLCAiV0FTTSBuZWVkcyBC
Mzo6VHlwZTo6SW50NjQgdG8gaGF2ZSB0aGUgdmFsdWUgMSIpOwotc3RhdGljX2Fzc2VydChGbG9h
dCA9PSAyLCAiV0FTTSBuZWVkcyBCMzo6VHlwZTo6RmxvYXQgdG8gaGF2ZSB0aGUgdmFsdWUgMiIp
Owotc3RhdGljX2Fzc2VydChEb3VibGUgPT0gMywgIldBU00gbmVlZHMgQjM6OlR5cGU6OkRvdWJs
ZSB0byBoYXZlIHRoZSB2YWx1ZSAzIik7CitlbnVtIFR5cGUgOiB1aW50OF90IHsKKyAgICBJMzIg
PSAxLAorICAgIEk2NCwKKyAgICBGMzIsCisgICAgRjY0LAorICAgIExhc3RWYWx1ZVR5cGUgPSBG
NjQsCisgICAgVm9pZAorfTsKKworc3RhdGljX2Fzc2VydChJMzIgPT0gMSwgIldBU00gbmVlZHMg
STMyIHRvIGhhdmUgdGhlIHZhbHVlIDEiKTsKK3N0YXRpY19hc3NlcnQoSTY0ID09IDIsICJXQVNN
IG5lZWRzIEk2NCB0byBoYXZlIHRoZSB2YWx1ZSAyIik7CitzdGF0aWNfYXNzZXJ0KEYzMiA9PSAz
LCAiV0FTTSBuZWVkcyBGMzIgdG8gaGF2ZSB0aGUgdmFsdWUgMyIpOworc3RhdGljX2Fzc2VydChG
NjQgPT0gNCwgIldBU00gbmVlZHMgRjY0IHRvIGhhdmUgdGhlIHZhbHVlIDQiKTsKKworaW5saW5l
IEIzOjpUeXBlIHRvQjNUeXBlKFR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAg
ICAgICAgY2FzZSBJMzI6IHJldHVybiBCMzo6SW50MzI7CisgICAgICAgIGNhc2UgSTY0OiByZXR1
cm4gQjM6OkludDY0OworICAgICAgICBjYXNlIEYzMjogcmV0dXJuIEIzOjpGbG9hdDsKKyAgICAg
ICAgY2FzZSBGNjQ6IHJldHVybiBCMzo6RG91YmxlOworICAgICAgICBjYXNlIFZvaWQ6IHJldHVy
biBCMzo6Vm9pZDsKKyAgICAgICAgZGVmYXVsdDogYnJlYWs7CisgICAgfQorICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2lubGluZSBib29sIGlzVmFsdWVUeXBlKFR5cGUg
dHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBJMzI6CisgICAgICAg
IGNhc2UgSTY0OgorICAgICAgICBjYXNlIEYzMjoKKyAgICAgICAgY2FzZSBGNjQ6IHJldHVybiB0
cnVlOworICAgICAgICBkZWZhdWx0OiBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiAKIHN0cnVjdCBTaWduYXR1cmUgewogICAgIFR5cGUgcmV0dXJuVHlwZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggYjE2MTUy
NGZlNjNiNTRiODc1ODhiYTVjZTY5NzhlZjZlNWUyZDRjNC4uYWJmNGNmZDFiZjg5YmU0NDMwMzc1
NjNkNzMzNWU0NWQ1MTRlNzcwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIGJvb2wg
V0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlKCk7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSB0
cnVlOwogCiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VCbG9jaygpOwogICAgIGJv
b2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRXhwcmVzc2lvbihPcFR5cGUpOwpAQCAtNTMsNyAr
NTMsNyBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFsPFZlY3RvcjxFeHByZXNzaW9uVHlwZT4+JiBz
dGFja0ZvckNvbnRyb2xMZXZlbCh1bnNpZ25lZCBsZXZlbCk7CiAKICAgICBDb250ZXh0JiBtX2Nv
bnRleHQ7Ci0gICAgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiBtX2V4cHJlc3Npb25TdGFjazsKKyAg
ICBWZWN0b3I8RXhwcmVzc2lvblR5cGUsIDE+IG1fZXhwcmVzc2lvblN0YWNrOwogfTsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgQ29udGV4dD4KQEAgLTcyLDE0ICs3MiwxNSBAQCBib29sIEZ1bmN0aW9u
UGFyc2VyPENvbnRleHQ+OjpwYXJzZSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZv
ciAodWludDMyX3QgaSA9IDA7IGkgPCBsb2NhbENvdW50OyArK2kpIHsKLSAgICAgICAgdWludDMy
X3QgbnVtYmVyT2ZMb2NhbHNXaXRoVHlwZTsKLSAgICAgICAgaWYgKCFwYXJzZVVJbnQzMihudW1i
ZXJPZkxvY2Fsc1dpdGhUeXBlKSkKKyAgICAgICAgdWludDMyX3QgbnVtYmVyT2ZMb2NhbHM7Cisg
ICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIobnVtYmVyT2ZMb2NhbHMpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgIFR5cGUgdHlwZU9mTG9jYWw7CiAgICAgICAgIGlmICgh
cGFyc2VWYWx1ZVR5cGUodHlwZU9mTG9jYWwpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CisgICAgICAgIG1fY29udGV4dC5hZGRMb2NhbCh0eXBlT2ZMb2NhbCwgbnVtYmVyT2ZMb2NhbHMp
OwogICAgIH0KIAogICAgIHJldHVybiBwYXJzZUJsb2NrKCk7CkBAIC0xMDksMTEgKzExMCwxMiBA
QCBib29sIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUJsb2NrKCkKIHRlbXBsYXRlPHR5
cGVuYW1lIENvbnRleHQ+CiBib29sIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJl
c3Npb24oT3BUeXBlIG9wKQogeworICAgIG1fY29udGV4dC5kdW1wR3JhcGhBbmRDb250cm9sU3Rh
Y2soKTsKICAgICBzd2l0Y2ggKG9wKSB7CiAjZGVmaW5lIENSRUFURV9DQVNFKG5hbWUsIGlkLCBi
M29wKSBjYXNlIG5hbWU6CiAgICAgRk9SX0VBQ0hfV0FTTV9CSU5BUllfT1AoQ1JFQVRFX0NBU0Up
IHsKLSAgICAgICAgRXhwcmVzc2lvblR5cGUgbGVmdCA9IG1fZXhwcmVzc2lvblN0YWNrLnRha2VM
YXN0KCk7CiAgICAgICAgIEV4cHJlc3Npb25UeXBlIHJpZ2h0ID0gbV9leHByZXNzaW9uU3RhY2su
dGFrZUxhc3QoKTsKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgbGVmdCA9IG1fZXhwcmVzc2lvblN0
YWNrLnRha2VMYXN0KCk7CiAgICAgICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdDsKICAgICAgICAg
aWYgKCFtX2NvbnRleHQuYmluYXJ5T3Aoc3RhdGljX2Nhc3Q8QmluYXJ5T3BUeXBlPihvcCksIGxl
ZnQsIHJpZ2h0LCByZXN1bHQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM1LDcg
KzEzNyw3IEBAIGJvb2wgRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbihP
cFR5cGUgb3ApCiAgICAgICAgIHVpbnQzMl90IGNvbnN0YW50OwogICAgICAgICBpZiAoIXBhcnNl
VmFyVUludDMyKGNvbnN0YW50KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
bV9leHByZXNzaW9uU3RhY2suYXBwZW5kKG1fY29udGV4dC5hZGRDb25zdGFudChJbnQzMiwgY29u
c3RhbnQpKTsKKyAgICAgICAgbV9leHByZXNzaW9uU3RhY2suYXBwZW5kKG1fY29udGV4dC5hZGRD
b25zdGFudChJMzIsIGNvbnN0YW50KSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApA
QCAtMTUxLDEyICsxNTMsNDkgQEAgYm9vbCBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VF
eHByZXNzaW9uKE9wVHlwZSBvcCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAg
Y2FzZSBPcFR5cGU6OlNldExvY2FsOiB7CisgICAgICAgIHVpbnQzMl90IGluZGV4OworICAgICAg
ICBpZiAoIXBhcnNlVmFyVUludDMyKGluZGV4KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgRXhwcmVzc2lvblR5cGUgdmFsdWUgPSBtX2V4cHJlc3Npb25TdGFjay50YWtlTGFz
dCgpOworICAgICAgICByZXR1cm4gbV9jb250ZXh0LnNldExvY2FsKGluZGV4LCB2YWx1ZSk7Cisg
ICAgfQorCiAgICAgY2FzZSBPcFR5cGU6OkJsb2NrOiB7CiAgICAgICAgIGlmICghbV9jb250ZXh0
LmFkZEJsb2NrKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiBw
YXJzZUJsb2NrKCk7CiAgICAgfQogCisgICAgICAgIGNhc2UgT3BUeXBlOjpMb29wOiB7CisgICAg
ICAgICAgICBpZiAoIW1fY29udGV4dC5hZGRMb29wKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHBhcnNlQmxvY2soKTsKKyAgICAgICAgfQorCisg
ICAgY2FzZSBPcFR5cGU6OkJyYW5jaDoKKyAgICBjYXNlIE9wVHlwZTo6QnJhbmNoSWY6IHsKKyAg
ICAgICAgZGF0YUxvZ0xuKHN0YXRpY19jYXN0PHVuc2lnbmVkPihvcCkpOworICAgICAgICB1aW50
MzJfdCBhcml0eTsKKyAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQzMihhcml0eSkgfHwgYXJpdHkg
PiBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgdWludDMyX3QgdGFyZ2V0OworICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKHRh
cmdldCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgRXhwcmVzc2lvblR5
cGUgY29uZGl0aW9uID0gQ29udGV4dDo6ZW1wdHlFeHByZXNzaW9uOworICAgICAgICBpZiAob3Ag
PT0gT3BUeXBlOjpCcmFuY2hJZikKKyAgICAgICAgICAgIGNvbmRpdGlvbiA9IG1fZXhwcmVzc2lv
blN0YWNrLnRha2VMYXN0KCk7CisKKworICAgICAgICBWZWN0b3I8RXhwcmVzc2lvblR5cGUsIDE+
IHZhbHVlcyhhcml0eSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFyaXR5OyBpOyBpLS0p
CisgICAgICAgICAgICB2YWx1ZXNbaS0xXSA9IG1fZXhwcmVzc2lvblN0YWNrLnRha2VMYXN0KCk7
CisKKyAgICAgICAgcmV0dXJuIG1fY29udGV4dC5hZGRCcmFuY2goY29uZGl0aW9uLCB2YWx1ZXMs
IHRhcmdldCk7CisgICAgfQorCiAgICAgY2FzZSBPcFR5cGU6OlJldHVybjogewogICAgICAgICB1
aW50OF90IHJldHVybkNvdW50OwogICAgICAgICBpZiAoIXBhcnNlVmFyVUludDEocmV0dXJuQ291
bnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBh
cnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNw
cAppbmRleCBlN2E1YTRlNDYyODE1YmY0MTBiMDdjZGY1MDZjZDVlODU5YzMwZDI3Li41YzI0ZWQ3
ODRmYWVjNTQxMWEwMGIwYWY2MzJjNTAzZWMyZDZmZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcApAQCAtMTYzLDkgKzE2Myw5IEBAIGJv
b2wgTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uVHlwZXMoKQogICAgICAgICBhcmd1bWVudFR5
cGVzLnJlc2l6ZShhcmd1bWVudENvdW50KTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgYXJndW1lbnRDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVUludDco
dHlwZSkgfHwgdHlwZSA+PSBzdGF0aWNfY2FzdDx1aW50OF90PihUeXBlOjpMYXN0VmFsdWVUeXBl
KSkKKyAgICAgICAgICAgIGlmICghcGFyc2VVSW50Nyh0eXBlKSB8fCAhaXNWYWx1ZVR5cGUoc3Rh
dGljX2Nhc3Q8VHlwZT4odHlwZSkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIGFyZ3VtZW50VHlwZXMuYXBwZW5kKHN0YXRpY19jYXN0PFR5cGU+KHR5cGUpKTsK
KyAgICAgICAgICAgIGFyZ3VtZW50VHlwZXNbaV0gPSBzdGF0aWNfY2FzdDxUeXBlPih0eXBlKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmICghcGFyc2VWYXJVSW50MSh0eXBlKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01PcHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01PcHMuaAppbmRleCBjMWRiNmU5Nzg0MTE3ZDA4YjE1NGRjY2E4Y2Fh
NGI1MWJmYTE0OTZhLi44NmNmYTYwNTcwOGMwYmJlMjA5ZGJiNDA0MjQzNjYwMzQ2M2FkMzFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNT3BzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU9wcy5oCkBAIC0zMywxMCArMzMsMTQgQEAgbmFt
ZXNwYWNlIFdBU00gewogCiAjZGVmaW5lIEZPUl9FQUNIX1dBU01fU1BFQ0lBTF9PUChtYWNybykg
XAogICAgIG1hY3JvKEkzMkNvbnN0LCAweDEwLCBOQSkgXAotICAgIG1hY3JvKEdldExvY2FsLCAw
eDE0LCBOQSkKKyAgICBtYWNybyhHZXRMb2NhbCwgMHgxNCwgTkEpIFwKKyAgICBtYWNybyhTZXRM
b2NhbCwgMHgxNSwgTkEpCiAKICNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9DT05UUk9MX0ZMT1dfT1Ao
bWFjcm8pIFwKICAgICBtYWNybyhCbG9jaywgMHgwMSwgTkEpIFwKKyAgICBtYWNybyhMb29wLCAw
eDAyLCBOQSkgXAorICAgIG1hY3JvKEJyYW5jaCwgMHgwNiwgTkEpIFwKKyAgICBtYWNybyhCcmFu
Y2hJZiwgMHgwNywgTkEpIFwKICAgICBtYWNybyhSZXR1cm4sIDB4MDksIE5BKSBcCiAgICAgbWFj
cm8oRW5kLCAweDBmLCBOQSkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288032</attachid>
            <date>2016-09-06 10:23:18 -0700</date>
            <delta_ts>2016-09-06 18:52:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161569-20160906102055.patch</filename>
            <type>text/plain</type>
            <size>68574</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
M2M2ODBkY2U3ZGU2NmE1MTBhN2U2NTMyNGQyZTYxNGVhYzZlYjI5Li43MzYwNzZjZDczOTc2NjU1
Y2U0YTc1Mzc5NDdkM2M0OTk1MmE3NGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OCBAQAorMjAxNi0wOS0wMyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV0FTTSBMb29wcyBhbmQgQnJhbmNoZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTU2OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBzdXBwb3J0IGZvciBsb29wcyBhbmQgYnJhbmNoZXMgdG8gV0FTTS4gSW4gb3JkZXIK
KyAgICAgICAgdG8gc3VwcG9ydCBsb29wcywgd2UgbmVlZGVkIHRvIGNoYW5nZSB0aGUgd2F5IHRo
ZSBCM0lSR2VuZXJhdG9yCisgICAgICAgIHRyYWNrZWQgY29udHJvbCBpbmZvcm1hdGlvbi4gTm93
LCB0aGUgY29udHJvbCBkYXRhIGhvbGRzIHRocmVlCisgICAgICAgIHBpZWNlcyBvZiBpbmZvcm1h
dGlvbjogVGhlIGNvbnRpbnVhdGlvbiBibG9jaywgdGhlIGxvb3AgYnJhbmNoCisgICAgICAgIHRh
cmdldCwgYW5kIHZhcmlhYmxlcyBleGl0aW5nIHRoZSBibG9jay4gV2hlbmV2ZXIgd2UgYnJhbmNo
IHRvCisgICAgICAgIHNvbWUgY29udHJvbCBwb2ludCB3ZSBmaXJzdCBjaGVjayBpZiBpdCBpcyBh
IGxvb3AgYnkgY2hlY2tpbmcgdGhhdAorICAgICAgICB0aGUgbG9vcCBicmFuY2ggdGFyZ2V0IGlz
IG5vbi1udWxsLiBJZiB0aGUgYnJhbmNoIGlzIG5vdCB0YXJnZXRpbmcKKyAgICAgICAgYSBsb29w
LCB3ZSBtYXAgdGhlIHN0YWNrIHZhbHVlcyB0byB0aGUgYXNzb2NpYXRlZCBCMyB2YXJpYWJsZXMg
Zm9yCisgICAgICAgIHRoYXQgc3RhY2sgc2xvdC4KKworICAgICAgICBBbm90aGVyIGludGVyZXN0
aW5nIHRoaW5nIG9mIG5vdGUgaXMgdGhhdCB3ZSBub3cgb25seSBhbGxvY2F0ZSB0aGUKKyAgICAg
ICAgY29udGludWF0aW9uIGJhc2ljIGJsb2NrLiBUaGlzIGlzIGJlbmVmaWNpYWwgd2hlbiB0aGUg
Y29udGludWF0aW9uCisgICAgICAgIHdvdWxkIGp1c3QgZmFsbCB0aHJvdWdoIHRvIGFub3RoZXIg
YmxvY2sgYW55d2F5LiBGb3IgZXhhbXBsZSwgaW4KKyAgICAgICAgY29kZSBsaWtlOiAoYmxvY2sg
Li4uIChibG9jayAoYWRkIDEgMikgZW5kKSBlbmQpIHRoZSBjb250aW51YXRpb24KKyAgICAgICAg
Zm9yIHRoZSBpbm5lciBibG9jayBqdXN0IGZhbGxzIHRocm91Z2ggdG8gdGhlIG91dGVyIGJsb2Nr
J3MKKyAgICAgICAgY29udGludWF0aW9uIHNvIHdlIGRvbid0IG5lZWQgYW4gZXh0cmEgYmxvY2su
CisKKyAgICAgICAgKiBCM0NhbGxpbmdDb252ZW50aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkIz
Ojpqc2NDYWxsaW5nQ29udmVudGlvbik6IERlbGV0ZWQuCisgICAgICAgICogQjNDYWxsaW5nQ29u
dmVudGlvbnMuaDoKKyAgICAgICAgKEpTQzo6QjM6OkNhbGxpbmdDb252ZW50aW9uOjpDYWxsaW5n
Q29udmVudGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpDYWxsaW5nQ29udmVudGlv
bjo6aXRlcmF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpuZXh0SlNDT2Zmc2V0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGIzL0IzVHlwZS5oOgorICAgICAgICAqIHRlc3RXQVNNLmNwcDoKKyAg
ICAgICAgKHJ1bldBU01UZXN0cyk6CisgICAgICAgICogd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OldBU006OkIzSVJHZW5lcmF0b3I6OkxhenlCbG9jazo6TGF6eUJs
b2NrKToKKyAgICAgICAgKEpTQzo6V0FTTTo6QjNJUkdlbmVyYXRvcjo6TGF6eUJsb2NrOjpvcGVy
YXRvciBib29sKToKKyAgICAgICAgKEpTQzo6V0FTTTo6QjNJUkdlbmVyYXRvcjo6TGF6eUJsb2Nr
OjpnZXQpOgorICAgICAgICAoSlNDOjpXQVNNOjpCM0lSR2VuZXJhdG9yOjpMYXp5QmxvY2s6OmR1
bXApOgorICAgICAgICAoSlNDOjpXQVNNOjpCM0lSR2VuZXJhdG9yOjpDb250cm9sRGF0YTo6Q29u
dHJvbERhdGEpOgorICAgICAgICAoSlNDOjpXQVNNOjpCM0lSR2VuZXJhdG9yOjpDb250cm9sRGF0
YTo6ZHVtcCk6CisgICAgICAgIChKU0M6OldBU006OkIzSVJHZW5lcmF0b3I6OkNvbnRyb2xEYXRh
Ojp0YXJnZXRCbG9ja0ZvckJyYW5jaCk6CisgICAgICAgIChKU0M6OldBU006OkIzSVJHZW5lcmF0
b3I6OkNvbnRyb2xEYXRhOjppc0xvb3ApOgorICAgICAgICAoSlNDOjpXQVNNOjpCM0lSR2VuZXJh
dG9yOjphZGRMb2NhbCk6CisgICAgICAgIChKU0M6OldBU006OkIzSVJHZW5lcmF0b3I6OmFkZEFy
Z3VtZW50cyk6CisgICAgICAgIChKU0M6OldBU006OkIzSVJHZW5lcmF0b3I6OnNldExvY2FsKToK
KyAgICAgICAgKEpTQzo6V0FTTTo6QjNJUkdlbmVyYXRvcjo6YWRkQmxvY2spOgorICAgICAgICAo
SlNDOjpXQVNNOjpCM0lSR2VuZXJhdG9yOjphZGRMb29wKToKKyAgICAgICAgKEpTQzo6V0FTTTo6
QjNJUkdlbmVyYXRvcjo6ZW5kQmxvY2spOgorICAgICAgICAoSlNDOjpXQVNNOjpCM0lSR2VuZXJh
dG9yOjphZGRSZXR1cm4pOgorICAgICAgICAoSlNDOjpXQVNNOjpCM0lSR2VuZXJhdG9yOjphZGRC
cmFuY2gpOgorICAgICAgICAoSlNDOjpXQVNNOjpCM0lSR2VuZXJhdG9yOjppbml0aWFsaXplSW5j
b21taW5nVHlwZXMpOgorICAgICAgICAoSlNDOjpXQVNNOjpCM0lSR2VuZXJhdG9yOjp1bmlmeVZh
bHVlc1dpdGhCbG9jayk6CisgICAgICAgIChKU0M6OldBU006OkIzSVJHZW5lcmF0b3I6OmNvbnRy
b2xEYXRhRm9yTGV2ZWwpOgorICAgICAgICAoSlNDOjpXQVNNOjpCM0lSR2VuZXJhdG9yOjpkdW1w
R3JhcGhBbmRDb250cm9sU3RhY2spOgorICAgICAgICAoSlNDOjpXQVNNOjpwYXJzZUFuZENvbXBp
bGUpOgorICAgICAgICAoSlNDOjpXQVNNOjpCM0lSR2VuZXJhdG9yOjp1bmlmeVZhbHVlc1dpdGhM
ZXZlbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldBU006OkIzSVJHZW5lcmF0b3I6OnN0YWNr
Rm9yQ29udHJvbExldmVsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V0FTTTo6QjNJUkdlbmVy
YXRvcjo6YmxvY2tGb3JDb250cm9sTGV2ZWwpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV0FT
TUNhbGxpbmdDb252ZW50aW9uLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9CM0NhbGxpbmdDb252ZW50aW9ucy5jcHAuCisgICAgICAgIChKU0M6OldBU006OmpzY0NhbGxp
bmdDb252ZW50aW9uKToKKyAgICAgICAgKiB3YXNtL1dBU01DYWxsaW5nQ29udmVudGlvbi5oOiBS
ZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL0IzQ2FsbGluZ0NvbnZlbnRpb25zLmgu
CisgICAgICAgIChKU0M6OldBU006OkNhbGxpbmdDb252ZW50aW9uOjpDYWxsaW5nQ29udmVudGlv
bik6CisgICAgICAgIChKU0M6OldBU006OkNhbGxpbmdDb252ZW50aW9uOjppdGVyYXRlKToKKyAg
ICAgICAgKEpTQzo6V0FTTTo6bmV4dEpTQ09mZnNldCk6CisgICAgICAgICogd2FzbS9XQVNNRm9y
bWF0Lmg6CisgICAgICAgIChKU0M6OldBU006OnRvQjNUeXBlKToKKyAgICAgICAgKEpTQzo6V0FT
TTo6aXNWYWx1ZVR5cGUpOgorICAgICAgICAqIHdhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmg6Cisg
ICAgICAgIChKU0M6OldBU006OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZSk6CisgICAg
ICAgIChKU0M6OldBU006OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24p
OgorICAgICAgICAqIHdhc20vV0FTTU1vZHVsZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OldB
U006Ok1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvblR5cGVzKToKKyAgICAgICAgKiB3YXNtL1dB
U01PcHMuaDoKKwogMjAxNi0wOS0wMSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+
CiAKICAgICAgICAganNjOiBwcm92aWRlIHByaW50RXJyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9CM0NhbGxpbmdDb252ZW50aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQjNDYWxsaW5nQ29udmVudGlvbnMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2OWFlZmYyYzQ0ODI0YWEwZjE1OWJjZGQ2ZDQxYmJkM2Y3MWQ0YmFlLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9CM0NhbGxpbmdDb252ZW50aW9ucy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkIzQ2FsbGluZ0NvbnZlbnRpb25zLmgiCi0KLSNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotI2lmIEVOQUJMRShCM19KSVQpCi0KLW5hbWVzcGFj
ZSBKU0MgewotCi1uYW1lc3BhY2UgQjMgewotCi1KU0NDYWxsaW5nQ29udmVudGlvbiYganNjQ2Fs
bGluZ0NvbnZlbnRpb24oKQotewotICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SlNDQ2Fs
bGluZ0NvbnZlbnRpb24+IHN0YXRpY0pTQ0NhbGxpbmdDb252ZW50aW9uOwotICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBzdGF0aWNKU0NDYWxsaW5nQ29udmVudGlvbkZsYWc7Ci0gICAgc3RkOjpj
YWxsX29uY2Uoc3RhdGljSlNDQ2FsbGluZ0NvbnZlbnRpb25GbGFnLCBbXSAoKSB7Ci0gICAgICAg
IHN0YXRpY0pTQ0NhbGxpbmdDb252ZW50aW9uLmNvbnN0cnVjdChWZWN0b3I8R1BSUmVnPigpLCBS
ZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKLSAgICB9KTsKLQotICAgIHJldHVy
biBzdGF0aWNKU0NDYWxsaW5nQ29udmVudGlvbjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQjMKLQot
fSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0IzQ2FsbGluZ0NvbnZlbnRpb25zLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQjNDYWxsaW5nQ29udmVudGlvbnMuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzI0ZDhmOTQ3YjZjYjI3ZGE1YWEyNjkyMWZiY2RiMWQ4ZWZhNjQxMy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQjNDYWxsaW5nQ29udmVudGlvbnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShCM19KSVQpCi0KLSNpbmNsdWRlICJCM0FyZ3VtZW50UmVn
VmFsdWUuaCIKLSNpbmNsdWRlICJCM0Jhc2ljQmxvY2suaCIKLSNpbmNsdWRlICJCM0NvbnN0NjRW
YWx1ZS5oIgotI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKLSNpbmNsdWRlICJCM1R5cGUuaCIK
LSNpbmNsdWRlICJDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJSZWdpc3RlclNldC5oIgotCi1uYW1l
c3BhY2UgSlNDIHsKLQotbmFtZXNwYWNlIEIzIHsKLQotdHlwZWRlZiB1bnNpZ25lZCAoKk5leHRP
ZmZzZXQpKHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQsIFR5cGUgdHlwZSk7Ci0KLXRlbXBsYXRlPHVu
c2lnbmVkIG9mZnNldCwgTmV4dE9mZnNldCB1cGRhdGVPZmZzZXQ+Ci1jbGFzcyBDYWxsaW5nQ29u
dmVudGlvbiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGhlYWRlclNpemUg
PSBvZmZzZXQ7Ci0KLSAgICBDYWxsaW5nQ29udmVudGlvbihWZWN0b3I8R1BSUmVnPiYmIHJlZ2lz
dGVyQXJndW1lbnRzLCBSZWdpc3RlclNldCYmIGNhbGxlZVNhdmVSZWdpc3RlcnMpCi0gICAgICAg
IDogbV9yZWdpc3RlckFyZ3VtZW50cyhyZWdpc3RlckFyZ3VtZW50cykKLSAgICAgICAgLCBtX2Nh
bGxlZVNhdmVSZWdpc3RlcnMoY2FsbGVlU2F2ZVJlZ2lzdGVycykKLSAgICB7Ci0gICAgfQotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICB2b2lkIGl0ZXJhdGUoY29uc3QgVmVj
dG9yPFR5cGU+JiBhcmd1bWVudFR5cGVzLCBQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJs
b2NrLCBPcmlnaW4gb3JpZ2luLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAotICAgIHsK
LSAgICAgICAgdW5zaWduZWQgY3VycmVudE9mZnNldCA9IGhlYWRlclNpemU7Ci0gICAgICAgIFZh
bHVlKiBmcmFtZVBvaW50ZXIgPSBibG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGcmFtZVBv
aW50ZXIsIG9yaWdpbik7Ci0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3Vt
ZW50VHlwZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIFZhbHVlKiBhcmd1bWVudDsKLSAg
ICAgICAgICAgIGlmIChpIDwgbV9yZWdpc3RlckFyZ3VtZW50cy5zaXplKCkpCi0gICAgICAgICAg
ICAgICAgYXJndW1lbnQgPSBibG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IG9yaWdpbiwgbV9yZWdpc3RlckFyZ3VtZW50c1tpXSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IGJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEFkZCwgb3JpZ2luLCBmcmFtZVBvaW50ZXIsCi0gICAgICAgICAgICAgICAgICAgIGJsb2Nr
LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBvcmlnaW4sIGN1cnJlbnRPZmZzZXQpKTsK
LSAgICAgICAgICAgICAgICBhcmd1bWVudCA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KHByb2MsIExvYWQsIGFyZ3VtZW50VHlwZXNbaV0sIG9yaWdpbiwgYWRkcmVzcyk7Ci0gICAgICAg
ICAgICAgICAgY3VycmVudE9mZnNldCA9IHVwZGF0ZU9mZnNldChjdXJyZW50T2Zmc2V0LCBhcmd1
bWVudFR5cGVzW2ldKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZ1bmN0b3IoYXJndW1l
bnQsIGkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgY29uc3QgVmVjdG9yPEdQUlJlZz4gbV9y
ZWdpc3RlckFyZ3VtZW50czsKLSAgICBjb25zdCBSZWdpc3RlclNldCBtX2NhbGxlZVNhdmVSZWdp
c3RlcnM7Ci0gICAgY29uc3QgUmVnaXN0ZXJTZXQgbV9jYWxsZXJTYXZlUmVnaXN0ZXJzOwotfTsK
LQotaW5saW5lIHVuc2lnbmVkIG5leHRKU0NPZmZzZXQodW5zaWduZWQgY3VycmVudE9mZnNldCwg
VHlwZSkKLXsKLSAgICByZXR1cm4gY3VycmVudE9mZnNldCArIHNpemVvZihSZWdpc3Rlcik7Ci19
Ci0KLWNvbnN0ZXhwciB1bnNpZ25lZCBqc2NIZWFkZXJTaXplID0gRXhlY1N0YXRlOjpoZWFkZXJT
aXplSW5SZWdpc3RlcnMgKiBzaXplb2YoUmVnaXN0ZXIpOwotdHlwZWRlZiBDYWxsaW5nQ29udmVu
dGlvbjxqc2NIZWFkZXJTaXplLCBuZXh0SlNDT2Zmc2V0PiBKU0NDYWxsaW5nQ29udmVudGlvbjsK
LQotSlNDQ2FsbGluZ0NvbnZlbnRpb24mIGpzY0NhbGxpbmdDb252ZW50aW9uKCk7Ci0KLX0gLy8g
bmFtZXNwYWNlIEIzCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gRU5BQkxFKEIz
X0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjQ5YWI2MDdhMGRjMTRjNjJm
NDRiNGU0N2Q2NGI2ZTFkZWIyYmI1ZC4uYzNkNzliZTQ4MGQ5ZWFmZTBkYjc0ZmZhODQyYTZhNjkw
NWVlODVmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNzksNyArMTE3OSw2
IEBACiAJCTUyQzk1MkI5MTlBMjhBMUMwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJDOTUyQjgxOUEyOEEx
QzAwNjlCMzg2IC8qIFR5cGVQcm9maWxlci5jcHAgKi87IH07CiAJCTUzMTM3NEJEMUQ1Q0U2NzYw
MEFGN0EwQiAvKiBXQVNNUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdBU01QbGFuLmggKi87IH07
CiAJCTUzMTM3NEJGMUQ1Q0U5NTAwMEFGN0EwQiAvKiBXQVNNUGxhbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzEzNzRCRTFENUNFOTUwMDBBRjdB
MEIgLyogV0FTTVBsYW4uY3BwICovOyB9OwotCQk1MzFCM0M4NzFENzRDNjAzMDA1QjMyMzYgLyog
QjNDYWxsaW5nQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzMUIzQzg2MUQ3NEM2MDMwMDVCMzIzNiAvKiBCM0NhbGxpbmdDb252ZW50
aW9ucy5oICovOyB9OwogCQk1MzQ4NkJCNzFDMTc5NUMzMDBGNkYzQUYgLyogSlNUeXBlZEFycmF5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ4NkJC
NjFDMTc5NUMzMDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk1MzQ4NkJCQjFDMThFODQ1MDBGNkYzQUYgLyog
SlNUeXBlZEFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzNDg2QkJBMUMxOEU4NDUwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuY3BwICovOyB9
OwogCQk1MzQ5MDI4NTFDNzI3NkI3MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDkwMjgyMUM3MjQy
QzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3BwICovOyB9OwpAQCAtMTE4OCw3ICsxMTg3
LDYgQEAKIAkJNTM1MjlBNEMxQzQ1N0I3NTAwMEI0OUM2IC8qIEFQSVV0aWxzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzUyOUE0QjFDNDU3Qjc1MDAw
QjQ5QzYgLyogQVBJVXRpbHMuaCAqLzsgfTsKIAkJNTM3MEI0RjUxQkYyNjIwMjAwNUM0MEZDIC8q
IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM3MEI0RjMxQkYyNUVBMjAw
NUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3Bw
ICovOyB9OwogCQk1MzcwQjRGNjFCRjI2MjA1MDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFBy
b3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTM3MEI0RjQxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5m
ZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCAqLzsgfTsKLQkJNTM4OEI0MDQxRDc2
NjQwQjAwRDNEODUyIC8qIEIzQ2FsbGluZ0NvbnZlbnRpb25zLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzODhCNDAzMUQ3NjY0MEIwMEQzRDg1MiAv
KiBCM0NhbGxpbmdDb252ZW50aW9ucy5jcHAgKi87IH07CiAJCTUzOTE3RTdCMUI3OTA2RkEwMDBF
QkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM5MTdFN0ExQjc5MDZF
NDAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgg
Ki87IH07CiAJCTUzOUVCMDc5MUQ1NTYwNzAwMEM4MkVGNyAvKiBGb3VuZGF0aW9uLmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjBF
QjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKIAkJNTM5
RUIwN0ExRDU1NjA3MDAwQzgyRUY3IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMkY1QkQ5MDgyMkEx
QzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CkBAIC0xMjA2LDYg
KzEyMDQsOCBAQAogCQk1M0Y2QkY2RDFDM0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlv
bkFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1M0Y2QkY2QzFDM0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFs
bG9jYXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTNGQTJBRTExQ0YzN0YzRjAwMjI3MTFEIC8qIExMSW50UHJvdG90eXBlTG9h
ZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGQTJBRTAxQ0YzN0YzRjAwMjI3MTFEIC8qIExMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUzRkEyQUUzMUNGMzgwMzkwMDIyNzEx
RCAvKiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGQTJBRTIxQ0Yz
ODAzOTAwMjI3MTFEIC8qIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludC5jcHAgKi87IH07CisJCTUzRkQwNEQzMUQ3QUIyNzcwMDMyODdEMyAvKiBXQVNNQ2FsbGlu
Z0NvbnZlbnRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTNGRDA0RDExRDdBQjE4NzAwMzI4N0QzIC8qIFdBU01DYWxsaW5nQ29udmVudGlvbi5j
cHAgKi87IH07CisJCTUzRkQwNEQ0MUQ3QUIyOTEwMDMyODdEMyAvKiBXQVNNQ2FsbGluZ0NvbnZl
bnRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUz
RkQwNEQyMUQ3QUIxODcwMDMyODdEMyAvKiBXQVNNQ2FsbGluZ0NvbnZlbnRpb24uaCAqLzsgfTsK
IAkJNUQ1RDhBRDEwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDVEOEFEMDBFMEQwRUJFMDBG
OUM2OTIgLyogbGliZWRpdC5keWxpYiAqLzsgfTsKIAkJNURCQjE1MUIxMzFEMEIzMTAwNTZBRDM2
IC8qIHRlc3RhcGkuanMgaW4gQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNEQ4NTc3NDBBNDY5NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAq
LzsgfTsKIAkJNURCQjE1MjUxMzFEMEJENzAwNTZBRDM2IC8qIG1pbmlkb20uanMgaW4gQ29weSBT
dXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDEyMTEw
RDBBNDg3ODg3MDA0ODAyNTUgLyogbWluaWRvbS5qcyAqLzsgfTsKQEAgLTMzNzMsNyArMzM3Myw2
IEBACiAJCTUyQzk1MkI4MTlBMjhBMUMwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVHlwZVByb2ZpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdBU01QbGFuLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01QbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUzMTM3NEJFMUQ1Q0U5NTAwMEFGN0EwQiAvKiBXQVNNUGxhbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXQVNNUGxhbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTUzMUIzQzg2MUQ3NEM2MDMwMDVCMzIzNiAvKiBCM0NhbGxpbmdDb252
ZW50aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCM0NhbGxpbmdDb252
ZW50aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ4NkJCNjFDMTc5NUMz
MDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTVHlwZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ4NkJC
QTFDMThFODQ1MDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTVHlwZWRBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUzNDkwMjgyMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5Q1Rlc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVHlwZWRBcnJheUNUZXN0LmNw
cDsgcGF0aCA9IEFQSS90ZXN0cy9UeXBlZEFycmF5Q1Rlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMzM4NCw3ICszMzgzLDYgQEAKIAkJNTM1MjlBNEIxQzQ1N0I3NTAwMEI0
OUM2IC8qIEFQSVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVV0
aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNzBCNEYzMUJGMjVFQTIwMDVD
NDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MzcwQjRGNDFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZGFw
dGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTUzODhCNDAzMUQ3NjY0MEIwMEQzRDg1MiAvKiBCM0NhbGxpbmdDb252
ZW50aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCM0NhbGxp
bmdDb252ZW50aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOTE3RTdB
MUI3OTA2RTQwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MzkxN0U3QzFCNzkxMTA2MDAwRUJEMzMgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOTE3RTgzMUI3OTFDQjgwMDBF
QkQzMyAvKiBUeXBlZEFycmF5UHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZh
c2NyaXB0OyBuYW1lID0gVHlwZWRBcnJheVByb3RvdHlwZS5qczsgcGF0aCA9IGJ1aWx0aW5zL1R5
cGVkQXJyYXlQcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKQEAgLTM0
MDQsNiArMzQwMiw4IEBACiAJCTUzRjZCRjZDMUMzRjA2MEEwMEY0MUU1RCAvKiBJbnRlcm5hbEZ1
bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUzRkEyQUUwMUNGMzdGM0YwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxv
YWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRkEyQUUyMUNGMzgwMzkwMDIyNzExRCAv
KiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTExJbnRQcm90b3R5cGVMb2FkQWRhcHRp
dmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTNGRDA0RDExRDdBQjE4NzAwMzI4N0QzIC8qIFdBU01DYWxsaW5nQ29udmVudGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXQVNNQ2FsbGluZ0NvbnZlbnRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1M0ZEMDREMjFEN0FCMTg3MDAzMjg3
RDMgLyogV0FTTUNhbGxpbmdDb252ZW50aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdBU01DYWxsaW5nQ29udmVudGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1OTNENDNDQ0EwQkJFMDZEODlDNTk3MDcgLyogTWFwRGF0YUlubGluZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFwRGF0YUlubGluZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUQ1RDhBRDAwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHls
aWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29t
cGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYmVkaXQuZHlsaWI7IHBhdGggPSAvdXNyL2xp
Yi9saWJlZGl0LmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQk1REFGRDZD
QjE0NkI2ODYzMDBGQkVGQjQgLyogSlNDLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEpTQy54Y2Nv
bmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3NzksOCArNDc3OSw2IEBACiAJ
CQkJRENGREZCRDcxRDFGNUQ5ODAwRkUzRDcyIC8qIEIzQm90dG9tUHJvdmlkZXIuaCAqLywKIAkJ
CQkwRjZCOEFERTFDNEVGRTE3MDA5NjkwNTIgLyogQjNCcmVha0NyaXRpY2FsRWRnZXMuY3BwICov
LAogCQkJCTBGNkI4QURGMUM0RUZFMTcwMDk2OTA1MiAvKiBCM0JyZWFrQ3JpdGljYWxFZGdlcy5o
ICovLAotCQkJCTUzODhCNDAzMUQ3NjY0MEIwMEQzRDg1MiAvKiBCM0NhbGxpbmdDb252ZW50aW9u
cy5jcHAgKi8sCi0JCQkJNTMxQjNDODYxRDc0QzYwMzAwNUIzMjM2IC8qIEIzQ2FsbGluZ0NvbnZl
bnRpb25zLmggKi8sCiAJCQkJREM5QTBDMUMxRDJEOTRFRjAwODUxMjRFIC8qIEIzQ2FzZUNvbGxl
Y3Rpb24uY3BwICovLAogCQkJCURDOUEwQzFEMUQyRDk0RUYwMDg1MTI0RSAvKiBCM0Nhc2VDb2xs
ZWN0aW9uLmggKi8sCiAJCQkJREM5QTBDMUUxRDJEOTRFRjAwODUxMjRFIC8qIEIzQ2FzZUNvbGxl
Y3Rpb25JbmxpbmVzLmggKi8sCkBAIC01NTc4LDEwICs1NTc2LDEyIEBACiAJCQljaGlsZHJlbiA9
ICgKIAkJCQk3Qjk4RDEzNDFCNjBDRDVBMDAyM0IxQTQgLyogSlNXQVNNTW9kdWxlLmNwcCAqLywK
IAkJCQk3Qjk4RDEzNTFCNjBDRDVBMDAyM0IxQTQgLyogSlNXQVNNTW9kdWxlLmggKi8sCi0JCQkJ
NTNGNDBFOTAxRDU5MDMwMjAwOTlBMUI2IC8qIFdBU01PcHMuaCAqLywKLQkJCQk3QkM1NDdEMjFC
Njk1OTlCMDA5NTlCNTggLyogV0FTTUZvcm1hdC5oICovLAogCQkJCTUzRjQwRThFMUQ1OTAyODIw
MDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5jcHAgKi8sCiAJCQkJNTNGNDBFOTIxRDVBNEFC
MzAwOTlBMUI2IC8qIFdBU01CM0lSR2VuZXJhdG9yLmggKi8sCisJCQkJNTNGRDA0RDExRDdBQjE4
NzAwMzI4N0QzIC8qIFdBU01DYWxsaW5nQ29udmVudGlvbi5jcHAgKi8sCisJCQkJNTNGRDA0RDIx
RDdBQjE4NzAwMzI4N0QzIC8qIFdBU01DYWxsaW5nQ29udmVudGlvbi5oICovLAorCQkJCTUzRjQw
RTkwMUQ1OTAzMDIwMDk5QTFCNiAvKiBXQVNNT3BzLmggKi8sCisJCQkJN0JDNTQ3RDIxQjY5NTk5
QjAwOTU5QjU4IC8qIFdBU01Gb3JtYXQuaCAqLywKIAkJCQk1M0Y0MEU4QTFENTkwMUJCMDA5OUEx
QjYgLyogV0FTTUZ1bmN0aW9uUGFyc2VyLmggKi8sCiAJCQkJNTNGNDBFOTYxRDVBN0JFQzAwOTlB
MUI2IC8qIFdBU01Nb2R1bGVQYXJzZXIuY3BwICovLAogCQkJCTUzRjQwRTk0MUQ1QTdBRUYwMDk5
QTFCNiAvKiBXQVNNTW9kdWxlUGFyc2VyLmggKi8sCkBAIC04MjIzLDYgKzgyMjMsNyBAQAogCQkJ
CTk5NkI3MzI3MUJEQTA4RUYwMDMzMUI4NCAvKiBTeW1ib2xDb25zdHJ1Y3Rvci5sdXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTcwNUI0MUIwMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xPYmplY3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzNGQ0ZDMUMxNjI1QkUwMDMyM0Y2NyAvKiBCM0RvbWlu
YXRvcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzRkQwNEQ0MUQ3QUIyOTEwMDMyODdEMyAvKiBX
QVNNQ2FsbGluZ0NvbnZlbnRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTcwNUI0MUIyMUE2RTUw
MUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NkI3
MzI4MUJEQTA4RUYwMDMzMUI4NCAvKiBTeW1ib2xQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzE4QzQ2QjBFMTZGNUNEMDBCMzQ0NjAgLyogU3ltYm9sVGFibGUuaCBpbiBIZWFk
ZXJzICovLApAQCAtODI3MSw3ICs4MjcyLDYgQEAKIAkJCQk5OURBMDBCMTFCRDU5OTRFMDBGNDU3
NUMgLyogVXBkYXRlQ29udGVudHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2M0IzODEzRkM2
RkU5MDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQyNkE0
ODE0NjBDQkIzMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NTMxQjNDODcxRDc0QzYwMzAwNUIzMjM2IC8qIEIzQ2FsbGluZ0NvbnZlbnRpb25zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3OUVFMEMwMDFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9u
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2QzczNTExQUM5Rjk5RjAwQkUxNjgyIC8qIFZh
cmlhYmxlV3JpdGVGaXJlRGV0YWlsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyRDFBQTkw
OTU2MDBEMzNCMzMgLyogVmFyT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTg5MjMsNyArODky
Myw2IEBACiAJCQkJNzA5NEM0REUxQUU0Mzk1MzAwNDFBMkVFIC8qIEJ5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJGQ0FFMTIxN0E5QzI0RTAwMzRDNzM1
IC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMz
OEUwRDFCRjAyNzZDMDAxM0M4OEYgLyogQjNEYXRhU2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk1Mzg4QjQwNDFENzY2NDBCMDBEM0Q4NTIgLyogQjNDYWxsaW5nQ29udmVudGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNjVCODM5MkYxQkFDQUQ2QTAwNDRFODI0IC8qIENhY2hlZFJl
Y292ZXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjgwODJEMTA3RUMwNTcwMDEzRTdCMiAv
KiBDYWxsRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY0QjI3OTFBNzk1N0IyMDA2RTRF
NjYgLyogQ2FsbEVkZ2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MDU2LDYgKzkwNTUsNyBAQAog
CQkJCTBGQzk3RjNGMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdKdW1wUmVwbGFjZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkVBMEM0MDIxQ0REN0QxRDAwNDgxOTkxIC8qIEZ1bmN0aW9uV2hp
dGVsaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3M0E1MzVBMTc5OUNENUQwMDE3MEMxOSAv
KiBERkdMYXp5SlNWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1M0ZEMDREMzFEN0FCMjc3
MDAzMjg3RDMgLyogV0FTTUNhbGxpbmdDb252ZW50aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTYyRjJBQTM3MUIwQkVERTMwMDYxMEM3QSAvKiBERkdMYXp5Tm9kZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBN0Q5QTI5NzE3QTBCQzc0MDBFRTI2MTggLyogREZHTElDTVBoYXNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTc5QzRCMTVEMUJBMjE1OEYwMEZENTkyRSAvKiBERkdMaXZlQ2F0Y2hW
YXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVHlwZS5oCmluZGV4IDI5YjdkMzZmMjhjZTAwNzY2M2U2N2M0NDk1YWZjN2RhOTYxODJl
OGMuLjM4ZDU3NzFiMWZlN2JlMDc2OWQ5MGUzZTU0M2MwZDkyYWE5OGIyNTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNUeXBlLmgKQEAgLTM5LDEyICszOSwxMSBAQAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7CiAKIGVudW0gVHlwZSA6IGludDhfdCB7CisgICAgVm9pZCwKICAgICBJbnQz
MiwKICAgICBJbnQ2NCwKICAgICBGbG9hdCwKICAgICBEb3VibGUsCi0gICAgTGFzdFZhbHVlVHlw
ZSA9IERvdWJsZSwKLSAgICBWb2lkCiB9OwogCiBpbmxpbmUgYm9vbCBpc0ludChUeXBlIHR5cGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFdBU00uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RXQVNNLmNwcAppbmRleCA4OTMyNzliNzJjN2Y4MWIxZjk4ZDdl
MDg2MGEyNzljY2QwOTFlYTdkLi4yNjQyMzFlOTk4MzEwZmZkMDA2YzI2Zjk5NTE2MjMzZTI3NDY0
MzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFdBU00uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0V0FTTS5jcHAKQEAgLTgyLDM4ICs4Miw1MCBAQCB2
b2lkIENvbW1hbmRMaW5lOjpwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAK
IH0KIAorU3RhdGljTG9jayBjcmFzaExvY2s7CisKKyNkZWZpbmUgQ0hFQ0tfRVEoeCwgeSkgZG8g
eyBcCisgICAgICAgIGF1dG8gX194ID0gKHgpOyBcCisgICAgICAgIGF1dG8gX195ID0gKHkpOyBc
CisgICAgICAgIGlmIChfX3ggPT0gX195KSBcCisgICAgICAgIGJyZWFrOyBcCisgICAgICAgIGNy
YXNoTG9jay5sb2NrKCk7IFwKKyAgICAgICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShfX0ZJ
TEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sIHRvQ1N0cmluZygjeCAiID09ICIg
I3ksICIgKCIgI3ggIiA9PSAiLCBfX3gsICIsICIgI3kgIiA9PSAiLCBfX3ksICIpIikuZGF0YSgp
KTsgXAorICAgICAgICBDUkFTSCgpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKICNkZWZpbmUg
Rk9SX0VBQ0hfVU5TSUdORURfTEVCX1RFU1QobWFjcm8pIFwKICAgICAvKiBTaW1wbGUgdGVzdHMg
dGhhdCB1c2UgYWxsIHRoZSBiaXRzIGluIHRoZSBhcnJheSAqLyBcCi0gICAgbWFjcm8oKHsgMHgw
NyB9KSwgMCwgdHJ1ZSwgMHg3LCAxKSBcCi0gICAgbWFjcm8oKHsgMHg3NyB9KSwgMCwgdHJ1ZSwg
MHg3NywgMSkgXAotICAgIG1hY3JvKCh7IDB4ODAsIDB4MDcgfSksIDAsIHRydWUsIDB4MzgwLCAy
KSBcCi0gICAgbWFjcm8oKHsgMHg4OSwgMHgxMiB9KSwgMCwgdHJ1ZSwgMHg5MDksIDIpIFwKLSAg
ICBtYWNybygoeyAweGYzLCAweDg1LCAweDAyIH0pLCAwLCB0cnVlLCAweDgyZjMsIDMpIFwKLSAg
ICBtYWNybygoeyAweGYzLCAweDg1LCAweGZmLCAweDc0IH0pLCAwLCB0cnVlLCAweGU5ZmMyZjMs
IDQpIFwKLSAgICBtYWNybygoeyAweGYzLCAweDg1LCAweGZmLCAweGY0LCAweDdmIH0pLCAwLCB0
cnVlLCAweGZlOWZjMmYzLCA1KSBcCisgICAgbWFjcm8oKHsgMHgwNyB9KSwgMCwgdHJ1ZSwgMHg3
bHUsIDFsdSkgXAorICAgIG1hY3JvKCh7IDB4NzcgfSksIDAsIHRydWUsIDB4NzdsdSwgMWx1KSBc
CisgICAgbWFjcm8oKHsgMHg4MCwgMHgwNyB9KSwgMCwgdHJ1ZSwgMHgzODBsdSwgMmx1KSBcCisg
ICAgbWFjcm8oKHsgMHg4OSwgMHgxMiB9KSwgMCwgdHJ1ZSwgMHg5MDlsdSwgMmx1KSBcCisgICAg
bWFjcm8oKHsgMHhmMywgMHg4NSwgMHgwMiB9KSwgMCwgdHJ1ZSwgMHg4MmYzbHUsIDNsdSkgXAor
ICAgIG1hY3JvKCh7IDB4ZjMsIDB4ODUsIDB4ZmYsIDB4NzQgfSksIDAsIHRydWUsIDB4ZTlmYzJm
M2x1LCA0bHUpIFwKKyAgICBtYWNybygoeyAweGYzLCAweDg1LCAweGZmLCAweGY0LCAweDdmIH0p
LCAwLCB0cnVlLCAweGZlOWZjMmYzbHUsIDVsdSkgXAogICAgIC8qIFRlc3Qgd2l0aCBleHRyYSB0
cmFpbGluZyBudW1iZXJzICovIFwKLSAgICBtYWNybygoeyAweDA3LCAweDgwIH0pLCAwLCB0cnVl
LCAweDcsIDEpIFwKLSAgICBtYWNybygoeyAweDA3LCAweDc1IH0pLCAwLCB0cnVlLCAweDcsIDEp
IFwKLSAgICBtYWNybygoeyAweGYzLCAweDg1LCAweGZmLCAweDc0LCAweDQzIH0pLCAwLCB0cnVl
LCAweGU5ZmMyZjMsIDQpIFwKLSAgICBtYWNybygoeyAweGYzLCAweDg1LCAweGZmLCAweDc0LCAw
eDgwIH0pLCAwLCB0cnVlLCAweGU5ZmMyZjMsIDQpIFwKKyAgICBtYWNybygoeyAweDA3LCAweDgw
IH0pLCAwLCB0cnVlLCAweDdsdSwgMWx1KSBcCisgICAgbWFjcm8oKHsgMHgwNywgMHg3NSB9KSwg
MCwgdHJ1ZSwgMHg3bHUsIDFsdSkgXAorICAgIG1hY3JvKCh7IDB4ZjMsIDB4ODUsIDB4ZmYsIDB4
NzQsIDB4NDMgfSksIDAsIHRydWUsIDB4ZTlmYzJmM2x1LCA0bHUpIFwKKyAgICBtYWNybygoeyAw
eGYzLCAweDg1LCAweGZmLCAweDc0LCAweDgwIH0pLCAwLCB0cnVlLCAweGU5ZmMyZjNsdSwgNGx1
KSBcCiAgICAgLyogVGVzdCB3aXRoIHByZWNlZWRpbmcgbnVtYmVycyAqLyBcCi0gICAgbWFjcm8o
KHsgMHhmMywgMHgwNyB9KSwgMSwgdHJ1ZSwgMHg3LCAyKSBcCi0gICAgbWFjcm8oKHsgMHgwMywg
MHgwNyB9KSwgMSwgdHJ1ZSwgMHg3LCAyKSBcCi0gICAgbWFjcm8oKHsgMHhmMiwgMHg1MywgMHg0
MywgMHg2NywgMHg3OSwgMHg3NyB9KSwgNSwgdHJ1ZSwgMHg3NywgNikgXAotICAgIG1hY3JvKCh7
IDB4ZjIsIDB4NTMsIDB4NDMsIDB4ZjcsIDB4ODQsIDB4NzcgfSksIDUsIHRydWUsIDB4NzcsIDYp
IFwKLSAgICBtYWNybygoeyAweGYyLCAweDUzLCAweDQzLCAweGYzLCAweDg1LCAweDAyIH0pLCAz
LCB0cnVlLCAweDgyZjMsIDYpIFwKKyAgICBtYWNybygoeyAweGYzLCAweDA3IH0pLCAxLCB0cnVl
LCAweDdsdSwgMmx1KSBcCisgICAgbWFjcm8oKHsgMHgwMywgMHgwNyB9KSwgMSwgdHJ1ZSwgMHg3
bHUsIDJsdSkgXAorICAgIG1hY3JvKCh7IDB4ZjIsIDB4NTMsIDB4NDMsIDB4NjcsIDB4NzksIDB4
NzcgfSksIDUsIHRydWUsIDB4NzdsdSwgNmx1KSBcCisgICAgbWFjcm8oKHsgMHhmMiwgMHg1Mywg
MHg0MywgMHhmNywgMHg4NCwgMHg3NyB9KSwgNSwgdHJ1ZSwgMHg3N2x1LCA2dWwpIFwKKyAgICBt
YWNybygoeyAweGYyLCAweDUzLCAweDQzLCAweGYzLCAweDg1LCAweDAyIH0pLCAzLCB0cnVlLCAw
eDgyZjNsdSwgNmx1KSBcCiAgICAgLyogVGVzdCBpbiB0aGUgbWlkZGxlICovIFwKLSAgICBtYWNy
bygoeyAweGYzLCAweDA3LCAweDg5IH0pLCAxLCB0cnVlLCAweDcsIDIpIFwKLSAgICBtYWNybygo
eyAweDAzLCAweDA3LCAweDIzIH0pLCAxLCB0cnVlLCAweDcsIDIpIFwKLSAgICBtYWNybygoeyAw
eGYyLCAweDUzLCAweDQzLCAweDY3LCAweDc5LCAweDc3LCAweDQzIH0pLCA1LCB0cnVlLCAweDc3
LCA2KSBcCi0gICAgbWFjcm8oKHsgMHhmMiwgMHg1MywgMHg0MywgMHhmNywgMHg4NCwgMHg3Nywg
MHhmOSB9KSwgNSwgdHJ1ZSwgMHg3NywgNikgXAotICAgIG1hY3JvKCh7IDB4ZjIsIDB4NTMsIDB4
NDMsIDB4ZjMsIDB4ODUsIDB4MDIsIDB4YTQgfSksIDMsIHRydWUsIDB4ODJmMywgNikgXAorICAg
IG1hY3JvKCh7IDB4ZjMsIDB4MDcsIDB4ODkgfSksIDEsIHRydWUsIDB4N2x1LCAybHUpIFwKKyAg
ICBtYWNybygoeyAweDAzLCAweDA3LCAweDIzIH0pLCAxLCB0cnVlLCAweDdsdSwgMmx1KSBcCisg
ICAgbWFjcm8oKHsgMHhmMiwgMHg1MywgMHg0MywgMHg2NywgMHg3OSwgMHg3NywgMHg0MyB9KSwg
NSwgdHJ1ZSwgMHg3N2x1LCA2bHUpIFwKKyAgICBtYWNybygoeyAweGYyLCAweDUzLCAweDQzLCAw
eGY3LCAweDg0LCAweDc3LCAweGY5IH0pLCA1LCB0cnVlLCAweDc3bHUsIDZsdSkgXAorICAgIG1h
Y3JvKCh7IDB4ZjIsIDB4NTMsIDB4NDMsIDB4ZjMsIDB4ODUsIDB4MDIsIDB4YTQgfSksIDMsIHRy
dWUsIDB4ODJmM2x1LCA2bHUpIFwKICAgICAvKiBUZXN0IGRlY29kZSB0b28gbG9uZyAqLyBcCi0g
ICAgbWFjcm8oKHsgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MH0pLCAwLCBmYWxz
ZSwgMHgwLCAwKSBcCi0gICAgbWFjcm8oKHsgMHg4MCwgMHg4MCwgMHhhYiwgMHg4YSwgMHg5YSwg
MHhhMywgMHhmZn0pLCAxLCBmYWxzZSwgMHgwLCAwKSBcCi0gICAgbWFjcm8oKHsgMHg4MCwgMHg4
MCwgMHhhYiwgMHg4YSwgMHg5YSwgMHhhMywgMHhmZn0pLCAwLCBmYWxzZSwgMHgwLCAwKSBcCisg
ICAgbWFjcm8oKHsgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MCwgMHg4MH0pLCAwLCBmYWxz
ZSwgMHgwbHUsIDBsdSkgXAorICAgIG1hY3JvKCh7IDB4ODAsIDB4ODAsIDB4YWIsIDB4OGEsIDB4
OWEsIDB4YTMsIDB4ZmZ9KSwgMSwgZmFsc2UsIDB4MGx1LCAwbHUpIFwKKyAgICBtYWNybygoeyAw
eDgwLCAweDgwLCAweGFiLCAweDhhLCAweDlhLCAweGEzLCAweGZmfSksIDAsIGZhbHNlLCAweDBs
dSwgMGx1KSBcCiAgICAgLyogVGVzdCBkZWNvZGUgb2ZmIGVuZCBvZiBhcnJheSAqLyBcCi0gICAg
bWFjcm8oKHsgMHg4MCwgMHg4MCwgMHhhYiwgMHg4YSwgMHg5YSwgMHhhMywgMHhmZn0pLCAyLCBm
YWxzZSwgMHgwLCAwKSBcCisgICAgbWFjcm8oKHsgMHg4MCwgMHg4MCwgMHhhYiwgMHg4YSwgMHg5
YSwgMHhhMywgMHhmZn0pLCAyLCBmYWxzZSwgMHgwbHUsIDBsdSkgXAogCiAKICNkZWZpbmUgVEVT
VF9VTlNJR05FRF9MRUJfREVDT0RFKGluaXQsIHN0YXJ0T2Zmc2V0LCBleHBlY3RlZFN0YXR1cywg
ZXhwZWN0ZWRSZXN1bHQsIGV4cGVjdGVkT2Zmc2V0KSBcCkBAIC0xMjIsNDYgKzEzNCw0NiBAQCB2
b2lkIENvbW1hbmRMaW5lOjpwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAg
ICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdGFydE9mZnNldDsgXAogICAgICAgICB1aW50MzJfdCBy
ZXN1bHQ7IFwKICAgICAgICAgYm9vbCBzdGF0dXMgPSBkZWNvZGVVSW50MzIodmVjdG9yLmRhdGEo
KSwgdmVjdG9yLnNpemUoKSwgb2Zmc2V0LCByZXN1bHQpOyBcCi0gICAgICAgIFJFTEVBU0VfQVNT
RVJUKHN0YXR1cyA9PSBleHBlY3RlZFN0YXR1cyk7IFwKKyAgICAgICAgQ0hFQ0tfRVEoc3RhdHVz
LCBleHBlY3RlZFN0YXR1cyk7IFwKICAgICAgICAgaWYgKGV4cGVjdGVkU3RhdHVzKSB7IFwKLSAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7IFwKLSAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9mZnNldCA9PSBleHBlY3RlZE9mZnNldCk7IFwKKyAg
ICAgICAgICAgIENIRUNLX0VRKHJlc3VsdCwgZXhwZWN0ZWRSZXN1bHQpOyBcCisgICAgICAgICAg
ICBDSEVDS19FUShvZmZzZXQsIGV4cGVjdGVkT2Zmc2V0KTsgXAogICAgICAgICB9IFwKICAgICB9
OwogCiAKICNkZWZpbmUgRk9SX0VBQ0hfU0lHTkVEX0xFQl9URVNUKG1hY3JvKSBcCiAgICAgLyog
U2ltcGxlIHRlc3RzIHRoYXQgdXNlIGFsbCB0aGUgYml0cyBpbiB0aGUgYXJyYXkgKi8gXAotICAg
IG1hY3JvKCh7IDB4MDcgfSksIDAsIHRydWUsIDB4NywgMSkgXAotICAgIG1hY3JvKCh7IDB4Nzcg
fSksIDAsIHRydWUsIC0weDksIDEpIFwKLSAgICBtYWNybygoeyAweDgwLCAweDA3IH0pLCAwLCB0
cnVlLCAweDM4MCwgMikgXAotICAgIG1hY3JvKCh7IDB4ODksIDB4MTIgfSksIDAsIHRydWUsIDB4
OTA5LCAyKSBcCi0gICAgbWFjcm8oKHsgMHhmMywgMHg4NSwgMHgwMiB9KSwgMCwgdHJ1ZSwgMHg4
MmYzLCAzKSBcCi0gICAgbWFjcm8oKHsgMHhmMywgMHg4NSwgMHhmZiwgMHg3NCB9KSwgMCwgdHJ1
ZSwgMHhmZTlmYzJmMywgNCkgXAotICAgIG1hY3JvKCh7IDB4ZjMsIDB4ODUsIDB4ZmYsIDB4ZjQs
IDB4N2YgfSksIDAsIHRydWUsIDB4ZmU5ZmMyZjMsIDUpIFwKKyAgICBtYWNybygoeyAweDA3IH0p
LCAwLCB0cnVlLCAweDcsIDFsdSkgXAorICAgIG1hY3JvKCh7IDB4NzcgfSksIDAsIHRydWUsIC0w
eDksIDFsdSkgXAorICAgIG1hY3JvKCh7IDB4ODAsIDB4MDcgfSksIDAsIHRydWUsIDB4MzgwLCAy
bHUpIFwKKyAgICBtYWNybygoeyAweDg5LCAweDEyIH0pLCAwLCB0cnVlLCAweDkwOSwgMmx1KSBc
CisgICAgbWFjcm8oKHsgMHhmMywgMHg4NSwgMHgwMiB9KSwgMCwgdHJ1ZSwgMHg4MmYzLCAzbHUp
IFwKKyAgICBtYWNybygoeyAweGYzLCAweDg1LCAweGZmLCAweDc0IH0pLCAwLCB0cnVlLCAweGZl
OWZjMmYzLCA0bHUpIFwKKyAgICBtYWNybygoeyAweGYzLCAweDg1LCAweGZmLCAweGY0LCAweDdm
IH0pLCAwLCB0cnVlLCAweGZlOWZjMmYzLCA1bHUpIFwKICAgICAvKiBUZXN0IHdpdGggZXh0cmEg
dHJhaWxpbmcgbnVtYmVycyAqLyBcCi0gICAgbWFjcm8oKHsgMHgwNywgMHg4MCB9KSwgMCwgdHJ1
ZSwgMHg3LCAxKSBcCi0gICAgbWFjcm8oKHsgMHgwNywgMHg3NSB9KSwgMCwgdHJ1ZSwgMHg3LCAx
KSBcCi0gICAgbWFjcm8oKHsgMHhmMywgMHg4NSwgMHhmZiwgMHg3NCwgMHg0MyB9KSwgMCwgdHJ1
ZSwgMHhmZTlmYzJmMywgNCkgXAotICAgIG1hY3JvKCh7IDB4ZjMsIDB4ODUsIDB4ZmYsIDB4NzQs
IDB4ODAgfSksIDAsIHRydWUsIDB4ZmU5ZmMyZjMsIDQpIFwKKyAgICBtYWNybygoeyAweDA3LCAw
eDgwIH0pLCAwLCB0cnVlLCAweDcsIDFsdSkgXAorICAgIG1hY3JvKCh7IDB4MDcsIDB4NzUgfSks
IDAsIHRydWUsIDB4NywgMWx1KSBcCisgICAgbWFjcm8oKHsgMHhmMywgMHg4NSwgMHhmZiwgMHg3
NCwgMHg0MyB9KSwgMCwgdHJ1ZSwgMHhmZTlmYzJmMywgNGx1KSBcCisgICAgbWFjcm8oKHsgMHhm
MywgMHg4NSwgMHhmZiwgMHg3NCwgMHg4MCB9KSwgMCwgdHJ1ZSwgMHhmZTlmYzJmMywgNGx1KSBc
CiAgICAgLyogVGVzdCB3aXRoIHByZWNlZWRpbmcgbnVtYmVycyAqLyBcCi0gICAgbWFjcm8oKHsg
MHhmMywgMHgwNyB9KSwgMSwgdHJ1ZSwgMHg3LCAyKSBcCi0gICAgbWFjcm8oKHsgMHgwMywgMHgw
NyB9KSwgMSwgdHJ1ZSwgMHg3LCAyKSBcCi0gICAgbWFjcm8oKHsgMHhmMiwgMHg1MywgMHg0Mywg
MHg2NywgMHg3OSwgMHg3NyB9KSwgNSwgdHJ1ZSwgLTB4OSwgNikgXAotICAgIG1hY3JvKCh7IDB4
ZjIsIDB4NTMsIDB4NDMsIDB4ZjcsIDB4ODQsIDB4NzcgfSksIDUsIHRydWUsIC0weDksIDYpIFwK
LSAgICBtYWNybygoeyAweGYyLCAweDUzLCAweDQzLCAweGYzLCAweDg1LCAweDAyIH0pLCAzLCB0
cnVlLCAweDgyZjMsIDYpIFwKKyAgICBtYWNybygoeyAweGYzLCAweDA3IH0pLCAxLCB0cnVlLCAw
eDcsIDJsdSkgXAorICAgIG1hY3JvKCh7IDB4MDMsIDB4MDcgfSksIDEsIHRydWUsIDB4NywgMmx1
KSBcCisgICAgbWFjcm8oKHsgMHhmMiwgMHg1MywgMHg0MywgMHg2NywgMHg3OSwgMHg3NyB9KSwg
NSwgdHJ1ZSwgLTB4OSwgNmx1KSBcCisgICAgbWFjcm8oKHsgMHhmMiwgMHg1MywgMHg0MywgMHhm
NywgMHg4NCwgMHg3NyB9KSwgNSwgdHJ1ZSwgLTB4OSwgNmx1KSBcCisgICAgbWFjcm8oKHsgMHhm
MiwgMHg1MywgMHg0MywgMHhmMywgMHg4NSwgMHgwMiB9KSwgMywgdHJ1ZSwgMHg4MmYzLCA2bHUp
IFwKICAgICAvKiBUZXN0IGluIHRoZSBtaWRkbGUgKi8gXAotICAgIG1hY3JvKCh7IDB4ZjMsIDB4
MDcsIDB4ODkgfSksIDEsIHRydWUsIDB4NywgMikgXAotICAgIG1hY3JvKCh7IDB4MDMsIDB4MDcs
IDB4MjMgfSksIDEsIHRydWUsIDB4NywgMikgXAotICAgIG1hY3JvKCh7IDB4ZjIsIDB4NTMsIDB4
NDMsIDB4NjcsIDB4NzksIDB4NzcsIDB4NDMgfSksIDUsIHRydWUsIC0weDksIDYpIFwKLSAgICBt
YWNybygoeyAweGYyLCAweDUzLCAweDQzLCAweGY3LCAweDg0LCAweDc3LCAweGY5IH0pLCA1LCB0
cnVlLCAtMHg5LCA2KSBcCi0gICAgbWFjcm8oKHsgMHhmMiwgMHg1MywgMHg0MywgMHhmMywgMHg4
NSwgMHgwMiwgMHhhNCB9KSwgMywgdHJ1ZSwgMHg4MmYzLCA2KSBcCisgICAgbWFjcm8oKHsgMHhm
MywgMHgwNywgMHg4OSB9KSwgMSwgdHJ1ZSwgMHg3LCAybHUpIFwKKyAgICBtYWNybygoeyAweDAz
LCAweDA3LCAweDIzIH0pLCAxLCB0cnVlLCAweDcsIDJsdSkgXAorICAgIG1hY3JvKCh7IDB4ZjIs
IDB4NTMsIDB4NDMsIDB4NjcsIDB4NzksIDB4NzcsIDB4NDMgfSksIDUsIHRydWUsIC0weDksIDZs
dSkgXAorICAgIG1hY3JvKCh7IDB4ZjIsIDB4NTMsIDB4NDMsIDB4ZjcsIDB4ODQsIDB4NzcsIDB4
ZjkgfSksIDUsIHRydWUsIC0weDksIDZsdSkgXAorICAgIG1hY3JvKCh7IDB4ZjIsIDB4NTMsIDB4
NDMsIDB4ZjMsIDB4ODUsIDB4MDIsIDB4YTQgfSksIDMsIHRydWUsIDB4ODJmMywgNmx1KSBcCiAg
ICAgLyogVGVzdCBkZWNvZGUgdG9vIGxvbmcgKi8gXAotICAgIG1hY3JvKCh7IDB4ODAsIDB4ODAs
IDB4ODAsIDB4ODAsIDB4ODAsIDB4ODB9KSwgMCwgZmFsc2UsIDB4MCwgMCkgXAotICAgIG1hY3Jv
KCh7IDB4ODAsIDB4ODAsIDB4YWIsIDB4OGEsIDB4OWEsIDB4YTMsIDB4ZmZ9KSwgMSwgZmFsc2Us
IDB4MCwgMCkgXAotICAgIG1hY3JvKCh7IDB4ODAsIDB4ODAsIDB4YWIsIDB4OGEsIDB4OWEsIDB4
YTMsIDB4ZmZ9KSwgMCwgZmFsc2UsIDB4MCwgMCkgXAorICAgIG1hY3JvKCh7IDB4ODAsIDB4ODAs
IDB4ODAsIDB4ODAsIDB4ODAsIDB4ODB9KSwgMCwgZmFsc2UsIDB4MCwgMGx1KSBcCisgICAgbWFj
cm8oKHsgMHg4MCwgMHg4MCwgMHhhYiwgMHg4YSwgMHg5YSwgMHhhMywgMHhmZn0pLCAxLCBmYWxz
ZSwgMHgwLCAwbHUpIFwKKyAgICBtYWNybygoeyAweDgwLCAweDgwLCAweGFiLCAweDhhLCAweDlh
LCAweGEzLCAweGZmfSksIDAsIGZhbHNlLCAweDAsIDBsdSkgXAogICAgIC8qIFRlc3QgZGVjb2Rl
IG9mZiBlbmQgb2YgYXJyYXkgKi8gXAotICAgIG1hY3JvKCh7IDB4ODAsIDB4ODAsIDB4YWIsIDB4
OGEsIDB4OWEsIDB4YTMsIDB4ZmZ9KSwgMiwgZmFsc2UsIDB4MCwgMCkgXAorICAgIG1hY3JvKCh7
IDB4ODAsIDB4ODAsIDB4YWIsIDB4OGEsIDB4OWEsIDB4YTMsIDB4ZmZ9KSwgMiwgZmFsc2UsIDB4
MCwgMGx1KSBcCiAKIAogI2RlZmluZSBURVNUX1NJR05FRF9MRUJfREVDT0RFKGluaXQsIHN0YXJ0
T2Zmc2V0LCBleHBlY3RlZFN0YXR1cywgZXhwZWN0ZWRSZXN1bHQsIGV4cGVjdGVkT2Zmc2V0KSBc
CkBAIC0xNzAsMTEgKzE4MiwxMSBAQCB2b2lkIENvbW1hbmRMaW5lOjpwYXJzZUFyZ3VtZW50cyhp
bnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdGFydE9mZnNl
dDsgXAogICAgICAgICBpbnQzMl90IHJlc3VsdDsgXAogICAgICAgICBib29sIHN0YXR1cyA9IGRl
Y29kZUludDMyKHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCksIG9mZnNldCwgcmVzdWx0KTsg
XAotICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGF0dXMgPT0gZXhwZWN0ZWRTdGF0dXMpOyBcCisg
ICAgICAgIENIRUNLX0VRKHN0YXR1cywgZXhwZWN0ZWRTdGF0dXMpOyBcCiAgICAgICAgIGlmIChl
eHBlY3RlZFN0YXR1cykgeyBcCiAgICAgICAgICAgICBpbnQzMl90IGV4cGVjdGVkID0gZXhwZWN0
ZWRSZXN1bHQ7IFwKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCA9PSBleHBlY3Rl
ZCk7IFwKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9mZnNldCA9PSBleHBlY3RlZE9mZnNl
dCk7IFwKKyAgICAgICAgICAgIENIRUNLX0VRKHJlc3VsdCwgZXhwZWN0ZWQpOyBcCisgICAgICAg
ICAgICBDSEVDS19FUShvZmZzZXQsIGV4cGVjdGVkT2Zmc2V0KTsgXAogICAgICAgICB9IFwKICAg
ICB9OwogCkBAIC0yNDYsNyArMjU4LDcgQEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAg
ICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBS
RUxFQVNFX0FTU0VSVChpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgfSkgPT0gNSk7Cisg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyB9KSwgNSk7CiAg
ICAgfQogCiAKQEAgLTI2OCw3ICsyODAsNyBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQog
ICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyB9KSA9PSAxMSk7
CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyB9KSwgMTEp
OwogICAgIH0KICAgICAKICAgICB7CkBAIC0yODksNyArMzAxLDcgQEAgc3RhdGljIHZvaWQgcnVu
V0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNy
YXNoLgotICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0s
IHsgfSkgPT0gMTEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0sIHsgfSksIDExKTsKICAgICB9CiAKICAgICB7CkBAIC0zMTAsNyArMzIyLDcgQEAgc3RhdGlj
IHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBk
b2Vzbid0IGNyYXNoLgotICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0sIHsgfSkgPT0gMTEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0sIHsgfSksIDExKTsKICAgICB9CiAKICAgICB7CkBAIC0zMjksMTEgKzM0MSwx
ODcgQEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8v
IFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0sIHtib3goMCksIGJveCgxKX0pID09IDEpOwotICAgICAgICBS
RUxFQVNFX0FTU0VSVChpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHtib3goMTAwKSwgYm94
KDEpfSkgPT0gMTAxKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLCB7Ym94KC0xKSwgYm94KDEpfSkgPT0gMCk7Ci0gICAgICAgIFJFTEVBU0VfQVNT
RVJUKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwge2JveChzdGQ6Om51bWVyaWNfbGltaXRz
PGludD46Om1heCgpKSwgYm94KDEpfSkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4o
KSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3go
MCksIGJveCgxKSB9KSwgMSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJl
c3VsdFswXSwgeyBib3goMTAwKSwgYm94KDEpIH0pLCAxMDEpOworICAgICAgICBDSEVDS19FUShp
bnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KC0xKSwgYm94KDEpfSksIDApOworICAg
ICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpLCBib3goMSkgfSksIHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50Pjo6bWluKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206
CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChmdW5jICJsb2NhbHMiIChw
YXJhbSAkeCBpMzIpIChyZXN1bHQgaTMyKSAobG9jYWwgJG51bSBpMzIpCisgICAgICAgIC8vICAg
ICAgKHNldF9sb2NhbCAkbnVtIChnZXRfbG9jYWwgJHgpKQorICAgICAgICAvLyAgICAgIChyZXR1
cm4gKGdldF9sb2NhbCAkbnVtKSkKKyAgICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAgICAp
CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAw
eDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAweDAwLCAweDAwLCAweDA0LCAweDc0LCAweDc5
LCAweDcwLCAweDY1LCAweDg2LCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwg
MHg0MCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwOCwgMHg2NiwgMHg3NSwgMHg2ZSwgMHg2
MywgMHg3NCwgMHg2OSwgMHg2ZiwgMHg2ZSwKKyAgICAgICAgICAgIDB4ODIsIDB4ODAsIDB4ODAs
IDB4MDAsIDB4MDEsIDB4MDAsIDB4MDYsIDB4NjUsIDB4NzgsIDB4NzAsIDB4NmYsIDB4NzIsIDB4
NzQsIDB4ODksIDB4ODAsIDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAxLCAweDAwLCAweDA2
LCAweDZjLCAweDZmLCAweDYzLCAweDYxLCAweDZjLCAweDczLCAweDA0LCAweDYzLCAweDZmLCAw
eDY0LCAweDY1LCAweDkxLAorICAgICAgICAgICAgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHg4
YywgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgxNCwgMHgwMCwgMHgxNSwg
MHgwMSwgMHgxNCwKKyAgICAgICAgICAgIDB4MDEsIDB4MDksIDB4MDEsIDB4MGYKKyAgICAgICAg
fTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxhbi5y
ZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBkYXRh
TG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAgICAg
ICBDUkFTSCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jh
c2guCisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3go
MCkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0s
IHsgYm94KDEwKSB9KSwgMTApOworICAgIH0KKworICAgIHsKKyAgICAgICAgLy8gR2VuZXJhdGVk
IGZyb206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAgIChmdW5jICJkdW1i
LW11bHQiIChwYXJhbSAkeCBpMzIpIChwYXJhbSAkeSBpMzIpIChyZXN1bHQgaTMyKSAobG9jYWwg
JHRvdGFsIGkzMikgKGxvY2FsICRpIGkzMikgKGxvY2FsICRqIGkzMikKKyAgICAgICAgLy8gICAg
ICAoc2V0X2xvY2FsICR0b3RhbCAoaTMyLmNvbnN0IDApKQorICAgICAgICAvLyAgICAgIChzZXRf
bG9jYWwgJGkgKGkzMi5jb25zdCAwKSkKKyAgICAgICAgLy8gICAgICAoYmxvY2sKKyAgICAgICAg
Ly8gICAgICAgKGxvb3AKKyAgICAgICAgLy8gICAgICAgIChicl9pZiAxIChpMzIuZXEgKGdldF9s
b2NhbCAkaSkgKGdldF9sb2NhbCAkeCkpKQorICAgICAgICAvLyAgICAgICAgKHNldF9sb2NhbCAk
aiAoaTMyLmNvbnN0IDApKQorICAgICAgICAvLyAgICAgICAgKHNldF9sb2NhbCAkaSAoaTMyLmFk
ZCAoZ2V0X2xvY2FsICRpKSAoaTMyLmNvbnN0IDEpKSkKKyAgICAgICAgLy8gICAgICAgIChsb29w
CisgICAgICAgIC8vICAgICAgICAgKGJyX2lmIDEgKGkzMi5lcSAoZ2V0X2xvY2FsICRqKSAoZ2V0
X2xvY2FsICR5KSkpCisgICAgICAgIC8vICAgICAgICAgKHNldF9sb2NhbCAkdG90YWwgKGkzMi5h
ZGQgKGdldF9sb2NhbCAkdG90YWwpIChpMzIuY29uc3QgMSkpKQorICAgICAgICAvLyAgICAgICAg
IChzZXRfbG9jYWwgJGogKGkzMi5hZGQgKGdldF9sb2NhbCAkaikgKGkzMi5jb25zdCAxKSkpCisg
ICAgICAgIC8vICAgICAgICAgKGJyIDApCisgICAgICAgIC8vICAgICAgICAgKQorICAgICAgICAv
LyAgICAgICAgKQorICAgICAgICAvLyAgICAgICApCisgICAgICAgIC8vICAgICAgKHJldHVybiAo
Z2V0X2xvY2FsICR0b3RhbCkpCisgICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQor
ICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2
MSwgMHg3MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg3NCwgMHg3OSwg
MHg3MCwgMHg2NSwgMHg4NiwgMHg4MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4
NDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDgsIDB4NjYsIDB4NzUsIDB4NmUsIDB4NjMs
IDB4NzQsIDB4NjksIDB4NmYsIDB4NmUsCisgICAgICAgICAgICAweDgyLCAweDgwLCAweDgwLCAw
eDAwLCAweDAxLCAweDAwLCAweDA2LCAweDY1LCAweDc4LCAweDcwLCAweDZmLCAweDcyLCAweDc0
LCAweDg2LCAweDgwLCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMywg
MHg3MywgMHg3NSwgMHg2ZCwgMHgwNCwgMHg2MywgMHg2ZiwgMHg2NCwgMHg2NSwgMHhhZSwgMHg4
MCwgMHg4MCwgMHgwMCwKKyAgICAgICAgICAgIDB4MDEsIDB4YTksIDB4ODAsIDB4ODAsIDB4MDAs
IDB4MDEsIDB4MDEsIDB4MDEsIDB4MTAsIDB4MDAsIDB4MTUsIDB4MDEsIDB4MDIsIDB4MDEsIDB4
MTQsIDB4MDAsCisgICAgICAgICAgICAweDEwLCAweDAwLCAweDRkLCAweDA3LCAweDAwLCAweDAw
LCAweDE0LCAweDAwLCAweDE0LCAweDAxLCAweDQwLCAweDE1LCAweDAxLCAweDE0LCAweDAwLCAw
eDEwLAorICAgICAgICAgICAgMHgwMSwgMHg0MSwgMHgxNSwgMHgwMCwgMHgwNiwgMHgwMCwgMHgw
MSwgMHgwZiwgMHgwZiwgMHgxNCwgMHgwMSwgMHgwOSwgMHgwMSwgMHgwZgorICAgICAgICB9Owor
CisgICAgICAgIFBsYW4gcGxhbigqdm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3Vs
dC5zaXplKCkgIT0gMSB8fCAhcGxhbi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dM
bigiTW9kdWxlIGZhaWxlZCB0byBjb21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENS
QVNIKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4K
KyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IGJveCgwKSB9
KSwgMCk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBi
b3goMSkgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0sIHsgYm94KDIpfSksIDMpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0sIHsgYm94KDEwMCkgfSksIDUwNTApOworICAgIH0KKworICAgIHsKKyAgICAgICAg
Ly8gR2VuZXJhdGVkIGZyb206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAgICAgICAgLy8gICAg
IChmdW5jICJkdW1iLW11bHQiIChwYXJhbSAkeCBpMzIpIChwYXJhbSAkeSBpMzIpIChyZXN1bHQg
aTMyKSAobG9jYWwgJHRvdGFsIGkzMikgKGxvY2FsICRpIGkzMikgKGxvY2FsICRqIGkzMikKKyAg
ICAgICAgLy8gICAgICAoc2V0X2xvY2FsICR0b3RhbCAoaTMyLmNvbnN0IDApKQorICAgICAgICAv
LyAgICAgIChzZXRfbG9jYWwgJGkgKGkzMi5jb25zdCAwKSkKKyAgICAgICAgLy8gICAgICAoYmxv
Y2sgKGxvb3AKKyAgICAgICAgLy8gICAgICAgICAgICAgIChicl9pZiAxIChpMzIuZXEgKGdldF9s
b2NhbCAkaSkgKGdldF9sb2NhbCAkeCkpKQorICAgICAgICAvLyAgICAgICAgICAgICAgKHNldF9s
b2NhbCAkaiAoaTMyLmNvbnN0IDApKQorICAgICAgICAvLyAgICAgICAgICAgICAgKHNldF9sb2Nh
bCAkaSAoaTMyLmFkZCAoZ2V0X2xvY2FsICRpKSAoaTMyLmNvbnN0IDEpKSkKKyAgICAgICAgLy8g
ICAgICAgICAgICAgIChsb29wCisgICAgICAgIC8vICAgICAgICAgICAgICAgKGJyX2lmIDEgKGkz
Mi5lcSAoZ2V0X2xvY2FsICRqKSAoZ2V0X2xvY2FsICR5KSkpCisgICAgICAgIC8vICAgICAgICAg
ICAgICAgKHNldF9sb2NhbCAkdG90YWwgKGkzMi5hZGQgKGdldF9sb2NhbCAkdG90YWwpIChpMzIu
Y29uc3QgMSkpKQorICAgICAgICAvLyAgICAgICAgICAgICAgIChzZXRfbG9jYWwgJGogKGkzMi5h
ZGQgKGdldF9sb2NhbCAkaikgKGkzMi5jb25zdCAxKSkpCisgICAgICAgIC8vICAgICAgICAgICAg
ICAgKGJyIDApCisgICAgICAgIC8vICAgICAgICAgICAgICAgKQorICAgICAgICAvLyAgICAgICAg
ICAgICAgKSkKKyAgICAgICAgLy8gICAgICAocmV0dXJuIChnZXRfbG9jYWwgJHRvdGFsKSkKKyAg
ICAgICAgLy8gICAgICApCisgICAgICAgIC8vICAgICApCisgICAgICAgIFZlY3Rvcjx1aW50OF90
PiB2ZWN0b3IgPSB7CisgICAgICAgICAgICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAw
eDAwLCAweDAwLCAweDAwLCAweDA0LCAweDc0LCAweDc5LCAweDcwLCAweDY1LCAweDg3LCAweDgw
LCAweDgwLAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHg0MCwgMHgwMiwgMHgwMSwgMHgwMSwg
MHgwMSwgMHgwMSwgMHgwOCwgMHg2NiwgMHg3NSwgMHg2ZSwgMHg2MywgMHg3NCwgMHg2OSwgMHg2
ZiwKKyAgICAgICAgICAgIDB4NmUsIDB4ODIsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAs
IDB4MDYsIDB4NjUsIDB4NzgsIDB4NzAsIDB4NmYsIDB4NzIsIDB4NzQsIDB4OGMsIDB4ODAsCisg
ICAgICAgICAgICAweDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA5LCAweDY0LCAweDc1LCAweDZk
LCAweDYyLCAweDJkLCAweDZkLCAweDc1LCAweDZjLCAweDc0LCAweDA0LCAweDYzLAorICAgICAg
ICAgICAgMHg2ZiwgMHg2NCwgMHg2NSwgMHhjNywgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHhj
MiwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMywgMHgwMSwgMHgxMCwKKyAgICAgICAgICAg
IDB4MDAsIDB4MTUsIDB4MDIsIDB4MTAsIDB4MDAsIDB4MTUsIDB4MDMsIDB4MDEsIDB4MDIsIDB4
MTQsIDB4MDMsIDB4MTQsIDB4MDAsIDB4NGQsIDB4MDcsIDB4MDAsCisgICAgICAgICAgICAweDAx
LCAweDEwLCAweDAwLCAweDE1LCAweDA0LCAweDE0LCAweDAzLCAweDEwLCAweDAxLCAweDQwLCAw
eDE1LCAweDAzLCAweDAyLCAweDE0LCAweDA0LCAweDE0LAorICAgICAgICAgICAgMHgwMSwgMHg0
ZCwgMHgwNywgMHgwMCwgMHgwMSwgMHgxNCwgMHgwMiwgMHgxMCwgMHgwMSwgMHg0MCwgMHgxNSwg
MHgwMiwgMHgxNCwgMHgwNCwgMHgxMCwgMHgwMSwKKyAgICAgICAgICAgIDB4NDAsIDB4MTUsIDB4
MDQsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MGYsIDB4MGYsIDB4MGYsIDB4MTQsIDB4MDIsIDB4MDks
IDB4MDEsIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3Ip
OworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBd
KSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3Jy
ZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8g
VGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXSwgeyBib3goMCksIGJveCgxKSB9KSwgMCk7CisgICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMSksIGJveCgwKSB9KSwgMCk7Cisg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJv
eCgxKSB9KSwgMik7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XSwgeyBib3goMSksIGJveCgyKSB9KSwgMik7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ+
KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJveCgyKSB9KSwgNCk7CisgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyBib3goMiksIGJveCg2KSB9KSwgMTIp
OworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEw
MCksIGJveCg2KSB9KSwgNjAwKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdLCB7IGJveCgxMDApLCBib3goMTAwKSB9KSwgMTAwMDApOwogICAgIH0KKworICAg
IHsKKyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206CisgICAgICAgIC8vICAgIChtb2R1bGUKKyAg
ICAgICAgLy8gICAgIChmdW5jICJkdW1iLWxlc3MtdGhhbiIgKHBhcmFtICR4IGkzMikgKHBhcmFt
ICR5IGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAgIC8vICAgICAgKGxvb3AKKyAgICAgICAgLy8g
ICAgICAgKGJsb2NrCisgICAgICAgIC8vICAgICAgICAoYmxvY2sKKyAgICAgICAgLy8gICAgICAg
ICAoYnJfaWYgMCAoaTMyLmVxIChnZXRfbG9jYWwgJHgpIChpMzIuY29uc3QgMCkpKQorICAgICAg
ICAvLyAgICAgICAgIChiciAxKQorICAgICAgICAvLyAgICAgICAgICkKKyAgICAgICAgLy8gICAg
ICAgIChyZXR1cm4gKGkzMi5jb25zdCAxKSkKKyAgICAgICAgLy8gICAgICAgICkKKyAgICAgICAg
Ly8gICAgICAgKGJsb2NrCisgICAgICAgIC8vICAgICAgICAoYmxvY2sKKyAgICAgICAgLy8gICAg
ICAgICAoYnJfaWYgMCAoaTMyLmVxIChnZXRfbG9jYWwgJHgpIChnZXRfbG9jYWwgJHkpKSkKKyAg
ICAgICAgLy8gICAgICAgICAoYnIgMSkKKyAgICAgICAgLy8gICAgICAgICApCisgICAgICAgIC8v
ICAgICAgICAocmV0dXJuIChpMzIuY29uc3QgMCkpCisgICAgICAgIC8vICAgICAgICApCisgICAg
ICAgIC8vICAgICAgIChzZXRfbG9jYWwgJHggKGkzMi5zdWIgKGdldF9sb2NhbCAkeCkgKGkzMi5j
b25zdCAxKSkpCisgICAgICAgIC8vICAgICAgIChiciAwKQorICAgICAgICAvLyAgICAgICApCisg
ICAgICAgIC8vICAgICAgKQorICAgICAgICAvLyAgICAgKQorICAgICAgICBWZWN0b3I8dWludDhf
dD4gdmVjdG9yID0geworICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwYywg
MHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHg3NCwgMHg3OSwgMHg3MCwgMHg2NSwgMHg4NywgMHg4
MCwgMHg4MCwKKyAgICAgICAgICAgIDB4MDAsIDB4MDEsIDB4NDAsIDB4MDIsIDB4MDEsIDB4MDEs
IDB4MDEsIDB4MDEsIDB4MDgsIDB4NjYsIDB4NzUsIDB4NmUsIDB4NjMsIDB4NzQsIDB4NjksIDB4
NmYsCisgICAgICAgICAgICAweDZlLCAweDgyLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAw
LCAweDA2LCAweDY1LCAweDc4LCAweDcwLCAweDZmLCAweDcyLCAweDc0LCAweDkxLCAweDgwLAor
ICAgICAgICAgICAgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwZSwgMHg2NCwgMHg3NSwgMHg2
ZCwgMHg2MiwgMHgyZCwgMHg2YywgMHg2NSwgMHg3MywgMHg3MywgMHgyZCwgMHg3NCwKKyAgICAg
ICAgICAgIDB4NjgsIDB4NjEsIDB4NmUsIDB4MDQsIDB4NjMsIDB4NmYsIDB4NjQsIDB4NjUsIDB4
YjksIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4YjQsIDB4ODAsIDB4ODAsCisgICAgICAgICAg
ICAweDAwLCAweDAwLCAweDAyLCAweDAxLCAweDAxLCAweDE0LCAweDAwLCAweDE0LCAweDAxLCAw
eDRkLCAweDA3LCAweDAwLCAweDAwLCAweDA2LCAweDAwLCAweDAxLAorICAgICAgICAgICAgMHgw
ZiwgMHgxMCwgMHgwMCwgMHgwOSwgMHgwMSwgMHgwZiwgMHgwMSwgMHgwMSwgMHgxNCwgMHgwMCwg
MHgxMCwgMHgwMCwgMHg0ZCwgMHgwNywgMHgwMCwgMHgwMCwKKyAgICAgICAgICAgIDB4MDYsIDB4
MDAsIDB4MDEsIDB4MGYsIDB4MTAsIDB4MDEsIDB4MDksIDB4MDEsIDB4MGYsIDB4MTQsIDB4MDAs
IDB4MTAsIDB4MDEsIDB4NDEsIDB4MTUsIDB4MDAsCisgICAgICAgICAgICAweDA2LCAweDAwLCAw
eDAwLCAweDBmLCAweDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxhbiBwbGFuKCp2bSwgdmVj
dG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAxIHx8ICFwbGFuLnJlc3Vs
dFswXSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFpbGVkIHRvIGNvbXBpbGUg
Y29ycmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDApLCBib3goMSkgfSksIDEpOworICAgICAgICBDSEVD
S19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMCkgfSksIDAp
OworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIp
LCBib3goMSkgfSksIDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0sIHsgYm94KDEpLCBib3goMikgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDIpLCBib3goMikgfSksIDApOworICAgICAgICBD
SEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94KDEpLCBib3goMSkgfSks
IDApOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgYm94
KDIpLCBib3goNikgfSksIDEpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50PigqcGxhbi5y
ZXN1bHRbMF0sIHsgYm94KDEwMCksIGJveCg2KSB9KSwgMCk7CisgICAgfQorCiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggOTNlMTczOGQzMmU3Y2VkYTQyYWUzZjhiNDA2
ZTQ2YmIwMTYzZmI4OS4uMWM4NTE0ODg5MDI2YzFkMzE3NTdiOWM2MWQ3ODkzNGRhNDRmYjMzMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNw
cApAQCAtMjksMTEgKzI5LDEzIEBACiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVk
ZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgotI2luY2x1ZGUgIkIzQ2FsbGluZ0NvbnZlbnRpb25z
LmgiCisjaW5jbHVkZSAiQjNGaXhTU0EuaCIKKyNpbmNsdWRlICJCM1ZhbGlkYXRlLmgiCiAjaW5j
bHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1ZhcmlhYmxlLmgiCiAjaW5jbHVk
ZSAiQjNWYXJpYWJsZVZhbHVlLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCisjaW5j
bHVkZSAiV0FTTUNhbGxpbmdDb252ZW50aW9uLmgiCiAjaW5jbHVkZSAiV0FTTUZ1bmN0aW9uUGFy
c2VyLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKQEAgLTQzLDYgKzQ1LDggQEAgbmFt
ZXNwYWNlIFdBU00gewogCiB1c2luZyBuYW1lc3BhY2UgQjM7CiAKK3N0YXRpYyBjb25zdCBib29s
IHZlcmJvc2UgPSBmYWxzZTsKKwogaW5saW5lIEIzOjpPcGNvZGUgdG9CM09wKEJpbmFyeU9wVHlw
ZSBvcCkKIHsKICAgICBzd2l0Y2ggKG9wKSB7CkBAIC02NCw4ICs2OCw3MyBAQCBpbmxpbmUgQjM6
Ok9wY29kZSB0b0IzT3AoVW5hcnlPcFR5cGUgb3ApCiB9CiAKIGNsYXNzIEIzSVJHZW5lcmF0b3Ig
eworcHJpdmF0ZToKKyAgICBjbGFzcyBMYXp5QmxvY2sgeworICAgIHB1YmxpYzoKKyAgICAgICAg
TGF6eUJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrKQorICAgICAgICAgICAgOiBtX2Jsb2NrKGJsb2Nr
KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBleHBsaWNpdCBvcGVyYXRvciBib29s
KCkgeyByZXR1cm4gbV9ibG9jazsgfQorCisgICAgICAgIEJhc2ljQmxvY2sqIGdldChQcm9jZWR1
cmUmIHByb2MpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9ibG9jaykKKyAgICAgICAg
ICAgICAgICBtX2Jsb2NrID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICAgICAgcmV0dXJuIG1f
YmxvY2s7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fYmxvY2spCisgICAgICAgICAgICAg
ICAgb3V0LnByaW50KCptX2Jsb2NrKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBvdXQucHJpbnQoIlVuaW5pdGlhbGl6ZWQiKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToK
KyAgICAgICAgQmFzaWNCbG9jayogbV9ibG9jazsKKyAgICB9OworCisKKyAgICBzdHJ1Y3QgQ29u
dHJvbERhdGEgeworICAgICAgICBDb250cm9sRGF0YShPcHRpb25hbDxWZWN0b3I8VmFyaWFibGUq
Pj4mJiBfc3RhY2ssIEJhc2ljQmxvY2sqIF9sb29wVGFyZ2V0ID0gbnVsbHB0cikKKyAgICAgICAg
ICAgIDogY29udGludWF0aW9uKG51bGxwdHIpCisgICAgICAgICAgICAsIGxvb3BUYXJnZXQoX2xv
b3BUYXJnZXQpCisgICAgICAgICAgICAsIHN0YWNrKF9zdGFjaykKKyAgICAgICAgeworICAgICAg
ICB9CisKKyAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAgICAg
IHsKKyAgICAgICAgICAgIG91dC5wcmludCgiQ29udGludWF0aW9uOiAiLCBjb250aW51YXRpb24s
ICIsIFRhcmdldDogIik7CisgICAgICAgICAgICBpZiAobG9vcFRhcmdldCkKKyAgICAgICAgICAg
ICAgICBvdXQucHJpbnQoKmxvb3BUYXJnZXQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIG91dC5wcmludChjb250aW51YXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgQmFz
aWNCbG9jayogdGFyZ2V0QmxvY2tGb3JCcmFuY2goUHJvY2VkdXJlJiBwcm9jKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAobG9vcFRhcmdldCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9v
cFRhcmdldDsKKyAgICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24uZ2V0KHByb2MpOworICAg
ICAgICB9CisKKyAgICAgICAgYm9vbCBpc0xvb3AoKSB7IHJldHVybiBsb29wVGFyZ2V0OyB9CisK
KyAgICAgICAgLy8gV2UgdXNlIGEgTGF6eUJsb2NrIGZvciB0aGUgY29udGludWF0aW9uIHNpbmNl
IEIzOjp2YWxpZGF0ZSBkb2VzIG5vdCBsaWtlIG9ycGhhbmVkIGJsb2Nrcy4gTm90ZSwKKyAgICAg
ICAgLy8gaXQncyBwb3NzaWJsZSB0byBjcmVhdGUgYW4gb3JwaGFuZWQgYmxvY2sgYnkgZG9pbmcg
c29tZXRoaW5nIGxpa2UgKGJsb2NrIChyZXR1cm4gKC4uLikpKS4gSW4KKyAgICAgICAgLy8gdGhh
dCBleGFtcGxlLCBpZiB3ZSBlYWdlcmx5IGFsbG9jYXRlIGEgQmFzaWNCbG9jayBmb3IgdGhlIGNv
bnRpbnVhdGlvbiBpdCB3aWxsIG5ldmVyIGJlIHJlYWNoYWJsZS4KKyAgICAgICAgTGF6eUJsb2Nr
IGNvbnRpbnVhdGlvbjsKKyAgICAgICAgQmFzaWNCbG9jayogbG9vcFRhcmdldDsKKyAgICAgICAg
T3B0aW9uYWw8VmVjdG9yPFZhcmlhYmxlKj4+IHN0YWNrOworICAgIH07CisKIHB1YmxpYzoKICAg
ICB0eXBlZGVmIFZhbHVlKiBFeHByZXNzaW9uVHlwZTsKKyAgICBzdGF0aWMgY29uc3RleHByIEV4
cHJlc3Npb25UeXBlIGVtcHR5RXhwcmVzc2lvbiA9IG51bGxwdHI7CiAKICAgICBCM0lSR2VuZXJh
dG9yKFByb2NlZHVyZSYpOwogCkBAIC03NCwyNSArMTQzLDM0IEBAIHB1YmxpYzoKICAgICBFeHBy
ZXNzaW9uVHlwZSBhZGRDb25zdGFudChUeXBlLCB1aW50NjRfdCk7CiAKICAgICBib29sIFdBUk5f
VU5VU0VEX1JFVFVSTiBnZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCk7CisgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gc2V0TG9jYWwodWludDMyX3QgaW5k
ZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVlKTsKIAogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJO
IGJpbmFyeU9wKEJpbmFyeU9wVHlwZSwgRXhwcmVzc2lvblR5cGUgbGVmdCwgRXhwcmVzc2lvblR5
cGUgcmlnaHQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogICAgIGJvb2wgV0FSTl9VTlVTRURf
UkVUVVJOIHVuYXJ5T3AoVW5hcnlPcFR5cGUsIEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lv
blR5cGUmIHJlc3VsdCk7CiAKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRCbG9jaygp
OwotICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGVuZEJsb2NrKFZlY3RvcjxFeHByZXNzaW9u
VHlwZT4mIGV4cHJlc3Npb25TdGFjayk7CisgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRk
TG9vcCgpOworICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGVuZEJsb2NrKFZlY3RvcjxFeHBy
ZXNzaW9uVHlwZSwgMT4mIGV4cHJlc3Npb25TdGFjayk7CisKICAgICBib29sIFdBUk5fVU5VU0VE
X1JFVFVSTiBhZGRSZXR1cm4oY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlLCAxPiYgcmV0dXJu
VmFsdWVzKTsKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRCcmFuY2goRXhwcmVzc2lv
blR5cGUgY29uZGl0aW9uLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGUsIDE+JiByZXR1cm5W
YWx1ZXMsIHVpbnQzMl90IHRhcmdldCk7CisKKyAgICB2b2lkIGR1bXBHcmFwaEFuZENvbnRyb2xT
dGFjaygpOwogCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPFZlY3RvcjxWYXJpYWJsZSo+PiYgc3Rh
Y2tGb3JDb250cm9sTGV2ZWwodW5zaWduZWQpOwotICAgIEJhc2ljQmxvY2sqIGJsb2NrRm9yQ29u
dHJvbExldmVsKHVuc2lnbmVkKTsKKyAgICBDb250cm9sRGF0YSYgY29udHJvbERhdGFGb3JMZXZl
bCh1bnNpZ25lZCk7CiAgICAgdm9pZCB1bmlmeShWYXJpYWJsZSogdGFyZ2V0LCBjb25zdCBFeHBy
ZXNzaW9uVHlwZSBzb3VyY2UpOwotICAgIFZlY3RvcjxWYXJpYWJsZSo+IGluaXRpYWxpemVJbmNv
bW1pbmdUeXBlcyhCYXNpY0Jsb2NrKiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYpOwot
ICAgIHZvaWQgdW5pZnlWYWx1ZXNXaXRoTGV2ZWwoY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBl
PiYgcmVzdWx0U3RhY2ssIHVuc2lnbmVkKTsKKyAgICBWZWN0b3I8VmFyaWFibGUqPiBpbml0aWFs
aXplSW5jb21taW5nVHlwZXMoQmFzaWNCbG9jayosIGNvbnN0IFZlY3RvcjxFeHByZXNzaW9uVHlw
ZSwgMT4mKTsKKyAgICB2b2lkIHVuaWZ5VmFsdWVzV2l0aEJsb2NrKGNvbnN0IFZlY3RvcjxFeHBy
ZXNzaW9uVHlwZSwgMT4mIHJlc3VsdFN0YWNrLCBPcHRpb25hbDxWZWN0b3I8VmFyaWFibGUqPj4m
IHN0YWNrLCBCYXNpY0Jsb2NrKiB0YXJnZXQpOwogCitwdWJsaWM6CisgICAgYm9vbCB1bnJlYWNo
YWJsZSB7IGZhbHNlIH07CisKK3ByaXZhdGU6CiAgICAgUHJvY2VkdXJlJiBtX3Byb2M7CiAgICAg
QmFzaWNCbG9jayogbV9jdXJyZW50QmxvY2s7CiAgICAgLy8gVGhpcyBpcyBhIHBhaXIgb2YgdGhl
IGNvbnRpbnVhdGlvbiBhbmQgdGhlIHR5cGVzIGV4cGVjdGVkIG9uIHRoZSBzdGFjayBmb3IgdGhh
dCBjb250aW51YXRpb24uCi0gICAgVmVjdG9yPHN0ZDo6cGFpcjxCYXNpY0Jsb2NrKiwgT3B0aW9u
YWw8VmVjdG9yPFZhcmlhYmxlKj4+Pj4gbV9jb250cm9sU3RhY2s7CisgICAgVmVjdG9yPENvbnRy
b2xEYXRhPiBtX2NvbnRyb2xTdGFjazsKICAgICBWZWN0b3I8VmFyaWFibGUqPiBtX2xvY2FsczsK
IH07CiAKQEAgLTEwNiwxMiArMTg0LDExIEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6YWRkTG9jYWwo
VHlwZSB0eXBlLCB1aW50MzJfdCBjb3VudCkKIHsKICAgICBtX2xvY2Fscy5yZXNlcnZlQ2FwYWNp
dHkobV9sb2NhbHMuc2l6ZSgpICsgY291bnQpOwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkg
PCBjb3VudDsgKytpKQotICAgICAgICBtX2xvY2Fscy5hcHBlbmQobV9wcm9jLmFkZFZhcmlhYmxl
KHR5cGUpKTsKKyAgICAgICAgbV9sb2NhbHMuYXBwZW5kKG1fcHJvYy5hZGRWYXJpYWJsZSh0b0Iz
VHlwZSh0eXBlKSkpOwogfQogCiB2b2lkIEIzSVJHZW5lcmF0b3I6OmFkZEFyZ3VtZW50cyhjb25z
dCBWZWN0b3I8VHlwZT4mIHR5cGVzKQogewotICAgIC8vIFRPRE86IEFkZCBsb2NhbHMuCiAgICAg
QVNTRVJUKCFtX2xvY2Fscy5zaXplKCkpOwogICAgIG1fbG9jYWxzLmdyb3codHlwZXMuc2l6ZSgp
KTsKICAgICBqc2NDYWxsaW5nQ29udmVudGlvbigpLml0ZXJhdGUodHlwZXMsIG1fcHJvYywgbV9j
dXJyZW50QmxvY2ssIE9yaWdpbigpLApAQCAtMTI5LDYgKzIwNiwxMyBAQCBib29sIFdBUk5fVU5V
U0VEX1JFVFVSTiBCM0lSR2VuZXJhdG9yOjpnZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVz
c2lvblR5cGUmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgV0FSTl9VTlVTRURfUkVUVVJO
IEIzSVJHZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2
YWx1ZSkKK3sKKyAgICBBU1NFUlQobV9sb2NhbHNbaW5kZXhdKTsKKyAgICBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KG1fcHJvYywgQjM6OlNldCwgT3JpZ2luKCksIG1f
bG9jYWxzW2luZGV4XSwgdmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIEIzSVJH
ZW5lcmF0b3I6OnVuYXJ5T3AoVW5hcnlPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBlIGFyZywgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCkKIHsKICAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PFZhbHVlPihtX3Byb2MsIHRvQjNPcChvcCksIE9yaWdpbigpLCBhcmcpOwpAQCAtMTYw
LDMxICsyNDQsOTkgQEAgQjNJUkdlbmVyYXRvcjo6RXhwcmVzc2lvblR5cGUgQjNJUkdlbmVyYXRv
cjo6YWRkQ29uc3RhbnQoVHlwZSB0eXBlLCB1aW50NjRfdCB2YWwKIAogYm9vbCBCM0lSR2VuZXJh
dG9yOjphZGRCbG9jaygpCiB7Ci0gICAgbV9jb250cm9sU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKG1fcHJvYy5hZGRCbG9jaygpLCBOdWxsb3B0KSk7CisgICAgaWYgKHZlcmJvc2UpIHsKKyAg
ICAgICAgZGF0YUxvZ0xuKCJBZGRpbmcgYmxvY2siKTsKKyAgICAgICAgZHVtcEdyYXBoQW5kQ29u
dHJvbFN0YWNrKCk7CisgICAgfQorICAgIG1fY29udHJvbFN0YWNrLmFwcGVuZChDb250cm9sRGF0
YShOdWxsb3B0KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQjNJUkdlbmVyYXRvcjo6
ZW5kQmxvY2soVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgZXhwcmVzc2lvblN0YWNrKQorYm9vbCBC
M0lSR2VuZXJhdG9yOjphZGRMb29wKCkKIHsKKyAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBk
YXRhTG9nTG4oIkFkZGluZyBsb29wIik7CisgICAgICAgIGR1bXBHcmFwaEFuZENvbnRyb2xTdGFj
aygpOworICAgIH0KKyAgICBCYXNpY0Jsb2NrKiBib2R5ID0gbV9wcm9jLmFkZEJsb2NrKCk7Cisg
ICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEp1bXAsIE9y
aWdpbigpLCBib2R5KTsKKyAgICBib2R5LT5hZGRQcmVkZWNlc3NvcihtX2N1cnJlbnRCbG9jayk7
CisgICAgbV9jdXJyZW50QmxvY2sgPSBib2R5OworICAgIG1fY29udHJvbFN0YWNrLmFwcGVuZChD
b250cm9sRGF0YShWZWN0b3I8VmFyaWFibGUqPigpLCBib2R5KSk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgQjNJUkdlbmVyYXRvcjo6ZW5kQmxvY2soVmVjdG9yPEV4cHJlc3Npb25UeXBl
LCAxPiYgZXhwcmVzc2lvblN0YWNrKQoreworICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgIGRh
dGFMb2dMbigiRmFsbGluZyBvdXQgb2YgYmxvY2siKTsKKyAgICAgICAgZHVtcEdyYXBoQW5kQ29u
dHJvbFN0YWNrKCk7CisgICAgfQogICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB3ZSBhcmUgZXhpdGlu
ZyB0aGUgZnVuY3Rpb24uCiAgICAgaWYgKCFtX2NvbnRyb2xTdGFjay5zaXplKCkpIHsKICAgICAg
ICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIHJlcXVpcmUgdGhlIHN0YWNrIGlzIGVtcHR5PyBJdCdz
IG5vdCBjbGVhciBmcm9tIHRoZSBjdXJyZW50IHNwZWMuCiAgICAgICAgIHJldHVybiAhZXhwcmVz
c2lvblN0YWNrLnNpemUoKTsKICAgICB9CiAKLSAgICB1bmlmeVZhbHVlc1dpdGhMZXZlbChleHBy
ZXNzaW9uU3RhY2ssIDApOworICAgIENvbnRyb2xEYXRhIGRhdGEgPSBtX2NvbnRyb2xTdGFjay50
YWtlTGFzdCgpOworICAgIGlmICh1bnJlYWNoYWJsZSkgeworICAgICAgICAvLyBJZiBub3RoaW5n
IHRhcmdldHMgdGhlIGNvbnRpbnVhdGlvbiBvZiB0aGUgY3VycmVudCBibG9jayB0aGVuIHdlIGRv
bid0IHdhbnQgdG8gY3JlYXRlCisgICAgICAgIC8vIGFuIG9ycGhhbmVkIEJhc2ljQmxvY2sgc2lu
Y2UgaXQgY2FuJ3QgYmUgcmVhY2hlZCBieSBmYWxsdGhyb3VnaC4KKyAgICAgICAgaWYgKGRhdGEu
Y29udGludWF0aW9uKSB7CisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGRhdGEuY29udGlu
dWF0aW9uLmdldChtX3Byb2MpOworICAgICAgICAgICAgdW5yZWFjaGFibGUgPSBmYWxzZTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKLSAgICBtX2N1cnJlbnRCbG9j
ayA9IG1fY29udHJvbFN0YWNrLnRha2VMYXN0KCkuZmlyc3Q7CisgICAgQmFzaWNCbG9jayogY29u
dGludWF0aW9uID0gZGF0YS5jb250aW51YXRpb24uZ2V0KG1fcHJvYyk7CisgICAgdW5pZnlWYWx1
ZXNXaXRoQmxvY2soZXhwcmVzc2lvblN0YWNrLCBkYXRhLnN0YWNrLCBjb250aW51YXRpb24pOwor
ICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBKdW1wLCBP
cmlnaW4oKSwgY29udGludWF0aW9uKTsKKyAgICBjb250aW51YXRpb24tPmFkZFByZWRlY2Vzc29y
KG1fY3VycmVudEJsb2NrKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbjsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBCM0lSR2VuZXJhdG9yOjphZGRSZXR1cm4oY29uc3Qg
VmVjdG9yPEV4cHJlc3Npb25UeXBlLCAxPiYgcmV0dXJuVmFsdWVzKQogeworICAgIGlmICh2ZXJi
b3NlKSB7CisgICAgICAgIGRhdGFMb2dMbigiQWRkaW5nIHJldHVybiIpOworICAgICAgICBkdW1w
R3JhcGhBbmRDb250cm9sU3RhY2soKTsKKyAgICB9CisKICAgICBBU1NFUlQocmV0dXJuVmFsdWVz
LnNpemUoKSA8PSAxKTsKICAgICBpZiAocmV0dXJuVmFsdWVzLnNpemUoKSkKICAgICAgICAgbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEIzOjpSZXR1cm4sIE9y
aWdpbigpLCByZXR1cm5WYWx1ZXNbMF0pOwogICAgIGVsc2UKICAgICAgICAgbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEIzOjpSZXR1cm4sIE9yaWdpbigpKTsK
KyAgICB1bnJlYWNoYWJsZSA9IHRydWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQjNJ
UkdlbmVyYXRvcjo6YWRkQnJhbmNoKEV4cHJlc3Npb25UeXBlIGNvbmRpdGlvbiwgY29uc3QgVmVj
dG9yPEV4cHJlc3Npb25UeXBlLCAxPiYgcmV0dXJuVmFsdWVzLCB1aW50MzJfdCBsZXZlbCkKK3sK
KyAgICBBU1NFUlQobGV2ZWwgPCBtX2NvbnRyb2xTdGFjay5zaXplKCkpOworICAgIENvbnRyb2xE
YXRhJiBkYXRhID0gY29udHJvbERhdGFGb3JMZXZlbChsZXZlbCk7CisgICAgaWYgKHZlcmJvc2Up
IHsKKyAgICAgICAgZGF0YUxvZ0xuKCJBZGRpbmcgQnJhbmNoIGZyb206ICIsICAqbV9jdXJyZW50
QmxvY2ssICIgdGFyZ2V0aW5nOiAiLCBsZXZlbCwgIiB3aXRoIGRhdGE6ICIsIGRhdGEpOworICAg
ICAgICBkdW1wR3JhcGhBbmRDb250cm9sU3RhY2soKTsKKyAgICB9CisKKyAgICBCYXNpY0Jsb2Nr
KiB0YXJnZXQgPSBkYXRhLnRhcmdldEJsb2NrRm9yQnJhbmNoKG1fcHJvYyk7CisgICAgdW5pZnlW
YWx1ZXNXaXRoQmxvY2socmV0dXJuVmFsdWVzLCBkYXRhLnN0YWNrLCB0YXJnZXQpOworICAgIGlm
IChjb25kaXRpb24pIHsKKyAgICAgICAgQmFzaWNCbG9jayogY29udGludWF0aW9uID0gbV9wcm9j
LmFkZEJsb2NrKCk7CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1f
cHJvYywgQjM6OkJyYW5jaCwgT3JpZ2luKCksIGNvbmRpdGlvbik7CisgICAgICAgIG1fY3VycmVu
dEJsb2NrLT5zZXRTdWNjZXNzb3JzKEZyZXF1ZW50ZWRCbG9jayh0YXJnZXQpLCBGcmVxdWVudGVk
QmxvY2soY29udGludWF0aW9uKSk7CisgICAgICAgIHRhcmdldC0+YWRkUHJlZGVjZXNzb3IobV9j
dXJyZW50QmxvY2spOworICAgICAgICBjb250aW51YXRpb24tPmFkZFByZWRlY2Vzc29yKG1fY3Vy
cmVudEJsb2NrKTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb247CisgICAg
fSBlbHNlIHsKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSht
X3Byb2MsIEp1bXAsIE9yaWdpbigpLCBGcmVxdWVudGVkQmxvY2sodGFyZ2V0KSk7CisgICAgICAg
IHRhcmdldC0+YWRkUHJlZGVjZXNzb3IobV9jdXJyZW50QmxvY2spOworICAgICAgICB1bnJlYWNo
YWJsZSA9IHRydWU7CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE5MywxMiAr
MzQ1LDEyIEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6dW5pZnkoVmFyaWFibGUqIHZhcmlhYmxlLCBF
eHByZXNzaW9uVHlwZSBzb3VyY2UpCiAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYXJp
YWJsZVZhbHVlPihtX3Byb2MsIFNldCwgT3JpZ2luKCksIHZhcmlhYmxlLCBzb3VyY2UpOwogfQog
Ci1WZWN0b3I8VmFyaWFibGUqPiBCM0lSR2VuZXJhdG9yOjppbml0aWFsaXplSW5jb21taW5nVHlw
ZXMoQmFzaWNCbG9jayogYmxvY2ssIGNvbnN0IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIHNvdXJj
ZSkKK1ZlY3RvcjxWYXJpYWJsZSo+IEIzSVJHZW5lcmF0b3I6OmluaXRpYWxpemVJbmNvbW1pbmdU
eXBlcyhCYXNpY0Jsb2NrKiBibG9jaywgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlLCAxPiYg
c291cmNlKQogewogICAgIFZlY3RvcjxWYXJpYWJsZSo+IHJlc3VsdDsKICAgICByZXN1bHQucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShzb3VyY2Uuc2l6ZSgpKTsKICAgICBmb3IgKEV4cHJlc3Npb25U
eXBlIGV4cHIgOiBzb3VyY2UpIHsKLSAgICAgICAgQVNTRVJUKGV4cHItPnR5cGUoKSAhPSBWb2lk
KTsKKyAgICAgICAgQVNTRVJUKGV4cHItPnR5cGUoKSAhPSBCMzo6Vm9pZCk7CiAgICAgICAgIFZh
cmlhYmxlKiB2YXIgPSBtX3Byb2MuYWRkVmFyaWFibGUoZXhwci0+dHlwZSgpKTsKICAgICAgICAg
cmVzdWx0LmFwcGVuZCh2YXIpOwogICAgICAgICBibG9jay0+YXBwZW5kTmV3PFZhcmlhYmxlVmFs
dWU+KG1fcHJvYywgQjM6OkdldCwgT3JpZ2luKCksIHZhcik7CkBAIC0yMDcsMzAgKzM1OSwzMyBA
QCBWZWN0b3I8VmFyaWFibGUqPiBCM0lSR2VuZXJhdG9yOjppbml0aWFsaXplSW5jb21taW5nVHlw
ZXMoQmFzaWNCbG9jayogYmxvY2ssIGNvbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQg
QjNJUkdlbmVyYXRvcjo6dW5pZnlWYWx1ZXNXaXRoTGV2ZWwoY29uc3QgVmVjdG9yPEV4cHJlc3Np
b25UeXBlPiYgcmVzdWx0U3RhY2ssIHVuc2lnbmVkIGxldmVsKQordm9pZCBCM0lSR2VuZXJhdG9y
Ojp1bmlmeVZhbHVlc1dpdGhCbG9jayhjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGUsIDE+JiBy
ZXN1bHRTdGFjaywgT3B0aW9uYWw8VmVjdG9yPFZhcmlhYmxlKj4+JiBzdGFjaywgQmFzaWNCbG9j
ayogdGFyZ2V0KQogewotICAgIEFTU0VSVChsZXZlbCA8IG1fY29udHJvbFN0YWNrLnNpemUoKSk7
Ci0KLSAgICBPcHRpb25hbDxWZWN0b3I8VmFyaWFibGUqPj4mIGV4cGVjdGVkU3RhY2sgPSBzdGFj
a0ZvckNvbnRyb2xMZXZlbChsZXZlbCk7Ci0gICAgaWYgKCFleHBlY3RlZFN0YWNrKSB7Ci0gICAg
ICAgIGV4cGVjdGVkU3RhY2sgPSBpbml0aWFsaXplSW5jb21taW5nVHlwZXMoYmxvY2tGb3JDb250
cm9sTGV2ZWwobGV2ZWwpLCByZXN1bHRTdGFjayk7CisgICAgaWYgKCFzdGFjaykgeworICAgICAg
ICBzdGFjayA9IGluaXRpYWxpemVJbmNvbW1pbmdUeXBlcyh0YXJnZXQsIHJlc3VsdFN0YWNrKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChleHBlY3RlZFN0YWNrLnZhbHVl
KCkuc2l6ZSgpICE9IHJlc3VsdFN0YWNrLnNpemUoKSk7CisgICAgQVNTRVJUKHN0YWNrLnZhbHVl
KCkuc2l6ZSgpID09IHJlc3VsdFN0YWNrLnNpemUoKSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHJlc3VsdFN0YWNrLnNpemUoKTsgKytpKQotICAgICAgICB1bmlmeShleHBlY3RlZFN0
YWNrLnZhbHVlKClbaV0sIHJlc3VsdFN0YWNrW2ldKTsKKyAgICAgICAgdW5pZnkoc3RhY2sudmFs
dWUoKVtpXSwgcmVzdWx0U3RhY2tbaV0pOwogfQogICAgIAotT3B0aW9uYWw8VmVjdG9yPFZhcmlh
YmxlKj4+JiBCM0lSR2VuZXJhdG9yOjpzdGFja0ZvckNvbnRyb2xMZXZlbCh1bnNpZ25lZCBsZXZl
bCkKK0IzSVJHZW5lcmF0b3I6OkNvbnRyb2xEYXRhJiBCM0lSR2VuZXJhdG9yOjpjb250cm9sRGF0
YUZvckxldmVsKHVuc2lnbmVkIGxldmVsKQogewotICAgIHJldHVybiBtX2NvbnRyb2xTdGFja1tt
X2NvbnRyb2xTdGFjay5zaXplKCkgLSAxIC0gbGV2ZWxdLnNlY29uZDsKKyAgICByZXR1cm4gbV9j
b250cm9sU3RhY2tbbV9jb250cm9sU3RhY2suc2l6ZSgpIC0gMSAtIGxldmVsXTsKIH0KIAotQmFz
aWNCbG9jayogQjNJUkdlbmVyYXRvcjo6YmxvY2tGb3JDb250cm9sTGV2ZWwodW5zaWduZWQgbGV2
ZWwpCit2b2lkIEIzSVJHZW5lcmF0b3I6OmR1bXBHcmFwaEFuZENvbnRyb2xTdGFjaygpCiB7Ci0g
ICAgcmV0dXJuIG1fY29udHJvbFN0YWNrW21fY29udHJvbFN0YWNrLnNpemUoKSAtIDEgLSBsZXZl
bF0uZmlyc3Q7CisgICAgZGF0YUxvZ0xuKCJQcm9jZXNzaW5nIEdyYXBoOiIpOworICAgIGRhdGFM
b2cobV9wcm9jKTsKKyAgICBkYXRhTG9nTG4oIldpdGggY3VycmVudCBibG9jazoiLCAqbV9jdXJy
ZW50QmxvY2spOworICAgIGRhdGFMb2dMbigiV2l0aCBDb250cm9sIFN0YWNrOiIpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NvbnRyb2xTdGFjay5zaXplKCk7ICsraSkKKyAgICAg
ICAgZGF0YUxvZ0xuKCJbIiwgaSwgIl0gIiwgbV9jb250cm9sU3RhY2tbaV0pOworICAgIGRhdGFM
b2dMbigiXG4iKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBwYXJzZUFuZENv
bXBpbGUoVk0mIHZtLCBWZWN0b3I8dWludDhfdD4mIHNvdXJjZSwgRnVuY3Rpb25JbmZvcm1hdGlv
biBpbmZvLCB1bnNpZ25lZCBvcHRMZXZlbCkKQEAgLTI0MSw2ICszOTYsMTEgQEAgc3RkOjp1bmlx
dWVfcHRyPENvbXBpbGF0aW9uPiBwYXJzZUFuZENvbXBpbGUoVk0mIHZtLCBWZWN0b3I8dWludDhf
dD4mIHNvdXJjZSwgRnUKICAgICBpZiAoIXBhcnNlci5wYXJzZSgpKQogICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCisgICAgdmFsaWRhdGUocHJvY2VkdXJlLCAiQWZ0ZXIg
cGFyc2luZzpcbiIpOworCisgICAgZml4U1NBKHByb2NlZHVyZSk7CisgICAgaWYgKHZlcmJvc2Up
CisgICAgICAgIGRhdGFMb2coIlBvc3QgU1NBOiAiLCBwcm9jZWR1cmUpOwogICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPENvbXBpbGF0aW9uPih2bSwgcHJvY2VkdXJlLCBvcHRMZXZlbCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01DYWxsaW5nQ29u
dmVudGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ2FsbGluZ0NvbnZl
bnRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxMGY5ZDVmYjFhODQwNWU0ZTBjNDgwNWU2NGNlYTIxNmVi
NjZkNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
Q2FsbGluZ0NvbnZlbnRpb24uY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV0FTTUNhbGxpbmdDb252ZW50aW9uLmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKworbmFtZXNwYWNlIEpTQyB7CisKK25h
bWVzcGFjZSBXQVNNIHsKKworY29uc3QgSlNDQ2FsbGluZ0NvbnZlbnRpb24mIGpzY0NhbGxpbmdD
b252ZW50aW9uKCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPEpTQ0NhbGxpbmdD
b252ZW50aW9uPiBzdGF0aWNKU0NDYWxsaW5nQ29udmVudGlvbjsKKyAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgc3RhdGljSlNDQ2FsbGluZ0NvbnZlbnRpb25GbGFnOworICAgIHN0ZDo6Y2FsbF9v
bmNlKHN0YXRpY0pTQ0NhbGxpbmdDb252ZW50aW9uRmxhZywgW10gKCkgeworICAgICAgICBzdGF0
aWNKU0NDYWxsaW5nQ29udmVudGlvbi5jb25zdHJ1Y3QoVmVjdG9yPEdQUlJlZz4oKSwgUmVnaXN0
ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgfSk7CisKKyAgICByZXR1cm4gc3Rh
dGljSlNDQ2FsbGluZ0NvbnZlbnRpb247Cit9CisKK30gLy8gbmFtZXNwYWNlIEIzCisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01DYWxsaW5nQ29udmVudGlvbi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUNhbGxpbmdDb252ZW50aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YWE4ODMxNmVjZjI3YTA2MzNiODY0MzBkYjI0Mzk5N2E2YzJhYzQyZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01DYWxsaW5nQ29udmVudGlvbi5oCkBA
IC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKworI2luY2x1ZGUg
IkIzQXJndW1lbnRSZWdWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQmFzaWNCbG9jay5oIgorI2luY2x1
ZGUgIkIzQ29uc3Q2NFZhbHVlLmgiCisjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgorI2luY2x1
ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCisjaW5jbHVkZSAiV0FT
TUZvcm1hdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworbmFtZXNwYWNlIFdBU00geworCit0eXBl
ZGVmIHVuc2lnbmVkICgqTmV4dE9mZnNldCkodW5zaWduZWQgY3VycmVudE9mZnNldCwgVHlwZSB0
eXBlKTsKKwordGVtcGxhdGU8dW5zaWduZWQgb2Zmc2V0LCBOZXh0T2Zmc2V0IHVwZGF0ZU9mZnNl
dD4KK2NsYXNzIENhbGxpbmdDb252ZW50aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgaGVhZGVyU2l6ZSA9IG9mZnNldDsKKworICAgIENhbGxpbmdDb252ZW50aW9uKFZl
Y3RvcjxHUFJSZWc+JiYgcmVnaXN0ZXJBcmd1bWVudHMsIFJlZ2lzdGVyU2V0JiYgY2FsbGVlU2F2
ZVJlZ2lzdGVycykKKyAgICAgICAgOiBtX3JlZ2lzdGVyQXJndW1lbnRzKHJlZ2lzdGVyQXJndW1l
bnRzKQorICAgICAgICAsIG1fY2FsbGVlU2F2ZVJlZ2lzdGVycyhjYWxsZWVTYXZlUmVnaXN0ZXJz
KQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZv
aWQgaXRlcmF0ZShjb25zdCBWZWN0b3I8VHlwZT4mIGFyZ3VtZW50VHlwZXMsIEIzOjpQcm9jZWR1
cmUmIHByb2MsIEIzOjpCYXNpY0Jsb2NrKiBibG9jaywgQjM6Ok9yaWdpbiBvcmlnaW4sIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CisgICAgeworICAgICAgICB1bnNpZ25lZCBjdXJyZW50
T2Zmc2V0ID0gaGVhZGVyU2l6ZTsKKyAgICAgICAgQjM6OlZhbHVlKiBmcmFtZVBvaW50ZXIgPSBi
bG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4ocHJvYywgQjM6OkZyYW1lUG9pbnRlciwgb3JpZ2lu
KTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJndW1lbnRUeXBlcy5zaXpl
KCk7ICsraSkgeworICAgICAgICAgICAgQjM6OlZhbHVlKiBhcmd1bWVudDsKKyAgICAgICAgICAg
IGlmIChpIDwgbV9yZWdpc3RlckFyZ3VtZW50cy5zaXplKCkpCisgICAgICAgICAgICAgICAgYXJn
dW1lbnQgPSBibG9jay0+YXBwZW5kTmV3PEIzOjpBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBvcmln
aW4sIG1fcmVnaXN0ZXJBcmd1bWVudHNbaV0pOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgQjM6OlZhbHVlKiBhZGRyZXNzID0gYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+
KHByb2MsIEIzOjpBZGQsIG9yaWdpbiwgZnJhbWVQb2ludGVyLAorICAgICAgICAgICAgICAgICAg
ICBibG9jay0+YXBwZW5kTmV3PEIzOjpDb25zdDY0VmFsdWU+KHByb2MsIG9yaWdpbiwgY3VycmVu
dE9mZnNldCkpOworICAgICAgICAgICAgICAgIGFyZ3VtZW50ID0gYmxvY2stPmFwcGVuZE5ldzxC
Mzo6TWVtb3J5VmFsdWU+KHByb2MsIEIzOjpMb2FkLCB0b0IzVHlwZShhcmd1bWVudFR5cGVzW2ld
KSwgb3JpZ2luLCBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50T2Zmc2V0ID0gdXBk
YXRlT2Zmc2V0KGN1cnJlbnRPZmZzZXQsIGFyZ3VtZW50VHlwZXNbaV0pOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZnVuY3Rvcihhcmd1bWVudCwgaSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBjb25zdCBWZWN0b3I8R1BSUmVnPiBtX3JlZ2lzdGVyQXJndW1lbnRzOworICAgIGNvbnN0
IFJlZ2lzdGVyU2V0IG1fY2FsbGVlU2F2ZVJlZ2lzdGVyczsKKyAgICBjb25zdCBSZWdpc3RlclNl
dCBtX2NhbGxlclNhdmVSZWdpc3RlcnM7Cit9OworCitpbmxpbmUgdW5zaWduZWQgbmV4dEpTQ09m
ZnNldCh1bnNpZ25lZCBjdXJyZW50T2Zmc2V0LCBUeXBlKQoreworICAgIHJldHVybiBjdXJyZW50
T2Zmc2V0ICsgc2l6ZW9mKFJlZ2lzdGVyKTsKK30KKworY29uc3RleHByIHVuc2lnbmVkIGpzY0hl
YWRlclNpemUgPSBFeGVjU3RhdGU6OmhlYWRlclNpemVJblJlZ2lzdGVycyAqIHNpemVvZihSZWdp
c3Rlcik7Cit0eXBlZGVmIENhbGxpbmdDb252ZW50aW9uPGpzY0hlYWRlclNpemUsIG5leHRKU0NP
ZmZzZXQ+IEpTQ0NhbGxpbmdDb252ZW50aW9uOworCitjb25zdCBKU0NDYWxsaW5nQ29udmVudGlv
biYganNjQ2FsbGluZ0NvbnZlbnRpb24oKTsKKworfSAvLyBuYW1lc3BhY2UgV0FTTQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Gb3JtYXQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01Gb3JtYXQuaAppbmRleCA5NzVmODJiZDY4YTViNDZkMTgxNmE0
NDliZDRiNjkwMzhkZWE0MDVjLi44ZDBjOTAyNDAzM2VlZDA2MjE0YTU2OTk3ZjZlODk4NDAzZTJi
NGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRm9ybWF0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZvcm1hdC5oCkBAIC01NCwxNiAr
NTQsNDcgQEAgY2xhc3MgSlNGdW5jdGlvbjsKIAogbmFtZXNwYWNlIFdBU00gewogCi11c2luZyBC
Mzo6VHlwZTsKLXVzaW5nIEIzOjpJbnQzMjsKLXVzaW5nIEIzOjpJbnQ2NDsKLXVzaW5nIEIzOjpG
bG9hdDsKLXVzaW5nIEIzOjpEb3VibGU7Ci0KLXN0YXRpY19hc3NlcnQoSW50MzIgPT0gMCwgIldB
U00gbmVlZHMgQjM6OlR5cGU6OkludDMyIHRvIGhhdmUgdGhlIHZhbHVlIDAiKTsKLXN0YXRpY19h
c3NlcnQoSW50NjQgPT0gMSwgIldBU00gbmVlZHMgQjM6OlR5cGU6OkludDY0IHRvIGhhdmUgdGhl
IHZhbHVlIDEiKTsKLXN0YXRpY19hc3NlcnQoRmxvYXQgPT0gMiwgIldBU00gbmVlZHMgQjM6OlR5
cGU6OkZsb2F0IHRvIGhhdmUgdGhlIHZhbHVlIDIiKTsKLXN0YXRpY19hc3NlcnQoRG91YmxlID09
IDMsICJXQVNNIG5lZWRzIEIzOjpUeXBlOjpEb3VibGUgdG8gaGF2ZSB0aGUgdmFsdWUgMyIpOwor
ZW51bSBUeXBlIDogdWludDhfdCB7CisgICAgSTMyID0gMSwKKyAgICBJNjQsCisgICAgRjMyLAor
ICAgIEY2NCwKKyAgICBMYXN0VmFsdWVUeXBlID0gRjY0LAorICAgIFZvaWQKK307CisKK3N0YXRp
Y19hc3NlcnQoSTMyID09IDEsICJXQVNNIG5lZWRzIEkzMiB0byBoYXZlIHRoZSB2YWx1ZSAxIik7
CitzdGF0aWNfYXNzZXJ0KEk2NCA9PSAyLCAiV0FTTSBuZWVkcyBJNjQgdG8gaGF2ZSB0aGUgdmFs
dWUgMiIpOworc3RhdGljX2Fzc2VydChGMzIgPT0gMywgIldBU00gbmVlZHMgRjMyIHRvIGhhdmUg
dGhlIHZhbHVlIDMiKTsKK3N0YXRpY19hc3NlcnQoRjY0ID09IDQsICJXQVNNIG5lZWRzIEY2NCB0
byBoYXZlIHRoZSB2YWx1ZSA0Iik7CisKK2lubGluZSBCMzo6VHlwZSB0b0IzVHlwZShUeXBlIHR5
cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBJMzI6IHJldHVybiBCMzo6SW50
MzI7CisgICAgY2FzZSBJNjQ6IHJldHVybiBCMzo6SW50NjQ7CisgICAgY2FzZSBGMzI6IHJldHVy
biBCMzo6RmxvYXQ7CisgICAgY2FzZSBGNjQ6IHJldHVybiBCMzo6RG91YmxlOworICAgIGNhc2Ug
Vm9pZDogcmV0dXJuIEIzOjpWb2lkOworICAgIGRlZmF1bHQ6IGJyZWFrOworICAgIH0KKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitpbmxpbmUgYm9vbCBpc1ZhbHVlVHlw
ZShUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBJMzI6CisgICAg
Y2FzZSBJNjQ6CisgICAgY2FzZSBGMzI6CisgICAgY2FzZSBGNjQ6CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKIAogc3RydWN0IFNpZ25hdHVyZSB7CiAgICAgVHlwZSByZXR1cm5UeXBlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaAppbmRleCBi
MTYxNTI0ZmU2M2I1NGI4NzU4OGJhNWNlNjk3OGVmNmU1ZTJkNGM0Li5mNjgzMWUzN2RjNmJiMjQz
YTFiYWNjOTUyMjlmYTExYTk3NDJmZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAg
IE9wdGlvbmFsPFZlY3RvcjxFeHByZXNzaW9uVHlwZT4+JiBzdGFja0ZvckNvbnRyb2xMZXZlbCh1
bnNpZ25lZCBsZXZlbCk7CiAKICAgICBDb250ZXh0JiBtX2NvbnRleHQ7Ci0gICAgVmVjdG9yPEV4
cHJlc3Npb25UeXBlPiBtX2V4cHJlc3Npb25TdGFjazsKKyAgICBWZWN0b3I8RXhwcmVzc2lvblR5
cGUsIDE+IG1fZXhwcmVzc2lvblN0YWNrOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29udGV4
dD4KQEAgLTcyLDE0ICs3MiwxNSBAQCBib29sIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJz
ZSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkg
PCBsb2NhbENvdW50OyArK2kpIHsKLSAgICAgICAgdWludDMyX3QgbnVtYmVyT2ZMb2NhbHNXaXRo
VHlwZTsKLSAgICAgICAgaWYgKCFwYXJzZVVJbnQzMihudW1iZXJPZkxvY2Fsc1dpdGhUeXBlKSkK
KyAgICAgICAgdWludDMyX3QgbnVtYmVyT2ZMb2NhbHM7CisgICAgICAgIGlmICghcGFyc2VWYXJV
SW50MzIobnVtYmVyT2ZMb2NhbHMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
ICAgIFR5cGUgdHlwZU9mTG9jYWw7CiAgICAgICAgIGlmICghcGFyc2VWYWx1ZVR5cGUodHlwZU9m
TG9jYWwpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgICAgIG1fY29udGV4dC5h
ZGRMb2NhbCh0eXBlT2ZMb2NhbCwgbnVtYmVyT2ZMb2NhbHMpOwogICAgIH0KIAogICAgIHJldHVy
biBwYXJzZUJsb2NrKCk7CkBAIC0xMTIsOCArMTEzLDggQEAgYm9vbCBGdW5jdGlvblBhcnNlcjxD
b250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKE9wVHlwZSBvcCkKICAgICBzd2l0Y2ggKG9wKSB7CiAj
ZGVmaW5lIENSRUFURV9DQVNFKG5hbWUsIGlkLCBiM29wKSBjYXNlIG5hbWU6CiAgICAgRk9SX0VB
Q0hfV0FTTV9CSU5BUllfT1AoQ1JFQVRFX0NBU0UpIHsKLSAgICAgICAgRXhwcmVzc2lvblR5cGUg
bGVmdCA9IG1fZXhwcmVzc2lvblN0YWNrLnRha2VMYXN0KCk7CiAgICAgICAgIEV4cHJlc3Npb25U
eXBlIHJpZ2h0ID0gbV9leHByZXNzaW9uU3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgRXhwcmVz
c2lvblR5cGUgbGVmdCA9IG1fZXhwcmVzc2lvblN0YWNrLnRha2VMYXN0KCk7CiAgICAgICAgIEV4
cHJlc3Npb25UeXBlIHJlc3VsdDsKICAgICAgICAgaWYgKCFtX2NvbnRleHQuYmluYXJ5T3Aoc3Rh
dGljX2Nhc3Q8QmluYXJ5T3BUeXBlPihvcCksIGxlZnQsIHJpZ2h0LCByZXN1bHQpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM1LDcgKzEzNiw3IEBAIGJvb2wgRnVuY3Rpb25QYXJz
ZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbihPcFR5cGUgb3ApCiAgICAgICAgIHVpbnQzMl90
IGNvbnN0YW50OwogICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKGNvbnN0YW50KSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9leHByZXNzaW9uU3RhY2suYXBwZW5kKG1f
Y29udGV4dC5hZGRDb25zdGFudChJbnQzMiwgY29uc3RhbnQpKTsKKyAgICAgICAgbV9leHByZXNz
aW9uU3RhY2suYXBwZW5kKG1fY29udGV4dC5hZGRDb25zdGFudChJMzIsIGNvbnN0YW50KSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTUxLDEyICsxNTIsNDggQEAgYm9vbCBG
dW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKE9wVHlwZSBvcCkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgY2FzZSBPcFR5cGU6OlNldExvY2FsOiB7Cisg
ICAgICAgIHVpbnQzMl90IGluZGV4OworICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKGluZGV4
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgdmFs
dWUgPSBtX2V4cHJlc3Npb25TdGFjay50YWtlTGFzdCgpOworICAgICAgICByZXR1cm4gbV9jb250
ZXh0LnNldExvY2FsKGluZGV4LCB2YWx1ZSk7CisgICAgfQorCiAgICAgY2FzZSBPcFR5cGU6OkJs
b2NrOiB7CiAgICAgICAgIGlmICghbV9jb250ZXh0LmFkZEJsb2NrKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiBwYXJzZUJsb2NrKCk7CiAgICAgfQogCisgICAg
ICAgIGNhc2UgT3BUeXBlOjpMb29wOiB7CisgICAgICAgICAgICBpZiAoIW1fY29udGV4dC5hZGRM
b29wKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJu
IHBhcnNlQmxvY2soKTsKKyAgICAgICAgfQorCisgICAgY2FzZSBPcFR5cGU6OkJyYW5jaDoKKyAg
ICBjYXNlIE9wVHlwZTo6QnJhbmNoSWY6IHsKKyAgICAgICAgdWludDMyX3QgYXJpdHk7CisgICAg
ICAgIGlmICghcGFyc2VWYXJVSW50MzIoYXJpdHkpIHx8IGFyaXR5ID4gbV9leHByZXNzaW9uU3Rh
Y2suc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHVpbnQzMl90
IHRhcmdldDsKKyAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQzMih0YXJnZXQpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIEV4cHJlc3Npb25UeXBlIGNvbmRpdGlvbiA9IENv
bnRleHQ6OmVtcHR5RXhwcmVzc2lvbjsKKyAgICAgICAgaWYgKG9wID09IE9wVHlwZTo6QnJhbmNo
SWYpCisgICAgICAgICAgICBjb25kaXRpb24gPSBtX2V4cHJlc3Npb25TdGFjay50YWtlTGFzdCgp
OworCisKKyAgICAgICAgVmVjdG9yPEV4cHJlc3Npb25UeXBlLCAxPiB2YWx1ZXMoYXJpdHkpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcml0eTsgaTsgaS0tKQorICAgICAgICAgICAgdmFs
dWVzW2ktMV0gPSBtX2V4cHJlc3Npb25TdGFjay50YWtlTGFzdCgpOworCisgICAgICAgIHJldHVy
biBtX2NvbnRleHQuYWRkQnJhbmNoKGNvbmRpdGlvbiwgdmFsdWVzLCB0YXJnZXQpOworICAgIH0K
KwogICAgIGNhc2UgT3BUeXBlOjpSZXR1cm46IHsKICAgICAgICAgdWludDhfdCByZXR1cm5Db3Vu
dDsKICAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQxKHJldHVybkNvdW50KSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKaW5kZXggZTdhNWE0ZTQ2
MjgxNWJmNDEwYjA3Y2RmNTA2Y2Q1ZTg1OWMzMGQyNy4uNWMyNGVkNzg0ZmFlYzU0MTFhMDBiMGFm
NjMyYzUwM2VjMmQ2ZmY1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTU1vZHVsZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TU1vZHVsZVBhcnNlci5jcHAKQEAgLTE2Myw5ICsxNjMsOSBAQCBib29sIE1vZHVsZVBhcnNlcjo6
cGFyc2VGdW5jdGlvblR5cGVzKCkKICAgICAgICAgYXJndW1lbnRUeXBlcy5yZXNpemUoYXJndW1l
bnRDb3VudCk7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3VtZW50Q291
bnQ7ICsraSkgewotICAgICAgICAgICAgaWYgKCFwYXJzZVVJbnQ3KHR5cGUpIHx8IHR5cGUgPj0g
c3RhdGljX2Nhc3Q8dWludDhfdD4oVHlwZTo6TGFzdFZhbHVlVHlwZSkpCisgICAgICAgICAgICBp
ZiAoIXBhcnNlVUludDcodHlwZSkgfHwgIWlzVmFsdWVUeXBlKHN0YXRpY19jYXN0PFR5cGU+KHR5
cGUpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBhcmd1bWVu
dFR5cGVzLmFwcGVuZChzdGF0aWNfY2FzdDxUeXBlPih0eXBlKSk7CisgICAgICAgICAgICBhcmd1
bWVudFR5cGVzW2ldID0gc3RhdGljX2Nhc3Q8VHlwZT4odHlwZSk7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoIXBhcnNlVmFyVUludDEodHlwZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XQVNNT3BzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
T3BzLmgKaW5kZXggYzFkYjZlOTc4NDExN2QwOGIxNTRkY2NhOGNhYTRiNTFiZmExNDk2YS4uODZj
ZmE2MDU3MDhjMGJiZTIwOWRiYjQwNDI0MzY2MDM0NjNhZDMxZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU9wcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01PcHMuaApAQCAtMzMsMTAgKzMzLDE0IEBAIG5hbWVzcGFjZSBXQVNNIHsKIAog
I2RlZmluZSBGT1JfRUFDSF9XQVNNX1NQRUNJQUxfT1AobWFjcm8pIFwKICAgICBtYWNybyhJMzJD
b25zdCwgMHgxMCwgTkEpIFwKLSAgICBtYWNybyhHZXRMb2NhbCwgMHgxNCwgTkEpCisgICAgbWFj
cm8oR2V0TG9jYWwsIDB4MTQsIE5BKSBcCisgICAgbWFjcm8oU2V0TG9jYWwsIDB4MTUsIE5BKQog
CiAjZGVmaW5lIEZPUl9FQUNIX1dBU01fQ09OVFJPTF9GTE9XX09QKG1hY3JvKSBcCiAgICAgbWFj
cm8oQmxvY2ssIDB4MDEsIE5BKSBcCisgICAgbWFjcm8oTG9vcCwgMHgwMiwgTkEpIFwKKyAgICBt
YWNybyhCcmFuY2gsIDB4MDYsIE5BKSBcCisgICAgbWFjcm8oQnJhbmNoSWYsIDB4MDcsIE5BKSBc
CiAgICAgbWFjcm8oUmV0dXJuLCAweDA5LCBOQSkgXAogICAgIG1hY3JvKEVuZCwgMHgwZiwgTkEp
CiAK
</data>
<flag name="review"
          id="311433"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>