<?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>146926</bug_id>
          
          <creation_ts>2015-07-13 19:11:37 -0700</creation_ts>
          <short_desc>Implement basic types for ECMAScript Internationalization API</short_desc>
          <delta_ts>2015-07-30 04:56:37 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=147160</see_also>
          <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>90906</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy VanWagoner">andy</reporter>
          <assigned_to name="Andy VanWagoner">andy</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>ljharb</cc>
    
    <cc>ossy</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1109307</commentid>
    <comment_count>0</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-07-13 19:11:37 -0700</bug_when>
    <thetext>Implement basic types for ECMAScript Internationalization APII</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109312</commentid>
    <comment_count>1</comment_count>
      <attachid>256755</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-07-13 19:51:18 -0700</bug_when>
    <thetext>Created attachment 256755
Add Collator, NumberFormat, and DateTimeFormat skeletons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109313</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-13 19:53:17 -0700</bug_when>
    <thetext>Attachment 256755 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/IntlCollatorConstructor.cpp:49:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp:48:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlNumberFormatConstructor.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlNumberFormatConstructor.cpp:49:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlCollatorPrototype.cpp:48:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp:49:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp:48:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109314</commentid>
    <comment_count>3</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-07-13 19:55:56 -0700</bug_when>
    <thetext>http://test262.ecmascript.org/testcases_intl402.html

Results in Safari 8.0.7
Pass: 12 | Fail: 141

Results with this patch in MiniBrowser
Pass: 91 | Fail: 62</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109315</commentid>
    <comment_count>4</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-07-13 19:57:26 -0700</bug_when>
    <thetext>The style fails because the .lut.h headers are included after the rest of the headers, per the pattern of every other file I found with a .lut.h

If need be, I can move it up into alphabetical order to pass the style check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109551</commentid>
    <comment_count>5</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-07-14 20:08:05 -0700</bug_when>
    <thetext>The windows build contains multiple errors like this:

IntlObject.obj : error LNK2019: unresolved external symbol &quot;public: static class JSC::Structure * __cdecl JSC::IntlCollator::createStructure(class JSC::VM &amp;,class JSC::JSGlobalObject *,class JSC::JSValue)&quot; (?createStructure@IntlCollator@JSC@@SAPAVStructure@2@AAVVM@2@PAVJSGlobalObject@2@VJSValue@2@@Z) referenced in function &quot;protected: void __thiscall JSC::IntlObject::finishCreation(class JSC::VM &amp;,class JSC::JSGlobalObject *)&quot; (?finishCreation@IntlObject@JSC@@IAEXAAVVM@2@PAVJSGlobalObject@2@@Z) [C:\cygwin\home\buildbot\WebKit\Source\JavaScriptCore\JavaScriptCore.vcxproj\JavaScriptCore.vcxproj]

IntlObject.cpp includes all the headers for Collator, DateTimeFormat, and NumberFormat. Any ideas what might cause the linker to not be able to resolve the create methods?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109702</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-07-15 14:00:23 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; The windows build contains multiple errors like this:
&gt; 
&gt; IntlObject.obj : error LNK2019: unresolved external symbol &quot;public: static
&gt; class JSC::Structure * __cdecl JSC::IntlCollator::createStructure(class
&gt; JSC::VM &amp;,class JSC::JSGlobalObject *,class JSC::JSValue)&quot;
&gt; (?createStructure@IntlCollator@JSC@@SAPAVStructure@2@AAVVM@2@PAVJSGlobalObjec
&gt; t@2@VJSValue@2@@Z) referenced in function &quot;protected: void __thiscall
&gt; JSC::IntlObject::finishCreation(class JSC::VM &amp;,class JSC::JSGlobalObject
&gt; *)&quot; (?finishCreation@IntlObject@JSC@@IAEXAAVVM@2@PAVJSGlobalObject@2@@Z)
&gt; [C:\cygwin\home\buildbot\WebKit\Source\JavaScriptCore\JavaScriptCore.
&gt; vcxproj\JavaScriptCore.vcxproj]
&gt; 
&gt; IntlObject.cpp includes all the headers for Collator, DateTimeFormat, and
&gt; NumberFormat. Any ideas what might cause the linker to not be able to
&gt; resolve the create methods?

On Windows, symbols need to be exported explicitly :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109729</commentid>
    <comment_count>7</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-07-15 14:55:21 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; The windows build contains multiple errors like this:
&gt; &gt; 
&gt; &gt; IntlObject.obj : error LNK2019: unresolved external symbol &quot;public: static
&gt; &gt; class JSC::Structure * __cdecl JSC::IntlCollator::createStructure(class
&gt; &gt; JSC::VM &amp;,class JSC::JSGlobalObject *,class JSC::JSValue)&quot;
&gt; &gt; (?createStructure@IntlCollator@JSC@@SAPAVStructure@2@AAVVM@2@PAVJSGlobalObjec
&gt; &gt; t@2@VJSValue@2@@Z) referenced in function &quot;protected: void __thiscall
&gt; &gt; JSC::IntlObject::finishCreation(class JSC::VM &amp;,class JSC::JSGlobalObject
&gt; &gt; *)&quot; (?finishCreation@IntlObject@JSC@@IAEXAAVVM@2@PAVJSGlobalObject@2@@Z)
&gt; &gt; [C:\cygwin\home\buildbot\WebKit\Source\JavaScriptCore\JavaScriptCore.
&gt; &gt; vcxproj\JavaScriptCore.vcxproj]
&gt; &gt; 
&gt; &gt; IntlObject.cpp includes all the headers for Collator, DateTimeFormat, and
&gt; &gt; NumberFormat. Any ideas what might cause the linker to not be able to
&gt; &gt; resolve the create methods?
&gt; 
&gt; On Windows, symbols need to be exported explicitly :(

How is this done?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109791</commentid>
    <comment_count>8</comment_count>
      <attachid>256755</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-07-15 18:16:04 -0700</bug_when>
    <thetext>Comment on attachment 256755
Add Collator, NumberFormat, and DateTimeFormat skeletons.

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

Starting to review files at random. It is really good overall. I am impressed how much you progressed without asking any question.

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +

Can you provide a link to the draft you used here? Otherwise the comments referencing spec sections lack context.

&gt; Source/JavaScriptCore/runtime/IntlCollator.h:58
&gt; +    WriteBarrier&lt;IntlCollatorConstructor&gt; m_constructor;

Why do you keep this one around and expose it through constructor()?

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:105
&gt; +    if (exec-&gt;hadException())
&gt; +        return JSValue::encode(jsUndefined());

You could already start a new test file for NumberFormat and test the behaviors you implemented.

For example, with the code you already have, you could test:
-not passing arguments
-passing and integer
-passing an object with valueOf() that throws an exception
-passing an object with valueOf() returning an integer.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:110
&gt; +    // TODO: Implement FormatNumber.

We always use &quot;FIXME&quot; in Webkit instead of TODO.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.h:59
&gt; +/*

Let&apos;s not commit commented code. You&apos;ll add the attributes as needed.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp:104
&gt; +        JSFunction* targetObject = JSFunction::create(vm, globalObject, 1, String(&quot;format&quot;), IntlNumberFormatFuncFormatNumber, NoIntrinsic);

String(&quot;format&quot;) -&gt; ASCIILiteral(&quot;string&quot;)

ASCIILiteral is a faster way to initialize Strings from literal constants.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp:110
&gt; +        boundFormat = JSBoundFunction::create(vm, globalObject, targetObject, nf, boundArgs, 1, String(&quot;format&quot;));

String(&quot;format&quot;) -&gt; ASCIILiteral(&quot;string&quot;)

&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:73
&gt; +    // set up Collator

Uppercase first leter, missing period.

&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:80
&gt; +    // set up NumberFormat

Uppercase first leter, missing period.

&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:87
&gt; +    // set up DateTimeFormat

Uppercase first leter, missing period.

&gt; Source/JavaScriptCore/runtime/IntlObject.h:54
&gt; +    IntlCollatorConstructor* collatorConstructor() const { return m_collatorConstructor.get(); }
&gt; +    IntlCollatorPrototype* collatorPrototype() const { return m_collatorPrototype.get(); }
&gt; +    Structure* collatorStructure() const { return m_collatorStructure.get(); }

It looks like none of those are used (nor the ones following).

You should not expose internal attributes unless needed.

&gt; Source/JavaScriptCore/runtime/IntlObject.h:67
&gt; +    WriteBarrier&lt;IntlCollatorConstructor&gt; m_collatorConstructor;

Why are the members protected and not private?

Do you actually need all those structures?
Once they are set as properties, the GC will know about them. If you do not need direct access after setting the properties, you do not need to keep a reference here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109794</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-07-15 18:22:42 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; &gt; IntlObject.cpp includes all the headers for Collator, DateTimeFormat, and
&gt; &gt; &gt; NumberFormat. Any ideas what might cause the linker to not be able to
&gt; &gt; &gt; resolve the create methods?
&gt; &gt; 
&gt; &gt; On Windows, symbols need to be exported explicitly :(
&gt; 
&gt; How is this done?

My bad, I did not read the full error and misunderstood the problem.

When linking two libraries, the symbols need to be exported explicitly. In WebKit, this is done through export macros.

But that&apos;s not the problem we have here. We are linking JavaScriptCore itself, not JavaScriptCore to an other library.

Here, the linker does not find the symbols for the new objects you added. The reason is their CPP files were not compiled, so there is not object file with the symbols. You probably just need to add the .cpp files to the Windows build system.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109797</commentid>
    <comment_count>10</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-07-15 18:26:03 -0700</bug_when>
    <thetext>Chris, this patch fails to build with CMake. The generated file sections looks good to me. Any idea what is missing for CMake?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109816</commentid>
    <comment_count>11</comment_count>
      <attachid>256755</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-07-15 19:45:41 -0700</bug_when>
    <thetext>Comment on attachment 256755
Add Collator, NumberFormat, and DateTimeFormat skeletons.

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt; +
&gt; 
&gt; Can you provide a link to the draft you used here? Otherwise the comments referencing spec sections lack context.

Will do.

&gt;&gt; Source/JavaScriptCore/runtime/IntlCollator.h:58
&gt;&gt; +    WriteBarrier&lt;IntlCollatorConstructor&gt; m_constructor;
&gt; 
&gt; Why do you keep this one around and expose it through constructor()?

I think it was a pattern I saw elsewhere. I&apos;ll remove it for now, and if I find I need it I can add it back.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:105
&gt;&gt; +        return JSValue::encode(jsUndefined());
&gt; 
&gt; You could already start a new test file for NumberFormat and test the behaviors you implemented.
&gt; 
&gt; For example, with the code you already have, you could test:
&gt; -not passing arguments
&gt; -passing and integer
&gt; -passing an object with valueOf() that throws an exception
&gt; -passing an object with valueOf() returning an integer.

I have been adding to the Intl test file, but I can break it out and do more in depth testing.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:110
&gt;&gt; +    // TODO: Implement FormatNumber.
&gt; 
&gt; We always use &quot;FIXME&quot; in Webkit instead of TODO.

I will change it.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.h:59
&gt;&gt; +/*
&gt; 
&gt; Let&apos;s not commit commented code. You&apos;ll add the attributes as needed.

Will remove.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp:104
&gt;&gt; +        JSFunction* targetObject = JSFunction::create(vm, globalObject, 1, String(&quot;format&quot;), IntlNumberFormatFuncFormatNumber, NoIntrinsic);
&gt; 
&gt; String(&quot;format&quot;) -&gt; ASCIILiteral(&quot;string&quot;)
&gt; 
&gt; ASCIILiteral is a faster way to initialize Strings from literal constants.

Good to know. I&apos;ll make the switch.

&gt;&gt; Source/JavaScriptCore/runtime/IntlObject.h:67
&gt;&gt; +    WriteBarrier&lt;IntlCollatorConstructor&gt; m_collatorConstructor;
&gt; 
&gt; Why are the members protected and not private?
&gt; 
&gt; Do you actually need all those structures?
&gt; Once they are set as properties, the GC will know about them. If you do not need direct access after setting the properties, you do not need to keep a reference here.

I was following the pattern from JSGlobalObject. If it&apos;s not needed I can remove them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110301</commentid>
    <comment_count>12</comment_count>
      <attachid>257016</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-07-17 19:25:06 -0700</bug_when>
    <thetext>Created attachment 257016
updated comments, enabled more flags</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110303</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-17 19:27:46 -0700</bug_when>
    <thetext>Attachment 257016 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/IntlCollatorConstructor.cpp:49:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp:48:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlNumberFormatConstructor.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlNumberFormatConstructor.cpp:49:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlCollatorPrototype.cpp:48:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp:49:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp:48:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 in 41 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110364</commentid>
    <comment_count>14</comment_count>
      <attachid>257030</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-07-18 07:42:25 -0700</bug_when>
    <thetext>Created attachment 257030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110365</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-18 07:45:44 -0700</bug_when>
    <thetext>Attachment 257030 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/IntlCollatorConstructor.cpp:49:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp:48:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlNumberFormatConstructor.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlNumberFormatConstructor.cpp:49:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlCollatorPrototype.cpp:48:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp:49:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp:48:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 in 41 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110380</commentid>
    <comment_count>16</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-07-18 14:06:37 -0700</bug_when>
    <thetext>Any help on how to fix the Windows linking errors would be much appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111034</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-21 13:24:33 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Any help on how to fix the Windows linking errors would be much appreciated.

The current windows EWS seems flaky. So if you said about the Windows EWS, I think it&apos;s not related to the patch.
If the working copy (with the patch) in the Windows cannot be built, it&apos;s related to your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111144</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-21 17:35:50 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/187142

NewTarget from C++ world is supported!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111647</commentid>
    <comment_count>19</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-07-23 08:58:58 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; http://trac.webkit.org/changeset/187142
&gt; 
&gt; NewTarget from C++ world is supported!

Awesome! I will update the patch to take advantage of NewTarget.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111902</commentid>
    <comment_count>20</comment_count>
      <attachid>257030</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-07-23 20:46:52 -0700</bug_when>
    <thetext>Comment on attachment 257030
Patch

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

Quick review round.

&gt; Source/JavaScriptCore/ChangeLog:5
&gt; +        Adds basic types for ECMA-402 2nd edition, but does not implement the full locale-aware features yet.
&gt; +        http://www.ecma-international.org/ecma-402/2.0/ECMA-402.pdf

Can you please move this below the bug URL?

The format is:
    -Title
    -Bug number
    -Blank line
    -Description of the changes, as many paragraphs as you need.

&gt; Source/JavaScriptCore/runtime/IntlCollator.cpp:103
&gt; +    if (exec-&gt;hadException())
&gt; +        return JSValue::encode(jsUndefined());

I don&apos;t see any tests for this.

Could you start a new file for the Collator. Move all the tests you have for Intl.Collator to it, and start testing behaviors?

In this case, you can already check that:
-arg0.toString() is called before arg1.toString().
-If arg0.toString() raises an exception, arg1.toString() and arg1.valueOf() are never invoked.
-If either arg0 or arg1 raise an exception, the return value is undefined.

&gt; Source/JavaScriptCore/runtime/IntlCollator.cpp:117
&gt; +    // Return simple check until properly implemented.
&gt; +    return JSValue::encode(jsNumber(codePointCompare(a-&gt;value(exec).impl(), b-&gt;value(exec).impl())));

I guess you could have some tests for this behavior when it is already correct.
That&apos;s not really important at this point though.

&gt; Source/JavaScriptCore/runtime/IntlCollatorConstructor.cpp:99
&gt; +    if (!collator)
&gt; +        return JSValue::encode(jsUndefined());

It looks like this condition can never happen.

IntlCollator::create() creates uses &quot;new (NotNull, allocateCell&lt;IntlCollator&gt;(vm.heap))&quot;. That call crashes the process if we run out of memory.
You could turn this into an ASSERT() for documentation purpose.

&gt; Source/JavaScriptCore/runtime/IntlCollatorConstructor.cpp:119
&gt; +    if (!collator)
&gt; +        return JSValue::encode(jsUndefined());

Ditto.

&gt; Source/JavaScriptCore/runtime/IntlCollatorPrototype.cpp:101
&gt; +        JSGlobalObject* globalObject = exec-&gt;callee()-&gt;globalObject();

It may look a bit cleaner to get the global object out of &quot;this&quot;:
    collator-&gt;globalObject()

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:111
&gt; +        if (exec-&gt;hadException())
&gt; +            return JSValue::encode(jsUndefined());

This condition could already be tested.

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:120
&gt; +    if (!std::isfinite(value))
&gt; +        return JSValue::encode(throwRangeError(exec, String(&quot;date value is not finite in DateTimeFormat.format()&quot;)));

Could be tested too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111924</commentid>
    <comment_count>21</comment_count>
      <attachid>257030</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-07-23 22:10:09 -0700</bug_when>
    <thetext>Comment on attachment 257030
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/IntlCollator.cpp:103
&gt;&gt; +        return JSValue::encode(jsUndefined());
&gt; 
&gt; I don&apos;t see any tests for this.
&gt; 
&gt; Could you start a new file for the Collator. Move all the tests you have for Intl.Collator to it, and start testing behaviors?
&gt; 
&gt; In this case, you can already check that:
&gt; -arg0.toString() is called before arg1.toString().
&gt; -If arg0.toString() raises an exception, arg1.toString() and arg1.valueOf() are never invoked.
&gt; -If either arg0 or arg1 raise an exception, the return value is undefined.

If an exception is thrown, how could I possibly check the return value?

&gt;&gt; Source/JavaScriptCore/runtime/IntlCollatorConstructor.cpp:99
&gt;&gt; +        return JSValue::encode(jsUndefined());
&gt; 
&gt; It looks like this condition can never happen.
&gt; 
&gt; IntlCollator::create() creates uses &quot;new (NotNull, allocateCell&lt;IntlCollator&gt;(vm.heap))&quot;. That call crashes the process if we run out of memory.
&gt; You could turn this into an ASSERT() for documentation purpose.

I will switch all of these in constructors to ASSERT() statements.

&gt;&gt; Source/JavaScriptCore/runtime/IntlCollatorPrototype.cpp:101
&gt;&gt; +        JSGlobalObject* globalObject = exec-&gt;callee()-&gt;globalObject();
&gt; 
&gt; It may look a bit cleaner to get the global object out of &quot;this&quot;:
&gt;     collator-&gt;globalObject()

will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111926</commentid>
    <comment_count>22</comment_count>
      <attachid>257436</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-07-23 22:35:19 -0700</bug_when>
    <thetext>Created attachment 257436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111999</commentid>
    <comment_count>23</comment_count>
      <attachid>257436</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-07-24 10:35:12 -0700</bug_when>
    <thetext>Comment on attachment 257436
Patch

Looks like the new test files didn&apos;t make it into the patch. I will update it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112011</commentid>
    <comment_count>24</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-07-24 10:47:10 -0700</bug_when>
    <thetext>Side note: I think this feature should be disabled by default until we have an implementation of the meat of the feature, which performs the internationalization. In general, we disable features by default until they are in a mostly working state, with just a few bugs left to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112082</commentid>
    <comment_count>25</comment_count>
      <attachid>257475</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-07-24 13:58:22 -0700</bug_when>
    <thetext>Created attachment 257475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112663</commentid>
    <comment_count>26</comment_count>
      <attachid>257475</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-07-27 21:08:41 -0700</bug_when>
    <thetext>Comment on attachment 257475
Patch

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

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:44
&gt; +const ClassInfo IntlDateTimeFormat::s_info = { &quot;Object&quot;, &amp;Base::s_info, 0, CREATE_METHOD_TABLE(IntlDateTimeFormat) };

Ok, I am halfway through the review. So far so good. I&apos;ll start here next.

Some test case ideas:

&gt; LayoutTests/js/script-tests/intl-collator.js:64
&gt; +// 10.3.4 Collator Compare Functions

Can you add a test verifying that if you instantiate 2 Collator, and verify the identity of their &quot;compare()&quot; function with &quot;!==&quot;? You can also compare them to Intl.Collator.prototype.compare.

&gt; LayoutTests/js/script-tests/intl-collator.js:80
&gt; +shouldThrow(&quot;Intl.Collator.prototype.compare(&apos;a&apos;, { toString() { throw Error(&apos;8&apos;) } })&quot;, &quot;&apos;Error: 8&apos;&quot;);

Can you please add coverage for call?
    Intl.Collator.prototype.compare.call(5, &quot;foo&quot;, &quot;bar&quot;)
And same deal with an instance?

&gt; LayoutTests/js/script-tests/intl-collator.js:91
&gt; +

Maybe add Intl.Collator.prototype.resolvedOptions.call(5) or something like that? to test the &quot;this&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113002</commentid>
    <comment_count>27</comment_count>
      <attachid>257721</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-07-28 19:06:55 -0700</bug_when>
    <thetext>Created attachment 257721
Added more tests and more descriptive errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113003</commentid>
    <comment_count>28</comment_count>
      <attachid>257722</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-07-28 19:10:12 -0700</bug_when>
    <thetext>Created attachment 257722
rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113004</commentid>
    <comment_count>29</comment_count>
      <attachid>257722</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-07-28 19:14:20 -0700</bug_when>
    <thetext>Comment on attachment 257722
rebase

Missed a conflict.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113013</commentid>
    <comment_count>30</comment_count>
      <attachid>257726</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2015-07-28 20:05:10 -0700</bug_when>
    <thetext>Created attachment 257726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113227</commentid>
    <comment_count>31</comment_count>
      <attachid>257726</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-07-29 17:31:50 -0700</bug_when>
    <thetext>Comment on attachment 257726
Patch

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

I can&apos;t find any problem. Let&apos;s land !t!

You are doing seriously high quality work. The code is very clear and well written. The comments are positioned to be easy to follow. Every time I wanted something tested, you already had a test for it.

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:105
&gt; +    // 4. Else

I would move this comment in the &quot;} else {&quot; branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113234</commentid>
    <comment_count>32</comment_count>
      <attachid>257794</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-07-29 18:00:21 -0700</bug_when>
    <thetext>Created attachment 257794
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113235</commentid>
    <comment_count>33</comment_count>
      <attachid>257794</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-29 18:02:56 -0700</bug_when>
    <thetext>Comment on attachment 257794
Patch for landing

Rejecting attachment 257794 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 257794, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
numberformat-expected.txt
patching file LayoutTests/js/intl-numberformat.html
patching file LayoutTests/js/script-tests/intl-collator.js
patching file LayoutTests/js/script-tests/intl-datetimeformat.js
patching file LayoutTests/js/script-tests/intl-numberformat.js
patching file LayoutTests/js/script-tests/intl.js
patching file ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/4658751164383232</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113244</commentid>
    <comment_count>34</comment_count>
      <attachid>257796</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-07-29 18:43:50 -0700</bug_when>
    <thetext>Created attachment 257796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113271</commentid>
    <comment_count>35</comment_count>
      <attachid>257796</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-29 20:35:01 -0700</bug_when>
    <thetext>Comment on attachment 257796
Patch

Clearing flags on attachment: 257796

Committed r187575: &lt;http://trac.webkit.org/changeset/187575&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113272</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-29 20:35:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113295</commentid>
    <comment_count>37</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-07-29 22:09:50 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; Comment on attachment 257796 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 257796
&gt; 
&gt; Committed r187575: &lt;http://trac.webkit.org/changeset/187575&gt;

It caused many jsc test failures, check the bots for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113328</commentid>
    <comment_count>38</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-07-30 01:28:03 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; (In reply to comment #35)
&gt; &gt; Comment on attachment 257796 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 257796
&gt; &gt; 
&gt; &gt; Committed r187575: &lt;http://trac.webkit.org/changeset/187575&gt;
&gt; 
&gt; It caused many jsc test failures, check the bots for details.

Uh. Thanks for the notification.

It looks like a difference in the harnesses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113347</commentid>
    <comment_count>39</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-07-30 04:56:37 -0700</bug_when>
    <thetext>Already fixed in https://trac.webkit.org/changeset/187581. Thanks.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256755</attachid>
            <date>2015-07-13 19:51:18 -0700</date>
            <delta_ts>2015-07-17 19:25:01 -0700</delta_ts>
            <desc>Add Collator, NumberFormat, and DateTimeFormat skeletons.</desc>
            <filename>bug-146926-20150713205011.patch</filename>
            <type>text/plain</type>
            <size>155350</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2Nzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZTdmYWY5NTk3ODI3NGQ5ODA5NDBlOGI2Yzk1M2NmOTk4ZmJmMmNiLi40ZGY0MGNhOTJiODQyNjBm
OWRjNmJkOGNkYWJlMDlmYWI4MjUxYWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDAgQEAKKzIwMTUtMDctMTMgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVy
QGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3Jp
cHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIEFkZHMgYmFzaWMgdHlwZXMgZm9y
IEVDTUEtNDAyIDJuZCBlZGl0aW9uLCBidXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBmdWxsIGxv
Y2FsZS1hd2FyZSBmZWF0dXJlcyB5ZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRlZCBuZXcgSW50bCBmaWxlcy4K
KyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzogRW5hYmxl
IElOVEwuCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogQWRkZWQgSW50bCBmaWxlcy4K
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRl
ZCBJbnRsIGZpbGVzLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDogQWRk
ZWQgQ29sbGF0b3IsIE51bWJlckZvcm1hdCwgYW5kIERhdGVUaW1lRm9ybWF0LgorICAgICAgICAq
IHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDogTWFkZSBEYXRlLm5vdyBwdWJsaWMuCisgICAg
ICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaDogTWFkZSBEYXRlLm5vdyBwdWJsaWMuCisg
ICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
SW50bENvbGxhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6SW50bENvbGxhdG9yKToK
KyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkludGxDb2xsYXRvcjo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6c2V0Qm91bmRDb21w
YXJlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yRnVuY0NvbXBhcmUpOiBBZGRlZCBwbGFj
ZWhvbGRlciBpbXBsZW1lbnRhdGlvbiB1c2luZyBjb2RlUG9pbnRDb21wYXJlLgorICAgICAgICAq
IHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0
b3I6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpib3VuZENvbXBh
cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6SW50bENvbGxhdG9yQ29uc3RydWN0
b3IpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJbnRsQ29sbGF0b3IpOiBBZGRlZCBDb2xsYXRv
ciBjb25zdHJ1Y3RvciAoMTAuMS4yKS4KKyAgICAgICAgKEpTQzo6Y2FsbEludGxDb2xsYXRvcik6
IEFkZGVkIENvbGxhdG9yIGNvbnN0cnVjdG9yICgxMC4xLjIpLgorICAgICAgICAoSlNDOjpJbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChKU0M6Oklu
dGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkludGxD
b2xsYXRvckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpJ
bnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YpOiBBZGRlZCBwbGFj
ZWhvbGRlciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcgW10uCisgICAgICAgIChKU0M6OkludGxD
b2xsYXRvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxDb2xsYXRvckNvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0
b3JDb25zdHJ1Y3Rvcjo6Y29sbGF0b3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bENvbGxhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxDb2xsYXRv
clByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGU6
OkludGxDb2xsYXRvclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvclByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5
cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvclByb3Rv
dHlwZUdldHRlckNvbXBhcmUpOiBBZGRlZCBjb21wYXJlIGdldHRlciAoMTAuMy4zKQorICAgICAg
ICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKTogQWRkZWQg
cGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIHt9LgorICAgICAgICAqIHJ1bnRp
bWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZv
cm1hdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OkludGxEYXRlVGlt
ZUZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRlc3Ryb3kpOgorICAgICAg
ICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlND
OjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNldEJvdW5kRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50
bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lKTogQWRkZWQgcGxhY2Vob2xkZXIgaW1w
bGVtZW50YXRpb24gcmV0dXJuaW5nIG5ldyBEYXRlKHZhbHVlKS50b1N0cmluZygpLgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpJ
bnRsRGF0ZVRpbWVGb3JtYXQ6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVU
aW1lRm9ybWF0Ojpib3VuZEZvcm1hdCk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yOjpJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdCk6IEFkZGVkIERh
dGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yICgxMi4xLjIpLgorICAgICAgICAoSlNDOjpjYWxsSW50
bERhdGVUaW1lRm9ybWF0KTogQWRkZWQgRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgKDEyLjEu
MikuCisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpnZXRDb25z
dHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6
OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6IEFkZGVkIHBsYWNlaG9sZGVyIGlt
cGxlbWVudGF0aW9uIHJldHVybmluZyBbXS4KKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yOjpkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSk6CisgICAgICAg
ICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6SW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlR2V0dGVyRm9ybWF0KTogQWRkZWQgZm9ybWF0IGdldHRlciAoMTIuMy4zKS4KKyAg
ICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9u
cyk6IEFkZGVkIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyB7fS4KKyAgICAg
ICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
SW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1h
dDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6SW50
bE51bWJlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6ZGVzdHJveSk6CisgICAg
ICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlND
OjpJbnRsTnVtYmVyRm9ybWF0OjpzZXRCb3VuZEZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxO
dW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyKTogQWRkZWQgcGxhY2Vob2xkZXIgaW1wbGVtZW50
YXRpb24gcmV0dXJuaW5nIE51bWJlcih2YWx1ZSkudG9TdHJpbmcoKS4KKyAgICAgICAgKiBydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxOdW1iZXJG
b3JtYXQ6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Ym91
bmRGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6
OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJG
b3JtYXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1
Y3RJbnRsTnVtYmVyRm9ybWF0KTogQWRkZWQgTnVtYmVyRm9ybWF0IGNvbnN0cnVjdG9yICgxMS4x
LjIpLgorICAgICAgICAoSlNDOjpjYWxsSW50bE51bWJlckZvcm1hdCk6IEFkZGVkIE51bWJlckZv
cm1hdCBjb25zdHJ1Y3RvciAoMTEuMS4yKS4KKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6IEFkZGVk
IHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyBbXS4KKyAgICAgICAgKEpTQzo6
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpudW1iZXJGb3JtYXRTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpnZXRP
d25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
R2V0dGVyRm9ybWF0KTogQWRkZWQgZm9ybWF0IGdldHRlciAoMTEuMy4zKS4KKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOiBBZGRlZCBw
bGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcge30uCisgICAgICAgICogcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SW50bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKTogQWRkZWQgQ29sbGF0b3IsIE51
bWJlckZvcm1hdCwgYW5kIERhdGVUaW1lRm9ybWF0IHByb3BlcnRpZXMgKDguMSkuCisgICAgICAg
IChKU0M6OkludGxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE9iamVjdC5oOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0Ojpjb2xsYXRvckNvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6Y29sbGF0b3JQcm90b3R5cGUpOgorICAgICAg
ICAoSlNDOjpJbnRsT2JqZWN0Ojpjb2xsYXRvclN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6Oklu
dGxPYmplY3Q6Om51bWJlckZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bE9i
amVjdDo6bnVtYmVyRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6
bnVtYmVyRm9ybWF0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6ZGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmRhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6ZGF0ZVRpbWVGb3Jt
YXRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisKIDIwMTUtMDctMTMgIEJhc2lsZSBD
bGVtZW50ICA8YmFzaWxlX2NsZW1lbnRAYXBwbGUuY29tPgogCiAgICAgICAgIE9iamVjdCBjeWNs
ZXMgc2hvdWxkIG5vdCBwcmV2ZW50IGFsbG9jYXRpb24gZWxpbWluYXRpb24vc2lua2luZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDk4MDJmNDY2ZThiZGE3NDY5MGY1Mzg3OTUzYjQ2ZjUzOGZjMGZhMWYuLmIzYmRm
ZDljZjc2OWMyYTBiMDdkMjIwMmE3YzRmNDNmYThmMjUxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxNS0wNy0xMyAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21h
aWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNpYyB0eXBlcyBmb3IgRUNNQVNjcmlwdCBJ
bnRlcm5hdGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0NjkyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6
IEVuYWJsZWQgSU5UTC4KKwogMjAxNS0wNy0xMyAgTWF0dCBSYWpjYSAgPG1yYWpjYUBhcHBsZS5j
b20+CiAKICAgICAgICAgTWVkaWEgU2Vzc2lvbjogYWRkIHBsdW1iaW5nIGZvciBkZWxpdmVyaW5n
IHN0YXJ0L2VuZC1vZi1pbnRlcnJ1cHRpb24gZXZlbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNzMw
ZTJmY2E1YWNkMmUyYmI5ZGVlZTViNDdhODI3NjMxNjQ5NGE0NC4uNzVlNWFmNDI3Yzg3ZjJlYzE1
Mzg2NmUxMTRmOTgwY2JiZjA2MTExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDE1LTA3LTEzICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+
CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHR5cGVzIGZvciBFQ01BU2NyaXB0IEludGVybmF0
aW9uYWxpemF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ2OTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzogRW5hYmxl
ZCBJTlRMLgorCiAyMDE1LTA3LTExICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEluc3BlY3RvciBzaG91bGQgYmUgYWJsZSB0
byBiZSBkb2NrZWQgdG8gdGhlIGJvdHRvbSBvZiBhIG5hcnJvdyB3aW5kb3cKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBiYjA2OTI3M2EwYTk5ODc0MjYyNzliNmQwNTc5OGQxMGJkNjNkODM0Li45NjQwNjc1Y2Q3YWEy
ZDdhMWJmM2JiMDU1YzhlMDk3YzhjYjdiYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTUtMDctMTMgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3JpcHQgSW50ZXJuYXRp
b25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOiBFbmFibGVk
IElOVEwuCisKIDIwMTUtMDctMTMgIE1hdHQgUmFqY2EgIDxtcmFqY2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIE1lZGlhIFNlc3Npb246IGFkZCBwbHVtYmluZyBmb3IgZGVsaXZlcmluZyBzdGFydC9l
bmQtb2YtaW50ZXJydXB0aW9uIGV2ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDhhZTg2NjVhODMxY2MwNDMzNzgyNjdlYjgxYzQ4Yjc0NTIxYjczN2UuLmY5MTI2OTBl
NjdhNmZmYjI1YmNiODQyNTYzZTg3Y2Y3YWRlNGFmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTQ3NSw2ICs0NzUsMTUgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJ
TUVfU09VUkNFUwogICAgIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKICAgICBydW50
aW1lL0ludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3BwCiAgICAgcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmNwcAorICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yLmNwcAorICAgIHJ1bnRpbWUvSW50bENv
bGxhdG9yQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUu
Y3BwCisgICAgcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisgICAgcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisgICAg
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSW50bE9iamVjdC5jcHAKICAg
ICBydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAKICAgICBydW50aW1lL0l0ZXJhdG9yUHJv
dG90eXBlLmNwcApAQCAtNjE5LDYgKzYyOCwxMiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfTFVUX0ZJ
TEVTCiAgICAgcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9EYXRlUHJv
dG90eXBlLmNwcAogICAgIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9J
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0ludGxDb2xsYXRvckZvcm1h
dFByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
LmNwcAorICAgIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorICAgIHJ1
bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUu
Y3BwCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKICAgICBydW50aW1lL0pTT05PYmpl
Y3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZmU1NmJjMGIxYmZkNjBjNTFhMDU3
ZTk1NTRkMTllZDQ4NzRmNGY0Mi4uZDIyMDkyYTdiOWQzYzNlMGZhYTU2ZDg4M2NjNGEwYTQ0ZDJm
ZjdjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMTE2LDcgKzExNiw3IEBAIEVOQUJM
RV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTAwMCA9IDsKIEVOQUJMRV9XSVJF
TEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTEwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQ7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEy
MDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogCi1FTkFCTEVfSU5UTCA9IDsK
K0VOQUJMRV9JTlRMID0gRU5BQkxFX0lOVEw7CiAKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNb
c2RrPWlwaG9uZSpdID0gJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVS
TkFMX1NES18kKFVTRV9JTlRFUk5BTF9TREspKTsKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNf
aW9zX1dJVEhfSU5URVJOQUxfU0RLX1lFUyA9IEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDY3N2Y0Y2VlNjkz
NTYwNDU5ZTgwNzg3YTYwODY1NjgyMmE1ZjQ3NWEuLmU0NjU3NzdhNzliZWQ1NjNkMjY4N2ZjZDI4
Y2ZkOWFkYmIzOWRmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC00MSw2ICs0MSwxMiBAQCBhbGwgOiBcCiAgICAgRGF0ZUNvbnN0cnVjdG9yLmx1dC5o
IFwKICAgICBEYXRlUHJvdG90eXBlLmx1dC5oIFwKICAgICBFcnJvclByb3RvdHlwZS5sdXQuaCBc
CisgICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggXAorICAgIEludGxDb2xsYXRvclBy
b3RvdHlwZS5sdXQuaCBcCisgICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0Lmgg
XAorICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCBcCisgICAgSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
Lmx1dC5oIFwKICAgICBKU0RhdGFWaWV3UHJvdG90eXBlLmx1dC5oIFwKICAgICBKU09OT2JqZWN0
Lmx1dC5oIFwKICAgICBKU0dsb2JhbE9iamVjdC5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDY3ZThhMjkyNDA1ZjBhYzlmZjgzOGNjOWE3YjI4ZmNjNzMwMTgzNzIuLjEx
OTNiZWQyMjI0Y2I5ZmY1NGNmMGJmZGE2Y2E1OGI3MzUyZGIyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMTcyLDEzICsxMTcyLDM3IEBACiAJCTlFNzI5NDBCMTkwRjA1MTQw
MDFBOTFCNSAvKiBCdW5kbGVQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5RTcyOTQwQTE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oICov
OyB9OwogCQk5RUE1QzdBMTE5MEYwODQyMDA1MDhFQkUgLyogQnVuZGxlUGF0aC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlFNzI5NDA5MTkwRjAzMDYw
MDFBOTFCNSAvKiBCdW5kbGVQYXRoLm1tICovOyB9OwogCQk5RUE1QzdBMjE5MEYwODg3MDA1MDhF
QkUgLyogSW5pdGlhbGl6ZUxMVk1NYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUVBNUM3QTAxOTBGMDVEMjAwNTA4RUJFIC8qIEluaXRpYWxpemVM
TFZNTWFjLmNwcCAqLzsgfTsKKwkJQTEyNTg0NkUxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExMjU4NDZDMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUExMjU4NDZGMUI0NUEzNjAwMENDN0Y2QyAv
KiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEyNTg0NkQxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggKi87IH07CiAJCUExMkJCRkYyMUIwNDRBOEIwMDY2
NEI2OSAvKiBJbnRsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTJCQkZGMTFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9iamVjdC5oICovOyB9
OwogCQlBMTJCQkZGNDFCMDQ0QTk4MDA2NjRCNjkgLyogSW50bE9iamVjdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTJCQkZGMzFCMDQ0QTk4MDA2
NjRCNjkgLyogSW50bE9iamVjdC5jcHAgKi87IH07CisJCUExNTg3RDZEMUI0REMxNDEwMEQ2OTg0
OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTE1ODdENjcxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGlt
ZUZvcm1hdC5jcHAgKi87IH07CisJCUExNTg3RDZFMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0
ZVRpbWVGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExNTg3RDY4MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuaCAqLzsg
fTsKKwkJQTE1ODdENkYxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExNTg3RDY5MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
ci5jcHAgKi87IH07CisJCUExNTg3RDcwMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTE1ODdENkExQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yLmggKi87IH07CisJCUExNTg3RDcxMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTE1ODdENkIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZS5jcHAgKi87IH07CisJCUExNTg3RDcyMUI0REMxNDEwMEQ2OTg0OSAvKiBJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExNTg3RDZDMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGUuaCAqLzsgfTsKKwkJQTE1ODdENzUxQjREQzFDNjAwRDY5ODQ5IC8q
IEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1ODdENzMxQjREQzFDNjAwRDY5ODQ5IC8qIElu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oICovOyB9OworCQlBMTU4N0Q3NjFCNERD
MUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1ODdENzQxQjREQzFDNjAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCAqLzsgfTsKIAkJQTE3
MTJCM0IxMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjNBMTFDN0IyMTIwMDdBNTMxNSAv
KiBSZWdFeHBDYWNoZS5jcHAgKi87IH07CiAJCUExNzEyQjNGMTFDN0IyMjgwMDdBNTMxNSAvKiBS
ZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE3MTJCNDExMUM3QjIzNTAw
N0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUExODE5M0UzMUI0
RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODE5M0UxMUI0RTBDREIwMEZD
MTAyOSAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJQTE4MTkzRTQx
QjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODE5M0UyMUI0RTBDREIwMEZD
MTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggKi87IH07CiAJCUExQTAwOUMwMTgz
MUEyMkQwMENGODcxMSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjQwOTIzQzE1NkVFRDNCMDA1NjZDQjIgLyog
TWFjcm9Bc3NlbWJsZXJBUk02NC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY0MDky
M0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTFCOUUyMzkxQjRFMEQ2NzAwQkM3RkVE
IC8qIEludGxDb2xsYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUI5RTIzMzFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmNwcCAq
LzsgfTsKKwkJQTFCOUUyM0ExQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCOUUyMzQxQjRFMEQ2
NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5oICovOyB9OworCQlBMUI5RTIzQjFCNEUwRDY3MDBC
QzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCOUUyMzUxQjRFMEQ2NzAwQkM3RkVEIC8qIElu
dGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJQTFCOUUyM0MxQjRFMEQ2NzAwQkM3
RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5RTIzNjFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENv
bGxhdG9yQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTFCOUUyM0QxQjRFMEQ2NzAwQkM3RkVEIC8q
IEludGxDb2xsYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMUI5RTIzNzFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9y
UHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJQTFCOUUyM0UxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxD
b2xsYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFCOUUyMzgxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlw
ZS5oICovOyB9OworCQlBMUQ3OTJGQzFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1h
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3
OTJGNjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5jcHAgKi87IH07CisJCUEx
RDc5MkZEMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3OTJGNzFCNDM4NjRCMDA0NTE2
RjUgLyogSW50bE51bWJlckZvcm1hdC5oICovOyB9OworCQlBMUQ3OTJGRTFCNDM4NjRCMDA0NTE2
RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkY4MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwICovOyB9OworCQlBMUQ3OTJGRjFCNDM4NjRC
MDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3OTJGOTFCNDM4NjRCMDA0NTE2RjUg
LyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggKi87IH07CisJCUExRDc5MzAwMUI0Mzg2
NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkZBMUI0Mzg2NEIwMDQ1MTZG
NSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJQTFENzkzMDExQjQz
ODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkZCMUI0Mzg2NEIwMDQ1MTZG
NSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggKi87IH07CiAJCUE1MDNGQTE5MTg4RTBG
QjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTEzMTg4RTBGQUYwMDExMEYxNCAvKiBK
YXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLzsgfTsKIAkJQTUwM0ZBMUExODhFMEZCMDAwMTEwRjE0
IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE0MTg4RTBGQUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2Fs
bEZyYW1lLmggKi87IH07CiAJCUE1MDNGQTFCMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3Jp
cHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTUwM0ZBMTUxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHAgKi87IH07CkBAIC0yOTQ3LDExICsyOTcxLDM1IEBACiAJCTlFNzI5NDA5MTkwRjAzMDYwMDFB
OTFCNSAvKiBCdW5kbGVQYXRoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQnVuZGxlUGF0aC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUU3Mjk0
MEExOTBGMDUxNDAwMUE5MUI1IC8qIEJ1bmRsZVBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQnVuZGxlUGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
RUE1QzdBMDE5MEYwNUQyMDA1MDhFQkUgLyogSW5pdGlhbGl6ZUxMVk1NYWMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSW5pdGlhbGl6ZUxMVk1NYWMuY3BwOyBwYXRo
ID0gbGx2bS9Jbml0aWFsaXplTExWTU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUExMjU4NDZDMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTEyNTg0
NkQxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUu
bHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMkJCRkYxMUIwNDRBOEIwMDY2
NEI2OSAvKiBJbnRsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dGxPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEyQkJGRjMxQjA0NEE5
ODAwNjY0QjY5IC8qIEludGxPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW50bE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEx
NTg3RDY3MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE1ODdENjgxQjREQzE0MTAwRDY5ODQ5IC8qIElu
dGxEYXRlVGltZUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRs
RGF0ZVRpbWVGb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE1ODdENjkx
QjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE1ODdENkExQjREQzE0
MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNTg3RDZCMUI0REMxNDEwMEQ2OTg0OSAvKiBJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTE1ODdENkMxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTE1ODdENzMxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
Lmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE1ODdE
NzQxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTcxMkIzQTExQzdCMjEy
MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVnRXhwQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTE4MTkzRTExQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvckNvbnN0cnVj
dG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsQ29sbGF0b3JD
b25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE4MTkzRTIx
QjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUI5RTIzMzFCNEUwRDY3MDBCQzdGRUQgLyogSW50
bENvbGxhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxD
b2xsYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExQjlFMjM0MUI0RTBE
NjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW50bENvbGxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExQjlF
MjM1MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExQjlFMjM2MUI0RTBENjcwMEJDN0ZF
RCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBMUI5RTIzNzFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxDb2xsYXRvclBy
b3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExQjlFMjM4MUI0RTBE
NjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW50bENvbGxhdG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUExRDc5MkY2MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxOdW1iZXJGb3Jt
YXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUQ3OTJGNzFCNDM4NjRCMDA0
NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnRsTnVtYmVyRm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEx
RDc5MkY4MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFENzkyRjkxQjQz
ODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFENzkyRkExQjQzODY0QjAwNDUxNkY1IC8qIElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUExRDc5MkZCMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwM0ZBMTMx
ODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSmF2YVNjcmlwdENhbGxGcmFtZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDNGQTE0MTg4RTBGQUYwMDExMEYxNCAvKiBKYXZhU2Ny
aXB0Q2FsbEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFTY3Jp
cHRDYWxsRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwM0ZBMTUxODhF
MEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI0Niw2ICs0Mjk0LDEyIEBACiAJCQkJQTUzMjQzODQx
ODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaCAqLywKIAkJ
CQlBNTMyNDM4NTE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmNw
cCAqLywKIAkJCQlBNTMyNDM4NjE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9yUHJvdG9jb2xP
YmplY3RzLmggKi8sCisJCQkJQTE4MTkzRTExQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRv
ckNvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUExODE5M0UyMUI0RTBDREIwMEZDMTAyOSAvKiBJ
bnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggKi8sCisJCQkJQTE1ODdENzMxQjREQzFDNjAwRDY5
ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUExNTg3
RDc0MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0Lmgg
Ki8sCisJCQkJQTEyNTg0NkMxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQlBMTI1ODQ2RDFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMz
OUIgLyogSlNDQnVpbHRpbnMuY3BwICovLAogCQkJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5QiAv
KiBKU0NCdWlsdGlucy5oICovLAogCQkJCUJDODdDREI4MTA3MTJBQ0EwMDA2MTRDRiAvKiBKU09O
T2JqZWN0Lmx1dC5oICovLApAQCAtNDQ3Miw2ICs0NTI2LDI0IEBACiAJCQkJQTc4ODUzRjgxNzk3
MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCAqLywKIAkJCQlCQzlCQjk1
QjBFMTk2ODA2MDBERjg4NTUgLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgKi8sCiAJCQkJQkMxMTY2
N0EwRTE5OUMwNTAwODA2NkREIC8qIEludGVybmFsRnVuY3Rpb24uaCAqLywKKwkJCQlBMUI5RTIz
MzFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmNwcCAqLywKKwkJCQlBMUI5RTIzNDFC
NEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmggKi8sCisJCQkJQTFCOUUyMzUxQjRFMEQ2
NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBMUI5RTIz
NjFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCAqLywKKwkJCQlB
MUI5RTIzNzFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCAqLywK
KwkJCQlBMUI5RTIzODFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmgg
Ki8sCisJCQkJQTE1ODdENjcxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5j
cHAgKi8sCisJCQkJQTE1ODdENjgxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1h
dC5oICovLAorCQkJCUExNTg3RDY5MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQTE1ODdENkExQjREQzE0MTAwRDY5ODQ5IC8qIElu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggKi8sCisJCQkJQTE1ODdENkIxQjREQzE0MTAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8sCisJCQkJQTE1ODdE
NkMxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oICovLAor
CQkJCUExRDc5MkY2MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmNwcCAqLywK
KwkJCQlBMUQ3OTJGNzFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5oICovLAor
CQkJCUExRDc5MkY4MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IuY3BwICovLAorCQkJCUExRDc5MkY5MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IuaCAqLywKKwkJCQlBMUQ3OTJGQTFCNDM4NjRCMDA0NTE2RjUgLyogSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgKi8sCisJCQkJQTFENzkyRkIxQjQzODY0QjAwNDUx
NkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCAqLywKIAkJCQlBMTJCQkZGMzFCMDQ0
QTk4MDA2NjRCNjkgLyogSW50bE9iamVjdC5jcHAgKi8sCiAJCQkJQTEyQkJGRjExQjA0NEE4QjAw
NjY0QjY5IC8qIEludGxPYmplY3QuaCAqLywKIAkJCQk4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEg
LyogSW50cmluc2ljLmggKi8sCkBAIC01NjUyLDYgKzU3MjQsNyBAQAogCQkJCTE0N0I4M0FDMEU2
REI4QzkwMDQ3NzVBNCAvKiBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkExMTEyNDYxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzRGNEI2RjUxQTA1Qzk4NDAwNUNBQjc2IC8qIGdlbmVyYXRl
X29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJ
CQlBMUQ3OTJGRjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5zcGVj
dG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUJDREU3MThFRjI5NDIwMDAwMjA5NiAv
KiBHQ0xvZ2dpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFN0JBNjEwMUExQTdDRUMwMEYxRjdC
NCAvKiBIZWFwVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNTcwMSw2ICs1Nzc0LDcgQEAK
IAkJCQkwRjI0RTU0MTE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNzg0QTI2MTExRDE2NjIyMDA1Nzc2QUMgLyogQVNUQnVpbGRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODY2NzM5RDIxM0JGREU3MTAwMjNEODdDIC8qIEJpZ0ludGVnZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCUExMjU4NDZFMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFQzBF
MTZGNUNEMDBCMzQ0NjAgLyogQm9vbGVhbk9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVB
MDg2MjAxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1RDJFNjY1MTk1RTE3NDAwMEE1MThFNyAvKiBKU0NvbnRleHRSZWZJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8sCkBAIC01NzEwLDYgKzU3ODQsNyBAQAogCQkJCTBGQjdGMzk3MTVFRDhFNDYwMEYx
NjdCMiAvKiBCdXR0ZXJmbHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk4MTVFRDhFNDYw
MEYxNjdCMiAvKiBCdXR0ZXJmbHlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2MkQyRDM5
MDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTFCOUUyM0ExQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzJGQ0FFMTExN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2RlQmFzaWNCbG9jay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2Rl
Q29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzIzMEVEMUNFMzMwMEYxRjY4
MSAvKiBCeXRlY29kZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC01NzkwLDExICs1ODY1
LDEzIEBACiAJCQkJQTVFQTcwRTgxOUY1QjEwMTAwOThGNUVDIC8qIEF1Z21lbnRhYmxlSW5zcGVj
dG9yQ29udHJvbGxlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDMxN0EwQkFB
ODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3MDREOTA0MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFCOUUyM0MxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxD
b2xsYXRvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYyMDE3NzE0M0ZDRDNG
MDA2OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGMDU0
RkExQUMzNUI0NDAwRTVCRTU3IC8qIEV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6ei5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY2NkUxNkIxNERGM0YxNjAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjE4MTZEMDJFQjIwMDU1QTVEQiAvKiBERkdBbGxv
Y2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mzc4MTBDMTc5OUVBMkUwMDgxNzUzMyAvKiBE
RkdBbmFseXNpcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFCOUUyM0UxQjRFMEQ2NzAwQkM3RkVE
IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNDYx
NTM0Q0JBRjAwMEY5NDU2IC8qIERGR0FyZ3VtZW50UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1QzNBMUE2MThDMDQ5MDIwMEM5NTkzQSAvKiBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDg1MzIyMTg3NzUwNTYwMDgzQjY4NyAvKiBERkdB
cml0aE1vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtNTg1OSw2ICs1OTM2LDcgQEAKIAkJCQk4NkVD
OURDQzEzMjhERjgyMDAyQjJBRDcgLyogREZHSklUQ29tcGlsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3OEE5Nzc5MTc5NzM4QjgwMDlERjc0NCAvKiBERkdKSVRGaW5hbGl6ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQzk3RjQwMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdKdW1wUmVwbGFjZW1l
bnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMjU4NDZGMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTczQTUzNUIx
Nzk5Q0Q1RDAwMTcwQzE5IC8qIERGR0xhenlKU1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjJCOUNFOTE5RDBCQTdEMDBCMUQxQjUgLyogREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEOUEyOTgxN0EwQkM3NDAwRUUyNjE4IC8qIERGR0xJQ01Q
aGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC01OTg4LDYgKzYwNjYsNyBAQAogCQkJCTBGNkIxQ0I2
MTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExKU0NhbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOEYy
Qjk2MTcyRTA0QTMwMDdEQkRBNSAvKiBGVExMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNF
RkFFMDE4MDczOEMwMDA0NzJDRTQgLyogRlRMTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CUExNTg3RDcwMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMTAxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTExv
d2VyREZHVG9MTFZNLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUQwMjE3QTBCOTA0MDA3NzNB
RDggLyogRlRMTG93ZXJlZE5vZGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMUMx
N0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTE9TUkVudHJ5LmggaW4gSGVhZGVycyAqLywKQEAgLTYwNTUs
NiArNjEzNCw3IEBACiAJCQkJQzI1RjhCQ0UxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFs
U3dlZXBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTkxNUVEOEU0NjAwRjE2N0IyIC8q
IEluZGV4aW5nSGVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QTE1RUQ4RTQ2MDBG
MTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTU4
N0Q3NjFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUIxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5n
VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDRUZBQjAxODA1Q0E2RDAwNDcyQ0U0IC8qIElu
aXRpYWxpemVMTFZNLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNFRkFDQzE4MDVFNzU1MDA0NzJD
RTQgLyogSW5pdGlhbGl6ZUxMVk1QT1NJWC5oIGluIEhlYWRlcnMgKi8sCkBAIC02MTA5LDYgKzYx
ODksNyBAQAogCQkJCTBGQUY3RUZFMTY1QkE5MUYwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNl
cHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNEUxRjE4MTI0QUNFMDA5QjZCNEQgLyog
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUExRDc5MzAxMUI0
Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NkNDODVBMTBFRTc5QTQ3MDAyODg2ODIgLyogSklUSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyNEU1NEQxN0VFMjc0OTAwQUJCMjE3IC8qIEpJVE9wZXJhdGlvbnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNzY2RDMxMTVBQTgxMTIwMDhGMzYzRSAvKiBKSVRTdHViUm91
dGluZS5oIGluIEhlYWRlcnMgKi8sCkBAIC02MjA5LDYgKzYyOTAsNyBAQAogCQkJCTdDMTg0RTIz
MTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0MwMDhDREIxODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlzZURlZmVycmVkLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3QzE4NEUxRjE3QkVFMjJFMDA3Q0I2M0EgLyogSlNQcm9taXNlUHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTgxOTNFNDFCNEUwQ0RCMDBGQzEwMjkgLyog
SW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYyNTUzRDIx
NjEzNkUxQTAwOUYxN0QwIC8qIEpTUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5MjhGRjND
MThBQzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxOEM0MjYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTUmV0YWluUHRyLmggaW4gSGVhZGVycyAqLywK
QEAgLTYyMjAsNiArNjMwMiw3IEBACiAJCQkJQkMxOEM0NUUwRTE2RjVDRDAwQjM0NDYwIC8qIEpT
U3RhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QzFFQUYwMTc5ODdBQjYwMDI5OURCMiAvKiBK
U1N0YWNrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjcwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTU3RyaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTU4N0Q3NTFCNERDMUM2MDBE
Njk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NkU4NTUzOTExMUI5OTY4MDAxQUY1MUUgLyogSlNTdHJpbmdCdWlsZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyNjAwQjVBNzE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2lu
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1N0
cmluZ1JlZi5oIGluIEhlYWRlcnMgKi8sCkBAIC02MzIyLDYgKzY0MDUsNyBAQAogCQkJCUJDMDJF
OTExMEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzAyRTkxMzBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5Q0MwQjYzMThCRTk5NTAwMDZDRUJDQyAvKiBDb2Rl
R2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJQTE4MTkzRTMxQjRF
MENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZGQjkyMjAxNkQwMzNCNzAwNTVBNURCIC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTcwRUNBNjA5MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJl
Z2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQzRjBFMTZGNUNEMDBCMzQ0NjAg
LyogTm9kZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNjQ0NSw2ICs2NTI5LDcgQEAKIAkJCQlBNzI5
OURBNjE3RDEyODU4MDA1RjVGRjkgLyogU2V0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3OTBERDZFMTgyRjQ5OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTcyOTlEQTIxN0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8qIEludGxO
dW1iZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2QUU2NEFBMTM1RTVFMUMwMDk2MzAx
MiAvKiBTSDRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjhCREVCMUFENENGNzEw
MERGRTg4NCAvKiBJbmZlcnJlZFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjcwNTE3
QjZCNUFCMDBBN0FFM0YgLyogU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtNjUxOSw2ICs2NjA0LDcgQEAKIAkJCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkg
LyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCNjAxODIx
NjM5RkQyQTAwMzcyQkEzIC8qIFVubGlua2VkQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJFODkyQzE2RDAyOEFEMDA5RTRGRDIgLyogVW51c2VkUG9pbnRlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTE1ODdENkUxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NjNCMzgxM0ZDNkZFOTAwMDJEOUIyIC8qIFZhbHVlUHJv
ZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0MjZBNDgxNDYwQ0JCMzAwMTMxRjhGIC8qIFZh
bHVlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUM1RTVGMThFMzVGNUUwMEQ0MzFD
MyAvKiBGVExEV0FSRlJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTY1NDYsNiArNjYzMiw3
IEBACiAJCQkJMkE0RUM5MEMxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzJCNkQ3NTMxOEEzMzc5MzAwNEE5MzAxIC8qIFdyaXRlQmFy
cmllcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzgxNTBBMTQwNDNCRjUwMENGQTYw
MyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTU4N0Q3MjFC
NERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTg0MEUyQTE4N0NBNzU5MDA4NDNCMTAgLyogeHhkLnBsIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYzQTFCRkExQTlFQ0I3RDAwMERFMDFBIC8qIERGR1B1dFN0YWNrU2lu
a2luZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTcxMjgsNiArNzIxNSw3IEBACiAJCQkJMEZF
QTBBMzExNzBENDBCRjAwQkI3MjJDIC8qIERGR0NvbW1vbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYzOEIwMTcxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uS2V5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMzhCMDE5MTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21waWxh
dGlvbk1vZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFCOUUyM0IxQjRFMEQ2NzAwQkM3RkVE
IC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0Iz
QTFBMTUzRTY4RjIwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkJFMEY3MjE2QzFEQjAzMDA4MkM1RTggLyogREZHQ1BTUmV0aHJlYWRp
bmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGNTE3QTBCOENDMDA3NzNBRDgg
LyogREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTcx
NzEsNiArNzI1OSw3IEBACiAJCQkJQTdEODlDRkIxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0xpdmVu
ZXNzQW5hbHlzaXNQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkYwRjE5OTE2QjcyOUY2
MDA1REY5NUIgLyogREZHTG9uZ0xpdmVkU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc2
N0I1QjUxN0EwQjk2NTAwNjNEOTQwIC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUExQjlFMjNEMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29s
bGF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQkRDNEQxNTIyODE4NjAw
Q0Q4OTEwIC8qIERGR01pbmlmaWVkTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzM3ODEw
RDE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRjBGMTlDMTZCNzJBMDMwMDVERjk1QiAvKiBERkdOb2RlLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtNzMzNCw2ICs3NDIzLDcgQEAKIAkJCQkyQUY3MzgyQzE4QkJCRjkyMDA4QTVBMzcgLyog
U3RydWN0dXJlSURUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUZEMDA4MTE4OUIxOTFB
MDA2MzMyMzEgLyogSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE1N0QyM0U1MTg5MENFQkYwMDMxQzdGQSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUExNTg3RDZGMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTMyNDM4NzE4NTY4
MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTcwOUZCODY5MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0Q29uc3RydWN0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUzMjQzODkxODU2ODMzNTAwMkVENjkyIC8qIEluc3Bl
Y3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03MzU3LDYgKzc0
NDcsNyBAQAogCQkJCUJDREQ1MUVCMEZCOERGNzQwMDRBOEJEQyAvKiBKSVRPcGNvZGVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE3MTIzNkU1MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVz
MzJfNjQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2RTg0NUExOTAzMEJFRjAwNTYyNzQxIC8q
IERGR1ZhcmlhYmxlQWNjZXNzRGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMTU4N0Q2RDFC
NERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMjRFNTRDMTdFRTI3NDkwMEFCQjIxNyAvKiBKSVRPcGVyYXRpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg2Q0M4NUM0MEVFN0E4OTQwMDI4ODY4MiAvKiBKSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0MxRThFNDExMkU3MkVGMDBBMzdGOTggLyogSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc0ODQsNiArNzU3NSw3
IEBACiAJCQkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRCNzIzQjIxMkQ3REE0NjAwM0JENUVEIC8qIE1hY2hp
bmVTdGFja01hcmtlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVCM0VDRjE2MjM3RjZDMDBB
QjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFENzkzMDAx
QjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJN
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MjkwMDlDMTc5NzZDNjAwMDMxNzI5OCAvKiBNYWNy
b0Fzc2VtYmxlckFSTXY3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1M0NFMDg1MThCQzFBNTYw
MEJFREY3NiAvKiBDb25zb2xlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzU2Myw2
ICs3NjU1LDcgQEAKIAkJCQlBNUJBMTVFOTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3RlSW5zcGVj
dG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkFERkEyNjMxOEVGMzU0MDAwNEY5RkNDIC8qIEdD
TG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTk0NTU4RjE4MjQ1RUZEMDBDQzM4NDMg
LyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUQ3
OTJGRTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE1QkExNUVDMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE1QkExNUVF
MTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYyNEU1NTAxN0VFMjc0OTAwQUJCMjE3IC8qIFJlcGF0Y2guY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC03NTcwLDYgKzc2NjMsNyBAQAogCQkJCTBGNzcwMDkyMTQwMkZGM0Mw
MDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyOUQ4
ODUwRUQyMUMzRDAwQjg5NjE5IC8qIFNhbXBsaW5nVG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3MEVDMEVDNjFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQTFCOUUyMzkxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xs
YXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUZEMDA2NzE4OUFGRTlDMDA2MzMyMzEgLyog
U2NyaXB0QXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1RkQwMDZEMTg5QjAwQUEw
MDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwNDM5
NkQxQjAzREMwQjAwOTU5OEI3IC8qIERGR0NvbWJpbmVkTGl2ZW5lc3MuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC03NjE2LDYgKzc3MTAsOCBAQAogCQkJCTBGQTJDMTdCMTdEN0NGODQwMDlEMDE1RiAv
KiBUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTczODY1NTUxMTg2OTdC
NDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJC
NjcwNzE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTFENzkyRkMxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTE1ODdENzExQjREQzE0MTAwRDY5ODQ5IC8qIEludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjcwQTE3
QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTJDOTUyQjkxOUEyOEExQzAwNjlCMzg2IC8qIFR5cGVQcm9maWxlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkY0Mjc0QTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2LmMgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCmluZGV4IDQxYjk0ZjFiZjQ3YmZjNjZkODc2NDUwYzAxMzAxZTU1MjFmZjk1NmQuLjEyMzJl
YTc1NjY3MTQ3ZDgzNTBiYmViYjlmMzcyNmRmMGJjNWM4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMzMsNyArMzMsOSBA
QAogICAgIG1hY3JvKEFycmF5SXRlcmF0b3IpIFwKICAgICBtYWNybyhCWVRFU19QRVJfRUxFTUVO
VCkgXAogICAgIG1hY3JvKEJvb2xlYW4pIFwKKyAgICBtYWNybyhDb2xsYXRvcikgXAogICAgIG1h
Y3JvKERhdGUpIFwKKyAgICBtYWNybyhEYXRlVGltZUZvcm1hdCkgXAogICAgIG1hY3JvKEVycm9y
KSBcCiAgICAgbWFjcm8oRXZhbEVycm9yKSBcCiAgICAgbWFjcm8oRnVuY3Rpb24pIFwKQEAgLTQ1
LDYgKzQ3LDcgQEAKICAgICBtYWNybyhNYXRoKSBcCiAgICAgbWFjcm8oTmFOKSBcCiAgICAgbWFj
cm8oTnVtYmVyKSBcCisgICAgbWFjcm8oTnVtYmVyRm9ybWF0KSBcCiAgICAgbWFjcm8oT2JqZWN0
KSBcCiAgICAgbWFjcm8oUHJvbWlzZSkgXAogICAgIG1hY3JvKFJhbmdlRXJyb3IpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCmluZGV4
IGQ2MzI5ZmRmMWIwMjUwZDc4MjRjOGM4YmQ3MGRkNjg3MDQ3MmI0ZmMuLmVlNjU2YTMwOTc0ZTNl
YzVkYjEwNGYxNmM1MzRkNDI2YjJiZTg1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcApAQCAtNTMsNyArNTMsNiBAQCB1c2luZyBu
YW1lc3BhY2UgV1RGOwogbmFtZXNwYWNlIEpTQyB7CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVBhcnNlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlTm93KEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
VVRDKEV4ZWNTdGF0ZSopOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVDb25zdHJ1Y3Rvci5oCmluZGV4IDA1NGY1NzFkNTc5ZThjZTRmMzRiNTQwOTE3YjhkMDI4
YjUwZGZiOWIuLmNkYWM5N2QzMWJhMzZhOWMyMmVhYzAyNDhhZmM2ZjUyMTJiZjc5MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCkBAIC01
OSw2ICs1OSw4IEBAIHByaXZhdGU6CiAKIEpTT2JqZWN0KiBjb25zdHJ1Y3REYXRlKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYpOwogCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVOb3coRXhlY1N0YXRlKik7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CiAjZW5kaWYgLy8gRGF0ZUNvbnN0cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyMjlmZjJlNzhmMTM4NGFjYzg0
MTY5NTJlZTgwNjVlMWIwZDRiNDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwu
Y29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bENvbGxh
dG9yLmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVk
ZSAiSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisj
aW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxp
bmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY29uc3QgQ2xhc3NJbmZvIEludGxDb2xsYXRvcjo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJh
c2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsQ29sbGF0b3IpIH07CisKK0lu
dGxDb2xsYXRvciogSW50bENvbGxhdG9yOjpjcmVhdGUoVk0mIHZtLCBJbnRsQ29sbGF0b3JDb25z
dHJ1Y3RvciogY29uc3RydWN0b3IpCit7CisgICAgSW50bENvbGxhdG9yKiBmb3JtYXQgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsQ29sbGF0b3I+KHZtLmhlYXApKSBJbnRsQ29sbGF0
b3Iodm0sIGNvbnN0cnVjdG9yLT5jb2xsYXRvclN0cnVjdHVyZSgpKTsKKyAgICBmb3JtYXQtPmZp
bmlzaENyZWF0aW9uKHZtLCBjb25zdHJ1Y3Rvcik7CisgICAgcmV0dXJuIGZvcm1hdDsKK30KKwor
U3RydWN0dXJlKiBJbnRsQ29sbGF0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bENvbGxhdG9yOjpJ
bnRsQ29sbGF0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bENvbGxhdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
cikKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRz
KGluZm8oKSkpOworCisgICAgaWYgKGNvbnN0cnVjdG9yKQorICAgICAgICBtX2NvbnN0cnVjdG9y
LnNldCh2bSwgdGhpcywgY29uc3RydWN0b3IpOworfQorCit2b2lkIEludGxDb2xsYXRvcjo6ZGVz
dHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SW50bENvbGxhdG9yKj4oY2Vs
bCktPkludGxDb2xsYXRvcjo6fkludGxDb2xsYXRvcigpOworfQorCit2b2lkIEludGxDb2xsYXRv
cjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIEludGxDb2xsYXRvciogdGhpc09iamVjdCA9IGpzQ2FzdDxJbnRsQ29sbGF0b3IqPihjZWxs
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisK
KyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY29uc3RydWN0b3IpOworICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5kQ29tcGFyZSk7Cit9CisKK3ZvaWQgSW50bENvbGxhdG9y
OjpzZXRCb3VuZENvbXBhcmUoVk0mIHZtLCBKU0JvdW5kRnVuY3Rpb24qIGZvcm1hdCkKK3sKKyAg
ICBtX2JvdW5kQ29tcGFyZS5zZXQodm0sIHRoaXMsIGZvcm1hdCk7Cit9CisKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yRnVuY0NvbXBhcmUoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIC8vIDEwLjMuNCBDb2xsYXRvciBDb21wYXJlIEZ1bmN0aW9ucyAoRUNNQS00MDIg
Mi4wKQorICAgIC8vIDEuIExldCBjb2xsYXRvciBiZSB0aGUgdGhpcyB2YWx1ZS4KKyAgICBJbnRs
Q29sbGF0b3IqIGNvbGxhdG9yID0ganNEeW5hbWljQ2FzdDxJbnRsQ29sbGF0b3IqPihleGVjLT50
aGlzVmFsdWUoKSk7CisKKyAgICAvLyAyLiBBc3NlcnQ6IFR5cGUoY29sbGF0b3IpIGlzIE9iamVj
dCBhbmQgY29sbGF0b3IgaGFzIGFuIFtbaW5pdGlhbGl6ZWRDb2xsYXRvcl1dIGludGVybmFsIHNs
b3Qgd2hvc2UgdmFsdWUgaXMgdHJ1ZS4KKyAgICBpZiAoIWNvbGxhdG9yKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKworICAgIC8vIDMuIElm
IHggaXMgbm90IHByb3ZpZGVkLCBsZXQgeCBiZSB1bmRlZmluZWQuCisgICAgLy8gNC4gSWYgeSBp
cyBub3QgcHJvdmlkZWQsIGxldCB5IGJlIHVuZGVmaW5lZC4KKyAgICAvLyA1LiBMZXQgWCBiZSBU
b1N0cmluZyh4KS4KKyAgICBKU1N0cmluZyogYSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KGV4ZWMpOworICAgIC8vIDYuIFJldHVybklmQWJydXB0KFgpLgorICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKworICAgIC8vIDcuIExldCBZIGJlIFRvU3RyaW5nKHkpLgorICAgIEpTU3RyaW5nKiBiID0g
ZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyk7CisgICAgLy8gOC4gUmV0dXJuSWZBYnJ1
cHQoWSkuCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgLy8gOS4gUmV0dXJuIENvbXBhcmVT
dHJpbmdzKGNvbGxhdG9yLCBYLCBZKS4KKworICAgIC8vIDEwLjMuNCBDb21wYXJlU3RyaW5ncyBh
YnN0cmFjdCBvcGVyYXRpb24gKEVDTUEtNDAyIDIuMCkKKyAgICAvLyBUT0RPOiBJbXBsZW1lbnQg
Q29tcGFyZVN0cmluZ3MuCisKKyAgICAvLyBSZXR1cm4gc2ltcGxlIGNoZWNrIHVudGlsIHByb3Bl
cmx5IGltcGxlbWVudGVkLgorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoY29k
ZVBvaW50Q29tcGFyZShhLT52YWx1ZShleGVjKS5pbXBsKCksIGItPnZhbHVlKGV4ZWMpLmltcGwo
KSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDI4ZmY2MmQ3MGUxMWJlZGVhNmRmYTZhN2M5MmZlMWU0NjgwODA4MQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5oCkBAIC0w
LDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0
aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW50bENvbGxhdG9y
X2gKKyNkZWZpbmUgSW50bENvbGxhdG9yX2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVk
ZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIElu
dGxDb2xsYXRvckNvbnN0cnVjdG9yOworY2xhc3MgSlNCb3VuZEZ1bmN0aW9uOworCitjbGFzcyBJ
bnRsQ29sbGF0b3IgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVibGljOgorICAg
IHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBJbnRsQ29s
bGF0b3IqIGNyZWF0ZShWTSYsIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKik7CisgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RydWN0b3IuZ2V0KCk7IH0KKyAgICBK
U0JvdW5kRnVuY3Rpb24qIGJvdW5kQ29tcGFyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRDb21w
YXJlLmdldCgpOyB9CisgICAgdm9pZCBzZXRCb3VuZENvbXBhcmUoVk0mLCBKU0JvdW5kRnVuY3Rp
b24qKTsKKworcHJvdGVjdGVkOgorICAgIEludGxDb2xsYXRvcihWTSYsIFN0cnVjdHVyZSopOwor
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciopOwor
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCitwcml2YXRlOgorICAgIFdyaXRlQmFy
cmllcjxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcj4gbV9jb25zdHJ1Y3RvcjsKKyAgICBXcml0ZUJh
cnJpZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2JvdW5kQ29tcGFyZTsKK307CisgICAgCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvckZ1bmNDb21wYXJlKEV4ZWNTdGF0ZSop
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQorCisjZW5k
aWYgLy8gSW50bENvbGxhdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzBjNjEz
ZGI4ZTZjZTZlNzY2YWY1NGYwODdiYTczMjdkZGNmNTBlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCkBA
IC0wLDAgKzEsMTg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25l
ciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oIgorCisjaWYgRU5BQkxF
KElOVEwpCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxDb2xsYXRvci5oIgor
I2luY2x1ZGUgIkludGxDb2xsYXRvclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxPYmplY3Qu
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKKyNpbmNsdWRlICJMb29rdXAuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMu
aCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitT
VEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IpOworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0
b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKik7CisKK30KKwor
I2luY2x1ZGUgIkludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sICZjb2xsYXRvckNvbnN0cnVj
dG9yVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bENvbGxhdG9yQ29uc3RydWN0b3IpIH07
CisKKy8qIFNvdXJjZSBmb3IgSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmgKK0BiZWdpbiBj
b2xsYXRvckNvbnN0cnVjdG9yVGFibGUKKyAgc3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAgICAg
IEludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCitJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
ciogSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIGNvbGxhdG9yUHJvdG90eXBlLCBTdHJ1Y3R1
cmUqIGNvbGxhdG9yU3RydWN0dXJlKQoreworICAgIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxDb2xsYXRvckNvbnN0
cnVjdG9yPih2bS5oZWFwKSkgSW50bENvbGxhdG9yQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7
CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBjb2xsYXRvclByb3RvdHlwZSwg
Y29sbGF0b3JTdHJ1Y3R1cmUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0
dXJlKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsQ29sbGF0
b3JDb25zdHJ1Y3Rvcjo6SW50bENvbGxhdG9yQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSkKK3sKK30K
Kwordm9pZCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJ
bnRsQ29sbGF0b3JQcm90b3R5cGUqIGNvbGxhdG9yUHJvdG90eXBlLCBTdHJ1Y3R1cmUqIGNvbGxh
dG9yU3RydWN0dXJlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBBU0NJSUxpdGVy
YWwoIkNvbGxhdG9yIikpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGNvbGxhdG9yUHJvdG90eXBlLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVu
dW0gfCBEb250RGVsZXRlKTsKKyAgICBtX2NvbGxhdG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywg
Y29sbGF0b3JTdHJ1Y3R1cmUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdEludGxDb2xsYXRvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTAuMS4yIElu
dGwuQ29sbGF0b3IgKFtsb2NhbGVzIFssIG9wdGlvbnNdXSkgKEVDTUEtNDAyIDIuMCkKKyAgICAv
LyAxLiBJZiBOZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRoZSBhY3Rp
dmUgZnVuY3Rpb24gb2JqZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0LgorICAg
IC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBpbnZva2VkIHdoZW4gY2FsbGVkIGFzIGNvbnN0cnVj
dG9yIHNvIG5ld1RhcmdldCBpcyB0aGUgQ29sbGF0b3IgZnVuY3Rpb24uCisKKyAgICAvLyAyLiBM
ZXQgY29sbGF0b3IgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAl
Q29sbGF0b3JQcm90b3R5cGUlKS4KKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEludGxD
b2xsYXRvciogY29sbGF0b3IgPSBJbnRsQ29sbGF0b3I6OmNyZWF0ZSh2bSwganNDYXN0PEludGxD
b2xsYXRvckNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpKTsKKworICAgIC8vIDMuIFJldHVy
bklmQWJydXB0KGNvbGxhdG9yKS4KKyAgICBpZiAoIWNvbGxhdG9yKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgLy8gNC4gUmV0dXJuIEluaXRp
YWxpemVDb2xsYXRvcihjb2xsYXRvciwgbG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gSlNWYWx1
ZSBsb2NhbGVzID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgLy8gSlNWYWx1ZSBvcHRpb25zID0g
ZXhlYy0+YXJndW1lbnQoMSk7CisgICAgLy8gVE9ETzogSW5pdGlhbGl6ZUNvbGxhdG9yKGNvbGxh
dG9yLCBsb2NhbGVzLCBvcHRpb25zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29s
bGF0b3IpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsQ29sbGF0
b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDEwLjEuMiBJbnRsLkNvbGxhdG9yIChbbG9j
YWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gSWYgTmV3VGFyZ2V0
IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVj
dCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KKyAgICAvLyBGSVhNRTogU3VwcG9y
dCBOZXdUYXJnZXQgaW4gc3VwZXIoKSBjYWxscy4KKworICAgIC8vIDIuIExldCBjb2xsYXRvciBi
ZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVDb2xsYXRvclByb3Rv
dHlwZSUpLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSW50bENvbGxhdG9yKiBjb2xs
YXRvciA9IEludGxDb2xsYXRvcjo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IqPihleGVjLT5jYWxsZWUoKSkpOworCisgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQoY29s
bGF0b3IpLnN1cAorICAgIGlmICghY29sbGF0b3IpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZUNvbGxh
dG9yKGNvbGxhdG9yLCBsb2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBKU1ZhbHVlIGxvY2FsZXMg
PSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICAvLyBKU1ZhbHVlIG9wdGlvbnMgPSBleGVjLT5hcmd1
bWVudCgxKTsKKyAgICAvLyBUT0RPOiBJbml0aWFsaXplQ29sbGF0b3IoY29sbGF0b3IsIGxvY2Fs
ZXMsIG9wdGlvbnMpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvcik7Cit9
CisKK0NvbnN0cnVjdFR5cGUgSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERh
dGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1
Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEludGxDb2xsYXRvcjsKKyAgICByZXR1
cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK0NhbGxUeXBlIEludGxDb2xsYXRvckNvbnN0cnVj
dG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2Fs
bERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEludGxDb2xsYXRvcjsKKyAgICByZXR1cm4gQ2Fs
bFR5cGVIb3N0OworfQorCitib29sIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRp
Y0Z1bmN0aW9uU2xvdDxJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBjb2xsYXRvckNvbnN0cnVjdG9y
VGFibGUsIGpzQ2FzdDxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5
TmFtZSwgc2xvdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxh
dG9yQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICAvLyAxMC4yLjIgSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRMb2NhbGVzT2YobG9jYWxlcyBb
LCBvcHRpb25zXSkgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyBKU1ZhbHVlIGxvY2FsZXMgPSBleGVj
LT5hcmd1bWVudCgwKTsKKyAgICAvLyBKU1ZhbHVlIG9wdGlvbnMgPSBleGVjLT5hcmd1bWVudCgx
KTsKKworICAgIC8vIDEuIExldCByZXF1ZXN0ZWRMb2NhbGVzIGJlIENhbm9uaWNhbGl6ZUxvY2Fs
ZUxpc3QobG9jYWxlcykuCisgICAgLy8gVE9ETzogcmVxdWVzdGVkID0gQ2Fub25pY2FsaXplTG9j
YWxlTGlzdChsb2NhbGVzKQorCisgICAgLy8gMi4gUmV0dXJuSWZBYnJ1cHQocmVxdWVzdGVkTG9j
YWxlcykuCisgICAgLy8gaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgIC8vICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgLy8gMy4gUmV0dXJuIFN1
cHBvcnRlZExvY2FsZXMoJUNvbGxhdG9yJS5bW2F2YWlsYWJsZUxvY2FsZXNdXSwgcmVxdWVzdGVk
TG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gVE9ETzogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShT
dXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJsZSwgcmVxdWVzdGVkLCBvcHRpb25zKSk7CisKKyAgICAv
LyBSZXR1cm4gZW1wdHkgYXJyYXkgdW50aWwgcHJvcGVybHkgaW1wbGVtZW50ZWQuCisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhl
Yy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworICAgIEpTQXJyYXkqIHN1cHBvcnRlZExvY2Fs
ZXMgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxPYmplY3QtPmFy
cmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRl
Y2lkZWQpLCAwKTsKKyAgICBpZiAoIXN1cHBvcnRlZExvY2FsZXMpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcyk7Cit9CisgICAgCit2b2lkIEludGxD
b2xsYXRvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fY29sbGF0b3JTdHJ1Y3R1cmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIEVOQUJMRShJTlRMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFhOThmMmZh
YTI0NzliODRmNzliNzEwNzVmNWU5ODdmYWVlNzZmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgKQEAgLTAs
MCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRo
ZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRsQ29sbGF0b3JD
b25zdHJ1Y3Rvcl9oCisjZGVmaW5lIEludGxDb2xsYXRvckNvbnN0cnVjdG9yX2gKKworI2lmIEVO
QUJMRShJTlRMKQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgSW50bENvbGxhdG9yOworY2xhc3MgSW50bENvbGxhdG9yUHJvdG90eXBl
OworCitjbGFzcyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0
aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBJbnRsQ29sbGF0
b3JDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSW50bENvbGxhdG9yUHJvdG90
eXBlKiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKwor
ICAgIFN0cnVjdHVyZSogY29sbGF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NvbGxh
dG9yU3RydWN0dXJlLmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgSW50bENvbGxhdG9yUHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisKK3ByaXZhdGU6
CisgICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0
aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEm
KTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsK
KyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX2NvbGxhdG9yU3RydWN0dXJlOworfTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RJbnRsQ29sbGF0b3IoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsQ29sbGF0b3IoRXhlY1N0YXRlKik7CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsQ29s
bGF0b3JDb25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2FiMGQxOWE4NjQ0
ZGJiMWRlNDllZjQ5ZTE2YjI5YzNlOTgyZTE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcApAQCAtMCwwICsx
LDEzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRh
bGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkludGxDb2xsYXRvclByb3RvdHlwZS5oIgorCisjaWYgRU5BQkxFKElOVEwpCisKKyNp
bmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxDb2xsYXRvci5oIgorI2luY2x1ZGUgIkpT
Qm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiT2Jq
ZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50
bENvbGxhdG9yUHJvdG90eXBlKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZShFeGVjU3RhdGUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNS
ZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKik7CisKK30KKworI2luY2x1ZGUgIkludGxDb2xsYXRv
clByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJ
bnRsQ29sbGF0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZJbnRsQ29sbGF0b3I6
OnNfaW5mbywgJmNvbGxhdG9yUHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50
bENvbGxhdG9yUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxDb2xsYXRvclByb3Rv
dHlwZS5sdXQuaAorQGJlZ2luIGNvbGxhdG9yUHJvdG90eXBlVGFibGUKKyAgY29tcGFyZSAgICAg
ICAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlICAgICAgICBEb250RW51bXxB
Y2Nlc3NvcgorICByZXNvbHZlZE9wdGlvbnMgIEludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNSZXNv
bHZlZE9wdGlvbnMgIERvbnRFbnVtfEZ1bmN0aW9uIDAKK0BlbmQKKyovCisKK0ludGxDb2xsYXRv
clByb3RvdHlwZSogSW50bENvbGxhdG9yUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEludGxDb2xsYXRvclByb3Rv
dHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxhdG9yUHJv
dG90eXBlPih2bS5oZWFwKSkgSW50bENvbGxhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBvYmplY3Q7Cit9CisK
K1N0cnVjdHVyZSogSW50bENvbGxhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxD
b2xsYXRvclByb3RvdHlwZTo6SW50bENvbGxhdG9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRsQ29sbGF0b3Iodm0sIHN0cnVjdHVyZSkKK3sKK30KKwor
dm9pZCBJbnRsQ29sbGF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgbnVsbHB0cik7Cit9CisKK2Jvb2wgSW50bENvbGxh
dG9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Cit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgY29s
bGF0b3JQcm90b3R5cGVUYWJsZSwganNDYXN0PEludGxDb2xsYXRvclByb3RvdHlwZSo+KG9iamVj
dCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZShFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgLy8gMTAuMy4zIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUgKEVDTUEtNDAy
IDIuMCkKKyAgICAvLyAxLiBMZXQgY29sbGF0b3IgYmUgdGhpcyBDb2xsYXRvciBvYmplY3QuCisg
ICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4o
ZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghY29sbGF0b3IpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYykpOworCisgICAgSlNCb3VuZEZ1bmN0
aW9uKiBib3VuZENvbXBhcmUgPSBjb2xsYXRvci0+Ym91bmRDb21wYXJlKCk7CisgICAgLy8gMi4g
SWYgY29sbGF0b3IuW1tib3VuZENvbXBhcmVdXSBpcyB1bmRlZmluZWQsIHRoZW4KKyAgICBpZiAo
IWJvdW5kQ29tcGFyZSkgeworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVj
dCgpOworICAgICAgICAvLyBhLiBMZXQgRiBiZSBhIG5ldyBidWlsdC1pbiBmdW5jdGlvbiBvYmpl
Y3QgYXMgZGVmaW5lZCBpbiAxMS4zLjQuCisgICAgICAgIC8vIGIuIFRoZSB2YWx1ZSBvZiBG4oCZ
cyBsZW5ndGggcHJvcGVydHkgaXMgMi4KKyAgICAgICAgSlNGdW5jdGlvbiogdGFyZ2V0T2JqZWN0
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDIsIFN0cmluZygiY29tcGFy
ZSIpLCBJbnRsQ29sbGF0b3JGdW5jQ29tcGFyZSwgTm9JbnRyaW5zaWMpOworICAgICAgICBKU0Fy
cmF5KiBib3VuZEFyZ3MgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9i
YWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihB
cnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKKyAgICAgICAgaWYgKCFib3VuZEFyZ3MpCisgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7
CisKKyAgICAgICAgLy8gYy4gTGV0IGJjIGJlIEJvdW5kRnVuY3Rpb25DcmVhdGUoRiwgwqt0aGlz
IHZhbHVlwrspLgorICAgICAgICBib3VuZENvbXBhcmUgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIGNvbGxhdG9yLCBib3VuZEFyZ3MsIDIs
IFN0cmluZygiY29tcGFyZSIpKTsKKyAgICAgICAgLy8gZC4gU2V0IGNvbGxhdG9yLltbYm91bmRD
b21wYXJlXV0gdG8gYmMuCisgICAgICAgIGNvbGxhdG9yLT5zZXRCb3VuZENvbXBhcmUodm0sIGJv
dW5kQ29tcGFyZSk7CisgICAgfQorICAgIC8vIDMuIFJldHVybiBjb2xsYXRvci5bW2JvdW5kQ29t
cGFyZV1dLgorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYm91bmRDb21wYXJlKTsKK30KKwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVz
b2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMC4zLjUgSW50bC5Db2xs
YXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKKyAgICBJbnRs
Q29sbGF0b3IqIGNvbGxhdG9yID0ganNEeW5hbWljQ2FzdDxJbnRsQ29sbGF0b3IqPihleGVjLT50
aGlzVmFsdWUoKSk7CisgICAgaWYgKCFjb2xsYXRvcikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisKKyAgICAvLyBUaGUgZnVuY3Rpb24gcmV0
dXJucyBhIG5ldyBvYmplY3Qgd2hvc2UgcHJvcGVydGllcyBhbmQgYXR0cmlidXRlcyBhcmUgc2V0
IGFzIGlmIGNvbnN0cnVjdGVkIGJ5IGFuIG9iamVjdCBsaXRlcmFsIGFzc2lnbmluZyB0byBlYWNo
IG9mIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB0aGUgdmFsdWUgb2YgdGhlIGNvcnJlc3BvbmRp
bmcgaW50ZXJuYWwgc2xvdCBvZiB0aGlzIENvbGxhdG9yIG9iamVjdCAoc2VlIDEwLjQpOiBsb2Nh
bGUsIHVzYWdlLCBzZW5zaXRpdml0eSwgaWdub3JlUHVuY3R1YXRpb24sIGNvbGxhdGlvbiwgYXMg
d2VsbCBhcyB0aG9zZSBwcm9wZXJ0aWVzIHNob3duIGluIFRhYmxlIDEgd2hvc2Uga2V5cyBhcmUg
aW5jbHVkZWQgaW4gdGhlICVDb2xsYXRvciVbW3JlbGV2YW50RXh0ZW5zaW9uS2V5c11dIGludGVy
bmFsIHNsb3Qgb2YgdGhlIHN0YW5kYXJkIGJ1aWx0LWluIG9iamVjdCB0aGF0IGlzIHRoZSBpbml0
aWFsIHZhbHVlIG9mIEludGwuQ29sbGF0b3IuCisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGNv
bnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworCisgICAgLy8gVE9ETzogUG9wdWxhdGUgb2JqZWN0
IGZyb20gaW50ZXJuYWwgc2xvdHMuCisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9wdGlv
bnMpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJv
dG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90
b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mODE2NDI2NzllOWY1MTIxNDVjZGY3ZTAyY2NhZjQ2OTdmZWI3
Y2MxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bENvbGxhdG9yUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBJbnRsQ29sbGF0b3JQcm90b3R5cGVfaAorI2RlZmluZSBJbnRsQ29sbGF0
b3JQcm90b3R5cGVfaAorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJJbnRsQ29sbGF0
b3IuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
SW50bENvbGxhdG9yUHJvdG90eXBlIDogcHVibGljIEludGxDb2xsYXRvciB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBJbnRsQ29sbGF0b3IgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIGNyZWF0ZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERF
Q0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsK
KworcHJpdmF0ZToKKyAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsK
KyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKworI2VuZGlmIC8vIEludGxDb2xsYXRvclByb3Rv
dHlwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOWU1NDBkM2E1YTllYWI2MWY4ZTRiZTY3MDgyOTJh
ZWFjMjlhZTY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZv
cm1hdC5oIgorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJEYXRlQ29uc3RydWN0b3Iu
aCIKKyNpbmNsdWRlICJEYXRlSW5zdGFuY2UuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1
ZGUgIkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSW50bE9iamVj
dC5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlNsb3RWaXNp
dG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNfaW5mbyA9IHsg
Ik9iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bERhdGVU
aW1lRm9ybWF0KSB9OworCitJbnRsRGF0ZVRpbWVGb3JtYXQqIEludGxEYXRlVGltZUZvcm1hdDo6
Y3JlYXRlKFZNJiB2bSwgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9y
KQoreworICAgIEludGxEYXRlVGltZUZvcm1hdCogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SW50bERhdGVUaW1lRm9ybWF0Pih2bS5oZWFwKSkgSW50bERhdGVUaW1lRm9ybWF0
KHZtLCBjb25zdHJ1Y3Rvci0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKSk7CisgICAgZm9ybWF0
LT5maW5pc2hDcmVhdGlvbih2bSwgY29uc3RydWN0b3IpOworICAgIHJldHVybiBmb3JtYXQ7Cit9
CisKK1N0cnVjdHVyZSogSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxE
YXRlVGltZUZvcm1hdDo6SW50bERhdGVUaW1lRm9ybWF0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgOiBKU0Rlc3RydWN0aWJsZU9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQor
Cit2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IpCit7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKworICAgIGlmIChj
b25zdHJ1Y3RvcikKKyAgICAgICAgbV9jb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGNvbnN0cnVj
dG9yKTsKK30KKwordm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxs
KQoreworICAgIHN0YXRpY19jYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KGNlbGwpLT5JbnRsRGF0
ZVRpbWVGb3JtYXQ6On5JbnRsRGF0ZVRpbWVGb3JtYXQoKTsKK30KKwordm9pZCBJbnRsRGF0ZVRp
bWVGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SW50bERh
dGVUaW1lRm9ybWF0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2
aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NvbnN0cnVjdG9y
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ib3VuZEZvcm1hdCk7Cit9CisK
K3ZvaWQgSW50bERhdGVUaW1lRm9ybWF0OjpzZXRCb3VuZEZvcm1hdChWTSYgdm0sIEpTQm91bmRG
dW5jdGlvbiogZm9ybWF0KQoreworICAgIG1fYm91bmRGb3JtYXQuc2V0KHZtLCB0aGlzLCBmb3Jt
YXQpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1h
dEZ1bmNGb3JtYXREYXRlVGltZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTIuMy40IERh
dGVUaW1lIEZvcm1hdCBGdW5jdGlvbnMgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBMZXQgZHRm
IGJlIHRoZSB0aGlzIHZhbHVlLgorICAgIEludGxEYXRlVGltZUZvcm1hdCogZm9ybWF0ID0ganNE
eW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAg
Ly8gMi4gQXNzZXJ0OiBUeXBlKGR0ZikgaXMgT2JqZWN0IGFuZCBkdGYgaGFzIGFuIFtbaW5pdGlh
bGl6ZWREYXRlVGltZUZvcm1hdF1dIGludGVybmFsIHNsb3Qgd2hvc2UgdmFsdWUgaXMgdHJ1ZS4K
KyAgICBpZiAoIWZvcm1hdCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihleGVjKSk7CisKKyAgICBKU1ZhbHVlIGRhdGUgPSBleGVjLT5hcmd1bWVudCgwKTsK
KyAgICBkb3VibGUgdmFsdWU7CisKKyAgICAvLyAzLiBJZiBkYXRlIGlzIG5vdCBwcm92aWRlZCBv
ciBpcyB1bmRlZmluZWQsIHRoZW4KKyAgICBpZiAoZGF0ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAg
ICAgIC8vIGEuIExldCB4IGJlICVEYXRlX25vdyUoKS4KKyAgICAgICAgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZGF0ZU5vdyhleGVjKSkudG9OdW1iZXIoZXhlYyk7CisgICAgLy8gNC4gRWxzZQor
ICAgIH0gZWxzZSB7CisgICAgICAgIC8vIGEuIExldCB4IGJlIFRvTnVtYmVyKGRhdGUpLgorICAg
ICAgICB2YWx1ZSA9IGRhdGUudG9OdW1iZXIoZXhlYyk7CisgICAgICAgIC8vIGIuIFJldHVybklm
QWJydXB0KHgpLgorICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0KKworICAgIC8v
IDUuIFJldHVybiBGb3JtYXREYXRlVGltZShkdGYsIHgpLgorCisgICAgLy8gMTIuMy40IEZvcm1h
dERhdGVUaW1lIGFic3RyYWN0IG9wZXJhdGlvbiAoRUNNQS00MDIgMi4wKQorCisgICAgLy8gMS4g
SWYgeCBpcyBub3QgYSBmaW5pdGUgTnVtYmVyLCB0aGVuIHRocm93IGEgUmFuZ2VFcnJvciBleGNl
cHRpb24uCisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1JhbmdlRXJyb3IoZXhlYywgU3RyaW5nKCJkYXRlIHZhbHVlIGlz
IG5vdCBmaW5pdGUgaW4gRGF0ZVRpbWVGb3JtYXQuZm9ybWF0KCkiKSkpOworCisgICAgLy8gVE9E
TzogaW1wbGVtZW50IDIgLSA5CisKKyAgICAvLyBSZXR1cm4gbmV3IERhdGUodmFsdWUpLnRvU3Ry
aW5nKCkgdW50aWwgcHJvcGVybHkgaW1wbGVtZW50ZWQuCisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmds
b2JhbE9iamVjdCgpOworICAgIERhdGVJbnN0YW5jZSogZCA9IERhdGVJbnN0YW5jZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QtPmRhdGVTdHJ1Y3R1cmUoKSwgdmFsdWUpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShkKS50b1N0cmluZyhleGVjKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxZjlm
M2RkNjIyMTQ5ZDIzNTgzOTQzYTE4ZjllODQ0ODY3YTFhMmEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaApAQCAtMCww
ICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhl
dGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxEYXRlVGltZUZv
cm1hdF9oCisjZGVmaW5lIEludGxEYXRlVGltZUZvcm1hdF9oCisKKyNpZiBFTkFCTEUoSU5UTCkK
KworI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcjsKK2NsYXNzIEpTQm91bmRGdW5j
dGlvbjsKKworY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7
CisKKyAgICBzdGF0aWMgSW50bERhdGVUaW1lRm9ybWF0KiBjcmVhdGUoVk0mLCBJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3RvciopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87
CisKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IoKSBjb25z
dCB7IHJldHVybiBtX2NvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgSlNCb3VuZEZ1bmN0aW9uKiBi
b3VuZEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRGb3JtYXQuZ2V0KCk7IH0KKyAgICB2
b2lkIHNldEJvdW5kRm9ybWF0KFZNJiwgSlNCb3VuZEZ1bmN0aW9uKik7CisKK3Byb3RlY3RlZDoK
KyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiwgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqKTsKKyAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvcj4gbV9jb25zdHJ1Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8SlNCb3Vu
ZEZ1bmN0aW9uPiBtX2JvdW5kRm9ybWF0OworfTsKKyAgICAKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lKEV4ZWNTdGF0ZSop
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQorCisjZW5k
aWYgLy8gSW50bERhdGVUaW1lRm9ybWF0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hOTNkMDJhZjRmNWNlMTgzZmMzZmE2MmZlZjEzOWQxZDQ5NzU2ZTI0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTg3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5oIgorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJFcnJvci5o
IgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJK
U0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRl
ICJMb29rdXAuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJT
dHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lT
X1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IpOwor
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKik7CisKK30KKworI2lu
Y2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sICZkYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IubHV0LmgKK0BiZWdpbiBkYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yVGFibGUK
KyAgc3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAgICAgIEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAxCitAZW5kCisqLworCitJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlLCBT
dHJ1Y3R1cmUqIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKQoreworICAgIEludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yPih2bS5oZWFwKSkgSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENy
ZWF0aW9uKHZtLCBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSwgZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1
cmUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvcjo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSkKK3sK
K30KKwordm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGRhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLCBTdHJ1Y3R1cmUqIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtLCBBU0NJSUxpdGVyYWwoIkRhdGVUaW1lRm9ybWF0IikpOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsK
KyAgICBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLnNldCh2bSwgdGhpcywgZGF0ZVRpbWVGb3Jt
YXRTdHJ1Y3R1cmUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEludGxEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTIuMS4yIElu
dGwuRGF0ZVRpbWVGb3JtYXQgKFtsb2NhbGVzIFssIG9wdGlvbnNdXSkgKEVDTUEtNDAyIDIuMCkK
KyAgICAvLyAxLiBJZiBOZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRo
ZSBhY3RpdmUgZnVuY3Rpb24gb2JqZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0
LgorICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBpbnZva2VkIHdoZW4gY2FsbGVkIGFzIGNv
bnN0cnVjdG9yIHNvIG5ld1RhcmdldCBpcyB0aGUgRGF0ZVRpbWVGb3JtYXQgZnVuY3Rpb24uCisK
KyAgICAvLyAyLiBMZXQgZGF0ZVRpbWVGb3JtYXQgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3Ry
dWN0b3IobmV3VGFyZ2V0LCAlRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUlKS4KKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBJ
bnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwganNDYXN0PEludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpKTsKKworICAgIC8vIDMuIFJldHVybklmQWJydXB0
KGRhdGVUaW1lRm9ybWF0KS4KKyAgICBpZiAoIWRhdGVUaW1lRm9ybWF0KQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgLy8gNC4gUmV0dXJuIElu
aXRpYWxpemVEYXRlVGltZUZvcm1hdChkYXRlVGltZUZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucyku
CisgICAgLy8gSlNWYWx1ZSBsb2NhbGVzID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgLy8gSlNW
YWx1ZSBvcHRpb25zID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgLy8gVE9ETzogSW5pdGlhbGl6
ZURhdGVUaW1lRm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKTsKKworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQpOworfQorICAgIAorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bERhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICAvLyAxMi4xLjIgSW50bC5EYXRlVGltZUZvcm1hdCAoW2xvY2FsZXMgWywg
b3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRl
ZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2Ug
bGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCisgICAgLy8gRklYTUU6IFN1cHBvcnQgTmV3VGFy
Z2V0IGluIHN1cGVyKCkgY2FsbHMuCisKKyAgICAvLyAyLiBMZXQgZGF0ZVRpbWVGb3JtYXQgYmUg
T3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAlRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUlKS4KKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEludGxEYXRlVGltZUZv
cm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwganND
YXN0PEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpKTsKKwor
ICAgIC8vIDMuIFJldHVybklmQWJydXB0KGRhdGVUaW1lRm9ybWF0KS4KKyAgICBpZiAoIWRhdGVU
aW1lRm9ybWF0KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworCisgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxpemVEYXRlVGltZUZvcm1hdChkYXRlVGltZUZv
cm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gSlNWYWx1ZSBsb2NhbGVzID0gZXhlYy0+
YXJndW1lbnQoMCk7CisgICAgLy8gSlNWYWx1ZSBvcHRpb25zID0gZXhlYy0+YXJndW1lbnQoMSk7
CisgICAgLy8gVE9ETzogSW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBs
b2NhbGVzLCBvcHRpb25zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVG
b3JtYXQpOworfQorCitDb25zdHJ1Y3RUeXBlIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
OjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEp
Cit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RJbnRsRGF0
ZVRpbWVGb3JtYXQ7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCitDYWxsVHlw
ZSBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2Fs
bERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxJ
bnRsRGF0ZVRpbWVGb3JtYXQ7CisgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKK30KKworYm9vbCBJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SW50
ZXJuYWxGdW5jdGlvbj4oZXhlYywgZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclRhYmxlLCBqc0Nh
c3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgLy8gMTIuMi4yIEludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKGxv
Y2FsZXMgWywgb3B0aW9uc10pIChFQ01BLTQwMiAyLjApCisgICAgLy8gSlNWYWx1ZSBsb2NhbGVz
ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgLy8gSlNWYWx1ZSBvcHRpb25zID0gZXhlYy0+YXJn
dW1lbnQoMSk7CisKKyAgICAvLyAxLiBMZXQgYXZhaWxhYmxlTG9jYWxlcyBiZSAlRGF0ZVRpbWVG
b3JtYXQlLltbYXZhaWxhYmxlTG9jYWxlc11dLgorICAgIC8vIFRPRE86CisKKyAgICAvLyAyLiBM
ZXQgcmVxdWVzdGVkTG9jYWxlcyBiZSBDYW5vbmljYWxpemVMb2NhbGVMaXN0KGxvY2FsZXMpLgor
ICAgIC8vIFRPRE86IHJlcXVlc3RlZCA9IENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QobG9jYWxlcykK
KyAgICAvLyBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgLy8gICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICAvLyAzLiBSZXR1cm4gU3VwcG9ydGVk
TG9jYWxlcyhhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zKS4KKyAg
ICAvLyBUT0RPOiByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN1cHBvcnRlZExvY2FsZXMoYXZhaWxh
YmxlLCByZXF1ZXN0ZWQsIG9wdGlvbnMpKTsKKworICAgIC8vIFJldHVybiBlbXB0eSBhcnJheSB1
bnRpbCBwcm9wZXJseSBpbXBsZW1lbnRlZC4KKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2Jq
ZWN0KCk7CisgICAgSlNBcnJheSogc3VwcG9ydGVkTG9jYWxlcyA9IEpTQXJyYXk6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIDApOworICAgIGlmICgh
c3VwcG9ydGVkTG9jYWxlcykKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091
dE9mTWVtb3J5RXJyb3IoZXhlYykpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdXBw
b3J0ZWRMb2NhbGVzKTsKK30KKyAgICAKK3ZvaWQgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogdGhpc09iamVjdCA9IGpzQ2FzdDxJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jZjA0M2E3ZTcwYTQyZmZlYWZmMmQ4ZGJiNTYwZWJhMWMzM2FjYTU3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yX2gKKyNkZWZpbmUgSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3JfaAorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJJ
bnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsRGF0ZVRp
bWVGb3JtYXQ7CitjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU7CisKK2NsYXNzIElu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewor
cHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGljIEludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZP
OworCisgICAgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqLCBT
dHJ1Y3R1cmUqKTsKKworcHJpdmF0ZToKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
cihWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVj
dERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OworICAgIAorICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZGF0ZVRpbWVGb3JtYXRTdHJ1
Y3R1cmU7Cit9OworCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxE
YXRlVGltZUZvcm1hdChFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbEludGxEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKworI2VuZGlmIC8vIEludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2YmUz
M2JlOTZiYTg3NzY4ZWU3MDQzMWM0OTEyM2M1YjE1OWIyMjMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUu
Y3BwCkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFu
V2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCisKKyNp
ZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50bERhdGVU
aW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SlNPYmplY3QuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlN0
cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNf
VFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUpOworCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25z
KEV4ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmSW50bERhdGVUaW1lRm9y
bWF0OjpzX2luZm8sICZkYXRlVGltZUZvcm1hdFByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBkYXRlVGltZUZvcm1hdFBy
b3RvdHlwZVRhYmxlCisgIGZvcm1hdCAgICAgICAgICAgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlR2V0dGVyRm9ybWF0ICAgICAgICAgRG9udEVudW18QWNjZXNzb3IKKyAgcmVzb2x2ZWRPcHRp
b25zICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zICBEb250
RW51bXxGdW5jdGlvbiAwCitAZW5kCisqLworCitJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUq
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZT4odm0uaGVhcCkpIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSh2bSwg
c3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6SW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgOiBJbnRsRGF0ZVRpbWVGb3JtYXQodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU3RydWN0dXJl
KikKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgbnVsbHB0cik7Cit9CisKK2Jvb2wg
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09i
amVjdD4oZXhlYywgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVUYWJsZSwganNDYXN0PEludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
R2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMi4zLjMgSW50bC5EYXRl
VGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gTGV0
IGR0ZiBiZSB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdC4KKyAgICBJbnRsRGF0ZVRpbWVGb3Jt
YXQqIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oZXhlYy0+dGhpc1Zh
bHVlKCkpOworICAgIC8vIDIuIFJldHVybklmQWJydXB0KGR0ZikuCisgICAgaWYgKCFkdGYpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYykpOworICAg
IAorICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGb3JtYXQgPSBkdGYtPmJvdW5kRm9ybWF0KCk7
CisgICAgLy8gMy4gSWYgdGhlIFtbYm91bmRGb3JtYXRdXSBpbnRlcm5hbCBzbG90IG9mIHRoaXMg
RGF0ZVRpbWVGb3JtYXQgb2JqZWN0IGlzIHVuZGVmaW5lZCwgdGhlbgorICAgIGlmICghYm91bmRG
b3JtYXQpIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAg
ICAgICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRl
ZmluZWQgaW4gMTIuMy40LgorICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3Ro
IHByb3BlcnR5IGlzIDEuIChOb3RlOiBG4oCZcyBsZW5ndGggcHJvcGVydHkgd2FzIDAgaW4gRUNN
QS00MDIgMS4wKQorICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgU3RyaW5nKCJmb3JtYXQiKSwgSW50bERhdGVU
aW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lLCBOb0ludHJpbnNpYyk7CisgICAgICAgIEpTQXJy
YXkqIGJvdW5kQXJncyA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFy
cmF5V2l0aFVuZGVjaWRlZCksIDApOworICAgICAgICBpZiAoIWJvdW5kQXJncykKKyAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsK
KyAgICAgICAgCisgICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYs
IMKrdGhpcyB2YWx1ZcK7KS4KKyAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIGR0ZiwgYm91bmRBcmdzLCAx
LCBTdHJpbmcoImZvcm1hdCIpKTsKKyAgICAgICAgLy8gZC4gU2V0IGR0Zi5bW2JvdW5kRm9ybWF0
XV0gdG8gYmYuCisgICAgICAgIGR0Zi0+c2V0Qm91bmRGb3JtYXQodm0sIGJvdW5kRm9ybWF0KTsK
KyAgICB9CisgICAgLy8gNC4gUmV0dXJuIGR0Zi5bW2JvdW5kRm9ybWF0XV0uCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShib3VuZEZvcm1hdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTIuMy41IEludGwuRGF0ZVRpbWVGb3JtYXQucHJv
dG90eXBlLnJlc29sdmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCisgICAgSW50bERhdGVUaW1l
Rm9ybWF0KiBkdGYgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KGV4ZWMtPnRo
aXNWYWx1ZSgpKTsKKyAgICBpZiAoIWR0ZikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisKKyAgICAvLyBUaGUgZnVuY3Rpb24gcmV0dXJucyBh
IG5ldyBvYmplY3Qgd2hvc2UgcHJvcGVydGllcyBhbmQgYXR0cmlidXRlcyBhcmUgc2V0IGFzIGlm
IGNvbnN0cnVjdGVkIGJ5IGFuIG9iamVjdCBsaXRlcmFsIGFzc2lnbmluZyB0byBlYWNoIG9mIHRo
ZSBmb2xsb3dpbmcgcHJvcGVydGllcyB0aGUgdmFsdWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW50
ZXJuYWwgc2xvdCBvZiB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdCAoc2VlIDEyLjQpOiBsb2Nh
bGUsIGNhbGVuZGFyLCBudW1iZXJpbmdTeXN0ZW0sIHRpbWVab25lLCBob3VyMTIsIHdlZWtkYXks
IGVyYSwgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIGFuZCB0aW1lWm9u
ZU5hbWUuIFByb3BlcnRpZXMgd2hvc2UgY29ycmVzcG9uZGluZyBpbnRlcm5hbCBzbG90cyBhcmUg
bm90IHByZXNlbnQgYXJlIG5vdCBhc3NpZ25lZC4KKyAgICAvLyBOb3RlOiBJbiB0aGlzIHZlcnNp
b24gb2YgdGhlIEVDTUFTY3JpcHQgMjAxNSBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEksIHRoZSB0
aW1lWm9uZSBwcm9wZXJ0eSB3aWxsIGJlIHRoZSBuYW1lIG9mIHRoZSBkZWZhdWx0IHRpbWUgem9u
ZSBpZiBubyB0aW1lWm9uZSBwcm9wZXJ0eSB3YXMgcHJvdmlkZWQgaW4gdGhlIG9wdGlvbnMgb2Jq
ZWN0IHByb3ZpZGVkIHRvIHRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yLiBUaGUg
cHJldmlvdXMgdmVyc2lvbiBsZWZ0IHRoZSB0aW1lWm9uZSBwcm9wZXJ0eSB1bmRlZmluZWQgaW4g
dGhpcyBjYXNlLgorCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVj
dChleGVjKTsKKworICAgIC8vIFRPRE86IFBvcHVsYXRlIG9iamVjdCBmcm9tIGludGVybmFsIHNs
b3RzLgorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvcHRpb25zKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTJmZDVlMzRlYTc5NTg2ZTQ3ODk2ZmFmZmM0NGU1ZTZmYTYxNTljYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlX2gKKyNkZWZpbmUgSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlX2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVk
ZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSA6IHB1YmxpYyBJ
bnRsRGF0ZVRpbWVGb3JtYXQgeworcHVibGljOgorICAgIHR5cGVkZWYgSW50bERhdGVUaW1lRm9y
bWF0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBz
dGF0aWMgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisK
K3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgU3RydWN0dXJlKik7CisK
K3ByaXZhdGU6CisgICAgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKFZNJiwgU3RydWN0dXJl
Kik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjBiZmVkZGIzNjVhN2NjNzIzNDYwMDMz
ZDdkY2RkYTIzNzFkZTNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5j
b20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVy
Rm9ybWF0LmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5j
bHVkZSAiSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSW50bE9iamVj
dC5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlNsb3RWaXNp
dG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsTnVtYmVyRm9ybWF0OjpzX2luZm8gPSB7ICJP
YmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxOdW1iZXJG
b3JtYXQpIH07CisKK0ludGxOdW1iZXJGb3JtYXQqIEludGxOdW1iZXJGb3JtYXQ6OmNyZWF0ZShW
TSYgdm0sIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IpCit7CisgICAg
SW50bE51bWJlckZvcm1hdCogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50
bE51bWJlckZvcm1hdD4odm0uaGVhcCkpIEludGxOdW1iZXJGb3JtYXQodm0sIGNvbnN0cnVjdG9y
LT5udW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKSk7CisgICAgZm9ybWF0LT5maW5pc2hDcmVhdGlvbih2
bSwgY29uc3RydWN0b3IpOworICAgIHJldHVybiBmb3JtYXQ7Cit9CisKK1N0cnVjdHVyZSogSW50
bE51bWJlckZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsTnVtYmVyRm9ybWF0OjpJbnRsTnVt
YmVyRm9ybWF0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU0Rlc3RydWN0
aWJsZU9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxOdW1iZXJGb3JtYXQ6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvcikKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGlu
aGVyaXRzKGluZm8oKSkpOworCisgICAgaWYgKGNvbnN0cnVjdG9yKQorICAgICAgICBtX2NvbnN0
cnVjdG9yLnNldCh2bSwgdGhpcywgY29uc3RydWN0b3IpOworfQorCit2b2lkIEludGxOdW1iZXJG
b3JtYXQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PEludGxOdW1i
ZXJGb3JtYXQqPihjZWxsKS0+SW50bE51bWJlckZvcm1hdDo6fkludGxOdW1iZXJGb3JtYXQoKTsK
K30KKwordm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSW50bE51bWJlckZvcm1hdCogdGhpc09iamVj
dCA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2NvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ib3Vu
ZEZvcm1hdCk7Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdDo6c2V0Qm91bmRGb3JtYXQoVk0m
IHZtLCBKU0JvdW5kRnVuY3Rpb24qIGZvcm1hdCkKK3sKKyAgICBtX2JvdW5kRm9ybWF0LnNldCh2
bSwgdGhpcywgZm9ybWF0KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
TnVtYmVyRm9ybWF0RnVuY0Zvcm1hdE51bWJlcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8g
MTEuMy40IEZvcm1hdCBOdW1iZXIgRnVuY3Rpb25zIChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4g
TGV0IG5mIGJlIHRoZSB0aGlzIHZhbHVlLgorICAgIEludGxOdW1iZXJGb3JtYXQqIGZvcm1hdCA9
IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAg
ICAvLyAyLiBBc3NlcnQ6IFR5cGUobmYpIGlzIE9iamVjdCBhbmQgbmYgaGFzIGFuIFtbaW5pdGlh
bGl6ZWROdW1iZXJGb3JtYXRdXSBpbnRlcm5hbCBzbG90IHdob3NlIHZhbHVlIGlzIHRydWUuCisg
ICAgaWYgKCFmb3JtYXQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZXhlYykpOworCisgICAgLy8gMy4gSWYgdmFsdWUgaXMgbm90IHByb3ZpZGVkLCBsZXQg
dmFsdWUgYmUgdW5kZWZpbmVkLgorICAgIC8vIDQuIExldCB4IGJlIFRvTnVtYmVyKHZhbHVlKS4K
KyAgICBkb3VibGUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKTsKKyAg
ICAvLyA1LiBSZXR1cm5JZkFicnVwdCh4KS4KKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICAv
LyA2LiBSZXR1cm4gRm9ybWF0TnVtYmVyKG5mLCB4KS4KKyAgICAKKyAgICAvLyAxMS4zLjQgRm9y
bWF0TnVtYmVyIGFic3RyYWN0IG9wZXJhdGlvbiAoRUNNQS00MDIgMi4wKQorICAgIC8vIFRPRE86
IEltcGxlbWVudCBGb3JtYXROdW1iZXIuCisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKHZhbHVlKS50b1N0cmluZyhleGVjKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVkOGIyZTUzNTFkM2Y5NDY1NDUz
YTMzYjBkMmU4ZGRmMThkMGNjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaApAQCAtMCwwICsxLDgwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwu
Y29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxOdW1iZXJGb3JtYXRfaAorI2RlZmluZSBJbnRs
TnVtYmVyRm9ybWF0X2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSlNEZXN0cnVj
dGlibGVPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3RvcjsKK2NsYXNzIEpTQm91bmRGdW5jdGlvbjsKKworY2xhc3MgSW50bE51bWJl
ckZvcm1hdCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEludGxOdW1iZXJG
b3JtYXQqIGNyZWF0ZShWTSYsIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciopOworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IqIGNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3Rvci5nZXQoKTsg
fQorICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Jv
dW5kRm9ybWF0LmdldCgpOyB9CisgICAgdm9pZCBzZXRCb3VuZEZvcm1hdChWTSYsIEpTQm91bmRG
dW5jdGlvbiopOworCitwcm90ZWN0ZWQ6CisgICAgSW50bE51bWJlckZvcm1hdChWTSYsIFN0cnVj
dHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IqKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFdyaXRl
QmFycmllcjxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I+IG1fY29uc3RydWN0b3I7CisgICAg
V3JpdGVCYXJyaWVyPEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZEZvcm1hdDsKKy8qCisgICAgU3Ry
aW5nIG1fbG9jYWxlOworICAgIFN0cmluZyBtX251bWJlcmluZ1N5c3RlbTsKKyAgICBTdHJpbmcg
bV9zdHlsZTsKKyAgICBTdHJpbmcgbV9jdXJyZW5jeTsKKyAgICBTdHJpbmcgbV9jdXJyZW5jeURp
c3BsYXk7CisgICAgaW50MzJfdCBtX21pbmltdW1JbnRlZ2VyRGlnaXRzOworICAgIGludDMyX3Qg
bV9taW5pbXVtRnJhY3Rpb25EaWdpdHM7CisgICAgaW50MzJfdCBtX21heGltdW1GcmFjdGlvbkRp
Z2l0czsKKyAgICBpbnQzMl90IG1fbWluaW11bVNpZ25pZmljYW50RGlnaXRzOworICAgIGludDMy
X3QgbV9tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM7CisgICAgYm9vbCBtX3VzZUdyb3VwaW5nOwor
Ki8KK307CisgICAgCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3Jt
YXRGdW5jRm9ybWF0TnVtYmVyKEV4ZWNTdGF0ZSopOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIEVOQUJMRShJTlRMKQorCisjZW5kaWYgLy8gSW50bE51bWJlckZvcm1hdF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYmU4MDE4ZWYyOTYyOWJmMTM4YWZj
YTM2NjQyMDdjYzQwOGMyZGZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDE4
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVj
cmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgiCisKKyNpZiBFTkFCTEUoSU5UTCkK
KworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2lu
Y2x1ZGUgIkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0
LmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCisjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVz
LmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
U1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3Rvcik7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKik7
CisKK30KKworI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJm51bWJlckZvcm1h
dENvbnN0cnVjdG9yVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ci5sdXQuaAorQGJlZ2luIG51bWJlckZvcm1hdENvbnN0cnVjdG9yVGFibGUKKyAgc3VwcG9ydGVk
TG9jYWxlc09mICAgICAgICAgICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBw
b3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8K
KworSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlKiBudW1iZXJGb3JtYXRQcm90b3R5cGUsIFN0cnVjdHVyZSogbnVtYmVyRm9ybWF0
U3RydWN0dXJlKQoreworICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3I+KHZtLmhlYXApKSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7
CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBudW1iZXJGb3JtYXRQcm90b3R5
cGUsIG51bWJlckZvcm1hdFN0cnVjdHVyZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQor
CitTdHJ1Y3R1cmUqIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
Cit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQor
CitJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
cihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbih2
bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBudW1iZXJG
b3JtYXRQcm90b3R5cGUsIFN0cnVjdHVyZSogbnVtYmVyRm9ybWF0U3RydWN0dXJlKQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBBU0NJSUxpdGVyYWwoIk51bWJlckZvcm1hdCIpKTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBudW1iZXJGb3JtYXRQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxl
dGUpOworICAgIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLnNldCh2bSwgdGhpcywgbnVtYmVyRm9y
bWF0U3RydWN0dXJlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RJbnRsTnVtYmVyRm9ybWF0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMS4xLjIgSW50
bC5OdW1iZXJGb3JtYXQgKFtsb2NhbGVzIFssIG9wdGlvbnNdXSkgKEVDTUEtNDAyIDIuMCkKKyAg
ICAvLyAxLiBJZiBOZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRoZSBh
Y3RpdmUgZnVuY3Rpb24gb2JqZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0Lgor
ICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBpbnZva2VkIHdoZW4gY2FsbGVkIGFzIGNvbnN0
cnVjdG9yIHNvIG5ld1RhcmdldCBpcyB0aGUgTnVtYmVyRm9ybWF0IGZ1bmN0aW9uLgorCisgICAg
Ly8gMi4gTGV0IG51bWJlckZvcm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3Rvcihu
ZXdUYXJnZXQsICVOdW1iZXJGb3JtYXRQcm90b3R5cGUlKS4KKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IEludGxOdW1iZXJGb3Jt
YXQ6OmNyZWF0ZSh2bSwganNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KGV4ZWMt
PmNhbGxlZSgpKSk7CisKKyAgICAvLyAzLiBSZXR1cm5JZkFicnVwdChudW1iZXJGb3JtYXQpLgor
ICAgIGlmICghbnVtYmVyRm9ybWF0KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworCisgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxpemVOdW1iZXJGb3JtYXQo
bnVtYmVyRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBKU1ZhbHVlIGxvY2FsZXMg
PSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICAvLyBKU1ZhbHVlIG9wdGlvbnMgPSBleGVjLT5hcmd1
bWVudCgxKTsKKyAgICAvLyBUT0RPOiBJbml0aWFsaXplTnVtYmVyRm9ybWF0KG51bWJlckZvcm1h
dCwgbG9jYWxlcywgb3B0aW9ucyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJl
ckZvcm1hdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxOdW1i
ZXJGb3JtYXQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDExLjEuMiBJbnRsLk51bWJlckZv
cm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIElm
IE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5j
dGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCisgICAgLy8gRklY
TUU6IFN1cHBvcnQgTmV3VGFyZ2V0IGluIHN1cGVyKCkgY2FsbHMuCisKKyAgICAvLyAyLiBMZXQg
bnVtYmVyRm9ybWF0IGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwg
JU51bWJlckZvcm1hdFByb3RvdHlwZSUpLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
SW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0ID0gSW50bE51bWJlckZvcm1hdDo6Y3JlYXRl
KHZtLCBqc0Nhc3Q8SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkp
KTsKKworICAgIC8vIDMuIFJldHVybklmQWJydXB0KG51bWJlckZvcm1hdCkuCisgICAgaWYgKCFu
dW1iZXJGb3JtYXQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisKKyAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZU51bWJlckZvcm1hdChudW1iZXJGb3Jt
YXQsIGxvY2FsZXMsIG9wdGlvbnMpLgorICAgIC8vIEpTVmFsdWUgbG9jYWxlcyA9IGV4ZWMtPmFy
Z3VtZW50KDApOworICAgIC8vIEpTVmFsdWUgb3B0aW9ucyA9IGV4ZWMtPmFyZ3VtZW50KDEpOwor
ICAgIC8vIFRPRE86IEluaXRpYWxpemVOdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBsb2NhbGVz
LCBvcHRpb25zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0KTsK
K30KKworQ29uc3RydWN0VHlwZSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmdldENvbnN0
cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBj
b25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEludGxOdW1iZXJGb3JtYXQ7
CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCitDYWxsVHlwZSBJbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0
YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsSW50bE51bWJlckZvcm1h
dDsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitib29sIEludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQor
eworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJuYWxGdW5jdGlvbj4oZXhl
YywgbnVtYmVyRm9ybWF0Q29uc3RydWN0b3JUYWJsZSwganNDYXN0PEludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBv
cnRlZExvY2FsZXNPZihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTEuMi4yIEludGwuTnVt
YmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGVzIFssIG9wdGlvbnNdKSAoRUNNQS00
MDIgMi4wKQorICAgIC8vIEpTVmFsdWUgbG9jYWxlcyA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAg
IC8vIEpTVmFsdWUgb3B0aW9ucyA9IGV4ZWMtPmFyZ3VtZW50KDEpOworCisgICAgLy8gMS4gTGV0
IGF2YWlsYWJsZUxvY2FsZXMgYmUgJU51bWJlckZvcm1hdCUuW1thdmFpbGFibGVMb2NhbGVzXV0u
CisgICAgLy8gVE9ETzoKKworICAgIC8vIDIuIExldCByZXF1ZXN0ZWRMb2NhbGVzIGJlIENhbm9u
aWNhbGl6ZUxvY2FsZUxpc3QobG9jYWxlcykuCisgICAgLy8gVE9ETzogcmVxdWVzdGVkID0gQ2Fu
b25pY2FsaXplTG9jYWxlTGlzdChsb2NhbGVzKQorICAgIC8vIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKKyAgICAvLyAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KworICAgIC8vIDMuIFJldHVybiBTdXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJsZUxvY2FsZXMsIHJl
cXVlc3RlZExvY2FsZXMsIG9wdGlvbnMpLgorICAgIC8vIFRPRE86IHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGUsIHJlcXVlc3RlZCwgb3B0aW9ucykpOwor
CisgICAgLy8gUmV0dXJuIGVtcHR5IGFycmF5IHVudGlsIHByb3Blcmx5IGltcGxlbWVudGVkLgor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0FycmF5KiBzdXBwb3J0
ZWRMb2NhbGVzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlX
aXRoVW5kZWNpZGVkKSwgMCk7CisgICAgaWYgKCFzdXBwb3J0ZWRMb2NhbGVzKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7CisKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMpOworfQorCit2b2lkIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvciog
dGhpc09iamVjdCA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqPihjZWxsKTsK
KyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbnVtYmVyRm9ybWF0U3RydWN0dXJlKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYmI3NWYxMDIxNjRjY2RmMTJjZTUzZTVjOTQ4YjZjYTExNzk5OWFm
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yX2gKKyNkZWZpbmUg
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yX2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5j
bHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50
bE51bWJlckZvcm1hdDsKK2NsYXNzIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU7CisKK2NsYXNz
IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOwor
CisgICAgU3RydWN0dXJlKiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X251bWJlckZvcm1hdFN0cnVjdHVyZS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYsIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqLCBTdHJ1Y3R1cmUq
KTsKKworcHJpdmF0ZToKKyAgICBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IoVk0mLCBTdHJ1
Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2Vs
bCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICAKKyAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX251bWJlckZvcm1hdFN0cnVjdHVyZTsKK307CisK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bE51bWJlckZvcm1hdChF
eGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxOdW1iZXJG
b3JtYXQoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5B
QkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JfaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NWI3N2Y0MWIwNTBkYzRlMThhOGZjZWUyMzhm
ODkyYjI2ZTJmOWEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMzYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBn
bWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUg
IkVycm9yLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkpTQm91
bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiT2JqZWN0
Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZSk7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAiSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0
IENsYXNzSW5mbyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJPYmplY3Qi
LCAmSW50bE51bWJlckZvcm1hdDo6c19pbmZvLCAmbnVtYmVyRm9ybWF0UHJvdG90eXBlVGFibGUs
IENSRUFURV9NRVRIT0RfVEFCTEUoSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSkgfTsKKworLyog
U291cmNlIGZvciBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oCitAYmVnaW4gbnVtYmVy
Rm9ybWF0UHJvdG90eXBlVGFibGUKKyAgZm9ybWF0ICAgICAgICAgICBJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlR2V0dGVyRm9ybWF0ICAgICAgICAgRG9udEVudW18QWNjZXNzb3IKKyAgcmVzb2x2
ZWRPcHRpb25zICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyAg
RG9udEVudW18RnVuY3Rpb24gMAorQGVuZAorKi8KKworSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZSogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlPih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSh2bSwgc3RydWN0
dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUpOworICAgIHJl
dHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworfQorCitJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRsTnVt
YmVyRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqKQoreworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtLCBudWxscHRyKTsKK30KKworYm9vbCBJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7
CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgbnVtYmVy
Rm9ybWF0UHJvdG90eXBlVGFibGUsIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKj4o
b2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICAvLyAxMS4zLjMgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1h
dCAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIExldCBuZiBiZSB0aGlzIE51bWJlckZvcm1hdCBv
YmplY3QuCisgICAgSW50bE51bWJlckZvcm1hdCogbmYgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1i
ZXJGb3JtYXQqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFuZikKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisgICAgCisgICAgSlNC
b3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IG5mLT5ib3VuZEZvcm1hdCgpOworICAgIC8vIDIu
IElmIG5mLltbYm91bmRGb3JtYXRdXSBpcyB1bmRlZmluZWQsIHRoZW4KKyAgICBpZiAoIWJvdW5k
Rm9ybWF0KSB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7Cisg
ICAgICAgIC8vIGEuIExldCBGIGJlIGEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBhcyBk
ZWZpbmVkIGluIDExLjMuNC4KKyAgICAgICAgLy8gYi4gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0
aCBwcm9wZXJ0eSBpcyAxLgorICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgU3RyaW5nKCJmb3JtYXQiKSwgSW50
bE51bWJlckZvcm1hdEZ1bmNGb3JtYXROdW1iZXIsIE5vSW50cmluc2ljKTsKKyAgICAgICAgSlNB
cnJheSogYm91bmRBcmdzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
QXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7CisgICAgICAgIGlmICghYm91bmRBcmdzKQorICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYykp
OworCisgICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhp
cyB2YWx1ZcK7KS4KKyAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIG5mLCBib3VuZEFyZ3MsIDEsIFN0cmlu
ZygiZm9ybWF0IikpOworICAgICAgICAvLyBkLiBTZXQgbmYuW1tib3VuZEZvcm1hdF1dIHRvIGJm
LgorICAgICAgICBuZi0+c2V0Qm91bmRGb3JtYXQodm0sIGJvdW5kRm9ybWF0KTsKKyAgICB9Cisg
ICAgLy8gMy4gUmV0dXJuIG5mLltbYm91bmRGb3JtYXRdXS4KKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGJvdW5kRm9ybWF0KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgLy8gMTEuMy41IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZl
ZE9wdGlvbnMoKSAoRUNNQS00MDIgMi4wKQorICAgIEludGxOdW1iZXJGb3JtYXQqIG5mID0ganNE
eW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlm
ICghbmYpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhl
YykpOworCisgICAgLy8gVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBuZXcgb2JqZWN0IHdob3NlIHBy
b3BlcnRpZXMgYW5kIGF0dHJpYnV0ZXMgYXJlIHNldCBhcyBpZiBjb25zdHJ1Y3RlZCBieSBhbiBv
YmplY3QgbGl0ZXJhbCBhc3NpZ25pbmcgdG8gZWFjaCBvZiB0aGUgZm9sbG93aW5nIHByb3BlcnRp
ZXMgdGhlIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGludGVybmFsIHNsb3Qgb2YgdGhpcyBO
dW1iZXJGb3JtYXQgb2JqZWN0IChzZWUgMTEuNCk6IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBz
dHlsZSwgY3VycmVuY3ksIGN1cnJlbmN5RGlzcGxheSwgbWluaW11bUludGVnZXJEaWdpdHMsIG1p
bmltdW1GcmFjdGlvbkRpZ2l0cywgbWF4aW11bUZyYWN0aW9uRGlnaXRzLCBtaW5pbXVtU2lnbmlm
aWNhbnREaWdpdHMsIG1heGltdW1TaWduaWZpY2FudERpZ2l0cywgYW5kIHVzZUdyb3VwaW5nLiBQ
cm9wZXJ0aWVzIHdob3NlIGNvcnJlc3BvbmRpbmcgaW50ZXJuYWwgc2xvdHMgYXJlIG5vdCBwcmVz
ZW50IGFyZSBub3QgYXNzaWduZWQuCisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KGV4ZWMpOworCisgICAgLy8gVE9ETzogUG9wdWxhdGUgb2JqZWN0IGZyb20g
aW50ZXJuYWwgc2xvdHMuCisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9wdGlvbnMpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4YmMwNTFmZGRiODg1MmE5YTk1ZjlmMTdkOThhZThjYjc4
NTIxMTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlX2gKKyNkZWZpbmUg
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZV9oCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1
ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSA6IHB1YmxpYyBJbnRs
TnVtYmVyRm9ybWF0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGxOdW1iZXJGb3JtYXQgQmFz
ZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3Rl
ZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgU3RydWN0dXJlKik7CisKK3ByaXZhdGU6
CisgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTlRMKQorCisjZW5kaWYgLy8gSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4
IDEyZGE5MzhmYTgxM2FlMzFmMzc1NmRiMDRkZjA3ZmJiMDk5MmRkMGMuLmNmYjVmNjk4MGZmYzE3
ZTBhNzJmZTIxZDg1MzhkNDlmY2ZmOWFiMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0yOCw2ICsyOCwxNiBAQAogCiAjaWYgRU5BQkxFKElO
VEwpCiAKKyNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxDb2xs
YXRvci5oIgorI2luY2x1ZGUgIkludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAi
SW50bENvbGxhdG9yUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0Lmgi
CisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0
LmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAi
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNp
bmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKQEAgLTQ4LDE3
ICs1OCw0MyBAQCBJbnRsT2JqZWN0OjpJbnRsT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiB7CiB9CiAKLUludGxPYmplY3QqIEludGxPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorSW50bE9iamVjdCogSW50bE9iamVjdDo6Y3JlYXRlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7
CiAgICAgSW50bE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50
bE9iamVjdD4odm0uaGVhcCkpIEludGxPYmplY3Qodm0sIHN0cnVjdHVyZSk7Ci0gICAgb2JqZWN0
LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gb2JqZWN0OwogfQogCi12b2lkIEludGxPYmplY3Q6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKK3ZvaWQgSW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisKKyAgICAvLyBzZXQg
dXAgQ29sbGF0b3IKKyAgICBtX2NvbGxhdG9yUHJvdG90eXBlLnNldCh2bSwgdGhpcywgSW50bENv
bGxhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSW50bENvbGxhdG9yUHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5v
YmplY3RQcm90b3R5cGUoKSkpKTsKKyAgICBtX2NvbGxhdG9yU3RydWN0dXJlLnNldCh2bSwgdGhp
cywgSW50bENvbGxhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgbV9jb2xs
YXRvclByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fY29sbGF0b3JDb25zdHJ1Y3Rvci5zZXQodm0s
IHRoaXMsIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxDb2xsYXRvckNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5mdW5jdGlvblByb3RvdHlwZSgpKSwgbV9jb2xsYXRvclByb3RvdHlwZS5nZXQoKSwgbV9jb2xs
YXRvclN0cnVjdHVyZS5nZXQoKSkpOworCisgICAgbV9jb2xsYXRvclByb3RvdHlwZS0+cHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBt
X2NvbGxhdG9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKKworICAgIC8vIHNldCB1cCBO
dW1iZXJGb3JtYXQKKyAgICBtX251bWJlckZvcm1hdFByb3RvdHlwZS5zZXQodm0sIHRoaXMsIElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpKTsKKyAgICBtX251bWJlckZvcm1hdFN0cnVj
dHVyZS5zZXQodm0sIHRoaXMsIEludGxOdW1iZXJGb3JtYXQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
Z2xvYmFsT2JqZWN0LCBtX251bWJlckZvcm1hdFByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fbnVt
YmVyRm9ybWF0Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3I6OmNyZWF0ZSh2bSwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgp
KSwgbV9udW1iZXJGb3JtYXRQcm90b3R5cGUuZ2V0KCksIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJl
LmdldCgpKSk7CisKKyAgICBtX251bWJlckZvcm1hdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBtX251bWJlckZv
cm1hdENvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CisKKyAgICAvLyBzZXQgdXAgRGF0ZVRp
bWVGb3JtYXQKKyAgICBtX2RhdGVUaW1lRm9ybWF0UHJvdG90eXBlLnNldCh2bSwgdGhpcywgSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpKTsKKyAgICBtX2RhdGVUaW1lRm9ybWF0
U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIGdsb2JhbE9iamVjdCwgbV9kYXRlVGltZUZvcm1hdFByb3RvdHlwZS5nZXQoKSkpOwor
ICAgIG1fZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5j
dGlvblByb3RvdHlwZSgpKSwgbV9kYXRlVGltZUZvcm1hdFByb3RvdHlwZS5nZXQoKSwgbV9kYXRl
VGltZUZvcm1hdFN0cnVjdHVyZS5nZXQoKSkpOworCisgICAgbV9kYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLCBtX2RhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsK
KworICAgIC8vIDguMSBQcm9wZXJ0aWVzIG9mIHRoZSBJbnRsIE9iamVjdCAoRUNNQS00MDIgMi4w
KQorICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5D
b2xsYXRvciwgbV9jb2xsYXRvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CisgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPk51bWJlckZvcm1h
dCwgbV9udW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5EYXRlVGltZUZvcm1h
dCwgbV9kYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSk7CiB9CiAKIFN0
cnVjdHVyZSogSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC02Niw2ICsxMDIsMjUgQEAg
U3RydWN0dXJlKiBJbnRsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1YKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CiB9CiAKK3ZvaWQgSW50bE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEludGxPYmplY3QqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SW50bE9iamVjdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
Y29sbGF0b3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
Y29sbGF0b3JQcm90b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Nv
bGxhdG9yU3RydWN0dXJlKTsKKworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX251
bWJlckZvcm1hdENvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9udW1iZXJGb3JtYXRQcm90b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX251bWJlckZvcm1hdFN0cnVjdHVyZSk7CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9kYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9kYXRlVGltZUZvcm1hdFByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShJTlRMKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCmluZGV4IGY0NWI5YWI2NDkwMjI4ZWRlYTU3YWIyZTBi
ZTljMGI1YTg5ZTJmYzAuLmIyNjAzZjM1MTQ4MGYwYTk1NjQwOGYwYjljNTdlNmM3M2RjMDVkNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKQEAgLTMyLDIx
ICszMiw1MyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSW50bENvbGxhdG9yQ29uc3Ry
dWN0b3I7CitjbGFzcyBJbnRsQ29sbGF0b3JQcm90b3R5cGU7CitjbGFzcyBJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3RvcjsKK2NsYXNzIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTsKK2Ns
YXNzIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvcjsKK2NsYXNzIEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGU7CisKIGNsYXNzIEludGxPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKLSAgICBzdGF0aWMgSW50bE9iamVjdCogY3Jl
YXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIEludGxPYmplY3QqIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xB
UkVfSU5GTzsKIAorICAgIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKiBjb2xsYXRvckNvbnN0cnVj
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xsYXRvckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAg
SW50bENvbGxhdG9yUHJvdG90eXBlKiBjb2xsYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29sbGF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGNvbGxhdG9yU3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xsYXRvclN0cnVjdHVyZS5nZXQoKTsgfQorCisg
ICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKiBudW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuZ2V0KCk7IH0KKyAgICBJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBudW1iZXJGb3JtYXRQcm90b3R5cGUoKSBjb25zdCB7
IHJldHVybiBtX251bWJlckZvcm1hdFByb3RvdHlwZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSog
bnVtYmVyRm9ybWF0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJGb3JtYXRTdHJ1
Y3R1cmUuZ2V0KCk7IH0KKworICAgIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKiBkYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9kYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yLmdldCgpOyB9CisgICAgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBkYXRl
VGltZUZvcm1hdFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS5nZXQoKTsgfQorCiBwcm90
ZWN0ZWQ6Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOworCisgICAgV3JpdGVCYXJyaWVyPEludGxDb2xs
YXRvckNvbnN0cnVjdG9yPiBtX2NvbGxhdG9yQ29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVy
PEludGxDb2xsYXRvclByb3RvdHlwZT4gbV9jb2xsYXRvclByb3RvdHlwZTsKKyAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2NvbGxhdG9yU3RydWN0dXJlOworCisgICAgV3JpdGVCYXJyaWVy
PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcj4gbV9udW1iZXJGb3JtYXRDb25zdHJ1Y3RvcjsK
KyAgICBXcml0ZUJhcnJpZXI8SW50bE51bWJlckZvcm1hdFByb3RvdHlwZT4gbV9udW1iZXJGb3Jt
YXRQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9udW1iZXJGb3JtYXRT
dHJ1Y3R1cmU7CisKKyAgICBXcml0ZUJhcnJpZXI8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3I+IG1fZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8SW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlPiBtX2RhdGVUaW1lRm9ybWF0UHJvdG90eXBlOworICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmU7CiAKIHByaXZh
dGU6CiAgICAgSW50bE9iamVjdChWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IDEwYmYxNzc4MjAyMmM0Nzk0ZDMwZTcwZWZiMmJlZjVkZjI0MmNlMTguLjM2OWMz
MTI4NGQzMDIwZTFjZjBlZTNiOGFlMzE5M2NlYTBjNGZkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTQ0Nyw3ICs0NDcsNyBA
QCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFt
ZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5ldmFsLCBtX2V2YWxGdW5jdGlvbi5nZXQoKSwgRG9udEVu
dW0pOwogICAgIAogI2lmIEVOQUJMRShJTlRMKQotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5JbnRsLCBJbnRsT2JqZWN0OjpjcmVhdGUodm0sIElu
dGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0
KCkpKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5JbnRsLCBJbnRsT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIEludGxPYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwg
RG9udEVudW0pOwogI2VuZGlmIC8vIEVOQUJMRShJTlRMKQogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5KU09OLCBKU09OT2JqZWN0OjpjcmVhdGUo
dm0sIEpTT05PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5
cGUuZ2V0KCkpKSwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5NYXRoLCBNYXRoT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIE1h
dGhPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0
KCkpKSwgRG9udEVudW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBmZTU2YmMwYjFiZmQ2MGM1MWEwNTdlOTU1
NGQxOWVkNDg3NGY0ZjQyLi5kMjIwOTJhN2I5ZDNjM2UwZmFhNTZkODgzY2M0YTBhNDRkMmZmN2Mw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZwpAQCAtMTE2LDcgKzExNiw3IEBAIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFD
S19UQVJHRVRfbWFjb3N4XzEwMTAwMCA9IDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJH
RVRfbWFjb3N4XzEwMTEwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiBFTkFC
TEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEyMDAgPSBFTkFCTEVfV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUOwogCi1FTkFCTEVfSU5UTCA9IDsKK0VOQUJMRV9JTlRMID0gRU5B
QkxFX0lOVEw7CiAKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNbc2RrPWlwaG9uZSpdID0gJChF
TkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES18kKFVTRV9JTlRF
Uk5BTF9TREspKTsKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxf
U0RLX1lFUyA9IEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4
IGZlNTZiYzBiMWJmZDYwYzUxYTA1N2U5NTU0ZDE5ZWQ0ODc0ZjRmNDIuLmQyMjA5MmE3YjlkM2Mz
ZTBmYWE1NmQ4ODNjYzRhMGE0NGQyZmY3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0xMTYsNyAr
MTE2LDcgQEAgRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMDAwID0g
OwogRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMTAwID0gRU5BQkxF
X1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJH
RVRfbWFjb3N4XzEwMTIwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiAKLUVO
QUJMRV9JTlRMID0gOworRU5BQkxFX0lOVEwgPSBFTkFCTEVfSU5UTDsKIAogRU5BQkxFX0lPU19H
RVNUVVJFX0VWRU5UU1tzZGs9aXBob25lKl0gPSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNf
aW9zX1dJVEhfSU5URVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFMX1NESykpOwogRU5BQkxFX0lPU19H
RVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfWUVTID0gRU5BQkxFX0lPU19HRVNU
VVJFX0VWRU5UUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZmU1NmJjMGIxYmZkNjBjNTFhMDU3ZTk1NTRkMTll
ZDQ4NzRmNGY0Mi4uZDIyMDkyYTdiOWQzYzNlMGZhYTU2ZDg4M2NjNGEwYTQ0ZDJmZjdjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKKysrIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKQEAgLTExNiw3ICsxMTYsNyBAQCBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUX21hY29zeF8xMDEwMDAgPSA7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21h
Y29zeF8xMDExMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogRU5BQkxFX1dJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gRU5BQkxFX1dJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVDsKIAotRU5BQkxFX0lOVEwgPSA7CitFTkFCTEVfSU5UTCA9IEVOQUJMRV9J
TlRMOwogCiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxF
X0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxf
U0RLKSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19Z
RVMgPSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYwOTFiMWY5OTY2MGNkODE4
ZmI0NzJjZTFlZjlhNDJjZWM5N2Y4ZDYuLjc0MzNkYzAzNTEyNTk1YjliMDNmMTg1ZWMzZWEyMGEz
MWE3Y2RiZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0wNy0xMyAgQW5keSBWYW5XYWdv
bmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNp
YyB0eXBlcyBmb3IgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjkyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9u
czogRW5hYmxlZCBpbnRsIHRlc3RzLgorICAgICAgICAqIGpzL2ludGwtZXhwZWN0ZWQudHh0OiBV
cGRhdGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9pbnRsLmpzOiBBZGRlZCB0ZXN0cyBm
b3IgQ29sbGF0b3IsIE51bWJlckZvcm1hdCwgYW5kIERhdGVUaW1lRm9ybWF0LgorCiAyMDE1LTA3
LTEzICBCYXNpbGUgQ2xlbWVudCAgPGJhc2lsZV9jbGVtZW50QGFwcGxlLmNvbT4KIAogICAgICAg
ICBPYmplY3QgY3ljbGVzIHNob3VsZCBub3QgcHJldmVudCBhbGxvY2F0aW9uIGVsaW1pbmF0aW9u
L3NpbmtpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGFjNjg2YmYyNjZiMDNiZWE3MTE5MWM4MTU1
YmUxYTVlZmY4MTIwNDYuLmIxMWYyOTVjZTBkYTgyZDgwZWFkMmFjYmVmMWEyNjQyYTU2MmUwMGEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTI2LDYgKzUyNiwzIEBAIHdlYmtpdC5vcmcvYi8xNDYx
ODIgZWRpdGluZy9zZWxlY3Rpb24vbGVhay1kb2N1bWVudC13aXRoLXNlbGVjdGlvbi1pbnNpZGUu
aHRtbCBbCiAKIHdlYmtpdC5vcmcvYi8xNDY0MzQgZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC9z
aXplcyBbIFNraXAgXQogCi0jIEludGwgaXMgbm90IGVuYWJsZWQgeWV0Ci1qcy9pbnRsLmh0bWwg
WyBTa2lwIF0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvaW50bC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9qcy9pbnRsLWV4cGVjdGVkLnR4dAppbmRleCBiMjZhZjg2MzM2NTFiMTQw
YzhmMTBiODk3YTkwOGYwY2E4Y2FhOWQ2Li43ZWE4YWU1MzU5Nzg2MWVhMWQ5OWExMzhlNzdiNjdh
NDNkZjk4ZGI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9pbnRsLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLVRo
aXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBJbnRsIG9iamVjdCBhcyBkZXNjcmli
ZWQgaW4gOCBvZiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkgU3BlY2lm
aWNhdGlvbi4KK1RoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBJbnRsIG9iamVj
dCBhcyBkZXNjcmliZWQgaW4gdGhlIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJ
IFNwZWNpZmljYXRpb24gKEVDTUEtNDAyIDIuMCkuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KIApAQCAtMTEsNiArMTEsNTcgQEAgUEFTUyBuZXcgSW50bCB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBPYmplY3QgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcKIFBBU1MgSW50
bCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludGwgaXMgbm90IGEgZnVuY3Rpb24uIChJ
biAnSW50bCgpJywgJ0ludGwnIGlzIGFuIGluc3RhbmNlIG9mIE9iamVjdCkuCiBQQVNTIGRlbGV0
ZSBJbnRsOyBpcyB0cnVlCiBQQVNTICdJbnRsJyBpbiBnbG9iYWwoKSBpcyBmYWxzZQorUEFTUyBJ
bnRsLkNvbGxhdG9yIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIEludGwuQ29sbGF0
b3IoKSBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLkNvbGxhdG9yCitQQVNTIEludGwuQ29sbGF0b3Iu
Y2FsbCh7fSkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5Db2xsYXRvcgorUEFTUyBuZXcgSW50bC5D
b2xsYXRvcigpIGlzIGFuIGluc3RhbmNlIG9mIEludGwuQ29sbGF0b3IKK1BBU1MgSW50bC5Db2xs
YXRvci5sZW5ndGggaXMgMAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKElu
dGwuQ29sbGF0b3IsICdwcm90b3R5cGUnKS53cml0YWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IsICdwcm90b3R5cGUnKS5lbnVt
ZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50
bC5Db2xsYXRvciwgJ3Byb3RvdHlwZScpLmNvbmZpZ3VyYWJsZSBpcyBmYWxzZQorUEFTUyBJbnRs
LkNvbGxhdG9yLnN1cHBvcnRlZExvY2FsZXNPZi5sZW5ndGggaXMgMQorUEFTUyBJbnRsLkNvbGxh
dG9yLnN1cHBvcnRlZExvY2FsZXNPZigpIGlzIGFuIGluc3RhbmNlIG9mIEFycmF5CitQQVNTIElu
dGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzIEludGwuQ29sbGF0b3IKK1BBU1Mg
SW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlv
bgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IucHJv
dG90eXBlLCAnY29tcGFyZScpLmdldCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IucHJvdG90eXBlLCAn
Y29tcGFyZScpLnNldCBpcyB1bmRlZmluZWQKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSwgJ2NvbXBhcmUnKS5lbnVtZXJhYmxlIGlz
IGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRv
ci5wcm90b3R5cGUsICdjb21wYXJlJykuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgSW50bC5D
b2xsYXRvci5wcm90b3R5cGUuY29tcGFyZS5sZW5ndGggaXMgMgorUEFTUyBJbnRsLk51bWJlckZv
cm1hdCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBJbnRsLk51bWJlckZvcm1hdCgp
IGlzIGFuIGluc3RhbmNlIG9mIEludGwuTnVtYmVyRm9ybWF0CitQQVNTIEludGwuTnVtYmVyRm9y
bWF0LmNhbGwoe30pIGlzIGFuIGluc3RhbmNlIG9mIEludGwuTnVtYmVyRm9ybWF0CitQQVNTIG5l
dyBJbnRsLk51bWJlckZvcm1hdCgpIGlzIGFuIGluc3RhbmNlIG9mIEludGwuTnVtYmVyRm9ybWF0
CitQQVNTIEludGwuTnVtYmVyRm9ybWF0Lmxlbmd0aCBpcyAwCitQQVNTIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQsICdwcm90b3R5cGUnKS53cml0YWJs
ZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVt
YmVyRm9ybWF0LCAncHJvdG90eXBlJykuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LCAncHJvdG90eXBlJyku
Y29uZmlndXJhYmxlIGlzIGZhbHNlCitQQVNTIEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExv
Y2FsZXNPZi5sZW5ndGggaXMgMQorUEFTUyBJbnRsLk51bWJlckZvcm1hdC5zdXBwb3J0ZWRMb2Nh
bGVzT2YoKSBpcyBhbiBpbnN0YW5jZSBvZiBBcnJheQorUEFTUyBJbnRsLk51bWJlckZvcm1hdC5w
cm90b3R5cGUuY29uc3RydWN0b3IgaXMgSW50bC5OdW1iZXJGb3JtYXQKK1BBU1MgSW50bC5OdW1i
ZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFT
UyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LnByb3Rv
dHlwZSwgJ2Zvcm1hdCcpLmdldCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSwg
J2Zvcm1hdCcpLnNldCBpcyB1bmRlZmluZWQKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5lbnVtZXJhYmxl
IGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1i
ZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1Mg
SW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5sZW5ndGggaXMgMQorUEFTUyBJbnRs
LkRhdGVUaW1lRm9ybWF0IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIEludGwuRGF0
ZVRpbWVGb3JtYXQoKSBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLkRhdGVUaW1lRm9ybWF0CitQQVNT
IEludGwuRGF0ZVRpbWVGb3JtYXQuY2FsbCh7fSkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5EYXRl
VGltZUZvcm1hdAorUEFTUyBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpIGlzIGFuIGluc3RhbmNl
IG9mIEludGwuRGF0ZVRpbWVGb3JtYXQKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5sZW5ndGgg
aXMgMAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVG
b3JtYXQsICdwcm90b3R5cGUnKS53cml0YWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQsICdwcm90b3R5cGUnKS5lbnVt
ZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50
bC5EYXRlVGltZUZvcm1hdCwgJ3Byb3RvdHlwZScpLmNvbmZpZ3VyYWJsZSBpcyBmYWxzZQorUEFT
UyBJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZi5sZW5ndGggaXMgMQorUEFT
UyBJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZigpIGlzIGFuIGluc3RhbmNl
IG9mIEFycmF5CitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmNvbnN0cnVjdG9y
IGlzIEludGwuRGF0ZVRpbWVGb3JtYXQKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5
cGUuZm9ybWF0IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQn
KS5nZXQgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLnNl
dCBpcyB1bmRlZmluZWQKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRs
LkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmVudW1lcmFibGUgaXMgZmFsc2UK
K1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0
LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQQVNTIEludGwuRGF0
ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5sZW5ndGggaXMgMQogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvaW50bC5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9p
bnRsLmpzCmluZGV4IDhhNGNmNTg0ZTJmMDljZWM4N2Q1NWY5MzIyNjQ0M2VkNzE4MzJlMzkuLjhj
NmJiY2M1Nzk4NmIzNDM4MGM2NzlmYzc0NmJmOWFhNDY4NDY0MTEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9pbnRsLmpzCkBAIC0xLDIwICsxLDIwIEBACi0vLyBUaGlzIGZlYXR1cmUgaXNuJ3Qg
ZW5hYmxlZCB5ZXQuCi0vL0Agc2tpcAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3MgdGhl
IGJlaGF2aW9yIG9mIHRoZSBJbnRsIG9iamVjdCBhcyBkZXNjcmliZWQgaW4gdGhlIEVDTUFTY3Jp
cHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmljYXRpb24gKEVDTUEtNDAyIDIuMCku
Iik7CiAKLWRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRoZSBiZWhhdmlvciBvZiB0aGUg
SW50bCBvYmplY3QgYXMgZGVzY3JpYmVkIGluIDggb2YgdGhlIEVDTUFTY3JpcHQgSW50ZXJuYXRp
b25hbGl6YXRpb24gQVBJIFNwZWNpZmljYXRpb24uIik7CisvLyA4IFRoZSBJbnRsIE9iamVjdAog
Ci0vLyBUaGUgSW50bCBvYmplY3QgaXMgYSBzdGFuZGFyZCBidWlsdC1pbiBvYmplY3QgdGhhdCBp
cyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgSW50bCBwcm9wZXJ0eSBvZiB0aGUgZ2xvYmFsIG9i
amVjdC4KKy8vIFRoZSBJbnRsIG9iamVjdCBpcyBhIHNpbmdsZSBvcmRpbmFyeSBvYmplY3QuCiBz
aG91bGRCZVR5cGUoIkludGwiLCAiT2JqZWN0Iik7CiBzaG91bGRCZSgidHlwZW9mIEludGwiLCAi
J29iamVjdCciKTsKIHNob3VsZEJlKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoSW50
bCkiLCAiJ1tvYmplY3QgT2JqZWN0XSciKTsKIAotLy8gVGhlIHZhbHVlIG9mIHRoZSBbW1Byb3Rv
dHlwZV1dIGludGVybmFsIHByb3BlcnR5IG9mIHRoZSBJbnRsIG9iamVjdCBpcyB0aGUgYnVpbHQt
aW4gT2JqZWN0IHByb3RvdHlwZSBvYmplY3Qgc3BlY2lmaWVkIGJ5IHRoZSBFQ01BU2NyaXB0IExh
bmd1YWdlIFNwZWNpZmljYXRpb24uCisvLyBUaGUgdmFsdWUgb2YgdGhlIFtbUHJvdG90eXBlXV0g
aW50ZXJuYWwgc2xvdCBvZiB0aGUgSW50bCBvYmplY3QgaXMgdGhlIGludHJpbnNpYyBvYmplY3Qg
JU9iamVjdFByb3RvdHlwZSUuCiBzaG91bGRCZVRydWUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihJ
bnRsKSA9PT0gT2JqZWN0LnByb3RvdHlwZSIpOwogCi0vLyBUaGUgSW50bCBvYmplY3QgZG9lcyBu
b3QgaGF2ZSBhIFtbQ29uc3RydWN0XV0gaW50ZXJuYWwgcHJvcGVydHk7IGl0IGlzIG5vdCBwb3Nz
aWJsZSB0byB1c2UgdGhlIEludGwgb2JqZWN0IGFzIGEgY29uc3RydWN0b3Igd2l0aCB0aGUgbmV3
IG9wZXJhdG9yLgorLy8gVGhlIEludGwgb2JqZWN0IGlzIG5vdCBhIGZ1bmN0aW9uIG9iamVjdC4K
Ky8vIEl0IGRvZXMgbm90IGhhdmUgYSBbW0NvbnN0cnVjdF1dIGludGVybmFsIG1ldGhvZDsgaXQg
aXMgbm90IHBvc3NpYmxlIHRvIHVzZSB0aGUgSW50bCBvYmplY3QgYXMgYSBjb25zdHJ1Y3RvciB3
aXRoIHRoZSBuZXcgb3BlcmF0b3IuCiBzaG91bGRUaHJvdygibmV3IEludGwiLCAiJ1R5cGVFcnJv
cjogT2JqZWN0IGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nIFxcJ25ldyBJbnRsXFwn
KSciKTsKIAotLy8gVGhlIEludGwgb2JqZWN0IGRvZXMgbm90IGhhdmUgYSBbW0NhbGxdXSBpbnRl
cm5hbCBwcm9wZXJ0eTsgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGludm9rZSB0aGUgSW50bCBvYmpl
Y3QgYXMgYSBmdW5jdGlvbi4KKy8vIFRoZSBJbnRsIG9iamVjdCBkb2VzIG5vdCBoYXZlIGEgW1tD
YWxsXV0gaW50ZXJuYWwgbWV0aG9kOyBpdCBpcyBub3QgcG9zc2libGUgdG8gaW52b2tlIHRoZSBJ
bnRsIG9iamVjdCBhcyBhIGZ1bmN0aW9uLgogc2hvdWxkVGhyb3coIkludGwoKSIsICInVHlwZUVy
cm9yOiBJbnRsIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gXFwnSW50bCgpXFwnLCBcXCdJbnRsXFwn
IGlzIGFuIGluc3RhbmNlIG9mIE9iamVjdCknIik7CiAKIC8vIGlzIGRlbGV0YWJsZSwgaW5mZXJy
ZWQgZnJvbSB1c2Ugb2YgIkluaXRpYWwiIGluIHNwZWMsIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBp
bXBsZW1lbnRhdGlvbnMKQEAgLTI1LDMgKzI1LDE2OSBAQCBmdW5jdGlvbiBnbG9iYWwoKSB7IHJl
dHVybiB0aGlzOyB9CiBzaG91bGRCZUZhbHNlKCInSW50bCcgaW4gZ2xvYmFsKCkiKTsKIAogSW50
bCA9IF9fSW50bDsKKworCisKKy8vIDEwLjEgVGhlIEludGwuQ29sbGF0b3IgQ29uc3RydWN0b3IK
KworLy8gVGhlIEludGwuQ29sbGF0b3IgY29uc3RydWN0b3IgaXMgYSBzdGFuZGFyZCBidWlsdC1p
biBwcm9wZXJ0eSBvZiB0aGUgSW50bCBvYmplY3QuCitzaG91bGRCZVR5cGUoIkludGwuQ29sbGF0
b3IiLCAiRnVuY3Rpb24iKTsKKworLy8gMTAuMS4yIEludGwuQ29sbGF0b3IoWyBsb2NhbGVzIFss
IG9wdGlvbnNdXSkKK3Nob3VsZEJlVHlwZSgiSW50bC5Db2xsYXRvcigpIiwgIkludGwuQ29sbGF0
b3IiKTsKK3Nob3VsZEJlVHlwZSgiSW50bC5Db2xsYXRvci5jYWxsKHt9KSIsICJJbnRsLkNvbGxh
dG9yIik7CitzaG91bGRCZVR5cGUoIm5ldyBJbnRsLkNvbGxhdG9yKCkiLCAiSW50bC5Db2xsYXRv
ciIpOworCisvLyAxMC4yIFByb3BlcnRpZXMgb2YgdGhlIEludGwuQ29sbGF0b3IgQ29uc3RydWN0
b3IKKworLy8gbGVuZ3RoIHByb3BlcnR5ICh3aG9zZSB2YWx1ZSBpcyAwKQorc2hvdWxkQmUoIklu
dGwuQ29sbGF0b3IubGVuZ3RoIiwgIjAiKTsKKworLy8gMTAuMi4xIEludGwuQ29sbGF0b3IucHJv
dG90eXBlCisKKy8vIFRoaXMgcHJvcGVydHkgaGFzIHRoZSBhdHRyaWJ1dGVzIHsgW1tXcml0YWJs
ZV1dOiBmYWxzZSwgW1tFbnVtZXJhYmxlXV06IGZhbHNlLCBbW0NvbmZpZ3VyYWJsZV1dOiBmYWxz
ZSB9Lgorc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRs
LkNvbGxhdG9yLCAncHJvdG90eXBlJykud3JpdGFibGUiKTsKK3Nob3VsZEJlRmFsc2UoIk9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvciwgJ3Byb3RvdHlwZScpLmVu
dW1lcmFibGUiKTsKK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSW50bC5Db2xsYXRvciwgJ3Byb3RvdHlwZScpLmNvbmZpZ3VyYWJsZSIpOworCisvLyAxMC4y
LjIgSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRMb2NhbGVzT2YgKGxvY2FsZXMgWywgb3B0aW9ucyBd
KQorCisvLyBUaGUgdmFsdWUgb2YgdGhlIGxlbmd0aCBwcm9wZXJ0eSBvZiB0aGUgc3VwcG9ydGVk
TG9jYWxlc09mIG1ldGhvZCBpcyAxLgorc2hvdWxkQmUoIkludGwuQ29sbGF0b3Iuc3VwcG9ydGVk
TG9jYWxlc09mLmxlbmd0aCIsICIxIik7CisKKy8vIFJldHVybnMgU3VwcG9ydGVkTG9jYWxlcwor
c2hvdWxkQmVUeXBlKCJJbnRsLkNvbGxhdG9yLnN1cHBvcnRlZExvY2FsZXNPZigpIiwgIkFycmF5
Iik7CisKKy8vIDEwLjMgUHJvcGVydGllcyBvZiB0aGUgSW50bC5Db2xsYXRvciBQcm90b3R5cGUg
T2JqZWN0CisKKy8vIFRoZSB2YWx1ZSBvZiBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciBpcyAlQ29sbGF0b3IlLgorc2hvdWxkQmUoIkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNv
bnN0cnVjdG9yIiwgIkludGwuQ29sbGF0b3IiKTsKKworLy8gMTAuMy4zIEludGwuQ29sbGF0b3Iu
cHJvdG90eXBlLmNvbXBhcmUKKworLy8gVGhpcyBuYW1lZCBhY2Nlc3NvciBwcm9wZXJ0eSByZXR1
cm5zIGEgZnVuY3Rpb24gdGhhdCBjb21wYXJlcyB0d28gc3RyaW5ncyBhY2NvcmRpbmcgdG8gdGhl
IHNvcnQgb3JkZXIgb2YgdGhpcyBDb2xsYXRvciBvYmplY3QuCitzaG91bGRCZVR5cGUoIkludGwu
Q29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUiLCAiRnVuY3Rpb24iKTsKKworLy8gVGhlIHZhbHVl
IG9mIHRoZSBbW0dldF1dIGF0dHJpYnV0ZSBpcyBhIGZ1bmN0aW9uCitzaG91bGRCZVR5cGUoIk9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvci5wcm90b3R5cGUsICdj
b21wYXJlJykuZ2V0IiwgIkZ1bmN0aW9uIik7CisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUgW1tTZXRd
XSBhdHRyaWJ1dGUgaXMgdW5kZWZpbmVkLgorc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvci5wcm90b3R5cGUsICdjb21wYXJlJykuc2V0IiwgInVu
ZGVmaW5lZCIpOworCisvLyBNYXRjaCBGaXJlZm94IHdoZXJlIHVuc3BlY2lmZWQuCitzaG91bGRC
ZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IucHJv
dG90eXBlLCAnY29tcGFyZScpLmVudW1lcmFibGUiKTsKK3Nob3VsZEJlVHJ1ZSgiT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSwgJ2NvbXBhcmUn
KS5jb25maWd1cmFibGUiKTsKKworLy8gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0
eSBpcyAyLgorc2hvdWxkQmUoIkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUubGVuZ3Ro
IiwgIjIiKTsKKworCisKKy8vIDExLjEgVGhlIEludGwuTnVtYmVyRm9ybWF0IENvbnN0cnVjdG9y
CisKKy8vIFRoZSBJbnRsLk51bWJlckZvcm1hdCBjb25zdHJ1Y3RvciBpcyBhIHN0YW5kYXJkIGJ1
aWx0LWluIHByb3BlcnR5IG9mIHRoZSBJbnRsIG9iamVjdC4KK3Nob3VsZEJlVHlwZSgiSW50bC5O
dW1iZXJGb3JtYXQiLCAiRnVuY3Rpb24iKTsKKworLy8gMTEuMS4yIEludGwuTnVtYmVyRm9ybWF0
KFsgbG9jYWxlcyBbLCBvcHRpb25zXV0pCitzaG91bGRCZVR5cGUoIkludGwuTnVtYmVyRm9ybWF0
KCkiLCAiSW50bC5OdW1iZXJGb3JtYXQiKTsKK3Nob3VsZEJlVHlwZSgiSW50bC5OdW1iZXJGb3Jt
YXQuY2FsbCh7fSkiLCAiSW50bC5OdW1iZXJGb3JtYXQiKTsKK3Nob3VsZEJlVHlwZSgibmV3IElu
dGwuTnVtYmVyRm9ybWF0KCkiLCAiSW50bC5OdW1iZXJGb3JtYXQiKTsKKworLy8gMTEuMiBQcm9w
ZXJ0aWVzIG9mIHRoZSBJbnRsLk51bWJlckZvcm1hdCBDb25zdHJ1Y3RvcgorCisvLyBsZW5ndGgg
cHJvcGVydHkgKHdob3NlIHZhbHVlIGlzIDApCitzaG91bGRCZSgiSW50bC5OdW1iZXJGb3JtYXQu
bGVuZ3RoIiwgIjAiKTsKKworLy8gMTEuMi4xIEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZQor
CisvLyBUaGlzIHByb3BlcnR5IGhhcyB0aGUgYXR0cmlidXRlcyB7IFtbV3JpdGFibGVdXTogZmFs
c2UsIFtbRW51bWVyYWJsZV1dOiBmYWxzZSwgW1tDb25maWd1cmFibGVdXTogZmFsc2UgfS4KK3No
b3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJG
b3JtYXQsICdwcm90b3R5cGUnKS53cml0YWJsZSIpOworc2hvdWxkQmVGYWxzZSgiT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdCwgJ3Byb3RvdHlwZScpLmVu
dW1lcmFibGUiKTsKK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSW50bC5OdW1iZXJGb3JtYXQsICdwcm90b3R5cGUnKS5jb25maWd1cmFibGUiKTsKKworLy8g
MTEuMi4yIEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZiAobG9jYWxlcyBbLCBv
cHRpb25zIF0pCisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUgbGVuZ3RoIHByb3BlcnR5IG9mIHRoZSBz
dXBwb3J0ZWRMb2NhbGVzT2YgbWV0aG9kIGlzIDEuCitzaG91bGRCZSgiSW50bC5OdW1iZXJGb3Jt
YXQuc3VwcG9ydGVkTG9jYWxlc09mLmxlbmd0aCIsICIxIik7CisKKy8vIFJldHVybnMgU3VwcG9y
dGVkTG9jYWxlcworc2hvdWxkQmVUeXBlKCJJbnRsLk51bWJlckZvcm1hdC5zdXBwb3J0ZWRMb2Nh
bGVzT2YoKSIsICJBcnJheSIpOworCisvLyAxMS4zIFByb3BlcnRpZXMgb2YgdGhlIEludGwuTnVt
YmVyRm9ybWF0IFByb3RvdHlwZSBPYmplY3QKKworLy8gVGhlIHZhbHVlIG9mIEludGwuTnVtYmVy
Rm9ybWF0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyAlTnVtYmVyRm9ybWF0JS4KK3Nob3VsZEJl
KCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0b3IiLCAiSW50bC5OdW1iZXJG
b3JtYXQiKTsKKworLy8gMTEuMy4zIEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQK
KworLy8gVGhpcyBuYW1lZCBhY2Nlc3NvciBwcm9wZXJ0eSByZXR1cm5zIGEgZnVuY3Rpb24gdGhh
dCBmb3JtYXRzIGEgbnVtYmVyIGFjY29yZGluZyB0byB0aGUgZWZmZWN0aXZlIGxvY2FsZSBhbmQg
dGhlIGZvcm1hdHRpbmcgb3B0aW9ucyBvZiB0aGlzIE51bWJlckZvcm1hdCBvYmplY3QuCitzaG91
bGRCZVR5cGUoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQiLCAiRnVuY3Rpb24i
KTsKKworLy8gVGhlIHZhbHVlIG9mIHRoZSBbW0dldF1dIGF0dHJpYnV0ZSBpcyBhIGZ1bmN0aW9u
CitzaG91bGRCZVR5cGUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1i
ZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykuZ2V0IiwgIkZ1bmN0aW9uIik7CisKKy8vIFRo
ZSB2YWx1ZSBvZiB0aGUgW1tTZXRdXSBhdHRyaWJ1dGUgaXMgdW5kZWZpbmVkLgorc2hvdWxkQmUo
Ik9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQucHJvdG90
eXBlLCAnZm9ybWF0Jykuc2V0IiwgInVuZGVmaW5lZCIpOworCisvLyBNYXRjaCBGaXJlZm94IHdo
ZXJlIHVuc3BlY2lmZWQuCitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmVudW1lcmFibGUi
KTsKK3Nob3VsZEJlVHJ1ZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51
bWJlckZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5jb25maWd1cmFibGUiKTsKKworLy8gVGhl
IHZhbHVlIG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAxLgorc2hvdWxkQmUoIkludGwuTnVt
YmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQubGVuZ3RoIiwgIjEiKTsKKworCisKKy8vIDEyLjEg
VGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgQ29uc3RydWN0b3IKKworLy8gVGhlIEludGwuRGF0ZVRp
bWVGb3JtYXQgY29uc3RydWN0b3IgaXMgYSBzdGFuZGFyZCBidWlsdC1pbiBwcm9wZXJ0eSBvZiB0
aGUgSW50bCBvYmplY3QuCitzaG91bGRCZVR5cGUoIkludGwuRGF0ZVRpbWVGb3JtYXQiLCAiRnVu
Y3Rpb24iKTsKKworLy8gMTIuMS4yIEludGwuRGF0ZVRpbWVGb3JtYXQoWyBsb2NhbGVzIFssIG9w
dGlvbnNdXSkKK3Nob3VsZEJlVHlwZSgiSW50bC5EYXRlVGltZUZvcm1hdCgpIiwgIkludGwuRGF0
ZVRpbWVGb3JtYXQiKTsKK3Nob3VsZEJlVHlwZSgiSW50bC5EYXRlVGltZUZvcm1hdC5jYWxsKHt9
KSIsICJJbnRsLkRhdGVUaW1lRm9ybWF0Iik7CitzaG91bGRCZVR5cGUoIm5ldyBJbnRsLkRhdGVU
aW1lRm9ybWF0KCkiLCAiSW50bC5EYXRlVGltZUZvcm1hdCIpOworCisvLyAxMi4yIFByb3BlcnRp
ZXMgb2YgdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgQ29uc3RydWN0b3IKKworLy8gbGVuZ3RoIHBy
b3BlcnR5ICh3aG9zZSB2YWx1ZSBpcyAwKQorc2hvdWxkQmUoIkludGwuRGF0ZVRpbWVGb3JtYXQu
bGVuZ3RoIiwgIjAiKTsKKworLy8gMTIuMi4xIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBl
CisKKy8vIFRoaXMgcHJvcGVydHkgaGFzIHRoZSBhdHRyaWJ1dGVzIHsgW1tXcml0YWJsZV1dOiBm
YWxzZSwgW1tFbnVtZXJhYmxlXV06IGZhbHNlLCBbW0NvbmZpZ3VyYWJsZV1dOiBmYWxzZSB9Lgor
c2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVU
aW1lRm9ybWF0LCAncHJvdG90eXBlJykud3JpdGFibGUiKTsKK3Nob3VsZEJlRmFsc2UoIk9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdCwgJ3Byb3RvdHlw
ZScpLmVudW1lcmFibGUiKTsKK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdCwgJ3Byb3RvdHlwZScpLmNvbmZpZ3VyYWJsZSIp
OworCisvLyAxMi4yLjIgSW50bC5EYXRlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YgKGxv
Y2FsZXMgWywgb3B0aW9ucyBdKQorCisvLyBUaGUgdmFsdWUgb2YgdGhlIGxlbmd0aCBwcm9wZXJ0
eSBvZiB0aGUgc3VwcG9ydGVkTG9jYWxlc09mIG1ldGhvZCBpcyAxLgorc2hvdWxkQmUoIkludGwu
RGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mLmxlbmd0aCIsICIxIik7CisKKy8vIFJl
dHVybnMgU3VwcG9ydGVkTG9jYWxlcworc2hvdWxkQmVUeXBlKCJJbnRsLkRhdGVUaW1lRm9ybWF0
LnN1cHBvcnRlZExvY2FsZXNPZigpIiwgIkFycmF5Iik7CisKKy8vIDEyLjMgUHJvcGVydGllcyBv
ZiB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCBQcm90b3R5cGUgT2JqZWN0CisKKy8vIFRoZSB2YWx1
ZSBvZiBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyAlRGF0ZVRp
bWVGb3JtYXQlLgorc2hvdWxkQmUoIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmNvbnN0
cnVjdG9yIiwgIkludGwuRGF0ZVRpbWVGb3JtYXQiKTsKKworLy8gMTIuMy4zIEludGwuRGF0ZVRp
bWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdAorCisvLyBUaGlzIG5hbWVkIGFjY2Vzc29yIHByb3Bl
cnR5IHJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGZvcm1hdHMgYSBkYXRlIGFjY29yZGluZyB0byB0
aGUgZWZmZWN0aXZlIGxvY2FsZSBhbmQgdGhlIGZvcm1hdHRpbmcgb3B0aW9ucyBvZiB0aGlzIERh
dGVUaW1lRm9ybWF0IG9iamVjdC4KK3Nob3VsZEJlVHlwZSgiSW50bC5EYXRlVGltZUZvcm1hdC5w
cm90b3R5cGUuZm9ybWF0IiwgIkZ1bmN0aW9uIik7CisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUgW1tH
ZXRdXSBhdHRyaWJ1dGUgaXMgYSBmdW5jdGlvbgorc2hvdWxkQmVUeXBlKCJPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0
JykuZ2V0IiwgIkZ1bmN0aW9uIik7CisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUgW1tTZXRdXSBhdHRy
aWJ1dGUgaXMgdW5kZWZpbmVkLgorc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5zZXQiLCAidW5k
ZWZpbmVkIik7CisKKy8vIE1hdGNoIEZpcmVmb3ggd2hlcmUgdW5zcGVjaWZlZC4KK3Nob3VsZEJl
RmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1h
dC5wcm90b3R5cGUsICdmb3JtYXQnKS5lbnVtZXJhYmxlIik7CitzaG91bGRCZVRydWUoIk9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUs
ICdmb3JtYXQnKS5jb25maWd1cmFibGUiKTsKKworLy8gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0
aCBwcm9wZXJ0eSBpcyAxLgorc2hvdWxkQmUoIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBl
LmZvcm1hdC5sZW5ndGgiLCAiMSIpOworCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257016</attachid>
            <date>2015-07-17 19:25:06 -0700</date>
            <delta_ts>2015-07-18 07:42:18 -0700</delta_ts>
            <desc>updated comments, enabled more flags</desc>
            <filename>bug-146926-20150717202356.patch</filename>
            <type>text/plain</type>
            <size>153790</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2Nzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZTdmYWY5NTk3ODI3NGQ5ODA5NDBlOGI2Yzk1M2NmOTk4ZmJmMmNiLi40Y2RmM2UzZjc0NTRjNjJm
NjNiNGY2MjI5MjhiYjY3MjM4NjRiYjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDEgQEAKKzIwMTUtMDctMTMgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVy
QGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3Jp
cHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIEFkZHMgYmFzaWMgdHlwZXMgZm9y
IEVDTUEtNDAyIDJuZCBlZGl0aW9uLCBidXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBmdWxsIGxv
Y2FsZS1hd2FyZSBmZWF0dXJlcyB5ZXQuCisgICAgICAgIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTQwMi8yLjAvRUNNQS00MDIucGRmCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRlZCBuZXcg
SW50bCBmaWxlcy4KKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZzogRW5hYmxlIElOVEwuCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogQWRkZWQg
SW50bCBmaWxlcy4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOiBBZGRlZCBJbnRsIGZpbGVzLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaDogQWRkZWQgQ29sbGF0b3IsIE51bWJlckZvcm1hdCwgYW5kIERhdGVUaW1lRm9ybWF0
LgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDogTWFkZSBEYXRlLm5vdyBw
dWJsaWMuCisgICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaDogTWFkZSBEYXRlLm5v
dyBwdWJsaWMuCisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6SW50
bENvbGxhdG9yKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6Oklu
dGxDb2xsYXRvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6
c2V0Qm91bmRDb21wYXJlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yRnVuY0NvbXBhcmUp
OiBBZGRlZCBwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiB1c2luZyBjb2RlUG9pbnRDb21wYXJl
LgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpJbnRsQ29sbGF0b3I6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9y
Ojpib3VuZENvbXBhcmUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0
b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6SW50bENvbGxh
dG9yQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJbnRsQ29sbGF0b3IpOiBB
ZGRlZCBDb2xsYXRvciBjb25zdHJ1Y3RvciAoMTAuMS4yKS4KKyAgICAgICAgKEpTQzo6Y2FsbElu
dGxDb2xsYXRvcik6IEFkZGVkIENvbGxhdG9yIGNvbnN0cnVjdG9yICgxMC4xLjIpLgorICAgICAg
ICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAg
ICAgIChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAg
IChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2Yp
OiBBZGRlZCBwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcgW10uCisgICAgICAg
IChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Y29sbGF0b3JTdHJ1Y3R1cmUpOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkludGxDb2xsYXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxh
dG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0
b3JQcm90b3R5cGU6OkludGxDb2xsYXRvclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkludGxD
b2xsYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkludGxD
b2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUpOiBBZGRlZCBjb21wYXJlIGdldHRlciAoMTAu
My4zKQorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRp
b25zKTogQWRkZWQgcGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIHt9LgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Oklu
dGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9y
bWF0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6
OkludGxEYXRlVGltZUZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRlc3Ry
b3kpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNldEJvdW5kRm9ybWF0KToKKyAgICAg
ICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lKTogQWRkZWQgcGxh
Y2Vob2xkZXIgaW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIG5ldyBEYXRlKHZhbHVlKS50b1N0cmlu
ZygpLgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Lmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpT
Qzo6SW50bERhdGVUaW1lRm9ybWF0Ojpib3VuZEZvcm1hdCk6CisgICAgICAgICogcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1h
dCk6IEFkZGVkIERhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yICgxMi4xLjIpLgorICAgICAgICAo
SlNDOjpjYWxsSW50bERhdGVUaW1lRm9ybWF0KTogQWRkZWQgRGF0ZVRpbWVGb3JtYXQgY29uc3Ry
dWN0b3IgKDEyLjEuMikuCisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6IEFkZGVkIHBs
YWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyBbXS4KKyAgICAgICAgKEpTQzo6SW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpkYXRlVGltZUZvcm1hdFN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6SW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KTogQWRkZWQgZm9ybWF0IGdldHRlciAo
MTIuMy4zKS4KKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jl
c29sdmVkT3B0aW9ucyk6IEFkZGVkIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmlu
ZyB7fS4KKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50
bE51bWJlckZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJl
ckZvcm1hdDo6SW50bE51bWJlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3Jt
YXQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6ZGVz
dHJveSk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzZXRCb3VuZEZvcm1hdCk6CisgICAgICAg
IChKU0M6OkludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyKTogQWRkZWQgcGxhY2Vob2xk
ZXIgaW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIE51bWJlcih2YWx1ZSkudG9TdHJpbmcoKS4KKyAg
ICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDogQWRkZWQuCisgICAgICAgIChKU0M6
OkludGxOdW1iZXJGb3JtYXQ6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJl
ckZvcm1hdDo6Ym91bmRGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3I6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KTogQWRkZWQgTnVtYmVyRm9ybWF0IGNvbnN0
cnVjdG9yICgxMS4xLjIpLgorICAgICAgICAoSlNDOjpjYWxsSW50bE51bWJlckZvcm1hdCk6IEFk
ZGVkIE51bWJlckZvcm1hdCBjb25zdHJ1Y3RvciAoMTEuMS4yKS4KKyAgICAgICAgKEpTQzo6SW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChK
U0M6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2Fs
ZXNPZik6IEFkZGVkIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyBbXS4KKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpudW1iZXJGb3JtYXRT
dHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KTogQWRkZWQgZm9ybWF0IGdldHRlciAoMTEuMy4zKS4K
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlv
bnMpOiBBZGRlZCBwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcge30uCisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKTogQWRkZWQg
Q29sbGF0b3IsIE51bWJlckZvcm1hdCwgYW5kIERhdGVUaW1lRm9ybWF0IHByb3BlcnRpZXMgKDgu
MSkuCisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bE9iamVjdC5oOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0Ojpjb2xsYXRv
ckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6Y29sbGF0b3JQcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0Ojpjb2xsYXRvclN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OkludGxPYmplY3Q6Om51bWJlckZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6SW50bE9iamVjdDo6bnVtYmVyRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6
SW50bE9iamVjdDo6bnVtYmVyRm9ybWF0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bE9i
amVjdDo6ZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxPYmpl
Y3Q6OmRhdGVUaW1lRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6
ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisKIDIwMTUtMDct
MTMgIEJhc2lsZSBDbGVtZW50ICA8YmFzaWxlX2NsZW1lbnRAYXBwbGUuY29tPgogCiAgICAgICAg
IE9iamVjdCBjeWNsZXMgc2hvdWxkIG5vdCBwcmV2ZW50IGFsbG9jYXRpb24gZWxpbWluYXRpb24v
c2lua2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk4MDJmNDY2ZThiZGE3NDY5MGY1Mzg3OTUzYjQ2ZjUzOGZj
MGZhMWYuLmIzYmRmZDljZjc2OWMyYTBiMDdkMjIwMmE3YzRmNDNmYThmMjUxYzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wNy0xMyAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFs
ZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNpYyB0eXBlcyBmb3Ig
RUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjkyNgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWc6IEVuYWJsZWQgSU5UTC4KKwogMjAxNS0wNy0xMyAgTWF0dCBSYWpjYSAgPG1y
YWpjYUBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWEgU2Vzc2lvbjogYWRkIHBsdW1iaW5nIGZv
ciBkZWxpdmVyaW5nIHN0YXJ0L2VuZC1vZi1pbnRlcnJ1cHRpb24gZXZlbnRzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKaW5kZXggNzMwZTJmY2E1YWNkMmUyYmI5ZGVlZTViNDdhODI3NjMxNjQ5NGE0NC4uNzVlNWFm
NDI3Yzg3ZjJlYzE1Mzg2NmUxMTRmOTgwY2JiZjA2MTExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDE1LTA3LTEzICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRl
ckBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHR5cGVzIGZvciBFQ01BU2Ny
aXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2OTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZzogRW5hYmxlZCBJTlRMLgorCiAyMDE1LTA3LTExICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFz
aWx5ZXZAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEluc3BlY3RvciBzaG91
bGQgYmUgYWJsZSB0byBiZSBkb2NrZWQgdG8gdGhlIGJvdHRvbSBvZiBhIG5hcnJvdyB3aW5kb3cK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiYjA2OTI3M2EwYTk5ODc0MjYyNzliNmQwNTc5OGQxMGJkNjNkODM0Li45
NjQwNjc1Y2Q3YWEyZDdhMWJmM2JiMDU1YzhlMDk3YzhjYjdiYzhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTUtMDctMTMgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVy
QGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3Jp
cHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnOiBFbmFibGVkIElOVEwuCisKIDIwMTUtMDctMTMgIE1hdHQgUmFqY2EgIDxtcmFqY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIE1lZGlhIFNlc3Npb246IGFkZCBwbHVtYmluZyBmb3IgZGVsaXZl
cmluZyBzdGFydC9lbmQtb2YtaW50ZXJydXB0aW9uIGV2ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDhhZTg2NjVhODMxY2MwNDMzNzgyNjdlYjgxYzQ4Yjc0NTIxYjcz
N2UuLmY5MTI2OTBlNjdhNmZmYjI1YmNiODQyNTYzZTg3Y2Y3YWRlNGFmMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQ3NSw2ICs0NzUsMTUgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5j
cHAKICAgICBydW50aW1lL0ludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3BwCiAgICAgcnVudGltZS9J
bnRlcm5hbEZ1bmN0aW9uLmNwcAorICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yLmNwcAorICAgIHJ1
bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9JbnRsQ29sbGF0
b3JQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisgICAg
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuY3BwCisgICAgcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCisgICAg
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSW50bE9i
amVjdC5jcHAKICAgICBydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAKICAgICBydW50aW1l
L0l0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNjE5LDYgKzYyOCwxMiBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfTFVUX0ZJTEVTCiAgICAgcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCiAgICAgcnVu
dGltZS9EYXRlUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCisg
ICAgcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0ludGxD
b2xsYXRvckZvcm1hdFByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
LmNwcAorICAgIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAorICAgIHJ1
bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0pTRGF0YVZp
ZXdQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKICAgICBydW50
aW1lL0pTT05PYmplY3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZmU1NmJjMGIx
YmZkNjBjNTFhMDU3ZTk1NTRkMTllZDQ4NzRmNGY0Mi4uZDIyMDkyYTdiOWQzYzNlMGZhYTU2ZDg4
M2NjNGEwYTQ0ZDJmZjdjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMTE2LDcgKzEx
Niw3IEBAIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTAwMCA9IDsK
IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTEwMCA9IEVOQUJMRV9X
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
X21hY29zeF8xMDEyMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogCi1FTkFC
TEVfSU5UTCA9IDsKK0VOQUJMRV9JTlRMID0gRU5BQkxFX0lOVEw7CiAKIEVOQUJMRV9JT1NfR0VT
VFVSRV9FVkVOVFNbc2RrPWlwaG9uZSpdID0gJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lv
c19XSVRIX0lOVEVSTkFMX1NES18kKFVTRV9JTlRFUk5BTF9TREspKTsKIEVOQUJMRV9JT1NfR0VT
VFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLX1lFUyA9IEVOQUJMRV9JT1NfR0VTVFVS
RV9FVkVOVFM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4
IDY3N2Y0Y2VlNjkzNTYwNDU5ZTgwNzg3YTYwODY1NjgyMmE1ZjQ3NWEuLmU0NjU3NzdhNzliZWQ1
NjNkMjY4N2ZjZDI4Y2ZkOWFkYmIzOWRmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCkBAIC00MSw2ICs0MSwxMiBAQCBhbGwgOiBcCiAgICAgRGF0ZUNvbnN0
cnVjdG9yLmx1dC5oIFwKICAgICBEYXRlUHJvdG90eXBlLmx1dC5oIFwKICAgICBFcnJvclByb3Rv
dHlwZS5sdXQuaCBcCisgICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggXAorICAgIElu
dGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCBcCisgICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IubHV0LmggXAorICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCBcCisg
ICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmx1dC5oIFwKICAgICBKU0RhdGFWaWV3UHJvdG90eXBlLmx1dC5oIFwKICAg
ICBKU09OT2JqZWN0Lmx1dC5oIFwKICAgICBKU0dsb2JhbE9iamVjdC5sdXQuaCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY3ZThhMjkyNDA1ZjBhYzlmZjgzOGNjOWE3YjI4ZmNj
NzMwMTgzNzIuLjExOTNiZWQyMjI0Y2I5ZmY1NGNmMGJmZGE2Y2E1OGI3MzUyZGIyZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTcyLDEzICsxMTcyLDM3IEBACiAJCTlFNzI5
NDBCMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RTcyOTQwQTE5MEYwNTE0MDAxQTkxQjUgLyogQnVu
ZGxlUGF0aC5oICovOyB9OwogCQk5RUE1QzdBMTE5MEYwODQyMDA1MDhFQkUgLyogQnVuZGxlUGF0
aC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlFNzI5
NDA5MTkwRjAzMDYwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLm1tICovOyB9OwogCQk5RUE1QzdBMjE5
MEYwODg3MDA1MDhFQkUgLyogSW5pdGlhbGl6ZUxMVk1NYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUVBNUM3QTAxOTBGMDVEMjAwNTA4RUJFIC8q
IEluaXRpYWxpemVMTFZNTWFjLmNwcCAqLzsgfTsKKwkJQTEyNTg0NkUxQjQ1QTM2MDAwQ0M3RjZD
IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMjU4NDZDMUI0NUEzNjAwMENDN0Y2QyAvKiBJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUExMjU4NDZGMUI0NUEz
NjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEyNTg0NkQxQjQ1QTM2MDAwQ0M3
RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggKi87IH07CiAJCUExMkJCRkYy
MUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTJCQkZGMTFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9i
amVjdC5oICovOyB9OwogCQlBMTJCQkZGNDFCMDQ0QTk4MDA2NjRCNjkgLyogSW50bE9iamVjdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTJCQkZG
MzFCMDQ0QTk4MDA2NjRCNjkgLyogSW50bE9iamVjdC5jcHAgKi87IH07CisJCUExNTg3RDZEMUI0
REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1ODdENjcxQjREQzE0MTAwRDY5ODQ5IC8q
IEludGxEYXRlVGltZUZvcm1hdC5jcHAgKi87IH07CisJCUExNTg3RDZFMUI0REMxNDEwMEQ2OTg0
OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExNTg3RDY4MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVG
b3JtYXQuaCAqLzsgfTsKKwkJQTE1ODdENkYxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExNTg3RDY5MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCUExNTg3RDcwMUI0REMxNDEwMEQ2OTg0OSAvKiBJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1ODdENkExQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yLmggKi87IH07CisJCUExNTg3RDcxMUI0REMxNDEwMEQ2OTg0
OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1ODdENkIxQjREQzE0MTAwRDY5ODQ5IC8qIElu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi87IH07CisJCUExNTg3RDcyMUI0REMxNDEw
MEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNTg3RDZDMUI0REMxNDEwMEQ2OTg0OSAv
KiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCAqLzsgfTsKKwkJQTE1ODdENzUxQjREQzFD
NjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1ODdENzMxQjREQzFDNjAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oICovOyB9OworCQlB
MTU4N0Q3NjFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1ODdE
NzQxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCAq
LzsgfTsKIAkJQTE3MTJCM0IxMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjNBMTFDN0Iy
MTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi87IH07CiAJCUExNzEyQjNGMTFDN0IyMjgw
MDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE3MTJC
NDExMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4
cEtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUExODE5M0UzMUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODE5M0Ux
MUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsK
KwkJQTE4MTkzRTQxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODE5M0Uy
MUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggKi87IH07CiAJ
CUExQTAwOUMwMTgzMUEyMkQwMENGODcxMSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjQwOTIzQzE1NkVFRDNC
MDA1NjZDQjIgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBB
Uk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTFCOUUyMzkxQjRF
MEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5RTIzMzFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENv
bGxhdG9yLmNwcCAqLzsgfTsKKwkJQTFCOUUyM0ExQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xs
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFC
OUUyMzQxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5oICovOyB9OworCQlBMUI5RTIz
QjFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCOUUyMzUxQjRFMEQ2NzAw
QkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJQTFCOUUyM0Mx
QjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5RTIzNjFCNEUwRDY3MDBCQzdG
RUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTFCOUUyM0QxQjRFMEQ2
NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5RTIzNzFCNEUwRDY3MDBCQzdGRUQgLyog
SW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJQTFCOUUyM0UxQjRFMEQ2NzAwQkM3
RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCOUUyMzgxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xs
YXRvclByb3RvdHlwZS5oICovOyB9OworCQlBMUQ3OTJGQzFCNDM4NjRCMDA0NTE2RjUgLyogSW50
bE51bWJlckZvcm1hdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUQ3OTJGNjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5jcHAg
Ki87IH07CisJCUExRDc5MkZEMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3OTJGNzFC
NDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5oICovOyB9OworCQlBMUQ3OTJGRTFC
NDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkY4MUI0Mzg2NEIw
MDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwICovOyB9OworCQlBMUQ3
OTJGRjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3OTJGOTFCNDM4
NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggKi87IH07CisJCUEx
RDc5MzAwMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkZBMUI0
Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJ
QTFENzkzMDExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkZCMUI0
Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggKi87IH07CiAJCUE1
MDNGQTE5MTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTEzMTg4RTBGQUYw
MDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLzsgfTsKIAkJQTUwM0ZBMUExODhF
MEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE0MTg4RTBGQUYwMDExMEYxNCAvKiBK
YXZhU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCUE1MDNGQTFCMTg4RTBGQjAwMDExMEYxNCAv
KiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTUxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlw
dENhbGxGcmFtZS5jcHAgKi87IH07CkBAIC0yOTQ3LDExICsyOTcxLDM1IEBACiAJCTlFNzI5NDA5
MTkwRjAzMDYwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gQnVuZGxlUGF0aC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUU3Mjk0MEExOTBGMDUxNDAwMUE5MUI1IC8qIEJ1bmRsZVBhdGguaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVuZGxlUGF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5RUE1QzdBMDE5MEYwNUQyMDA1MDhFQkUgLyogSW5pdGlhbGl6ZUxMVk1NYWMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSW5pdGlhbGl6ZUxMVk1N
YWMuY3BwOyBwYXRoID0gbGx2bS9Jbml0aWFsaXplTExWTU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUExMjU4NDZDMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTEyNTg0NkQxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMkJCRkYx
MUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEludGxPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEy
QkJGRjMxQjA0NEE5ODAwNjY0QjY5IC8qIEludGxPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW50bE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUExNTg3RDY3MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bERhdGVUaW1lRm9y
bWF0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE1ODdENjgxQjREQzE0MTAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTE1ODdENjkxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE1
ODdENkExQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNTg3RDZCMUI0REMxNDEw
MEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE1ODdENkMxQjREQzE0MTAwRDY5ODQ5IC8q
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTE1ODdENzMxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTE1ODdENzQxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTcx
MkIzQTExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhwQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwQ2FjaGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBLZXkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE4MTkzRTExQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xs
YXRvckNvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTE4MTkzRTIxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bENvbGxhdG9yUHJvdG90eXBl
Lmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUI5RTIzMzFCNEUwRDY3MDBC
QzdGRUQgLyogSW50bENvbGxhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEludGxDb2xsYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEx
QjlFMjM0MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW50bENvbGxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUExQjlFMjM1MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsQ29sbGF0b3JD
b25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExQjlFMjM2MUI0
RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBMUI5RTIzNzFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxh
dG9yUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
dGxDb2xsYXRvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEx
QjlFMjM4MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bENvbGxhdG9yUHJvdG90eXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRDc5MkY2MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRs
TnVtYmVyRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
dGxOdW1iZXJGb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUQ3OTJG
NzFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnRsTnVtYmVyRm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUExRDc5MkY4MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTFENzkyRjkxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFENzkyRkExQjQzODY0QjAw
NDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRDc5MkZCMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTUwM0ZBMTMxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDNGQTE0MTg4RTBGQUYwMDExMEYx
NCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEphdmFTY3JpcHRDYWxsRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTUwM0ZBMTUxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0phdmFTY3JpcHRDYWxsRnJhbWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI0Niw2ICs0Mjk0LDEyIEBACiAJ
CQkJQTUzMjQzODQxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hl
cnMuaCAqLywKIAkJCQlBNTMyNDM4NTE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9yUHJvdG9j
b2xPYmplY3RzLmNwcCAqLywKIAkJCQlBNTMyNDM4NjE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVj
dG9yUHJvdG9jb2xPYmplY3RzLmggKi8sCisJCQkJQTE4MTkzRTExQjRFMENEQjAwRkMxMDI5IC8q
IEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUExODE5M0UyMUI0RTBDREIw
MEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggKi8sCisJCQkJQTE1ODdENzMx
QjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oICov
LAorCQkJCUExNTg3RDc0MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUubHV0LmggKi8sCisJCQkJQTEyNTg0NkMxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQlBMTI1ODQ2RDFCNDVBMzYwMDBDQzdG
NkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBN0Q4MDFBNjE4
ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICovLAogCQkJCUE3RDgwMUE3MTg4MEQ2
QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oICovLAogCQkJCUJDODdDREI4MTA3MTJBQ0EwMDA2
MTRDRiAvKiBKU09OT2JqZWN0Lmx1dC5oICovLApAQCAtNDQ3Miw2ICs0NTI2LDI0IEBACiAJCQkJ
QTc4ODUzRjgxNzk3MjYyOTAwMTQ0MEU0IC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCAqLywK
IAkJCQlCQzlCQjk1QjBFMTk2ODA2MDBERjg4NTUgLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgKi8s
CiAJCQkJQkMxMTY2N0EwRTE5OUMwNTAwODA2NkREIC8qIEludGVybmFsRnVuY3Rpb24uaCAqLywK
KwkJCQlBMUI5RTIzMzFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmNwcCAqLywKKwkJ
CQlBMUI5RTIzNDFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmggKi8sCisJCQkJQTFC
OUUyMzUxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCAqLywK
KwkJCQlBMUI5RTIzNjFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3Iu
aCAqLywKKwkJCQlBMUI5RTIzNzFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90
eXBlLmNwcCAqLywKKwkJCQlBMUI5RTIzODFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9y
UHJvdG90eXBlLmggKi8sCisJCQkJQTE1ODdENjcxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRl
VGltZUZvcm1hdC5jcHAgKi8sCisJCQkJQTE1ODdENjgxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxE
YXRlVGltZUZvcm1hdC5oICovLAorCQkJCUExNTg3RDY5MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQTE1ODdENkExQjREQzE0MTAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggKi8sCisJCQkJQTE1ODdE
NkIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8s
CisJCQkJQTE1ODdENkMxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5oICovLAorCQkJCUExRDc5MkY2MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9y
bWF0LmNwcCAqLywKKwkJCQlBMUQ3OTJGNzFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZv
cm1hdC5oICovLAorCQkJCUExRDc5MkY4MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IuY3BwICovLAorCQkJCUExRDc5MkY5MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCAqLywKKwkJCQlBMUQ3OTJGQTFCNDM4NjRCMDA0
NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgKi8sCisJCQkJQTFENzkyRkIx
QjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCAqLywKIAkJCQlB
MTJCQkZGMzFCMDQ0QTk4MDA2NjRCNjkgLyogSW50bE9iamVjdC5jcHAgKi8sCiAJCQkJQTEyQkJG
RjExQjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCAqLywKIAkJCQk4NkJGNjQyQTE0OERC
MkI1MDA0REUzNkEgLyogSW50cmluc2ljLmggKi8sCkBAIC01NjUyLDYgKzU3MjQsNyBAQAogCQkJ
CTE0N0I4M0FDMEU2REI4QzkwMDQ3NzVBNCAvKiBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkExMTEyNDYxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdl
dHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzRGNEI2RjUxQTA1Qzk4NDAwNUNBQjc2
IC8qIGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVh
ZGVycyAqLywKKwkJCQlBMUQ3OTJGRjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4
MTEgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUJDREU3MThFRjI5
NDIwMDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFN0JBNjEwMUEx
QTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNTcwMSw2
ICs1Nzc0LDcgQEAKIAkJCQkwRjI0RTU0MTE3RUE5RjU5MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxw
ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzg0QTI2MTExRDE2NjIyMDA1Nzc2QUMgLyogQVNU
QnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY2NzM5RDIxM0JGREU3MTAwMjNEODdDIC8q
IEJpZ0ludGVnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMjU4NDZFMUI0NUEzNjAwMENDN0Y2
QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzNFQzBFMTZGNUNEMDBCMzQ0NjAgLyogQm9vbGVhbk9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkVBMDg2MjAxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1RDJFNjY1MTk1RTE3NDAwMEE1MThFNyAvKiBKU0NvbnRleHRSZWZJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC01NzEwLDYgKzU3ODQsNyBAQAogCQkJCTBGQjdGMzk3
MTVFRDhFNDYwMEYxNjdCMiAvKiBCdXR0ZXJmbHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdG
Mzk4MTVFRDhFNDYwMEYxNjdCMiAvKiBCdXR0ZXJmbHlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2MkQyRDM5MDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQTFCOUUyM0ExQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzJGQ0FFMTExN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2Rl
QmFzaWNCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRC
IC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzIzMEVE
MUNFMzMwMEYxRjY4MSAvKiBCeXRlY29kZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC01
NzkwLDExICs1ODY1LDEzIEBACiAJCQkJQTVFQTcwRTgxOUY1QjEwMTAwOThGNUVDIC8qIEF1Z21l
bnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcw
NEQ5MDMxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3MDREOTA0MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFCOUUyM0MxQjRFMEQ2NzAwQkM3
RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYy
MDE3NzE0M0ZDRDNGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGMDU0RkExQUMzNUI0NDAwRTVCRTU3IC8qIEV4ZWN1dGFibGVBbGxvY2F0aW9uRnV6
ei5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2NkUxNkIxNERGM0YxNjAwQjdCMkU0IC8qIERGR0Fk
amFjZW5jeUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjE4MTZEMDJFQjIwMDU1QTVE
QiAvKiBERkdBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mzc4MTBDMTc5OUVBMkUw
MDgxNzUzMyAvKiBERkdBbmFseXNpcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFCOUUyM0UxQjRF
MEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYxRTNBNDYxNTM0Q0JBRjAwMEY5NDU2IC8qIERGR0FyZ3VtZW50UG9zaXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1QzNBMUE2MThDMDQ5MDIwMEM5NTkzQSAvKiBKU0dsb2JhbE9iamVj
dENvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDg1MzIyMTg3NzUwNTYwMDgz
QjY4NyAvKiBERkdBcml0aE1vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtNTg1OSw2ICs1OTM2LDcg
QEAKIAkJCQk4NkVDOURDQzEzMjhERjgyMDAyQjJBRDcgLyogREZHSklUQ29tcGlsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3OEE5Nzc5MTc5NzM4QjgwMDlERjc0NCAvKiBERkdKSVRGaW5hbGl6
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzk3RjQwMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdK
dW1wUmVwbGFjZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMjU4NDZGMUI0NUEzNjAwMEND
N0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTczQTUzNUIxNzk5Q0Q1RDAwMTcwQzE5IC8qIERGR0xhenlKU1ZhbHVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjJCOUNFOTE5RDBCQTdEMDBCMUQxQjUgLyogREZHT2JqZWN0TWF0ZXJpYWxp
emF0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEOUEyOTgxN0EwQkM3NDAwRUUyNjE4
IC8qIERGR0xJQ01QaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC01OTg4LDYgKzYwNjYsNyBAQAog
CQkJCTBGNkIxQ0I2MTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExKU0NhbGwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGOEYyQjk2MTcyRTA0QTMwMDdEQkRBNSAvKiBGVExMaW5rLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkNFRkFFMDE4MDczOEMwMDA0NzJDRTQgLyogRlRMTG9jYXRpb24uaCBpbiBIZWFk
ZXJzICovLAorCQkJCUExNTg3RDcwMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMTAxNzA1MTNEQjAwQkI3
MjJDIC8qIEZUTExvd2VyREZHVG9MTFZNLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUQwMjE3
QTBCOTA0MDA3NzNBRDggLyogRlRMTG93ZXJlZE5vZGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZEOEEzMUMxN0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTE9TUkVudHJ5LmggaW4gSGVhZGVycyAq
LywKQEAgLTYwNTUsNiArNjEzNCw3IEBACiAJCQkJQzI1RjhCQ0UxNTc1NDRBOTAwMjQ1QjcxIC8q
IEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTkxNUVEOEU0
NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5
QTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKKwkJCQlBMTU4N0Q3NjFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUIxNUVEOEU0NjAwRjE2N0Iy
IC8qIEluZGV4aW5nVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDRUZBQjAxODA1Q0E2RDAw
NDcyQ0U0IC8qIEluaXRpYWxpemVMTFZNLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNFRkFDQzE4
MDVFNzU1MDA0NzJDRTQgLyogSW5pdGlhbGl6ZUxMVk1QT1NJWC5oIGluIEhlYWRlcnMgKi8sCkBA
IC02MTA5LDYgKzYxODksNyBAQAogCQkJCTBGQUY3RUZFMTY1QkE5MUYwMDBDODQ1NSAvKiBKSVRE
aXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3
MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNEUxRjE4MTI0QUNF
MDA5QjZCNEQgLyogSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUExRDc5MzAxMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NkNDODVBMTBFRTc5QTQ3MDAyODg2ODIgLyogSklUSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NEQxN0VFMjc0OTAwQUJCMjE3IC8qIEpJVE9w
ZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzY2RDMxMTVBQTgxMTIwMDhGMzYzRSAv
KiBKSVRTdHViUm91dGluZS5oIGluIEhlYWRlcnMgKi8sCkBAIC02MjA5LDYgKzYyOTAsNyBAQAog
CQkJCTdDMTg0RTIzMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0MwMDhDREIxODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlzZURl
ZmVycmVkLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzE4NEUxRjE3QkVFMjJFMDA3Q0I2M0EgLyog
SlNQcm9taXNlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTgxOTNFNDFCNEUwQ0RC
MDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODYyNTUzRDIxNjEzNkUxQTAwOUYxN0QwIC8qIEpTUHJveHkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk5MjhGRjNDMThBQzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0MjYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTUmV0YWluUHRyLmggaW4g
SGVhZGVycyAqLywKQEAgLTYyMjAsNiArNjMwMiw3IEBACiAJCQkJQkMxOEM0NUUwRTE2RjVDRDAw
QjM0NDYwIC8qIEpTU3RhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QzFFQUYwMTc5ODdBQjYw
MDI5OURCMiAvKiBKU1N0YWNrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0Mjcw
RTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTU4N0Q3
NTFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NkU4NTUzOTExMUI5OTY4MDAxQUY1MUUgLyogSlNTdHJpbmdC
dWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjAwQjVBNzE1MkJBQUE3MDA5MUVFNUYgLyog
SlNTdHJpbmdKb2luZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI4MEUxNkY1Q0QwMEIz
NDQ2MCAvKiBKU1N0cmluZ1JlZi5oIGluIEhlYWRlcnMgKi8sCkBAIC02MzIyLDYgKzY0MDUsNyBA
QAogCQkJCUJDMDJFOTExMEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAyRTkxMzBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZl
RXJyb3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5Q0MwQjYzMThCRTk5NTAwMDZD
RUJDQyAvKiBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJ
QTE4MTkzRTMxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMjAxNkQwMzNCNzAwNTVBNURCIC8qIE5vZGVDb25z
dHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwRUNBNjA5MUFGREJFQTIwMDQ0OTczOSAv
KiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQzRjBFMTZG
NUNEMDBCMzQ0NjAgLyogTm9kZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNjQ0NSw2ICs2NTI5LDcg
QEAKIAkJCQlBNzI5OURBNjE3RDEyODU4MDA1RjVGRjkgLyogU2V0Q29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3OTBERDZFMTgyRjQ5OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRvclBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyOTlEQTIxN0QxMjg0ODAwNUY1RkY5IC8q
IFNldFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFENzkyRkQxQjQzODY0QjAwNDUx
NkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2QUU2NEFBMTM1
RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjhC
REVCMUFENENGNzEwMERGRTg4NCAvKiBJbmZlcnJlZFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJCNjcwNTE3QjZCNUFCMDBBN0FFM0YgLyogU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtNjUxOSw2ICs2NjA0LDcgQEAKIAkJCQkwRjVGMDhDRjE0NkM3
NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTdCNjAxODIxNjM5RkQyQTAwMzcyQkEzIC8qIFVubGlua2VkQ29kZUJsb2NrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjJFODkyQzE2RDAyOEFEMDA5RTRGRDIgLyogVW51c2VkUG9pbnRlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTE1ODdENkUxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRl
VGltZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NjNCMzgxM0ZDNkZFOTAwMDJEOUIy
IC8qIFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0MjZBNDgxNDYwQ0JCMzAw
MTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUM1RTVGMThF
MzVGNUUwMEQ0MzFDMyAvKiBGVExEV0FSRlJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTY1
NDYsNiArNjYzMiw3IEBACiAJCQkJMkE0RUM5MEMxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFy
cmllckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJCNkQ3NTMxOEEzMzc5MzAwNEE5MzAx
IC8qIFdyaXRlQmFycmllcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzgxNTBBMTQw
NDNCRjUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBMTU4N0Q3MjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyQTE4N0NBNzU5MDA4NDNCMTAgLyog
eHhkLnBsIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzQTFCRkExQTlFQ0I3RDAwMERFMDFBIC8qIERG
R1B1dFN0YWNrU2lua2luZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTcxMjgsNiArNzIxNSw3
IEBACiAJCQkJMEZFQTBBMzExNzBENDBCRjAwQkI3MjJDIC8qIERGR0NvbW1vbkRhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYzOEIwMTcxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0
aW9uS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzhCMDE5MTdDRkU3NTUwMEIxNDREMyAv
KiBERkdDb21waWxhdGlvbk1vZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFCOUUyM0IxQjRF
MEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGM0IzQTFBMTUzRTY4RjIwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJFMEY3MjE2QzFEQjAzMDA4MkM1RTggLyogREZH
Q1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGNTE3QTBC
OENDMDA3NzNBRDggLyogREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTcxNzEsNiArNzI1OSw3IEBACiAJCQkJQTdEODlDRkIxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkYw
RjE5OTE2QjcyOUY2MDA1REY5NUIgLyogREZHTG9uZ0xpdmVkU3RhdGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTc2N0I1QjUxN0EwQjk2NTAwNjNEOTQwIC8qIERGR0xvb3BQcmVIZWFkZXJDcmVh
dGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExQjlFMjNEMUI0RTBENjcwMEJDN0ZF
RCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQkRD
NEQxNTIyODE4NjAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkTm9kZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBNzM3ODEwRDE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRjBGMTlDMTZCNzJBMDMwMDVERjk1QiAvKiBERkdOb2RlLmNwcCBp
biBTb3VyY2VzICovLApAQCAtNzMzNCw2ICs3NDIzLDcgQEAKIAkJCQkyQUY3MzgyQzE4QkJCRjky
MDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUZE
MDA4MTE4OUIxOTFBMDA2MzMyMzEgLyogSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1N0QyM0U1MTg5MENFQkYwMDMxQzdGQSAvKiBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExNTg3RDZGMUI0REMxNDEwMEQ2OTg0OSAv
KiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NTMyNDM4NzE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTcwOUZCODY5MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0
Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUzMjQzODkxODU2ODMzNTAwMkVE
NjkyIC8qIEluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC03MzU3LDYgKzc0NDcsNyBAQAogCQkJCUJDREQ1MUVCMEZCOERGNzQwMDRBOEJEQyAvKiBKSVRP
cGNvZGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MTIzNkU1MTE5NUYzM0MwMEJEMjE3NCAv
KiBKSVRPcGNvZGVzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2RTg0NUExOTAzMEJF
RjAwNTYyNzQxIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlBMTU4N0Q2RDFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGMjRFNTRDMTdFRTI3NDkwMEFCQjIxNyAvKiBKSVRPcGVyYXRpb25z
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2Q0M4NUM0MEVFN0E4OTQwMDI4ODY4MiAvKiBKSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0MxRThFNDExMkU3MkVGMDBB
MzdGOTggLyogSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc0
ODQsNiArNzU3NSw3IEBACiAJCQkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRCNzIzQjIxMkQ3REE0NjAwM0JE
NUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVCM0VD
RjE2MjM3RjZDMDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQTFENzkzMDAxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3Jv
QXNzZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MjkwMDlDMTc5NzZDNjAwMDMx
NzI5OCAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1M0NF
MDg1MThCQzFBNTYwMEJFREY3NiAvKiBDb25zb2xlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtNzU2Myw2ICs3NjU1LDcgQEAKIAkJCQlBNUJBMTVFOTE4MjM0MEIzMDBBODJFNjkgLyog
UmVtb3RlSW5zcGVjdG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkFERkEyNjMxOEVGMzU0MDAw
NEY5RkNDIC8qIEdDTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTk0NTU4RjE4MjQ1
RUZEMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlBMUQ3OTJGRTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1QkExNUVDMTgyMzQwQjQwMEE4MkU2OSAv
KiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUE1QkExNUVFMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNEU1NTAxN0VFMjc0OTAwQUJCMjE3IC8qIFJl
cGF0Y2guY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NTcwLDYgKzc2NjMsNyBAQAogCQkJCTBGNzcw
MDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQyOUQ4ODUwRUQyMUMzRDAwQjg5NjE5IC8qIFNhbXBsaW5nVG9vbC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3MEVDMEVDNjFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFCOUUyMzkxQjRFMEQ2NzAwQkM3RkVE
IC8qIEludGxDb2xsYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUZEMDA2NzE4OUFGRTlD
MDA2MzMyMzEgLyogU2NyaXB0QXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1RkQw
MDZEMTg5QjAwQUEwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYwNDM5NkQxQjAzREMwQjAwOTU5OEI3IC8qIERGR0NvbWJpbmVkTGl2ZW5lc3MuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC03NjE2LDYgKzc3MTAsOCBAQAogCQkJCTBGQTJDMTdCMTdEN0NG
ODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcz
ODY1NTUxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjJCNjcwNzE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheUNvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFENzkyRkMxQjQzODY0QjAwNDUxNkY1IC8qIEludGxO
dW1iZXJGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTE1ODdENzExQjREQzE0MTAwRDY5
ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjJCNjcwQTE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheVR5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTJDOTUyQjkxOUEyOEExQzAwNjlCMzg2IC8qIFR5cGVQcm9maWxlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0QTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2LmMg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oCmluZGV4IDQxYjk0ZjFiZjQ3YmZjNjZkODc2NDUwYzAxMzAxZTU1MjFm
Zjk1NmQuLjEyMzJlYTc1NjY3MTQ3ZDgzNTBiYmViYjlmMzcyNmRmMGJjNWM4YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAt
MzMsNyArMzMsOSBAQAogICAgIG1hY3JvKEFycmF5SXRlcmF0b3IpIFwKICAgICBtYWNybyhCWVRF
U19QRVJfRUxFTUVOVCkgXAogICAgIG1hY3JvKEJvb2xlYW4pIFwKKyAgICBtYWNybyhDb2xsYXRv
cikgXAogICAgIG1hY3JvKERhdGUpIFwKKyAgICBtYWNybyhEYXRlVGltZUZvcm1hdCkgXAogICAg
IG1hY3JvKEVycm9yKSBcCiAgICAgbWFjcm8oRXZhbEVycm9yKSBcCiAgICAgbWFjcm8oRnVuY3Rp
b24pIFwKQEAgLTQ1LDYgKzQ3LDcgQEAKICAgICBtYWNybyhNYXRoKSBcCiAgICAgbWFjcm8oTmFO
KSBcCiAgICAgbWFjcm8oTnVtYmVyKSBcCisgICAgbWFjcm8oTnVtYmVyRm9ybWF0KSBcCiAgICAg
bWFjcm8oT2JqZWN0KSBcCiAgICAgbWFjcm8oUHJvbWlzZSkgXAogICAgIG1hY3JvKFJhbmdlRXJy
b3IpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0
b3IuY3BwCmluZGV4IGQ2MzI5ZmRmMWIwMjUwZDc4MjRjOGM4YmQ3MGRkNjg3MDQ3MmI0ZmMuLmVl
NjU2YTMwOTc0ZTNlYzVkYjEwNGYxNmM1MzRkNDI2YjJiZTg1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcApAQCAtNTMsNyArNTMs
NiBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogbmFtZXNwYWNlIEpTQyB7CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBhcnNlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlTm93KEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlVVRDKEV4ZWNTdGF0ZSopOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCmluZGV4IDA1NGY1NzFkNTc5ZThjZTRmMzRi
NTQwOTE3YjhkMDI4YjUwZGZiOWIuLmNkYWM5N2QzMWJhMzZhOWMyMmVhYzAyNDhhZmM2ZjUyMTJi
Zjc5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25z
dHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5oCkBAIC01OSw2ICs1OSw4IEBAIHByaXZhdGU6CiAKIEpTT2JqZWN0KiBjb25zdHJ1Y3RE
YXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYpOwogCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVOb3coRXhlY1N0YXRlKik7CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRGF0ZUNvbnN0cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4MTA4ZmMx
ODU5OGQzZTJjN2FkODllMGNmMWY4OGQ0ZTVhMTFlYzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCkBAIC0wLDAgKzEsMTIy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNy
YWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSW50bENvbGxhdG9yLmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkVycm9y
LmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJbnRs
T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiU2xv
dFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxDb2xsYXRvcjo6c19pbmZvID0geyAi
T2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsQ29sbGF0
b3IpIH07CisKK0ludGxDb2xsYXRvciogSW50bENvbGxhdG9yOjpjcmVhdGUoVk0mIHZtLCBJbnRs
Q29sbGF0b3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IpCit7CisgICAgSW50bENvbGxhdG9yKiBm
b3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsQ29sbGF0b3I+KHZtLmhlYXAp
KSBJbnRsQ29sbGF0b3Iodm0sIGNvbnN0cnVjdG9yLT5jb2xsYXRvclN0cnVjdHVyZSgpKTsKKyAg
ICBmb3JtYXQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZm9ybWF0OworfQorCitT
dHJ1Y3R1cmUqIEludGxDb2xsYXRvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsQ29sbGF0b3I6Oklu
dGxDb2xsYXRvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNEZXN0cnVj
dGlibGVPYmplY3Qodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsQ29sbGF0b3I6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworfQorCit2b2lkIEludGxDb2xsYXRvcjo6ZGVz
dHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SW50bENvbGxhdG9yKj4oY2Vs
bCktPkludGxDb2xsYXRvcjo6fkludGxDb2xsYXRvcigpOworfQorCit2b2lkIEludGxDb2xsYXRv
cjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIEludGxDb2xsYXRvciogdGhpc09iamVjdCA9IGpzQ2FzdDxJbnRsQ29sbGF0b3IqPihjZWxs
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisK
KyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYm91bmRDb21wYXJlKTsKK30KKwordm9pZCBJbnRs
Q29sbGF0b3I6OnNldEJvdW5kQ29tcGFyZShWTSYgdm0sIEpTQm91bmRGdW5jdGlvbiogZm9ybWF0
KQoreworICAgIG1fYm91bmRDb21wYXJlLnNldCh2bSwgdGhpcywgZm9ybWF0KTsKK30KKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JGdW5jQ29tcGFyZShFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgLy8gMTAuMy40IENvbGxhdG9yIENvbXBhcmUgRnVuY3Rpb25zIChF
Q01BLTQwMiAyLjApCisgICAgLy8gMS4gTGV0IGNvbGxhdG9yIGJlIHRoZSB0aGlzIHZhbHVlLgor
ICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxDb2xsYXRvcio+
KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKworICAgIC8vIDIuIEFzc2VydDogVHlwZShjb2xsYXRvcikg
aXMgT2JqZWN0IGFuZCBjb2xsYXRvciBoYXMgYW4gW1tpbml0aWFsaXplZENvbGxhdG9yXV0gaW50
ZXJuYWwgc2xvdCB3aG9zZSB2YWx1ZSBpcyB0cnVlLgorICAgIGlmICghY29sbGF0b3IpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYykpOworCisgICAg
Ly8gMy4gSWYgeCBpcyBub3QgcHJvdmlkZWQsIGxldCB4IGJlIHVuZGVmaW5lZC4KKyAgICAvLyA0
LiBJZiB5IGlzIG5vdCBwcm92aWRlZCwgbGV0IHkgYmUgdW5kZWZpbmVkLgorICAgIC8vIDUuIExl
dCBYIGJlIFRvU3RyaW5nKHgpLgorICAgIEpTU3RyaW5nKiBhID0gZXhlYy0+YXJndW1lbnQoMCku
dG9TdHJpbmcoZXhlYyk7CisgICAgLy8gNi4gUmV0dXJuSWZBYnJ1cHQoWCkuCisgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworCisgICAgLy8gNy4gTGV0IFkgYmUgVG9TdHJpbmcoeSkuCisgICAgSlNTdHJp
bmcqIGIgPSBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKTsKKyAgICAvLyA4LiBSZXR1
cm5JZkFicnVwdChZKS4KKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICAvLyA5LiBSZXR1cm4g
Q29tcGFyZVN0cmluZ3MoY29sbGF0b3IsIFgsIFkpLgorCisgICAgLy8gMTAuMy40IENvbXBhcmVT
dHJpbmdzIGFic3RyYWN0IG9wZXJhdGlvbiAoRUNNQS00MDIgMi4wKQorICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgQ29tcGFyZVN0cmluZ3MuCisKKyAgICAvLyBSZXR1cm4gc2ltcGxlIGNoZWNrIHVu
dGlsIHByb3Blcmx5IGltcGxlbWVudGVkLgorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIoY29kZVBvaW50Q29tcGFyZShhLT52YWx1ZShleGVjKS5pbXBsKCksIGItPnZhbHVlKGV4
ZWMpLmltcGwoKSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxD
b2xsYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmYyMjUxNDk0MWEyMTE4NjNmOWMyODQyZmMxNzBkNjFiY2E0NjEwMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRv
ci5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5X
YWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW50
bENvbGxhdG9yX2gKKyNkZWZpbmUgSW50bENvbGxhdG9yX2gKKworI2lmIEVOQUJMRShJTlRMKQor
CisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOworY2xhc3MgSlNCb3VuZEZ1bmN0aW9uOwor
CitjbGFzcyBJbnRsQ29sbGF0b3IgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVi
bGljOgorICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKworICAgIHN0YXRp
YyBJbnRsQ29sbGF0b3IqIGNyZWF0ZShWTSYsIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKik7Cisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIEpTQm91bmRGdW5jdGlvbiog
Ym91bmRDb21wYXJlKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZENvbXBhcmUuZ2V0KCk7IH0KKyAg
ICB2b2lkIHNldEJvdW5kQ29tcGFyZShWTSYsIEpTQm91bmRGdW5jdGlvbiopOworCitwcm90ZWN0
ZWQ6CisgICAgSW50bENvbGxhdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCitwcml2YXRl
OgorICAgIFdyaXRlQmFycmllcjxKU0JvdW5kRnVuY3Rpb24+IG1fYm91bmRDb21wYXJlOworfTsK
KyAgICAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yRnVuY0NvbXBh
cmUoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxF
KElOVEwpCisKKyNlbmRpZiAvLyBJbnRsQ29sbGF0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY1YmVjYzQwYTFkYzhhNTRjZTIwNmQ4OGU4ZDQwZjczNTQ4M2MyOGEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25z
dHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgi
CisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50
bENvbGxhdG9yLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yUHJvdG90eXBlLmgiCisjaW5jbHVk
ZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIlNsb3RW
aXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvcik7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3Rh
dGUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bENvbGxhdG9yQ29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgJmNv
bGxhdG9yQ29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsQ29sbGF0b3JD
b25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5s
dXQuaAorQGJlZ2luIGNvbGxhdG9yQ29uc3RydWN0b3JUYWJsZQorICBzdXBwb3J0ZWRMb2NhbGVz
T2YgICAgICAgICAgICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxl
c09mICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK0ludGxDb2xs
YXRvckNvbnN0cnVjdG9yKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxDb2xsYXRvclByb3RvdHlwZSogY29sbGF0b3JQcm90
b3R5cGUsIFN0cnVjdHVyZSogY29sbGF0b3JTdHJ1Y3R1cmUpCit7CisgICAgSW50bENvbGxhdG9y
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50
bENvbGxhdG9yQ29uc3RydWN0b3I+KHZtLmhlYXApKSBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcih2
bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGNvbGxh
dG9yUHJvdG90eXBlLCBjb2xsYXRvclN0cnVjdHVyZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9y
OworfQorCitTdHJ1Y3R1cmUqIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9
CisKK0ludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvcihWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3Ry
dWN0dXJlKQoreworfQorCit2b2lkIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEludGxDb2xsYXRvclByb3RvdHlwZSogY29sbGF0b3JQcm90b3R5cGUsIFN0
cnVjdHVyZSogY29sbGF0b3JTdHJ1Y3R1cmUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0sIEFTQ0lJTGl0ZXJhbCgiQ29sbGF0b3IiKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgY29sbGF0b3JQcm90b3R5cGUs
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVh
ZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworICAgIG1fY29sbGF0b3JTdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBjb2xsYXRvclN0cnVjdHVyZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0SW50bENvbGxhdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICAvLyAxMC4xLjIgSW50bC5Db2xsYXRvciAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00
MDIgMi4wKQorICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJn
ZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBO
ZXdUYXJnZXQuCisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGludm9rZWQgd2hlbiBjYWxs
ZWQgYXMgY29uc3RydWN0b3Igc28gbmV3VGFyZ2V0IGlzIHRoZSBDb2xsYXRvciBmdW5jdGlvbi4K
KworICAgIC8vIDIuIExldCBjb2xsYXRvciBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3Rv
cihuZXdUYXJnZXQsICVDb2xsYXRvclByb3RvdHlwZSUpLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IEludGxDb2xsYXRvcjo6Y3JlYXRlKHZt
LCBqc0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSkpOworCisg
ICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQoY29sbGF0b3IpLgorICAgIGlmICghY29sbGF0b3IpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICAvLyA0
LiBSZXR1cm4gSW5pdGlhbGl6ZUNvbGxhdG9yKGNvbGxhdG9yLCBsb2NhbGVzLCBvcHRpb25zKS4K
KyAgICAvLyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShJbml0aWFsaXplQ29sbGF0b3Io
Y29sbGF0b3IsIGxvY2FsZXMsIG9wdGlvbnMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY29sbGF0b3IpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRs
Q29sbGF0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDEwLjEuMiBJbnRsLkNvbGxhdG9y
IChbbG9jYWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gSWYgTmV3
VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9u
IG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KKyAgICAvLyBGSVhNRTog
U3VwcG9ydCBOZXdUYXJnZXQgaW4gc3VwZXIoKSBjYWxscy4KKworICAgIC8vIDIuIExldCBjb2xs
YXRvciBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVDb2xsYXRv
clByb3RvdHlwZSUpLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSW50bENvbGxhdG9y
KiBjb2xsYXRvciA9IEludGxDb2xsYXRvcjo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bENvbGxhdG9y
Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSkpOworCisgICAgLy8gMy4gUmV0dXJuSWZBYnJ1
cHQoY29sbGF0b3IpLgorICAgIGlmICghY29sbGF0b3IpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZUNv
bGxhdG9yKGNvbGxhdG9yLCBsb2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBGSVhNRTogcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShJbml0aWFsaXplQ29sbGF0b3IoY29sbGF0b3IsIGxvY2FsZXMsIG9w
dGlvbnMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3IpOworfQorCitD
b25zdHJ1Y3RUeXBlIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpT
Q2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0
YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RJbnRsQ29sbGF0b3I7CisgICAgcmV0dXJuIENv
bnN0cnVjdFR5cGVIb3N0OworfQorCitDYWxsVHlwZSBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRh
Lm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxJbnRsQ29sbGF0b3I7CisgICAgcmV0dXJuIENhbGxUeXBl
SG9zdDsKK30KKworYm9vbCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5j
dGlvblNsb3Q8SW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgY29sbGF0b3JDb25zdHJ1Y3RvclRhYmxl
LCBqc0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvckNv
bnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
Ly8gMTAuMi4yIEludGwuQ29sbGF0b3Iuc3VwcG9ydGVkTG9jYWxlc09mKGxvY2FsZXMgWywgb3B0
aW9uc10pIChFQ01BLTQwMiAyLjApCisKKyAgICAvLyAxLiBMZXQgcmVxdWVzdGVkTG9jYWxlcyBi
ZSBDYW5vbmljYWxpemVMb2NhbGVMaXN0KGxvY2FsZXMpLgorICAgIC8vIEZJWE1FOiByZXF1ZXN0
ZWQgPSBDYW5vbmljYWxpemVMb2NhbGVMaXN0KGxvY2FsZXMpOworCisgICAgLy8gMi4gUmV0dXJu
SWZBYnJ1cHQocmVxdWVzdGVkTG9jYWxlcykuCisgICAgLy8gaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQorICAgIC8vICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
CisgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMoJUNvbGxhdG9yJS5bW2F2YWlsYWJs
ZUxvY2FsZXNdXSwgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6IHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGUsIHJlcXVlc3Rl
ZCwgb3B0aW9ucykpOworCisgICAgLy8gUmV0dXJuIGVtcHR5IGFycmF5IHVudGlsIHByb3Blcmx5
IGltcGxlbWVudGVkLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBK
U0FycmF5KiBzdXBwb3J0ZWRMb2NhbGVzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0Fs
bG9jYXRpb24oQXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7CisgICAgaWYgKCFzdXBwb3J0ZWRMb2Nh
bGVzKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJv
cihleGVjKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMp
OworfQorICAgIAordm9pZCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEludGxDb2xsYXRvckNv
bnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEludGxDb2xsYXRvckNvbnN0cnVjdG9yKj4o
Y2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkp
OworCisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NvbGxhdG9yU3RydWN0dXJlKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRhYTk4ZjJmYWEyNDc5Yjg0Zjc5YjcxMDc1ZjVlOTg3ZmFlZTc2ZmIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3JDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgSW50bENvbGxhdG9yQ29uc3RydWN0b3JfaAorI2RlZmluZSBJbnRsQ29sbGF0b3JD
b25zdHJ1Y3Rvcl9oCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkludGVybmFsRnVu
Y3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxDb2xsYXRvcjsKK2NsYXNz
IEludGxDb2xsYXRvclByb3RvdHlwZTsKKworY2xhc3MgSW50bENvbGxhdG9yQ29uc3RydWN0b3Ig
OiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5h
bEZ1bmN0aW9uIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisK
KyAgICBzdGF0aWMgSW50bENvbGxhdG9yQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVy
ZSosIEludGxDb2xsYXRvclByb3RvdHlwZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisK
KyAgICBERUNMQVJFX0lORk87CisKKyAgICBTdHJ1Y3R1cmUqIGNvbGxhdG9yU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2xsYXRvclN0cnVjdHVyZS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEludGxDb2xsYXRvclByb3RvdHlwZSosIFN0
cnVjdHVyZSopOworCitwcml2YXRlOgorICAgIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKFZNJiwg
U3RydWN0dXJlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShK
U0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRh
KEpTQ2VsbCosIENhbGxEYXRhJik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAg
CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jb2xsYXRvclN0cnVjdHVyZTsKK307CisK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bENvbGxhdG9yKEV4ZWNT
dGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bENvbGxhdG9yKEV4
ZWNTdGF0ZSopOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRM
KQorCisjZW5kaWYgLy8gSW50bENvbGxhdG9yQ29uc3RydWN0b3JfaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDIxMjMyM2M0YTNlODk5MmJmYjBiNDkzOTFmOWVjMGQxYmYxODNiZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclBy
b3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKKwor
I2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsQ29s
bGF0b3IuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU09i
amVjdC5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiU3RydWN0
dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklW
SUFMTFlfREVTVFJVQ1RJQkxFKEludGxDb2xsYXRvclByb3RvdHlwZSk7CisKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBh
cmUoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
Q29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSopOworCit9CisK
KyNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjb25zdCBDbGFzc0luZm8gSW50bENvbGxhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJP
YmplY3QiLCAmSW50bENvbGxhdG9yOjpzX2luZm8sICZjb2xsYXRvclByb3RvdHlwZVRhYmxlLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEludGxDb2xsYXRvclByb3RvdHlwZSkgfTsKKworLyogU291cmNl
IGZvciBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBjb2xsYXRvclByb3RvdHlw
ZVRhYmxlCisgIGNvbXBhcmUgICAgICAgICAgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29t
cGFyZSAgICAgICAgRG9udEVudW18QWNjZXNzb3IKKyAgcmVzb2x2ZWRPcHRpb25zICBJbnRsQ29s
bGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zICBEb250RW51bXxGdW5jdGlvbiAwCitA
ZW5kCisqLworCitJbnRsQ29sbGF0b3JQcm90b3R5cGUqIEludGxDb2xsYXRvclByb3RvdHlwZTo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sK
KyAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEludGxDb2xsYXRvclByb3RvdHlwZT4odm0uaGVhcCkpIEludGxDb2xsYXRvclByb3Rv
dHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxDb2xsYXRvclByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworfQorCitJbnRsQ29sbGF0b3JQcm90b3R5cGU6OkludGxDb2xsYXRvclByb3Rv
dHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50bENvbGxhdG9yKHZt
LCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bENvbGxhdG9yUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCiti
b29sIEludGxDb2xsYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmpl
Y3Q+KGV4ZWMsIGNvbGxhdG9yUHJvdG90eXBlVGFibGUsIGpzQ2FzdDxJbnRsQ29sbGF0b3JQcm90
b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIC8vIDEwLjMuMyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21w
YXJlIChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gTGV0IGNvbGxhdG9yIGJlIHRoaXMgQ29sbGF0
b3Igb2JqZWN0LgorICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0PElu
dGxDb2xsYXRvcio+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWNvbGxhdG9yKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKworICAg
IEpTQm91bmRGdW5jdGlvbiogYm91bmRDb21wYXJlID0gY29sbGF0b3ItPmJvdW5kQ29tcGFyZSgp
OworICAgIC8vIDIuIElmIGNvbGxhdG9yLltbYm91bmRDb21wYXJlXV0gaXMgdW5kZWZpbmVkLAor
ICAgIGlmICghYm91bmRDb21wYXJlKSB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xv
YmFsT2JqZWN0KCk7CisgICAgICAgIC8vIGEuIExldCBGIGJlIGEgbmV3IGJ1aWx0LWluIGZ1bmN0
aW9uIG9iamVjdCBhcyBkZWZpbmVkIGluIDExLjMuNC4KKyAgICAgICAgLy8gYi4gVGhlIHZhbHVl
IG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAyLgorICAgICAgICBKU0Z1bmN0aW9uKiB0YXJn
ZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMiwgQVNDSUlM
aXRlcmFsKCJjb21wYXJlIiksIEludGxDb2xsYXRvckZ1bmNDb21wYXJlLCBOb0ludHJpbnNpYyk7
CisgICAgICAgIEpTQXJyYXkqIGJvdW5kQXJncyA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlh
bGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIDApOworICAgICAgICBpZiAoIWJvdW5k
QXJncykKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMpKTsKKworICAgICAgICAvLyBjLiBMZXQgYmMgYmUgQm91bmRGdW5jdGlvbkNy
ZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCisgICAgICAgIGJvdW5kQ29tcGFyZSA9IEpTQm91bmRG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgY29sbGF0b3Is
IGJvdW5kQXJncywgMiwgQVNDSUlMaXRlcmFsKCJjb21wYXJlIikpOworICAgICAgICAvLyBkLiBT
ZXQgY29sbGF0b3IuW1tib3VuZENvbXBhcmVdXSB0byBiYy4KKyAgICAgICAgY29sbGF0b3ItPnNl
dEJvdW5kQ29tcGFyZSh2bSwgYm91bmRDb21wYXJlKTsKKyAgICB9CisgICAgLy8gMy4gUmV0dXJu
IGNvbGxhdG9yLltbYm91bmRDb21wYXJlXV0uCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShi
b3VuZENvbXBhcmUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xs
YXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKiBleGVjKQoreworICAg
IC8vIDEwLjMuNSBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAoRUNN
QS00MDIgMi4wKQorICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0PElu
dGxDb2xsYXRvcio+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWNvbGxhdG9yKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKworICAg
IC8vIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgbmV3IG9iamVjdCB3aG9zZSBwcm9wZXJ0aWVzIGFu
ZCBhdHRyaWJ1dGVzIGFyZSBzZXQgYXMgaWYgY29uc3RydWN0ZWQgYnkgYW4gb2JqZWN0IGxpdGVy
YWwgYXNzaWduaW5nIHRvIGVhY2ggb2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIHRoZSB2YWx1
ZSBvZiB0aGUgY29ycmVzcG9uZGluZyBpbnRlcm5hbCBzbG90IG9mIHRoaXMgQ29sbGF0b3Igb2Jq
ZWN0IChzZWUgMTAuNCk6IGxvY2FsZSwgdXNhZ2UsIHNlbnNpdGl2aXR5LCBpZ25vcmVQdW5jdHVh
dGlvbiwgY29sbGF0aW9uLCBhcyB3ZWxsIGFzIHRob3NlIHByb3BlcnRpZXMgc2hvd24gaW4gVGFi
bGUgMSB3aG9zZSBrZXlzIGFyZSBpbmNsdWRlZCBpbiB0aGUgJUNvbGxhdG9yJVtbcmVsZXZhbnRF
eHRlbnNpb25LZXlzXV0gaW50ZXJuYWwgc2xvdCBvZiB0aGUgc3RhbmRhcmQgYnVpbHQtaW4gb2Jq
ZWN0IHRoYXQgaXMgdGhlIGluaXRpYWwgdmFsdWUgb2YgSW50bC5Db2xsYXRvci4KKworICAgIEpT
T2JqZWN0KiBvcHRpb25zID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisKKyAgICAvLyBG
SVhNRTogUG9wdWxhdGUgb2JqZWN0IGZyb20gaW50ZXJuYWwgc2xvdHMuCisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKG9wdGlvbnMpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTlRMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODE2NDI2NzllOWY1MTIx
NDVjZGY3ZTAyY2NhZjQ2OTdmZWI3Y2MxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFm
dGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRsQ29sbGF0b3JQcm90b3R5cGVf
aAorI2RlZmluZSBJbnRsQ29sbGF0b3JQcm90b3R5cGVfaAorCisjaWYgRU5BQkxFKElOVEwpCisK
KyNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgSW50bENvbGxhdG9yUHJvdG90eXBlIDogcHVibGljIEludGxD
b2xsYXRvciB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRsQ29sbGF0b3IgQmFzZTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBJbnRsQ29sbGF0
b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Cisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mKTsKKworcHJpdmF0ZToKKyAgICBJbnRsQ29sbGF0b3JQcm90b3R5
cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworfTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKworI2VuZGlm
IC8vIEludGxDb2xsYXRvclByb3RvdHlwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODYyOGZiZTg2
NTY1Mzc4ZGZkZjNmN2UxZTkzYTRjMWZlZDI1MjJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcApAQCAtMCwwICsx
LDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRh
bGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNs
dWRlICJEYXRlQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJEYXRlSW5zdGFuY2UuaCIKKyNpbmNs
dWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgi
CisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5o
IgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlu
bGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsRGF0ZVRp
bWVGb3JtYXQ6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoSW50bERhdGVUaW1lRm9ybWF0KSB9OworCitJbnRsRGF0ZVRpbWVGb3JtYXQq
IEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKFZNJiB2bSwgSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IqIGNvbnN0cnVjdG9yKQoreworICAgIEludGxEYXRlVGltZUZvcm1hdCogZm9ybWF0
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERhdGVUaW1lRm9ybWF0Pih2bS5oZWFw
KSkgSW50bERhdGVUaW1lRm9ybWF0KHZtLCBjb25zdHJ1Y3Rvci0+ZGF0ZVRpbWVGb3JtYXRTdHJ1
Y3R1cmUoKSk7CisgICAgZm9ybWF0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGZv
cm1hdDsKK30KKworU3RydWN0dXJlKiBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30K
KworSW50bERhdGVUaW1lRm9ybWF0OjpJbnRsRGF0ZVRpbWVGb3JtYXQoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KHZtLCBzdHJ1Y3R1cmUp
Cit7Cit9CisKK3ZvaWQgSW50bERhdGVUaW1lRm9ybWF0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhp
bmZvKCkpKTsKK30KKwordm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRlc3Ryb3koSlNDZWxsKiBj
ZWxsKQoreworICAgIHN0YXRpY19jYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KGNlbGwpLT5JbnRs
RGF0ZVRpbWVGb3JtYXQ6On5JbnRsRGF0ZVRpbWVGb3JtYXQoKTsKK30KKwordm9pZCBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SW50
bERhdGVUaW1lRm9ybWF0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5kRm9y
bWF0KTsKK30KKwordm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNldEJvdW5kRm9ybWF0KFZNJiB2
bSwgSlNCb3VuZEZ1bmN0aW9uKiBmb3JtYXQpCit7CisgICAgbV9ib3VuZEZvcm1hdC5zZXQodm0s
IHRoaXMsIGZvcm1hdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERh
dGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAv
LyAxMi4zLjQgRGF0ZVRpbWUgRm9ybWF0IEZ1bmN0aW9ucyAoRUNNQS00MDIgMi4wKQorICAgIC8v
IDEuIExldCBkdGYgYmUgdGhlIHRoaXMgdmFsdWUuCisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBm
b3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KGV4ZWMtPnRoaXNWYWx1
ZSgpKTsKKyAgICAvLyAyLiBBc3NlcnQ6IFR5cGUoZHRmKSBpcyBPYmplY3QgYW5kIGR0ZiBoYXMg
YW4gW1tpbml0aWFsaXplZERhdGVUaW1lRm9ybWF0XV0gaW50ZXJuYWwgc2xvdCB3aG9zZSB2YWx1
ZSBpcyB0cnVlLgorICAgIGlmICghZm9ybWF0KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKworICAgIEpTVmFsdWUgZGF0ZSA9IGV4ZWMtPmFy
Z3VtZW50KDApOworICAgIGRvdWJsZSB2YWx1ZTsKKworICAgIC8vIDMuIElmIGRhdGUgaXMgbm90
IHByb3ZpZGVkIG9yIGlzIHVuZGVmaW5lZCwgdGhlbgorICAgIGlmIChkYXRlLmlzVW5kZWZpbmVk
KCkpIHsKKyAgICAgICAgLy8gYS4gTGV0IHggYmUgJURhdGVfbm93JSgpLgorICAgICAgICB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShkYXRlTm93KGV4ZWMpKS50b051bWJlcihleGVjKTsKKyAgICAv
LyA0LiBFbHNlCisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gYS4gTGV0IHggYmUgVG9OdW1iZXIo
ZGF0ZSkuCisgICAgICAgIHZhbHVlID0gZGF0ZS50b051bWJlcihleGVjKTsKKyAgICAgICAgLy8g
Yi4gUmV0dXJuSWZBYnJ1cHQoeCkuCisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAg
fQorCisgICAgLy8gNS4gUmV0dXJuIEZvcm1hdERhdGVUaW1lKGR0ZiwgeCkuCisKKyAgICAvLyAx
Mi4zLjQgRm9ybWF0RGF0ZVRpbWUgYWJzdHJhY3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAyLjApCisK
KyAgICAvLyAxLiBJZiB4IGlzIG5vdCBhIGZpbml0ZSBOdW1iZXIsIHRoZW4gdGhyb3cgYSBSYW5n
ZUVycm9yIGV4Y2VwdGlvbi4KKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodmFsdWUpKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93UmFuZ2VFcnJvcihleGVjLCBTdHJpbmcoImRh
dGUgdmFsdWUgaXMgbm90IGZpbml0ZSBpbiBEYXRlVGltZUZvcm1hdC5mb3JtYXQoKSIpKSk7CisK
KyAgICAvLyBGSVhNRTogaW1wbGVtZW50IDIgLSA5CisKKyAgICAvLyBSZXR1cm4gbmV3IERhdGUo
dmFsdWUpLnRvU3RyaW5nKCkgdW50aWwgcHJvcGVybHkgaW1wbGVtZW50ZWQuCisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+
Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworICAgIERhdGVJbnN0YW5jZSogZCA9IERhdGVJbnN0
YW5jZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmRhdGVTdHJ1Y3R1cmUoKSwgdmFsdWUpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShkKS50b1N0cmluZyhleGVjKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdkYWVkMTM4ZmIwOGRjZmEzYmU2N2QzN2M4M2E0N2RiNGFhYmNiZDcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXQuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFu
V2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElu
dGxEYXRlVGltZUZvcm1hdF9oCisjZGVmaW5lIEludGxEYXRlVGltZUZvcm1hdF9oCisKKyNpZiBF
TkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcjsKK2NsYXNz
IEpTQm91bmRGdW5jdGlvbjsKKworY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0IDogcHVibGljIEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSW50bERhdGVUaW1lRm9ybWF0KiBjcmVhdGUoVk0m
LCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBE
RUNMQVJFX0lORk87CisKKyAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0KCkgY29uc3Qg
eyByZXR1cm4gbV9ib3VuZEZvcm1hdC5nZXQoKTsgfQorICAgIHZvaWQgc2V0Qm91bmRGb3JtYXQo
Vk0mLCBKU0JvdW5kRnVuY3Rpb24qKTsKKworcHJvdGVjdGVkOgorICAgIEludGxEYXRlVGltZUZv
cm1hdChWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxKU0JvdW5k
RnVuY3Rpb24+IG1fYm91bmRGb3JtYXQ7Cit9OworICAgIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUoRXhlY1N0YXRlKik7
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRp
ZiAvLyBJbnRsRGF0ZVRpbWVGb3JtYXRfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4ZDgxOGFiODRjMmFjN2M5MTQyMmRkMTI2NjY3ZTNlMjQ3MjNlZjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkVycm9yLmgi
CisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpT
Q2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUg
Ikxvb2t1cC5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0
cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNf
VFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcik7CisK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqKTsKKworfQorCisjaW5j
bHVkZSAiSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgJmRhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBJbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIGRhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JUYWJsZQor
ICBzdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKK0BlbmQKKyovCisKK0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKiBJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIFN0
cnVjdHVyZSogZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUpCit7CisgICAgSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I+KHZtLmhlYXApKSBJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3Jl
YXRpb24odm0sIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlLCBkYXRlVGltZUZvcm1hdFN0cnVjdHVy
ZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yOjpJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQorewor
fQorCit2b2lkIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogZGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUsIFN0cnVjdHVyZSogZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUpCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgiRGF0ZVRpbWVGb3JtYXQiKSk7CisgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
ZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwor
ICAgIG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBkYXRlVGltZUZvcm1h
dFN0cnVjdHVyZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
SW50bERhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMi4xLjIgSW50
bC5EYXRlVGltZUZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQor
ICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhl
IGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQu
CisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGludm9rZWQgd2hlbiBjYWxsZWQgYXMgY29u
c3RydWN0b3Igc28gbmV3VGFyZ2V0IGlzIHRoZSBEYXRlVGltZUZvcm1hdCBmdW5jdGlvbi4KKwor
ICAgIC8vIDIuIExldCBkYXRlVGltZUZvcm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1
Y3RvcihuZXdUYXJnZXQsICVEYXRlVGltZUZvcm1hdFByb3RvdHlwZSUpLgorICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IElu
dGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSkpOworCisgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQo
ZGF0ZVRpbWVGb3JtYXQpLgorICAgIGlmICghZGF0ZVRpbWVGb3JtYXQpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICAvLyA0LiBSZXR1cm4gSW5p
dGlhbGl6ZURhdGVUaW1lRm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKS4K
KyAgICAvLyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShJbml0aWFsaXplRGF0ZVRpbWVG
b3JtYXQoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpKTsKKworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQpOworfQorICAgIAorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsSW50bERhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICAvLyAxMi4xLjIgSW50bC5EYXRlVGltZUZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11d
KSAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxl
dCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1Rh
cmdldCBiZSBOZXdUYXJnZXQuCisgICAgLy8gRklYTUU6IFN1cHBvcnQgTmV3VGFyZ2V0IGluIHN1
cGVyKCkgY2FsbHMuCisKKyAgICAvLyAyLiBMZXQgZGF0ZVRpbWVGb3JtYXQgYmUgT3JkaW5hcnlD
cmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAlRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUl
KS4KKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0
ZVRpbWVGb3JtYXQgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwganNDYXN0PEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpKTsKKworICAgIC8vIDMu
IFJldHVybklmQWJydXB0KGRhdGVUaW1lRm9ybWF0KS4KKyAgICBpZiAoIWRhdGVUaW1lRm9ybWF0
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAg
Ly8gNC4gUmV0dXJuIEluaXRpYWxpemVEYXRlVGltZUZvcm1hdChkYXRlVGltZUZvcm1hdCwgbG9j
YWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSW5p
dGlhbGl6ZURhdGVUaW1lRm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKSk7
CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0KTsKK30KKworQ29u
c3RydWN0VHlwZSBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVj
dERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0OworICAg
IHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworQ2FsbFR5cGUgSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkK
K3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsSW50bERhdGVUaW1lRm9ybWF0
OworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK2Jvb2wgSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
K3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEludGVybmFsRnVuY3Rpb24+KGV4
ZWMsIGRhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JUYWJsZSwganNDYXN0PEludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1
bmNTdXBwb3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDEyLjIuMiBJ
bnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGVzIFssIG9wdGlvbnNd
KSAoRUNNQS00MDIgMi4wKQorCisgICAgLy8gMS4gTGV0IGF2YWlsYWJsZUxvY2FsZXMgYmUgJURh
dGVUaW1lRm9ybWF0JS5bW2F2YWlsYWJsZUxvY2FsZXNdXS4KKyAgICAvLyBGSVhNRTogYXZhaWxh
YmxlID0gSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmdldEF2YWlsYWJsZUxvY2FsZXMo
KQorCisgICAgLy8gMi4gTGV0IHJlcXVlc3RlZExvY2FsZXMgYmUgQ2Fub25pY2FsaXplTG9jYWxl
TGlzdChsb2NhbGVzKS4KKyAgICAvLyBGSVhNRTogcmVxdWVzdGVkID0gQ2Fub25pY2FsaXplTG9j
YWxlTGlzdChsb2NhbGVzKQorCisgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMoYXZh
aWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGUsIHJlcXVl
c3RlZCwgb3B0aW9ucykpOworCisgICAgLy8gUmV0dXJuIGVtcHR5IGFycmF5IHVudGlsIHByb3Bl
cmx5IGltcGxlbWVudGVkLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAg
ICBKU0FycmF5KiBzdXBwb3J0ZWRMb2NhbGVzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFs
aXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24oQXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7CisgICAgaWYgKCFzdXBwb3J0ZWRM
b2NhbGVzKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlF
cnJvcihleGVjKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2Fs
ZXMpOworfQorICAgIAordm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RhdGVU
aW1lRm9ybWF0U3RydWN0dXJlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmMDQz
YTdlNzBhNDJmZmVhZmYyZDhkYmI1NjBlYmExYzMzYWNhNTcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
ci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5X
YWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JfaAorI2RlZmluZSBJbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvcl9oCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkludGVybmFsRnVu
Y3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxEYXRlVGltZUZvcm1hdDsK
K2NsYXNzIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTsKKworY2xhc3MgSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSos
IFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBT
dHJ1Y3R1cmUqIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRl
VGltZUZvcm1hdFN0cnVjdHVyZS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYsIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSosIFN0cnVjdHVyZSop
OworCitwcml2YXRlOgorICAgIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKFZNJiwgU3Ry
dWN0dXJlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0Nl
bGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpT
Q2VsbCosIENhbGxEYXRhJik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgCisg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZTsKK307
CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bERhdGVUaW1lRm9y
bWF0KEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bERh
dGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSopOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIEVOQUJMRShJTlRMKQorCisjZW5kaWYgLy8gSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI2NDcyZDBhMzNmYTY0
MjkxMDAyNmIyOWY3OTY4YTljMWY3NzA0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTAs
MCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0
aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKworI2lmIEVOQUJMRShJ
TlRMKQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQu
aCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdC5o
IgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5s
aW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlf
REVTVFJVQ1RJQkxFKEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSk7CisKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRl
ckZvcm1hdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRl
Kik7CisKK30KKworI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGU6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNfaW5m
bywgJmRhdGVUaW1lRm9ybWF0UHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZS5sdXQuaAorQGJlZ2luIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlVGFi
bGUKKyAgZm9ybWF0ICAgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJG
b3JtYXQgICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorICByZXNvbHZlZE9wdGlvbnMgIEludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMgIERvbnRFbnVtfEZ1bmN0
aW9uIDAKK0BlbmQKKyovCisKK0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSogc3RydWN0dXJlKQoreworICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogb2Jq
ZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlPih2bS5oZWFwKSkgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUp
OworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cnVjdHVyZSk7CisgICAgcmV0dXJu
IG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKK30KKworSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGxE
YXRlVGltZUZvcm1hdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqKQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKK30KKworYm9vbCBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sK
KyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCBkYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
Kj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIC8vIDEyLjMuMyBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlw
ZS5mb3JtYXQgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBMZXQgZHRmIGJlIHRoaXMgRGF0ZVRp
bWVGb3JtYXQgb2JqZWN0LgorICAgIEludGxEYXRlVGltZUZvcm1hdCogZHRmID0ganNEeW5hbWlj
Q2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgLy8gMi4g
UmV0dXJuSWZBYnJ1cHQoZHRmKS4KKyAgICBpZiAoIWR0ZikKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisgICAgCisgICAgSlNCb3VuZEZ1bmN0
aW9uKiBib3VuZEZvcm1hdCA9IGR0Zi0+Ym91bmRGb3JtYXQoKTsKKyAgICAvLyAzLiBJZiB0aGUg
W1tib3VuZEZvcm1hdF1dIGludGVybmFsIHNsb3Qgb2YgdGhpcyBEYXRlVGltZUZvcm1hdCBvYmpl
Y3QgaXMgdW5kZWZpbmVkLAorICAgIGlmICghYm91bmRGb3JtYXQpIHsKKyAgICAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4
ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBu
ZXcgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmluZWQgaW4gMTIuMy40LgorICAgICAg
ICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuIChOb3RlOiBG
4oCZcyBsZW5ndGggcHJvcGVydHkgd2FzIDAgaW4gRUNNQS00MDIgMS4wKQorICAgICAgICBKU0Z1
bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSwgSW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1h
dERhdGVUaW1lLCBOb0ludHJpbnNpYyk7CisgICAgICAgIEpTQXJyYXkqIGJvdW5kQXJncyA9IEpT
QXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCks
IDApOworICAgICAgICBpZiAoIWJvdW5kQXJncykKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKyAgICAgICAgCisgICAgICAg
IC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4K
KyAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCB0YXJnZXRPYmplY3QsIGR0ZiwgYm91bmRBcmdzLCAxLCBBU0NJSUxpdGVyYWwoImZv
cm1hdCIpKTsKKyAgICAgICAgLy8gZC4gU2V0IGR0Zi5bW2JvdW5kRm9ybWF0XV0gdG8gYmYuCisg
ICAgICAgIGR0Zi0+c2V0Qm91bmRGb3JtYXQodm0sIGJvdW5kRm9ybWF0KTsKKyAgICB9CisgICAg
Ly8gNC4gUmV0dXJuIGR0Zi5bW2JvdW5kRm9ybWF0XV0uCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShib3VuZEZvcm1hdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgLy8gMTIuMy41IEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29s
dmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkdGYg
PSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsK
KyAgICBpZiAoIWR0ZikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihleGVjKSk7CisKKyAgICAvLyBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIG5ldyBvYmplY3Qg
d2hvc2UgcHJvcGVydGllcyBhbmQgYXR0cmlidXRlcyBhcmUgc2V0IGFzIGlmIGNvbnN0cnVjdGVk
IGJ5IGFuIG9iamVjdCBsaXRlcmFsIGFzc2lnbmluZyB0byBlYWNoIG9mIHRoZSBmb2xsb3dpbmcg
cHJvcGVydGllcyB0aGUgdmFsdWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJuYWwgc2xvdCBv
ZiB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdCAoc2VlIDEyLjQpOiBsb2NhbGUsIGNhbGVuZGFy
LCBudW1iZXJpbmdTeXN0ZW0sIHRpbWVab25lLCBob3VyMTIsIHdlZWtkYXksIGVyYSwgeWVhciwg
bW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIGFuZCB0aW1lWm9uZU5hbWUuIFByb3Bl
cnRpZXMgd2hvc2UgY29ycmVzcG9uZGluZyBpbnRlcm5hbCBzbG90cyBhcmUgbm90IHByZXNlbnQg
YXJlIG5vdCBhc3NpZ25lZC4KKyAgICAvLyBOb3RlOiBJbiB0aGlzIHZlcnNpb24gb2YgdGhlIEVD
TUFTY3JpcHQgMjAxNSBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEksIHRoZSB0aW1lWm9uZSBwcm9w
ZXJ0eSB3aWxsIGJlIHRoZSBuYW1lIG9mIHRoZSBkZWZhdWx0IHRpbWUgem9uZSBpZiBubyB0aW1l
Wm9uZSBwcm9wZXJ0eSB3YXMgcHJvdmlkZWQgaW4gdGhlIG9wdGlvbnMgb2JqZWN0IHByb3ZpZGVk
IHRvIHRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yLiBUaGUgcHJldmlvdXMgdmVy
c2lvbiBsZWZ0IHRoZSB0aW1lWm9uZSBwcm9wZXJ0eSB1bmRlZmluZWQgaW4gdGhpcyBjYXNlLgor
CisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKwor
ICAgIC8vIEZJWE1FOiBQb3B1bGF0ZSBvYmplY3QgZnJvbSBpbnRlcm5hbCBzbG90cy4KKworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3B0aW9ucyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmEyZmQ1ZTM0ZWE3OTU4NmU0Nzg5NmZhZmZjNDRlNWU2ZmE2MTU5Y2IKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFu
ZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZV9oCisjZGVmaW5lIEludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZV9oCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkludGxEYXRl
VGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUgOiBwdWJsaWMgSW50bERhdGVUaW1l
Rm9ybWF0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGxEYXRlVGltZUZvcm1hdCBCYXNlOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGljIEludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFN0cnVjdHVyZSopOworCitwcml2YXRlOgor
ICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTlRMKQorCisjZW5kaWYgLy8gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTM5ZGM1YjE5ZWE0OGVjYjRhNGFlMzE3OTBlMzA5ZWI0YWM3
NmFiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgor
CisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNs
dWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMu
aCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
b25zdCBDbGFzc0luZm8gSW50bE51bWJlckZvcm1hdDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJh
c2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsTnVtYmVyRm9ybWF0KSB9Owor
CitJbnRsTnVtYmVyRm9ybWF0KiBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQoreworICAgIEludGxOdW1iZXJG
b3JtYXQqIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxOdW1iZXJGb3Jt
YXQ+KHZtLmhlYXApKSBJbnRsTnVtYmVyRm9ybWF0KHZtLCBjb25zdHJ1Y3Rvci0+bnVtYmVyRm9y
bWF0U3RydWN0dXJlKCkpOworICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJl
dHVybiBmb3JtYXQ7Cit9CisKK1N0cnVjdHVyZSogSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworfQorCitJbnRsTnVtYmVyRm9ybWF0OjpJbnRsTnVtYmVyRm9ybWF0KFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU0Rlc3RydWN0aWJsZU9iamVjdCh2bSwgc3RydWN0dXJl
KQoreworfQorCit2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
K3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGlu
Zm8oKSkpOworfQorCit2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxs
KQoreworICAgIHN0YXRpY19jYXN0PEludGxOdW1iZXJGb3JtYXQqPihjZWxsKS0+SW50bE51bWJl
ckZvcm1hdDo6fkludGxOdW1iZXJGb3JtYXQoKTsKK30KKwordm9pZCBJbnRsTnVtYmVyRm9ybWF0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSW50bE51bWJlckZvcm1hdCogdGhpc09iamVjdCA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0
Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpOworCisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKwor
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5kRm9ybWF0KTsKK30KKwordm9p
ZCBJbnRsTnVtYmVyRm9ybWF0OjpzZXRCb3VuZEZvcm1hdChWTSYgdm0sIEpTQm91bmRGdW5jdGlv
biogZm9ybWF0KQoreworICAgIG1fYm91bmRGb3JtYXQuc2V0KHZtLCB0aGlzLCBmb3JtYXQpOwor
fQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRGdW5jRm9y
bWF0TnVtYmVyKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMS4zLjQgRm9ybWF0IE51bWJl
ciBGdW5jdGlvbnMgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBMZXQgbmYgYmUgdGhlIHRoaXMg
dmFsdWUuCisgICAgSW50bE51bWJlckZvcm1hdCogZm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRs
TnVtYmVyRm9ybWF0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIC8vIDIuIEFzc2VydDogVHlw
ZShuZikgaXMgT2JqZWN0IGFuZCBuZiBoYXMgYW4gW1tpbml0aWFsaXplZE51bWJlckZvcm1hdF1d
IGludGVybmFsIHNsb3Qgd2hvc2UgdmFsdWUgaXMgdHJ1ZS4KKyAgICBpZiAoIWZvcm1hdCkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisKKyAg
ICAvLyAzLiBJZiB2YWx1ZSBpcyBub3QgcHJvdmlkZWQsIGxldCB2YWx1ZSBiZSB1bmRlZmluZWQu
CisgICAgLy8gNC4gTGV0IHggYmUgVG9OdW1iZXIodmFsdWUpLgorICAgIGRvdWJsZSB2YWx1ZSA9
IGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpOworICAgIC8vIDUuIFJldHVybklmQWJy
dXB0KHgpLgorICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIC8vIDYuIFJldHVybiBGb3JtYXRO
dW1iZXIobmYsIHgpLgorICAgIAorICAgIC8vIDExLjMuNCBGb3JtYXROdW1iZXIgYWJzdHJhY3Qg
b3BlcmF0aW9uIChFQ01BLTQwMiAyLjApCisgICAgLy8gRklYTUU6IEltcGxlbWVudCBGb3JtYXRO
dW1iZXIuCisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZhbHVlKS50b1N0
cmluZyhleGVjKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxF
KElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2MyNTM4ZjliZmJhMzBlNzQzODIxYjJmMGQxODFlNjM4NzJhMTIw
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXQuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEludGxOdW1iZXJGb3JtYXRfaAorI2RlZmluZSBJbnRsTnVtYmVyRm9ybWF0X2gKKwor
I2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvcjsKK2Ns
YXNzIEpTQm91bmRGdW5jdGlvbjsKKworY2xhc3MgSW50bE51bWJlckZvcm1hdCA6IHB1YmxpYyBK
U0Rlc3RydWN0aWJsZU9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJs
ZU9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEludGxOdW1iZXJGb3JtYXQqIGNyZWF0ZShWTSYs
IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNM
QVJFX0lORk87CisKKyAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0KCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3VuZEZvcm1hdC5nZXQoKTsgfQorICAgIHZvaWQgc2V0Qm91bmRGb3JtYXQoVk0m
LCBKU0JvdW5kRnVuY3Rpb24qKTsKKworcHJvdGVjdGVkOgorICAgIEludGxOdW1iZXJGb3JtYXQo
Vk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisgICAgc3Rh
dGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBXcml0ZUJhcnJpZXI8SlNCb3VuZEZ1bmN0
aW9uPiBtX2JvdW5kRm9ybWF0OworfTsKKyAgICAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXROdW1iZXIoRXhlY1N0YXRlKik7CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRs
TnVtYmVyRm9ybWF0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxZDgy
NTA3YmVkYWE1Yzc2M2I5NjVkMzFjNzlkMDNmZGZhNmNiZTEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwCkBAIC0wLDAgKzEsMTc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFu
V2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCIKKwor
I2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsTnVt
YmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIgorI2lu
Y2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJMb29rdXAuaCIKKyNpbmNsdWRlICJT
bG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUo
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2Fs
ZXNPZihFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19p
bmZvLCAmbnVtYmVyRm9ybWF0Q29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gbnVtYmVyRm9ybWF0Q29uc3RydWN0b3JU
YWJsZQorICBzdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAxCitAZW5kCisqLworCitJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIG51bWJlckZvcm1hdFByb3RvdHlwZSwgU3RydWN0
dXJlKiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUpCit7CisgICAgSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
cih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIG51
bWJlckZvcm1hdFByb3RvdHlwZSwgbnVtYmVyRm9ybWF0U3RydWN0dXJlKTsKKyAgICByZXR1cm4g
Y29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7Cit9CisKK0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6SW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJ
bnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUqIG51bWJlckZvcm1hdFByb3RvdHlwZSwgU3RydWN0dXJlKiBudW1iZXJGb3JtYXRT
dHJ1Y3R1cmUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgi
TnVtYmVyRm9ybWF0IikpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG51bWJlckZvcm1hdFByb3RvdHlwZSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERv
bnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUuc2V0KHZt
LCB0aGlzLCBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEludGxOdW1iZXJGb3JtYXQoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIC8vIDExLjEuMiBJbnRsLk51bWJlckZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAo
RUNNQS00MDIgMi4wKQorICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBu
ZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1Rhcmdl
dCBiZSBOZXdUYXJnZXQuCisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGludm9rZWQgd2hl
biBjYWxsZWQgYXMgY29uc3RydWN0b3Igc28gbmV3VGFyZ2V0IGlzIHRoZSBOdW1iZXJGb3JtYXQg
ZnVuY3Rpb24uCisKKyAgICAvLyAyLiBMZXQgbnVtYmVyRm9ybWF0IGJlIE9yZGluYXJ5Q3JlYXRl
RnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJU51bWJlckZvcm1hdFByb3RvdHlwZSUpLgorICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0
ID0gSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpKTsKKworICAgIC8vIDMuIFJldHVybklmQWJydXB0
KG51bWJlckZvcm1hdCkuCisgICAgaWYgKCFudW1iZXJGb3JtYXQpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICAvLyA0LiBSZXR1cm4gSW5pdGlh
bGl6ZU51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpLgorICAgIC8v
IEZJWE1FOiByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEluaXRpYWxpemVOdW1iZXJGb3JtYXQobnVt
YmVyRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKG51bWJlckZvcm1hdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bEludGxOdW1iZXJGb3JtYXQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDExLjEuMiBJbnRs
Lk51bWJlckZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQorICAg
IC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFj
dGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCisg
ICAgLy8gRklYTUU6IFN1cHBvcnQgTmV3VGFyZ2V0IGluIHN1cGVyKCkgY2FsbHMuCisKKyAgICAv
LyAyLiBMZXQgbnVtYmVyRm9ybWF0IGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5l
d1RhcmdldCwgJU51bWJlckZvcm1hdFByb3RvdHlwZSUpLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0ID0gSW50bE51bWJlckZvcm1h
dDo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKj4oZXhlYy0+
Y2FsbGVlKCkpKTsKKworICAgIC8vIDMuIFJldHVybklmQWJydXB0KG51bWJlckZvcm1hdCkuCisg
ICAgaWYgKCFudW1iZXJGb3JtYXQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisKKyAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZU51bWJlckZvcm1hdChu
dW1iZXJGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpLgorICAgIC8vIEZJWE1FOiByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEluaXRpYWxpemVOdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBsb2NhbGVz
LCBvcHRpb25zKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdCk7
Cit9CisKK0NvbnN0cnVjdFR5cGUgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpnZXRDb25z
dHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAg
Y29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0
OworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworQ2FsbFR5cGUgSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERh
dGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEludGxOdW1iZXJGb3Jt
YXQ7CisgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKK30KKworYm9vbCBJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
K3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEludGVybmFsRnVuY3Rpb24+KGV4
ZWMsIG51bWJlckZvcm1hdENvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBw
b3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDExLjIuMiBJbnRsLk51
bWJlckZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YobG9jYWxlcyBbLCBvcHRpb25zXSkgKEVDTUEt
NDAyIDIuMCkKKworICAgIC8vIDEuIExldCBhdmFpbGFibGVMb2NhbGVzIGJlICVOdW1iZXJGb3Jt
YXQlLltbYXZhaWxhYmxlTG9jYWxlc11dLgorICAgIC8vIEZJWE1FOiBhdmFpbGFibGUgPSBJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmdldEF2YWlsYWJsZUxvY2FsZXMoKQorCisgICAgLy8g
Mi4gTGV0IHJlcXVlc3RlZExvY2FsZXMgYmUgQ2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2NhbGVz
KS4KKyAgICAvLyBGSVhNRTogcmVxdWVzdGVkID0gQ2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2Nh
bGVzKQorCisgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMoYXZhaWxhYmxlTG9jYWxl
cywgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6IHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGUsIHJlcXVlc3RlZCwgb3B0aW9u
cykpOworCisgICAgLy8gUmV0dXJuIGVtcHR5IGFycmF5IHVudGlsIHByb3Blcmx5IGltcGxlbWVu
dGVkLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0FycmF5KiBz
dXBwb3J0ZWRMb2NhbGVzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
QXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7CisgICAgaWYgKCFzdXBwb3J0ZWRMb2NhbGVzKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7
CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMpOworfQorCit2
b2lkIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3RvciogdGhpc09iamVjdCA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqPihj
ZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7
CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbnVtYmVyRm9ybWF0U3RydWN0dXJlKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI3NWYxMDIxNjRjY2RmMTJjZTUzZTVjOTQ4YjZjYTEx
Nzk5OWFmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5j
b20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yX2gKKyNk
ZWZpbmUgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yX2gKKworI2lmIEVOQUJMRShJTlRMKQor
CisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgSW50bE51bWJlckZvcm1hdDsKK2NsYXNzIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU7CisK
K2NsYXNzIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0
aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBJbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9J
TkZPOworCisgICAgU3RydWN0dXJlKiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX251bWJlckZvcm1hdFN0cnVjdHVyZS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqLCBTdHJ1
Y3R1cmUqKTsKKworcHJpdmF0ZToKKyAgICBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IoVk0m
LCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERh
dGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwor
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAg
ICAKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX251bWJlckZvcm1hdFN0cnVjdHVyZTsK
K307CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bE51bWJlckZv
cm1hdChFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxO
dW1iZXJGb3JtYXQoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Jf
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Mjc4YzU4MTdiODI0NzNlODIxNzZj
YjRiMTM0MTFjNzJmMWU4YTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3Jh
ZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2lu
Y2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUg
IkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAi
T2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUo
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZSk7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRl
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVk
ZSAiSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NvbnN0IENsYXNzSW5mbyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJP
YmplY3QiLCAmSW50bE51bWJlckZvcm1hdDo6c19pbmZvLCAmbnVtYmVyRm9ybWF0UHJvdG90eXBl
VGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSkgfTsK
KworLyogU291cmNlIGZvciBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oCitAYmVnaW4g
bnVtYmVyRm9ybWF0UHJvdG90eXBlVGFibGUKKyAgZm9ybWF0ICAgICAgICAgICBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0ICAgICAgICAgRG9udEVudW18QWNjZXNzb3IKKyAg
cmVzb2x2ZWRPcHRpb25zICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0
aW9ucyAgRG9udEVudW18RnVuY3Rpb24gMAorQGVuZAorKi8KKworSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZSogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlPih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSh2bSwg
c3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJ
bnRsTnVtYmVyRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqKQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKK30KKworYm9vbCBJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7Cisg
ICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgbnVtYmVyRm9y
bWF0UHJvdG90eXBlVGFibGUsIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKj4ob2Jq
ZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSogZXhl
YykKK3sKKyAgICAvLyAxMS4zLjMgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCAo
RUNNQS00MDIgMi4wKQorICAgIC8vIDEuIExldCBuZiBiZSB0aGlzIE51bWJlckZvcm1hdCBvYmpl
Y3QuCisgICAgSW50bE51bWJlckZvcm1hdCogbmYgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJG
b3JtYXQqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFuZikKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisgICAgCisgICAgSlNCb3Vu
ZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IG5mLT5ib3VuZEZvcm1hdCgpOworICAgIC8vIDIuIElm
IG5mLltbYm91bmRGb3JtYXRdXSBpcyB1bmRlZmluZWQsCisgICAgaWYgKCFib3VuZEZvcm1hdCkg
eworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworICAgICAgICAv
LyBhLiBMZXQgRiBiZSBhIG5ldyBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgYXMgZGVmaW5lZCBp
biAxMS4zLjQuCisgICAgICAgIC8vIGIuIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVy
dHkgaXMgMS4KKyAgICAgICAgSlNGdW5jdGlvbiogdGFyZ2V0T2JqZWN0ID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsIEFTQ0lJTGl0ZXJhbCgiZm9ybWF0IiksIEludGxO
dW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyLCBOb0ludHJpbnNpYyk7CisgICAgICAgIEpTQXJy
YXkqIGJvdW5kQXJncyA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFy
cmF5V2l0aFVuZGVjaWRlZCksIDApOworICAgICAgICBpZiAoIWJvdW5kQXJncykKKyAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsK
KworICAgICAgICAvLyBjLiBMZXQgYmYgYmUgQm91bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3RoaXMg
dmFsdWXCuykuCisgICAgICAgIGJvdW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBuZiwgYm91bmRBcmdzLCAxLCBBU0NJSUxp
dGVyYWwoImZvcm1hdCIpKTsKKyAgICAgICAgLy8gZC4gU2V0IG5mLltbYm91bmRGb3JtYXRdXSB0
byBiZi4KKyAgICAgICAgbmYtPnNldEJvdW5kRm9ybWF0KHZtLCBib3VuZEZvcm1hdCk7CisgICAg
fQorICAgIC8vIDMuIFJldHVybiBuZi5bW2JvdW5kRm9ybWF0XV0uCisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShib3VuZEZvcm1hdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIC8vIDExLjMuNSBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVz
b2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKKyAgICBJbnRsTnVtYmVyRm9ybWF0KiBuZiA9
IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAg
ICBpZiAoIW5mKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGV4ZWMpKTsKKworICAgIC8vIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgbmV3IG9iamVjdCB3aG9z
ZSBwcm9wZXJ0aWVzIGFuZCBhdHRyaWJ1dGVzIGFyZSBzZXQgYXMgaWYgY29uc3RydWN0ZWQgYnkg
YW4gb2JqZWN0IGxpdGVyYWwgYXNzaWduaW5nIHRvIGVhY2ggb2YgdGhlIGZvbGxvd2luZyBwcm9w
ZXJ0aWVzIHRoZSB2YWx1ZSBvZiB0aGUgY29ycmVzcG9uZGluZyBpbnRlcm5hbCBzbG90IG9mIHRo
aXMgTnVtYmVyRm9ybWF0IG9iamVjdCAoc2VlIDExLjQpOiBsb2NhbGUsIG51bWJlcmluZ1N5c3Rl
bSwgc3R5bGUsIGN1cnJlbmN5LCBjdXJyZW5jeURpc3BsYXksIG1pbmltdW1JbnRlZ2VyRGlnaXRz
LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIG1heGltdW1GcmFjdGlvbkRpZ2l0cywgbWluaW11bVNp
Z25pZmljYW50RGlnaXRzLCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIGFuZCB1c2VHcm91cGlu
Zy4gUHJvcGVydGllcyB3aG9zZSBjb3JyZXNwb25kaW5nIGludGVybmFsIHNsb3RzIGFyZSBub3Qg
cHJlc2VudCBhcmUgbm90IGFzc2lnbmVkLgorCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25z
dHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKworICAgIC8vIEZJWE1FOiBQb3B1bGF0ZSBvYmplY3Qg
ZnJvbSBpbnRlcm5hbCBzbG90cy4KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3B0aW9u
cyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhiYzA1MWZkZGI4ODUyYTlhOTVmOWYxN2Q5OGFl
OGNiNzg1MjExNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaApAQCAtMCwwICsxLDU4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwu
Y29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVfaAorI2Rl
ZmluZSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlX2gKKworI2lmIEVOQUJMRShJTlRMKQorCisj
aW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlIDogcHVibGlj
IEludGxOdW1iZXJGb3JtYXQgeworcHVibGljOgorICAgIHR5cGVkZWYgSW50bE51bWJlckZvcm1h
dCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3Rh
dGljIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJv
dGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBTdHJ1Y3R1cmUqKTsKKworcHJp
dmF0ZToKKyAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7Cisg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAK
aW5kZXggMTJkYTkzOGZhODEzYWUzMWYzNzU2ZGIwNGRmMDdmYmIwOTkyZGQwYy4uYmE0NTdlNzI1
NjA5MTA3ODkxMjJmNTEzNzVlZTlmZGMxMDI0ZDMyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTI4LDYgKzI4LDE2IEBACiAKICNpZiBFTkFC
TEUoSU5UTCkKIAorI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50
bENvbGxhdG9yLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCIKKyNpbmNs
dWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3Jt
YXQuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIgorI2luY2x1
ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJG
b3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCIKKyNpbmNs
dWRlICJJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgpAQCAt
NDgsMTcgKzU4LDQzIEBAIEludGxPYmplY3Q6OkludGxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKIHsKIH0KIAotSW50bE9iamVjdCogSW50bE9iamVjdDo6Y3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitJbnRsT2JqZWN0KiBJbnRsT2JqZWN0OjpjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKIHsKICAgICBJbnRsT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxJbnRsT2JqZWN0Pih2bS5oZWFwKSkgSW50bE9iamVjdCh2bSwgc3RydWN0dXJlKTsKLSAgICBv
YmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZt
LCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLXZvaWQgSW50bE9iamVj
dDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQordm9pZCBJbnRsT2JqZWN0OjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKworICAgIC8v
IFNldCB1cCBDb2xsYXRvci4KKyAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIGNvbGxhdG9yUHJv
dG90eXBlID0gSW50bENvbGxhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
SW50bENvbGxhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgIFN0cnVjdHVyZSogY29sbGF0
b3JTdHJ1Y3R1cmUgPSBJbnRsQ29sbGF0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBjb2xsYXRvclByb3RvdHlwZSk7CisgICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IqIGNv
bGxhdG9yQ29uc3RydWN0b3IgPSBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJ
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGNvbGxhdG9yUHJvdG90eXBlLCBj
b2xsYXRvclN0cnVjdHVyZSk7CisKKyAgICBjb2xsYXRvclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBjb2xsYXRv
ckNvbnN0cnVjdG9yLCBEb250RW51bSk7CisKKyAgICAvLyBTZXQgdXAgTnVtYmVyRm9ybWF0Lgor
ICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIG51bWJlckZvcm1hdFByb3RvdHlwZSA9IElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgIFN0cnVjdHVyZSogbnVtYmVyRm9y
bWF0U3RydWN0dXJlID0gSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9i
YWxPYmplY3QsIG51bWJlckZvcm1hdFByb3RvdHlwZSk7CisgICAgSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yKiBudW1iZXJGb3JtYXRDb25zdHJ1Y3RvciA9IEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBl
KCkpLCBudW1iZXJGb3JtYXRQcm90b3R5cGUsIG51bWJlckZvcm1hdFN0cnVjdHVyZSk7CisKKyAg
ICBudW1iZXJGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgbnVtYmVyRm9ybWF0Q29uc3RydWN0b3IsIERv
bnRFbnVtKTsKKworICAgIC8vIFNldCB1cCBEYXRlVGltZUZvcm1hdC4KKyAgICBJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGUqIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlID0gSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgIFN0cnVjdHVyZSogZGF0ZVRpbWVGb3JtYXRT
dHJ1Y3R1cmUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFs
T2JqZWN0LCBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IqIGRhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IgPSBJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Q
cm90b3R5cGUoKSksIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlLCBkYXRlVGltZUZvcm1hdFN0cnVj
dHVyZSk7CisKKyAgICBkYXRlVGltZUZvcm1hdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBkYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLCBEb250RW51bSk7CisKKyAgICAvLyA4LjEgUHJvcGVydGllcyBvZiB0aGUg
SW50bCBPYmplY3QgKEVDTUEtNDAyIDIuMCkKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Q29sbGF0b3IsIGNvbGxhdG9yQ29uc3RydWN0b3IsIERv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+TnVtYmVyRm9ybWF0LCBudW1iZXJGb3JtYXRDb25zdHJ1Y3RvciwgRG9udEVudW0pOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5EYXRl
VGltZUZvcm1hdCwgZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogfQogCiBT
dHJ1Y3R1cmUqIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCmluZGV4IGY0NWI5YWI2NDkwMjI4ZWRlYTU3YWIyZTBi
ZTljMGI1YTg5ZTJmYzAuLjgzNDI4NTQyYjJkMGZiYzdlNWIxNDRhMzZiY2JiODZlZGZjYmJlODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKQEAgLTMyLDE4
ICszMiwyNSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSW50bENvbGxhdG9yQ29uc3Ry
dWN0b3I7CitjbGFzcyBJbnRsQ29sbGF0b3JQcm90b3R5cGU7CitjbGFzcyBJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3RvcjsKK2NsYXNzIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTsKK2Ns
YXNzIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvcjsKK2NsYXNzIEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGU7CisKIGNsYXNzIEludGxPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKLSAgICBzdGF0aWMgSW50bE9iamVjdCogY3Jl
YXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIEludGxPYmplY3QqIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xB
UkVfSU5GTzsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIAogcHJpdmF0ZToK
ICAgICBJbnRsT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMTBiZjE3NzgyMDIyYzQ3OTRk
MzBlNzBlZmIyYmVmNWRmMjQyY2UxOC4uMzY5YzMxMjg0ZDMwMjBlMWNmMGVlM2I4YWUzMTkzY2Vh
MGM0ZmQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmV2YWws
IG1fZXZhbEZ1bmN0aW9uLmdldCgpLCBEb250RW51bSk7CiAgICAgCiAjaWYgRU5BQkxFKElOVEwp
Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPklu
dGwsIEludGxPYmplY3Q6OmNyZWF0ZSh2bSwgSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSk7CisgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkludGwsIEludGxPYmpl
Y3Q6OmNyZWF0ZSh2bSwgdGhpcywgSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSk7CiAjZW5kaWYgLy8gRU5BQkxF
KElOVEwpCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPkpTT04sIEpTT05PYmplY3Q6OmNyZWF0ZSh2bSwgSlNPTk9iamVjdDo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPk1hdGgsIE1h
dGhPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgTWF0aE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBi
L1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmlu
ZGV4IGZlNTZiYzBiMWJmZDYwYzUxYTA1N2U5NTU0ZDE5ZWQ0ODc0ZjRmNDIuLmQyMjA5MmE3Yjlk
M2MzZTBmYWE1NmQ4ODNjYzRhMGE0NGQyZmY3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0xMTYsNyArMTE2
LDcgQEAgRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMDAwID0gOwog
RU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMTAwID0gRU5BQkxFX1dJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRf
bWFjb3N4XzEwMTIwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiAKLUVOQUJM
RV9JTlRMID0gOworRU5BQkxFX0lOVEwgPSBFTkFCTEVfSU5UTDsKIAogRU5BQkxFX0lPU19HRVNU
VVJFX0VWRU5UU1tzZGs9aXBob25lKl0gPSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9z
X1dJVEhfSU5URVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFMX1NESykpOwogRU5BQkxFX0lPU19HRVNU
VVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfWUVTID0gRU5BQkxFX0lPU19HRVNUVVJF
X0VWRU5UUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZmU1NmJjMGIxYmZkNjBjNTFhMDU3ZTk1NTRk
MTllZDQ4NzRmNGY0Mi4uZDIyMDkyYTdiOWQzYzNlMGZhYTU2ZDg4M2NjNGEwYTQ0ZDJmZjdjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKQEAgLTExNiw3ICsxMTYsNyBAQCBFTkFCTEVfV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUX21hY29zeF8xMDEwMDAgPSA7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUX21hY29zeF8xMDExMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwog
RU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gRU5BQkxFX1dJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIAotRU5BQkxFX0lOVEwgPSA7CitFTkFCTEVfSU5UTCA9
IEVOQUJMRV9JTlRMOwogCiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9
ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0Vf
SU5URVJOQUxfU0RLKSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVS
TkFMX1NES19ZRVMgPSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3Vy
Y2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBm
ZTU2YmMwYjFiZmQ2MGM1MWEwNTdlOTU1NGQxOWVkNDg3NGY0ZjQyLi5kMjIwOTJhN2I5ZDNjM2Uw
ZmFhNTZkODgzY2M0YTBhNDRkMmZmN2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMTE2LDcgKzExNiw3IEBA
IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTAwMCA9IDsKIEVOQUJM
RV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTEwMCA9IEVOQUJMRV9XSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQ7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29z
eF8xMDEyMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogCi1FTkFCTEVfSU5U
TCA9IDsKK0VOQUJMRV9JTlRMID0gRU5BQkxFX0lOVEw7CiAKIEVOQUJMRV9JT1NfR0VTVFVSRV9F
VkVOVFNbc2RrPWlwaG9uZSpdID0gJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRI
X0lOVEVSTkFMX1NES18kKFVTRV9JTlRFUk5BTF9TREspKTsKIEVOQUJMRV9JT1NfR0VTVFVSRV9F
VkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLX1lFUyA9IEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVO
VFM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UgYi9Tb3Vy
Y2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKaW5kZXggNTE0MTE1Mzc1NWFjNDUzZjQ2YzQ3
ZDM3ZDQ4NGRiOTY3NTY3ZjJiNi4uYzUzYjZiNWZmNTIxZGQ1NTExOGEwYjk4OWRiOTc1ZmI1YWVk
Mjg3OSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCisrKyBi
L1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQpAQCAtOTgsNyArOTgsNyBAQCBtYWNy
byhXRUJLSVRfT1BUSU9OX0JFR0lOKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9J
TlBVVF9UWVBFX01PTlRIICJUb2dnbGUgbW9udGggdHlwZSA8aW5wdXQ+IHN1cHBvcnQiIFBSSVZB
VEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUg
IlRvZ2dsZSB0aW1lIHR5cGUgPGlucHV0PiBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJL
SVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU5QVVRfVFlQRV9XRUVLICJUb2dnbGUgd2VlayB0eXBl
IDxpbnB1dD4gc3VwcG9ydCIgUFJJVkFURSBPRkYpCi0gICAgV0VCS0lUX09QVElPTl9ERUZJTkUo
RU5BQkxFX0lOVEwgIlRvZ2dsZSBJbnRsIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQorICAgIFdFQktJ
VF9PUFRJT05fREVGSU5FKEVOQUJMRV9JTlRMICJUb2dnbGUgSW50bCBzdXBwb3J0IiBQUklWQVRF
IE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9JT1NfQUlSUExBWSAiVG9nZ2xl
IGlPUyBhaXJwbGF5IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVG
SU5FKEVOQUJMRV9JT1NfVEVYVF9BVVRPU0laSU5HICJUb2dnbGUgaU9TIHRleHQgYXV0b3Npemlu
ZyBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVf
SklUICJFbmFibGUgSnVzdEluVGltZSBqYXZhc2NyaXB0IHN1cHBvcnQiIFBSSVZBVEUgT04pCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDBjOTc1
YzUzNmY3ZDA0NjQzMmVkNTk4NTBmMmQxZmY5ZmMzYzU0My4uNTM5N2ZiZDEzZDUwZWVlYjI0NjE2
NWM1YjAwMGFjZTVjMzIxOWQ5NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTA3LTEzICBBbmR5IFZhbldhZ29u
ZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2lj
IHR5cGVzIGZvciBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2OTI2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIGZsYWcgbm93IHRo
YXQgdGhlIGJhc2ljIG9iamVjdHMgYXJlIGluIHBsYWNlLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOiBFbmFibGVkIElOVEwKKwogMjAxNS0wNy0xMCAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBVbmFibGUg
dG8gZGlzbWlzcyBjb250ZXh0IG1lbnUgZHVyaW5nIHRlc3QgcnVucwpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRwZXJsL0ZlYXR1cmVMaXN0LnBtCmluZGV4IDA4N2U2OGMxMWIwYjQ3MTIzOGI3ZmI4ODJlYzc0
OWYxOWZiNzRjNzcuLjBhZmMzMjlhYjg1Njg1ODZmN2ZlN2U2NzJmNTIxOTY5NWQ0MzFkOGUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KQEAgLTI4Niw3ICsyODYsNyBA
QCBteSBAZmVhdHVyZXMgPSAoCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlBVVF9UWVBFX1dF
RUsiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkaW5wdXRUeXBlV2Vla1N1cHBvcnQgfSwKIAog
ICAgIHsgb3B0aW9uID0+ICJpbnRsIiwgZGVzYyA9PiAiVG9nZ2xlIEludGwgc3VwcG9ydCIsCi0g
ICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlRMIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGlu
dGxTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlRMIiwgZGVmYXVsdCA9PiAx
LCB2YWx1ZSA9PiBcJGludGxTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibGVnYWN5LW5v
dGlmaWNhdGlvbnMiLCBkZXNjID0+ICJUb2dnbGUgTGVnYWN5IE5vdGlmaWNhdGlvbnMgc3VwcG9y
dCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyIsIGRlZmF1
bHQgPT4gMCwgdmFsdWUgPT4gXCRsZWdhY3lOb3RpZmljYXRpb25zU3VwcG9ydCB9LApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGYwOTFiMWY5OTY2MGNkODE4ZmI0NzJjZTFlZjlhNDJjZWM5N2Y4ZDYuLjc0MzNkYzAzNTEyNTk1
YjliMDNmMTg1ZWMzZWEyMGEzMWE3Y2RiZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0w
Ny0xMyAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAg
ICAgIEltcGxlbWVudCBiYXNpYyB0eXBlcyBmb3IgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXph
dGlvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0NjkyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdEV4cGVjdGF0aW9uczogRW5hYmxlZCBpbnRsIHRlc3RzLgorICAgICAgICAqIGpzL2lu
dGwtZXhwZWN0ZWQudHh0OiBVcGRhdGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9pbnRs
LmpzOiBBZGRlZCB0ZXN0cyBmb3IgQ29sbGF0b3IsIE51bWJlckZvcm1hdCwgYW5kIERhdGVUaW1l
Rm9ybWF0LgorCiAyMDE1LTA3LTEzICBCYXNpbGUgQ2xlbWVudCAgPGJhc2lsZV9jbGVtZW50QGFw
cGxlLmNvbT4KIAogICAgICAgICBPYmplY3QgY3ljbGVzIHNob3VsZCBub3QgcHJldmVudCBhbGxv
Y2F0aW9uIGVsaW1pbmF0aW9uL3NpbmtpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGFjNjg2YmYy
NjZiMDNiZWE3MTE5MWM4MTU1YmUxYTVlZmY4MTIwNDYuLmIxMWYyOTVjZTBkYTgyZDgwZWFkMmFj
YmVmMWEyNjQyYTU2MmUwMGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTI2LDYgKzUyNiwzIEBA
IHdlYmtpdC5vcmcvYi8xNDYxODIgZWRpdGluZy9zZWxlY3Rpb24vbGVhay1kb2N1bWVudC13aXRo
LXNlbGVjdGlvbi1pbnNpZGUuaHRtbCBbCiAKIHdlYmtpdC5vcmcvYi8xNDY0MzQgZmFzdC9kb20v
SFRNTEltYWdlRWxlbWVudC9zaXplcyBbIFNraXAgXQogCi0jIEludGwgaXMgbm90IGVuYWJsZWQg
eWV0Ci1qcy9pbnRsLmh0bWwgWyBTa2lwIF0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
aW50bC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWV4cGVjdGVkLnR4dAppbmRl
eCBiMjZhZjg2MzM2NTFiMTQwYzhmMTBiODk3YTkwOGYwY2E4Y2FhOWQ2Li43ZWE4YWU1MzU5Nzg2
MWVhMWQ5OWExMzhlNzdiNjdhNDNkZjk4ZGI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9p
bnRsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWV4cGVjdGVkLnR4dApA
QCAtMSw0ICsxLDQgQEAKLVRoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBJbnRs
IG9iamVjdCBhcyBkZXNjcmliZWQgaW4gOCBvZiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFs
aXphdGlvbiBBUEkgU3BlY2lmaWNhdGlvbi4KK1RoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9y
IG9mIHRoZSBJbnRsIG9iamVjdCBhcyBkZXNjcmliZWQgaW4gdGhlIEVDTUFTY3JpcHQgSW50ZXJu
YXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmljYXRpb24gKEVDTUEtNDAyIDIuMCkuCiAKIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KIApAQCAtMTEsNiArMTEsNTcgQEAgUEFTUyBuZXcgSW50bCB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBPYmplY3QgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2
YWx1YXRpbmcKIFBBU1MgSW50bCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludGwgaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAnSW50bCgpJywgJ0ludGwnIGlzIGFuIGluc3RhbmNlIG9mIE9i
amVjdCkuCiBQQVNTIGRlbGV0ZSBJbnRsOyBpcyB0cnVlCiBQQVNTICdJbnRsJyBpbiBnbG9iYWwo
KSBpcyBmYWxzZQorUEFTUyBJbnRsLkNvbGxhdG9yIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9u
CitQQVNTIEludGwuQ29sbGF0b3IoKSBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLkNvbGxhdG9yCitQ
QVNTIEludGwuQ29sbGF0b3IuY2FsbCh7fSkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5Db2xsYXRv
cgorUEFTUyBuZXcgSW50bC5Db2xsYXRvcigpIGlzIGFuIGluc3RhbmNlIG9mIEludGwuQ29sbGF0
b3IKK1BBU1MgSW50bC5Db2xsYXRvci5sZW5ndGggaXMgMAorUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IsICdwcm90b3R5cGUnKS53cml0YWJsZSBpcyBm
YWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3Is
ICdwcm90b3R5cGUnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvciwgJ3Byb3RvdHlwZScpLmNvbmZpZ3VyYWJsZSBp
cyBmYWxzZQorUEFTUyBJbnRsLkNvbGxhdG9yLnN1cHBvcnRlZExvY2FsZXNPZi5sZW5ndGggaXMg
MQorUEFTUyBJbnRsLkNvbGxhdG9yLnN1cHBvcnRlZExvY2FsZXNPZigpIGlzIGFuIGluc3RhbmNl
IG9mIEFycmF5CitQQVNTIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzIElu
dGwuQ29sbGF0b3IKK1BBU1MgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBpcyBhbiBp
bnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEludGwuQ29sbGF0b3IucHJvdG90eXBlLCAnY29tcGFyZScpLmdldCBpcyBhbiBpbnN0YW5jZSBv
ZiBGdW5jdGlvbgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29s
bGF0b3IucHJvdG90eXBlLCAnY29tcGFyZScpLnNldCBpcyB1bmRlZmluZWQKK1BBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSwgJ2NvbXBh
cmUnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSW50bC5Db2xsYXRvci5wcm90b3R5cGUsICdjb21wYXJlJykuY29uZmlndXJhYmxlIGlz
IHRydWUKK1BBU1MgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZS5sZW5ndGggaXMgMgor
UEFTUyBJbnRsLk51bWJlckZvcm1hdCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBJ
bnRsLk51bWJlckZvcm1hdCgpIGlzIGFuIGluc3RhbmNlIG9mIEludGwuTnVtYmVyRm9ybWF0CitQ
QVNTIEludGwuTnVtYmVyRm9ybWF0LmNhbGwoe30pIGlzIGFuIGluc3RhbmNlIG9mIEludGwuTnVt
YmVyRm9ybWF0CitQQVNTIG5ldyBJbnRsLk51bWJlckZvcm1hdCgpIGlzIGFuIGluc3RhbmNlIG9m
IEludGwuTnVtYmVyRm9ybWF0CitQQVNTIEludGwuTnVtYmVyRm9ybWF0Lmxlbmd0aCBpcyAwCitQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQsICdw
cm90b3R5cGUnKS53cml0YWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LCAncHJvdG90eXBlJykuZW51bWVyYWJsZSBpcyBm
YWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9y
bWF0LCAncHJvdG90eXBlJykuY29uZmlndXJhYmxlIGlzIGZhbHNlCitQQVNTIEludGwuTnVtYmVy
Rm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZi5sZW5ndGggaXMgMQorUEFTUyBJbnRsLk51bWJlckZv
cm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoKSBpcyBhbiBpbnN0YW5jZSBvZiBBcnJheQorUEFTUyBJ
bnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgSW50bC5OdW1iZXJGb3Jt
YXQKK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBpcyBhbiBpbnN0YW5j
ZSBvZiBGdW5jdGlvbgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwu
TnVtYmVyRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmdldCBpcyBhbiBpbnN0YW5jZSBvZiBG
dW5jdGlvbgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVy
Rm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLnNldCBpcyB1bmRlZmluZWQKK1BBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUsICdm
b3JtYXQnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykuY29uZmlndXJh
YmxlIGlzIHRydWUKK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5sZW5n
dGggaXMgMQorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0
aW9uCitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQoKSBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLkRh
dGVUaW1lRm9ybWF0CitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQuY2FsbCh7fSkgaXMgYW4gaW5z
dGFuY2Ugb2YgSW50bC5EYXRlVGltZUZvcm1hdAorUEFTUyBuZXcgSW50bC5EYXRlVGltZUZvcm1h
dCgpIGlzIGFuIGluc3RhbmNlIG9mIEludGwuRGF0ZVRpbWVGb3JtYXQKK1BBU1MgSW50bC5EYXRl
VGltZUZvcm1hdC5sZW5ndGggaXMgMAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEludGwuRGF0ZVRpbWVGb3JtYXQsICdwcm90b3R5cGUnKS53cml0YWJsZSBpcyBmYWxzZQor
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQs
ICdwcm90b3R5cGUnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdCwgJ3Byb3RvdHlwZScpLmNvbmZpZ3Vy
YWJsZSBpcyBmYWxzZQorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNP
Zi5sZW5ndGggaXMgMQorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNP
ZigpIGlzIGFuIGluc3RhbmNlIG9mIEFycmF5CitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJv
dG90eXBlLmNvbnN0cnVjdG9yIGlzIEludGwuRGF0ZVRpbWVGb3JtYXQKK1BBU1MgSW50bC5EYXRl
VGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdC5w
cm90b3R5cGUsICdmb3JtYXQnKS5nZXQgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3Rv
dHlwZSwgJ2Zvcm1hdCcpLnNldCBpcyB1bmRlZmluZWQKK1BBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmVu
dW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJ
bnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmNvbmZpZ3VyYWJsZSBpcyB0
cnVlCitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5sZW5ndGggaXMg
MQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC5qcyBiL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9pbnRsLmpzCmluZGV4IDhhNGNmNTg0ZTJmMDljZWM4N2Q1NWY5MzIy
NjQ0M2VkNzE4MzJlMzkuLjhjNmJiY2M1Nzk4NmIzNDM4MGM2NzlmYzc0NmJmOWFhNDY4NDY0MTEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLmpzCisrKyBiL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLmpzCkBAIC0xLDIwICsxLDIwIEBACi0vLyBU
aGlzIGZlYXR1cmUgaXNuJ3QgZW5hYmxlZCB5ZXQuCi0vL0Agc2tpcAorZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBJbnRsIG9iamVjdCBhcyBkZXNjcmli
ZWQgaW4gdGhlIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmljYXRp
b24gKEVDTUEtNDAyIDIuMCkuIik7CiAKLWRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRo
ZSBiZWhhdmlvciBvZiB0aGUgSW50bCBvYmplY3QgYXMgZGVzY3JpYmVkIGluIDggb2YgdGhlIEVD
TUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmljYXRpb24uIik7CisvLyA4
IFRoZSBJbnRsIE9iamVjdAogCi0vLyBUaGUgSW50bCBvYmplY3QgaXMgYSBzdGFuZGFyZCBidWls
dC1pbiBvYmplY3QgdGhhdCBpcyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgSW50bCBwcm9wZXJ0
eSBvZiB0aGUgZ2xvYmFsIG9iamVjdC4KKy8vIFRoZSBJbnRsIG9iamVjdCBpcyBhIHNpbmdsZSBv
cmRpbmFyeSBvYmplY3QuCiBzaG91bGRCZVR5cGUoIkludGwiLCAiT2JqZWN0Iik7CiBzaG91bGRC
ZSgidHlwZW9mIEludGwiLCAiJ29iamVjdCciKTsKIHNob3VsZEJlKCJPYmplY3QucHJvdG90eXBl
LnRvU3RyaW5nLmNhbGwoSW50bCkiLCAiJ1tvYmplY3QgT2JqZWN0XSciKTsKIAotLy8gVGhlIHZh
bHVlIG9mIHRoZSBbW1Byb3RvdHlwZV1dIGludGVybmFsIHByb3BlcnR5IG9mIHRoZSBJbnRsIG9i
amVjdCBpcyB0aGUgYnVpbHQtaW4gT2JqZWN0IHByb3RvdHlwZSBvYmplY3Qgc3BlY2lmaWVkIGJ5
IHRoZSBFQ01BU2NyaXB0IExhbmd1YWdlIFNwZWNpZmljYXRpb24uCisvLyBUaGUgdmFsdWUgb2Yg
dGhlIFtbUHJvdG90eXBlXV0gaW50ZXJuYWwgc2xvdCBvZiB0aGUgSW50bCBvYmplY3QgaXMgdGhl
IGludHJpbnNpYyBvYmplY3QgJU9iamVjdFByb3RvdHlwZSUuCiBzaG91bGRCZVRydWUoIk9iamVj
dC5nZXRQcm90b3R5cGVPZihJbnRsKSA9PT0gT2JqZWN0LnByb3RvdHlwZSIpOwogCi0vLyBUaGUg
SW50bCBvYmplY3QgZG9lcyBub3QgaGF2ZSBhIFtbQ29uc3RydWN0XV0gaW50ZXJuYWwgcHJvcGVy
dHk7IGl0IGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgdGhlIEludGwgb2JqZWN0IGFzIGEgY29uc3Ry
dWN0b3Igd2l0aCB0aGUgbmV3IG9wZXJhdG9yLgorLy8gVGhlIEludGwgb2JqZWN0IGlzIG5vdCBh
IGZ1bmN0aW9uIG9iamVjdC4KKy8vIEl0IGRvZXMgbm90IGhhdmUgYSBbW0NvbnN0cnVjdF1dIGlu
dGVybmFsIG1ldGhvZDsgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHVzZSB0aGUgSW50bCBvYmplY3Qg
YXMgYSBjb25zdHJ1Y3RvciB3aXRoIHRoZSBuZXcgb3BlcmF0b3IuCiBzaG91bGRUaHJvdygibmV3
IEludGwiLCAiJ1R5cGVFcnJvcjogT2JqZWN0IGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0
aW5nIFxcJ25ldyBJbnRsXFwnKSciKTsKIAotLy8gVGhlIEludGwgb2JqZWN0IGRvZXMgbm90IGhh
dmUgYSBbW0NhbGxdXSBpbnRlcm5hbCBwcm9wZXJ0eTsgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGlu
dm9rZSB0aGUgSW50bCBvYmplY3QgYXMgYSBmdW5jdGlvbi4KKy8vIFRoZSBJbnRsIG9iamVjdCBk
b2VzIG5vdCBoYXZlIGEgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kOyBpdCBpcyBub3QgcG9zc2li
bGUgdG8gaW52b2tlIHRoZSBJbnRsIG9iamVjdCBhcyBhIGZ1bmN0aW9uLgogc2hvdWxkVGhyb3co
IkludGwoKSIsICInVHlwZUVycm9yOiBJbnRsIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gXFwnSW50
bCgpXFwnLCBcXCdJbnRsXFwnIGlzIGFuIGluc3RhbmNlIG9mIE9iamVjdCknIik7CiAKIC8vIGlz
IGRlbGV0YWJsZSwgaW5mZXJyZWQgZnJvbSB1c2Ugb2YgIkluaXRpYWwiIGluIHNwZWMsIGNvbnNp
c3RlbnQgd2l0aCBvdGhlciBpbXBsZW1lbnRhdGlvbnMKQEAgLTI1LDMgKzI1LDE2OSBAQCBmdW5j
dGlvbiBnbG9iYWwoKSB7IHJldHVybiB0aGlzOyB9CiBzaG91bGRCZUZhbHNlKCInSW50bCcgaW4g
Z2xvYmFsKCkiKTsKIAogSW50bCA9IF9fSW50bDsKKworCisKKy8vIDEwLjEgVGhlIEludGwuQ29s
bGF0b3IgQ29uc3RydWN0b3IKKworLy8gVGhlIEludGwuQ29sbGF0b3IgY29uc3RydWN0b3IgaXMg
YSBzdGFuZGFyZCBidWlsdC1pbiBwcm9wZXJ0eSBvZiB0aGUgSW50bCBvYmplY3QuCitzaG91bGRC
ZVR5cGUoIkludGwuQ29sbGF0b3IiLCAiRnVuY3Rpb24iKTsKKworLy8gMTAuMS4yIEludGwuQ29s
bGF0b3IoWyBsb2NhbGVzIFssIG9wdGlvbnNdXSkKK3Nob3VsZEJlVHlwZSgiSW50bC5Db2xsYXRv
cigpIiwgIkludGwuQ29sbGF0b3IiKTsKK3Nob3VsZEJlVHlwZSgiSW50bC5Db2xsYXRvci5jYWxs
KHt9KSIsICJJbnRsLkNvbGxhdG9yIik7CitzaG91bGRCZVR5cGUoIm5ldyBJbnRsLkNvbGxhdG9y
KCkiLCAiSW50bC5Db2xsYXRvciIpOworCisvLyAxMC4yIFByb3BlcnRpZXMgb2YgdGhlIEludGwu
Q29sbGF0b3IgQ29uc3RydWN0b3IKKworLy8gbGVuZ3RoIHByb3BlcnR5ICh3aG9zZSB2YWx1ZSBp
cyAwKQorc2hvdWxkQmUoIkludGwuQ29sbGF0b3IubGVuZ3RoIiwgIjAiKTsKKworLy8gMTAuMi4x
IEludGwuQ29sbGF0b3IucHJvdG90eXBlCisKKy8vIFRoaXMgcHJvcGVydHkgaGFzIHRoZSBhdHRy
aWJ1dGVzIHsgW1tXcml0YWJsZV1dOiBmYWxzZSwgW1tFbnVtZXJhYmxlXV06IGZhbHNlLCBbW0Nv
bmZpZ3VyYWJsZV1dOiBmYWxzZSB9Lgorc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLCAncHJvdG90eXBlJykud3JpdGFibGUiKTsKK3No
b3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRv
ciwgJ3Byb3RvdHlwZScpLmVudW1lcmFibGUiKTsKK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvciwgJ3Byb3RvdHlwZScpLmNvbmZpZ3Vy
YWJsZSIpOworCisvLyAxMC4yLjIgSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRMb2NhbGVzT2YgKGxv
Y2FsZXMgWywgb3B0aW9ucyBdKQorCisvLyBUaGUgdmFsdWUgb2YgdGhlIGxlbmd0aCBwcm9wZXJ0
eSBvZiB0aGUgc3VwcG9ydGVkTG9jYWxlc09mIG1ldGhvZCBpcyAxLgorc2hvdWxkQmUoIkludGwu
Q29sbGF0b3Iuc3VwcG9ydGVkTG9jYWxlc09mLmxlbmd0aCIsICIxIik7CisKKy8vIFJldHVybnMg
U3VwcG9ydGVkTG9jYWxlcworc2hvdWxkQmVUeXBlKCJJbnRsLkNvbGxhdG9yLnN1cHBvcnRlZExv
Y2FsZXNPZigpIiwgIkFycmF5Iik7CisKKy8vIDEwLjMgUHJvcGVydGllcyBvZiB0aGUgSW50bC5D
b2xsYXRvciBQcm90b3R5cGUgT2JqZWN0CisKKy8vIFRoZSB2YWx1ZSBvZiBJbnRsLkNvbGxhdG9y
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyAlQ29sbGF0b3IlLgorc2hvdWxkQmUoIkludGwuQ29s
bGF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yIiwgIkludGwuQ29sbGF0b3IiKTsKKworLy8gMTAu
My4zIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUKKworLy8gVGhpcyBuYW1lZCBhY2Nl
c3NvciBwcm9wZXJ0eSByZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBjb21wYXJlcyB0d28gc3RyaW5n
cyBhY2NvcmRpbmcgdG8gdGhlIHNvcnQgb3JkZXIgb2YgdGhpcyBDb2xsYXRvciBvYmplY3QuCitz
aG91bGRCZVR5cGUoIkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUiLCAiRnVuY3Rpb24i
KTsKKworLy8gVGhlIHZhbHVlIG9mIHRoZSBbW0dldF1dIGF0dHJpYnV0ZSBpcyBhIGZ1bmN0aW9u
CitzaG91bGRCZVR5cGUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xs
YXRvci5wcm90b3R5cGUsICdjb21wYXJlJykuZ2V0IiwgIkZ1bmN0aW9uIik7CisKKy8vIFRoZSB2
YWx1ZSBvZiB0aGUgW1tTZXRdXSBhdHRyaWJ1dGUgaXMgdW5kZWZpbmVkLgorc2hvdWxkQmUoIk9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvci5wcm90b3R5cGUsICdj
b21wYXJlJykuc2V0IiwgInVuZGVmaW5lZCIpOworCisvLyBNYXRjaCBGaXJlZm94IHdoZXJlIHVu
c3BlY2lmZWQuCitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEludGwuQ29sbGF0b3IucHJvdG90eXBlLCAnY29tcGFyZScpLmVudW1lcmFibGUiKTsKK3Nob3Vs
ZEJlVHJ1ZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLnBy
b3RvdHlwZSwgJ2NvbXBhcmUnKS5jb25maWd1cmFibGUiKTsKKworLy8gVGhlIHZhbHVlIG9mIEbi
gJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAyLgorc2hvdWxkQmUoIkludGwuQ29sbGF0b3IucHJvdG90
eXBlLmNvbXBhcmUubGVuZ3RoIiwgIjIiKTsKKworCisKKy8vIDExLjEgVGhlIEludGwuTnVtYmVy
Rm9ybWF0IENvbnN0cnVjdG9yCisKKy8vIFRoZSBJbnRsLk51bWJlckZvcm1hdCBjb25zdHJ1Y3Rv
ciBpcyBhIHN0YW5kYXJkIGJ1aWx0LWluIHByb3BlcnR5IG9mIHRoZSBJbnRsIG9iamVjdC4KK3No
b3VsZEJlVHlwZSgiSW50bC5OdW1iZXJGb3JtYXQiLCAiRnVuY3Rpb24iKTsKKworLy8gMTEuMS4y
IEludGwuTnVtYmVyRm9ybWF0KFsgbG9jYWxlcyBbLCBvcHRpb25zXV0pCitzaG91bGRCZVR5cGUo
IkludGwuTnVtYmVyRm9ybWF0KCkiLCAiSW50bC5OdW1iZXJGb3JtYXQiKTsKK3Nob3VsZEJlVHlw
ZSgiSW50bC5OdW1iZXJGb3JtYXQuY2FsbCh7fSkiLCAiSW50bC5OdW1iZXJGb3JtYXQiKTsKK3No
b3VsZEJlVHlwZSgibmV3IEludGwuTnVtYmVyRm9ybWF0KCkiLCAiSW50bC5OdW1iZXJGb3JtYXQi
KTsKKworLy8gMTEuMiBQcm9wZXJ0aWVzIG9mIHRoZSBJbnRsLk51bWJlckZvcm1hdCBDb25zdHJ1
Y3RvcgorCisvLyBsZW5ndGggcHJvcGVydHkgKHdob3NlIHZhbHVlIGlzIDApCitzaG91bGRCZSgi
SW50bC5OdW1iZXJGb3JtYXQubGVuZ3RoIiwgIjAiKTsKKworLy8gMTEuMi4xIEludGwuTnVtYmVy
Rm9ybWF0LnByb3RvdHlwZQorCisvLyBUaGlzIHByb3BlcnR5IGhhcyB0aGUgYXR0cmlidXRlcyB7
IFtbV3JpdGFibGVdXTogZmFsc2UsIFtbRW51bWVyYWJsZV1dOiBmYWxzZSwgW1tDb25maWd1cmFi
bGVdXTogZmFsc2UgfS4KK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSW50bC5OdW1iZXJGb3JtYXQsICdwcm90b3R5cGUnKS53cml0YWJsZSIpOworc2hvdWxk
QmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1h
dCwgJ3Byb3RvdHlwZScpLmVudW1lcmFibGUiKTsKK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQsICdwcm90b3R5cGUnKS5jb25m
aWd1cmFibGUiKTsKKworLy8gMTEuMi4yIEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2Fs
ZXNPZiAobG9jYWxlcyBbLCBvcHRpb25zIF0pCisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUgbGVuZ3Ro
IHByb3BlcnR5IG9mIHRoZSBzdXBwb3J0ZWRMb2NhbGVzT2YgbWV0aG9kIGlzIDEuCitzaG91bGRC
ZSgiSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mLmxlbmd0aCIsICIxIik7CisK
Ky8vIFJldHVybnMgU3VwcG9ydGVkTG9jYWxlcworc2hvdWxkQmVUeXBlKCJJbnRsLk51bWJlckZv
cm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoKSIsICJBcnJheSIpOworCisvLyAxMS4zIFByb3BlcnRp
ZXMgb2YgdGhlIEludGwuTnVtYmVyRm9ybWF0IFByb3RvdHlwZSBPYmplY3QKKworLy8gVGhlIHZh
bHVlIG9mIEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyAlTnVtYmVy
Rm9ybWF0JS4KK3Nob3VsZEJlKCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0
b3IiLCAiSW50bC5OdW1iZXJGb3JtYXQiKTsKKworLy8gMTEuMy4zIEludGwuTnVtYmVyRm9ybWF0
LnByb3RvdHlwZS5mb3JtYXQKKworLy8gVGhpcyBuYW1lZCBhY2Nlc3NvciBwcm9wZXJ0eSByZXR1
cm5zIGEgZnVuY3Rpb24gdGhhdCBmb3JtYXRzIGEgbnVtYmVyIGFjY29yZGluZyB0byB0aGUgZWZm
ZWN0aXZlIGxvY2FsZSBhbmQgdGhlIGZvcm1hdHRpbmcgb3B0aW9ucyBvZiB0aGlzIE51bWJlckZv
cm1hdCBvYmplY3QuCitzaG91bGRCZVR5cGUoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5m
b3JtYXQiLCAiRnVuY3Rpb24iKTsKKworLy8gVGhlIHZhbHVlIG9mIHRoZSBbW0dldF1dIGF0dHJp
YnV0ZSBpcyBhIGZ1bmN0aW9uCitzaG91bGRCZVR5cGUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykuZ2V0IiwgIkZ1
bmN0aW9uIik7CisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUgW1tTZXRdXSBhdHRyaWJ1dGUgaXMgdW5k
ZWZpbmVkLgorc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5O
dW1iZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0Jykuc2V0IiwgInVuZGVmaW5lZCIpOworCisv
LyBNYXRjaCBGaXJlZm94IHdoZXJlIHVuc3BlY2lmZWQuCitzaG91bGRCZUZhbHNlKCJPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSwgJ2Zv
cm1hdCcpLmVudW1lcmFibGUiKTsKK3Nob3VsZEJlVHJ1ZSgiT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5jb25maWd1
cmFibGUiKTsKKworLy8gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAxLgor
c2hvdWxkQmUoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQubGVuZ3RoIiwgIjEi
KTsKKworCisKKy8vIDEyLjEgVGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgQ29uc3RydWN0b3IKKwor
Ly8gVGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgaXMgYSBzdGFuZGFyZCBidWls
dC1pbiBwcm9wZXJ0eSBvZiB0aGUgSW50bCBvYmplY3QuCitzaG91bGRCZVR5cGUoIkludGwuRGF0
ZVRpbWVGb3JtYXQiLCAiRnVuY3Rpb24iKTsKKworLy8gMTIuMS4yIEludGwuRGF0ZVRpbWVGb3Jt
YXQoWyBsb2NhbGVzIFssIG9wdGlvbnNdXSkKK3Nob3VsZEJlVHlwZSgiSW50bC5EYXRlVGltZUZv
cm1hdCgpIiwgIkludGwuRGF0ZVRpbWVGb3JtYXQiKTsKK3Nob3VsZEJlVHlwZSgiSW50bC5EYXRl
VGltZUZvcm1hdC5jYWxsKHt9KSIsICJJbnRsLkRhdGVUaW1lRm9ybWF0Iik7CitzaG91bGRCZVR5
cGUoIm5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkiLCAiSW50bC5EYXRlVGltZUZvcm1hdCIpOwor
CisvLyAxMi4yIFByb3BlcnRpZXMgb2YgdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgQ29uc3RydWN0
b3IKKworLy8gbGVuZ3RoIHByb3BlcnR5ICh3aG9zZSB2YWx1ZSBpcyAwKQorc2hvdWxkQmUoIklu
dGwuRGF0ZVRpbWVGb3JtYXQubGVuZ3RoIiwgIjAiKTsKKworLy8gMTIuMi4xIEludGwuRGF0ZVRp
bWVGb3JtYXQucHJvdG90eXBlCisKKy8vIFRoaXMgcHJvcGVydHkgaGFzIHRoZSBhdHRyaWJ1dGVz
IHsgW1tXcml0YWJsZV1dOiBmYWxzZSwgW1tFbnVtZXJhYmxlXV06IGZhbHNlLCBbW0NvbmZpZ3Vy
YWJsZV1dOiBmYWxzZSB9Lgorc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LCAncHJvdG90eXBlJykud3JpdGFibGUiKTsKK3No
b3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGlt
ZUZvcm1hdCwgJ3Byb3RvdHlwZScpLmVudW1lcmFibGUiKTsKK3Nob3VsZEJlRmFsc2UoIk9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdCwgJ3Byb3RvdHlw
ZScpLmNvbmZpZ3VyYWJsZSIpOworCisvLyAxMi4yLjIgSW50bC5EYXRlVGltZUZvcm1hdC5zdXBw
b3J0ZWRMb2NhbGVzT2YgKGxvY2FsZXMgWywgb3B0aW9ucyBdKQorCisvLyBUaGUgdmFsdWUgb2Yg
dGhlIGxlbmd0aCBwcm9wZXJ0eSBvZiB0aGUgc3VwcG9ydGVkTG9jYWxlc09mIG1ldGhvZCBpcyAx
Lgorc2hvdWxkQmUoIkludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mLmxlbmd0
aCIsICIxIik7CisKKy8vIFJldHVybnMgU3VwcG9ydGVkTG9jYWxlcworc2hvdWxkQmVUeXBlKCJJ
bnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZigpIiwgIkFycmF5Iik7CisKKy8v
IDEyLjMgUHJvcGVydGllcyBvZiB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCBQcm90b3R5cGUgT2Jq
ZWN0CisKKy8vIFRoZSB2YWx1ZSBvZiBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5jb25z
dHJ1Y3RvciBpcyAlRGF0ZVRpbWVGb3JtYXQlLgorc2hvdWxkQmUoIkludGwuRGF0ZVRpbWVGb3Jt
YXQucHJvdG90eXBlLmNvbnN0cnVjdG9yIiwgIkludGwuRGF0ZVRpbWVGb3JtYXQiKTsKKworLy8g
MTIuMy4zIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdAorCisvLyBUaGlzIG5h
bWVkIGFjY2Vzc29yIHByb3BlcnR5IHJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGZvcm1hdHMgYSBk
YXRlIGFjY29yZGluZyB0byB0aGUgZWZmZWN0aXZlIGxvY2FsZSBhbmQgdGhlIGZvcm1hdHRpbmcg
b3B0aW9ucyBvZiB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdC4KK3Nob3VsZEJlVHlwZSgiSW50
bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IiwgIkZ1bmN0aW9uIik7CisKKy8vIFRo
ZSB2YWx1ZSBvZiB0aGUgW1tHZXRdXSBhdHRyaWJ1dGUgaXMgYSBmdW5jdGlvbgorc2hvdWxkQmVU
eXBlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQu
cHJvdG90eXBlLCAnZm9ybWF0JykuZ2V0IiwgIkZ1bmN0aW9uIik7CisKKy8vIFRoZSB2YWx1ZSBv
ZiB0aGUgW1tTZXRdXSBhdHRyaWJ1dGUgaXMgdW5kZWZpbmVkLgorc2hvdWxkQmUoIk9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUsICdm
b3JtYXQnKS5zZXQiLCAidW5kZWZpbmVkIik7CisKKy8vIE1hdGNoIEZpcmVmb3ggd2hlcmUgdW5z
cGVjaWZlZC4KK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5lbnVtZXJhYmxlIik7Citz
aG91bGRCZVRydWUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGlt
ZUZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5jb25maWd1cmFibGUiKTsKKworLy8gVGhlIHZh
bHVlIG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAxLgorc2hvdWxkQmUoIkludGwuRGF0ZVRp
bWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5sZW5ndGgiLCAiMSIpOworCmRpZmYgLS1naXQgYS9D
aGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZGE0ODNkYmI4OTE0MWIwYzQwYTc5NDk1YjY2MTBm
NWFkZDQzZDUyMC4uNjg1ZmNkNWEzZWI0ZmVkNTY4ZTkzYzA3MjRlNDE2ZjRlYTE2Y2E2OSAxMDA2
NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1
LTA3LTEzICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IGJhc2ljIHR5cGVzIGZvciBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxp
emF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ2OTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRW5hYmxlIGZsYWcgbm93IHRoYXQgdGhlIGJhc2ljIG9iamVjdHMgYXJlIGluIHBsYWNlLgor
CisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOiBlbmFibGUgSU5U
TAorCiAyMDE1LTA3LTEwICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXSBhciB3YXJuaW5nIHdoZW4gbGlua2luZyBzdGF0aWMgbGlicmFy
aWVzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257030</attachid>
            <date>2015-07-18 07:42:25 -0700</date>
            <delta_ts>2015-07-23 22:35:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146926-20150718084113.patch</filename>
            <type>text/plain</type>
            <size>153901</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2OTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
N2ZkOWJmMTgxNTg3MjUyODk0ZmQ2MGVjY2E1YTgyZTkwM2FkNTBiLi4zZDUyZDBkODc1NzdiZDE3
MTI3MGZiMmQzZWQ0NTNlNmVkNmEzYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDEgQEAKKzIwMTUtMDctMTggIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVy
QGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3Jp
cHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIEFkZHMgYmFzaWMgdHlwZXMgZm9y
IEVDTUEtNDAyIDJuZCBlZGl0aW9uLCBidXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBmdWxsIGxv
Y2FsZS1hd2FyZSBmZWF0dXJlcyB5ZXQuCisgICAgICAgIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTQwMi8yLjAvRUNNQS00MDIucGRmCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRlZCBuZXcg
SW50bCBmaWxlcy4KKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZzogRW5hYmxlIElOVEwuCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogQWRkZWQg
SW50bCBmaWxlcy4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOiBBZGRlZCBJbnRsIGZpbGVzLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaDogQWRkZWQgQ29sbGF0b3IsIE51bWJlckZvcm1hdCwgYW5kIERhdGVUaW1lRm9ybWF0
LgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDogTWFkZSBEYXRlLm5vdyBw
dWJsaWMuCisgICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaDogTWFkZSBEYXRlLm5v
dyBwdWJsaWMuCisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6SW50
bENvbGxhdG9yKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6Oklu
dGxDb2xsYXRvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6
c2V0Qm91bmRDb21wYXJlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yRnVuY0NvbXBhcmUp
OiBBZGRlZCBwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiB1c2luZyBjb2RlUG9pbnRDb21wYXJl
LgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpJbnRsQ29sbGF0b3I6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9y
Ojpib3VuZENvbXBhcmUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0
b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6SW50bENvbGxh
dG9yQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJbnRsQ29sbGF0b3IpOiBB
ZGRlZCBDb2xsYXRvciBjb25zdHJ1Y3RvciAoMTAuMS4yKS4KKyAgICAgICAgKEpTQzo6Y2FsbElu
dGxDb2xsYXRvcik6IEFkZGVkIENvbGxhdG9yIGNvbnN0cnVjdG9yICgxMC4xLjIpLgorICAgICAg
ICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAg
ICAgIChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAg
IChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2Yp
OiBBZGRlZCBwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcgW10uCisgICAgICAg
IChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Y29sbGF0b3JTdHJ1Y3R1cmUpOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkludGxDb2xsYXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxh
dG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0
b3JQcm90b3R5cGU6OkludGxDb2xsYXRvclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkludGxD
b2xsYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkludGxD
b2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUpOiBBZGRlZCBjb21wYXJlIGdldHRlciAoMTAu
My4zKQorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRp
b25zKTogQWRkZWQgcGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIHt9LgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Oklu
dGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9y
bWF0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6
OkludGxEYXRlVGltZUZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRlc3Ry
b3kpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNldEJvdW5kRm9ybWF0KToKKyAgICAg
ICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lKTogQWRkZWQgcGxh
Y2Vob2xkZXIgaW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIG5ldyBEYXRlKHZhbHVlKS50b1N0cmlu
ZygpLgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Lmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpT
Qzo6SW50bERhdGVUaW1lRm9ybWF0Ojpib3VuZEZvcm1hdCk6CisgICAgICAgICogcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1h
dCk6IEFkZGVkIERhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yICgxMi4xLjIpLgorICAgICAgICAo
SlNDOjpjYWxsSW50bERhdGVUaW1lRm9ybWF0KTogQWRkZWQgRGF0ZVRpbWVGb3JtYXQgY29uc3Ry
dWN0b3IgKDEyLjEuMikuCisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6IEFkZGVkIHBs
YWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyBbXS4KKyAgICAgICAgKEpTQzo6SW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpkYXRlVGltZUZvcm1hdFN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6SW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KTogQWRkZWQgZm9ybWF0IGdldHRlciAo
MTIuMy4zKS4KKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jl
c29sdmVkT3B0aW9ucyk6IEFkZGVkIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmlu
ZyB7fS4KKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50
bE51bWJlckZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJl
ckZvcm1hdDo6SW50bE51bWJlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3Jt
YXQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6ZGVz
dHJveSk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzZXRCb3VuZEZvcm1hdCk6CisgICAgICAg
IChKU0M6OkludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyKTogQWRkZWQgcGxhY2Vob2xk
ZXIgaW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIE51bWJlcih2YWx1ZSkudG9TdHJpbmcoKS4KKyAg
ICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDogQWRkZWQuCisgICAgICAgIChKU0M6
OkludGxOdW1iZXJGb3JtYXQ6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJl
ckZvcm1hdDo6Ym91bmRGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3I6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KTogQWRkZWQgTnVtYmVyRm9ybWF0IGNvbnN0
cnVjdG9yICgxMS4xLjIpLgorICAgICAgICAoSlNDOjpjYWxsSW50bE51bWJlckZvcm1hdCk6IEFk
ZGVkIE51bWJlckZvcm1hdCBjb25zdHJ1Y3RvciAoMTEuMS4yKS4KKyAgICAgICAgKEpTQzo6SW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChK
U0M6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2Fs
ZXNPZik6IEFkZGVkIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyBbXS4KKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpudW1iZXJGb3JtYXRT
dHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KTogQWRkZWQgZm9ybWF0IGdldHRlciAoMTEuMy4zKS4K
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlv
bnMpOiBBZGRlZCBwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcge30uCisgICAg
ICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKTogQWRkZWQg
Q29sbGF0b3IsIE51bWJlckZvcm1hdCwgYW5kIERhdGVUaW1lRm9ybWF0IHByb3BlcnRpZXMgKDgu
MSkuCisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bE9iamVjdC5oOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0Ojpjb2xsYXRv
ckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6Y29sbGF0b3JQcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0Ojpjb2xsYXRvclN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OkludGxPYmplY3Q6Om51bWJlckZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6SW50bE9iamVjdDo6bnVtYmVyRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6
SW50bE9iamVjdDo6bnVtYmVyRm9ybWF0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bE9i
amVjdDo6ZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxPYmpl
Y3Q6OmRhdGVUaW1lRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6
ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisKIDIwMTUtMDct
MTcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgc2hvdWxk
IGhhdmUgc29tZSBvYnZpb3VzIG1pdGlnYXRpb25zIGFnYWluc3Qgd2F0Y2hpbmcgc3RydWN0dXJl
cyB0aGF0IGFyZSB1bnByb2ZpdGFibGUgdG8gd2F0Y2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzNGRiZjg3NzE2
M2M5MTY4YjgwNTExZmNjNjZiNjA3M2Q1MDQ0NGEyLi4wZTMyN2Y0MjU1YTZhYTRhZThlZDg1MDZk
YmFiYmQxOGM2NTE3MTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDctMTgg
IEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24g
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5
MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOiBFbmFibGVkIElOVEwuCisKIDIw
MTUtMDctMTggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OIChyMTg2OTc2KTogVXNlIHBpRmxvYXQgaW5zdGVhZCBvZiBNX1BJCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKaW5kZXggYTQ4ZTUxNDhmMzU4NWU5MjVlNTIzMGEyNDBiMDE5OGQ1MzlkZTk2Ni4uYTg4
MjUxZTllNDJiODk5MDRhMTkzN2FhMWQwYjRjMjY4N2UwMDM5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEyIEBACisyMDE1LTA3LTE4ICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3Jh
ZnRlckBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHR5cGVzIGZvciBFQ01B
U2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2OTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZzogRW5hYmxlZCBJTlRMLgorCiAyMDE1LTA3LTE3ICBBbmR5IEVzdGVzICA8YWVzdGVz
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBGdXJ0aGVyIHRpZ2h0ZW4gdGhlIHNhbmRib3gg
YXJvdW5kIHBhZ2VzIGZldGNoZWQgd2l0aCBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggYzAyNTg2NzM4NGQ0NjZjZDUzYjA3M2E0ZmY1YzM0OWY5NDUzNTg0MC4u
NDJmYjk4OTA4MmQ2NTJlOTA3Y2NjMWU2YTNhMjNkMmFjNWY1MjJlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDE1LTA3LTE4ICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRl
ckBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHR5cGVzIGZvciBFQ01BU2Ny
aXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2OTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZzogRW5hYmxlZCBJTlRMLgorCiAyMDE1LTA3LTE3ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBGdXJ0aGVyIHRpZ2h0ZW4gdGhlIHNhbmRib3ggYXJv
dW5kIHBhZ2VzIGZldGNoZWQgd2l0aCBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTQzMjZkOWExMDI0OGIxNDA3YmJk
NzkyNTA3YjlmODFkMDExODNhYy4uMjE1YWVlOTRiMTlmODE4OTdkZTVmZDNlNjNjOTRiN2Y2MGFk
MDQxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDc1LDYgKzQ3NSwx
NSBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9Jbml0
aWFsaXplVGhyZWFkaW5nLmNwcAogICAgIHJ1bnRpbWUvSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5j
cHAKICAgICBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCisgICAgcnVudGltZS9JbnRsQ29s
bGF0b3IuY3BwCisgICAgcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKKyAgICBy
dW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdC5jcHAKKyAgICBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNw
cAorICAgIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorICAgIHJ1bnRp
bWUvSW50bE51bWJlckZvcm1hdC5jcHAKKyAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCiAg
ICAgcnVudGltZS9JbnRsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25z
LmNwcAogICAgIHJ1bnRpbWUvSXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC02MTksNiArNjI4LDEy
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9MVVRfRklMRVMKICAgICBydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5jcHAKICAgICBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9FcnJv
clByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAor
ICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwCisgICAgcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAogICAgIHJ1bnRp
bWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAogICAgIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRl
eCBmZTU2YmMwYjFiZmQ2MGM1MWEwNTdlOTU1NGQxOWVkNDg3NGY0ZjQyLi5kMjIwOTJhN2I5ZDNj
M2UwZmFhNTZkODgzY2M0YTBhNDRkMmZmN2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBA
IC0xMTYsNyArMTE2LDcgQEAgRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hf
MTAxMDAwID0gOwogRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMTAw
ID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVRfbWFjb3N4XzEwMTIwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQ7CiAKLUVOQUJMRV9JTlRMID0gOworRU5BQkxFX0lOVEwgPSBFTkFCTEVfSU5UTDsKIAogRU5B
QkxFX0lPU19HRVNUVVJFX0VWRU5UU1tzZGs9aXBob25lKl0gPSAkKEVOQUJMRV9JT1NfR0VTVFVS
RV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFMX1NESykpOwogRU5B
QkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfWUVTID0gRU5BQkxF
X0lPU19HRVNUVVJFX0VWRU5UUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggNjc3ZjRjZWU2OTM1NjA0NTllODA3ODdhNjA4NjU2ODIyYTVmNDc1YS4uZTQ2
NTc3N2E3OWJlZDU2M2QyNjg3ZmNkMjhjZmQ5YWRiYjM5ZGY3YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTQxLDYgKzQxLDEyIEBAIGFsbCA6IFwKICAg
ICBEYXRlQ29uc3RydWN0b3IubHV0LmggXAogICAgIERhdGVQcm90b3R5cGUubHV0LmggXAogICAg
IEVycm9yUHJvdG90eXBlLmx1dC5oIFwKKyAgICBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQu
aCBcCisgICAgSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oIFwKKyAgICBJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
Lmx1dC5oIFwKKyAgICBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggXAorICAgIElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggXAogICAgIEpTRGF0YVZpZXdQcm90b3R5cGUu
bHV0LmggXAogICAgIEpTT05PYmplY3QubHV0LmggXAogICAgIEpTR2xvYmFsT2JqZWN0Lmx1dC5o
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDhmMGQwZjRjN2YyNGE3ZWVlZTQ2
Y2JiNGE0NTlkZTgwNGUzNmI0MC4uZGEyOTgzMTYyNzZiYTUwM2JiOGRmNmQ2YTc2ZTQwOTc0YjY5
NzAyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNzQsMTMgKzExNzQsMzcg
QEAKIAkJOUU3Mjk0MEIxOTBGMDUxNDAwMUE5MUI1IC8qIEJ1bmRsZVBhdGguaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlFNzI5NDBBMTkwRjA1MTQwMDFB
OTFCNSAvKiBCdW5kbGVQYXRoLmggKi87IH07CiAJCTlFQTVDN0ExMTkwRjA4NDIwMDUwOEVCRSAv
KiBCdW5kbGVQYXRoLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUU3Mjk0MDkxOTBGMDMwNjAwMUE5MUI1IC8qIEJ1bmRsZVBhdGgubW0gKi87IH07CiAJ
CTlFQTVDN0EyMTkwRjA4ODcwMDUwOEVCRSAvKiBJbml0aWFsaXplTExWTU1hYy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RUE1QzdBMDE5MEYwNUQy
MDA1MDhFQkUgLyogSW5pdGlhbGl6ZUxMVk1NYWMuY3BwICovOyB9OworCQlBMTI1ODQ2RTFCNDVB
MzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEyNTg0NkMxQjQ1QTM2MDAw
Q0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJQTEy
NTg0NkYxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTI1ODQ2RDFC
NDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCAqLzsgfTsK
IAkJQTEyQkJGRjIxQjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMkJCRkYxMUIwNDRBOEIwMDY2NEI2
OSAvKiBJbnRsT2JqZWN0LmggKi87IH07CiAJCUExMkJCRkY0MUIwNDRBOTgwMDY2NEI2OSAvKiBJ
bnRsT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExMkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLzsgfTsKKwkJ
QTE1ODdENkQxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q2NzFCNERDMTQx
MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmNwcCAqLzsgfTsKKwkJQTE1ODdENkUxQjRE
QzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1ODdENjgxQjREQzE0MTAwRDY5ODQ5IC8qIElu
dGxEYXRlVGltZUZvcm1hdC5oICovOyB9OworCQlBMTU4N0Q2RjFCNERDMTQxMDBENjk4NDkgLyog
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1ODdENjkxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJQTE1ODdENzAxQjREQzE0MTAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q2QTFCNERDMTQxMDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTE1ODdENzExQjRE
QzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q2QjFCNERDMTQxMDBE
Njk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJQTE1ODdE
NzIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1ODdENkMxQjREQzE0
MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oICovOyB9OworCQlBMTU4
N0Q3NTFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q3
MzFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0Lmgg
Ki87IH07CisJCUExNTg3RDc2MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMTU4N0Q3NDFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLmx1dC5oICovOyB9OwogCQlBMTcxMkIzQjExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2Fj
aGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3
MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCAqLzsgfTsKIAkJQTE3MTJC
M0YxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVn
RXhwQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBMTcxMkI0MTExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcxMkI0MDExQzdCMjM1MDA3QTUz
MTUgLyogUmVnRXhwS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQTE4MTkzRTMxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvckNvbnN0
cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTE4MTkzRTExQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1
dC5oICovOyB9OworCQlBMTgxOTNFNDFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJv
dG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTE4MTkzRTIxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQu
aCAqLzsgfTsKIAkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJN
NjQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NDA5
MjNDMTU2RUVEM0IwMDU2NkNCMiAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFBMDA5QzExODMxQTI2RTAw
Q0Y4NzExIC8qIEFSTTY0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NjQwOTIzQjE1NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRBc3NlbWJs
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlB
MUI5RTIzOTFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjlFMjMzMUI0RTBENjcwMEJDN0ZF
RCAvKiBJbnRsQ29sbGF0b3IuY3BwICovOyB9OworCQlBMUI5RTIzQTFCNEUwRDY3MDBCQzdGRUQg
LyogSW50bENvbGxhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUI5RTIzNDFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmggKi87IH07
CisJCUExQjlFMjNCMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5RTIz
NTFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwICovOyB9Owor
CQlBMUI5RTIzQzFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjlFMjM2MUI0
RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oICovOyB9OworCQlBMUI5
RTIzRDFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjlFMjM3MUI0RTBENjcw
MEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwICovOyB9OworCQlBMUI5RTIzRTFC
NEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5RTIzODFCNEUwRDY3MDBCQzdGRUQg
LyogSW50bENvbGxhdG9yUHJvdG90eXBlLmggKi87IH07CisJCUExRDc5MkZDMUI0Mzg2NEIwMDQ1
MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkY2MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVy
Rm9ybWF0LmNwcCAqLzsgfTsKKwkJQTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1i
ZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExRDc5MkY3MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmggKi87IH07CisJ
CUExRDc5MkZFMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzky
RjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi87
IH07CisJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
RDc5MkY5MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCAq
LzsgfTsKKwkJQTFENzkzMDAxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTFENzkyRkExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3Bw
ICovOyB9OworCQlBMUQ3OTMwMTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTFENzkyRkIxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCAq
LzsgfTsKIAkJQTUwM0ZBMTkxODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZB
MTMxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwogCQlB
NTAzRkExQTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTQxODhFMEZBRjAw
MTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUIxODhFMEZC
MDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNTE4OEUwRkIwMDAxMTBGMTQgLyog
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLzsgfTsKQEAgLTI5NDksMTEgKzI5NzMsMzUgQEAK
IAkJOUU3Mjk0MDkxOTBGMDMwNjAwMUE5MUI1IC8qIEJ1bmRsZVBhdGgubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBCdW5kbGVQYXRoLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5RTcyOTQwQTE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdW5kbGVQYXRoLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlFQTVDN0EwMTkwRjA1RDIwMDUwOEVCRSAvKiBJbml0aWFs
aXplTExWTU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJbml0
aWFsaXplTExWTU1hYy5jcHA7IHBhdGggPSBsbHZtL0luaXRpYWxpemVMTFZNTWFjLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTEyNTg0NkMxQjQ1QTM2MDAwQ0M3RjZDIC8qIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBMTI1ODQ2RDFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTEyQkJGRjExQjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBMTJCQkZGMzFCMDQ0QTk4MDA2NjRCNjkgLyogSW50bE9iamVjdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsT2JqZWN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE1ODdENjcxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRl
VGltZUZvcm1hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRs
RGF0ZVRpbWVGb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4N0Q2
ODFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEYXRlVGltZUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBMTU4N0Q2OTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBMTU4N0Q2QTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE1ODdE
NkIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4N0Q2QzFCNERDMTQx
MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4N0Q3MzFCNERDMUM2MDBENjk4NDkgLyogSW50bERh
dGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBMTU4N0Q3NDFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUExNzEyQjNBMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBDYWNoZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBD
YWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBDYWNoZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyog
UmVnRXhwS2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEtleS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkg
LyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBMTgxOTNFMjFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJv
dG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsQ29sbGF0
b3JQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExQjlFMjMz
MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW50bENvbGxhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTFCOUUyMzQxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsQ29sbGF0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTFCOUUyMzUxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRv
ckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
dGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTFCOUUyMzYxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExQjlFMjM3MUI0RTBENjcwMEJDN0ZFRCAv
KiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTFCOUUyMzgxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlw
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsQ29sbGF0b3JQcm90b3R5
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFENzkyRjYxQjQzODY0QjAwNDUx
NkY1IC8qIEludGxOdW1iZXJGb3JtYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW50bE51bWJlckZvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUExRDc5MkY3MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBMUQ3OTJGOTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJG
b3JtYXRDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUQ3OTJG
QTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFENzkyRkIxQjQzODY0QjAwNDUx
NkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNTAzRkExMzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxG
cmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKYXZhU2NyaXB0
Q2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwM0ZBMTQxODhF
MEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdENhbGxGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNTAzRkExNTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSmF2YVNjcmlw
dENhbGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjQ2LDYgKzQy
OTQsMTIgQEAKIAkJCQlBNTMyNDM4NDE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9yRnJvbnRl
bmREaXNwYXRjaGVycy5oICovLAogCQkJCUE1MzI0Mzg1MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNw
ZWN0b3JQcm90b2NvbE9iamVjdHMuY3BwICovLAogCQkJCUE1MzI0Mzg2MTg1NjgzMTcwMDJFRDY5
MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaCAqLywKKwkJCQlBMTgxOTNFMTFCNEUwQ0RC
MDBGQzEwMjkgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJQTE4MTkz
RTIxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCAqLywKKwkJ
CQlBMTU4N0Q3MzFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IubHV0LmggKi8sCisJCQkJQTE1ODdENzQxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZS5sdXQuaCAqLywKKwkJCQlBMTI1ODQ2QzFCNDVBMzYwMDBDQzdGNkMg
LyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUExMjU4NDZEMUI0
NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oICovLAogCQkJ
CUE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8sCiAJCQkJQTdE
ODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8sCiAJCQkJQkM4N0NEQjgx
MDcxMkFDQTAwMDYxNENGIC8qIEpTT05PYmplY3QubHV0LmggKi8sCkBAIC00NDc0LDYgKzQ1Mjgs
MjQgQEAKIAkJCQlBNzg4NTNGODE3OTcyNjI5MDAxNDQwRTQgLyogSW50ZW5kZWRTdHJ1Y3R1cmVD
aGFpbi5oICovLAogCQkJCUJDOUJCOTVCMEUxOTY4MDYwMERGODg1NSAvKiBJbnRlcm5hbEZ1bmN0
aW9uLmNwcCAqLywKIAkJCQlCQzExNjY3QTBFMTk5QzA1MDA4MDY2REQgLyogSW50ZXJuYWxGdW5j
dGlvbi5oICovLAorCQkJCUExQjlFMjMzMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3Iu
Y3BwICovLAorCQkJCUExQjlFMjM0MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuaCAq
LywKKwkJCQlBMUI5RTIzNTFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0
b3IuY3BwICovLAorCQkJCUExQjlFMjM2MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JD
b25zdHJ1Y3Rvci5oICovLAorCQkJCUExQjlFMjM3MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29s
bGF0b3JQcm90b3R5cGUuY3BwICovLAorCQkJCUExQjlFMjM4MUI0RTBENjcwMEJDN0ZFRCAvKiBJ
bnRsQ29sbGF0b3JQcm90b3R5cGUuaCAqLywKKwkJCQlBMTU4N0Q2NzFCNERDMTQxMDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0LmNwcCAqLywKKwkJCQlBMTU4N0Q2ODFCNERDMTQxMDBENjk4
NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmggKi8sCisJCQkJQTE1ODdENjkxQjREQzE0MTAwRDY5
ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBMTU4N0Q2
QTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLywK
KwkJCQlBMTU4N0Q2QjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLmNwcCAqLywKKwkJCQlBMTU4N0Q2QzFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmggKi8sCisJCQkJQTFENzkyRjYxQjQzODY0QjAwNDUxNkY1IC8qIElu
dGxOdW1iZXJGb3JtYXQuY3BwICovLAorCQkJCUExRDc5MkY3MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJ
bnRsTnVtYmVyRm9ybWF0LmggKi8sCisJCQkJQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQTFENzkyRjkxQjQzODY0QjAw
NDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUExRDc5MkZB
MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCAqLywKKwkJ
CQlBMUQ3OTJGQjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5o
ICovLAogCQkJCUExMkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLywK
IAkJCQlBMTJCQkZGMTFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9iamVjdC5oICovLAogCQkJCTg2
QkY2NDJBMTQ4REIyQjUwMDRERTM2QSAvKiBJbnRyaW5zaWMuaCAqLywKQEAgLTU2NTMsNiArNTcy
NSw3IEBACiAJCQkJMTQ3QjgzQUMwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9u
T3B0aW1pemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQTExMTI0NjE5MkZDRTc5MDA1RUUxOEQg
LyogQ3VzdG9tR2V0dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNEY0QjZGNTFBMDVD
OTg0MDA1Q0FCNzYgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlv
bi5weSBpbiBIZWFkZXJzICovLAorCQkJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwMzIwMThC
RkZCRTEwMDVBMDgxMSAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFB
QkNERTcxOEVGMjk0MjAwMDAyMDk2IC8qIEdDTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkU3QkE2MTAxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5oIGluIEhlYWRlcnMgKi8s
CkBAIC01NzAyLDYgKzU3NzUsNyBAQAogCQkJCTBGMjRFNTQxMTdFQTlGNTkwMEFCQjIxNyAvKiBB
c3NlbWJseUhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3ODRBMjYxMTFEMTY2MjIwMDU3
NzZBQyAvKiBBU1RCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjY3MzlEMjEzQkZERTcx
MDAyM0Q4N0MgLyogQmlnSW50ZWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTEyNTg0NkUxQjQ1
QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDM0VDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBCb29sZWFuT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2lu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVEMkU2NjUxOTVFMTc0MDAwQTUxOEU3IC8qIEpTQ29u
dGV4dFJlZkludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTU3MTEsNiArNTc4NSw3IEBACiAJ
CQkJMEZCN0YzOTcxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZCN0YzOTgxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseUlubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTYyRDJEMzkwMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVE
YXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUI5RTIzQTFCNEUwRDY3MDBCQzdGRUQgLyogSW50
bENvbGxhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkZDQUUxMTE3QTlDMjRFMDAzNEM3MzUg
LyogQnl0ZWNvZGVCYXNpY0Jsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIxQzI3RjE0QkVB
QTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTY5QTA3MjMwRUQxQ0UzMzAwRjFGNjgxIC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKQEAgLTU3OTEsMTEgKzU4NjYsMTMgQEAKIAkJCQlBNUVBNzBFODE5RjVCMTAxMDA5OEY1
RUMgLyogQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNzA0RDkwMzE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5MDQxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUI5RTIzQzFC
NEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNjIwMTc3MTQzRkNEM0YwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkYwNTRGQTFBQzM1QjQ0MDBFNUJFNTcgLyogRXhlY3V0YWJsZUFs
bG9jYXRpb25GdXp6LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY2RTE2QjE0REYzRjE2MDBCN0Iy
RTQgLyogREZHQWRqYWNlbmN5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMTgxNkQw
MkVCMjAwNTVBNURCIC8qIERGR0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTczNzgx
MEMxNzk5RUEyRTAwODE3NTMzIC8qIERGR0FuYWx5c2lzLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
MUI5RTIzRTFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjFFM0E0NjE1MzRDQkFGMDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3Np
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVDM0ExQTYxOEMwNDkwMjAwQzk1OTNBIC8qIEpT
R2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMjIx
ODc3NTA1NjAwODNCNjg3IC8qIERGR0FyaXRoTW9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC01ODU5
LDYgKzU5MzYsNyBAQAogCQkJCTg2RUM5RENDMTMyOERGODIwMDJCMkFENyAvKiBERkdKSVRDb21w
aWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4QTk3NzkxNzk3MzhCODAwOURGNzQ0IC8qIERG
R0pJVEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDOTdGNDAxODIwMjExOTAwMkM5
QjI2IC8qIERGR0p1bXBSZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTEyNTg0NkYx
QjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNzNBNTM1QjE3OTlDRDVEMDAxNzBDMTkgLyogREZHTGF6eUpTVmFsdWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0U5MTlEMEJBN0QwMEIxRDFCNSAvKiBERkdPYmpl
Y3RNYXRlcmlhbGl6YXRpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q5QTI5ODE3QTBC
Qzc0MDBFRTI2MTggLyogREZHTElDTVBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTU5ODgsNiAr
NjA2Niw3IEBACiAJCQkJMEY2QjFDQjYxODVGQzlFOTAwODQ1RDk3IC8qIEZUTEpTQ2FsbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY4RjJCOTYxNzJFMDRBMzAwN0RCREE1IC8qIEZUTExpbmsuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGQ0VGQUUwMTgwNzM4QzAwMDQ3MkNFNCAvKiBGVExMb2NhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE1ODdENzAxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExMDE3
MDUxM0RCMDBCQjcyMkMgLyogRlRMTG93ZXJERkdUb0xMVk0uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3RDg5RDAyMTdBMEI5MDQwMDc3M0FEOCAvKiBGVExMb3dlcmVkTm9kZVZhbHVlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkQ4QTMxQzE3RDUxRjIyMDBDQTJDNDAgLyogRlRMT1NSRW50cnkuaCBp
biBIZWFkZXJzICovLApAQCAtNjA1NSw2ICs2MTM0LDcgQEAKIAkJCQlDMjVGOEJDRTE1NzU0NEE5
MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3
RjM5OTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGQjdGMzlBMTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlcklubGluZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCUExNTg3RDc2MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QjE1RUQ4
RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNFRkFC
MDE4MDVDQTZEMDA0NzJDRTQgLyogSW5pdGlhbGl6ZUxMVk0uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQ0VGQUNDMTgwNUU3NTUwMDQ3MkNFNCAvKiBJbml0aWFsaXplTExWTVBPU0lYLmggaW4gSGVh
ZGVycyAqLywKQEAgLTYxMDksNiArNjE4OSw3IEBACiAJCQkJMEZBRjdFRkUxNjVCQTkxRjAwMEM4
NDU1IC8qIEpJVERpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwODIxNEJB
NTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjE0
RTFGMTgxMjRBQ0UwMDlCNkI0RCAvKiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTFENzkzMDExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2Q0M4NUExMEVFNzlBNDcwMDI4ODY4MiAv
KiBKSVRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU0RDE3RUUyNzQ5MDBBQkIy
MTcgLyogSklUT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMzExNUFBODEx
MjAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKQEAgLTYyMDksNiAr
NjI5MCw3IEBACiAJCQkJN0MxODRFMjMxN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzAwOENEQjE4NzEyNEJCMDA5NTVDMjQgLyog
SlNQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMTg0RTFGMTdCRUUyMkUw
MDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUExODE5
M0U0MUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NjI1NTNEMjE2MTM2RTFBMDA5RjE3RDAgLyogSlNQcm94eS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTkyOEZGM0MxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyNjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNSZXRh
aW5QdHIuaCBpbiBIZWFkZXJzICovLApAQCAtNjIyMCw2ICs2MzAyLDcgQEAKIAkJCQlCQzE4QzQ1
RTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDMUVB
RjAxNzk4N0FCNjAwMjk5REIyIC8qIEpTU3RhY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQyNzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNTdHJpbmcuaCBpbiBIZWFkZXJzICovLAor
CQkJCUExNTg3RDc1MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTg1NTM5MTExQjk5NjgwMDFBRjUxRSAv
KiBKU1N0cmluZ0J1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2MDBCNUE3MTUyQkFBQTcw
MDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0Mjgw
RTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nUmVmLmggaW4gSGVhZGVycyAqLywKQEAgLTYzMjIs
NiArNjQwNSw3IEBACiAJCQkJQkMwMkU5MTEwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDJFOTEzMEUxODM5REIwMDBGOTI5
NyAvKiBOYXRpdmVFcnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDQzBCNjMx
OEJFOTk1MDAwNkNFQkNDIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkgaW4gSGVhZGVy
cyAqLywKKwkJCQlBMTgxOTNFMzFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIyMDE2RDAzM0I3MDA1NUE1REIg
LyogTm9kZUNvbnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzBFQ0E2MDkxQUZEQkVB
MjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnlLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDNGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOb2Rlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC02NDQ1
LDYgKzY1MjksNyBAQAogCQkJCUE3Mjk5REE2MTdEMTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNl
dEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OURBMjE3RDEyODQ4
MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUQ3OTJGRDFC
NDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODZBRTY0QUExMzVFNUUxQzAwOTYzMDEyIC8qIFNINEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGOEJERUIxQUQ0Q0Y3MTAwREZFODg0IC8qIEluZmVycmVkVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMkI2NzA1MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC02NTE5LDYgKzY2MDQsNyBAQAogCQkJCTBG
NUYwOENGMTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBN0I2MDE4MjE2MzlGRDJBMDAzNzJCQTMgLyogVW5saW5rZWRDb2RlQmxv
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkU4OTJDMTZEMDI4QUQwMDlFNEZEMiAvKiBVbnVz
ZWRQb2ludGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTU4N0Q2RTFCNERDMTQxMDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2M0IzODEzRkM2
RkU5MDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQyNkE0
ODE0NjBDQkIzMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY5QzVFNUYxOEUzNUY1RTAwRDQzMUMzIC8qIEZUTERXQVJGUmVnaXN0ZXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtNjU0Niw2ICs2NjMyLDcgQEAKIAkJCQkyQTRFQzkwQzE4NjBENkMyMDA5NEY3ODIg
LyogV3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkI2RDc1MzE4QTMz
NzkzMDA0QTkzMDEgLyogV3JpdGVCYXJyaWVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZDODE1MEExNDA0M0JGNTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUExNTg3RDcyMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5
RiAvKiBYODZBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTJBMTg3Q0E3NTkw
MDg0M0IxMCAvKiB4eGQucGwgaW4gSGVhZGVycyAqLywKIAkJCQkwRjNBMUJGQTFBOUVDQjdEMDAw
REUwMUEgLyogREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNzEy
OSw2ICs3MjE2LDcgQEAKIAkJCQkwRkVBMEEzMTE3MEQ0MEJGMDBCQjcyMkMgLyogREZHQ29tbW9u
RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjM4QjAxNzE3Q0ZFNzU1MDBCMTQ0RDMgLyog
REZHQ29tcGlsYXRpb25LZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzOEIwMTkxN0NGRTc1
NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uTW9kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlB
MUI5RTIzQjFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYzQjNBMUExNTNFNjhGMjAwM0VEMEZGIC8qIERGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjcyMTZDMURCMDMwMDgy
QzVFOCAvKiBERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
RDg5Q0Y1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtNzE3MSw2ICs3MjU5LDcgQEAKIAkJCQlBN0Q4OUNGQjE3QTBC
OENDMDA3NzNBRDggLyogREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRjBGMTk5MTZCNzI5RjYwMDVERjk1QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBNzY3QjVCNTE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9vcFBy
ZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFCOUUyM0QxQjRF
MEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjJCREM0RDE1MjI4MTg2MDBDRDg5MTAgLyogREZHTWluaWZpZWROb2RlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE3Mzc4MTBEMTc5OUVBMkUwMDgxNzUzMyAvKiBERkdOYXR1cmFsTG9v
cHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMEYxOUMxNkI3MkEwMzAwNURGOTVCIC8qIERG
R05vZGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03MzM0LDYgKzc0MjMsNyBAQAogCQkJCTJBRjcz
ODJDMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE1RkQwMDgxMTg5QjE5MUEwMDYzMzIzMSAvKiBJbnNwZWN0b3JDb25zb2xlQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU3RDIzRTUxODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTE1ODdENkYxQjREQzE0
MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE1MzI0Mzg3MTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzA5RkI4NjkxQUUzMzVDNjAwMzlEMDY5
IC8qIFdlYWtTZXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTMyNDM4OTE4
NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTczNTcsNiArNzQ0Nyw3IEBACiAJCQkJQkNERDUxRUIwRkI4REY3NDAwNEE4
QkRDIC8qIEpJVE9wY29kZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcxMjM2RTUxMTk1RjMz
QzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZF
ODQ1QTE5MDMwQkVGMDA1NjI3NDEgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUExNTg3RDZEMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3Jt
YXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNEU1NEMxN0VFMjc0OTAwQUJCMjE3IC8qIEpJ
VE9wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZDQzg1QzQwRUU3QTg5NDAwMjg4
NjgyIC8qIEpJVFByb3BlcnR5QWNjZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QzFFOEU0
MTEyRTcyRUYwMEEzN0Y5OCAvKiBKSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtNzQ4NCw2ICs3NTc1LDcgQEAKIAkJCQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIg
LyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEI3MjNCMjEy
RDdEQTQ2MDAzQkQ1RUQgLyogTWFjaGluZVN0YWNrTWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRUIzRUNGMTYyMzdGNkMwMEFCNjdBRCAvKiBNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlBMUQ3OTMwMDFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3
RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcyOTAwOUMx
Nzk3NkM2MDAwMzE3Mjk4IC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTUzQ0UwODUxOEJDMUE1NjAwQkVERjc2IC8qIENvbnNvbGVQcm90b3R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC03NTYzLDYgKzc2NTUsNyBAQAogCQkJCUE1QkExNUU5MTgyMzQwQjMw
MEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQkyQURGQTI2
MzE4RUYzNTQwMDA0RjlGQ0MgLyogR0NMb2dnaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
OTQ1NThGMTgyNDVFRkQwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUExRDc5MkZFMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1RUMxODIzNDBC
NDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjI0RTU1MDE3RUUyNzQ5MDBB
QkIyMTcgLyogUmVwYXRjaC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc1NzAsNiArNzY2Myw3IEBA
CiAJCQkJMEY3NzAwOTIxNDAyRkYzQzAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxNDI5RDg4NTBFRDIxQzNEMDBCODk2MTkgLyogU2FtcGxpbmdUb29s
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcwRUMwRUM2MUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJp
bmdJdGVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUI5RTIzOTFCNEUw
RDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1RkQw
MDY3MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTVGRDAwNkQxODlCMDBBQTAwNjMzMjMxIC8qIFNjcmlwdENhbGxGcmFtZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjA0Mzk2RDFCMDNEQzBCMDA5NTk4QjcgLyogREZHQ29tYmluZWRM
aXZlbmVzcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc2MTYsNiArNzcxMCw4IEBACiAJCQkJMEZB
MkMxN0IxN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNzM4NjU1NTExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMkI2NzA3MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5
Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUQ3OTJGQzFCNDM4NjRCMDA0NTE2
RjUgLyogSW50bE51bWJlckZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMTU4N0Q3MTFC
NERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMkI2NzBBMTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5VHlwZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MkM5NTJCOTE5QTI4QTFDMDA2OUIzODYgLyogVHlwZVBy
b2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzRBMTU4RUJFOTEwMDRDQjlGRiAv
KiB1ZGlzODYuYyBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggNDFiOTRmMWJmNDdiZmM2NmQ4NzY0NTBj
MDEzMDFlNTUyMWZmOTU2ZC4uMTIzMmVhNzU2NjcxNDdkODM1MGJiZWJiOWYzNzI2ZGYwYmM1Yzhi
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCkBAIC0zMyw3ICszMyw5IEBACiAgICAgbWFjcm8oQXJyYXlJdGVyYXRvcikgXAogICAg
IG1hY3JvKEJZVEVTX1BFUl9FTEVNRU5UKSBcCiAgICAgbWFjcm8oQm9vbGVhbikgXAorICAgIG1h
Y3JvKENvbGxhdG9yKSBcCiAgICAgbWFjcm8oRGF0ZSkgXAorICAgIG1hY3JvKERhdGVUaW1lRm9y
bWF0KSBcCiAgICAgbWFjcm8oRXJyb3IpIFwKICAgICBtYWNybyhFdmFsRXJyb3IpIFwKICAgICBt
YWNybyhGdW5jdGlvbikgXApAQCAtNDUsNiArNDcsNyBAQAogICAgIG1hY3JvKE1hdGgpIFwKICAg
ICBtYWNybyhOYU4pIFwKICAgICBtYWNybyhOdW1iZXIpIFwKKyAgICBtYWNybyhOdW1iZXJGb3Jt
YXQpIFwKICAgICBtYWNybyhPYmplY3QpIFwKICAgICBtYWNybyhQcm9taXNlKSBcCiAgICAgbWFj
cm8oUmFuZ2VFcnJvcikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZDYzMjlmZGYxYjAyNTBkNzgyNGM4YzhiZDcwZGQ2ODcw
NDcyYjRmYy4uZWU2NTZhMzA5NzRlM2VjNWRiMTA0ZjE2YzUzNGQ0MjZiMmJlODVmNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCkBA
IC01Myw3ICs1Myw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiBuYW1lc3BhY2UgSlNDIHsKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUGFyc2UoRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVOb3coRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVVVEMoRXhlY1N0YXRlKik7CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgKaW5kZXggMDU0ZjU3MWQ1
NzllOGNlNGYzNGI1NDA5MTdiOGQwMjhiNTBkZmI5Yi4uY2RhYzk3ZDMxYmEzNmE5YzIyZWFjMDI0
OGFmYzZmNTIxMmJmNzkxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZUNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUNvbnN0cnVjdG9yLmgKQEAgLTU5LDYgKzU5LDggQEAgcHJpdmF0ZToKIAogSlNPYmplY3Qq
IGNvbnN0cnVjdERhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0
Jik7CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZU5vdyhFeGVjU3RhdGUqKTsK
KwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBEYXRlQ29uc3RydWN0b3JfaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTgxMDhmYzE4NTk4ZDNlMmM3YWQ4OWUwY2YxZjg4ZDRlNWExMWVjOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKQEAg
LTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVy
ICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5j
bHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oIgorI2lu
Y2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNp
bmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVz
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bENvbGxhdG9yOjpz
X2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEludGxDb2xsYXRvcikgfTsKKworSW50bENvbGxhdG9yKiBJbnRsQ29sbGF0b3I6OmNyZWF0ZShW
TSYgdm0sIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKK3sKKyAgICBJbnRs
Q29sbGF0b3IqIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxDb2xsYXRv
cj4odm0uaGVhcCkpIEludGxDb2xsYXRvcih2bSwgY29uc3RydWN0b3ItPmNvbGxhdG9yU3RydWN0
dXJlKCkpOworICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBmb3Jt
YXQ7Cit9CisKK1N0cnVjdHVyZSogSW50bENvbGxhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxD
b2xsYXRvcjo6SW50bENvbGxhdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
OiBKU0Rlc3RydWN0aWJsZU9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxD
b2xsYXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Cit9CisKK3ZvaWQgSW50bENv
bGxhdG9yOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxJbnRsQ29s
bGF0b3IqPihjZWxsKS0+SW50bENvbGxhdG9yOjp+SW50bENvbGxhdG9yKCk7Cit9CisKK3ZvaWQg
SW50bENvbGxhdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgSW50bENvbGxhdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEludGxDb2xs
YXRvcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ib3VuZENvbXBhcmUpOworfQor
Cit2b2lkIEludGxDb2xsYXRvcjo6c2V0Qm91bmRDb21wYXJlKFZNJiB2bSwgSlNCb3VuZEZ1bmN0
aW9uKiBmb3JtYXQpCit7CisgICAgbV9ib3VuZENvbXBhcmUuc2V0KHZtLCB0aGlzLCBmb3JtYXQp
OworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvckZ1bmNDb21w
YXJlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMC4zLjQgQ29sbGF0b3IgQ29tcGFyZSBG
dW5jdGlvbnMgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBMZXQgY29sbGF0b3IgYmUgdGhlIHRo
aXMgdmFsdWUuCisgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50
bENvbGxhdG9yKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworCisgICAgLy8gMi4gQXNzZXJ0OiBUeXBl
KGNvbGxhdG9yKSBpcyBPYmplY3QgYW5kIGNvbGxhdG9yIGhhcyBhbiBbW2luaXRpYWxpemVkQ29s
bGF0b3JdXSBpbnRlcm5hbCBzbG90IHdob3NlIHZhbHVlIGlzIHRydWUuCisgICAgaWYgKCFjb2xs
YXRvcikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVj
KSk7CisKKyAgICAvLyAzLiBJZiB4IGlzIG5vdCBwcm92aWRlZCwgbGV0IHggYmUgdW5kZWZpbmVk
LgorICAgIC8vIDQuIElmIHkgaXMgbm90IHByb3ZpZGVkLCBsZXQgeSBiZSB1bmRlZmluZWQuCisg
ICAgLy8gNS4gTGV0IFggYmUgVG9TdHJpbmcoeCkuCisgICAgSlNTdHJpbmcqIGEgPSBleGVjLT5h
cmd1bWVudCgwKS50b1N0cmluZyhleGVjKTsKKyAgICAvLyA2LiBSZXR1cm5JZkFicnVwdChYKS4K
KyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICAvLyA3LiBMZXQgWSBiZSBUb1N0cmluZyh5KS4K
KyAgICBKU1N0cmluZyogYiA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpOworICAg
IC8vIDguIFJldHVybklmQWJydXB0KFkpLgorICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIC8v
IDkuIFJldHVybiBDb21wYXJlU3RyaW5ncyhjb2xsYXRvciwgWCwgWSkuCisKKyAgICAvLyAxMC4z
LjQgQ29tcGFyZVN0cmluZ3MgYWJzdHJhY3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAyLjApCisgICAg
Ly8gRklYTUU6IEltcGxlbWVudCBDb21wYXJlU3RyaW5ncy4KKworICAgIC8vIFJldHVybiBzaW1w
bGUgY2hlY2sgdW50aWwgcHJvcGVybHkgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihjb2RlUG9pbnRDb21wYXJlKGEtPnZhbHVlKGV4ZWMpLmltcGwoKSwg
Yi0+dmFsdWUoZXhlYykuaW1wbCgpKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTlRMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bENvbGxhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
Q29sbGF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjIyNTE0OTQxYTIxMTg2M2Y5YzI4NDJmYzE3MGQ2MWJj
YTQ2MTAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bENvbGxhdG9yLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBJbnRsQ29sbGF0b3JfaAorI2RlZmluZSBJbnRsQ29sbGF0b3JfaAorCisjaWYgRU5B
QkxFKElOVEwpCisKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgSW50bENvbGxhdG9yQ29uc3RydWN0b3I7CitjbGFzcyBKU0JvdW5k
RnVuY3Rpb247CisKK2NsYXNzIEludGxDb2xsYXRvciA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9i
amVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwor
CisgICAgc3RhdGljIEludGxDb2xsYXRvciogY3JlYXRlKFZNJiwgSW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgSlNCb3Vu
ZEZ1bmN0aW9uKiBib3VuZENvbXBhcmUoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kQ29tcGFyZS5n
ZXQoKTsgfQorICAgIHZvaWQgc2V0Qm91bmRDb21wYXJlKFZNJiwgSlNCb3VuZEZ1bmN0aW9uKik7
CisKK3Byb3RlY3RlZDoKKyAgICBJbnRsQ29sbGF0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwq
KTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CisKK3ByaXZhdGU6CisgICAgV3JpdGVCYXJyaWVyPEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZENv
bXBhcmU7Cit9OworICAgIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0
b3JGdW5jQ29tcGFyZShFeGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5UTCkKKworI2VuZGlmIC8vIEludGxDb2xsYXRvcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjViZWNjNDBhMWRjOGE1NGNlMjA2ZDg4ZThkNDBmNzM1NDgzYzI4
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxD
b2xsYXRvckNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDE4MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yQ29u
c3RydWN0b3IuaCIKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNp
bmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUu
aCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5j
bHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJV
Q1RJQkxFKEludGxDb2xsYXRvckNvbnN0cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxl
c09mKEV4ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
ci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsQ29sbGF0
b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6
c19pbmZvLCAmY29sbGF0b3JDb25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKElu
dGxDb2xsYXRvckNvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxDb2xsYXRvckNv
bnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gY29sbGF0b3JDb25zdHJ1Y3RvclRhYmxlCisgIHN1cHBv
cnRlZExvY2FsZXNPZiAgICAgICAgICAgICBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBw
b3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8K
KworSW50bENvbGxhdG9yQ29uc3RydWN0b3IqIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSW50bENvbGxhdG9yUHJvdG90eXBlKiBj
b2xsYXRvclByb3RvdHlwZSwgU3RydWN0dXJlKiBjb2xsYXRvclN0cnVjdHVyZSkKK3sKKyAgICBJ
bnRsQ29sbGF0b3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEludGxDb2xsYXRvckNv
bnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlv
bih2bSwgY29sbGF0b3JQcm90b3R5cGUsIGNvbGxhdG9yU3RydWN0dXJlKTsKKyAgICByZXR1cm4g
Y29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKK30KKworSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OkludGxDb2xsYXRvckNvbnN0
cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0
aW9uKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bENvbGxhdG9yQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bENvbGxhdG9yUHJvdG90eXBlKiBjb2xsYXRvclBy
b3RvdHlwZSwgU3RydWN0dXJlKiBjb2xsYXRvclN0cnVjdHVyZSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSwgQVNDSUlMaXRlcmFsKCJDb2xsYXRvciIpKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBjb2xsYXRv
clByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgbV9jb2xsYXRv
clN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIGNvbGxhdG9yU3RydWN0dXJlKTsKK30KKworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsQ29sbGF0b3IoRXhlY1N0YXRlKiBl
eGVjKQoreworICAgIC8vIDEwLjEuMiBJbnRsLkNvbGxhdG9yIChbbG9jYWxlcyBbLCBvcHRpb25z
XV0pIChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwg
bGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBsZXQgbmV3
VGFyZ2V0IGJlIE5ld1RhcmdldC4KKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgaW52b2tl
ZCB3aGVuIGNhbGxlZCBhcyBjb25zdHJ1Y3RvciBzbyBuZXdUYXJnZXQgaXMgdGhlIENvbGxhdG9y
IGZ1bmN0aW9uLgorCisgICAgLy8gMi4gTGV0IGNvbGxhdG9yIGJlIE9yZGluYXJ5Q3JlYXRlRnJv
bUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJUNvbGxhdG9yUHJvdG90eXBlJSkuCisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0gSW50bENvbGxhdG9y
OjpjcmVhdGUodm0sIGpzQ2FzdDxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxl
ZSgpKSk7CisKKyAgICAvLyAzLiBSZXR1cm5JZkFicnVwdChjb2xsYXRvcikuCisgICAgaWYgKCFj
b2xsYXRvcikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KworICAgIC8vIDQuIFJldHVybiBJbml0aWFsaXplQ29sbGF0b3IoY29sbGF0b3IsIGxvY2FsZXMs
IG9wdGlvbnMpLgorICAgIC8vIEZJWE1FOiByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEluaXRpYWxp
emVDb2xsYXRvcihjb2xsYXRvciwgbG9jYWxlcywgb3B0aW9ucykpOworCisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjb2xsYXRvcik7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEludGxDb2xsYXRvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTAuMS4yIElu
dGwuQ29sbGF0b3IgKFtsb2NhbGVzIFssIG9wdGlvbnNdXSkgKEVDTUEtNDAyIDIuMCkKKyAgICAv
LyAxLiBJZiBOZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRoZSBhY3Rp
dmUgZnVuY3Rpb24gb2JqZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0LgorICAg
IC8vIEZJWE1FOiBTdXBwb3J0IE5ld1RhcmdldCBpbiBzdXBlcigpIGNhbGxzLgorCisgICAgLy8g
Mi4gTGV0IGNvbGxhdG9yIGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1Rhcmdl
dCwgJUNvbGxhdG9yUHJvdG90eXBlJSkuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBJ
bnRsQ29sbGF0b3IqIGNvbGxhdG9yID0gSW50bENvbGxhdG9yOjpjcmVhdGUodm0sIGpzQ2FzdDxJ
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKSk7CisKKyAgICAvLyAzLiBS
ZXR1cm5JZkFicnVwdChjb2xsYXRvcikuCisgICAgaWYgKCFjb2xsYXRvcikKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIC8vIDQuIFJldHVybiBJ
bml0aWFsaXplQ29sbGF0b3IoY29sbGF0b3IsIGxvY2FsZXMsIG9wdGlvbnMpLgorICAgIC8vIEZJ
WE1FOiByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEluaXRpYWxpemVDb2xsYXRvcihjb2xsYXRvciwg
bG9jYWxlcywgb3B0aW9ucykpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb2xsYXRv
cik7Cit9CisKK0NvbnN0cnVjdFR5cGUgSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmdldENvbnN0
cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBj
b25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEludGxDb2xsYXRvcjsKKyAg
ICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK0NhbGxUeXBlIEludGxDb2xsYXRvckNv
bnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7Cisg
ICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEludGxDb2xsYXRvcjsKKyAgICByZXR1
cm4gQ2FsbFR5cGVIb3N0OworfQorCitib29sIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdl
dFN0YXRpY0Z1bmN0aW9uU2xvdDxJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBjb2xsYXRvckNvbnN0
cnVjdG9yVGFibGUsIGpzQ2FzdDxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHBy
b3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50
bENvbGxhdG9yQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0ZSogZXhl
YykKK3sKKyAgICAvLyAxMC4yLjIgSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRMb2NhbGVzT2YobG9j
YWxlcyBbLCBvcHRpb25zXSkgKEVDTUEtNDAyIDIuMCkKKworICAgIC8vIDEuIExldCByZXF1ZXN0
ZWRMb2NhbGVzIGJlIENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QobG9jYWxlcykuCisgICAgLy8gRklY
TUU6IHJlcXVlc3RlZCA9IENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QobG9jYWxlcyk7CisKKyAgICAv
LyAyLiBSZXR1cm5JZkFicnVwdChyZXF1ZXN0ZWRMb2NhbGVzKS4KKyAgICAvLyBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCisgICAgLy8gICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisKKyAgICAvLyAzLiBSZXR1cm4gU3VwcG9ydGVkTG9jYWxlcyglQ29sbGF0b3Il
LltbYXZhaWxhYmxlTG9jYWxlc11dLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zKS4KKyAgICAv
LyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTdXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJs
ZSwgcmVxdWVzdGVkLCBvcHRpb25zKSk7CisKKyAgICAvLyBSZXR1cm4gZW1wdHkgYXJyYXkgdW50
aWwgcHJvcGVybHkgaW1wbGVtZW50ZWQuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVj
dCgpOworICAgIEpTQXJyYXkqIHN1cHBvcnRlZExvY2FsZXMgPSBKU0FycmF5Ojp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdU
eXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKKyAgICBpZiAoIXN1
cHBvcnRlZExvY2FsZXMpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3VwcG9y
dGVkTG9jYWxlcyk7Cit9CisgICAgCit2b2lkIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSW50
bENvbGxhdG9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SW50bENvbGxhdG9yQ29u
c3RydWN0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0
b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY29sbGF0b3JTdHJ1Y3R1
cmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29u
c3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNv
bnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFhOThmMmZhYTI0NzliODRmNzliNzEwNzVmNWU5ODdm
YWVlNzZmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcl9oCisjZGVmaW5lIElu
dGxDb2xsYXRvckNvbnN0cnVjdG9yX2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAi
SW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bENvbGxh
dG9yOworY2xhc3MgSW50bENvbGxhdG9yUHJvdG90eXBlOworCitjbGFzcyBJbnRsQ29sbGF0b3JD
b25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdDsKKworICAgIHN0YXRpYyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciogY3JlYXRlKFZN
JiwgU3RydWN0dXJlKiwgSW50bENvbGxhdG9yUHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIFN0cnVjdHVyZSogY29sbGF0b3JT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NvbGxhdG9yU3RydWN0dXJlLmdldCgpOyB9CisK
K3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bENvbGxhdG9yUHJv
dG90eXBlKiwgU3RydWN0dXJlKik7CisKK3ByaXZhdGU6CisgICAgSW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25z
dHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NvbGxhdG9yU3RydWN0
dXJlOworfTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsQ29s
bGF0b3IoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRs
Q29sbGF0b3IoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
RU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90
eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wMjEyMzIzYzRhM2U4OTkyYmZiMGI0OTM5MWY5ZWMwZDFiZjE4
M2JmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bENvbGxhdG9yUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxDb2xsYXRvclByb3Rv
dHlwZS5oIgorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1
ZGUgIkludGxDb2xsYXRvci5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1
ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNs
dWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNT
RVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bENvbGxhdG9yUHJvdG90eXBlKTsKKwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBl
R2V0dGVyQ29tcGFyZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRl
Kik7CisKK30KKworI2luY2x1ZGUgIkludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsQ29sbGF0b3JQcm90b3R5cGU6OnNf
aW5mbyA9IHsgIk9iamVjdCIsICZJbnRsQ29sbGF0b3I6OnNfaW5mbywgJmNvbGxhdG9yUHJvdG90
eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bENvbGxhdG9yUHJvdG90eXBlKSB9Owor
CisvKiBTb3VyY2UgZm9yIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaAorQGJlZ2luIGNvbGxh
dG9yUHJvdG90eXBlVGFibGUKKyAgY29tcGFyZSAgICAgICAgICBJbnRsQ29sbGF0b3JQcm90b3R5
cGVHZXR0ZXJDb21wYXJlICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorICByZXNvbHZlZE9wdGlv
bnMgIEludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMgIERvbnRFbnVtfEZ1
bmN0aW9uIDAKK0BlbmQKKyovCisKK0ludGxDb2xsYXRvclByb3RvdHlwZSogSW50bENvbGxhdG9y
UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQoreworICAgIEludGxDb2xsYXRvclByb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxhdG9yUHJvdG90eXBlPih2bS5oZWFwKSkgSW50bENv
bGxhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRp
b24odm0pOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSW50bENvbGxhdG9y
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxDb2xsYXRvclByb3RvdHlwZTo6SW50bENv
bGxhdG9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRs
Q29sbGF0b3Iodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsQ29sbGF0b3JQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7Cit9CisKK2Jvb2wgSW50bENvbGxhdG9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9u
U2xvdDxKU09iamVjdD4oZXhlYywgY29sbGF0b3JQcm90b3R5cGVUYWJsZSwganNDYXN0PEludGxD
b2xsYXRvclByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29t
cGFyZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTAuMy4zIEludGwuQ29sbGF0b3IucHJv
dG90eXBlLmNvbXBhcmUgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBMZXQgY29sbGF0b3IgYmUg
dGhpcyBDb2xsYXRvciBvYmplY3QuCisgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzRHlu
YW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghY29s
bGF0b3IpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhl
YykpOworCisgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZENvbXBhcmUgPSBjb2xsYXRvci0+Ym91
bmRDb21wYXJlKCk7CisgICAgLy8gMi4gSWYgY29sbGF0b3IuW1tib3VuZENvbXBhcmVdXSBpcyB1
bmRlZmluZWQsCisgICAgaWYgKCFib3VuZENvbXBhcmUpIHsKKyAgICAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNh
bGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVp
bHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmluZWQgaW4gMTEuMy40LgorICAgICAgICAvLyBi
LiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDIuCisgICAgICAgIEpTRnVu
Y3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCAyLCBBU0NJSUxpdGVyYWwoImNvbXBhcmUiKSwgSW50bENvbGxhdG9yRnVuY0NvbXBhcmUsIE5v
SW50cmluc2ljKTsKKyAgICAgICAgSlNBcnJheSogYm91bmRBcmdzID0gSlNBcnJheTo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7CisgICAgICAg
IGlmICghYm91bmRBcmdzKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d091dE9mTWVtb3J5RXJyb3IoZXhlYykpOworCisgICAgICAgIC8vIGMuIExldCBiYyBiZSBCb3Vu
ZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4KKyAgICAgICAgYm91bmRDb21wYXJl
ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0
LCBjb2xsYXRvciwgYm91bmRBcmdzLCAyLCBBU0NJSUxpdGVyYWwoImNvbXBhcmUiKSk7CisgICAg
ICAgIC8vIGQuIFNldCBjb2xsYXRvci5bW2JvdW5kQ29tcGFyZV1dIHRvIGJjLgorICAgICAgICBj
b2xsYXRvci0+c2V0Qm91bmRDb21wYXJlKHZtLCBib3VuZENvbXBhcmUpOworICAgIH0KKyAgICAv
LyAzLiBSZXR1cm4gY29sbGF0b3IuW1tib3VuZENvbXBhcmVdXS4KKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGJvdW5kQ29tcGFyZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgLy8gMTAuMy41IEludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0
aW9ucygpIChFQ01BLTQwMiAyLjApCisgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzRHlu
YW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghY29s
bGF0b3IpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhl
YykpOworCisgICAgLy8gVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBuZXcgb2JqZWN0IHdob3NlIHBy
b3BlcnRpZXMgYW5kIGF0dHJpYnV0ZXMgYXJlIHNldCBhcyBpZiBjb25zdHJ1Y3RlZCBieSBhbiBv
YmplY3QgbGl0ZXJhbCBhc3NpZ25pbmcgdG8gZWFjaCBvZiB0aGUgZm9sbG93aW5nIHByb3BlcnRp
ZXMgdGhlIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGludGVybmFsIHNsb3Qgb2YgdGhpcyBD
b2xsYXRvciBvYmplY3QgKHNlZSAxMC40KTogbG9jYWxlLCB1c2FnZSwgc2Vuc2l0aXZpdHksIGln
bm9yZVB1bmN0dWF0aW9uLCBjb2xsYXRpb24sIGFzIHdlbGwgYXMgdGhvc2UgcHJvcGVydGllcyBz
aG93biBpbiBUYWJsZSAxIHdob3NlIGtleXMgYXJlIGluY2x1ZGVkIGluIHRoZSAlQ29sbGF0b3Il
W1tyZWxldmFudEV4dGVuc2lvbktleXNdXSBpbnRlcm5hbCBzbG90IG9mIHRoZSBzdGFuZGFyZCBi
dWlsdC1pbiBvYmplY3QgdGhhdCBpcyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBJbnRsLkNvbGxhdG9y
LgorCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsK
KworICAgIC8vIEZJWE1FOiBQb3B1bGF0ZSBvYmplY3QgZnJvbSBpbnRlcm5hbCBzbG90cy4KKwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3B0aW9ucyk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4MTY0
MjY3OWU5ZjUxMjE0NWNkZjdlMDJjY2FmNDY5N2ZlYjdjYzEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuaApAQCAt
MCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAo
dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxDb2xsYXRv
clByb3RvdHlwZV9oCisjZGVmaW5lIEludGxDb2xsYXRvclByb3RvdHlwZV9oCisKKyNpZiBFTkFC
TEUoSU5UTCkKKworI2luY2x1ZGUgIkludGxDb2xsYXRvci5oIgorI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsQ29sbGF0b3JQcm90b3R5cGUgOiBw
dWJsaWMgSW50bENvbGxhdG9yIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGxDb2xsYXRvciBC
YXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGlj
IEludGxDb2xsYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcml2YXRlOgorICAgIEludGxDb2xs
YXRvclByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRM
KQorCisjZW5kaWYgLy8gSW50bENvbGxhdG9yUHJvdG90eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI4NjI4ZmJlODY1NjUzNzhkZmRmM2Y3ZTFlOTNhNGMxZmVkMjUyMmUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3Bw
CkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fn
b25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisKKyNpZiBFTkFCTEUoSU5U
TCkKKworI2luY2x1ZGUgIkRhdGVDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkRhdGVJbnN0YW5j
ZS5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1
bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0Nl
bGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAi
U3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZv
IEludGxEYXRlVGltZUZvcm1hdDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsRGF0ZVRpbWVGb3JtYXQpIH07CisKK0ludGxEYXRl
VGltZUZvcm1hdCogSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IpCit7CisgICAgSW50bERhdGVUaW1lRm9y
bWF0KiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGF0ZVRpbWVGb3Jt
YXQ+KHZtLmhlYXApKSBJbnRsRGF0ZVRpbWVGb3JtYXQodm0sIGNvbnN0cnVjdG9yLT5kYXRlVGlt
ZUZvcm1hdFN0cnVjdHVyZSgpKTsKKyAgICBmb3JtYXQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICByZXR1cm4gZm9ybWF0OworfQorCitTdHJ1Y3R1cmUqIEludGxEYXRlVGltZUZvcm1hdDo6Y3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworfQorCitJbnRsRGF0ZVRpbWVGb3JtYXQ6OkludGxEYXRlVGltZUZvcm1hdChWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3Qodm0s
IHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJU
KGluaGVyaXRzKGluZm8oKSkpOworfQorCit2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6ZGVzdHJv
eShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4o
Y2VsbCktPkludGxEYXRlVGltZUZvcm1hdDo6fkludGxEYXRlVGltZUZvcm1hdCgpOworfQorCit2
b2lkIEludGxEYXRlVGltZUZvcm1hdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQoreworICAgIEludGxEYXRlVGltZUZvcm1hdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fYm91bmRGb3JtYXQpOworfQorCit2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6c2V0Qm91bmRG
b3JtYXQoVk0mIHZtLCBKU0JvdW5kRnVuY3Rpb24qIGZvcm1hdCkKK3sKKyAgICBtX2JvdW5kRm9y
bWF0LnNldCh2bSwgdGhpcywgZm9ybWF0KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIC8vIDEyLjMuNCBEYXRlVGltZSBGb3JtYXQgRnVuY3Rpb25zIChFQ01BLTQwMiAy
LjApCisgICAgLy8gMS4gTGV0IGR0ZiBiZSB0aGUgdGhpcyB2YWx1ZS4KKyAgICBJbnRsRGF0ZVRp
bWVGb3JtYXQqIGZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oZXhl
Yy0+dGhpc1ZhbHVlKCkpOworICAgIC8vIDIuIEFzc2VydDogVHlwZShkdGYpIGlzIE9iamVjdCBh
bmQgZHRmIGhhcyBhbiBbW2luaXRpYWxpemVkRGF0ZVRpbWVGb3JtYXRdXSBpbnRlcm5hbCBzbG90
IHdob3NlIHZhbHVlIGlzIHRydWUuCisgICAgaWYgKCFmb3JtYXQpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYykpOworCisgICAgSlNWYWx1ZSBkYXRl
ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgZG91YmxlIHZhbHVlOworCisgICAgLy8gMy4gSWYg
ZGF0ZSBpcyBub3QgcHJvdmlkZWQgb3IgaXMgdW5kZWZpbmVkLCB0aGVuCisgICAgaWYgKGRhdGUu
aXNVbmRlZmluZWQoKSkgeworICAgICAgICAvLyBhLiBMZXQgeCBiZSAlRGF0ZV9ub3clKCkuCisg
ICAgICAgIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGRhdGVOb3coZXhlYykpLnRvTnVtYmVyKGV4
ZWMpOworICAgIC8vIDQuIEVsc2UKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBhLiBMZXQgeCBi
ZSBUb051bWJlcihkYXRlKS4KKyAgICAgICAgdmFsdWUgPSBkYXRlLnRvTnVtYmVyKGV4ZWMpOwor
ICAgICAgICAvLyBiLiBSZXR1cm5JZkFicnVwdCh4KS4KKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICB9CisKKyAgICAvLyA1LiBSZXR1cm4gRm9ybWF0RGF0ZVRpbWUoZHRmLCB4KS4K
KworICAgIC8vIDEyLjMuNCBGb3JtYXREYXRlVGltZSBhYnN0cmFjdCBvcGVyYXRpb24gKEVDTUEt
NDAyIDIuMCkKKworICAgIC8vIDEuIElmIHggaXMgbm90IGEgZmluaXRlIE51bWJlciwgdGhlbiB0
aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uLgorICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1
ZSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dSYW5nZUVycm9yKGV4ZWMs
IFN0cmluZygiZGF0ZSB2YWx1ZSBpcyBub3QgZmluaXRlIGluIERhdGVUaW1lRm9ybWF0LmZvcm1h
dCgpIikpKTsKKworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgMiAtIDkKKworICAgIC8vIFJldHVy
biBuZXcgRGF0ZSh2YWx1ZSkudG9TdHJpbmcoKSB1bnRpbCBwcm9wZXJseSBpbXBsZW1lbnRlZC4K
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgRGF0ZUluc3RhbmNlKiBk
ID0gRGF0ZUluc3RhbmNlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+ZGF0ZVN0cnVjdHVyZSgp
LCB2YWx1ZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKGQpLnRvU3RyaW5n
KGV4ZWMpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5U
TCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2RhZWQxMzhmYjA4ZGNmYTNiZTY3ZDM3YzgzYTQ3ZGI0YWFiY2Jk
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
YXRlVGltZUZvcm1hdC5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgSW50bERhdGVUaW1lRm9ybWF0X2gKKyNkZWZpbmUgSW50bERhdGVUaW1lRm9ybWF0
X2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3Qu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yOworY2xhc3MgSlNCb3VuZEZ1bmN0aW9uOworCitjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXQg
OiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNE
ZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBJbnRsRGF0ZVRpbWVGb3JtYXQq
IGNyZWF0ZShWTSYsIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKik7CisgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGb3Jt
YXQoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kRm9ybWF0LmdldCgpOyB9CisgICAgdm9pZCBzZXRC
b3VuZEZvcm1hdChWTSYsIEpTQm91bmRGdW5jdGlvbiopOworCitwcm90ZWN0ZWQ6CisgICAgSW50
bERhdGVUaW1lRm9ybWF0KFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgV3JpdGVCYXJy
aWVyPEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZEZvcm1hdDsKK307CisgICAgCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGltZShF
eGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5U
TCkKKworI2VuZGlmIC8vIEludGxEYXRlVGltZUZvcm1hdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMThkODE4YWI4NGMyYWM3YzkxNDIyZGQxMjY2NjdlM2UyNDcy
M2VmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDE3OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWls
LmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bERh
dGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCIKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVk
ZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisj
aW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CisjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisj
aW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElD
X0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0ZSopOwor
Cit9CisKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZv
LCAmZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKElu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gZGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3RvclRhYmxlCisgIHN1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMQorQGVuZAorKi8KKworSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3Iq
IEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBkYXRlVGltZUZvcm1hdFBy
b3RvdHlwZSwgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSkKK3sKKyAgICBJbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9y
LT5maW5pc2hDcmVhdGlvbih2bSwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIGRhdGVUaW1lRm9y
bWF0U3RydWN0dXJlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSog
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3I6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1
Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBkYXRlVGltZUZv
cm1hdFByb3RvdHlwZSwgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSkKK3sKKyAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVNDSUlMaXRlcmFsKCJEYXRlVGltZUZvcm1hdCIp
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9u
dERlbGV0ZSk7CisgICAgbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIGRh
dGVUaW1lRm9ybWF0U3RydWN0dXJlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8v
IDEyLjEuMiBJbnRsLkRhdGVUaW1lRm9ybWF0IChbbG9jYWxlcyBbLCBvcHRpb25zXV0pIChFQ01B
LTQwMiAyLjApCisgICAgLy8gMS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1Rh
cmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJl
IE5ld1RhcmdldC4KKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgaW52b2tlZCB3aGVuIGNh
bGxlZCBhcyBjb25zdHJ1Y3RvciBzbyBuZXdUYXJnZXQgaXMgdGhlIERhdGVUaW1lRm9ybWF0IGZ1
bmN0aW9uLgorCisgICAgLy8gMi4gTGV0IGRhdGVUaW1lRm9ybWF0IGJlIE9yZGluYXJ5Q3JlYXRl
RnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJURhdGVUaW1lRm9ybWF0UHJvdG90eXBlJSkuCisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGRhdGVUaW1l
Rm9ybWF0ID0gSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUodm0sIGpzQ2FzdDxJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKSk7CisKKyAgICAvLyAzLiBSZXR1
cm5JZkFicnVwdChkYXRlVGltZUZvcm1hdCkuCisgICAgaWYgKCFkYXRlVGltZUZvcm1hdCkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIC8vIDQu
IFJldHVybiBJbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMs
IG9wdGlvbnMpLgorICAgIC8vIEZJWE1FOiByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEluaXRpYWxp
emVEYXRlVGltZUZvcm1hdChkYXRlVGltZUZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucykpOworCisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShkYXRlVGltZUZvcm1hdCk7Cit9CisgICAgCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIC8vIDEyLjEuMiBJbnRsLkRhdGVUaW1lRm9ybWF0IChbbG9jYWxlcyBb
LCBvcHRpb25zXV0pIChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gSWYgTmV3VGFyZ2V0IGlzIHVu
ZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVjdCwgZWxz
ZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KKyAgICAvLyBGSVhNRTogU3VwcG9ydCBOZXdU
YXJnZXQgaW4gc3VwZXIoKSBjYWxscy4KKworICAgIC8vIDIuIExldCBkYXRlVGltZUZvcm1hdCBi
ZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVEYXRlVGltZUZvcm1h
dFByb3RvdHlwZSUpLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSW50bERhdGVUaW1l
Rm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBq
c0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSkpOwor
CisgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQoZGF0ZVRpbWVGb3JtYXQpLgorICAgIGlmICghZGF0
ZVRpbWVGb3JtYXQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisKKyAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KGRhdGVUaW1l
Rm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShJbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMs
IG9wdGlvbnMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQp
OworfQorCitDb25zdHJ1Y3RUeXBlIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpnZXRD
b25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7Cisg
ICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVG
b3JtYXQ7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCitDYWxsVHlwZSBJbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEm
IGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxJbnRsRGF0
ZVRpbWVGb3JtYXQ7CisgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKK30KKworYm9vbCBJbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJuYWxG
dW5jdGlvbj4oZXhlYywgZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
Ly8gMTIuMi4yIEludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKGxvY2FsZXMg
Wywgb3B0aW9uc10pIChFQ01BLTQwMiAyLjApCisKKyAgICAvLyAxLiBMZXQgYXZhaWxhYmxlTG9j
YWxlcyBiZSAlRGF0ZVRpbWVGb3JtYXQlLltbYXZhaWxhYmxlTG9jYWxlc11dLgorICAgIC8vIEZJ
WE1FOiBhdmFpbGFibGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0QXZhaWxh
YmxlTG9jYWxlcygpCisKKyAgICAvLyAyLiBMZXQgcmVxdWVzdGVkTG9jYWxlcyBiZSBDYW5vbmlj
YWxpemVMb2NhbGVMaXN0KGxvY2FsZXMpLgorICAgIC8vIEZJWE1FOiByZXF1ZXN0ZWQgPSBDYW5v
bmljYWxpemVMb2NhbGVMaXN0KGxvY2FsZXMpCisKKyAgICAvLyAzLiBSZXR1cm4gU3VwcG9ydGVk
TG9jYWxlcyhhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zKS4KKyAg
ICAvLyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTdXBwb3J0ZWRMb2NhbGVzKGF2YWls
YWJsZSwgcmVxdWVzdGVkLCBvcHRpb25zKSk7CisKKyAgICAvLyBSZXR1cm4gZW1wdHkgYXJyYXkg
dW50aWwgcHJvcGVybHkgaW1wbGVtZW50ZWQuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9i
amVjdCgpOworICAgIEpTQXJyYXkqIHN1cHBvcnRlZExvY2FsZXMgPSBKU0FycmF5Ojp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKKyAgICBpZiAo
IXN1cHBvcnRlZExvY2FsZXMpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3Vw
cG9ydGVkTG9jYWxlcyk7Cit9CisgICAgCit2b2lkIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisgICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2YwNDNhN2U3MGE0MmZmZWFmZjJkOGRiYjU2MGViYTFjMzNhY2E1NwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcl9oCisjZGVmaW5lIEludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yX2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAi
SW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bERhdGVU
aW1lRm9ybWF0OworY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOworCitjbGFzcyBJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5G
TzsKKworICAgIFN0cnVjdHVyZSogZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiwg
U3RydWN0dXJlKik7CisKK3ByaXZhdGU6CisgICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1
Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RhdGVUaW1lRm9ybWF0U3Ry
dWN0dXJlOworfTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRs
RGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxJbnRsRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjY0
NzJkMGEzM2ZhNjQyOTEwMDI2YjI5Zjc5NjhhOWMxZjc3MDQzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
LmNwcApAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZh
bldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIgorCisj
aWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxEYXRl
VGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpT
Q0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJT
dHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lT
X1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKTsKKwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9u
cyhFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZTo6c19pbmZvID0geyAiT2JqZWN0IiwgJkludGxEYXRlVGltZUZv
cm1hdDo6c19pbmZvLCAmZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhP
RF9UQUJMRShJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3Ig
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oCitAYmVnaW4gZGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGVUYWJsZQorICBmb3JtYXQgICAgICAgICAgIEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZUdldHRlckZvcm1hdCAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCisgIHJlc29sdmVkT3B0
aW9ucyAgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyAgRG9u
dEVudW18RnVuY3Rpb24gMAorQGVuZAorKi8KKworSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
KiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUodm0s
IHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgc3RydWN0dXJlKTsK
KyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6Oklu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgIDogSW50bERhdGVUaW1lRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVy
ZSopCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCitib29sIEludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4
ZWMsIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlVGFibGUsIGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZv
cm1hdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTIuMy4zIEludGwuRGF0ZVRpbWVGb3Jt
YXQucHJvdG90eXBlLmZvcm1hdCAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIExldCBkdGYgYmUg
dGhpcyBEYXRlVGltZUZvcm1hdCBvYmplY3QuCisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkdGYg
PSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsK
KyAgICAvLyAyLiBSZXR1cm5JZkFicnVwdChkdGYpLgorICAgIGlmICghZHRmKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKyAgICAKKyAgICBK
U0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0ID0gZHRmLT5ib3VuZEZvcm1hdCgpOworICAgIC8v
IDMuIElmIHRoZSBbW2JvdW5kRm9ybWF0XV0gaW50ZXJuYWwgc2xvdCBvZiB0aGlzIERhdGVUaW1l
Rm9ybWF0IG9iamVjdCBpcyB1bmRlZmluZWQsCisgICAgaWYgKCFib3VuZEZvcm1hdCkgeworICAg
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworICAgICAgICAvLyBhLiBM
ZXQgRiBiZSBhIG5ldyBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgYXMgZGVmaW5lZCBpbiAxMi4z
LjQuCisgICAgICAgIC8vIGIuIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVydHkgaXMg
MS4gKE5vdGU6IEbigJlzIGxlbmd0aCBwcm9wZXJ0eSB3YXMgMCBpbiBFQ01BLTQwMiAxLjApCisg
ICAgICAgIEpTRnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCAxLCBBU0NJSUxpdGVyYWwoImZvcm1hdCIpLCBJbnRsRGF0ZVRpbWVGb3Jt
YXRGdW5jRm9ybWF0RGF0ZVRpbWUsIE5vSW50cmluc2ljKTsKKyAgICAgICAgSlNBcnJheSogYm91
bmRBcmdzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZ2xvYmFsT2JqZWN0
LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRo
VW5kZWNpZGVkKSwgMCk7CisgICAgICAgIGlmICghYm91bmRBcmdzKQorICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYykpOworICAgICAg
ICAKKyAgICAgICAgLy8gYy4gTGV0IGJmIGJlIEJvdW5kRnVuY3Rpb25DcmVhdGUoRiwgwqt0aGlz
IHZhbHVlwrspLgorICAgICAgICBib3VuZEZvcm1hdCA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgZHRmLCBib3VuZEFyZ3MsIDEsIEFTQ0lJ
TGl0ZXJhbCgiZm9ybWF0IikpOworICAgICAgICAvLyBkLiBTZXQgZHRmLltbYm91bmRGb3JtYXRd
XSB0byBiZi4KKyAgICAgICAgZHRmLT5zZXRCb3VuZEZvcm1hdCh2bSwgYm91bmRGb3JtYXQpOwor
ICAgIH0KKyAgICAvLyA0LiBSZXR1cm4gZHRmLltbYm91bmRGb3JtYXRdXS4KKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGJvdW5kRm9ybWF0KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMi4zLjUgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90
b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKKyAgICBJbnRsRGF0ZVRpbWVG
b3JtYXQqIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oZXhlYy0+dGhp
c1ZhbHVlKCkpOworICAgIGlmICghZHRmKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKworICAgIC8vIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEg
bmV3IG9iamVjdCB3aG9zZSBwcm9wZXJ0aWVzIGFuZCBhdHRyaWJ1dGVzIGFyZSBzZXQgYXMgaWYg
Y29uc3RydWN0ZWQgYnkgYW4gb2JqZWN0IGxpdGVyYWwgYXNzaWduaW5nIHRvIGVhY2ggb2YgdGhl
IGZvbGxvd2luZyBwcm9wZXJ0aWVzIHRoZSB2YWx1ZSBvZiB0aGUgY29ycmVzcG9uZGluZyBpbnRl
cm5hbCBzbG90IG9mIHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0IChzZWUgMTIuNCk6IGxvY2Fs
ZSwgY2FsZW5kYXIsIG51bWJlcmluZ1N5c3RlbSwgdGltZVpvbmUsIGhvdXIxMiwgd2Vla2RheSwg
ZXJhLCB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgYW5kIHRpbWVab25l
TmFtZS4gUHJvcGVydGllcyB3aG9zZSBjb3JyZXNwb25kaW5nIGludGVybmFsIHNsb3RzIGFyZSBu
b3QgcHJlc2VudCBhcmUgbm90IGFzc2lnbmVkLgorICAgIC8vIE5vdGU6IEluIHRoaXMgdmVyc2lv
biBvZiB0aGUgRUNNQVNjcmlwdCAyMDE1IEludGVybmF0aW9uYWxpemF0aW9uIEFQSSwgdGhlIHRp
bWVab25lIHByb3BlcnR5IHdpbGwgYmUgdGhlIG5hbWUgb2YgdGhlIGRlZmF1bHQgdGltZSB6b25l
IGlmIG5vIHRpbWVab25lIHByb3BlcnR5IHdhcyBwcm92aWRlZCBpbiB0aGUgb3B0aW9ucyBvYmpl
Y3QgcHJvdmlkZWQgdG8gdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IuIFRoZSBw
cmV2aW91cyB2ZXJzaW9uIGxlZnQgdGhlIHRpbWVab25lIHByb3BlcnR5IHVuZGVmaW5lZCBpbiB0
aGlzIGNhc2UuCisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGV4ZWMpOworCisgICAgLy8gRklYTUU6IFBvcHVsYXRlIG9iamVjdCBmcm9tIGludGVybmFsIHNs
b3RzLgorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvcHRpb25zKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTJmZDVlMzRlYTc5NTg2ZTQ3ODk2ZmFmZmM0NGU1ZTZmYTYxNTljYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlX2gKKyNkZWZpbmUgSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlX2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVk
ZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSA6IHB1YmxpYyBJ
bnRsRGF0ZVRpbWVGb3JtYXQgeworcHVibGljOgorICAgIHR5cGVkZWYgSW50bERhdGVUaW1lRm9y
bWF0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBz
dGF0aWMgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisK
K3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgU3RydWN0dXJlKik7CisK
K3ByaXZhdGU6CisgICAgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKFZNJiwgU3RydWN0dXJl
Kik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzlkYzViMTllYTQ4ZWNiNGE0YWUzMTc5
MGUzMDllYjRhYzc2YWI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5j
b20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVy
Rm9ybWF0LmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5j
bHVkZSAiSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSW50bE9iamVj
dC5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlNsb3RWaXNp
dG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsTnVtYmVyRm9ybWF0OjpzX2luZm8gPSB7ICJP
YmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxOdW1iZXJG
b3JtYXQpIH07CisKK0ludGxOdW1iZXJGb3JtYXQqIEludGxOdW1iZXJGb3JtYXQ6OmNyZWF0ZShW
TSYgdm0sIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IpCit7CisgICAg
SW50bE51bWJlckZvcm1hdCogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50
bE51bWJlckZvcm1hdD4odm0uaGVhcCkpIEludGxOdW1iZXJGb3JtYXQodm0sIGNvbnN0cnVjdG9y
LT5udW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKSk7CisgICAgZm9ybWF0LT5maW5pc2hDcmVhdGlvbih2
bSk7CisgICAgcmV0dXJuIGZvcm1hdDsKK30KKworU3RydWN0dXJlKiBJbnRsTnVtYmVyRm9ybWF0
OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7Cit9CisKK0ludGxOdW1iZXJGb3JtYXQ6OkludGxOdW1iZXJGb3JtYXQoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KHZt
LCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdDo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQo
aW5oZXJpdHMoaW5mbygpKSk7Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdDo6ZGVzdHJveShK
U0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KGNlbGwp
LT5JbnRsTnVtYmVyRm9ybWF0Ojp+SW50bE51bWJlckZvcm1hdCgpOworfQorCit2b2lkIEludGxO
dW1iZXJGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBJbnRsTnVtYmVyRm9ybWF0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEludGxO
dW1iZXJGb3JtYXQqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYm91bmRGb3JtYXQp
OworfQorCit2b2lkIEludGxOdW1iZXJGb3JtYXQ6OnNldEJvdW5kRm9ybWF0KFZNJiB2bSwgSlNC
b3VuZEZ1bmN0aW9uKiBmb3JtYXQpCit7CisgICAgbV9ib3VuZEZvcm1hdC5zZXQodm0sIHRoaXMs
IGZvcm1hdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZv
cm1hdEZ1bmNGb3JtYXROdW1iZXIoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDExLjMuNCBG
b3JtYXQgTnVtYmVyIEZ1bmN0aW9ucyAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIExldCBuZiBi
ZSB0aGUgdGhpcyB2YWx1ZS4KKyAgICBJbnRsTnVtYmVyRm9ybWF0KiBmb3JtYXQgPSBqc0R5bmFt
aWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgLy8gMi4g
QXNzZXJ0OiBUeXBlKG5mKSBpcyBPYmplY3QgYW5kIG5mIGhhcyBhbiBbW2luaXRpYWxpemVkTnVt
YmVyRm9ybWF0XV0gaW50ZXJuYWwgc2xvdCB3aG9zZSB2YWx1ZSBpcyB0cnVlLgorICAgIGlmICgh
Zm9ybWF0KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMpKTsKKworICAgIC8vIDMuIElmIHZhbHVlIGlzIG5vdCBwcm92aWRlZCwgbGV0IHZhbHVlIGJl
IHVuZGVmaW5lZC4KKyAgICAvLyA0LiBMZXQgeCBiZSBUb051bWJlcih2YWx1ZSkuCisgICAgZG91
YmxlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYyk7CisgICAgLy8gNS4g
UmV0dXJuSWZBYnJ1cHQoeCkuCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgLy8gNi4gUmV0
dXJuIEZvcm1hdE51bWJlcihuZiwgeCkuCisgICAgCisgICAgLy8gMTEuMy40IEZvcm1hdE51bWJl
ciBhYnN0cmFjdCBvcGVyYXRpb24gKEVDTUEtNDAyIDIuMCkKKyAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IEZvcm1hdE51bWJlci4KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
dmFsdWUpLnRvU3RyaW5nKGV4ZWMpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzI1MzhmOWJmYmEzMGU3NDM4MjFiMmYwZDE4
MWU2Mzg3MmExMjA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgSW50bE51bWJlckZvcm1hdF9oCisjZGVmaW5lIEludGxOdW1iZXJG
b3JtYXRfaAorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9i
amVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yOworY2xhc3MgSlNCb3VuZEZ1bmN0aW9uOworCitjbGFzcyBJbnRsTnVtYmVyRm9ybWF0
IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSW50bE51bWJlckZvcm1hdCog
Y3JlYXRlKFZNJiwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKik7CisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
KworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGb3JtYXQo
KSBjb25zdCB7IHJldHVybiBtX2JvdW5kRm9ybWF0LmdldCgpOyB9CisgICAgdm9pZCBzZXRCb3Vu
ZEZvcm1hdChWTSYsIEpTQm91bmRGdW5jdGlvbiopOworCitwcm90ZWN0ZWQ6CisgICAgSW50bE51
bWJlckZvcm1hdChWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
KTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxK
U0JvdW5kRnVuY3Rpb24+IG1fYm91bmRGb3JtYXQ7Cit9OworICAgIAorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1hdE51bWJlcihFeGVjU3RhdGUq
KTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKworI2Vu
ZGlmIC8vIEludGxOdW1iZXJGb3JtYXRfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTFkODI1MDdiZWRhYTVjNzYzYjk2NWQzMWM3OWQwM2ZkZmE2Y2JlMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvci5oIgorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1
ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMu
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkxvb2t1cC5oIgor
I2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGlu
ZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RF
U1RSVUNUSUJMRShJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IpOworCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JGdW5jU3Vw
cG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFz
c0luZm8gSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIs
ICZCYXNlOjpzX2luZm8sICZudW1iZXJGb3JtYXRDb25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZv
ciBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmgKK0BiZWdpbiBudW1iZXJGb3JtYXRD
b25zdHJ1Y3RvclRhYmxlCisgIHN1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ciogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogbnVtYmVyRm9ybWF0UHJvdG90
eXBlLCBTdHJ1Y3R1cmUqIG51bWJlckZvcm1hdFN0cnVjdHVyZSkKK3sKKyAgICBJbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yPih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVh
dGlvbih2bSwgbnVtYmVyRm9ybWF0UHJvdG90eXBlLCBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUpOwor
ICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
OjpJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZSogbnVtYmVyRm9ybWF0UHJvdG90eXBlLCBTdHJ1Y3R1cmUqIG51
bWJlckZvcm1hdFN0cnVjdHVyZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVND
SUlMaXRlcmFsKCJOdW1iZXJGb3JtYXQiKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgbnVtYmVyRm9ybWF0UHJvdG90eXBl
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJl
YWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKKyAgICBtX251bWJlckZvcm1hdFN0cnVj
dHVyZS5zZXQodm0sIHRoaXMsIG51bWJlckZvcm1hdFN0cnVjdHVyZSk7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bE51bWJlckZvcm1hdChFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgLy8gMTEuMS4yIEludGwuTnVtYmVyRm9ybWF0IChbbG9jYWxlcyBbLCBv
cHRpb25zXV0pIChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVm
aW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBs
ZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkg
aW52b2tlZCB3aGVuIGNhbGxlZCBhcyBjb25zdHJ1Y3RvciBzbyBuZXdUYXJnZXQgaXMgdGhlIE51
bWJlckZvcm1hdCBmdW5jdGlvbi4KKworICAgIC8vIDIuIExldCBudW1iZXJGb3JtYXQgYmUgT3Jk
aW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAlTnVtYmVyRm9ybWF0UHJvdG90
eXBlJSkuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBJbnRsTnVtYmVyRm9ybWF0KiBu
dW1iZXJGb3JtYXQgPSBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUodm0sIGpzQ2FzdDxJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSkpOworCisgICAgLy8gMy4gUmV0
dXJuSWZBYnJ1cHQobnVtYmVyRm9ybWF0KS4KKyAgICBpZiAoIW51bWJlckZvcm1hdCkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIC8vIDQuIFJl
dHVybiBJbml0aWFsaXplTnVtYmVyRm9ybWF0KG51bWJlckZvcm1hdCwgbG9jYWxlcywgb3B0aW9u
cykuCisgICAgLy8gRklYTUU6IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChudW1iZXJGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpKTsKKworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsSW50bE51bWJlckZvcm1hdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8g
MTEuMS4yIEludGwuTnVtYmVyRm9ybWF0IChbbG9jYWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQw
MiAyLjApCisgICAgLy8gMS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1Rhcmdl
dCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5l
d1RhcmdldC4KKyAgICAvLyBGSVhNRTogU3VwcG9ydCBOZXdUYXJnZXQgaW4gc3VwZXIoKSBjYWxs
cy4KKworICAgIC8vIDIuIExldCBudW1iZXJGb3JtYXQgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29u
c3RydWN0b3IobmV3VGFyZ2V0LCAlTnVtYmVyRm9ybWF0UHJvdG90eXBlJSkuCisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBJbnRs
TnVtYmVyRm9ybWF0OjpjcmVhdGUodm0sIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IqPihleGVjLT5jYWxsZWUoKSkpOworCisgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQobnVtYmVy
Rm9ybWF0KS4KKyAgICBpZiAoIW51bWJlckZvcm1hdCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIC8vIDQuIFJldHVybiBJbml0aWFsaXplTnVt
YmVyRm9ybWF0KG51bWJlckZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSW5pdGlhbGl6ZU51bWJlckZvcm1hdChudW1iZXJGb3Jt
YXQsIGxvY2FsZXMsIG9wdGlvbnMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVt
YmVyRm9ybWF0KTsKK30KKworQ29uc3RydWN0VHlwZSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0
YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEludGxO
dW1iZXJGb3JtYXQ7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCitDYWxsVHlw
ZSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxE
YXRhJiBjYWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsSW50
bE51bWJlckZvcm1hdDsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitib29sIEludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJuYWxG
dW5jdGlvbj4oZXhlYywgbnVtYmVyRm9ybWF0Q29uc3RydWN0b3JUYWJsZSwganNDYXN0PEludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9
CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTEu
Mi4yIEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGVzIFssIG9wdGlv
bnNdKSAoRUNNQS00MDIgMi4wKQorCisgICAgLy8gMS4gTGV0IGF2YWlsYWJsZUxvY2FsZXMgYmUg
JU51bWJlckZvcm1hdCUuW1thdmFpbGFibGVMb2NhbGVzXV0uCisgICAgLy8gRklYTUU6IGF2YWls
YWJsZSA9IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0QXZhaWxhYmxlTG9jYWxlcygp
CisKKyAgICAvLyAyLiBMZXQgcmVxdWVzdGVkTG9jYWxlcyBiZSBDYW5vbmljYWxpemVMb2NhbGVM
aXN0KGxvY2FsZXMpLgorICAgIC8vIEZJWE1FOiByZXF1ZXN0ZWQgPSBDYW5vbmljYWxpemVMb2Nh
bGVMaXN0KGxvY2FsZXMpCisKKyAgICAvLyAzLiBSZXR1cm4gU3VwcG9ydGVkTG9jYWxlcyhhdmFp
bGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBGSVhNRTog
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShTdXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJsZSwgcmVxdWVz
dGVkLCBvcHRpb25zKSk7CisKKyAgICAvLyBSZXR1cm4gZW1wdHkgYXJyYXkgdW50aWwgcHJvcGVy
bHkgaW1wbGVtZW50ZWQuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworICAg
IEpTQXJyYXkqIHN1cHBvcnRlZExvY2FsZXMgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxp
emVkKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKKyAgICBpZiAoIXN1cHBvcnRlZExv
Y2FsZXMpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVy
cm9yKGV4ZWMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxl
cyk7Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9udW1iZXJGb3JtYXRTdHJ1
Y3R1cmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjc1ZjEwMjE2NGNjZGYxMmNlNTNl
NWM5NDhiNmNhMTE3OTk5YWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw3MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFm
dGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3JfaAorI2RlZmluZSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JfaAorCisjaWYgRU5B
QkxFKElOVEwpCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBJbnRsTnVtYmVyRm9ybWF0OworY2xhc3MgSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZTsKKworY2xhc3MgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yIDogcHVibGljIElu
dGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBC
YXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGlj
IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAg
ICBERUNMQVJFX0lORk87CisKKyAgICBTdHJ1Y3R1cmUqIG51bWJlckZvcm1hdFN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLmdldCgpOyB9CisKK3Byb3Rl
Y3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZSosIFN0cnVjdHVyZSopOworCitwcml2YXRlOgorICAgIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENv
bnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlw
ZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOworICAgIAorICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbnVtYmVyRm9ybWF0
U3RydWN0dXJlOworfTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJ
bnRsTnVtYmVyRm9ybWF0KEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsSW50bE51bWJlckZvcm1hdChFeGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKworI2VuZGlmIC8vIEludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyNzhjNTgxN2I4
MjQ3M2U4MjE3NmNiNGIxMzQxMWM3MmYxZThhNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcApAQCAt
MCwwICsxLDEzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIg
KHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCIKKworI2lmIEVOQUJMRShJ
TlRMKQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Lmgi
CisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIK
KyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGlu
ZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RF
U1RSVUNUSUJMRShJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKTsKKworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1h
dChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSopOworCit9
CisKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OnNf
aW5mbyA9IHsgIk9iamVjdCIsICZJbnRsTnVtYmVyRm9ybWF0OjpzX2luZm8sICZudW1iZXJGb3Jt
YXRQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0
LmgKK0BiZWdpbiBudW1iZXJGb3JtYXRQcm90b3R5cGVUYWJsZQorICBmb3JtYXQgICAgICAgICAg
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQgICAgICAgICBEb250RW51bXxB
Y2Nlc3NvcgorICByZXNvbHZlZE9wdGlvbnMgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5j
UmVzb2x2ZWRPcHRpb25zICBEb250RW51bXxGdW5jdGlvbiAwCitAZW5kCisqLworCitJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHN0
cnVjdHVyZSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGU6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICA6IEludGxOdW1iZXJGb3JtYXQodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVy
ZSopCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCitib29sIEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVj
LCBudW1iZXJGb3JtYXRQcm90b3R5cGVUYWJsZSwganNDYXN0PEludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIC8vIDExLjMuMyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5
cGUuZm9ybWF0IChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gTGV0IG5mIGJlIHRoaXMgTnVtYmVy
Rm9ybWF0IG9iamVjdC4KKyAgICBJbnRsTnVtYmVyRm9ybWF0KiBuZiA9IGpzRHluYW1pY0Nhc3Q8
SW50bE51bWJlckZvcm1hdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIW5mKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKyAgICAK
KyAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0ID0gbmYtPmJvdW5kRm9ybWF0KCk7Cisg
ICAgLy8gMi4gSWYgbmYuW1tib3VuZEZvcm1hdF1dIGlzIHVuZGVmaW5lZCwKKyAgICBpZiAoIWJv
dW5kRm9ybWF0KSB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7
CisgICAgICAgIC8vIGEuIExldCBGIGJlIGEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBh
cyBkZWZpbmVkIGluIDExLjMuNC4KKyAgICAgICAgLy8gYi4gVGhlIHZhbHVlIG9mIEbigJlzIGxl
bmd0aCBwcm9wZXJ0eSBpcyAxLgorICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgQVNDSUlMaXRlcmFsKCJmb3Jt
YXQiKSwgSW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXROdW1iZXIsIE5vSW50cmluc2ljKTsKKyAg
ICAgICAgSlNBcnJheSogYm91bmRBcmdzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0Fs
bG9jYXRpb24oQXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7CisgICAgICAgIGlmICghYm91bmRBcmdz
KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJy
b3IoZXhlYykpOworCisgICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRl
KEYsIMKrdGhpcyB2YWx1ZcK7KS4KKyAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rp
b246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIG5mLCBib3VuZEFyZ3Ms
IDEsIEFTQ0lJTGl0ZXJhbCgiZm9ybWF0IikpOworICAgICAgICAvLyBkLiBTZXQgbmYuW1tib3Vu
ZEZvcm1hdF1dIHRvIGJmLgorICAgICAgICBuZi0+c2V0Qm91bmRGb3JtYXQodm0sIGJvdW5kRm9y
bWF0KTsKKyAgICB9CisgICAgLy8gMy4gUmV0dXJuIG5mLltbYm91bmRGb3JtYXRdXS4KKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJvdW5kRm9ybWF0KTsKK30KKworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9u
cyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTEuMy41IEludGwuTnVtYmVyRm9ybWF0LnBy
b3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAoRUNNQS00MDIgMi4wKQorICAgIEludGxOdW1iZXJG
b3JtYXQqIG5mID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oZXhlYy0+dGhpc1Zh
bHVlKCkpOworICAgIGlmICghbmYpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYykpOworCisgICAgLy8gVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBuZXcg
b2JqZWN0IHdob3NlIHByb3BlcnRpZXMgYW5kIGF0dHJpYnV0ZXMgYXJlIHNldCBhcyBpZiBjb25z
dHJ1Y3RlZCBieSBhbiBvYmplY3QgbGl0ZXJhbCBhc3NpZ25pbmcgdG8gZWFjaCBvZiB0aGUgZm9s
bG93aW5nIHByb3BlcnRpZXMgdGhlIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGludGVybmFs
IHNsb3Qgb2YgdGhpcyBOdW1iZXJGb3JtYXQgb2JqZWN0IChzZWUgMTEuNCk6IGxvY2FsZSwgbnVt
YmVyaW5nU3lzdGVtLCBzdHlsZSwgY3VycmVuY3ksIGN1cnJlbmN5RGlzcGxheSwgbWluaW11bUlu
dGVnZXJEaWdpdHMsIG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgbWF4aW11bUZyYWN0aW9uRGlnaXRz
LCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIG1heGltdW1TaWduaWZpY2FudERpZ2l0cywgYW5k
IHVzZUdyb3VwaW5nLiBQcm9wZXJ0aWVzIHdob3NlIGNvcnJlc3BvbmRpbmcgaW50ZXJuYWwgc2xv
dHMgYXJlIG5vdCBwcmVzZW50IGFyZSBub3QgYXNzaWduZWQuCisKKyAgICBKU09iamVjdCogb3B0
aW9ucyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworCisgICAgLy8gRklYTUU6IFBvcHVs
YXRlIG9iamVjdCBmcm9tIGludGVybmFsIHNsb3RzLgorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShvcHRpb25zKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OGJjMDUxZmRkYjg4NTJhOWE5
NWY5ZjE3ZDk4YWU4Y2I3ODUyMTE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3Jh
ZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZV9oCisjZGVmaW5lIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVfaAorCisjaWYgRU5BQkxF
KElOVEwpCisKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGUgOiBwdWJsaWMgSW50bE51bWJlckZvcm1hdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRs
TnVtYmVyRm9ybWF0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7
CisKKyAgICBzdGF0aWMgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9J
TkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFN0cnVjdHVy
ZSopOworCitwcml2YXRlOgorICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUoVk0mLCBTdHJ1
Y3R1cmUqKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKworI2VuZGlmIC8vIEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
T2JqZWN0LmNwcAppbmRleCAxMmRhOTM4ZmE4MTNhZTMxZjM3NTZkYjA0ZGYwN2ZiYjA5OTJkZDBj
Li5iYTQ1N2U3MjU2MDkxMDc4OTEyMmY1MTM3NWVlOWZkYzEwMjRkMzJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcApAQCAtMjgsNiArMjgsMTYgQEAK
IAogI2lmIEVOQUJMRShJTlRMKQogCisjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNp
bmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
ci5oIgorI2luY2x1ZGUgIkludGxDb2xsYXRvclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxE
YXRlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
LmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCisjaW5jbHVkZSAi
SW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ci5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCIKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90
eXBlLmgiCkBAIC00OCwxNyArNTgsNDMgQEAgSW50bE9iamVjdDo6SW50bE9iamVjdChWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCi1JbnRsT2JqZWN0KiBJbnRsT2JqZWN0Ojpj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK0ludGxPYmplY3QqIEludGxPYmpl
Y3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogewogICAgIEludGxPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEludGxPYmplY3Q+KHZtLmhlYXApKSBJbnRsT2JqZWN0KHZtLCBzdHJ1Y3R1
cmUpOwotICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIG9iamVjdC0+ZmluaXNo
Q3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIAotdm9p
ZCBJbnRsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit2b2lkIEludGxPYmplY3Q6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkp
OworCisgICAgLy8gU2V0IHVwIENvbGxhdG9yLgorICAgIEludGxDb2xsYXRvclByb3RvdHlwZSog
Y29sbGF0b3JQcm90b3R5cGUgPSBJbnRsQ29sbGF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBJbnRsQ29sbGF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgU3RydWN0
dXJlKiBjb2xsYXRvclN0cnVjdHVyZSA9IEludGxDb2xsYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZt
LCBnbG9iYWxPYmplY3QsIGNvbGxhdG9yUHJvdG90eXBlKTsKKyAgICBJbnRsQ29sbGF0b3JDb25z
dHJ1Y3RvciogY29sbGF0b3JDb25zdHJ1Y3RvciA9IEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpj
cmVhdGUodm0sIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwgY29sbGF0b3JQ
cm90b3R5cGUsIGNvbGxhdG9yU3RydWN0dXJlKTsKKworICAgIGNvbGxhdG9yUHJvdG90eXBlLT5w
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIGNvbGxhdG9yQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKworICAgIC8vIFNldCB1cCBOdW1i
ZXJGb3JtYXQuCisgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogbnVtYmVyRm9ybWF0UHJv
dG90eXBlID0gSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgU3RydWN0dXJl
KiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUgPSBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIGdsb2JhbE9iamVjdCwgbnVtYmVyRm9ybWF0UHJvdG90eXBlKTsKKyAgICBJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IqIG51bWJlckZvcm1hdENvbnN0cnVjdG9yID0gSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rp
b25Qcm90b3R5cGUoKSksIG51bWJlckZvcm1hdFByb3RvdHlwZSwgbnVtYmVyRm9ybWF0U3RydWN0
dXJlKTsKKworICAgIG51bWJlckZvcm1hdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBudW1iZXJGb3JtYXRDb25z
dHJ1Y3RvciwgRG9udEVudW0pOworCisgICAgLy8gU2V0IHVwIERhdGVUaW1lRm9ybWF0LgorICAg
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUgPSBJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgU3RydWN0dXJlKiBkYXRl
VGltZUZvcm1hdFN0cnVjdHVyZSA9IEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlU3RydWN0dXJl
KHZtLCBnbG9iYWxPYmplY3QsIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlKTsKKyAgICBJbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciA9IEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5mdW5jdGlvblByb3RvdHlwZSgpKSwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIGRhdGVUaW1l
Rm9ybWF0U3RydWN0dXJlKTsKKworICAgIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlLT5wdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGRh
dGVUaW1lRm9ybWF0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKKworICAgIC8vIDguMSBQcm9wZXJ0
aWVzIG9mIHRoZSBJbnRsIE9iamVjdCAoRUNNQS00MDIgMi4wKQorICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5Db2xsYXRvciwgY29sbGF0b3JDb25z
dHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5OdW1iZXJGb3JtYXQsIG51bWJlckZvcm1hdENvbnN0cnVjdG9yLCBE
b250RW51bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPkRhdGVUaW1lRm9ybWF0LCBkYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLCBEb250RW51
bSk7CiB9CiAKIFN0cnVjdHVyZSogSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKaW5kZXggZjQ1YjlhYjY0OTAyMjhl
ZGVhNTdhYjJlMGJlOWMwYjVhODllMmZjMC4uODM0Mjg1NDJiMmQwZmJjN2U1YjE0NGEzNmJjYmI4
NmVkZmNiYmU4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3Qu
aApAQCAtMzIsMTggKzMyLDI1IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBJbnRsQ29s
bGF0b3JDb25zdHJ1Y3RvcjsKK2NsYXNzIEludGxDb2xsYXRvclByb3RvdHlwZTsKK2NsYXNzIElu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOworY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlOworY2xhc3MgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOworY2xhc3MgSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZTsKKwogY2xhc3MgSW50bE9iamVjdCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsK
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIAotICAgIHN0YXRpYyBJbnRs
T2JqZWN0KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgSW50bE9iamVjdCog
Y3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwog
CiAgICAgREVDTEFSRV9JTkZPOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwog
CiBwcml2YXRlOgogICAgIEludGxPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBmM2M4Zjg2
MGNlY2E4YmU5NmM5ZjhiZmE3ZmQ2OTU1NzMwZWZjMjYwLi5lMTQ4MjM0NmZiOTA0NDE3MjI1NThj
NjgwYjBiNmQxODhjZjE3ZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC00NDcsNyArNDQ3LDcgQEAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBD
b25zdHJ1Y3QKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+ZXZhbCwgbV9ldmFsRnVuY3Rpb24uZ2V0KCksIERvbnRFbnVtKTsKICAgICAKICNpZiBF
TkFCTEUoSU5UTCkKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+SW50bCwgSW50bE9iamVjdDo6Y3JlYXRlKHZtLCBJbnRsT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+SW50
bCwgSW50bE9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBJbnRsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKICNlbmRp
ZiAvLyBFTkFCTEUoSU5UTCkKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+SlNPTiwgSlNPTk9iamVjdDo6Y3JlYXRlKHZtLCBKU09OT2JqZWN0Ojpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRF
bnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+TWF0aCwgTWF0aE9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBNYXRoT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKaW5kZXggZmU1NmJjMGIxYmZkNjBjNTFhMDU3ZTk1NTRkMTllZDQ4NzRmNGY0Mi4u
ZDIyMDkyYTdiOWQzYzNlMGZhYTU2ZDg4M2NjNGEwYTQ0ZDJmZjdjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIv
U291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAg
LTExNiw3ICsxMTYsNyBAQCBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8x
MDEwMDAgPSA7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDExMDAg
PSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogRU5BQkxFX1dJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VDsKIAotRU5BQkxFX0lOVEwgPSA7CitFTkFCTEVfSU5UTCA9IEVOQUJMRV9JTlRMOwogCiBFTkFC
TEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX0lPU19HRVNUVVJF
X0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxfU0RLKSk7CiBFTkFC
TEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMgPSBFTkFCTEVf
SU9TX0dFU1RVUkVfRVZFTlRTOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0L21hYy9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBmZTU2YmMwYjFiZmQ2MGM1
MWEwNTdlOTU1NGQxOWVkNDg3NGY0ZjQyLi5kMjIwOTJhN2I5ZDNjM2UwZmFhNTZkODgzY2M0YTBh
NDRkMmZmN2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMTE2LDcgKzExNiw3IEBAIEVOQUJMRV9X
SVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTAwMCA9IDsKIEVOQUJMRV9XSVJFTEVT
U19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTEwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQ7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEyMDAg
PSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogCi1FTkFCTEVfSU5UTCA9IDsKK0VO
QUJMRV9JTlRMID0gRU5BQkxFX0lOVEw7CiAKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNbc2Rr
PWlwaG9uZSpdID0gJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFM
X1NES18kKFVTRV9JTlRFUk5BTF9TREspKTsKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9z
X1dJVEhfSU5URVJOQUxfU0RLX1lFUyA9IEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZyBiL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCmluZGV4IGZlNTZiYzBiMWJmZDYwYzUxYTA1N2U5NTU0ZDE5ZWQ0ODc0ZjRmNDIuLmQyMjA5
MmE3YjlkM2MzZTBmYWE1NmQ4ODNjYzRhMGE0NGQyZmY3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0xMTYs
NyArMTE2LDcgQEAgRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMDAw
ID0gOwogRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMTAwID0gRU5B
QkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19U
QVJHRVRfbWFjb3N4XzEwMTIwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiAK
LUVOQUJMRV9JTlRMID0gOworRU5BQkxFX0lOVEwgPSBFTkFCTEVfSU5UTDsKIAogRU5BQkxFX0lP
U19HRVNUVVJFX0VWRU5UU1tzZGs9aXBob25lKl0gPSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVO
VFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFMX1NESykpOwogRU5BQkxFX0lP
U19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfWUVTID0gRU5BQkxFX0lPU19H
RVNUVVJFX0VWRU5UUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5j
bWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQppbmRleCA1MTQxMTUzNzU1
YWM0NTNmNDZjNDdkMzdkNDg0ZGI5Njc1NjdmMmI2Li5jNTNiNmI1ZmY1MjFkZDU1MTE4YTBiOTg5
ZGI5NzVmYjVhZWQyODc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMu
Y21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCkBAIC05OCw3ICs5
OCw3IEBAIG1hY3JvKFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJ
TkUoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEggIlRvZ2dsZSBtb250aCB0eXBlIDxpbnB1dD4gc3Vw
cG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lOUFVU
X1RZUEVfVElNRSAiVG9nZ2xlIHRpbWUgdHlwZSA8aW5wdXQ+IHN1cHBvcnQiIFBSSVZBVEUgT0ZG
KQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUsgIlRvZ2ds
ZSB3ZWVrIHR5cGUgPGlucHV0PiBzdXBwb3J0IiBQUklWQVRFIE9GRikKLSAgICBXRUJLSVRfT1BU
SU9OX0RFRklORShFTkFCTEVfSU5UTCAiVG9nZ2xlIEludGwgc3VwcG9ydCIgUFJJVkFURSBPRkYp
CisgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lOVEwgIlRvZ2dsZSBJbnRsIHN1cHBv
cnQiIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lPU19BSVJQ
TEFZICJUb2dnbGUgaU9TIGFpcnBsYXkgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lU
X09QVElPTl9ERUZJTkUoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcgIlRvZ2dsZSBpT1MgdGV4
dCBhdXRvc2l6aW5nIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVG
SU5FKEVOQUJMRV9KSVQgIkVuYWJsZSBKdXN0SW5UaW1lIGphdmFzY3JpcHQgc3VwcG9ydCIgUFJJ
VkFURSBPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA2NTNiZjJiZTYxYzVlM2JhMWVkZmM3NGNhYTM2YzYxYjY0ZjM2ZTM4Li42NDBmZjcwODhj
NmE4NjNmODMyMTZjOWIxMjYxMmVhN2U3ZjExZmMyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDctMTggIEFu
ZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUg
ZmxhZyBub3cgdGhhdCB0aGUgYmFzaWMgb2JqZWN0cyBhcmUgaW4gcGxhY2UuCisKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06IEVuYWJsZWQgSU5UTAorCiAyMDE1
LTA3LTE3ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBG
dXJ0aGVyIHRpZ2h0ZW4gdGhlIHNhbmRib3ggYXJvdW5kIHBhZ2VzIGZldGNoZWQgd2l0aCBDb250
ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVy
ZUxpc3QucG0KaW5kZXggMDg3ZTY4YzExYjBiNDcxMjM4YjdmYjg4MmVjNzQ5ZjE5ZmI3NGM3Ny4u
MGFmYzMyOWFiODU2ODU4NmY3ZmU3ZTY3MmY1MjE5Njk1ZDQzMWQ4ZSAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMjg2LDcgKzI4Niw3IEBAIG15IEBmZWF0dXJl
cyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyIsIGRlZmF1bHQg
PT4gMCwgdmFsdWUgPT4gXCRpbnB1dFR5cGVXZWVrU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24g
PT4gImludGwiLCBkZXNjID0+ICJUb2dnbGUgSW50bCBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9
PiAiRU5BQkxFX0lOVEwiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkaW50bFN1cHBvcnQgfSwK
KyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOVEwiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwk
aW50bFN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJsZWdhY3ktbm90aWZpY2F0aW9ucyIs
IGRlc2MgPT4gIlRvZ2dsZSBMZWdhY3kgTm90aWZpY2F0aW9ucyBzdXBwb3J0IiwKICAgICAgIGRl
ZmluZSA9PiAiRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TIiwgZGVmYXVsdCA9PiAwLCB2YWx1
ZSA9PiBcJGxlZ2FjeU5vdGlmaWNhdGlvbnNTdXBwb3J0IH0sCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGQ4NGVlZTQ4ZGRl
ZGNkYTA4NjgzZDYxNjhlOGNiMzk4MmFjYmMzMC4uMTAzNmY3NmYwODQzNmEzYTQ0NzkyMTI3ZmQ3
OWM4MmMwNmZjNGViMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTA3LTE4ICBBbmR5IFZh
bldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IGJhc2ljIHR5cGVzIGZvciBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2OTI2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0
YXRpb25zOiBFbmFibGVkIGludGwgdGVzdHMuCisgICAgICAgICoganMvaW50bC1leHBlY3RlZC50
eHQ6IFVwZGF0ZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2ludGwuanM6IEFkZGVkIHRl
c3RzIGZvciBDb2xsYXRvciwgTnVtYmVyRm9ybWF0LCBhbmQgRGF0ZVRpbWVGb3JtYXQuCisKIDIw
MTUtMDctMTggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OIChyMTg2OTA1LHIxODY5OTIpOiBJbmNvcnJlY3QgcmVzdWx0cyBmb3IgcGxhdGZv
cm0ve2d0ayxlZmwsd2lufS9mYXN0L3Nocmluay13cmFwL3JlY3Qtc2hyaW5rLXdyYXAtZXhwZWN0
ZWQudHh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhYzY4NmJmMjY2YjAzYmVhNzExOTFjODE1NWJl
MWE1ZWZmODEyMDQ2Li5iMTFmMjk1Y2UwZGE4MmQ4MGVhZDJhY2JlZjFhMjY0MmE1NjJlMDBhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTUyNiw2ICs1MjYsMyBAQCB3ZWJraXQub3JnL2IvMTQ2MTgy
IGVkaXRpbmcvc2VsZWN0aW9uL2xlYWstZG9jdW1lbnQtd2l0aC1zZWxlY3Rpb24taW5zaWRlLmh0
bWwgWwogCiB3ZWJraXQub3JnL2IvMTQ2NDM0IGZhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvc2l6
ZXMgWyBTa2lwIF0KIAotIyBJbnRsIGlzIG5vdCBlbmFibGVkIHlldAotanMvaW50bC5odG1sIFsg
U2tpcCBdCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2ludGwtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvanMvaW50bC1leHBlY3RlZC50eHQKaW5kZXggYjI2YWY4NjMzNjUxYjE0MGM4
ZjEwYjg5N2E5MDhmMGNhOGNhYTlkNi4uN2VhOGFlNTM1OTc4NjFlYTFkOTlhMTM4ZTc3YjY3YTQz
ZGY5OGRiOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvaW50bC1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvanMvaW50bC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1UaGlz
IHRlc3QgY2hlY2tzIHRoZSBiZWhhdmlvciBvZiB0aGUgSW50bCBvYmplY3QgYXMgZGVzY3JpYmVk
IGluIDggb2YgdGhlIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmlj
YXRpb24uCitUaGlzIHRlc3QgY2hlY2tzIHRoZSBiZWhhdmlvciBvZiB0aGUgSW50bCBvYmplY3Qg
YXMgZGVzY3JpYmVkIGluIHRoZSBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSSBT
cGVjaWZpY2F0aW9uIChFQ01BLTQwMiAyLjApLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CiAKQEAgLTExLDYgKzExLDU3IEBAIFBBU1MgbmV3IEludGwgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogT2JqZWN0IGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nCiBQQVNTIEludGwo
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBJbnRsIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4g
J0ludGwoKScsICdJbnRsJyBpcyBhbiBpbnN0YW5jZSBvZiBPYmplY3QpLgogUEFTUyBkZWxldGUg
SW50bDsgaXMgdHJ1ZQogUEFTUyAnSW50bCcgaW4gZ2xvYmFsKCkgaXMgZmFsc2UKK1BBU1MgSW50
bC5Db2xsYXRvciBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBJbnRsLkNvbGxhdG9y
KCkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5Db2xsYXRvcgorUEFTUyBJbnRsLkNvbGxhdG9yLmNh
bGwoe30pIGlzIGFuIGluc3RhbmNlIG9mIEludGwuQ29sbGF0b3IKK1BBU1MgbmV3IEludGwuQ29s
bGF0b3IoKSBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLkNvbGxhdG9yCitQQVNTIEludGwuQ29sbGF0
b3IubGVuZ3RoIGlzIDAKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRs
LkNvbGxhdG9yLCAncHJvdG90eXBlJykud3JpdGFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLCAncHJvdG90eXBlJykuZW51bWVy
YWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwu
Q29sbGF0b3IsICdwcm90b3R5cGUnKS5jb25maWd1cmFibGUgaXMgZmFsc2UKK1BBU1MgSW50bC5D
b2xsYXRvci5zdXBwb3J0ZWRMb2NhbGVzT2YubGVuZ3RoIGlzIDEKK1BBU1MgSW50bC5Db2xsYXRv
ci5zdXBwb3J0ZWRMb2NhbGVzT2YoKSBpcyBhbiBpbnN0YW5jZSBvZiBBcnJheQorUEFTUyBJbnRs
LkNvbGxhdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyBJbnRsLkNvbGxhdG9yCitQQVNTIElu
dGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24K
K1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLnByb3Rv
dHlwZSwgJ2NvbXBhcmUnKS5nZXQgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSwgJ2Nv
bXBhcmUnKS5zZXQgaXMgdW5kZWZpbmVkCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSW50bC5Db2xsYXRvci5wcm90b3R5cGUsICdjb21wYXJlJykuZW51bWVyYWJsZSBpcyBm
YWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3Iu
cHJvdG90eXBlLCAnY29tcGFyZScpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQQVNTIEludGwuQ29s
bGF0b3IucHJvdG90eXBlLmNvbXBhcmUubGVuZ3RoIGlzIDIKK1BBU1MgSW50bC5OdW1iZXJGb3Jt
YXQgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQoKSBp
cyBhbiBpbnN0YW5jZSBvZiBJbnRsLk51bWJlckZvcm1hdAorUEFTUyBJbnRsLk51bWJlckZvcm1h
dC5jYWxsKHt9KSBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLk51bWJlckZvcm1hdAorUEFTUyBuZXcg
SW50bC5OdW1iZXJGb3JtYXQoKSBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLk51bWJlckZvcm1hdAor
UEFTUyBJbnRsLk51bWJlckZvcm1hdC5sZW5ndGggaXMgMAorUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LCAncHJvdG90eXBlJykud3JpdGFibGUg
aXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJl
ckZvcm1hdCwgJ3Byb3RvdHlwZScpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdCwgJ3Byb3RvdHlwZScpLmNv
bmZpZ3VyYWJsZSBpcyBmYWxzZQorUEFTUyBJbnRsLk51bWJlckZvcm1hdC5zdXBwb3J0ZWRMb2Nh
bGVzT2YubGVuZ3RoIGlzIDEKK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxl
c09mKCkgaXMgYW4gaW5zdGFuY2Ugb2YgQXJyYXkKK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQucHJv
dG90eXBlLmNvbnN0cnVjdG9yIGlzIEludGwuTnVtYmVyRm9ybWF0CitQQVNTIEludGwuTnVtYmVy
Rm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5
cGUsICdmb3JtYXQnKS5nZXQgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUsICdm
b3JtYXQnKS5zZXQgaXMgdW5kZWZpbmVkCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykuZW51bWVyYWJsZSBp
cyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVy
Rm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQQVNTIElu
dGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQubGVuZ3RoIGlzIDEKK1BBU1MgSW50bC5E
YXRlVGltZUZvcm1hdCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBJbnRsLkRhdGVU
aW1lRm9ybWF0KCkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5EYXRlVGltZUZvcm1hdAorUEFTUyBJ
bnRsLkRhdGVUaW1lRm9ybWF0LmNhbGwoe30pIGlzIGFuIGluc3RhbmNlIG9mIEludGwuRGF0ZVRp
bWVGb3JtYXQKK1BBU1MgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKSBpcyBhbiBpbnN0YW5jZSBv
ZiBJbnRsLkRhdGVUaW1lRm9ybWF0CitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQubGVuZ3RoIGlz
IDAKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9y
bWF0LCAncHJvdG90eXBlJykud3JpdGFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LCAncHJvdG90eXBlJykuZW51bWVy
YWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwu
RGF0ZVRpbWVGb3JtYXQsICdwcm90b3R5cGUnKS5jb25maWd1cmFibGUgaXMgZmFsc2UKK1BBU1Mg
SW50bC5EYXRlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YubGVuZ3RoIGlzIDEKK1BBU1Mg
SW50bC5EYXRlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoKSBpcyBhbiBpbnN0YW5jZSBv
ZiBBcnJheQorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBp
cyBJbnRsLkRhdGVUaW1lRm9ybWF0CitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBl
LmZvcm1hdCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0Jyku
Z2V0IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5zZXQg
aXMgdW5kZWZpbmVkCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5E
YXRlVGltZUZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdC5w
cm90b3R5cGUsICdmb3JtYXQnKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBJbnRsLkRhdGVU
aW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQubGVuZ3RoIGlzIDEKIFBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL2ludGwuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50
bC5qcwppbmRleCA4YTRjZjU4NGUyZjA5Y2VjODdkNTVmOTMyMjY0NDNlZDcxODMyZTM5Li44YzZi
YmNjNTc5ODZiMzQzODBjNjc5ZmM3NDZiZjlhYTQ2ODQ2NDExIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvaW50bC5qcwpAQCAtMSwyMCArMSwyMCBAQAotLy8gVGhpcyBmZWF0dXJlIGlzbid0IGVu
YWJsZWQgeWV0LgotLy9AIHNraXAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRoZSBi
ZWhhdmlvciBvZiB0aGUgSW50bCBvYmplY3QgYXMgZGVzY3JpYmVkIGluIHRoZSBFQ01BU2NyaXB0
IEludGVybmF0aW9uYWxpemF0aW9uIEFQSSBTcGVjaWZpY2F0aW9uIChFQ01BLTQwMiAyLjApLiIp
OwogCi1kZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNoZWNrcyB0aGUgYmVoYXZpb3Igb2YgdGhlIElu
dGwgb2JqZWN0IGFzIGRlc2NyaWJlZCBpbiA4IG9mIHRoZSBFQ01BU2NyaXB0IEludGVybmF0aW9u
YWxpemF0aW9uIEFQSSBTcGVjaWZpY2F0aW9uLiIpOworLy8gOCBUaGUgSW50bCBPYmplY3QKIAot
Ly8gVGhlIEludGwgb2JqZWN0IGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4gb2JqZWN0IHRoYXQgaXMg
dGhlIGluaXRpYWwgdmFsdWUgb2YgdGhlIEludGwgcHJvcGVydHkgb2YgdGhlIGdsb2JhbCBvYmpl
Y3QuCisvLyBUaGUgSW50bCBvYmplY3QgaXMgYSBzaW5nbGUgb3JkaW5hcnkgb2JqZWN0Lgogc2hv
dWxkQmVUeXBlKCJJbnRsIiwgIk9iamVjdCIpOwogc2hvdWxkQmUoInR5cGVvZiBJbnRsIiwgIidv
YmplY3QnIik7CiBzaG91bGRCZSgiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEludGwp
IiwgIidbb2JqZWN0IE9iamVjdF0nIik7CiAKLS8vIFRoZSB2YWx1ZSBvZiB0aGUgW1tQcm90b3R5
cGVdXSBpbnRlcm5hbCBwcm9wZXJ0eSBvZiB0aGUgSW50bCBvYmplY3QgaXMgdGhlIGJ1aWx0LWlu
IE9iamVjdCBwcm90b3R5cGUgb2JqZWN0IHNwZWNpZmllZCBieSB0aGUgRUNNQVNjcmlwdCBMYW5n
dWFnZSBTcGVjaWZpY2F0aW9uLgorLy8gVGhlIHZhbHVlIG9mIHRoZSBbW1Byb3RvdHlwZV1dIGlu
dGVybmFsIHNsb3Qgb2YgdGhlIEludGwgb2JqZWN0IGlzIHRoZSBpbnRyaW5zaWMgb2JqZWN0ICVP
YmplY3RQcm90b3R5cGUlLgogc2hvdWxkQmVUcnVlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2YoSW50
bCkgPT09IE9iamVjdC5wcm90b3R5cGUiKTsKIAotLy8gVGhlIEludGwgb2JqZWN0IGRvZXMgbm90
IGhhdmUgYSBbW0NvbnN0cnVjdF1dIGludGVybmFsIHByb3BlcnR5OyBpdCBpcyBub3QgcG9zc2li
bGUgdG8gdXNlIHRoZSBJbnRsIG9iamVjdCBhcyBhIGNvbnN0cnVjdG9yIHdpdGggdGhlIG5ldyBv
cGVyYXRvci4KKy8vIFRoZSBJbnRsIG9iamVjdCBpcyBub3QgYSBmdW5jdGlvbiBvYmplY3QuCisv
LyBJdCBkb2VzIG5vdCBoYXZlIGEgW1tDb25zdHJ1Y3RdXSBpbnRlcm5hbCBtZXRob2Q7IGl0IGlz
IG5vdCBwb3NzaWJsZSB0byB1c2UgdGhlIEludGwgb2JqZWN0IGFzIGEgY29uc3RydWN0b3Igd2l0
aCB0aGUgbmV3IG9wZXJhdG9yLgogc2hvdWxkVGhyb3coIm5ldyBJbnRsIiwgIidUeXBlRXJyb3I6
IE9iamVjdCBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyBcXCduZXcgSW50bFxcJykn
Iik7CiAKLS8vIFRoZSBJbnRsIG9iamVjdCBkb2VzIG5vdCBoYXZlIGEgW1tDYWxsXV0gaW50ZXJu
YWwgcHJvcGVydHk7IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBpbnZva2UgdGhlIEludGwgb2JqZWN0
IGFzIGEgZnVuY3Rpb24uCisvLyBUaGUgSW50bCBvYmplY3QgZG9lcyBub3QgaGF2ZSBhIFtbQ2Fs
bF1dIGludGVybmFsIG1ldGhvZDsgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGludm9rZSB0aGUgSW50
bCBvYmplY3QgYXMgYSBmdW5jdGlvbi4KIHNob3VsZFRocm93KCJJbnRsKCkiLCAiJ1R5cGVFcnJv
cjogSW50bCBpcyBub3QgYSBmdW5jdGlvbi4gKEluIFxcJ0ludGwoKVxcJywgXFwnSW50bFxcJyBp
cyBhbiBpbnN0YW5jZSBvZiBPYmplY3QpJyIpOwogCiAvLyBpcyBkZWxldGFibGUsIGluZmVycmVk
IGZyb20gdXNlIG9mICJJbml0aWFsIiBpbiBzcGVjLCBjb25zaXN0ZW50IHdpdGggb3RoZXIgaW1w
bGVtZW50YXRpb25zCkBAIC0yNSwzICsyNSwxNjkgQEAgZnVuY3Rpb24gZ2xvYmFsKCkgeyByZXR1
cm4gdGhpczsgfQogc2hvdWxkQmVGYWxzZSgiJ0ludGwnIGluIGdsb2JhbCgpIik7CiAKIEludGwg
PSBfX0ludGw7CisKKworCisvLyAxMC4xIFRoZSBJbnRsLkNvbGxhdG9yIENvbnN0cnVjdG9yCisK
Ky8vIFRoZSBJbnRsLkNvbGxhdG9yIGNvbnN0cnVjdG9yIGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4g
cHJvcGVydHkgb2YgdGhlIEludGwgb2JqZWN0Lgorc2hvdWxkQmVUeXBlKCJJbnRsLkNvbGxhdG9y
IiwgIkZ1bmN0aW9uIik7CisKKy8vIDEwLjEuMiBJbnRsLkNvbGxhdG9yKFsgbG9jYWxlcyBbLCBv
cHRpb25zXV0pCitzaG91bGRCZVR5cGUoIkludGwuQ29sbGF0b3IoKSIsICJJbnRsLkNvbGxhdG9y
Iik7CitzaG91bGRCZVR5cGUoIkludGwuQ29sbGF0b3IuY2FsbCh7fSkiLCAiSW50bC5Db2xsYXRv
ciIpOworc2hvdWxkQmVUeXBlKCJuZXcgSW50bC5Db2xsYXRvcigpIiwgIkludGwuQ29sbGF0b3Ii
KTsKKworLy8gMTAuMiBQcm9wZXJ0aWVzIG9mIHRoZSBJbnRsLkNvbGxhdG9yIENvbnN0cnVjdG9y
CisKKy8vIGxlbmd0aCBwcm9wZXJ0eSAod2hvc2UgdmFsdWUgaXMgMCkKK3Nob3VsZEJlKCJJbnRs
LkNvbGxhdG9yLmxlbmd0aCIsICIwIik7CisKKy8vIDEwLjIuMSBJbnRsLkNvbGxhdG9yLnByb3Rv
dHlwZQorCisvLyBUaGlzIHByb3BlcnR5IGhhcyB0aGUgYXR0cmlidXRlcyB7IFtbV3JpdGFibGVd
XTogZmFsc2UsIFtbRW51bWVyYWJsZV1dOiBmYWxzZSwgW1tDb25maWd1cmFibGVdXTogZmFsc2Ug
fS4KK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5D
b2xsYXRvciwgJ3Byb3RvdHlwZScpLndyaXRhYmxlIik7CitzaG91bGRCZUZhbHNlKCJPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IsICdwcm90b3R5cGUnKS5lbnVt
ZXJhYmxlIik7CitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEludGwuQ29sbGF0b3IsICdwcm90b3R5cGUnKS5jb25maWd1cmFibGUiKTsKKworLy8gMTAuMi4y
IEludGwuQ29sbGF0b3Iuc3VwcG9ydGVkTG9jYWxlc09mIChsb2NhbGVzIFssIG9wdGlvbnMgXSkK
KworLy8gVGhlIHZhbHVlIG9mIHRoZSBsZW5ndGggcHJvcGVydHkgb2YgdGhlIHN1cHBvcnRlZExv
Y2FsZXNPZiBtZXRob2QgaXMgMS4KK3Nob3VsZEJlKCJJbnRsLkNvbGxhdG9yLnN1cHBvcnRlZExv
Y2FsZXNPZi5sZW5ndGgiLCAiMSIpOworCisvLyBSZXR1cm5zIFN1cHBvcnRlZExvY2FsZXMKK3No
b3VsZEJlVHlwZSgiSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRMb2NhbGVzT2YoKSIsICJBcnJheSIp
OworCisvLyAxMC4zIFByb3BlcnRpZXMgb2YgdGhlIEludGwuQ29sbGF0b3IgUHJvdG90eXBlIE9i
amVjdAorCisvLyBUaGUgdmFsdWUgb2YgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29uc3RydWN0
b3IgaXMgJUNvbGxhdG9yJS4KK3Nob3VsZEJlKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciIsICJJbnRsLkNvbGxhdG9yIik7CisKKy8vIDEwLjMuMyBJbnRsLkNvbGxhdG9yLnBy
b3RvdHlwZS5jb21wYXJlCisKKy8vIFRoaXMgbmFtZWQgYWNjZXNzb3IgcHJvcGVydHkgcmV0dXJu
cyBhIGZ1bmN0aW9uIHRoYXQgY29tcGFyZXMgdHdvIHN0cmluZ3MgYWNjb3JkaW5nIHRvIHRoZSBz
b3J0IG9yZGVyIG9mIHRoaXMgQ29sbGF0b3Igb2JqZWN0Lgorc2hvdWxkQmVUeXBlKCJJbnRsLkNv
bGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIiwgIkZ1bmN0aW9uIik7CisKKy8vIFRoZSB2YWx1ZSBv
ZiB0aGUgW1tHZXRdXSBhdHRyaWJ1dGUgaXMgYSBmdW5jdGlvbgorc2hvdWxkQmVUeXBlKCJPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IucHJvdG90eXBlLCAnY29t
cGFyZScpLmdldCIsICJGdW5jdGlvbiIpOworCisvLyBUaGUgdmFsdWUgb2YgdGhlIFtbU2V0XV0g
YXR0cmlidXRlIGlzIHVuZGVmaW5lZC4KK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEludGwuQ29sbGF0b3IucHJvdG90eXBlLCAnY29tcGFyZScpLnNldCIsICJ1bmRl
ZmluZWQiKTsKKworLy8gTWF0Y2ggRmlyZWZveCB3aGVyZSB1bnNwZWNpZmVkLgorc2hvdWxkQmVG
YWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLnByb3Rv
dHlwZSwgJ2NvbXBhcmUnKS5lbnVtZXJhYmxlIik7CitzaG91bGRCZVRydWUoIk9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvci5wcm90b3R5cGUsICdjb21wYXJlJyku
Y29uZmlndXJhYmxlIik7CisKKy8vIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVydHkg
aXMgMi4KK3Nob3VsZEJlKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlLmxlbmd0aCIs
ICIyIik7CisKKworCisvLyAxMS4xIFRoZSBJbnRsLk51bWJlckZvcm1hdCBDb25zdHJ1Y3Rvcgor
CisvLyBUaGUgSW50bC5OdW1iZXJGb3JtYXQgY29uc3RydWN0b3IgaXMgYSBzdGFuZGFyZCBidWls
dC1pbiBwcm9wZXJ0eSBvZiB0aGUgSW50bCBvYmplY3QuCitzaG91bGRCZVR5cGUoIkludGwuTnVt
YmVyRm9ybWF0IiwgIkZ1bmN0aW9uIik7CisKKy8vIDExLjEuMiBJbnRsLk51bWJlckZvcm1hdChb
IGxvY2FsZXMgWywgb3B0aW9uc11dKQorc2hvdWxkQmVUeXBlKCJJbnRsLk51bWJlckZvcm1hdCgp
IiwgIkludGwuTnVtYmVyRm9ybWF0Iik7CitzaG91bGRCZVR5cGUoIkludGwuTnVtYmVyRm9ybWF0
LmNhbGwoe30pIiwgIkludGwuTnVtYmVyRm9ybWF0Iik7CitzaG91bGRCZVR5cGUoIm5ldyBJbnRs
Lk51bWJlckZvcm1hdCgpIiwgIkludGwuTnVtYmVyRm9ybWF0Iik7CisKKy8vIDExLjIgUHJvcGVy
dGllcyBvZiB0aGUgSW50bC5OdW1iZXJGb3JtYXQgQ29uc3RydWN0b3IKKworLy8gbGVuZ3RoIHBy
b3BlcnR5ICh3aG9zZSB2YWx1ZSBpcyAwKQorc2hvdWxkQmUoIkludGwuTnVtYmVyRm9ybWF0Lmxl
bmd0aCIsICIwIik7CisKKy8vIDExLjIuMSBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUKKwor
Ly8gVGhpcyBwcm9wZXJ0eSBoYXMgdGhlIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IGZhbHNl
LCBbW0VudW1lcmFibGVdXTogZmFsc2UsIFtbQ29uZmlndXJhYmxlXV06IGZhbHNlIH0uCitzaG91
bGRCZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9y
bWF0LCAncHJvdG90eXBlJykud3JpdGFibGUiKTsKK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQsICdwcm90b3R5cGUnKS5lbnVt
ZXJhYmxlIik7CitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEludGwuTnVtYmVyRm9ybWF0LCAncHJvdG90eXBlJykuY29uZmlndXJhYmxlIik7CisKKy8vIDEx
LjIuMiBJbnRsLk51bWJlckZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YgKGxvY2FsZXMgWywgb3B0
aW9ucyBdKQorCisvLyBUaGUgdmFsdWUgb2YgdGhlIGxlbmd0aCBwcm9wZXJ0eSBvZiB0aGUgc3Vw
cG9ydGVkTG9jYWxlc09mIG1ldGhvZCBpcyAxLgorc2hvdWxkQmUoIkludGwuTnVtYmVyRm9ybWF0
LnN1cHBvcnRlZExvY2FsZXNPZi5sZW5ndGgiLCAiMSIpOworCisvLyBSZXR1cm5zIFN1cHBvcnRl
ZExvY2FsZXMKK3Nob3VsZEJlVHlwZSgiSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxl
c09mKCkiLCAiQXJyYXkiKTsKKworLy8gMTEuMyBQcm9wZXJ0aWVzIG9mIHRoZSBJbnRsLk51bWJl
ckZvcm1hdCBQcm90b3R5cGUgT2JqZWN0CisKKy8vIFRoZSB2YWx1ZSBvZiBJbnRsLk51bWJlckZv
cm1hdC5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgJU51bWJlckZvcm1hdCUuCitzaG91bGRCZSgi
SW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmNvbnN0cnVjdG9yIiwgIkludGwuTnVtYmVyRm9y
bWF0Iik7CisKKy8vIDExLjMuMyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0CisK
Ky8vIFRoaXMgbmFtZWQgYWNjZXNzb3IgcHJvcGVydHkgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQg
Zm9ybWF0cyBhIG51bWJlciBhY2NvcmRpbmcgdG8gdGhlIGVmZmVjdGl2ZSBsb2NhbGUgYW5kIHRo
ZSBmb3JtYXR0aW5nIG9wdGlvbnMgb2YgdGhpcyBOdW1iZXJGb3JtYXQgb2JqZWN0Lgorc2hvdWxk
QmVUeXBlKCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IiwgIkZ1bmN0aW9uIik7
CisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUgW1tHZXRdXSBhdHRyaWJ1dGUgaXMgYSBmdW5jdGlvbgor
c2hvdWxkQmVUeXBlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVy
Rm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmdldCIsICJGdW5jdGlvbiIpOworCisvLyBUaGUg
dmFsdWUgb2YgdGhlIFtbU2V0XV0gYXR0cmlidXRlIGlzIHVuZGVmaW5lZC4KK3Nob3VsZEJlKCJP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlw
ZSwgJ2Zvcm1hdCcpLnNldCIsICJ1bmRlZmluZWQiKTsKKworLy8gTWF0Y2ggRmlyZWZveCB3aGVy
ZSB1bnNwZWNpZmVkLgorc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5lbnVtZXJhYmxlIik7
CitzaG91bGRCZVRydWUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1i
ZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykuY29uZmlndXJhYmxlIik7CisKKy8vIFRoZSB2
YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVydHkgaXMgMS4KK3Nob3VsZEJlKCJJbnRsLk51bWJl
ckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0Lmxlbmd0aCIsICIxIik7CisKKworCisvLyAxMi4xIFRo
ZSBJbnRsLkRhdGVUaW1lRm9ybWF0IENvbnN0cnVjdG9yCisKKy8vIFRoZSBJbnRsLkRhdGVUaW1l
Rm9ybWF0IGNvbnN0cnVjdG9yIGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4gcHJvcGVydHkgb2YgdGhl
IEludGwgb2JqZWN0Lgorc2hvdWxkQmVUeXBlKCJJbnRsLkRhdGVUaW1lRm9ybWF0IiwgIkZ1bmN0
aW9uIik7CisKKy8vIDEyLjEuMiBJbnRsLkRhdGVUaW1lRm9ybWF0KFsgbG9jYWxlcyBbLCBvcHRp
b25zXV0pCitzaG91bGRCZVR5cGUoIkludGwuRGF0ZVRpbWVGb3JtYXQoKSIsICJJbnRsLkRhdGVU
aW1lRm9ybWF0Iik7CitzaG91bGRCZVR5cGUoIkludGwuRGF0ZVRpbWVGb3JtYXQuY2FsbCh7fSki
LCAiSW50bC5EYXRlVGltZUZvcm1hdCIpOworc2hvdWxkQmVUeXBlKCJuZXcgSW50bC5EYXRlVGlt
ZUZvcm1hdCgpIiwgIkludGwuRGF0ZVRpbWVGb3JtYXQiKTsKKworLy8gMTIuMiBQcm9wZXJ0aWVz
IG9mIHRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IENvbnN0cnVjdG9yCisKKy8vIGxlbmd0aCBwcm9w
ZXJ0eSAod2hvc2UgdmFsdWUgaXMgMCkKK3Nob3VsZEJlKCJJbnRsLkRhdGVUaW1lRm9ybWF0Lmxl
bmd0aCIsICIwIik7CisKKy8vIDEyLjIuMSBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZQor
CisvLyBUaGlzIHByb3BlcnR5IGhhcyB0aGUgYXR0cmlidXRlcyB7IFtbV3JpdGFibGVdXTogZmFs
c2UsIFtbRW51bWVyYWJsZV1dOiBmYWxzZSwgW1tDb25maWd1cmFibGVdXTogZmFsc2UgfS4KK3No
b3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGlt
ZUZvcm1hdCwgJ3Byb3RvdHlwZScpLndyaXRhYmxlIik7CitzaG91bGRCZUZhbHNlKCJPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQsICdwcm90b3R5cGUn
KS5lbnVtZXJhYmxlIik7CitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQsICdwcm90b3R5cGUnKS5jb25maWd1cmFibGUiKTsK
KworLy8gMTIuMi4yIEludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mIChsb2Nh
bGVzIFssIG9wdGlvbnMgXSkKKworLy8gVGhlIHZhbHVlIG9mIHRoZSBsZW5ndGggcHJvcGVydHkg
b2YgdGhlIHN1cHBvcnRlZExvY2FsZXNPZiBtZXRob2QgaXMgMS4KK3Nob3VsZEJlKCJJbnRsLkRh
dGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZi5sZW5ndGgiLCAiMSIpOworCisvLyBSZXR1
cm5zIFN1cHBvcnRlZExvY2FsZXMKK3Nob3VsZEJlVHlwZSgiSW50bC5EYXRlVGltZUZvcm1hdC5z
dXBwb3J0ZWRMb2NhbGVzT2YoKSIsICJBcnJheSIpOworCisvLyAxMi4zIFByb3BlcnRpZXMgb2Yg
dGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgUHJvdG90eXBlIE9iamVjdAorCisvLyBUaGUgdmFsdWUg
b2YgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgJURhdGVUaW1l
Rm9ybWF0JS4KK3Nob3VsZEJlKCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5jb25zdHJ1
Y3RvciIsICJJbnRsLkRhdGVUaW1lRm9ybWF0Iik7CisKKy8vIDEyLjMuMyBJbnRsLkRhdGVUaW1l
Rm9ybWF0LnByb3RvdHlwZS5mb3JtYXQKKworLy8gVGhpcyBuYW1lZCBhY2Nlc3NvciBwcm9wZXJ0
eSByZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBmb3JtYXRzIGEgZGF0ZSBhY2NvcmRpbmcgdG8gdGhl
IGVmZmVjdGl2ZSBsb2NhbGUgYW5kIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgb2YgdGhpcyBEYXRl
VGltZUZvcm1hdCBvYmplY3QuCitzaG91bGRCZVR5cGUoIkludGwuRGF0ZVRpbWVGb3JtYXQucHJv
dG90eXBlLmZvcm1hdCIsICJGdW5jdGlvbiIpOworCisvLyBUaGUgdmFsdWUgb2YgdGhlIFtbR2V0
XV0gYXR0cmlidXRlIGlzIGEgZnVuY3Rpb24KK3Nob3VsZEJlVHlwZSgiT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcp
LmdldCIsICJGdW5jdGlvbiIpOworCisvLyBUaGUgdmFsdWUgb2YgdGhlIFtbU2V0XV0gYXR0cmli
dXRlIGlzIHVuZGVmaW5lZC4KK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0Jykuc2V0IiwgInVuZGVm
aW5lZCIpOworCisvLyBNYXRjaCBGaXJlZm94IHdoZXJlIHVuc3BlY2lmZWQuCitzaG91bGRCZUZh
bHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQu
cHJvdG90eXBlLCAnZm9ybWF0JykuZW51bWVyYWJsZSIpOworc2hvdWxkQmVUcnVlKCJPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLCAn
Zm9ybWF0JykuY29uZmlndXJhYmxlIik7CisKKy8vIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGgg
cHJvcGVydHkgaXMgMS4KK3Nob3VsZEJlKCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5m
b3JtYXQubGVuZ3RoIiwgIjEiKTsKKwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9n
CmluZGV4IGFjMzZhMWI2MzgzYTUyOGQwZDc1N2Y4YTk3ZjE3MWEyZDhmZjRmYzguLjUxNjk1M2I5
NmIyYWY0NzM3ZDZlMjk5NmI3MmQ4ZjNiYzQ2NTVjZDkgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZwor
KysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0wNy0xOCAgQW5keSBWYW5XYWdv
bmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNp
YyB0eXBlcyBmb3IgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjkyNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBmbGFnIG5vdyB0
aGF0IHRoZSBiYXNpYyBvYmplY3RzIGFyZSBpbiBwbGFjZS4KKworICAgICAgICAqIFNvdXJjZS9j
bWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZTogZW5hYmxlIElOVEwKKwogMjAxNS0wNy0xNyAgVGlu
Zy1XZWkgTGFuICA8bGFudHc0NEBnbWFpbC5jb20+CiAKICAgICAgICAgQnJpbmcgYmFjayB0aGUg
R05VIGFyIGNoZWNrIHRvIGNyZWF0ZSB0aGluIGFyY2hpdmVzIG9uIG5vbi1MaW51eCBzeXN0ZW1z
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257436</attachid>
            <date>2015-07-23 22:35:19 -0700</date>
            <delta_ts>2015-07-24 13:58:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146926-20150723233402.patch</filename>
            <type>text/plain</type>
            <size>149587</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3MjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZmY2YzFkZGMxZjhkZmUyMDJmNGRmYzcxMjFjMTk0M2Y3OTBhZTQ2Li42NTg0MmY3MjUzYjhjYTdh
OTJmOWYwZjYxMDI0ZWY5NGE1NWE4NGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDQgQEAKKzIwMTUtMDctMjMgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVy
QGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3Jp
cHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRzIGJhc2ljIHR5cGVzIGZvciBFQ01BLTQwMiAybmQgZWRp
dGlvbiwgYnV0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZnVsbCBsb2NhbGUtYXdhcmUgZmVhdHVy
ZXMgeWV0LgorICAgICAgICBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS00
MDIvMi4wL0VDTUEtNDAyLnBkZgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIG5l
dyBJbnRsIGZpbGVzLgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnOiBFbmFibGUgSU5UTC4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBBZGRl
ZCBJbnRsIGZpbGVzLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IEFkZGVkIEludGwgZmlsZXMuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOiBBZGRlZCBJbnRsIGZpbGVzLgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOiBB
ZGRlZCBJbnRsIGZpbGVzLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDog
QWRkZWQgQ29sbGF0b3IsIE51bWJlckZvcm1hdCwgYW5kIERhdGVUaW1lRm9ybWF0LgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDogTWFkZSBEYXRlLm5vdyBwdWJsaWMuCisg
ICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaDogTWFkZSBEYXRlLm5vdyBwdWJsaWMu
CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SW50bENvbGxhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6SW50bENvbGxhdG9y
KToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChKU0M6OkludGxDb2xsYXRvcjo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRv
cjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6c2V0Qm91bmRD
b21wYXJlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yRnVuY0NvbXBhcmUpOiBBZGRlZCBw
bGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiB1c2luZyBjb2RlUG9pbnRDb21wYXJlLgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3I6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpib3VuZENv
bXBhcmUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6SW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJbnRsQ29sbGF0b3IpOiBBZGRlZCBDb2xs
YXRvciBjb25zdHJ1Y3RvciAoMTAuMS4yKS4KKyAgICAgICAgKEpTQzo6Y2FsbEludGxDb2xsYXRv
cik6IEFkZGVkIENvbGxhdG9yIGNvbnN0cnVjdG9yICgxMC4xLjIpLgorICAgICAgICAoSlNDOjpJ
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChKU0M6
OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6Oklu
dGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlND
OjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YpOiBBZGRlZCBw
bGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcgW10uCisgICAgICAgIChKU0M6Oklu
dGxDb2xsYXRvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1l
L0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3JDb25zdHJ1Y3Rvcjo6Y29sbGF0b3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxDb2xs
YXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5
cGU6OkludGxDb2xsYXRvclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvclBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90
b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvclBy
b3RvdHlwZUdldHRlckNvbXBhcmUpOiBBZGRlZCBjb21wYXJlIGdldHRlciAoMTAuMy4zKQorICAg
ICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKTogQWRk
ZWQgcGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIHt9LgorICAgICAgICAqIHJ1
bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxEYXRlVGlt
ZUZvcm1hdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0OjpjcmVh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OkludGxEYXRl
VGltZUZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRlc3Ryb3kpOgorICAg
ICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNldEJvdW5kRm9ybWF0KToKKyAgICAgICAgKEpTQzo6
SW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lKTogQWRkZWQgcGxhY2Vob2xkZXIg
aW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIG5ldyBEYXRlKHZhbHVlKS50b1N0cmluZygpLgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Lmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bERh
dGVUaW1lRm9ybWF0Ojpib3VuZEZvcm1hdCk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdCk6IEFkZGVk
IERhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yICgxMi4xLjIpLgorICAgICAgICAoSlNDOjpjYWxs
SW50bERhdGVUaW1lRm9ybWF0KTogQWRkZWQgRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgKDEy
LjEuMikuCisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpnZXRD
b25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6IEFkZGVkIHBsYWNlaG9sZGVy
IGltcGxlbWVudGF0aW9uIHJldHVybmluZyBbXS4KKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6SW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KTogQWRkZWQgZm9ybWF0IGdldHRlciAoMTIuMy4zKS4K
KyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0
aW9ucyk6IEFkZGVkIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyB7fS4KKyAg
ICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZv
cm1hdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6
SW50bE51bWJlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6ZGVzdHJveSk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzZXRCb3VuZEZvcm1hdCk6CisgICAgICAgIChKU0M6Oklu
dGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyKTogQWRkZWQgcGxhY2Vob2xkZXIgaW1wbGVt
ZW50YXRpb24gcmV0dXJuaW5nIE51bWJlcih2YWx1ZSkudG9TdHJpbmcoKS4KKyAgICAgICAgKiBy
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXQ6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6
Ym91bmRGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3I6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KTogQWRkZWQgTnVtYmVyRm9ybWF0IGNvbnN0cnVjdG9yICgx
MS4xLjIpLgorICAgICAgICAoSlNDOjpjYWxsSW50bE51bWJlckZvcm1hdCk6IEFkZGVkIE51bWJl
ckZvcm1hdCBjb25zdHJ1Y3RvciAoMTEuMS4yKS4KKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6SW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6IEFk
ZGVkIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyBbXS4KKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpudW1iZXJGb3JtYXRTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlR2V0dGVyRm9ybWF0KTogQWRkZWQgZm9ybWF0IGdldHRlciAoMTEuMy4zKS4KKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOiBBZGRl
ZCBwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcge30uCisgICAgICAgICogcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRp
bWUvSW50bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKTogQWRkZWQgQ29sbGF0b3Is
IE51bWJlckZvcm1hdCwgYW5kIERhdGVUaW1lRm9ybWF0IHByb3BlcnRpZXMgKDguMSkuCisgICAg
ICAgIChKU0M6OkludGxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bE9iamVjdC5oOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0Ojpjb2xsYXRvckNvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6Y29sbGF0b3JQcm90b3R5cGUpOgorICAg
ICAgICAoSlNDOjpJbnRsT2JqZWN0Ojpjb2xsYXRvclN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkludGxPYmplY3Q6Om51bWJlckZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50
bE9iamVjdDo6bnVtYmVyRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVj
dDo6bnVtYmVyRm9ybWF0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6ZGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmRhdGVU
aW1lRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6ZGF0ZVRpbWVG
b3JtYXRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisKIDIwMTUtMDctMjMgIFN1a29s
c2FrIFNha3NodXdvbmcgIDxzdWtvbHNha0BnbWFpbC5jb20+CiAKICAgICAgICAgSW1wbGVtZW50
IFdlYkFzc2VtYmx5IG1vZHVsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZTgxZjk0M2U0YzJlZjE1YTAxYzMx
ZTRhZmIzNDExYWRmZThmMjg5Li4yYzZlNGI4OTU1Zjk0OTEzZjEyYWRkYTI5MjhkZTY5NTE4MTVm
NjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDctMjMgIEFuZHkgVmFuV2Fn
b25lciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFz
aWMgdHlwZXMgZm9yIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25z
L0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOiBFbmFibGVkIElOVEwuCisKIDIwMTUtMDctMjEgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgTm90aWZ5IHRoZSBVSSBk
ZWxlZ2F0ZSB3aGVuIGEgTWVkaWFEb2N1bWVudCdzIG5hdHVyYWwgc2l6ZSBjaGFuZ2VzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKaW5kZXggNjc1MjMyZTdjNmU1NWIwODE2MjA5ZDI0MDc4M2RhZDliZjFmNTg3NC4u
Y2M2ZjRmODA3MTEzYjBiNmM0OWEyMzY4NDlhYzQ0NGI1MTMwZWJiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTA3LTIzICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxl
Y3JhZnRlckBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHR5cGVzIGZvciBF
Q01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2OTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZzogRW5hYmxlZCBJTlRMLgorCiAyMDE1LTA3LTIyICBTdWtvbHNhayBTYWtzaHV3
b25nICA8c3Vrb2xzYWtAZ21haWwuY29tPgogCiAgICAgICAgIEFkZCBFTkFCTEVfV0VCQVNTRU1C
TFkgZmVhdHVyZSBmbGFnIGZvciBXZWJBc3NlbWJseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGY2ZWU0ZTY5NjY0
ZTE1MjEyOTU0ZTdjMDUzNmUwM2MyYjRmNTQ1NzQuLmQxNGU1NjU1MjY2YTZlNWVlN2Y4ZWEyODRm
YTk1NjNmNDZmNTE4YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wNy0yMyAg
QW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIElt
cGxlbWVudCBiYXNpYyB0eXBlcyBmb3IgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBB
UEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Njky
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6IEVuYWJsZWQgSU5UTC4KKwogMjAx
NS0wNy0yMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBOb3Rp
ZnkgdGhlIFVJIGRlbGVnYXRlIHdoZW4gYSBNZWRpYURvY3VtZW50J3MgbmF0dXJhbCBzaXplIGNo
YW5nZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmMzI5NWU1Zjg1YzQw
NjhiZjFlMGFiZDFkY2UxOTZkNGJkMzUzYmQ3Li4zNTU5MTRiYzY0N2ZkZDYyOWI4ZjU5MWEzZWRj
OTA2ODExMmNiMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00Nzcs
NiArNDc3LDE1IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50
aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCiAgICAgcnVudGltZS9JbnRlbmRlZFN0cnVjdHVy
ZUNoYWluLmNwcAogICAgIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKKyAgICBydW50aW1l
L0ludGxDb2xsYXRvci5jcHAKKyAgICBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNw
cAorICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0LmNwcAorICAgIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IuY3BwCisgICAgcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisg
ICAgcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorICAgIHJ1bnRpbWUvSW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5jcHAKICAgICBydW50aW1lL0ludGxPYmplY3QuY3BwCiAgICAgcnVudGltZS9JdGVyYXRvck9w
ZXJhdGlvbnMuY3BwCiAgICAgcnVudGltZS9JdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTYyMSw2
ICs2MzAsMTIgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9GSUxFUwogICAgIHJ1bnRpbWUvRGF0
ZUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKICAgICBydW50
aW1lL0Vycm9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0
b3IuY3BwCisgICAgcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCisgICAgcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCiAg
ICAgcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCiAgICAgcnVudGltZS9KU09OT2JqZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCmluZGV4IDE5ZTczNzUyNjY1OTI5YWM3ZjM5YjA5NTRkOTk1MWU0OTE3ZDRhMzQuLjA1NjU0
ZWFjNmI1NTk5NDYyMGQ0ZDM1MDFjOGZmYjZiMTJkMTZjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKQEAgLTExNiw3ICsxMTYsNyBAQCBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
X21hY29zeF8xMDEwMDAgPSA7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29z
eF8xMDExMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogRU5BQkxFX1dJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVDsKIAotRU5BQkxFX0lOVEwgPSA7CitFTkFCTEVfSU5UTCA9IEVOQUJMRV9JTlRM
OwogCiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX0lP
U19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxfU0RL
KSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMg
PSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCA2NzdmNGNlZTY5MzU2MDQ1OWU4MDc4N2E2MDg2NTY4MjJhNWY0
NzVhLi5lNDY1Nzc3YTc5YmVkNTYzZDI2ODdmY2QyOGNmZDlhZGJiMzlkZjdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNDEsNiArNDEsMTIgQEAgYWxs
IDogXAogICAgIERhdGVDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgRGF0ZVByb3RvdHlwZS5sdXQu
aCBcCiAgICAgRXJyb3JQcm90b3R5cGUubHV0LmggXAorICAgIEludGxDb2xsYXRvckNvbnN0cnVj
dG9yLmx1dC5oIFwKKyAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggXAorICAgIEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUubHV0LmggXAorICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBc
CisgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCBcCiAgICAgSlNEYXRhVmlld1By
b3RvdHlwZS5sdXQuaCBcCiAgICAgSlNPTk9iamVjdC5sdXQuaCBcCiAgICAgSlNHbG9iYWxPYmpl
Y3QubHV0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggOTUy
M2Q3MDI3MzI2NzcyZjUwZTk0MmFhYzk4MmI3NDY3N2JhNThjZi4uOWNlZDZkN2E3MGQ3MTM2M2Iw
MDk3ZjMyNzAwMjk4NDhmYzM5ODhlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qCkBAIC03MzEsNiArNzMxLDE1IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50ZXJuYWxGdW5jdGlvbi5jcHAiIC8+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvci5jcHAiIC8+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCIg
Lz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENvbGxhdG9yUHJvdG90
eXBlLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVU
aW1lRm9ybWF0LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIiAvPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0LmNwcCIgLz4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEludGxPYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxJdGVyYXRvck9wZXJhdGlvbnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxJdGVyYXRvclByb3RvdHlwZS5jcHAiIC8+CkBAIC0xNTM0LDYgKzE1NDMsMTUgQEAK
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50OEFycmF5LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50ZXJuYWxGdW5jdGlvbi5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3IuaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENvbGxh
dG9yUHJvdG90eXBlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXElu
dGxEYXRlVGltZUZvcm1hdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIgLz4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdC5oIiAvPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJ
bnRsT2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludHJp
bnNpYy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJdGVyYXRpb25T
dGF0dXMuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycwppbmRleCAyMWQ2N2MwNDYzZjUzNzc2MDM0ODNjZWU1OTM0MWM5NjFkZGFhYjc2Li40
M2Y0NDM0NmZhNDI5MDU3MmI0MjlhYmZjZThiMjA5ODQ4ODlmNjJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC02MjcsNiArNjI3LDMz
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVybmFsRnVuY3Rpb24u
Y3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3IuY3BwIj4KKyAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAiPgor
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvclByb3RvdHlwZS5jcHAiPgor
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdC5jcHAiPgorICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNw
cCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGls
ZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdC5j
cHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvci5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBp
bGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xD
b21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsT2JqZWN0LmNw
cCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAg
LTI2NzYsNiArMjcwMywzMyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJ
bnRlcm5hbEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xs
YXRvci5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRl
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3JDb25zdHJ1
Y3Rvci5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRl
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3JQcm90b3R5
cGUuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9ybWF0Lmgi
PgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0
LmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvci5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRl
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1
ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxPYmplY3QuaCI+CiAg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTFjMzFjNjczMDdkYWM1YjFhZDFmMDk2Njk1OWI5NTBl
OWQ4ZDJiOS4uODBiMzIzNGVlZTUxMTQwZGZiMTRlOWViY2M2NjhiYjlmZmYwYTEwZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNzQsMTMgKzExNzQsMzcgQEAKIAkJOUU3Mjk0
MEIxOTBGMDUxNDAwMUE5MUI1IC8qIEJ1bmRsZVBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlFNzI5NDBBMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5k
bGVQYXRoLmggKi87IH07CiAJCTlFQTVDN0ExMTkwRjA4NDIwMDUwOEVCRSAvKiBCdW5kbGVQYXRo
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUU3Mjk0
MDkxOTBGMDMwNjAwMUE5MUI1IC8qIEJ1bmRsZVBhdGgubW0gKi87IH07CiAJCTlFQTVDN0EyMTkw
RjA4ODcwMDUwOEVCRSAvKiBJbml0aWFsaXplTExWTU1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RUE1QzdBMDE5MEYwNUQyMDA1MDhFQkUgLyog
SW5pdGlhbGl6ZUxMVk1NYWMuY3BwICovOyB9OworCQlBMTI1ODQ2RTFCNDVBMzYwMDBDQzdGNkMg
LyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEyNTg0NkMxQjQ1QTM2MDAwQ0M3RjZDIC8qIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJQTEyNTg0NkYxQjQ1QTM2
MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTI1ODQ2RDFCNDVBMzYwMDBDQzdG
NkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCAqLzsgfTsKIAkJQTEyQkJGRjIx
QjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMkJCRkYxMUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2Jq
ZWN0LmggKi87IH07CiAJCUExMkJCRkY0MUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMkJCRkYz
MUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLzsgfTsKKwkJQTE1ODdENkQxQjRE
QzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q2NzFCNERDMTQxMDBENjk4NDkgLyog
SW50bERhdGVUaW1lRm9ybWF0LmNwcCAqLzsgfTsKKwkJQTE1ODdENkUxQjREQzE0MTAwRDY5ODQ5
IC8qIEludGxEYXRlVGltZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTE1ODdENjgxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZv
cm1hdC5oICovOyB9OworCQlBMTU4N0Q2RjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTE1ODdENjkxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJQTE1ODdENzAxQjREQzE0MTAwRDY5ODQ5IC8qIElu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q2QTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTE1ODdENzExQjREQzE0MTAwRDY5ODQ5
IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q2QjFCNERDMTQxMDBENjk4NDkgLyogSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJQTE1ODdENzIxQjREQzE0MTAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1ODdENkMxQjREQzE0MTAwRDY5ODQ5IC8q
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oICovOyB9OworCQlBMTU4N0Q3NTFCNERDMUM2
MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q3MzFCNERDMUM2MDBE
Njk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUEx
NTg3RDc2MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q3
NDFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oICov
OyB9OwogCQlBMTcxMkIzQjExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCM0ExMUM3QjIx
MjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCAqLzsgfTsKIAkJQTE3MTJCM0YxMUM3QjIyODAw
N0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTcxMkI0
MTExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhw
S2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QTE4MTkzRTMxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE4MTkzRTEx
QjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oICovOyB9Owor
CQlBMTgxOTNFNDFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE4MTkzRTIx
QjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCAqLzsgfTsKIAkJ
QTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NDA5MjNDMTU2RUVEM0Iw
MDU2NkNCMiAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFS
TTY0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NjQwOTIzQjE1NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRBc3NlbWJsZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBMUI5RTIzOTFCNEUw
RDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjlFMjMzMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29s
bGF0b3IuY3BwICovOyB9OworCQlBMUI5RTIzQTFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxh
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5
RTIzNDFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmggKi87IH07CisJCUExQjlFMjNC
MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5RTIzNTFCNEUwRDY3MDBC
QzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwICovOyB9OworCQlBMUI5RTIzQzFC
NEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjlFMjM2MUI0RTBENjcwMEJDN0ZF
RCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oICovOyB9OworCQlBMUI5RTIzRDFCNEUwRDY3
MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjlFMjM3MUI0RTBENjcwMEJDN0ZFRCAvKiBJ
bnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwICovOyB9OworCQlBMUI5RTIzRTFCNEUwRDY3MDBCQzdG
RUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5RTIzODFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxh
dG9yUHJvdG90eXBlLmggKi87IH07CisJCUExRDc5MkZDMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRs
TnVtYmVyRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExRDc5MkY2MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmNwcCAq
LzsgfTsKKwkJQTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkY3MUI0
Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmggKi87IH07CisJCUExRDc5MkZFMUI0
Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzkyRjgxQjQzODY0QjAw
NDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCUExRDc5
MkZGMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkY5MUI0Mzg2
NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTFE
NzkzMDAxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzkyRkExQjQz
ODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwICovOyB9OworCQlB
MUQ3OTMwMTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzkyRkIxQjQz
ODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCAqLzsgfTsKIAkJQTUw
M0ZBMTkxODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTMxODhFMEZBRjAw
MTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwogCQlBNTAzRkExQTE4OEUw
RkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEph
dmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUIxODhFMEZCMDAwMTEwRjE0IC8q
IEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lLmNwcCAqLzsgfTsKQEAgLTI5NTAsMTEgKzI5NzQsMzUgQEAKIAkJOUU3Mjk0MDkx
OTBGMDMwNjAwMUE5MUI1IC8qIEJ1bmRsZVBhdGgubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBCdW5kbGVQYXRoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5RTcyOTQwQTE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCdW5kbGVQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlFQTVDN0EwMTkwRjA1RDIwMDUwOEVCRSAvKiBJbml0aWFsaXplTExWTU1hYy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJbml0aWFsaXplTExWTU1h
Yy5jcHA7IHBhdGggPSBsbHZtL0luaXRpYWxpemVMTFZNTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTEyNTg0NkMxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBMTI1ODQ2RDFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEyQkJGRjEx
QjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW50bE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTJC
QkZGMzFCMDQ0QTk4MDA2NjRCNjkgLyogSW50bE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTE1ODdENjcxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3Jt
YXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4N0Q2ODFCNERDMTQxMDBE
Njk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEludGxEYXRlVGltZUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBMTU4N0Q2OTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4
N0Q2QTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE1ODdENkIxQjREQzE0MTAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4N0Q2QzFCNERDMTQxMDBENjk4NDkgLyog
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBMTU4N0Q3MzFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBMTU4N0Q3NDFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEy
QjNBMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBDYWNoZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEtleS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxh
dG9yQ29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBMTgxOTNFMjFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsQ29sbGF0b3JQcm90b3R5cGUu
bHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExQjlFMjMzMUI0RTBENjcwMEJD
N0ZFRCAvKiBJbnRsQ29sbGF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW50bENvbGxhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFC
OUUyMzQxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnRsQ29sbGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTFCOUUyMzUxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxDb2xsYXRvckNv
bnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFCOUUyMzYxQjRF
MEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUExQjlFMjM3MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0
b3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50
bENvbGxhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFC
OUUyMzgxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsQ29sbGF0b3JQcm90b3R5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFENzkyRjYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxO
dW1iZXJGb3JtYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50
bE51bWJlckZvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRDc5MkY3
MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
MUQ3OTJGOTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUQ3OTJGQTFCNDM4NjRCMDA0
NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFENzkyRkIxQjQzODY0QjAwNDUxNkY1IC8qIEludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNTAzRkExMzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0
IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSmF2YVNjcmlwdENhbGxGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NTAzRkExNTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjQ5LDYgKzQyOTcsMTIgQEAKIAkJ
CQlBNTMyNDM4NDE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVy
cy5oICovLAogCQkJCUE1MzI0Mzg1MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2Nv
bE9iamVjdHMuY3BwICovLAogCQkJCUE1MzI0Mzg2MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0
b3JQcm90b2NvbE9iamVjdHMuaCAqLywKKwkJCQlBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyog
SW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJQTE4MTkzRTIxQjRFMENEQjAw
RkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCAqLywKKwkJCQlBMTU4N0Q3MzFC
NERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8s
CisJCQkJQTE1ODdENzQxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5sdXQuaCAqLywKKwkJCQlBMTI1ODQ2QzFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUExMjU4NDZEMUI0NUEzNjAwMENDN0Y2
QyAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUE3RDgwMUE2MTg4
MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8sCiAJCQkJQTdEODAxQTcxODgwRDZB
ODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8sCiAJCQkJQkM4N0NEQjgxMDcxMkFDQTAwMDYx
NENGIC8qIEpTT05PYmplY3QubHV0LmggKi8sCkBAIC00NDg3LDYgKzQ1NDEsMjQgQEAKIAkJCQlB
Nzg4NTNGODE3OTcyNjI5MDAxNDQwRTQgLyogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oICovLAog
CQkJCUJDOUJCOTVCMEUxOTY4MDYwMERGODg1NSAvKiBJbnRlcm5hbEZ1bmN0aW9uLmNwcCAqLywK
IAkJCQlCQzExNjY3QTBFMTk5QzA1MDA4MDY2REQgLyogSW50ZXJuYWxGdW5jdGlvbi5oICovLAor
CQkJCUExQjlFMjMzMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuY3BwICovLAorCQkJ
CUExQjlFMjM0MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuaCAqLywKKwkJCQlBMUI5
RTIzNTFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwICovLAor
CQkJCUExQjlFMjM2MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5o
ICovLAorCQkJCUExQjlFMjM3MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5
cGUuY3BwICovLAorCQkJCUExQjlFMjM4MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQ
cm90b3R5cGUuaCAqLywKKwkJCQlBMTU4N0Q2NzFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVU
aW1lRm9ybWF0LmNwcCAqLywKKwkJCQlBMTU4N0Q2ODFCNERDMTQxMDBENjk4NDkgLyogSW50bERh
dGVUaW1lRm9ybWF0LmggKi8sCisJCQkJQTE1ODdENjkxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBMTU4N0Q2QTFCNERDMTQxMDBE
Njk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLywKKwkJCQlBMTU4N0Q2
QjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCAqLywK
KwkJCQlBMTU4N0Q2QzFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLmggKi8sCisJCQkJQTFENzkyRjYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3Jt
YXQuY3BwICovLAorCQkJCUExRDc5MkY3MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9y
bWF0LmggKi8sCisJCQkJQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQTFENzkyRjkxQjQzODY0QjAwNDUxNkY1IC8qIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUExRDc5MkZBMUI0Mzg2NEIwMDQ1
MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCAqLywKKwkJCQlBMUQ3OTJGQjFC
NDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oICovLAogCQkJCUEx
MkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLywKIAkJCQlBMTJCQkZG
MTFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9iamVjdC5oICovLAogCQkJCTg2QkY2NDJBMTQ4REIy
QjUwMDRERTM2QSAvKiBJbnRyaW5zaWMuaCAqLywKQEAgLTU2NjQsNiArNTczNiw3IEBACiAJCQkJ
MTQ3QjgzQUMwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyQTExMTI0NjE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0
dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNEY0QjZGNTFBMDVDOTg0MDA1Q0FCNzYg
LyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFk
ZXJzICovLAorCQkJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwMzIwMThCRkZCRTEwMDVBMDgx
MSAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQkNERTcxOEVGMjk0
MjAwMDAyMDk2IC8qIEdDTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU3QkE2MTAxQTFB
N0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5oIGluIEhlYWRlcnMgKi8sCkBAIC01NzEzLDYg
KzU3ODYsNyBAQAogCQkJCTBGMjRFNTQxMTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJseUhlbHBl
cnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3ODRBMjYxMTFEMTY2MjIwMDU3NzZBQyAvKiBBU1RC
dWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjY3MzlEMjEzQkZERTcxMDAyM0Q4N0MgLyog
QmlnSW50ZWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTEyNTg0NkUxQjQ1QTM2MDAwQ0M3RjZD
IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDM0VDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBCb29sZWFuT2JqZWN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTVEMkU2NjUxOTVFMTc0MDAwQTUxOEU3IC8qIEpTQ29udGV4dFJlZkludGVy
bmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTU3MjIsNiArNTc5Niw3IEBACiAJCQkJMEZCN0YzOTcx
NUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0Yz
OTgxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseUlubGluZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTYyRDJEMzkwMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBMUI5RTIzQTFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMkZDQUUxMTE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVC
YXNpY0Jsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIg
LyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3MjMwRUQx
Q0UzMzAwRjFGNjgxIC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTU4
MDEsMTEgKzU4NzYsMTMgQEAKIAkJCQlBNUVBNzBFODE5RjVCMTAxMDA5OEY1RUMgLyogQXVnbWVu
dGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0
RDkwMzE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTcwNEQ5MDQxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUI5RTIzQzFCNEUwRDY3MDBCQzdG
RUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIw
MTc3MTQzRkNEM0YwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkYwNTRGQTFBQzM1QjQ0MDBFNUJFNTcgLyogRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY2RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZHQWRq
YWNlbmN5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMTgxNkQwMkVCMjAwNTVBNURC
IC8qIERGR0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTczNzgxMEMxNzk5RUEyRTAw
ODE3NTMzIC8qIERGR0FuYWx5c2lzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUI5RTIzRTFCNEUw
RDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjFFM0E0NjE1MzRDQkFGMDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTVDM0ExQTYxOEMwNDkwMjAwQzk1OTNBIC8qIEpTR2xvYmFsT2JqZWN0
Q29uc29sZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMjIxODc3NTA1NjAwODNC
Njg3IC8qIERGR0FyaXRoTW9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC01ODY5LDYgKzU5NDYsNyBA
QAogCQkJCTg2RUM5RENDMTMyOERGODIwMDJCMkFENyAvKiBERkdKSVRDb21waWxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTc4QTk3NzkxNzk3MzhCODAwOURGNzQ0IC8qIERGR0pJVEZpbmFsaXpl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDOTdGNDAxODIwMjExOTAwMkM5QjI2IC8qIERGR0p1
bXBSZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTEyNTg0NkYxQjQ1QTM2MDAwQ0M3
RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzNBNTM1QjE3OTlDRDVEMDAxNzBDMTkgLyogREZHTGF6eUpTVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMkI5Q0U5MTlEMEJBN0QwMEIxRDFCNSAvKiBERkdPYmplY3RNYXRlcmlhbGl6
YXRpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q5QTI5ODE3QTBCQzc0MDBFRTI2MTgg
LyogREZHTElDTVBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTU5OTgsNiArNjA3Niw3IEBACiAJ
CQkJMEY2QjFDQjYxODVGQzlFOTAwODQ1RDk3IC8qIEZUTEpTQ2FsbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY4RjJCOTYxNzJFMDRBMzAwN0RCREE1IC8qIEZUTExpbmsuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQ0VGQUUwMTgwNzM4QzAwMDQ3MkNFNCAvKiBGVExMb2NhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTE1ODdENzAxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExMDE3MDUxM0RCMDBCQjcy
MkMgLyogRlRMTG93ZXJERkdUb0xMVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5RDAyMTdB
MEI5MDQwMDc3M0FEOCAvKiBGVExMb3dlcmVkTm9kZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkQ4QTMxQzE3RDUxRjIyMDBDQTJDNDAgLyogRlRMT1NSRW50cnkuaCBpbiBIZWFkZXJzICov
LApAQCAtNjA2Niw2ICs2MTQ1LDcgQEAKIAkJCQlDMjVGOEJDRTE1NzU0NEE5MDAyNDVCNzEgLyog
SW5jcmVtZW50YWxTd2VlcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5OTE1RUQ4RTQ2
MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlB
MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlcklubGluZXMuaCBpbiBIZWFkZXJzICov
LAorCQkJCUExNTg3RDc2MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QjE1RUQ4RTQ2MDBGMTY3QjIg
LyogSW5kZXhpbmdUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNFRkFCMDE4MDVDQTZEMDA0
NzJDRTQgLyogSW5pdGlhbGl6ZUxMVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0VGQUNDMTgw
NUU3NTUwMDQ3MkNFNCAvKiBJbml0aWFsaXplTExWTVBPU0lYLmggaW4gSGVhZGVycyAqLywKQEAg
LTYxMjAsNiArNjIwMCw3IEBACiAJCQkJMEZBRjdFRkUxNjVCQTkxRjAwMEM4NDU1IC8qIEpJVERp
c2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcy
IC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjE0RTFGMTgxMjRBQ0Uw
MDlCNkI0RCAvKiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTFENzkzMDExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTg2Q0M4NUExMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU0RDE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3Bl
cmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMzExNUFBODExMjAwOEYzNjNFIC8q
IEpJVFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKQEAgLTYyMjAsNiArNjMwMSw3IEBACiAJ
CQkJN0MxODRFMjMxN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3QzAwOENEQjE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVm
ZXJyZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMTg0RTFGMTdCRUUyMkUwMDdDQjYzQSAvKiBK
U1Byb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUExODE5M0U0MUI0RTBDREIw
MEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NjI1NTNEMjE2MTM2RTFBMDA5RjE3RDAgLyogSlNQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTkyOEZGM0MxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzQyNjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNSZXRhaW5QdHIuaCBpbiBI
ZWFkZXJzICovLApAQCAtNjIzMSw2ICs2MzEzLDcgQEAKIAkJCQlCQzE4QzQ1RTBFMTZGNUNEMDBC
MzQ0NjAgLyogSlNTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDMUVBRjAxNzk4N0FCNjAw
Mjk5REIyIC8qIEpTU3RhY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyNzBF
MTZGNUNEMDBCMzQ0NjAgLyogSlNTdHJpbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCUExNTg3RDc1
MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTg2RTg1NTM5MTExQjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1
aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2MDBCNUE3MTUyQkFBQTcwMDkxRUU1RiAvKiBK
U1N0cmluZ0pvaW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjgwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTU3RyaW5nUmVmLmggaW4gSGVhZGVycyAqLywKQEAgLTYzMzQsNiArNjQxNyw3IEBA
CiAJCQkJQkMwMkU5MTEwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDJFOTEzMEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVF
cnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDQzBCNjMxOEJFOTk1MDAwNkNF
QkNDIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkgaW4gSGVhZGVycyAqLywKKwkJCQlB
MTgxOTNFMzFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIyMDE2RDAzM0I3MDA1NUE1REIgLyogTm9kZUNvbnN0
cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5IC8q
IFRlbXBsYXRlUmVnaXN0cnlLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDNGMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBOb2Rlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC02NDU3LDYgKzY1NDEsNyBA
QAogCQkJCUE3Mjk5REE2MTdEMTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTc5MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyog
U2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUQ3OTJGRDFCNDM4NjRCMDA0NTE2
RjUgLyogSW50bE51bWJlckZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZBRTY0QUExMzVF
NUUxQzAwOTYzMDEyIC8qIFNINEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGOEJE
RUIxQUQ0Q0Y3MTAwREZFODg0IC8qIEluZmVycmVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMkI2NzA1MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC02NTMxLDYgKzY2MTYsNyBAQAogCQkJCTBGNUYwOENGMTQ2Qzc2
MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBN0I2MDE4MjE2MzlGRDJBMDAzNzJCQTMgLyogVW5saW5rZWRDb2RlQmxvY2suaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMkU4OTJDMTZEMDI4QUQwMDlFNEZEMiAvKiBVbnVzZWRQb2ludGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBMTU4N0Q2RTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVU
aW1lRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5QjIg
LyogVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQyNkE0ODE0NjBDQkIzMDAx
MzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5QzVFNUYxOEUz
NUY1RTAwRDQzMUMzIC8qIEZUTERXQVJGUmVnaXN0ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNjU1
OCw2ICs2NjQ0LDcgQEAKIAkJCQkyQTRFQzkwQzE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJy
aWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkI2RDc1MzE4QTMzNzkzMDA0QTkzMDEg
LyogV3JpdGVCYXJyaWVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDODE1MEExNDA0
M0JGNTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUExNTg3RDcyMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZBc3Nl
bWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTJBMTg3Q0E3NTkwMDg0M0IxMCAvKiB4
eGQucGwgaW4gSGVhZGVycyAqLywKIAkJCQkwRjNBMUJGQTFBOUVDQjdEMDAwREUwMUEgLyogREZH
UHV0U3RhY2tTaW5raW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNzE0MCw2ICs3MjI3LDcg
QEAKIAkJCQkwRkVBMEEzMTE3MEQ0MEJGMDBCQjcyMkMgLyogREZHQ29tbW9uRGF0YS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjM4QjAxNzE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRp
b25LZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzOEIwMTkxN0NGRTc1NTAwQjE0NEQzIC8q
IERGR0NvbXBpbGF0aW9uTW9kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUI5RTIzQjFCNEUw
RDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYzQjNBMUExNTNFNjhGMjAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjcyMTZDMURCMDMwMDgyQzVFOCAvKiBERkdD
UFNSZXRocmVhZGluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0Y1MTdBMEI4
Q0MwMDc3M0FEOCAvKiBERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtNzE4Miw2ICs3MjcwLDcgQEAKIAkJCQlBN0Q4OUNGQjE3QTBCOENDMDA3NzNBRDgg
LyogREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjBG
MTk5MTZCNzI5RjYwMDVERjk1QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNzY3QjVCNTE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9vcFByZUhlYWRlckNyZWF0
aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFCOUUyM0QxQjRFMEQ2NzAwQkM3RkVE
IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCREM0
RDE1MjI4MTg2MDBDRDg5MTAgLyogREZHTWluaWZpZWROb2RlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE3Mzc4MTBEMTc5OUVBMkUwMDgxNzUzMyAvKiBERkdOYXR1cmFsTG9vcHMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGMEYxOUMxNkI3MkEwMzAwNURGOTVCIC8qIERGR05vZGUuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC03MzQ1LDYgKzc0MzQsNyBAQAogCQkJCTJBRjczODJDMThCQkJGOTIw
MDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1RkQw
MDgxMTg5QjE5MUEwMDYzMzIzMSAvKiBJbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTU3RDIzRTUxODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTE1ODdENkYxQjREQzE0MTAwRDY5ODQ5IC8q
IEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
MzI0Mzg3MTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNzA5RkI4NjkxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRD
b25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTMyNDM4OTE4NTY4MzM1MDAyRUQ2
OTIgLyogSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTczNjgsNiArNzQ1OCw3IEBACiAJCQkJQkNERDUxRUIwRkI4REY3NDAwNEE4QkRDIC8qIEpJVE9w
Y29kZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcxMjM2RTUxMTk1RjMzQzAwQkQyMTc0IC8q
IEpJVE9wY29kZXMzMl82NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZFODQ1QTE5MDMwQkVG
MDA1NjI3NDEgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUExNTg3RDZEMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYyNEU1NEMxN0VFMjc0OTAwQUJCMjE3IC8qIEpJVE9wZXJhdGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZDQzg1QzQwRUU3QTg5NDAwMjg4NjgyIC8qIEpJVFBy
b3BlcnR5QWNjZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QzFFOEU0MTEyRTcyRUYwMEEz
N0Y5OCAvKiBKSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzQ5
NSw2ICs3NTg2LDcgQEAKIAkJCQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJ
bnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEI3MjNCMjEyRDdEQTQ2MDAzQkQ1
RUQgLyogTWFjaGluZVN0YWNrTWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUIzRUNG
MTYyMzdGNkMwMEFCNjdBRCAvKiBNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlBMUQ3OTMwMDFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9B
c3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcyOTAwOUMxNzk3NkM2MDAwMzE3
Mjk4IC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUzQ0Uw
ODUxOEJDMUE1NjAwQkVERjc2IC8qIENvbnNvbGVQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC03NTc0LDYgKzc2NjYsNyBAQAogCQkJCUE1QkExNUU5MTgyMzQwQjMwMEE4MkU2OSAvKiBS
ZW1vdGVJbnNwZWN0b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQkyQURGQTI2MzE4RUYzNTQwMDA0
RjlGQ0MgLyogR0NMb2dnaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTQ1NThGMTgyNDVF
RkQwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUExRDc5MkZFMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1RUMxODIzNDBCNDAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjI0RTU1MDE3RUUyNzQ5MDBBQkIyMTcgLyogUmVw
YXRjaC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc1ODEsNiArNzY3NCw3IEBACiAJCQkJMEY3NzAw
OTIxNDAyRkYzQzAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDI5RDg4NTBFRDIxQzNEMDBCODk2MTkgLyogU2FtcGxpbmdUb29sLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTcwRUMwRUM2MUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvclBy
b3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUI5RTIzOTFCNEUwRDY3MDBCQzdGRUQg
LyogSW50bENvbGxhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1RkQwMDY3MTg5QUZFOUMw
MDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVGRDAw
NkQxODlCMDBBQTAwNjMzMjMxIC8qIFNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjA0Mzk2RDFCMDNEQzBCMDA5NTk4QjcgLyogREZHQ29tYmluZWRMaXZlbmVzcy5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTc2MjcsNiArNzcyMSw4IEBACiAJCQkJMEZBMkMxN0IxN0Q3Q0Y4
NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzM4
NjU1NTExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMkI2NzA3MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5Q29udHJvbGxlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUQ3OTJGQzFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51
bWJlckZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMTU4N0Q3MTFCNERDMTQxMDBENjk4
NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMkI2NzBBMTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5VHlwZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MkM5NTJCOTE5QTI4QTFDMDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRjQyNzRBMTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODYuYyBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKaW5kZXggOWI5Mzk4N2IxYjE2ZGI1M2VjOTVhNDM3NjE3MWI3Y2RmMGM5
NTNiYS4uNjEzMzMxMzZkODBiNzgxMTU0ZjJhNWMzNDM2ZmMzZWU5NmU4MWI2MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0z
Myw3ICszMyw5IEBACiAgICAgbWFjcm8oQXJyYXlJdGVyYXRvcikgXAogICAgIG1hY3JvKEJZVEVT
X1BFUl9FTEVNRU5UKSBcCiAgICAgbWFjcm8oQm9vbGVhbikgXAorICAgIG1hY3JvKENvbGxhdG9y
KSBcCiAgICAgbWFjcm8oRGF0ZSkgXAorICAgIG1hY3JvKERhdGVUaW1lRm9ybWF0KSBcCiAgICAg
bWFjcm8oRXJyb3IpIFwKICAgICBtYWNybyhFdmFsRXJyb3IpIFwKICAgICBtYWNybyhGdW5jdGlv
bikgXApAQCAtNDUsNiArNDcsNyBAQAogICAgIG1hY3JvKE1hdGgpIFwKICAgICBtYWNybyhOYU4p
IFwKICAgICBtYWNybyhOdW1iZXIpIFwKKyAgICBtYWNybyhOdW1iZXJGb3JtYXQpIFwKICAgICBt
YWNybyhPYmplY3QpIFwKICAgICBtYWNybyhQcm9taXNlKSBcCiAgICAgbWFjcm8oUmFuZ2VFcnJv
cikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggZDYzMjlmZGYxYjAyNTBkNzgyNGM4YzhiZDcwZGQ2ODcwNDcyYjRmYy4uZWU2
NTZhMzA5NzRlM2VjNWRiMTA0ZjE2YzUzNGQ0MjZiMmJlODVmNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCkBAIC01Myw3ICs1Myw2
IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiBuYW1lc3BhY2UgSlNDIHsKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUGFyc2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVOb3coRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVVVEMoRXhlY1N0YXRlKik7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgKaW5kZXggMDU0ZjU3MWQ1NzllOGNlNGYzNGI1
NDA5MTdiOGQwMjhiNTBkZmI5Yi4uY2RhYzk3ZDMxYmEzNmE5YzIyZWFjMDI0OGFmYzZmNTIxMmJm
NzkxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVj
dG9yLmgKQEAgLTU5LDYgKzU5LDggQEAgcHJpdmF0ZToKIAogSlNPYmplY3QqIGNvbnN0cnVjdERh
dGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0Jik7CiAKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZU5vdyhFeGVjU3RhdGUqKTsKKwogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZiAvLyBEYXRlQ29uc3RydWN0b3JfaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTgxMDhmYzE4
NTk4ZDNlMmM3YWQ4OWUwY2YxZjg4ZDRlNWExMWVjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKQEAgLTAsMCArMSwxMjIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3Jh
ZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJbnRsQ29sbGF0b3IuaCIKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiRXJyb3Iu
aCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkludGxP
YmplY3QuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJTbG90
VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bENvbGxhdG9yOjpzX2luZm8gPSB7ICJP
YmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxDb2xsYXRv
cikgfTsKKworSW50bENvbGxhdG9yKiBJbnRsQ29sbGF0b3I6OmNyZWF0ZShWTSYgdm0sIEludGxD
b2xsYXRvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKK3sKKyAgICBJbnRsQ29sbGF0b3IqIGZv
cm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxDb2xsYXRvcj4odm0uaGVhcCkp
IEludGxDb2xsYXRvcih2bSwgY29uc3RydWN0b3ItPmNvbGxhdG9yU3RydWN0dXJlKCkpOworICAg
IGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBmb3JtYXQ7Cit9CisKK1N0
cnVjdHVyZSogSW50bENvbGxhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxDb2xsYXRvcjo6SW50
bENvbGxhdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU0Rlc3RydWN0
aWJsZU9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxDb2xsYXRvcjo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Cit9CisKK3ZvaWQgSW50bENvbGxhdG9yOjpkZXN0
cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxJbnRsQ29sbGF0b3IqPihjZWxs
KS0+SW50bENvbGxhdG9yOjp+SW50bENvbGxhdG9yKCk7Cit9CisKK3ZvaWQgSW50bENvbGxhdG9y
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSW50bENvbGxhdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEludGxDb2xsYXRvcio+KGNlbGwp
OworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKwor
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ib3VuZENvbXBhcmUpOworfQorCit2b2lkIEludGxD
b2xsYXRvcjo6c2V0Qm91bmRDb21wYXJlKFZNJiB2bSwgSlNCb3VuZEZ1bmN0aW9uKiBmb3JtYXQp
Cit7CisgICAgbV9ib3VuZENvbXBhcmUuc2V0KHZtLCB0aGlzLCBmb3JtYXQpOworfQorCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvckZ1bmNDb21wYXJlKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICAvLyAxMC4zLjQgQ29sbGF0b3IgQ29tcGFyZSBGdW5jdGlvbnMgKEVD
TUEtNDAyIDIuMCkKKyAgICAvLyAxLiBMZXQgY29sbGF0b3IgYmUgdGhlIHRoaXMgdmFsdWUuCisg
ICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4o
ZXhlYy0+dGhpc1ZhbHVlKCkpOworCisgICAgLy8gMi4gQXNzZXJ0OiBUeXBlKGNvbGxhdG9yKSBp
cyBPYmplY3QgYW5kIGNvbGxhdG9yIGhhcyBhbiBbW2luaXRpYWxpemVkQ29sbGF0b3JdXSBpbnRl
cm5hbCBzbG90IHdob3NlIHZhbHVlIGlzIHRydWUuCisgICAgaWYgKCFjb2xsYXRvcikKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisKKyAgICAv
LyAzLiBJZiB4IGlzIG5vdCBwcm92aWRlZCwgbGV0IHggYmUgdW5kZWZpbmVkLgorICAgIC8vIDQu
IElmIHkgaXMgbm90IHByb3ZpZGVkLCBsZXQgeSBiZSB1bmRlZmluZWQuCisgICAgLy8gNS4gTGV0
IFggYmUgVG9TdHJpbmcoeCkuCisgICAgSlNTdHJpbmcqIGEgPSBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKTsKKyAgICAvLyA2LiBSZXR1cm5JZkFicnVwdChYKS4KKyAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisKKyAgICAvLyA3LiBMZXQgWSBiZSBUb1N0cmluZyh5KS4KKyAgICBKU1N0cmlu
ZyogYiA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpOworICAgIC8vIDguIFJldHVy
bklmQWJydXB0KFkpLgorICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIC8vIDkuIFJldHVybiBD
b21wYXJlU3RyaW5ncyhjb2xsYXRvciwgWCwgWSkuCisKKyAgICAvLyAxMC4zLjQgQ29tcGFyZVN0
cmluZ3MgYWJzdHJhY3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAyLjApCisgICAgLy8gRklYTUU6IElt
cGxlbWVudCBDb21wYXJlU3RyaW5ncy4KKworICAgIC8vIFJldHVybiBzaW1wbGUgY2hlY2sgdW50
aWwgcHJvcGVybHkgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihjb2RlUG9pbnRDb21wYXJlKGEtPnZhbHVlKGV4ZWMpLmltcGwoKSwgYi0+dmFsdWUoZXhl
YykuaW1wbCgpKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJM
RShJTlRMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENv
bGxhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mZjIyNTE0OTQxYTIxMTg2M2Y5YzI4NDJmYzE3MGQ2MWJjYTQ2MTAyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9y
LmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldh
Z29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRs
Q29sbGF0b3JfaAorI2RlZmluZSBJbnRsQ29sbGF0b3JfaAorCisjaWYgRU5BQkxFKElOVEwpCisK
KyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgSW50bENvbGxhdG9yQ29uc3RydWN0b3I7CitjbGFzcyBKU0JvdW5kRnVuY3Rpb247CisK
K2NsYXNzIEludGxDb2xsYXRvciA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CitwdWJs
aWM6CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworCisgICAgc3RhdGlj
IEludGxDb2xsYXRvciogY3JlYXRlKFZNJiwgSW50bENvbGxhdG9yQ29uc3RydWN0b3IqKTsKKyAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgSlNCb3VuZEZ1bmN0aW9uKiBi
b3VuZENvbXBhcmUoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kQ29tcGFyZS5nZXQoKTsgfQorICAg
IHZvaWQgc2V0Qm91bmRDb21wYXJlKFZNJiwgSlNCb3VuZEZ1bmN0aW9uKik7CisKK3Byb3RlY3Rl
ZDoKKyAgICBJbnRsQ29sbGF0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKK3ByaXZhdGU6
CisgICAgV3JpdGVCYXJyaWVyPEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZENvbXBhcmU7Cit9Owor
ICAgIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JGdW5jQ29tcGFy
ZShFeGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5UTCkKKworI2VuZGlmIC8vIEludGxDb2xsYXRvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDQxZGQxN2NkOGViMTEyYTIxZWZiNmMyMWExNDQ5NGZiMmVkNmQ2NQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0
cnVjdG9yLmNwcApAQCAtMCwwICsxLDE4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
bmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCIK
KworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRs
Q29sbGF0b3IuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKKyNpbmNsdWRl
ICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRl
ICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiU2xvdFZp
c2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxD
b2xsYXRvckNvbnN0cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bENvbGxhdG9yQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0
ZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAmY29s
bGF0b3JDb25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxDb2xsYXRvckNv
bnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1
dC5oCitAYmVnaW4gY29sbGF0b3JDb25zdHJ1Y3RvclRhYmxlCisgIHN1cHBvcnRlZExvY2FsZXNP
ZiAgICAgICAgICAgICBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVz
T2YgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKworSW50bENvbGxh
dG9yQ29uc3RydWN0b3IqIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSW50bENvbGxhdG9yUHJvdG90eXBlKiBjb2xsYXRvclByb3Rv
dHlwZSwgU3RydWN0dXJlKiBjb2xsYXRvclN0cnVjdHVyZSkKK3sKKyAgICBJbnRsQ29sbGF0b3JD
b25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKHZt
LCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgY29sbGF0
b3JQcm90b3R5cGUsIGNvbGxhdG9yU3RydWN0dXJlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7
Cit9CisKK1N0cnVjdHVyZSogSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30K
KworSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1
Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSW50bENvbGxhdG9yUHJvdG90eXBlKiBjb2xsYXRvclByb3RvdHlwZSwgU3Ry
dWN0dXJlKiBjb2xsYXRvclN0cnVjdHVyZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSwgQVNDSUlMaXRlcmFsKCJDb2xsYXRvciIpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBjb2xsYXRvclByb3RvdHlwZSwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFk
T25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgbV9jb2xsYXRvclN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIGNvbGxhdG9yU3RydWN0dXJlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsQ29sbGF0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAg
IC8vIDEwLjEuMiBJbnRsLkNvbGxhdG9yIChbbG9jYWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQw
MiAyLjApCisgICAgLy8gMS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1Rhcmdl
dCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5l
d1RhcmdldC4KKyAgICBKU1ZhbHVlIG5ld1RhcmdldCA9IGV4ZWMtPm5ld1RhcmdldCgpOworICAg
IGlmICghbmV3VGFyZ2V0IHx8IG5ld1RhcmdldC5pc1VuZGVmaW5lZCgpKQorICAgICAgICBuZXdU
YXJnZXQgPSBleGVjLT5jYWxsZWUoKTsKKworICAgIC8vIDIuIExldCBjb2xsYXRvciBiZSBPcmRp
bmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVDb2xsYXRvclByb3RvdHlwZSUp
LgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9
IEludGxDb2xsYXRvcjo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3Iq
PihleGVjLT5jYWxsZWUoKSkpOworICAgIGlmIChjb2xsYXRvciAmJiAhanNEeW5hbWljQ2FzdDxJ
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcio+KG5ld1RhcmdldCkpIHsKKyAgICAgICAgSlNWYWx1ZSBw
cm90byA9IGFzT2JqZWN0KG5ld1RhcmdldCktPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlKTsKKyAgICAgICAgYXNPYmplY3QoY29sbGF0b3IpLT5zZXRQcm90b3R5cGVX
aXRoQ3ljbGVDaGVjayhleGVjLCBwcm90byk7CisgICAgfQorCisgICAgLy8gMy4gUmV0dXJuSWZB
YnJ1cHQoY29sbGF0b3IpLgorICAgIEFTU0VSVChjb2xsYXRvcik7CisKKyAgICAvLyA0LiBSZXR1
cm4gSW5pdGlhbGl6ZUNvbGxhdG9yKGNvbGxhdG9yLCBsb2NhbGVzLCBvcHRpb25zKS4KKyAgICAv
LyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShJbml0aWFsaXplQ29sbGF0b3IoY29sbGF0
b3IsIGxvY2FsZXMsIG9wdGlvbnMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29s
bGF0b3IpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsQ29sbGF0
b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDEwLjEuMiBJbnRsLkNvbGxhdG9yIChbbG9j
YWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gSWYgTmV3VGFyZ2V0
IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVj
dCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KKyAgICAvLyBOZXdUYXJnZXQgaXMg
YWx3YXlzIHVuZGVmaW5lZCB3aGVuIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLgorCisgICAgLy8gMi4g
TGV0IGNvbGxhdG9yIGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwg
JUNvbGxhdG9yUHJvdG90eXBlJSkuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBJbnRs
Q29sbGF0b3IqIGNvbGxhdG9yID0gSW50bENvbGxhdG9yOjpjcmVhdGUodm0sIGpzQ2FzdDxJbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKSk7CisKKyAgICAvLyAzLiBSZXR1
cm5JZkFicnVwdChjb2xsYXRvcikuCisgICAgQVNTRVJUKGNvbGxhdG9yKTsKKworICAgIC8vIDQu
IFJldHVybiBJbml0aWFsaXplQ29sbGF0b3IoY29sbGF0b3IsIGxvY2FsZXMsIG9wdGlvbnMpLgor
ICAgIC8vIEZJWE1FOiByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEluaXRpYWxpemVDb2xsYXRvcihj
b2xsYXRvciwgbG9jYWxlcywgb3B0aW9ucykpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjb2xsYXRvcik7Cit9CisKK0NvbnN0cnVjdFR5cGUgSW50bENvbGxhdG9yQ29uc3RydWN0b3I6
OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkK
K3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEludGxDb2xs
YXRvcjsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK0NhbGxUeXBlIEludGxD
b2xsYXRvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERh
dGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEludGxDb2xsYXRvcjsK
KyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitib29sIEludGxDb2xsYXRvckNvbnN0cnVj
dG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAg
cmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBjb2xs
YXRvckNvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcio+KG9i
amVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bENvbGxhdG9yQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNT
dGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMC4yLjIgSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRMb2Nh
bGVzT2YobG9jYWxlcyBbLCBvcHRpb25zXSkgKEVDTUEtNDAyIDIuMCkKKworICAgIC8vIDEuIExl
dCByZXF1ZXN0ZWRMb2NhbGVzIGJlIENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QobG9jYWxlcykuCisg
ICAgLy8gRklYTUU6IHJlcXVlc3RlZCA9IENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QobG9jYWxlcyk7
CisKKyAgICAvLyAyLiBSZXR1cm5JZkFicnVwdChyZXF1ZXN0ZWRMb2NhbGVzKS4KKyAgICAvLyBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgLy8gICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICAvLyAzLiBSZXR1cm4gU3VwcG9ydGVkTG9jYWxlcygl
Q29sbGF0b3IlLltbYXZhaWxhYmxlTG9jYWxlc11dLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25z
KS4KKyAgICAvLyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTdXBwb3J0ZWRMb2NhbGVz
KGF2YWlsYWJsZSwgcmVxdWVzdGVkLCBvcHRpb25zKSk7CisKKyAgICAvLyBSZXR1cm4gZW1wdHkg
YXJyYXkgdW50aWwgcHJvcGVybHkgaW1wbGVtZW50ZWQuCisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmds
b2JhbE9iamVjdCgpOworICAgIEpTQXJyYXkqIHN1cHBvcnRlZExvY2FsZXMgPSBKU0FycmF5Ojp0
cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9y
SW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKKyAg
ICBpZiAoIXN1cHBvcnRlZExvY2FsZXMpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoc3VwcG9ydGVkTG9jYWxlcyk7Cit9CisgICAgCit2b2lkIEludGxDb2xsYXRvckNvbnN0cnVj
dG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisgICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SW50bENv
bGxhdG9yQ29uc3RydWN0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmpl
Y3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY29sbGF0
b3JTdHJ1Y3R1cmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJM
RShJTlRMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENv
bGxhdG9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxD
b2xsYXRvckNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFhOThmMmZhYTI0NzliODRmNzliNzEw
NzVmNWU5ODdmYWVlNzZmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw3MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdt
YWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcl9oCisj
ZGVmaW5lIEludGxDb2xsYXRvckNvbnN0cnVjdG9yX2gKKworI2lmIEVOQUJMRShJTlRMKQorCisj
aW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
SW50bENvbGxhdG9yOworY2xhc3MgSW50bENvbGxhdG9yUHJvdG90eXBlOworCitjbGFzcyBJbnRs
Q29sbGF0b3JDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvciog
Y3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSW50bENvbGxhdG9yUHJvdG90eXBlKiwgU3RydWN0dXJl
Kik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIFN0cnVjdHVyZSog
Y29sbGF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NvbGxhdG9yU3RydWN0dXJlLmdl
dCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bENv
bGxhdG9yUHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisKK3ByaXZhdGU6CisgICAgSW50bENvbGxh
dG9yQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlw
ZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMg
Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NvbGxh
dG9yU3RydWN0dXJlOworfTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RJbnRsQ29sbGF0b3IoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxJbnRsQ29sbGF0b3IoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxh
dG9yUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2UwNGIzMmFiM2E1M2Q3OTljZTIzMGEyMDE4
MzY3MGE3MTYwMjk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWls
LmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxDb2xs
YXRvclByb3RvdHlwZS5oIgorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJFcnJvci5o
IgorI2luY2x1ZGUgIkludGxDb2xsYXRvci5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3Iu
aCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitT
VEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bENvbGxhdG9yUHJvdG90
eXBlKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9y
UHJvdG90eXBlR2V0dGVyQ29tcGFyZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMo
RXhlY1N0YXRlKik7CisKK30KKworI2luY2x1ZGUgIkludGxDb2xsYXRvclByb3RvdHlwZS5sdXQu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsQ29sbGF0b3JQcm90
b3R5cGU6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZJbnRsQ29sbGF0b3I6OnNfaW5mbywgJmNvbGxh
dG9yUHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bENvbGxhdG9yUHJvdG90
eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaAorQGJl
Z2luIGNvbGxhdG9yUHJvdG90eXBlVGFibGUKKyAgY29tcGFyZSAgICAgICAgICBJbnRsQ29sbGF0
b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorICByZXNv
bHZlZE9wdGlvbnMgIEludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMgIERv
bnRFbnVtfEZ1bmN0aW9uIDAKK0BlbmQKKyovCisKK0ludGxDb2xsYXRvclByb3RvdHlwZSogSW50
bENvbGxhdG9yUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSogc3RydWN0dXJlKQoreworICAgIEludGxDb2xsYXRvclByb3RvdHlwZSogb2JqZWN0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxhdG9yUHJvdG90eXBlPih2bS5oZWFw
KSkgSW50bENvbGxhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSW50
bENvbGxhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxDb2xsYXRvclByb3RvdHlw
ZTo6SW50bENvbGxhdG9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgOiBJbnRsQ29sbGF0b3Iodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsQ29sbGF0
b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7Cit9CisKK2Jvb2wgSW50bENvbGxhdG9yUHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRp
Y0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgY29sbGF0b3JQcm90b3R5cGVUYWJsZSwganND
YXN0PEludGxDb2xsYXRvclByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBl
R2V0dGVyQ29tcGFyZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTAuMy4zIEludGwuQ29s
bGF0b3IucHJvdG90eXBlLmNvbXBhcmUgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBMZXQgY29s
bGF0b3IgYmUgdGhpcyBDb2xsYXRvciBvYmplY3QuCisgICAgSW50bENvbGxhdG9yKiBjb2xsYXRv
ciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAg
IGlmICghY29sbGF0b3IpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZXhlYykpOworCisgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZENvbXBhcmUgPSBjb2xs
YXRvci0+Ym91bmRDb21wYXJlKCk7CisgICAgLy8gMi4gSWYgY29sbGF0b3IuW1tib3VuZENvbXBh
cmVdXSBpcyB1bmRlZmluZWQsCisgICAgaWYgKCFib3VuZENvbXBhcmUpIHsKKyAgICAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGNvbGxhdG9yLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcg
YnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmluZWQgaW4gMTEuMy40LgorICAgICAgICAv
LyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDIuCisgICAgICAgIEpT
RnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCAyLCBBU0NJSUxpdGVyYWwoImNvbXBhcmUiKSwgSW50bENvbGxhdG9yRnVuY0NvbXBhcmUs
IE5vSW50cmluc2ljKTsKKyAgICAgICAgSlNBcnJheSogYm91bmRBcmdzID0gSlNBcnJheTo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7CisgICAg
ICAgIGlmICghYm91bmRBcmdzKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYykpOworCisgICAgICAgIC8vIGMuIExldCBiYyBiZSBC
b3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4KKyAgICAgICAgYm91bmRDb21w
YXJlID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2Jq
ZWN0LCBjb2xsYXRvciwgYm91bmRBcmdzLCAyLCBBU0NJSUxpdGVyYWwoImNvbXBhcmUiKSk7Cisg
ICAgICAgIC8vIGQuIFNldCBjb2xsYXRvci5bW2JvdW5kQ29tcGFyZV1dIHRvIGJjLgorICAgICAg
ICBjb2xsYXRvci0+c2V0Qm91bmRDb21wYXJlKHZtLCBib3VuZENvbXBhcmUpOworICAgIH0KKyAg
ICAvLyAzLiBSZXR1cm4gY29sbGF0b3IuW1tib3VuZENvbXBhcmVdXS4KKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGJvdW5kQ29tcGFyZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgLy8gMTAuMy41IEludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVk
T3B0aW9ucygpIChFQ01BLTQwMiAyLjApCisgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpz
RHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICgh
Y29sbGF0b3IpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
ZXhlYykpOworCisgICAgLy8gVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBuZXcgb2JqZWN0IHdob3Nl
IHByb3BlcnRpZXMgYW5kIGF0dHJpYnV0ZXMgYXJlIHNldCBhcyBpZiBjb25zdHJ1Y3RlZCBieSBh
biBvYmplY3QgbGl0ZXJhbCBhc3NpZ25pbmcgdG8gZWFjaCBvZiB0aGUgZm9sbG93aW5nIHByb3Bl
cnRpZXMgdGhlIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGludGVybmFsIHNsb3Qgb2YgdGhp
cyBDb2xsYXRvciBvYmplY3QgKHNlZSAxMC40KTogbG9jYWxlLCB1c2FnZSwgc2Vuc2l0aXZpdHks
IGlnbm9yZVB1bmN0dWF0aW9uLCBjb2xsYXRpb24sIGFzIHdlbGwgYXMgdGhvc2UgcHJvcGVydGll
cyBzaG93biBpbiBUYWJsZSAxIHdob3NlIGtleXMgYXJlIGluY2x1ZGVkIGluIHRoZSAlQ29sbGF0
b3IlW1tyZWxldmFudEV4dGVuc2lvbktleXNdXSBpbnRlcm5hbCBzbG90IG9mIHRoZSBzdGFuZGFy
ZCBidWlsdC1pbiBvYmplY3QgdGhhdCBpcyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBJbnRsLkNvbGxh
dG9yLgorCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVj
KTsKKworICAgIC8vIEZJWE1FOiBQb3B1bGF0ZSBvYmplY3QgZnJvbSBpbnRlcm5hbCBzbG90cy4K
KworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3B0aW9ucyk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4
MTY0MjY3OWU5ZjUxMjE0NWNkZjdlMDJjY2FmNDY5N2ZlYjdjYzEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuaApA
QCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25l
ciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxDb2xs
YXRvclByb3RvdHlwZV9oCisjZGVmaW5lIEludGxDb2xsYXRvclByb3RvdHlwZV9oCisKKyNpZiBF
TkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkludGxDb2xsYXRvci5oIgorI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsQ29sbGF0b3JQcm90b3R5cGUg
OiBwdWJsaWMgSW50bENvbGxhdG9yIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGxDb2xsYXRv
ciBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3Rh
dGljIEludGxDb2xsYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0
ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcml2YXRlOgorICAgIEludGxD
b2xsYXRvclByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJ
TlRMKQorCisjZW5kaWYgLy8gSW50bENvbGxhdG9yUHJvdG90eXBlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmI4NjI4ZmJlODY1NjUzNzhkZmRmM2Y3ZTFlOTNhNGMxZmVkMjUyMmUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQu
Y3BwCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFu
V2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisKKyNpZiBFTkFCTEUo
SU5UTCkKKworI2luY2x1ZGUgIkRhdGVDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkRhdGVJbnN0
YW5jZS5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNCb3Vu
ZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJK
U0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJ
bmZvIEludGxEYXRlVGltZUZvcm1hdDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5m
bywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsRGF0ZVRpbWVGb3JtYXQpIH07CisKK0ludGxE
YXRlVGltZUZvcm1hdCogSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBJbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IpCit7CisgICAgSW50bERhdGVUaW1l
Rm9ybWF0KiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGF0ZVRpbWVG
b3JtYXQ+KHZtLmhlYXApKSBJbnRsRGF0ZVRpbWVGb3JtYXQodm0sIGNvbnN0cnVjdG9yLT5kYXRl
VGltZUZvcm1hdFN0cnVjdHVyZSgpKTsKKyAgICBmb3JtYXQtPmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICByZXR1cm4gZm9ybWF0OworfQorCitTdHJ1Y3R1cmUqIEludGxEYXRlVGltZUZvcm1hdDo6
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworfQorCitJbnRsRGF0ZVRpbWVGb3JtYXQ6OkludGxEYXRlVGltZUZvcm1hdChW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3Qo
dm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNT
RVJUKGluaGVyaXRzKGluZm8oKSkpOworfQorCit2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6ZGVz
dHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0
Kj4oY2VsbCktPkludGxEYXRlVGltZUZvcm1hdDo6fkludGxEYXRlVGltZUZvcm1hdCgpOworfQor
Cit2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEludGxEYXRlVGltZUZvcm1hdCogdGhpc09iamVj
dCA9IGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fYm91bmRGb3JtYXQpOworfQorCit2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6c2V0Qm91
bmRGb3JtYXQoVk0mIHZtLCBKU0JvdW5kRnVuY3Rpb24qIGZvcm1hdCkKK3sKKyAgICBtX2JvdW5k
Rm9ybWF0LnNldCh2bSwgdGhpcywgZm9ybWF0KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUoRXhlY1N0YXRlKiBl
eGVjKQoreworICAgIC8vIDEyLjMuNCBEYXRlVGltZSBGb3JtYXQgRnVuY3Rpb25zIChFQ01BLTQw
MiAyLjApCisgICAgLy8gMS4gTGV0IGR0ZiBiZSB0aGUgdGhpcyB2YWx1ZS4KKyAgICBJbnRsRGF0
ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4o
ZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIC8vIDIuIEFzc2VydDogVHlwZShkdGYpIGlzIE9iamVj
dCBhbmQgZHRmIGhhcyBhbiBbW2luaXRpYWxpemVkRGF0ZVRpbWVGb3JtYXRdXSBpbnRlcm5hbCBz
bG90IHdob3NlIHZhbHVlIGlzIHRydWUuCisgICAgaWYgKCFmb3JtYXQpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYykpOworCisgICAgSlNWYWx1ZSBk
YXRlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgZG91YmxlIHZhbHVlOworCisgICAgLy8gMy4g
SWYgZGF0ZSBpcyBub3QgcHJvdmlkZWQgb3IgaXMgdW5kZWZpbmVkLCB0aGVuCisgICAgaWYgKGRh
dGUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICAvLyBhLiBMZXQgeCBiZSAlRGF0ZV9ub3clKCku
CisgICAgICAgIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGRhdGVOb3coZXhlYykpLnRvTnVtYmVy
KGV4ZWMpOworICAgIC8vIDQuIEVsc2UKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBhLiBMZXQg
eCBiZSBUb051bWJlcihkYXRlKS4KKyAgICAgICAgdmFsdWUgPSBkYXRlLnRvTnVtYmVyKGV4ZWMp
OworICAgICAgICAvLyBiLiBSZXR1cm5JZkFicnVwdCh4KS4KKyAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICB9CisKKyAgICAvLyA1LiBSZXR1cm4gRm9ybWF0RGF0ZVRpbWUoZHRmLCB4
KS4KKworICAgIC8vIDEyLjMuNCBGb3JtYXREYXRlVGltZSBhYnN0cmFjdCBvcGVyYXRpb24gKEVD
TUEtNDAyIDIuMCkKKworICAgIC8vIDEuIElmIHggaXMgbm90IGEgZmluaXRlIE51bWJlciwgdGhl
biB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uLgorICAgIGlmICghc3RkOjppc2Zpbml0ZSh2
YWx1ZSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dSYW5nZUVycm9yKGV4
ZWMsIFN0cmluZygiZGF0ZSB2YWx1ZSBpcyBub3QgZmluaXRlIGluIERhdGVUaW1lRm9ybWF0LmZv
cm1hdCgpIikpKTsKKworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgMiAtIDkKKworICAgIC8vIFJl
dHVybiBuZXcgRGF0ZSh2YWx1ZSkudG9TdHJpbmcoKSB1bnRpbCBwcm9wZXJseSBpbXBsZW1lbnRl
ZC4KKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgRGF0ZUluc3RhbmNl
KiBkID0gRGF0ZUluc3RhbmNlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+ZGF0ZVN0cnVjdHVy
ZSgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKGQpLnRvU3Ry
aW5nKGV4ZWMpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RhZWQxMzhmYjA4ZGNmYTNiZTY3ZDM3YzgzYTQ3ZGI0YWFi
Y2JkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgSW50bERhdGVUaW1lRm9ybWF0X2gKKyNkZWZpbmUgSW50bERhdGVUaW1lRm9y
bWF0X2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmpl
Y3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yOworY2xhc3MgSlNCb3VuZEZ1bmN0aW9uOworCitjbGFzcyBJbnRsRGF0ZVRpbWVGb3Jt
YXQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYg
SlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBJbnRsRGF0ZVRpbWVGb3Jt
YXQqIGNyZWF0ZShWTSYsIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKik7CisgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRG
b3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kRm9ybWF0LmdldCgpOyB9CisgICAgdm9pZCBz
ZXRCb3VuZEZvcm1hdChWTSYsIEpTQm91bmRGdW5jdGlvbiopOworCitwcm90ZWN0ZWQ6CisgICAg
SW50bERhdGVUaW1lRm9ybWF0KFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgV3JpdGVC
YXJyaWVyPEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZEZvcm1hdDsKK307CisgICAgCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGlt
ZShFeGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5UTCkKKworI2VuZGlmIC8vIEludGxEYXRlVGltZUZvcm1hdF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI4ZDQ2MGQyNjc0MWE0YjkzMzZiOGNiMGY4YjY0ZmI3
OGQwNjg3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDE4MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdt
YWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCIKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5j
bHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRl
ICJJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0Lmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVz
LmgiCisjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgi
CisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RB
VElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERh
dGVUaW1lRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0ZSop
OworCit9CisKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19p
bmZvLCAmZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gZGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3RvclRhYmxlCisgIHN1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKworSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IqIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBkYXRlVGltZUZvcm1h
dFByb3RvdHlwZSwgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSkKK3sKKyAgICBJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIElu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVj
dG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIGRhdGVUaW1l
Rm9ybWF0U3RydWN0dXJlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVy
ZSogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bERh
dGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBz
dHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBkYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZSwgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSkKK3sK
KyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVNDSUlMaXRlcmFsKCJEYXRlVGltZUZvcm1h
dCIpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtIHwg
RG9udERlbGV0ZSk7CisgICAgbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS5zZXQodm0sIHRoaXMs
IGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlKiBleGVjKQoreworICAg
IC8vIDEyLjEuMiBJbnRsLkRhdGVUaW1lRm9ybWF0IChbbG9jYWxlcyBbLCBvcHRpb25zXV0pIChF
Q01BLTQwMiAyLjApCisgICAgLy8gMS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5l
d1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0
IGJlIE5ld1RhcmdldC4KKyAgICBKU1ZhbHVlIG5ld1RhcmdldCA9IGV4ZWMtPm5ld1RhcmdldCgp
OworICAgIGlmICghbmV3VGFyZ2V0IHx8IG5ld1RhcmdldC5pc1VuZGVmaW5lZCgpKQorICAgICAg
ICBuZXdUYXJnZXQgPSBleGVjLT5jYWxsZWUoKTsKKworICAgIC8vIDIuIExldCBkYXRlVGltZUZv
cm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZSUpLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSW50bERh
dGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRl
KHZtLCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUo
KSkpOworICAgIGlmIChkYXRlVGltZUZvcm1hdCAmJiAhanNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvcio+KG5ld1RhcmdldCkpIHsKKyAgICAgICAgSlNWYWx1ZSBwcm90
byA9IGFzT2JqZWN0KG5ld1RhcmdldCktPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlKTsKKyAgICAgICAgYXNPYmplY3QoZGF0ZVRpbWVGb3JtYXQpLT5zZXRQcm90b3R5
cGVXaXRoQ3ljbGVDaGVjayhleGVjLCBwcm90byk7CisgICAgfQorCisgICAgLy8gMy4gUmV0dXJu
SWZBYnJ1cHQoZGF0ZVRpbWVGb3JtYXQpLgorICAgIEFTU0VSVChkYXRlVGltZUZvcm1hdCk7CisK
KyAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KGRhdGVUaW1lRm9ybWF0
LCBsb2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShJbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMsIG9wdGlv
bnMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQpOworfQor
ICAgIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bERhdGVUaW1lRm9ybWF0
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMi4xLjIgSW50bC5EYXRlVGltZUZvcm1hdCAo
W2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIElmIE5ld1Rh
cmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBv
YmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCisgICAgLy8gTmV3VGFyZ2V0
IGlzIGFsd2F5cyB1bmRlZmluZWQgd2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlvbi4KKworICAgIC8v
IDIuIExldCBkYXRlVGltZUZvcm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3Rvcihu
ZXdUYXJnZXQsICVEYXRlVGltZUZvcm1hdFByb3RvdHlwZSUpLgorICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IEludGxEYXRl
VGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IqPihleGVjLT5jYWxsZWUoKSkpOworCisgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQoZGF0ZVRp
bWVGb3JtYXQpLgorICAgIEFTU0VSVChkYXRlVGltZUZvcm1hdCk7CisKKyAgICAvLyA0LiBSZXR1
cm4gSW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBsb2NhbGVzLCBvcHRp
b25zKS4KKyAgICAvLyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShJbml0aWFsaXplRGF0
ZVRpbWVGb3JtYXQoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpKTsKKworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQpOworfQorCitDb25zdHJ1Y3RUeXBl
IEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCos
IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRp
dmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVGb3JtYXQ7CisgICAgcmV0dXJuIENv
bnN0cnVjdFR5cGVIb3N0OworfQorCitDYWxsVHlwZSBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNh
bGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxJbnRsRGF0ZVRpbWVGb3JtYXQ7CisgICAgcmV0
dXJuIENhbGxUeXBlSG9zdDsKK30KKworYm9vbCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
cjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJl
dHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgZGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRl
ZExvY2FsZXNPZihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTIuMi4yIEludGwuRGF0ZVRp
bWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKGxvY2FsZXMgWywgb3B0aW9uc10pIChFQ01BLTQw
MiAyLjApCisKKyAgICAvLyAxLiBMZXQgYXZhaWxhYmxlTG9jYWxlcyBiZSAlRGF0ZVRpbWVGb3Jt
YXQlLltbYXZhaWxhYmxlTG9jYWxlc11dLgorICAgIC8vIEZJWE1FOiBhdmFpbGFibGUgPSBJbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0QXZhaWxhYmxlTG9jYWxlcygpCisKKyAgICAv
LyAyLiBMZXQgcmVxdWVzdGVkTG9jYWxlcyBiZSBDYW5vbmljYWxpemVMb2NhbGVMaXN0KGxvY2Fs
ZXMpLgorICAgIC8vIEZJWE1FOiByZXF1ZXN0ZWQgPSBDYW5vbmljYWxpemVMb2NhbGVMaXN0KGxv
Y2FsZXMpCisKKyAgICAvLyAzLiBSZXR1cm4gU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGVMb2Nh
bGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBGSVhNRTogcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShTdXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJsZSwgcmVxdWVzdGVkLCBvcHRp
b25zKSk7CisKKyAgICAvLyBSZXR1cm4gZW1wdHkgYXJyYXkgdW50aWwgcHJvcGVybHkgaW1wbGVt
ZW50ZWQuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworICAgIEpTQXJyYXkq
IHN1cHBvcnRlZExvY2FsZXMgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBn
bG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlv
bihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKKyAgICBpZiAoIXN1cHBvcnRlZExvY2FsZXMpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMp
KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcyk7Cit9Cisg
ICAgCit2b2lkIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0
b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGF0ZVRpbWVGb3JtYXRT
dHJ1Y3R1cmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJ
TlRMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2YwNDNhN2U3MGE0MmZm
ZWFmZjJkOGRiYjU2MGViYTFjMzNhY2E1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgKQEAgLTAs
MCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRo
ZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvcl9oCisjZGVmaW5lIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
X2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0OworY2xhc3MgSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOworCitjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdDsKKworICAgIHN0YXRpYyBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY3JlYXRl
KFZNJiwgU3RydWN0dXJlKiwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiwgU3RydWN0dXJl
Kik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIFN0cnVjdHVyZSog
ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RhdGVUaW1lRm9ybWF0
U3RydWN0dXJlLmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisKK3ByaXZh
dGU6CisgICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsK
KyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0
cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2Fs
bERhdGEmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICAKKyAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlOworfTsKKworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVGb3JtYXQoRXhlY1N0
YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsRGF0ZVRpbWVGb3Jt
YXQoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxF
KElOVEwpCisKKyNlbmRpZiAvLyBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWFiODhiMGVkNjk2MjY3YWY0YzM4M2E5
NTVmZTc0YzYzYzAwNjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDEzOCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFm
dGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIgorCisjaWYgRU5BQkxFKElOVEwpCisKKyNp
bmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgorI2luY2x1
ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVk
ZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElC
TEUoSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4
ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqKTsKKworfQor
CisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6
c19pbmZvID0geyAiT2JqZWN0IiwgJkludGxEYXRlVGltZUZvcm1hdDo6c19pbmZvLCAmZGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlLmx1dC5oCitAYmVnaW4gZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVUYWJsZQorICBmb3Jt
YXQgICAgICAgICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCAgICAg
ICAgIERvbnRFbnVtfEFjY2Vzc29yCisgIHJlc29sdmVkT3B0aW9ucyAgSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyAgRG9udEVudW18RnVuY3Rpb24gMAorQGVu
ZAorKi8KKworSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCit7CisgICAgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU+KHZtLmhl
YXApKSBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2Jq
ZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgc3RydWN0dXJlKTsKKyAgICByZXR1cm4gb2JqZWN0Owor
fQorCitTdHJ1Y3R1cmUqIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
fQorCitJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OkludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50bERhdGVUaW1lRm9y
bWF0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSopCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworfQorCitib29sIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVy
biBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIGRhdGVUaW1lRm9ybWF0UHJv
dG90eXBlVGFibGUsIGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqPihvYmplY3Qp
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChFeGVjU3RhdGUqIGV4ZWMp
Cit7CisgICAgLy8gMTIuMy4zIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCAo
RUNNQS00MDIgMi4wKQorICAgIC8vIDEuIExldCBkdGYgYmUgdGhpcyBEYXRlVGltZUZvcm1hdCBv
YmplY3QuCisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkdGYgPSBqc0R5bmFtaWNDYXN0PEludGxE
YXRlVGltZUZvcm1hdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICAvLyAyLiBSZXR1cm5JZkFi
cnVwdChkdGYpLgorICAgIGlmICghZHRmKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKyAgICAKKyAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5k
Rm9ybWF0ID0gZHRmLT5ib3VuZEZvcm1hdCgpOworICAgIC8vIDMuIElmIHRoZSBbW2JvdW5kRm9y
bWF0XV0gaW50ZXJuYWwgc2xvdCBvZiB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdCBpcyB1bmRl
ZmluZWQsCisgICAgaWYgKCFib3VuZEZvcm1hdCkgeworICAgICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZHRmLT5nbG9iYWxP
YmplY3QoKTsKKyAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24g
b2JqZWN0IGFzIGRlZmluZWQgaW4gMTIuMy40LgorICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2Yg
RuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuIChOb3RlOiBG4oCZcyBsZW5ndGggcHJvcGVydHkg
d2FzIDAgaW4gRUNNQS00MDIgMS4wKQorICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3Qg
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgQVNDSUlMaXRlcmFsKCJm
b3JtYXQiKSwgSW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lLCBOb0ludHJpbnNp
Yyk7CisgICAgICAgIEpTQXJyYXkqIGJvdW5kQXJncyA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIDApOworICAgICAgICBpZiAoIWJv
dW5kQXJncykKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1l
bW9yeUVycm9yKGV4ZWMpKTsKKyAgICAgICAgCisgICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3Vu
ZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4KKyAgICAgICAgYm91bmRGb3JtYXQg
PSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3Qs
IGR0ZiwgYm91bmRBcmdzLCAxLCBBU0NJSUxpdGVyYWwoImZvcm1hdCIpKTsKKyAgICAgICAgLy8g
ZC4gU2V0IGR0Zi5bW2JvdW5kRm9ybWF0XV0gdG8gYmYuCisgICAgICAgIGR0Zi0+c2V0Qm91bmRG
b3JtYXQodm0sIGJvdW5kRm9ybWF0KTsKKyAgICB9CisgICAgLy8gNC4gUmV0dXJuIGR0Zi5bW2Jv
dW5kRm9ybWF0XV0uCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShib3VuZEZvcm1hdCk7Cit9
CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTIuMy41
IEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIChFQ01BLTQw
MiAyLjApCisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkdGYgPSBqc0R5bmFtaWNDYXN0PEludGxE
YXRlVGltZUZvcm1hdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWR0ZikKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisKKyAgICAv
LyBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIG5ldyBvYmplY3Qgd2hvc2UgcHJvcGVydGllcyBhbmQg
YXR0cmlidXRlcyBhcmUgc2V0IGFzIGlmIGNvbnN0cnVjdGVkIGJ5IGFuIG9iamVjdCBsaXRlcmFs
IGFzc2lnbmluZyB0byBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB0aGUgdmFsdWUg
b2YgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJuYWwgc2xvdCBvZiB0aGlzIERhdGVUaW1lRm9ybWF0
IG9iamVjdCAoc2VlIDEyLjQpOiBsb2NhbGUsIGNhbGVuZGFyLCBudW1iZXJpbmdTeXN0ZW0sIHRp
bWVab25lLCBob3VyMTIsIHdlZWtkYXksIGVyYSwgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWlu
dXRlLCBzZWNvbmQsIGFuZCB0aW1lWm9uZU5hbWUuIFByb3BlcnRpZXMgd2hvc2UgY29ycmVzcG9u
ZGluZyBpbnRlcm5hbCBzbG90cyBhcmUgbm90IHByZXNlbnQgYXJlIG5vdCBhc3NpZ25lZC4KKyAg
ICAvLyBOb3RlOiBJbiB0aGlzIHZlcnNpb24gb2YgdGhlIEVDTUFTY3JpcHQgMjAxNSBJbnRlcm5h
dGlvbmFsaXphdGlvbiBBUEksIHRoZSB0aW1lWm9uZSBwcm9wZXJ0eSB3aWxsIGJlIHRoZSBuYW1l
IG9mIHRoZSBkZWZhdWx0IHRpbWUgem9uZSBpZiBubyB0aW1lWm9uZSBwcm9wZXJ0eSB3YXMgcHJv
dmlkZWQgaW4gdGhlIG9wdGlvbnMgb2JqZWN0IHByb3ZpZGVkIHRvIHRoZSBJbnRsLkRhdGVUaW1l
Rm9ybWF0IGNvbnN0cnVjdG9yLiBUaGUgcHJldmlvdXMgdmVyc2lvbiBsZWZ0IHRoZSB0aW1lWm9u
ZSBwcm9wZXJ0eSB1bmRlZmluZWQgaW4gdGhpcyBjYXNlLgorCisgICAgSlNPYmplY3QqIG9wdGlv
bnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKworICAgIC8vIEZJWE1FOiBQb3B1bGF0
ZSBvYmplY3QgZnJvbSBpbnRlcm5hbCBzbG90cy4KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUob3B0aW9ucyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxF
KElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyZmQ1ZTM0ZWE3OTU4NmU0
Nzg5NmZhZmZjNDRlNWU2ZmE2MTU5Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaApAQCAtMCwwICsx
LDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFs
ZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZV9oCisjZGVmaW5lIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZV9oCisKKyNp
ZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgorI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUgOiBwdWJsaWMgSW50bERhdGVUaW1lRm9ybWF0IHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIEludGxEYXRlVGltZUZvcm1hdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGljIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIFN0cnVjdHVyZSopOworCitwcml2YXRlOgorICAgIEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQor
CisjZW5kaWYgLy8gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTM5ZGM1YjE5ZWE0OGVjYjRhNGFlMzE3OTBlMzA5ZWI0YWM3NmFiOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBA
IC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25l
ciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorCisjaWYgRU5BQkxFKElOVEwpCisK
KyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ci5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24u
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1
cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bE51
bWJlckZvcm1hdDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShJbnRsTnVtYmVyRm9ybWF0KSB9OworCitJbnRsTnVtYmVyRm9ybWF0KiBJ
bnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IqIGNvbnN0cnVjdG9yKQoreworICAgIEludGxOdW1iZXJGb3JtYXQqIGZvcm1hdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxOdW1iZXJGb3JtYXQ+KHZtLmhlYXApKSBJbnRsTnVt
YmVyRm9ybWF0KHZtLCBjb25zdHJ1Y3Rvci0+bnVtYmVyRm9ybWF0U3RydWN0dXJlKCkpOworICAg
IGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBmb3JtYXQ7Cit9CisKK1N0
cnVjdHVyZSogSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsTnVtYmVyRm9y
bWF0OjpJbnRsTnVtYmVyRm9ybWF0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
OiBKU0Rlc3RydWN0aWJsZU9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxO
dW1iZXJGb3JtYXQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworfQorCit2b2lkIElu
dGxOdW1iZXJGb3JtYXQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0
PEludGxOdW1iZXJGb3JtYXQqPihjZWxsKS0+SW50bE51bWJlckZvcm1hdDo6fkludGxOdW1iZXJG
b3JtYXQoKTsKK30KKwordm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSW50bE51bWJlckZvcm1hdCog
dGhpc09iamVjdCA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oY2VsbCk7CisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2JvdW5kRm9ybWF0KTsKK30KKwordm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpz
ZXRCb3VuZEZvcm1hdChWTSYgdm0sIEpTQm91bmRGdW5jdGlvbiogZm9ybWF0KQoreworICAgIG1f
Ym91bmRGb3JtYXQuc2V0KHZtLCB0aGlzLCBmb3JtYXQpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICAvLyAxMS4zLjQgRm9ybWF0IE51bWJlciBGdW5jdGlvbnMgKEVDTUEtNDAy
IDIuMCkKKyAgICAvLyAxLiBMZXQgbmYgYmUgdGhlIHRoaXMgdmFsdWUuCisgICAgSW50bE51bWJl
ckZvcm1hdCogZm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oZXhlYy0+
dGhpc1ZhbHVlKCkpOworICAgIC8vIDIuIEFzc2VydDogVHlwZShuZikgaXMgT2JqZWN0IGFuZCBu
ZiBoYXMgYW4gW1tpbml0aWFsaXplZE51bWJlckZvcm1hdF1dIGludGVybmFsIHNsb3Qgd2hvc2Ug
dmFsdWUgaXMgdHJ1ZS4KKyAgICBpZiAoIWZvcm1hdCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisKKyAgICAvLyAzLiBJZiB2YWx1ZSBpcyBu
b3QgcHJvdmlkZWQsIGxldCB2YWx1ZSBiZSB1bmRlZmluZWQuCisgICAgLy8gNC4gTGV0IHggYmUg
VG9OdW1iZXIodmFsdWUpLgorICAgIGRvdWJsZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRv
TnVtYmVyKGV4ZWMpOworICAgIC8vIDUuIFJldHVybklmQWJydXB0KHgpLgorICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKworICAgIC8vIDYuIFJldHVybiBGb3JtYXROdW1iZXIobmYsIHgpLgorICAgIAor
ICAgIC8vIDExLjMuNCBGb3JtYXROdW1iZXIgYWJzdHJhY3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAy
LjApCisgICAgLy8gRklYTUU6IEltcGxlbWVudCBGb3JtYXROdW1iZXIuCisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZhbHVlKS50b1N0cmluZyhleGVjKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2My
NTM4ZjliZmJhMzBlNzQzODIxYjJmMGQxODFlNjM4NzJhMTIwOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaApAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhl
dGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxOdW1iZXJGb3Jt
YXRfaAorI2RlZmluZSBJbnRsTnVtYmVyRm9ybWF0X2gKKworI2lmIEVOQUJMRShJTlRMKQorCisj
aW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvcjsKK2NsYXNzIEpTQm91bmRGdW5jdGlvbjsK
KworY2xhc3MgSW50bE51bWJlckZvcm1hdCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworCisgICAg
c3RhdGljIEludGxOdW1iZXJGb3JtYXQqIGNyZWF0ZShWTSYsIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3RvciopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBKU0Jv
dW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEZvcm1hdC5n
ZXQoKTsgfQorICAgIHZvaWQgc2V0Qm91bmRGb3JtYXQoVk0mLCBKU0JvdW5kRnVuY3Rpb24qKTsK
KworcHJvdGVjdGVkOgorICAgIEludGxOdW1iZXJGb3JtYXQoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0Nl
bGwqKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CisKKyAgICBXcml0ZUJhcnJpZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2JvdW5kRm9ybWF0Owor
fTsKKyAgICAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdEZ1
bmNGb3JtYXROdW1iZXIoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsTnVtYmVyRm9ybWF0X2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4NjM5ZDZiMTRjNzAwN2E4NzEwMjU1Nzdh
YWUyZWQyOWZiY2QyZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTgzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0
ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCIKKworI2lmIEVOQUJMRShJTlRMKQorCisj
aW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisjaW5jbHVk
ZSAiSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMu
aCIKKyNpbmNsdWRlICJMb29rdXAuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIK
KyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFU
SUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqKTsKKwor
fQorCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmbnVtYmVyRm9ybWF0Q29u
c3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1
dC5oCitAYmVnaW4gbnVtYmVyRm9ybWF0Q29uc3RydWN0b3JUYWJsZQorICBzdXBwb3J0ZWRMb2Nh
bGVzT2YgICAgICAgICAgICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRl
ZExvY2FsZXNPZiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCitJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUqIG51bWJlckZvcm1hdFByb3RvdHlwZSwgU3RydWN0dXJlKiBudW1iZXJGb3JtYXRTdHJ1
Y3R1cmUpCit7CisgICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcj4o
dm0uaGVhcCkpIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAg
ICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIG51bWJlckZvcm1hdFByb3RvdHlwZSwg
bnVtYmVyRm9ybWF0U3RydWN0dXJlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0
cnVjdHVyZSogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sK
KyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0lu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBz
dHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIG51bWJlckZvcm1h
dFByb3RvdHlwZSwgU3RydWN0dXJlKiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUpCit7CisgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgiTnVtYmVyRm9ybWF0IikpOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIG51bWJlckZvcm1hdFByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7
CisgICAgbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBudW1iZXJGb3JtYXRT
dHJ1Y3R1cmUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdElu
dGxOdW1iZXJGb3JtYXQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDExLjEuMiBJbnRsLk51
bWJlckZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQorICAgIC8v
IDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2
ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCisgICAg
SlNWYWx1ZSBuZXdUYXJnZXQgPSBleGVjLT5uZXdUYXJnZXQoKTsKKyAgICBpZiAoIW5ld1Rhcmdl
dCB8fCBuZXdUYXJnZXQuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgbmV3VGFyZ2V0ID0gZXhlYy0+
Y2FsbGVlKCk7CisKKyAgICAvLyAyLiBMZXQgbnVtYmVyRm9ybWF0IGJlIE9yZGluYXJ5Q3JlYXRl
RnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJU51bWJlckZvcm1hdFByb3RvdHlwZSUpLgorICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0
ID0gSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpKTsKKyAgICBpZiAobnVtYmVyRm9ybWF0ICYmICFq
c0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KG5ld1RhcmdldCkpIHsK
KyAgICAgICAgSlNWYWx1ZSBwcm90byA9IGFzT2JqZWN0KG5ld1RhcmdldCktPmdldERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKKyAgICAgICAgYXNPYmplY3QobnVtYmVy
Rm9ybWF0KS0+c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soZXhlYywgcHJvdG8pOworICAgIH0K
KworICAgIC8vIDMuIFJldHVybklmQWJydXB0KG51bWJlckZvcm1hdCkuCisgICAgQVNTRVJUKG51
bWJlckZvcm1hdCk7CisKKyAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZU51bWJlckZvcm1hdChu
dW1iZXJGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpLgorICAgIC8vIEZJWE1FOiByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEluaXRpYWxpemVOdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBsb2NhbGVz
LCBvcHRpb25zKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdCk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxOdW1iZXJGb3JtYXQo
RXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDExLjEuMiBJbnRsLk51bWJlckZvcm1hdCAoW2xv
Y2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIElmIE5ld1Rhcmdl
dCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmpl
Y3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCisgICAgLy8gTmV3VGFyZ2V0IGlz
IGFsd2F5cyB1bmRlZmluZWQgd2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlvbi4KKworICAgIC8vIDIu
IExldCBudW1iZXJGb3JtYXQgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFy
Z2V0LCAlTnVtYmVyRm9ybWF0UHJvdG90eXBlJSkuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBJbnRsTnVtYmVyRm9ybWF0Ojpj
cmVhdGUodm0sIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqPihleGVjLT5jYWxs
ZWUoKSkpOworCisgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQobnVtYmVyRm9ybWF0KS4KKyAgICBB
U1NFUlQobnVtYmVyRm9ybWF0KTsKKworICAgIC8vIDQuIFJldHVybiBJbml0aWFsaXplTnVtYmVy
Rm9ybWF0KG51bWJlckZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6IHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSW5pdGlhbGl6ZU51bWJlckZvcm1hdChudW1iZXJGb3JtYXQs
IGxvY2FsZXMsIG9wdGlvbnMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVtYmVy
Rm9ybWF0KTsKK30KKworQ29uc3RydWN0VHlwZSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6
OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkK
K3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEludGxOdW1i
ZXJGb3JtYXQ7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCitDYWxsVHlwZSBJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRh
JiBjYWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsSW50bE51
bWJlckZvcm1hdDsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitib29sIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJuYWxGdW5j
dGlvbj4oZXhlYywgbnVtYmVyRm9ybWF0Q29uc3RydWN0b3JUYWJsZSwganNDYXN0PEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
RnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTEuMi4y
IEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGVzIFssIG9wdGlvbnNd
KSAoRUNNQS00MDIgMi4wKQorCisgICAgLy8gMS4gTGV0IGF2YWlsYWJsZUxvY2FsZXMgYmUgJU51
bWJlckZvcm1hdCUuW1thdmFpbGFibGVMb2NhbGVzXV0uCisgICAgLy8gRklYTUU6IGF2YWlsYWJs
ZSA9IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0QXZhaWxhYmxlTG9jYWxlcygpCisK
KyAgICAvLyAyLiBMZXQgcmVxdWVzdGVkTG9jYWxlcyBiZSBDYW5vbmljYWxpemVMb2NhbGVMaXN0
KGxvY2FsZXMpLgorICAgIC8vIEZJWE1FOiByZXF1ZXN0ZWQgPSBDYW5vbmljYWxpemVMb2NhbGVM
aXN0KGxvY2FsZXMpCisKKyAgICAvLyAzLiBSZXR1cm4gU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFi
bGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBGSVhNRTogcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShTdXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJsZSwgcmVxdWVzdGVk
LCBvcHRpb25zKSk7CisKKyAgICAvLyBSZXR1cm4gZW1wdHkgYXJyYXkgdW50aWwgcHJvcGVybHkg
aW1wbGVtZW50ZWQuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworICAgIEpT
QXJyYXkqIHN1cHBvcnRlZExvY2FsZXMgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVk
KHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKKyAgICBpZiAoIXN1cHBvcnRlZExvY2Fs
ZXMpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcyk7
Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9udW1iZXJGb3JtYXRTdHJ1Y3R1
cmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjc1ZjEwMjE2NGNjZGYxMmNlNTNlNWM5
NDhiNmNhMTE3OTk5YWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw3MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVy
QGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3JfaAorI2RlZmluZSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JfaAorCisjaWYgRU5BQkxF
KElOVEwpCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBJbnRsTnVtYmVyRm9ybWF0OworY2xhc3MgSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZTsKKworY2xhc3MgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yIDogcHVibGljIEludGVy
bmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNl
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGljIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBE
RUNMQVJFX0lORk87CisKKyAgICBTdHJ1Y3R1cmUqIG51bWJlckZvcm1hdFN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLmdldCgpOyB9CisKK3Byb3RlY3Rl
ZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZSosIFN0cnVjdHVyZSopOworCitwcml2YXRlOgorICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0
cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOworICAgIAorICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbnVtYmVyRm9ybWF0U3Ry
dWN0dXJlOworfTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRs
TnVtYmVyRm9ybWF0KEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsSW50bE51bWJlckZvcm1hdChFeGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKworI2VuZGlmIC8vIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3NGNjMzY4ZGM5MTQ5
OWRhNzg4MTAzNzc0ODBjNjcwNzA3NDBjMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMCww
ICsxLDEzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRo
ZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCIKKworI2lmIEVOQUJMRShJTlRM
KQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisj
aW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNp
bmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RS
VUNUSUJMRShJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKTsKKworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChF
eGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSopOworCit9CisK
KyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OnNfaW5m
byA9IHsgIk9iamVjdCIsICZJbnRsTnVtYmVyRm9ybWF0OjpzX2luZm8sICZudW1iZXJGb3JtYXRQ
cm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmgK
K0BiZWdpbiBudW1iZXJGb3JtYXRQcm90b3R5cGVUYWJsZQorICBmb3JtYXQgICAgICAgICAgIElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQgICAgICAgICBEb250RW51bXxBY2Nl
c3NvcgorICByZXNvbHZlZE9wdGlvbnMgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVz
b2x2ZWRPcHRpb25zICBEb250RW51bXxGdW5jdGlvbiAwCitAZW5kCisqLworCitJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cnVj
dHVyZSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6
OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
KyAgICA6IEludGxOdW1iZXJGb3JtYXQodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSop
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCitib29sIEludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCBu
dW1iZXJGb3JtYXRQcm90b3R5cGVUYWJsZSwganNDYXN0PEludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIC8vIDExLjMuMyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUu
Zm9ybWF0IChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gTGV0IG5mIGJlIHRoaXMgTnVtYmVyRm9y
bWF0IG9iamVjdC4KKyAgICBJbnRsTnVtYmVyRm9ybWF0KiBuZiA9IGpzRHluYW1pY0Nhc3Q8SW50
bE51bWJlckZvcm1hdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIW5mKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKyAgICAKKyAg
ICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0ID0gbmYtPmJvdW5kRm9ybWF0KCk7CisgICAg
Ly8gMi4gSWYgbmYuW1tib3VuZEZvcm1hdF1dIGlzIHVuZGVmaW5lZCwKKyAgICBpZiAoIWJvdW5k
Rm9ybWF0KSB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBuZi0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgIC8vIGEu
IExldCBGIGJlIGEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBhcyBkZWZpbmVkIGluIDEx
LjMuNC4KKyAgICAgICAgLy8gYi4gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBp
cyAxLgorICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSwgSW50bE51bWJl
ckZvcm1hdEZ1bmNGb3JtYXROdW1iZXIsIE5vSW50cmluc2ljKTsKKyAgICAgICAgSlNBcnJheSog
Ym91bmRBcmdzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlX
aXRoVW5kZWNpZGVkKSwgMCk7CisgICAgICAgIGlmICghYm91bmRBcmdzKQorICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYykpOworCisg
ICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1
ZcK7KS4KKyAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIG5mLCBib3VuZEFyZ3MsIDEsIEFTQ0lJTGl0ZXJh
bCgiZm9ybWF0IikpOworICAgICAgICAvLyBkLiBTZXQgbmYuW1tib3VuZEZvcm1hdF1dIHRvIGJm
LgorICAgICAgICBuZi0+c2V0Qm91bmRGb3JtYXQodm0sIGJvdW5kRm9ybWF0KTsKKyAgICB9Cisg
ICAgLy8gMy4gUmV0dXJuIG5mLltbYm91bmRGb3JtYXRdXS4KKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGJvdW5kRm9ybWF0KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgLy8gMTEuMy41IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZl
ZE9wdGlvbnMoKSAoRUNNQS00MDIgMi4wKQorICAgIEludGxOdW1iZXJGb3JtYXQqIG5mID0ganNE
eW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlm
ICghbmYpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhl
YykpOworCisgICAgLy8gVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBuZXcgb2JqZWN0IHdob3NlIHBy
b3BlcnRpZXMgYW5kIGF0dHJpYnV0ZXMgYXJlIHNldCBhcyBpZiBjb25zdHJ1Y3RlZCBieSBhbiBv
YmplY3QgbGl0ZXJhbCBhc3NpZ25pbmcgdG8gZWFjaCBvZiB0aGUgZm9sbG93aW5nIHByb3BlcnRp
ZXMgdGhlIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGludGVybmFsIHNsb3Qgb2YgdGhpcyBO
dW1iZXJGb3JtYXQgb2JqZWN0IChzZWUgMTEuNCk6IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBz
dHlsZSwgY3VycmVuY3ksIGN1cnJlbmN5RGlzcGxheSwgbWluaW11bUludGVnZXJEaWdpdHMsIG1p
bmltdW1GcmFjdGlvbkRpZ2l0cywgbWF4aW11bUZyYWN0aW9uRGlnaXRzLCBtaW5pbXVtU2lnbmlm
aWNhbnREaWdpdHMsIG1heGltdW1TaWduaWZpY2FudERpZ2l0cywgYW5kIHVzZUdyb3VwaW5nLiBQ
cm9wZXJ0aWVzIHdob3NlIGNvcnJlc3BvbmRpbmcgaW50ZXJuYWwgc2xvdHMgYXJlIG5vdCBwcmVz
ZW50IGFyZSBub3QgYXNzaWduZWQuCisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KGV4ZWMpOworCisgICAgLy8gRklYTUU6IFBvcHVsYXRlIG9iamVjdCBmcm9t
IGludGVybmFsIHNsb3RzLgorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvcHRpb25zKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OGJjMDUxZmRkYjg4NTJhOWE5NWY5ZjE3ZDk4YWU4Y2I3
ODUyMTE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20p
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZV9oCisjZGVmaW5l
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVfaAorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNs
dWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUgOiBwdWJsaWMgSW50
bE51bWJlckZvcm1hdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRsTnVtYmVyRm9ybWF0IEJh
c2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMg
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0
ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFN0cnVjdHVyZSopOworCitwcml2YXRl
OgorICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBFTkFCTEUoSU5UTCkKKworI2VuZGlmIC8vIEludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRl
eCAxMmRhOTM4ZmE4MTNhZTMxZjM3NTZkYjA0ZGYwN2ZiYjA5OTJkZDBjLi5iYTQ1N2U3MjU2MDkx
MDc4OTEyMmY1MTM3NWVlOWZkYzEwMjRkMzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsT2JqZWN0LmNwcApAQCAtMjgsNiArMjgsMTYgQEAKIAogI2lmIEVOQUJMRShJ
TlRMKQogCisjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsQ29s
bGF0b3IuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUg
IkludGxDb2xsYXRvclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5o
IgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAi
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1h
dC5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUg
IkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCkBAIC00OCwx
NyArNTgsNDMgQEAgSW50bE9iamVjdDo6SW50bE9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogewogfQogCi1JbnRsT2JqZWN0KiBJbnRsT2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK0ludGxPYmplY3QqIEludGxPYmplY3Q6OmNyZWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ewogICAgIEludGxPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPElu
dGxPYmplY3Q+KHZtLmhlYXApKSBJbnRsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwotICAgIG9iamVj
dC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIAotdm9pZCBJbnRsT2JqZWN0Ojpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCit2b2lkIEludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworCisgICAgLy8gU2V0
IHVwIENvbGxhdG9yLgorICAgIEludGxDb2xsYXRvclByb3RvdHlwZSogY29sbGF0b3JQcm90b3R5
cGUgPSBJbnRsQ29sbGF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBJbnRs
Q29sbGF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgU3RydWN0dXJlKiBjb2xsYXRvclN0
cnVjdHVyZSA9IEludGxDb2xsYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3Qs
IGNvbGxhdG9yUHJvdG90eXBlKTsKKyAgICBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciogY29sbGF0
b3JDb25zdHJ1Y3RvciA9IEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxD
b2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwgY29sbGF0b3JQcm90b3R5cGUsIGNvbGxh
dG9yU3RydWN0dXJlKTsKKworICAgIGNvbGxhdG9yUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGNvbGxhdG9yQ29u
c3RydWN0b3IsIERvbnRFbnVtKTsKKworICAgIC8vIFNldCB1cCBOdW1iZXJGb3JtYXQuCisgICAg
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogbnVtYmVyRm9ybWF0UHJvdG90eXBlID0gSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgU3RydWN0dXJlKiBudW1iZXJGb3JtYXRT
dHJ1Y3R1cmUgPSBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9i
amVjdCwgbnVtYmVyRm9ybWF0UHJvdG90eXBlKTsKKyAgICBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IqIG51bWJlckZvcm1hdENvbnN0cnVjdG9yID0gSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yOjpjcmVhdGUodm0sIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSks
IG51bWJlckZvcm1hdFByb3RvdHlwZSwgbnVtYmVyRm9ybWF0U3RydWN0dXJlKTsKKworICAgIG51
bWJlckZvcm1hdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBudW1iZXJGb3JtYXRDb25zdHJ1Y3RvciwgRG9udEVu
dW0pOworCisgICAgLy8gU2V0IHVwIERhdGVUaW1lRm9ybWF0LgorICAgIEludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZSogZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUgPSBJbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qt
Pm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVj
dHVyZSA9IEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmpl
Y3QsIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlKTsKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3RvciogZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciA9IEludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3Rv
dHlwZSgpKSwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJl
KTsKKworICAgIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGRhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IsIERvbnRFbnVtKTsKKworICAgIC8vIDguMSBQcm9wZXJ0aWVzIG9mIHRoZSBJbnRs
IE9iamVjdCAoRUNNQS00MDIgMi4wKQorICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5Db2xsYXRvciwgY29sbGF0b3JDb25zdHJ1Y3RvciwgRG9udEVu
dW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5OdW1iZXJGb3JtYXQsIG51bWJlckZvcm1hdENvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkRhdGVUaW1l
Rm9ybWF0LCBkYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiB9CiAKIFN0cnVj
dHVyZSogSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsT2JqZWN0LmgKaW5kZXggZjQ1YjlhYjY0OTAyMjhlZGVhNTdhYjJlMGJlOWMw
YjVhODllMmZjMC4uODM0Mjg1NDJiMmQwZmJjN2U1YjE0NGEzNmJjYmI4NmVkZmNiYmU4MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaApAQCAtMzIsMTggKzMy
LDI1IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
cjsKK2NsYXNzIEludGxDb2xsYXRvclByb3RvdHlwZTsKK2NsYXNzIEludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yOworY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOworY2xhc3Mg
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOworY2xhc3MgSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZTsKKwogY2xhc3MgSW50bE9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdDsKIAotICAgIHN0YXRpYyBJbnRsT2JqZWN0KiBjcmVhdGUo
Vk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgSW50bE9iamVjdCogY3JlYXRlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9J
TkZPOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogCiBwcml2YXRlOgogICAg
IEludGxPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAwNDNlOTM4OWNlYzY5MDU4OWE1NmEz
OGFjNWIxODk2M2YxZmZiYWM2Li5mMTJiNmQzNGNmYTlmMDYzMTA3YjFiM2FiMTY2NTFiOGY4YjIw
OWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCkBAIC00NDcsNyArNDQ3LDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZXZhbCwgbV9l
dmFsRnVuY3Rpb24uZ2V0KCksIERvbnRFbnVtKTsKICAgICAKICNpZiBFTkFCTEUoSU5UTCkKLSAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+SW50bCwg
SW50bE9iamVjdDo6Y3JlYXRlKHZtLCBJbnRsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+SW50bCwgSW50bE9iamVjdDo6
Y3JlYXRlKHZtLCB0aGlzLCBJbnRsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1f
b2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKICNlbmRpZiAvLyBFTkFCTEUoSU5U
TCkKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
SlNPTiwgSlNPTk9iamVjdDo6Y3JlYXRlKHZtLCBKU09OT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+TWF0aCwgTWF0aE9i
amVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBNYXRoT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291
cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXgg
MTllNzM3NTI2NjU5MjlhYzdmMzliMDk1NGQ5OTUxZTQ5MTdkNGEzNC4uMDU2NTRlYWM2YjU1OTk0
NjIwZDRkMzUwMWM4ZmZiNmIxMmQxNmM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTExNiw3ICsxMTYsNyBA
QCBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEwMDAgPSA7CiBFTkFC
TEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDExMDAgPSBFTkFCTEVfV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUOwogRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNv
c3hfMTAxMjAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIAotRU5BQkxFX0lO
VEwgPSA7CitFTkFCTEVfSU5UTCA9IEVOQUJMRV9JTlRMOwogCiBFTkFCTEVfSU9TX0dFU1RVUkVf
RVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lU
SF9JTlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxfU0RLKSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVf
RVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMgPSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZF
TlRTOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCAxOWU3Mzc1MjY2NTkyOWFjN2YzOWIwOTU0ZDk5NTFl
NDkxN2Q0YTM0Li4wNTY1NGVhYzZiNTU5OTQ2MjBkNGQzNTAxYzhmZmI2YjEyZDE2YzdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZwpAQCAtMTE2LDcgKzExNiw3IEBAIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFD
S19UQVJHRVRfbWFjb3N4XzEwMTAwMCA9IDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJH
RVRfbWFjb3N4XzEwMTEwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiBFTkFC
TEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEyMDAgPSBFTkFCTEVfV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUOwogCi1FTkFCTEVfSU5UTCA9IDsKK0VOQUJMRV9JTlRMID0gRU5B
QkxFX0lOVEw7CiAKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNbc2RrPWlwaG9uZSpdID0gJChF
TkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES18kKFVTRV9JTlRF
Uk5BTF9TREspKTsKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxf
U0RLX1lFUyA9IEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9X
ZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IDE5ZTcz
NzUyNjY1OTI5YWM3ZjM5YjA5NTRkOTk1MWU0OTE3ZDRhMzQuLjA1NjU0ZWFjNmI1NTk5NDYyMGQ0
ZDM1MDFjOGZmYjZiMTJkMTZjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0xMTYsNyArMTE2LDcgQEAgRU5B
QkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMDAwID0gOwogRU5BQkxFX1dJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMTAwID0gRU5BQkxFX1dJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEw
MTIwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiAKLUVOQUJMRV9JTlRMID0g
OworRU5BQkxFX0lOVEwgPSBFTkFCTEVfSU5UTDsKIAogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5U
U1tzZGs9aXBob25lKl0gPSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5U
RVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFMX1NESykpOwogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5U
U19pb3NfV0lUSF9JTlRFUk5BTF9TREtfWUVTID0gRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZSBiL1NvdXJjZS9j
bWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQppbmRleCA1ZDZlN2VhZjI4YjRmNThhYTYyOTk5ZjVj
M2U0NjU0ODM4MGU5MTA2Li4yYzY0YjMxNzMzYTQ3MDk4ODc3ZTkyZDkxNWI5YjhjY2ZkNTNmZjdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKKysrIGIvU291
cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCkBAIC05OCw3ICs5OCw3IEBAIG1hY3JvKFdF
QktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lOUFVU
X1RZUEVfTU9OVEggIlRvZ2dsZSBtb250aCB0eXBlIDxpbnB1dD4gc3VwcG9ydCIgUFJJVkFURSBP
RkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSAiVG9n
Z2xlIHRpbWUgdHlwZSA8aW5wdXQ+IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9P
UFRJT05fREVGSU5FKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUsgIlRvZ2dsZSB3ZWVrIHR5cGUgPGlu
cHV0PiBzdXBwb3J0IiBQUklWQVRFIE9GRikKLSAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFC
TEVfSU5UTCAiVG9nZ2xlIEludGwgc3VwcG9ydCIgUFJJVkFURSBPRkYpCisgICAgV0VCS0lUX09Q
VElPTl9ERUZJTkUoRU5BQkxFX0lOVEwgIlRvZ2dsZSBJbnRsIHN1cHBvcnQiIFBSSVZBVEUgT04p
CiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lPU19BSVJQTEFZICJUb2dnbGUgaU9T
IGFpcnBsYXkgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUo
RU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcgIlRvZ2dsZSBpT1MgdGV4dCBhdXRvc2l6aW5nIHN1
cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9KSVQg
IkVuYWJsZSBKdXN0SW5UaW1lIGphdmFzY3JpcHQgc3VwcG9ydCIgUFJJVkFURSBPTikKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjNTI5ODQxYmNi
ZWVlOWFiYzBiMjIwYTAxZjFhODBlNGU4NzkyZGRjLi5hMWFkMmRjMGRjM2U3YmNmMjUyYmUwNzQx
M2M3NTk0ZmYwMjYyMTFlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDctMjMgIEFuZHkgVmFuV2Fnb25lciAg
PHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlw
ZXMgZm9yIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgZmxhZyBub3cgdGhhdCB0
aGUgYmFzaWMgb2JqZWN0cyBhcmUgaW4gcGxhY2UuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHBlcmwvRmVhdHVyZUxpc3QucG06IEVuYWJsZWQgSU5UTAorCiAyMDE1LTA3LTIzICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIEltcGxlbWVudCBw
cm9wZXIgSGlnaCBEUEkgc3VwcG9ydCBmZWF0dXJlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0Zl
YXR1cmVMaXN0LnBtCmluZGV4IGVmZTljODU1NzdiM2ZlMzMzYWU0MjRlM2FkNTg3YWIzNjU4NTFi
YmUuLjdmZWQyMzkzZjViN2EzOGE3OWZmNmI0ODM4YjhhOWVkZjBjYTU3MTQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KQEAgLTI4Nyw3ICsyODcsNyBAQCBteSBAZmVh
dHVyZXMgPSAoCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlBVVF9UWVBFX1dFRUsiLCBkZWZh
dWx0ID0+IDAsIHZhbHVlID0+IFwkaW5wdXRUeXBlV2Vla1N1cHBvcnQgfSwKIAogICAgIHsgb3B0
aW9uID0+ICJpbnRsIiwgZGVzYyA9PiAiVG9nZ2xlIEludGwgc3VwcG9ydCIsCi0gICAgICBkZWZp
bmUgPT4gIkVOQUJMRV9JTlRMIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGludGxTdXBwb3J0
IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlRMIiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9
PiBcJGludGxTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibGVnYWN5LW5vdGlmaWNhdGlv
bnMiLCBkZXNjID0+ICJUb2dnbGUgTGVnYWN5IE5vdGlmaWNhdGlvbnMgc3VwcG9ydCIsCiAgICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyIsIGRlZmF1bHQgPT4gMCwg
dmFsdWUgPT4gXCRsZWdhY3lOb3RpZmljYXRpb25zU3VwcG9ydCB9LApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFiZjMxZWZi
NGM4MWVjY2E3YjcyYjRiZWQ1NzBmOGQyZjkzMDIxYjAuLmEzYjE0ZmNjOTk0NTI2NDI3Zjg3MzJi
Njk2NzMyOTg0MDQwOTA5ZmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNS0wNy0yMyAgQW5k
eSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBiYXNpYyB0eXBlcyBmb3IgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjkyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0
cyBmb3IgSW50bC5Db2xsYXRvciwgSW50bC5OdW1iZXJGb3JtYXQsIGFuZCBJbnRsLkRhdGVUaW1l
Rm9ybWF0CisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOiBFbmFibGVkIGludGwgdGVzdHMu
CisgICAgICAgICoganMvaW50bC1jb2xsYXRvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGpzL2ludGwtY29sbGF0b3IuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvaW50bC1kYXRl
dGltZWZvcm1hdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2ludGwtZGF0ZXRp
bWVmb3JtYXQuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvaW50bC1leHBlY3RlZC50eHQ6IFVw
ZGF0ZWQuCisgICAgICAgICoganMvaW50bC1udW1iZXJmb3JtYXQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9pbnRsLW51bWJlcmZvcm1hdC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBqcy9zY3JpcHQtdGVzdHMvaW50bC1jb2xsYXRvci5qczogQWRkZWQuCisgICAgICAgICoganMv
c2NyaXB0LXRlc3RzL2ludGwtZGF0ZXRpbWVmb3JtYXQuanM6IEFkZGVkLgorICAgICAgICAqIGpz
L3NjcmlwdC10ZXN0cy9pbnRsLW51bWJlcmZvcm1hdC5qczogQWRkZWQuCisgICAgICAgICoganMv
c2NyaXB0LXRlc3RzL2ludGwuanM6IEFkZGVkIHRlc3RzIGZvciBDb2xsYXRvciwgTnVtYmVyRm9y
bWF0LCBhbmQgRGF0ZVRpbWVGb3JtYXQuCisKIDIwMTUtMDctMjIgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgTGF5ZXIgei1vcmRlcmluZyBpcyBpbmNv
cnJlY3Qgd2hlbiBzY3JvbGxpbmcgb24gcGFnZSB3aXRpaCBwb3NpdGlvbjpmaXhlZApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggYTljNzNlOTA0MjQyOGY1OWU5NDQwY2FlMjZhNzQyYzAzZmE4NTczYi4u
MTg1MmRlMThlZWQwNWI1NjE3MGQxNDVjOWY0NGJmNjZhMzBiNDIxNiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCkBAIC01MzAsNiArNTMwLDMgQEAgd2Via2l0Lm9yZy9iLzE0NjE4MiBlZGl0aW5nL3NlbGVj
dGlvbi9sZWFrLWRvY3VtZW50LXdpdGgtc2VsZWN0aW9uLWluc2lkZS5odG1sIFsKIAogd2Via2l0
Lm9yZy9iLzE0NjQzNCBmYXN0L2RvbS9IVE1MSW1hZ2VFbGVtZW50L3NpemVzIFsgU2tpcCBdCiAK
LSMgSW50bCBpcyBub3QgZW5hYmxlZCB5ZXQKLWpzL2ludGwuaHRtbCBbIFNraXAgXQotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9pbnRsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pz
L2ludGwtZXhwZWN0ZWQudHh0CmluZGV4IGIyNmFmODYzMzY1MWIxNDBjOGYxMGI4OTdhOTA4ZjBj
YThjYWE5ZDYuLmFjNGIwNDQ4NjFmMDFkNWQzNmY3ZDRhM2Y3NjM3ZWVlNzZhZTc2MTEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2pzL2ludGwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2pzL2ludGwtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotVGhpcyB0ZXN0IGNoZWNrcyB0
aGUgYmVoYXZpb3Igb2YgdGhlIEludGwgb2JqZWN0IGFzIGRlc2NyaWJlZCBpbiA4IG9mIHRoZSBF
Q01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSSBTcGVjaWZpY2F0aW9uLgorVGhpcyB0
ZXN0IGNoZWNrcyB0aGUgYmVoYXZpb3Igb2YgdGhlIEludGwgb2JqZWN0IGFzIGRlc2NyaWJlZCBp
biB0aGUgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkgU3BlY2lmaWNhdGlvbiAo
RUNNQS00MDIgMi4wKS4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCkBAIC05LDYgKzks
NyBAQCBQQVNTIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChJbnRsKSBpcyAnW29iamVj
dCBPYmplY3RdJwogUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2YoSW50bCkgPT09IE9iamVjdC5w
cm90b3R5cGUgaXMgdHJ1ZQogUEFTUyBuZXcgSW50bCB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBPYmplY3QgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBJbnRsJykuCiBQ
QVNTIEludGwoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBJbnRsIGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gJ0ludGwoKScsICdJbnRsJyBpcyBhbiBpbnN0YW5jZSBvZiBPYmplY3QpLgorUEFT
UyBPYmplY3Qua2V5cyhJbnRsKS5sZW5ndGggaXMgMAogUEFTUyBkZWxldGUgSW50bDsgaXMgdHJ1
ZQogUEFTUyAnSW50bCcgaW4gZ2xvYmFsKCkgaXMgZmFsc2UKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRs
LmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwuanMKaW5kZXggOGE0Y2Y1ODRl
MmYwOWNlYzg3ZDU1ZjkzMjI2NDQzZWQ3MTgzMmUzOS4uMDk2ODI4NzI4ODYwYjBjYzg5ODI3OTdj
OWM0ZGY5NzM4MmQ4ODg1NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2ludGwuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwuanMKQEAgLTEs
MjMgKzEsMjYgQEAKLS8vIFRoaXMgZmVhdHVyZSBpc24ndCBlbmFibGVkIHlldC4KLS8vQCBza2lw
CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNoZWNrcyB0aGUgYmVoYXZpb3Igb2YgdGhlIEludGwg
b2JqZWN0IGFzIGRlc2NyaWJlZCBpbiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlv
biBBUEkgU3BlY2lmaWNhdGlvbiAoRUNNQS00MDIgMi4wKS4iKTsKIAotZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBJbnRsIG9iamVjdCBhcyBkZXNjcmli
ZWQgaW4gOCBvZiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkgU3BlY2lm
aWNhdGlvbi4iKTsKKy8vIDggVGhlIEludGwgT2JqZWN0CiAKLS8vIFRoZSBJbnRsIG9iamVjdCBp
cyBhIHN0YW5kYXJkIGJ1aWx0LWluIG9iamVjdCB0aGF0IGlzIHRoZSBpbml0aWFsIHZhbHVlIG9m
IHRoZSBJbnRsIHByb3BlcnR5IG9mIHRoZSBnbG9iYWwgb2JqZWN0LgorLy8gVGhlIEludGwgb2Jq
ZWN0IGlzIGEgc2luZ2xlIG9yZGluYXJ5IG9iamVjdC4KIHNob3VsZEJlVHlwZSgiSW50bCIsICJP
YmplY3QiKTsKIHNob3VsZEJlKCJ0eXBlb2YgSW50bCIsICInb2JqZWN0JyIpOwogc2hvdWxkQmUo
Ik9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChJbnRsKSIsICInW29iamVjdCBPYmplY3Rd
JyIpOwogCi0vLyBUaGUgdmFsdWUgb2YgdGhlIFtbUHJvdG90eXBlXV0gaW50ZXJuYWwgcHJvcGVy
dHkgb2YgdGhlIEludGwgb2JqZWN0IGlzIHRoZSBidWlsdC1pbiBPYmplY3QgcHJvdG90eXBlIG9i
amVjdCBzcGVjaWZpZWQgYnkgdGhlIEVDTUFTY3JpcHQgTGFuZ3VhZ2UgU3BlY2lmaWNhdGlvbi4K
Ky8vIFRoZSB2YWx1ZSBvZiB0aGUgW1tQcm90b3R5cGVdXSBpbnRlcm5hbCBzbG90IG9mIHRoZSBJ
bnRsIG9iamVjdCBpcyB0aGUgaW50cmluc2ljIG9iamVjdCAlT2JqZWN0UHJvdG90eXBlJS4KIHNo
b3VsZEJlVHJ1ZSgiT2JqZWN0LmdldFByb3RvdHlwZU9mKEludGwpID09PSBPYmplY3QucHJvdG90
eXBlIik7CiAKLS8vIFRoZSBJbnRsIG9iamVjdCBkb2VzIG5vdCBoYXZlIGEgW1tDb25zdHJ1Y3Rd
XSBpbnRlcm5hbCBwcm9wZXJ0eTsgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHVzZSB0aGUgSW50bCBv
YmplY3QgYXMgYSBjb25zdHJ1Y3RvciB3aXRoIHRoZSBuZXcgb3BlcmF0b3IuCisvLyBUaGUgSW50
bCBvYmplY3QgaXMgbm90IGEgZnVuY3Rpb24gb2JqZWN0LgorLy8gSXQgZG9lcyBub3QgaGF2ZSBh
IFtbQ29uc3RydWN0XV0gaW50ZXJuYWwgbWV0aG9kOyBpdCBpcyBub3QgcG9zc2libGUgdG8gdXNl
IHRoZSBJbnRsIG9iamVjdCBhcyBhIGNvbnN0cnVjdG9yIHdpdGggdGhlIG5ldyBvcGVyYXRvci4K
IHNob3VsZFRocm93KCJuZXcgSW50bCIsICInVHlwZUVycm9yOiBPYmplY3QgaXMgbm90IGEgY29u
c3RydWN0b3IgKGV2YWx1YXRpbmcgXFwnbmV3IEludGxcXCcpJyIpOwogCi0vLyBUaGUgSW50bCBv
YmplY3QgZG9lcyBub3QgaGF2ZSBhIFtbQ2FsbF1dIGludGVybmFsIHByb3BlcnR5OyBpdCBpcyBu
b3QgcG9zc2libGUgdG8gaW52b2tlIHRoZSBJbnRsIG9iamVjdCBhcyBhIGZ1bmN0aW9uLgorLy8g
VGhlIEludGwgb2JqZWN0IGRvZXMgbm90IGhhdmUgYSBbW0NhbGxdXSBpbnRlcm5hbCBtZXRob2Q7
IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBpbnZva2UgdGhlIEludGwgb2JqZWN0IGFzIGEgZnVuY3Rp
b24uCiBzaG91bGRUaHJvdygiSW50bCgpIiwgIidUeXBlRXJyb3I6IEludGwgaXMgbm90IGEgZnVu
Y3Rpb24uIChJbiBcXCdJbnRsKClcXCcsIFxcJ0ludGxcXCcgaXMgYW4gaW5zdGFuY2Ugb2YgT2Jq
ZWN0KSciKTsKIAotLy8gaXMgZGVsZXRhYmxlLCBpbmZlcnJlZCBmcm9tIHVzZSBvZiAiSW5pdGlh
bCIgaW4gc3BlYywgY29uc2lzdGVudCB3aXRoIG90aGVyIGltcGxlbWVudGF0aW9ucworLy8gSGFz
IG9ubHkgdGhlIGJ1aWx0LWluIENvbGxhdG9yLCBEYXRlVGltZUZvcm1hdCwgYW5kIE51bWJlckZv
cm1hdCwgd2hpY2ggYXJlIG5vdCBlbnVtZXJhYmxlLgorc2hvdWxkQmUoIk9iamVjdC5rZXlzKElu
dGwpLmxlbmd0aCIsICIwIik7CisKKy8vIElzIGRlbGV0YWJsZSwgaW5mZXJyZWQgZnJvbSB1c2Ug
b2YgIkluaXRpYWwiIGluIHNwZWMsIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBpbXBsZW1lbnRhdGlv
bnMuCiB2YXIgX19JbnRsID0gSW50bDsKIHNob3VsZEJlVHJ1ZSgiZGVsZXRlIEludGw7Iik7CiAK
QEAgLTI1LDMgKzI4LDQgQEAgZnVuY3Rpb24gZ2xvYmFsKCkgeyByZXR1cm4gdGhpczsgfQogc2hv
dWxkQmVGYWxzZSgiJ0ludGwnIGluIGdsb2JhbCgpIik7CiAKIEludGwgPSBfX0ludGw7CisKZGlm
ZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBhOTBhZDM4YjNjYmM0MDhhZmJi
ZGM2YzI0MzkzNzkxNWNhMjM1Njk0Li40MGUyYmY2MDkxMzI2NDRjMDhhZTZhNWM5Y2VjZDE3MmE5
NTU2ZTM5IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTUtMDctMjMgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVyQGdtYWls
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3JpcHQgSW50
ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBFbmFibGUgZmxhZyBub3cgdGhhdCB0aGUgYmFzaWMgb2JqZWN0cyBhcmUg
aW4gcGxhY2UuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2U6
IGVuYWJsZSBJTlRMCisKIDIwMTUtMDctMjIgIFN1a29sc2FrIFNha3NodXdvbmcgIDxzdWtvbHNh
a0BnbWFpbC5jb20+CiAKICAgICAgICAgQWRkIEVOQUJMRV9XRUJBU1NFTUJMWSBmZWF0dXJlIGZs
YWcgZm9yIFdlYkFzc2VtYmx5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257475</attachid>
            <date>2015-07-24 13:58:22 -0700</date>
            <delta_ts>2015-07-28 19:06:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146926-20150724145704.patch</filename>
            <type>text/plain</type>
            <size>172821</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3MjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZmY2YzFkZGMxZjhkZmUyMDJmNGRmYzcxMjFjMTk0M2Y3OTBhZTQ2Li43MjA2ZDdkZGE3ZjhjNjMw
YWVhYjdiNjk1OTM4MjljNjc2NGM0ZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDQgQEAKKzIwMTUtMDctMjQgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVy
QGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3Jp
cHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRzIGJhc2ljIHR5cGVzIGZvciBFQ01BLTQwMiAybmQgZWRp
dGlvbiwgYnV0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZnVsbCBsb2NhbGUtYXdhcmUgZmVhdHVy
ZXMgeWV0LgorICAgICAgICBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS00
MDIvMi4wL0VDTUEtNDAyLnBkZgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIG5l
dyBJbnRsIGZpbGVzLgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnOiBFbmFibGUgSU5UTC4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBBZGRl
ZCBJbnRsIGZpbGVzLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IEFkZGVkIEludGwgZmlsZXMuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOiBBZGRlZCBJbnRsIGZpbGVzLgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOiBB
ZGRlZCBJbnRsIGZpbGVzLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDog
QWRkZWQgQ29sbGF0b3IsIE51bWJlckZvcm1hdCwgYW5kIERhdGVUaW1lRm9ybWF0LgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDogTWFkZSBEYXRlLm5vdyBwdWJsaWMuCisg
ICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaDogTWFkZSBEYXRlLm5vdyBwdWJsaWMu
CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SW50bENvbGxhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6SW50bENvbGxhdG9y
KToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChKU0M6OkludGxDb2xsYXRvcjo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRv
cjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6c2V0Qm91bmRD
b21wYXJlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yRnVuY0NvbXBhcmUpOiBBZGRlZCBw
bGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiB1c2luZyBjb2RlUG9pbnRDb21wYXJlLgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3I6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpib3VuZENv
bXBhcmUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6SW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJbnRsQ29sbGF0b3IpOiBBZGRlZCBDb2xs
YXRvciBjb25zdHJ1Y3RvciAoMTAuMS4yKS4KKyAgICAgICAgKEpTQzo6Y2FsbEludGxDb2xsYXRv
cik6IEFkZGVkIENvbGxhdG9yIGNvbnN0cnVjdG9yICgxMC4xLjIpLgorICAgICAgICAoSlNDOjpJ
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChKU0M6
OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6Oklu
dGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlND
OjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YpOiBBZGRlZCBw
bGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcgW10uCisgICAgICAgIChKU0M6Oklu
dGxDb2xsYXRvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1l
L0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3JDb25zdHJ1Y3Rvcjo6Y29sbGF0b3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxDb2xs
YXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5
cGU6OkludGxDb2xsYXRvclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvclBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90
b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvclBy
b3RvdHlwZUdldHRlckNvbXBhcmUpOiBBZGRlZCBjb21wYXJlIGdldHRlciAoMTAuMy4zKQorICAg
ICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKTogQWRk
ZWQgcGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIHt9LgorICAgICAgICAqIHJ1
bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxEYXRlVGlt
ZUZvcm1hdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0OjpjcmVh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OkludGxEYXRl
VGltZUZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRlc3Ryb3kpOgorICAg
ICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNldEJvdW5kRm9ybWF0KToKKyAgICAgICAgKEpTQzo6
SW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lKTogQWRkZWQgcGxhY2Vob2xkZXIg
aW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIG5ldyBEYXRlKHZhbHVlKS50b1N0cmluZygpLgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Lmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bERh
dGVUaW1lRm9ybWF0Ojpib3VuZEZvcm1hdCk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdCk6IEFkZGVk
IERhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yICgxMi4xLjIpLgorICAgICAgICAoSlNDOjpjYWxs
SW50bERhdGVUaW1lRm9ybWF0KTogQWRkZWQgRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgKDEy
LjEuMikuCisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpnZXRD
b25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6IEFkZGVkIHBsYWNlaG9sZGVy
IGltcGxlbWVudGF0aW9uIHJldHVybmluZyBbXS4KKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6SW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KTogQWRkZWQgZm9ybWF0IGdldHRlciAoMTIuMy4zKS4K
KyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0
aW9ucyk6IEFkZGVkIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyB7fS4KKyAg
ICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZv
cm1hdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6
SW50bE51bWJlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6ZGVzdHJveSk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzZXRCb3VuZEZvcm1hdCk6CisgICAgICAgIChKU0M6Oklu
dGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyKTogQWRkZWQgcGxhY2Vob2xkZXIgaW1wbGVt
ZW50YXRpb24gcmV0dXJuaW5nIE51bWJlcih2YWx1ZSkudG9TdHJpbmcoKS4KKyAgICAgICAgKiBy
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXQ6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6
Ym91bmRGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3I6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KTogQWRkZWQgTnVtYmVyRm9ybWF0IGNvbnN0cnVjdG9yICgx
MS4xLjIpLgorICAgICAgICAoSlNDOjpjYWxsSW50bE51bWJlckZvcm1hdCk6IEFkZGVkIE51bWJl
ckZvcm1hdCBjb25zdHJ1Y3RvciAoMTEuMS4yKS4KKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6SW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6IEFk
ZGVkIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyBbXS4KKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpudW1iZXJGb3JtYXRTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlR2V0dGVyRm9ybWF0KTogQWRkZWQgZm9ybWF0IGdldHRlciAoMTEuMy4zKS4KKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOiBBZGRl
ZCBwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcge30uCisgICAgICAgICogcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRp
bWUvSW50bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKTogQWRkZWQgQ29sbGF0b3Is
IE51bWJlckZvcm1hdCwgYW5kIERhdGVUaW1lRm9ybWF0IHByb3BlcnRpZXMgKDguMSkuCisgICAg
ICAgIChKU0M6OkludGxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bE9iamVjdC5oOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0Ojpjb2xsYXRvckNvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6Y29sbGF0b3JQcm90b3R5cGUpOgorICAg
ICAgICAoSlNDOjpJbnRsT2JqZWN0Ojpjb2xsYXRvclN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkludGxPYmplY3Q6Om51bWJlckZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50
bE9iamVjdDo6bnVtYmVyRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVj
dDo6bnVtYmVyRm9ybWF0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6ZGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmRhdGVU
aW1lRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6ZGF0ZVRpbWVG
b3JtYXRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisKIDIwMTUtMDctMjMgIFN1a29s
c2FrIFNha3NodXdvbmcgIDxzdWtvbHNha0BnbWFpbC5jb20+CiAKICAgICAgICAgSW1wbGVtZW50
IFdlYkFzc2VtYmx5IG1vZHVsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZTgxZjk0M2U0YzJlZjE1YTAxYzMx
ZTRhZmIzNDExYWRmZThmMjg5Li43OWU0YzliMjFiOWIzMmMxNjJkMzBmYjUzZDg0M2RkZDkwMGRl
MjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDctMjQgIEFuZHkgVmFuV2Fn
b25lciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFz
aWMgdHlwZXMgZm9yIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25z
L0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOiBFbmFibGVkIElOVEwuCisKIDIwMTUtMDctMjEgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgTm90aWZ5IHRoZSBVSSBk
ZWxlZ2F0ZSB3aGVuIGEgTWVkaWFEb2N1bWVudCdzIG5hdHVyYWwgc2l6ZSBjaGFuZ2VzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKaW5kZXggNjc1MjMyZTdjNmU1NWIwODE2MjA5ZDI0MDc4M2RhZDliZjFmNTg3NC4u
YjU4NTAzYzEzNzQ1OTRmN2UxZjUzMTFiNTc0NTAxZTNiYTkyZDA2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTA3LTI0ICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxl
Y3JhZnRlckBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHR5cGVzIGZvciBF
Q01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2OTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZzogRW5hYmxlZCBJTlRMLgorCiAyMDE1LTA3LTIyICBTdWtvbHNhayBTYWtzaHV3
b25nICA8c3Vrb2xzYWtAZ21haWwuY29tPgogCiAgICAgICAgIEFkZCBFTkFCTEVfV0VCQVNTRU1C
TFkgZmVhdHVyZSBmbGFnIGZvciBXZWJBc3NlbWJseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGY2ZWU0ZTY5NjY0
ZTE1MjEyOTU0ZTdjMDUzNmUwM2MyYjRmNTQ1NzQuLjdhOGU4M2JmNzA5MjZiMDU5YzFkNzk3NGUx
ZDI1YjNiYzkwZWUxOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wNy0yNCAg
QW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIElt
cGxlbWVudCBiYXNpYyB0eXBlcyBmb3IgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBB
UEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Njky
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6IEVuYWJsZWQgSU5UTC4KKwogMjAx
NS0wNy0yMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBOb3Rp
ZnkgdGhlIFVJIGRlbGVnYXRlIHdoZW4gYSBNZWRpYURvY3VtZW50J3MgbmF0dXJhbCBzaXplIGNo
YW5nZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmMzI5NWU1Zjg1YzQw
NjhiZjFlMGFiZDFkY2UxOTZkNGJkMzUzYmQ3Li4zNTU5MTRiYzY0N2ZkZDYyOWI4ZjU5MWEzZWRj
OTA2ODExMmNiMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00Nzcs
NiArNDc3LDE1IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50
aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCiAgICAgcnVudGltZS9JbnRlbmRlZFN0cnVjdHVy
ZUNoYWluLmNwcAogICAgIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKKyAgICBydW50aW1l
L0ludGxDb2xsYXRvci5jcHAKKyAgICBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNw
cAorICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0LmNwcAorICAgIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IuY3BwCisgICAgcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisg
ICAgcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorICAgIHJ1bnRpbWUvSW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5jcHAKICAgICBydW50aW1lL0ludGxPYmplY3QuY3BwCiAgICAgcnVudGltZS9JdGVyYXRvck9w
ZXJhdGlvbnMuY3BwCiAgICAgcnVudGltZS9JdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTYyMSw2
ICs2MzAsMTIgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9GSUxFUwogICAgIHJ1bnRpbWUvRGF0
ZUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKICAgICBydW50
aW1lL0Vycm9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0
b3IuY3BwCisgICAgcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCisgICAgcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCiAg
ICAgcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCiAgICAgcnVudGltZS9KU09OT2JqZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCmluZGV4IDE5ZTczNzUyNjY1OTI5YWM3ZjM5YjA5NTRkOTk1MWU0OTE3ZDRhMzQuLjA1NjU0
ZWFjNmI1NTk5NDYyMGQ0ZDM1MDFjOGZmYjZiMTJkMTZjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKQEAgLTExNiw3ICsxMTYsNyBAQCBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
X21hY29zeF8xMDEwMDAgPSA7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29z
eF8xMDExMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogRU5BQkxFX1dJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVDsKIAotRU5BQkxFX0lOVEwgPSA7CitFTkFCTEVfSU5UTCA9IEVOQUJMRV9JTlRM
OwogCiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX0lP
U19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxfU0RL
KSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMg
PSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCA2NzdmNGNlZTY5MzU2MDQ1OWU4MDc4N2E2MDg2NTY4MjJhNWY0
NzVhLi5lNDY1Nzc3YTc5YmVkNTYzZDI2ODdmY2QyOGNmZDlhZGJiMzlkZjdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNDEsNiArNDEsMTIgQEAgYWxs
IDogXAogICAgIERhdGVDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgRGF0ZVByb3RvdHlwZS5sdXQu
aCBcCiAgICAgRXJyb3JQcm90b3R5cGUubHV0LmggXAorICAgIEludGxDb2xsYXRvckNvbnN0cnVj
dG9yLmx1dC5oIFwKKyAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggXAorICAgIEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUubHV0LmggXAorICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBc
CisgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCBcCiAgICAgSlNEYXRhVmlld1By
b3RvdHlwZS5sdXQuaCBcCiAgICAgSlNPTk9iamVjdC5sdXQuaCBcCiAgICAgSlNHbG9iYWxPYmpl
Y3QubHV0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggOTUy
M2Q3MDI3MzI2NzcyZjUwZTk0MmFhYzk4MmI3NDY3N2JhNThjZi4uOWNlZDZkN2E3MGQ3MTM2M2Iw
MDk3ZjMyNzAwMjk4NDhmYzM5ODhlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qCkBAIC03MzEsNiArNzMxLDE1IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50ZXJuYWxGdW5jdGlvbi5jcHAiIC8+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvci5jcHAiIC8+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCIg
Lz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENvbGxhdG9yUHJvdG90
eXBlLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVU
aW1lRm9ybWF0LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIiAvPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0LmNwcCIgLz4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEludGxPYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxJdGVyYXRvck9wZXJhdGlvbnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxJdGVyYXRvclByb3RvdHlwZS5jcHAiIC8+CkBAIC0xNTM0LDYgKzE1NDMsMTUgQEAK
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50OEFycmF5LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50ZXJuYWxGdW5jdGlvbi5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3IuaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENvbGxh
dG9yUHJvdG90eXBlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXElu
dGxEYXRlVGltZUZvcm1hdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIgLz4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdC5oIiAvPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJ
bnRsT2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludHJp
bnNpYy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJdGVyYXRpb25T
dGF0dXMuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycwppbmRleCAyMWQ2N2MwNDYzZjUzNzc2MDM0ODNjZWU1OTM0MWM5NjFkZGFhYjc2Li40
M2Y0NDM0NmZhNDI5MDU3MmI0MjlhYmZjZThiMjA5ODQ4ODlmNjJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC02MjcsNiArNjI3LDMz
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVybmFsRnVuY3Rpb24u
Y3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3IuY3BwIj4KKyAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAiPgor
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvclByb3RvdHlwZS5jcHAiPgor
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdC5jcHAiPgorICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNw
cCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGls
ZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdC5j
cHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvci5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBp
bGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xD
b21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsT2JqZWN0LmNw
cCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAg
LTI2NzYsNiArMjcwMywzMyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJ
bnRlcm5hbEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xs
YXRvci5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRl
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3JDb25zdHJ1
Y3Rvci5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRl
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3JQcm90b3R5
cGUuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9ybWF0Lmgi
PgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0
LmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvci5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRl
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1
ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxPYmplY3QuaCI+CiAg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTFjMzFjNjczMDdkYWM1YjFhZDFmMDk2Njk1OWI5NTBl
OWQ4ZDJiOS4uODBiMzIzNGVlZTUxMTQwZGZiMTRlOWViY2M2NjhiYjlmZmYwYTEwZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNzQsMTMgKzExNzQsMzcgQEAKIAkJOUU3Mjk0
MEIxOTBGMDUxNDAwMUE5MUI1IC8qIEJ1bmRsZVBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlFNzI5NDBBMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5k
bGVQYXRoLmggKi87IH07CiAJCTlFQTVDN0ExMTkwRjA4NDIwMDUwOEVCRSAvKiBCdW5kbGVQYXRo
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUU3Mjk0
MDkxOTBGMDMwNjAwMUE5MUI1IC8qIEJ1bmRsZVBhdGgubW0gKi87IH07CiAJCTlFQTVDN0EyMTkw
RjA4ODcwMDUwOEVCRSAvKiBJbml0aWFsaXplTExWTU1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RUE1QzdBMDE5MEYwNUQyMDA1MDhFQkUgLyog
SW5pdGlhbGl6ZUxMVk1NYWMuY3BwICovOyB9OworCQlBMTI1ODQ2RTFCNDVBMzYwMDBDQzdGNkMg
LyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEyNTg0NkMxQjQ1QTM2MDAwQ0M3RjZDIC8qIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJQTEyNTg0NkYxQjQ1QTM2
MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTI1ODQ2RDFCNDVBMzYwMDBDQzdG
NkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCAqLzsgfTsKIAkJQTEyQkJGRjIx
QjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMkJCRkYxMUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2Jq
ZWN0LmggKi87IH07CiAJCUExMkJCRkY0MUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMkJCRkYz
MUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLzsgfTsKKwkJQTE1ODdENkQxQjRE
QzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q2NzFCNERDMTQxMDBENjk4NDkgLyog
SW50bERhdGVUaW1lRm9ybWF0LmNwcCAqLzsgfTsKKwkJQTE1ODdENkUxQjREQzE0MTAwRDY5ODQ5
IC8qIEludGxEYXRlVGltZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTE1ODdENjgxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZv
cm1hdC5oICovOyB9OworCQlBMTU4N0Q2RjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTE1ODdENjkxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJQTE1ODdENzAxQjREQzE0MTAwRDY5ODQ5IC8qIElu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q2QTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTE1ODdENzExQjREQzE0MTAwRDY5ODQ5
IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q2QjFCNERDMTQxMDBENjk4NDkgLyogSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJQTE1ODdENzIxQjREQzE0MTAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1ODdENkMxQjREQzE0MTAwRDY5ODQ5IC8q
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oICovOyB9OworCQlBMTU4N0Q3NTFCNERDMUM2
MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q3MzFCNERDMUM2MDBE
Njk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUEx
NTg3RDc2MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q3
NDFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oICov
OyB9OwogCQlBMTcxMkIzQjExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCM0ExMUM3QjIx
MjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCAqLzsgfTsKIAkJQTE3MTJCM0YxMUM3QjIyODAw
N0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTcxMkI0
MTExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhw
S2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QTE4MTkzRTMxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE4MTkzRTEx
QjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oICovOyB9Owor
CQlBMTgxOTNFNDFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE4MTkzRTIx
QjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCAqLzsgfTsKIAkJ
QTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NDA5MjNDMTU2RUVEM0Iw
MDU2NkNCMiAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFS
TTY0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NjQwOTIzQjE1NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRBc3NlbWJsZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBMUI5RTIzOTFCNEUw
RDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjlFMjMzMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29s
bGF0b3IuY3BwICovOyB9OworCQlBMUI5RTIzQTFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxh
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5
RTIzNDFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmggKi87IH07CisJCUExQjlFMjNC
MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5RTIzNTFCNEUwRDY3MDBC
QzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwICovOyB9OworCQlBMUI5RTIzQzFC
NEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjlFMjM2MUI0RTBENjcwMEJDN0ZF
RCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oICovOyB9OworCQlBMUI5RTIzRDFCNEUwRDY3
MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjlFMjM3MUI0RTBENjcwMEJDN0ZFRCAvKiBJ
bnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwICovOyB9OworCQlBMUI5RTIzRTFCNEUwRDY3MDBCQzdG
RUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5RTIzODFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxh
dG9yUHJvdG90eXBlLmggKi87IH07CisJCUExRDc5MkZDMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRs
TnVtYmVyRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExRDc5MkY2MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmNwcCAq
LzsgfTsKKwkJQTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkY3MUI0
Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmggKi87IH07CisJCUExRDc5MkZFMUI0
Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzkyRjgxQjQzODY0QjAw
NDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCUExRDc5
MkZGMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkY5MUI0Mzg2
NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTFE
NzkzMDAxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzkyRkExQjQz
ODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwICovOyB9OworCQlB
MUQ3OTMwMTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzkyRkIxQjQz
ODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCAqLzsgfTsKIAkJQTUw
M0ZBMTkxODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTMxODhFMEZBRjAw
MTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwogCQlBNTAzRkExQTE4OEUw
RkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEph
dmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUIxODhFMEZCMDAwMTEwRjE0IC8q
IEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lLmNwcCAqLzsgfTsKQEAgLTI5NTAsMTEgKzI5NzQsMzUgQEAKIAkJOUU3Mjk0MDkx
OTBGMDMwNjAwMUE5MUI1IC8qIEJ1bmRsZVBhdGgubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBCdW5kbGVQYXRoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5RTcyOTQwQTE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCdW5kbGVQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlFQTVDN0EwMTkwRjA1RDIwMDUwOEVCRSAvKiBJbml0aWFsaXplTExWTU1hYy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJbml0aWFsaXplTExWTU1h
Yy5jcHA7IHBhdGggPSBsbHZtL0luaXRpYWxpemVMTFZNTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTEyNTg0NkMxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBMTI1ODQ2RDFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEyQkJGRjEx
QjA0NEE4QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW50bE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTJC
QkZGMzFCMDQ0QTk4MDA2NjRCNjkgLyogSW50bE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTE1ODdENjcxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3Jt
YXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4N0Q2ODFCNERDMTQxMDBE
Njk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEludGxEYXRlVGltZUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBMTU4N0Q2OTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4
N0Q2QTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE1ODdENkIxQjREQzE0MTAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4N0Q2QzFCNERDMTQxMDBENjk4NDkgLyog
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBMTU4N0Q3MzFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBMTU4N0Q3NDFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEy
QjNBMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBDYWNoZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEtleS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxh
dG9yQ29uc3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBMTgxOTNFMjFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsQ29sbGF0b3JQcm90b3R5cGUu
bHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExQjlFMjMzMUI0RTBENjcwMEJD
N0ZFRCAvKiBJbnRsQ29sbGF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW50bENvbGxhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFC
OUUyMzQxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnRsQ29sbGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTFCOUUyMzUxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxDb2xsYXRvckNv
bnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFCOUUyMzYxQjRF
MEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUExQjlFMjM3MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0
b3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50
bENvbGxhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFC
OUUyMzgxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsQ29sbGF0b3JQcm90b3R5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFENzkyRjYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxO
dW1iZXJGb3JtYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50
bE51bWJlckZvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRDc5MkY3
MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
MUQ3OTJGOTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUQ3OTJGQTFCNDM4NjRCMDA0
NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFENzkyRkIxQjQzODY0QjAwNDUxNkY1IC8qIEludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNTAzRkExMzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0
IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSmF2YVNjcmlwdENhbGxGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NTAzRkExNTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjQ5LDYgKzQyOTcsMTIgQEAKIAkJ
CQlBNTMyNDM4NDE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVy
cy5oICovLAogCQkJCUE1MzI0Mzg1MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2Nv
bE9iamVjdHMuY3BwICovLAogCQkJCUE1MzI0Mzg2MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0
b3JQcm90b2NvbE9iamVjdHMuaCAqLywKKwkJCQlBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyog
SW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJQTE4MTkzRTIxQjRFMENEQjAw
RkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCAqLywKKwkJCQlBMTU4N0Q3MzFC
NERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8s
CisJCQkJQTE1ODdENzQxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5sdXQuaCAqLywKKwkJCQlBMTI1ODQ2QzFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUExMjU4NDZEMUI0NUEzNjAwMENDN0Y2
QyAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUE3RDgwMUE2MTg4
MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8sCiAJCQkJQTdEODAxQTcxODgwRDZB
ODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8sCiAJCQkJQkM4N0NEQjgxMDcxMkFDQTAwMDYx
NENGIC8qIEpTT05PYmplY3QubHV0LmggKi8sCkBAIC00NDg3LDYgKzQ1NDEsMjQgQEAKIAkJCQlB
Nzg4NTNGODE3OTcyNjI5MDAxNDQwRTQgLyogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oICovLAog
CQkJCUJDOUJCOTVCMEUxOTY4MDYwMERGODg1NSAvKiBJbnRlcm5hbEZ1bmN0aW9uLmNwcCAqLywK
IAkJCQlCQzExNjY3QTBFMTk5QzA1MDA4MDY2REQgLyogSW50ZXJuYWxGdW5jdGlvbi5oICovLAor
CQkJCUExQjlFMjMzMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuY3BwICovLAorCQkJ
CUExQjlFMjM0MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuaCAqLywKKwkJCQlBMUI5
RTIzNTFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwICovLAor
CQkJCUExQjlFMjM2MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5o
ICovLAorCQkJCUExQjlFMjM3MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5
cGUuY3BwICovLAorCQkJCUExQjlFMjM4MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQ
cm90b3R5cGUuaCAqLywKKwkJCQlBMTU4N0Q2NzFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVU
aW1lRm9ybWF0LmNwcCAqLywKKwkJCQlBMTU4N0Q2ODFCNERDMTQxMDBENjk4NDkgLyogSW50bERh
dGVUaW1lRm9ybWF0LmggKi8sCisJCQkJQTE1ODdENjkxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBMTU4N0Q2QTFCNERDMTQxMDBE
Njk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLywKKwkJCQlBMTU4N0Q2
QjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCAqLywK
KwkJCQlBMTU4N0Q2QzFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLmggKi8sCisJCQkJQTFENzkyRjYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3Jt
YXQuY3BwICovLAorCQkJCUExRDc5MkY3MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9y
bWF0LmggKi8sCisJCQkJQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQTFENzkyRjkxQjQzODY0QjAwNDUxNkY1IC8qIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUExRDc5MkZBMUI0Mzg2NEIwMDQ1
MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCAqLywKKwkJCQlBMUQ3OTJGQjFC
NDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oICovLAogCQkJCUEx
MkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLywKIAkJCQlBMTJCQkZG
MTFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9iamVjdC5oICovLAogCQkJCTg2QkY2NDJBMTQ4REIy
QjUwMDRERTM2QSAvKiBJbnRyaW5zaWMuaCAqLywKQEAgLTU2NjQsNiArNTczNiw3IEBACiAJCQkJ
MTQ3QjgzQUMwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyQTExMTI0NjE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0
dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNEY0QjZGNTFBMDVDOTg0MDA1Q0FCNzYg
LyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFk
ZXJzICovLAorCQkJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwMzIwMThCRkZCRTEwMDVBMDgx
MSAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQkNERTcxOEVGMjk0
MjAwMDAyMDk2IC8qIEdDTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU3QkE2MTAxQTFB
N0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5oIGluIEhlYWRlcnMgKi8sCkBAIC01NzEzLDYg
KzU3ODYsNyBAQAogCQkJCTBGMjRFNTQxMTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJseUhlbHBl
cnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3ODRBMjYxMTFEMTY2MjIwMDU3NzZBQyAvKiBBU1RC
dWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjY3MzlEMjEzQkZERTcxMDAyM0Q4N0MgLyog
QmlnSW50ZWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTEyNTg0NkUxQjQ1QTM2MDAwQ0M3RjZD
IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDM0VDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBCb29sZWFuT2JqZWN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTVEMkU2NjUxOTVFMTc0MDAwQTUxOEU3IC8qIEpTQ29udGV4dFJlZkludGVy
bmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTU3MjIsNiArNTc5Niw3IEBACiAJCQkJMEZCN0YzOTcx
NUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0Yz
OTgxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseUlubGluZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTYyRDJEMzkwMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBMUI5RTIzQTFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMkZDQUUxMTE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVC
YXNpY0Jsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIg
LyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3MjMwRUQx
Q0UzMzAwRjFGNjgxIC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTU4
MDEsMTEgKzU4NzYsMTMgQEAKIAkJCQlBNUVBNzBFODE5RjVCMTAxMDA5OEY1RUMgLyogQXVnbWVu
dGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0
RDkwMzE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTcwNEQ5MDQxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUI5RTIzQzFCNEUwRDY3MDBCQzdG
RUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIw
MTc3MTQzRkNEM0YwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkYwNTRGQTFBQzM1QjQ0MDBFNUJFNTcgLyogRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY2RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZHQWRq
YWNlbmN5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMTgxNkQwMkVCMjAwNTVBNURC
IC8qIERGR0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTczNzgxMEMxNzk5RUEyRTAw
ODE3NTMzIC8qIERGR0FuYWx5c2lzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUI5RTIzRTFCNEUw
RDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjFFM0E0NjE1MzRDQkFGMDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTVDM0ExQTYxOEMwNDkwMjAwQzk1OTNBIC8qIEpTR2xvYmFsT2JqZWN0
Q29uc29sZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMjIxODc3NTA1NjAwODNC
Njg3IC8qIERGR0FyaXRoTW9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC01ODY5LDYgKzU5NDYsNyBA
QAogCQkJCTg2RUM5RENDMTMyOERGODIwMDJCMkFENyAvKiBERkdKSVRDb21waWxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTc4QTk3NzkxNzk3MzhCODAwOURGNzQ0IC8qIERGR0pJVEZpbmFsaXpl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDOTdGNDAxODIwMjExOTAwMkM5QjI2IC8qIERGR0p1
bXBSZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTEyNTg0NkYxQjQ1QTM2MDAwQ0M3
RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzNBNTM1QjE3OTlDRDVEMDAxNzBDMTkgLyogREZHTGF6eUpTVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMkI5Q0U5MTlEMEJBN0QwMEIxRDFCNSAvKiBERkdPYmplY3RNYXRlcmlhbGl6
YXRpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q5QTI5ODE3QTBCQzc0MDBFRTI2MTgg
LyogREZHTElDTVBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTU5OTgsNiArNjA3Niw3IEBACiAJ
CQkJMEY2QjFDQjYxODVGQzlFOTAwODQ1RDk3IC8qIEZUTEpTQ2FsbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY4RjJCOTYxNzJFMDRBMzAwN0RCREE1IC8qIEZUTExpbmsuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQ0VGQUUwMTgwNzM4QzAwMDQ3MkNFNCAvKiBGVExMb2NhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTE1ODdENzAxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExMDE3MDUxM0RCMDBCQjcy
MkMgLyogRlRMTG93ZXJERkdUb0xMVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5RDAyMTdB
MEI5MDQwMDc3M0FEOCAvKiBGVExMb3dlcmVkTm9kZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkQ4QTMxQzE3RDUxRjIyMDBDQTJDNDAgLyogRlRMT1NSRW50cnkuaCBpbiBIZWFkZXJzICov
LApAQCAtNjA2Niw2ICs2MTQ1LDcgQEAKIAkJCQlDMjVGOEJDRTE1NzU0NEE5MDAyNDVCNzEgLyog
SW5jcmVtZW50YWxTd2VlcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5OTE1RUQ4RTQ2
MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlB
MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlcklubGluZXMuaCBpbiBIZWFkZXJzICov
LAorCQkJCUExNTg3RDc2MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QjE1RUQ4RTQ2MDBGMTY3QjIg
LyogSW5kZXhpbmdUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNFRkFCMDE4MDVDQTZEMDA0
NzJDRTQgLyogSW5pdGlhbGl6ZUxMVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0VGQUNDMTgw
NUU3NTUwMDQ3MkNFNCAvKiBJbml0aWFsaXplTExWTVBPU0lYLmggaW4gSGVhZGVycyAqLywKQEAg
LTYxMjAsNiArNjIwMCw3IEBACiAJCQkJMEZBRjdFRkUxNjVCQTkxRjAwMEM4NDU1IC8qIEpJVERp
c2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcy
IC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjE0RTFGMTgxMjRBQ0Uw
MDlCNkI0RCAvKiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTFENzkzMDExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTg2Q0M4NUExMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU0RDE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3Bl
cmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMzExNUFBODExMjAwOEYzNjNFIC8q
IEpJVFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKQEAgLTYyMjAsNiArNjMwMSw3IEBACiAJ
CQkJN0MxODRFMjMxN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3QzAwOENEQjE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVm
ZXJyZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMTg0RTFGMTdCRUUyMkUwMDdDQjYzQSAvKiBK
U1Byb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUExODE5M0U0MUI0RTBDREIw
MEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NjI1NTNEMjE2MTM2RTFBMDA5RjE3RDAgLyogSlNQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTkyOEZGM0MxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzQyNjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNSZXRhaW5QdHIuaCBpbiBI
ZWFkZXJzICovLApAQCAtNjIzMSw2ICs2MzEzLDcgQEAKIAkJCQlCQzE4QzQ1RTBFMTZGNUNEMDBC
MzQ0NjAgLyogSlNTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDMUVBRjAxNzk4N0FCNjAw
Mjk5REIyIC8qIEpTU3RhY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyNzBF
MTZGNUNEMDBCMzQ0NjAgLyogSlNTdHJpbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCUExNTg3RDc1
MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTg2RTg1NTM5MTExQjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1
aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2MDBCNUE3MTUyQkFBQTcwMDkxRUU1RiAvKiBK
U1N0cmluZ0pvaW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjgwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTU3RyaW5nUmVmLmggaW4gSGVhZGVycyAqLywKQEAgLTYzMzQsNiArNjQxNyw3IEBA
CiAJCQkJQkMwMkU5MTEwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDJFOTEzMEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVF
cnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDQzBCNjMxOEJFOTk1MDAwNkNF
QkNDIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkgaW4gSGVhZGVycyAqLywKKwkJCQlB
MTgxOTNFMzFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIyMDE2RDAzM0I3MDA1NUE1REIgLyogTm9kZUNvbnN0
cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5IC8q
IFRlbXBsYXRlUmVnaXN0cnlLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDNGMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBOb2Rlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC02NDU3LDYgKzY1NDEsNyBA
QAogCQkJCUE3Mjk5REE2MTdEMTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTc5MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyog
U2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUQ3OTJGRDFCNDM4NjRCMDA0NTE2
RjUgLyogSW50bE51bWJlckZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZBRTY0QUExMzVF
NUUxQzAwOTYzMDEyIC8qIFNINEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGOEJE
RUIxQUQ0Q0Y3MTAwREZFODg0IC8qIEluZmVycmVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMkI2NzA1MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC02NTMxLDYgKzY2MTYsNyBAQAogCQkJCTBGNUYwOENGMTQ2Qzc2
MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBN0I2MDE4MjE2MzlGRDJBMDAzNzJCQTMgLyogVW5saW5rZWRDb2RlQmxvY2suaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMkU4OTJDMTZEMDI4QUQwMDlFNEZEMiAvKiBVbnVzZWRQb2ludGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBMTU4N0Q2RTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVU
aW1lRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5QjIg
LyogVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQyNkE0ODE0NjBDQkIzMDAx
MzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5QzVFNUYxOEUz
NUY1RTAwRDQzMUMzIC8qIEZUTERXQVJGUmVnaXN0ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNjU1
OCw2ICs2NjQ0LDcgQEAKIAkJCQkyQTRFQzkwQzE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJy
aWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkI2RDc1MzE4QTMzNzkzMDA0QTkzMDEg
LyogV3JpdGVCYXJyaWVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDODE1MEExNDA0
M0JGNTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUExNTg3RDcyMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZBc3Nl
bWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTJBMTg3Q0E3NTkwMDg0M0IxMCAvKiB4
eGQucGwgaW4gSGVhZGVycyAqLywKIAkJCQkwRjNBMUJGQTFBOUVDQjdEMDAwREUwMUEgLyogREZH
UHV0U3RhY2tTaW5raW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNzE0MCw2ICs3MjI3LDcg
QEAKIAkJCQkwRkVBMEEzMTE3MEQ0MEJGMDBCQjcyMkMgLyogREZHQ29tbW9uRGF0YS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjM4QjAxNzE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRp
b25LZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzOEIwMTkxN0NGRTc1NTAwQjE0NEQzIC8q
IERGR0NvbXBpbGF0aW9uTW9kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUI5RTIzQjFCNEUw
RDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYzQjNBMUExNTNFNjhGMjAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjcyMTZDMURCMDMwMDgyQzVFOCAvKiBERkdD
UFNSZXRocmVhZGluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0Y1MTdBMEI4
Q0MwMDc3M0FEOCAvKiBERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtNzE4Miw2ICs3MjcwLDcgQEAKIAkJCQlBN0Q4OUNGQjE3QTBCOENDMDA3NzNBRDgg
LyogREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjBG
MTk5MTZCNzI5RjYwMDVERjk1QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNzY3QjVCNTE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9vcFByZUhlYWRlckNyZWF0
aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFCOUUyM0QxQjRFMEQ2NzAwQkM3RkVE
IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCREM0
RDE1MjI4MTg2MDBDRDg5MTAgLyogREZHTWluaWZpZWROb2RlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE3Mzc4MTBEMTc5OUVBMkUwMDgxNzUzMyAvKiBERkdOYXR1cmFsTG9vcHMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGMEYxOUMxNkI3MkEwMzAwNURGOTVCIC8qIERGR05vZGUuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC03MzQ1LDYgKzc0MzQsNyBAQAogCQkJCTJBRjczODJDMThCQkJGOTIw
MDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1RkQw
MDgxMTg5QjE5MUEwMDYzMzIzMSAvKiBJbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTU3RDIzRTUxODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTE1ODdENkYxQjREQzE0MTAwRDY5ODQ5IC8q
IEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
MzI0Mzg3MTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNzA5RkI4NjkxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRD
b25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTMyNDM4OTE4NTY4MzM1MDAyRUQ2
OTIgLyogSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTczNjgsNiArNzQ1OCw3IEBACiAJCQkJQkNERDUxRUIwRkI4REY3NDAwNEE4QkRDIC8qIEpJVE9w
Y29kZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcxMjM2RTUxMTk1RjMzQzAwQkQyMTc0IC8q
IEpJVE9wY29kZXMzMl82NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZFODQ1QTE5MDMwQkVG
MDA1NjI3NDEgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUExNTg3RDZEMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYyNEU1NEMxN0VFMjc0OTAwQUJCMjE3IC8qIEpJVE9wZXJhdGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZDQzg1QzQwRUU3QTg5NDAwMjg4NjgyIC8qIEpJVFBy
b3BlcnR5QWNjZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QzFFOEU0MTEyRTcyRUYwMEEz
N0Y5OCAvKiBKSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzQ5
NSw2ICs3NTg2LDcgQEAKIAkJCQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJ
bnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEI3MjNCMjEyRDdEQTQ2MDAzQkQ1
RUQgLyogTWFjaGluZVN0YWNrTWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUIzRUNG
MTYyMzdGNkMwMEFCNjdBRCAvKiBNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlBMUQ3OTMwMDFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9B
c3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcyOTAwOUMxNzk3NkM2MDAwMzE3
Mjk4IC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUzQ0Uw
ODUxOEJDMUE1NjAwQkVERjc2IC8qIENvbnNvbGVQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC03NTc0LDYgKzc2NjYsNyBAQAogCQkJCUE1QkExNUU5MTgyMzQwQjMwMEE4MkU2OSAvKiBS
ZW1vdGVJbnNwZWN0b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQkyQURGQTI2MzE4RUYzNTQwMDA0
RjlGQ0MgLyogR0NMb2dnaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTQ1NThGMTgyNDVF
RkQwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUExRDc5MkZFMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1RUMxODIzNDBCNDAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjI0RTU1MDE3RUUyNzQ5MDBBQkIyMTcgLyogUmVw
YXRjaC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc1ODEsNiArNzY3NCw3IEBACiAJCQkJMEY3NzAw
OTIxNDAyRkYzQzAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDI5RDg4NTBFRDIxQzNEMDBCODk2MTkgLyogU2FtcGxpbmdUb29sLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTcwRUMwRUM2MUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvclBy
b3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUI5RTIzOTFCNEUwRDY3MDBCQzdGRUQg
LyogSW50bENvbGxhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1RkQwMDY3MTg5QUZFOUMw
MDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVGRDAw
NkQxODlCMDBBQTAwNjMzMjMxIC8qIFNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjA0Mzk2RDFCMDNEQzBCMDA5NTk4QjcgLyogREZHQ29tYmluZWRMaXZlbmVzcy5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTc2MjcsNiArNzcyMSw4IEBACiAJCQkJMEZBMkMxN0IxN0Q3Q0Y4
NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzM4
NjU1NTExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMkI2NzA3MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5Q29udHJvbGxlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUQ3OTJGQzFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51
bWJlckZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMTU4N0Q3MTFCNERDMTQxMDBENjk4
NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMkI2NzBBMTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5VHlwZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MkM5NTJCOTE5QTI4QTFDMDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRjQyNzRBMTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODYuYyBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKaW5kZXggOWI5Mzk4N2IxYjE2ZGI1M2VjOTVhNDM3NjE3MWI3Y2RmMGM5
NTNiYS4uNjEzMzMxMzZkODBiNzgxMTU0ZjJhNWMzNDM2ZmMzZWU5NmU4MWI2MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0z
Myw3ICszMyw5IEBACiAgICAgbWFjcm8oQXJyYXlJdGVyYXRvcikgXAogICAgIG1hY3JvKEJZVEVT
X1BFUl9FTEVNRU5UKSBcCiAgICAgbWFjcm8oQm9vbGVhbikgXAorICAgIG1hY3JvKENvbGxhdG9y
KSBcCiAgICAgbWFjcm8oRGF0ZSkgXAorICAgIG1hY3JvKERhdGVUaW1lRm9ybWF0KSBcCiAgICAg
bWFjcm8oRXJyb3IpIFwKICAgICBtYWNybyhFdmFsRXJyb3IpIFwKICAgICBtYWNybyhGdW5jdGlv
bikgXApAQCAtNDUsNiArNDcsNyBAQAogICAgIG1hY3JvKE1hdGgpIFwKICAgICBtYWNybyhOYU4p
IFwKICAgICBtYWNybyhOdW1iZXIpIFwKKyAgICBtYWNybyhOdW1iZXJGb3JtYXQpIFwKICAgICBt
YWNybyhPYmplY3QpIFwKICAgICBtYWNybyhQcm9taXNlKSBcCiAgICAgbWFjcm8oUmFuZ2VFcnJv
cikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggZDYzMjlmZGYxYjAyNTBkNzgyNGM4YzhiZDcwZGQ2ODcwNDcyYjRmYy4uZWU2
NTZhMzA5NzRlM2VjNWRiMTA0ZjE2YzUzNGQ0MjZiMmJlODVmNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCkBAIC01Myw3ICs1Myw2
IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiBuYW1lc3BhY2UgSlNDIHsKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUGFyc2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVOb3coRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVVVEMoRXhlY1N0YXRlKik7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgKaW5kZXggMDU0ZjU3MWQ1NzllOGNlNGYzNGI1
NDA5MTdiOGQwMjhiNTBkZmI5Yi4uY2RhYzk3ZDMxYmEzNmE5YzIyZWFjMDI0OGFmYzZmNTIxMmJm
NzkxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVj
dG9yLmgKQEAgLTU5LDYgKzU5LDggQEAgcHJpdmF0ZToKIAogSlNPYmplY3QqIGNvbnN0cnVjdERh
dGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0Jik7CiAKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZU5vdyhFeGVjU3RhdGUqKTsKKwogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZiAvLyBEYXRlQ29uc3RydWN0b3JfaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTgxMDhmYzE4
NTk4ZDNlMmM3YWQ4OWUwY2YxZjg4ZDRlNWExMWVjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKQEAgLTAsMCArMSwxMjIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3Jh
ZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJbnRsQ29sbGF0b3IuaCIKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiRXJyb3Iu
aCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkludGxP
YmplY3QuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJTbG90
VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bENvbGxhdG9yOjpzX2luZm8gPSB7ICJP
YmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxDb2xsYXRv
cikgfTsKKworSW50bENvbGxhdG9yKiBJbnRsQ29sbGF0b3I6OmNyZWF0ZShWTSYgdm0sIEludGxD
b2xsYXRvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKK3sKKyAgICBJbnRsQ29sbGF0b3IqIGZv
cm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxDb2xsYXRvcj4odm0uaGVhcCkp
IEludGxDb2xsYXRvcih2bSwgY29uc3RydWN0b3ItPmNvbGxhdG9yU3RydWN0dXJlKCkpOworICAg
IGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBmb3JtYXQ7Cit9CisKK1N0
cnVjdHVyZSogSW50bENvbGxhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxDb2xsYXRvcjo6SW50
bENvbGxhdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU0Rlc3RydWN0
aWJsZU9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxDb2xsYXRvcjo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Cit9CisKK3ZvaWQgSW50bENvbGxhdG9yOjpkZXN0
cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxJbnRsQ29sbGF0b3IqPihjZWxs
KS0+SW50bENvbGxhdG9yOjp+SW50bENvbGxhdG9yKCk7Cit9CisKK3ZvaWQgSW50bENvbGxhdG9y
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSW50bENvbGxhdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEludGxDb2xsYXRvcio+KGNlbGwp
OworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKwor
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ib3VuZENvbXBhcmUpOworfQorCit2b2lkIEludGxD
b2xsYXRvcjo6c2V0Qm91bmRDb21wYXJlKFZNJiB2bSwgSlNCb3VuZEZ1bmN0aW9uKiBmb3JtYXQp
Cit7CisgICAgbV9ib3VuZENvbXBhcmUuc2V0KHZtLCB0aGlzLCBmb3JtYXQpOworfQorCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvckZ1bmNDb21wYXJlKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICAvLyAxMC4zLjQgQ29sbGF0b3IgQ29tcGFyZSBGdW5jdGlvbnMgKEVD
TUEtNDAyIDIuMCkKKyAgICAvLyAxLiBMZXQgY29sbGF0b3IgYmUgdGhlIHRoaXMgdmFsdWUuCisg
ICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4o
ZXhlYy0+dGhpc1ZhbHVlKCkpOworCisgICAgLy8gMi4gQXNzZXJ0OiBUeXBlKGNvbGxhdG9yKSBp
cyBPYmplY3QgYW5kIGNvbGxhdG9yIGhhcyBhbiBbW2luaXRpYWxpemVkQ29sbGF0b3JdXSBpbnRl
cm5hbCBzbG90IHdob3NlIHZhbHVlIGlzIHRydWUuCisgICAgaWYgKCFjb2xsYXRvcikKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisKKyAgICAv
LyAzLiBJZiB4IGlzIG5vdCBwcm92aWRlZCwgbGV0IHggYmUgdW5kZWZpbmVkLgorICAgIC8vIDQu
IElmIHkgaXMgbm90IHByb3ZpZGVkLCBsZXQgeSBiZSB1bmRlZmluZWQuCisgICAgLy8gNS4gTGV0
IFggYmUgVG9TdHJpbmcoeCkuCisgICAgSlNTdHJpbmcqIGEgPSBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKTsKKyAgICAvLyA2LiBSZXR1cm5JZkFicnVwdChYKS4KKyAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisKKyAgICAvLyA3LiBMZXQgWSBiZSBUb1N0cmluZyh5KS4KKyAgICBKU1N0cmlu
ZyogYiA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpOworICAgIC8vIDguIFJldHVy
bklmQWJydXB0KFkpLgorICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIC8vIDkuIFJldHVybiBD
b21wYXJlU3RyaW5ncyhjb2xsYXRvciwgWCwgWSkuCisKKyAgICAvLyAxMC4zLjQgQ29tcGFyZVN0
cmluZ3MgYWJzdHJhY3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAyLjApCisgICAgLy8gRklYTUU6IElt
cGxlbWVudCBDb21wYXJlU3RyaW5ncy4KKworICAgIC8vIFJldHVybiBzaW1wbGUgY2hlY2sgdW50
aWwgcHJvcGVybHkgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihjb2RlUG9pbnRDb21wYXJlKGEtPnZhbHVlKGV4ZWMpLmltcGwoKSwgYi0+dmFsdWUoZXhl
YykuaW1wbCgpKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJM
RShJTlRMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENv
bGxhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mZjIyNTE0OTQxYTIxMTg2M2Y5YzI4NDJmYzE3MGQ2MWJjYTQ2MTAyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9y
LmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldh
Z29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRs
Q29sbGF0b3JfaAorI2RlZmluZSBJbnRsQ29sbGF0b3JfaAorCisjaWYgRU5BQkxFKElOVEwpCisK
KyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgSW50bENvbGxhdG9yQ29uc3RydWN0b3I7CitjbGFzcyBKU0JvdW5kRnVuY3Rpb247CisK
K2NsYXNzIEludGxDb2xsYXRvciA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CitwdWJs
aWM6CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworCisgICAgc3RhdGlj
IEludGxDb2xsYXRvciogY3JlYXRlKFZNJiwgSW50bENvbGxhdG9yQ29uc3RydWN0b3IqKTsKKyAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgSlNCb3VuZEZ1bmN0aW9uKiBi
b3VuZENvbXBhcmUoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kQ29tcGFyZS5nZXQoKTsgfQorICAg
IHZvaWQgc2V0Qm91bmRDb21wYXJlKFZNJiwgSlNCb3VuZEZ1bmN0aW9uKik7CisKK3Byb3RlY3Rl
ZDoKKyAgICBJbnRsQ29sbGF0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKK3ByaXZhdGU6
CisgICAgV3JpdGVCYXJyaWVyPEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZENvbXBhcmU7Cit9Owor
ICAgIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JGdW5jQ29tcGFy
ZShFeGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5UTCkKKworI2VuZGlmIC8vIEludGxDb2xsYXRvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDQxZGQxN2NkOGViMTEyYTIxZWZiNmMyMWExNDQ5NGZiMmVkNmQ2NQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0
cnVjdG9yLmNwcApAQCAtMCwwICsxLDE4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
bmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCIK
KworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRs
Q29sbGF0b3IuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKKyNpbmNsdWRl
ICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRl
ICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiU2xvdFZp
c2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxD
b2xsYXRvckNvbnN0cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bENvbGxhdG9yQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0
ZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAmY29s
bGF0b3JDb25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxDb2xsYXRvckNv
bnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1
dC5oCitAYmVnaW4gY29sbGF0b3JDb25zdHJ1Y3RvclRhYmxlCisgIHN1cHBvcnRlZExvY2FsZXNP
ZiAgICAgICAgICAgICBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVz
T2YgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKworSW50bENvbGxh
dG9yQ29uc3RydWN0b3IqIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSW50bENvbGxhdG9yUHJvdG90eXBlKiBjb2xsYXRvclByb3Rv
dHlwZSwgU3RydWN0dXJlKiBjb2xsYXRvclN0cnVjdHVyZSkKK3sKKyAgICBJbnRsQ29sbGF0b3JD
b25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKHZt
LCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgY29sbGF0
b3JQcm90b3R5cGUsIGNvbGxhdG9yU3RydWN0dXJlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7
Cit9CisKK1N0cnVjdHVyZSogSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30K
KworSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1
Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSW50bENvbGxhdG9yUHJvdG90eXBlKiBjb2xsYXRvclByb3RvdHlwZSwgU3Ry
dWN0dXJlKiBjb2xsYXRvclN0cnVjdHVyZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSwgQVNDSUlMaXRlcmFsKCJDb2xsYXRvciIpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBjb2xsYXRvclByb3RvdHlwZSwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFk
T25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgbV9jb2xsYXRvclN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIGNvbGxhdG9yU3RydWN0dXJlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsQ29sbGF0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAg
IC8vIDEwLjEuMiBJbnRsLkNvbGxhdG9yIChbbG9jYWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQw
MiAyLjApCisgICAgLy8gMS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1Rhcmdl
dCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5l
d1RhcmdldC4KKyAgICBKU1ZhbHVlIG5ld1RhcmdldCA9IGV4ZWMtPm5ld1RhcmdldCgpOworICAg
IGlmICghbmV3VGFyZ2V0IHx8IG5ld1RhcmdldC5pc1VuZGVmaW5lZCgpKQorICAgICAgICBuZXdU
YXJnZXQgPSBleGVjLT5jYWxsZWUoKTsKKworICAgIC8vIDIuIExldCBjb2xsYXRvciBiZSBPcmRp
bmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVDb2xsYXRvclByb3RvdHlwZSUp
LgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9
IEludGxDb2xsYXRvcjo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3Iq
PihleGVjLT5jYWxsZWUoKSkpOworICAgIGlmIChjb2xsYXRvciAmJiAhanNEeW5hbWljQ2FzdDxJ
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcio+KG5ld1RhcmdldCkpIHsKKyAgICAgICAgSlNWYWx1ZSBw
cm90byA9IGFzT2JqZWN0KG5ld1RhcmdldCktPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlKTsKKyAgICAgICAgYXNPYmplY3QoY29sbGF0b3IpLT5zZXRQcm90b3R5cGVX
aXRoQ3ljbGVDaGVjayhleGVjLCBwcm90byk7CisgICAgfQorCisgICAgLy8gMy4gUmV0dXJuSWZB
YnJ1cHQoY29sbGF0b3IpLgorICAgIEFTU0VSVChjb2xsYXRvcik7CisKKyAgICAvLyA0LiBSZXR1
cm4gSW5pdGlhbGl6ZUNvbGxhdG9yKGNvbGxhdG9yLCBsb2NhbGVzLCBvcHRpb25zKS4KKyAgICAv
LyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShJbml0aWFsaXplQ29sbGF0b3IoY29sbGF0
b3IsIGxvY2FsZXMsIG9wdGlvbnMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29s
bGF0b3IpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsQ29sbGF0
b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDEwLjEuMiBJbnRsLkNvbGxhdG9yIChbbG9j
YWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gSWYgTmV3VGFyZ2V0
IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVj
dCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KKyAgICAvLyBOZXdUYXJnZXQgaXMg
YWx3YXlzIHVuZGVmaW5lZCB3aGVuIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLgorCisgICAgLy8gMi4g
TGV0IGNvbGxhdG9yIGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwg
JUNvbGxhdG9yUHJvdG90eXBlJSkuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBJbnRs
Q29sbGF0b3IqIGNvbGxhdG9yID0gSW50bENvbGxhdG9yOjpjcmVhdGUodm0sIGpzQ2FzdDxJbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKSk7CisKKyAgICAvLyAzLiBSZXR1
cm5JZkFicnVwdChjb2xsYXRvcikuCisgICAgQVNTRVJUKGNvbGxhdG9yKTsKKworICAgIC8vIDQu
IFJldHVybiBJbml0aWFsaXplQ29sbGF0b3IoY29sbGF0b3IsIGxvY2FsZXMsIG9wdGlvbnMpLgor
ICAgIC8vIEZJWE1FOiByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEluaXRpYWxpemVDb2xsYXRvcihj
b2xsYXRvciwgbG9jYWxlcywgb3B0aW9ucykpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjb2xsYXRvcik7Cit9CisKK0NvbnN0cnVjdFR5cGUgSW50bENvbGxhdG9yQ29uc3RydWN0b3I6
OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkK
K3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEludGxDb2xs
YXRvcjsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK0NhbGxUeXBlIEludGxD
b2xsYXRvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERh
dGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEludGxDb2xsYXRvcjsK
KyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitib29sIEludGxDb2xsYXRvckNvbnN0cnVj
dG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAg
cmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBjb2xs
YXRvckNvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcio+KG9i
amVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bENvbGxhdG9yQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNT
dGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMC4yLjIgSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRMb2Nh
bGVzT2YobG9jYWxlcyBbLCBvcHRpb25zXSkgKEVDTUEtNDAyIDIuMCkKKworICAgIC8vIDEuIExl
dCByZXF1ZXN0ZWRMb2NhbGVzIGJlIENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QobG9jYWxlcykuCisg
ICAgLy8gRklYTUU6IHJlcXVlc3RlZCA9IENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QobG9jYWxlcyk7
CisKKyAgICAvLyAyLiBSZXR1cm5JZkFicnVwdChyZXF1ZXN0ZWRMb2NhbGVzKS4KKyAgICAvLyBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgLy8gICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICAvLyAzLiBSZXR1cm4gU3VwcG9ydGVkTG9jYWxlcygl
Q29sbGF0b3IlLltbYXZhaWxhYmxlTG9jYWxlc11dLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25z
KS4KKyAgICAvLyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTdXBwb3J0ZWRMb2NhbGVz
KGF2YWlsYWJsZSwgcmVxdWVzdGVkLCBvcHRpb25zKSk7CisKKyAgICAvLyBSZXR1cm4gZW1wdHkg
YXJyYXkgdW50aWwgcHJvcGVybHkgaW1wbGVtZW50ZWQuCisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmds
b2JhbE9iamVjdCgpOworICAgIEpTQXJyYXkqIHN1cHBvcnRlZExvY2FsZXMgPSBKU0FycmF5Ojp0
cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9y
SW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKKyAg
ICBpZiAoIXN1cHBvcnRlZExvY2FsZXMpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoc3VwcG9ydGVkTG9jYWxlcyk7Cit9CisgICAgCit2b2lkIEludGxDb2xsYXRvckNvbnN0cnVj
dG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisgICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SW50bENv
bGxhdG9yQ29uc3RydWN0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmpl
Y3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY29sbGF0
b3JTdHJ1Y3R1cmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJM
RShJTlRMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENv
bGxhdG9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxD
b2xsYXRvckNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFhOThmMmZhYTI0NzliODRmNzliNzEw
NzVmNWU5ODdmYWVlNzZmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw3MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdt
YWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcl9oCisj
ZGVmaW5lIEludGxDb2xsYXRvckNvbnN0cnVjdG9yX2gKKworI2lmIEVOQUJMRShJTlRMKQorCisj
aW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
SW50bENvbGxhdG9yOworY2xhc3MgSW50bENvbGxhdG9yUHJvdG90eXBlOworCitjbGFzcyBJbnRs
Q29sbGF0b3JDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvciog
Y3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSW50bENvbGxhdG9yUHJvdG90eXBlKiwgU3RydWN0dXJl
Kik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIFN0cnVjdHVyZSog
Y29sbGF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NvbGxhdG9yU3RydWN0dXJlLmdl
dCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bENv
bGxhdG9yUHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisKK3ByaXZhdGU6CisgICAgSW50bENvbGxh
dG9yQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlw
ZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMg
Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NvbGxh
dG9yU3RydWN0dXJlOworfTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RJbnRsQ29sbGF0b3IoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxJbnRsQ29sbGF0b3IoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxh
dG9yUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2UwNGIzMmFiM2E1M2Q3OTljZTIzMGEyMDE4
MzY3MGE3MTYwMjk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWls
LmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxDb2xs
YXRvclByb3RvdHlwZS5oIgorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJFcnJvci5o
IgorI2luY2x1ZGUgIkludGxDb2xsYXRvci5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3Iu
aCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitT
VEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bENvbGxhdG9yUHJvdG90
eXBlKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9y
UHJvdG90eXBlR2V0dGVyQ29tcGFyZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMo
RXhlY1N0YXRlKik7CisKK30KKworI2luY2x1ZGUgIkludGxDb2xsYXRvclByb3RvdHlwZS5sdXQu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsQ29sbGF0b3JQcm90
b3R5cGU6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZJbnRsQ29sbGF0b3I6OnNfaW5mbywgJmNvbGxh
dG9yUHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bENvbGxhdG9yUHJvdG90
eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaAorQGJl
Z2luIGNvbGxhdG9yUHJvdG90eXBlVGFibGUKKyAgY29tcGFyZSAgICAgICAgICBJbnRsQ29sbGF0
b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorICByZXNv
bHZlZE9wdGlvbnMgIEludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMgIERv
bnRFbnVtfEZ1bmN0aW9uIDAKK0BlbmQKKyovCisKK0ludGxDb2xsYXRvclByb3RvdHlwZSogSW50
bENvbGxhdG9yUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSogc3RydWN0dXJlKQoreworICAgIEludGxDb2xsYXRvclByb3RvdHlwZSogb2JqZWN0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxhdG9yUHJvdG90eXBlPih2bS5oZWFw
KSkgSW50bENvbGxhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSW50
bENvbGxhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxDb2xsYXRvclByb3RvdHlw
ZTo6SW50bENvbGxhdG9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgOiBJbnRsQ29sbGF0b3Iodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsQ29sbGF0
b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7Cit9CisKK2Jvb2wgSW50bENvbGxhdG9yUHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRp
Y0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgY29sbGF0b3JQcm90b3R5cGVUYWJsZSwganND
YXN0PEludGxDb2xsYXRvclByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBl
R2V0dGVyQ29tcGFyZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTAuMy4zIEludGwuQ29s
bGF0b3IucHJvdG90eXBlLmNvbXBhcmUgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBMZXQgY29s
bGF0b3IgYmUgdGhpcyBDb2xsYXRvciBvYmplY3QuCisgICAgSW50bENvbGxhdG9yKiBjb2xsYXRv
ciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAg
IGlmICghY29sbGF0b3IpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZXhlYykpOworCisgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZENvbXBhcmUgPSBjb2xs
YXRvci0+Ym91bmRDb21wYXJlKCk7CisgICAgLy8gMi4gSWYgY29sbGF0b3IuW1tib3VuZENvbXBh
cmVdXSBpcyB1bmRlZmluZWQsCisgICAgaWYgKCFib3VuZENvbXBhcmUpIHsKKyAgICAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGNvbGxhdG9yLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcg
YnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmluZWQgaW4gMTEuMy40LgorICAgICAgICAv
LyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDIuCisgICAgICAgIEpT
RnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCAyLCBBU0NJSUxpdGVyYWwoImNvbXBhcmUiKSwgSW50bENvbGxhdG9yRnVuY0NvbXBhcmUs
IE5vSW50cmluc2ljKTsKKyAgICAgICAgSlNBcnJheSogYm91bmRBcmdzID0gSlNBcnJheTo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7CisgICAg
ICAgIGlmICghYm91bmRBcmdzKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYykpOworCisgICAgICAgIC8vIGMuIExldCBiYyBiZSBC
b3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4KKyAgICAgICAgYm91bmRDb21w
YXJlID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2Jq
ZWN0LCBjb2xsYXRvciwgYm91bmRBcmdzLCAyLCBBU0NJSUxpdGVyYWwoImNvbXBhcmUiKSk7Cisg
ICAgICAgIC8vIGQuIFNldCBjb2xsYXRvci5bW2JvdW5kQ29tcGFyZV1dIHRvIGJjLgorICAgICAg
ICBjb2xsYXRvci0+c2V0Qm91bmRDb21wYXJlKHZtLCBib3VuZENvbXBhcmUpOworICAgIH0KKyAg
ICAvLyAzLiBSZXR1cm4gY29sbGF0b3IuW1tib3VuZENvbXBhcmVdXS4KKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGJvdW5kQ29tcGFyZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgLy8gMTAuMy41IEludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVk
T3B0aW9ucygpIChFQ01BLTQwMiAyLjApCisgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpz
RHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICgh
Y29sbGF0b3IpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
ZXhlYykpOworCisgICAgLy8gVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBuZXcgb2JqZWN0IHdob3Nl
IHByb3BlcnRpZXMgYW5kIGF0dHJpYnV0ZXMgYXJlIHNldCBhcyBpZiBjb25zdHJ1Y3RlZCBieSBh
biBvYmplY3QgbGl0ZXJhbCBhc3NpZ25pbmcgdG8gZWFjaCBvZiB0aGUgZm9sbG93aW5nIHByb3Bl
cnRpZXMgdGhlIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGludGVybmFsIHNsb3Qgb2YgdGhp
cyBDb2xsYXRvciBvYmplY3QgKHNlZSAxMC40KTogbG9jYWxlLCB1c2FnZSwgc2Vuc2l0aXZpdHks
IGlnbm9yZVB1bmN0dWF0aW9uLCBjb2xsYXRpb24sIGFzIHdlbGwgYXMgdGhvc2UgcHJvcGVydGll
cyBzaG93biBpbiBUYWJsZSAxIHdob3NlIGtleXMgYXJlIGluY2x1ZGVkIGluIHRoZSAlQ29sbGF0
b3IlW1tyZWxldmFudEV4dGVuc2lvbktleXNdXSBpbnRlcm5hbCBzbG90IG9mIHRoZSBzdGFuZGFy
ZCBidWlsdC1pbiBvYmplY3QgdGhhdCBpcyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBJbnRsLkNvbGxh
dG9yLgorCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVj
KTsKKworICAgIC8vIEZJWE1FOiBQb3B1bGF0ZSBvYmplY3QgZnJvbSBpbnRlcm5hbCBzbG90cy4K
KworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3B0aW9ucyk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4
MTY0MjY3OWU5ZjUxMjE0NWNkZjdlMDJjY2FmNDY5N2ZlYjdjYzEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuaApA
QCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25l
ciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxDb2xs
YXRvclByb3RvdHlwZV9oCisjZGVmaW5lIEludGxDb2xsYXRvclByb3RvdHlwZV9oCisKKyNpZiBF
TkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkludGxDb2xsYXRvci5oIgorI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsQ29sbGF0b3JQcm90b3R5cGUg
OiBwdWJsaWMgSW50bENvbGxhdG9yIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGxDb2xsYXRv
ciBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3Rh
dGljIEludGxDb2xsYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0
ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcml2YXRlOgorICAgIEludGxD
b2xsYXRvclByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJ
TlRMKQorCisjZW5kaWYgLy8gSW50bENvbGxhdG9yUHJvdG90eXBlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmI4NjI4ZmJlODY1NjUzNzhkZmRmM2Y3ZTFlOTNhNGMxZmVkMjUyMmUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQu
Y3BwCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFu
V2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisKKyNpZiBFTkFCTEUo
SU5UTCkKKworI2luY2x1ZGUgIkRhdGVDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkRhdGVJbnN0
YW5jZS5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNCb3Vu
ZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJK
U0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJ
bmZvIEludGxEYXRlVGltZUZvcm1hdDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5m
bywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsRGF0ZVRpbWVGb3JtYXQpIH07CisKK0ludGxE
YXRlVGltZUZvcm1hdCogSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBJbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IpCit7CisgICAgSW50bERhdGVUaW1l
Rm9ybWF0KiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGF0ZVRpbWVG
b3JtYXQ+KHZtLmhlYXApKSBJbnRsRGF0ZVRpbWVGb3JtYXQodm0sIGNvbnN0cnVjdG9yLT5kYXRl
VGltZUZvcm1hdFN0cnVjdHVyZSgpKTsKKyAgICBmb3JtYXQtPmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICByZXR1cm4gZm9ybWF0OworfQorCitTdHJ1Y3R1cmUqIEludGxEYXRlVGltZUZvcm1hdDo6
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworfQorCitJbnRsRGF0ZVRpbWVGb3JtYXQ6OkludGxEYXRlVGltZUZvcm1hdChW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3Qo
dm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNT
RVJUKGluaGVyaXRzKGluZm8oKSkpOworfQorCit2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6ZGVz
dHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0
Kj4oY2VsbCktPkludGxEYXRlVGltZUZvcm1hdDo6fkludGxEYXRlVGltZUZvcm1hdCgpOworfQor
Cit2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEludGxEYXRlVGltZUZvcm1hdCogdGhpc09iamVj
dCA9IGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fYm91bmRGb3JtYXQpOworfQorCit2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6c2V0Qm91
bmRGb3JtYXQoVk0mIHZtLCBKU0JvdW5kRnVuY3Rpb24qIGZvcm1hdCkKK3sKKyAgICBtX2JvdW5k
Rm9ybWF0LnNldCh2bSwgdGhpcywgZm9ybWF0KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUoRXhlY1N0YXRlKiBl
eGVjKQoreworICAgIC8vIDEyLjMuNCBEYXRlVGltZSBGb3JtYXQgRnVuY3Rpb25zIChFQ01BLTQw
MiAyLjApCisgICAgLy8gMS4gTGV0IGR0ZiBiZSB0aGUgdGhpcyB2YWx1ZS4KKyAgICBJbnRsRGF0
ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4o
ZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIC8vIDIuIEFzc2VydDogVHlwZShkdGYpIGlzIE9iamVj
dCBhbmQgZHRmIGhhcyBhbiBbW2luaXRpYWxpemVkRGF0ZVRpbWVGb3JtYXRdXSBpbnRlcm5hbCBz
bG90IHdob3NlIHZhbHVlIGlzIHRydWUuCisgICAgaWYgKCFmb3JtYXQpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYykpOworCisgICAgSlNWYWx1ZSBk
YXRlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgZG91YmxlIHZhbHVlOworCisgICAgLy8gMy4g
SWYgZGF0ZSBpcyBub3QgcHJvdmlkZWQgb3IgaXMgdW5kZWZpbmVkLCB0aGVuCisgICAgaWYgKGRh
dGUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICAvLyBhLiBMZXQgeCBiZSAlRGF0ZV9ub3clKCku
CisgICAgICAgIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGRhdGVOb3coZXhlYykpLnRvTnVtYmVy
KGV4ZWMpOworICAgIC8vIDQuIEVsc2UKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBhLiBMZXQg
eCBiZSBUb051bWJlcihkYXRlKS4KKyAgICAgICAgdmFsdWUgPSBkYXRlLnRvTnVtYmVyKGV4ZWMp
OworICAgICAgICAvLyBiLiBSZXR1cm5JZkFicnVwdCh4KS4KKyAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICB9CisKKyAgICAvLyA1LiBSZXR1cm4gRm9ybWF0RGF0ZVRpbWUoZHRmLCB4
KS4KKworICAgIC8vIDEyLjMuNCBGb3JtYXREYXRlVGltZSBhYnN0cmFjdCBvcGVyYXRpb24gKEVD
TUEtNDAyIDIuMCkKKworICAgIC8vIDEuIElmIHggaXMgbm90IGEgZmluaXRlIE51bWJlciwgdGhl
biB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uLgorICAgIGlmICghc3RkOjppc2Zpbml0ZSh2
YWx1ZSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dSYW5nZUVycm9yKGV4
ZWMsIFN0cmluZygiZGF0ZSB2YWx1ZSBpcyBub3QgZmluaXRlIGluIERhdGVUaW1lRm9ybWF0LmZv
cm1hdCgpIikpKTsKKworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgMiAtIDkKKworICAgIC8vIFJl
dHVybiBuZXcgRGF0ZSh2YWx1ZSkudG9TdHJpbmcoKSB1bnRpbCBwcm9wZXJseSBpbXBsZW1lbnRl
ZC4KKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgRGF0ZUluc3RhbmNl
KiBkID0gRGF0ZUluc3RhbmNlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+ZGF0ZVN0cnVjdHVy
ZSgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKGQpLnRvU3Ry
aW5nKGV4ZWMpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RhZWQxMzhmYjA4ZGNmYTNiZTY3ZDM3YzgzYTQ3ZGI0YWFi
Y2JkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgSW50bERhdGVUaW1lRm9ybWF0X2gKKyNkZWZpbmUgSW50bERhdGVUaW1lRm9y
bWF0X2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmpl
Y3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yOworY2xhc3MgSlNCb3VuZEZ1bmN0aW9uOworCitjbGFzcyBJbnRsRGF0ZVRpbWVGb3Jt
YXQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYg
SlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBJbnRsRGF0ZVRpbWVGb3Jt
YXQqIGNyZWF0ZShWTSYsIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKik7CisgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRG
b3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kRm9ybWF0LmdldCgpOyB9CisgICAgdm9pZCBz
ZXRCb3VuZEZvcm1hdChWTSYsIEpTQm91bmRGdW5jdGlvbiopOworCitwcm90ZWN0ZWQ6CisgICAg
SW50bERhdGVUaW1lRm9ybWF0KFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgV3JpdGVC
YXJyaWVyPEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZEZvcm1hdDsKK307CisgICAgCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGlt
ZShFeGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5UTCkKKworI2VuZGlmIC8vIEludGxEYXRlVGltZUZvcm1hdF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI4ZDQ2MGQyNjc0MWE0YjkzMzZiOGNiMGY4YjY0ZmI3
OGQwNjg3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDE4MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdt
YWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCIKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5j
bHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRl
ICJJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0Lmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVz
LmgiCisjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgi
CisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RB
VElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERh
dGVUaW1lRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0ZSop
OworCit9CisKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19p
bmZvLCAmZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gZGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3RvclRhYmxlCisgIHN1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKworSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IqIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBkYXRlVGltZUZvcm1h
dFByb3RvdHlwZSwgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSkKK3sKKyAgICBJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIElu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVj
dG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIGRhdGVUaW1l
Rm9ybWF0U3RydWN0dXJlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVy
ZSogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bERh
dGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBz
dHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBkYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZSwgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSkKK3sK
KyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVNDSUlMaXRlcmFsKCJEYXRlVGltZUZvcm1h
dCIpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtIHwg
RG9udERlbGV0ZSk7CisgICAgbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS5zZXQodm0sIHRoaXMs
IGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlKiBleGVjKQoreworICAg
IC8vIDEyLjEuMiBJbnRsLkRhdGVUaW1lRm9ybWF0IChbbG9jYWxlcyBbLCBvcHRpb25zXV0pIChF
Q01BLTQwMiAyLjApCisgICAgLy8gMS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5l
d1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0
IGJlIE5ld1RhcmdldC4KKyAgICBKU1ZhbHVlIG5ld1RhcmdldCA9IGV4ZWMtPm5ld1RhcmdldCgp
OworICAgIGlmICghbmV3VGFyZ2V0IHx8IG5ld1RhcmdldC5pc1VuZGVmaW5lZCgpKQorICAgICAg
ICBuZXdUYXJnZXQgPSBleGVjLT5jYWxsZWUoKTsKKworICAgIC8vIDIuIExldCBkYXRlVGltZUZv
cm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZSUpLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSW50bERh
dGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRl
KHZtLCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUo
KSkpOworICAgIGlmIChkYXRlVGltZUZvcm1hdCAmJiAhanNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvcio+KG5ld1RhcmdldCkpIHsKKyAgICAgICAgSlNWYWx1ZSBwcm90
byA9IGFzT2JqZWN0KG5ld1RhcmdldCktPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlKTsKKyAgICAgICAgYXNPYmplY3QoZGF0ZVRpbWVGb3JtYXQpLT5zZXRQcm90b3R5
cGVXaXRoQ3ljbGVDaGVjayhleGVjLCBwcm90byk7CisgICAgfQorCisgICAgLy8gMy4gUmV0dXJu
SWZBYnJ1cHQoZGF0ZVRpbWVGb3JtYXQpLgorICAgIEFTU0VSVChkYXRlVGltZUZvcm1hdCk7CisK
KyAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KGRhdGVUaW1lRm9ybWF0
LCBsb2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShJbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMsIG9wdGlv
bnMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQpOworfQor
ICAgIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bERhdGVUaW1lRm9ybWF0
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMi4xLjIgSW50bC5EYXRlVGltZUZvcm1hdCAo
W2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIElmIE5ld1Rh
cmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBv
YmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCisgICAgLy8gTmV3VGFyZ2V0
IGlzIGFsd2F5cyB1bmRlZmluZWQgd2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlvbi4KKworICAgIC8v
IDIuIExldCBkYXRlVGltZUZvcm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3Rvcihu
ZXdUYXJnZXQsICVEYXRlVGltZUZvcm1hdFByb3RvdHlwZSUpLgorICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IEludGxEYXRl
VGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IqPihleGVjLT5jYWxsZWUoKSkpOworCisgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQoZGF0ZVRp
bWVGb3JtYXQpLgorICAgIEFTU0VSVChkYXRlVGltZUZvcm1hdCk7CisKKyAgICAvLyA0LiBSZXR1
cm4gSW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBsb2NhbGVzLCBvcHRp
b25zKS4KKyAgICAvLyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShJbml0aWFsaXplRGF0
ZVRpbWVGb3JtYXQoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpKTsKKworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQpOworfQorCitDb25zdHJ1Y3RUeXBl
IEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCos
IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRp
dmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVGb3JtYXQ7CisgICAgcmV0dXJuIENv
bnN0cnVjdFR5cGVIb3N0OworfQorCitDYWxsVHlwZSBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNh
bGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxJbnRsRGF0ZVRpbWVGb3JtYXQ7CisgICAgcmV0
dXJuIENhbGxUeXBlSG9zdDsKK30KKworYm9vbCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
cjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJl
dHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgZGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRl
ZExvY2FsZXNPZihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTIuMi4yIEludGwuRGF0ZVRp
bWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKGxvY2FsZXMgWywgb3B0aW9uc10pIChFQ01BLTQw
MiAyLjApCisKKyAgICAvLyAxLiBMZXQgYXZhaWxhYmxlTG9jYWxlcyBiZSAlRGF0ZVRpbWVGb3Jt
YXQlLltbYXZhaWxhYmxlTG9jYWxlc11dLgorICAgIC8vIEZJWE1FOiBhdmFpbGFibGUgPSBJbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0QXZhaWxhYmxlTG9jYWxlcygpCisKKyAgICAv
LyAyLiBMZXQgcmVxdWVzdGVkTG9jYWxlcyBiZSBDYW5vbmljYWxpemVMb2NhbGVMaXN0KGxvY2Fs
ZXMpLgorICAgIC8vIEZJWE1FOiByZXF1ZXN0ZWQgPSBDYW5vbmljYWxpemVMb2NhbGVMaXN0KGxv
Y2FsZXMpCisKKyAgICAvLyAzLiBSZXR1cm4gU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGVMb2Nh
bGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBGSVhNRTogcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShTdXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJsZSwgcmVxdWVzdGVkLCBvcHRp
b25zKSk7CisKKyAgICAvLyBSZXR1cm4gZW1wdHkgYXJyYXkgdW50aWwgcHJvcGVybHkgaW1wbGVt
ZW50ZWQuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworICAgIEpTQXJyYXkq
IHN1cHBvcnRlZExvY2FsZXMgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBn
bG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlv
bihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKKyAgICBpZiAoIXN1cHBvcnRlZExvY2FsZXMpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMp
KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcyk7Cit9Cisg
ICAgCit2b2lkIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0
b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGF0ZVRpbWVGb3JtYXRT
dHJ1Y3R1cmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJ
TlRMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2YwNDNhN2U3MGE0MmZm
ZWFmZjJkOGRiYjU2MGViYTFjMzNhY2E1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgKQEAgLTAs
MCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRo
ZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvcl9oCisjZGVmaW5lIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
X2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0OworY2xhc3MgSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOworCitjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdDsKKworICAgIHN0YXRpYyBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY3JlYXRl
KFZNJiwgU3RydWN0dXJlKiwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiwgU3RydWN0dXJl
Kik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIFN0cnVjdHVyZSog
ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RhdGVUaW1lRm9ybWF0
U3RydWN0dXJlLmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisKK3ByaXZh
dGU6CisgICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsK
KyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0
cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2Fs
bERhdGEmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICAKKyAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlOworfTsKKworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVGb3JtYXQoRXhlY1N0
YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsRGF0ZVRpbWVGb3Jt
YXQoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxF
KElOVEwpCisKKyNlbmRpZiAvLyBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWFiODhiMGVkNjk2MjY3YWY0YzM4M2E5
NTVmZTc0YzYzYzAwNjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDEzOCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFm
dGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIgorCisjaWYgRU5BQkxFKElOVEwpCisKKyNp
bmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgorI2luY2x1
ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVk
ZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElC
TEUoSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4
ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqKTsKKworfQor
CisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6
c19pbmZvID0geyAiT2JqZWN0IiwgJkludGxEYXRlVGltZUZvcm1hdDo6c19pbmZvLCAmZGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlLmx1dC5oCitAYmVnaW4gZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVUYWJsZQorICBmb3Jt
YXQgICAgICAgICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCAgICAg
ICAgIERvbnRFbnVtfEFjY2Vzc29yCisgIHJlc29sdmVkT3B0aW9ucyAgSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyAgRG9udEVudW18RnVuY3Rpb24gMAorQGVu
ZAorKi8KKworSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCit7CisgICAgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU+KHZtLmhl
YXApKSBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2Jq
ZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgc3RydWN0dXJlKTsKKyAgICByZXR1cm4gb2JqZWN0Owor
fQorCitTdHJ1Y3R1cmUqIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
fQorCitJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OkludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50bERhdGVUaW1lRm9y
bWF0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSopCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworfQorCitib29sIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVy
biBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIGRhdGVUaW1lRm9ybWF0UHJv
dG90eXBlVGFibGUsIGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqPihvYmplY3Qp
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChFeGVjU3RhdGUqIGV4ZWMp
Cit7CisgICAgLy8gMTIuMy4zIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCAo
RUNNQS00MDIgMi4wKQorICAgIC8vIDEuIExldCBkdGYgYmUgdGhpcyBEYXRlVGltZUZvcm1hdCBv
YmplY3QuCisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkdGYgPSBqc0R5bmFtaWNDYXN0PEludGxE
YXRlVGltZUZvcm1hdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICAvLyAyLiBSZXR1cm5JZkFi
cnVwdChkdGYpLgorICAgIGlmICghZHRmKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKyAgICAKKyAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5k
Rm9ybWF0ID0gZHRmLT5ib3VuZEZvcm1hdCgpOworICAgIC8vIDMuIElmIHRoZSBbW2JvdW5kRm9y
bWF0XV0gaW50ZXJuYWwgc2xvdCBvZiB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdCBpcyB1bmRl
ZmluZWQsCisgICAgaWYgKCFib3VuZEZvcm1hdCkgeworICAgICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZHRmLT5nbG9iYWxP
YmplY3QoKTsKKyAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24g
b2JqZWN0IGFzIGRlZmluZWQgaW4gMTIuMy40LgorICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2Yg
RuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuIChOb3RlOiBG4oCZcyBsZW5ndGggcHJvcGVydHkg
d2FzIDAgaW4gRUNNQS00MDIgMS4wKQorICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3Qg
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgQVNDSUlMaXRlcmFsKCJm
b3JtYXQiKSwgSW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lLCBOb0ludHJpbnNp
Yyk7CisgICAgICAgIEpTQXJyYXkqIGJvdW5kQXJncyA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIDApOworICAgICAgICBpZiAoIWJv
dW5kQXJncykKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1l
bW9yeUVycm9yKGV4ZWMpKTsKKyAgICAgICAgCisgICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3Vu
ZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4KKyAgICAgICAgYm91bmRGb3JtYXQg
PSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3Qs
IGR0ZiwgYm91bmRBcmdzLCAxLCBBU0NJSUxpdGVyYWwoImZvcm1hdCIpKTsKKyAgICAgICAgLy8g
ZC4gU2V0IGR0Zi5bW2JvdW5kRm9ybWF0XV0gdG8gYmYuCisgICAgICAgIGR0Zi0+c2V0Qm91bmRG
b3JtYXQodm0sIGJvdW5kRm9ybWF0KTsKKyAgICB9CisgICAgLy8gNC4gUmV0dXJuIGR0Zi5bW2Jv
dW5kRm9ybWF0XV0uCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShib3VuZEZvcm1hdCk7Cit9
CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTIuMy41
IEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIChFQ01BLTQw
MiAyLjApCisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkdGYgPSBqc0R5bmFtaWNDYXN0PEludGxE
YXRlVGltZUZvcm1hdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWR0ZikKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisKKyAgICAv
LyBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIG5ldyBvYmplY3Qgd2hvc2UgcHJvcGVydGllcyBhbmQg
YXR0cmlidXRlcyBhcmUgc2V0IGFzIGlmIGNvbnN0cnVjdGVkIGJ5IGFuIG9iamVjdCBsaXRlcmFs
IGFzc2lnbmluZyB0byBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB0aGUgdmFsdWUg
b2YgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJuYWwgc2xvdCBvZiB0aGlzIERhdGVUaW1lRm9ybWF0
IG9iamVjdCAoc2VlIDEyLjQpOiBsb2NhbGUsIGNhbGVuZGFyLCBudW1iZXJpbmdTeXN0ZW0sIHRp
bWVab25lLCBob3VyMTIsIHdlZWtkYXksIGVyYSwgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWlu
dXRlLCBzZWNvbmQsIGFuZCB0aW1lWm9uZU5hbWUuIFByb3BlcnRpZXMgd2hvc2UgY29ycmVzcG9u
ZGluZyBpbnRlcm5hbCBzbG90cyBhcmUgbm90IHByZXNlbnQgYXJlIG5vdCBhc3NpZ25lZC4KKyAg
ICAvLyBOb3RlOiBJbiB0aGlzIHZlcnNpb24gb2YgdGhlIEVDTUFTY3JpcHQgMjAxNSBJbnRlcm5h
dGlvbmFsaXphdGlvbiBBUEksIHRoZSB0aW1lWm9uZSBwcm9wZXJ0eSB3aWxsIGJlIHRoZSBuYW1l
IG9mIHRoZSBkZWZhdWx0IHRpbWUgem9uZSBpZiBubyB0aW1lWm9uZSBwcm9wZXJ0eSB3YXMgcHJv
dmlkZWQgaW4gdGhlIG9wdGlvbnMgb2JqZWN0IHByb3ZpZGVkIHRvIHRoZSBJbnRsLkRhdGVUaW1l
Rm9ybWF0IGNvbnN0cnVjdG9yLiBUaGUgcHJldmlvdXMgdmVyc2lvbiBsZWZ0IHRoZSB0aW1lWm9u
ZSBwcm9wZXJ0eSB1bmRlZmluZWQgaW4gdGhpcyBjYXNlLgorCisgICAgSlNPYmplY3QqIG9wdGlv
bnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKworICAgIC8vIEZJWE1FOiBQb3B1bGF0
ZSBvYmplY3QgZnJvbSBpbnRlcm5hbCBzbG90cy4KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUob3B0aW9ucyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxF
KElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyZmQ1ZTM0ZWE3OTU4NmU0
Nzg5NmZhZmZjNDRlNWU2ZmE2MTU5Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaApAQCAtMCwwICsx
LDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFs
ZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZV9oCisjZGVmaW5lIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZV9oCisKKyNp
ZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgorI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUgOiBwdWJsaWMgSW50bERhdGVUaW1lRm9ybWF0IHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIEludGxEYXRlVGltZUZvcm1hdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGljIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIFN0cnVjdHVyZSopOworCitwcml2YXRlOgorICAgIEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQor
CisjZW5kaWYgLy8gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTM5ZGM1YjE5ZWE0OGVjYjRhNGFlMzE3OTBlMzA5ZWI0YWM3NmFiOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBA
IC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25l
ciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorCisjaWYgRU5BQkxFKElOVEwpCisK
KyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ci5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24u
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1
cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bE51
bWJlckZvcm1hdDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShJbnRsTnVtYmVyRm9ybWF0KSB9OworCitJbnRsTnVtYmVyRm9ybWF0KiBJ
bnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IqIGNvbnN0cnVjdG9yKQoreworICAgIEludGxOdW1iZXJGb3JtYXQqIGZvcm1hdCA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxOdW1iZXJGb3JtYXQ+KHZtLmhlYXApKSBJbnRsTnVt
YmVyRm9ybWF0KHZtLCBjb25zdHJ1Y3Rvci0+bnVtYmVyRm9ybWF0U3RydWN0dXJlKCkpOworICAg
IGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBmb3JtYXQ7Cit9CisKK1N0
cnVjdHVyZSogSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsTnVtYmVyRm9y
bWF0OjpJbnRsTnVtYmVyRm9ybWF0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
OiBKU0Rlc3RydWN0aWJsZU9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxO
dW1iZXJGb3JtYXQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworfQorCit2b2lkIElu
dGxOdW1iZXJGb3JtYXQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0
PEludGxOdW1iZXJGb3JtYXQqPihjZWxsKS0+SW50bE51bWJlckZvcm1hdDo6fkludGxOdW1iZXJG
b3JtYXQoKTsKK30KKwordm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSW50bE51bWJlckZvcm1hdCog
dGhpc09iamVjdCA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oY2VsbCk7CisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2JvdW5kRm9ybWF0KTsKK30KKwordm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpz
ZXRCb3VuZEZvcm1hdChWTSYgdm0sIEpTQm91bmRGdW5jdGlvbiogZm9ybWF0KQoreworICAgIG1f
Ym91bmRGb3JtYXQuc2V0KHZtLCB0aGlzLCBmb3JtYXQpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICAvLyAxMS4zLjQgRm9ybWF0IE51bWJlciBGdW5jdGlvbnMgKEVDTUEtNDAy
IDIuMCkKKyAgICAvLyAxLiBMZXQgbmYgYmUgdGhlIHRoaXMgdmFsdWUuCisgICAgSW50bE51bWJl
ckZvcm1hdCogZm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oZXhlYy0+
dGhpc1ZhbHVlKCkpOworICAgIC8vIDIuIEFzc2VydDogVHlwZShuZikgaXMgT2JqZWN0IGFuZCBu
ZiBoYXMgYW4gW1tpbml0aWFsaXplZE51bWJlckZvcm1hdF1dIGludGVybmFsIHNsb3Qgd2hvc2Ug
dmFsdWUgaXMgdHJ1ZS4KKyAgICBpZiAoIWZvcm1hdCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisKKyAgICAvLyAzLiBJZiB2YWx1ZSBpcyBu
b3QgcHJvdmlkZWQsIGxldCB2YWx1ZSBiZSB1bmRlZmluZWQuCisgICAgLy8gNC4gTGV0IHggYmUg
VG9OdW1iZXIodmFsdWUpLgorICAgIGRvdWJsZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRv
TnVtYmVyKGV4ZWMpOworICAgIC8vIDUuIFJldHVybklmQWJydXB0KHgpLgorICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKworICAgIC8vIDYuIFJldHVybiBGb3JtYXROdW1iZXIobmYsIHgpLgorICAgIAor
ICAgIC8vIDExLjMuNCBGb3JtYXROdW1iZXIgYWJzdHJhY3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAy
LjApCisgICAgLy8gRklYTUU6IEltcGxlbWVudCBGb3JtYXROdW1iZXIuCisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZhbHVlKS50b1N0cmluZyhleGVjKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2My
NTM4ZjliZmJhMzBlNzQzODIxYjJmMGQxODFlNjM4NzJhMTIwOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaApAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhl
dGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxOdW1iZXJGb3Jt
YXRfaAorI2RlZmluZSBJbnRsTnVtYmVyRm9ybWF0X2gKKworI2lmIEVOQUJMRShJTlRMKQorCisj
aW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvcjsKK2NsYXNzIEpTQm91bmRGdW5jdGlvbjsK
KworY2xhc3MgSW50bE51bWJlckZvcm1hdCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworCisgICAg
c3RhdGljIEludGxOdW1iZXJGb3JtYXQqIGNyZWF0ZShWTSYsIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3RvciopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBKU0Jv
dW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEZvcm1hdC5n
ZXQoKTsgfQorICAgIHZvaWQgc2V0Qm91bmRGb3JtYXQoVk0mLCBKU0JvdW5kRnVuY3Rpb24qKTsK
KworcHJvdGVjdGVkOgorICAgIEludGxOdW1iZXJGb3JtYXQoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0Nl
bGwqKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CisKKyAgICBXcml0ZUJhcnJpZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2JvdW5kRm9ybWF0Owor
fTsKKyAgICAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdEZ1
bmNGb3JtYXROdW1iZXIoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsTnVtYmVyRm9ybWF0X2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4NjM5ZDZiMTRjNzAwN2E4NzEwMjU1Nzdh
YWUyZWQyOWZiY2QyZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTgzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0
ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCIKKworI2lmIEVOQUJMRShJTlRMKQorCisj
aW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisjaW5jbHVk
ZSAiSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMu
aCIKKyNpbmNsdWRlICJMb29rdXAuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIK
KyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFU
SUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqKTsKKwor
fQorCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmbnVtYmVyRm9ybWF0Q29u
c3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1
dC5oCitAYmVnaW4gbnVtYmVyRm9ybWF0Q29uc3RydWN0b3JUYWJsZQorICBzdXBwb3J0ZWRMb2Nh
bGVzT2YgICAgICAgICAgICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRl
ZExvY2FsZXNPZiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCitJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUqIG51bWJlckZvcm1hdFByb3RvdHlwZSwgU3RydWN0dXJlKiBudW1iZXJGb3JtYXRTdHJ1
Y3R1cmUpCit7CisgICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcj4o
dm0uaGVhcCkpIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAg
ICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIG51bWJlckZvcm1hdFByb3RvdHlwZSwg
bnVtYmVyRm9ybWF0U3RydWN0dXJlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0
cnVjdHVyZSogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sK
KyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0lu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBz
dHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIG51bWJlckZvcm1h
dFByb3RvdHlwZSwgU3RydWN0dXJlKiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUpCit7CisgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgiTnVtYmVyRm9ybWF0IikpOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIG51bWJlckZvcm1hdFByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7
CisgICAgbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBudW1iZXJGb3JtYXRT
dHJ1Y3R1cmUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdElu
dGxOdW1iZXJGb3JtYXQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDExLjEuMiBJbnRsLk51
bWJlckZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQorICAgIC8v
IDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2
ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCisgICAg
SlNWYWx1ZSBuZXdUYXJnZXQgPSBleGVjLT5uZXdUYXJnZXQoKTsKKyAgICBpZiAoIW5ld1Rhcmdl
dCB8fCBuZXdUYXJnZXQuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgbmV3VGFyZ2V0ID0gZXhlYy0+
Y2FsbGVlKCk7CisKKyAgICAvLyAyLiBMZXQgbnVtYmVyRm9ybWF0IGJlIE9yZGluYXJ5Q3JlYXRl
RnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJU51bWJlckZvcm1hdFByb3RvdHlwZSUpLgorICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0
ID0gSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpKTsKKyAgICBpZiAobnVtYmVyRm9ybWF0ICYmICFq
c0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KG5ld1RhcmdldCkpIHsK
KyAgICAgICAgSlNWYWx1ZSBwcm90byA9IGFzT2JqZWN0KG5ld1RhcmdldCktPmdldERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKKyAgICAgICAgYXNPYmplY3QobnVtYmVy
Rm9ybWF0KS0+c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soZXhlYywgcHJvdG8pOworICAgIH0K
KworICAgIC8vIDMuIFJldHVybklmQWJydXB0KG51bWJlckZvcm1hdCkuCisgICAgQVNTRVJUKG51
bWJlckZvcm1hdCk7CisKKyAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZU51bWJlckZvcm1hdChu
dW1iZXJGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpLgorICAgIC8vIEZJWE1FOiByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEluaXRpYWxpemVOdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBsb2NhbGVz
LCBvcHRpb25zKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdCk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxOdW1iZXJGb3JtYXQo
RXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDExLjEuMiBJbnRsLk51bWJlckZvcm1hdCAoW2xv
Y2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIElmIE5ld1Rhcmdl
dCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmpl
Y3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCisgICAgLy8gTmV3VGFyZ2V0IGlz
IGFsd2F5cyB1bmRlZmluZWQgd2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlvbi4KKworICAgIC8vIDIu
IExldCBudW1iZXJGb3JtYXQgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFy
Z2V0LCAlTnVtYmVyRm9ybWF0UHJvdG90eXBlJSkuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBJbnRsTnVtYmVyRm9ybWF0Ojpj
cmVhdGUodm0sIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqPihleGVjLT5jYWxs
ZWUoKSkpOworCisgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQobnVtYmVyRm9ybWF0KS4KKyAgICBB
U1NFUlQobnVtYmVyRm9ybWF0KTsKKworICAgIC8vIDQuIFJldHVybiBJbml0aWFsaXplTnVtYmVy
Rm9ybWF0KG51bWJlckZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6IHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSW5pdGlhbGl6ZU51bWJlckZvcm1hdChudW1iZXJGb3JtYXQs
IGxvY2FsZXMsIG9wdGlvbnMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVtYmVy
Rm9ybWF0KTsKK30KKworQ29uc3RydWN0VHlwZSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6
OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkK
K3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEludGxOdW1i
ZXJGb3JtYXQ7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCitDYWxsVHlwZSBJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRh
JiBjYWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsSW50bE51
bWJlckZvcm1hdDsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitib29sIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJuYWxGdW5j
dGlvbj4oZXhlYywgbnVtYmVyRm9ybWF0Q29uc3RydWN0b3JUYWJsZSwganNDYXN0PEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
RnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTEuMi4y
IEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGVzIFssIG9wdGlvbnNd
KSAoRUNNQS00MDIgMi4wKQorCisgICAgLy8gMS4gTGV0IGF2YWlsYWJsZUxvY2FsZXMgYmUgJU51
bWJlckZvcm1hdCUuW1thdmFpbGFibGVMb2NhbGVzXV0uCisgICAgLy8gRklYTUU6IGF2YWlsYWJs
ZSA9IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0QXZhaWxhYmxlTG9jYWxlcygpCisK
KyAgICAvLyAyLiBMZXQgcmVxdWVzdGVkTG9jYWxlcyBiZSBDYW5vbmljYWxpemVMb2NhbGVMaXN0
KGxvY2FsZXMpLgorICAgIC8vIEZJWE1FOiByZXF1ZXN0ZWQgPSBDYW5vbmljYWxpemVMb2NhbGVM
aXN0KGxvY2FsZXMpCisKKyAgICAvLyAzLiBSZXR1cm4gU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFi
bGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBGSVhNRTogcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShTdXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJsZSwgcmVxdWVzdGVk
LCBvcHRpb25zKSk7CisKKyAgICAvLyBSZXR1cm4gZW1wdHkgYXJyYXkgdW50aWwgcHJvcGVybHkg
aW1wbGVtZW50ZWQuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworICAgIEpT
QXJyYXkqIHN1cHBvcnRlZExvY2FsZXMgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVk
KHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKKyAgICBpZiAoIXN1cHBvcnRlZExvY2Fs
ZXMpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcyk7
Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9udW1iZXJGb3JtYXRTdHJ1Y3R1
cmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjc1ZjEwMjE2NGNjZGYxMmNlNTNlNWM5
NDhiNmNhMTE3OTk5YWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw3MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVy
QGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3JfaAorI2RlZmluZSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JfaAorCisjaWYgRU5BQkxF
KElOVEwpCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBJbnRsTnVtYmVyRm9ybWF0OworY2xhc3MgSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZTsKKworY2xhc3MgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yIDogcHVibGljIEludGVy
bmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNl
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGljIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBE
RUNMQVJFX0lORk87CisKKyAgICBTdHJ1Y3R1cmUqIG51bWJlckZvcm1hdFN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLmdldCgpOyB9CisKK3Byb3RlY3Rl
ZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZSosIFN0cnVjdHVyZSopOworCitwcml2YXRlOgorICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0
cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOworICAgIAorICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbnVtYmVyRm9ybWF0U3Ry
dWN0dXJlOworfTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRs
TnVtYmVyRm9ybWF0KEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsSW50bE51bWJlckZvcm1hdChFeGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKworI2VuZGlmIC8vIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3NGNjMzY4ZGM5MTQ5
OWRhNzg4MTAzNzc0ODBjNjcwNzA3NDBjMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMCww
ICsxLDEzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRo
ZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCIKKworI2lmIEVOQUJMRShJTlRM
KQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisj
aW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNp
bmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RS
VUNUSUJMRShJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKTsKKworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChF
eGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSopOworCit9CisK
KyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OnNfaW5m
byA9IHsgIk9iamVjdCIsICZJbnRsTnVtYmVyRm9ybWF0OjpzX2luZm8sICZudW1iZXJGb3JtYXRQ
cm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmgK
K0BiZWdpbiBudW1iZXJGb3JtYXRQcm90b3R5cGVUYWJsZQorICBmb3JtYXQgICAgICAgICAgIElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQgICAgICAgICBEb250RW51bXxBY2Nl
c3NvcgorICByZXNvbHZlZE9wdGlvbnMgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVz
b2x2ZWRPcHRpb25zICBEb250RW51bXxGdW5jdGlvbiAwCitAZW5kCisqLworCitJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cnVj
dHVyZSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6
OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
KyAgICA6IEludGxOdW1iZXJGb3JtYXQodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSop
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCitib29sIEludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCBu
dW1iZXJGb3JtYXRQcm90b3R5cGVUYWJsZSwganNDYXN0PEludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIC8vIDExLjMuMyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUu
Zm9ybWF0IChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gTGV0IG5mIGJlIHRoaXMgTnVtYmVyRm9y
bWF0IG9iamVjdC4KKyAgICBJbnRsTnVtYmVyRm9ybWF0KiBuZiA9IGpzRHluYW1pY0Nhc3Q8SW50
bE51bWJlckZvcm1hdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIW5mKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKyAgICAKKyAg
ICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0ID0gbmYtPmJvdW5kRm9ybWF0KCk7CisgICAg
Ly8gMi4gSWYgbmYuW1tib3VuZEZvcm1hdF1dIGlzIHVuZGVmaW5lZCwKKyAgICBpZiAoIWJvdW5k
Rm9ybWF0KSB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBuZi0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgIC8vIGEu
IExldCBGIGJlIGEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBhcyBkZWZpbmVkIGluIDEx
LjMuNC4KKyAgICAgICAgLy8gYi4gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBp
cyAxLgorICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSwgSW50bE51bWJl
ckZvcm1hdEZ1bmNGb3JtYXROdW1iZXIsIE5vSW50cmluc2ljKTsKKyAgICAgICAgSlNBcnJheSog
Ym91bmRBcmdzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlX
aXRoVW5kZWNpZGVkKSwgMCk7CisgICAgICAgIGlmICghYm91bmRBcmdzKQorICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYykpOworCisg
ICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1
ZcK7KS4KKyAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIG5mLCBib3VuZEFyZ3MsIDEsIEFTQ0lJTGl0ZXJh
bCgiZm9ybWF0IikpOworICAgICAgICAvLyBkLiBTZXQgbmYuW1tib3VuZEZvcm1hdF1dIHRvIGJm
LgorICAgICAgICBuZi0+c2V0Qm91bmRGb3JtYXQodm0sIGJvdW5kRm9ybWF0KTsKKyAgICB9Cisg
ICAgLy8gMy4gUmV0dXJuIG5mLltbYm91bmRGb3JtYXRdXS4KKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGJvdW5kRm9ybWF0KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgLy8gMTEuMy41IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZl
ZE9wdGlvbnMoKSAoRUNNQS00MDIgMi4wKQorICAgIEludGxOdW1iZXJGb3JtYXQqIG5mID0ganNE
eW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlm
ICghbmYpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhl
YykpOworCisgICAgLy8gVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBuZXcgb2JqZWN0IHdob3NlIHBy
b3BlcnRpZXMgYW5kIGF0dHJpYnV0ZXMgYXJlIHNldCBhcyBpZiBjb25zdHJ1Y3RlZCBieSBhbiBv
YmplY3QgbGl0ZXJhbCBhc3NpZ25pbmcgdG8gZWFjaCBvZiB0aGUgZm9sbG93aW5nIHByb3BlcnRp
ZXMgdGhlIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGludGVybmFsIHNsb3Qgb2YgdGhpcyBO
dW1iZXJGb3JtYXQgb2JqZWN0IChzZWUgMTEuNCk6IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBz
dHlsZSwgY3VycmVuY3ksIGN1cnJlbmN5RGlzcGxheSwgbWluaW11bUludGVnZXJEaWdpdHMsIG1p
bmltdW1GcmFjdGlvbkRpZ2l0cywgbWF4aW11bUZyYWN0aW9uRGlnaXRzLCBtaW5pbXVtU2lnbmlm
aWNhbnREaWdpdHMsIG1heGltdW1TaWduaWZpY2FudERpZ2l0cywgYW5kIHVzZUdyb3VwaW5nLiBQ
cm9wZXJ0aWVzIHdob3NlIGNvcnJlc3BvbmRpbmcgaW50ZXJuYWwgc2xvdHMgYXJlIG5vdCBwcmVz
ZW50IGFyZSBub3QgYXNzaWduZWQuCisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KGV4ZWMpOworCisgICAgLy8gRklYTUU6IFBvcHVsYXRlIG9iamVjdCBmcm9t
IGludGVybmFsIHNsb3RzLgorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvcHRpb25zKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OGJjMDUxZmRkYjg4NTJhOWE5NWY5ZjE3ZDk4YWU4Y2I3
ODUyMTE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20p
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZV9oCisjZGVmaW5l
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVfaAorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNs
dWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUgOiBwdWJsaWMgSW50
bE51bWJlckZvcm1hdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRsTnVtYmVyRm9ybWF0IEJh
c2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMg
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0
ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFN0cnVjdHVyZSopOworCitwcml2YXRl
OgorICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBFTkFCTEUoSU5UTCkKKworI2VuZGlmIC8vIEludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRl
eCAxMmRhOTM4ZmE4MTNhZTMxZjM3NTZkYjA0ZGYwN2ZiYjA5OTJkZDBjLi5iYTQ1N2U3MjU2MDkx
MDc4OTEyMmY1MTM3NWVlOWZkYzEwMjRkMzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsT2JqZWN0LmNwcApAQCAtMjgsNiArMjgsMTYgQEAKIAogI2lmIEVOQUJMRShJ
TlRMKQogCisjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsQ29s
bGF0b3IuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUg
IkludGxDb2xsYXRvclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5o
IgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAi
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1h
dC5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUg
IkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCkBAIC00OCwx
NyArNTgsNDMgQEAgSW50bE9iamVjdDo6SW50bE9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogewogfQogCi1JbnRsT2JqZWN0KiBJbnRsT2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK0ludGxPYmplY3QqIEludGxPYmplY3Q6OmNyZWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ewogICAgIEludGxPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPElu
dGxPYmplY3Q+KHZtLmhlYXApKSBJbnRsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwotICAgIG9iamVj
dC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGds
b2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIAotdm9pZCBJbnRsT2JqZWN0Ojpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCit2b2lkIEludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworCisgICAgLy8gU2V0
IHVwIENvbGxhdG9yLgorICAgIEludGxDb2xsYXRvclByb3RvdHlwZSogY29sbGF0b3JQcm90b3R5
cGUgPSBJbnRsQ29sbGF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBJbnRs
Q29sbGF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgU3RydWN0dXJlKiBjb2xsYXRvclN0
cnVjdHVyZSA9IEludGxDb2xsYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3Qs
IGNvbGxhdG9yUHJvdG90eXBlKTsKKyAgICBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciogY29sbGF0
b3JDb25zdHJ1Y3RvciA9IEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxD
b2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwgY29sbGF0b3JQcm90b3R5cGUsIGNvbGxh
dG9yU3RydWN0dXJlKTsKKworICAgIGNvbGxhdG9yUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGNvbGxhdG9yQ29u
c3RydWN0b3IsIERvbnRFbnVtKTsKKworICAgIC8vIFNldCB1cCBOdW1iZXJGb3JtYXQuCisgICAg
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogbnVtYmVyRm9ybWF0UHJvdG90eXBlID0gSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgU3RydWN0dXJlKiBudW1iZXJGb3JtYXRT
dHJ1Y3R1cmUgPSBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9i
amVjdCwgbnVtYmVyRm9ybWF0UHJvdG90eXBlKTsKKyAgICBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IqIG51bWJlckZvcm1hdENvbnN0cnVjdG9yID0gSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yOjpjcmVhdGUodm0sIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSks
IG51bWJlckZvcm1hdFByb3RvdHlwZSwgbnVtYmVyRm9ybWF0U3RydWN0dXJlKTsKKworICAgIG51
bWJlckZvcm1hdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBudW1iZXJGb3JtYXRDb25zdHJ1Y3RvciwgRG9udEVu
dW0pOworCisgICAgLy8gU2V0IHVwIERhdGVUaW1lRm9ybWF0LgorICAgIEludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZSogZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUgPSBJbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qt
Pm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVj
dHVyZSA9IEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmpl
Y3QsIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlKTsKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3RvciogZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciA9IEludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3Rv
dHlwZSgpKSwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJl
KTsKKworICAgIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGRhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IsIERvbnRFbnVtKTsKKworICAgIC8vIDguMSBQcm9wZXJ0aWVzIG9mIHRoZSBJbnRs
IE9iamVjdCAoRUNNQS00MDIgMi4wKQorICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5Db2xsYXRvciwgY29sbGF0b3JDb25zdHJ1Y3RvciwgRG9udEVu
dW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5OdW1iZXJGb3JtYXQsIG51bWJlckZvcm1hdENvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkRhdGVUaW1l
Rm9ybWF0LCBkYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiB9CiAKIFN0cnVj
dHVyZSogSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsT2JqZWN0LmgKaW5kZXggZjQ1YjlhYjY0OTAyMjhlZGVhNTdhYjJlMGJlOWMw
YjVhODllMmZjMC4uODM0Mjg1NDJiMmQwZmJjN2U1YjE0NGEzNmJjYmI4NmVkZmNiYmU4MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaApAQCAtMzIsMTggKzMy
LDI1IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
cjsKK2NsYXNzIEludGxDb2xsYXRvclByb3RvdHlwZTsKK2NsYXNzIEludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yOworY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOworY2xhc3Mg
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOworY2xhc3MgSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZTsKKwogY2xhc3MgSW50bE9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdDsKIAotICAgIHN0YXRpYyBJbnRsT2JqZWN0KiBjcmVhdGUo
Vk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgSW50bE9iamVjdCogY3JlYXRlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9J
TkZPOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogCiBwcml2YXRlOgogICAg
IEludGxPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAwNDNlOTM4OWNlYzY5MDU4OWE1NmEz
OGFjNWIxODk2M2YxZmZiYWM2Li5mMTJiNmQzNGNmYTlmMDYzMTA3YjFiM2FiMTY2NTFiOGY4YjIw
OWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCkBAIC00NDcsNyArNDQ3LDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZXZhbCwgbV9l
dmFsRnVuY3Rpb24uZ2V0KCksIERvbnRFbnVtKTsKICAgICAKICNpZiBFTkFCTEUoSU5UTCkKLSAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+SW50bCwg
SW50bE9iamVjdDo6Y3JlYXRlKHZtLCBJbnRsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+SW50bCwgSW50bE9iamVjdDo6
Y3JlYXRlKHZtLCB0aGlzLCBJbnRsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1f
b2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKICNlbmRpZiAvLyBFTkFCTEUoSU5U
TCkKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
SlNPTiwgSlNPTk9iamVjdDo6Y3JlYXRlKHZtLCBKU09OT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+TWF0aCwgTWF0aE9i
amVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBNYXRoT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291
cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXgg
MTllNzM3NTI2NjU5MjlhYzdmMzliMDk1NGQ5OTUxZTQ5MTdkNGEzNC4uMDU2NTRlYWM2YjU1OTk0
NjIwZDRkMzUwMWM4ZmZiNmIxMmQxNmM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTExNiw3ICsxMTYsNyBA
QCBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEwMDAgPSA7CiBFTkFC
TEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDExMDAgPSBFTkFCTEVfV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUOwogRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNv
c3hfMTAxMjAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIAotRU5BQkxFX0lO
VEwgPSA7CitFTkFCTEVfSU5UTCA9IEVOQUJMRV9JTlRMOwogCiBFTkFCTEVfSU9TX0dFU1RVUkVf
RVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lU
SF9JTlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxfU0RLKSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVf
RVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMgPSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZF
TlRTOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCAxOWU3Mzc1MjY2NTkyOWFjN2YzOWIwOTU0ZDk5NTFl
NDkxN2Q0YTM0Li4wNTY1NGVhYzZiNTU5OTQ2MjBkNGQzNTAxYzhmZmI2YjEyZDE2YzdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZwpAQCAtMTE2LDcgKzExNiw3IEBAIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFD
S19UQVJHRVRfbWFjb3N4XzEwMTAwMCA9IDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJH
RVRfbWFjb3N4XzEwMTEwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiBFTkFC
TEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEyMDAgPSBFTkFCTEVfV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUOwogCi1FTkFCTEVfSU5UTCA9IDsKK0VOQUJMRV9JTlRMID0gRU5B
QkxFX0lOVEw7CiAKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNbc2RrPWlwaG9uZSpdID0gJChF
TkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES18kKFVTRV9JTlRF
Uk5BTF9TREspKTsKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxf
U0RLX1lFUyA9IEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9X
ZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IDE5ZTcz
NzUyNjY1OTI5YWM3ZjM5YjA5NTRkOTk1MWU0OTE3ZDRhMzQuLjA1NjU0ZWFjNmI1NTk5NDYyMGQ0
ZDM1MDFjOGZmYjZiMTJkMTZjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0xMTYsNyArMTE2LDcgQEAgRU5B
QkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMDAwID0gOwogRU5BQkxFX1dJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMTAwID0gRU5BQkxFX1dJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEw
MTIwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiAKLUVOQUJMRV9JTlRMID0g
OworRU5BQkxFX0lOVEwgPSBFTkFCTEVfSU5UTDsKIAogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5U
U1tzZGs9aXBob25lKl0gPSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5U
RVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFMX1NESykpOwogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5U
U19pb3NfV0lUSF9JTlRFUk5BTF9TREtfWUVTID0gRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZSBiL1NvdXJjZS9j
bWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQppbmRleCA1ZDZlN2VhZjI4YjRmNThhYTYyOTk5ZjVj
M2U0NjU0ODM4MGU5MTA2Li4yYzY0YjMxNzMzYTQ3MDk4ODc3ZTkyZDkxNWI5YjhjY2ZkNTNmZjdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKKysrIGIvU291
cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCkBAIC05OCw3ICs5OCw3IEBAIG1hY3JvKFdF
QktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lOUFVU
X1RZUEVfTU9OVEggIlRvZ2dsZSBtb250aCB0eXBlIDxpbnB1dD4gc3VwcG9ydCIgUFJJVkFURSBP
RkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSAiVG9n
Z2xlIHRpbWUgdHlwZSA8aW5wdXQ+IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9P
UFRJT05fREVGSU5FKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUsgIlRvZ2dsZSB3ZWVrIHR5cGUgPGlu
cHV0PiBzdXBwb3J0IiBQUklWQVRFIE9GRikKLSAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFC
TEVfSU5UTCAiVG9nZ2xlIEludGwgc3VwcG9ydCIgUFJJVkFURSBPRkYpCisgICAgV0VCS0lUX09Q
VElPTl9ERUZJTkUoRU5BQkxFX0lOVEwgIlRvZ2dsZSBJbnRsIHN1cHBvcnQiIFBSSVZBVEUgT04p
CiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lPU19BSVJQTEFZICJUb2dnbGUgaU9T
IGFpcnBsYXkgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUo
RU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcgIlRvZ2dsZSBpT1MgdGV4dCBhdXRvc2l6aW5nIHN1
cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9KSVQg
IkVuYWJsZSBKdXN0SW5UaW1lIGphdmFzY3JpcHQgc3VwcG9ydCIgUFJJVkFURSBPTikKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjNTI5ODQxYmNi
ZWVlOWFiYzBiMjIwYTAxZjFhODBlNGU4NzkyZGRjLi44YmJlNDdmMzU0Zjg3MmRmNjcyMTY0MzNh
YmExOTBjYzI0N2IxYzEwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDctMjQgIEFuZHkgVmFuV2Fnb25lciAg
PHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlw
ZXMgZm9yIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgZmxhZyBub3cgdGhhdCB0
aGUgYmFzaWMgb2JqZWN0cyBhcmUgaW4gcGxhY2UuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHBlcmwvRmVhdHVyZUxpc3QucG06IEVuYWJsZWQgSU5UTAorCiAyMDE1LTA3LTIzICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIEltcGxlbWVudCBw
cm9wZXIgSGlnaCBEUEkgc3VwcG9ydCBmZWF0dXJlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0Zl
YXR1cmVMaXN0LnBtCmluZGV4IGVmZTljODU1NzdiM2ZlMzMzYWU0MjRlM2FkNTg3YWIzNjU4NTFi
YmUuLjdmZWQyMzkzZjViN2EzOGE3OWZmNmI0ODM4YjhhOWVkZjBjYTU3MTQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KQEAgLTI4Nyw3ICsyODcsNyBAQCBteSBAZmVh
dHVyZXMgPSAoCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlBVVF9UWVBFX1dFRUsiLCBkZWZh
dWx0ID0+IDAsIHZhbHVlID0+IFwkaW5wdXRUeXBlV2Vla1N1cHBvcnQgfSwKIAogICAgIHsgb3B0
aW9uID0+ICJpbnRsIiwgZGVzYyA9PiAiVG9nZ2xlIEludGwgc3VwcG9ydCIsCi0gICAgICBkZWZp
bmUgPT4gIkVOQUJMRV9JTlRMIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGludGxTdXBwb3J0
IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlRMIiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9
PiBcJGludGxTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibGVnYWN5LW5vdGlmaWNhdGlv
bnMiLCBkZXNjID0+ICJUb2dnbGUgTGVnYWN5IE5vdGlmaWNhdGlvbnMgc3VwcG9ydCIsCiAgICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyIsIGRlZmF1bHQgPT4gMCwg
dmFsdWUgPT4gXCRsZWdhY3lOb3RpZmljYXRpb25zU3VwcG9ydCB9LApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFiZjMxZWZi
NGM4MWVjY2E3YjcyYjRiZWQ1NzBmOGQyZjkzMDIxYjAuLmQ0MDI1NTYxZjI3M2YwZWQwOWQ1NjIy
NzhlYzc4YzViMWEwZjg4ZjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNS0wNy0yNCAgQW5k
eSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBiYXNpYyB0eXBlcyBmb3IgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjkyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0
cyBmb3IgSW50bC5Db2xsYXRvciwgSW50bC5OdW1iZXJGb3JtYXQsIGFuZCBJbnRsLkRhdGVUaW1l
Rm9ybWF0CisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOiBFbmFibGVkIGludGwgdGVzdHMu
CisgICAgICAgICoganMvaW50bC1jb2xsYXRvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGpzL2ludGwtY29sbGF0b3IuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvaW50bC1kYXRl
dGltZWZvcm1hdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2ludGwtZGF0ZXRp
bWVmb3JtYXQuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvaW50bC1leHBlY3RlZC50eHQ6IFVw
ZGF0ZWQuCisgICAgICAgICoganMvaW50bC1udW1iZXJmb3JtYXQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9pbnRsLW51bWJlcmZvcm1hdC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBqcy9zY3JpcHQtdGVzdHMvaW50bC1jb2xsYXRvci5qczogQWRkZWQuCisgICAgICAgICoganMv
c2NyaXB0LXRlc3RzL2ludGwtZGF0ZXRpbWVmb3JtYXQuanM6IEFkZGVkLgorICAgICAgICAqIGpz
L3NjcmlwdC10ZXN0cy9pbnRsLW51bWJlcmZvcm1hdC5qczogQWRkZWQuCisgICAgICAgICoganMv
c2NyaXB0LXRlc3RzL2ludGwuanM6IEFkZGVkIHRlc3RzIGZvciBDb2xsYXRvciwgTnVtYmVyRm9y
bWF0LCBhbmQgRGF0ZVRpbWVGb3JtYXQuCisKIDIwMTUtMDctMjIgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgTGF5ZXIgei1vcmRlcmluZyBpcyBpbmNv
cnJlY3Qgd2hlbiBzY3JvbGxpbmcgb24gcGFnZSB3aXRpaCBwb3NpdGlvbjpmaXhlZApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggYTljNzNlOTA0MjQyOGY1OWU5NDQwY2FlMjZhNzQyYzAzZmE4NTczYi4u
MTg1MmRlMThlZWQwNWI1NjE3MGQxNDVjOWY0NGJmNjZhMzBiNDIxNiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCkBAIC01MzAsNiArNTMwLDMgQEAgd2Via2l0Lm9yZy9iLzE0NjE4MiBlZGl0aW5nL3NlbGVj
dGlvbi9sZWFrLWRvY3VtZW50LXdpdGgtc2VsZWN0aW9uLWluc2lkZS5odG1sIFsKIAogd2Via2l0
Lm9yZy9iLzE0NjQzNCBmYXN0L2RvbS9IVE1MSW1hZ2VFbGVtZW50L3NpemVzIFsgU2tpcCBdCiAK
LSMgSW50bCBpcyBub3QgZW5hYmxlZCB5ZXQKLWpzL2ludGwuaHRtbCBbIFNraXAgXQotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9pbnRsLWNvbGxhdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2pzL2ludGwtY29sbGF0b3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5ZDcyZWFi
YzE3ZDI3ZTQwZmM2ZWVkYjljOWIzZjdkNWE3MmFmNjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9pbnRsLWNvbGxhdG9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM3IEBACitU
aGlzIHRlc3QgY2hlY2tzIHRoZSBiZWhhdmlvciBvZiBJbnRsLkNvbGxhdG9yIGFzIGRlc2NyaWJl
ZCBpbiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkgU3BlY2lmaWNhdGlv
biAoRUNNQS00MDIgMi4wKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
SW50bC5Db2xsYXRvciBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBJbnRsLkNvbGxh
dG9yKCkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5Db2xsYXRvcgorUEFTUyBJbnRsLkNvbGxhdG9y
LmNhbGwoe30pIGlzIGFuIGluc3RhbmNlIG9mIEludGwuQ29sbGF0b3IKK1BBU1MgbmV3IEludGwu
Q29sbGF0b3IoKSBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLkNvbGxhdG9yCitQQVNTIG5ldyBEZXJp
dmVkQ29sbGF0b3IgaXMgYW4gaW5zdGFuY2Ugb2YgRGVyaXZlZENvbGxhdG9yCitQQVNTIG5ldyBE
ZXJpdmVkQ29sbGF0b3IgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5Db2xsYXRvcgorUEFTUyBuZXcg
RGVyaXZlZENvbGxhdG9yKCkuY29tcGFyZSgnYScsICdiJykgaXMgLTEKK1BBU1MgT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKG5ldyBEZXJpdmVkQ29sbGF0b3IpIGlzIERlcml2ZWRDb2xsYXRvci5wcm90
b3R5cGUKK1BBU1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKE9iamVjdC5nZXRQcm90b3R5cGVPZihu
ZXcgRGVyaXZlZENvbGxhdG9yKSkgaXMgSW50bC5Db2xsYXRvci5wcm90b3R5cGUKK1BBU1MgSW50
bC5Db2xsYXRvci5sZW5ndGggaXMgMAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEludGwuQ29sbGF0b3IsICdwcm90b3R5cGUnKS53cml0YWJsZSBpcyBmYWxzZQorUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IsICdwcm90b3R5cGUn
KS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSW50bC5Db2xsYXRvciwgJ3Byb3RvdHlwZScpLmNvbmZpZ3VyYWJsZSBpcyBmYWxzZQorUEFT
UyBJbnRsLkNvbGxhdG9yLnN1cHBvcnRlZExvY2FsZXNPZi5sZW5ndGggaXMgMQorUEFTUyBJbnRs
LkNvbGxhdG9yLnN1cHBvcnRlZExvY2FsZXNPZigpIGlzIGFuIGluc3RhbmNlIG9mIEFycmF5CitQ
QVNTIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzIEludGwuQ29sbGF0b3IK
K1BBU1MgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBpcyBhbiBpbnN0YW5jZSBvZiBG
dW5jdGlvbgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0
b3IucHJvdG90eXBlLCAnY29tcGFyZScpLmdldCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgor
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IucHJvdG90
eXBlLCAnY29tcGFyZScpLnNldCBpcyB1bmRlZmluZWQKK1BBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSwgJ2NvbXBhcmUnKS5lbnVtZXJh
YmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5D
b2xsYXRvci5wcm90b3R5cGUsICdjb21wYXJlJykuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1Mg
SW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZS5sZW5ndGggaXMgMgorUEFTUyBJbnRsLkNv
bGxhdG9yLnByb3RvdHlwZS5jb21wYXJlKHsgdG9TdHJpbmcoKSB7IHRocm93IEVycm9yKCc2Jykg
fSB9LCB7IHRvU3RyaW5nKCkgeyArK2JhZENhbGxzOyByZXR1cm4gJyc7IH0gfSkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiA2LgorUEFTUyBiYWRDYWxscyBpcyAwCitQQVNTIEludGwuQ29sbGF0b3Iu
cHJvdG90eXBlLmNvbXBhcmUoJ2EnLCB7IHRvU3RyaW5nKCkgeyB0aHJvdyBFcnJvcignOCcpIH0g
fSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiA4LgorUEFTUyBJbnRsLkNvbGxhdG9yLnByb3RvdHlw
ZS5yZXNvbHZlZE9wdGlvbnMubGVuZ3RoIGlzIDAKK1BBU1MgSW50bC5Db2xsYXRvci5wcm90b3R5
cGUucmVzb2x2ZWRPcHRpb25zKCkgaXMgYW4gaW5zdGFuY2Ugb2YgT2JqZWN0CitQQVNTIEludGwu
Q29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpID09PSBJbnRsLkNvbGxhdG9yLnBy
b3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2ludGwtY29sbGF0b3IuaHRtbCBiL0xheW91dFRlc3RzL2pzL2ludGwtY29sbGF0b3IuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wZTZjODdkY2YwZGE4MTcxOTQyNDhlODU1Njc0Y2M4NDY5OTg5OGRiCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvaW50bC1jb2xsYXRvci5odG1sCkBAIC0wLDAg
KzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9p
bnRsLWNvbGxhdG9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL2ludGwtZGF0ZXRpbWVmb3JtYXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvanMvaW50bC1kYXRldGltZWZvcm1hdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRiOWJj
ZDUxMDAxMmM0ZGI0YTEwNDFmOWVmNDMyMzg1ZWU3NWExNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL2ludGwtZGF0ZXRpbWVmb3JtYXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MzYgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIEludGwuRGF0ZVRpbWVGb3Jt
YXQgYXMgZGVzY3JpYmVkIGluIHRoZSBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQ
SSBTcGVjaWZpY2F0aW9uIChFQ01BLTQwMiAyLjApLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0
aW9uCitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQoKSBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLkRh
dGVUaW1lRm9ybWF0CitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQuY2FsbCh7fSkgaXMgYW4gaW5z
dGFuY2Ugb2YgSW50bC5EYXRlVGltZUZvcm1hdAorUEFTUyBuZXcgSW50bC5EYXRlVGltZUZvcm1h
dCgpIGlzIGFuIGluc3RhbmNlIG9mIEludGwuRGF0ZVRpbWVGb3JtYXQKK1BBU1MgbmV3IERlcml2
ZWREYXRlVGltZUZvcm1hdCBpcyBhbiBpbnN0YW5jZSBvZiBEZXJpdmVkRGF0ZVRpbWVGb3JtYXQK
K1BBU1MgbmV3IERlcml2ZWREYXRlVGltZUZvcm1hdCBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLkRh
dGVUaW1lRm9ybWF0CitQQVNTIG5ldyBEZXJpdmVkRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQoMCku
bGVuZ3RoID4gMCBpcyB0cnVlCitQQVNTIE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgRGVyaXZl
ZERhdGVUaW1lRm9ybWF0KSBpcyBEZXJpdmVkRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlCitQQVNT
IE9iamVjdC5nZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERlcml2ZWRE
YXRlVGltZUZvcm1hdCkpIGlzIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlCitQQVNTIElu
dGwuRGF0ZVRpbWVGb3JtYXQubGVuZ3RoIGlzIDAKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LCAncHJvdG90eXBlJykud3JpdGFibGUgaXMg
ZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1l
Rm9ybWF0LCAncHJvdG90eXBlJykuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQsICdwcm90b3R5cGUnKS5j
b25maWd1cmFibGUgaXMgZmFsc2UKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5zdXBwb3J0ZWRM
b2NhbGVzT2YubGVuZ3RoIGlzIDEKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5zdXBwb3J0ZWRM
b2NhbGVzT2YoKSBpcyBhbiBpbnN0YW5jZSBvZiBBcnJheQorUEFTUyBJbnRsLkRhdGVUaW1lRm9y
bWF0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyBJbnRsLkRhdGVUaW1lRm9ybWF0CitQQVNTIElu
dGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5j
dGlvbgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVG
b3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykuZ2V0IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9u
CitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1h
dC5wcm90b3R5cGUsICdmb3JtYXQnKS5zZXQgaXMgdW5kZWZpbmVkCitQQVNTIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUsICdmb3Jt
YXQnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5jb25maWd1cmFi
bGUgaXMgdHJ1ZQorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQubGVu
Z3RoIGlzIDEKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0KHsgdmFs
dWVPZigpIHsgdGhyb3cgRXJyb3IoJzRiJykgfSB9KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IDRi
LgorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQoSW5maW5pdHkpIHRo
cmV3IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiBkYXRlIHZhbHVlIGlzIG5vdCBmaW5pdGUgaW4gRGF0
ZVRpbWVGb3JtYXQuZm9ybWF0KCkuCitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBl
LnJlc29sdmVkT3B0aW9ucy5sZW5ndGggaXMgMAorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0LnBy
b3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSBpcyBhbiBpbnN0YW5jZSBvZiBPYmplY3QKK1BBU1Mg
SW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgPT09IEludGwu
RGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIGlzIGZhbHNlCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvaW50bC1kYXRldGltZWZvcm1hdC5odG1sIGIvTGF5b3V0VGVzdHMv
anMvaW50bC1kYXRldGltZWZvcm1hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhNThmY2Y1MDQ5MThmMDA5
NDA4YTJjMjlmOGUzMzY3NTlkZWU5MzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9pbnRsLWRhdGV0aW1lZm9ybWF0Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2ludGwtZGF0ZXRpbWVmb3JtYXQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvaW50
bC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWV4cGVjdGVkLnR4dAppbmRleCBi
MjZhZjg2MzM2NTFiMTQwYzhmMTBiODk3YTkwOGYwY2E4Y2FhOWQ2Li5hYzRiMDQ0ODYxZjAxZDVk
MzZmN2Q0YTNmNzYzN2VlZTc2YWU3NjExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9pbnRs
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWV4cGVjdGVkLnR4dApAQCAt
MSw0ICsxLDQgQEAKLVRoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBJbnRsIG9i
amVjdCBhcyBkZXNjcmliZWQgaW4gOCBvZiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXph
dGlvbiBBUEkgU3BlY2lmaWNhdGlvbi4KK1RoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9m
IHRoZSBJbnRsIG9iamVjdCBhcyBkZXNjcmliZWQgaW4gdGhlIEVDTUFTY3JpcHQgSW50ZXJuYXRp
b25hbGl6YXRpb24gQVBJIFNwZWNpZmljYXRpb24gKEVDTUEtNDAyIDIuMCkuCiAKIE9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KIApAQCAtOSw2ICs5LDcgQEAgUEFTUyBPYmplY3QucHJvdG90eXBl
LnRvU3RyaW5nLmNhbGwoSW50bCkgaXMgJ1tvYmplY3QgT2JqZWN0XScKIFBBU1MgT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKEludGwpID09PSBPYmplY3QucHJvdG90eXBlIGlzIHRydWUKIFBBU1MgbmV3
IEludGwgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqZWN0IGlzIG5vdCBhIGNvbnN0cnVj
dG9yIChldmFsdWF0aW5nICduZXcgSW50bCcpLgogUEFTUyBJbnRsKCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogSW50bCBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdJbnRsKCknLCAnSW50bCcg
aXMgYW4gaW5zdGFuY2Ugb2YgT2JqZWN0KS4KK1BBU1MgT2JqZWN0LmtleXMoSW50bCkubGVuZ3Ro
IGlzIDAKIFBBU1MgZGVsZXRlIEludGw7IGlzIHRydWUKIFBBU1MgJ0ludGwnIGluIGdsb2JhbCgp
IGlzIGZhbHNlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9pbnRsLW51bWJlcmZvcm1hdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9qcy9pbnRsLW51bWJlcmZvcm1hdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y4ZjJmOWU1
MzFiMmU1ZDg1MjFkOWJkOThhMzE2NWE0N2MzNDlkMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL2ludGwtbnVtYmVyZm9ybWF0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM1IEBA
CitUaGlzIHRlc3QgY2hlY2tzIHRoZSBiZWhhdmlvciBvZiBJbnRsLk51bWJlckZvcm1hdCBhcyBk
ZXNjcmliZWQgaW4gdGhlIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNp
ZmljYXRpb24gKEVDTUEtNDAyIDIuMCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIEludGwuTnVtYmVyRm9ybWF0IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNT
IEludGwuTnVtYmVyRm9ybWF0KCkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5OdW1iZXJGb3JtYXQK
K1BBU1MgSW50bC5OdW1iZXJGb3JtYXQuY2FsbCh7fSkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5O
dW1iZXJGb3JtYXQKK1BBU1MgbmV3IEludGwuTnVtYmVyRm9ybWF0KCkgaXMgYW4gaW5zdGFuY2Ug
b2YgSW50bC5OdW1iZXJGb3JtYXQKK1BBU1MgbmV3IERlcml2ZWROdW1iZXJGb3JtYXQgaXMgYW4g
aW5zdGFuY2Ugb2YgRGVyaXZlZE51bWJlckZvcm1hdAorUEFTUyBuZXcgRGVyaXZlZE51bWJlckZv
cm1hdCBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLk51bWJlckZvcm1hdAorRkFJTCBuZXcgRGVyaXZl
ZE51bWJlckZvcm1hdCgpLmZvcm1hdCgxKSBzaG91bGQgYmUgMSAob2YgdHlwZSBudW1iZXIpLiBX
YXMgMSAob2YgdHlwZSBzdHJpbmcpLgorUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERl
cml2ZWROdW1iZXJGb3JtYXQpIGlzIERlcml2ZWROdW1iZXJGb3JtYXQucHJvdG90eXBlCitQQVNT
IE9iamVjdC5nZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERlcml2ZWRO
dW1iZXJGb3JtYXQpKSBpcyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUKK1BBU1MgSW50bC5O
dW1iZXJGb3JtYXQubGVuZ3RoIGlzIDAKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihJbnRsLk51bWJlckZvcm1hdCwgJ3Byb3RvdHlwZScpLndyaXRhYmxlIGlzIGZhbHNlCitQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQsICdw
cm90b3R5cGUnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQsICdwcm90b3R5cGUnKS5jb25maWd1cmFibGUg
aXMgZmFsc2UKK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mLmxlbmd0
aCBpcyAxCitQQVNTIEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZigpIGlzIGFu
IGluc3RhbmNlIG9mIEFycmF5CitQQVNTIEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5jb25z
dHJ1Y3RvciBpcyBJbnRsLk51bWJlckZvcm1hdAorUEFTUyBJbnRsLk51bWJlckZvcm1hdC5wcm90
b3R5cGUuZm9ybWF0IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0
JykuZ2V0IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0Jykuc2V0
IGlzIHVuZGVmaW5lZAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwu
TnVtYmVyRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdC5wcm90
b3R5cGUsICdmb3JtYXQnKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBJbnRsLk51bWJlckZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0Lmxlbmd0aCBpcyAxCitQQVNTIEludGwuTnVtYmVyRm9ybWF0
LnByb3RvdHlwZS5mb3JtYXQoeyB2YWx1ZU9mKCkgeyB0aHJvdyBFcnJvcignNScpIH0gfSkgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiA1LgorUEFTUyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUu
cmVzb2x2ZWRPcHRpb25zLmxlbmd0aCBpcyAwCitQQVNTIEludGwuTnVtYmVyRm9ybWF0LnByb3Rv
dHlwZS5yZXNvbHZlZE9wdGlvbnMoKSBpcyBhbiBpbnN0YW5jZSBvZiBPYmplY3QKK1BBU1MgSW50
bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpID09PSBJbnRsLk51bWJl
ckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9pbnRsLW51bWJlcmZvcm1hdC5odG1sIGIvTGF5b3V0VGVzdHMvanMvaW50bC1u
dW1iZXJmb3JtYXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzhlMjBmMmYyOWFhN2E1N2IzZDg5OGFjZGFj
YmU0YmE5Y2M1N2VhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvaW50bC1udW1i
ZXJmb3JtYXQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSJzY3JpcHQtdGVzdHMvaW50bC1udW1iZXJmb3JtYXQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwt
Y29sbGF0b3IuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1jb2xsYXRvci5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40OTg3NGE4Y2JmMTUwMDM5MTUzMmZlYTI1YWIzYTBhOTQ4NjE0YTEyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtY29sbGF0
b3IuanMKQEAgLTAsMCArMSw5MSBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3MgdGhl
IGJlaGF2aW9yIG9mIEludGwuQ29sbGF0b3IgYXMgZGVzY3JpYmVkIGluIHRoZSBFQ01BU2NyaXB0
IEludGVybmF0aW9uYWxpemF0aW9uIEFQSSBTcGVjaWZpY2F0aW9uIChFQ01BLTQwMiAyLjApLiIp
OworCisvLyAxMC4xIFRoZSBJbnRsLkNvbGxhdG9yIENvbnN0cnVjdG9yCisKKy8vIFRoZSBJbnRs
LkNvbGxhdG9yIGNvbnN0cnVjdG9yIGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4gcHJvcGVydHkgb2Yg
dGhlIEludGwgb2JqZWN0Lgorc2hvdWxkQmVUeXBlKCJJbnRsLkNvbGxhdG9yIiwgIkZ1bmN0aW9u
Iik7CisKKy8vIDEwLjEuMiBJbnRsLkNvbGxhdG9yKFsgbG9jYWxlcyBbLCBvcHRpb25zXV0pCitz
aG91bGRCZVR5cGUoIkludGwuQ29sbGF0b3IoKSIsICJJbnRsLkNvbGxhdG9yIik7CitzaG91bGRC
ZVR5cGUoIkludGwuQ29sbGF0b3IuY2FsbCh7fSkiLCAiSW50bC5Db2xsYXRvciIpOworc2hvdWxk
QmVUeXBlKCJuZXcgSW50bC5Db2xsYXRvcigpIiwgIkludGwuQ29sbGF0b3IiKTsKKworLy8gU3Vi
Y2xhc3NhYmxlCitjbGFzcyBEZXJpdmVkQ29sbGF0b3IgZXh0ZW5kcyBJbnRsLkNvbGxhdG9yIHt9
CitzaG91bGRCZVR5cGUoIm5ldyBEZXJpdmVkQ29sbGF0b3IiLCAiRGVyaXZlZENvbGxhdG9yIik7
CitzaG91bGRCZVR5cGUoIm5ldyBEZXJpdmVkQ29sbGF0b3IiLCAiSW50bC5Db2xsYXRvciIpOwor
c2hvdWxkQmUoIm5ldyBEZXJpdmVkQ29sbGF0b3IoKS5jb21wYXJlKCdhJywgJ2InKSIsICItMSIp
Oworc2hvdWxkQmUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgRGVyaXZlZENvbGxhdG9yKSIs
ICJEZXJpdmVkQ29sbGF0b3IucHJvdG90eXBlIik7CitzaG91bGRCZSgiT2JqZWN0LmdldFByb3Rv
dHlwZU9mKE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgRGVyaXZlZENvbGxhdG9yKSkiLCAiSW50
bC5Db2xsYXRvci5wcm90b3R5cGUiKTsKKworLy8gMTAuMiBQcm9wZXJ0aWVzIG9mIHRoZSBJbnRs
LkNvbGxhdG9yIENvbnN0cnVjdG9yCisKKy8vIGxlbmd0aCBwcm9wZXJ0eSAod2hvc2UgdmFsdWUg
aXMgMCkKK3Nob3VsZEJlKCJJbnRsLkNvbGxhdG9yLmxlbmd0aCIsICIwIik7CisKKy8vIDEwLjIu
MSBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZQorCisvLyBUaGlzIHByb3BlcnR5IGhhcyB0aGUgYXR0
cmlidXRlcyB7IFtbV3JpdGFibGVdXTogZmFsc2UsIFtbRW51bWVyYWJsZV1dOiBmYWxzZSwgW1tD
b25maWd1cmFibGVdXTogZmFsc2UgfS4KK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvciwgJ3Byb3RvdHlwZScpLndyaXRhYmxlIik7Citz
aG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0
b3IsICdwcm90b3R5cGUnKS5lbnVtZXJhYmxlIik7CitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IsICdwcm90b3R5cGUnKS5jb25maWd1
cmFibGUiKTsKKworLy8gMTAuMi4yIEludGwuQ29sbGF0b3Iuc3VwcG9ydGVkTG9jYWxlc09mIChs
b2NhbGVzIFssIG9wdGlvbnMgXSkKKworLy8gVGhlIHZhbHVlIG9mIHRoZSBsZW5ndGggcHJvcGVy
dHkgb2YgdGhlIHN1cHBvcnRlZExvY2FsZXNPZiBtZXRob2QgaXMgMS4KK3Nob3VsZEJlKCJJbnRs
LkNvbGxhdG9yLnN1cHBvcnRlZExvY2FsZXNPZi5sZW5ndGgiLCAiMSIpOworCisvLyBSZXR1cm5z
IFN1cHBvcnRlZExvY2FsZXMKK3Nob3VsZEJlVHlwZSgiSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRM
b2NhbGVzT2YoKSIsICJBcnJheSIpOworCisvLyAxMC4zIFByb3BlcnRpZXMgb2YgdGhlIEludGwu
Q29sbGF0b3IgUHJvdG90eXBlIE9iamVjdAorCisvLyBUaGUgdmFsdWUgb2YgSW50bC5Db2xsYXRv
ci5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgJUNvbGxhdG9yJS4KK3Nob3VsZEJlKCJJbnRsLkNv
bGxhdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciIsICJJbnRsLkNvbGxhdG9yIik7CisKKy8vIDEw
LjMuMyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlCisKKy8vIFRoaXMgbmFtZWQgYWNj
ZXNzb3IgcHJvcGVydHkgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY29tcGFyZXMgdHdvIHN0cmlu
Z3MgYWNjb3JkaW5nIHRvIHRoZSBzb3J0IG9yZGVyIG9mIHRoaXMgQ29sbGF0b3Igb2JqZWN0Lgor
c2hvdWxkQmVUeXBlKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIiwgIkZ1bmN0aW9u
Iik7CisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUgW1tHZXRdXSBhdHRyaWJ1dGUgaXMgYSBmdW5jdGlv
bgorc2hvdWxkQmVUeXBlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29s
bGF0b3IucHJvdG90eXBlLCAnY29tcGFyZScpLmdldCIsICJGdW5jdGlvbiIpOworCisvLyBUaGUg
dmFsdWUgb2YgdGhlIFtbU2V0XV0gYXR0cmlidXRlIGlzIHVuZGVmaW5lZC4KK3Nob3VsZEJlKCJP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IucHJvdG90eXBlLCAn
Y29tcGFyZScpLnNldCIsICJ1bmRlZmluZWQiKTsKKworLy8gTWF0Y2ggRmlyZWZveCB3aGVyZSB1
bnNwZWNpZmVkLgorc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSwgJ2NvbXBhcmUnKS5lbnVtZXJhYmxlIik7CitzaG91
bGRCZVRydWUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvci5w
cm90b3R5cGUsICdjb21wYXJlJykuY29uZmlndXJhYmxlIik7CisKKy8vIFRoZSB2YWx1ZSBvZiBG
4oCZcyBsZW5ndGggcHJvcGVydHkgaXMgMi4KK3Nob3VsZEJlKCJJbnRsLkNvbGxhdG9yLnByb3Rv
dHlwZS5jb21wYXJlLmxlbmd0aCIsICIyIik7CisKKy8vIDEwLjMuNCBDb2xsYXRvciBDb21wYXJl
IEZ1bmN0aW9ucworCisvLyAxLiBMZXQgY29sbGF0b3IgYmUgdGhlIHRoaXMgdmFsdWUuCisvLyAy
LiBBc3NlcnQ6IFR5cGUoY29sbGF0b3IpIGlzIE9iamVjdCBhbmQgY29sbGF0b3IgaGFzIGFuIFtb
aW5pdGlhbGl6ZWRDb2xsYXRvcl1dIGludGVybmFsIHNsb3Qgd2hvc2UgdmFsdWUgaXMgdHJ1ZS4K
Ky8vIFRoaXMgc2hvdWxkIG5vdCBiZSByZWFjaGFibGUsIHNpbmNlIGNvbXBhcmUgaXMgYm91bmQg
dG8gYW4gaW5pdGlhbGl6ZWQgY29sbGF0b3IuCisKKy8vIDMuIElmIHggaXMgbm90IHByb3ZpZGVk
LCBsZXQgeCBiZSB1bmRlZmluZWQuCisvLyA0LiBJZiB5IGlzIG5vdCBwcm92aWRlZCwgbGV0IHkg
YmUgdW5kZWZpbmVkLgorLy8gNS4gTGV0IFggYmUgVG9TdHJpbmcoeCkuCisvLyA2LiBSZXR1cm5J
ZkFicnVwdChYKS4KK3ZhciBiYWRDYWxscyA9IDA7CitzaG91bGRUaHJvdygiSW50bC5Db2xsYXRv
ci5wcm90b3R5cGUuY29tcGFyZSh7IHRvU3RyaW5nKCkgeyB0aHJvdyBFcnJvcignNicpIH0gfSwg
eyB0b1N0cmluZygpIHsgKytiYWRDYWxsczsgcmV0dXJuICcnOyB9IH0pIiwgIidFcnJvcjogNici
KTsKK3Nob3VsZEJlKCJiYWRDYWxscyIsICIwIik7CisKKy8vIDcuIExldCBZIGJlIFRvU3RyaW5n
KHkpLgorLy8gOC4gUmV0dXJuSWZBYnJ1cHQoWSkuCitzaG91bGRUaHJvdygiSW50bC5Db2xsYXRv
ci5wcm90b3R5cGUuY29tcGFyZSgnYScsIHsgdG9TdHJpbmcoKSB7IHRocm93IEVycm9yKCc4Jykg
fSB9KSIsICInRXJyb3I6IDgnIik7CisKKy8vIDEwLjMuNSBJbnRsLkNvbGxhdG9yLnByb3RvdHlw
ZS5yZXNvbHZlZE9wdGlvbnMgKCkKKworc2hvdWxkQmUoIkludGwuQ29sbGF0b3IucHJvdG90eXBl
LnJlc29sdmVkT3B0aW9ucy5sZW5ndGgiLCAiMCIpOworCisvLyBSZXR1cm5zIGEgbmV3IG9iamVj
dCB3aG9zZSBwcm9wZXJ0aWVzIGFuZCBhdHRyaWJ1dGVzIGFyZSBzZXQgYXMgaWYgY29uc3RydWN0
ZWQgYnkgYW4gb2JqZWN0IGxpdGVyYWwuCitzaG91bGRCZVR5cGUoIkludGwuQ29sbGF0b3IucHJv
dG90eXBlLnJlc29sdmVkT3B0aW9ucygpIiwgIk9iamVjdCIpOworCisvLyBSZXR1cm5zIGEgbmV3
IG9iamVjdCBlYWNoIHRpbWUuCitzaG91bGRCZUZhbHNlKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlw
ZS5yZXNvbHZlZE9wdGlvbnMoKSA9PT0gSW50bC5Db2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRP
cHRpb25zKCkiKTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2lu
dGwtZGF0ZXRpbWVmb3JtYXQuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1k
YXRldGltZWZvcm1hdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTBiMzAzYTA1NGViMzQ1YmViN2QwZmMyNjhm
M2Y4YWY3ZDI1NGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2ludGwtZGF0ZXRpbWVmb3JtYXQuanMKQEAgLTAsMCArMSw5MSBAQAorZGVzY3JpcHRpb24o
IlRoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIEludGwuRGF0ZVRpbWVGb3JtYXQgYXMg
ZGVzY3JpYmVkIGluIHRoZSBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSSBTcGVj
aWZpY2F0aW9uIChFQ01BLTQwMiAyLjApLiIpOworCisvLyAxMi4xIFRoZSBJbnRsLkRhdGVUaW1l
Rm9ybWF0IENvbnN0cnVjdG9yCisKKy8vIFRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVj
dG9yIGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4gcHJvcGVydHkgb2YgdGhlIEludGwgb2JqZWN0Lgor
c2hvdWxkQmVUeXBlKCJJbnRsLkRhdGVUaW1lRm9ybWF0IiwgIkZ1bmN0aW9uIik7CisKKy8vIDEy
LjEuMiBJbnRsLkRhdGVUaW1lRm9ybWF0KFsgbG9jYWxlcyBbLCBvcHRpb25zXV0pCitzaG91bGRC
ZVR5cGUoIkludGwuRGF0ZVRpbWVGb3JtYXQoKSIsICJJbnRsLkRhdGVUaW1lRm9ybWF0Iik7Citz
aG91bGRCZVR5cGUoIkludGwuRGF0ZVRpbWVGb3JtYXQuY2FsbCh7fSkiLCAiSW50bC5EYXRlVGlt
ZUZvcm1hdCIpOworc2hvdWxkQmVUeXBlKCJuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpIiwgIklu
dGwuRGF0ZVRpbWVGb3JtYXQiKTsKKworLy8gU3ViY2xhc3NhYmxlCitjbGFzcyBEZXJpdmVkRGF0
ZVRpbWVGb3JtYXQgZXh0ZW5kcyBJbnRsLkRhdGVUaW1lRm9ybWF0IHt9CitzaG91bGRCZVR5cGUo
Im5ldyBEZXJpdmVkRGF0ZVRpbWVGb3JtYXQiLCAiRGVyaXZlZERhdGVUaW1lRm9ybWF0Iik7Citz
aG91bGRCZVR5cGUoIm5ldyBEZXJpdmVkRGF0ZVRpbWVGb3JtYXQiLCAiSW50bC5EYXRlVGltZUZv
cm1hdCIpOworc2hvdWxkQmVUcnVlKCJuZXcgRGVyaXZlZERhdGVUaW1lRm9ybWF0KCkuZm9ybWF0
KDApLmxlbmd0aCA+IDAiKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERl
cml2ZWREYXRlVGltZUZvcm1hdCkiLCAiRGVyaXZlZERhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSIp
Oworc2hvdWxkQmUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
bmV3IERlcml2ZWREYXRlVGltZUZvcm1hdCkpIiwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90
eXBlIik7CisKKy8vIDEyLjIgUHJvcGVydGllcyBvZiB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCBD
b25zdHJ1Y3RvcgorCisvLyBsZW5ndGggcHJvcGVydHkgKHdob3NlIHZhbHVlIGlzIDApCitzaG91
bGRCZSgiSW50bC5EYXRlVGltZUZvcm1hdC5sZW5ndGgiLCAiMCIpOworCisvLyAxMi4yLjEgSW50
bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUKKworLy8gVGhpcyBwcm9wZXJ0eSBoYXMgdGhlIGF0
dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IGZhbHNlLCBbW0VudW1lcmFibGVdXTogZmFsc2UsIFtb
Q29uZmlndXJhYmxlXV06IGZhbHNlIH0uCitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQsICdwcm90b3R5cGUnKS53cml0YWJs
ZSIpOworc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRs
LkRhdGVUaW1lRm9ybWF0LCAncHJvdG90eXBlJykuZW51bWVyYWJsZSIpOworc2hvdWxkQmVGYWxz
ZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LCAn
cHJvdG90eXBlJykuY29uZmlndXJhYmxlIik7CisKKy8vIDEyLjIuMiBJbnRsLkRhdGVUaW1lRm9y
bWF0LnN1cHBvcnRlZExvY2FsZXNPZiAobG9jYWxlcyBbLCBvcHRpb25zIF0pCisKKy8vIFRoZSB2
YWx1ZSBvZiB0aGUgbGVuZ3RoIHByb3BlcnR5IG9mIHRoZSBzdXBwb3J0ZWRMb2NhbGVzT2YgbWV0
aG9kIGlzIDEuCitzaG91bGRCZSgiSW50bC5EYXRlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVz
T2YubGVuZ3RoIiwgIjEiKTsKKworLy8gUmV0dXJucyBTdXBwb3J0ZWRMb2NhbGVzCitzaG91bGRC
ZVR5cGUoIkludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCkiLCAiQXJyYXki
KTsKKworLy8gMTIuMyBQcm9wZXJ0aWVzIG9mIHRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IFByb3Rv
dHlwZSBPYmplY3QKKworLy8gVGhlIHZhbHVlIG9mIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90
eXBlLmNvbnN0cnVjdG9yIGlzICVEYXRlVGltZUZvcm1hdCUuCitzaG91bGRCZSgiSW50bC5EYXRl
VGltZUZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0b3IiLCAiSW50bC5EYXRlVGltZUZvcm1hdCIp
OworCisvLyAxMi4zLjMgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0CisKKy8v
IFRoaXMgbmFtZWQgYWNjZXNzb3IgcHJvcGVydHkgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgZm9y
bWF0cyBhIGRhdGUgYWNjb3JkaW5nIHRvIHRoZSBlZmZlY3RpdmUgbG9jYWxlIGFuZCB0aGUgZm9y
bWF0dGluZyBvcHRpb25zIG9mIHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0Lgorc2hvdWxkQmVU
eXBlKCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQiLCAiRnVuY3Rpb24iKTsK
KworLy8gVGhlIHZhbHVlIG9mIHRoZSBbW0dldF1dIGF0dHJpYnV0ZSBpcyBhIGZ1bmN0aW9uCitz
aG91bGRCZVR5cGUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGlt
ZUZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5nZXQiLCAiRnVuY3Rpb24iKTsKKworLy8gVGhl
IHZhbHVlIG9mIHRoZSBbW1NldF1dIGF0dHJpYnV0ZSBpcyB1bmRlZmluZWQuCitzaG91bGRCZSgi
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3Rv
dHlwZSwgJ2Zvcm1hdCcpLnNldCIsICJ1bmRlZmluZWQiKTsKKworLy8gTWF0Y2ggRmlyZWZveCB3
aGVyZSB1bnNwZWNpZmVkLgorc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmVudW1lcmFi
bGUiKTsKK3Nob3VsZEJlVHJ1ZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRs
LkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmNvbmZpZ3VyYWJsZSIpOworCisv
LyBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuCitzaG91bGRCZSgiSW50
bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0Lmxlbmd0aCIsICIxIik7CisKKy8vIDEy
LjMuNCBEYXRlVGltZSBGb3JtYXQgRnVuY3Rpb25zCisKKy8vIDEuIExldCBkdGYgYmUgdGhlIHRo
aXMgdmFsdWUuCisvLyAyLiBBc3NlcnQ6IFR5cGUoZHRmKSBpcyBPYmplY3QgYW5kIGR0ZiBoYXMg
YW4gW1tpbml0aWFsaXplZERhdGVUaW1lRm9ybWF0XV0gaW50ZXJuYWwgc2xvdCB3aG9zZSB2YWx1
ZSBpcyB0cnVlLgorLy8gVGhpcyBzaG91bGQgbm90IGJlIHJlYWNoYWJsZSwgc2luY2UgZm9ybWF0
IGlzIGJvdW5kIHRvIGFuIGluaXRpYWxpemVkIGRhdGV0aW1lZm9ybWF0LgorCisvLyAzLiBJZiBk
YXRlIGlzIG5vdCBwcm92aWRlZCBvciBpcyB1bmRlZmluZWQsIHRoZW4KKy8vIGEuIExldCB4IGJl
ICVEYXRlX25vdyUoKS4KKy8vIDQuIEVsc2UKKy8vIGEuIExldCB4IGJlIFRvTnVtYmVyKGRhdGUp
LgorLy8gYi4gUmV0dXJuSWZBYnJ1cHQoeCkuCitzaG91bGRUaHJvdygiSW50bC5EYXRlVGltZUZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0KHsgdmFsdWVPZigpIHsgdGhyb3cgRXJyb3IoJzRiJykgfSB9
KSIsICInRXJyb3I6IDRiJyIpOworCisvLyAxMi4zLjQgRm9ybWF0RGF0ZVRpbWUgYWJzdHJhY3Qg
b3BlcmF0aW9uCisKKy8vIDEuIElmIHggaXMgbm90IGEgZmluaXRlIE51bWJlciwgdGhlbiB0aHJv
dyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uLgorc2hvdWxkVGhyb3coIkludGwuRGF0ZVRpbWVGb3Jt
YXQucHJvdG90eXBlLmZvcm1hdChJbmZpbml0eSkiLCAiJ1JhbmdlRXJyb3I6IGRhdGUgdmFsdWUg
aXMgbm90IGZpbml0ZSBpbiBEYXRlVGltZUZvcm1hdC5mb3JtYXQoKSciKTsKKworLy8gMTIuMy41
IEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyAoKQorCitzaG91
bGRCZSgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zLmxlbmd0
aCIsICIwIik7CisKKy8vIFJldHVybnMgYSBuZXcgb2JqZWN0IHdob3NlIHByb3BlcnRpZXMgYW5k
IGF0dHJpYnV0ZXMgYXJlIHNldCBhcyBpZiBjb25zdHJ1Y3RlZCBieSBhbiBvYmplY3QgbGl0ZXJh
bC4KK3Nob3VsZEJlVHlwZSgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRP
cHRpb25zKCkiLCAiT2JqZWN0Iik7CisKKy8vIFJldHVybnMgYSBuZXcgb2JqZWN0IGVhY2ggdGlt
ZS4KK3Nob3VsZEJlRmFsc2UoIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVk
T3B0aW9ucygpID09PSBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlv
bnMoKSIpOworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1u
dW1iZXJmb3JtYXQuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1udW1iZXJm
b3JtYXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjkxMWQ3Mjk5M2I5OWQyNGIzNDZmNTU0ZDBkMjk1NzZjZmEz
MGNkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRs
LW51bWJlcmZvcm1hdC5qcwpAQCAtMCwwICsxLDg0IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
IGNoZWNrcyB0aGUgYmVoYXZpb3Igb2YgSW50bC5OdW1iZXJGb3JtYXQgYXMgZGVzY3JpYmVkIGlu
IHRoZSBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSSBTcGVjaWZpY2F0aW9uIChF
Q01BLTQwMiAyLjApLiIpOworCisvLyAxMS4xIFRoZSBJbnRsLk51bWJlckZvcm1hdCBDb25zdHJ1
Y3RvcgorCisvLyBUaGUgSW50bC5OdW1iZXJGb3JtYXQgY29uc3RydWN0b3IgaXMgYSBzdGFuZGFy
ZCBidWlsdC1pbiBwcm9wZXJ0eSBvZiB0aGUgSW50bCBvYmplY3QuCitzaG91bGRCZVR5cGUoIklu
dGwuTnVtYmVyRm9ybWF0IiwgIkZ1bmN0aW9uIik7CisKKy8vIDExLjEuMiBJbnRsLk51bWJlckZv
cm1hdChbIGxvY2FsZXMgWywgb3B0aW9uc11dKQorc2hvdWxkQmVUeXBlKCJJbnRsLk51bWJlckZv
cm1hdCgpIiwgIkludGwuTnVtYmVyRm9ybWF0Iik7CitzaG91bGRCZVR5cGUoIkludGwuTnVtYmVy
Rm9ybWF0LmNhbGwoe30pIiwgIkludGwuTnVtYmVyRm9ybWF0Iik7CitzaG91bGRCZVR5cGUoIm5l
dyBJbnRsLk51bWJlckZvcm1hdCgpIiwgIkludGwuTnVtYmVyRm9ybWF0Iik7CisKKy8vIFN1YmNs
YXNzYWJsZQorY2xhc3MgRGVyaXZlZE51bWJlckZvcm1hdCBleHRlbmRzIEludGwuTnVtYmVyRm9y
bWF0IHt9CitzaG91bGRCZVR5cGUoIm5ldyBEZXJpdmVkTnVtYmVyRm9ybWF0IiwgIkRlcml2ZWRO
dW1iZXJGb3JtYXQiKTsKK3Nob3VsZEJlVHlwZSgibmV3IERlcml2ZWROdW1iZXJGb3JtYXQiLCAi
SW50bC5OdW1iZXJGb3JtYXQiKTsKK3Nob3VsZEJlKCJuZXcgRGVyaXZlZE51bWJlckZvcm1hdCgp
LmZvcm1hdCgxKSIsICIxIik7CitzaG91bGRCZSgiT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBE
ZXJpdmVkTnVtYmVyRm9ybWF0KSIsICJEZXJpdmVkTnVtYmVyRm9ybWF0LnByb3RvdHlwZSIpOwor
c2hvdWxkQmUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3
IERlcml2ZWROdW1iZXJGb3JtYXQpKSIsICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUiKTsK
KworLy8gMTEuMiBQcm9wZXJ0aWVzIG9mIHRoZSBJbnRsLk51bWJlckZvcm1hdCBDb25zdHJ1Y3Rv
cgorCisvLyBsZW5ndGggcHJvcGVydHkgKHdob3NlIHZhbHVlIGlzIDApCitzaG91bGRCZSgiSW50
bC5OdW1iZXJGb3JtYXQubGVuZ3RoIiwgIjAiKTsKKworLy8gMTEuMi4xIEludGwuTnVtYmVyRm9y
bWF0LnByb3RvdHlwZQorCisvLyBUaGlzIHByb3BlcnR5IGhhcyB0aGUgYXR0cmlidXRlcyB7IFtb
V3JpdGFibGVdXTogZmFsc2UsIFtbRW51bWVyYWJsZV1dOiBmYWxzZSwgW1tDb25maWd1cmFibGVd
XTogZmFsc2UgfS4KK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSW50bC5OdW1iZXJGb3JtYXQsICdwcm90b3R5cGUnKS53cml0YWJsZSIpOworc2hvdWxkQmVG
YWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdCwg
J3Byb3RvdHlwZScpLmVudW1lcmFibGUiKTsKK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQsICdwcm90b3R5cGUnKS5jb25maWd1
cmFibGUiKTsKKworLy8gMTEuMi4yIEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNP
ZiAobG9jYWxlcyBbLCBvcHRpb25zIF0pCisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUgbGVuZ3RoIHBy
b3BlcnR5IG9mIHRoZSBzdXBwb3J0ZWRMb2NhbGVzT2YgbWV0aG9kIGlzIDEuCitzaG91bGRCZSgi
SW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mLmxlbmd0aCIsICIxIik7CisKKy8v
IFJldHVybnMgU3VwcG9ydGVkTG9jYWxlcworc2hvdWxkQmVUeXBlKCJJbnRsLk51bWJlckZvcm1h
dC5zdXBwb3J0ZWRMb2NhbGVzT2YoKSIsICJBcnJheSIpOworCisvLyAxMS4zIFByb3BlcnRpZXMg
b2YgdGhlIEludGwuTnVtYmVyRm9ybWF0IFByb3RvdHlwZSBPYmplY3QKKworLy8gVGhlIHZhbHVl
IG9mIEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyAlTnVtYmVyRm9y
bWF0JS4KK3Nob3VsZEJlKCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0b3Ii
LCAiSW50bC5OdW1iZXJGb3JtYXQiKTsKKworLy8gMTEuMy4zIEludGwuTnVtYmVyRm9ybWF0LnBy
b3RvdHlwZS5mb3JtYXQKKworLy8gVGhpcyBuYW1lZCBhY2Nlc3NvciBwcm9wZXJ0eSByZXR1cm5z
IGEgZnVuY3Rpb24gdGhhdCBmb3JtYXRzIGEgbnVtYmVyIGFjY29yZGluZyB0byB0aGUgZWZmZWN0
aXZlIGxvY2FsZSBhbmQgdGhlIGZvcm1hdHRpbmcgb3B0aW9ucyBvZiB0aGlzIE51bWJlckZvcm1h
dCBvYmplY3QuCitzaG91bGRCZVR5cGUoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3Jt
YXQiLCAiRnVuY3Rpb24iKTsKKworLy8gVGhlIHZhbHVlIG9mIHRoZSBbW0dldF1dIGF0dHJpYnV0
ZSBpcyBhIGZ1bmN0aW9uCitzaG91bGRCZVR5cGUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykuZ2V0IiwgIkZ1bmN0
aW9uIik7CisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUgW1tTZXRdXSBhdHRyaWJ1dGUgaXMgdW5kZWZp
bmVkLgorc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1i
ZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0Jykuc2V0IiwgInVuZGVmaW5lZCIpOworCisvLyBN
YXRjaCBGaXJlZm94IHdoZXJlIHVuc3BlY2lmZWQuCitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1h
dCcpLmVudW1lcmFibGUiKTsKK3Nob3VsZEJlVHJ1ZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5jb25maWd1cmFi
bGUiKTsKKworLy8gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAxLgorc2hv
dWxkQmUoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQubGVuZ3RoIiwgIjEiKTsK
KworLy8gMTEuMy40IEZvcm1hdCBOdW1iZXIgRnVuY3Rpb25zCisKKy8vIDEuIExldCBuZiBiZSB0
aGUgdGhpcyB2YWx1ZS4KKy8vIDIuIEFzc2VydDogVHlwZShuZikgaXMgT2JqZWN0IGFuZCBuZiBo
YXMgYW4gW1tpbml0aWFsaXplZE51bWJlckZvcm1hdF1dIGludGVybmFsIHNsb3Qgd2hvc2UgdmFs
dWUgaXMgdHJ1ZS4KKy8vIFRoaXMgc2hvdWxkIG5vdCBiZSByZWFjaGFibGUsIHNpbmNlIGZvcm1h
dCBpcyBib3VuZCB0byBhbiBpbml0aWFsaXplZCBudW1iZXJmb3JtYXQuCisKKy8vIDMuIElmIHZh
bHVlIGlzIG5vdCBwcm92aWRlZCwgbGV0IHZhbHVlIGJlIHVuZGVmaW5lZC4KKy8vIDQuIExldCB4
IGJlIFRvTnVtYmVyKHZhbHVlKS4KKy8vIDUuIFJldHVybklmQWJydXB0KHgpLgorc2hvdWxkVGhy
b3coIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQoeyB2YWx1ZU9mKCkgeyB0aHJv
dyBFcnJvcignNScpIH0gfSkiLCAiJ0Vycm9yOiA1JyIpOworCisvLyAxMS4zLjUgSW50bC5OdW1i
ZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyAoKQorCitzaG91bGRCZSgiSW50bC5O
dW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5sZW5ndGgiLCAiMCIpOworCisv
LyBSZXR1cm5zIGEgbmV3IG9iamVjdCB3aG9zZSBwcm9wZXJ0aWVzIGFuZCBhdHRyaWJ1dGVzIGFy
ZSBzZXQgYXMgaWYgY29uc3RydWN0ZWQgYnkgYW4gb2JqZWN0IGxpdGVyYWwuCitzaG91bGRCZVR5
cGUoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSIsICJPYmpl
Y3QiKTsKKworLy8gUmV0dXJucyBhIG5ldyBvYmplY3QgZWFjaCB0aW1lLgorc2hvdWxkQmVGYWxz
ZSgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpID09PSBJbnRs
Lk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkiKTsKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwuanMgYi9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvaW50bC5qcwppbmRleCA4YTRjZjU4NGUyZjA5Y2VjODdkNTVmOTMyMjY0NDNl
ZDcxODMyZTM5Li4wOTY4Mjg3Mjg4NjBiMGNjODk4Mjc5N2M5YzRkZjk3MzgyZDg4ODU1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC5qcworKysgYi9MYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC5qcwpAQCAtMSwyMyArMSwyNiBAQAotLy8gVGhpcyBm
ZWF0dXJlIGlzbid0IGVuYWJsZWQgeWV0LgotLy9AIHNraXAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRl
c3QgY2hlY2tzIHRoZSBiZWhhdmlvciBvZiB0aGUgSW50bCBvYmplY3QgYXMgZGVzY3JpYmVkIGlu
IHRoZSBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSSBTcGVjaWZpY2F0aW9uIChF
Q01BLTQwMiAyLjApLiIpOwogCi1kZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNoZWNrcyB0aGUgYmVo
YXZpb3Igb2YgdGhlIEludGwgb2JqZWN0IGFzIGRlc2NyaWJlZCBpbiA4IG9mIHRoZSBFQ01BU2Ny
aXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSSBTcGVjaWZpY2F0aW9uLiIpOworLy8gOCBUaGUg
SW50bCBPYmplY3QKIAotLy8gVGhlIEludGwgb2JqZWN0IGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4g
b2JqZWN0IHRoYXQgaXMgdGhlIGluaXRpYWwgdmFsdWUgb2YgdGhlIEludGwgcHJvcGVydHkgb2Yg
dGhlIGdsb2JhbCBvYmplY3QuCisvLyBUaGUgSW50bCBvYmplY3QgaXMgYSBzaW5nbGUgb3JkaW5h
cnkgb2JqZWN0Lgogc2hvdWxkQmVUeXBlKCJJbnRsIiwgIk9iamVjdCIpOwogc2hvdWxkQmUoInR5
cGVvZiBJbnRsIiwgIidvYmplY3QnIik7CiBzaG91bGRCZSgiT2JqZWN0LnByb3RvdHlwZS50b1N0
cmluZy5jYWxsKEludGwpIiwgIidbb2JqZWN0IE9iamVjdF0nIik7CiAKLS8vIFRoZSB2YWx1ZSBv
ZiB0aGUgW1tQcm90b3R5cGVdXSBpbnRlcm5hbCBwcm9wZXJ0eSBvZiB0aGUgSW50bCBvYmplY3Qg
aXMgdGhlIGJ1aWx0LWluIE9iamVjdCBwcm90b3R5cGUgb2JqZWN0IHNwZWNpZmllZCBieSB0aGUg
RUNNQVNjcmlwdCBMYW5ndWFnZSBTcGVjaWZpY2F0aW9uLgorLy8gVGhlIHZhbHVlIG9mIHRoZSBb
W1Byb3RvdHlwZV1dIGludGVybmFsIHNsb3Qgb2YgdGhlIEludGwgb2JqZWN0IGlzIHRoZSBpbnRy
aW5zaWMgb2JqZWN0ICVPYmplY3RQcm90b3R5cGUlLgogc2hvdWxkQmVUcnVlKCJPYmplY3QuZ2V0
UHJvdG90eXBlT2YoSW50bCkgPT09IE9iamVjdC5wcm90b3R5cGUiKTsKIAotLy8gVGhlIEludGwg
b2JqZWN0IGRvZXMgbm90IGhhdmUgYSBbW0NvbnN0cnVjdF1dIGludGVybmFsIHByb3BlcnR5OyBp
dCBpcyBub3QgcG9zc2libGUgdG8gdXNlIHRoZSBJbnRsIG9iamVjdCBhcyBhIGNvbnN0cnVjdG9y
IHdpdGggdGhlIG5ldyBvcGVyYXRvci4KKy8vIFRoZSBJbnRsIG9iamVjdCBpcyBub3QgYSBmdW5j
dGlvbiBvYmplY3QuCisvLyBJdCBkb2VzIG5vdCBoYXZlIGEgW1tDb25zdHJ1Y3RdXSBpbnRlcm5h
bCBtZXRob2Q7IGl0IGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgdGhlIEludGwgb2JqZWN0IGFzIGEg
Y29uc3RydWN0b3Igd2l0aCB0aGUgbmV3IG9wZXJhdG9yLgogc2hvdWxkVGhyb3coIm5ldyBJbnRs
IiwgIidUeXBlRXJyb3I6IE9iamVjdCBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyBc
XCduZXcgSW50bFxcJyknIik7CiAKLS8vIFRoZSBJbnRsIG9iamVjdCBkb2VzIG5vdCBoYXZlIGEg
W1tDYWxsXV0gaW50ZXJuYWwgcHJvcGVydHk7IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBpbnZva2Ug
dGhlIEludGwgb2JqZWN0IGFzIGEgZnVuY3Rpb24uCisvLyBUaGUgSW50bCBvYmplY3QgZG9lcyBu
b3QgaGF2ZSBhIFtbQ2FsbF1dIGludGVybmFsIG1ldGhvZDsgaXQgaXMgbm90IHBvc3NpYmxlIHRv
IGludm9rZSB0aGUgSW50bCBvYmplY3QgYXMgYSBmdW5jdGlvbi4KIHNob3VsZFRocm93KCJJbnRs
KCkiLCAiJ1R5cGVFcnJvcjogSW50bCBpcyBub3QgYSBmdW5jdGlvbi4gKEluIFxcJ0ludGwoKVxc
JywgXFwnSW50bFxcJyBpcyBhbiBpbnN0YW5jZSBvZiBPYmplY3QpJyIpOwogCi0vLyBpcyBkZWxl
dGFibGUsIGluZmVycmVkIGZyb20gdXNlIG9mICJJbml0aWFsIiBpbiBzcGVjLCBjb25zaXN0ZW50
IHdpdGggb3RoZXIgaW1wbGVtZW50YXRpb25zCisvLyBIYXMgb25seSB0aGUgYnVpbHQtaW4gQ29s
bGF0b3IsIERhdGVUaW1lRm9ybWF0LCBhbmQgTnVtYmVyRm9ybWF0LCB3aGljaCBhcmUgbm90IGVu
dW1lcmFibGUuCitzaG91bGRCZSgiT2JqZWN0LmtleXMoSW50bCkubGVuZ3RoIiwgIjAiKTsKKwor
Ly8gSXMgZGVsZXRhYmxlLCBpbmZlcnJlZCBmcm9tIHVzZSBvZiAiSW5pdGlhbCIgaW4gc3BlYywg
Y29uc2lzdGVudCB3aXRoIG90aGVyIGltcGxlbWVudGF0aW9ucy4KIHZhciBfX0ludGwgPSBJbnRs
Owogc2hvdWxkQmVUcnVlKCJkZWxldGUgSW50bDsiKTsKIApAQCAtMjUsMyArMjgsNCBAQCBmdW5j
dGlvbiBnbG9iYWwoKSB7IHJldHVybiB0aGlzOyB9CiBzaG91bGRCZUZhbHNlKCInSW50bCcgaW4g
Z2xvYmFsKCkiKTsKIAogSW50bCA9IF9fSW50bDsKKwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIv
Q2hhbmdlTG9nCmluZGV4IGE5MGFkMzhiM2NiYzQwOGFmYmJkYzZjMjQzOTM3OTE1Y2EyMzU2OTQu
LjA2YmEyMTMzZWEzZGIxYjhlM2U4ZDFmN2YwNjZjMTJkMWVlMDg1YmIgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0wNy0yNCAgQW5k
eSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBiYXNpYyB0eXBlcyBmb3IgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjkyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBm
bGFnIG5vdyB0aGF0IHRoZSBiYXNpYyBvYmplY3RzIGFyZSBpbiBwbGFjZS4KKworICAgICAgICAq
IFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZTogZW5hYmxlIElOVEwKKwogMjAxNS0w
Ny0yMiAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdtYWlsLmNvbT4KIAogICAgICAg
ICBBZGQgRU5BQkxFX1dFQkFTU0VNQkxZIGZlYXR1cmUgZmxhZyBmb3IgV2ViQXNzZW1ibHkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257721</attachid>
            <date>2015-07-28 19:06:55 -0700</date>
            <delta_ts>2015-07-28 19:10:00 -0700</delta_ts>
            <desc>Added more tests and more descriptive errors</desc>
            <filename>bug-146926-20150728200532.patch</filename>
            <type>text/plain</type>
            <size>181048</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3NDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZmM0NzhiYWZiZmE1ZDg5OTQyM2JmZGQwODY3YTQ1ZTRiNmQ2ZjViLi44NmJhZTQyZTcxMjc3MDY0
ODQyNGUwNTQ1OTJhOWQ5NjVhM2YzMjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDQgQEAKKzIwMTUtMDctMjggIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVy
QGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3Jp
cHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRzIGJhc2ljIHR5cGVzIGZvciBFQ01BLTQwMiAybmQgZWRp
dGlvbiwgYnV0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZnVsbCBsb2NhbGUtYXdhcmUgZmVhdHVy
ZXMgeWV0LgorICAgICAgICBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS00
MDIvMi4wL0VDTUEtNDAyLnBkZgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIG5l
dyBJbnRsIGZpbGVzLgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnOiBFbmFibGUgSU5UTC4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBBZGRl
ZCBJbnRsIGZpbGVzLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IEFkZGVkIEludGwgZmlsZXMuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOiBBZGRlZCBJbnRsIGZpbGVzLgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOiBB
ZGRlZCBJbnRsIGZpbGVzLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDog
QWRkZWQgQ29sbGF0b3IsIE51bWJlckZvcm1hdCwgYW5kIERhdGVUaW1lRm9ybWF0LgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDogTWFkZSBEYXRlLm5vdyBwdWJsaWMuCisg
ICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaDogTWFkZSBEYXRlLm5vdyBwdWJsaWMu
CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SW50bENvbGxhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6SW50bENvbGxhdG9y
KToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChKU0M6OkludGxDb2xsYXRvcjo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRv
cjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6c2V0Qm91bmRD
b21wYXJlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yRnVuY0NvbXBhcmUpOiBBZGRlZCBw
bGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiB1c2luZyBjb2RlUG9pbnRDb21wYXJlLgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3I6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpib3VuZENv
bXBhcmUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6SW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJbnRsQ29sbGF0b3IpOiBBZGRlZCBDb2xs
YXRvciBjb25zdHJ1Y3RvciAoMTAuMS4yKS4KKyAgICAgICAgKEpTQzo6Y2FsbEludGxDb2xsYXRv
cik6IEFkZGVkIENvbGxhdG9yIGNvbnN0cnVjdG9yICgxMC4xLjIpLgorICAgICAgICAoSlNDOjpJ
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChKU0M6
OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6Oklu
dGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlND
OjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YpOiBBZGRlZCBw
bGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcgW10uCisgICAgICAgIChKU0M6Oklu
dGxDb2xsYXRvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1l
L0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3JDb25zdHJ1Y3Rvcjo6Y29sbGF0b3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxDb2xs
YXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5
cGU6OkludGxDb2xsYXRvclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvclBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90
b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvclBy
b3RvdHlwZUdldHRlckNvbXBhcmUpOiBBZGRlZCBjb21wYXJlIGdldHRlciAoMTAuMy4zKQorICAg
ICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKTogQWRk
ZWQgcGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIHt9LgorICAgICAgICAqIHJ1
bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxEYXRlVGlt
ZUZvcm1hdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0OjpjcmVh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OkludGxEYXRl
VGltZUZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRlc3Ryb3kpOgorICAg
ICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNldEJvdW5kRm9ybWF0KToKKyAgICAgICAgKEpTQzo6
SW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lKTogQWRkZWQgcGxhY2Vob2xkZXIg
aW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIG5ldyBEYXRlKHZhbHVlKS50b1N0cmluZygpLgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Lmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bERh
dGVUaW1lRm9ybWF0Ojpib3VuZEZvcm1hdCk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdCk6IEFkZGVk
IERhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yICgxMi4xLjIpLgorICAgICAgICAoSlNDOjpjYWxs
SW50bERhdGVUaW1lRm9ybWF0KTogQWRkZWQgRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgKDEy
LjEuMikuCisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpnZXRD
b25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6IEFkZGVkIHBsYWNlaG9sZGVy
IGltcGxlbWVudGF0aW9uIHJldHVybmluZyBbXS4KKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6SW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KTogQWRkZWQgZm9ybWF0IGdldHRlciAoMTIuMy4zKS4K
KyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0
aW9ucyk6IEFkZGVkIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyB7fS4KKyAg
ICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZv
cm1hdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6
SW50bE51bWJlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6ZGVzdHJveSk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzZXRCb3VuZEZvcm1hdCk6CisgICAgICAgIChKU0M6Oklu
dGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyKTogQWRkZWQgcGxhY2Vob2xkZXIgaW1wbGVt
ZW50YXRpb24gcmV0dXJuaW5nIE51bWJlcih2YWx1ZSkudG9TdHJpbmcoKS4KKyAgICAgICAgKiBy
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXQ6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6
Ym91bmRGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3I6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KTogQWRkZWQgTnVtYmVyRm9ybWF0IGNvbnN0cnVjdG9yICgx
MS4xLjIpLgorICAgICAgICAoSlNDOjpjYWxsSW50bE51bWJlckZvcm1hdCk6IEFkZGVkIE51bWJl
ckZvcm1hdCBjb25zdHJ1Y3RvciAoMTEuMS4yKS4KKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6SW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6IEFk
ZGVkIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyBbXS4KKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpudW1iZXJGb3JtYXRTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlR2V0dGVyRm9ybWF0KTogQWRkZWQgZm9ybWF0IGdldHRlciAoMTEuMy4zKS4KKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOiBBZGRl
ZCBwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcge30uCisgICAgICAgICogcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRp
bWUvSW50bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKTogQWRkZWQgQ29sbGF0b3Is
IE51bWJlckZvcm1hdCwgYW5kIERhdGVUaW1lRm9ybWF0IHByb3BlcnRpZXMgKDguMSkuCisgICAg
ICAgIChKU0M6OkludGxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bE9iamVjdC5oOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0Ojpjb2xsYXRvckNvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6Y29sbGF0b3JQcm90b3R5cGUpOgorICAg
ICAgICAoSlNDOjpJbnRsT2JqZWN0Ojpjb2xsYXRvclN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkludGxPYmplY3Q6Om51bWJlckZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50
bE9iamVjdDo6bnVtYmVyRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVj
dDo6bnVtYmVyRm9ybWF0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6ZGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmRhdGVU
aW1lRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6ZGF0ZVRpbWVG
b3JtYXRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisKIDIwMTUtMDctMjcgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0gSW1wbGVt
ZW50IFJlZmxlY3QuZW51bWVyYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDAyMjE3MWRhMDZlMmI4NmFkODMy
NWFjZGU4M2E3ODA5MjUxYzgzNS4uNThlZTI0ZmE0NTM4MDQxMjAyNzdjOTQwNWRlMmUzYWI5ZTEw
NjM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTA3LTI4ICBBbmR5IFZhbldh
Z29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJh
c2ljIHR5cGVzIGZvciBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2OTI2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzogRW5hYmxlZCBJTlRMLgorCiAyMDE1LTA3LTI4ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
XSBVc2UgZmFzdE1hbGxvYyBpbnN0ZWFkIG9mIGdfc2xpY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA2
YzMxMGEzYTFmNzNjZGZmZDk0NzhhMjc3OGExZjQxODIxOTdjZWQ3Li42NTdhZGJkYjU4OTZhZWU0
OGU4ZTQ3MDA5ZjdkZmYzMmEzN2IyMGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTUtMDctMjggIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3JpcHQgSW50ZXJu
YXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOiBFbmFi
bGVkIElOVEwuCisKIDIwMTUtMDctMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKICAgICAgICAgUmVtb3ZlIHJ1bnRpbWUgZmxhZ3MgZm9yIHN5bWJvbHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCA2OGY2NGI4MjcyNTg1YWY3MjhmMGMxNjE1YTZjODVlNTExOWNkZmIxLi5mZjIxNDE1
ODM2OTUzMDI0MTliYTU4ZThjYzc1Nzk2NWU4M2NjMGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTUtMDctMjggIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVyQGdtYWls
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3JpcHQgSW50
ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOiBF
bmFibGVkIElOVEwuCisKIDIwMTUtMDctMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVzZSBmYXN0TWFsbG9jIGluc3RlYWQgb2Yg
Z19zbGljZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGMzNjU0NzVkZTRl
OTU1NDE5MjZhMjA1YmUzZDA1ZGQ5YTA2Y2I4OGUuLmMyZmZiNGM3ZDY4N2UzMzIxNWU3YzE3ZWQx
ODYwNTc3NTNkMTc1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQ3
Nyw2ICs0NzcsMTUgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1
bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKICAgICBydW50aW1lL0ludGVuZGVkU3RydWN0
dXJlQ2hhaW4uY3BwCiAgICAgcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAorICAgIHJ1bnRp
bWUvSW50bENvbGxhdG9yLmNwcAorICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3Iu
Y3BwCisgICAgcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisgICAgcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAK
KyAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisgICAgcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmNwcAogICAgIHJ1bnRpbWUvSW50bE9iamVjdC5jcHAKICAgICBydW50aW1lL0l0ZXJhdG9y
T3BlcmF0aW9ucy5jcHAKICAgICBydW50aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtNjIz
LDYgKzYzMiwxMiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfTFVUX0ZJTEVTCiAgICAgcnVudGltZS9E
YXRlQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAogICAgIHJ1
bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1
Y3Rvci5jcHAKKyAgICBydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKKyAgICBydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAK
ICAgICBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKICAgICBydW50aW1lL0pTT05PYmplY3QuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKaW5kZXggZjA0Yzk5YTk2Y2JhMGU3MDQ2NTAyZTc0YzliNGY4ZDY3MzhkNzA5Yy4uNWU1
ZDE2OTM0NzdkYjU2ZTRiYmFkNWJlY2RjNmQyY2Y1MjhkYzhhOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZwpAQCAtMTE2LDcgKzExNiw3IEBAIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJH
RVRfbWFjb3N4XzEwMTAwMCA9IDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFj
b3N4XzEwMTEwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiBFTkFCTEVfV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEyMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUOwogCi1FTkFCTEVfSU5UTCA9IDsKK0VOQUJMRV9JTlRMID0gRU5BQkxFX0lO
VEw7CiAKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNbc2RrPWlwaG9uZSpdID0gJChFTkFCTEVf
SU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES18kKFVTRV9JTlRFUk5BTF9T
REspKTsKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLX1lF
UyA9IEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCmluZGV4IGYzNWFiODY3MjQwZjkyNjg4ZjkzNmQxMjFmOTljMTFiMzVm
ZmFjNTMuLmQwNzEyNjUyYTA5YjFjOGFmNTFkYTJlNjZkOWExODRiMzA1OWFlNTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC00MSw2ICs0MSwxMiBAQCBh
bGwgOiBcCiAgICAgRGF0ZUNvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBEYXRlUHJvdG90eXBlLmx1
dC5oIFwKICAgICBFcnJvclByb3RvdHlwZS5sdXQuaCBcCisgICAgSW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IubHV0LmggXAorICAgIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCBcCisgICAgSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggXAorICAgIEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZS5sdXQuaCBcCisgICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5o
IFwKKyAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIFwKICAgICBKU0RhdGFWaWV3
UHJvdG90eXBlLmx1dC5oIFwKICAgICBKU09OT2JqZWN0Lmx1dC5oIFwKICAgICBKU0dsb2JhbE9i
amVjdC5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCAy
NDRiYTE5NDE0OThlMjM4MDJhYWY0ZjYzODA4MDkxYzRkMWU3YWRhLi5hNjc4YTBmZmIyYWE5Mjlh
ZTU3Njg5N2Y0YWYyYTgyMDM5OGU2MzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2oKQEAgLTczMSw2ICs3MzEsMTUgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRlcm5hbEZ1bmN0aW9uLmNwcCIgLz4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENvbGxhdG9yLmNwcCIgLz4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3Bw
IiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3JQcm90
b3R5cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsRGF0
ZVRpbWVGb3JtYXQuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAiIC8+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3JtYXQuY3BwIiAvPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSW50bE9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEl0ZXJhdG9yT3BlcmF0aW9ucy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEl0ZXJhdG9yUHJvdG90eXBlLmNwcCIgLz4KQEAgLTE1MzgsNiArMTU0NywxNSBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnQ4QXJyYXkuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRlcm5hbEZ1bmN0aW9u
LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvci5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3JDb25z
dHJ1Y3Rvci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29s
bGF0b3JQcm90b3R5cGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SW50bERhdGVUaW1lRm9ybWF0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIiAvPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0LmgiIC8+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XEludGxPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50
cmluc2ljLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEl0ZXJhdGlv
blN0YXR1cy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzCmluZGV4IGM1YmQ1NDk4ZGYzYTg1N2JiOGU1ZGQ5Y2IwOGQxY2IzYTk2ZGVkN2Mu
LmQxYzllN2QzMmRlNjEyMGZhMTY1Zjc2ODAzNzNjYmRiY2M2YTdkNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTYzMCw2ICs2MzAs
MzMgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50ZXJuYWxGdW5jdGlv
bi5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvci5jcHAiPgor
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCI+
CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCI+
CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9ybWF0LmNwcCI+Cisg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21w
aWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0
LmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29t
cGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxPYmplY3Qu
Y3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpA
QCAtMjY4OCw2ICsyNzE1LDMzIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XEludGVybmFsRnVuY3Rpb24uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENv
bGxhdG9yLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1
ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvckNvbnN0
cnVjdG9yLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1
ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvclByb3Rv
dHlwZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRl
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsRGF0ZVRpbWVGb3JtYXQu
aCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVk
ZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3Jt
YXQuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1
ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5j
bHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE9iamVjdC5oIj4K
ICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNGFjYzE5NDAxODU5MzQ3MjM4NzVjMDI1YjU2YTY1
OTM1YmFlNDgyLi43MDUxNTYwYzJiMjgxYjBiNWI3ZWVjOWE3ZmFjZGM1NjYyZWRhYjNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE3NCwxMyArMTE3NCwzNyBAQAogCQk5RTcy
OTQwQjE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUU3Mjk0MEExOTBGMDUxNDAwMUE5MUI1IC8qIEJ1
bmRsZVBhdGguaCAqLzsgfTsKIAkJOUVBNUM3QTExOTBGMDg0MjAwNTA4RUJFIC8qIEJ1bmRsZVBh
dGgubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RTcy
OTQwOTE5MEYwMzA2MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5tbSAqLzsgfTsKIAkJOUVBNUM3QTIx
OTBGMDg4NzAwNTA4RUJFIC8qIEluaXRpYWxpemVMTFZNTWFjLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlFQTVDN0EwMTkwRjA1RDIwMDUwOEVCRSAv
KiBJbml0aWFsaXplTExWTU1hYy5jcHAgKi87IH07CisJCUExMjU4NDZFMUI0NUEzNjAwMENDN0Y2
QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTI1ODQ2QzFCNDVBMzYwMDBDQzdGNkMgLyog
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oICovOyB9OworCQlBMTI1ODQ2RjFCNDVB
MzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMjU4NDZEMUI0NUEzNjAwMEND
N0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oICovOyB9OwogCQlBMTJCQkZG
MjFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEyQkJGRjExQjA0NEE4QjAwNjY0QjY5IC8qIEludGxP
YmplY3QuaCAqLzsgfTsKIAkJQTEyQkJGRjQxQjA0NEE5ODAwNjY0QjY5IC8qIEludGxPYmplY3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEyQkJG
RjMxQjA0NEE5ODAwNjY0QjY5IC8qIEludGxPYmplY3QuY3BwICovOyB9OworCQlBMTU4N0Q2RDFC
NERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNTg3RDY3MUI0REMxNDEwMEQ2OTg0OSAv
KiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3BwICovOyB9OworCQlBMTU4N0Q2RTFCNERDMTQxMDBENjk4
NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q2ODFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1l
Rm9ybWF0LmggKi87IH07CisJCUExNTg3RDZGMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTU4N0Q2OTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3IuY3BwICovOyB9OworCQlBMTU4N0Q3MDFCNERDMTQxMDBENjk4NDkgLyog
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNTg3RDZBMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oICovOyB9OworCQlBMTU4N0Q3MTFCNERDMTQxMDBENjk4
NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNTg3RDZCMUI0REMxNDEwMEQ2OTg0OSAvKiBJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwICovOyB9OworCQlBMTU4N0Q3MjFCNERDMTQx
MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q2QzFCNERDMTQxMDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmggKi87IH07CisJCUExNTg3RDc1MUI0REMx
QzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNTg3RDczMUI0REMxQzYw
MEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJ
QTE1ODdENzYxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5s
dXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNTg3
RDc0MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0Lmgg
Ki87IH07CiAJCUExNzEyQjNCMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcxMkIzQTExQzdC
MjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwICovOyB9OwogCQlBMTcxMkIzRjExQzdCMjI4
MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExNzEy
QjQxMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdF
eHBLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlBMTgxOTNFMzFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTgxOTNF
MTFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggKi87IH07
CisJCUExODE5M0U0MUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTgxOTNF
MjFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oICovOyB9Owog
CQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY0MDkyM0MxNTZFRUQz
QjAwNTY2Q0IyIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEgLyog
QVJNNjRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2NDA5MjNCMTU2RUVEM0IwMDU2NkNCMiAvKiBBUk02NEFzc2VtYmxlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUExQjlFMjM5MUI0
RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCOUUyMzMxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxD
b2xsYXRvci5jcHAgKi87IH07CisJCUExQjlFMjNBMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29s
bGF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
QjlFMjM0MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuaCAqLzsgfTsKKwkJQTFCOUUy
M0IxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjlFMjM1MUI0RTBENjcw
MEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCUExQjlFMjND
MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCOUUyMzYxQjRFMEQ2NzAwQkM3
RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmggKi87IH07CisJCUExQjlFMjNEMUI0RTBE
NjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCOUUyMzcxQjRFMEQ2NzAwQkM3RkVEIC8q
IEludGxDb2xsYXRvclByb3RvdHlwZS5jcHAgKi87IH07CisJCUExQjlFMjNFMUI0RTBENjcwMEJD
N0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjlFMjM4MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29s
bGF0b3JQcm90b3R5cGUuaCAqLzsgfTsKKwkJQTFENzkyRkMxQjQzODY0QjAwNDUxNkY1IC8qIElu
dGxOdW1iZXJGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFENzkyRjYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuY3Bw
ICovOyB9OworCQlBMUQ3OTJGRDFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzkyRjcx
QjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCAqLzsgfTsKKwkJQTFENzkyRkUx
QjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3OTJGODFCNDM4NjRC
MDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJQTFE
NzkyRkYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzkyRjkxQjQz
ODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICovOyB9OworCQlB
MUQ3OTMwMDFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3OTJGQTFC
NDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgKi87IH07CisJ
CUExRDc5MzAxMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3OTJGQjFC
NDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oICovOyB9OwogCQlB
NTAzRkExOTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExMzE4OEUwRkFG
MDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07CiAJCUE1MDNGQTFBMTg4
RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNDE4OEUwRkFGMDAxMTBGMTQgLyog
SmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExQjE4OEUwRkIwMDAxMTBGMTQg
LyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE1MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3Jp
cHRDYWxsRnJhbWUuY3BwICovOyB9OwpAQCAtMjk2NCwxMSArMjk4OCwzNSBAQAogCQk5RTcyOTQw
OTE5MEYwMzA2MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEJ1bmRsZVBhdGgubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlFNzI5NDBBMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1bmRsZVBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOUVBNUM3QTAxOTBGMDVEMjAwNTA4RUJFIC8qIEluaXRpYWxpemVMTFZNTWFj
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEluaXRpYWxpemVMTFZN
TWFjLmNwcDsgcGF0aCA9IGxsdm0vSW5pdGlhbGl6ZUxMVk1NYWMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBMTI1ODQ2QzFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUExMjU4NDZEMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTJCQkZG
MTFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnRsT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
MkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBMTU4N0Q2NzFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxEYXRlVGltZUZv
cm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNTg3RDY4MUI0REMxNDEw
MEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUExNTg3RDY5MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEx
NTg3RDZBMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4N0Q2QjFCNERDMTQx
MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNTg3RDZDMUI0REMxNDEwMEQ2OTg0OSAv
KiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUExNTg3RDczMUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUExNTg3RDc0MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3
MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cENhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cENhY2hlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwS2V5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUExODE5M0UxMUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29s
bGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUExODE5M0UyMUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxDb2xsYXRvclByb3RvdHlw
ZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFCOUUyMzMxQjRFMEQ2NzAw
QkM3RkVEIC8qIEludGxDb2xsYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnRsQ29sbGF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
MUI5RTIzNDFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEludGxDb2xsYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBMUI5RTIzNTFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bENvbGxhdG9y
Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUI5RTIzNjFC
NEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFCOUUyMzcxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xs
YXRvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
MUI5RTIzODFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxDb2xsYXRvclByb3RvdHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUQ3OTJGNjFCNDM4NjRCMDA0NTE2RjUgLyogSW50
bE51bWJlckZvcm1hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bnRsTnVtYmVyRm9ybWF0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFENzky
RjcxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW50bE51bWJlckZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBMUQ3OTJGODFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUExRDc5MkY5MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRDc5MkZBMUI0Mzg2NEIw
MDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUQ3OTJGQjFCNDM4NjRCMDA0NTE2RjUgLyogSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE1MDNGQTEzMTg4RTBGQUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEphdmFTY3JpcHRDYWxsRnJhbWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTAzRkExNDE4OEUwRkFGMDAxMTBG
MTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKYXZhU2NyaXB0Q2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1MDNGQTE1MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNjcsNiArNDMxNSwxMiBAQAog
CQkJCUE1MzI0Mzg0MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNo
ZXJzLmggKi8sCiAJCQkJQTUzMjQzODUxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvclByb3Rv
Y29sT2JqZWN0cy5jcHAgKi8sCiAJCQkJQTUzMjQzODYxODU2ODMxNzAwMkVENjkyIC8qIEluc3Bl
Y3RvclByb3RvY29sT2JqZWN0cy5oICovLAorCQkJCUExODE5M0UxMUI0RTBDREIwMEZDMTAyOSAv
KiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQlBMTgxOTNFMjFCNEUwQ0RC
MDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oICovLAorCQkJCUExNTg3RDcz
MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAq
LywKKwkJCQlBMTU4N0Q3NDFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlLmx1dC5oICovLAorCQkJCUExMjU4NDZDMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJQTEyNTg0NkQxQjQ1QTM2MDAwQ0M3
RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQTdEODAxQTYx
ODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLywKIAkJCQlBN0Q4MDFBNzE4ODBE
NkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLywKIAkJCQlCQzg3Q0RCODEwNzEyQUNBMDAw
NjE0Q0YgLyogSlNPTk9iamVjdC5sdXQuaCAqLywKQEAgLTQ1MDUsNiArNDU1OSwyNCBAQAogCQkJ
CUE3ODg1M0Y4MTc5NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmggKi8s
CiAJCQkJQkM5QkI5NUIwRTE5NjgwNjAwREY4ODU1IC8qIEludGVybmFsRnVuY3Rpb24uY3BwICov
LAogCQkJCUJDMTE2NjdBMEUxOTlDMDUwMDgwNjZERCAvKiBJbnRlcm5hbEZ1bmN0aW9uLmggKi8s
CisJCQkJQTFCOUUyMzMxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5jcHAgKi8sCisJ
CQkJQTFCOUUyMzQxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5oICovLAorCQkJCUEx
QjlFMjM1MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAgKi8s
CisJCQkJQTFCOUUyMzYxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9y
LmggKi8sCisJCQkJQTFCOUUyMzcxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3Rv
dHlwZS5jcHAgKi8sCisJCQkJQTFCOUUyMzgxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRv
clByb3RvdHlwZS5oICovLAorCQkJCUExNTg3RDY3MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0
ZVRpbWVGb3JtYXQuY3BwICovLAorCQkJCUExNTg3RDY4MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRs
RGF0ZVRpbWVGb3JtYXQuaCAqLywKKwkJCQlBMTU4N0Q2OTFCNERDMTQxMDBENjk4NDkgLyogSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwICovLAorCQkJCUExNTg3RDZBMUI0REMxNDEw
MEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUExNTg3
RDZCMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwICov
LAorCQkJCUExNTg3RDZDMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUuaCAqLywKKwkJCQlBMUQ3OTJGNjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZv
cm1hdC5jcHAgKi8sCisJCQkJQTFENzkyRjcxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJG
b3JtYXQuaCAqLywKKwkJCQlBMUQ3OTJGODFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBMUQ3OTJGOTFCNDM4NjRCMDA0NTE2RjUgLyog
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggKi8sCisJCQkJQTFENzkyRkExQjQzODY0QjAw
NDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwICovLAorCQkJCUExRDc5MkZC
MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggKi8sCiAJCQkJ
QTEyQkJGRjMxQjA0NEE5ODAwNjY0QjY5IC8qIEludGxPYmplY3QuY3BwICovLAogCQkJCUExMkJC
RkYxMUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmggKi8sCiAJCQkJODZCRjY0MkExNDhE
QjJCNTAwNERFMzZBIC8qIEludHJpbnNpYy5oICovLApAQCAtNTY5Nyw2ICs1NzY5LDcgQEAKIAkJ
CQkxNDdCODNBQzBFNkRCOEM5MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJBMTExMjQ2MTkyRkNFNzkwMDVFRTE4RCAvKiBDdXN0b21H
ZXR0ZXJTZXR0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM0RjRCNkY1MUEwNUM5ODQwMDVDQUI3
NiAvKiBnZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5IGluIEhl
YWRlcnMgKi8sCisJCQkJQTFENzkyRkYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDAzMjAxOEJGRkJFMTAwNUEw
ODExIC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUFCQ0RFNzE4RUYy
OTQyMDAwMDIwOTYgLyogR0NMb2dnaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTdCQTYxMDFB
MUE3Q0VDMDBGMUY3QjQgLyogSGVhcFZlcmlmaWVyLmggaW4gSGVhZGVycyAqLywKQEAgLTU3NDYs
NiArNTgxOSw3IEBACiAJCQkJMEYyNEU1NDExN0VBOUY1OTAwQUJCMjE3IC8qIEFzc2VtYmx5SGVs
cGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4NEEyNjExMUQxNjYyMjAwNTc3NkFDIC8qIEFT
VEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NjczOUQyMTNCRkRFNzEwMDIzRDg3QyAv
KiBCaWdJbnRlZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTI1ODQ2RTFCNDVBMzYwMDBDQzdG
NkMgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEMzRUMwRTE2RjVDRDAwQjM0NDYwIC8qIEJvb2xlYW5PYmplY3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFQTA4NjIwMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNUQyRTY2NTE5NUUxNzQwMDBBNTE4RTcgLyogSlNDb250ZXh0UmVmSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtNTc1NSw2ICs1ODI5LDcgQEAKIAkJCQkwRkI3RjM5
NzE1RUQ4RTQ2MDBGMTY3QjIgLyogQnV0dGVyZmx5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3
RjM5ODE1RUQ4RTQ2MDBGMTY3QjIgLyogQnV0dGVyZmx5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjJEMkQzOTAxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUExQjlFMjNBMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUMyRkNBRTExMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29k
ZUJhc2ljQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0
QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDcyMzBF
RDFDRTMzMDBGMUY2ODEgLyogQnl0ZWNvZGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAt
NTgzNCwxMSArNTkwOSwxMyBAQAogCQkJCUE1RUE3MEU4MTlGNUIxMDEwMDk4RjVFQyAvKiBBdWdt
ZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
MDREOTAzMTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVycHJldGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNzA0RDkwNDE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUExQjlFMjNDMUI0RTBENjcwMEJD
N0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2
MjAxNzcxNDNGQ0QzRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0VmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRjA1NEZBMUFDMzVCNDQwMEU1QkU1NyAvKiBFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1
enouaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjZFMTZCMTRERjNGMTYwMEI3QjJFNCAvKiBERkdB
ZGphY2VuY3lMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxODE2RDAyRUIyMDA1NUE1
REIgLyogREZHQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzM3ODEwQzE3OTlFQTJF
MDA4MTc1MzMgLyogREZHQW5hbHlzaXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUExQjlFMjNFMUI0
RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMUUzQTQ2MTUzNENCQUYwMDBGOTQ1NiAvKiBERkdBcmd1bWVudFBvc2l0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNUMzQTFBNjE4QzA0OTAyMDBDOTU5M0EgLyogSlNHbG9iYWxPYmpl
Y3RDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyMjE4Nzc1MDU2MDA4
M0I2ODcgLyogREZHQXJpdGhNb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTU5MDIsNiArNTk3OSw3
IEBACiAJCQkJODZFQzlEQ0MxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0pJVENvbXBpbGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzhBOTc3OTE3OTczOEI4MDA5REY3NDQgLyogREZHSklURmluYWxp
emVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM5N0Y0MDE4MjAyMTE5MDAyQzlCMjYgLyogREZH
SnVtcFJlcGxhY2VtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTI1ODQ2RjFCNDVBMzYwMDBD
QzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3M0E1MzVCMTc5OUNENUQwMDE3MEMxOSAvKiBERkdMYXp5SlNWYWx1ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyQjlDRTkxOUQwQkE3RDAwQjFEMUI1IC8qIERGR09iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDlBMjk4MTdBMEJDNzQwMEVFMjYx
OCAvKiBERkdMSUNNUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNjAzMSw2ICs2MTA5LDcgQEAK
IAkJCQkwRjZCMUNCNjE4NUZDOUU5MDA4NDVEOTcgLyogRlRMSlNDYWxsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjhGMkI5NjE3MkUwNEEzMDA3REJEQTUgLyogRlRMTGluay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZDRUZBRTAxODA3MzhDMDAwNDcyQ0U0IC8qIEZUTExvY2F0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBMTU4N0Q3MDFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTEwMTcwNTEzREIwMEJC
NzIyQyAvKiBGVExMb3dlckRGR1RvTExWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlEMDIx
N0EwQjkwNDAwNzczQUQ4IC8qIEZUTExvd2VyZWROb2RlVmFsdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRDhBMzFDMTdENTFGMjIwMENBMkM0MCAvKiBGVExPU1JFbnRyeS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC02MDk5LDYgKzYxNzgsNyBAQAogCQkJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3MSAv
KiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk5MTVFRDhF
NDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0Yz
OUExNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVySW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTE1ODdENzYxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlCMTVFRDhFNDYwMEYxNjdC
MiAvKiBJbmRleGluZ1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0VGQUIwMTgwNUNBNkQw
MDQ3MkNFNCAvKiBJbml0aWFsaXplTExWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDRUZBQ0Mx
ODA1RTc1NTAwNDcyQ0U0IC8qIEluaXRpYWxpemVMTFZNUE9TSVguaCBpbiBIZWFkZXJzICovLApA
QCAtNjE1Myw2ICs2MjMzLDcgQEAKIAkJCQkwRkFGN0VGRTE2NUJBOTFGMDAwQzg0NTUgLyogSklU
RGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUy
NzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTRFMUYxODEyNEFD
RTAwOUI2QjREIC8qIEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBMUQ3OTMwMTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODZDQzg1QTEwRUU3OUE0NzAwMjg4NjgyIC8qIEpJVElubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTREMTdFRTI3NDkwMEFCQjIxNyAvKiBKSVRP
cGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQzMTE1QUE4MTEyMDA4RjM2M0Ug
LyogSklUU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovLApAQCAtNjI1Myw2ICs2MzM0LDcgQEAK
IAkJCQk3QzE4NEUyMzE3QkVFMjQwMDA3Q0I2M0EgLyogSlNQcm9taXNlQ29uc3RydWN0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTdDMDA4Q0RCMTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VE
ZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MxODRFMUYxN0JFRTIyRTAwN0NCNjNBIC8q
IEpTUHJvbWlzZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE4MTkzRTQxQjRFMENE
QjAwRkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2MjU1M0QyMTYxMzZFMUEwMDlGMTdEMCAvKiBKU1Byb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk5OTI4RkYzQzE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDNDI2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1JldGFpblB0ci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC02MjY0LDYgKzYzNDYsNyBAQAogCQkJCUJDMThDNDVFMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBKU1N0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0MxRUFGMDE3OTg3QUI2
MDAyOTlEQjIgLyogSlNTdGFja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDI3
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE1ODdE
NzUxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODZFODU1MzkxMTFCOTk2ODAwMUFGNTFFIC8qIEpTU3RyaW5n
QnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjYwMEI1QTcxNTJCQUFBNzAwOTFFRTVGIC8q
IEpTU3RyaW5nSm9pbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyODBFMTZGNUNEMDBC
MzQ0NjAgLyogSlNTdHJpbmdSZWYuaCBpbiBIZWFkZXJzICovLApAQCAtNjM2OCw2ICs2NDUxLDcg
QEAKIAkJCQlCQzAyRTkxMTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMkU5MTMwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2
ZUVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUNDMEI2MzE4QkU5OTUwMDA2
Q0VCQ0MgLyogQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weSBpbiBIZWFkZXJzICovLAorCQkJ
CUExODE5M0UzMUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjIwMTZEMDMzQjcwMDU1QTVEQiAvKiBOb2RlQ29u
c3RydWN0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEVDQTYwOTFBRkRCRUEyMDA0NDk3Mzkg
LyogVGVtcGxhdGVSZWdpc3RyeUtleS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0M0YwRTE2
RjVDRDAwQjM0NDYwIC8qIE5vZGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTY0OTEsNiArNjU3NSw3
IEBACiAJCQkJQTcyOTlEQTYxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzkwREQ2RTE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REEyMTdEMTI4NDgwMDVGNUZGOSAv
KiBTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUExRDc5MkZEMUI0Mzg2NEIwMDQ1
MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFFNjRBQTEz
NUU1RTFDMDA5NjMwMTIgLyogU0g0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY4
QkRFQjFBRDRDRjcxMDBERkU4ODQgLyogSW5mZXJyZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyQjY3MDUxN0I2QjVBQjAwQTdBRTNGIC8qIFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLywKQEAgLTY1NjUsNiArNjY1MCw3IEBACiAJCQkJMEY1RjA4Q0YxNDZD
NzYzMzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3QjYwMTgyMTYzOUZEMkEwMDM3MkJBMyAvKiBVbmxpbmtlZENvZGVCbG9jay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyRTg5MkMxNkQwMjhBRDAwOUU0RkQyIC8qIFVudXNlZFBvaW50ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCUExNTg3RDZFMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0
ZVRpbWVGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTYzQjM4MTNGQzZGRTkwMDAyRDlC
MiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDI2QTQ4MTQ2MENCQjMw
MDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlDNUU1RjE4
RTM1RjVFMDBENDMxQzMgLyogRlRMRFdBUkZSZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8sCkBAIC02
NTkyLDYgKzY2NzgsNyBAQAogCQkJCTJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJh
cnJpZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQjZENzUzMThBMzM3OTMwMDRBOTMw
MSAvKiBXcml0ZUJhcnJpZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM4MTUwQTE0
MDQzQkY1MDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTE1ODdENzIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMkExODdDQTc1OTAwODQzQjEwIC8q
IHh4ZC5wbCBpbiBIZWFkZXJzICovLAogCQkJCTBGM0ExQkZBMUE5RUNCN0QwMDBERTAxQSAvKiBE
RkdQdXRTdGFja1NpbmtpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MTc0LDYgKzcyNjEs
NyBAQAogCQkJCTBGRUEwQTMxMTcwRDQwQkYwMEJCNzIyQyAvKiBERkdDb21tb25EYXRhLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMzhCMDE3MTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21waWxh
dGlvbktleS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjM4QjAxOTE3Q0ZFNzU1MDBCMTQ0RDMg
LyogREZHQ29tcGlsYXRpb25Nb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExQjlFMjNCMUI0
RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjNCM0ExQTE1M0U2OEYyMDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCRTBGNzIxNkMxREIwMzAwODJDNUU4IC8qIERG
R0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjUxN0Ew
QjhDQzAwNzczQUQ4IC8qIERGR0NyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC03MjE2LDYgKzczMDQsNyBAQAogCQkJCUE3RDg5Q0ZCMTdBMEI4Q0MwMDc3M0FE
OCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZG
MEYxOTkxNkI3MjlGNjAwNURGOTVCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE3NjdCNUI1MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3Jl
YXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUI5RTIzRDFCNEUwRDY3MDBCQzdG
RUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkJE
QzREMTUyMjgxODYwMENEODkxMCAvKiBERkdNaW5pZmllZE5vZGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTczNzgxMEQxNzk5RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkYwRjE5QzE2QjcyQTAzMDA1REY5NUIgLyogREZHTm9kZS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTczODAsNiArNzQ2OSw3IEBACiAJCQkJMkFGNzM4MkMxOEJCQkY5
MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVG
RDAwODExODlCMTkxQTAwNjMzMjMxIC8qIEluc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBNTdEMjNFNTE4OTBDRUJGMDAzMUM3RkEgLyogSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMTU4N0Q2RjFCNERDMTQxMDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTUzMjQzODcxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3MDlGQjg2OTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1Nl
dENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MzI0Mzg5MTg1NjgzMzUwMDJF
RDY5MiAvKiBJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtNzQwMyw2ICs3NDkzLDcgQEAKIAkJCQlCQ0RENTFFQjBGQjhERjc0MDA0QThCREMgLyogSklU
T3Bjb2Rlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzEyMzZFNTExOTVGMzNDMDBCRDIxNzQg
LyogSklUT3Bjb2RlczMyXzY0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNkU4NDVBMTkwMzBC
RUYwMDU2Mjc0MSAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQTE1ODdENkQxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjI0RTU0QzE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9u
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkNDODVDNDBFRTdBODk0MDAyODg2ODIgLyogSklU
UHJvcGVydHlBY2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDMUU4RTQxMTJFNzJFRjAw
QTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03
NTMwLDYgKzc2MjEsNyBAQAogCQkJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZl
bEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0QjcyM0IyMTJEN0RBNDYwMDNC
RDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQjNF
Q0YxNjIzN0Y2QzAwQUI2N0FEIC8qIE1hY3JvQXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUExRDc5MzAwMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNy
b0Fzc2VtYmxlckFSTS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzI5MDA5QzE3OTc2QzYwMDAz
MTcyOTggLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTND
RTA4NTE4QkMxQTU2MDBCRURGNzYgLyogQ29uc29sZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTc2MDksNiArNzcwMSw3IEBACiAJCQkJQTVCQTE1RTkxODIzNDBCMzAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3Rvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJBREZBMjYzMThFRjM1NDAw
MDRGOUZDQyAvKiBHQ0xvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5NDU1OEYxODI0
NUVGRDAwQ0MzODQzIC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQTFENzkyRkUxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUJBMTVFQzE4MjM0MEI0MDBBODJFNjkg
LyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywK
IAkJCQlBNUJBMTVFRTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGMjRFNTUwMTdFRTI3NDkwMEFCQjIxNyAvKiBS
ZXBhdGNoLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzYxNiw2ICs3NzA5LDcgQEAKIAkJCQkwRjc3
MDA5MjE0MDJGRjNDMDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0MjlEODg1MEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNzBFQzBFQzYxQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExQjlFMjM5MUI0RTBENjcwMEJDN0ZF
RCAvKiBJbnRsQ29sbGF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVGRDAwNjcxODlBRkU5
QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUZE
MDA2RDE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMDQzOTZEMUIwM0RDMEIwMDk1OThCNyAvKiBERkdDb21iaW5lZExpdmVuZXNzLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtNzY2Myw2ICs3NzU3LDggQEAKIAkJCQkwRkEyQzE3QjE3RDdD
Rjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
Mzg2NTU1MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYyQjY3MDcxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlDb250cm9sbGVy
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExRDc5MkZDMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRs
TnVtYmVyRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExNTg3RDcxMUI0REMxNDEwMEQ2
OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYyQjY3MEExN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlUeXBlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUyQzk1MkI5MTlBMjhBMUMwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NEExNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Ni5j
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaAppbmRleCA0MzJmYjZjMWIxNmZjZjJmMjI3MTEzZDI3NmVjMDgyNWZj
NTI5YmQ0Li42ZWZjZDRjNGE4MDZiMWZhOTc4YTQwYmI0ZTNkN2QwMWZiOWM4NjE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAg
LTMzLDcgKzMzLDkgQEAKICAgICBtYWNybyhBcnJheUl0ZXJhdG9yKSBcCiAgICAgbWFjcm8oQllU
RVNfUEVSX0VMRU1FTlQpIFwKICAgICBtYWNybyhCb29sZWFuKSBcCisgICAgbWFjcm8oQ29sbGF0
b3IpIFwKICAgICBtYWNybyhEYXRlKSBcCisgICAgbWFjcm8oRGF0ZVRpbWVGb3JtYXQpIFwKICAg
ICBtYWNybyhFcnJvcikgXAogICAgIG1hY3JvKEV2YWxFcnJvcikgXAogICAgIG1hY3JvKEZ1bmN0
aW9uKSBcCkBAIC00NSw2ICs0Nyw3IEBACiAgICAgbWFjcm8oTWF0aCkgXAogICAgIG1hY3JvKE5h
TikgXAogICAgIG1hY3JvKE51bWJlcikgXAorICAgIG1hY3JvKE51bWJlckZvcm1hdCkgXAogICAg
IG1hY3JvKE9iamVjdCkgXAogICAgIG1hY3JvKFByb21pc2UpIFwKICAgICBtYWNybyhSYW5nZUVy
cm9yKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVj
dG9yLmNwcAppbmRleCBkNjMyOWZkZjFiMDI1MGQ3ODI0YzhjOGJkNzBkZDY4NzA0NzJiNGZjLi5l
ZTY1NmEzMDk3NGUzZWM1ZGIxMDRmMTZjNTM0ZDQyNmIyYmU4NWY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTUzLDcgKzUz
LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIG5hbWVzcGFjZSBKU0MgewogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQYXJzZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZU5vdyhFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVVUQyhFeGVjU3RhdGUqKTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaAppbmRleCAwNTRmNTcxZDU3OWU4Y2U0ZjM0
YjU0MDkxN2I4ZDAyOGI1MGRmYjliLi5jZGFjOTdkMzFiYTM2YTljMjJlYWMwMjQ4YWZjNmY1MjEy
YmY3OTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
c3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3Ry
dWN0b3IuaApAQCAtNTksNiArNTksOCBAQCBwcml2YXRlOgogCiBKU09iamVjdCogY29uc3RydWN0
RGF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmKTsKIAorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlTm93KEV4ZWNTdGF0ZSopOworCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIERhdGVDb25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODEwOGZj
MTg1OThkM2UyYzdhZDg5ZTBjZjFmODhkNGU1YTExZWM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcApAQCAtMCwwICsxLDEy
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVj
cmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkludGxDb2xsYXRvci5oIgorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJFcnJv
ci5oIgorI2luY2x1ZGUgIkludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSW50
bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlNs
b3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsQ29sbGF0b3I6OnNfaW5mbyA9IHsg
Ik9iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bENvbGxh
dG9yKSB9OworCitJbnRsQ29sbGF0b3IqIEludGxDb2xsYXRvcjo6Y3JlYXRlKFZNJiB2bSwgSW50
bENvbGxhdG9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQoreworICAgIEludGxDb2xsYXRvciog
Zm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxhdG9yPih2bS5oZWFw
KSkgSW50bENvbGxhdG9yKHZtLCBjb25zdHJ1Y3Rvci0+Y29sbGF0b3JTdHJ1Y3R1cmUoKSk7Cisg
ICAgZm9ybWF0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGZvcm1hdDsKK30KKwor
U3RydWN0dXJlKiBJbnRsQ29sbGF0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bENvbGxhdG9yOjpJ
bnRsQ29sbGF0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bENvbGxhdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKK30KKwordm9pZCBJbnRsQ29sbGF0b3I6OmRl
c3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PEludGxDb2xsYXRvcio+KGNl
bGwpLT5JbnRsQ29sbGF0b3I6On5JbnRsQ29sbGF0b3IoKTsKK30KKwordm9pZCBJbnRsQ29sbGF0
b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBJbnRsQ29sbGF0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SW50bENvbGxhdG9yKj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwor
CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5kQ29tcGFyZSk7Cit9CisKK3ZvaWQgSW50
bENvbGxhdG9yOjpzZXRCb3VuZENvbXBhcmUoVk0mIHZtLCBKU0JvdW5kRnVuY3Rpb24qIGZvcm1h
dCkKK3sKKyAgICBtX2JvdW5kQ29tcGFyZS5zZXQodm0sIHRoaXMsIGZvcm1hdCk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yRnVuY0NvbXBhcmUoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIC8vIDEwLjMuNCBDb2xsYXRvciBDb21wYXJlIEZ1bmN0aW9ucyAo
RUNNQS00MDIgMi4wKQorICAgIC8vIDEuIExldCBjb2xsYXRvciBiZSB0aGUgdGhpcyB2YWx1ZS4K
KyAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0ganNEeW5hbWljQ2FzdDxJbnRsQ29sbGF0b3Iq
PihleGVjLT50aGlzVmFsdWUoKSk7CisKKyAgICAvLyAyLiBBc3NlcnQ6IFR5cGUoY29sbGF0b3Ip
IGlzIE9iamVjdCBhbmQgY29sbGF0b3IgaGFzIGFuIFtbaW5pdGlhbGl6ZWRDb2xsYXRvcl1dIGlu
dGVybmFsIHNsb3Qgd2hvc2UgdmFsdWUgaXMgdHJ1ZS4KKyAgICBpZiAoIWNvbGxhdG9yKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKworICAg
IC8vIDMuIElmIHggaXMgbm90IHByb3ZpZGVkLCBsZXQgeCBiZSB1bmRlZmluZWQuCisgICAgLy8g
NC4gSWYgeSBpcyBub3QgcHJvdmlkZWQsIGxldCB5IGJlIHVuZGVmaW5lZC4KKyAgICAvLyA1LiBM
ZXQgWCBiZSBUb1N0cmluZyh4KS4KKyAgICBKU1N0cmluZyogYSA9IGV4ZWMtPmFyZ3VtZW50KDAp
LnRvU3RyaW5nKGV4ZWMpOworICAgIC8vIDYuIFJldHVybklmQWJydXB0KFgpLgorICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKworICAgIC8vIDcuIExldCBZIGJlIFRvU3RyaW5nKHkpLgorICAgIEpTU3Ry
aW5nKiBiID0gZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyk7CisgICAgLy8gOC4gUmV0
dXJuSWZBYnJ1cHQoWSkuCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgLy8gOS4gUmV0dXJu
IENvbXBhcmVTdHJpbmdzKGNvbGxhdG9yLCBYLCBZKS4KKworICAgIC8vIDEwLjMuNCBDb21wYXJl
U3RyaW5ncyBhYnN0cmFjdCBvcGVyYXRpb24gKEVDTUEtNDAyIDIuMCkKKyAgICAvLyBGSVhNRTog
SW1wbGVtZW50IENvbXBhcmVTdHJpbmdzLgorCisgICAgLy8gUmV0dXJuIHNpbXBsZSBjaGVjayB1
bnRpbCBwcm9wZXJseSBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKGNvZGVQb2ludENvbXBhcmUoYS0+dmFsdWUoZXhlYykuaW1wbCgpLCBiLT52YWx1ZShl
eGVjKS5pbXBsKCkpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5B
QkxFKElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
Q29sbGF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZmMjI1MTQ5NDFhMjExODYzZjljMjg0MmZjMTcwZDYxYmNhNDYxMDIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3IuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFu
V2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElu
dGxDb2xsYXRvcl9oCisjZGVmaW5lIEludGxDb2xsYXRvcl9oCisKKyNpZiBFTkFCTEUoSU5UTCkK
KworI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvcjsKK2NsYXNzIEpTQm91bmRGdW5jdGlvbjsK
KworY2xhc3MgSW50bENvbGxhdG9yIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0
aWMgSW50bENvbGxhdG9yKiBjcmVhdGUoVk0mLCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciopOwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBKU0JvdW5kRnVuY3Rpb24q
IGJvdW5kQ29tcGFyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRDb21wYXJlLmdldCgpOyB9Cisg
ICAgdm9pZCBzZXRCb3VuZENvbXBhcmUoVk0mLCBKU0JvdW5kRnVuY3Rpb24qKTsKKworcHJvdGVj
dGVkOgorICAgIEludGxDb2xsYXRvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworcHJpdmF0
ZToKKyAgICBXcml0ZUJhcnJpZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2JvdW5kQ29tcGFyZTsKK307
CisgICAgCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvckZ1bmNDb21w
YXJlKEV4ZWNTdGF0ZSopOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJM
RShJTlRMKQorCisjZW5kaWYgLy8gSW50bENvbGxhdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNDFkZDE3Y2Q4ZWIxMTJhMjFlZmI2YzIxYTE0NDk0ZmIyZWQ2ZDY1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29u
c3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5o
IgorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIklu
dGxDb2xsYXRvci5oIgorI2luY2x1ZGUgIkludGxDb2xsYXRvclByb3RvdHlwZS5oIgorI2luY2x1
ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJMb29rdXAuaCIKKyNpbmNsdWRlICJTbG90
VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50
bENvbGxhdG9yQ29uc3RydWN0b3IpOworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoRXhlY1N0
YXRlKik7CisKK30KKworI2luY2x1ZGUgIkludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxDb2xsYXRvckNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sICZj
b2xsYXRvckNvbnN0cnVjdG9yVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bENvbGxhdG9y
Q29uc3RydWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bENvbGxhdG9yQ29uc3RydWN0b3Iu
bHV0LmgKK0BiZWdpbiBjb2xsYXRvckNvbnN0cnVjdG9yVGFibGUKKyAgc3VwcG9ydGVkTG9jYWxl
c09mICAgICAgICAgICAgIEludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2Fs
ZXNPZiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCitJbnRsQ29s
bGF0b3JDb25zdHJ1Y3RvciogSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIGNvbGxhdG9yUHJv
dG90eXBlLCBTdHJ1Y3R1cmUqIGNvbGxhdG9yU3RydWN0dXJlKQoreworICAgIEludGxDb2xsYXRv
ckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPElu
dGxDb2xsYXRvckNvbnN0cnVjdG9yPih2bS5oZWFwKSkgSW50bENvbGxhdG9yQ29uc3RydWN0b3Io
dm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBjb2xs
YXRvclByb3RvdHlwZSwgY29sbGF0b3JTdHJ1Y3R1cmUpOworICAgIHJldHVybiBjb25zdHJ1Y3Rv
cjsKK30KKworU3RydWN0dXJlKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
fQorCitJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6SW50bENvbGxhdG9yQ29uc3RydWN0b3IoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0
cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIGNvbGxhdG9yUHJvdG90eXBlLCBT
dHJ1Y3R1cmUqIGNvbGxhdG9yU3RydWN0dXJlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtLCBBU0NJSUxpdGVyYWwoIkNvbGxhdG9yIikpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGNvbGxhdG9yUHJvdG90eXBl
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJl
YWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKKyAgICBtX2NvbGxhdG9yU3RydWN0dXJl
LnNldCh2bSwgdGhpcywgY29sbGF0b3JTdHJ1Y3R1cmUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxDb2xsYXRvcihFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgLy8gMTAuMS4yIEludGwuQ29sbGF0b3IgKFtsb2NhbGVzIFssIG9wdGlvbnNdXSkgKEVDTUEt
NDAyIDIuMCkKKyAgICAvLyAxLiBJZiBOZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFy
Z2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rpb24gb2JqZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUg
TmV3VGFyZ2V0LgorICAgIEpTVmFsdWUgbmV3VGFyZ2V0ID0gZXhlYy0+bmV3VGFyZ2V0KCk7Cisg
ICAgaWYgKCFuZXdUYXJnZXQgfHwgbmV3VGFyZ2V0LmlzVW5kZWZpbmVkKCkpCisgICAgICAgIG5l
d1RhcmdldCA9IGV4ZWMtPmNhbGxlZSgpOworCisgICAgLy8gMi4gTGV0IGNvbGxhdG9yIGJlIE9y
ZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJUNvbGxhdG9yUHJvdG90eXBl
JSkuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9y
ID0gSW50bENvbGxhdG9yOjpjcmVhdGUodm0sIGpzQ2FzdDxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
cio+KGV4ZWMtPmNhbGxlZSgpKSk7CisgICAgaWYgKGNvbGxhdG9yICYmICFqc0R5bmFtaWNDYXN0
PEludGxDb2xsYXRvckNvbnN0cnVjdG9yKj4obmV3VGFyZ2V0KSkgeworICAgICAgICBKU1ZhbHVl
IHByb3RvID0gYXNPYmplY3QobmV3VGFyZ2V0KS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUpOworICAgICAgICBhc09iamVjdChjb2xsYXRvciktPnNldFByb3RvdHlw
ZVdpdGhDeWNsZUNoZWNrKGV4ZWMsIHByb3RvKTsKKyAgICB9CisKKyAgICAvLyAzLiBSZXR1cm5J
ZkFicnVwdChjb2xsYXRvcikuCisgICAgQVNTRVJUKGNvbGxhdG9yKTsKKworICAgIC8vIDQuIFJl
dHVybiBJbml0aWFsaXplQ29sbGF0b3IoY29sbGF0b3IsIGxvY2FsZXMsIG9wdGlvbnMpLgorICAg
IC8vIEZJWE1FOiByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEluaXRpYWxpemVDb2xsYXRvcihjb2xs
YXRvciwgbG9jYWxlcywgb3B0aW9ucykpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
b2xsYXRvcik7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxDb2xs
YXRvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTAuMS4yIEludGwuQ29sbGF0b3IgKFts
b2NhbGVzIFssIG9wdGlvbnNdXSkgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBJZiBOZXdUYXJn
ZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rpb24gb2Jq
ZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0LgorICAgIC8vIE5ld1RhcmdldCBp
cyBhbHdheXMgdW5kZWZpbmVkIHdoZW4gY2FsbGVkIGFzIGEgZnVuY3Rpb24uCisKKyAgICAvLyAy
LiBMZXQgY29sbGF0b3IgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0
LCAlQ29sbGF0b3JQcm90b3R5cGUlKS4KKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIElu
dGxDb2xsYXRvciogY29sbGF0b3IgPSBJbnRsQ29sbGF0b3I6OmNyZWF0ZSh2bSwganNDYXN0PElu
dGxDb2xsYXRvckNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpKTsKKworICAgIC8vIDMuIFJl
dHVybklmQWJydXB0KGNvbGxhdG9yKS4KKyAgICBBU1NFUlQoY29sbGF0b3IpOworCisgICAgLy8g
NC4gUmV0dXJuIEluaXRpYWxpemVDb2xsYXRvcihjb2xsYXRvciwgbG9jYWxlcywgb3B0aW9ucyku
CisgICAgLy8gRklYTUU6IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSW5pdGlhbGl6ZUNvbGxhdG9y
KGNvbGxhdG9yLCBsb2NhbGVzLCBvcHRpb25zKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNvbGxhdG9yKTsKK30KKworQ29uc3RydWN0VHlwZSBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
cjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRh
KQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SW50bENv
bGxhdG9yOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworQ2FsbFR5cGUgSW50
bENvbGxhdG9yQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxs
RGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsSW50bENvbGxhdG9y
OworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK2Jvb2wgSW50bENvbGxhdG9yQ29uc3Ry
dWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAg
ICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIGNv
bGxhdG9yQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEludGxDb2xsYXRvckNvbnN0cnVjdG9yKj4o
b2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIC8vIDEwLjIuMiBJbnRsLkNvbGxhdG9yLnN1cHBvcnRlZExv
Y2FsZXNPZihsb2NhbGVzIFssIG9wdGlvbnNdKSAoRUNNQS00MDIgMi4wKQorCisgICAgLy8gMS4g
TGV0IHJlcXVlc3RlZExvY2FsZXMgYmUgQ2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2NhbGVzKS4K
KyAgICAvLyBGSVhNRTogcmVxdWVzdGVkID0gQ2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2NhbGVz
KTsKKworICAgIC8vIDIuIFJldHVybklmQWJydXB0KHJlcXVlc3RlZExvY2FsZXMpLgorICAgIC8v
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAvLyAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIC8vIDMuIFJldHVybiBTdXBwb3J0ZWRMb2NhbGVz
KCVDb2xsYXRvciUuW1thdmFpbGFibGVMb2NhbGVzXV0sIHJlcXVlc3RlZExvY2FsZXMsIG9wdGlv
bnMpLgorICAgIC8vIEZJWE1FOiByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN1cHBvcnRlZExvY2Fs
ZXMoYXZhaWxhYmxlLCByZXF1ZXN0ZWQsIG9wdGlvbnMpKTsKKworICAgIC8vIFJldHVybiBlbXB0
eSBhcnJheSB1bnRpbCBwcm9wZXJseSBpbXBsZW1lbnRlZC4KKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+
Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNBcnJheSogc3VwcG9ydGVkTG9jYWxlcyA9IEpTQXJyYXk6
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVG
b3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIDApOwor
ICAgIGlmICghc3VwcG9ydGVkTG9jYWxlcykKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYykpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShzdXBwb3J0ZWRMb2NhbGVzKTsKK30KKyAgICAKK3ZvaWQgSW50bENvbGxhdG9yQ29uc3Ry
dWN0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
K3sKKyAgICBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciogdGhpc09iamVjdCA9IGpzQ2FzdDxJbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jb2xs
YXRvclN0cnVjdHVyZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5B
QkxFKElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bENvbGxhdG9yQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YWE5OGYyZmFhMjQ3OWI4NGY3OWI3
MTA3NWY1ZTk4N2ZhZWU3NmZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDcwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxDb2xsYXRvckNvbnN0cnVjdG9yX2gK
KyNkZWZpbmUgSW50bENvbGxhdG9yQ29uc3RydWN0b3JfaAorCisjaWYgRU5BQkxFKElOVEwpCisK
KyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBJbnRsQ29sbGF0b3I7CitjbGFzcyBJbnRsQ29sbGF0b3JQcm90b3R5cGU7CisKK2NsYXNzIElu
dGxDb2xsYXRvckNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGlj
OgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGljIEludGxDb2xsYXRvckNvbnN0cnVjdG9y
KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJbnRsQ29sbGF0b3JQcm90b3R5cGUqLCBTdHJ1Y3R1
cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgU3RydWN0dXJl
KiBjb2xsYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sbGF0b3JTdHJ1Y3R1cmUu
Z2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRs
Q29sbGF0b3JQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKKworcHJpdmF0ZToKKyAgICBJbnRsQ29s
bGF0b3JDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RU
eXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRp
YyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOworICAgIAorICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY29s
bGF0b3JTdHJ1Y3R1cmU7Cit9OworCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdEludGxDb2xsYXRvcihFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEludGxDb2xsYXRvcihFeGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKworI2VuZGlmIC8vIEludGxDb2xsYXRvckNvbnN0cnVj
dG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xs
YXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29s
bGF0b3JQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0NmRkYmZjOGMwZjlkNjFmOWZjNTJhMjc5
YzVkZjdmMzBiY2E3MzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsMTM2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21h
aWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bENv
bGxhdG9yUHJvdG90eXBlLmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkVycm9y
LmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yLmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9u
LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rv
ci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsQ29sbGF0b3JQcm90
b3R5cGUpOworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0
b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9u
cyhFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bENvbGxhdG9yUHJvdG90eXBlLmx1
dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxDb2xsYXRvclBy
b3RvdHlwZTo6c19pbmZvID0geyAiT2JqZWN0IiwgJkludGxDb2xsYXRvcjo6c19pbmZvLCAmY29s
bGF0b3JQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsQ29sbGF0b3JQcm90
b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oCitA
YmVnaW4gY29sbGF0b3JQcm90b3R5cGVUYWJsZQorICBjb21wYXJlICAgICAgICAgIEludGxDb2xs
YXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCisgIHJl
c29sdmVkT3B0aW9ucyAgSW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyAg
RG9udEVudW18RnVuY3Rpb24gMAorQGVuZAorKi8KKworSW50bENvbGxhdG9yUHJvdG90eXBlKiBJ
bnRsQ29sbGF0b3JQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSW50bENvbGxhdG9yUHJvdG90eXBlKiBvYmplY3Qg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsQ29sbGF0b3JQcm90b3R5cGU+KHZtLmhl
YXApKSBJbnRsQ29sbGF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5m
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJ
bnRsQ29sbGF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bENvbGxhdG9yUHJvdG90
eXBlOjpJbnRsQ29sbGF0b3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
KyAgICA6IEludGxDb2xsYXRvcih2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxDb2xs
YXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKK30KKworYm9vbCBJbnRsQ29sbGF0b3JQcm90b3R5cGU6OmdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3Rh
dGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCBjb2xsYXRvclByb3RvdHlwZVRhYmxlLCBq
c0Nhc3Q8SW50bENvbGxhdG9yUHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90
KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5
cGVHZXR0ZXJDb21wYXJlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMC4zLjMgSW50bC5D
b2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIExldCBj
b2xsYXRvciBiZSB0aGlzIENvbGxhdG9yIG9iamVjdC4KKyAgICBJbnRsQ29sbGF0b3IqIGNvbGxh
dG9yID0ganNEeW5hbWljQ2FzdDxJbnRsQ29sbGF0b3IqPihleGVjLT50aGlzVmFsdWUoKSk7Cisg
ICAgaWYgKCFjb2xsYXRvcikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBh
cmUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEg
Q29sbGF0b3IiKSkpOworCisgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZENvbXBhcmUgPSBjb2xs
YXRvci0+Ym91bmRDb21wYXJlKCk7CisgICAgLy8gMi4gSWYgY29sbGF0b3IuW1tib3VuZENvbXBh
cmVdXSBpcyB1bmRlZmluZWQsCisgICAgaWYgKCFib3VuZENvbXBhcmUpIHsKKyAgICAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGNvbGxhdG9yLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcg
YnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmluZWQgaW4gMTEuMy40LgorICAgICAgICAv
LyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDIuCisgICAgICAgIEpT
RnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCAyLCBBU0NJSUxpdGVyYWwoImNvbXBhcmUiKSwgSW50bENvbGxhdG9yRnVuY0NvbXBhcmUs
IE5vSW50cmluc2ljKTsKKyAgICAgICAgSlNBcnJheSogYm91bmRBcmdzID0gSlNBcnJheTo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7CisgICAg
ICAgIGlmICghYm91bmRBcmdzKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYykpOworCisgICAgICAgIC8vIGMuIExldCBiYyBiZSBC
b3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4KKyAgICAgICAgYm91bmRDb21w
YXJlID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2Jq
ZWN0LCBjb2xsYXRvciwgYm91bmRBcmdzLCAyLCBBU0NJSUxpdGVyYWwoImNvbXBhcmUiKSk7Cisg
ICAgICAgIC8vIGQuIFNldCBjb2xsYXRvci5bW2JvdW5kQ29tcGFyZV1dIHRvIGJjLgorICAgICAg
ICBjb2xsYXRvci0+c2V0Qm91bmRDb21wYXJlKHZtLCBib3VuZENvbXBhcmUpOworICAgIH0KKyAg
ICAvLyAzLiBSZXR1cm4gY29sbGF0b3IuW1tib3VuZENvbXBhcmVdXS4KKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGJvdW5kQ29tcGFyZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgLy8gMTAuMy41IEludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVk
T3B0aW9ucygpIChFQ01BLTQwMiAyLjApCisgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpz
RHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICgh
Y29sbGF0b3IpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlv
bnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEg
Q29sbGF0b3IiKSkpOworCisgICAgLy8gVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBuZXcgb2JqZWN0
IHdob3NlIHByb3BlcnRpZXMgYW5kIGF0dHJpYnV0ZXMgYXJlIHNldCBhcyBpZiBjb25zdHJ1Y3Rl
ZCBieSBhbiBvYmplY3QgbGl0ZXJhbCBhc3NpZ25pbmcgdG8gZWFjaCBvZiB0aGUgZm9sbG93aW5n
IHByb3BlcnRpZXMgdGhlIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGludGVybmFsIHNsb3Qg
b2YgdGhpcyBDb2xsYXRvciBvYmplY3QgKHNlZSAxMC40KTogbG9jYWxlLCB1c2FnZSwgc2Vuc2l0
aXZpdHksIGlnbm9yZVB1bmN0dWF0aW9uLCBjb2xsYXRpb24sIGFzIHdlbGwgYXMgdGhvc2UgcHJv
cGVydGllcyBzaG93biBpbiBUYWJsZSAxIHdob3NlIGtleXMgYXJlIGluY2x1ZGVkIGluIHRoZSAl
Q29sbGF0b3IlW1tyZWxldmFudEV4dGVuc2lvbktleXNdXSBpbnRlcm5hbCBzbG90IG9mIHRoZSBz
dGFuZGFyZCBidWlsdC1pbiBvYmplY3QgdGhhdCBpcyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBJbnRs
LkNvbGxhdG9yLgorCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVj
dChleGVjKTsKKworICAgIC8vIEZJWE1FOiBQb3B1bGF0ZSBvYmplY3QgZnJvbSBpbnRlcm5hbCBz
bG90cy4KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3B0aW9ucyk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY4MTY0MjY3OWU5ZjUxMjE0NWNkZjdlMDJjY2FmNDY5N2ZlYjdjYzEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5
cGUuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFu
V2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElu
dGxDb2xsYXRvclByb3RvdHlwZV9oCisjZGVmaW5lIEludGxDb2xsYXRvclByb3RvdHlwZV9oCisK
KyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkludGxDb2xsYXRvci5oIgorI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsQ29sbGF0b3JQcm90
b3R5cGUgOiBwdWJsaWMgSW50bENvbGxhdG9yIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGxD
b2xsYXRvciBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisg
ICAgc3RhdGljIEludGxDb2xsYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitw
cm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcml2YXRlOgorICAg
IEludGxDb2xsYXRvclByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVO
QUJMRShJTlRMKQorCisjZW5kaWYgLy8gSW50bENvbGxhdG9yUHJvdG90eXBlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc0Y2MzZGM1ZjM0Y2QyZmFhNmQ2Nzg3NWQwNmNjZjU0NjZhMTMxYjMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXQuY3BwCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFu
ZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisKKyNpZiBF
TkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkRhdGVDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkRh
dGVJbnN0YW5jZS5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAi
SlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNs
dWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisj
aW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3Qg
Q2xhc3NJbmZvIEludGxEYXRlVGltZUZvcm1hdDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6
OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsRGF0ZVRpbWVGb3JtYXQpIH07CisK
K0ludGxEYXRlVGltZUZvcm1hdCogSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IpCit7CisgICAgSW50bERh
dGVUaW1lRm9ybWF0KiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGF0
ZVRpbWVGb3JtYXQ+KHZtLmhlYXApKSBJbnRsRGF0ZVRpbWVGb3JtYXQodm0sIGNvbnN0cnVjdG9y
LT5kYXRlVGltZUZvcm1hdFN0cnVjdHVyZSgpKTsKKyAgICBmb3JtYXQtPmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICByZXR1cm4gZm9ybWF0OworfQorCitTdHJ1Y3R1cmUqIEludGxEYXRlVGltZUZv
cm1hdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsRGF0ZVRpbWVGb3JtYXQ6OkludGxEYXRlVGltZUZv
cm1hdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNEZXN0cnVjdGlibGVP
YmplY3Qodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworfQorCit2b2lkIEludGxEYXRlVGltZUZvcm1h
dDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SW50bERhdGVUaW1l
Rm9ybWF0Kj4oY2VsbCktPkludGxEYXRlVGltZUZvcm1hdDo6fkludGxEYXRlVGltZUZvcm1hdCgp
OworfQorCit2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEludGxEYXRlVGltZUZvcm1hdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihjZWxsKTsKKyAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fYm91bmRGb3JtYXQpOworfQorCit2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6
c2V0Qm91bmRGb3JtYXQoVk0mIHZtLCBKU0JvdW5kRnVuY3Rpb24qIGZvcm1hdCkKK3sKKyAgICBt
X2JvdW5kRm9ybWF0LnNldCh2bSwgdGhpcywgZm9ybWF0KTsKK30KKworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIC8vIDEyLjMuNCBEYXRlVGltZSBGb3JtYXQgRnVuY3Rpb25zIChF
Q01BLTQwMiAyLjApCisgICAgLy8gMS4gTGV0IGR0ZiBiZSB0aGUgdGhpcyB2YWx1ZS4KKyAgICBJ
bnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9y
bWF0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIC8vIDIuIEFzc2VydDogVHlwZShkdGYpIGlz
IE9iamVjdCBhbmQgZHRmIGhhcyBhbiBbW2luaXRpYWxpemVkRGF0ZVRpbWVGb3JtYXRdXSBpbnRl
cm5hbCBzbG90IHdob3NlIHZhbHVlIGlzIHRydWUuCisgICAgaWYgKCFmb3JtYXQpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYykpOworCisgICAgSlNW
YWx1ZSBkYXRlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgZG91YmxlIHZhbHVlOworCisgICAg
Ly8gMy4gSWYgZGF0ZSBpcyBub3QgcHJvdmlkZWQgb3IgaXMgdW5kZWZpbmVkLCB0aGVuCisgICAg
aWYgKGRhdGUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICAvLyBhLiBMZXQgeCBiZSAlRGF0ZV9u
b3clKCkuCisgICAgICAgIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGRhdGVOb3coZXhlYykpLnRv
TnVtYmVyKGV4ZWMpOworICAgIC8vIDQuIEVsc2UKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBh
LiBMZXQgeCBiZSBUb051bWJlcihkYXRlKS4KKyAgICAgICAgdmFsdWUgPSBkYXRlLnRvTnVtYmVy
KGV4ZWMpOworICAgICAgICAvLyBiLiBSZXR1cm5JZkFicnVwdCh4KS4KKyAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICB9CisKKyAgICAvLyA1LiBSZXR1cm4gRm9ybWF0RGF0ZVRpbWUo
ZHRmLCB4KS4KKworICAgIC8vIDEyLjMuNCBGb3JtYXREYXRlVGltZSBhYnN0cmFjdCBvcGVyYXRp
b24gKEVDTUEtNDAyIDIuMCkKKworICAgIC8vIDEuIElmIHggaXMgbm90IGEgZmluaXRlIE51bWJl
ciwgdGhlbiB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uLgorICAgIGlmICghc3RkOjppc2Zp
bml0ZSh2YWx1ZSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dSYW5nZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiZGF0ZSB2YWx1ZSBpcyBub3QgZmluaXRlIGluIERhdGVU
aW1lRm9ybWF0LmZvcm1hdCgpIikpKTsKKworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgMiAtIDkK
KworICAgIC8vIFJldHVybiBuZXcgRGF0ZSh2YWx1ZSkudG9TdHJpbmcoKSB1bnRpbCBwcm9wZXJs
eSBpbXBsZW1lbnRlZC4KKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAg
RGF0ZUluc3RhbmNlKiBkID0gRGF0ZUluc3RhbmNlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+
ZGF0ZVN0cnVjdHVyZSgpLCB2YWx1ZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Zh
bHVlKGQpLnRvU3RyaW5nKGV4ZWMpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RhZWQxMzhmYjA4ZGNmYTNiZTY3ZDM3
YzgzYTQ3ZGI0YWFiY2JkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5j
b20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgSW50bERhdGVUaW1lRm9ybWF0X2gKKyNkZWZpbmUgSW50
bERhdGVUaW1lRm9ybWF0X2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSlNEZXN0
cnVjdGlibGVPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yOworY2xhc3MgSlNCb3VuZEZ1bmN0aW9uOworCitjbGFzcyBJbnRs
RGF0ZVRpbWVGb3JtYXQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVibGljOgor
ICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBJbnRs
RGF0ZVRpbWVGb3JtYXQqIGNyZWF0ZShWTSYsIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
Kik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIEpTQm91bmRGdW5j
dGlvbiogYm91bmRGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kRm9ybWF0LmdldCgpOyB9
CisgICAgdm9pZCBzZXRCb3VuZEZvcm1hdChWTSYsIEpTQm91bmRGdW5jdGlvbiopOworCitwcm90
ZWN0ZWQ6CisgICAgSW50bERhdGVUaW1lRm9ybWF0KFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7
CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwor
CisgICAgV3JpdGVCYXJyaWVyPEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZEZvcm1hdDsKK307Cisg
ICAgCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdEZ1bmNG
b3JtYXREYXRlVGltZShFeGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5UTCkKKworI2VuZGlmIC8vIEludGxEYXRlVGltZUZvcm1hdF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI4ZDQ2MGQyNjc0MWE0YjkzMzZi
OGNiMGY4YjY0ZmI3OGQwNjg3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsx
LDE4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRh
bGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCIKKworI2lmIEVOQUJMRShJ
TlRMKQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQu
aCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJ
bnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJK
U0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0
b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09m
KEV4ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxG
dW5jdGlvbjo6c19pbmZvLCAmZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKSB9OworCisvKiBTb3Vy
Y2UgZm9yIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gZGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3RvclRhYmxlCisgIHN1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAg
ICBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKworSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3IqIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBk
YXRlVGltZUZvcm1hdFByb3RvdHlwZSwgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVjdHVy
ZSkKK3sKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcj4o
dm0uaGVhcCkpIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUsIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9
CisKK1N0cnVjdHVyZSogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
K30KKworSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OkludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1
bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlKiBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSwgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0
cnVjdHVyZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVNDSUlMaXRlcmFsKCJE
YXRlVGltZUZvcm1hdCIpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8
IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKTsKK30KKworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlKiBl
eGVjKQoreworICAgIC8vIDEyLjEuMiBJbnRsLkRhdGVUaW1lRm9ybWF0IChbbG9jYWxlcyBbLCBv
cHRpb25zXV0pIChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVm
aW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBs
ZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KKyAgICBKU1ZhbHVlIG5ld1RhcmdldCA9IGV4ZWMt
Pm5ld1RhcmdldCgpOworICAgIGlmICghbmV3VGFyZ2V0IHx8IG5ld1RhcmdldC5pc1VuZGVmaW5l
ZCgpKQorICAgICAgICBuZXdUYXJnZXQgPSBleGVjLT5jYWxsZWUoKTsKKworICAgIC8vIDIuIExl
dCBkYXRlVGltZUZvcm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJn
ZXQsICVEYXRlVGltZUZvcm1hdFByb3RvdHlwZSUpLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IEludGxEYXRlVGltZUZv
cm1hdDo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihl
eGVjLT5jYWxsZWUoKSkpOworICAgIGlmIChkYXRlVGltZUZvcm1hdCAmJiAhanNEeW5hbWljQ2Fz
dDxJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcio+KG5ld1RhcmdldCkpIHsKKyAgICAgICAg
SlNWYWx1ZSBwcm90byA9IGFzT2JqZWN0KG5ld1RhcmdldCktPmdldERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlKTsKKyAgICAgICAgYXNPYmplY3QoZGF0ZVRpbWVGb3JtYXQp
LT5zZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhleGVjLCBwcm90byk7CisgICAgfQorCisgICAg
Ly8gMy4gUmV0dXJuSWZBYnJ1cHQoZGF0ZVRpbWVGb3JtYXQpLgorICAgIEFTU0VSVChkYXRlVGlt
ZUZvcm1hdCk7CisKKyAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KGRh
dGVUaW1lRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBGSVhNRTogcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShJbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoZGF0ZVRpbWVGb3JtYXQsIGxv
Y2FsZXMsIG9wdGlvbnMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVG
b3JtYXQpOworfQorICAgIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bERh
dGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMi4xLjIgSW50bC5EYXRl
VGltZUZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQorICAgIC8v
IDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2
ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCisgICAg
Ly8gTmV3VGFyZ2V0IGlzIGFsd2F5cyB1bmRlZmluZWQgd2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlv
bi4KKworICAgIC8vIDIuIExldCBkYXRlVGltZUZvcm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21D
b25zdHJ1Y3RvcihuZXdUYXJnZXQsICVEYXRlVGltZUZvcm1hdFByb3RvdHlwZSUpLgorICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1h
dCA9IEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSkpOworCisgICAgLy8gMy4gUmV0dXJuSWZB
YnJ1cHQoZGF0ZVRpbWVGb3JtYXQpLgorICAgIEFTU0VSVChkYXRlVGltZUZvcm1hdCk7CisKKyAg
ICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBs
b2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShJ
bml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMp
KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQpOworfQorCitD
b25zdHJ1Y3RUeXBlIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RE
YXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3Ry
dWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVGb3JtYXQ7Cisg
ICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCitDYWxsVHlwZSBJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRh
KQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxJbnRsRGF0ZVRpbWVGb3Jt
YXQ7CisgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKK30KKworYm9vbCBJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJuYWxGdW5jdGlvbj4o
ZXhlYywgZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
RnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTIuMi4y
IEludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKGxvY2FsZXMgWywgb3B0aW9u
c10pIChFQ01BLTQwMiAyLjApCisKKyAgICAvLyAxLiBMZXQgYXZhaWxhYmxlTG9jYWxlcyBiZSAl
RGF0ZVRpbWVGb3JtYXQlLltbYXZhaWxhYmxlTG9jYWxlc11dLgorICAgIC8vIEZJWE1FOiBhdmFp
bGFibGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0QXZhaWxhYmxlTG9jYWxl
cygpCisKKyAgICAvLyAyLiBMZXQgcmVxdWVzdGVkTG9jYWxlcyBiZSBDYW5vbmljYWxpemVMb2Nh
bGVMaXN0KGxvY2FsZXMpLgorICAgIC8vIEZJWE1FOiByZXF1ZXN0ZWQgPSBDYW5vbmljYWxpemVM
b2NhbGVMaXN0KGxvY2FsZXMpCisKKyAgICAvLyAzLiBSZXR1cm4gU3VwcG9ydGVkTG9jYWxlcyhh
dmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBGSVhN
RTogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTdXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJsZSwgcmVx
dWVzdGVkLCBvcHRpb25zKSk7CisKKyAgICAvLyBSZXR1cm4gZW1wdHkgYXJyYXkgdW50aWwgcHJv
cGVybHkgaW1wbGVtZW50ZWQuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwor
ICAgIEpTQXJyYXkqIHN1cHBvcnRlZExvY2FsZXMgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRp
YWxpemVkKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVy
aW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKKyAgICBpZiAoIXN1cHBvcnRl
ZExvY2FsZXMpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9j
YWxlcyk7Cit9CisgICAgCit2b2lkIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNP
YmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGF0
ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIEVOQUJMRShJTlRMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Yw
NDNhN2U3MGE0MmZmZWFmZjJkOGRiYjU2MGViYTFjMzNhY2E1NwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZh
bldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcl9oCisjZGVmaW5lIEludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yX2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSW50ZXJuYWxG
dW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0
OworY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOworCitjbGFzcyBJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
KiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAg
IFN0cnVjdHVyZSogZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGVUaW1lRm9ybWF0U3RydWN0dXJlLmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiwgU3RydWN0dXJl
Kik7CisKK3ByaXZhdGU6CisgICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IoVk0mLCBT
dHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpT
Q2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEo
SlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICAK
KyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlOwor
fTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVG
b3JtYXQoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRs
RGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzliOTI5NWNkYzM2
OTliYmUxYTk0ODM5ZGVkNWE4ZTdiZDU5MDE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApAQCAt
MCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIg
KHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIgorCisjaWYgRU5BQkxF
KElOVEwpCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1h
dC5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJ
bmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxM
WV9ERVNUUlVDVElCTEUoSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKTsKKworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0
dGVyRm9ybWF0KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3Rh
dGUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZTo6c19pbmZvID0geyAiT2JqZWN0IiwgJkludGxEYXRlVGltZUZvcm1hdDo6c19p
bmZvLCAmZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oCitAYmVnaW4gZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVU
YWJsZQorICBmb3JtYXQgICAgICAgICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRl
ckZvcm1hdCAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCisgIHJlc29sdmVkT3B0aW9ucyAgSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyAgRG9udEVudW18RnVu
Y3Rpb24gMAorQGVuZAorKi8KKworSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBJbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBv
YmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGU+KHZtLmhlYXApKSBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUodm0sIHN0cnVjdHVy
ZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgc3RydWN0dXJlKTsKKyAgICByZXR1
cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworfQorCitJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OkludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50
bERhdGVUaW1lRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSopCit7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCitib29sIEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQor
eworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIGRhdGVU
aW1lRm9ybWF0UHJvdG90eXBlVGFibGUsIGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTIuMy4zIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90
eXBlLmZvcm1hdCAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIExldCBkdGYgYmUgdGhpcyBEYXRl
VGltZUZvcm1hdCBvYmplY3QuCisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkdGYgPSBqc0R5bmFt
aWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICAvLyAy
LiBSZXR1cm5JZkFicnVwdChkdGYpLgorICAgIGlmICghZHRmKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW50bC5EYXRl
VGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFu
IG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9ybWF0IikpKTsKKyAgICAKKyAgICBK
U0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0ID0gZHRmLT5ib3VuZEZvcm1hdCgpOworICAgIC8v
IDMuIElmIHRoZSBbW2JvdW5kRm9ybWF0XV0gaW50ZXJuYWwgc2xvdCBvZiB0aGlzIERhdGVUaW1l
Rm9ybWF0IG9iamVjdCBpcyB1bmRlZmluZWQsCisgICAgaWYgKCFib3VuZEZvcm1hdCkgeworICAg
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gZHRmLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBu
ZXcgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmluZWQgaW4gMTIuMy40LgorICAgICAg
ICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuIChOb3RlOiBG
4oCZcyBsZW5ndGggcHJvcGVydHkgd2FzIDAgaW4gRUNNQS00MDIgMS4wKQorICAgICAgICBKU0Z1
bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSwgSW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1h
dERhdGVUaW1lLCBOb0ludHJpbnNpYyk7CisgICAgICAgIEpTQXJyYXkqIGJvdW5kQXJncyA9IEpT
QXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCks
IDApOworICAgICAgICBpZiAoIWJvdW5kQXJncykKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKyAgICAgICAgCisgICAgICAg
IC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4K
KyAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCB0YXJnZXRPYmplY3QsIGR0ZiwgYm91bmRBcmdzLCAxLCBBU0NJSUxpdGVyYWwoImZv
cm1hdCIpKTsKKyAgICAgICAgLy8gZC4gU2V0IGR0Zi5bW2JvdW5kRm9ybWF0XV0gdG8gYmYuCisg
ICAgICAgIGR0Zi0+c2V0Qm91bmRGb3JtYXQodm0sIGJvdW5kRm9ybWF0KTsKKyAgICB9CisgICAg
Ly8gNC4gUmV0dXJuIGR0Zi5bW2JvdW5kRm9ybWF0XV0uCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShib3VuZEZvcm1hdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgLy8gMTIuMy41IEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29s
dmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkdGYg
PSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsK
KyAgICBpZiAoIWR0ZikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJl
c29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlh
bGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdCIpKSk7CisKKyAgICAvLyBUaGUgZnVuY3Rpb24gcmV0
dXJucyBhIG5ldyBvYmplY3Qgd2hvc2UgcHJvcGVydGllcyBhbmQgYXR0cmlidXRlcyBhcmUgc2V0
IGFzIGlmIGNvbnN0cnVjdGVkIGJ5IGFuIG9iamVjdCBsaXRlcmFsIGFzc2lnbmluZyB0byBlYWNo
IG9mIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB0aGUgdmFsdWUgb2YgdGhlIGNvcnJlc3BvbmRp
bmcgaW50ZXJuYWwgc2xvdCBvZiB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdCAoc2VlIDEyLjQp
OiBsb2NhbGUsIGNhbGVuZGFyLCBudW1iZXJpbmdTeXN0ZW0sIHRpbWVab25lLCBob3VyMTIsIHdl
ZWtkYXksIGVyYSwgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIGFuZCB0
aW1lWm9uZU5hbWUuIFByb3BlcnRpZXMgd2hvc2UgY29ycmVzcG9uZGluZyBpbnRlcm5hbCBzbG90
cyBhcmUgbm90IHByZXNlbnQgYXJlIG5vdCBhc3NpZ25lZC4KKyAgICAvLyBOb3RlOiBJbiB0aGlz
IHZlcnNpb24gb2YgdGhlIEVDTUFTY3JpcHQgMjAxNSBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEks
IHRoZSB0aW1lWm9uZSBwcm9wZXJ0eSB3aWxsIGJlIHRoZSBuYW1lIG9mIHRoZSBkZWZhdWx0IHRp
bWUgem9uZSBpZiBubyB0aW1lWm9uZSBwcm9wZXJ0eSB3YXMgcHJvdmlkZWQgaW4gdGhlIG9wdGlv
bnMgb2JqZWN0IHByb3ZpZGVkIHRvIHRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9y
LiBUaGUgcHJldmlvdXMgdmVyc2lvbiBsZWZ0IHRoZSB0aW1lWm9uZSBwcm9wZXJ0eSB1bmRlZmlu
ZWQgaW4gdGhpcyBjYXNlLgorCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdChleGVjKTsKKworICAgIC8vIEZJWE1FOiBQb3B1bGF0ZSBvYmplY3QgZnJvbSBpbnRl
cm5hbCBzbG90cy4KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3B0aW9ucyk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyZmQ1ZTM0ZWE3OTU4NmU0Nzg5NmZhZmZjNDRlNWU2ZmE2
MTU5Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29t
KQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZV9oCisjZGVm
aW5lIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZV9oCisKKyNpZiBFTkFCTEUoSU5UTCkKKwor
I2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUgOiBw
dWJsaWMgSW50bERhdGVUaW1lRm9ybWF0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGxEYXRl
VGltZUZvcm1hdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90Owor
CisgICAgc3RhdGljIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9J
TkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFN0cnVjdHVy
ZSopOworCitwcml2YXRlOgorICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZShWTSYsIFN0
cnVjdHVyZSopOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQorCisjZW5kaWYgLy8gSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTM5ZGM1YjE5ZWE0OGVjYjRh
NGFlMzE3OTBlMzA5ZWI0YWM3NmFiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0wLDAgKzEsMTEzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50
bE51bWJlckZvcm1hdC5oIgorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJFcnJvci5o
IgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIklu
dGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJT
bG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bE51bWJlckZvcm1hdDo6c19pbmZv
ID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRs
TnVtYmVyRm9ybWF0KSB9OworCitJbnRsTnVtYmVyRm9ybWF0KiBJbnRsTnVtYmVyRm9ybWF0Ojpj
cmVhdGUoVk0mIHZtLCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQor
eworICAgIEludGxOdW1iZXJGb3JtYXQqIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEludGxOdW1iZXJGb3JtYXQ+KHZtLmhlYXApKSBJbnRsTnVtYmVyRm9ybWF0KHZtLCBjb25z
dHJ1Y3Rvci0+bnVtYmVyRm9ybWF0U3RydWN0dXJlKCkpOworICAgIGZvcm1hdC0+ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIHJldHVybiBmb3JtYXQ7Cit9CisKK1N0cnVjdHVyZSogSW50bE51bWJl
ckZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsTnVtYmVyRm9ybWF0OjpJbnRsTnVtYmVyRm9y
bWF0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU0Rlc3RydWN0aWJsZU9i
amVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAg
QVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworfQorCit2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmRl
c3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PEludGxOdW1iZXJGb3JtYXQq
PihjZWxsKS0+SW50bE51bWJlckZvcm1hdDo6fkludGxOdW1iZXJGb3JtYXQoKTsKK30KKwordm9p
ZCBJbnRsTnVtYmVyRm9ybWF0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgSW50bE51bWJlckZvcm1hdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxJbnRsTnVtYmVyRm9ybWF0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5k
Rm9ybWF0KTsKK30KKwordm9pZCBJbnRsTnVtYmVyRm9ybWF0OjpzZXRCb3VuZEZvcm1hdChWTSYg
dm0sIEpTQm91bmRGdW5jdGlvbiogZm9ybWF0KQoreworICAgIG1fYm91bmRGb3JtYXQuc2V0KHZt
LCB0aGlzLCBmb3JtYXQpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxO
dW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAx
MS4zLjQgRm9ybWF0IE51bWJlciBGdW5jdGlvbnMgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBM
ZXQgbmYgYmUgdGhlIHRoaXMgdmFsdWUuCisgICAgSW50bE51bWJlckZvcm1hdCogZm9ybWF0ID0g
anNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAg
IC8vIDIuIEFzc2VydDogVHlwZShuZikgaXMgT2JqZWN0IGFuZCBuZiBoYXMgYW4gW1tpbml0aWFs
aXplZE51bWJlckZvcm1hdF1dIGludGVybmFsIHNsb3Qgd2hvc2UgdmFsdWUgaXMgdHJ1ZS4KKyAg
ICBpZiAoIWZvcm1hdCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihleGVjKSk7CisKKyAgICAvLyAzLiBJZiB2YWx1ZSBpcyBub3QgcHJvdmlkZWQsIGxldCB2
YWx1ZSBiZSB1bmRlZmluZWQuCisgICAgLy8gNC4gTGV0IHggYmUgVG9OdW1iZXIodmFsdWUpLgor
ICAgIGRvdWJsZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpOworICAg
IC8vIDUuIFJldHVybklmQWJydXB0KHgpLgorICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIC8v
IDYuIFJldHVybiBGb3JtYXROdW1iZXIobmYsIHgpLgorICAgIAorICAgIC8vIDExLjMuNCBGb3Jt
YXROdW1iZXIgYWJzdHJhY3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAyLjApCisgICAgLy8gRklYTUU6
IEltcGxlbWVudCBGb3JtYXROdW1iZXIuCisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKHZhbHVlKS50b1N0cmluZyhleGVjKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2MyNTM4ZjliZmJhMzBlNzQzODIx
YjJmMGQxODFlNjM4NzJhMTIwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaApAQCAtMCwwICsxLDY1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwu
Y29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxOdW1iZXJGb3JtYXRfaAorI2RlZmluZSBJbnRs
TnVtYmVyRm9ybWF0X2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSlNEZXN0cnVj
dGlibGVPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3RvcjsKK2NsYXNzIEpTQm91bmRGdW5jdGlvbjsKKworY2xhc3MgSW50bE51bWJl
ckZvcm1hdCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEludGxOdW1iZXJG
b3JtYXQqIGNyZWF0ZShWTSYsIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciopOworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5k
Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEZvcm1hdC5nZXQoKTsgfQorICAgIHZvaWQg
c2V0Qm91bmRGb3JtYXQoVk0mLCBKU0JvdW5kRnVuY3Rpb24qKTsKKworcHJvdGVjdGVkOgorICAg
IEludGxOdW1iZXJGb3JtYXQoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBXcml0ZUJh
cnJpZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2JvdW5kRm9ybWF0OworfTsKKyAgICAKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXROdW1iZXIoRXhl
Y1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwp
CisKKyNlbmRpZiAvLyBJbnRsTnVtYmVyRm9ybWF0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI4NjM5ZDZiMTRjNzAwN2E4NzEwMjU1NzdhYWUyZWQyOWZiY2QyZTEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IuaCIKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiRXJyb3IuaCIK
KyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJMb29r
dXAuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1
cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJ
QUxMWV9ERVNUUlVDVElCTEUoSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKTsKKworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
RnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAiSW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29u
c3QgQ2xhc3NJbmZvIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVu
Y3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmbnVtYmVyRm9ybWF0Q29uc3RydWN0b3JUYWJsZSwgQ1JF
QVRFX01FVEhPRF9UQUJMRShJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IpIH07CisKKy8qIFNv
dXJjZSBmb3IgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gbnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3JUYWJsZQorICBzdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAg
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZiAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCitJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IqIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIG51bWJlckZvcm1h
dFByb3RvdHlwZSwgU3RydWN0dXJlKiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUpCit7CisgICAgSW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+Zmlu
aXNoQ3JlYXRpb24odm0sIG51bWJlckZvcm1hdFByb3RvdHlwZSwgbnVtYmVyRm9ybWF0U3RydWN0
dXJlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvcjo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisK
K3ZvaWQgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIG51bWJlckZvcm1hdFByb3RvdHlwZSwgU3RydWN0
dXJlKiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0sIEFTQ0lJTGl0ZXJhbCgiTnVtYmVyRm9ybWF0IikpOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG51bWJlckZvcm1hdFBy
b3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDApLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgbV9udW1iZXJGb3Jt
YXRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUpOworfQorCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxOdW1iZXJGb3JtYXQoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIC8vIDExLjEuMiBJbnRsLk51bWJlckZvcm1hdCAoW2xvY2Fs
ZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIElmIE5ld1RhcmdldCBp
cyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3Qs
IGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCisgICAgSlNWYWx1ZSBuZXdUYXJnZXQg
PSBleGVjLT5uZXdUYXJnZXQoKTsKKyAgICBpZiAoIW5ld1RhcmdldCB8fCBuZXdUYXJnZXQuaXNV
bmRlZmluZWQoKSkKKyAgICAgICAgbmV3VGFyZ2V0ID0gZXhlYy0+Y2FsbGVlKCk7CisKKyAgICAv
LyAyLiBMZXQgbnVtYmVyRm9ybWF0IGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5l
d1RhcmdldCwgJU51bWJlckZvcm1hdFByb3RvdHlwZSUpLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0ID0gSW50bE51bWJlckZvcm1h
dDo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKj4oZXhlYy0+
Y2FsbGVlKCkpKTsKKyAgICBpZiAobnVtYmVyRm9ybWF0ICYmICFqc0R5bmFtaWNDYXN0PEludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KG5ld1RhcmdldCkpIHsKKyAgICAgICAgSlNWYWx1ZSBw
cm90byA9IGFzT2JqZWN0KG5ld1RhcmdldCktPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlKTsKKyAgICAgICAgYXNPYmplY3QobnVtYmVyRm9ybWF0KS0+c2V0UHJvdG90
eXBlV2l0aEN5Y2xlQ2hlY2soZXhlYywgcHJvdG8pOworICAgIH0KKworICAgIC8vIDMuIFJldHVy
bklmQWJydXB0KG51bWJlckZvcm1hdCkuCisgICAgQVNTRVJUKG51bWJlckZvcm1hdCk7CisKKyAg
ICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZU51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIGxvY2Fs
ZXMsIG9wdGlvbnMpLgorICAgIC8vIEZJWE1FOiByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEluaXRp
YWxpemVOdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKSk7CisKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdCk7Cit9CisKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxOdW1iZXJGb3JtYXQoRXhlY1N0YXRlKiBleGVjKQor
eworICAgIC8vIDExLjEuMiBJbnRsLk51bWJlckZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11d
KSAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxl
dCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1Rh
cmdldCBiZSBOZXdUYXJnZXQuCisgICAgLy8gTmV3VGFyZ2V0IGlzIGFsd2F5cyB1bmRlZmluZWQg
d2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlvbi4KKworICAgIC8vIDIuIExldCBudW1iZXJGb3JtYXQg
YmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAlTnVtYmVyRm9ybWF0
UHJvdG90eXBlJSkuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBJbnRsTnVtYmVyRm9y
bWF0KiBudW1iZXJGb3JtYXQgPSBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUodm0sIGpzQ2FzdDxJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSkpOworCisgICAgLy8g
My4gUmV0dXJuSWZBYnJ1cHQobnVtYmVyRm9ybWF0KS4KKyAgICBBU1NFUlQobnVtYmVyRm9ybWF0
KTsKKworICAgIC8vIDQuIFJldHVybiBJbml0aWFsaXplTnVtYmVyRm9ybWF0KG51bWJlckZvcm1h
dCwgbG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6IHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSW5pdGlhbGl6ZU51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMp
KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0KTsKK30KKworQ29u
c3RydWN0VHlwZSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEo
SlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3RE
YXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEludGxOdW1iZXJGb3JtYXQ7CisgICAgcmV0
dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCitDYWxsVHlwZSBJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKK3sKKyAg
ICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsSW50bE51bWJlckZvcm1hdDsKKyAgICBy
ZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitib29sIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
cjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJl
dHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgbnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3JUYWJsZSwganNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
cio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2Fs
ZXNPZihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTEuMi4yIEludGwuTnVtYmVyRm9ybWF0
LnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGVzIFssIG9wdGlvbnNdKSAoRUNNQS00MDIgMi4wKQor
CisgICAgLy8gMS4gTGV0IGF2YWlsYWJsZUxvY2FsZXMgYmUgJU51bWJlckZvcm1hdCUuW1thdmFp
bGFibGVMb2NhbGVzXV0uCisgICAgLy8gRklYTUU6IGF2YWlsYWJsZSA9IEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvcjo6Z2V0QXZhaWxhYmxlTG9jYWxlcygpCisKKyAgICAvLyAyLiBMZXQgcmVx
dWVzdGVkTG9jYWxlcyBiZSBDYW5vbmljYWxpemVMb2NhbGVMaXN0KGxvY2FsZXMpLgorICAgIC8v
IEZJWE1FOiByZXF1ZXN0ZWQgPSBDYW5vbmljYWxpemVMb2NhbGVMaXN0KGxvY2FsZXMpCisKKyAg
ICAvLyAzLiBSZXR1cm4gU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0
ZWRMb2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShTdXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJsZSwgcmVxdWVzdGVkLCBvcHRpb25zKSk7CisKKyAg
ICAvLyBSZXR1cm4gZW1wdHkgYXJyYXkgdW50aWwgcHJvcGVybHkgaW1wbGVtZW50ZWQuCisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
ZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworICAgIEpTQXJyYXkqIHN1cHBvcnRlZExv
Y2FsZXMgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhV
bmRlY2lkZWQpLCAwKTsKKyAgICBpZiAoIXN1cHBvcnRlZExvY2FsZXMpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcyk7Cit9CisKK3ZvaWQgSW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit7CisgICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KGNlbGwpOworICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKworICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUpOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iYjc1ZjEwMjE2NGNjZGYxMmNlNTNlNWM5NDhiNmNhMTE3OTk5YWYyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JfaAorI2RlZmluZSBJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3JfaAorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRl
ICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsTnVt
YmVyRm9ybWF0OworY2xhc3MgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTsKKworY2xhc3MgSW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVi
bGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGljIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAg
ICBTdHJ1Y3R1cmUqIG51bWJlckZvcm1hdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVt
YmVyRm9ybWF0U3RydWN0dXJlLmdldCgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSosIFN0cnVjdHVyZSopOwor
Citwcml2YXRlOgorICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVy
ZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwg
Q29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwq
LCBDYWxsRGF0YSYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworICAgIAorICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlOworfTsKKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KEV4ZWNT
dGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bE51bWJlckZvcm1h
dChFeGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5UTCkKKworI2VuZGlmIC8vIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhMzQ5MjI5NGVjMzgxNmI5MWJiMWMwMDRlMjM5Zjlm
ZWJiZGU0ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWls
LmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGUuaCIKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiRXJy
b3IuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1
bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0Nl
bGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJPYmplY3RDb25z
dHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChFeGVjU3RhdGUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVG
dW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xh
c3NJbmZvIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZJ
bnRsTnVtYmVyRm9ybWF0OjpzX2luZm8sICZudW1iZXJGb3JtYXRQcm90b3R5cGVUYWJsZSwgQ1JF
QVRFX01FVEhPRF9UQUJMRShJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKSB9OworCisvKiBTb3Vy
Y2UgZm9yIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBudW1iZXJGb3Jt
YXRQcm90b3R5cGVUYWJsZQorICBmb3JtYXQgICAgICAgICAgIEludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGVHZXR0ZXJGb3JtYXQgICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorICByZXNvbHZlZE9w
dGlvbnMgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zICBEb250
RW51bXxGdW5jdGlvbiAwCitAZW5kCisqLworCitJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUq
IG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGU+KHZtLmhlYXApKSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUp
OworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cnVjdHVyZSk7CisgICAgcmV0dXJu
IG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7Cit9CisKK0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OkludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGxOdW1iZXJG
b3JtYXQodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSopCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworfQorCitib29sIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4g
Z2V0U3RhdGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCBudW1iZXJGb3JtYXRQcm90b3R5
cGVUYWJsZSwganNDYXN0PEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqPihvYmplY3QpLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKiBleGVjKQoreworICAg
IC8vIDExLjMuMyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IChFQ01BLTQwMiAy
LjApCisgICAgLy8gMS4gTGV0IG5mIGJlIHRoaXMgTnVtYmVyRm9ybWF0IG9iamVjdC4KKyAgICBJ
bnRsTnVtYmVyRm9ybWF0KiBuZiA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KGV4
ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIW5mKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW50bC5OdW1iZXJGb3Jt
YXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3Qg
aW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiKSkpOworICAgIAorICAgIEpTQm91bmRGdW5j
dGlvbiogYm91bmRGb3JtYXQgPSBuZi0+Ym91bmRGb3JtYXQoKTsKKyAgICAvLyAyLiBJZiBuZi5b
W2JvdW5kRm9ybWF0XV0gaXMgdW5kZWZpbmVkLAorICAgIGlmICghYm91bmRGb3JtYXQpIHsKKyAg
ICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG5mLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBu
ZXcgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmluZWQgaW4gMTEuMy40LgorICAgICAg
ICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuCisgICAgICAg
IEpTRnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAxLCBBU0NJSUxpdGVyYWwoImZvcm1hdCIpLCBJbnRsTnVtYmVyRm9ybWF0RnVuY0Zv
cm1hdE51bWJlciwgTm9JbnRyaW5zaWMpOworICAgICAgICBKU0FycmF5KiBib3VuZEFyZ3MgPSBK
U0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQp
LCAwKTsKKyAgICAgICAgaWYgKCFib3VuZEFyZ3MpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7CisKKyAgICAgICAgLy8gYy4g
TGV0IGJmIGJlIEJvdW5kRnVuY3Rpb25DcmVhdGUoRiwgwqt0aGlzIHZhbHVlwrspLgorICAgICAg
ICBib3VuZEZvcm1hdCA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHRhcmdldE9iamVjdCwgbmYsIGJvdW5kQXJncywgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSk7
CisgICAgICAgIC8vIGQuIFNldCBuZi5bW2JvdW5kRm9ybWF0XV0gdG8gYmYuCisgICAgICAgIG5m
LT5zZXRCb3VuZEZvcm1hdCh2bSwgYm91bmRGb3JtYXQpOworICAgIH0KKyAgICAvLyAzLiBSZXR1
cm4gbmYuW1tib3VuZEZvcm1hdF1dLgorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYm91bmRG
b3JtYXQpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAv
LyAxMS4zLjUgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIChF
Q01BLTQwMiAyLjApCisgICAgSW50bE51bWJlckZvcm1hdCogbmYgPSBqc0R5bmFtaWNDYXN0PElu
dGxOdW1iZXJGb3JtYXQqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFuZikKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0
IikpKTsKKworICAgIC8vIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgbmV3IG9iamVjdCB3aG9zZSBw
cm9wZXJ0aWVzIGFuZCBhdHRyaWJ1dGVzIGFyZSBzZXQgYXMgaWYgY29uc3RydWN0ZWQgYnkgYW4g
b2JqZWN0IGxpdGVyYWwgYXNzaWduaW5nIHRvIGVhY2ggb2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0
aWVzIHRoZSB2YWx1ZSBvZiB0aGUgY29ycmVzcG9uZGluZyBpbnRlcm5hbCBzbG90IG9mIHRoaXMg
TnVtYmVyRm9ybWF0IG9iamVjdCAoc2VlIDExLjQpOiBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwg
c3R5bGUsIGN1cnJlbmN5LCBjdXJyZW5jeURpc3BsYXksIG1pbmltdW1JbnRlZ2VyRGlnaXRzLCBt
aW5pbXVtRnJhY3Rpb25EaWdpdHMsIG1heGltdW1GcmFjdGlvbkRpZ2l0cywgbWluaW11bVNpZ25p
ZmljYW50RGlnaXRzLCBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMsIGFuZCB1c2VHcm91cGluZy4g
UHJvcGVydGllcyB3aG9zZSBjb3JyZXNwb25kaW5nIGludGVybmFsIHNsb3RzIGFyZSBub3QgcHJl
c2VudCBhcmUgbm90IGFzc2lnbmVkLgorCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1
Y3RFbXB0eU9iamVjdChleGVjKTsKKworICAgIC8vIEZJWE1FOiBQb3B1bGF0ZSBvYmplY3QgZnJv
bSBpbnRlcm5hbCBzbG90cy4KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3B0aW9ucyk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhiYzA1MWZkZGI4ODUyYTlhOTVmOWYxN2Q5OGFlOGNi
Nzg1MjExNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29t
KQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVfaAorI2RlZmlu
ZSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlX2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5j
bHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlIDogcHVibGljIElu
dGxOdW1iZXJGb3JtYXQgeworcHVibGljOgorICAgIHR5cGVkZWYgSW50bE51bWJlckZvcm1hdCBC
YXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGlj
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVj
dGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBTdHJ1Y3R1cmUqKTsKKworcHJpdmF0
ZToKKyAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7CisgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5k
ZXggMTJkYTkzOGZhODEzYWUzMWYzNzU2ZGIwNGRmMDdmYmIwOTkyZGQwYy4uYmE0NTdlNzI1NjA5
MTA3ODkxMjJmNTEzNzVlZTlmZGMxMDI0ZDMyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTI4LDYgKzI4LDE2IEBACiAKICNpZiBFTkFCTEUo
SU5UTCkKIAorI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bENv
bGxhdG9yLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRl
ICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQu
aCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUg
IkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3Jt
YXQuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRl
ICJJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgog
I2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgpAQCAtNDgs
MTcgKzU4LDQzIEBAIEludGxPYmplY3Q6OkludGxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIHsKIH0KIAotSW50bE9iamVjdCogSW50bE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitJbnRsT2JqZWN0KiBJbnRsT2JqZWN0OjpjcmVhdGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
IHsKICAgICBJbnRsT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJ
bnRsT2JqZWN0Pih2bS5oZWFwKSkgSW50bE9iamVjdCh2bSwgc3RydWN0dXJlKTsKLSAgICBvYmpl
Y3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLXZvaWQgSW50bE9iamVjdDo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQordm9pZCBJbnRsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKworICAgIC8vIFNl
dCB1cCBDb2xsYXRvci4KKyAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIGNvbGxhdG9yUHJvdG90
eXBlID0gSW50bENvbGxhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSW50
bENvbGxhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgIFN0cnVjdHVyZSogY29sbGF0b3JT
dHJ1Y3R1cmUgPSBJbnRsQ29sbGF0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0
LCBjb2xsYXRvclByb3RvdHlwZSk7CisgICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IqIGNvbGxh
dG9yQ29uc3RydWN0b3IgPSBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGNvbGxhdG9yUHJvdG90eXBlLCBjb2xs
YXRvclN0cnVjdHVyZSk7CisKKyAgICBjb2xsYXRvclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBjb2xsYXRvckNv
bnN0cnVjdG9yLCBEb250RW51bSk7CisKKyAgICAvLyBTZXQgdXAgTnVtYmVyRm9ybWF0LgorICAg
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIG51bWJlckZvcm1hdFByb3RvdHlwZSA9IEludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgIFN0cnVjdHVyZSogbnVtYmVyRm9ybWF0
U3RydWN0dXJlID0gSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxP
YmplY3QsIG51bWJlckZvcm1hdFByb3RvdHlwZSk7CisgICAgSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yKiBudW1iZXJGb3JtYXRDb25zdHJ1Y3RvciA9IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkp
LCBudW1iZXJGb3JtYXRQcm90b3R5cGUsIG51bWJlckZvcm1hdFN0cnVjdHVyZSk7CisKKyAgICBu
dW1iZXJGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgbnVtYmVyRm9ybWF0Q29uc3RydWN0b3IsIERvbnRF
bnVtKTsKKworICAgIC8vIFNldCB1cCBEYXRlVGltZUZvcm1hdC4KKyAgICBJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUqIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlID0gSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgIFN0cnVjdHVyZSogZGF0ZVRpbWVGb3JtYXRTdHJ1
Y3R1cmUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IqIGRhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IgPSBJbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90
b3R5cGUoKSksIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlLCBkYXRlVGltZUZvcm1hdFN0cnVjdHVy
ZSk7CisKKyAgICBkYXRlVGltZUZvcm1hdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBkYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yLCBEb250RW51bSk7CisKKyAgICAvLyA4LjEgUHJvcGVydGllcyBvZiB0aGUgSW50
bCBPYmplY3QgKEVDTUEtNDAyIDIuMCkKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+Q29sbGF0b3IsIGNvbGxhdG9yQ29uc3RydWN0b3IsIERvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+TnVtYmVyRm9ybWF0LCBudW1iZXJGb3JtYXRDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5EYXRlVGlt
ZUZvcm1hdCwgZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogfQogCiBTdHJ1
Y3R1cmUqIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdC5oCmluZGV4IGY0NWI5YWI2NDkwMjI4ZWRlYTU3YWIyZTBiZTlj
MGI1YTg5ZTJmYzAuLjgzNDI4NTQyYjJkMGZiYzdlNWIxNDRhMzZiY2JiODZlZGZjYmJlODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKQEAgLTMyLDE4ICsz
MiwyNSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSW50bENvbGxhdG9yQ29uc3RydWN0
b3I7CitjbGFzcyBJbnRsQ29sbGF0b3JQcm90b3R5cGU7CitjbGFzcyBJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3RvcjsKK2NsYXNzIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTsKK2NsYXNz
IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvcjsKK2NsYXNzIEludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGU7CisKIGNsYXNzIEludGxPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKLSAgICBzdGF0aWMgSW50bE9iamVjdCogY3JlYXRl
KFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIEludGxPYmplY3QqIGNyZWF0ZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVf
SU5GTzsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIAogcHJpdmF0ZToKICAg
ICBJbnRsT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMjYxODNlZjllZmVhNDc5MTQ2MTE2
NWE5NjI5NWVjNDQ2YTkxNTkyZC4uNzEzY2RjMTU2YmJhYTUyYjBjYTY3OGUwYWM0OWQ2ODA0OTk1
NzE3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcApAQCAtNDMzLDcgKzQzMyw3IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmV2YWwsIG1f
ZXZhbEZ1bmN0aW9uLmdldCgpLCBEb250RW51bSk7CiAgICAgCiAjaWYgRU5BQkxFKElOVEwpCi0g
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkludGws
IEludGxPYmplY3Q6OmNyZWF0ZSh2bSwgSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkludGwsIEludGxPYmplY3Q6
OmNyZWF0ZSh2bSwgdGhpcywgSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSk7CiAjZW5kaWYgLy8gRU5BQkxFKElO
VEwpCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PkpTT04sIEpTT05PYmplY3Q6OmNyZWF0ZSh2bSwgSlNPTk9iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPk1hdGgsIE1hdGhP
YmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgTWF0aE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1Nv
dXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4
IGYwNGM5OWE5NmNiYTBlNzA0NjUwMmU3NGM5YjRmOGQ2NzM4ZDcwOWMuLjVlNWQxNjkzNDc3ZGI1
NmU0YmJhZDViZWNkYzZkMmNmNTI4ZGM4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0xMTYsNyArMTE2LDcg
QEAgRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMDAwID0gOwogRU5B
QkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMTAwID0gRU5BQkxFX1dJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFj
b3N4XzEwMTIwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiAKLUVOQUJMRV9J
TlRMID0gOworRU5BQkxFX0lOVEwgPSBFTkFCTEVfSU5UTDsKIAogRU5BQkxFX0lPU19HRVNUVVJF
X0VWRU5UU1tzZGs9aXBob25lKl0gPSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJ
VEhfSU5URVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFMX1NESykpOwogRU5BQkxFX0lPU19HRVNUVVJF
X0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfWUVTID0gRU5BQkxFX0lPU19HRVNUVVJFX0VW
RU5UUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZjA0Yzk5YTk2Y2JhMGU3MDQ2NTAyZTc0YzliNGY4
ZDY3MzhkNzA5Yy4uNWU1ZDE2OTM0NzdkYjU2ZTRiYmFkNWJlY2RjNmQyY2Y1MjhkYzhhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKQEAgLTExNiw3ICsxMTYsNyBAQCBFTkFCTEVfV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUX21hY29zeF8xMDEwMDAgPSA7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUX21hY29zeF8xMDExMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogRU5B
QkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gRU5BQkxFX1dJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVDsKIAotRU5BQkxFX0lOVEwgPSA7CitFTkFCTEVfSU5UTCA9IEVO
QUJMRV9JTlRMOwogCiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQo
RU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5U
RVJOQUxfU0RLKSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFM
X1NES19ZRVMgPSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2Uv
V2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBmMDRj
OTlhOTZjYmEwZTcwNDY1MDJlNzRjOWI0ZjhkNjczOGQ3MDljLi41ZTVkMTY5MzQ3N2RiNTZlNGJi
YWQ1YmVjZGM2ZDJjZjUyOGRjOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMTE2LDcgKzExNiw3IEBAIEVO
QUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTAwMCA9IDsKIEVOQUJMRV9X
SVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTEwMCA9IEVOQUJMRV9XSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQ7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8x
MDEyMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogCi1FTkFCTEVfSU5UTCA9
IDsKK0VOQUJMRV9JTlRMID0gRU5BQkxFX0lOVEw7CiAKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVO
VFNbc2RrPWlwaG9uZSpdID0gJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lO
VEVSTkFMX1NES18kKFVTRV9JTlRFUk5BTF9TREspKTsKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVO
VFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLX1lFUyA9IEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UgYi9Tb3VyY2Uv
Y21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKaW5kZXggMzMyMWU0YzFmYzRkMjRmNGYwY2VhZDRi
MWIzZjQ5MGFlMGQ1ZDMyMS4uMTI3YzBkZDA1NzM4YzQ1OTNjMTJmZDAzZDBjNjQ2NTMwYWFlYTU1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCisrKyBiL1Nv
dXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQpAQCAtOTgsNyArOTgsNyBAQCBtYWNybyhX
RUJLSVRfT1BUSU9OX0JFR0lOKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9JTlBV
VF9UWVBFX01PTlRIICJUb2dnbGUgbW9udGggdHlwZSA8aW5wdXQ+IHN1cHBvcnQiIFBSSVZBVEUg
T0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUgIlRv
Z2dsZSB0aW1lIHR5cGUgPGlucHV0PiBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRf
T1BUSU9OX0RFRklORShFTkFCTEVfSU5QVVRfVFlQRV9XRUVLICJUb2dnbGUgd2VlayB0eXBlIDxp
bnB1dD4gc3VwcG9ydCIgUFJJVkFURSBPRkYpCi0gICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5B
QkxFX0lOVEwgIlRvZ2dsZSBJbnRsIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQorICAgIFdFQktJVF9P
UFRJT05fREVGSU5FKEVOQUJMRV9JTlRMICJUb2dnbGUgSW50bCBzdXBwb3J0IiBQUklWQVRFIE9O
KQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9JT1NfQUlSUExBWSAiVG9nZ2xlIGlP
UyBhaXJwbGF5IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5F
KEVOQUJMRV9JT1NfVEVYVF9BVVRPU0laSU5HICJUb2dnbGUgaU9TIHRleHQgYXV0b3NpemluZyBz
dXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfSklU
ICJFbmFibGUgSnVzdEluVGltZSBqYXZhc2NyaXB0IHN1cHBvcnQiIFBSSVZBVEUgT04pCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjI5N2IwNGY5
MGQ1YmE3OTAzMDJlNzM4NDcyMGEyZDNhNjRmM2I4My4uMDc4YzM1ZmZjNjU0MmU3NDg4YThlMTlh
M2M0YTRlN2RhOWI2YjQ3ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTA3LTI4ICBBbmR5IFZhbldhZ29uZXIg
IDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHR5
cGVzIGZvciBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2OTI2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIGZsYWcgbm93IHRoYXQg
dGhlIGJhc2ljIG9iamVjdHMgYXJlIGluIHBsYWNlLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRwZXJsL0ZlYXR1cmVMaXN0LnBtOiBFbmFibGVkIElOVEwKKwogMjAxNS0wNy0yNyAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBOaW5q
YSBvbiBXaW5kb3dzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1
cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCmluZGV4
IGVmZTljODU1NzdiM2ZlMzMzYWU0MjRlM2FkNTg3YWIzNjU4NTFiYmUuLjdmZWQyMzkzZjViN2Ez
OGE3OWZmNmI0ODM4YjhhOWVkZjBjYTU3MTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cGVybC9GZWF0dXJlTGlzdC5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVh
dHVyZUxpc3QucG0KQEAgLTI4Nyw3ICsyODcsNyBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgICBk
ZWZpbmUgPT4gIkVOQUJMRV9JTlBVVF9UWVBFX1dFRUsiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+
IFwkaW5wdXRUeXBlV2Vla1N1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJpbnRsIiwgZGVz
YyA9PiAiVG9nZ2xlIEludGwgc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlRM
IiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGludGxTdXBwb3J0IH0sCisgICAgICBkZWZpbmUg
PT4gIkVOQUJMRV9JTlRMIiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9PiBcJGludGxTdXBwb3J0IH0s
CiAKICAgICB7IG9wdGlvbiA9PiAibGVnYWN5LW5vdGlmaWNhdGlvbnMiLCBkZXNjID0+ICJUb2dn
bGUgTGVnYWN5IE5vdGlmaWNhdGlvbnMgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJM
RV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRsZWdhY3lO
b3RpZmljYXRpb25zU3VwcG9ydCB9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI3YmY1M2Q2MjVlNmMwMTViYmEwYzhlZTMw
NzZlMWVmODI2YWE1ODkuLjNhMjI4ZDhhMDU2ZTcwY2QzNjRjOTQyMDU4MGNlZWZhNDM1NWU4MTYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNS0wNy0yOCAgQW5keSBWYW5XYWdvbmVyICA8dGhl
dGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNpYyB0eXBlcyBm
b3IgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjkyNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgSW50bC5Db2xsYXRv
ciwgSW50bC5OdW1iZXJGb3JtYXQsIGFuZCBJbnRsLkRhdGVUaW1lRm9ybWF0CisKKyAgICAgICAg
KiBUZXN0RXhwZWN0YXRpb25zOiBFbmFibGVkIGludGwgdGVzdHMuCisgICAgICAgICoganMvaW50
bC1jb2xsYXRvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2ludGwtY29sbGF0
b3IuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvaW50bC1kYXRldGltZWZvcm1hdC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2ludGwtZGF0ZXRpbWVmb3JtYXQuaHRtbDogQWRk
ZWQuCisgICAgICAgICoganMvaW50bC1leHBlY3RlZC50eHQ6IFVwZGF0ZWQuCisgICAgICAgICog
anMvaW50bC1udW1iZXJmb3JtYXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9p
bnRsLW51bWJlcmZvcm1hdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMv
aW50bC1jb2xsYXRvci5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2ludGwt
ZGF0ZXRpbWVmb3JtYXQuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9pbnRs
LW51bWJlcmZvcm1hdC5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2ludGwu
anM6IEFkZGVkIHRlc3RzIGZvciBDb2xsYXRvciwgTnVtYmVyRm9ybWF0LCBhbmQgRGF0ZVRpbWVG
b3JtYXQuCisKIDIwMTUtMDctMjcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CiAKICAgICAgICAgU3BhcnNlVmFsdWVNYXAgY2hlY2sgaXMgc2tpcHBlZCB3aGVuIHRoZSBi
dXR0ZXJmbHkncyB2ZWN0b3JMZW5ndGggaXMgbGFyZ2VyIHRoYW4gdGhlIGFjY2Vzcy1yZXF1ZXN0
ZWQgaW5kZXgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGE5YzczZTkwNDI0MjhmNTllOTQ0MGNhZTI2
YTc0MmMwM2ZhODU3M2IuLjE4NTJkZTE4ZWVkMDViNTYxNzBkMTQ1YzlmNDRiZjY2YTMwYjQyMTYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTMwLDYgKzUzMCwzIEBAIHdlYmtpdC5vcmcvYi8xNDYx
ODIgZWRpdGluZy9zZWxlY3Rpb24vbGVhay1kb2N1bWVudC13aXRoLXNlbGVjdGlvbi1pbnNpZGUu
aHRtbCBbCiAKIHdlYmtpdC5vcmcvYi8xNDY0MzQgZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC9z
aXplcyBbIFNraXAgXQogCi0jIEludGwgaXMgbm90IGVuYWJsZWQgeWV0Ci1qcy9pbnRsLmh0bWwg
WyBTa2lwIF0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvaW50bC1jb2xsYXRvci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWNvbGxhdG9yLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mYWNlNDk5NjBhYzI4ZWM2MGE4ODlkYmVhYTRlZjhhNWY5MTQyYzlkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvaW50bC1jb2xsYXRvci1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw0NyBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGUgYmVoYXZpb3Igb2YgSW50bC5Db2xs
YXRvciBhcyBkZXNjcmliZWQgaW4gdGhlIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24g
QVBJIFNwZWNpZmljYXRpb24gKEVDTUEtNDAyIDIuMCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIEludGwuQ29sbGF0b3IgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24K
K1BBU1MgSW50bC5Db2xsYXRvcigpIGlzIGFuIGluc3RhbmNlIG9mIEludGwuQ29sbGF0b3IKK1BB
U1MgSW50bC5Db2xsYXRvci5jYWxsKHt9KSBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLkNvbGxhdG9y
CitQQVNTIG5ldyBJbnRsLkNvbGxhdG9yKCkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5Db2xsYXRv
cgorUEFTUyBuZXcgRGVyaXZlZENvbGxhdG9yIGlzIGFuIGluc3RhbmNlIG9mIERlcml2ZWRDb2xs
YXRvcgorUEFTUyBuZXcgRGVyaXZlZENvbGxhdG9yIGlzIGFuIGluc3RhbmNlIG9mIEludGwuQ29s
bGF0b3IKK1BBU1MgbmV3IERlcml2ZWRDb2xsYXRvcigpLmNvbXBhcmUoJ2EnLCAnYicpIGlzIC0x
CitQQVNTIE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgRGVyaXZlZENvbGxhdG9yKSBpcyBEZXJp
dmVkQ29sbGF0b3IucHJvdG90eXBlCitQQVNTIE9iamVjdC5nZXRQcm90b3R5cGVPZihPYmplY3Qu
Z2V0UHJvdG90eXBlT2YobmV3IERlcml2ZWRDb2xsYXRvcikpIGlzIEludGwuQ29sbGF0b3IucHJv
dG90eXBlCitQQVNTIEludGwuQ29sbGF0b3IubGVuZ3RoIGlzIDAKK1BBU1MgT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLCAncHJvdG90eXBlJykud3JpdGFibGUg
aXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxh
dG9yLCAncHJvdG90eXBlJykuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IsICdwcm90b3R5cGUnKS5jb25maWd1cmFi
bGUgaXMgZmFsc2UKK1BBU1MgSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRMb2NhbGVzT2YubGVuZ3Ro
IGlzIDEKK1BBU1MgSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRMb2NhbGVzT2YoKSBpcyBhbiBpbnN0
YW5jZSBvZiBBcnJheQorUEFTUyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBp
cyBJbnRsLkNvbGxhdG9yCitQQVNTIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUgaXMg
YW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSwgJ2NvbXBhcmUnKS5nZXQgaXMgYW4gaW5zdGFu
Y2Ugb2YgRnVuY3Rpb24KK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRs
LkNvbGxhdG9yLnByb3RvdHlwZSwgJ2NvbXBhcmUnKS5zZXQgaXMgdW5kZWZpbmVkCitQQVNTIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvci5wcm90b3R5cGUsICdj
b21wYXJlJykuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEludGwuQ29sbGF0b3IucHJvdG90eXBlLCAnY29tcGFyZScpLmNvbmZpZ3VyYWJs
ZSBpcyB0cnVlCitQQVNTIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUubGVuZ3RoIGlz
IDIKK1BBU1MgT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnY29tcGFyZScsIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvci5wcm90b3R5cGUsICdjb21wYXJlJykp
LmNvbXBhcmUgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogSW50bC5Db2xsYXRvci5wcm90b3R5
cGUuY29tcGFyZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6
ZWQgYXMgYSBDb2xsYXRvci4KK1BBU1MgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSAh
PT0gSW50bC5Db2xsYXRvcigpLmNvbXBhcmUgaXMgdHJ1ZQorUEFTUyBuZXcgSW50bC5Db2xsYXRv
cigpLmNvbXBhcmUgIT09IG5ldyBJbnRsLkNvbGxhdG9yKCkuY29tcGFyZSBpcyB0cnVlCitQQVNT
IEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUoeyB0b1N0cmluZygpIHsgdGhyb3cgRXJy
b3IoJzYnKSB9IH0sIHsgdG9TdHJpbmcoKSB7ICsrYmFkQ2FsbHM7IHJldHVybiAnJzsgfSB9KSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IDYuCitQQVNTIGJhZENhbGxzIGlzIDAKK1BBU1MgSW50bC5D
b2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSgnYScsIHsgdG9TdHJpbmcoKSB7IHRocm93IEVycm9y
KCc4JykgfSB9KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IDguCitQQVNTIEludGwuQ29sbGF0b3Iu
cHJvdG90eXBlLmNvbXBhcmUuY2FsbChudWxsLCAnYScsICdiJykgaXMgLTEKK1BBU1MgSW50bC5D
b2xsYXRvci5wcm90b3R5cGUuY29tcGFyZS5jYWxsKEludGwuQ29sbGF0b3IoJ2VuJywgeyBzZW5z
aXRpdml0eTonYmFzZScgfSksICdBJywgJ2EnKSBpcyAtMQorUEFTUyBJbnRsLkNvbGxhdG9yLnBy
b3RvdHlwZS5jb21wYXJlLmNhbGwoNSwgJ2EnLCAnYicpIGlzIC0xCitQQVNTIG5ldyBJbnRsLkNv
bGxhdG9yKCkuY29tcGFyZS5jYWxsKG51bGwsICdhJywgJ2InKSBpcyAtMQorUEFTUyBuZXcgSW50
bC5Db2xsYXRvcigpLmNvbXBhcmUuY2FsbChJbnRsLkNvbGxhdG9yKCdlbicsIHsgc2Vuc2l0aXZp
dHk6J2Jhc2UnIH0pLCAnQScsICdhJykgaXMgLTEKK1BBU1MgbmV3IEludGwuQ29sbGF0b3IoKS5j
b21wYXJlLmNhbGwoNSwgJ2EnLCAnYicpIGlzIC0xCitQQVNTIEludGwuQ29sbGF0b3IucHJvdG90
eXBlLnJlc29sdmVkT3B0aW9ucy5sZW5ndGggaXMgMAorUEFTUyBJbnRsLkNvbGxhdG9yLnByb3Rv
dHlwZS5yZXNvbHZlZE9wdGlvbnMoKSBpcyBhbiBpbnN0YW5jZSBvZiBPYmplY3QKK1BBU1MgSW50
bC5Db2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgPT09IEludGwuQ29sbGF0b3Iu
cHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIGlzIGZhbHNlCitQQVNTIEludGwuQ29sbGF0b3Iu
cHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5jYWxsKDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IEludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvci4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9pbnRsLWNvbGxhdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9pbnRs
LWNvbGxhdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGU2Yzg3ZGNmMGRhODE3MTk0MjQ4ZTg1NTY3NGNj
ODQ2OTk4OThkYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2ludGwtY29sbGF0
b3IuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvaW50bC1jb2xsYXRvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9pbnRsLWRhdGV0aW1lZm9ybWF0LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2pzL2ludGwtZGF0ZXRpbWVmb3JtYXQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI5Nzc2ZjVkYmM2MzIzOGVjMGYyYjgyZDJjODg0NzM2ZmExZmQwZDQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWRhdGV0aW1lZm9ybWF0LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDQ2IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoZSBiZWhhdmlvciBvZiBJ
bnRsLkRhdGVUaW1lRm9ybWF0IGFzIGRlc2NyaWJlZCBpbiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5h
dGlvbmFsaXphdGlvbiBBUEkgU3BlY2lmaWNhdGlvbiAoRUNNQS00MDIgMi4wKS4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdCBpcyBhbiBp
bnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkgaXMgYW4gaW5z
dGFuY2Ugb2YgSW50bC5EYXRlVGltZUZvcm1hdAorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0LmNh
bGwoe30pIGlzIGFuIGluc3RhbmNlIG9mIEludGwuRGF0ZVRpbWVGb3JtYXQKK1BBU1MgbmV3IElu
dGwuRGF0ZVRpbWVGb3JtYXQoKSBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLkRhdGVUaW1lRm9ybWF0
CitQQVNTIG5ldyBEZXJpdmVkRGF0ZVRpbWVGb3JtYXQgaXMgYW4gaW5zdGFuY2Ugb2YgRGVyaXZl
ZERhdGVUaW1lRm9ybWF0CitQQVNTIG5ldyBEZXJpdmVkRGF0ZVRpbWVGb3JtYXQgaXMgYW4gaW5z
dGFuY2Ugb2YgSW50bC5EYXRlVGltZUZvcm1hdAorUEFTUyBuZXcgRGVyaXZlZERhdGVUaW1lRm9y
bWF0KCkuZm9ybWF0KDApLmxlbmd0aCA+IDAgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0UHJvdG90
eXBlT2YobmV3IERlcml2ZWREYXRlVGltZUZvcm1hdCkgaXMgRGVyaXZlZERhdGVUaW1lRm9ybWF0
LnByb3RvdHlwZQorUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2YoT2JqZWN0LmdldFByb3RvdHlw
ZU9mKG5ldyBEZXJpdmVkRGF0ZVRpbWVGb3JtYXQpKSBpcyBJbnRsLkRhdGVUaW1lRm9ybWF0LnBy
b3RvdHlwZQorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0Lmxlbmd0aCBpcyAwCitQQVNTIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdCwgJ3Byb3RvdHlw
ZScpLndyaXRhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSW50bC5EYXRlVGltZUZvcm1hdCwgJ3Byb3RvdHlwZScpLmVudW1lcmFibGUgaXMgZmFsc2UK
K1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0
LCAncHJvdG90eXBlJykuY29uZmlndXJhYmxlIGlzIGZhbHNlCitQQVNTIEludGwuRGF0ZVRpbWVG
b3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mLmxlbmd0aCBpcyAxCitQQVNTIEludGwuRGF0ZVRpbWVG
b3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCkgaXMgYW4gaW5zdGFuY2Ugb2YgQXJyYXkKK1BBU1Mg
SW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgSW50bC5EYXRlVGlt
ZUZvcm1hdAorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgaXMgYW4g
aW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmdldCBpcyBhbiBpbnN0
YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKElu
dGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0Jykuc2V0IGlzIHVuZGVmaW5lZAor
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQu
cHJvdG90eXBlLCAnZm9ybWF0JykuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLCAnZm9y
bWF0JykuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90
b3R5cGUuZm9ybWF0Lmxlbmd0aCBpcyAxCitQQVNTIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwg
J2Zvcm1hdCcsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZv
cm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKSkuZm9ybWF0IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdC4KK1BB
U1MgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0ICE9PSBJbnRsLkRhdGVUaW1l
Rm9ybWF0KCkuZm9ybWF0IGlzIHRydWUKK1BBU1MgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5m
b3JtYXQgIT09IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0IGlzIHRydWUKK1BBU1Mg
SW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0KHsgdmFsdWVPZigpIHsgdGhyb3cg
RXJyb3IoJzRiJykgfSB9KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IDRiLgorUEFTUyBJbnRsLkRh
dGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQoSW5maW5pdHkpIHRocmV3IGV4Y2VwdGlvbiBS
YW5nZUVycm9yOiBkYXRlIHZhbHVlIGlzIG5vdCBmaW5pdGUgaW4gRGF0ZVRpbWVGb3JtYXQuZm9y
bWF0KCkuCitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5jYWxsKG51
bGwsIDApIGlzIEludGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQoMCkKK1BBU1MgSW50bC5EYXRl
VGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0LmNhbGwoSW50bC5EYXRlVGltZUZvcm1hdCgnYXIn
KSwgMCkgaXMgSW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdCgwKQorUEFTUyBJbnRsLkRhdGVU
aW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQuY2FsbCg1LCAwKSBpcyBJbnRsLkRhdGVUaW1lRm9y
bWF0KCkuZm9ybWF0KDApCitQQVNTIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0LmNh
bGwobnVsbCwgMCkgaXMgSW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdCgwKQorUEFTUyBuZXcg
SW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdC5jYWxsKEludGwuRGF0ZVRpbWVGb3JtYXQoJ2Fy
JyksIDApIGlzIEludGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQoMCkKK1BBU1MgbmV3IEludGwu
RGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQuY2FsbCg1LCAwKSBpcyBJbnRsLkRhdGVUaW1lRm9ybWF0
KCkuZm9ybWF0KDApCitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVk
T3B0aW9ucy5sZW5ndGggaXMgMAorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMoKSBpcyBhbiBpbnN0YW5jZSBvZiBPYmplY3QKK1BBU1MgSW50bC5EYXRl
VGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgPT09IEludGwuRGF0ZVRpbWVG
b3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIGlzIGZhbHNlCitQQVNTIEludGwuRGF0
ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5jYWxsKDUpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0
aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMg
YSBEYXRlVGltZUZvcm1hdC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9pbnRsLWRhdGV0aW1lZm9y
bWF0Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWRhdGV0aW1lZm9ybWF0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMmE1OGZjZjUwNDkxOGYwMDk0MDhhMmMyOWY4ZTMzNjc1OWRlZTkzMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2ludGwtZGF0ZXRpbWVmb3JtYXQuaHRtbApAQCAtMCww
ICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMv
aW50bC1kYXRldGltZWZvcm1hdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9pbnRsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2lu
dGwtZXhwZWN0ZWQudHh0CmluZGV4IGIyNmFmODYzMzY1MWIxNDBjOGYxMGI4OTdhOTA4ZjBjYThj
YWE5ZDYuLmFjNGIwNDQ4NjFmMDFkNWQzNmY3ZDRhM2Y3NjM3ZWVlNzZhZTc2MTEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2pzL2ludGwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pz
L2ludGwtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotVGhpcyB0ZXN0IGNoZWNrcyB0aGUg
YmVoYXZpb3Igb2YgdGhlIEludGwgb2JqZWN0IGFzIGRlc2NyaWJlZCBpbiA4IG9mIHRoZSBFQ01B
U2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSSBTcGVjaWZpY2F0aW9uLgorVGhpcyB0ZXN0
IGNoZWNrcyB0aGUgYmVoYXZpb3Igb2YgdGhlIEludGwgb2JqZWN0IGFzIGRlc2NyaWJlZCBpbiB0
aGUgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkgU3BlY2lmaWNhdGlvbiAoRUNN
QS00MDIgMi4wKS4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCkBAIC05LDYgKzksNyBA
QCBQQVNTIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChJbnRsKSBpcyAnW29iamVjdCBP
YmplY3RdJwogUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2YoSW50bCkgPT09IE9iamVjdC5wcm90
b3R5cGUgaXMgdHJ1ZQogUEFTUyBuZXcgSW50bCB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBP
YmplY3QgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBJbnRsJykuCiBQQVNT
IEludGwoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBJbnRsIGlzIG5vdCBhIGZ1bmN0aW9u
LiAoSW4gJ0ludGwoKScsICdJbnRsJyBpcyBhbiBpbnN0YW5jZSBvZiBPYmplY3QpLgorUEFTUyBP
YmplY3Qua2V5cyhJbnRsKS5sZW5ndGggaXMgMAogUEFTUyBkZWxldGUgSW50bDsgaXMgdHJ1ZQog
UEFTUyAnSW50bCcgaW4gZ2xvYmFsKCkgaXMgZmFsc2UKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2ludGwtbnVtYmVyZm9ybWF0LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2ludGwtbnVtYmVyZm9ybWF0LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40NmRlMDEyMWJmYzMyOWI0NmU2OGNhOGEzOGQ4ODZiMjIyYWM5MWRkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvaW50bC1udW1iZXJmb3JtYXQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNDUgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9m
IEludGwuTnVtYmVyRm9ybWF0IGFzIGRlc2NyaWJlZCBpbiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5h
dGlvbmFsaXphdGlvbiBBUEkgU3BlY2lmaWNhdGlvbiAoRUNNQS00MDIgMi4wKS4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQgaXMgYW4gaW5z
dGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQoKSBpcyBhbiBpbnN0YW5j
ZSBvZiBJbnRsLk51bWJlckZvcm1hdAorUEFTUyBJbnRsLk51bWJlckZvcm1hdC5jYWxsKHt9KSBp
cyBhbiBpbnN0YW5jZSBvZiBJbnRsLk51bWJlckZvcm1hdAorUEFTUyBuZXcgSW50bC5OdW1iZXJG
b3JtYXQoKSBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLk51bWJlckZvcm1hdAorUEFTUyBuZXcgRGVy
aXZlZE51bWJlckZvcm1hdCBpcyBhbiBpbnN0YW5jZSBvZiBEZXJpdmVkTnVtYmVyRm9ybWF0CitQ
QVNTIG5ldyBEZXJpdmVkTnVtYmVyRm9ybWF0IGlzIGFuIGluc3RhbmNlIG9mIEludGwuTnVtYmVy
Rm9ybWF0CitQQVNTIG5ldyBEZXJpdmVkTnVtYmVyRm9ybWF0KCkuZm9ybWF0KDEpIGlzICcxJwor
UEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERlcml2ZWROdW1iZXJGb3JtYXQpIGlzIERl
cml2ZWROdW1iZXJGb3JtYXQucHJvdG90eXBlCitQQVNTIE9iamVjdC5nZXRQcm90b3R5cGVPZihP
YmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERlcml2ZWROdW1iZXJGb3JtYXQpKSBpcyBJbnRsLk51
bWJlckZvcm1hdC5wcm90b3R5cGUKK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQubGVuZ3RoIGlzIDAK
K1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdCwg
J3Byb3RvdHlwZScpLndyaXRhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQsICdwcm90b3R5cGUnKS5lbnVtZXJhYmxlIGlz
IGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJG
b3JtYXQsICdwcm90b3R5cGUnKS5jb25maWd1cmFibGUgaXMgZmFsc2UKK1BBU1MgSW50bC5OdW1i
ZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mLmxlbmd0aCBpcyAxCitQQVNTIEludGwuTnVtYmVy
Rm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZigpIGlzIGFuIGluc3RhbmNlIG9mIEFycmF5CitQQVNT
IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyBJbnRsLk51bWJlckZv
cm1hdAorUEFTUyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGlzIGFuIGluc3Rh
bmNlIG9mIEZ1bmN0aW9uCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50
bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykuZ2V0IGlzIGFuIGluc3RhbmNlIG9m
IEZ1bmN0aW9uCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1i
ZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0Jykuc2V0IGlzIHVuZGVmaW5lZAorUEFTUyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSwg
J2Zvcm1hdCcpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5jb25maWd1
cmFibGUgaXMgdHJ1ZQorUEFTUyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0Lmxl
bmd0aCBpcyAxCitQQVNTIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2Zvcm1hdCcsIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCAn
Zm9ybWF0JykpLmZvcm1hdCB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBJbnRsLk51bWJlckZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVj
dCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdC4KK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQu
cHJvdG90eXBlLmZvcm1hdCAhPT0gSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQgaXMgdHJ1ZQor
UEFTUyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQgIT09IG5ldyBJbnRsLk51bWJlckZv
cm1hdCgpLmZvcm1hdCBpcyB0cnVlCitQQVNTIEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5m
b3JtYXQoeyB2YWx1ZU9mKCkgeyB0aHJvdyBFcnJvcignNScpIH0gfSkgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiA1LgorUEFTUyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0LmNhbGwo
bnVsbCwgMS4yKSBpcyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdCgxLjIpCitQQVNTIEludGwu
TnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQuY2FsbChJbnRsLkRhdGVUaW1lRm9ybWF0KCdh
cicpLCAxLjIpIGlzIEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KDEuMikKK1BBU1MgSW50bC5O
dW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5jYWxsKDUsIDEuMikgaXMgSW50bC5OdW1iZXJG
b3JtYXQoKS5mb3JtYXQoMS4yKQorUEFTUyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQu
Y2FsbChudWxsLCAxLjIpIGlzIEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KDEuMikKK1BBU1Mg
bmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0LmNhbGwoSW50bC5EYXRlVGltZUZvcm1hdCgn
YXInKSwgMS4yKSBpcyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdCgxLjIpCitQQVNTIG5ldyBJ
bnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdC5jYWxsKDUsIDEuMikgaXMgSW50bC5OdW1iZXJGb3Jt
YXQoKS5mb3JtYXQoMS4yKQorUEFTUyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2
ZWRPcHRpb25zLmxlbmd0aCBpcyAwCitQQVNTIEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMoKSBpcyBhbiBpbnN0YW5jZSBvZiBPYmplY3QKK1BBU1MgSW50bC5OdW1i
ZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpID09PSBJbnRsLk51bWJlckZvcm1h
dC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgaXMgZmFsc2UKK1BBU1MgSW50bC5OdW1iZXJG
b3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5jYWxsKDUpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVy
Rm9ybWF0LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2ludGwtbnVtYmVyZm9ybWF0Lmh0bWwgYi9M
YXlvdXRUZXN0cy9qcy9pbnRsLW51bWJlcmZvcm1hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzOGUyMGYy
ZjI5YWE3YTU3YjNkODk4YWNkYWNiZTRiYTljYzU3ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9pbnRsLW51bWJlcmZvcm1hdC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9pbnRsLW51bWJlcmZvcm1h
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvaW50bC1jb2xsYXRvci5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9pbnRsLWNvbGxhdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjNjNiZDYyMGMwODNhZTc1YmQwYjYx
N2MxY2I4M2Y5MzllMmQwZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvaW50bC1jb2xsYXRvci5qcwpAQCAtMCwwICsxLDEwOSBAQAorZGVzY3JpcHRpb24o
IlRoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIEludGwuQ29sbGF0b3IgYXMgZGVzY3Jp
YmVkIGluIHRoZSBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSSBTcGVjaWZpY2F0
aW9uIChFQ01BLTQwMiAyLjApLiIpOworCisvLyAxMC4xIFRoZSBJbnRsLkNvbGxhdG9yIENvbnN0
cnVjdG9yCisKKy8vIFRoZSBJbnRsLkNvbGxhdG9yIGNvbnN0cnVjdG9yIGlzIGEgc3RhbmRhcmQg
YnVpbHQtaW4gcHJvcGVydHkgb2YgdGhlIEludGwgb2JqZWN0Lgorc2hvdWxkQmVUeXBlKCJJbnRs
LkNvbGxhdG9yIiwgIkZ1bmN0aW9uIik7CisKKy8vIDEwLjEuMiBJbnRsLkNvbGxhdG9yKFsgbG9j
YWxlcyBbLCBvcHRpb25zXV0pCitzaG91bGRCZVR5cGUoIkludGwuQ29sbGF0b3IoKSIsICJJbnRs
LkNvbGxhdG9yIik7CitzaG91bGRCZVR5cGUoIkludGwuQ29sbGF0b3IuY2FsbCh7fSkiLCAiSW50
bC5Db2xsYXRvciIpOworc2hvdWxkQmVUeXBlKCJuZXcgSW50bC5Db2xsYXRvcigpIiwgIkludGwu
Q29sbGF0b3IiKTsKKworLy8gU3ViY2xhc3NhYmxlCitjbGFzcyBEZXJpdmVkQ29sbGF0b3IgZXh0
ZW5kcyBJbnRsLkNvbGxhdG9yIHt9CitzaG91bGRCZVR5cGUoIm5ldyBEZXJpdmVkQ29sbGF0b3Ii
LCAiRGVyaXZlZENvbGxhdG9yIik7CitzaG91bGRCZVR5cGUoIm5ldyBEZXJpdmVkQ29sbGF0b3Ii
LCAiSW50bC5Db2xsYXRvciIpOworc2hvdWxkQmUoIm5ldyBEZXJpdmVkQ29sbGF0b3IoKS5jb21w
YXJlKCdhJywgJ2InKSIsICItMSIpOworc2hvdWxkQmUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihu
ZXcgRGVyaXZlZENvbGxhdG9yKSIsICJEZXJpdmVkQ29sbGF0b3IucHJvdG90eXBlIik7CitzaG91
bGRCZSgiT2JqZWN0LmdldFByb3RvdHlwZU9mKE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgRGVy
aXZlZENvbGxhdG9yKSkiLCAiSW50bC5Db2xsYXRvci5wcm90b3R5cGUiKTsKKworLy8gMTAuMiBQ
cm9wZXJ0aWVzIG9mIHRoZSBJbnRsLkNvbGxhdG9yIENvbnN0cnVjdG9yCisKKy8vIGxlbmd0aCBw
cm9wZXJ0eSAod2hvc2UgdmFsdWUgaXMgMCkKK3Nob3VsZEJlKCJJbnRsLkNvbGxhdG9yLmxlbmd0
aCIsICIwIik7CisKKy8vIDEwLjIuMSBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZQorCisvLyBUaGlz
IHByb3BlcnR5IGhhcyB0aGUgYXR0cmlidXRlcyB7IFtbV3JpdGFibGVdXTogZmFsc2UsIFtbRW51
bWVyYWJsZV1dOiBmYWxzZSwgW1tDb25maWd1cmFibGVdXTogZmFsc2UgfS4KK3Nob3VsZEJlRmFs
c2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvciwgJ3Byb3Rv
dHlwZScpLndyaXRhYmxlIik7CitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEludGwuQ29sbGF0b3IsICdwcm90b3R5cGUnKS5lbnVtZXJhYmxlIik7CitzaG91
bGRCZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3Is
ICdwcm90b3R5cGUnKS5jb25maWd1cmFibGUiKTsKKworLy8gMTAuMi4yIEludGwuQ29sbGF0b3Iu
c3VwcG9ydGVkTG9jYWxlc09mIChsb2NhbGVzIFssIG9wdGlvbnMgXSkKKworLy8gVGhlIHZhbHVl
IG9mIHRoZSBsZW5ndGggcHJvcGVydHkgb2YgdGhlIHN1cHBvcnRlZExvY2FsZXNPZiBtZXRob2Qg
aXMgMS4KK3Nob3VsZEJlKCJJbnRsLkNvbGxhdG9yLnN1cHBvcnRlZExvY2FsZXNPZi5sZW5ndGgi
LCAiMSIpOworCisvLyBSZXR1cm5zIFN1cHBvcnRlZExvY2FsZXMKK3Nob3VsZEJlVHlwZSgiSW50
bC5Db2xsYXRvci5zdXBwb3J0ZWRMb2NhbGVzT2YoKSIsICJBcnJheSIpOworCisvLyAxMC4zIFBy
b3BlcnRpZXMgb2YgdGhlIEludGwuQ29sbGF0b3IgUHJvdG90eXBlIE9iamVjdAorCisvLyBUaGUg
dmFsdWUgb2YgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgJUNvbGxhdG9y
JS4KK3Nob3VsZEJlKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciIsICJJbnRs
LkNvbGxhdG9yIik7CisKKy8vIDEwLjMuMyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJl
CisKKy8vIFRoaXMgbmFtZWQgYWNjZXNzb3IgcHJvcGVydHkgcmV0dXJucyBhIGZ1bmN0aW9uIHRo
YXQgY29tcGFyZXMgdHdvIHN0cmluZ3MgYWNjb3JkaW5nIHRvIHRoZSBzb3J0IG9yZGVyIG9mIHRo
aXMgQ29sbGF0b3Igb2JqZWN0Lgorc2hvdWxkQmVUeXBlKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlw
ZS5jb21wYXJlIiwgIkZ1bmN0aW9uIik7CisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUgW1tHZXRdXSBh
dHRyaWJ1dGUgaXMgYSBmdW5jdGlvbgorc2hvdWxkQmVUeXBlKCJPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IucHJvdG90eXBlLCAnY29tcGFyZScpLmdldCIsICJG
dW5jdGlvbiIpOworCisvLyBUaGUgdmFsdWUgb2YgdGhlIFtbU2V0XV0gYXR0cmlidXRlIGlzIHVu
ZGVmaW5lZC4KK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwu
Q29sbGF0b3IucHJvdG90eXBlLCAnY29tcGFyZScpLnNldCIsICJ1bmRlZmluZWQiKTsKKworLy8g
TWF0Y2ggRmlyZWZveCB3aGVyZSB1bnNwZWNpZmVkLgorc2hvdWxkQmVGYWxzZSgiT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSwgJ2NvbXBhcmUn
KS5lbnVtZXJhYmxlIik7CitzaG91bGRCZVRydWUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSW50bC5Db2xsYXRvci5wcm90b3R5cGUsICdjb21wYXJlJykuY29uZmlndXJhYmxlIik7
CisKKy8vIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVydHkgaXMgMi4KK3Nob3VsZEJl
KCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlLmxlbmd0aCIsICIyIik7CisKKy8vIFRo
cm93cyBvbiBub24tQ29sbGF0b3IgdGhpcy4KK3Nob3VsZFRocm93KCJPYmplY3QuZGVmaW5lUHJv
cGVydHkoe30sICdjb21wYXJlJywgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRs
LkNvbGxhdG9yLnByb3RvdHlwZSwgJ2NvbXBhcmUnKSkuY29tcGFyZSIsICInVHlwZUVycm9yOiBJ
bnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0XFwncyBu
b3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ29sbGF0b3InIik7CisKKy8vIFRoZSBjb21w
YXJlIGZ1bmN0aW9uIGlzIHVuaXF1ZSBwZXIgaW5zdGFuY2UuCitzaG91bGRCZVRydWUoIkludGwu
Q29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUgIT09IEludGwuQ29sbGF0b3IoKS5jb21wYXJlIik7
CitzaG91bGRCZVRydWUoIm5ldyBJbnRsLkNvbGxhdG9yKCkuY29tcGFyZSAhPT0gbmV3IEludGwu
Q29sbGF0b3IoKS5jb21wYXJlIik7CisKKy8vIDEwLjMuNCBDb2xsYXRvciBDb21wYXJlIEZ1bmN0
aW9ucworCisvLyAxLiBMZXQgY29sbGF0b3IgYmUgdGhlIHRoaXMgdmFsdWUuCisvLyAyLiBBc3Nl
cnQ6IFR5cGUoY29sbGF0b3IpIGlzIE9iamVjdCBhbmQgY29sbGF0b3IgaGFzIGFuIFtbaW5pdGlh
bGl6ZWRDb2xsYXRvcl1dIGludGVybmFsIHNsb3Qgd2hvc2UgdmFsdWUgaXMgdHJ1ZS4KKy8vIFRo
aXMgc2hvdWxkIG5vdCBiZSByZWFjaGFibGUsIHNpbmNlIGNvbXBhcmUgaXMgYm91bmQgdG8gYW4g
aW5pdGlhbGl6ZWQgY29sbGF0b3IuCisKKy8vIDMuIElmIHggaXMgbm90IHByb3ZpZGVkLCBsZXQg
eCBiZSB1bmRlZmluZWQuCisvLyA0LiBJZiB5IGlzIG5vdCBwcm92aWRlZCwgbGV0IHkgYmUgdW5k
ZWZpbmVkLgorLy8gNS4gTGV0IFggYmUgVG9TdHJpbmcoeCkuCisvLyA2LiBSZXR1cm5JZkFicnVw
dChYKS4KK3ZhciBiYWRDYWxscyA9IDA7CitzaG91bGRUaHJvdygiSW50bC5Db2xsYXRvci5wcm90
b3R5cGUuY29tcGFyZSh7IHRvU3RyaW5nKCkgeyB0aHJvdyBFcnJvcignNicpIH0gfSwgeyB0b1N0
cmluZygpIHsgKytiYWRDYWxsczsgcmV0dXJuICcnOyB9IH0pIiwgIidFcnJvcjogNiciKTsKK3No
b3VsZEJlKCJiYWRDYWxscyIsICIwIik7CisKKy8vIDcuIExldCBZIGJlIFRvU3RyaW5nKHkpLgor
Ly8gOC4gUmV0dXJuSWZBYnJ1cHQoWSkuCitzaG91bGRUaHJvdygiSW50bC5Db2xsYXRvci5wcm90
b3R5cGUuY29tcGFyZSgnYScsIHsgdG9TdHJpbmcoKSB7IHRocm93IEVycm9yKCc4JykgfSB9KSIs
ICInRXJyb3I6IDgnIik7CisKKy8vIENvbXBhcmUgaXMgYm91bmQsIHNvIGNhbGxpbmcgd2l0aCBh
bHRlcm5hdGUgInRoaXMiIGhhcyBubyBlZmZlY3QuCitzaG91bGRCZSgiSW50bC5Db2xsYXRvci5w
cm90b3R5cGUuY29tcGFyZS5jYWxsKG51bGwsICdhJywgJ2InKSIsICItMSIpOworc2hvdWxkQmUo
IkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUuY2FsbChJbnRsLkNvbGxhdG9yKCdlbics
IHsgc2Vuc2l0aXZpdHk6J2Jhc2UnIH0pLCAnQScsICdhJykiLCAiLTEiKTsKK3Nob3VsZEJlKCJJ
bnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlLmNhbGwoNSwgJ2EnLCAnYicpIiwgIi0xIik7
CitzaG91bGRCZSgibmV3IEludGwuQ29sbGF0b3IoKS5jb21wYXJlLmNhbGwobnVsbCwgJ2EnLCAn
YicpIiwgIi0xIik7CitzaG91bGRCZSgibmV3IEludGwuQ29sbGF0b3IoKS5jb21wYXJlLmNhbGwo
SW50bC5Db2xsYXRvcignZW4nLCB7IHNlbnNpdGl2aXR5OidiYXNlJyB9KSwgJ0EnLCAnYScpIiwg
Ii0xIik7CitzaG91bGRCZSgibmV3IEludGwuQ29sbGF0b3IoKS5jb21wYXJlLmNhbGwoNSwgJ2En
LCAnYicpIiwgIi0xIik7CisKKy8vIDEwLjMuNSBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNv
bHZlZE9wdGlvbnMgKCkKKworc2hvdWxkQmUoIkludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29s
dmVkT3B0aW9ucy5sZW5ndGgiLCAiMCIpOworCisvLyBSZXR1cm5zIGEgbmV3IG9iamVjdCB3aG9z
ZSBwcm9wZXJ0aWVzIGFuZCBhdHRyaWJ1dGVzIGFyZSBzZXQgYXMgaWYgY29uc3RydWN0ZWQgYnkg
YW4gb2JqZWN0IGxpdGVyYWwuCitzaG91bGRCZVR5cGUoIkludGwuQ29sbGF0b3IucHJvdG90eXBl
LnJlc29sdmVkT3B0aW9ucygpIiwgIk9iamVjdCIpOworCisvLyBSZXR1cm5zIGEgbmV3IG9iamVj
dCBlYWNoIHRpbWUuCitzaG91bGRCZUZhbHNlKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNv
bHZlZE9wdGlvbnMoKSA9PT0gSW50bC5Db2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25z
KCkiKTsKKworLy8gVGhyb3dzIG9uIG5vbi1Db2xsYXRvciB0aGlzLgorc2hvdWxkVGhyb3coIklu
dGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5jYWxsKDUpIiwgIidUeXBlRXJy
b3I6IEludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFs
dWUgdGhhdFxcJ3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIENvbGxhdG9yJyIpOwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1kYXRldGltZWZv
cm1hdC5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLWRhdGV0aW1lZm9ybWF0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJmOGE5Y2Q0MzViZGMzZmVlOGU2MzkyNGQ2MjZmYTg1NTE5YjQzOWUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1kYXRl
dGltZWZvcm1hdC5qcwpAQCAtMCwwICsxLDEwOSBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBj
aGVja3MgdGhlIGJlaGF2aW9yIG9mIEludGwuRGF0ZVRpbWVGb3JtYXQgYXMgZGVzY3JpYmVkIGlu
IHRoZSBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSSBTcGVjaWZpY2F0aW9uIChF
Q01BLTQwMiAyLjApLiIpOworCisvLyAxMi4xIFRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IENvbnN0
cnVjdG9yCisKKy8vIFRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIGlzIGEgc3Rh
bmRhcmQgYnVpbHQtaW4gcHJvcGVydHkgb2YgdGhlIEludGwgb2JqZWN0Lgorc2hvdWxkQmVUeXBl
KCJJbnRsLkRhdGVUaW1lRm9ybWF0IiwgIkZ1bmN0aW9uIik7CisKKy8vIDEyLjEuMiBJbnRsLkRh
dGVUaW1lRm9ybWF0KFsgbG9jYWxlcyBbLCBvcHRpb25zXV0pCitzaG91bGRCZVR5cGUoIkludGwu
RGF0ZVRpbWVGb3JtYXQoKSIsICJJbnRsLkRhdGVUaW1lRm9ybWF0Iik7CitzaG91bGRCZVR5cGUo
IkludGwuRGF0ZVRpbWVGb3JtYXQuY2FsbCh7fSkiLCAiSW50bC5EYXRlVGltZUZvcm1hdCIpOwor
c2hvdWxkQmVUeXBlKCJuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpIiwgIkludGwuRGF0ZVRpbWVG
b3JtYXQiKTsKKworLy8gU3ViY2xhc3NhYmxlCitjbGFzcyBEZXJpdmVkRGF0ZVRpbWVGb3JtYXQg
ZXh0ZW5kcyBJbnRsLkRhdGVUaW1lRm9ybWF0IHt9CitzaG91bGRCZVR5cGUoIm5ldyBEZXJpdmVk
RGF0ZVRpbWVGb3JtYXQiLCAiRGVyaXZlZERhdGVUaW1lRm9ybWF0Iik7CitzaG91bGRCZVR5cGUo
Im5ldyBEZXJpdmVkRGF0ZVRpbWVGb3JtYXQiLCAiSW50bC5EYXRlVGltZUZvcm1hdCIpOworc2hv
dWxkQmVUcnVlKCJuZXcgRGVyaXZlZERhdGVUaW1lRm9ybWF0KCkuZm9ybWF0KDApLmxlbmd0aCA+
IDAiKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERlcml2ZWREYXRlVGlt
ZUZvcm1hdCkiLCAiRGVyaXZlZERhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSIpOworc2hvdWxkQmUo
Ik9iamVjdC5nZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERlcml2ZWRE
YXRlVGltZUZvcm1hdCkpIiwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlIik7CisKKy8v
IDEyLjIgUHJvcGVydGllcyBvZiB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCBDb25zdHJ1Y3Rvcgor
CisvLyBsZW5ndGggcHJvcGVydHkgKHdob3NlIHZhbHVlIGlzIDApCitzaG91bGRCZSgiSW50bC5E
YXRlVGltZUZvcm1hdC5sZW5ndGgiLCAiMCIpOworCisvLyAxMi4yLjEgSW50bC5EYXRlVGltZUZv
cm1hdC5wcm90b3R5cGUKKworLy8gVGhpcyBwcm9wZXJ0eSBoYXMgdGhlIGF0dHJpYnV0ZXMgeyBb
W1dyaXRhYmxlXV06IGZhbHNlLCBbW0VudW1lcmFibGVdXTogZmFsc2UsIFtbQ29uZmlndXJhYmxl
XV06IGZhbHNlIH0uCitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEludGwuRGF0ZVRpbWVGb3JtYXQsICdwcm90b3R5cGUnKS53cml0YWJsZSIpOworc2hvdWxk
QmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9y
bWF0LCAncHJvdG90eXBlJykuZW51bWVyYWJsZSIpOworc2hvdWxkQmVGYWxzZSgiT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LCAncHJvdG90eXBlJyku
Y29uZmlndXJhYmxlIik7CisKKy8vIDEyLjIuMiBJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRl
ZExvY2FsZXNPZiAobG9jYWxlcyBbLCBvcHRpb25zIF0pCisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUg
bGVuZ3RoIHByb3BlcnR5IG9mIHRoZSBzdXBwb3J0ZWRMb2NhbGVzT2YgbWV0aG9kIGlzIDEuCitz
aG91bGRCZSgiSW50bC5EYXRlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YubGVuZ3RoIiwg
IjEiKTsKKworLy8gUmV0dXJucyBTdXBwb3J0ZWRMb2NhbGVzCitzaG91bGRCZVR5cGUoIkludGwu
RGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCkiLCAiQXJyYXkiKTsKKworLy8gMTIu
MyBQcm9wZXJ0aWVzIG9mIHRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IFByb3RvdHlwZSBPYmplY3QK
KworLy8gVGhlIHZhbHVlIG9mIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmNvbnN0cnVj
dG9yIGlzICVEYXRlVGltZUZvcm1hdCUuCitzaG91bGRCZSgiSW50bC5EYXRlVGltZUZvcm1hdC5w
cm90b3R5cGUuY29uc3RydWN0b3IiLCAiSW50bC5EYXRlVGltZUZvcm1hdCIpOworCisvLyAxMi4z
LjMgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0CisKKy8vIFRoaXMgbmFtZWQg
YWNjZXNzb3IgcHJvcGVydHkgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgZm9ybWF0cyBhIGRhdGUg
YWNjb3JkaW5nIHRvIHRoZSBlZmZlY3RpdmUgbG9jYWxlIGFuZCB0aGUgZm9ybWF0dGluZyBvcHRp
b25zIG9mIHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0Lgorc2hvdWxkQmVUeXBlKCJJbnRsLkRh
dGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQiLCAiRnVuY3Rpb24iKTsKKworLy8gVGhlIHZh
bHVlIG9mIHRoZSBbW0dldF1dIGF0dHJpYnV0ZSBpcyBhIGZ1bmN0aW9uCitzaG91bGRCZVR5cGUo
Ik9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90
b3R5cGUsICdmb3JtYXQnKS5nZXQiLCAiRnVuY3Rpb24iKTsKKworLy8gVGhlIHZhbHVlIG9mIHRo
ZSBbW1NldF1dIGF0dHJpYnV0ZSBpcyB1bmRlZmluZWQuCitzaG91bGRCZSgiT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1h
dCcpLnNldCIsICJ1bmRlZmluZWQiKTsKKworLy8gTWF0Y2ggRmlyZWZveCB3aGVyZSB1bnNwZWNp
ZmVkLgorc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRs
LkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmVudW1lcmFibGUiKTsKK3Nob3Vs
ZEJlVHJ1ZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9y
bWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmNvbmZpZ3VyYWJsZSIpOworCisvLyBUaGUgdmFsdWUg
b2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuCitzaG91bGRCZSgiSW50bC5EYXRlVGltZUZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0Lmxlbmd0aCIsICIxIik7CisKKy8vIFRocm93cyBvbiBub24t
RGF0ZVRpbWVGb3JtYXQgdGhpcy4KK3Nob3VsZFRocm93KCJPYmplY3QuZGVmaW5lUHJvcGVydHko
e30sICdmb3JtYXQnLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRp
bWVGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykpLmZvcm1hdCIsICInVHlwZUVycm9yOiBJbnRs
LkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXRcXCdz
IG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdCciKTsKKworLy8g
VGhlIGZvcm1hdCBmdW5jdGlvbiBpcyB1bmlxdWUgcGVyIGluc3RhbmNlLgorc2hvdWxkQmVUcnVl
KCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgIT09IEludGwuRGF0ZVRpbWVG
b3JtYXQoKS5mb3JtYXQiKTsKK3Nob3VsZEJlVHJ1ZSgibmV3IEludGwuRGF0ZVRpbWVGb3JtYXQo
KS5mb3JtYXQgIT09IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0Iik7CisKKy8vIDEy
LjMuNCBEYXRlVGltZSBGb3JtYXQgRnVuY3Rpb25zCisKKy8vIDEuIExldCBkdGYgYmUgdGhlIHRo
aXMgdmFsdWUuCisvLyAyLiBBc3NlcnQ6IFR5cGUoZHRmKSBpcyBPYmplY3QgYW5kIGR0ZiBoYXMg
YW4gW1tpbml0aWFsaXplZERhdGVUaW1lRm9ybWF0XV0gaW50ZXJuYWwgc2xvdCB3aG9zZSB2YWx1
ZSBpcyB0cnVlLgorLy8gVGhpcyBzaG91bGQgbm90IGJlIHJlYWNoYWJsZSwgc2luY2UgZm9ybWF0
IGlzIGJvdW5kIHRvIGFuIGluaXRpYWxpemVkIGRhdGV0aW1lZm9ybWF0LgorCisvLyAzLiBJZiBk
YXRlIGlzIG5vdCBwcm92aWRlZCBvciBpcyB1bmRlZmluZWQsIHRoZW4KKy8vIGEuIExldCB4IGJl
ICVEYXRlX25vdyUoKS4KKy8vIDQuIEVsc2UKKy8vIGEuIExldCB4IGJlIFRvTnVtYmVyKGRhdGUp
LgorLy8gYi4gUmV0dXJuSWZBYnJ1cHQoeCkuCitzaG91bGRUaHJvdygiSW50bC5EYXRlVGltZUZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0KHsgdmFsdWVPZigpIHsgdGhyb3cgRXJyb3IoJzRiJykgfSB9
KSIsICInRXJyb3I6IDRiJyIpOworCisvLyAxMi4zLjQgRm9ybWF0RGF0ZVRpbWUgYWJzdHJhY3Qg
b3BlcmF0aW9uCisKKy8vIDEuIElmIHggaXMgbm90IGEgZmluaXRlIE51bWJlciwgdGhlbiB0aHJv
dyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uLgorc2hvdWxkVGhyb3coIkludGwuRGF0ZVRpbWVGb3Jt
YXQucHJvdG90eXBlLmZvcm1hdChJbmZpbml0eSkiLCAiJ1JhbmdlRXJyb3I6IGRhdGUgdmFsdWUg
aXMgbm90IGZpbml0ZSBpbiBEYXRlVGltZUZvcm1hdC5mb3JtYXQoKSciKTsKKworLy8gRm9ybWF0
IGlzIGJvdW5kLCBzbyBjYWxsaW5nIHdpdGggYWx0ZXJuYXRlICJ0aGlzIiBoYXMgbm8gZWZmZWN0
Lgorc2hvdWxkQmUoIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5jYWxsKG51
bGwsIDApIiwgIkludGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQoMCkiKTsKK3Nob3VsZEJlKCJJ
bnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQuY2FsbChJbnRsLkRhdGVUaW1lRm9y
bWF0KCdhcicpLCAwKSIsICJJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0KDApIik7CitzaG91
bGRCZSgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0LmNhbGwoNSwgMCkiLCAi
SW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdCgwKSIpOworc2hvdWxkQmUoIm5ldyBJbnRsLkRh
dGVUaW1lRm9ybWF0KCkuZm9ybWF0LmNhbGwobnVsbCwgMCkiLCAiSW50bC5EYXRlVGltZUZvcm1h
dCgpLmZvcm1hdCgwKSIpOworc2hvdWxkQmUoIm5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9y
bWF0LmNhbGwoSW50bC5EYXRlVGltZUZvcm1hdCgnYXInKSwgMCkiLCAiSW50bC5EYXRlVGltZUZv
cm1hdCgpLmZvcm1hdCgwKSIpOworc2hvdWxkQmUoIm5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCku
Zm9ybWF0LmNhbGwoNSwgMCkiLCAiSW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdCgwKSIpOwor
CisvLyAxMi4zLjUgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25z
ICgpCisKK3Nob3VsZEJlKCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9w
dGlvbnMubGVuZ3RoIiwgIjAiKTsKKworLy8gUmV0dXJucyBhIG5ldyBvYmplY3Qgd2hvc2UgcHJv
cGVydGllcyBhbmQgYXR0cmlidXRlcyBhcmUgc2V0IGFzIGlmIGNvbnN0cnVjdGVkIGJ5IGFuIG9i
amVjdCBsaXRlcmFsLgorc2hvdWxkQmVUeXBlKCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlw
ZS5yZXNvbHZlZE9wdGlvbnMoKSIsICJPYmplY3QiKTsKKworLy8gUmV0dXJucyBhIG5ldyBvYmpl
Y3QgZWFjaCB0aW1lLgorc2hvdWxkQmVGYWxzZSgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5
cGUucmVzb2x2ZWRPcHRpb25zKCkgPT09IEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJl
c29sdmVkT3B0aW9ucygpIik7CisKKy8vIFRocm93cyBvbiBub24tRGF0ZVRpbWVGb3JtYXQgdGhp
cy4KK3Nob3VsZFRocm93KCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9w
dGlvbnMuY2FsbCg1KSIsICInVHlwZUVycm9yOiBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlw
ZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXRcXCdzIG5vdCBhbiBvYmplY3Qg
aW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdCciKTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtbnVtYmVyZm9ybWF0LmpzIGIvTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL2ludGwtbnVtYmVyZm9ybWF0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1NzNiOTIw
NTQxMTMwOWQzY2Q0YjA3YjllMDhjZTExYjYzY2E5YTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1udW1iZXJmb3JtYXQuanMKQEAgLTAsMCArMSwx
MDIgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRoZSBiZWhhdmlvciBvZiBJbnRs
Lk51bWJlckZvcm1hdCBhcyBkZXNjcmliZWQgaW4gdGhlIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25h
bGl6YXRpb24gQVBJIFNwZWNpZmljYXRpb24gKEVDTUEtNDAyIDIuMCkuIik7CisKKy8vIDExLjEg
VGhlIEludGwuTnVtYmVyRm9ybWF0IENvbnN0cnVjdG9yCisKKy8vIFRoZSBJbnRsLk51bWJlckZv
cm1hdCBjb25zdHJ1Y3RvciBpcyBhIHN0YW5kYXJkIGJ1aWx0LWluIHByb3BlcnR5IG9mIHRoZSBJ
bnRsIG9iamVjdC4KK3Nob3VsZEJlVHlwZSgiSW50bC5OdW1iZXJGb3JtYXQiLCAiRnVuY3Rpb24i
KTsKKworLy8gMTEuMS4yIEludGwuTnVtYmVyRm9ybWF0KFsgbG9jYWxlcyBbLCBvcHRpb25zXV0p
CitzaG91bGRCZVR5cGUoIkludGwuTnVtYmVyRm9ybWF0KCkiLCAiSW50bC5OdW1iZXJGb3JtYXQi
KTsKK3Nob3VsZEJlVHlwZSgiSW50bC5OdW1iZXJGb3JtYXQuY2FsbCh7fSkiLCAiSW50bC5OdW1i
ZXJGb3JtYXQiKTsKK3Nob3VsZEJlVHlwZSgibmV3IEludGwuTnVtYmVyRm9ybWF0KCkiLCAiSW50
bC5OdW1iZXJGb3JtYXQiKTsKKworLy8gU3ViY2xhc3NhYmxlCitjbGFzcyBEZXJpdmVkTnVtYmVy
Rm9ybWF0IGV4dGVuZHMgSW50bC5OdW1iZXJGb3JtYXQge30KK3Nob3VsZEJlVHlwZSgibmV3IERl
cml2ZWROdW1iZXJGb3JtYXQiLCAiRGVyaXZlZE51bWJlckZvcm1hdCIpOworc2hvdWxkQmVUeXBl
KCJuZXcgRGVyaXZlZE51bWJlckZvcm1hdCIsICJJbnRsLk51bWJlckZvcm1hdCIpOworc2hvdWxk
QmUoIm5ldyBEZXJpdmVkTnVtYmVyRm9ybWF0KCkuZm9ybWF0KDEpIiwgIicxJyIpOworc2hvdWxk
QmUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgRGVyaXZlZE51bWJlckZvcm1hdCkiLCAiRGVy
aXZlZE51bWJlckZvcm1hdC5wcm90b3R5cGUiKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0UHJvdG90
eXBlT2YoT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBEZXJpdmVkTnVtYmVyRm9ybWF0KSkiLCAi
SW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlIik7CisKKy8vIDExLjIgUHJvcGVydGllcyBvZiB0
aGUgSW50bC5OdW1iZXJGb3JtYXQgQ29uc3RydWN0b3IKKworLy8gbGVuZ3RoIHByb3BlcnR5ICh3
aG9zZSB2YWx1ZSBpcyAwKQorc2hvdWxkQmUoIkludGwuTnVtYmVyRm9ybWF0Lmxlbmd0aCIsICIw
Iik7CisKKy8vIDExLjIuMSBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUKKworLy8gVGhpcyBw
cm9wZXJ0eSBoYXMgdGhlIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IGZhbHNlLCBbW0VudW1l
cmFibGVdXTogZmFsc2UsIFtbQ29uZmlndXJhYmxlXV06IGZhbHNlIH0uCitzaG91bGRCZUZhbHNl
KCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LCAncHJv
dG90eXBlJykud3JpdGFibGUiKTsKK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQsICdwcm90b3R5cGUnKS5lbnVtZXJhYmxlIik7
CitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVt
YmVyRm9ybWF0LCAncHJvdG90eXBlJykuY29uZmlndXJhYmxlIik7CisKKy8vIDExLjIuMiBJbnRs
Lk51bWJlckZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YgKGxvY2FsZXMgWywgb3B0aW9ucyBdKQor
CisvLyBUaGUgdmFsdWUgb2YgdGhlIGxlbmd0aCBwcm9wZXJ0eSBvZiB0aGUgc3VwcG9ydGVkTG9j
YWxlc09mIG1ldGhvZCBpcyAxLgorc2hvdWxkQmUoIkludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRl
ZExvY2FsZXNPZi5sZW5ndGgiLCAiMSIpOworCisvLyBSZXR1cm5zIFN1cHBvcnRlZExvY2FsZXMK
K3Nob3VsZEJlVHlwZSgiSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCkiLCAi
QXJyYXkiKTsKKworLy8gMTEuMyBQcm9wZXJ0aWVzIG9mIHRoZSBJbnRsLk51bWJlckZvcm1hdCBQ
cm90b3R5cGUgT2JqZWN0CisKKy8vIFRoZSB2YWx1ZSBvZiBJbnRsLk51bWJlckZvcm1hdC5wcm90
b3R5cGUuY29uc3RydWN0b3IgaXMgJU51bWJlckZvcm1hdCUuCitzaG91bGRCZSgiSW50bC5OdW1i
ZXJGb3JtYXQucHJvdG90eXBlLmNvbnN0cnVjdG9yIiwgIkludGwuTnVtYmVyRm9ybWF0Iik7CisK
Ky8vIDExLjMuMyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0CisKKy8vIFRoaXMg
bmFtZWQgYWNjZXNzb3IgcHJvcGVydHkgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgZm9ybWF0cyBh
IG51bWJlciBhY2NvcmRpbmcgdG8gdGhlIGVmZmVjdGl2ZSBsb2NhbGUgYW5kIHRoZSBmb3JtYXR0
aW5nIG9wdGlvbnMgb2YgdGhpcyBOdW1iZXJGb3JtYXQgb2JqZWN0Lgorc2hvdWxkQmVUeXBlKCJJ
bnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IiwgIkZ1bmN0aW9uIik7CisKKy8vIFRo
ZSB2YWx1ZSBvZiB0aGUgW1tHZXRdXSBhdHRyaWJ1dGUgaXMgYSBmdW5jdGlvbgorc2hvdWxkQmVU
eXBlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LnBy
b3RvdHlwZSwgJ2Zvcm1hdCcpLmdldCIsICJGdW5jdGlvbiIpOworCisvLyBUaGUgdmFsdWUgb2Yg
dGhlIFtbU2V0XV0gYXR0cmlidXRlIGlzIHVuZGVmaW5lZC4KK3Nob3VsZEJlKCJPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1h
dCcpLnNldCIsICJ1bmRlZmluZWQiKTsKKworLy8gTWF0Y2ggRmlyZWZveCB3aGVyZSB1bnNwZWNp
ZmVkLgorc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRs
Lk51bWJlckZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5lbnVtZXJhYmxlIik7CitzaG91bGRC
ZVRydWUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQu
cHJvdG90eXBlLCAnZm9ybWF0JykuY29uZmlndXJhYmxlIik7CisKKy8vIFRoZSB2YWx1ZSBvZiBG
4oCZcyBsZW5ndGggcHJvcGVydHkgaXMgMS4KK3Nob3VsZEJlKCJJbnRsLk51bWJlckZvcm1hdC5w
cm90b3R5cGUuZm9ybWF0Lmxlbmd0aCIsICIxIik7CisKKy8vIFRocm93cyBvbiBub24tTnVtYmVy
Rm9ybWF0IHRoaXMuCitzaG91bGRUaHJvdygiT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnZm9y
bWF0JywgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdC5w
cm90b3R5cGUsICdmb3JtYXQnKSkuZm9ybWF0IiwgIidUeXBlRXJyb3I6IEludGwuTnVtYmVyRm9y
bWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXRcXCdzIG5vdCBhbiBvYmpl
Y3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQnIik7CisKKy8vIFRoZSBmb3JtYXQgZnVu
Y3Rpb24gaXMgdW5pcXVlIHBlciBpbnN0YW5jZS4KK3Nob3VsZEJlVHJ1ZSgiSW50bC5OdW1iZXJG
b3JtYXQucHJvdG90eXBlLmZvcm1hdCAhPT0gSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQiKTsK
K3Nob3VsZEJlVHJ1ZSgibmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0ICE9PSBuZXcgSW50
bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQiKTsKKworLy8gMTEuMy40IEZvcm1hdCBOdW1iZXIgRnVu
Y3Rpb25zCisKKy8vIDEuIExldCBuZiBiZSB0aGUgdGhpcyB2YWx1ZS4KKy8vIDIuIEFzc2VydDog
VHlwZShuZikgaXMgT2JqZWN0IGFuZCBuZiBoYXMgYW4gW1tpbml0aWFsaXplZE51bWJlckZvcm1h
dF1dIGludGVybmFsIHNsb3Qgd2hvc2UgdmFsdWUgaXMgdHJ1ZS4KKy8vIFRoaXMgc2hvdWxkIG5v
dCBiZSByZWFjaGFibGUsIHNpbmNlIGZvcm1hdCBpcyBib3VuZCB0byBhbiBpbml0aWFsaXplZCBu
dW1iZXJmb3JtYXQuCisKKy8vIDMuIElmIHZhbHVlIGlzIG5vdCBwcm92aWRlZCwgbGV0IHZhbHVl
IGJlIHVuZGVmaW5lZC4KKy8vIDQuIExldCB4IGJlIFRvTnVtYmVyKHZhbHVlKS4KKy8vIDUuIFJl
dHVybklmQWJydXB0KHgpLgorc2hvdWxkVGhyb3coIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlw
ZS5mb3JtYXQoeyB2YWx1ZU9mKCkgeyB0aHJvdyBFcnJvcignNScpIH0gfSkiLCAiJ0Vycm9yOiA1
JyIpOworCisvLyBGb3JtYXQgaXMgYm91bmQsIHNvIGNhbGxpbmcgd2l0aCBhbHRlcm5hdGUgInRo
aXMiIGhhcyBubyBlZmZlY3QuCitzaG91bGRCZSgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBl
LmZvcm1hdC5jYWxsKG51bGwsIDEuMikiLCAiSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoMS4y
KSIpOworc2hvdWxkQmUoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQuY2FsbChJ
bnRsLkRhdGVUaW1lRm9ybWF0KCdhcicpLCAxLjIpIiwgIkludGwuTnVtYmVyRm9ybWF0KCkuZm9y
bWF0KDEuMikiKTsKK3Nob3VsZEJlKCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0
LmNhbGwoNSwgMS4yKSIsICJJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdCgxLjIpIik7CitzaG91
bGRCZSgibmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0LmNhbGwobnVsbCwgMS4yKSIsICJJ
bnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdCgxLjIpIik7CitzaG91bGRCZSgibmV3IEludGwuTnVt
YmVyRm9ybWF0KCkuZm9ybWF0LmNhbGwoSW50bC5EYXRlVGltZUZvcm1hdCgnYXInKSwgMS4yKSIs
ICJJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdCgxLjIpIik7CitzaG91bGRCZSgibmV3IEludGwu
TnVtYmVyRm9ybWF0KCkuZm9ybWF0LmNhbGwoNSwgMS4yKSIsICJJbnRsLk51bWJlckZvcm1hdCgp
LmZvcm1hdCgxLjIpIik7CisKKy8vIDExLjMuNSBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUu
cmVzb2x2ZWRPcHRpb25zICgpCisKK3Nob3VsZEJlKCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5
cGUucmVzb2x2ZWRPcHRpb25zLmxlbmd0aCIsICIwIik7CisKKy8vIFJldHVybnMgYSBuZXcgb2Jq
ZWN0IHdob3NlIHByb3BlcnRpZXMgYW5kIGF0dHJpYnV0ZXMgYXJlIHNldCBhcyBpZiBjb25zdHJ1
Y3RlZCBieSBhbiBvYmplY3QgbGl0ZXJhbC4KK3Nob3VsZEJlVHlwZSgiSW50bC5OdW1iZXJGb3Jt
YXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIiwgIk9iamVjdCIpOworCisvLyBSZXR1cm5z
IGEgbmV3IG9iamVjdCBlYWNoIHRpbWUuCitzaG91bGRCZUZhbHNlKCJJbnRsLk51bWJlckZvcm1h
dC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgPT09IEludGwuTnVtYmVyRm9ybWF0LnByb3Rv
dHlwZS5yZXNvbHZlZE9wdGlvbnMoKSIpOworCisvLyBUaHJvd3Mgb24gbm9uLU51bWJlckZvcm1h
dCB0aGlzLgorc2hvdWxkVGhyb3coIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZl
ZE9wdGlvbnMuY2FsbCg1KSIsICInVHlwZUVycm9yOiBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5
cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0XFwncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0JyIpOworCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9pbnRsLmpzCmluZGV4IDhhNGNmNTg0ZTJmMDljZWM4N2Q1NWY5MzIyNjQ0M2VkNzE4MzJlMzku
LjA5NjgyODcyODg2MGIwY2M4OTgyNzk3YzljNGRmOTczODJkODg4NTUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9pbnRsLmpzCkBAIC0xLDIzICsxLDI2IEBACi0vLyBUaGlzIGZlYXR1cmUgaXNu
J3QgZW5hYmxlZCB5ZXQuCi0vL0Agc2tpcAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3Mg
dGhlIGJlaGF2aW9yIG9mIHRoZSBJbnRsIG9iamVjdCBhcyBkZXNjcmliZWQgaW4gdGhlIEVDTUFT
Y3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmljYXRpb24gKEVDTUEtNDAyIDIu
MCkuIik7CiAKLWRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRoZSBiZWhhdmlvciBvZiB0
aGUgSW50bCBvYmplY3QgYXMgZGVzY3JpYmVkIGluIDggb2YgdGhlIEVDTUFTY3JpcHQgSW50ZXJu
YXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmljYXRpb24uIik7CisvLyA4IFRoZSBJbnRsIE9iamVj
dAogCi0vLyBUaGUgSW50bCBvYmplY3QgaXMgYSBzdGFuZGFyZCBidWlsdC1pbiBvYmplY3QgdGhh
dCBpcyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgSW50bCBwcm9wZXJ0eSBvZiB0aGUgZ2xvYmFs
IG9iamVjdC4KKy8vIFRoZSBJbnRsIG9iamVjdCBpcyBhIHNpbmdsZSBvcmRpbmFyeSBvYmplY3Qu
CiBzaG91bGRCZVR5cGUoIkludGwiLCAiT2JqZWN0Iik7CiBzaG91bGRCZSgidHlwZW9mIEludGwi
LCAiJ29iamVjdCciKTsKIHNob3VsZEJlKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwo
SW50bCkiLCAiJ1tvYmplY3QgT2JqZWN0XSciKTsKIAotLy8gVGhlIHZhbHVlIG9mIHRoZSBbW1By
b3RvdHlwZV1dIGludGVybmFsIHByb3BlcnR5IG9mIHRoZSBJbnRsIG9iamVjdCBpcyB0aGUgYnVp
bHQtaW4gT2JqZWN0IHByb3RvdHlwZSBvYmplY3Qgc3BlY2lmaWVkIGJ5IHRoZSBFQ01BU2NyaXB0
IExhbmd1YWdlIFNwZWNpZmljYXRpb24uCisvLyBUaGUgdmFsdWUgb2YgdGhlIFtbUHJvdG90eXBl
XV0gaW50ZXJuYWwgc2xvdCBvZiB0aGUgSW50bCBvYmplY3QgaXMgdGhlIGludHJpbnNpYyBvYmpl
Y3QgJU9iamVjdFByb3RvdHlwZSUuCiBzaG91bGRCZVRydWUoIk9iamVjdC5nZXRQcm90b3R5cGVP
ZihJbnRsKSA9PT0gT2JqZWN0LnByb3RvdHlwZSIpOwogCi0vLyBUaGUgSW50bCBvYmplY3QgZG9l
cyBub3QgaGF2ZSBhIFtbQ29uc3RydWN0XV0gaW50ZXJuYWwgcHJvcGVydHk7IGl0IGlzIG5vdCBw
b3NzaWJsZSB0byB1c2UgdGhlIEludGwgb2JqZWN0IGFzIGEgY29uc3RydWN0b3Igd2l0aCB0aGUg
bmV3IG9wZXJhdG9yLgorLy8gVGhlIEludGwgb2JqZWN0IGlzIG5vdCBhIGZ1bmN0aW9uIG9iamVj
dC4KKy8vIEl0IGRvZXMgbm90IGhhdmUgYSBbW0NvbnN0cnVjdF1dIGludGVybmFsIG1ldGhvZDsg
aXQgaXMgbm90IHBvc3NpYmxlIHRvIHVzZSB0aGUgSW50bCBvYmplY3QgYXMgYSBjb25zdHJ1Y3Rv
ciB3aXRoIHRoZSBuZXcgb3BlcmF0b3IuCiBzaG91bGRUaHJvdygibmV3IEludGwiLCAiJ1R5cGVF
cnJvcjogT2JqZWN0IGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nIFxcJ25ldyBJbnRs
XFwnKSciKTsKIAotLy8gVGhlIEludGwgb2JqZWN0IGRvZXMgbm90IGhhdmUgYSBbW0NhbGxdXSBp
bnRlcm5hbCBwcm9wZXJ0eTsgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGludm9rZSB0aGUgSW50bCBv
YmplY3QgYXMgYSBmdW5jdGlvbi4KKy8vIFRoZSBJbnRsIG9iamVjdCBkb2VzIG5vdCBoYXZlIGEg
W1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kOyBpdCBpcyBub3QgcG9zc2libGUgdG8gaW52b2tlIHRo
ZSBJbnRsIG9iamVjdCBhcyBhIGZ1bmN0aW9uLgogc2hvdWxkVGhyb3coIkludGwoKSIsICInVHlw
ZUVycm9yOiBJbnRsIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gXFwnSW50bCgpXFwnLCBcXCdJbnRs
XFwnIGlzIGFuIGluc3RhbmNlIG9mIE9iamVjdCknIik7CiAKLS8vIGlzIGRlbGV0YWJsZSwgaW5m
ZXJyZWQgZnJvbSB1c2Ugb2YgIkluaXRpYWwiIGluIHNwZWMsIGNvbnNpc3RlbnQgd2l0aCBvdGhl
ciBpbXBsZW1lbnRhdGlvbnMKKy8vIEhhcyBvbmx5IHRoZSBidWlsdC1pbiBDb2xsYXRvciwgRGF0
ZVRpbWVGb3JtYXQsIGFuZCBOdW1iZXJGb3JtYXQsIHdoaWNoIGFyZSBub3QgZW51bWVyYWJsZS4K
K3Nob3VsZEJlKCJPYmplY3Qua2V5cyhJbnRsKS5sZW5ndGgiLCAiMCIpOworCisvLyBJcyBkZWxl
dGFibGUsIGluZmVycmVkIGZyb20gdXNlIG9mICJJbml0aWFsIiBpbiBzcGVjLCBjb25zaXN0ZW50
IHdpdGggb3RoZXIgaW1wbGVtZW50YXRpb25zLgogdmFyIF9fSW50bCA9IEludGw7CiBzaG91bGRC
ZVRydWUoImRlbGV0ZSBJbnRsOyIpOwogCkBAIC0yNSwzICsyOCw0IEBAIGZ1bmN0aW9uIGdsb2Jh
bCgpIHsgcmV0dXJuIHRoaXM7IH0KIHNob3VsZEJlRmFsc2UoIidJbnRsJyBpbiBnbG9iYWwoKSIp
OwogCiBJbnRsID0gX19JbnRsOworCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cK
aW5kZXggZTIyYzM1N2NlODkxMTg4ZDE1Y2VhNzVjZTYzYzkzNWZlZGY0YzQ5OC4uZmJmODE0Yjc2
ODgxMWMxNzdjNTczYTcyNzMzMWFiNTYxNTVjNzIyZSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisr
KyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTA3LTI4ICBBbmR5IFZhbldhZ29u
ZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2lj
IHR5cGVzIGZvciBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2OTI2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIGZsYWcgbm93IHRo
YXQgdGhlIGJhc2ljIG9iamVjdHMgYXJlIGluIHBsYWNlLgorCisgICAgICAgICogU291cmNlL2Nt
YWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOiBlbmFibGUgSU5UTAorCiAyMDE1LTA3LTI3ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIE5p
bmphIG9uIFdpbmRvd3MuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257722</attachid>
            <date>2015-07-28 19:10:12 -0700</date>
            <delta_ts>2015-07-28 20:05:03 -0700</delta_ts>
            <desc>rebase</desc>
            <filename>bug-146926-20150728200849.patch</filename>
            <type>text/plain</type>
            <size>181243</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3NTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NWE3MTY0ZjVhY2ZlY2ZiMzk5ZmMxYWRjOTlmODUyMzRiMzVmZDZkLi4wMjk4NmViZDk3MGQzNzdj
MzdkNDBjNzVjYTlhN2YyYmRkY2I1ZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDQgQEAKKzIwMTUtMDctMjggIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVy
QGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3Jp
cHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRzIGJhc2ljIHR5cGVzIGZvciBFQ01BLTQwMiAybmQgZWRp
dGlvbiwgYnV0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZnVsbCBsb2NhbGUtYXdhcmUgZmVhdHVy
ZXMgeWV0LgorICAgICAgICBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS00
MDIvMi4wL0VDTUEtNDAyLnBkZgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIG5l
dyBJbnRsIGZpbGVzLgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnOiBFbmFibGUgSU5UTC4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBBZGRl
ZCBJbnRsIGZpbGVzLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IEFkZGVkIEludGwgZmlsZXMuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOiBBZGRlZCBJbnRsIGZpbGVzLgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOiBB
ZGRlZCBJbnRsIGZpbGVzLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDog
QWRkZWQgQ29sbGF0b3IsIE51bWJlckZvcm1hdCwgYW5kIERhdGVUaW1lRm9ybWF0LgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDogTWFkZSBEYXRlLm5vdyBwdWJsaWMuCisg
ICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaDogTWFkZSBEYXRlLm5vdyBwdWJsaWMu
CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SW50bENvbGxhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6SW50bENvbGxhdG9y
KToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChKU0M6OkludGxDb2xsYXRvcjo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRv
cjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6c2V0Qm91bmRD
b21wYXJlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yRnVuY0NvbXBhcmUpOiBBZGRlZCBw
bGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiB1c2luZyBjb2RlUG9pbnRDb21wYXJlLgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3I6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpib3VuZENv
bXBhcmUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6SW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJbnRsQ29sbGF0b3IpOiBBZGRlZCBDb2xs
YXRvciBjb25zdHJ1Y3RvciAoMTAuMS4yKS4KKyAgICAgICAgKEpTQzo6Y2FsbEludGxDb2xsYXRv
cik6IEFkZGVkIENvbGxhdG9yIGNvbnN0cnVjdG9yICgxMC4xLjIpLgorICAgICAgICAoSlNDOjpJ
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChKU0M6
OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6Oklu
dGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlND
OjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YpOiBBZGRlZCBw
bGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcgW10uCisgICAgICAgIChKU0M6Oklu
dGxDb2xsYXRvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1l
L0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3JDb25zdHJ1Y3Rvcjo6Y29sbGF0b3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxDb2xs
YXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5
cGU6OkludGxDb2xsYXRvclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvclBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90
b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvclBy
b3RvdHlwZUdldHRlckNvbXBhcmUpOiBBZGRlZCBjb21wYXJlIGdldHRlciAoMTAuMy4zKQorICAg
ICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKTogQWRk
ZWQgcGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIHt9LgorICAgICAgICAqIHJ1
bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxEYXRlVGlt
ZUZvcm1hdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0OjpjcmVh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OkludGxEYXRl
VGltZUZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRlc3Ryb3kpOgorICAg
ICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNldEJvdW5kRm9ybWF0KToKKyAgICAgICAgKEpTQzo6
SW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lKTogQWRkZWQgcGxhY2Vob2xkZXIg
aW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIG5ldyBEYXRlKHZhbHVlKS50b1N0cmluZygpLgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Lmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bERh
dGVUaW1lRm9ybWF0Ojpib3VuZEZvcm1hdCk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdCk6IEFkZGVk
IERhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yICgxMi4xLjIpLgorICAgICAgICAoSlNDOjpjYWxs
SW50bERhdGVUaW1lRm9ybWF0KTogQWRkZWQgRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgKDEy
LjEuMikuCisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpnZXRD
b25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6IEFkZGVkIHBsYWNlaG9sZGVy
IGltcGxlbWVudGF0aW9uIHJldHVybmluZyBbXS4KKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6SW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KTogQWRkZWQgZm9ybWF0IGdldHRlciAoMTIuMy4zKS4K
KyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0
aW9ucyk6IEFkZGVkIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyB7fS4KKyAg
ICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZv
cm1hdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6
SW50bE51bWJlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6ZGVzdHJveSk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzZXRCb3VuZEZvcm1hdCk6CisgICAgICAgIChKU0M6Oklu
dGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyKTogQWRkZWQgcGxhY2Vob2xkZXIgaW1wbGVt
ZW50YXRpb24gcmV0dXJuaW5nIE51bWJlcih2YWx1ZSkudG9TdHJpbmcoKS4KKyAgICAgICAgKiBy
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXQ6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6
Ym91bmRGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3I6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KTogQWRkZWQgTnVtYmVyRm9ybWF0IGNvbnN0cnVjdG9yICgx
MS4xLjIpLgorICAgICAgICAoSlNDOjpjYWxsSW50bE51bWJlckZvcm1hdCk6IEFkZGVkIE51bWJl
ckZvcm1hdCBjb25zdHJ1Y3RvciAoMTEuMS4yKS4KKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6SW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6IEFk
ZGVkIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyBbXS4KKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpudW1iZXJGb3JtYXRTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlR2V0dGVyRm9ybWF0KTogQWRkZWQgZm9ybWF0IGdldHRlciAoMTEuMy4zKS4KKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOiBBZGRl
ZCBwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcge30uCisgICAgICAgICogcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRp
bWUvSW50bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKTogQWRkZWQgQ29sbGF0b3Is
IE51bWJlckZvcm1hdCwgYW5kIERhdGVUaW1lRm9ybWF0IHByb3BlcnRpZXMgKDguMSkuCisgICAg
ICAgIChKU0M6OkludGxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bE9iamVjdC5oOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0Ojpjb2xsYXRvckNvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6Y29sbGF0b3JQcm90b3R5cGUpOgorICAg
ICAgICAoSlNDOjpJbnRsT2JqZWN0Ojpjb2xsYXRvclN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkludGxPYmplY3Q6Om51bWJlckZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50
bE9iamVjdDo6bnVtYmVyRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVj
dDo6bnVtYmVyRm9ybWF0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6ZGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmRhdGVU
aW1lRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6ZGF0ZVRpbWVG
b3JtYXRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisKIDIwMTUtMDctMjggIFN1a29s
c2FrIFNha3NodXdvbmcgIDxzdWtvbHNha0BnbWFpbC5jb20+CiAKICAgICAgICAgSW1wbGVtZW50
IFdlYkFzc2VtYmx5IG1vZHVsZSBwYXJzZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzNTcwNGFhYWM1MTFiNGUz
NjNkMTMxYjk4NDQ2MjUyMDZkMzUwM2RmLi5lZWI5Yjk3NTA3NTZmMjk4ZTQxMjMxNThlYzhlODQ5
NzFlNzBiYjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDctMjggIEFuZHkg
VmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOiBFbmFibGVkIElOVEwuCisKIDIwMTUtMDct
MjggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQW5p
bWF0aW9ucyBzb21ldGltZXMgZmFpbCB0byBzdGFydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGY2NWE2
ZTJkNjFjNjhiMWZlZjdkMDViZGZjMWExYWZjMDZkZmRiNTcuLjc5NDc0MTVlMTBkNDMzZWQ2OWQ1
NzdlOTM1MDY2MmQ2NjVjMzg2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxNS0wNy0yOCAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBiYXNpYyB0eXBlcyBmb3IgRUNNQVNjcmlwdCBJbnRlcm5hdGlv
bmFsaXphdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0NjkyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6IEVuYWJsZWQg
SU5UTC4KKwogMjAxNS0wNy0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KIAogICAgICAgICBbRVM2XSBBZGQgRU5BQkxFX0VTNl9NT0RVTEVTIGNvbXBpbGUgdGltZSBm
bGFnIHdpdGggdGhlIGRlZmF1bHQgdmFsdWUgImZhbHNlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDc5NmFhN2Ni
YjAxOTUxNjdkOTk2ODAzYzlhZjFkY2FlM2FkOTFlNzkuLjlkNTUyZTJkZTFlNzVkMTQ1YTIyODE0
NmIzNTdhNTA3Y2E1NWE5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wNy0y
OCAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBiYXNpYyB0eXBlcyBmb3IgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlv
biBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NjkyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6IEVuYWJsZWQgSU5UTC4KKwog
MjAxNS0wNy0yOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAg
ICBDbGVhbiB1cCB1c2VzQXN5bmNDYWxsYmFja3MgaGFuZGxpbmcgaW4gUmVzb3VyY2VIYW5kbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwZWFjMzY2ZTVjNzU5NzJkNDAy
M2RjNWU4YTVmMTU0YzNkMjZiMWJmLi5kNTEwZmExZmZiMWI0ZTFhMTFkZTNmM2FkYTlmN2NhNjkx
NjQ5ZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00NzksNiArNDc5
LDE1IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0lu
aXRpYWxpemVUaHJlYWRpbmcuY3BwCiAgICAgcnVudGltZS9JbnRlbmRlZFN0cnVjdHVyZUNoYWlu
LmNwcAogICAgIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKKyAgICBydW50aW1lL0ludGxD
b2xsYXRvci5jcHAKKyAgICBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAorICAg
IHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmNwcAorICAgIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwCisgICAgcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisgICAgcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorICAgIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAK
ICAgICBydW50aW1lL0ludGxPYmplY3QuY3BwCiAgICAgcnVudGltZS9JdGVyYXRvck9wZXJhdGlv
bnMuY3BwCiAgICAgcnVudGltZS9JdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTYyNCw2ICs2MzMs
MTIgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9GSUxFUwogICAgIHJ1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3Bw
CisgICAgcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ci5jcHAKKyAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCiAgICAgcnVu
dGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCiAgICAgcnVudGltZS9KU09OT2JqZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmlu
ZGV4IGUxNjBjN2Y4MTNjYTRkOTY1YWIwZTAxOGQ4YjcyNjk2ZWNiZWRjNzAuLmJjZTg2MGE3ZWM4
MWQxZjQ2ZmY5ZDM5ZmNjMmFlYWY3OTUwMTcxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcK
QEAgLTExNyw3ICsxMTcsNyBAQCBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29z
eF8xMDEwMDAgPSA7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEx
MDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogRU5BQkxFX1dJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVDsKIAotRU5BQkxFX0lOVEwgPSA7CitFTkFCTEVfSU5UTCA9IEVOQUJMRV9JTlRMOwogCiBF
TkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX0lPU19HRVNU
VVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxfU0RLKSk7CiBF
TkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMgPSBFTkFC
TEVfSU9TX0dFU1RVUkVfRVZFTlRTOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCBmMzVhYjg2NzI0MGY5MjY4OGY5MzZkMTIxZjk5YzExYjM1ZmZhYzUzLi5k
MDcxMjY1MmEwOWIxYzhhZjUxZGEyZTY2ZDlhMTg0YjMwNTlhZTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNDEsNiArNDEsMTIgQEAgYWxsIDogXAog
ICAgIERhdGVDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgRGF0ZVByb3RvdHlwZS5sdXQuaCBcCiAg
ICAgRXJyb3JQcm90b3R5cGUubHV0LmggXAorICAgIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1
dC5oIFwKKyAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggXAorICAgIEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUubHV0LmggXAorICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBcCisgICAg
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCBcCiAgICAgSlNEYXRhVmlld1Byb3RvdHlw
ZS5sdXQuaCBcCiAgICAgSlNPTk9iamVjdC5sdXQuaCBcCiAgICAgSlNHbG9iYWxPYmplY3QubHV0
LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggN2E4NTdmMTg2
Y2U2OTQzOGFhMTQ4NjRkNGNiZTMyYjRiYmQzOWExNC4uOTEzNjk3MDdkZWRlMmI2OTE1M2FmYWY1
NDQ0OTA5NzM0OTM5YTJmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
CkBAIC03MzEsNiArNzMxLDE1IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSW50ZXJuYWxGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvci5jcHAiIC8+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCIgLz4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENvbGxhdG9yUHJvdG90eXBlLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9y
bWF0LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIiAvPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0LmNwcCIgLz4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXElu
dGxPYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJdGVy
YXRvck9wZXJhdGlvbnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxJdGVyYXRvclByb3RvdHlwZS5jcHAiIC8+CkBAIC0xNTM5LDYgKzE1NDgsMTUgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50OEFycmF5LmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50ZXJuYWxGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3IuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENvbGxhdG9yQ29uc3RydWN0b3Iu
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENvbGxhdG9yUHJv
dG90eXBlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRl
VGltZUZvcm1hdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIgLz4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdC5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsT2Jq
ZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludHJpbnNpYy5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJdGVyYXRpb25TdGF0dXMu
aCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVy
cwppbmRleCA1NmY0ZDg0YzQzOWY1MThiODgyZjhjMTcwMWJjYzg0Y2IzZTExZGJjLi4wMDliMmYx
MjI4MGZhZTc4MmIyOTdlZjRkY2EyN2M2MzAzOTFjNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
LmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC02MzAsNiArNjMwLDMzIEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVybmFsRnVuY3Rpb24uY3BwIj4K
ICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3IuY3BwIj4KKyAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAiPgorICAgICAg
PEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvclByb3RvdHlwZS5jcHAiPgorICAgICAg
PEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdC5jcHAiPgorICAgICAgPEZp
bHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCI+Cisg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNw
cCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdC5jcHAiPgor
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5j
cHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxl
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsT2JqZWN0LmNwcCI+CiAg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTI2OTMs
NiArMjcyMCwzMyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRlcm5h
bEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvci5o
Ij4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5o
Ij4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCI+
CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9ybWF0LmgiPgorICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgi
PgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0LmgiPgor
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5o
Ij4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
LmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxPYmplY3QuaCI+CiAgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYzA2NjljN2ZlMzUwYmE1ZWE0NTMxYWFjNTUzODc0OGU5ZjkzNjUz
Yy4uOTU2MGU3N2JiNWVmNzI3YjU4YzBiYzg1MWZjMDQzMGNhZjgxZDQ0YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTExNzcsMTMgKzExNzcsMzcgQEAKIAkJOUU3Mjk0MEIxOTBG
MDUxNDAwMUE5MUI1IC8qIEJ1bmRsZVBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlFNzI5NDBBMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQYXRo
LmggKi87IH07CiAJCTlFQTVDN0ExMTkwRjA4NDIwMDUwOEVCRSAvKiBCdW5kbGVQYXRoLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUU3Mjk0MDkxOTBG
MDMwNjAwMUE5MUI1IC8qIEJ1bmRsZVBhdGgubW0gKi87IH07CiAJCTlFQTVDN0EyMTkwRjA4ODcw
MDUwOEVCRSAvKiBJbml0aWFsaXplTExWTU1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RUE1QzdBMDE5MEYwNUQyMDA1MDhFQkUgLyogSW5pdGlh
bGl6ZUxMVk1NYWMuY3BwICovOyB9OworCQlBMTI1ODQ2RTFCNDVBMzYwMDBDQzdGNkMgLyogSW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTEyNTg0NkMxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJQTEyNTg0NkYxQjQ1QTM2MDAwQ0M3
RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTI1ODQ2RDFCNDVBMzYwMDBDQzdGNkMgLyog
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCAqLzsgfTsKIAkJQTEyQkJGRjIxQjA0NEE4
QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExMkJCRkYxMUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0Lmgg
Ki87IH07CiAJCUExMkJCRkY0MUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMkJCRkYzMUIwNDRB
OTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLzsgfTsKKwkJQTE1ODdENkQxQjREQzE0MTAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q2NzFCNERDMTQxMDBENjk4NDkgLyogSW50bERh
dGVUaW1lRm9ybWF0LmNwcCAqLzsgfTsKKwkJQTE1ODdENkUxQjREQzE0MTAwRDY5ODQ5IC8qIElu
dGxEYXRlVGltZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTE1ODdENjgxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5o
ICovOyB9OworCQlBMTU4N0Q2RjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTE1ODdENjkxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmNwcCAqLzsgfTsKKwkJQTE1ODdENzAxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTU4N0Q2QTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTE1ODdENzExQjREQzE0MTAwRDY5ODQ5IC8qIElu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q2QjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJQTE1ODdENzIxQjREQzE0MTAwRDY5ODQ5
IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1ODdENkMxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZS5oICovOyB9OworCQlBMTU4N0Q3NTFCNERDMUM2MDBENjk4
NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q3MzFCNERDMUM2MDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUExNTg3RDc2
MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q3NDFCNERD
MUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oICovOyB9Owog
CQlBMTcxMkIzQjExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCM0ExMUM3QjIxMjAwN0E1
MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCAqLzsgfTsKIAkJQTE3MTJCM0YxMUM3QjIyODAwN0E1MzE1
IC8qIFJlZ0V4cENhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTcxMkI0MTExQzdC
MjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTE4MTkz
RTMxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE4MTkzRTExQjRFMENE
QjAwRkMxMDI5IC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oICovOyB9OworCQlBMTgx
OTNFNDFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE4MTkzRTIxQjRFMENE
QjAwRkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCAqLzsgfTsKIAkJQTFBMDA5
QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NDA5MjNDMTU2RUVEM0IwMDU2NkNC
MiAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NjQwOTIzQjE1NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBMUI5RTIzOTFCNEUwRDY3MDBC
QzdGRUQgLyogSW50bENvbGxhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjlFMjMzMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3Iu
Y3BwICovOyB9OworCQlBMUI5RTIzQTFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5RTIzNDFC
NEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmggKi87IH07CisJCUExQjlFMjNCMUI0RTBE
NjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5RTIzNTFCNEUwRDY3MDBCQzdGRUQg
LyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwICovOyB9OworCQlBMUI5RTIzQzFCNEUwRDY3
MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjlFMjM2MUI0RTBENjcwMEJDN0ZFRCAvKiBJ
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oICovOyB9OworCQlBMUI5RTIzRDFCNEUwRDY3MDBCQzdG
RUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjlFMjM3MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29s
bGF0b3JQcm90b3R5cGUuY3BwICovOyB9OworCQlBMUI5RTIzRTFCNEUwRDY3MDBCQzdGRUQgLyog
SW50bENvbGxhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMUI5RTIzODFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJv
dG90eXBlLmggKi87IH07CisJCUExRDc5MkZDMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVy
Rm9ybWF0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExRDc5MkY2MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmNwcCAqLzsgfTsK
KwkJQTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkY3MUI0Mzg2NEIw
MDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmggKi87IH07CisJCUExRDc5MkZFMUI0Mzg2NEIw
MDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1
IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCUExRDc5MkZGMUI0
Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkY5MUI0Mzg2NEIwMDQ1
MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTFENzkzMDAx
QjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzkyRkExQjQzODY0QjAw
NDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwICovOyB9OworCQlBMUQ3OTMw
MTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzkyRkIxQjQzODY0QjAw
NDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCAqLzsgfTsKIAkJQTUwM0ZBMTkx
ODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTMxODhFMEZBRjAwMTEwRjE0
IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwogCQlBNTAzRkExQTE4OEUwRkIwMDAx
MTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3Jp
cHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUIxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2
YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTAzRkExNTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcCAqLzsgfTsKQEAgLTI5NzAsMTEgKzI5OTQsMzUgQEAKIAkJOUU3Mjk0MDkxOTBGMDMw
NjAwMUE5MUI1IC8qIEJ1bmRsZVBhdGgubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBCdW5kbGVQYXRoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
RTcyOTQwQTE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCdW5kbGVQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTlFQTVDN0EwMTkwRjA1RDIwMDUwOEVCRSAvKiBJbml0aWFsaXplTExWTU1hYy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJbml0aWFsaXplTExWTU1hYy5jcHA7
IHBhdGggPSBsbHZtL0luaXRpYWxpemVMTFZNTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTEyNTg0NkMxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
MTI1ODQ2RDFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEyQkJGRjExQjA0NEE4
QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW50bE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTJCQkZGMzFC
MDQ0QTk4MDA2NjRCNjkgLyogSW50bE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnRsT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTE1ODdENjcxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4N0Q2ODFCNERDMTQxMDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEludGxEYXRlVGltZUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4
N0Q2OTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4N0Q2QTFC
NERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE1ODdENkIxQjREQzE0MTAwRDY5ODQ5
IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4N0Q2QzFCNERDMTQxMDBENjk4NDkgLyogSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBMTU4N0Q3MzFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
MTU4N0Q3NDFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEyQjNBMTFD
N0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZWdFeHBDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEtleS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yQ29u
c3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxDb2xs
YXRvckNvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTgx
OTNFMjFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExQjlFMjMzMUI0RTBENjcwMEJDN0ZFRCAv
KiBJbnRsQ29sbGF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW50bENvbGxhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFCOUUyMzQx
QjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnRsQ29sbGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTFCOUUyMzUxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxDb2xsYXRvckNvbnN0cnVj
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFCOUUyMzYxQjRFMEQ2NzAw
QkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUExQjlFMjM3MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90
b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bENvbGxh
dG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFCOUUyMzgx
QjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsQ29sbGF0b3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTFENzkyRjYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJG
b3JtYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bE51bWJl
ckZvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRDc5MkY3MUI0Mzg2
NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUQ3OTJG
OTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUQ3OTJGQTFCNDM4NjRCMDA0NTE2RjUg
LyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTFENzkyRkIxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTAz
RkExMzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEph
dmFTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2
YVNjcmlwdENhbGxGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTAzRkEx
NTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjczLDYgKzQzMjEsMTIgQEAKIAkJCQlBNTMy
NDM4NDE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5oICov
LAogCQkJCUE1MzI0Mzg1MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVj
dHMuY3BwICovLAogCQkJCUE1MzI0Mzg2MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90
b2NvbE9iamVjdHMuaCAqLywKKwkJCQlBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENv
bGxhdG9yQ29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJQTE4MTkzRTIxQjRFMENEQjAwRkMxMDI5
IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCAqLywKKwkJCQlBMTU4N0Q3MzFCNERDMUM2
MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJ
QTE1ODdENzQxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5s
dXQuaCAqLywKKwkJCQlBMTI1ODQ2QzFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUExMjU4NDZEMUI0NUEzNjAwMENDN0Y2QyAvKiBJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUE3RDgwMUE2MTg4MEQ2QTgw
MDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8sCiAJCQkJQTdEODAxQTcxODgwRDZBODAwMjZD
MzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8sCiAJCQkJQkM4N0NEQjgxMDcxMkFDQTAwMDYxNENGIC8q
IEpTT05PYmplY3QubHV0LmggKi8sCkBAIC00NTE2LDYgKzQ1NzAsMjQgQEAKIAkJCQlBNzg4NTNG
ODE3OTcyNjI5MDAxNDQwRTQgLyogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oICovLAogCQkJCUJD
OUJCOTVCMEUxOTY4MDYwMERGODg1NSAvKiBJbnRlcm5hbEZ1bmN0aW9uLmNwcCAqLywKIAkJCQlC
QzExNjY3QTBFMTk5QzA1MDA4MDY2REQgLyogSW50ZXJuYWxGdW5jdGlvbi5oICovLAorCQkJCUEx
QjlFMjMzMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuY3BwICovLAorCQkJCUExQjlF
MjM0MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuaCAqLywKKwkJCQlBMUI5RTIzNTFC
NEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwICovLAorCQkJCUEx
QjlFMjM2MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oICovLAor
CQkJCUExQjlFMjM3MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuY3Bw
ICovLAorCQkJCUExQjlFMjM4MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5
cGUuaCAqLywKKwkJCQlBMTU4N0Q2NzFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9y
bWF0LmNwcCAqLywKKwkJCQlBMTU4N0Q2ODFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1l
Rm9ybWF0LmggKi8sCisJCQkJQTE1ODdENjkxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBMTU4N0Q2QTFCNERDMTQxMDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLywKKwkJCQlBMTU4N0Q2QjFCNERD
MTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCAqLywKKwkJCQlB
MTU4N0Q2QzFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgg
Ki8sCisJCQkJQTFENzkyRjYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuY3Bw
ICovLAorCQkJCUExRDc5MkY3MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Lmgg
Ki8sCisJCQkJQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAgKi8sCisJCQkJQTFENzkyRjkxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUExRDc5MkZBMUI0Mzg2NEIwMDQ1MTZGNSAv
KiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCAqLywKKwkJCQlBMUQ3OTJGQjFCNDM4NjRC
MDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oICovLAogCQkJCUExMkJCRkYz
MUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLywKIAkJCQlBMTJCQkZGMTFCMDQ0
QThCMDA2NjRCNjkgLyogSW50bE9iamVjdC5oICovLAogCQkJCTg2QkY2NDJBMTQ4REIyQjUwMDRE
RTM2QSAvKiBJbnRyaW5zaWMuaCAqLywKQEAgLTU3MDYsNiArNTc3OCw3IEBACiAJCQkJMTQ3Qjgz
QUMwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyQTExMTI0NjE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNEY0QjZGNTFBMDVDOTg0MDA1Q0FCNzYgLyogZ2Vu
ZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICov
LAorCQkJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwMzIwMThCRkZCRTEwMDVBMDgxMSAvKiBJ
bnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQkNERTcxOEVGMjk0MjAwMDAy
MDk2IC8qIEdDTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU3QkE2MTAxQTFBN0NFQzAw
RjFGN0I0IC8qIEhlYXBWZXJpZmllci5oIGluIEhlYWRlcnMgKi8sCkBAIC01NzU1LDYgKzU4Mjgs
NyBAQAogCQkJCTBGMjRFNTQxMTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJseUhlbHBlcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3ODRBMjYxMTFEMTY2MjIwMDU3NzZBQyAvKiBBU1RCdWlsZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjY3MzlEMjEzQkZERTcxMDAyM0Q4N0MgLyogQmlnSW50
ZWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTEyNTg0NkUxQjQ1QTM2MDAwQ0M3RjZDIC8qIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
M0VDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBCb29sZWFuT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTVEMkU2NjUxOTVFMTc0MDAwQTUxOEU3IC8qIEpTQ29udGV4dFJlZkludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKQEAgLTU3NjQsNiArNTgzOCw3IEBACiAJCQkJMEZCN0YzOTcxNUVEOEU0
NjAwRjE2N0IyIC8qIEJ1dHRlcmZseS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTgxNUVE
OEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTYy
RDJEMzkwMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggaW4gSGVhZGVycyAq
LywKKwkJCQlBMUI5RTIzQTFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMkZDQUUxMTE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVCYXNpY0Js
b2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0
ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3MjMwRUQxQ0UzMzAw
RjFGNjgxIC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTU4NDMsMTEg
KzU5MTgsMTMgQEAKIAkJCQlBNUVBNzBFODE5RjVCMTAxMDA5OEY1RUMgLyogQXVnbWVudGFibGVJ
bnNwZWN0b3JDb250cm9sbGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkwMzE3
QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTcwNEQ5MDQxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUI5RTIzQzFCNEUwRDY3MDBCQzdGRUQgLyog
SW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIwMTc3MTQz
RkNEM0YwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkYwNTRGQTFBQzM1QjQ0MDBFNUJFNTcgLyogRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjY2RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZHQWRqYWNlbmN5
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMTgxNkQwMkVCMjAwNTVBNURCIC8qIERG
R0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTczNzgxMEMxNzk5RUEyRTAwODE3NTMz
IC8qIERGR0FuYWx5c2lzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUI5RTIzRTFCNEUwRDY3MDBC
QzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjFF
M0E0NjE1MzRDQkFGMDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTVDM0ExQTYxOEMwNDkwMjAwQzk1OTNBIC8qIEpTR2xvYmFsT2JqZWN0Q29uc29s
ZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMjIxODc3NTA1NjAwODNCNjg3IC8q
IERGR0FyaXRoTW9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC01OTExLDYgKzU5ODgsNyBAQAogCQkJ
CTg2RUM5RENDMTMyOERGODIwMDJCMkFENyAvKiBERkdKSVRDb21waWxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTc4QTk3NzkxNzk3MzhCODAwOURGNzQ0IC8qIERGR0pJVEZpbmFsaXplci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZDOTdGNDAxODIwMjExOTAwMkM5QjI2IC8qIERGR0p1bXBSZXBs
YWNlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTEyNTg0NkYxQjQ1QTM2MDAwQ0M3RjZDIC8q
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzNB
NTM1QjE3OTlDRDVEMDAxNzBDMTkgLyogREZHTGF6eUpTVmFsdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMkI5Q0U5MTlEMEJBN0QwMEIxRDFCNSAvKiBERkdPYmplY3RNYXRlcmlhbGl6YXRpb25E
YXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q5QTI5ODE3QTBCQzc0MDBFRTI2MTggLyogREZH
TElDTVBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTYwNDAsNiArNjExOCw3IEBACiAJCQkJMEY2
QjFDQjYxODVGQzlFOTAwODQ1RDk3IC8qIEZUTEpTQ2FsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY4RjJCOTYxNzJFMDRBMzAwN0RCREE1IC8qIEZUTExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQ0VGQUUwMTgwNzM4QzAwMDQ3MkNFNCAvKiBGVExMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTE1ODdENzAxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExMDE3MDUxM0RCMDBCQjcyMkMgLyog
RlRMTG93ZXJERkdUb0xMVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5RDAyMTdBMEI5MDQw
MDc3M0FEOCAvKiBGVExMb3dlcmVkTm9kZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4
QTMxQzE3RDUxRjIyMDBDQTJDNDAgLyogRlRMT1NSRW50cnkuaCBpbiBIZWFkZXJzICovLApAQCAt
NjEwOCw2ICs2MTg3LDcgQEAKIAkJCQlDMjVGOEJDRTE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVt
ZW50YWxTd2VlcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5OTE1RUQ4RTQ2MDBGMTY3
QjIgLyogSW5kZXhpbmdIZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlBMTVFRDhF
NDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUExNTg3RDc2MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUu
bHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QjE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5k
ZXhpbmdUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNFRkFCMDE4MDVDQTZEMDA0NzJDRTQg
LyogSW5pdGlhbGl6ZUxMVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0VGQUNDMTgwNUU3NTUw
MDQ3MkNFNCAvKiBJbml0aWFsaXplTExWTVBPU0lYLmggaW4gSGVhZGVycyAqLywKQEAgLTYxNjIs
NiArNjI0Miw3IEBACiAJCQkJMEZBRjdFRkUxNjVCQTkxRjAwMEM4NDU1IC8qIEpJVERpc2Fzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJ
VEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjE0RTFGMTgxMjRBQ0UwMDlCNkI0
RCAvKiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFENzkz
MDExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg2Q0M4NUExMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjI0RTU0RDE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMzExNUFBODExMjAwOEYzNjNFIC8qIEpJVFN0
dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKQEAgLTYyNjMsNiArNjM0NCw3IEBACiAJCQkJN0Mx
ODRFMjMxN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3QzAwOENEQjE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDMTg0RTFGMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21p
c2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUExODE5M0U0MUI0RTBDREIwMEZDMTAy
OSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjI1
NTNEMjE2MTM2RTFBMDA5RjE3RDAgLyogSlNQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTky
OEZGM0MxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQyNjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNSZXRhaW5QdHIuaCBpbiBIZWFkZXJz
ICovLApAQCAtNjI3NCw2ICs2MzU2LDcgQEAKIAkJCQlCQzE4QzQ1RTBFMTZGNUNEMDBCMzQ0NjAg
LyogSlNTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDMUVBRjAxNzk4N0FCNjAwMjk5REIy
IC8qIEpTU3RhY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyNzBFMTZGNUNE
MDBCMzQ0NjAgLyogSlNTdHJpbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCUExNTg3RDc1MUI0REMx
QzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg2RTg1NTM5MTExQjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1aWxkZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTI2MDBCNUE3MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmlu
Z0pvaW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjgwRTE2RjVDRDAwQjM0NDYwIC8q
IEpTU3RyaW5nUmVmLmggaW4gSGVhZGVycyAqLywKQEAgLTYzNzcsNiArNjQ2MCw3IEBACiAJCQkJ
QkMwMkU5MTEwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMDJFOTEzMEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJvclBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDQzBCNjMxOEJFOTk1MDAwNkNFQkNDIC8q
IENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkgaW4gSGVhZGVycyAqLywKKwkJCQlBMTgxOTNF
MzFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkZCOTIyMDE2RDAzM0I3MDA1NUE1REIgLyogTm9kZUNvbnN0cnVjdG9y
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBs
YXRlUmVnaXN0cnlLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDNGMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBOb2Rlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC02NTAxLDYgKzY1ODUsNyBAQAogCQkJ
CUE3Mjk5REE2MTdEMTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTc5MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUQ3OTJGRDFCNDM4NjRCMDA0NTE2RjUgLyog
SW50bE51bWJlckZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZBRTY0QUExMzVFNUUxQzAw
OTYzMDEyIC8qIFNINEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGOEJERUIxQUQ0
Q0Y3MTAwREZFODg0IC8qIEluZmVycmVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2
NzA1MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC02NTc1LDcgKzY2NjAsMTEgQEAKIAkJCQkwRjVGMDhDRjE0NkM3NjMzMDAw
NDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdC
NjAxODIxNjM5RkQyQTAwMzcyQkEzIC8qIFVubGlua2VkQ29kZUJsb2NrLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJFODkyQzE2RDAyOEFEMDA5RTRGRDIgLyogVW51c2VkUG9pbnRlci5oIGluIEhl
YWRlcnMgKi8sCis8PDw8PDw8IFVwZGF0ZWQgdXBzdHJlYW0KIAkJCQk3QjM5Rjc3MDFCNjJERTMy
MDAzNjBGQjQgLyogV0FTTVJlYWRlci5oIGluIEhlYWRlcnMgKi8sCis9PT09PT09CisJCQkJQTE1
ODdENkUxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5oIGluIEhlYWRlcnMg
Ki8sCis+Pj4+Pj4+IFN0YXNoZWQgY2hhbmdlcwogCQkJCTBGOTYzQjM4MTNGQzZGRTkwMDAyRDlC
MiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDI2QTQ4MTQ2MENCQjMw
MDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlDNUU1RjE4
RTM1RjVFMDBENDMxQzMgLyogRlRMRFdBUkZSZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8sCkBAIC02
NjAzLDYgKzY2OTIsNyBAQAogCQkJCTJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJh
cnJpZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQjZENzUzMThBMzM3OTMwMDRBOTMw
MSAvKiBXcml0ZUJhcnJpZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM4MTUwQTE0
MDQzQkY1MDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTE1ODdENzIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMkExODdDQTc1OTAwODQzQjEwIC8q
IHh4ZC5wbCBpbiBIZWFkZXJzICovLAogCQkJCTBGM0ExQkZBMUE5RUNCN0QwMDBERTAxQSAvKiBE
RkdQdXRTdGFja1NpbmtpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MTg1LDYgKzcyNzUs
NyBAQAogCQkJCTBGRUEwQTMxMTcwRDQwQkYwMEJCNzIyQyAvKiBERkdDb21tb25EYXRhLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMzhCMDE3MTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21waWxh
dGlvbktleS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjM4QjAxOTE3Q0ZFNzU1MDBCMTQ0RDMg
LyogREZHQ29tcGlsYXRpb25Nb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExQjlFMjNCMUI0
RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjNCM0ExQTE1M0U2OEYyMDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCRTBGNzIxNkMxREIwMzAwODJDNUU4IC8qIERG
R0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjUxN0Ew
QjhDQzAwNzczQUQ4IC8qIERGR0NyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC03MjI4LDYgKzczMTksNyBAQAogCQkJCUE3RDg5Q0ZCMTdBMEI4Q0MwMDc3M0FE
OCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZG
MEYxOTkxNkI3MjlGNjAwNURGOTVCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE3NjdCNUI1MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3Jl
YXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUI5RTIzRDFCNEUwRDY3MDBCQzdG
RUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkJE
QzREMTUyMjgxODYwMENEODkxMCAvKiBERkdNaW5pZmllZE5vZGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTczNzgxMEQxNzk5RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkYwRjE5QzE2QjcyQTAzMDA1REY5NUIgLyogREZHTm9kZS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTczOTIsNiArNzQ4NCw3IEBACiAJCQkJMkFGNzM4MkMxOEJCQkY5
MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVG
RDAwODExODlCMTkxQTAwNjMzMjMxIC8qIEluc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBNTdEMjNFNTE4OTBDRUJGMDAzMUM3RkEgLyogSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMTU4N0Q2RjFCNERDMTQxMDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTUzMjQzODcxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3MDlGQjg2OTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1Nl
dENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MzI0Mzg5MTg1NjgzMzUwMDJF
RDY5MiAvKiBJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtNzQxNSw2ICs3NTA4LDcgQEAKIAkJCQlCQ0RENTFFQjBGQjhERjc0MDA0QThCREMgLyogSklU
T3Bjb2Rlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzEyMzZFNTExOTVGMzNDMDBCRDIxNzQg
LyogSklUT3Bjb2RlczMyXzY0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNkU4NDVBMTkwMzBC
RUYwMDU2Mjc0MSAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQTE1ODdENkQxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjI0RTU0QzE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9u
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkNDODVDNDBFRTdBODk0MDAyODg2ODIgLyogSklU
UHJvcGVydHlBY2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDMUU4RTQxMTJFNzJFRjAw
QTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03
NTQxLDYgKzc2MzUsNyBAQAogCQkJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZl
bEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0QjcyM0IyMTJEN0RBNDYwMDNC
RDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQjNF
Q0YxNjIzN0Y2QzAwQUI2N0FEIC8qIE1hY3JvQXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUExRDc5MzAwMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNy
b0Fzc2VtYmxlckFSTS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzI5MDA5QzE3OTc2QzYwMDAz
MTcyOTggLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTND
RTA4NTE4QkMxQTU2MDBCRURGNzYgLyogQ29uc29sZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTc2MjAsNiArNzcxNSw3IEBACiAJCQkJQTVCQTE1RTkxODIzNDBCMzAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3Rvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJBREZBMjYzMThFRjM1NDAw
MDRGOUZDQyAvKiBHQ0xvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5NDU1OEYxODI0
NUVGRDAwQ0MzODQzIC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQTFENzkyRkUxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUJBMTVFQzE4MjM0MEI0MDBBODJFNjkg
LyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywK
IAkJCQlBNUJBMTVFRTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGMjRFNTUwMTdFRTI3NDkwMEFCQjIxNyAvKiBS
ZXBhdGNoLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzYyOCw2ICs3NzI0LDcgQEAKIAkJCQk3QjM5
Rjc3MjFCNjM1NzREMDAzNjBGQjQgLyogV0FTTVJlYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDI5RDg4NTBFRDIxQzNEMDBCODk2MTkgLyogU2FtcGxpbmdUb29sLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTcwRUMwRUM2MUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvclByb3Rv
dHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUI5RTIzOTFCNEUwRDY3MDBCQzdGRUQgLyog
SW50bENvbGxhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1RkQwMDY3MTg5QUZFOUMwMDYz
MzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVGRDAwNkQx
ODlCMDBBQTAwNjMzMjMxIC8qIFNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjA0Mzk2RDFCMDNEQzBCMDA5NTk4QjcgLyogREZHQ29tYmluZWRMaXZlbmVzcy5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTc2NzUsNiArNzc3Miw4IEBACiAJCQkJMEZBMkMxN0IxN0Q3Q0Y4NDAw
OUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzM4NjU1
NTExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMkI2NzA3MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5Q29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBMUQ3OTJGQzFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJl
ckZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMTU4N0Q3MTFCNERDMTQxMDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI2NzBBMTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5VHlwZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MkM5NTJCOTE5QTI4QTFDMDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRjQyNzRBMTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODYuYyBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgKaW5kZXggNDMyZmI2YzFiMTZmY2YyZjIyNzExM2QyNzZlYzA4MjVmYzUyOWJk
NC4uNmVmY2Q0YzRhODA2YjFmYTk3OGE0MGJiNGUzZDdkMDFmYjljODYxNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0zMyw3
ICszMyw5IEBACiAgICAgbWFjcm8oQXJyYXlJdGVyYXRvcikgXAogICAgIG1hY3JvKEJZVEVTX1BF
Ul9FTEVNRU5UKSBcCiAgICAgbWFjcm8oQm9vbGVhbikgXAorICAgIG1hY3JvKENvbGxhdG9yKSBc
CiAgICAgbWFjcm8oRGF0ZSkgXAorICAgIG1hY3JvKERhdGVUaW1lRm9ybWF0KSBcCiAgICAgbWFj
cm8oRXJyb3IpIFwKICAgICBtYWNybyhFdmFsRXJyb3IpIFwKICAgICBtYWNybyhGdW5jdGlvbikg
XApAQCAtNDUsNiArNDcsNyBAQAogICAgIG1hY3JvKE1hdGgpIFwKICAgICBtYWNybyhOYU4pIFwK
ICAgICBtYWNybyhOdW1iZXIpIFwKKyAgICBtYWNybyhOdW1iZXJGb3JtYXQpIFwKICAgICBtYWNy
byhPYmplY3QpIFwKICAgICBtYWNybyhQcm9taXNlKSBcCiAgICAgbWFjcm8oUmFuZ2VFcnJvcikg
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggZDYzMjlmZGYxYjAyNTBkNzgyNGM4YzhiZDcwZGQ2ODcwNDcyYjRmYy4uZWU2NTZh
MzA5NzRlM2VjNWRiMTA0ZjE2YzUzNGQ0MjZiMmJlODVmNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCkBAIC01Myw3ICs1Myw2IEBA
IHVzaW5nIG5hbWVzcGFjZSBXVEY7CiBuYW1lc3BhY2UgSlNDIHsKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUGFyc2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVOb3coRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVVVEMoRXhlY1N0YXRlKik7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgKaW5kZXggMDU0ZjU3MWQ1NzllOGNlNGYzNGI1NDA5
MTdiOGQwMjhiNTBkZmI5Yi4uY2RhYzk3ZDMxYmEzNmE5YzIyZWFjMDI0OGFmYzZmNTIxMmJmNzkx
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVj
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9y
LmgKQEAgLTU5LDYgKzU5LDggQEAgcHJpdmF0ZToKIAogSlNPYmplY3QqIGNvbnN0cnVjdERhdGUo
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0Jik7CiAKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZU5vdyhFeGVjU3RhdGUqKTsKKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKICNlbmRpZiAvLyBEYXRlQ29uc3RydWN0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTgxMDhmYzE4NTk4
ZDNlMmM3YWQ4OWUwY2YxZjg4ZDRlNWExMWVjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKQEAgLTAsMCArMSwxMjIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRl
ckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJ
bnRsQ29sbGF0b3IuaCIKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiRXJyb3IuaCIK
KyNpbmNsdWRlICJJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkludGxPYmpl
Y3QuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJTbG90Vmlz
aXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bENvbGxhdG9yOjpzX2luZm8gPSB7ICJPYmpl
Y3QiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxDb2xsYXRvcikg
fTsKKworSW50bENvbGxhdG9yKiBJbnRsQ29sbGF0b3I6OmNyZWF0ZShWTSYgdm0sIEludGxDb2xs
YXRvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKK3sKKyAgICBJbnRsQ29sbGF0b3IqIGZvcm1h
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxDb2xsYXRvcj4odm0uaGVhcCkpIElu
dGxDb2xsYXRvcih2bSwgY29uc3RydWN0b3ItPmNvbGxhdG9yU3RydWN0dXJlKCkpOworICAgIGZv
cm1hdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBmb3JtYXQ7Cit9CisKK1N0cnVj
dHVyZSogSW50bENvbGxhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxDb2xsYXRvcjo6SW50bENv
bGxhdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU0Rlc3RydWN0aWJs
ZU9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxDb2xsYXRvcjo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBB
U1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Cit9CisKK3ZvaWQgSW50bENvbGxhdG9yOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxJbnRsQ29sbGF0b3IqPihjZWxsKS0+
SW50bENvbGxhdG9yOjp+SW50bENvbGxhdG9yKCk7Cit9CisKK3ZvaWQgSW50bENvbGxhdG9yOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAg
SW50bENvbGxhdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEludGxDb2xsYXRvcio+KGNlbGwpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKworICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9ib3VuZENvbXBhcmUpOworfQorCit2b2lkIEludGxDb2xs
YXRvcjo6c2V0Qm91bmRDb21wYXJlKFZNJiB2bSwgSlNCb3VuZEZ1bmN0aW9uKiBmb3JtYXQpCit7
CisgICAgbV9ib3VuZENvbXBhcmUuc2V0KHZtLCB0aGlzLCBmb3JtYXQpOworfQorCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvckZ1bmNDb21wYXJlKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICAvLyAxMC4zLjQgQ29sbGF0b3IgQ29tcGFyZSBGdW5jdGlvbnMgKEVDTUEt
NDAyIDIuMCkKKyAgICAvLyAxLiBMZXQgY29sbGF0b3IgYmUgdGhlIHRoaXMgdmFsdWUuCisgICAg
SW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4oZXhl
Yy0+dGhpc1ZhbHVlKCkpOworCisgICAgLy8gMi4gQXNzZXJ0OiBUeXBlKGNvbGxhdG9yKSBpcyBP
YmplY3QgYW5kIGNvbGxhdG9yIGhhcyBhbiBbW2luaXRpYWxpemVkQ29sbGF0b3JdXSBpbnRlcm5h
bCBzbG90IHdob3NlIHZhbHVlIGlzIHRydWUuCisgICAgaWYgKCFjb2xsYXRvcikKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisKKyAgICAvLyAz
LiBJZiB4IGlzIG5vdCBwcm92aWRlZCwgbGV0IHggYmUgdW5kZWZpbmVkLgorICAgIC8vIDQuIElm
IHkgaXMgbm90IHByb3ZpZGVkLCBsZXQgeSBiZSB1bmRlZmluZWQuCisgICAgLy8gNS4gTGV0IFgg
YmUgVG9TdHJpbmcoeCkuCisgICAgSlNTdHJpbmcqIGEgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0
cmluZyhleGVjKTsKKyAgICAvLyA2LiBSZXR1cm5JZkFicnVwdChYKS4KKyAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CisKKyAgICAvLyA3LiBMZXQgWSBiZSBUb1N0cmluZyh5KS4KKyAgICBKU1N0cmluZyog
YiA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpOworICAgIC8vIDguIFJldHVybklm
QWJydXB0KFkpLgorICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIC8vIDkuIFJldHVybiBDb21w
YXJlU3RyaW5ncyhjb2xsYXRvciwgWCwgWSkuCisKKyAgICAvLyAxMC4zLjQgQ29tcGFyZVN0cmlu
Z3MgYWJzdHJhY3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAyLjApCisgICAgLy8gRklYTUU6IEltcGxl
bWVudCBDb21wYXJlU3RyaW5ncy4KKworICAgIC8vIFJldHVybiBzaW1wbGUgY2hlY2sgdW50aWwg
cHJvcGVybHkgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cihjb2RlUG9pbnRDb21wYXJlKGEtPnZhbHVlKGV4ZWMpLmltcGwoKSwgYi0+dmFsdWUoZXhlYyku
aW1wbCgpKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJ
TlRMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mZjIyNTE0OTQxYTIxMTg2M2Y5YzI4NDJmYzE3MGQ2MWJjYTQ2MTAyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmgK
QEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29u
ZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRsQ29s
bGF0b3JfaAorI2RlZmluZSBJbnRsQ29sbGF0b3JfaAorCisjaWYgRU5BQkxFKElOVEwpCisKKyNp
bmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgSW50bENvbGxhdG9yQ29uc3RydWN0b3I7CitjbGFzcyBKU0JvdW5kRnVuY3Rpb247CisKK2Ns
YXNzIEludGxDb2xsYXRvciA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworCisgICAgc3RhdGljIElu
dGxDb2xsYXRvciogY3JlYXRlKFZNJiwgSW50bENvbGxhdG9yQ29uc3RydWN0b3IqKTsKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3Vu
ZENvbXBhcmUoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kQ29tcGFyZS5nZXQoKTsgfQorICAgIHZv
aWQgc2V0Qm91bmRDb21wYXJlKFZNJiwgSlNCb3VuZEZ1bmN0aW9uKik7CisKK3Byb3RlY3RlZDoK
KyAgICBJbnRsQ29sbGF0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKK3ByaXZhdGU6Cisg
ICAgV3JpdGVCYXJyaWVyPEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZENvbXBhcmU7Cit9OworICAg
IAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JGdW5jQ29tcGFyZShF
eGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5U
TCkKKworI2VuZGlmIC8vIEludGxDb2xsYXRvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDQxZGQxN2NkOGViMTEyYTIxZWZiNmMyMWExNDQ5NGZiMmVkNmQ2NQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVj
dG9yLmNwcApAQCAtMCwwICsxLDE4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5
IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCIKKwor
I2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsQ29s
bGF0b3IuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJ
bnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJK
U0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0
b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxDb2xs
YXRvckNvbnN0cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bENvbGxhdG9yQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0ZSop
OworCit9CisKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAmY29sbGF0
b3JDb25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxDb2xsYXRvckNvbnN0
cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5o
CitAYmVnaW4gY29sbGF0b3JDb25zdHJ1Y3RvclRhYmxlCisgIHN1cHBvcnRlZExvY2FsZXNPZiAg
ICAgICAgICAgICBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2Yg
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKworSW50bENvbGxhdG9y
Q29uc3RydWN0b3IqIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSW50bENvbGxhdG9yUHJvdG90eXBlKiBjb2xsYXRvclByb3RvdHlw
ZSwgU3RydWN0dXJlKiBjb2xsYXRvclN0cnVjdHVyZSkKK3sKKyAgICBJbnRsQ29sbGF0b3JDb25z
dHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsQ29s
bGF0b3JDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKHZtLCBz
dHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgY29sbGF0b3JQ
cm90b3R5cGUsIGNvbGxhdG9yU3RydWN0dXJlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9
CisKK1N0cnVjdHVyZSogSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQor
eworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKwor
SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1
cmUpCit7Cit9CisKK3ZvaWQgSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgSW50bENvbGxhdG9yUHJvdG90eXBlKiBjb2xsYXRvclByb3RvdHlwZSwgU3RydWN0
dXJlKiBjb2xsYXRvclN0cnVjdHVyZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
QVNDSUlMaXRlcmFsKCJDb2xsYXRvciIpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBjb2xsYXRvclByb3RvdHlwZSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25s
eSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgbV9jb2xsYXRvclN0cnVjdHVyZS5zZXQo
dm0sIHRoaXMsIGNvbGxhdG9yU3RydWN0dXJlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RJbnRsQ29sbGF0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8v
IDEwLjEuMiBJbnRsLkNvbGxhdG9yIChbbG9jYWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQwMiAy
LjApCisgICAgLy8gMS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBi
ZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1Rh
cmdldC4KKyAgICBKU1ZhbHVlIG5ld1RhcmdldCA9IGV4ZWMtPm5ld1RhcmdldCgpOworICAgIGlm
ICghbmV3VGFyZ2V0IHx8IG5ld1RhcmdldC5pc1VuZGVmaW5lZCgpKQorICAgICAgICBuZXdUYXJn
ZXQgPSBleGVjLT5jYWxsZWUoKTsKKworICAgIC8vIDIuIExldCBjb2xsYXRvciBiZSBPcmRpbmFy
eUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVDb2xsYXRvclByb3RvdHlwZSUpLgor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IElu
dGxDb2xsYXRvcjo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3IqPihl
eGVjLT5jYWxsZWUoKSkpOworICAgIGlmIChjb2xsYXRvciAmJiAhanNEeW5hbWljQ2FzdDxJbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvcio+KG5ld1RhcmdldCkpIHsKKyAgICAgICAgSlNWYWx1ZSBwcm90
byA9IGFzT2JqZWN0KG5ld1RhcmdldCktPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlKTsKKyAgICAgICAgYXNPYmplY3QoY29sbGF0b3IpLT5zZXRQcm90b3R5cGVXaXRo
Q3ljbGVDaGVjayhleGVjLCBwcm90byk7CisgICAgfQorCisgICAgLy8gMy4gUmV0dXJuSWZBYnJ1
cHQoY29sbGF0b3IpLgorICAgIEFTU0VSVChjb2xsYXRvcik7CisKKyAgICAvLyA0LiBSZXR1cm4g
SW5pdGlhbGl6ZUNvbGxhdG9yKGNvbGxhdG9yLCBsb2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBG
SVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShJbml0aWFsaXplQ29sbGF0b3IoY29sbGF0b3Is
IGxvY2FsZXMsIG9wdGlvbnMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29sbGF0
b3IpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsQ29sbGF0b3Io
RXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDEwLjEuMiBJbnRsLkNvbGxhdG9yIChbbG9jYWxl
cyBbLCBvcHRpb25zXV0pIChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gSWYgTmV3VGFyZ2V0IGlz
IHVuZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVjdCwg
ZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KKyAgICAvLyBOZXdUYXJnZXQgaXMgYWx3
YXlzIHVuZGVmaW5lZCB3aGVuIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLgorCisgICAgLy8gMi4gTGV0
IGNvbGxhdG9yIGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJUNv
bGxhdG9yUHJvdG90eXBlJSkuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBJbnRsQ29s
bGF0b3IqIGNvbGxhdG9yID0gSW50bENvbGxhdG9yOjpjcmVhdGUodm0sIGpzQ2FzdDxJbnRsQ29s
bGF0b3JDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKSk7CisKKyAgICAvLyAzLiBSZXR1cm5J
ZkFicnVwdChjb2xsYXRvcikuCisgICAgQVNTRVJUKGNvbGxhdG9yKTsKKworICAgIC8vIDQuIFJl
dHVybiBJbml0aWFsaXplQ29sbGF0b3IoY29sbGF0b3IsIGxvY2FsZXMsIG9wdGlvbnMpLgorICAg
IC8vIEZJWE1FOiByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEluaXRpYWxpemVDb2xsYXRvcihjb2xs
YXRvciwgbG9jYWxlcywgb3B0aW9ucykpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
b2xsYXRvcik7Cit9CisKK0NvbnN0cnVjdFR5cGUgSW50bENvbGxhdG9yQ29uc3RydWN0b3I6Omdl
dENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sK
KyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEludGxDb2xsYXRv
cjsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisKK0NhbGxUeXBlIEludGxDb2xs
YXRvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEp
Cit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEludGxDb2xsYXRvcjsKKyAg
ICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitib29sIEludGxDb2xsYXRvckNvbnN0cnVjdG9y
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0
dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBjb2xsYXRv
ckNvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcio+KG9iamVj
dCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bENvbGxhdG9yQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICAvLyAxMC4yLjIgSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRMb2NhbGVz
T2YobG9jYWxlcyBbLCBvcHRpb25zXSkgKEVDTUEtNDAyIDIuMCkKKworICAgIC8vIDEuIExldCBy
ZXF1ZXN0ZWRMb2NhbGVzIGJlIENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QobG9jYWxlcykuCisgICAg
Ly8gRklYTUU6IHJlcXVlc3RlZCA9IENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QobG9jYWxlcyk7CisK
KyAgICAvLyAyLiBSZXR1cm5JZkFicnVwdChyZXF1ZXN0ZWRMb2NhbGVzKS4KKyAgICAvLyBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgLy8gICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisKKyAgICAvLyAzLiBSZXR1cm4gU3VwcG9ydGVkTG9jYWxlcyglQ29s
bGF0b3IlLltbYXZhaWxhYmxlTG9jYWxlc11dLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zKS4K
KyAgICAvLyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTdXBwb3J0ZWRMb2NhbGVzKGF2
YWlsYWJsZSwgcmVxdWVzdGVkLCBvcHRpb25zKSk7CisKKyAgICAvLyBSZXR1cm4gZW1wdHkgYXJy
YXkgdW50aWwgcHJvcGVybHkgaW1wbGVtZW50ZWQuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2Jh
bE9iamVjdCgpOworICAgIEpTQXJyYXkqIHN1cHBvcnRlZExvY2FsZXMgPSBKU0FycmF5Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5k
ZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKKyAgICBp
ZiAoIXN1cHBvcnRlZExvY2FsZXMpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
c3VwcG9ydGVkTG9jYWxlcyk7Cit9CisgICAgCit2b2lkIEludGxDb2xsYXRvckNvbnN0cnVjdG9y
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SW50bENvbGxh
dG9yQ29uc3RydWN0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY29sbGF0b3JT
dHJ1Y3R1cmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJ
TlRMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxh
dG9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xs
YXRvckNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFhOThmMmZhYTI0NzliODRmNzliNzEwNzVm
NWU5ODdmYWVlNzZmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWls
LmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcl9oCisjZGVm
aW5lIEludGxDb2xsYXRvckNvbnN0cnVjdG9yX2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5j
bHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50
bENvbGxhdG9yOworY2xhc3MgSW50bENvbGxhdG9yUHJvdG90eXBlOworCitjbGFzcyBJbnRsQ29s
bGF0b3JDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciogY3Jl
YXRlKFZNJiwgU3RydWN0dXJlKiwgSW50bENvbGxhdG9yUHJvdG90eXBlKiwgU3RydWN0dXJlKik7
CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIFN0cnVjdHVyZSogY29s
bGF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NvbGxhdG9yU3RydWN0dXJlLmdldCgp
OyB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bENvbGxh
dG9yUHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisKK3ByaXZhdGU6CisgICAgSW50bENvbGxhdG9y
Q29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBn
ZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2Fs
bFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NvbGxhdG9y
U3RydWN0dXJlOworfTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJ
bnRsQ29sbGF0b3IoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxJbnRsQ29sbGF0b3IoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9y
UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDZkZGJmYzhjMGY5ZDYxZjlmYzUyYTI3OWM1ZGY3
ZjMwYmNhNzM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNv
bSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxDb2xsYXRv
clByb3RvdHlwZS5oIgorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJFcnJvci5oIgor
I2luY2x1ZGUgIkludGxDb2xsYXRvci5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIK
KyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFU
SUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bENvbGxhdG9yUHJvdG90eXBl
KTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJv
dG90eXBlR2V0dGVyQ29tcGFyZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhl
Y1N0YXRlKik7CisKK30KKworI2luY2x1ZGUgIkludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsQ29sbGF0b3JQcm90b3R5
cGU6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZJbnRsQ29sbGF0b3I6OnNfaW5mbywgJmNvbGxhdG9y
UHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bENvbGxhdG9yUHJvdG90eXBl
KSB9OworCisvKiBTb3VyY2UgZm9yIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaAorQGJlZ2lu
IGNvbGxhdG9yUHJvdG90eXBlVGFibGUKKyAgY29tcGFyZSAgICAgICAgICBJbnRsQ29sbGF0b3JQ
cm90b3R5cGVHZXR0ZXJDb21wYXJlICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorICByZXNvbHZl
ZE9wdGlvbnMgIEludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMgIERvbnRF
bnVtfEZ1bmN0aW9uIDAKK0BlbmQKKyovCisKK0ludGxDb2xsYXRvclByb3RvdHlwZSogSW50bENv
bGxhdG9yUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQoreworICAgIEludGxDb2xsYXRvclByb3RvdHlwZSogb2JqZWN0ID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxhdG9yUHJvdG90eXBlPih2bS5oZWFwKSkg
SW50bENvbGxhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNo
Q3JlYXRpb24odm0pOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSW50bENv
bGxhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxDb2xsYXRvclByb3RvdHlwZTo6
SW50bENvbGxhdG9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
OiBJbnRsQ29sbGF0b3Iodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsQ29sbGF0b3JQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7Cit9CisKK2Jvb2wgSW50bENvbGxhdG9yUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1
bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgY29sbGF0b3JQcm90b3R5cGVUYWJsZSwganNDYXN0
PEludGxDb2xsYXRvclByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9
CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0
dGVyQ29tcGFyZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTAuMy4zIEludGwuQ29sbGF0
b3IucHJvdG90eXBlLmNvbXBhcmUgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBMZXQgY29sbGF0
b3IgYmUgdGhpcyBDb2xsYXRvciBvYmplY3QuCisgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9
IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlm
ICghY29sbGF0b3IpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIENvbGxh
dG9yIikpKTsKKworICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRDb21wYXJlID0gY29sbGF0b3It
PmJvdW5kQ29tcGFyZSgpOworICAgIC8vIDIuIElmIGNvbGxhdG9yLltbYm91bmRDb21wYXJlXV0g
aXMgdW5kZWZpbmVkLAorICAgIGlmICghYm91bmRDb21wYXJlKSB7CisgICAgICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2xs
YXRvci0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgIC8vIGEuIExldCBGIGJlIGEgbmV3IGJ1aWx0
LWluIGZ1bmN0aW9uIG9iamVjdCBhcyBkZWZpbmVkIGluIDExLjMuNC4KKyAgICAgICAgLy8gYi4g
VGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAyLgorICAgICAgICBKU0Z1bmN0
aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
MiwgQVNDSUlMaXRlcmFsKCJjb21wYXJlIiksIEludGxDb2xsYXRvckZ1bmNDb21wYXJlLCBOb0lu
dHJpbnNpYyk7CisgICAgICAgIEpTQXJyYXkqIGJvdW5kQXJncyA9IEpTQXJyYXk6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIDApOworICAgICAgICBp
ZiAoIWJvdW5kQXJncykKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKworICAgICAgICAvLyBjLiBMZXQgYmMgYmUgQm91bmRG
dW5jdGlvbkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCisgICAgICAgIGJvdW5kQ29tcGFyZSA9
IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwg
Y29sbGF0b3IsIGJvdW5kQXJncywgMiwgQVNDSUlMaXRlcmFsKCJjb21wYXJlIikpOworICAgICAg
ICAvLyBkLiBTZXQgY29sbGF0b3IuW1tib3VuZENvbXBhcmVdXSB0byBiYy4KKyAgICAgICAgY29s
bGF0b3ItPnNldEJvdW5kQ29tcGFyZSh2bSwgYm91bmRDb21wYXJlKTsKKyAgICB9CisgICAgLy8g
My4gUmV0dXJuIGNvbGxhdG9yLltbYm91bmRDb21wYXJlXV0uCisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShib3VuZENvbXBhcmUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIC8vIDEwLjMuNSBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlv
bnMoKSAoRUNNQS00MDIgMi4wKQorICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFt
aWNDYXN0PEludGxDb2xsYXRvcio+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWNvbGxh
dG9yKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIENvbGxh
dG9yIikpKTsKKworICAgIC8vIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgbmV3IG9iamVjdCB3aG9z
ZSBwcm9wZXJ0aWVzIGFuZCBhdHRyaWJ1dGVzIGFyZSBzZXQgYXMgaWYgY29uc3RydWN0ZWQgYnkg
YW4gb2JqZWN0IGxpdGVyYWwgYXNzaWduaW5nIHRvIGVhY2ggb2YgdGhlIGZvbGxvd2luZyBwcm9w
ZXJ0aWVzIHRoZSB2YWx1ZSBvZiB0aGUgY29ycmVzcG9uZGluZyBpbnRlcm5hbCBzbG90IG9mIHRo
aXMgQ29sbGF0b3Igb2JqZWN0IChzZWUgMTAuNCk6IGxvY2FsZSwgdXNhZ2UsIHNlbnNpdGl2aXR5
LCBpZ25vcmVQdW5jdHVhdGlvbiwgY29sbGF0aW9uLCBhcyB3ZWxsIGFzIHRob3NlIHByb3BlcnRp
ZXMgc2hvd24gaW4gVGFibGUgMSB3aG9zZSBrZXlzIGFyZSBpbmNsdWRlZCBpbiB0aGUgJUNvbGxh
dG9yJVtbcmVsZXZhbnRFeHRlbnNpb25LZXlzXV0gaW50ZXJuYWwgc2xvdCBvZiB0aGUgc3RhbmRh
cmQgYnVpbHQtaW4gb2JqZWN0IHRoYXQgaXMgdGhlIGluaXRpYWwgdmFsdWUgb2YgSW50bC5Db2xs
YXRvci4KKworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhl
Yyk7CisKKyAgICAvLyBGSVhNRTogUG9wdWxhdGUgb2JqZWN0IGZyb20gaW50ZXJuYWwgc2xvdHMu
CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9wdGlvbnMpOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
ODE2NDI2NzllOWY1MTIxNDVjZGY3ZTAyY2NhZjQ2OTdmZWI3Y2MxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmgK
QEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29u
ZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRsQ29s
bGF0b3JQcm90b3R5cGVfaAorI2RlZmluZSBJbnRsQ29sbGF0b3JQcm90b3R5cGVfaAorCisjaWYg
RU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKKyNpbmNsdWRlICJKU09i
amVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bENvbGxhdG9yUHJvdG90eXBl
IDogcHVibGljIEludGxDb2xsYXRvciB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRsQ29sbGF0
b3IgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAgIHN0
YXRpYyBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVj
dGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworcHJpdmF0ZToKKyAgICBJbnRs
Q29sbGF0b3JQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5UTCkKKworI2VuZGlmIC8vIEludGxDb2xsYXRvclByb3RvdHlwZV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43NGNjM2RjNWYzNGNkMmZhYTZkNjc4NzVkMDZjY2Y1NDY2YTEzMWIzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
LmNwcApAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZh
bldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgorCisjaWYgRU5BQkxF
KElOVEwpCisKKyNpbmNsdWRlICJEYXRlQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJEYXRlSW5z
dGFuY2UuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQm91
bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1
ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNz
SW5mbyBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bERhdGVUaW1lRm9ybWF0KSB9OworCitJbnRs
RGF0ZVRpbWVGb3JtYXQqIEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKFZNJiB2bSwgSW50bERh
dGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQoreworICAgIEludGxEYXRlVGlt
ZUZvcm1hdCogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERhdGVUaW1l
Rm9ybWF0Pih2bS5oZWFwKSkgSW50bERhdGVUaW1lRm9ybWF0KHZtLCBjb25zdHJ1Y3Rvci0+ZGF0
ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKSk7CisgICAgZm9ybWF0LT5maW5pc2hDcmVhdGlvbih2bSk7
CisgICAgcmV0dXJuIGZvcm1hdDsKK30KKworU3RydWN0dXJlKiBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKK30KKworSW50bERhdGVUaW1lRm9ybWF0OjpJbnRsRGF0ZVRpbWVGb3JtYXQo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bERhdGVUaW1lRm9ybWF0OjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFT
U0VSVChpbmhlcml0cyhpbmZvKCkpKTsKK30KKwordm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRl
c3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PEludGxEYXRlVGltZUZvcm1h
dCo+KGNlbGwpLT5JbnRsRGF0ZVRpbWVGb3JtYXQ6On5JbnRsRGF0ZVRpbWVGb3JtYXQoKTsKK30K
Kwordm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2JvdW5kRm9ybWF0KTsKK30KKwordm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNldEJv
dW5kRm9ybWF0KFZNJiB2bSwgSlNCb3VuZEZ1bmN0aW9uKiBmb3JtYXQpCit7CisgICAgbV9ib3Vu
ZEZvcm1hdC5zZXQodm0sIHRoaXMsIGZvcm1hdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICAvLyAxMi4zLjQgRGF0ZVRpbWUgRm9ybWF0IEZ1bmN0aW9ucyAoRUNNQS00
MDIgMi4wKQorICAgIC8vIDEuIExldCBkdGYgYmUgdGhlIHRoaXMgdmFsdWUuCisgICAgSW50bERh
dGVUaW1lRm9ybWF0KiBmb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+
KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICAvLyAyLiBBc3NlcnQ6IFR5cGUoZHRmKSBpcyBPYmpl
Y3QgYW5kIGR0ZiBoYXMgYW4gW1tpbml0aWFsaXplZERhdGVUaW1lRm9ybWF0XV0gaW50ZXJuYWwg
c2xvdCB3aG9zZSB2YWx1ZSBpcyB0cnVlLgorICAgIGlmICghZm9ybWF0KQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKworICAgIEpTVmFsdWUg
ZGF0ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIGRvdWJsZSB2YWx1ZTsKKworICAgIC8vIDMu
IElmIGRhdGUgaXMgbm90IHByb3ZpZGVkIG9yIGlzIHVuZGVmaW5lZCwgdGhlbgorICAgIGlmIChk
YXRlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgLy8gYS4gTGV0IHggYmUgJURhdGVfbm93JSgp
LgorICAgICAgICB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShkYXRlTm93KGV4ZWMpKS50b051bWJl
cihleGVjKTsKKyAgICAvLyA0LiBFbHNlCisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gYS4gTGV0
IHggYmUgVG9OdW1iZXIoZGF0ZSkuCisgICAgICAgIHZhbHVlID0gZGF0ZS50b051bWJlcihleGVj
KTsKKyAgICAgICAgLy8gYi4gUmV0dXJuSWZBYnJ1cHQoeCkuCisgICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisgICAgfQorCisgICAgLy8gNS4gUmV0dXJuIEZvcm1hdERhdGVUaW1lKGR0Ziwg
eCkuCisKKyAgICAvLyAxMi4zLjQgRm9ybWF0RGF0ZVRpbWUgYWJzdHJhY3Qgb3BlcmF0aW9uIChF
Q01BLTQwMiAyLjApCisKKyAgICAvLyAxLiBJZiB4IGlzIG5vdCBhIGZpbml0ZSBOdW1iZXIsIHRo
ZW4gdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUo
dmFsdWUpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93UmFuZ2VFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoImRhdGUgdmFsdWUgaXMgbm90IGZpbml0ZSBpbiBEYXRlVGltZUZv
cm1hdC5mb3JtYXQoKSIpKSk7CisKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IDIgLSA5CisKKyAg
ICAvLyBSZXR1cm4gbmV3IERhdGUodmFsdWUpLnRvU3RyaW5nKCkgdW50aWwgcHJvcGVybHkgaW1w
bGVtZW50ZWQuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOworICAgIERhdGVJ
bnN0YW5jZSogZCA9IERhdGVJbnN0YW5jZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmRhdGVT
dHJ1Y3R1cmUoKSwgdmFsdWUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShk
KS50b1N0cmluZyhleGVjKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
RU5BQkxFKElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
YXRlVGltZUZvcm1hdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkYWVkMTM4ZmIwOGRjZmEzYmU2N2QzN2M4M2E0
N2RiNGFhYmNiZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEludGxEYXRlVGltZUZvcm1hdF9oCisjZGVmaW5lIEludGxEYXRl
VGltZUZvcm1hdF9oCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3RvcjsKK2NsYXNzIEpTQm91bmRGdW5jdGlvbjsKKworY2xhc3MgSW50bERhdGVU
aW1lRm9ybWF0IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0
eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgSW50bERhdGVU
aW1lRm9ybWF0KiBjcmVhdGUoVk0mLCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciopOwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBKU0JvdW5kRnVuY3Rpb24q
IGJvdW5kRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEZvcm1hdC5nZXQoKTsgfQorICAg
IHZvaWQgc2V0Qm91bmRGb3JtYXQoVk0mLCBKU0JvdW5kRnVuY3Rpb24qKTsKKworcHJvdGVjdGVk
OgorICAgIEludGxEYXRlVGltZUZvcm1hdChWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAg
IFdyaXRlQmFycmllcjxKU0JvdW5kRnVuY3Rpb24+IG1fYm91bmRGb3JtYXQ7Cit9OworICAgIAor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0
RGF0ZVRpbWUoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
RU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsRGF0ZVRpbWVGb3JtYXRfaApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiOGQ0NjBkMjY3NDFhNGI5MzM2YjhjYjBm
OGI2NGZiNzhkMDY4N2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxODMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3Jh
ZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgiCisKKyNpZiBFTkFCTEUoSU5UTCkK
KworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisj
aW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bE9i
amVjdC5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxs
SW5saW5lcy5oIgorI2luY2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5s
aW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvcik7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVj
U3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3Iu
bHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rp
b246OnNfaW5mbywgJmRhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhP
RF9UQUJMRShJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZv
ciBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIGRhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3JUYWJsZQorICBzdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK0ludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogZGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGUsIFN0cnVjdHVyZSogZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUpCit7
CisgICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I+KHZtLmhl
YXApKSBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBj
b25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlLCBk
YXRlVGltZUZvcm1hdFN0cnVjdHVyZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitT
dHJ1Y3R1cmUqIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
K3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisK
K0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlv
bih2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSog
ZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIFN0cnVjdHVyZSogZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1
cmUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgiRGF0ZVRp
bWVGb3JtYXQiKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250
RW51bSB8IERvbnREZWxldGUpOworICAgIG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuc2V0KHZt
LCB0aGlzLCBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICAvLyAxMi4xLjIgSW50bC5EYXRlVGltZUZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9u
c11dKSAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQs
IGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5l
d1RhcmdldCBiZSBOZXdUYXJnZXQuCisgICAgSlNWYWx1ZSBuZXdUYXJnZXQgPSBleGVjLT5uZXdU
YXJnZXQoKTsKKyAgICBpZiAoIW5ld1RhcmdldCB8fCBuZXdUYXJnZXQuaXNVbmRlZmluZWQoKSkK
KyAgICAgICAgbmV3VGFyZ2V0ID0gZXhlYy0+Y2FsbGVlKCk7CisKKyAgICAvLyAyLiBMZXQgZGF0
ZVRpbWVGb3JtYXQgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAl
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUlKS4KKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmNyZWF0ZSh2bSwganNDYXN0PEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKj4oZXhlYy0+
Y2FsbGVlKCkpKTsKKyAgICBpZiAoZGF0ZVRpbWVGb3JtYXQgJiYgIWpzRHluYW1pY0Nhc3Q8SW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihuZXdUYXJnZXQpKSB7CisgICAgICAgIEpTVmFs
dWUgcHJvdG8gPSBhc09iamVjdChuZXdUYXJnZXQpLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSk7CisgICAgICAgIGFzT2JqZWN0KGRhdGVUaW1lRm9ybWF0KS0+c2V0
UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soZXhlYywgcHJvdG8pOworICAgIH0KKworICAgIC8vIDMu
IFJldHVybklmQWJydXB0KGRhdGVUaW1lRm9ybWF0KS4KKyAgICBBU1NFUlQoZGF0ZVRpbWVGb3Jt
YXQpOworCisgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxpemVEYXRlVGltZUZvcm1hdChkYXRlVGlt
ZUZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6IHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBsb2NhbGVz
LCBvcHRpb25zKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0
KTsKK30KKyAgICAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxEYXRlVGlt
ZUZvcm1hdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTIuMS4yIEludGwuRGF0ZVRpbWVG
b3JtYXQgKFtsb2NhbGVzIFssIG9wdGlvbnNdXSkgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBJ
ZiBOZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVu
Y3Rpb24gb2JqZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0LgorICAgIC8vIE5l
d1RhcmdldCBpcyBhbHdheXMgdW5kZWZpbmVkIHdoZW4gY2FsbGVkIGFzIGEgZnVuY3Rpb24uCisK
KyAgICAvLyAyLiBMZXQgZGF0ZVRpbWVGb3JtYXQgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3Ry
dWN0b3IobmV3VGFyZ2V0LCAlRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUlKS4KKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBJ
bnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwganNDYXN0PEludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpKTsKKworICAgIC8vIDMuIFJldHVybklmQWJydXB0
KGRhdGVUaW1lRm9ybWF0KS4KKyAgICBBU1NFUlQoZGF0ZVRpbWVGb3JtYXQpOworCisgICAgLy8g
NC4gUmV0dXJuIEluaXRpYWxpemVEYXRlVGltZUZvcm1hdChkYXRlVGltZUZvcm1hdCwgbG9jYWxl
cywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSW5pdGlh
bGl6ZURhdGVUaW1lRm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKSk7CisK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0KTsKK30KKworQ29uc3Ry
dWN0VHlwZSBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShK
U0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERh
dGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0OworICAgIHJl
dHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworQ2FsbFR5cGUgSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKK3sK
KyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsSW50bERhdGVUaW1lRm9ybWF0Owor
ICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK2Jvb2wgSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sK
KyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEludGVybmFsRnVuY3Rpb24+KGV4ZWMs
IGRhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JUYWJsZSwganNDYXN0PEludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1bmNT
dXBwb3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDEyLjIuMiBJbnRs
LkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGVzIFssIG9wdGlvbnNdKSAo
RUNNQS00MDIgMi4wKQorCisgICAgLy8gMS4gTGV0IGF2YWlsYWJsZUxvY2FsZXMgYmUgJURhdGVU
aW1lRm9ybWF0JS5bW2F2YWlsYWJsZUxvY2FsZXNdXS4KKyAgICAvLyBGSVhNRTogYXZhaWxhYmxl
ID0gSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmdldEF2YWlsYWJsZUxvY2FsZXMoKQor
CisgICAgLy8gMi4gTGV0IHJlcXVlc3RlZExvY2FsZXMgYmUgQ2Fub25pY2FsaXplTG9jYWxlTGlz
dChsb2NhbGVzKS4KKyAgICAvLyBGSVhNRTogcmVxdWVzdGVkID0gQ2Fub25pY2FsaXplTG9jYWxl
TGlzdChsb2NhbGVzKQorCisgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMoYXZhaWxh
YmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6IHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGUsIHJlcXVlc3Rl
ZCwgb3B0aW9ucykpOworCisgICAgLy8gUmV0dXJuIGVtcHR5IGFycmF5IHVudGlsIHByb3Blcmx5
IGltcGxlbWVudGVkLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBK
U0FycmF5KiBzdXBwb3J0ZWRMb2NhbGVzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0Fs
bG9jYXRpb24oQXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7CisgICAgaWYgKCFzdXBwb3J0ZWRMb2Nh
bGVzKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJv
cihleGVjKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMp
OworfQorICAgIAordm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RhdGVUaW1l
Rm9ybWF0U3RydWN0dXJlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBF
TkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmMDQzYTdl
NzBhNDJmZmVhZmYyZDhkYmI1NjBlYmExYzMzYWNhNTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5o
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdv
bmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW50bERh
dGVUaW1lRm9ybWF0Q29uc3RydWN0b3JfaAorI2RlZmluZSBJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvcl9oCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rp
b24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxEYXRlVGltZUZvcm1hdDsKK2Ns
YXNzIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTsKKworY2xhc3MgSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3Iq
IGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSosIFN0
cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBTdHJ1
Y3R1cmUqIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRlVGlt
ZUZvcm1hdFN0cnVjdHVyZS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSosIFN0cnVjdHVyZSopOwor
Citwcml2YXRlOgorICAgIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKFZNJiwgU3RydWN0
dXJlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwq
LCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgCisgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZTsKK307CisK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0
KEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bERhdGVU
aW1lRm9ybWF0KEV4ZWNTdGF0ZSopOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IEVOQUJMRShJTlRMKQorCisjZW5kaWYgLy8gSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3Jf
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc5YjkyOTVjZGMzNjk5YmJl
MWE5NDgzOWRlZDVhOGU3YmQ1OTAxOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTAsMCAr
MSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0
YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKworI2lmIEVOQUJMRShJTlRM
KQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIK
KyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgor
I2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5l
cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVT
VFJVQ1RJQkxFKEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSk7CisKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZv
cm1hdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIElu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKik7
CisKK30KKworI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGU6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNfaW5mbywg
JmRhdGVUaW1lRm9ybWF0UHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZS5sdXQuaAorQGJlZ2luIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlVGFibGUK
KyAgZm9ybWF0ICAgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3Jt
YXQgICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorICByZXNvbHZlZE9wdGlvbnMgIEludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMgIERvbnRFbnVtfEZ1bmN0aW9u
IDAKK0BlbmQKKyovCisKK0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQoreworICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogb2JqZWN0
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
Pih2bS5oZWFwKSkgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cnVjdHVyZSk7CisgICAgcmV0dXJuIG9i
amVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKK30KKworSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpJbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGxEYXRl
VGltZUZvcm1hdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKK30KKworYm9vbCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAg
ICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCBkYXRlVGltZUZv
cm1hdFByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKj4o
b2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIC8vIDEyLjMuMyBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5m
b3JtYXQgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBMZXQgZHRmIGJlIHRoaXMgRGF0ZVRpbWVG
b3JtYXQgb2JqZWN0LgorICAgIEludGxEYXRlVGltZUZvcm1hdCogZHRmID0ganNEeW5hbWljQ2Fz
dDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgLy8gMi4gUmV0
dXJuSWZBYnJ1cHQoZHRmKS4KKyAgICBpZiAoIWR0ZikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludGwuRGF0ZVRpbWVG
b3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmpl
Y3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdCIpKSk7CisgICAgCisgICAgSlNCb3Vu
ZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IGR0Zi0+Ym91bmRGb3JtYXQoKTsKKyAgICAvLyAzLiBJ
ZiB0aGUgW1tib3VuZEZvcm1hdF1dIGludGVybmFsIHNsb3Qgb2YgdGhpcyBEYXRlVGltZUZvcm1h
dCBvYmplY3QgaXMgdW5kZWZpbmVkLAorICAgIGlmICghYm91bmRGb3JtYXQpIHsKKyAgICAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGR0Zi0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgIC8vIGEuIExldCBGIGJlIGEgbmV3IGJ1
aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBhcyBkZWZpbmVkIGluIDEyLjMuNC4KKyAgICAgICAgLy8g
Yi4gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAxLiAoTm90ZTogRuKAmXMg
bGVuZ3RoIHByb3BlcnR5IHdhcyAwIGluIEVDTUEtNDAyIDEuMCkKKyAgICAgICAgSlNGdW5jdGlv
biogdGFyZ2V0T2JqZWN0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEs
IEFTQ0lJTGl0ZXJhbCgiZm9ybWF0IiksIEludGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRl
VGltZSwgTm9JbnRyaW5zaWMpOworICAgICAgICBKU0FycmF5KiBib3VuZEFyZ3MgPSBKU0FycmF5
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsK
KyAgICAgICAgaWYgKCFib3VuZEFyZ3MpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7CisgICAgICAgIAorICAgICAgICAvLyBj
LiBMZXQgYmYgYmUgQm91bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCisgICAg
ICAgIGJvdW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgdGFyZ2V0T2JqZWN0LCBkdGYsIGJvdW5kQXJncywgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQi
KSk7CisgICAgICAgIC8vIGQuIFNldCBkdGYuW1tib3VuZEZvcm1hdF1dIHRvIGJmLgorICAgICAg
ICBkdGYtPnNldEJvdW5kRm9ybWF0KHZtLCBib3VuZEZvcm1hdCk7CisgICAgfQorICAgIC8vIDQu
IFJldHVybiBkdGYuW1tib3VuZEZvcm1hdF1dLgorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Ym91bmRGb3JtYXQpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKiBleGVjKQor
eworICAgIC8vIDEyLjMuNSBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9w
dGlvbnMoKSAoRUNNQS00MDIgMi4wKQorICAgIEludGxEYXRlVGltZUZvcm1hdCogZHRmID0ganNE
eW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAg
aWYgKCFkdGYpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZl
ZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVk
IGFzIGEgRGF0ZVRpbWVGb3JtYXQiKSkpOworCisgICAgLy8gVGhlIGZ1bmN0aW9uIHJldHVybnMg
YSBuZXcgb2JqZWN0IHdob3NlIHByb3BlcnRpZXMgYW5kIGF0dHJpYnV0ZXMgYXJlIHNldCBhcyBp
ZiBjb25zdHJ1Y3RlZCBieSBhbiBvYmplY3QgbGl0ZXJhbCBhc3NpZ25pbmcgdG8gZWFjaCBvZiB0
aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgdGhlIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGlu
dGVybmFsIHNsb3Qgb2YgdGhpcyBEYXRlVGltZUZvcm1hdCBvYmplY3QgKHNlZSAxMi40KTogbG9j
YWxlLCBjYWxlbmRhciwgbnVtYmVyaW5nU3lzdGVtLCB0aW1lWm9uZSwgaG91cjEyLCB3ZWVrZGF5
LCBlcmEsIHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBhbmQgdGltZVpv
bmVOYW1lLiBQcm9wZXJ0aWVzIHdob3NlIGNvcnJlc3BvbmRpbmcgaW50ZXJuYWwgc2xvdHMgYXJl
IG5vdCBwcmVzZW50IGFyZSBub3QgYXNzaWduZWQuCisgICAgLy8gTm90ZTogSW4gdGhpcyB2ZXJz
aW9uIG9mIHRoZSBFQ01BU2NyaXB0IDIwMTUgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJLCB0aGUg
dGltZVpvbmUgcHJvcGVydHkgd2lsbCBiZSB0aGUgbmFtZSBvZiB0aGUgZGVmYXVsdCB0aW1lIHpv
bmUgaWYgbm8gdGltZVpvbmUgcHJvcGVydHkgd2FzIHByb3ZpZGVkIGluIHRoZSBvcHRpb25zIG9i
amVjdCBwcm92aWRlZCB0byB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3Rvci4gVGhl
IHByZXZpb3VzIHZlcnNpb24gbGVmdCB0aGUgdGltZVpvbmUgcHJvcGVydHkgdW5kZWZpbmVkIGlu
IHRoaXMgY2FzZS4KKworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QoZXhlYyk7CisKKyAgICAvLyBGSVhNRTogUG9wdWxhdGUgb2JqZWN0IGZyb20gaW50ZXJuYWwg
c2xvdHMuCisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9wdGlvbnMpOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hMmZkNWUzNGVhNzk1ODZlNDc4OTZmYWZmYzQ0ZTVlNmZhNjE1OWNi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVfaAorI2RlZmluZSBJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVfaAorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNs
dWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlIDogcHVibGlj
IEludGxEYXRlVGltZUZvcm1hdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRsRGF0ZVRpbWVG
b3JtYXQgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAg
IHN0YXRpYyBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsK
KworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBTdHJ1Y3R1cmUqKTsK
KworcHJpdmF0ZToKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1
cmUqKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKworI2VuZGlmIC8vIEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzOWRjNWIxOWVhNDhlY2I0YTRhZTMx
NzkwZTMwOWViNGFjNzZhYjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWls
LmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxOdW1i
ZXJGb3JtYXQuaCIKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNp
bmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJbnRsT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiU2xvdFZp
c2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxOdW1iZXJGb3JtYXQ6OnNfaW5mbyA9IHsg
Ik9iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bE51bWJl
ckZvcm1hdCkgfTsKKworSW50bE51bWJlckZvcm1hdCogSW50bE51bWJlckZvcm1hdDo6Y3JlYXRl
KFZNJiB2bSwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKK3sKKyAg
ICBJbnRsTnVtYmVyRm9ybWF0KiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJ
bnRsTnVtYmVyRm9ybWF0Pih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1hdCh2bSwgY29uc3RydWN0
b3ItPm51bWJlckZvcm1hdFN0cnVjdHVyZSgpKTsKKyAgICBmb3JtYXQtPmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICByZXR1cm4gZm9ybWF0OworfQorCitTdHJ1Y3R1cmUqIEludGxOdW1iZXJGb3Jt
YXQ6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKK30KKworSW50bE51bWJlckZvcm1hdDo6SW50bE51bWJlckZvcm1hdChW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3Qo
dm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsTnVtYmVyRm9ybWF0OjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VS
VChpbmhlcml0cyhpbmZvKCkpKTsKK30KKwordm9pZCBJbnRsTnVtYmVyRm9ybWF0OjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oY2Vs
bCktPkludGxOdW1iZXJGb3JtYXQ6On5JbnRsTnVtYmVyRm9ybWF0KCk7Cit9CisKK3ZvaWQgSW50
bE51bWJlckZvcm1hdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQoreworICAgIEludGxOdW1iZXJGb3JtYXQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SW50
bE51bWJlckZvcm1hdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ib3VuZEZvcm1h
dCk7Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdDo6c2V0Qm91bmRGb3JtYXQoVk0mIHZtLCBK
U0JvdW5kRnVuY3Rpb24qIGZvcm1hdCkKK3sKKyAgICBtX2JvdW5kRm9ybWF0LnNldCh2bSwgdGhp
cywgZm9ybWF0KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVy
Rm9ybWF0RnVuY0Zvcm1hdE51bWJlcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTEuMy40
IEZvcm1hdCBOdW1iZXIgRnVuY3Rpb25zIChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gTGV0IG5m
IGJlIHRoZSB0aGlzIHZhbHVlLgorICAgIEludGxOdW1iZXJGb3JtYXQqIGZvcm1hdCA9IGpzRHlu
YW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICAvLyAy
LiBBc3NlcnQ6IFR5cGUobmYpIGlzIE9iamVjdCBhbmQgbmYgaGFzIGFuIFtbaW5pdGlhbGl6ZWRO
dW1iZXJGb3JtYXRdXSBpbnRlcm5hbCBzbG90IHdob3NlIHZhbHVlIGlzIHRydWUuCisgICAgaWYg
KCFmb3JtYXQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
ZXhlYykpOworCisgICAgLy8gMy4gSWYgdmFsdWUgaXMgbm90IHByb3ZpZGVkLCBsZXQgdmFsdWUg
YmUgdW5kZWZpbmVkLgorICAgIC8vIDQuIExldCB4IGJlIFRvTnVtYmVyKHZhbHVlKS4KKyAgICBk
b3VibGUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKTsKKyAgICAvLyA1
LiBSZXR1cm5JZkFicnVwdCh4KS4KKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICAvLyA2LiBS
ZXR1cm4gRm9ybWF0TnVtYmVyKG5mLCB4KS4KKyAgICAKKyAgICAvLyAxMS4zLjQgRm9ybWF0TnVt
YmVyIGFic3RyYWN0IG9wZXJhdGlvbiAoRUNNQS00MDIgMi4wKQorICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgRm9ybWF0TnVtYmVyLgorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cih2YWx1ZSkudG9TdHJpbmcoZXhlYykpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTlRMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE51bWJlckZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE51bWJlckZvcm1hdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjMjUzOGY5YmZiYTMwZTc0MzgyMWIyZjBk
MTgxZTYzODcyYTEyMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBJbnRsTnVtYmVyRm9ybWF0X2gKKyNkZWZpbmUgSW50bE51bWJl
ckZvcm1hdF9oCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3I7CitjbGFzcyBKU0JvdW5kRnVuY3Rpb247CisKK2NsYXNzIEludGxOdW1iZXJGb3Jt
YXQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYg
SlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBJbnRsTnVtYmVyRm9ybWF0
KiBjcmVhdGUoVk0mLCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqKTsKKyAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1h
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRGb3JtYXQuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJv
dW5kRm9ybWF0KFZNJiwgSlNCb3VuZEZ1bmN0aW9uKik7CisKK3Byb3RlY3RlZDoKKyAgICBJbnRs
TnVtYmVyRm9ybWF0KFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgV3JpdGVCYXJyaWVy
PEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZEZvcm1hdDsKK307CisgICAgCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyKEV4ZWNTdGF0
ZSopOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQorCisj
ZW5kaWYgLy8gSW50bE51bWJlckZvcm1hdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iODYzOWQ2YjE0YzcwMDdhODcxMDI1NTc3YWFlMmVkMjlmYmNkMmUxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDE4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yLmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5j
bHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiTG9va3VwLmgi
CisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5s
aW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlf
REVTVFJVQ1RJQkxFKEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcik7CisKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvckZ1bmNT
dXBwb3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKik7CisKK30KKworI2luY2x1ZGUgIkludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENs
YXNzSW5mbyBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9u
IiwgJkJhc2U6OnNfaW5mbywgJm51bWJlckZvcm1hdENvbnN0cnVjdG9yVGFibGUsIENSRUFURV9N
RVRIT0RfVEFCTEUoSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2Ug
Zm9yIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIG51bWJlckZvcm1h
dENvbnN0cnVjdG9yVGFibGUKKyAgc3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAgICAgIEludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKworSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBudW1iZXJGb3JtYXRQcm90
b3R5cGUsIFN0cnVjdHVyZSogbnVtYmVyRm9ybWF0U3RydWN0dXJlKQoreworICAgIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I+KHZtLmhlYXApKSBJbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENy
ZWF0aW9uKHZtLCBudW1iZXJGb3JtYXRQcm90b3R5cGUsIG51bWJlckZvcm1hdFN0cnVjdHVyZSk7
CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3I6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lk
IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlKiBudW1iZXJGb3JtYXRQcm90b3R5cGUsIFN0cnVjdHVyZSog
bnVtYmVyRm9ybWF0U3RydWN0dXJlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBB
U0NJSUxpdGVyYWwoIk51bWJlckZvcm1hdCIpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBudW1iZXJGb3JtYXRQcm90b3R5
cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
UmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworICAgIG1fbnVtYmVyRm9ybWF0U3Ry
dWN0dXJlLnNldCh2bSwgdGhpcywgbnVtYmVyRm9ybWF0U3RydWN0dXJlKTsKK30KKworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICAvLyAxMS4xLjIgSW50bC5OdW1iZXJGb3JtYXQgKFtsb2NhbGVzIFss
IG9wdGlvbnNdXSkgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBJZiBOZXdUYXJnZXQgaXMgdW5k
ZWZpbmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rpb24gb2JqZWN0LCBlbHNl
IGxldCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0LgorICAgIEpTVmFsdWUgbmV3VGFyZ2V0ID0gZXhl
Yy0+bmV3VGFyZ2V0KCk7CisgICAgaWYgKCFuZXdUYXJnZXQgfHwgbmV3VGFyZ2V0LmlzVW5kZWZp
bmVkKCkpCisgICAgICAgIG5ld1RhcmdldCA9IGV4ZWMtPmNhbGxlZSgpOworCisgICAgLy8gMi4g
TGV0IG51bWJlckZvcm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJn
ZXQsICVOdW1iZXJGb3JtYXRQcm90b3R5cGUlKS4KKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IEludGxOdW1iZXJGb3JtYXQ6OmNy
ZWF0ZSh2bSwganNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxl
ZSgpKSk7CisgICAgaWYgKG51bWJlckZvcm1hdCAmJiAhanNEeW5hbWljQ2FzdDxJbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3IqPihuZXdUYXJnZXQpKSB7CisgICAgICAgIEpTVmFsdWUgcHJvdG8g
PSBhc09iamVjdChuZXdUYXJnZXQpLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSk7CisgICAgICAgIGFzT2JqZWN0KG51bWJlckZvcm1hdCktPnNldFByb3RvdHlwZVdp
dGhDeWNsZUNoZWNrKGV4ZWMsIHByb3RvKTsKKyAgICB9CisKKyAgICAvLyAzLiBSZXR1cm5JZkFi
cnVwdChudW1iZXJGb3JtYXQpLgorICAgIEFTU0VSVChudW1iZXJGb3JtYXQpOworCisgICAgLy8g
NC4gUmV0dXJuIEluaXRpYWxpemVOdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBsb2NhbGVzLCBv
cHRpb25zKS4KKyAgICAvLyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShJbml0aWFsaXpl
TnVtYmVyRm9ybWF0KG51bWJlckZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucykpOworCisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxJbnRsTnVtYmVyRm9ybWF0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICAvLyAxMS4xLjIgSW50bC5OdW1iZXJGb3JtYXQgKFtsb2NhbGVzIFssIG9wdGlvbnNdXSkgKEVD
TUEtNDAyIDIuMCkKKyAgICAvLyAxLiBJZiBOZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3
VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rpb24gb2JqZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQg
YmUgTmV3VGFyZ2V0LgorICAgIC8vIE5ld1RhcmdldCBpcyBhbHdheXMgdW5kZWZpbmVkIHdoZW4g
Y2FsbGVkIGFzIGEgZnVuY3Rpb24uCisKKyAgICAvLyAyLiBMZXQgbnVtYmVyRm9ybWF0IGJlIE9y
ZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJU51bWJlckZvcm1hdFByb3Rv
dHlwZSUpLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSW50bE51bWJlckZvcm1hdCog
bnVtYmVyRm9ybWF0ID0gSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpKTsKKworICAgIC8vIDMuIFJl
dHVybklmQWJydXB0KG51bWJlckZvcm1hdCkuCisgICAgQVNTRVJUKG51bWJlckZvcm1hdCk7CisK
KyAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZU51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIGxv
Y2FsZXMsIG9wdGlvbnMpLgorICAgIC8vIEZJWE1FOiByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKElu
aXRpYWxpemVOdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKSk7CisK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdCk7Cit9CisKK0NvbnN0cnVj
dFR5cGUgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2Vs
bCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5u
YXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0OworICAgIHJldHVybiBD
b25zdHJ1Y3RUeXBlSG9zdDsKK30KKworQ2FsbFR5cGUgSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2Fs
bERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEludGxOdW1iZXJGb3JtYXQ7CisgICAgcmV0dXJu
IENhbGxUeXBlSG9zdDsKK30KKworYm9vbCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4g
Z2V0U3RhdGljRnVuY3Rpb25TbG90PEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIG51bWJlckZvcm1h
dENvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqPihv
YmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2Yo
RXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDExLjIuMiBJbnRsLk51bWJlckZvcm1hdC5zdXBw
b3J0ZWRMb2NhbGVzT2YobG9jYWxlcyBbLCBvcHRpb25zXSkgKEVDTUEtNDAyIDIuMCkKKworICAg
IC8vIDEuIExldCBhdmFpbGFibGVMb2NhbGVzIGJlICVOdW1iZXJGb3JtYXQlLltbYXZhaWxhYmxl
TG9jYWxlc11dLgorICAgIC8vIEZJWE1FOiBhdmFpbGFibGUgPSBJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3I6OmdldEF2YWlsYWJsZUxvY2FsZXMoKQorCisgICAgLy8gMi4gTGV0IHJlcXVlc3Rl
ZExvY2FsZXMgYmUgQ2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2NhbGVzKS4KKyAgICAvLyBGSVhN
RTogcmVxdWVzdGVkID0gQ2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2NhbGVzKQorCisgICAgLy8g
My4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMoYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9j
YWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3Vw
cG9ydGVkTG9jYWxlcyhhdmFpbGFibGUsIHJlcXVlc3RlZCwgb3B0aW9ucykpOworCisgICAgLy8g
UmV0dXJuIGVtcHR5IGFycmF5IHVudGlsIHByb3Blcmx5IGltcGxlbWVudGVkLgorICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMt
PmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0FycmF5KiBzdXBwb3J0ZWRMb2NhbGVz
ID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJh
eVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoVW5kZWNp
ZGVkKSwgMCk7CisgICAgaWYgKCFzdXBwb3J0ZWRMb2NhbGVzKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7CisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMpOworfQorCit2b2lkIEludGxOdW1iZXJG
b3JtYXRDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciogdGhpc09iamVj
dCA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqPihjZWxsKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fbnVtYmVyRm9ybWF0U3RydWN0dXJlKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYmI3NWYxMDIxNjRjY2RmMTJjZTUzZTVjOTQ4YjZjYTExNzk5OWFmMgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yX2gKKyNkZWZpbmUgSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yX2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSW50
ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bE51bWJlckZv
cm1hdDsKK2NsYXNzIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU7CisKK2NsYXNzIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqLCBT
dHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgU3Ry
dWN0dXJlKiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX251bWJlckZv
cm1hdFN0cnVjdHVyZS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKKworcHJp
dmF0ZToKKyAgICBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsK
KyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0
cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2Fs
bERhdGEmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICAKKyAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX251bWJlckZvcm1hdFN0cnVjdHVyZTsKK307CisKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bE51bWJlckZvcm1hdChFeGVjU3RhdGUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxOdW1iZXJGb3JtYXQoRXhl
Y1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwp
CisKKyNlbmRpZiAvLyBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JfaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44YTM0OTIyOTRlYzM4MTZiOTFiYjFjMDA0ZTIzOWY5ZmViYmRl
NGY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20p
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkVycm9yLmgi
CisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlv
bi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0
b3IuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZSk7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jl
c29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5m
byBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmSW50bE51
bWJlckZvcm1hdDo6c19pbmZvLCAmbnVtYmVyRm9ybWF0UHJvdG90eXBlVGFibGUsIENSRUFURV9N
RVRIT0RfVEFCTEUoSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZv
ciBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oCitAYmVnaW4gbnVtYmVyRm9ybWF0UHJv
dG90eXBlVGFibGUKKyAgZm9ybWF0ICAgICAgICAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
R2V0dGVyRm9ybWF0ICAgICAgICAgRG9udEVudW18QWNjZXNzb3IKKyAgcmVzb2x2ZWRPcHRpb25z
ICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyAgRG9udEVudW18
RnVuY3Rpb24gMAorQGVuZAorKi8KKworSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBvYmpl
Y3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
Pih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAg
ICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUpOworICAgIHJldHVybiBvYmpl
Y3Q7Cit9CisKK1N0cnVjdHVyZSogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworfQorCitJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRsTnVtYmVyRm9ybWF0
KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKK30KKworYm9vbCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0
YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgbnVtYmVyRm9ybWF0UHJvdG90eXBlVGFi
bGUsIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAx
MS4zLjMgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCAoRUNNQS00MDIgMi4wKQor
ICAgIC8vIDEuIExldCBuZiBiZSB0aGlzIE51bWJlckZvcm1hdCBvYmplY3QuCisgICAgSW50bE51
bWJlckZvcm1hdCogbmYgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihleGVjLT50
aGlzVmFsdWUoKSk7CisgICAgaWYgKCFuZikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludGwuTnVtYmVyRm9ybWF0LnBy
b3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRp
YWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0IikpKTsKKyAgICAKKyAgICBKU0JvdW5kRnVuY3Rpb24q
IGJvdW5kRm9ybWF0ID0gbmYtPmJvdW5kRm9ybWF0KCk7CisgICAgLy8gMi4gSWYgbmYuW1tib3Vu
ZEZvcm1hdF1dIGlzIHVuZGVmaW5lZCwKKyAgICBpZiAoIWJvdW5kRm9ybWF0KSB7CisgICAgICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBuZi0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgIC8vIGEuIExldCBGIGJlIGEgbmV3IGJ1
aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBhcyBkZWZpbmVkIGluIDExLjMuNC4KKyAgICAgICAgLy8g
Yi4gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAxLgorICAgICAgICBKU0Z1
bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSwgSW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXRO
dW1iZXIsIE5vSW50cmluc2ljKTsKKyAgICAgICAgSlNBcnJheSogYm91bmRBcmdzID0gSlNBcnJh
eTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7
CisgICAgICAgIGlmICghYm91bmRBcmdzKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYykpOworCisgICAgICAgIC8vIGMuIExldCBi
ZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4KKyAgICAgICAgYm91
bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJn
ZXRPYmplY3QsIG5mLCBib3VuZEFyZ3MsIDEsIEFTQ0lJTGl0ZXJhbCgiZm9ybWF0IikpOworICAg
ICAgICAvLyBkLiBTZXQgbmYuW1tib3VuZEZvcm1hdF1dIHRvIGJmLgorICAgICAgICBuZi0+c2V0
Qm91bmRGb3JtYXQodm0sIGJvdW5kRm9ybWF0KTsKKyAgICB9CisgICAgLy8gMy4gUmV0dXJuIG5m
LltbYm91bmRGb3JtYXRdXS4KKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJvdW5kRm9ybWF0
KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTEu
My41IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAoRUNNQS00
MDIgMi4wKQorICAgIEludGxOdW1iZXJGb3JtYXQqIG5mID0ganNEeW5hbWljQ2FzdDxJbnRsTnVt
YmVyRm9ybWF0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbmYpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJ
bnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCIpKSk7
CisKKyAgICAvLyBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIG5ldyBvYmplY3Qgd2hvc2UgcHJvcGVy
dGllcyBhbmQgYXR0cmlidXRlcyBhcmUgc2V0IGFzIGlmIGNvbnN0cnVjdGVkIGJ5IGFuIG9iamVj
dCBsaXRlcmFsIGFzc2lnbmluZyB0byBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB0
aGUgdmFsdWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJuYWwgc2xvdCBvZiB0aGlzIE51bWJl
ckZvcm1hdCBvYmplY3QgKHNlZSAxMS40KTogbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIHN0eWxl
LCBjdXJyZW5jeSwgY3VycmVuY3lEaXNwbGF5LCBtaW5pbXVtSW50ZWdlckRpZ2l0cywgbWluaW11
bUZyYWN0aW9uRGlnaXRzLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMsIG1pbmltdW1TaWduaWZpY2Fu
dERpZ2l0cywgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzLCBhbmQgdXNlR3JvdXBpbmcuIFByb3Bl
cnRpZXMgd2hvc2UgY29ycmVzcG9uZGluZyBpbnRlcm5hbCBzbG90cyBhcmUgbm90IHByZXNlbnQg
YXJlIG5vdCBhc3NpZ25lZC4KKworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gY29uc3RydWN0RW1w
dHlPYmplY3QoZXhlYyk7CisKKyAgICAvLyBGSVhNRTogUG9wdWxhdGUgb2JqZWN0IGZyb20gaW50
ZXJuYWwgc2xvdHMuCisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9wdGlvbnMpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc4YmMwNTFmZGRiODg1MmE5YTk1ZjlmMTdkOThhZThjYjc4NTIx
MTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlX2gKKyNkZWZpbmUgSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZV9oCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUg
IkludGxOdW1iZXJGb3JtYXQuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSA6IHB1YmxpYyBJbnRsTnVt
YmVyRm9ybWF0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGxOdW1iZXJGb3JtYXQgQmFzZTsK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoK
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgU3RydWN0dXJlKik7CisKK3ByaXZhdGU6Cisg
ICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIEVOQUJMRShJTlRMKQorCisjZW5kaWYgLy8gSW50bE51bWJlckZvcm1hdFByb3RvdHlwZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IDEy
ZGE5MzhmYTgxM2FlMzFmMzc1NmRiMDRkZjA3ZmJiMDk5MmRkMGMuLmJhNDU3ZTcyNTYwOTEwNzg5
MTIyZjUxMzc1ZWU5ZmRjMTAyNGQzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3QuY3BwCkBAIC0yOCw2ICsyOCwxNiBAQAogCiAjaWYgRU5BQkxFKElOVEwp
CiAKKyNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxDb2xsYXRv
ci5oIgorI2luY2x1ZGUgIkludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSW50
bENvbGxhdG9yUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisj
aW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Lmgi
CisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKQEAgLTQ4LDE3ICs1
OCw0MyBAQCBJbnRsT2JqZWN0OjpJbnRsT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiB7CiB9CiAKLUludGxPYmplY3QqIEludGxPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorSW50bE9iamVjdCogSW50bE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAg
ICAgSW50bE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE9i
amVjdD4odm0uaGVhcCkpIEludGxPYmplY3Qodm0sIHN0cnVjdHVyZSk7Ci0gICAgb2JqZWN0LT5m
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFs
T2JqZWN0KTsKICAgICByZXR1cm4gb2JqZWN0OwogfQogCi12b2lkIEludGxPYmplY3Q6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKK3ZvaWQgSW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisKKyAgICAvLyBTZXQgdXAg
Q29sbGF0b3IuCisgICAgSW50bENvbGxhdG9yUHJvdG90eXBlKiBjb2xsYXRvclByb3RvdHlwZSA9
IEludGxDb2xsYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEludGxDb2xs
YXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICBTdHJ1Y3R1cmUqIGNvbGxhdG9yU3RydWN0
dXJlID0gSW50bENvbGxhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgY29s
bGF0b3JQcm90b3R5cGUpOworICAgIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKiBjb2xsYXRvckNv
bnN0cnVjdG9yID0gSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50bENvbGxh
dG9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBjb2xsYXRvclByb3RvdHlwZSwgY29sbGF0b3JT
dHJ1Y3R1cmUpOworCisgICAgY29sbGF0b3JQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgY29sbGF0b3JDb25zdHJ1
Y3RvciwgRG9udEVudW0pOworCisgICAgLy8gU2V0IHVwIE51bWJlckZvcm1hdC4KKyAgICBJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlKiBudW1iZXJGb3JtYXRQcm90b3R5cGUgPSBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICBTdHJ1Y3R1cmUqIG51bWJlckZvcm1hdFN0cnVj
dHVyZSA9IEludGxOdW1iZXJGb3JtYXQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0
LCBudW1iZXJGb3JtYXRQcm90b3R5cGUpOworICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ciogbnVtYmVyRm9ybWF0Q29uc3RydWN0b3IgPSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6
OmNyZWF0ZSh2bSwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwgbnVt
YmVyRm9ybWF0UHJvdG90eXBlLCBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUpOworCisgICAgbnVtYmVy
Rm9ybWF0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+Y29uc3RydWN0b3IsIG51bWJlckZvcm1hdENvbnN0cnVjdG9yLCBEb250RW51bSk7
CisKKyAgICAvLyBTZXQgdXAgRGF0ZVRpbWVGb3JtYXQuCisgICAgSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlKiBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSA9IEludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2Jq
ZWN0UHJvdG90eXBlKCkpKTsKKyAgICBTdHJ1Y3R1cmUqIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJl
ID0gSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwg
ZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUpOworICAgIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yKiBkYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yID0gSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3I6OmNyZWF0ZSh2bSwgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBl
KCkpLCBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSwgZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUpOwor
CisgICAgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3RvciwgRG9udEVudW0pOworCisgICAgLy8gOC4xIFByb3BlcnRpZXMgb2YgdGhlIEludGwgT2Jq
ZWN0IChFQ01BLTQwMiAyLjApCisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPkNvbGxhdG9yLCBjb2xsYXRvckNvbnN0cnVjdG9yLCBEb250RW51bSk7
CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPk51
bWJlckZvcm1hdCwgbnVtYmVyRm9ybWF0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+RGF0ZVRpbWVGb3Jt
YXQsIGRhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKIH0KIAogU3RydWN0dXJl
KiBJbnRsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3QuaAppbmRleCBmNDViOWFiNjQ5MDIyOGVkZWE1N2FiMmUwYmU5YzBiNWE4
OWUyZmMwLi44MzQyODU0MmIyZDBmYmM3ZTViMTQ0YTM2YmNiYjg2ZWRmY2JiZTgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCkBAIC0zMiwxOCArMzIsMjUg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOwor
Y2xhc3MgSW50bENvbGxhdG9yUHJvdG90eXBlOworY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3I7CitjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU7CitjbGFzcyBJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3I7CitjbGFzcyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
OworCiBjbGFzcyBJbnRsT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGlj
OgogICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90OwogCi0gICAgc3RhdGljIEludGxPYmplY3QqIGNyZWF0ZShWTSYs
IFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBJbnRsT2JqZWN0KiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBERUNMQVJFX0lORk87
CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CiAKIHByaXZhdGU6CiAgICAgSW50
bE9iamVjdChWTSYsIFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDA5ZGQ1NmFlZmUxNzgxZWE5ZTA2NTk2NTY0
Y2I2MDRjMWJhMWEwMmYuLjFjYWRmZmU1Yjk0ZmU3MDA4NzEwYjJiZTFmMzVhMGEzNTg3NDk2NmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKQEAgLTQzNiw3ICs0MzYsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5ldmFsLCBtX2V2YWxG
dW5jdGlvbi5nZXQoKSwgRG9udEVudW0pOwogICAgIAogI2lmIEVOQUJMRShJTlRMKQotICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5JbnRsLCBJbnRs
T2JqZWN0OjpjcmVhdGUodm0sIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5JbnRsLCBJbnRsT2JqZWN0OjpjcmVh
dGUodm0sIHRoaXMsIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmpl
Y3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOwogI2VuZGlmIC8vIEVOQUJMRShJTlRMKQog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5KU09O
LCBKU09OT2JqZWN0OjpjcmVhdGUodm0sIEpTT05PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOwogICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5NYXRoLCBNYXRoT2JqZWN0
OjpjcmVhdGUodm0sIHRoaXMsIE1hdGhPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2Uv
V2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBlMTYw
YzdmODEzY2E0ZDk2NWFiMGUwMThkOGI3MjY5NmVjYmVkYzcwLi5iY2U4NjBhN2VjODFkMWY0NmZm
OWQzOWZjYzJhZWFmNzk1MDE3MTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMTE3LDcgKzExNyw3IEBAIEVO
QUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTAwMCA9IDsKIEVOQUJMRV9X
SVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTEwMCA9IEVOQUJMRV9XSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQ7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8x
MDEyMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogCi1FTkFCTEVfSU5UTCA9
IDsKK0VOQUJMRV9JTlRMID0gRU5BQkxFX0lOVEw7CiAKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVO
VFNbc2RrPWlwaG9uZSpdID0gJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lO
VEVSTkFMX1NES18kKFVTRV9JTlRFUk5BTF9TREspKTsKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVO
VFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLX1lFUyA9IEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxNjBjN2Y4MTNjYTRkOTY1YWIwZTAxOGQ4YjcyNjk2ZWNi
ZWRjNzAuLmJjZTg2MGE3ZWM4MWQxZjQ2ZmY5ZDM5ZmNjMmFlYWY3OTUwMTcxOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCkBAIC0xMTcsNyArMTE3LDcgQEAgRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVF9tYWNvc3hfMTAxMDAwID0gOwogRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9t
YWNvc3hfMTAxMTAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIEVOQUJMRV9X
SVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTIwMCA9IEVOQUJMRV9XSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQ7CiAKLUVOQUJMRV9JTlRMID0gOworRU5BQkxFX0lOVEwgPSBFTkFCTEVf
SU5UTDsKIAogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU1tzZGs9aXBob25lKl0gPSAkKEVOQUJM
RV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFM
X1NESykpOwogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtf
WUVTID0gRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktp
dDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZTE2MGM3Zjgx
M2NhNGQ5NjVhYjBlMDE4ZDhiNzI2OTZlY2JlZGM3MC4uYmNlODYwYTdlYzgxZDFmNDZmZjlkMzlm
Y2MyYWVhZjc5NTAxNzE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTExNyw3ICsxMTcsNyBAQCBFTkFCTEVf
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEwMDAgPSA7CiBFTkFCTEVfV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDExMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUOwogRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMjAw
ID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIAotRU5BQkxFX0lOVEwgPSA7CitF
TkFCTEVfSU5UTCA9IEVOQUJMRV9JTlRMOwogCiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nk
az1pcGhvbmUqXSA9ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5B
TF9TREtfJChVU0VfSU5URVJOQUxfU0RLKSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lv
c19XSVRIX0lOVEVSTkFMX1NES19ZRVMgPSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTOwpkaWZm
IC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlIGIvU291cmNlL2NtYWtl
L1dlYktpdEZlYXR1cmVzLmNtYWtlCmluZGV4IGM5NDNlZGRhOWYzZTIyNDIwOWEwOWJhMmVkNzU2
ZjA1ZWRmZmY1NTAuLmM1MmY5NDlmZDUzYzI4MWY3Yjg1OWY4MmE2ZDEzNDJiNDIyYjRlNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQorKysgYi9Tb3VyY2Uv
Y21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKQEAgLTk5LDcgKzk5LDcgQEAgbWFjcm8oV0VCS0lU
X09QVElPTl9CRUdJTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU5QVVRfVFlQ
RV9NT05USCAiVG9nZ2xlIG1vbnRoIHR5cGUgPGlucHV0PiBzdXBwb3J0IiBQUklWQVRFIE9GRikK
ICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU5QVVRfVFlQRV9USU1FICJUb2dnbGUg
dGltZSB0eXBlIDxpbnB1dD4gc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElP
Tl9ERUZJTkUoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyAiVG9nZ2xlIHdlZWsgdHlwZSA8aW5wdXQ+
IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQotICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9J
TlRMICJUb2dnbGUgSW50bCBzdXBwb3J0IiBQUklWQVRFIE9GRikKKyAgICBXRUJLSVRfT1BUSU9O
X0RFRklORShFTkFCTEVfSU5UTCAiVG9nZ2xlIEludGwgc3VwcG9ydCIgUFJJVkFURSBPTikKICAg
ICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU9TX0FJUlBMQVkgIlRvZ2dsZSBpT1MgYWly
cGxheSBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFC
TEVfSU9TX1RFWFRfQVVUT1NJWklORyAiVG9nZ2xlIGlPUyB0ZXh0IGF1dG9zaXppbmcgc3VwcG9y
dCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0pJVCAiRW5h
YmxlIEp1c3RJblRpbWUgamF2YXNjcmlwdCBzdXBwb3J0IiBQUklWQVRFIE9OKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGMzZjg2MDBmYWUxMjg3
YmMyODNiOTgwNGQwMDIxYTU2ZTA5NTJkMDkuLmU5OTQwZjIyMWExYzE0MjBmMjgxOTRkODg4NGE4
MGI0YzQ3YjljNzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0wNy0yOCAgQW5keSBWYW5XYWdvbmVyICA8dGhl
dGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNpYyB0eXBlcyBm
b3IgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjkyNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBmbGFnIG5vdyB0aGF0IHRoZSBi
YXNpYyBvYmplY3RzIGFyZSBpbiBwbGFjZS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVy
bC9GZWF0dXJlTGlzdC5wbTogRW5hYmxlZCBJTlRMCisKIDIwMTUtMDctMjggIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0gQWRkIEVOQUJMRV9F
UzZfTU9EVUxFUyBjb21waWxlIHRpbWUgZmxhZyB3aXRoIHRoZSBkZWZhdWx0IHZhbHVlICJmYWxz
ZSIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCBiM2Y2NWE1Nzk2
OTI5MmYxMDE1NTZmMTY3NTE3MmFhMDgzNDJiOTAxLi4yYmQ2MTQ1MjM1OGRkYTczMjYwZTVkZmVk
ZWY2ZWFlMTRjYTQyYmM1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVh
dHVyZUxpc3QucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBt
CkBAIC0yOTEsNyArMjkxLDcgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgICAgZGVmaW5lID0+ICJF
TkFCTEVfSU5QVVRfVFlQRV9XRUVLIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGlucHV0VHlw
ZVdlZWtTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAiaW50bCIsIGRlc2MgPT4gIlRvZ2ds
ZSBJbnRsIHN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfSU5UTCIsIGRlZmF1bHQg
PT4gMCwgdmFsdWUgPT4gXCRpbnRsU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVf
SU5UTCIsIGRlZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRpbnRsU3VwcG9ydCB9LAogCiAgICAgeyBv
cHRpb24gPT4gImxlZ2FjeS1ub3RpZmljYXRpb25zIiwgZGVzYyA9PiAiVG9nZ2xlIExlZ2FjeSBO
b3RpZmljYXRpb25zIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTEVHQUNZX05P
VElGSUNBVElPTlMiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkbGVnYWN5Tm90aWZpY2F0aW9u
c1N1cHBvcnQgfSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA4NGI5NTBkMTY1MTc2M2JjMDk5YzEwOGI0MDE3MzY5YTBjNjIy
ODFjLi5jYjQ1NDJkY2QxOGZlNTZiZGJlNWFhMWNiYjgzYTUzZWM1OGFmNmExIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMTUtMDctMjggIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVy
QGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3Jp
cHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIEludGwuQ29sbGF0b3IsIEludGwuTnVt
YmVyRm9ybWF0LCBhbmQgSW50bC5EYXRlVGltZUZvcm1hdAorCisgICAgICAgICogVGVzdEV4cGVj
dGF0aW9uczogRW5hYmxlZCBpbnRsIHRlc3RzLgorICAgICAgICAqIGpzL2ludGwtY29sbGF0b3It
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9pbnRsLWNvbGxhdG9yLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGpzL2ludGwtZGF0ZXRpbWVmb3JtYXQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9pbnRsLWRhdGV0aW1lZm9ybWF0Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGpzL2ludGwtZXhwZWN0ZWQudHh0OiBVcGRhdGVkLgorICAgICAgICAqIGpzL2ludGwtbnVt
YmVyZm9ybWF0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvaW50bC1udW1iZXJm
b3JtYXQuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2ludGwtY29sbGF0
b3IuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9pbnRsLWRhdGV0aW1lZm9y
bWF0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvaW50bC1udW1iZXJmb3Jt
YXQuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9pbnRsLmpzOiBBZGRlZCB0
ZXN0cyBmb3IgQ29sbGF0b3IsIE51bWJlckZvcm1hdCwgYW5kIERhdGVUaW1lRm9ybWF0LgorCiAy
MDE1LTA3LTI4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFuaW1hdGlvbnMgc29tZXRpbWVzIGZhaWwgdG8gc3RhcnQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IGE5YzczZTkwNDI0MjhmNTllOTQ0MGNhZTI2YTc0MmMwM2ZhODU3M2IuLjE4NTJkZTE4ZWVk
MDViNTYxNzBkMTQ1YzlmNDRiZjY2YTMwYjQyMTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTMw
LDYgKzUzMCwzIEBAIHdlYmtpdC5vcmcvYi8xNDYxODIgZWRpdGluZy9zZWxlY3Rpb24vbGVhay1k
b2N1bWVudC13aXRoLXNlbGVjdGlvbi1pbnNpZGUuaHRtbCBbCiAKIHdlYmtpdC5vcmcvYi8xNDY0
MzQgZmFzdC9kb20vSFRNTEltYWdlRWxlbWVudC9zaXplcyBbIFNraXAgXQogCi0jIEludGwgaXMg
bm90IGVuYWJsZWQgeWV0Ci1qcy9pbnRsLmh0bWwgWyBTa2lwIF0KLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvaW50bC1jb2xsYXRvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9p
bnRsLWNvbGxhdG9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYWNlNDk5NjBhYzI4ZWM2MGE4
ODlkYmVhYTRlZjhhNWY5MTQyYzlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
aW50bC1jb2xsYXRvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0NyBAQAorVGhpcyB0ZXN0IGNo
ZWNrcyB0aGUgYmVoYXZpb3Igb2YgSW50bC5Db2xsYXRvciBhcyBkZXNjcmliZWQgaW4gdGhlIEVD
TUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmljYXRpb24gKEVDTUEtNDAy
IDIuMCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEludGwuQ29sbGF0
b3IgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgSW50bC5Db2xsYXRvcigpIGlzIGFu
IGluc3RhbmNlIG9mIEludGwuQ29sbGF0b3IKK1BBU1MgSW50bC5Db2xsYXRvci5jYWxsKHt9KSBp
cyBhbiBpbnN0YW5jZSBvZiBJbnRsLkNvbGxhdG9yCitQQVNTIG5ldyBJbnRsLkNvbGxhdG9yKCkg
aXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5Db2xsYXRvcgorUEFTUyBuZXcgRGVyaXZlZENvbGxhdG9y
IGlzIGFuIGluc3RhbmNlIG9mIERlcml2ZWRDb2xsYXRvcgorUEFTUyBuZXcgRGVyaXZlZENvbGxh
dG9yIGlzIGFuIGluc3RhbmNlIG9mIEludGwuQ29sbGF0b3IKK1BBU1MgbmV3IERlcml2ZWRDb2xs
YXRvcigpLmNvbXBhcmUoJ2EnLCAnYicpIGlzIC0xCitQQVNTIE9iamVjdC5nZXRQcm90b3R5cGVP
ZihuZXcgRGVyaXZlZENvbGxhdG9yKSBpcyBEZXJpdmVkQ29sbGF0b3IucHJvdG90eXBlCitQQVNT
IE9iamVjdC5nZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERlcml2ZWRD
b2xsYXRvcikpIGlzIEludGwuQ29sbGF0b3IucHJvdG90eXBlCitQQVNTIEludGwuQ29sbGF0b3Iu
bGVuZ3RoIGlzIDAKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNv
bGxhdG9yLCAncHJvdG90eXBlJykud3JpdGFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLCAncHJvdG90eXBlJykuZW51bWVyYWJs
ZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29s
bGF0b3IsICdwcm90b3R5cGUnKS5jb25maWd1cmFibGUgaXMgZmFsc2UKK1BBU1MgSW50bC5Db2xs
YXRvci5zdXBwb3J0ZWRMb2NhbGVzT2YubGVuZ3RoIGlzIDEKK1BBU1MgSW50bC5Db2xsYXRvci5z
dXBwb3J0ZWRMb2NhbGVzT2YoKSBpcyBhbiBpbnN0YW5jZSBvZiBBcnJheQorUEFTUyBJbnRsLkNv
bGxhdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyBJbnRsLkNvbGxhdG9yCitQQVNTIEludGwu
Q29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLnByb3RvdHlw
ZSwgJ2NvbXBhcmUnKS5nZXQgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSwgJ2NvbXBh
cmUnKS5zZXQgaXMgdW5kZWZpbmVkCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSW50bC5Db2xsYXRvci5wcm90b3R5cGUsICdjb21wYXJlJykuZW51bWVyYWJsZSBpcyBmYWxz
ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IucHJv
dG90eXBlLCAnY29tcGFyZScpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQQVNTIEludGwuQ29sbGF0
b3IucHJvdG90eXBlLmNvbXBhcmUubGVuZ3RoIGlzIDIKK1BBU1MgT2JqZWN0LmRlZmluZVByb3Bl
cnR5KHt9LCAnY29tcGFyZScsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5D
b2xsYXRvci5wcm90b3R5cGUsICdjb21wYXJlJykpLmNvbXBhcmUgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvci4KK1BBU1MgSW50
bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSAhPT0gSW50bC5Db2xsYXRvcigpLmNvbXBhcmUg
aXMgdHJ1ZQorUEFTUyBuZXcgSW50bC5Db2xsYXRvcigpLmNvbXBhcmUgIT09IG5ldyBJbnRsLkNv
bGxhdG9yKCkuY29tcGFyZSBpcyB0cnVlCitQQVNTIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNv
bXBhcmUoeyB0b1N0cmluZygpIHsgdGhyb3cgRXJyb3IoJzYnKSB9IH0sIHsgdG9TdHJpbmcoKSB7
ICsrYmFkQ2FsbHM7IHJldHVybiAnJzsgfSB9KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IDYuCitQ
QVNTIGJhZENhbGxzIGlzIDAKK1BBU1MgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSgn
YScsIHsgdG9TdHJpbmcoKSB7IHRocm93IEVycm9yKCc4JykgfSB9KSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IDguCitQQVNTIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUuY2FsbChudWxs
LCAnYScsICdiJykgaXMgLTEKK1BBU1MgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZS5j
YWxsKEludGwuQ29sbGF0b3IoJ2VuJywgeyBzZW5zaXRpdml0eTonYmFzZScgfSksICdBJywgJ2En
KSBpcyAtMQorUEFTUyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlLmNhbGwoNSwgJ2En
LCAnYicpIGlzIC0xCitQQVNTIG5ldyBJbnRsLkNvbGxhdG9yKCkuY29tcGFyZS5jYWxsKG51bGws
ICdhJywgJ2InKSBpcyAtMQorUEFTUyBuZXcgSW50bC5Db2xsYXRvcigpLmNvbXBhcmUuY2FsbChJ
bnRsLkNvbGxhdG9yKCdlbicsIHsgc2Vuc2l0aXZpdHk6J2Jhc2UnIH0pLCAnQScsICdhJykgaXMg
LTEKK1BBU1MgbmV3IEludGwuQ29sbGF0b3IoKS5jb21wYXJlLmNhbGwoNSwgJ2EnLCAnYicpIGlz
IC0xCitQQVNTIEludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5sZW5ndGgg
aXMgMAorUEFTUyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSBpcyBh
biBpbnN0YW5jZSBvZiBPYmplY3QKK1BBU1MgSW50bC5Db2xsYXRvci5wcm90b3R5cGUucmVzb2x2
ZWRPcHRpb25zKCkgPT09IEludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygp
IGlzIGZhbHNlCitQQVNTIEludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5j
YWxsKDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludGwuQ29sbGF0b3IucHJvdG90eXBl
LnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5p
dGlhbGl6ZWQgYXMgYSBDb2xsYXRvci4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9pbnRsLWNvbGxh
dG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWNvbGxhdG9yLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGU2Yzg3ZGNmMGRhODE3MTk0MjQ4ZTg1NTY3NGNjODQ2OTk4OThkYgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2pzL2ludGwtY29sbGF0b3IuaHRtbApAQCAtMCwwICsxLDEwIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvaW50bC1jb2xsYXRv
ci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9pbnRsLWRhdGV0aW1lZm9ybWF0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2ludGwt
ZGF0ZXRpbWVmb3JtYXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5Nzc2ZjVkYmM2MzIzOGVj
MGYyYjgyZDJjODg0NzM2ZmExZmQwZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9pbnRsLWRhdGV0aW1lZm9ybWF0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQ2IEBACitUaGlz
IHRlc3QgY2hlY2tzIHRoZSBiZWhhdmlvciBvZiBJbnRsLkRhdGVUaW1lRm9ybWF0IGFzIGRlc2Ny
aWJlZCBpbiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkgU3BlY2lmaWNh
dGlvbiAoRUNNQS00MDIgMi4wKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgSW50bC5EYXRlVGltZUZvcm1hdCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBJ
bnRsLkRhdGVUaW1lRm9ybWF0KCkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5EYXRlVGltZUZvcm1h
dAorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0LmNhbGwoe30pIGlzIGFuIGluc3RhbmNlIG9mIElu
dGwuRGF0ZVRpbWVGb3JtYXQKK1BBU1MgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKSBpcyBhbiBp
bnN0YW5jZSBvZiBJbnRsLkRhdGVUaW1lRm9ybWF0CitQQVNTIG5ldyBEZXJpdmVkRGF0ZVRpbWVG
b3JtYXQgaXMgYW4gaW5zdGFuY2Ugb2YgRGVyaXZlZERhdGVUaW1lRm9ybWF0CitQQVNTIG5ldyBE
ZXJpdmVkRGF0ZVRpbWVGb3JtYXQgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5EYXRlVGltZUZvcm1h
dAorUEFTUyBuZXcgRGVyaXZlZERhdGVUaW1lRm9ybWF0KCkuZm9ybWF0KDApLmxlbmd0aCA+IDAg
aXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERlcml2ZWREYXRlVGltZUZv
cm1hdCkgaXMgRGVyaXZlZERhdGVUaW1lRm9ybWF0LnByb3RvdHlwZQorUEFTUyBPYmplY3QuZ2V0
UHJvdG90eXBlT2YoT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBEZXJpdmVkRGF0ZVRpbWVGb3Jt
YXQpKSBpcyBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZQorUEFTUyBJbnRsLkRhdGVUaW1l
Rm9ybWF0Lmxlbmd0aCBpcyAwCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SW50bC5EYXRlVGltZUZvcm1hdCwgJ3Byb3RvdHlwZScpLndyaXRhYmxlIGlzIGZhbHNlCitQQVNT
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdCwgJ3By
b3RvdHlwZScpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LCAncHJvdG90eXBlJykuY29uZmlndXJhYmxl
IGlzIGZhbHNlCitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mLmxl
bmd0aCBpcyAxCitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCkg
aXMgYW4gaW5zdGFuY2Ugb2YgQXJyYXkKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5
cGUuY29uc3RydWN0b3IgaXMgSW50bC5EYXRlVGltZUZvcm1hdAorUEFTUyBJbnRsLkRhdGVUaW1l
Rm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3Rv
dHlwZSwgJ2Zvcm1hdCcpLmdldCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBl
LCAnZm9ybWF0Jykuc2V0IGlzIHVuZGVmaW5lZAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykuZW51bWVy
YWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwu
RGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykuY29uZmlndXJhYmxlIGlzIHRydWUK
K1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0Lmxlbmd0aCBpcyAxCitQ
QVNTIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2Zvcm1hdCcsIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKSku
Zm9ybWF0IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludGwuRGF0ZVRpbWVGb3JtYXQucHJv
dG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlh
bGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdC4KK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90
b3R5cGUuZm9ybWF0ICE9PSBJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0IGlzIHRydWUKK1BB
U1MgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQgIT09IG5ldyBJbnRsLkRhdGVUaW1l
Rm9ybWF0KCkuZm9ybWF0IGlzIHRydWUKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5
cGUuZm9ybWF0KHsgdmFsdWVPZigpIHsgdGhyb3cgRXJyb3IoJzRiJykgfSB9KSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IDRiLgorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3Jt
YXQoSW5maW5pdHkpIHRocmV3IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiBkYXRlIHZhbHVlIGlzIG5v
dCBmaW5pdGUgaW4gRGF0ZVRpbWVGb3JtYXQuZm9ybWF0KCkuCitQQVNTIEludGwuRGF0ZVRpbWVG
b3JtYXQucHJvdG90eXBlLmZvcm1hdC5jYWxsKG51bGwsIDApIGlzIEludGwuRGF0ZVRpbWVGb3Jt
YXQoKS5mb3JtYXQoMCkKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0
LmNhbGwoSW50bC5EYXRlVGltZUZvcm1hdCgnYXInKSwgMCkgaXMgSW50bC5EYXRlVGltZUZvcm1h
dCgpLmZvcm1hdCgwKQorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQu
Y2FsbCg1LCAwKSBpcyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0KDApCitQQVNTIG5ldyBJ
bnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0LmNhbGwobnVsbCwgMCkgaXMgSW50bC5EYXRlVGlt
ZUZvcm1hdCgpLmZvcm1hdCgwKQorUEFTUyBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1h
dC5jYWxsKEludGwuRGF0ZVRpbWVGb3JtYXQoJ2FyJyksIDApIGlzIEludGwuRGF0ZVRpbWVGb3Jt
YXQoKS5mb3JtYXQoMCkKK1BBU1MgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQuY2Fs
bCg1LCAwKSBpcyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0KDApCitQQVNTIEludGwuRGF0
ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5sZW5ndGggaXMgMAorUEFTUyBJ
bnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSBpcyBhbiBpbnN0
YW5jZSBvZiBPYmplY3QKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2
ZWRPcHRpb25zKCkgPT09IEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0
aW9ucygpIGlzIGZhbHNlCitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29s
dmVkT3B0aW9ucy5jYWxsKDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludGwuRGF0ZVRp
bWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdC4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9pbnRsLWRhdGV0aW1lZm9ybWF0Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9p
bnRsLWRhdGV0aW1lZm9ybWF0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE1OGZjZjUwNDkxOGYwMDk0MDhh
MmMyOWY4ZTMzNjc1OWRlZTkzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2lu
dGwtZGF0ZXRpbWVmb3JtYXQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvaW50bC1kYXRldGltZWZvcm1hdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9pbnRsLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2ludGwtZXhwZWN0ZWQudHh0CmluZGV4IGIyNmFm
ODYzMzY1MWIxNDBjOGYxMGI4OTdhOTA4ZjBjYThjYWE5ZDYuLmFjNGIwNDQ4NjFmMDFkNWQzNmY3
ZDRhM2Y3NjM3ZWVlNzZhZTc2MTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2ludGwtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2ludGwtZXhwZWN0ZWQudHh0CkBAIC0xLDQg
KzEsNCBAQAotVGhpcyB0ZXN0IGNoZWNrcyB0aGUgYmVoYXZpb3Igb2YgdGhlIEludGwgb2JqZWN0
IGFzIGRlc2NyaWJlZCBpbiA4IG9mIHRoZSBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9u
IEFQSSBTcGVjaWZpY2F0aW9uLgorVGhpcyB0ZXN0IGNoZWNrcyB0aGUgYmVoYXZpb3Igb2YgdGhl
IEludGwgb2JqZWN0IGFzIGRlc2NyaWJlZCBpbiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFs
aXphdGlvbiBBUEkgU3BlY2lmaWNhdGlvbiAoRUNNQS00MDIgMi4wKS4KIAogT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgogCkBAIC05LDYgKzksNyBAQCBQQVNTIE9iamVjdC5wcm90b3R5cGUudG9T
dHJpbmcuY2FsbChJbnRsKSBpcyAnW29iamVjdCBPYmplY3RdJwogUEFTUyBPYmplY3QuZ2V0UHJv
dG90eXBlT2YoSW50bCkgPT09IE9iamVjdC5wcm90b3R5cGUgaXMgdHJ1ZQogUEFTUyBuZXcgSW50
bCB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBPYmplY3QgaXMgbm90IGEgY29uc3RydWN0b3Ig
KGV2YWx1YXRpbmcgJ25ldyBJbnRsJykuCiBQQVNTIEludGwoKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBJbnRsIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ0ludGwoKScsICdJbnRsJyBpcyBh
biBpbnN0YW5jZSBvZiBPYmplY3QpLgorUEFTUyBPYmplY3Qua2V5cyhJbnRsKS5sZW5ndGggaXMg
MAogUEFTUyBkZWxldGUgSW50bDsgaXMgdHJ1ZQogUEFTUyAnSW50bCcgaW4gZ2xvYmFsKCkgaXMg
ZmFsc2UKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2ludGwtbnVtYmVyZm9ybWF0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pz
L2ludGwtbnVtYmVyZm9ybWF0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NmRlMDEyMWJmYzMy
OWI0NmU2OGNhOGEzOGQ4ODZiMjIyYWM5MWRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvaW50bC1udW1iZXJmb3JtYXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDUgQEAKK1Ro
aXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIEludGwuTnVtYmVyRm9ybWF0IGFzIGRlc2Ny
aWJlZCBpbiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkgU3BlY2lmaWNh
dGlvbiAoRUNNQS00MDIgMi4wKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgSW50bC5OdW1iZXJGb3JtYXQgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgSW50
bC5OdW1iZXJGb3JtYXQoKSBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLk51bWJlckZvcm1hdAorUEFT
UyBJbnRsLk51bWJlckZvcm1hdC5jYWxsKHt9KSBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLk51bWJl
ckZvcm1hdAorUEFTUyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKSBpcyBhbiBpbnN0YW5jZSBvZiBJ
bnRsLk51bWJlckZvcm1hdAorUEFTUyBuZXcgRGVyaXZlZE51bWJlckZvcm1hdCBpcyBhbiBpbnN0
YW5jZSBvZiBEZXJpdmVkTnVtYmVyRm9ybWF0CitQQVNTIG5ldyBEZXJpdmVkTnVtYmVyRm9ybWF0
IGlzIGFuIGluc3RhbmNlIG9mIEludGwuTnVtYmVyRm9ybWF0CitQQVNTIG5ldyBEZXJpdmVkTnVt
YmVyRm9ybWF0KCkuZm9ybWF0KDEpIGlzICcxJworUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
bmV3IERlcml2ZWROdW1iZXJGb3JtYXQpIGlzIERlcml2ZWROdW1iZXJGb3JtYXQucHJvdG90eXBl
CitQQVNTIE9iamVjdC5nZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERl
cml2ZWROdW1iZXJGb3JtYXQpKSBpcyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUKK1BBU1Mg
SW50bC5OdW1iZXJGb3JtYXQubGVuZ3RoIGlzIDAKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdCwgJ3Byb3RvdHlwZScpLndyaXRhYmxlIGlzIGZh
bHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3Jt
YXQsICdwcm90b3R5cGUnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQsICdwcm90b3R5cGUnKS5jb25maWd1
cmFibGUgaXMgZmFsc2UKK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09m
Lmxlbmd0aCBpcyAxCitQQVNTIEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZigp
IGlzIGFuIGluc3RhbmNlIG9mIEFycmF5CitQQVNTIEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciBpcyBJbnRsLk51bWJlckZvcm1hdAorUEFTUyBJbnRsLk51bWJlckZvcm1h
dC5wcm90b3R5cGUuZm9ybWF0IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCAn
Zm9ybWF0JykuZ2V0IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0
Jykuc2V0IGlzIHVuZGVmaW5lZAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmVudW1lcmFibGUgaXMgZmFs
c2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1h
dC5wcm90b3R5cGUsICdmb3JtYXQnKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBJbnRsLk51
bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0Lmxlbmd0aCBpcyAxCitQQVNTIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh7fSwgJ2Zvcm1hdCcsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykpLmZvcm1hdCB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZv
cm1hdC4KK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCAhPT0gSW50bC5O
dW1iZXJGb3JtYXQoKS5mb3JtYXQgaXMgdHJ1ZQorUEFTUyBuZXcgSW50bC5OdW1iZXJGb3JtYXQo
KS5mb3JtYXQgIT09IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdCBpcyB0cnVlCitQQVNT
IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQoeyB2YWx1ZU9mKCkgeyB0aHJvdyBF
cnJvcignNScpIH0gfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiA1LgorUEFTUyBJbnRsLk51bWJl
ckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0LmNhbGwobnVsbCwgMS4yKSBpcyBJbnRsLk51bWJlckZv
cm1hdCgpLmZvcm1hdCgxLjIpCitQQVNTIEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3Jt
YXQuY2FsbChJbnRsLkRhdGVUaW1lRm9ybWF0KCdhcicpLCAxLjIpIGlzIEludGwuTnVtYmVyRm9y
bWF0KCkuZm9ybWF0KDEuMikKK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1h
dC5jYWxsKDUsIDEuMikgaXMgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoMS4yKQorUEFTUyBu
ZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQuY2FsbChudWxsLCAxLjIpIGlzIEludGwuTnVt
YmVyRm9ybWF0KCkuZm9ybWF0KDEuMikKK1BBU1MgbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9y
bWF0LmNhbGwoSW50bC5EYXRlVGltZUZvcm1hdCgnYXInKSwgMS4yKSBpcyBJbnRsLk51bWJlckZv
cm1hdCgpLmZvcm1hdCgxLjIpCitQQVNTIG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdC5j
YWxsKDUsIDEuMikgaXMgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoMS4yKQorUEFTUyBJbnRs
Lk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zLmxlbmd0aCBpcyAwCitQQVNT
IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSBpcyBhbiBpbnN0
YW5jZSBvZiBPYmplY3QKK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVk
T3B0aW9ucygpID09PSBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25z
KCkgaXMgZmFsc2UKK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0
aW9ucy5jYWxsKDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludGwuTnVtYmVyRm9ybWF0
LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4g
b2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0LgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL2ludGwtbnVtYmVyZm9ybWF0Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLW51bWJlcmZv
cm1hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzOGUyMGYyZjI5YWE3YTU3YjNkODk4YWNkYWNiZTRiYTlj
YzU3ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLW51bWJlcmZvcm1h
dC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9pbnRsLW51bWJlcmZvcm1hdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1jb2xsYXRv
ci5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLWNvbGxhdG9yLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJjNjNiZDYyMGMwODNhZTc1YmQwYjYxN2MxY2I4M2Y5MzllMmQwZjYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1jb2xsYXRvci5qcwpA
QCAtMCwwICsxLDEwOSBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2
aW9yIG9mIEludGwuQ29sbGF0b3IgYXMgZGVzY3JpYmVkIGluIHRoZSBFQ01BU2NyaXB0IEludGVy
bmF0aW9uYWxpemF0aW9uIEFQSSBTcGVjaWZpY2F0aW9uIChFQ01BLTQwMiAyLjApLiIpOworCisv
LyAxMC4xIFRoZSBJbnRsLkNvbGxhdG9yIENvbnN0cnVjdG9yCisKKy8vIFRoZSBJbnRsLkNvbGxh
dG9yIGNvbnN0cnVjdG9yIGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4gcHJvcGVydHkgb2YgdGhlIElu
dGwgb2JqZWN0Lgorc2hvdWxkQmVUeXBlKCJJbnRsLkNvbGxhdG9yIiwgIkZ1bmN0aW9uIik7CisK
Ky8vIDEwLjEuMiBJbnRsLkNvbGxhdG9yKFsgbG9jYWxlcyBbLCBvcHRpb25zXV0pCitzaG91bGRC
ZVR5cGUoIkludGwuQ29sbGF0b3IoKSIsICJJbnRsLkNvbGxhdG9yIik7CitzaG91bGRCZVR5cGUo
IkludGwuQ29sbGF0b3IuY2FsbCh7fSkiLCAiSW50bC5Db2xsYXRvciIpOworc2hvdWxkQmVUeXBl
KCJuZXcgSW50bC5Db2xsYXRvcigpIiwgIkludGwuQ29sbGF0b3IiKTsKKworLy8gU3ViY2xhc3Nh
YmxlCitjbGFzcyBEZXJpdmVkQ29sbGF0b3IgZXh0ZW5kcyBJbnRsLkNvbGxhdG9yIHt9CitzaG91
bGRCZVR5cGUoIm5ldyBEZXJpdmVkQ29sbGF0b3IiLCAiRGVyaXZlZENvbGxhdG9yIik7CitzaG91
bGRCZVR5cGUoIm5ldyBEZXJpdmVkQ29sbGF0b3IiLCAiSW50bC5Db2xsYXRvciIpOworc2hvdWxk
QmUoIm5ldyBEZXJpdmVkQ29sbGF0b3IoKS5jb21wYXJlKCdhJywgJ2InKSIsICItMSIpOworc2hv
dWxkQmUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgRGVyaXZlZENvbGxhdG9yKSIsICJEZXJp
dmVkQ29sbGF0b3IucHJvdG90eXBlIik7CitzaG91bGRCZSgiT2JqZWN0LmdldFByb3RvdHlwZU9m
KE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgRGVyaXZlZENvbGxhdG9yKSkiLCAiSW50bC5Db2xs
YXRvci5wcm90b3R5cGUiKTsKKworLy8gMTAuMiBQcm9wZXJ0aWVzIG9mIHRoZSBJbnRsLkNvbGxh
dG9yIENvbnN0cnVjdG9yCisKKy8vIGxlbmd0aCBwcm9wZXJ0eSAod2hvc2UgdmFsdWUgaXMgMCkK
K3Nob3VsZEJlKCJJbnRsLkNvbGxhdG9yLmxlbmd0aCIsICIwIik7CisKKy8vIDEwLjIuMSBJbnRs
LkNvbGxhdG9yLnByb3RvdHlwZQorCisvLyBUaGlzIHByb3BlcnR5IGhhcyB0aGUgYXR0cmlidXRl
cyB7IFtbV3JpdGFibGVdXTogZmFsc2UsIFtbRW51bWVyYWJsZV1dOiBmYWxzZSwgW1tDb25maWd1
cmFibGVdXTogZmFsc2UgfS4KK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSW50bC5Db2xsYXRvciwgJ3Byb3RvdHlwZScpLndyaXRhYmxlIik7CitzaG91bGRC
ZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IsICdw
cm90b3R5cGUnKS5lbnVtZXJhYmxlIik7CitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IsICdwcm90b3R5cGUnKS5jb25maWd1cmFibGUi
KTsKKworLy8gMTAuMi4yIEludGwuQ29sbGF0b3Iuc3VwcG9ydGVkTG9jYWxlc09mIChsb2NhbGVz
IFssIG9wdGlvbnMgXSkKKworLy8gVGhlIHZhbHVlIG9mIHRoZSBsZW5ndGggcHJvcGVydHkgb2Yg
dGhlIHN1cHBvcnRlZExvY2FsZXNPZiBtZXRob2QgaXMgMS4KK3Nob3VsZEJlKCJJbnRsLkNvbGxh
dG9yLnN1cHBvcnRlZExvY2FsZXNPZi5sZW5ndGgiLCAiMSIpOworCisvLyBSZXR1cm5zIFN1cHBv
cnRlZExvY2FsZXMKK3Nob3VsZEJlVHlwZSgiSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRMb2NhbGVz
T2YoKSIsICJBcnJheSIpOworCisvLyAxMC4zIFByb3BlcnRpZXMgb2YgdGhlIEludGwuQ29sbGF0
b3IgUHJvdG90eXBlIE9iamVjdAorCisvLyBUaGUgdmFsdWUgb2YgSW50bC5Db2xsYXRvci5wcm90
b3R5cGUuY29uc3RydWN0b3IgaXMgJUNvbGxhdG9yJS4KK3Nob3VsZEJlKCJJbnRsLkNvbGxhdG9y
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciIsICJJbnRsLkNvbGxhdG9yIik7CisKKy8vIDEwLjMuMyBJ
bnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlCisKKy8vIFRoaXMgbmFtZWQgYWNjZXNzb3Ig
cHJvcGVydHkgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY29tcGFyZXMgdHdvIHN0cmluZ3MgYWNj
b3JkaW5nIHRvIHRoZSBzb3J0IG9yZGVyIG9mIHRoaXMgQ29sbGF0b3Igb2JqZWN0Lgorc2hvdWxk
QmVUeXBlKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIiwgIkZ1bmN0aW9uIik7CisK
Ky8vIFRoZSB2YWx1ZSBvZiB0aGUgW1tHZXRdXSBhdHRyaWJ1dGUgaXMgYSBmdW5jdGlvbgorc2hv
dWxkQmVUeXBlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3Iu
cHJvdG90eXBlLCAnY29tcGFyZScpLmdldCIsICJGdW5jdGlvbiIpOworCisvLyBUaGUgdmFsdWUg
b2YgdGhlIFtbU2V0XV0gYXR0cmlidXRlIGlzIHVuZGVmaW5lZC4KK3Nob3VsZEJlKCJPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IucHJvdG90eXBlLCAnY29tcGFy
ZScpLnNldCIsICJ1bmRlZmluZWQiKTsKKworLy8gTWF0Y2ggRmlyZWZveCB3aGVyZSB1bnNwZWNp
ZmVkLgorc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRs
LkNvbGxhdG9yLnByb3RvdHlwZSwgJ2NvbXBhcmUnKS5lbnVtZXJhYmxlIik7CitzaG91bGRCZVRy
dWUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvci5wcm90b3R5
cGUsICdjb21wYXJlJykuY29uZmlndXJhYmxlIik7CisKKy8vIFRoZSB2YWx1ZSBvZiBG4oCZcyBs
ZW5ndGggcHJvcGVydHkgaXMgMi4KK3Nob3VsZEJlKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5j
b21wYXJlLmxlbmd0aCIsICIyIik7CisKKy8vIFRocm93cyBvbiBub24tQ29sbGF0b3IgdGhpcy4K
K3Nob3VsZFRocm93KCJPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdjb21wYXJlJywgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSwgJ2NvbXBh
cmUnKSkuY29tcGFyZSIsICInVHlwZUVycm9yOiBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21w
YXJlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0XFwncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFz
IGEgQ29sbGF0b3InIik7CisKKy8vIFRoZSBjb21wYXJlIGZ1bmN0aW9uIGlzIHVuaXF1ZSBwZXIg
aW5zdGFuY2UuCitzaG91bGRCZVRydWUoIkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUg
IT09IEludGwuQ29sbGF0b3IoKS5jb21wYXJlIik7CitzaG91bGRCZVRydWUoIm5ldyBJbnRsLkNv
bGxhdG9yKCkuY29tcGFyZSAhPT0gbmV3IEludGwuQ29sbGF0b3IoKS5jb21wYXJlIik7CisKKy8v
IDEwLjMuNCBDb2xsYXRvciBDb21wYXJlIEZ1bmN0aW9ucworCisvLyAxLiBMZXQgY29sbGF0b3Ig
YmUgdGhlIHRoaXMgdmFsdWUuCisvLyAyLiBBc3NlcnQ6IFR5cGUoY29sbGF0b3IpIGlzIE9iamVj
dCBhbmQgY29sbGF0b3IgaGFzIGFuIFtbaW5pdGlhbGl6ZWRDb2xsYXRvcl1dIGludGVybmFsIHNs
b3Qgd2hvc2UgdmFsdWUgaXMgdHJ1ZS4KKy8vIFRoaXMgc2hvdWxkIG5vdCBiZSByZWFjaGFibGUs
IHNpbmNlIGNvbXBhcmUgaXMgYm91bmQgdG8gYW4gaW5pdGlhbGl6ZWQgY29sbGF0b3IuCisKKy8v
IDMuIElmIHggaXMgbm90IHByb3ZpZGVkLCBsZXQgeCBiZSB1bmRlZmluZWQuCisvLyA0LiBJZiB5
IGlzIG5vdCBwcm92aWRlZCwgbGV0IHkgYmUgdW5kZWZpbmVkLgorLy8gNS4gTGV0IFggYmUgVG9T
dHJpbmcoeCkuCisvLyA2LiBSZXR1cm5JZkFicnVwdChYKS4KK3ZhciBiYWRDYWxscyA9IDA7Citz
aG91bGRUaHJvdygiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSh7IHRvU3RyaW5nKCkg
eyB0aHJvdyBFcnJvcignNicpIH0gfSwgeyB0b1N0cmluZygpIHsgKytiYWRDYWxsczsgcmV0dXJu
ICcnOyB9IH0pIiwgIidFcnJvcjogNiciKTsKK3Nob3VsZEJlKCJiYWRDYWxscyIsICIwIik7CisK
Ky8vIDcuIExldCBZIGJlIFRvU3RyaW5nKHkpLgorLy8gOC4gUmV0dXJuSWZBYnJ1cHQoWSkuCitz
aG91bGRUaHJvdygiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSgnYScsIHsgdG9TdHJp
bmcoKSB7IHRocm93IEVycm9yKCc4JykgfSB9KSIsICInRXJyb3I6IDgnIik7CisKKy8vIENvbXBh
cmUgaXMgYm91bmQsIHNvIGNhbGxpbmcgd2l0aCBhbHRlcm5hdGUgInRoaXMiIGhhcyBubyBlZmZl
Y3QuCitzaG91bGRCZSgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZS5jYWxsKG51bGws
ICdhJywgJ2InKSIsICItMSIpOworc2hvdWxkQmUoIkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNv
bXBhcmUuY2FsbChJbnRsLkNvbGxhdG9yKCdlbicsIHsgc2Vuc2l0aXZpdHk6J2Jhc2UnIH0pLCAn
QScsICdhJykiLCAiLTEiKTsKK3Nob3VsZEJlKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21w
YXJlLmNhbGwoNSwgJ2EnLCAnYicpIiwgIi0xIik7CitzaG91bGRCZSgibmV3IEludGwuQ29sbGF0
b3IoKS5jb21wYXJlLmNhbGwobnVsbCwgJ2EnLCAnYicpIiwgIi0xIik7CitzaG91bGRCZSgibmV3
IEludGwuQ29sbGF0b3IoKS5jb21wYXJlLmNhbGwoSW50bC5Db2xsYXRvcignZW4nLCB7IHNlbnNp
dGl2aXR5OidiYXNlJyB9KSwgJ0EnLCAnYScpIiwgIi0xIik7CitzaG91bGRCZSgibmV3IEludGwu
Q29sbGF0b3IoKS5jb21wYXJlLmNhbGwoNSwgJ2EnLCAnYicpIiwgIi0xIik7CisKKy8vIDEwLjMu
NSBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgKCkKKworc2hvdWxkQmUo
IkludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5sZW5ndGgiLCAiMCIpOwor
CisvLyBSZXR1cm5zIGEgbmV3IG9iamVjdCB3aG9zZSBwcm9wZXJ0aWVzIGFuZCBhdHRyaWJ1dGVz
IGFyZSBzZXQgYXMgaWYgY29uc3RydWN0ZWQgYnkgYW4gb2JqZWN0IGxpdGVyYWwuCitzaG91bGRC
ZVR5cGUoIkludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIiwgIk9iamVj
dCIpOworCisvLyBSZXR1cm5zIGEgbmV3IG9iamVjdCBlYWNoIHRpbWUuCitzaG91bGRCZUZhbHNl
KCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSA9PT0gSW50bC5Db2xs
YXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkiKTsKKworLy8gVGhyb3dzIG9uIG5vbi1D
b2xsYXRvciB0aGlzLgorc2hvdWxkVGhyb3coIkludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29s
dmVkT3B0aW9ucy5jYWxsKDUpIiwgIidUeXBlRXJyb3I6IEludGwuQ29sbGF0b3IucHJvdG90eXBl
LnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdFxcJ3Mgbm90IGFuIG9iamVjdCBp
bml0aWFsaXplZCBhcyBhIENvbGxhdG9yJyIpOworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvaW50bC1kYXRldGltZWZvcm1hdC5qcyBiL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9pbnRsLWRhdGV0aW1lZm9ybWF0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmOGE5Y2Q0MzVi
ZGMzZmVlOGU2MzkyNGQ2MjZmYTg1NTE5YjQzOWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1kYXRldGltZWZvcm1hdC5qcwpAQCAtMCwwICsxLDEw
OSBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIEludGwu
RGF0ZVRpbWVGb3JtYXQgYXMgZGVzY3JpYmVkIGluIHRoZSBFQ01BU2NyaXB0IEludGVybmF0aW9u
YWxpemF0aW9uIEFQSSBTcGVjaWZpY2F0aW9uIChFQ01BLTQwMiAyLjApLiIpOworCisvLyAxMi4x
IFRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IENvbnN0cnVjdG9yCisKKy8vIFRoZSBJbnRsLkRhdGVU
aW1lRm9ybWF0IGNvbnN0cnVjdG9yIGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4gcHJvcGVydHkgb2Yg
dGhlIEludGwgb2JqZWN0Lgorc2hvdWxkQmVUeXBlKCJJbnRsLkRhdGVUaW1lRm9ybWF0IiwgIkZ1
bmN0aW9uIik7CisKKy8vIDEyLjEuMiBJbnRsLkRhdGVUaW1lRm9ybWF0KFsgbG9jYWxlcyBbLCBv
cHRpb25zXV0pCitzaG91bGRCZVR5cGUoIkludGwuRGF0ZVRpbWVGb3JtYXQoKSIsICJJbnRsLkRh
dGVUaW1lRm9ybWF0Iik7CitzaG91bGRCZVR5cGUoIkludGwuRGF0ZVRpbWVGb3JtYXQuY2FsbCh7
fSkiLCAiSW50bC5EYXRlVGltZUZvcm1hdCIpOworc2hvdWxkQmVUeXBlKCJuZXcgSW50bC5EYXRl
VGltZUZvcm1hdCgpIiwgIkludGwuRGF0ZVRpbWVGb3JtYXQiKTsKKworLy8gU3ViY2xhc3NhYmxl
CitjbGFzcyBEZXJpdmVkRGF0ZVRpbWVGb3JtYXQgZXh0ZW5kcyBJbnRsLkRhdGVUaW1lRm9ybWF0
IHt9CitzaG91bGRCZVR5cGUoIm5ldyBEZXJpdmVkRGF0ZVRpbWVGb3JtYXQiLCAiRGVyaXZlZERh
dGVUaW1lRm9ybWF0Iik7CitzaG91bGRCZVR5cGUoIm5ldyBEZXJpdmVkRGF0ZVRpbWVGb3JtYXQi
LCAiSW50bC5EYXRlVGltZUZvcm1hdCIpOworc2hvdWxkQmVUcnVlKCJuZXcgRGVyaXZlZERhdGVU
aW1lRm9ybWF0KCkuZm9ybWF0KDApLmxlbmd0aCA+IDAiKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0
UHJvdG90eXBlT2YobmV3IERlcml2ZWREYXRlVGltZUZvcm1hdCkiLCAiRGVyaXZlZERhdGVUaW1l
Rm9ybWF0LnByb3RvdHlwZSIpOworc2hvdWxkQmUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihPYmpl
Y3QuZ2V0UHJvdG90eXBlT2YobmV3IERlcml2ZWREYXRlVGltZUZvcm1hdCkpIiwgIkludGwuRGF0
ZVRpbWVGb3JtYXQucHJvdG90eXBlIik7CisKKy8vIDEyLjIgUHJvcGVydGllcyBvZiB0aGUgSW50
bC5EYXRlVGltZUZvcm1hdCBDb25zdHJ1Y3RvcgorCisvLyBsZW5ndGggcHJvcGVydHkgKHdob3Nl
IHZhbHVlIGlzIDApCitzaG91bGRCZSgiSW50bC5EYXRlVGltZUZvcm1hdC5sZW5ndGgiLCAiMCIp
OworCisvLyAxMi4yLjEgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUKKworLy8gVGhpcyBw
cm9wZXJ0eSBoYXMgdGhlIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IGZhbHNlLCBbW0VudW1l
cmFibGVdXTogZmFsc2UsIFtbQ29uZmlndXJhYmxlXV06IGZhbHNlIH0uCitzaG91bGRCZUZhbHNl
KCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQsICdw
cm90b3R5cGUnKS53cml0YWJsZSIpOworc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LCAncHJvdG90eXBlJykuZW51bWVyYWJs
ZSIpOworc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRs
LkRhdGVUaW1lRm9ybWF0LCAncHJvdG90eXBlJykuY29uZmlndXJhYmxlIik7CisKKy8vIDEyLjIu
MiBJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZiAobG9jYWxlcyBbLCBvcHRp
b25zIF0pCisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUgbGVuZ3RoIHByb3BlcnR5IG9mIHRoZSBzdXBw
b3J0ZWRMb2NhbGVzT2YgbWV0aG9kIGlzIDEuCitzaG91bGRCZSgiSW50bC5EYXRlVGltZUZvcm1h
dC5zdXBwb3J0ZWRMb2NhbGVzT2YubGVuZ3RoIiwgIjEiKTsKKworLy8gUmV0dXJucyBTdXBwb3J0
ZWRMb2NhbGVzCitzaG91bGRCZVR5cGUoIkludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9j
YWxlc09mKCkiLCAiQXJyYXkiKTsKKworLy8gMTIuMyBQcm9wZXJ0aWVzIG9mIHRoZSBJbnRsLkRh
dGVUaW1lRm9ybWF0IFByb3RvdHlwZSBPYmplY3QKKworLy8gVGhlIHZhbHVlIG9mIEludGwuRGF0
ZVRpbWVGb3JtYXQucHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzICVEYXRlVGltZUZvcm1hdCUuCitz
aG91bGRCZSgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0b3IiLCAiSW50
bC5EYXRlVGltZUZvcm1hdCIpOworCisvLyAxMi4zLjMgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90
b3R5cGUuZm9ybWF0CisKKy8vIFRoaXMgbmFtZWQgYWNjZXNzb3IgcHJvcGVydHkgcmV0dXJucyBh
IGZ1bmN0aW9uIHRoYXQgZm9ybWF0cyBhIGRhdGUgYWNjb3JkaW5nIHRvIHRoZSBlZmZlY3RpdmUg
bG9jYWxlIGFuZCB0aGUgZm9ybWF0dGluZyBvcHRpb25zIG9mIHRoaXMgRGF0ZVRpbWVGb3JtYXQg
b2JqZWN0Lgorc2hvdWxkQmVUeXBlKCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3Jt
YXQiLCAiRnVuY3Rpb24iKTsKKworLy8gVGhlIHZhbHVlIG9mIHRoZSBbW0dldF1dIGF0dHJpYnV0
ZSBpcyBhIGZ1bmN0aW9uCitzaG91bGRCZVR5cGUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5nZXQiLCAiRnVu
Y3Rpb24iKTsKKworLy8gVGhlIHZhbHVlIG9mIHRoZSBbW1NldF1dIGF0dHJpYnV0ZSBpcyB1bmRl
ZmluZWQuCitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRh
dGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLnNldCIsICJ1bmRlZmluZWQiKTsKKwor
Ly8gTWF0Y2ggRmlyZWZveCB3aGVyZSB1bnNwZWNpZmVkLgorc2hvdWxkQmVGYWxzZSgiT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwg
J2Zvcm1hdCcpLmVudW1lcmFibGUiKTsKK3Nob3VsZEJlVHJ1ZSgiT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmNv
bmZpZ3VyYWJsZSIpOworCisvLyBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlz
IDEuCitzaG91bGRCZSgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0Lmxlbmd0
aCIsICIxIik7CisKKy8vIFRocm93cyBvbiBub24tRGF0ZVRpbWVGb3JtYXQgdGhpcy4KK3Nob3Vs
ZFRocm93KCJPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdmb3JtYXQnLCBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0
JykpLmZvcm1hdCIsICInVHlwZUVycm9yOiBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5m
b3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXRcXCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQg
YXMgYSBEYXRlVGltZUZvcm1hdCciKTsKKworLy8gVGhlIGZvcm1hdCBmdW5jdGlvbiBpcyB1bmlx
dWUgcGVyIGluc3RhbmNlLgorc2hvdWxkQmVUcnVlKCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3Rv
dHlwZS5mb3JtYXQgIT09IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQiKTsKK3Nob3VsZEJl
VHJ1ZSgibmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQgIT09IG5ldyBJbnRsLkRhdGVU
aW1lRm9ybWF0KCkuZm9ybWF0Iik7CisKKy8vIDEyLjMuNCBEYXRlVGltZSBGb3JtYXQgRnVuY3Rp
b25zCisKKy8vIDEuIExldCBkdGYgYmUgdGhlIHRoaXMgdmFsdWUuCisvLyAyLiBBc3NlcnQ6IFR5
cGUoZHRmKSBpcyBPYmplY3QgYW5kIGR0ZiBoYXMgYW4gW1tpbml0aWFsaXplZERhdGVUaW1lRm9y
bWF0XV0gaW50ZXJuYWwgc2xvdCB3aG9zZSB2YWx1ZSBpcyB0cnVlLgorLy8gVGhpcyBzaG91bGQg
bm90IGJlIHJlYWNoYWJsZSwgc2luY2UgZm9ybWF0IGlzIGJvdW5kIHRvIGFuIGluaXRpYWxpemVk
IGRhdGV0aW1lZm9ybWF0LgorCisvLyAzLiBJZiBkYXRlIGlzIG5vdCBwcm92aWRlZCBvciBpcyB1
bmRlZmluZWQsIHRoZW4KKy8vIGEuIExldCB4IGJlICVEYXRlX25vdyUoKS4KKy8vIDQuIEVsc2UK
Ky8vIGEuIExldCB4IGJlIFRvTnVtYmVyKGRhdGUpLgorLy8gYi4gUmV0dXJuSWZBYnJ1cHQoeCku
CitzaG91bGRUaHJvdygiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0KHsgdmFs
dWVPZigpIHsgdGhyb3cgRXJyb3IoJzRiJykgfSB9KSIsICInRXJyb3I6IDRiJyIpOworCisvLyAx
Mi4zLjQgRm9ybWF0RGF0ZVRpbWUgYWJzdHJhY3Qgb3BlcmF0aW9uCisKKy8vIDEuIElmIHggaXMg
bm90IGEgZmluaXRlIE51bWJlciwgdGhlbiB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uLgor
c2hvdWxkVGhyb3coIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdChJbmZpbml0
eSkiLCAiJ1JhbmdlRXJyb3I6IGRhdGUgdmFsdWUgaXMgbm90IGZpbml0ZSBpbiBEYXRlVGltZUZv
cm1hdC5mb3JtYXQoKSciKTsKKworLy8gRm9ybWF0IGlzIGJvdW5kLCBzbyBjYWxsaW5nIHdpdGgg
YWx0ZXJuYXRlICJ0aGlzIiBoYXMgbm8gZWZmZWN0Lgorc2hvdWxkQmUoIkludGwuRGF0ZVRpbWVG
b3JtYXQucHJvdG90eXBlLmZvcm1hdC5jYWxsKG51bGwsIDApIiwgIkludGwuRGF0ZVRpbWVGb3Jt
YXQoKS5mb3JtYXQoMCkiKTsKK3Nob3VsZEJlKCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlw
ZS5mb3JtYXQuY2FsbChJbnRsLkRhdGVUaW1lRm9ybWF0KCdhcicpLCAwKSIsICJJbnRsLkRhdGVU
aW1lRm9ybWF0KCkuZm9ybWF0KDApIik7CitzaG91bGRCZSgiSW50bC5EYXRlVGltZUZvcm1hdC5w
cm90b3R5cGUuZm9ybWF0LmNhbGwoNSwgMCkiLCAiSW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1h
dCgwKSIpOworc2hvdWxkQmUoIm5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0LmNhbGwo
bnVsbCwgMCkiLCAiSW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdCgwKSIpOworc2hvdWxkQmUo
Im5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0LmNhbGwoSW50bC5EYXRlVGltZUZvcm1h
dCgnYXInKSwgMCkiLCAiSW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdCgwKSIpOworc2hvdWxk
QmUoIm5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0LmNhbGwoNSwgMCkiLCAiSW50bC5E
YXRlVGltZUZvcm1hdCgpLmZvcm1hdCgwKSIpOworCisvLyAxMi4zLjUgSW50bC5EYXRlVGltZUZv
cm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zICgpCisKK3Nob3VsZEJlKCJJbnRsLkRhdGVU
aW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMubGVuZ3RoIiwgIjAiKTsKKworLy8g
UmV0dXJucyBhIG5ldyBvYmplY3Qgd2hvc2UgcHJvcGVydGllcyBhbmQgYXR0cmlidXRlcyBhcmUg
c2V0IGFzIGlmIGNvbnN0cnVjdGVkIGJ5IGFuIG9iamVjdCBsaXRlcmFsLgorc2hvdWxkQmVUeXBl
KCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSIsICJPYmpl
Y3QiKTsKKworLy8gUmV0dXJucyBhIG5ldyBvYmplY3QgZWFjaCB0aW1lLgorc2hvdWxkQmVGYWxz
ZSgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgPT09IElu
dGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIik7CisKKy8vIFRo
cm93cyBvbiBub24tRGF0ZVRpbWVGb3JtYXQgdGhpcy4KK3Nob3VsZFRocm93KCJJbnRsLkRhdGVU
aW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMuY2FsbCg1KSIsICInVHlwZUVycm9y
OiBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9u
IHZhbHVlIHRoYXRcXCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZv
cm1hdCciKTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwt
bnVtYmVyZm9ybWF0LmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtbnVtYmVy
Zm9ybWF0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1NzNiOTIwNTQxMTMwOWQzY2Q0YjA3YjllMDhjZTExYjYz
Y2E5YTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50
bC1udW1iZXJmb3JtYXQuanMKQEAgLTAsMCArMSwxMDIgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRl
c3QgY2hlY2tzIHRoZSBiZWhhdmlvciBvZiBJbnRsLk51bWJlckZvcm1hdCBhcyBkZXNjcmliZWQg
aW4gdGhlIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmljYXRpb24g
KEVDTUEtNDAyIDIuMCkuIik7CisKKy8vIDExLjEgVGhlIEludGwuTnVtYmVyRm9ybWF0IENvbnN0
cnVjdG9yCisKKy8vIFRoZSBJbnRsLk51bWJlckZvcm1hdCBjb25zdHJ1Y3RvciBpcyBhIHN0YW5k
YXJkIGJ1aWx0LWluIHByb3BlcnR5IG9mIHRoZSBJbnRsIG9iamVjdC4KK3Nob3VsZEJlVHlwZSgi
SW50bC5OdW1iZXJGb3JtYXQiLCAiRnVuY3Rpb24iKTsKKworLy8gMTEuMS4yIEludGwuTnVtYmVy
Rm9ybWF0KFsgbG9jYWxlcyBbLCBvcHRpb25zXV0pCitzaG91bGRCZVR5cGUoIkludGwuTnVtYmVy
Rm9ybWF0KCkiLCAiSW50bC5OdW1iZXJGb3JtYXQiKTsKK3Nob3VsZEJlVHlwZSgiSW50bC5OdW1i
ZXJGb3JtYXQuY2FsbCh7fSkiLCAiSW50bC5OdW1iZXJGb3JtYXQiKTsKK3Nob3VsZEJlVHlwZSgi
bmV3IEludGwuTnVtYmVyRm9ybWF0KCkiLCAiSW50bC5OdW1iZXJGb3JtYXQiKTsKKworLy8gU3Vi
Y2xhc3NhYmxlCitjbGFzcyBEZXJpdmVkTnVtYmVyRm9ybWF0IGV4dGVuZHMgSW50bC5OdW1iZXJG
b3JtYXQge30KK3Nob3VsZEJlVHlwZSgibmV3IERlcml2ZWROdW1iZXJGb3JtYXQiLCAiRGVyaXZl
ZE51bWJlckZvcm1hdCIpOworc2hvdWxkQmVUeXBlKCJuZXcgRGVyaXZlZE51bWJlckZvcm1hdCIs
ICJJbnRsLk51bWJlckZvcm1hdCIpOworc2hvdWxkQmUoIm5ldyBEZXJpdmVkTnVtYmVyRm9ybWF0
KCkuZm9ybWF0KDEpIiwgIicxJyIpOworc2hvdWxkQmUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihu
ZXcgRGVyaXZlZE51bWJlckZvcm1hdCkiLCAiRGVyaXZlZE51bWJlckZvcm1hdC5wcm90b3R5cGUi
KTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2YoT2JqZWN0LmdldFByb3RvdHlwZU9m
KG5ldyBEZXJpdmVkTnVtYmVyRm9ybWF0KSkiLCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBl
Iik7CisKKy8vIDExLjIgUHJvcGVydGllcyBvZiB0aGUgSW50bC5OdW1iZXJGb3JtYXQgQ29uc3Ry
dWN0b3IKKworLy8gbGVuZ3RoIHByb3BlcnR5ICh3aG9zZSB2YWx1ZSBpcyAwKQorc2hvdWxkQmUo
IkludGwuTnVtYmVyRm9ybWF0Lmxlbmd0aCIsICIwIik7CisKKy8vIDExLjIuMSBJbnRsLk51bWJl
ckZvcm1hdC5wcm90b3R5cGUKKworLy8gVGhpcyBwcm9wZXJ0eSBoYXMgdGhlIGF0dHJpYnV0ZXMg
eyBbW1dyaXRhYmxlXV06IGZhbHNlLCBbW0VudW1lcmFibGVdXTogZmFsc2UsIFtbQ29uZmlndXJh
YmxlXV06IGZhbHNlIH0uCitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LCAncHJvdG90eXBlJykud3JpdGFibGUiKTsKK3Nob3Vs
ZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3Jt
YXQsICdwcm90b3R5cGUnKS5lbnVtZXJhYmxlIik7CitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LCAncHJvdG90eXBlJykuY29u
ZmlndXJhYmxlIik7CisKKy8vIDExLjIuMiBJbnRsLk51bWJlckZvcm1hdC5zdXBwb3J0ZWRMb2Nh
bGVzT2YgKGxvY2FsZXMgWywgb3B0aW9ucyBdKQorCisvLyBUaGUgdmFsdWUgb2YgdGhlIGxlbmd0
aCBwcm9wZXJ0eSBvZiB0aGUgc3VwcG9ydGVkTG9jYWxlc09mIG1ldGhvZCBpcyAxLgorc2hvdWxk
QmUoIkludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZi5sZW5ndGgiLCAiMSIpOwor
CisvLyBSZXR1cm5zIFN1cHBvcnRlZExvY2FsZXMKK3Nob3VsZEJlVHlwZSgiSW50bC5OdW1iZXJG
b3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCkiLCAiQXJyYXkiKTsKKworLy8gMTEuMyBQcm9wZXJ0
aWVzIG9mIHRoZSBJbnRsLk51bWJlckZvcm1hdCBQcm90b3R5cGUgT2JqZWN0CisKKy8vIFRoZSB2
YWx1ZSBvZiBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgJU51bWJl
ckZvcm1hdCUuCitzaG91bGRCZSgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmNvbnN0cnVj
dG9yIiwgIkludGwuTnVtYmVyRm9ybWF0Iik7CisKKy8vIDExLjMuMyBJbnRsLk51bWJlckZvcm1h
dC5wcm90b3R5cGUuZm9ybWF0CisKKy8vIFRoaXMgbmFtZWQgYWNjZXNzb3IgcHJvcGVydHkgcmV0
dXJucyBhIGZ1bmN0aW9uIHRoYXQgZm9ybWF0cyBhIG51bWJlciBhY2NvcmRpbmcgdG8gdGhlIGVm
ZmVjdGl2ZSBsb2NhbGUgYW5kIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgb2YgdGhpcyBOdW1iZXJG
b3JtYXQgb2JqZWN0Lgorc2hvdWxkQmVUeXBlKCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUu
Zm9ybWF0IiwgIkZ1bmN0aW9uIik7CisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUgW1tHZXRdXSBhdHRy
aWJ1dGUgaXMgYSBmdW5jdGlvbgorc2hvdWxkQmVUeXBlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmdldCIsICJG
dW5jdGlvbiIpOworCisvLyBUaGUgdmFsdWUgb2YgdGhlIFtbU2V0XV0gYXR0cmlidXRlIGlzIHVu
ZGVmaW5lZC4KK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwu
TnVtYmVyRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLnNldCIsICJ1bmRlZmluZWQiKTsKKwor
Ly8gTWF0Y2ggRmlyZWZveCB3aGVyZSB1bnNwZWNpZmVkLgorc2hvdWxkQmVGYWxzZSgiT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUsICdm
b3JtYXQnKS5lbnVtZXJhYmxlIik7CitzaG91bGRCZVRydWUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykuY29uZmln
dXJhYmxlIik7CisKKy8vIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVydHkgaXMgMS4K
K3Nob3VsZEJlKCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0Lmxlbmd0aCIsICIx
Iik7CisKKy8vIFRocm93cyBvbiBub24tTnVtYmVyRm9ybWF0IHRoaXMuCitzaG91bGRUaHJvdygi
T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnZm9ybWF0JywgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKSkuZm9ybWF0
IiwgIidUeXBlRXJyb3I6IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVk
IG9uIHZhbHVlIHRoYXRcXCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJG
b3JtYXQnIik7CisKKy8vIFRoZSBmb3JtYXQgZnVuY3Rpb24gaXMgdW5pcXVlIHBlciBpbnN0YW5j
ZS4KK3Nob3VsZEJlVHJ1ZSgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCAhPT0g
SW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQiKTsKK3Nob3VsZEJlVHJ1ZSgibmV3IEludGwuTnVt
YmVyRm9ybWF0KCkuZm9ybWF0ICE9PSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQiKTsK
KworLy8gMTEuMy40IEZvcm1hdCBOdW1iZXIgRnVuY3Rpb25zCisKKy8vIDEuIExldCBuZiBiZSB0
aGUgdGhpcyB2YWx1ZS4KKy8vIDIuIEFzc2VydDogVHlwZShuZikgaXMgT2JqZWN0IGFuZCBuZiBo
YXMgYW4gW1tpbml0aWFsaXplZE51bWJlckZvcm1hdF1dIGludGVybmFsIHNsb3Qgd2hvc2UgdmFs
dWUgaXMgdHJ1ZS4KKy8vIFRoaXMgc2hvdWxkIG5vdCBiZSByZWFjaGFibGUsIHNpbmNlIGZvcm1h
dCBpcyBib3VuZCB0byBhbiBpbml0aWFsaXplZCBudW1iZXJmb3JtYXQuCisKKy8vIDMuIElmIHZh
bHVlIGlzIG5vdCBwcm92aWRlZCwgbGV0IHZhbHVlIGJlIHVuZGVmaW5lZC4KKy8vIDQuIExldCB4
IGJlIFRvTnVtYmVyKHZhbHVlKS4KKy8vIDUuIFJldHVybklmQWJydXB0KHgpLgorc2hvdWxkVGhy
b3coIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQoeyB2YWx1ZU9mKCkgeyB0aHJv
dyBFcnJvcignNScpIH0gfSkiLCAiJ0Vycm9yOiA1JyIpOworCisvLyBGb3JtYXQgaXMgYm91bmQs
IHNvIGNhbGxpbmcgd2l0aCBhbHRlcm5hdGUgInRoaXMiIGhhcyBubyBlZmZlY3QuCitzaG91bGRC
ZSgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5jYWxsKG51bGwsIDEuMikiLCAi
SW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoMS4yKSIpOworc2hvdWxkQmUoIkludGwuTnVtYmVy
Rm9ybWF0LnByb3RvdHlwZS5mb3JtYXQuY2FsbChJbnRsLkRhdGVUaW1lRm9ybWF0KCdhcicpLCAx
LjIpIiwgIkludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KDEuMikiKTsKK3Nob3VsZEJlKCJJbnRs
Lk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0LmNhbGwoNSwgMS4yKSIsICJJbnRsLk51bWJl
ckZvcm1hdCgpLmZvcm1hdCgxLjIpIik7CitzaG91bGRCZSgibmV3IEludGwuTnVtYmVyRm9ybWF0
KCkuZm9ybWF0LmNhbGwobnVsbCwgMS4yKSIsICJJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdCgx
LjIpIik7CitzaG91bGRCZSgibmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0LmNhbGwoSW50
bC5EYXRlVGltZUZvcm1hdCgnYXInKSwgMS4yKSIsICJJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1h
dCgxLjIpIik7CitzaG91bGRCZSgibmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0LmNhbGwo
NSwgMS4yKSIsICJJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdCgxLjIpIik7CisKKy8vIDExLjMu
NSBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zICgpCisKK3Nob3Vs
ZEJlKCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zLmxlbmd0aCIs
ICIwIik7CisKKy8vIFJldHVybnMgYSBuZXcgb2JqZWN0IHdob3NlIHByb3BlcnRpZXMgYW5kIGF0
dHJpYnV0ZXMgYXJlIHNldCBhcyBpZiBjb25zdHJ1Y3RlZCBieSBhbiBvYmplY3QgbGl0ZXJhbC4K
K3Nob3VsZEJlVHlwZSgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9u
cygpIiwgIk9iamVjdCIpOworCisvLyBSZXR1cm5zIGEgbmV3IG9iamVjdCBlYWNoIHRpbWUuCitz
aG91bGRCZUZhbHNlKCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25z
KCkgPT09IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSIpOwor
CisvLyBUaHJvd3Mgb24gbm9uLU51bWJlckZvcm1hdCB0aGlzLgorc2hvdWxkVGhyb3coIkludGwu
TnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMuY2FsbCg1KSIsICInVHlwZUVy
cm9yOiBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBv
biB2YWx1ZSB0aGF0XFwncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9y
bWF0JyIpOworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC5q
cyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLmpzCmluZGV4IDhhNGNmNTg0ZTJm
MDljZWM4N2Q1NWY5MzIyNjQ0M2VkNzE4MzJlMzkuLjA5NjgyODcyODg2MGIwY2M4OTgyNzk3Yzlj
NGRmOTczODJkODg4NTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9p
bnRsLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLmpzCkBAIC0xLDIz
ICsxLDI2IEBACi0vLyBUaGlzIGZlYXR1cmUgaXNuJ3QgZW5hYmxlZCB5ZXQuCi0vL0Agc2tpcAor
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBJbnRsIG9i
amVjdCBhcyBkZXNjcmliZWQgaW4gdGhlIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24g
QVBJIFNwZWNpZmljYXRpb24gKEVDTUEtNDAyIDIuMCkuIik7CiAKLWRlc2NyaXB0aW9uKCJUaGlz
IHRlc3QgY2hlY2tzIHRoZSBiZWhhdmlvciBvZiB0aGUgSW50bCBvYmplY3QgYXMgZGVzY3JpYmVk
IGluIDggb2YgdGhlIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmlj
YXRpb24uIik7CisvLyA4IFRoZSBJbnRsIE9iamVjdAogCi0vLyBUaGUgSW50bCBvYmplY3QgaXMg
YSBzdGFuZGFyZCBidWlsdC1pbiBvYmplY3QgdGhhdCBpcyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiB0
aGUgSW50bCBwcm9wZXJ0eSBvZiB0aGUgZ2xvYmFsIG9iamVjdC4KKy8vIFRoZSBJbnRsIG9iamVj
dCBpcyBhIHNpbmdsZSBvcmRpbmFyeSBvYmplY3QuCiBzaG91bGRCZVR5cGUoIkludGwiLCAiT2Jq
ZWN0Iik7CiBzaG91bGRCZSgidHlwZW9mIEludGwiLCAiJ29iamVjdCciKTsKIHNob3VsZEJlKCJP
YmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoSW50bCkiLCAiJ1tvYmplY3QgT2JqZWN0XSci
KTsKIAotLy8gVGhlIHZhbHVlIG9mIHRoZSBbW1Byb3RvdHlwZV1dIGludGVybmFsIHByb3BlcnR5
IG9mIHRoZSBJbnRsIG9iamVjdCBpcyB0aGUgYnVpbHQtaW4gT2JqZWN0IHByb3RvdHlwZSBvYmpl
Y3Qgc3BlY2lmaWVkIGJ5IHRoZSBFQ01BU2NyaXB0IExhbmd1YWdlIFNwZWNpZmljYXRpb24uCisv
LyBUaGUgdmFsdWUgb2YgdGhlIFtbUHJvdG90eXBlXV0gaW50ZXJuYWwgc2xvdCBvZiB0aGUgSW50
bCBvYmplY3QgaXMgdGhlIGludHJpbnNpYyBvYmplY3QgJU9iamVjdFByb3RvdHlwZSUuCiBzaG91
bGRCZVRydWUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihJbnRsKSA9PT0gT2JqZWN0LnByb3RvdHlw
ZSIpOwogCi0vLyBUaGUgSW50bCBvYmplY3QgZG9lcyBub3QgaGF2ZSBhIFtbQ29uc3RydWN0XV0g
aW50ZXJuYWwgcHJvcGVydHk7IGl0IGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgdGhlIEludGwgb2Jq
ZWN0IGFzIGEgY29uc3RydWN0b3Igd2l0aCB0aGUgbmV3IG9wZXJhdG9yLgorLy8gVGhlIEludGwg
b2JqZWN0IGlzIG5vdCBhIGZ1bmN0aW9uIG9iamVjdC4KKy8vIEl0IGRvZXMgbm90IGhhdmUgYSBb
W0NvbnN0cnVjdF1dIGludGVybmFsIG1ldGhvZDsgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHVzZSB0
aGUgSW50bCBvYmplY3QgYXMgYSBjb25zdHJ1Y3RvciB3aXRoIHRoZSBuZXcgb3BlcmF0b3IuCiBz
aG91bGRUaHJvdygibmV3IEludGwiLCAiJ1R5cGVFcnJvcjogT2JqZWN0IGlzIG5vdCBhIGNvbnN0
cnVjdG9yIChldmFsdWF0aW5nIFxcJ25ldyBJbnRsXFwnKSciKTsKIAotLy8gVGhlIEludGwgb2Jq
ZWN0IGRvZXMgbm90IGhhdmUgYSBbW0NhbGxdXSBpbnRlcm5hbCBwcm9wZXJ0eTsgaXQgaXMgbm90
IHBvc3NpYmxlIHRvIGludm9rZSB0aGUgSW50bCBvYmplY3QgYXMgYSBmdW5jdGlvbi4KKy8vIFRo
ZSBJbnRsIG9iamVjdCBkb2VzIG5vdCBoYXZlIGEgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kOyBp
dCBpcyBub3QgcG9zc2libGUgdG8gaW52b2tlIHRoZSBJbnRsIG9iamVjdCBhcyBhIGZ1bmN0aW9u
Lgogc2hvdWxkVGhyb3coIkludGwoKSIsICInVHlwZUVycm9yOiBJbnRsIGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gXFwnSW50bCgpXFwnLCBcXCdJbnRsXFwnIGlzIGFuIGluc3RhbmNlIG9mIE9iamVj
dCknIik7CiAKLS8vIGlzIGRlbGV0YWJsZSwgaW5mZXJyZWQgZnJvbSB1c2Ugb2YgIkluaXRpYWwi
IGluIHNwZWMsIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBpbXBsZW1lbnRhdGlvbnMKKy8vIEhhcyBv
bmx5IHRoZSBidWlsdC1pbiBDb2xsYXRvciwgRGF0ZVRpbWVGb3JtYXQsIGFuZCBOdW1iZXJGb3Jt
YXQsIHdoaWNoIGFyZSBub3QgZW51bWVyYWJsZS4KK3Nob3VsZEJlKCJPYmplY3Qua2V5cyhJbnRs
KS5sZW5ndGgiLCAiMCIpOworCisvLyBJcyBkZWxldGFibGUsIGluZmVycmVkIGZyb20gdXNlIG9m
ICJJbml0aWFsIiBpbiBzcGVjLCBjb25zaXN0ZW50IHdpdGggb3RoZXIgaW1wbGVtZW50YXRpb25z
LgogdmFyIF9fSW50bCA9IEludGw7CiBzaG91bGRCZVRydWUoImRlbGV0ZSBJbnRsOyIpOwogCkBA
IC0yNSwzICsyOCw0IEBAIGZ1bmN0aW9uIGdsb2JhbCgpIHsgcmV0dXJuIHRoaXM7IH0KIHNob3Vs
ZEJlRmFsc2UoIidJbnRsJyBpbiBnbG9iYWwoKSIpOwogCiBJbnRsID0gX19JbnRsOworCmRpZmYg
LS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZjBkODEyN2FmMTA4OWY1NjAwN2Y4
NmYyZjAwMzY2YmIwZTExZjIwMS4uOTllODRjNTliZDcxMjdmM2Q0OThlYzlhMTZjNjI4MzI2ZjU0
NjZlZCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDE1LTA3LTI4ICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHR5cGVzIGZvciBFQ01BU2NyaXB0IEludGVy
bmF0aW9uYWxpemF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ2OTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRW5hYmxlIGZsYWcgbm93IHRoYXQgdGhlIGJhc2ljIG9iamVjdHMgYXJlIGlu
IHBsYWNlLgorCisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOiBl
bmFibGUgSU5UTAorCiAyMDE1LTA3LTI4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgogCiAgICAgICAgIFtFUzZdIEFkZCBFTkFCTEVfRVM2X01PRFVMRVMgY29tcGlsZSB0
aW1lIGZsYWcgd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZSAiZmFsc2UiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257726</attachid>
            <date>2015-07-28 20:05:10 -0700</date>
            <delta_ts>2015-07-29 18:00:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146926-20150728210346.patch</filename>
            <type>text/plain</type>
            <size>181109</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3NTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NWE3MTY0ZjVhY2ZlY2ZiMzk5ZmMxYWRjOTlmODUyMzRiMzVmZDZkLi4wMjk4NmViZDk3MGQzNzdj
MzdkNDBjNzVjYTlhN2YyYmRkY2I1ZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDQgQEAKKzIwMTUtMDctMjggIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVy
QGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3Jp
cHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRzIGJhc2ljIHR5cGVzIGZvciBFQ01BLTQwMiAybmQgZWRp
dGlvbiwgYnV0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZnVsbCBsb2NhbGUtYXdhcmUgZmVhdHVy
ZXMgeWV0LgorICAgICAgICBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS00
MDIvMi4wL0VDTUEtNDAyLnBkZgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIG5l
dyBJbnRsIGZpbGVzLgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnOiBFbmFibGUgSU5UTC4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBBZGRl
ZCBJbnRsIGZpbGVzLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IEFkZGVkIEludGwgZmlsZXMuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOiBBZGRlZCBJbnRsIGZpbGVzLgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOiBB
ZGRlZCBJbnRsIGZpbGVzLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDog
QWRkZWQgQ29sbGF0b3IsIE51bWJlckZvcm1hdCwgYW5kIERhdGVUaW1lRm9ybWF0LgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDogTWFkZSBEYXRlLm5vdyBwdWJsaWMuCisg
ICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaDogTWFkZSBEYXRlLm5vdyBwdWJsaWMu
CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SW50bENvbGxhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6SW50bENvbGxhdG9y
KToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChKU0M6OkludGxDb2xsYXRvcjo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRv
cjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6c2V0Qm91bmRD
b21wYXJlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yRnVuY0NvbXBhcmUpOiBBZGRlZCBw
bGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiB1c2luZyBjb2RlUG9pbnRDb21wYXJlLgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3I6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpib3VuZENv
bXBhcmUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6SW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJbnRsQ29sbGF0b3IpOiBBZGRlZCBDb2xs
YXRvciBjb25zdHJ1Y3RvciAoMTAuMS4yKS4KKyAgICAgICAgKEpTQzo6Y2FsbEludGxDb2xsYXRv
cik6IEFkZGVkIENvbGxhdG9yIGNvbnN0cnVjdG9yICgxMC4xLjIpLgorICAgICAgICAoSlNDOjpJ
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChKU0M6
OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6Oklu
dGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlND
OjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YpOiBBZGRlZCBw
bGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcgW10uCisgICAgICAgIChKU0M6Oklu
dGxDb2xsYXRvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1l
L0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsQ29s
bGF0b3JDb25zdHJ1Y3Rvcjo6Y29sbGF0b3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxDb2xs
YXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5
cGU6OkludGxDb2xsYXRvclByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvclBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90
b3R5cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvclBy
b3RvdHlwZUdldHRlckNvbXBhcmUpOiBBZGRlZCBjb21wYXJlIGdldHRlciAoMTAuMy4zKQorICAg
ICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKTogQWRk
ZWQgcGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIHt9LgorICAgICAgICAqIHJ1
bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxEYXRlVGlt
ZUZvcm1hdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0OjpjcmVh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OkludGxEYXRl
VGltZUZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRlc3Ryb3kpOgorICAg
ICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNldEJvdW5kRm9ybWF0KToKKyAgICAgICAgKEpTQzo6
SW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lKTogQWRkZWQgcGxhY2Vob2xkZXIg
aW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIG5ldyBEYXRlKHZhbHVlKS50b1N0cmluZygpLgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Lmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bERh
dGVUaW1lRm9ybWF0Ojpib3VuZEZvcm1hdCk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdCk6IEFkZGVk
IERhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yICgxMi4xLjIpLgorICAgICAgICAoSlNDOjpjYWxs
SW50bERhdGVUaW1lRm9ybWF0KTogQWRkZWQgRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgKDEy
LjEuMikuCisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpnZXRD
b25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6IEFkZGVkIHBsYWNlaG9sZGVy
IGltcGxlbWVudGF0aW9uIHJldHVybmluZyBbXS4KKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6SW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KTogQWRkZWQgZm9ybWF0IGdldHRlciAoMTIuMy4zKS4K
KyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0
aW9ucyk6IEFkZGVkIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyB7fS4KKyAg
ICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZv
cm1hdDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6
SW50bE51bWJlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6ZGVzdHJveSk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpzZXRCb3VuZEZvcm1hdCk6CisgICAgICAgIChKU0M6Oklu
dGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyKTogQWRkZWQgcGxhY2Vob2xkZXIgaW1wbGVt
ZW50YXRpb24gcmV0dXJuaW5nIE51bWJlcih2YWx1ZSkudG9TdHJpbmcoKS4KKyAgICAgICAgKiBy
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXQ6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6
Ym91bmRGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3I6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KTogQWRkZWQgTnVtYmVyRm9ybWF0IGNvbnN0cnVjdG9yICgx
MS4xLjIpLgorICAgICAgICAoSlNDOjpjYWxsSW50bE51bWJlckZvcm1hdCk6IEFkZGVkIE51bWJl
ckZvcm1hdCBjb25zdHJ1Y3RvciAoMTEuMS4yKS4KKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6SW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6IEFk
ZGVkIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyBbXS4KKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpudW1iZXJGb3JtYXRTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlR2V0dGVyRm9ybWF0KTogQWRkZWQgZm9ybWF0IGdldHRlciAoMTEuMy4zKS4KKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOiBBZGRl
ZCBwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcge30uCisgICAgICAgICogcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRp
bWUvSW50bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKTogQWRkZWQgQ29sbGF0b3Is
IE51bWJlckZvcm1hdCwgYW5kIERhdGVUaW1lRm9ybWF0IHByb3BlcnRpZXMgKDguMSkuCisgICAg
ICAgIChKU0M6OkludGxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bE9iamVjdC5oOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0Ojpjb2xsYXRvckNvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6Y29sbGF0b3JQcm90b3R5cGUpOgorICAg
ICAgICAoSlNDOjpJbnRsT2JqZWN0Ojpjb2xsYXRvclN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkludGxPYmplY3Q6Om51bWJlckZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50
bE9iamVjdDo6bnVtYmVyRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVj
dDo6bnVtYmVyRm9ybWF0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6ZGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmRhdGVU
aW1lRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6ZGF0ZVRpbWVG
b3JtYXRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisKIDIwMTUtMDctMjggIFN1a29s
c2FrIFNha3NodXdvbmcgIDxzdWtvbHNha0BnbWFpbC5jb20+CiAKICAgICAgICAgSW1wbGVtZW50
IFdlYkFzc2VtYmx5IG1vZHVsZSBwYXJzZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzNTcwNGFhYWM1MTFiNGUz
NjNkMTMxYjk4NDQ2MjUyMDZkMzUwM2RmLi5lZWI5Yjk3NTA3NTZmMjk4ZTQxMjMxNThlYzhlODQ5
NzFlNzBiYjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDctMjggIEFuZHkg
VmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOiBFbmFibGVkIElOVEwuCisKIDIwMTUtMDct
MjggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQW5p
bWF0aW9ucyBzb21ldGltZXMgZmFpbCB0byBzdGFydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGY2NWE2
ZTJkNjFjNjhiMWZlZjdkMDViZGZjMWExYWZjMDZkZmRiNTcuLjc5NDc0MTVlMTBkNDMzZWQ2OWQ1
NzdlOTM1MDY2MmQ2NjVjMzg2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxNS0wNy0yOCAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBiYXNpYyB0eXBlcyBmb3IgRUNNQVNjcmlwdCBJbnRlcm5hdGlv
bmFsaXphdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0NjkyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6IEVuYWJsZWQg
SU5UTC4KKwogMjAxNS0wNy0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KIAogICAgICAgICBbRVM2XSBBZGQgRU5BQkxFX0VTNl9NT0RVTEVTIGNvbXBpbGUgdGltZSBm
bGFnIHdpdGggdGhlIGRlZmF1bHQgdmFsdWUgImZhbHNlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDc5NmFhN2Ni
YjAxOTUxNjdkOTk2ODAzYzlhZjFkY2FlM2FkOTFlNzkuLjlkNTUyZTJkZTFlNzVkMTQ1YTIyODE0
NmIzNTdhNTA3Y2E1NWE5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wNy0y
OCAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBiYXNpYyB0eXBlcyBmb3IgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlv
biBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NjkyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6IEVuYWJsZWQgSU5UTC4KKwog
MjAxNS0wNy0yOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAg
ICBDbGVhbiB1cCB1c2VzQXN5bmNDYWxsYmFja3MgaGFuZGxpbmcgaW4gUmVzb3VyY2VIYW5kbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwZWFjMzY2ZTVjNzU5NzJkNDAy
M2RjNWU4YTVmMTU0YzNkMjZiMWJmLi5kNTEwZmExZmZiMWI0ZTFhMTFkZTNmM2FkYTlmN2NhNjkx
NjQ5ZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00NzksNiArNDc5
LDE1IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0lu
aXRpYWxpemVUaHJlYWRpbmcuY3BwCiAgICAgcnVudGltZS9JbnRlbmRlZFN0cnVjdHVyZUNoYWlu
LmNwcAogICAgIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKKyAgICBydW50aW1lL0ludGxD
b2xsYXRvci5jcHAKKyAgICBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAorICAg
IHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmNwcAorICAgIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwCisgICAgcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisgICAgcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorICAgIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAK
ICAgICBydW50aW1lL0ludGxPYmplY3QuY3BwCiAgICAgcnVudGltZS9JdGVyYXRvck9wZXJhdGlv
bnMuY3BwCiAgICAgcnVudGltZS9JdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTYyNCw2ICs2MzMs
MTIgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9GSUxFUwogICAgIHJ1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3Bw
CisgICAgcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ci5jcHAKKyAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCiAgICAgcnVu
dGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCiAgICAgcnVudGltZS9KU09OT2JqZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmlu
ZGV4IGUxNjBjN2Y4MTNjYTRkOTY1YWIwZTAxOGQ4YjcyNjk2ZWNiZWRjNzAuLmJjZTg2MGE3ZWM4
MWQxZjQ2ZmY5ZDM5ZmNjMmFlYWY3OTUwMTcxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcK
QEAgLTExNyw3ICsxMTcsNyBAQCBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29z
eF8xMDEwMDAgPSA7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEx
MDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogRU5BQkxFX1dJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVDsKIAotRU5BQkxFX0lOVEwgPSA7CitFTkFCTEVfSU5UTCA9IEVOQUJMRV9JTlRMOwogCiBF
TkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX0lPU19HRVNU
VVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxfU0RLKSk7CiBF
TkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMgPSBFTkFC
TEVfSU9TX0dFU1RVUkVfRVZFTlRTOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCBmMzVhYjg2NzI0MGY5MjY4OGY5MzZkMTIxZjk5YzExYjM1ZmZhYzUzLi5k
MDcxMjY1MmEwOWIxYzhhZjUxZGEyZTY2ZDlhMTg0YjMwNTlhZTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNDEsNiArNDEsMTIgQEAgYWxsIDogXAog
ICAgIERhdGVDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgRGF0ZVByb3RvdHlwZS5sdXQuaCBcCiAg
ICAgRXJyb3JQcm90b3R5cGUubHV0LmggXAorICAgIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1
dC5oIFwKKyAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggXAorICAgIEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUubHV0LmggXAorICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBcCisgICAg
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCBcCiAgICAgSlNEYXRhVmlld1Byb3RvdHlw
ZS5sdXQuaCBcCiAgICAgSlNPTk9iamVjdC5sdXQuaCBcCiAgICAgSlNHbG9iYWxPYmplY3QubHV0
LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggN2E4NTdmMTg2
Y2U2OTQzOGFhMTQ4NjRkNGNiZTMyYjRiYmQzOWExNC4uOTEzNjk3MDdkZWRlMmI2OTE1M2FmYWY1
NDQ0OTA5NzM0OTM5YTJmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
CkBAIC03MzEsNiArNzMxLDE1IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEluaXRpYWxpemVUaHJlYWRpbmcuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSW50ZXJuYWxGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvci5jcHAiIC8+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCIgLz4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENvbGxhdG9yUHJvdG90eXBlLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9y
bWF0LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIiAvPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0LmNwcCIgLz4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXElu
dGxPYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJdGVy
YXRvck9wZXJhdGlvbnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxJdGVyYXRvclByb3RvdHlwZS5jcHAiIC8+CkBAIC0xNTM5LDYgKzE1NDgsMTUgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50OEFycmF5LmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50ZXJuYWxGdW5jdGlvbi5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3IuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENvbGxhdG9yQ29uc3RydWN0b3Iu
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENvbGxhdG9yUHJv
dG90eXBlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRl
VGltZUZvcm1hdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIgLz4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdC5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsT2Jq
ZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludHJpbnNpYy5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJdGVyYXRpb25TdGF0dXMu
aCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVy
cwppbmRleCA1NmY0ZDg0YzQzOWY1MThiODgyZjhjMTcwMWJjYzg0Y2IzZTExZGJjLi4wMDliMmYx
MjI4MGZhZTc4MmIyOTdlZjRkY2EyN2M2MzAzOTFjNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
LmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC02MzAsNiArNjMwLDMzIEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVybmFsRnVuY3Rpb24uY3BwIj4K
ICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3IuY3BwIj4KKyAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAiPgorICAgICAg
PEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvclByb3RvdHlwZS5jcHAiPgorICAgICAg
PEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdC5jcHAiPgorICAgICAgPEZp
bHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCI+Cisg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNw
cCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdC5jcHAiPgor
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5j
cHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxl
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsT2JqZWN0LmNwcCI+CiAg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTI2OTMs
NiArMjcyMCwzMyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRlcm5h
bEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvci5o
Ij4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5o
Ij4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCI+
CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9ybWF0LmgiPgorICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgi
PgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0LmgiPgor
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5o
Ij4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
LmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxPYmplY3QuaCI+CiAgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYzA2NjljN2ZlMzUwYmE1ZWE0NTMxYWFjNTUzODc0OGU5ZjkzNjUz
Yy4uYWUyZGQ5NjNiYmFhMDFlMjJhN2Q5YjMxMDZlYTZhYzFkZTU0Zjg4NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTExNzcsMTMgKzExNzcsMzcgQEAKIAkJOUU3Mjk0MEIxOTBG
MDUxNDAwMUE5MUI1IC8qIEJ1bmRsZVBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlFNzI5NDBBMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQYXRo
LmggKi87IH07CiAJCTlFQTVDN0ExMTkwRjA4NDIwMDUwOEVCRSAvKiBCdW5kbGVQYXRoLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUU3Mjk0MDkxOTBG
MDMwNjAwMUE5MUI1IC8qIEJ1bmRsZVBhdGgubW0gKi87IH07CiAJCTlFQTVDN0EyMTkwRjA4ODcw
MDUwOEVCRSAvKiBJbml0aWFsaXplTExWTU1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RUE1QzdBMDE5MEYwNUQyMDA1MDhFQkUgLyogSW5pdGlh
bGl6ZUxMVk1NYWMuY3BwICovOyB9OworCQlBMTI1ODQ2RTFCNDVBMzYwMDBDQzdGNkMgLyogSW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTEyNTg0NkMxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJQTEyNTg0NkYxQjQ1QTM2MDAwQ0M3
RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTI1ODQ2RDFCNDVBMzYwMDBDQzdGNkMgLyog
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCAqLzsgfTsKIAkJQTEyQkJGRjIxQjA0NEE4
QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExMkJCRkYxMUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0Lmgg
Ki87IH07CiAJCUExMkJCRkY0MUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMkJCRkYzMUIwNDRB
OTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLzsgfTsKKwkJQTE1ODdENkQxQjREQzE0MTAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q2NzFCNERDMTQxMDBENjk4NDkgLyogSW50bERh
dGVUaW1lRm9ybWF0LmNwcCAqLzsgfTsKKwkJQTE1ODdENkUxQjREQzE0MTAwRDY5ODQ5IC8qIElu
dGxEYXRlVGltZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTE1ODdENjgxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5o
ICovOyB9OworCQlBMTU4N0Q2RjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTE1ODdENjkxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmNwcCAqLzsgfTsKKwkJQTE1ODdENzAxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTU4N0Q2QTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTE1ODdENzExQjREQzE0MTAwRDY5ODQ5IC8qIElu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q2QjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJQTE1ODdENzIxQjREQzE0MTAwRDY5ODQ5
IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1ODdENkMxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZS5oICovOyB9OworCQlBMTU4N0Q3NTFCNERDMUM2MDBENjk4
NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q3MzFCNERDMUM2MDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUExNTg3RDc2
MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q3NDFCNERD
MUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oICovOyB9Owog
CQlBMTcxMkIzQjExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCM0ExMUM3QjIxMjAwN0E1
MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCAqLzsgfTsKIAkJQTE3MTJCM0YxMUM3QjIyODAwN0E1MzE1
IC8qIFJlZ0V4cENhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTcxMkI0MTExQzdC
MjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTE4MTkz
RTMxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE4MTkzRTExQjRFMENE
QjAwRkMxMDI5IC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oICovOyB9OworCQlBMTgx
OTNFNDFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE4MTkzRTIxQjRFMENE
QjAwRkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCAqLzsgfTsKIAkJQTFBMDA5
QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NDA5MjNDMTU2RUVEM0IwMDU2NkNC
MiAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NjQwOTIzQjE1NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBMUI5RTIzOTFCNEUwRDY3MDBC
QzdGRUQgLyogSW50bENvbGxhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjlFMjMzMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3Iu
Y3BwICovOyB9OworCQlBMUI5RTIzQTFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5RTIzNDFC
NEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmggKi87IH07CisJCUExQjlFMjNCMUI0RTBE
NjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5RTIzNTFCNEUwRDY3MDBCQzdGRUQg
LyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwICovOyB9OworCQlBMUI5RTIzQzFCNEUwRDY3
MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjlFMjM2MUI0RTBENjcwMEJDN0ZFRCAvKiBJ
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oICovOyB9OworCQlBMUI5RTIzRDFCNEUwRDY3MDBCQzdG
RUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjlFMjM3MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29s
bGF0b3JQcm90b3R5cGUuY3BwICovOyB9OworCQlBMUI5RTIzRTFCNEUwRDY3MDBCQzdGRUQgLyog
SW50bENvbGxhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMUI5RTIzODFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJv
dG90eXBlLmggKi87IH07CisJCUExRDc5MkZDMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVy
Rm9ybWF0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExRDc5MkY2MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmNwcCAqLzsgfTsK
KwkJQTFENzkyRkQxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkY3MUI0Mzg2NEIw
MDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmggKi87IH07CisJCUExRDc5MkZFMUI0Mzg2NEIw
MDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1
IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCUExRDc5MkZGMUI0
Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkY5MUI0Mzg2NEIwMDQ1
MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTFENzkzMDAx
QjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzkyRkExQjQzODY0QjAw
NDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwICovOyB9OworCQlBMUQ3OTMw
MTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzkyRkIxQjQzODY0QjAw
NDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCAqLzsgfTsKIAkJQTUwM0ZBMTkx
ODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTMxODhFMEZBRjAwMTEwRjE0
IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwogCQlBNTAzRkExQTE4OEUwRkIwMDAx
MTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3Jp
cHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUIxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2
YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTAzRkExNTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcCAqLzsgfTsKQEAgLTI5NzAsMTEgKzI5OTQsMzUgQEAKIAkJOUU3Mjk0MDkxOTBGMDMw
NjAwMUE5MUI1IC8qIEJ1bmRsZVBhdGgubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBCdW5kbGVQYXRoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
RTcyOTQwQTE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCdW5kbGVQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTlFQTVDN0EwMTkwRjA1RDIwMDUwOEVCRSAvKiBJbml0aWFsaXplTExWTU1hYy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJbml0aWFsaXplTExWTU1hYy5jcHA7
IHBhdGggPSBsbHZtL0luaXRpYWxpemVMTFZNTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTEyNTg0NkMxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
MTI1ODQ2RDFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEyQkJGRjExQjA0NEE4
QjAwNjY0QjY5IC8qIEludGxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW50bE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTJCQkZGMzFC
MDQ0QTk4MDA2NjRCNjkgLyogSW50bE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnRsT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTE1ODdENjcxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4N0Q2ODFCNERDMTQxMDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEludGxEYXRlVGltZUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4
N0Q2OTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4N0Q2QTFC
NERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE1ODdENkIxQjREQzE0MTAwRDY5ODQ5
IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4N0Q2QzFCNERDMTQxMDBENjk4NDkgLyogSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBMTU4N0Q3MzFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
MTU4N0Q3NDFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEyQjNBMTFD
N0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZWdFeHBDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEtleS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yQ29u
c3RydWN0b3IubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxDb2xs
YXRvckNvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTgx
OTNFMjFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExQjlFMjMzMUI0RTBENjcwMEJDN0ZFRCAv
KiBJbnRsQ29sbGF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW50bENvbGxhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFCOUUyMzQx
QjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnRsQ29sbGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTFCOUUyMzUxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxDb2xsYXRvckNvbnN0cnVj
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFCOUUyMzYxQjRFMEQ2NzAw
QkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUExQjlFMjM3MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90
b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bENvbGxh
dG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFCOUUyMzgx
QjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsQ29sbGF0b3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTFENzkyRjYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJG
b3JtYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bE51bWJl
ckZvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRDc5MkY3MUI0Mzg2
NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUQ3OTJG
OTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUQ3OTJGQTFCNDM4NjRCMDA0NTE2RjUg
LyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTFENzkyRkIxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTAz
RkExMzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEph
dmFTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2
YVNjcmlwdENhbGxGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTAzRkEx
NTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjczLDYgKzQzMjEsMTIgQEAKIAkJCQlBNTMy
NDM4NDE4NTY4MzE3MDAyRUQ2OTIgLyogSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5oICov
LAogCQkJCUE1MzI0Mzg1MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVj
dHMuY3BwICovLAogCQkJCUE1MzI0Mzg2MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90
b2NvbE9iamVjdHMuaCAqLywKKwkJCQlBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENv
bGxhdG9yQ29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJQTE4MTkzRTIxQjRFMENEQjAwRkMxMDI5
IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCAqLywKKwkJCQlBMTU4N0Q3MzFCNERDMUM2
MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJ
QTE1ODdENzQxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5s
dXQuaCAqLywKKwkJCQlBMTI1ODQ2QzFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmx1dC5oICovLAorCQkJCUExMjU4NDZEMUI0NUEzNjAwMENDN0Y2QyAvKiBJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUE3RDgwMUE2MTg4MEQ2QTgw
MDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8sCiAJCQkJQTdEODAxQTcxODgwRDZBODAwMjZD
MzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8sCiAJCQkJQkM4N0NEQjgxMDcxMkFDQTAwMDYxNENGIC8q
IEpTT05PYmplY3QubHV0LmggKi8sCkBAIC00NTE2LDYgKzQ1NzAsMjQgQEAKIAkJCQlBNzg4NTNG
ODE3OTcyNjI5MDAxNDQwRTQgLyogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oICovLAogCQkJCUJD
OUJCOTVCMEUxOTY4MDYwMERGODg1NSAvKiBJbnRlcm5hbEZ1bmN0aW9uLmNwcCAqLywKIAkJCQlC
QzExNjY3QTBFMTk5QzA1MDA4MDY2REQgLyogSW50ZXJuYWxGdW5jdGlvbi5oICovLAorCQkJCUEx
QjlFMjMzMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuY3BwICovLAorCQkJCUExQjlF
MjM0MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuaCAqLywKKwkJCQlBMUI5RTIzNTFC
NEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwICovLAorCQkJCUEx
QjlFMjM2MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oICovLAor
CQkJCUExQjlFMjM3MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuY3Bw
ICovLAorCQkJCUExQjlFMjM4MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5
cGUuaCAqLywKKwkJCQlBMTU4N0Q2NzFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9y
bWF0LmNwcCAqLywKKwkJCQlBMTU4N0Q2ODFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1l
Rm9ybWF0LmggKi8sCisJCQkJQTE1ODdENjkxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBMTU4N0Q2QTFCNERDMTQxMDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLywKKwkJCQlBMTU4N0Q2QjFCNERD
MTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCAqLywKKwkJCQlB
MTU4N0Q2QzFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgg
Ki8sCisJCQkJQTFENzkyRjYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuY3Bw
ICovLAorCQkJCUExRDc5MkY3MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Lmgg
Ki8sCisJCQkJQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAgKi8sCisJCQkJQTFENzkyRjkxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUExRDc5MkZBMUI0Mzg2NEIwMDQ1MTZGNSAv
KiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCAqLywKKwkJCQlBMUQ3OTJGQjFCNDM4NjRC
MDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oICovLAogCQkJCUExMkJCRkYz
MUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLywKIAkJCQlBMTJCQkZGMTFCMDQ0
QThCMDA2NjRCNjkgLyogSW50bE9iamVjdC5oICovLAogCQkJCTg2QkY2NDJBMTQ4REIyQjUwMDRE
RTM2QSAvKiBJbnRyaW5zaWMuaCAqLywKQEAgLTU3MDYsNiArNTc3OCw3IEBACiAJCQkJMTQ3Qjgz
QUMwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyQTExMTI0NjE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNEY0QjZGNTFBMDVDOTg0MDA1Q0FCNzYgLyogZ2Vu
ZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICov
LAorCQkJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwMzIwMThCRkZCRTEwMDVBMDgxMSAvKiBJ
bnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQkNERTcxOEVGMjk0MjAwMDAy
MDk2IC8qIEdDTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU3QkE2MTAxQTFBN0NFQzAw
RjFGN0I0IC8qIEhlYXBWZXJpZmllci5oIGluIEhlYWRlcnMgKi8sCkBAIC01NzU1LDYgKzU4Mjgs
NyBAQAogCQkJCTBGMjRFNTQxMTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJseUhlbHBlcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3ODRBMjYxMTFEMTY2MjIwMDU3NzZBQyAvKiBBU1RCdWlsZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjY3MzlEMjEzQkZERTcxMDAyM0Q4N0MgLyogQmlnSW50
ZWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTEyNTg0NkUxQjQ1QTM2MDAwQ0M3RjZDIC8qIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
M0VDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBCb29sZWFuT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTVEMkU2NjUxOTVFMTc0MDAwQTUxOEU3IC8qIEpTQ29udGV4dFJlZkludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKQEAgLTU3NjQsNiArNTgzOCw3IEBACiAJCQkJMEZCN0YzOTcxNUVEOEU0
NjAwRjE2N0IyIC8qIEJ1dHRlcmZseS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTgxNUVE
OEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTYy
RDJEMzkwMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggaW4gSGVhZGVycyAq
LywKKwkJCQlBMUI5RTIzQTFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMkZDQUUxMTE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVCYXNpY0Js
b2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0
ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3MjMwRUQxQ0UzMzAw
RjFGNjgxIC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTU4NDMsMTEg
KzU5MTgsMTMgQEAKIAkJCQlBNUVBNzBFODE5RjVCMTAxMDA5OEY1RUMgLyogQXVnbWVudGFibGVJ
bnNwZWN0b3JDb250cm9sbGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkwMzE3
QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTcwNEQ5MDQxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUI5RTIzQzFCNEUwRDY3MDBCQzdGRUQgLyog
SW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIwMTc3MTQz
RkNEM0YwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkYwNTRGQTFBQzM1QjQ0MDBFNUJFNTcgLyogRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjY2RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZHQWRqYWNlbmN5
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMTgxNkQwMkVCMjAwNTVBNURCIC8qIERG
R0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTczNzgxMEMxNzk5RUEyRTAwODE3NTMz
IC8qIERGR0FuYWx5c2lzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUI5RTIzRTFCNEUwRDY3MDBC
QzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjFF
M0E0NjE1MzRDQkFGMDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTVDM0ExQTYxOEMwNDkwMjAwQzk1OTNBIC8qIEpTR2xvYmFsT2JqZWN0Q29uc29s
ZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMjIxODc3NTA1NjAwODNCNjg3IC8q
IERGR0FyaXRoTW9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC01OTExLDYgKzU5ODgsNyBAQAogCQkJ
CTg2RUM5RENDMTMyOERGODIwMDJCMkFENyAvKiBERkdKSVRDb21waWxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTc4QTk3NzkxNzk3MzhCODAwOURGNzQ0IC8qIERGR0pJVEZpbmFsaXplci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZDOTdGNDAxODIwMjExOTAwMkM5QjI2IC8qIERGR0p1bXBSZXBs
YWNlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTEyNTg0NkYxQjQ1QTM2MDAwQ0M3RjZDIC8q
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzNB
NTM1QjE3OTlDRDVEMDAxNzBDMTkgLyogREZHTGF6eUpTVmFsdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMkI5Q0U5MTlEMEJBN0QwMEIxRDFCNSAvKiBERkdPYmplY3RNYXRlcmlhbGl6YXRpb25E
YXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q5QTI5ODE3QTBCQzc0MDBFRTI2MTggLyogREZH
TElDTVBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTYwNDAsNiArNjExOCw3IEBACiAJCQkJMEY2
QjFDQjYxODVGQzlFOTAwODQ1RDk3IC8qIEZUTEpTQ2FsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY4RjJCOTYxNzJFMDRBMzAwN0RCREE1IC8qIEZUTExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQ0VGQUUwMTgwNzM4QzAwMDQ3MkNFNCAvKiBGVExMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTE1ODdENzAxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExMDE3MDUxM0RCMDBCQjcyMkMgLyog
RlRMTG93ZXJERkdUb0xMVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5RDAyMTdBMEI5MDQw
MDc3M0FEOCAvKiBGVExMb3dlcmVkTm9kZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4
QTMxQzE3RDUxRjIyMDBDQTJDNDAgLyogRlRMT1NSRW50cnkuaCBpbiBIZWFkZXJzICovLApAQCAt
NjEwOCw2ICs2MTg3LDcgQEAKIAkJCQlDMjVGOEJDRTE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVt
ZW50YWxTd2VlcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5OTE1RUQ4RTQ2MDBGMTY3
QjIgLyogSW5kZXhpbmdIZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlBMTVFRDhF
NDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUExNTg3RDc2MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUu
bHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QjE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5k
ZXhpbmdUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNFRkFCMDE4MDVDQTZEMDA0NzJDRTQg
LyogSW5pdGlhbGl6ZUxMVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0VGQUNDMTgwNUU3NTUw
MDQ3MkNFNCAvKiBJbml0aWFsaXplTExWTVBPU0lYLmggaW4gSGVhZGVycyAqLywKQEAgLTYxNjIs
NiArNjI0Miw3IEBACiAJCQkJMEZBRjdFRkUxNjVCQTkxRjAwMEM4NDU1IC8qIEpJVERpc2Fzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJ
VEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjE0RTFGMTgxMjRBQ0UwMDlCNkI0
RCAvKiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFENzkz
MDExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg2Q0M4NUExMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjI0RTU0RDE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMzExNUFBODExMjAwOEYzNjNFIC8qIEpJVFN0
dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKQEAgLTYyNjMsNiArNjM0NCw3IEBACiAJCQkJN0Mx
ODRFMjMxN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3QzAwOENEQjE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDMTg0RTFGMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21p
c2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUExODE5M0U0MUI0RTBDREIwMEZDMTAy
OSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjI1
NTNEMjE2MTM2RTFBMDA5RjE3RDAgLyogSlNQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTky
OEZGM0MxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQyNjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNSZXRhaW5QdHIuaCBpbiBIZWFkZXJz
ICovLApAQCAtNjI3NCw2ICs2MzU2LDcgQEAKIAkJCQlCQzE4QzQ1RTBFMTZGNUNEMDBCMzQ0NjAg
LyogSlNTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDMUVBRjAxNzk4N0FCNjAwMjk5REIy
IC8qIEpTU3RhY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyNzBFMTZGNUNE
MDBCMzQ0NjAgLyogSlNTdHJpbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCUExNTg3RDc1MUI0REMx
QzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg2RTg1NTM5MTExQjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1aWxkZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTI2MDBCNUE3MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmlu
Z0pvaW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjgwRTE2RjVDRDAwQjM0NDYwIC8q
IEpTU3RyaW5nUmVmLmggaW4gSGVhZGVycyAqLywKQEAgLTYzNzcsNiArNjQ2MCw3IEBACiAJCQkJ
QkMwMkU5MTEwRTE4MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMDJFOTEzMEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJvclBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDQzBCNjMxOEJFOTk1MDAwNkNFQkNDIC8q
IENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkgaW4gSGVhZGVycyAqLywKKwkJCQlBMTgxOTNF
MzFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkZCOTIyMDE2RDAzM0I3MDA1NUE1REIgLyogTm9kZUNvbnN0cnVjdG9y
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBs
YXRlUmVnaXN0cnlLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDNGMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBOb2Rlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC02NTAxLDYgKzY1ODUsNyBAQAogCQkJ
CUE3Mjk5REE2MTdEMTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTc5MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUQ3OTJGRDFCNDM4NjRCMDA0NTE2RjUgLyog
SW50bE51bWJlckZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZBRTY0QUExMzVFNUUxQzAw
OTYzMDEyIC8qIFNINEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGOEJERUIxQUQ0
Q0Y3MTAwREZFODg0IC8qIEluZmVycmVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2
NzA1MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC02NTc2LDYgKzY2NjEsNyBAQAogCQkJCUE3QjYwMTgyMTYzOUZEMkEwMDM3
MkJBMyAvKiBVbmxpbmtlZENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRTg5MkMx
NkQwMjhBRDAwOUU0RkQyIC8qIFVudXNlZFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdC
MzlGNzcwMUI2MkRFMzIwMDM2MEZCNCAvKiBXQVNNUmVhZGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBMTU4N0Q2RTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYgLyogVmFsdWVSZWNv
dmVyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5QzVFNUYxOEUzNUY1RTAwRDQzMUMzIC8qIEZU
TERXQVJGUmVnaXN0ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNjYwMyw2ICs2Njg5LDcgQEAKIAkJ
CQkyQTRFQzkwQzE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMkI2RDc1MzE4QTMzNzkzMDA0QTkzMDEgLyogV3JpdGVCYXJyaWVySW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDODE1MEExNDA0M0JGNTAwQ0ZBNjAzIC8qIFdy
aXRlQmFycmllclN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUExNTg3RDcyMUI0REMxNDEw
MEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZBc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1ODQwRTJBMTg3Q0E3NTkwMDg0M0IxMCAvKiB4eGQucGwgaW4gSGVhZGVycyAq
LywKIAkJCQkwRjNBMUJGQTFBOUVDQjdEMDAwREUwMUEgLyogREZHUHV0U3RhY2tTaW5raW5nUGhh
c2UuaCBpbiBIZWFkZXJzICovLApAQCAtNzE4NSw2ICs3MjcyLDcgQEAKIAkJCQkwRkVBMEEzMTE3
MEQ0MEJGMDBCQjcyMkMgLyogREZHQ29tbW9uRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjM4QjAxNzE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25LZXkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEYzOEIwMTkxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uTW9k
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUI5RTIzQjFCNEUwRDY3MDBCQzdGRUQgLyogSW50
bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQjNBMUExNTNF
NjhGMjAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQkUwRjcyMTZDMURCMDMwMDgyQzVFOCAvKiBERkdDUFNSZXRocmVhZGluZ1BoYXNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0Y1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdD
cml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzIyOCw2ICs3
MzE2LDcgQEAKIAkJCQlBN0Q4OUNGQjE3QTBCOENDMDA3NzNBRDggLyogREZHTGl2ZW5lc3NBbmFs
eXNpc1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjBGMTk5MTZCNzI5RjYwMDVERjk1
QiAvKiBERkdMb25nTGl2ZWRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzY3QjVCNTE3
QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQTFCOUUyM0QxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclBy
b3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCREM0RDE1MjI4MTg2MDBDRDg5MTAg
LyogREZHTWluaWZpZWROb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3Mzc4MTBEMTc5OUVB
MkUwMDgxNzUzMyAvKiBERkdOYXR1cmFsTG9vcHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZG
MEYxOUMxNkI3MkEwMzAwNURGOTVCIC8qIERGR05vZGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03
MzkyLDYgKzc0ODEsNyBAQAogCQkJCTJBRjczODJDMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1
cmVJRFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1RkQwMDgxMTg5QjE5MUEwMDYzMzIz
MSAvKiBJbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU3RDIz
RTUxODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTE1ODdENkYxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MzI0Mzg3MTg1NjgzMzUwMDJF
RDY5MiAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNzA5RkI4NjkxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRDb25zdHJ1Y3Rvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNTMyNDM4OTE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yRnJv
bnRlbmREaXNwYXRjaGVycy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc0MTUsNiArNzUwNSw3IEBA
CiAJCQkJQkNERDUxRUIwRkI4REY3NDAwNEE4QkRDIC8qIEpJVE9wY29kZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTcxMjM2RTUxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZFODQ1QTE5MDMwQkVGMDA1NjI3NDEgLyogREZHVmFy
aWFibGVBY2Nlc3NEYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExNTg3RDZEMUI0REMxNDEw
MEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYy
NEU1NEMxN0VFMjc0OTAwQUJCMjE3IC8qIEpJVE9wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODZDQzg1QzQwRUU3QTg5NDAwMjg4NjgyIC8qIEpJVFByb3BlcnR5QWNjZXNzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE3QzFFOEU0MTEyRTcyRUYwMEEzN0Y5OCAvKiBKSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzU0MSw2ICs3NjMyLDcgQEAKIAkJ
CQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxNEI3MjNCMjEyRDdEQTQ2MDAzQkQ1RUQgLyogTWFjaGluZVN0YWNr
TWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUIzRUNGMTYyMzdGNkMwMEFCNjdBRCAv
KiBNYWNyb0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUQ3OTMwMDFCNDM4NjRC
MDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTcyOTAwOUMxNzk3NkM2MDAwMzE3Mjk4IC8qIE1hY3JvQXNzZW1i
bGVyQVJNdjcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUzQ0UwODUxOEJDMUE1NjAwQkVERjc2
IC8qIENvbnNvbGVQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NjIwLDYgKzc3MTIs
NyBAQAogCQkJCUE1QkExNUU5MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0g
aW4gU291cmNlcyAqLywKIAkJCQkyQURGQTI2MzE4RUYzNTQwMDA0RjlGQ0MgLyogR0NMb2dnaW5n
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTQ1NThGMTgyNDVFRkQwMENDMzg0MyAvKiBSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExRDc5MkZFMUI0
Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTVCQTE1RUMxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1RUUxODIzNDBC
NDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAq
LywKIAkJCQkwRjI0RTU1MDE3RUUyNzQ5MDBBQkIyMTcgLyogUmVwYXRjaC5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTc2MjgsNiArNzcyMSw3IEBACiAJCQkJN0IzOUY3NzIxQjYzNTc0RDAwMzYwRkI0
IC8qIFdBU01SZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyOUQ4ODUwRUQyMUMzRDAw
Qjg5NjE5IC8qIFNhbXBsaW5nVG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MEVDMEVDNjFB
QTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQTFCOUUyMzkxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNUZEMDA2NzE4OUFGRTlDMDA2MzMyMzEgLyogU2NyaXB0QXJndW1l
bnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1RkQwMDZEMTg5QjAwQUEwMDYzMzIzMSAvKiBT
Y3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwNDM5NkQxQjAzREMwQjAw
OTU5OEI3IC8qIERGR0NvbWJpbmVkTGl2ZW5lc3MuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03Njc1
LDYgKzc3NjksOCBAQAogCQkJCTBGQTJDMTdCMTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVy
VXRpbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTczODY1NTUxMTg2OTdCNDAwNTQwMjc5IC8q
IFRodW5rR2VuZXJhdG9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjcwNzE3QjZCNUFC
MDBBN0FFM0YgLyogVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QTFENzkyRkMxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTE1ODdENzExQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjcwQTE3QjZCNUFCMDBBN0FF
M0YgLyogVHlwZWRBcnJheVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJDOTUyQjkxOUEy
OEExQzAwNjlCMzg2IC8qIFR5cGVQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0
Mjc0QTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2LmMgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDQz
MmZiNmMxYjE2ZmNmMmYyMjcxMTNkMjc2ZWMwODI1ZmM1MjliZDQuLjZlZmNkNGM0YTgwNmIxZmE5
NzhhNDBiYjRlM2Q3ZDAxZmI5Yzg2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMzMsNyArMzMsOSBAQAogICAgIG1hY3Jv
KEFycmF5SXRlcmF0b3IpIFwKICAgICBtYWNybyhCWVRFU19QRVJfRUxFTUVOVCkgXAogICAgIG1h
Y3JvKEJvb2xlYW4pIFwKKyAgICBtYWNybyhDb2xsYXRvcikgXAogICAgIG1hY3JvKERhdGUpIFwK
KyAgICBtYWNybyhEYXRlVGltZUZvcm1hdCkgXAogICAgIG1hY3JvKEVycm9yKSBcCiAgICAgbWFj
cm8oRXZhbEVycm9yKSBcCiAgICAgbWFjcm8oRnVuY3Rpb24pIFwKQEAgLTQ1LDYgKzQ3LDcgQEAK
ICAgICBtYWNybyhNYXRoKSBcCiAgICAgbWFjcm8oTmFOKSBcCiAgICAgbWFjcm8oTnVtYmVyKSBc
CisgICAgbWFjcm8oTnVtYmVyRm9ybWF0KSBcCiAgICAgbWFjcm8oT2JqZWN0KSBcCiAgICAgbWFj
cm8oUHJvbWlzZSkgXAogICAgIG1hY3JvKFJhbmdlRXJyb3IpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCmluZGV4IGQ2MzI5ZmRmMWIw
MjUwZDc4MjRjOGM4YmQ3MGRkNjg3MDQ3MmI0ZmMuLmVlNjU2YTMwOTc0ZTNlYzVkYjEwNGYxNmM1
MzRkNDI2YjJiZTg1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUNvbnN0cnVjdG9yLmNwcApAQCAtNTMsNyArNTMsNiBAQCB1c2luZyBuYW1lc3BhY2UgV1RG
OwogbmFtZXNwYWNlIEpTQyB7CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBh
cnNlKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlTm93KEV4
ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlVVRDKEV4ZWNTdGF0
ZSopOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5oCmluZGV4IDA1NGY1NzFkNTc5ZThjZTRmMzRiNTQwOTE3YjhkMDI4YjUwZGZiOWIuLmNk
YWM5N2QzMWJhMzZhOWMyMmVhYzAyNDhhZmM2ZjUyMTJiZjc5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCkBAIC01OSw2ICs1OSw4IEBA
IHByaXZhdGU6CiAKIEpTT2JqZWN0KiBjb25zdHJ1Y3REYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgQXJnTGlzdCYpOwogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVOb3coRXhlY1N0YXRlKik7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8g
RGF0ZUNvbnN0cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxDb2xsYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
Q29sbGF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4MTA4ZmMxODU5OGQzZTJjN2FkODllMGNmMWY4OGQ0
ZTVhMTFlYzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsQ29sbGF0b3IuY3BwCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yLmgiCisKKyNp
ZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50bENvbGxh
dG9yQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNC
b3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRl
ICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5j
bHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xh
c3NJbmZvIEludGxDb2xsYXRvcjo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsQ29sbGF0b3IpIH07CisKK0ludGxDb2xsYXRvciog
SW50bENvbGxhdG9yOjpjcmVhdGUoVk0mIHZtLCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciogY29u
c3RydWN0b3IpCit7CisgICAgSW50bENvbGxhdG9yKiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxJbnRsQ29sbGF0b3I+KHZtLmhlYXApKSBJbnRsQ29sbGF0b3Iodm0sIGNvbnN0
cnVjdG9yLT5jb2xsYXRvclN0cnVjdHVyZSgpKTsKKyAgICBmb3JtYXQtPmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICByZXR1cm4gZm9ybWF0OworfQorCitTdHJ1Y3R1cmUqIEludGxDb2xsYXRvcjo6
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworfQorCitJbnRsQ29sbGF0b3I6OkludGxDb2xsYXRvcihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3Qodm0sIHN0cnVjdHVy
ZSkKK3sKK30KKwordm9pZCBJbnRsQ29sbGF0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sK
KyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8o
KSkpOworfQorCit2b2lkIEludGxDb2xsYXRvcjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7Cisg
ICAgc3RhdGljX2Nhc3Q8SW50bENvbGxhdG9yKj4oY2VsbCktPkludGxDb2xsYXRvcjo6fkludGxD
b2xsYXRvcigpOworfQorCit2b2lkIEludGxDb2xsYXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEludGxDb2xsYXRvciogdGhpc09i
amVjdCA9IGpzQ2FzdDxJbnRsQ29sbGF0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fYm91bmRDb21wYXJlKTsKK30KKwordm9pZCBJbnRsQ29sbGF0b3I6OnNldEJvdW5kQ29tcGFy
ZShWTSYgdm0sIEpTQm91bmRGdW5jdGlvbiogZm9ybWF0KQoreworICAgIG1fYm91bmRDb21wYXJl
LnNldCh2bSwgdGhpcywgZm9ybWF0KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsQ29sbGF0b3JGdW5jQ29tcGFyZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTAu
My40IENvbGxhdG9yIENvbXBhcmUgRnVuY3Rpb25zIChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4g
TGV0IGNvbGxhdG9yIGJlIHRoZSB0aGlzIHZhbHVlLgorICAgIEludGxDb2xsYXRvciogY29sbGF0
b3IgPSBqc0R5bmFtaWNDYXN0PEludGxDb2xsYXRvcio+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKwor
ICAgIC8vIDIuIEFzc2VydDogVHlwZShjb2xsYXRvcikgaXMgT2JqZWN0IGFuZCBjb2xsYXRvciBo
YXMgYW4gW1tpbml0aWFsaXplZENvbGxhdG9yXV0gaW50ZXJuYWwgc2xvdCB3aG9zZSB2YWx1ZSBp
cyB0cnVlLgorICAgIGlmICghY29sbGF0b3IpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoZXhlYykpOworCisgICAgLy8gMy4gSWYgeCBpcyBub3QgcHJvdmlk
ZWQsIGxldCB4IGJlIHVuZGVmaW5lZC4KKyAgICAvLyA0LiBJZiB5IGlzIG5vdCBwcm92aWRlZCwg
bGV0IHkgYmUgdW5kZWZpbmVkLgorICAgIC8vIDUuIExldCBYIGJlIFRvU3RyaW5nKHgpLgorICAg
IEpTU3RyaW5nKiBhID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyk7CisgICAgLy8g
Ni4gUmV0dXJuSWZBYnJ1cHQoWCkuCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgLy8gNy4g
TGV0IFkgYmUgVG9TdHJpbmcoeSkuCisgICAgSlNTdHJpbmcqIGIgPSBleGVjLT5hcmd1bWVudCgx
KS50b1N0cmluZyhleGVjKTsKKyAgICAvLyA4LiBSZXR1cm5JZkFicnVwdChZKS4KKyAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisKKyAgICAvLyA5LiBSZXR1cm4gQ29tcGFyZVN0cmluZ3MoY29sbGF0b3Is
IFgsIFkpLgorCisgICAgLy8gMTAuMy40IENvbXBhcmVTdHJpbmdzIGFic3RyYWN0IG9wZXJhdGlv
biAoRUNNQS00MDIgMi4wKQorICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgQ29tcGFyZVN0cmluZ3Mu
CisKKyAgICAvLyBSZXR1cm4gc2ltcGxlIGNoZWNrIHVudGlsIHByb3Blcmx5IGltcGxlbWVudGVk
LgorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoY29kZVBvaW50Q29tcGFyZShh
LT52YWx1ZShleGVjKS5pbXBsKCksIGItPnZhbHVlKGV4ZWMpLmltcGwoKSkpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmYyMjUxNDk0MWEy
MTE4NjNmOWMyODQyZmMxNzBkNjFiY2E0NjEwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5oCkBAIC0wLDAgKzEsNjYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBn
bWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW50bENvbGxhdG9yX2gKKyNkZWZpbmUgSW50
bENvbGxhdG9yX2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGli
bGVPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxDb2xsYXRvckNvbnN0
cnVjdG9yOworY2xhc3MgSlNCb3VuZEZ1bmN0aW9uOworCitjbGFzcyBJbnRsQ29sbGF0b3IgOiBw
dWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNEZXN0
cnVjdGlibGVPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBJbnRsQ29sbGF0b3IqIGNyZWF0ZShW
TSYsIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xB
UkVfSU5GTzsKKworICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRDb21wYXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3VuZENvbXBhcmUuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJvdW5kQ29tcGFyZShW
TSYsIEpTQm91bmRGdW5jdGlvbiopOworCitwcm90ZWN0ZWQ6CisgICAgSW50bENvbGxhdG9yKFZN
JiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOworCitwcml2YXRlOgorICAgIFdyaXRlQmFycmllcjxKU0Jv
dW5kRnVuY3Rpb24+IG1fYm91bmRDb21wYXJlOworfTsKKyAgICAKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bENvbGxhdG9yRnVuY0NvbXBhcmUoRXhlY1N0YXRlKik7CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRs
Q29sbGF0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0MWRkMTdjZDhlYjExMmEy
MWVmYjZjMjFhMTQ0OTRmYjJlZDZkNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwx
ODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxl
Y3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKwor
I2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yLmgiCisjaW5jbHVkZSAi
SW50bENvbGxhdG9yUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1
ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1
ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NF
UlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcik7CisK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvckNvbnN0cnVj
dG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAi
SW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25z
dCBDbGFzc0luZm8gSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9u
IiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgJmNvbGxhdG9yQ29uc3RydWN0b3JUYWJsZSwg
Q1JFQVRFX01FVEhPRF9UQUJMRShJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvcikgfTsKKworLyogU291
cmNlIGZvciBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIGNvbGxhdG9yQ29u
c3RydWN0b3JUYWJsZQorICBzdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgSW50bENvbGxh
dG9yQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK0ludGxDb2xsYXRvckNvbnN0cnVjdG9yKiBJbnRsQ29s
bGF0b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElu
dGxDb2xsYXRvclByb3RvdHlwZSogY29sbGF0b3JQcm90b3R5cGUsIFN0cnVjdHVyZSogY29sbGF0
b3JTdHJ1Y3R1cmUpCit7CisgICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9y
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxhdG9yQ29uc3RydWN0b3I+KHZt
LmhlYXApKSBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25z
dHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGNvbGxhdG9yUHJvdG90eXBlLCBjb2xsYXRvclN0
cnVjdHVyZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIEludGxD
b2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxDb2xsYXRvckNvbnN0cnVj
dG9yOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIElu
dGxDb2xsYXRvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxDb2xsYXRv
clByb3RvdHlwZSogY29sbGF0b3JQcm90b3R5cGUsIFN0cnVjdHVyZSogY29sbGF0b3JTdHJ1Y3R1
cmUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgiQ29sbGF0
b3IiKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgY29sbGF0b3JQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnRE
ZWxldGUpOworICAgIG1fY29sbGF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBjb2xsYXRvclN0
cnVjdHVyZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50
bENvbGxhdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMC4xLjIgSW50bC5Db2xsYXRv
ciAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIElmIE5l
d1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlv
biBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCisgICAgSlNWYWx1ZSBu
ZXdUYXJnZXQgPSBleGVjLT5uZXdUYXJnZXQoKTsKKyAgICBpZiAoIW5ld1RhcmdldCB8fCBuZXdU
YXJnZXQuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgbmV3VGFyZ2V0ID0gZXhlYy0+Y2FsbGVlKCk7
CisKKyAgICAvLyAyLiBMZXQgY29sbGF0b3IgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0
b3IobmV3VGFyZ2V0LCAlQ29sbGF0b3JQcm90b3R5cGUlKS4KKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBJbnRsQ29sbGF0b3I6OmNyZWF0ZSh2
bSwganNDYXN0PEludGxDb2xsYXRvckNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpKTsKKyAg
ICBpZiAoY29sbGF0b3IgJiYgIWpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3Iq
PihuZXdUYXJnZXQpKSB7CisgICAgICAgIEpTVmFsdWUgcHJvdG8gPSBhc09iamVjdChuZXdUYXJn
ZXQpLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CisgICAgICAg
IGFzT2JqZWN0KGNvbGxhdG9yKS0+c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soZXhlYywgcHJv
dG8pOworICAgIH0KKworICAgIC8vIDMuIFJldHVybklmQWJydXB0KGNvbGxhdG9yKS4KKyAgICBB
U1NFUlQoY29sbGF0b3IpOworCisgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxpemVDb2xsYXRvcihj
b2xsYXRvciwgbG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6IHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSW5pdGlhbGl6ZUNvbGxhdG9yKGNvbGxhdG9yLCBsb2NhbGVzLCBvcHRpb25zKSk7
CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdG9yKTsKK30KKworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bENvbGxhdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICAvLyAxMC4xLjIgSW50bC5Db2xsYXRvciAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNN
QS00MDIgMi4wKQorICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdU
YXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBi
ZSBOZXdUYXJnZXQuCisgICAgLy8gTmV3VGFyZ2V0IGlzIGFsd2F5cyB1bmRlZmluZWQgd2hlbiBj
YWxsZWQgYXMgYSBmdW5jdGlvbi4KKworICAgIC8vIDIuIExldCBjb2xsYXRvciBiZSBPcmRpbmFy
eUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVDb2xsYXRvclByb3RvdHlwZSUpLgor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IElu
dGxDb2xsYXRvcjo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3IqPihl
eGVjLT5jYWxsZWUoKSkpOworCisgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQoY29sbGF0b3IpLgor
ICAgIEFTU0VSVChjb2xsYXRvcik7CisKKyAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZUNvbGxh
dG9yKGNvbGxhdG9yLCBsb2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBGSVhNRTogcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShJbml0aWFsaXplQ29sbGF0b3IoY29sbGF0b3IsIGxvY2FsZXMsIG9wdGlv
bnMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3IpOworfQorCitDb25z
dHJ1Y3RUeXBlIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2Vs
bCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5u
YXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RJbnRsQ29sbGF0b3I7CisgICAgcmV0dXJuIENvbnN0
cnVjdFR5cGVIb3N0OworfQorCitDYWxsVHlwZSBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Z2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNhbGxJbnRsQ29sbGF0b3I7CisgICAgcmV0dXJuIENhbGxUeXBlSG9z
dDsKK30KKworYm9vbCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlv
blNsb3Q8SW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgY29sbGF0b3JDb25zdHJ1Y3RvclRhYmxlLCBq
c0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvckNvbnN0
cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8g
MTAuMi4yIEludGwuQ29sbGF0b3Iuc3VwcG9ydGVkTG9jYWxlc09mKGxvY2FsZXMgWywgb3B0aW9u
c10pIChFQ01BLTQwMiAyLjApCisKKyAgICAvLyAxLiBMZXQgcmVxdWVzdGVkTG9jYWxlcyBiZSBD
YW5vbmljYWxpemVMb2NhbGVMaXN0KGxvY2FsZXMpLgorICAgIC8vIEZJWE1FOiByZXF1ZXN0ZWQg
PSBDYW5vbmljYWxpemVMb2NhbGVMaXN0KGxvY2FsZXMpOworCisgICAgLy8gMi4gUmV0dXJuSWZB
YnJ1cHQocmVxdWVzdGVkTG9jYWxlcykuCisgICAgLy8gaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgIC8vICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisg
ICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMoJUNvbGxhdG9yJS5bW2F2YWlsYWJsZUxv
Y2FsZXNdXSwgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6IHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGUsIHJlcXVlc3RlZCwg
b3B0aW9ucykpOworCisgICAgLy8gUmV0dXJuIGVtcHR5IGFycmF5IHVudGlsIHByb3Blcmx5IGlt
cGxlbWVudGVkLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0Fy
cmF5KiBzdXBwb3J0ZWRMb2NhbGVzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2
bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9j
YXRpb24oQXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7CisgICAgaWYgKCFzdXBwb3J0ZWRMb2NhbGVz
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMpOwor
fQorICAgIAordm9pZCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEludGxDb2xsYXRvckNvbnN0
cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEludGxDb2xsYXRvckNvbnN0cnVjdG9yKj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwor
CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NvbGxhdG9yU3RydWN0dXJlKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRhYTk4ZjJmYWEyNDc5Yjg0Zjc5YjcxMDc1ZjVlOTg3ZmFlZTc2ZmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JD
b25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSW50bENvbGxhdG9yQ29uc3RydWN0b3JfaAorI2RlZmluZSBJbnRsQ29sbGF0b3JDb25z
dHJ1Y3Rvcl9oCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rp
b24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxDb2xsYXRvcjsKK2NsYXNzIElu
dGxDb2xsYXRvclByb3RvdHlwZTsKKworY2xhc3MgSW50bENvbGxhdG9yQ29uc3RydWN0b3IgOiBw
dWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1
bmN0aW9uIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAg
ICBzdGF0aWMgSW50bENvbGxhdG9yQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSos
IEludGxDb2xsYXRvclByb3RvdHlwZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAg
ICBERUNMQVJFX0lORk87CisKKyAgICBTdHJ1Y3R1cmUqIGNvbGxhdG9yU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9jb2xsYXRvclN0cnVjdHVyZS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEludGxDb2xsYXRvclByb3RvdHlwZSosIFN0cnVj
dHVyZSopOworCitwcml2YXRlOgorICAgIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKFZNJiwgU3Ry
dWN0dXJlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0Nl
bGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpT
Q2VsbCosIENhbGxEYXRhJik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgCisg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jb2xsYXRvclN0cnVjdHVyZTsKK307CisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bENvbGxhdG9yKEV4ZWNTdGF0
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bENvbGxhdG9yKEV4ZWNT
dGF0ZSopOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQor
CisjZW5kaWYgLy8gSW50bENvbGxhdG9yQ29uc3RydWN0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDQ2ZGRiZmM4YzBmOWQ2MWY5ZmM1MmEyNzljNWRmN2YzMGJjYTczNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3Rv
dHlwZS5jcHAKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5k
eSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKKworI2lm
IEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0
b3IuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVj
dC5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiU3RydWN0dXJl
SW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFM
TFlfREVTVFJVQ1RJQkxFKEludGxDb2xsYXRvclByb3RvdHlwZSk7CisKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUo
RXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29s
bGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSopOworCit9CisKKyNp
bmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
Citjb25zdCBDbGFzc0luZm8gSW50bENvbGxhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJPYmpl
Y3QiLCAmSW50bENvbGxhdG9yOjpzX2luZm8sICZjb2xsYXRvclByb3RvdHlwZVRhYmxlLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEludGxDb2xsYXRvclByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZv
ciBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBjb2xsYXRvclByb3RvdHlwZVRh
YmxlCisgIGNvbXBhcmUgICAgICAgICAgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFy
ZSAgICAgICAgRG9udEVudW18QWNjZXNzb3IKKyAgcmVzb2x2ZWRPcHRpb25zICBJbnRsQ29sbGF0
b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zICBEb250RW51bXxGdW5jdGlvbiAwCitAZW5k
CisqLworCitJbnRsQ29sbGF0b3JQcm90b3R5cGUqIEludGxDb2xsYXRvclByb3RvdHlwZTo6Y3Jl
YXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAg
ICBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEludGxDb2xsYXRvclByb3RvdHlwZT4odm0uaGVhcCkpIEludGxDb2xsYXRvclByb3RvdHlw
ZSh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBy
ZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxDb2xsYXRvclByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworfQorCitJbnRsQ29sbGF0b3JQcm90b3R5cGU6OkludGxDb2xsYXRvclByb3RvdHlw
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50bENvbGxhdG9yKHZtLCBz
dHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bENvbGxhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCitib29s
IEludGxDb2xsYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+
KGV4ZWMsIGNvbGxhdG9yUHJvdG90eXBlVGFibGUsIGpzQ2FzdDxJbnRsQ29sbGF0b3JQcm90b3R5
cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIC8vIDEwLjMuMyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJl
IChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gTGV0IGNvbGxhdG9yIGJlIHRoaXMgQ29sbGF0b3Ig
b2JqZWN0LgorICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxD
b2xsYXRvcio+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWNvbGxhdG9yKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciIpKSk7CisKKyAgICBKU0Jv
dW5kRnVuY3Rpb24qIGJvdW5kQ29tcGFyZSA9IGNvbGxhdG9yLT5ib3VuZENvbXBhcmUoKTsKKyAg
ICAvLyAyLiBJZiBjb2xsYXRvci5bW2JvdW5kQ29tcGFyZV1dIGlzIHVuZGVmaW5lZCwKKyAgICBp
ZiAoIWJvdW5kQ29tcGFyZSkgeworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29sbGF0b3ItPmdsb2JhbE9iamVjdCgp
OworICAgICAgICAvLyBhLiBMZXQgRiBiZSBhIG5ldyBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3Qg
YXMgZGVmaW5lZCBpbiAxMS4zLjQuCisgICAgICAgIC8vIGIuIFRoZSB2YWx1ZSBvZiBG4oCZcyBs
ZW5ndGggcHJvcGVydHkgaXMgMi4KKyAgICAgICAgSlNGdW5jdGlvbiogdGFyZ2V0T2JqZWN0ID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDIsIEFTQ0lJTGl0ZXJhbCgiY29t
cGFyZSIpLCBJbnRsQ29sbGF0b3JGdW5jQ29tcGFyZSwgTm9JbnRyaW5zaWMpOworICAgICAgICBK
U0FycmF5KiBib3VuZEFyZ3MgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBn
bG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlv
bihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKKyAgICAgICAgaWYgKCFib3VuZEFyZ3MpCisgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVj
KSk7CisKKyAgICAgICAgLy8gYy4gTGV0IGJjIGJlIEJvdW5kRnVuY3Rpb25DcmVhdGUoRiwgwqt0
aGlzIHZhbHVlwrspLgorICAgICAgICBib3VuZENvbXBhcmUgPSBKU0JvdW5kRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIGNvbGxhdG9yLCBib3VuZEFyZ3Ms
IDIsIEFTQ0lJTGl0ZXJhbCgiY29tcGFyZSIpKTsKKyAgICAgICAgLy8gZC4gU2V0IGNvbGxhdG9y
LltbYm91bmRDb21wYXJlXV0gdG8gYmMuCisgICAgICAgIGNvbGxhdG9yLT5zZXRCb3VuZENvbXBh
cmUodm0sIGJvdW5kQ29tcGFyZSk7CisgICAgfQorICAgIC8vIDMuIFJldHVybiBjb2xsYXRvci5b
W2JvdW5kQ29tcGFyZV1dLgorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYm91bmRDb21wYXJl
KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5
cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMC4zLjUg
SW50bC5Db2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkK
KyAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0ganNEeW5hbWljQ2FzdDxJbnRsQ29sbGF0b3Iq
PihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFjb2xsYXRvcikKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludGwu
Q29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciIpKSk7CisKKyAgICAvLyBU
aGUgZnVuY3Rpb24gcmV0dXJucyBhIG5ldyBvYmplY3Qgd2hvc2UgcHJvcGVydGllcyBhbmQgYXR0
cmlidXRlcyBhcmUgc2V0IGFzIGlmIGNvbnN0cnVjdGVkIGJ5IGFuIG9iamVjdCBsaXRlcmFsIGFz
c2lnbmluZyB0byBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB0aGUgdmFsdWUgb2Yg
dGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJuYWwgc2xvdCBvZiB0aGlzIENvbGxhdG9yIG9iamVjdCAo
c2VlIDEwLjQpOiBsb2NhbGUsIHVzYWdlLCBzZW5zaXRpdml0eSwgaWdub3JlUHVuY3R1YXRpb24s
IGNvbGxhdGlvbiwgYXMgd2VsbCBhcyB0aG9zZSBwcm9wZXJ0aWVzIHNob3duIGluIFRhYmxlIDEg
d2hvc2Uga2V5cyBhcmUgaW5jbHVkZWQgaW4gdGhlICVDb2xsYXRvciVbW3JlbGV2YW50RXh0ZW5z
aW9uS2V5c11dIGludGVybmFsIHNsb3Qgb2YgdGhlIHN0YW5kYXJkIGJ1aWx0LWluIG9iamVjdCB0
aGF0IGlzIHRoZSBpbml0aWFsIHZhbHVlIG9mIEludGwuQ29sbGF0b3IuCisKKyAgICBKU09iamVj
dCogb3B0aW9ucyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworCisgICAgLy8gRklYTUU6
IFBvcHVsYXRlIG9iamVjdCBmcm9tIGludGVybmFsIHNsb3RzLgorCisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShvcHRpb25zKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxDb2xsYXRvclByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bENvbGxhdG9yUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjgxNjQyNjc5ZTlmNTEyMTQ1Y2Rm
N2UwMmNjYWY0Njk3ZmViN2NjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBn
bWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW50bENvbGxhdG9yUHJvdG90eXBlX2gKKyNk
ZWZpbmUgSW50bENvbGxhdG9yUHJvdG90eXBlX2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5j
bHVkZSAiSW50bENvbGxhdG9yLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEludGxDb2xsYXRvclByb3RvdHlwZSA6IHB1YmxpYyBJbnRsQ29sbGF0
b3IgeworcHVibGljOgorICAgIHR5cGVkZWYgSW50bENvbGxhdG9yIEJhc2U7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgSW50bENvbGxhdG9yUHJv
dG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJik7CisKK3ByaXZhdGU6CisgICAgSW50bENvbGxhdG9yUHJvdG90eXBlKFZN
JiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJ
bnRsQ29sbGF0b3JQcm90b3R5cGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzRjYzNkYzVmMzRjZDJm
YWE2ZDY3ODc1ZDA2Y2NmNTQ2NmExMzFiMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKQEAgLTAsMCArMSwxMzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3Jh
ZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAi
RGF0ZUNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiRGF0ZUluc3RhbmNlLmgiCisjaW5jbHVkZSAi
RXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIgorI2lu
Y2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNp
bmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVz
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bERhdGVUaW1lRm9y
bWF0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEludGxEYXRlVGltZUZvcm1hdCkgfTsKKworSW50bERhdGVUaW1lRm9ybWF0KiBJbnRs
RGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZShWTSYgdm0sIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yKiBjb25zdHJ1Y3RvcikKK3sKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxEYXRlVGltZUZvcm1hdD4odm0uaGVhcCkpIElu
dGxEYXRlVGltZUZvcm1hdCh2bSwgY29uc3RydWN0b3ItPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJl
KCkpOworICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBmb3JtYXQ7
Cit9CisKK1N0cnVjdHVyZSogSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sK
KyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0lu
dGxEYXRlVGltZUZvcm1hdDo6SW50bERhdGVUaW1lRm9ybWF0KFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgOiBKU0Rlc3RydWN0aWJsZU9iamVjdCh2bSwgc3RydWN0dXJlKQorewor
fQorCit2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygp
KSk7Cit9CisKK3ZvaWQgSW50bERhdGVUaW1lRm9ybWF0OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkK
K3sKKyAgICBzdGF0aWNfY2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihjZWxsKS0+SW50bERhdGVU
aW1lRm9ybWF0Ojp+SW50bERhdGVUaW1lRm9ybWF0KCk7Cit9CisKK3ZvaWQgSW50bERhdGVUaW1l
Rm9ybWF0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit7CisgICAgSW50bERhdGVUaW1lRm9ybWF0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEludGxEYXRl
VGltZUZvcm1hdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlz
aXRvcik7CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ib3VuZEZvcm1hdCk7
Cit9CisKK3ZvaWQgSW50bERhdGVUaW1lRm9ybWF0OjpzZXRCb3VuZEZvcm1hdChWTSYgdm0sIEpT
Qm91bmRGdW5jdGlvbiogZm9ybWF0KQoreworICAgIG1fYm91bmRGb3JtYXQuc2V0KHZtLCB0aGlz
LCBmb3JtYXQpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGlt
ZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGltZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTIu
My40IERhdGVUaW1lIEZvcm1hdCBGdW5jdGlvbnMgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBM
ZXQgZHRmIGJlIHRoZSB0aGlzIHZhbHVlLgorICAgIEludGxEYXRlVGltZUZvcm1hdCogZm9ybWF0
ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihleGVjLT50aGlzVmFsdWUoKSk7
CisgICAgLy8gMi4gQXNzZXJ0OiBUeXBlKGR0ZikgaXMgT2JqZWN0IGFuZCBkdGYgaGFzIGFuIFtb
aW5pdGlhbGl6ZWREYXRlVGltZUZvcm1hdF1dIGludGVybmFsIHNsb3Qgd2hvc2UgdmFsdWUgaXMg
dHJ1ZS4KKyAgICBpZiAoIWZvcm1hdCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihleGVjKSk7CisKKyAgICBKU1ZhbHVlIGRhdGUgPSBleGVjLT5hcmd1bWVu
dCgwKTsKKyAgICBkb3VibGUgdmFsdWU7CisKKyAgICAvLyAzLiBJZiBkYXRlIGlzIG5vdCBwcm92
aWRlZCBvciBpcyB1bmRlZmluZWQsIHRoZW4KKyAgICBpZiAoZGF0ZS5pc1VuZGVmaW5lZCgpKSB7
CisgICAgICAgIC8vIGEuIExldCB4IGJlICVEYXRlX25vdyUoKS4KKyAgICAgICAgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZGF0ZU5vdyhleGVjKSkudG9OdW1iZXIoZXhlYyk7CisgICAgLy8gNC4g
RWxzZQorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIGEuIExldCB4IGJlIFRvTnVtYmVyKGRhdGUp
LgorICAgICAgICB2YWx1ZSA9IGRhdGUudG9OdW1iZXIoZXhlYyk7CisgICAgICAgIC8vIGIuIFJl
dHVybklmQWJydXB0KHgpLgorICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0KKwor
ICAgIC8vIDUuIFJldHVybiBGb3JtYXREYXRlVGltZShkdGYsIHgpLgorCisgICAgLy8gMTIuMy40
IEZvcm1hdERhdGVUaW1lIGFic3RyYWN0IG9wZXJhdGlvbiAoRUNNQS00MDIgMi4wKQorCisgICAg
Ly8gMS4gSWYgeCBpcyBub3QgYSBmaW5pdGUgTnVtYmVyLCB0aGVuIHRocm93IGEgUmFuZ2VFcnJv
ciBleGNlcHRpb24uCisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1JhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJk
YXRlIHZhbHVlIGlzIG5vdCBmaW5pdGUgaW4gRGF0ZVRpbWVGb3JtYXQuZm9ybWF0KCkiKSkpOwor
CisgICAgLy8gRklYTUU6IGltcGxlbWVudCAyIC0gOQorCisgICAgLy8gUmV0dXJuIG5ldyBEYXRl
KHZhbHVlKS50b1N0cmluZygpIHVudGlsIHByb3Blcmx5IGltcGxlbWVudGVkLgorICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMt
PmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBEYXRlSW5zdGFuY2UqIGQgPSBEYXRlSW5z
dGFuY2U6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kYXRlU3RydWN0dXJlKCksIHZhbHVlKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoZCkudG9TdHJpbmcoZXhlYykpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ZGFlZDEzOGZiMDhkY2ZhM2JlNjdkMzdjODNhNDdkYjRhYWJjYmQ3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0LmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZh
bldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJ
bnRsRGF0ZVRpbWVGb3JtYXRfaAorI2RlZmluZSBJbnRsRGF0ZVRpbWVGb3JtYXRfaAorCisjaWYg
RU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I7CitjbGFz
cyBKU0JvdW5kRnVuY3Rpb247CisKK2NsYXNzIEludGxEYXRlVGltZUZvcm1hdCA6IHB1YmxpYyBK
U0Rlc3RydWN0aWJsZU9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJs
ZU9iamVjdCBCYXNlOworCisgICAgc3RhdGljIEludGxEYXRlVGltZUZvcm1hdCogY3JlYXRlKFZN
JiwgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAg
REVDTEFSRV9JTkZPOworCisgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCgpIGNvbnN0
IHsgcmV0dXJuIG1fYm91bmRGb3JtYXQuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJvdW5kRm9ybWF0
KFZNJiwgSlNCb3VuZEZ1bmN0aW9uKik7CisKK3Byb3RlY3RlZDoKKyAgICBJbnRsRGF0ZVRpbWVG
b3JtYXQoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Cisg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBXcml0ZUJhcnJpZXI8SlNCb3Vu
ZEZ1bmN0aW9uPiBtX2JvdW5kRm9ybWF0OworfTsKKyAgICAKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lKEV4ZWNTdGF0ZSop
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQorCisjZW5k
aWYgLy8gSW50bERhdGVUaW1lRm9ybWF0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wYjhkNDYwZDI2NzQxYTRiOTMzNmI4Y2IwZjhiNjRmYjc4ZDA2ODdkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5oIgorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJFcnJvci5o
IgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRl
ICJMb29rdXAuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJT
dHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lT
X1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IpOwor
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKik7CisKK30KKworI2lu
Y2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8sICZkYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IubHV0LmgKK0BiZWdpbiBkYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yVGFibGUK
KyAgc3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAgICAgIEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAxCitAZW5kCisqLworCitJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlLCBT
dHJ1Y3R1cmUqIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKQoreworICAgIEludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yPih2bS5oZWFwKSkgSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENy
ZWF0aW9uKHZtLCBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSwgZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1
cmUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvcjo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSkKK3sK
K30KKwordm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGRhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLCBTdHJ1Y3R1cmUqIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtLCBBU0NJSUxpdGVyYWwoIkRhdGVUaW1lRm9ybWF0IikpOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsK
KyAgICBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLnNldCh2bSwgdGhpcywgZGF0ZVRpbWVGb3Jt
YXRTdHJ1Y3R1cmUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEludGxEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTIuMS4yIElu
dGwuRGF0ZVRpbWVGb3JtYXQgKFtsb2NhbGVzIFssIG9wdGlvbnNdXSkgKEVDTUEtNDAyIDIuMCkK
KyAgICAvLyAxLiBJZiBOZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRo
ZSBhY3RpdmUgZnVuY3Rpb24gb2JqZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0
LgorICAgIEpTVmFsdWUgbmV3VGFyZ2V0ID0gZXhlYy0+bmV3VGFyZ2V0KCk7CisgICAgaWYgKCFu
ZXdUYXJnZXQgfHwgbmV3VGFyZ2V0LmlzVW5kZWZpbmVkKCkpCisgICAgICAgIG5ld1RhcmdldCA9
IGV4ZWMtPmNhbGxlZSgpOworCisgICAgLy8gMi4gTGV0IGRhdGVUaW1lRm9ybWF0IGJlIE9yZGlu
YXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJURhdGVUaW1lRm9ybWF0UHJvdG90
eXBlJSkuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQq
IGRhdGVUaW1lRm9ybWF0ID0gSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUodm0sIGpzQ2FzdDxJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKSk7CisgICAgaWYg
KGRhdGVUaW1lRm9ybWF0ICYmICFqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yKj4obmV3VGFyZ2V0KSkgeworICAgICAgICBKU1ZhbHVlIHByb3RvID0gYXNPYmplY3Qo
bmV3VGFyZ2V0KS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOwor
ICAgICAgICBhc09iamVjdChkYXRlVGltZUZvcm1hdCktPnNldFByb3RvdHlwZVdpdGhDeWNsZUNo
ZWNrKGV4ZWMsIHByb3RvKTsKKyAgICB9CisKKyAgICAvLyAzLiBSZXR1cm5JZkFicnVwdChkYXRl
VGltZUZvcm1hdCkuCisgICAgQVNTRVJUKGRhdGVUaW1lRm9ybWF0KTsKKworICAgIC8vIDQuIFJl
dHVybiBJbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMsIG9w
dGlvbnMpLgorICAgIC8vIEZJWE1FOiByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEluaXRpYWxpemVE
YXRlVGltZUZvcm1hdChkYXRlVGltZUZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucykpOworCisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShkYXRlVGltZUZvcm1hdCk7Cit9CisgICAgCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlKiBl
eGVjKQoreworICAgIC8vIDEyLjEuMiBJbnRsLkRhdGVUaW1lRm9ybWF0IChbbG9jYWxlcyBbLCBv
cHRpb25zXV0pIChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVm
aW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBs
ZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KKyAgICAvLyBOZXdUYXJnZXQgaXMgYWx3YXlzIHVu
ZGVmaW5lZCB3aGVuIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLgorCisgICAgLy8gMi4gTGV0IGRhdGVU
aW1lRm9ybWF0IGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJURh
dGVUaW1lRm9ybWF0UHJvdG90eXBlJSkuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBJ
bnRsRGF0ZVRpbWVGb3JtYXQqIGRhdGVUaW1lRm9ybWF0ID0gSW50bERhdGVUaW1lRm9ybWF0Ojpj
cmVhdGUodm0sIGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNh
bGxlZSgpKSk7CisKKyAgICAvLyAzLiBSZXR1cm5JZkFicnVwdChkYXRlVGltZUZvcm1hdCkuCisg
ICAgQVNTRVJUKGRhdGVUaW1lRm9ybWF0KTsKKworICAgIC8vIDQuIFJldHVybiBJbml0aWFsaXpl
RGF0ZVRpbWVGb3JtYXQoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpLgorICAgIC8v
IEZJWE1FOiByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEluaXRpYWxpemVEYXRlVGltZUZvcm1hdChk
YXRlVGltZUZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucykpOworCisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShkYXRlVGltZUZvcm1hdCk7Cit9CisKK0NvbnN0cnVjdFR5cGUgSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0
YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9
IGNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdDsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhv
c3Q7Cit9CisKK0NhbGxUeXBlIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpnZXRDYWxs
RGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZl
LmZ1bmN0aW9uID0gY2FsbEludGxEYXRlVGltZUZvcm1hdDsKKyAgICByZXR1cm4gQ2FsbFR5cGVI
b3N0OworfQorCitib29sIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRp
Y0Z1bmN0aW9uU2xvdDxJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBkYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yVGFibGUsIGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcio+KG9iamVj
dCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMi4yLjIgSW50bC5EYXRlVGltZUZvcm1hdC5zdXBw
b3J0ZWRMb2NhbGVzT2YobG9jYWxlcyBbLCBvcHRpb25zXSkgKEVDTUEtNDAyIDIuMCkKKworICAg
IC8vIDEuIExldCBhdmFpbGFibGVMb2NhbGVzIGJlICVEYXRlVGltZUZvcm1hdCUuW1thdmFpbGFi
bGVMb2NhbGVzXV0uCisgICAgLy8gRklYTUU6IGF2YWlsYWJsZSA9IEludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yOjpnZXRBdmFpbGFibGVMb2NhbGVzKCkKKworICAgIC8vIDIuIExldCByZXF1
ZXN0ZWRMb2NhbGVzIGJlIENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QobG9jYWxlcykuCisgICAgLy8g
RklYTUU6IHJlcXVlc3RlZCA9IENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QobG9jYWxlcykKKworICAg
IC8vIDMuIFJldHVybiBTdXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3Rl
ZExvY2FsZXMsIG9wdGlvbnMpLgorICAgIC8vIEZJWE1FOiByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KFN1cHBvcnRlZExvY2FsZXMoYXZhaWxhYmxlLCByZXF1ZXN0ZWQsIG9wdGlvbnMpKTsKKworICAg
IC8vIFJldHVybiBlbXB0eSBhcnJheSB1bnRpbCBwcm9wZXJseSBpbXBsZW1lbnRlZC4KKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBl
eGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNBcnJheSogc3VwcG9ydGVkTG9j
YWxlcyA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+
YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVu
ZGVjaWRlZCksIDApOworICAgIGlmICghc3VwcG9ydGVkTG9jYWxlcykKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYykpOworCisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShzdXBwb3J0ZWRMb2NhbGVzKTsKK30KKyAgICAKK3ZvaWQgSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
ciogdGhpc09iamVjdCA9IGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcio+KGNl
bGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
KworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjA0M2E3ZTcwYTQyZmZlYWZmMmQ4ZGJiNTYw
ZWJhMWMzM2FjYTU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaApAQCAtMCwwICsxLDcwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yX2gKKyNkZWZpbmUgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JfaAorCisjaWYgRU5B
QkxFKElOVEwpCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXQ7CitjbGFzcyBJbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGU7CisKK2NsYXNzIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yIDogcHVi
bGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5j
dGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAg
c3RhdGljIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1
cmUqLCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1h
dFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuZ2V0
KCk7IH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKKworcHJpdmF0ZToKKyAgICBJbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBD
b25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwor
ICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworICAgIAorICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmU7Cit9OworCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUq
KTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKworI2Vu
ZGlmIC8vIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA3OWI5Mjk1Y2RjMzY5OWJiZTFhOTQ4MzlkZWQ1YThlN2JkNTkw
MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29t
KQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkVycm9y
LmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1
bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0Nl
bGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJPYmplY3RDb25z
dHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGUpOworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRlICJJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
b25zdCBDbGFzc0luZm8gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJP
YmplY3QiLCAmSW50bERhdGVUaW1lRm9ybWF0OjpzX2luZm8sICZkYXRlVGltZUZvcm1hdFByb3Rv
dHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZSkgfTsKKworLyogU291cmNlIGZvciBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmgK
K0BiZWdpbiBkYXRlVGltZUZvcm1hdFByb3RvdHlwZVRhYmxlCisgIGZvcm1hdCAgICAgICAgICAg
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0ICAgICAgICAgRG9udEVudW18
QWNjZXNzb3IKKyAgcmVzb2x2ZWRPcHRpb25zICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVG
dW5jUmVzb2x2ZWRPcHRpb25zICBEb250RW51bXxGdW5jdGlvbiAwCitAZW5kCisqLworCitJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3Jl
YXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAg
ICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZT4odm0uaGVhcCkpIEludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENy
ZWF0aW9uKHZtLCBzdHJ1Y3R1cmUpOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVy
ZSogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZTo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRsRGF0ZVRpbWVGb3JtYXQodm0sIHN0cnVj
dHVyZSkKK3sKK30KKwordm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgU3RydWN0dXJlKikKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7Cit9CisKK2Jvb2wgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1
bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVUYWJsZSwg
anNDYXN0PEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFt
ZSwgc2xvdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAx
Mi4zLjMgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IChFQ01BLTQwMiAyLjAp
CisgICAgLy8gMS4gTGV0IGR0ZiBiZSB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdC4KKyAgICBJ
bnRsRGF0ZVRpbWVGb3JtYXQqIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0
Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIC8vIDIuIFJldHVybklmQWJydXB0KGR0ZikuCisg
ICAgaWYgKCFkdGYpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3Jt
YXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEg
RGF0ZVRpbWVGb3JtYXQiKSkpOworICAgIAorICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGb3Jt
YXQgPSBkdGYtPmJvdW5kRm9ybWF0KCk7CisgICAgLy8gMy4gSWYgdGhlIFtbYm91bmRGb3JtYXRd
XSBpbnRlcm5hbCBzbG90IG9mIHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0IGlzIHVuZGVmaW5l
ZCwKKyAgICBpZiAoIWJvdW5kRm9ybWF0KSB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBkdGYtPmdsb2JhbE9iamVj
dCgpOworICAgICAgICAvLyBhLiBMZXQgRiBiZSBhIG5ldyBidWlsdC1pbiBmdW5jdGlvbiBvYmpl
Y3QgYXMgZGVmaW5lZCBpbiAxMi4zLjQuCisgICAgICAgIC8vIGIuIFRoZSB2YWx1ZSBvZiBG4oCZ
cyBsZW5ndGggcHJvcGVydHkgaXMgMS4gKE5vdGU6IEbigJlzIGxlbmd0aCBwcm9wZXJ0eSB3YXMg
MCBpbiBFQ01BLTQwMiAxLjApCisgICAgICAgIEpTRnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCBBU0NJSUxpdGVyYWwoImZvcm1h
dCIpLCBJbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUsIE5vSW50cmluc2ljKTsK
KyAgICAgICAgSlNBcnJheSogYm91bmRBcmdzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFs
aXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24oQXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7CisgICAgICAgIGlmICghYm91bmRB
cmdzKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5
RXJyb3IoZXhlYykpOworICAgICAgICAKKyAgICAgICAgLy8gYy4gTGV0IGJmIGJlIEJvdW5kRnVu
Y3Rpb25DcmVhdGUoRiwgwqt0aGlzIHZhbHVlwrspLgorICAgICAgICBib3VuZEZvcm1hdCA9IEpT
Qm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgZHRm
LCBib3VuZEFyZ3MsIDEsIEFTQ0lJTGl0ZXJhbCgiZm9ybWF0IikpOworICAgICAgICAvLyBkLiBT
ZXQgZHRmLltbYm91bmRGb3JtYXRdXSB0byBiZi4KKyAgICAgICAgZHRmLT5zZXRCb3VuZEZvcm1h
dCh2bSwgYm91bmRGb3JtYXQpOworICAgIH0KKyAgICAvLyA0LiBSZXR1cm4gZHRmLltbYm91bmRG
b3JtYXRdXS4KKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJvdW5kRm9ybWF0KTsKK30KKwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVG
dW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMi4zLjUgSW50
bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIu
MCkKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVU
aW1lRm9ybWF0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghZHRmKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
SW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9ybWF0
IikpKTsKKworICAgIC8vIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgbmV3IG9iamVjdCB3aG9zZSBw
cm9wZXJ0aWVzIGFuZCBhdHRyaWJ1dGVzIGFyZSBzZXQgYXMgaWYgY29uc3RydWN0ZWQgYnkgYW4g
b2JqZWN0IGxpdGVyYWwgYXNzaWduaW5nIHRvIGVhY2ggb2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0
aWVzIHRoZSB2YWx1ZSBvZiB0aGUgY29ycmVzcG9uZGluZyBpbnRlcm5hbCBzbG90IG9mIHRoaXMg
RGF0ZVRpbWVGb3JtYXQgb2JqZWN0IChzZWUgMTIuNCk6IGxvY2FsZSwgY2FsZW5kYXIsIG51bWJl
cmluZ1N5c3RlbSwgdGltZVpvbmUsIGhvdXIxMiwgd2Vla2RheSwgZXJhLCB5ZWFyLCBtb250aCwg
ZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgYW5kIHRpbWVab25lTmFtZS4gUHJvcGVydGllcyB3
aG9zZSBjb3JyZXNwb25kaW5nIGludGVybmFsIHNsb3RzIGFyZSBub3QgcHJlc2VudCBhcmUgbm90
IGFzc2lnbmVkLgorICAgIC8vIE5vdGU6IEluIHRoaXMgdmVyc2lvbiBvZiB0aGUgRUNNQVNjcmlw
dCAyMDE1IEludGVybmF0aW9uYWxpemF0aW9uIEFQSSwgdGhlIHRpbWVab25lIHByb3BlcnR5IHdp
bGwgYmUgdGhlIG5hbWUgb2YgdGhlIGRlZmF1bHQgdGltZSB6b25lIGlmIG5vIHRpbWVab25lIHBy
b3BlcnR5IHdhcyBwcm92aWRlZCBpbiB0aGUgb3B0aW9ucyBvYmplY3QgcHJvdmlkZWQgdG8gdGhl
IEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IuIFRoZSBwcmV2aW91cyB2ZXJzaW9uIGxl
ZnQgdGhlIHRpbWVab25lIHByb3BlcnR5IHVuZGVmaW5lZCBpbiB0aGlzIGNhc2UuCisKKyAgICBK
U09iamVjdCogb3B0aW9ucyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworCisgICAgLy8g
RklYTUU6IFBvcHVsYXRlIG9iamVjdCBmcm9tIGludGVybmFsIHNsb3RzLgorCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShvcHRpb25zKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTJm
ZDVlMzRlYTc5NTg2ZTQ3ODk2ZmFmZmM0NGU1ZTZmYTYxNTljYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5X
YWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlX2gKKyNkZWZpbmUgSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlX2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9y
bWF0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSA6IHB1YmxpYyBJbnRsRGF0ZVRpbWVGb3JtYXQg
eworcHVibGljOgorICAgIHR5cGVkZWYgSW50bERhdGVUaW1lRm9ybWF0IEJhc2U7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSop
OworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgU3RydWN0dXJlKik7CisKK3ByaXZhdGU6CisgICAgSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
RU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVfaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xMzlkYzViMTllYTQ4ZWNiNGE0YWUzMTc5MGUzMDllYjRhYzc2YWI5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdC5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisKKyNpZiBF
TkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpT
Qm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorI2lu
Y2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENs
YXNzSW5mbyBJbnRsTnVtYmVyRm9ybWF0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19p
bmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxOdW1iZXJGb3JtYXQpIH07CisKK0ludGxO
dW1iZXJGb3JtYXQqIEludGxOdW1iZXJGb3JtYXQ6OmNyZWF0ZShWTSYgdm0sIEludGxOdW1iZXJG
b3JtYXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IpCit7CisgICAgSW50bE51bWJlckZvcm1hdCog
Zm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE51bWJlckZvcm1hdD4odm0u
aGVhcCkpIEludGxOdW1iZXJGb3JtYXQodm0sIGNvbnN0cnVjdG9yLT5udW1iZXJGb3JtYXRTdHJ1
Y3R1cmUoKSk7CisgICAgZm9ybWF0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGZv
cm1hdDsKK30KKworU3RydWN0dXJlKiBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
K3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisK
K0ludGxOdW1iZXJGb3JtYXQ6OkludGxOdW1iZXJGb3JtYXQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICA6IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9
CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7
Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7Cisg
ICAgc3RhdGljX2Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KGNlbGwpLT5JbnRsTnVtYmVyRm9ybWF0
Ojp+SW50bE51bWJlckZvcm1hdCgpOworfQorCit2b2lkIEludGxOdW1iZXJGb3JtYXQ6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBJbnRs
TnVtYmVyRm9ybWF0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihjZWxs
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisK
KyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYm91bmRGb3JtYXQpOworfQorCit2b2lkIEludGxO
dW1iZXJGb3JtYXQ6OnNldEJvdW5kRm9ybWF0KFZNJiB2bSwgSlNCb3VuZEZ1bmN0aW9uKiBmb3Jt
YXQpCit7CisgICAgbV9ib3VuZEZvcm1hdC5zZXQodm0sIHRoaXMsIGZvcm1hdCk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXROdW1i
ZXIoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDExLjMuNCBGb3JtYXQgTnVtYmVyIEZ1bmN0
aW9ucyAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIExldCBuZiBiZSB0aGUgdGhpcyB2YWx1ZS4K
KyAgICBJbnRsTnVtYmVyRm9ybWF0KiBmb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJG
b3JtYXQqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgLy8gMi4gQXNzZXJ0OiBUeXBlKG5mKSBp
cyBPYmplY3QgYW5kIG5mIGhhcyBhbiBbW2luaXRpYWxpemVkTnVtYmVyRm9ybWF0XV0gaW50ZXJu
YWwgc2xvdCB3aG9zZSB2YWx1ZSBpcyB0cnVlLgorICAgIGlmICghZm9ybWF0KQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKworICAgIC8vIDMu
IElmIHZhbHVlIGlzIG5vdCBwcm92aWRlZCwgbGV0IHZhbHVlIGJlIHVuZGVmaW5lZC4KKyAgICAv
LyA0LiBMZXQgeCBiZSBUb051bWJlcih2YWx1ZSkuCisgICAgZG91YmxlIHZhbHVlID0gZXhlYy0+
YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYyk7CisgICAgLy8gNS4gUmV0dXJuSWZBYnJ1cHQoeCku
CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgLy8gNi4gUmV0dXJuIEZvcm1hdE51bWJlcihu
ZiwgeCkuCisgICAgCisgICAgLy8gMTEuMy40IEZvcm1hdE51bWJlciBhYnN0cmFjdCBvcGVyYXRp
b24gKEVDTUEtNDAyIDIuMCkKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IEZvcm1hdE51bWJlci4K
KworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmFsdWUpLnRvU3RyaW5nKGV4
ZWMpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jYzI1MzhmOWJmYmEzMGU3NDM4MjFiMmYwZDE4MWU2Mzg3MmExMjA5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdC5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBW
YW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
SW50bE51bWJlckZvcm1hdF9oCisjZGVmaW5lIEludGxOdW1iZXJGb3JtYXRfaAorCisjaWYgRU5B
QkxFKElOVEwpCisKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOworY2xhc3MgSlNC
b3VuZEZ1bmN0aW9uOworCitjbGFzcyBJbnRsTnVtYmVyRm9ybWF0IDogcHVibGljIEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
IEJhc2U7CisKKyAgICBzdGF0aWMgSW50bE51bWJlckZvcm1hdCogY3JlYXRlKFZNJiwgSW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5G
TzsKKworICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGb3JtYXQoKSBjb25zdCB7IHJldHVybiBt
X2JvdW5kRm9ybWF0LmdldCgpOyB9CisgICAgdm9pZCBzZXRCb3VuZEZvcm1hdChWTSYsIEpTQm91
bmRGdW5jdGlvbiopOworCitwcm90ZWN0ZWQ6CisgICAgSW50bE51bWJlckZvcm1hdChWTSYsIFN0
cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCopOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxKU0JvdW5kRnVuY3Rpb24+IG1f
Ym91bmRGb3JtYXQ7Cit9OworICAgIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
TnVtYmVyRm9ybWF0RnVuY0Zvcm1hdE51bWJlcihFeGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKworI2VuZGlmIC8vIEludGxOdW1iZXJG
b3JtYXRfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjg2MzlkNmIxNGM3
MDA3YTg3MTAyNTU3N2FhZTJlZDI5ZmJjZDJlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKQEAg
LTAsMCArMSwxODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVy
ICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIgorCisjaWYgRU5B
QkxFKElOVEwpCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3Jt
YXQuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgiCisjaW5jbHVkZSAi
SW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIlNsb3RWaXNp
dG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IpOworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4
ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
bHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sICZu
dW1iZXJGb3JtYXRDb25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IubHV0LmgKK0BiZWdpbiBudW1iZXJGb3JtYXRDb25zdHJ1Y3RvclRhYmxlCisg
IHN1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
K0BlbmQKKyovCisKK0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciogSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZSogbnVtYmVyRm9ybWF0UHJvdG90eXBlLCBTdHJ1Y3R1cmUqIG51
bWJlckZvcm1hdFN0cnVjdHVyZSkKK3sKKyAgICBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iq
IGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yPih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKHZtLCBz
dHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgbnVtYmVyRm9y
bWF0UHJvdG90eXBlLCBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUpOworICAgIHJldHVybiBjb25zdHJ1
Y3RvcjsKK30KKworU3RydWN0dXJlKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKK30KKworSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFs
RnVuY3Rpb24odm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZSogbnVtYmVyRm9ybWF0UHJvdG90eXBlLCBTdHJ1Y3R1cmUqIG51bWJlckZvcm1hdFN0cnVjdHVy
ZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVNDSUlMaXRlcmFsKCJOdW1iZXJG
b3JtYXQiKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgbnVtYmVyRm9ybWF0UHJvdG90eXBlLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0g
fCBEb250RGVsZXRlKTsKKyAgICBtX251bWJlckZvcm1hdFN0cnVjdHVyZS5zZXQodm0sIHRoaXMs
IG51bWJlckZvcm1hdFN0cnVjdHVyZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0SW50bE51bWJlckZvcm1hdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8g
MTEuMS4yIEludGwuTnVtYmVyRm9ybWF0IChbbG9jYWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQw
MiAyLjApCisgICAgLy8gMS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1Rhcmdl
dCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5l
d1RhcmdldC4KKyAgICBKU1ZhbHVlIG5ld1RhcmdldCA9IGV4ZWMtPm5ld1RhcmdldCgpOworICAg
IGlmICghbmV3VGFyZ2V0IHx8IG5ld1RhcmdldC5pc1VuZGVmaW5lZCgpKQorICAgICAgICBuZXdU
YXJnZXQgPSBleGVjLT5jYWxsZWUoKTsKKworICAgIC8vIDIuIExldCBudW1iZXJGb3JtYXQgYmUg
T3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAlTnVtYmVyRm9ybWF0UHJv
dG90eXBlJSkuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBJbnRsTnVtYmVyRm9ybWF0
KiBudW1iZXJGb3JtYXQgPSBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUodm0sIGpzQ2FzdDxJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSkpOworICAgIGlmIChudW1i
ZXJGb3JtYXQgJiYgIWpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKj4o
bmV3VGFyZ2V0KSkgeworICAgICAgICBKU1ZhbHVlIHByb3RvID0gYXNPYmplY3QobmV3VGFyZ2V0
KS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOworICAgICAgICBh
c09iamVjdChudW1iZXJGb3JtYXQpLT5zZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhleGVjLCBw
cm90byk7CisgICAgfQorCisgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQobnVtYmVyRm9ybWF0KS4K
KyAgICBBU1NFUlQobnVtYmVyRm9ybWF0KTsKKworICAgIC8vIDQuIFJldHVybiBJbml0aWFsaXpl
TnVtYmVyRm9ybWF0KG51bWJlckZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gRklY
TUU6IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSW5pdGlhbGl6ZU51bWJlckZvcm1hdChudW1iZXJG
b3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
bnVtYmVyRm9ybWF0KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50
bE51bWJlckZvcm1hdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTEuMS4yIEludGwuTnVt
YmVyRm9ybWF0IChbbG9jYWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQwMiAyLjApCisgICAgLy8g
MS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZl
IGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KKyAgICAv
LyBOZXdUYXJnZXQgaXMgYWx3YXlzIHVuZGVmaW5lZCB3aGVuIGNhbGxlZCBhcyBhIGZ1bmN0aW9u
LgorCisgICAgLy8gMi4gTGV0IG51bWJlckZvcm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25z
dHJ1Y3RvcihuZXdUYXJnZXQsICVOdW1iZXJGb3JtYXRQcm90b3R5cGUlKS4KKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IEludGxO
dW1iZXJGb3JtYXQ6OmNyZWF0ZSh2bSwganNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
cio+KGV4ZWMtPmNhbGxlZSgpKSk7CisKKyAgICAvLyAzLiBSZXR1cm5JZkFicnVwdChudW1iZXJG
b3JtYXQpLgorICAgIEFTU0VSVChudW1iZXJGb3JtYXQpOworCisgICAgLy8gNC4gUmV0dXJuIElu
aXRpYWxpemVOdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKS4KKyAg
ICAvLyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShJbml0aWFsaXplTnVtYmVyRm9ybWF0
KG51bWJlckZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucykpOworCisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShudW1iZXJGb3JtYXQpOworfQorCitDb25zdHJ1Y3RUeXBlIEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBj
b25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29u
c3RydWN0SW50bE51bWJlckZvcm1hdDsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9
CisKK0NhbGxUeXBlIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlv
biA9IGNhbGxJbnRsTnVtYmVyRm9ybWF0OworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisK
K2Jvb2wgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xv
dDxJbnRlcm5hbEZ1bmN0aW9uPihleGVjLCBudW1iZXJGb3JtYXRDb25zdHJ1Y3RvclRhYmxlLCBq
c0Nhc3Q8SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1l
LCBzbG90KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICAvLyAxMS4yLjIgSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKGxvY2Fs
ZXMgWywgb3B0aW9uc10pIChFQ01BLTQwMiAyLjApCisKKyAgICAvLyAxLiBMZXQgYXZhaWxhYmxl
TG9jYWxlcyBiZSAlTnVtYmVyRm9ybWF0JS5bW2F2YWlsYWJsZUxvY2FsZXNdXS4KKyAgICAvLyBG
SVhNRTogYXZhaWxhYmxlID0gSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpnZXRBdmFpbGFi
bGVMb2NhbGVzKCkKKworICAgIC8vIDIuIExldCByZXF1ZXN0ZWRMb2NhbGVzIGJlIENhbm9uaWNh
bGl6ZUxvY2FsZUxpc3QobG9jYWxlcykuCisgICAgLy8gRklYTUU6IHJlcXVlc3RlZCA9IENhbm9u
aWNhbGl6ZUxvY2FsZUxpc3QobG9jYWxlcykKKworICAgIC8vIDMuIFJldHVybiBTdXBwb3J0ZWRM
b2NhbGVzKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIG9wdGlvbnMpLgorICAg
IC8vIEZJWE1FOiByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN1cHBvcnRlZExvY2FsZXMoYXZhaWxh
YmxlLCByZXF1ZXN0ZWQsIG9wdGlvbnMpKTsKKworICAgIC8vIFJldHVybiBlbXB0eSBhcnJheSB1
bnRpbCBwcm9wZXJseSBpbXBsZW1lbnRlZC4KKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2Jq
ZWN0KCk7CisgICAgSlNBcnJheSogc3VwcG9ydGVkTG9jYWxlcyA9IEpTQXJyYXk6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIDApOworICAgIGlmICgh
c3VwcG9ydGVkTG9jYWxlcykKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091
dE9mTWVtb3J5RXJyb3IoZXhlYykpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdXBw
b3J0ZWRMb2NhbGVzKTsKK30KKwordm9pZCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX251bWJl
ckZvcm1hdFN0cnVjdHVyZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
RU5BQkxFKElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiNzVmMTAyMTY0
Y2NkZjEyY2U1M2U1Yzk0OGI2Y2ExMTc5OTlhZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaApAQCAt
MCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAo
dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxOdW1iZXJG
b3JtYXRDb25zdHJ1Y3Rvcl9oCisjZGVmaW5lIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcl9o
CisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxOdW1iZXJGb3JtYXQ7CitjbGFzcyBJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlOworCitjbGFzcyBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Ig
OiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5h
bEZ1bmN0aW9uIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisK
KyAgICBzdGF0aWMgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1
Y3R1cmUqLCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIFN0cnVjdHVyZSogbnVtYmVyRm9ybWF0
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUuZ2V0KCk7
IH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisKK3ByaXZhdGU6CisgICAgSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIENvbnN0cnVj
dFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3Rh
dGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CisgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7CisgICAgCisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9u
dW1iZXJGb3JtYXRTdHJ1Y3R1cmU7Cit9OworCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdEludGxOdW1iZXJGb3JtYXQoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxJbnRsTnVtYmVyRm9ybWF0KEV4ZWNTdGF0ZSopOworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQorCisjZW5kaWYgLy8gSW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGEzNDkyMjk0ZWMzODE2YjkxYmIxYzAwNGUyMzlmOWZlYmJkZTRmOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGUuY3BwCkBAIC0wLDAgKzEsMTM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkg
VmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIgorCisj
aWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxOdW1i
ZXJGb3JtYXQuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJK
U09iamVjdC5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiU3Ry
dWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19U
UklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUpOworCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
R2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0
YXRlKik7CisKK30KKworI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZTo6c19pbmZvID0geyAiT2JqZWN0IiwgJkludGxOdW1iZXJGb3JtYXQ6OnNfaW5mbywg
Jm51bWJlckZvcm1hdFByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5sdXQuaAorQGJlZ2luIG51bWJlckZvcm1hdFByb3RvdHlwZVRhYmxlCisgIGZvcm1h
dCAgICAgICAgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCAgICAgICAg
IERvbnRFbnVtfEFjY2Vzc29yCisgIHJlc29sdmVkT3B0aW9ucyAgSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMgIERvbnRFbnVtfEZ1bmN0aW9uIDAKK0BlbmQKKyov
CisKK0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6
OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7
CisgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SW50bE51bWJlckZvcm1hdFByb3RvdHlwZT4odm0uaGVhcCkpIEludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVh
dGlvbih2bSwgc3RydWN0dXJlKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUq
IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZTo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIDogSW50bE51bWJlckZvcm1hdCh2bSwgc3RydWN0dXJlKQorewor
fQorCit2b2lkIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgU3RydWN0dXJlKikKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cit9CisKK2Jv
b2wgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNP
YmplY3Q+KGV4ZWMsIG51bWJlckZvcm1hdFByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8SW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRl
ckZvcm1hdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTEuMy4zIEludGwuTnVtYmVyRm9y
bWF0LnByb3RvdHlwZS5mb3JtYXQgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBMZXQgbmYgYmUg
dGhpcyBOdW1iZXJGb3JtYXQgb2JqZWN0LgorICAgIEludGxOdW1iZXJGb3JtYXQqIG5mID0ganNE
eW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlm
ICghbmYpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZv
cm1hdCIpKSk7CisgICAgCisgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IG5mLT5i
b3VuZEZvcm1hdCgpOworICAgIC8vIDIuIElmIG5mLltbYm91bmRGb3JtYXRdXSBpcyB1bmRlZmlu
ZWQsCisgICAgaWYgKCFib3VuZEZvcm1hdCkgeworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbmYtPmdsb2JhbE9iamVj
dCgpOworICAgICAgICAvLyBhLiBMZXQgRiBiZSBhIG5ldyBidWlsdC1pbiBmdW5jdGlvbiBvYmpl
Y3QgYXMgZGVmaW5lZCBpbiAxMS4zLjQuCisgICAgICAgIC8vIGIuIFRoZSB2YWx1ZSBvZiBG4oCZ
cyBsZW5ndGggcHJvcGVydHkgaXMgMS4KKyAgICAgICAgSlNGdW5jdGlvbiogdGFyZ2V0T2JqZWN0
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsIEFTQ0lJTGl0ZXJhbCgi
Zm9ybWF0IiksIEludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyLCBOb0ludHJpbnNpYyk7
CisgICAgICAgIEpTQXJyYXkqIGJvdW5kQXJncyA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlh
bGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIDApOworICAgICAgICBpZiAoIWJvdW5k
QXJncykKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMpKTsKKworICAgICAgICAvLyBjLiBMZXQgYmYgYmUgQm91bmRGdW5jdGlvbkNy
ZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCisgICAgICAgIGJvdW5kRm9ybWF0ID0gSlNCb3VuZEZ1
bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBuZiwgYm91bmRB
cmdzLCAxLCBBU0NJSUxpdGVyYWwoImZvcm1hdCIpKTsKKyAgICAgICAgLy8gZC4gU2V0IG5mLltb
Ym91bmRGb3JtYXRdXSB0byBiZi4KKyAgICAgICAgbmYtPnNldEJvdW5kRm9ybWF0KHZtLCBib3Vu
ZEZvcm1hdCk7CisgICAgfQorICAgIC8vIDMuIFJldHVybiBuZi5bW2JvdW5kRm9ybWF0XV0uCisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShib3VuZEZvcm1hdCk7Cit9CisKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9w
dGlvbnMoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDExLjMuNSBJbnRsLk51bWJlckZvcm1h
dC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKKyAgICBJbnRsTnVt
YmVyRm9ybWF0KiBuZiA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KGV4ZWMtPnRo
aXNWYWx1ZSgpKTsKKyAgICBpZiAoIW5mKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW50bC5OdW1iZXJGb3JtYXQucHJv
dG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmpl
Y3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiKSkpOworCisgICAgLy8gVGhlIGZ1bmN0
aW9uIHJldHVybnMgYSBuZXcgb2JqZWN0IHdob3NlIHByb3BlcnRpZXMgYW5kIGF0dHJpYnV0ZXMg
YXJlIHNldCBhcyBpZiBjb25zdHJ1Y3RlZCBieSBhbiBvYmplY3QgbGl0ZXJhbCBhc3NpZ25pbmcg
dG8gZWFjaCBvZiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgdGhlIHZhbHVlIG9mIHRoZSBjb3Jy
ZXNwb25kaW5nIGludGVybmFsIHNsb3Qgb2YgdGhpcyBOdW1iZXJGb3JtYXQgb2JqZWN0IChzZWUg
MTEuNCk6IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBzdHlsZSwgY3VycmVuY3ksIGN1cnJlbmN5
RGlzcGxheSwgbWluaW11bUludGVnZXJEaWdpdHMsIG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgbWF4
aW11bUZyYWN0aW9uRGlnaXRzLCBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHMsIG1heGltdW1TaWdu
aWZpY2FudERpZ2l0cywgYW5kIHVzZUdyb3VwaW5nLiBQcm9wZXJ0aWVzIHdob3NlIGNvcnJlc3Bv
bmRpbmcgaW50ZXJuYWwgc2xvdHMgYXJlIG5vdCBwcmVzZW50IGFyZSBub3QgYXNzaWduZWQuCisK
KyAgICBKU09iamVjdCogb3B0aW9ucyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworCisg
ICAgLy8gRklYTUU6IFBvcHVsYXRlIG9iamVjdCBmcm9tIGludGVybmFsIHNsb3RzLgorCisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShvcHRpb25zKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
OGJjMDUxZmRkYjg4NTJhOWE5NWY5ZjE3ZDk4YWU4Y2I3ODUyMTE2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5X
YWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZV9oCisjZGVmaW5lIEludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGVfaAorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Lmgi
CisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGUgOiBwdWJsaWMgSW50bE51bWJlckZvcm1hdCB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBJbnRsTnVtYmVyRm9ybWF0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIFN0cnVjdHVyZSopOworCitwcml2YXRlOgorICAgIEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKwor
I2VuZGlmIC8vIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCAxMmRhOTM4ZmE4MTNhZTMxZjM3NTZk
YjA0ZGYwN2ZiYjA5OTJkZDBjLi5iYTQ1N2U3MjU2MDkxMDc4OTEyMmY1MTM3NWVlOWZkYzEwMjRk
MzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcApA
QCAtMjgsNiArMjgsMTYgQEAKIAogI2lmIEVOQUJMRShJTlRMKQogCisjaW5jbHVkZSAiRnVuY3Rp
b25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKKyNpbmNsdWRlICJJbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkludGxDb2xsYXRvclByb3RvdHlwZS5o
IgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5j
bHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCkBAIC00OCwxNyArNTgsNDMgQEAgSW50bE9iamVjdDo6
SW50bE9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCi1JbnRsT2Jq
ZWN0KiBJbnRsT2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK0lu
dGxPYmplY3QqIEludGxPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIEludGxPYmplY3QqIG9iamVj
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxPYmplY3Q+KHZtLmhlYXApKSBJbnRs
T2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwotICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IG9iamVjdDsKIH0KIAotdm9pZCBJbnRsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit2
b2lkIEludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJU
KGluaGVyaXRzKGluZm8oKSkpOworCisgICAgLy8gU2V0IHVwIENvbGxhdG9yLgorICAgIEludGxD
b2xsYXRvclByb3RvdHlwZSogY29sbGF0b3JQcm90b3R5cGUgPSBJbnRsQ29sbGF0b3JQcm90b3R5
cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBJbnRsQ29sbGF0b3JQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlw
ZSgpKSk7CisgICAgU3RydWN0dXJlKiBjb2xsYXRvclN0cnVjdHVyZSA9IEludGxDb2xsYXRvcjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGNvbGxhdG9yUHJvdG90eXBlKTsKKyAg
ICBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciogY29sbGF0b3JDb25zdHJ1Y3RvciA9IEludGxDb2xs
YXRvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3Rv
dHlwZSgpKSwgY29sbGF0b3JQcm90b3R5cGUsIGNvbGxhdG9yU3RydWN0dXJlKTsKKworICAgIGNv
bGxhdG9yUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+Y29uc3RydWN0b3IsIGNvbGxhdG9yQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKwor
ICAgIC8vIFNldCB1cCBOdW1iZXJGb3JtYXQuCisgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZSogbnVtYmVyRm9ybWF0UHJvdG90eXBlID0gSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgp
KSk7CisgICAgU3RydWN0dXJlKiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUgPSBJbnRsTnVtYmVyRm9y
bWF0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgbnVtYmVyRm9ybWF0UHJvdG90
eXBlKTsKKyAgICBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqIG51bWJlckZvcm1hdENvbnN0
cnVjdG9yID0gSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIG51bWJlckZvcm1hdFByb3RvdHlwZSwg
bnVtYmVyRm9ybWF0U3RydWN0dXJlKTsKKworICAgIG51bWJlckZvcm1hdFByb3RvdHlwZS0+cHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCBudW1iZXJGb3JtYXRDb25zdHJ1Y3RvciwgRG9udEVudW0pOworCisgICAgLy8gU2V0IHVwIERh
dGVUaW1lRm9ybWF0LgorICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogZGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7Cisg
ICAgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSA9IEludGxEYXRlVGltZUZvcm1h
dDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGRhdGVUaW1lRm9ybWF0UHJvdG90
eXBlKTsKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogZGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3RvciA9IEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIElu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwgZGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUsIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKTsKKworICAgIGRhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+Y29uc3RydWN0b3IsIGRhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKKwor
ICAgIC8vIDguMSBQcm9wZXJ0aWVzIG9mIHRoZSBJbnRsIE9iamVjdCAoRUNNQS00MDIgMi4wKQor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5Db2xs
YXRvciwgY29sbGF0b3JDb25zdHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5OdW1iZXJGb3JtYXQsIG51bWJlckZv
cm1hdENvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkRhdGVUaW1lRm9ybWF0LCBkYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yLCBEb250RW51bSk7CiB9CiAKIFN0cnVjdHVyZSogSW50bE9iamVjdDo6Y3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKaW5k
ZXggZjQ1YjlhYjY0OTAyMjhlZGVhNTdhYjJlMGJlOWMwYjVhODllMmZjMC4uODM0Mjg1NDJiMmQw
ZmJjN2U1YjE0NGEzNmJjYmI4NmVkZmNiYmU4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuaApAQCAtMzIsMTggKzMyLDI1IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCitjbGFzcyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvcjsKK2NsYXNzIEludGxDb2xsYXRvclBy
b3RvdHlwZTsKK2NsYXNzIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOworY2xhc3MgSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOworY2xhc3MgSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yOworY2xhc3MgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTsKKwogY2xhc3MgSW50bE9iamVj
dCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTTm9u
RmluYWxPYmplY3QgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsK
IAotICAgIHN0YXRpYyBJbnRsT2JqZWN0KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBz
dGF0aWMgSW50bE9iamVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
KTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBK
U0dsb2JhbE9iamVjdCopOwogCiBwcml2YXRlOgogICAgIEludGxPYmplY3QoVk0mLCBTdHJ1Y3R1
cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAppbmRleCAwOWRkNTZhZWZlMTc4MWVhOWUwNjU5NjU2NGNiNjA0YzFiYTFhMDJmLi4xY2Fk
ZmZlNWI5NGZlNzAwODcxMGIyYmUxZjM1YTBhMzU4NzQ5NjZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC00MzYsNyArNDM2LDcg
QEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05h
bWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZXZhbCwgbV9ldmFsRnVuY3Rpb24uZ2V0KCksIERvbnRF
bnVtKTsKICAgICAKICNpZiBFTkFCTEUoSU5UTCkKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+SW50bCwgSW50bE9iamVjdDo6Y3JlYXRlKHZtLCBJ
bnRsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdl
dCgpKSksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+SW50bCwgSW50bE9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBJbnRsT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSks
IERvbnRFbnVtKTsKICNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+SlNPTiwgSlNPTk9iamVjdDo6Y3JlYXRl
KHZtLCBKU09OT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90
eXBlLmdldCgpKSksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+TWF0aCwgTWF0aE9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBN
YXRoT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdl
dCgpKSksIERvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZTE2MGM3ZjgxM2NhNGQ5NjVhYjBlMDE4
ZDhiNzI2OTZlY2JlZGM3MC4uYmNlODYwYTdlYzgxZDFmNDZmZjlkMzlmY2MyYWVhZjc5NTAxNzE5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKQEAgLTExNyw3ICsxMTcsNyBAQCBFTkFCTEVfV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUX21hY29zeF8xMDEwMDAgPSA7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUX21hY29zeF8xMDExMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogRU5B
QkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gRU5BQkxFX1dJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVDsKIAotRU5BQkxFX0lOVEwgPSA7CitFTkFCTEVfSU5UTCA9IEVO
QUJMRV9JTlRMOwogCiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQo
RU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5U
RVJOQUxfU0RLKSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFM
X1NES19ZRVMgPSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRl
eCBlMTYwYzdmODEzY2E0ZDk2NWFiMGUwMThkOGI3MjY5NmVjYmVkYzcwLi5iY2U4NjBhN2VjODFk
MWY0NmZmOWQzOWZjYzJhZWFmNzk1MDE3MTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMTE3LDcg
KzExNyw3IEBAIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTAwMCA9
IDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTEwMCA9IEVOQUJM
RV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUX21hY29zeF8xMDEyMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogCi1F
TkFCTEVfSU5UTCA9IDsKK0VOQUJMRV9JTlRMID0gRU5BQkxFX0lOVEw7CiAKIEVOQUJMRV9JT1Nf
R0VTVFVSRV9FVkVOVFNbc2RrPWlwaG9uZSpdID0gJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRT
X2lvc19XSVRIX0lOVEVSTkFMX1NES18kKFVTRV9JTlRFUk5BTF9TREspKTsKIEVOQUJMRV9JT1Nf
R0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLX1lFUyA9IEVOQUJMRV9JT1NfR0VT
VFVSRV9FVkVOVFM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxNjBjN2Y4MTNjYTRkOTY1YWIwZTAxOGQ4Yjcy
Njk2ZWNiZWRjNzAuLmJjZTg2MGE3ZWM4MWQxZjQ2ZmY5ZDM5ZmNjMmFlYWY3OTUwMTcxOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCkBAIC0xMTcsNyArMTE3LDcgQEAgRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVF9tYWNvc3hfMTAxMDAwID0gOwogRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9t
YWNvc3hfMTAxMTAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIEVOQUJMRV9X
SVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTIwMCA9IEVOQUJMRV9XSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQ7CiAKLUVOQUJMRV9JTlRMID0gOworRU5BQkxFX0lOVEwgPSBFTkFCTEVf
SU5UTDsKIAogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU1tzZGs9aXBob25lKl0gPSAkKEVOQUJM
RV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFM
X1NESykpOwogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtf
WUVTID0gRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFr
ZS9XZWJLaXRGZWF0dXJlcy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFr
ZQppbmRleCBjOTQzZWRkYTlmM2UyMjQyMDlhMDliYTJlZDc1NmYwNWVkZmZmNTUwLi5jNTJmOTQ5
ZmQ1M2MyODFmN2I4NTlmODJhNmQxMzQyYjQyMmI0ZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21h
a2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVz
LmNtYWtlCkBAIC05OSw3ICs5OSw3IEBAIG1hY3JvKFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAg
V0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEggIlRvZ2dsZSBtb250
aCB0eXBlIDxpbnB1dD4gc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9E
RUZJTkUoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSAiVG9nZ2xlIHRpbWUgdHlwZSA8aW5wdXQ+IHN1
cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9JTlBV
VF9UWVBFX1dFRUsgIlRvZ2dsZSB3ZWVrIHR5cGUgPGlucHV0PiBzdXBwb3J0IiBQUklWQVRFIE9G
RikKLSAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU5UTCAiVG9nZ2xlIEludGwgc3Vw
cG9ydCIgUFJJVkFURSBPRkYpCisgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lOVEwg
IlRvZ2dsZSBJbnRsIHN1cHBvcnQiIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJ
TkUoRU5BQkxFX0lPU19BSVJQTEFZICJUb2dnbGUgaU9TIGFpcnBsYXkgc3VwcG9ydCIgUFJJVkFU
RSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJ
TkcgIlRvZ2dsZSBpT1MgdGV4dCBhdXRvc2l6aW5nIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAg
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9KSVQgIkVuYWJsZSBKdXN0SW5UaW1lIGphdmFz
Y3JpcHQgc3VwcG9ydCIgUFJJVkFURSBPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjM2Y4NjAwZmFlMTI4N2JjMjgzYjk4MDRkMDAyMWE1NmUw
OTUyZDA5Li5lOTk0MGYyMjFhMWMxNDIwZjI4MTk0ZDg4ODRhODBiNGM0N2I5YzcwIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTUtMDctMjggIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3JpcHQgSW50ZXJu
YXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFbmFibGUgZmxhZyBub3cgdGhhdCB0aGUgYmFzaWMgb2JqZWN0cyBhcmUgaW4g
cGxhY2UuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06IEVu
YWJsZWQgSU5UTAorCiAyMDE1LTA3LTI4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgogCiAgICAgICAgIFtFUzZdIEFkZCBFTkFCTEVfRVM2X01PRFVMRVMgY29tcGlsZSB0
aW1lIGZsYWcgd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZSAiZmFsc2UiCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggYjNmNjVhNTc5NjkyOTJmMTAxNTU2ZjE2NzUxNzJh
YTA4MzQyYjkwMS4uMmJkNjE0NTIzNThkZGE3MzI2MGU1ZGZlZGVmNmVhZTE0Y2E0MmJjNSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMjkxLDcgKzI5MSw3IEBA
IG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOUFVUX1RZUEVfV0VF
SyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRpbnB1dFR5cGVXZWVrU3VwcG9ydCB9LAogCiAg
ICAgeyBvcHRpb24gPT4gImludGwiLCBkZXNjID0+ICJUb2dnbGUgSW50bCBzdXBwb3J0IiwKLSAg
ICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOVEwiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkaW50
bFN1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOVEwiLCBkZWZhdWx0ID0+IDEs
IHZhbHVlID0+IFwkaW50bFN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJsZWdhY3ktbm90
aWZpY2F0aW9ucyIsIGRlc2MgPT4gIlRvZ2dsZSBMZWdhY3kgTm90aWZpY2F0aW9ucyBzdXBwb3J0
IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TIiwgZGVmYXVs
dCA9PiAwLCB2YWx1ZSA9PiBcJGxlZ2FjeU5vdGlmaWNhdGlvbnNTdXBwb3J0IH0sCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ODRiOTUwZDE2NTE3NjNiYzA5OWMxMDhiNDAxNzM2OWEwYzYyMjgxYy4uY2I0NTQyZGNkMThmZTU2
YmRiZTVhYTFjYmI4M2E1M2VjNThhZjZhMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE1LTA3
LTI4ICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CisKKyAgICAg
ICAgSW1wbGVtZW50IGJhc2ljIHR5cGVzIGZvciBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0
aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ2OTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHRlc3RzIGZvciBJbnRsLkNvbGxhdG9yLCBJbnRsLk51bWJlckZvcm1hdCwgYW5kIEludGwu
RGF0ZVRpbWVGb3JtYXQKKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6IEVuYWJsZWQgaW50
bCB0ZXN0cy4KKyAgICAgICAgKiBqcy9pbnRsLWNvbGxhdG9yLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICoganMvaW50bC1jb2xsYXRvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9p
bnRsLWRhdGV0aW1lZm9ybWF0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvaW50
bC1kYXRldGltZWZvcm1hdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9pbnRsLWV4cGVjdGVk
LnR4dDogVXBkYXRlZC4KKyAgICAgICAgKiBqcy9pbnRsLW51bWJlcmZvcm1hdC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2ludGwtbnVtYmVyZm9ybWF0Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9pbnRsLWNvbGxhdG9yLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9zY3JpcHQtdGVzdHMvaW50bC1kYXRldGltZWZvcm1hdC5qczogQWRkZWQuCisgICAg
ICAgICoganMvc2NyaXB0LXRlc3RzL2ludGwtbnVtYmVyZm9ybWF0LmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9zY3JpcHQtdGVzdHMvaW50bC5qczogQWRkZWQgdGVzdHMgZm9yIENvbGxhdG9yLCBO
dW1iZXJGb3JtYXQsIGFuZCBEYXRlVGltZUZvcm1hdC4KKwogMjAxNS0wNy0yOCAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBbmltYXRpb25zIHNvbWV0
aW1lcyBmYWlsIHRvIHN0YXJ0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhOWM3M2U5MDQyNDI4ZjU5
ZTk0NDBjYWUyNmE3NDJjMDNmYTg1NzNiLi4xODUyZGUxOGVlZDA1YjU2MTcwZDE0NWM5ZjQ0YmY2
NmEzMGI0MjE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTUzMCw2ICs1MzAsMyBAQCB3ZWJraXQu
b3JnL2IvMTQ2MTgyIGVkaXRpbmcvc2VsZWN0aW9uL2xlYWstZG9jdW1lbnQtd2l0aC1zZWxlY3Rp
b24taW5zaWRlLmh0bWwgWwogCiB3ZWJraXQub3JnL2IvMTQ2NDM0IGZhc3QvZG9tL0hUTUxJbWFn
ZUVsZW1lbnQvc2l6ZXMgWyBTa2lwIF0KIAotIyBJbnRsIGlzIG5vdCBlbmFibGVkIHlldAotanMv
aW50bC5odG1sIFsgU2tpcCBdCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2ludGwtY29s
bGF0b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvaW50bC1jb2xsYXRvci1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmFjZTQ5OTYwYWMyOGVjNjBhODg5ZGJlYWE0ZWY4YTVmOTE0MmM5
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2ludGwtY29sbGF0b3ItZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNDcgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9m
IEludGwuQ29sbGF0b3IgYXMgZGVzY3JpYmVkIGluIHRoZSBFQ01BU2NyaXB0IEludGVybmF0aW9u
YWxpemF0aW9uIEFQSSBTcGVjaWZpY2F0aW9uIChFQ01BLTQwMiAyLjApLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBJbnRsLkNvbGxhdG9yIGlzIGFuIGluc3RhbmNlIG9m
IEZ1bmN0aW9uCitQQVNTIEludGwuQ29sbGF0b3IoKSBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLkNv
bGxhdG9yCitQQVNTIEludGwuQ29sbGF0b3IuY2FsbCh7fSkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50
bC5Db2xsYXRvcgorUEFTUyBuZXcgSW50bC5Db2xsYXRvcigpIGlzIGFuIGluc3RhbmNlIG9mIElu
dGwuQ29sbGF0b3IKK1BBU1MgbmV3IERlcml2ZWRDb2xsYXRvciBpcyBhbiBpbnN0YW5jZSBvZiBE
ZXJpdmVkQ29sbGF0b3IKK1BBU1MgbmV3IERlcml2ZWRDb2xsYXRvciBpcyBhbiBpbnN0YW5jZSBv
ZiBJbnRsLkNvbGxhdG9yCitQQVNTIG5ldyBEZXJpdmVkQ29sbGF0b3IoKS5jb21wYXJlKCdhJywg
J2InKSBpcyAtMQorUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERlcml2ZWRDb2xsYXRv
cikgaXMgRGVyaXZlZENvbGxhdG9yLnByb3RvdHlwZQorUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBl
T2YoT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBEZXJpdmVkQ29sbGF0b3IpKSBpcyBJbnRsLkNv
bGxhdG9yLnByb3RvdHlwZQorUEFTUyBJbnRsLkNvbGxhdG9yLmxlbmd0aCBpcyAwCitQQVNTIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvciwgJ3Byb3RvdHlwZScp
LndyaXRhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SW50bC5Db2xsYXRvciwgJ3Byb3RvdHlwZScpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLCAncHJvdG90eXBlJyku
Y29uZmlndXJhYmxlIGlzIGZhbHNlCitQQVNTIEludGwuQ29sbGF0b3Iuc3VwcG9ydGVkTG9jYWxl
c09mLmxlbmd0aCBpcyAxCitQQVNTIEludGwuQ29sbGF0b3Iuc3VwcG9ydGVkTG9jYWxlc09mKCkg
aXMgYW4gaW5zdGFuY2Ugb2YgQXJyYXkKK1BBU1MgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29u
c3RydWN0b3IgaXMgSW50bC5Db2xsYXRvcgorUEFTUyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5j
b21wYXJlIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvci5wcm90b3R5cGUsICdjb21wYXJlJykuZ2V0IGlz
IGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSW50bC5Db2xsYXRvci5wcm90b3R5cGUsICdjb21wYXJlJykuc2V0IGlzIHVuZGVmaW5l
ZAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IucHJv
dG90eXBlLCAnY29tcGFyZScpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSwgJ2NvbXBhcmUnKS5j
b25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJl
Lmxlbmd0aCBpcyAyCitQQVNTIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2NvbXBhcmUnLCBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IucHJvdG90eXBlLCAn
Y29tcGFyZScpKS5jb21wYXJlIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludGwuQ29sbGF0
b3IucHJvdG90eXBlLmNvbXBhcmUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgQ29sbGF0b3IuCitQQVNTIEludGwuQ29sbGF0b3IucHJvdG90eXBl
LmNvbXBhcmUgIT09IEludGwuQ29sbGF0b3IoKS5jb21wYXJlIGlzIHRydWUKK1BBU1MgbmV3IElu
dGwuQ29sbGF0b3IoKS5jb21wYXJlICE9PSBuZXcgSW50bC5Db2xsYXRvcigpLmNvbXBhcmUgaXMg
dHJ1ZQorUEFTUyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlKHsgdG9TdHJpbmcoKSB7
IHRocm93IEVycm9yKCc2JykgfSB9LCB7IHRvU3RyaW5nKCkgeyArK2JhZENhbGxzOyByZXR1cm4g
Jyc7IH0gfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiA2LgorUEFTUyBiYWRDYWxscyBpcyAwCitQ
QVNTIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUoJ2EnLCB7IHRvU3RyaW5nKCkgeyB0
aHJvdyBFcnJvcignOCcpIH0gfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiA4LgorUEFTUyBJbnRs
LkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlLmNhbGwobnVsbCwgJ2EnLCAnYicpIGlzIC0xCitQ
QVNTIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUuY2FsbChJbnRsLkNvbGxhdG9yKCdl
bicsIHsgc2Vuc2l0aXZpdHk6J2Jhc2UnIH0pLCAnQScsICdhJykgaXMgLTEKK1BBU1MgSW50bC5D
b2xsYXRvci5wcm90b3R5cGUuY29tcGFyZS5jYWxsKDUsICdhJywgJ2InKSBpcyAtMQorUEFTUyBu
ZXcgSW50bC5Db2xsYXRvcigpLmNvbXBhcmUuY2FsbChudWxsLCAnYScsICdiJykgaXMgLTEKK1BB
U1MgbmV3IEludGwuQ29sbGF0b3IoKS5jb21wYXJlLmNhbGwoSW50bC5Db2xsYXRvcignZW4nLCB7
IHNlbnNpdGl2aXR5OidiYXNlJyB9KSwgJ0EnLCAnYScpIGlzIC0xCitQQVNTIG5ldyBJbnRsLkNv
bGxhdG9yKCkuY29tcGFyZS5jYWxsKDUsICdhJywgJ2InKSBpcyAtMQorUEFTUyBJbnRsLkNvbGxh
dG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMubGVuZ3RoIGlzIDAKK1BBU1MgSW50bC5Db2xs
YXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgaXMgYW4gaW5zdGFuY2Ugb2YgT2JqZWN0
CitQQVNTIEludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpID09PSBJbnRs
LkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSBpcyBmYWxzZQorUEFTUyBJbnRs
LkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMuY2FsbCg1KSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ29sbGF0
b3IuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvaW50bC1jb2xsYXRvci5odG1sIGIvTGF5b3V0VGVz
dHMvanMvaW50bC1jb2xsYXRvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlNmM4N2RjZjBkYTgxNzE5NDI0
OGU4NTU2NzRjYzg0Njk5ODk4ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9p
bnRsLWNvbGxhdG9yLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2ludGwtY29sbGF0b3IuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvaW50bC1kYXRldGltZWZvcm1h
dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWRhdGV0aW1lZm9ybWF0LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yOTc3NmY1ZGJjNjMyMzhlYzBmMmI4MmQyYzg4NDczNmZhMWZk
MGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvaW50bC1kYXRldGltZWZvcm1h
dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0NiBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGUgYmVo
YXZpb3Igb2YgSW50bC5EYXRlVGltZUZvcm1hdCBhcyBkZXNjcmliZWQgaW4gdGhlIEVDTUFTY3Jp
cHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmljYXRpb24gKEVDTUEtNDAyIDIuMCku
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEludGwuRGF0ZVRpbWVGb3Jt
YXQgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdCgp
IGlzIGFuIGluc3RhbmNlIG9mIEludGwuRGF0ZVRpbWVGb3JtYXQKK1BBU1MgSW50bC5EYXRlVGlt
ZUZvcm1hdC5jYWxsKHt9KSBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLkRhdGVUaW1lRm9ybWF0CitQ
QVNTIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5EYXRl
VGltZUZvcm1hdAorUEFTUyBuZXcgRGVyaXZlZERhdGVUaW1lRm9ybWF0IGlzIGFuIGluc3RhbmNl
IG9mIERlcml2ZWREYXRlVGltZUZvcm1hdAorUEFTUyBuZXcgRGVyaXZlZERhdGVUaW1lRm9ybWF0
IGlzIGFuIGluc3RhbmNlIG9mIEludGwuRGF0ZVRpbWVGb3JtYXQKK1BBU1MgbmV3IERlcml2ZWRE
YXRlVGltZUZvcm1hdCgpLmZvcm1hdCgwKS5sZW5ndGggPiAwIGlzIHRydWUKK1BBU1MgT2JqZWN0
LmdldFByb3RvdHlwZU9mKG5ldyBEZXJpdmVkRGF0ZVRpbWVGb3JtYXQpIGlzIERlcml2ZWREYXRl
VGltZUZvcm1hdC5wcm90b3R5cGUKK1BBU1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKE9iamVjdC5n
ZXRQcm90b3R5cGVPZihuZXcgRGVyaXZlZERhdGVUaW1lRm9ybWF0KSkgaXMgSW50bC5EYXRlVGlt
ZUZvcm1hdC5wcm90b3R5cGUKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5sZW5ndGggaXMgMAor
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQs
ICdwcm90b3R5cGUnKS53cml0YWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQsICdwcm90b3R5cGUnKS5lbnVtZXJhYmxl
IGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRl
VGltZUZvcm1hdCwgJ3Byb3RvdHlwZScpLmNvbmZpZ3VyYWJsZSBpcyBmYWxzZQorUEFTUyBJbnRs
LkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZi5sZW5ndGggaXMgMQorUEFTUyBJbnRs
LkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZigpIGlzIGFuIGluc3RhbmNlIG9mIEFy
cmF5CitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzIElu
dGwuRGF0ZVRpbWVGb3JtYXQKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9y
bWF0IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5nZXQg
aXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLnNldCBpcyB1
bmRlZmluZWQKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVU
aW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3Rv
dHlwZSwgJ2Zvcm1hdCcpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQQVNTIEludGwuRGF0ZVRpbWVG
b3JtYXQucHJvdG90eXBlLmZvcm1hdC5sZW5ndGggaXMgMQorUEFTUyBPYmplY3QuZGVmaW5lUHJv
cGVydHkoe30sICdmb3JtYXQnLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwu
RGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykpLmZvcm1hdCB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVG
b3JtYXQuCitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCAhPT0gSW50
bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdCBpcyB0cnVlCitQQVNTIG5ldyBJbnRsLkRhdGVUaW1l
Rm9ybWF0KCkuZm9ybWF0ICE9PSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdCBpcyB0
cnVlCitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCh7IHZhbHVlT2Yo
KSB7IHRocm93IEVycm9yKCc0YicpIH0gfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiA0Yi4KK1BB
U1MgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0KEluZmluaXR5KSB0aHJldyBl
eGNlcHRpb24gUmFuZ2VFcnJvcjogZGF0ZSB2YWx1ZSBpcyBub3QgZmluaXRlIGluIERhdGVUaW1l
Rm9ybWF0LmZvcm1hdCgpLgorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3Jt
YXQuY2FsbChudWxsLCAwKSBpcyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0KDApCitQQVNT
IEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5jYWxsKEludGwuRGF0ZVRpbWVG
b3JtYXQoJ2FyJyksIDApIGlzIEludGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQoMCkKK1BBU1Mg
SW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0LmNhbGwoNSwgMCkgaXMgSW50bC5E
YXRlVGltZUZvcm1hdCgpLmZvcm1hdCgwKQorUEFTUyBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgp
LmZvcm1hdC5jYWxsKG51bGwsIDApIGlzIEludGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQoMCkK
K1BBU1MgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQuY2FsbChJbnRsLkRhdGVUaW1l
Rm9ybWF0KCdhcicpLCAwKSBpcyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0KDApCitQQVNT
IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0LmNhbGwoNSwgMCkgaXMgSW50bC5EYXRl
VGltZUZvcm1hdCgpLmZvcm1hdCgwKQorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlw
ZS5yZXNvbHZlZE9wdGlvbnMubGVuZ3RoIGlzIDAKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5w
cm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgaXMgYW4gaW5zdGFuY2Ugb2YgT2JqZWN0CitQQVNT
IEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpID09PSBJbnRs
LkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSBpcyBmYWxzZQorUEFT
UyBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMuY2FsbCg1KSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRp
YWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvaW50bC1k
YXRldGltZWZvcm1hdC5odG1sIGIvTGF5b3V0VGVzdHMvanMvaW50bC1kYXRldGltZWZvcm1hdC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJhNThmY2Y1MDQ5MThmMDA5NDA4YTJjMjlmOGUzMzY3NTlkZWU5MzMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWRhdGV0aW1lZm9ybWF0Lmh0
bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2Ny
aXB0LXRlc3RzL2ludGwtZGF0ZXRpbWVmb3JtYXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvaW50bC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9qcy9pbnRsLWV4cGVjdGVkLnR4dAppbmRleCBiMjZhZjg2MzM2NTFiMTQwYzhmMTBiODk3
YTkwOGYwY2E4Y2FhOWQ2Li5hYzRiMDQ0ODYxZjAxZDVkMzZmN2Q0YTNmNzYzN2VlZTc2YWU3NjEx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9pbnRsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9qcy9pbnRsLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLVRoaXMgdGVzdCBj
aGVja3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBJbnRsIG9iamVjdCBhcyBkZXNjcmliZWQgaW4gOCBv
ZiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkgU3BlY2lmaWNhdGlvbi4K
K1RoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBJbnRsIG9iamVjdCBhcyBkZXNj
cmliZWQgaW4gdGhlIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmlj
YXRpb24gKEVDTUEtNDAyIDIuMCkuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIApAQCAt
OSw2ICs5LDcgQEAgUEFTUyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoSW50bCkgaXMg
J1tvYmplY3QgT2JqZWN0XScKIFBBU1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKEludGwpID09PSBP
YmplY3QucHJvdG90eXBlIGlzIHRydWUKIFBBU1MgbmV3IEludGwgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogT2JqZWN0IGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgSW50
bCcpLgogUEFTUyBJbnRsKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogSW50bCBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICdJbnRsKCknLCAnSW50bCcgaXMgYW4gaW5zdGFuY2Ugb2YgT2JqZWN0
KS4KK1BBU1MgT2JqZWN0LmtleXMoSW50bCkubGVuZ3RoIGlzIDAKIFBBU1MgZGVsZXRlIEludGw7
IGlzIHRydWUKIFBBU1MgJ0ludGwnIGluIGdsb2JhbCgpIGlzIGZhbHNlCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9pbnRsLW51bWJl
cmZvcm1hdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLW51bWJlcmZvcm1hdC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDZkZTAxMjFiZmMzMjliNDZlNjhjYThhMzhkODg2YjIy
MmFjOTFkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2ludGwtbnVtYmVyZm9y
bWF0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQ1IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoZSBi
ZWhhdmlvciBvZiBJbnRsLk51bWJlckZvcm1hdCBhcyBkZXNjcmliZWQgaW4gdGhlIEVDTUFTY3Jp
cHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmljYXRpb24gKEVDTUEtNDAyIDIuMCku
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEludGwuTnVtYmVyRm9ybWF0
IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIEludGwuTnVtYmVyRm9ybWF0KCkgaXMg
YW4gaW5zdGFuY2Ugb2YgSW50bC5OdW1iZXJGb3JtYXQKK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQu
Y2FsbCh7fSkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5OdW1iZXJGb3JtYXQKK1BBU1MgbmV3IElu
dGwuTnVtYmVyRm9ybWF0KCkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5OdW1iZXJGb3JtYXQKK1BB
U1MgbmV3IERlcml2ZWROdW1iZXJGb3JtYXQgaXMgYW4gaW5zdGFuY2Ugb2YgRGVyaXZlZE51bWJl
ckZvcm1hdAorUEFTUyBuZXcgRGVyaXZlZE51bWJlckZvcm1hdCBpcyBhbiBpbnN0YW5jZSBvZiBJ
bnRsLk51bWJlckZvcm1hdAorUEFTUyBuZXcgRGVyaXZlZE51bWJlckZvcm1hdCgpLmZvcm1hdCgx
KSBpcyAnMScKK1BBU1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBEZXJpdmVkTnVtYmVyRm9y
bWF0KSBpcyBEZXJpdmVkTnVtYmVyRm9ybWF0LnByb3RvdHlwZQorUEFTUyBPYmplY3QuZ2V0UHJv
dG90eXBlT2YoT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBEZXJpdmVkTnVtYmVyRm9ybWF0KSkg
aXMgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlCitQQVNTIEludGwuTnVtYmVyRm9ybWF0Lmxl
bmd0aCBpcyAwCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1i
ZXJGb3JtYXQsICdwcm90b3R5cGUnKS53cml0YWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LCAncHJvdG90eXBlJykuZW51
bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKElu
dGwuTnVtYmVyRm9ybWF0LCAncHJvdG90eXBlJykuY29uZmlndXJhYmxlIGlzIGZhbHNlCitQQVNT
IEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZi5sZW5ndGggaXMgMQorUEFTUyBJ
bnRsLk51bWJlckZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoKSBpcyBhbiBpbnN0YW5jZSBvZiBB
cnJheQorUEFTUyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgSW50
bC5OdW1iZXJGb3JtYXQKK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBp
cyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmdldCBpcyBhbiBp
bnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLnNldCBpcyB1bmRlZmluZWQK
K1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdC5w
cm90b3R5cGUsICdmb3JtYXQnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0
JykuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBl
LmZvcm1hdC5sZW5ndGggaXMgMQorUEFTUyBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdmb3Jt
YXQnLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LnBy
b3RvdHlwZSwgJ2Zvcm1hdCcpKS5mb3JtYXQgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogSW50
bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQuCitQQVNTIEludGwuTnVt
YmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgIT09IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0
IGlzIHRydWUKK1BBU1MgbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0ICE9PSBuZXcgSW50
bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQgaXMgdHJ1ZQorUEFTUyBJbnRsLk51bWJlckZvcm1hdC5w
cm90b3R5cGUuZm9ybWF0KHsgdmFsdWVPZigpIHsgdGhyb3cgRXJyb3IoJzUnKSB9IH0pIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogNS4KK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZv
cm1hdC5jYWxsKG51bGwsIDEuMikgaXMgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoMS4yKQor
UEFTUyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0LmNhbGwoSW50bC5EYXRlVGlt
ZUZvcm1hdCgnYXInKSwgMS4yKSBpcyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdCgxLjIpCitQ
QVNTIEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQuY2FsbCg1LCAxLjIpIGlzIElu
dGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KDEuMikKK1BBU1MgbmV3IEludGwuTnVtYmVyRm9ybWF0
KCkuZm9ybWF0LmNhbGwobnVsbCwgMS4yKSBpcyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdCgx
LjIpCitQQVNTIG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdC5jYWxsKEludGwuRGF0ZVRp
bWVGb3JtYXQoJ2FyJyksIDEuMikgaXMgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoMS4yKQor
UEFTUyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQuY2FsbCg1LCAxLjIpIGlzIEludGwu
TnVtYmVyRm9ybWF0KCkuZm9ybWF0KDEuMikKK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90
eXBlLnJlc29sdmVkT3B0aW9ucy5sZW5ndGggaXMgMAorUEFTUyBJbnRsLk51bWJlckZvcm1hdC5w
cm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgaXMgYW4gaW5zdGFuY2Ugb2YgT2JqZWN0CitQQVNT
IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSA9PT0gSW50bC5O
dW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIGlzIGZhbHNlCitQQVNTIElu
dGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMuY2FsbCg1KSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRP
cHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBh
cyBhIE51bWJlckZvcm1hdC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9pbnRsLW51bWJlcmZvcm1h
dC5odG1sIGIvTGF5b3V0VGVzdHMvanMvaW50bC1udW1iZXJmb3JtYXQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45MzhlMjBmMmYyOWFhN2E1N2IzZDg5OGFjZGFjYmU0YmE5Y2M1N2VhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvaW50bC1udW1iZXJmb3JtYXQuaHRtbApAQCAtMCwwICsxLDEw
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvaW50bC1u
dW1iZXJmb3JtYXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtY29sbGF0b3IuanMgYi9MYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvaW50bC1jb2xsYXRvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzYzYmQ2MjBjMDgz
YWU3NWJkMGI2MTdjMWNiODNmOTM5ZTJkMGY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2ludGwtY29sbGF0b3IuanMKQEAgLTAsMCArMSwxMDkgQEAKK2Rl
c2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRoZSBiZWhhdmlvciBvZiBJbnRsLkNvbGxhdG9y
IGFzIGRlc2NyaWJlZCBpbiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkg
U3BlY2lmaWNhdGlvbiAoRUNNQS00MDIgMi4wKS4iKTsKKworLy8gMTAuMSBUaGUgSW50bC5Db2xs
YXRvciBDb25zdHJ1Y3RvcgorCisvLyBUaGUgSW50bC5Db2xsYXRvciBjb25zdHJ1Y3RvciBpcyBh
IHN0YW5kYXJkIGJ1aWx0LWluIHByb3BlcnR5IG9mIHRoZSBJbnRsIG9iamVjdC4KK3Nob3VsZEJl
VHlwZSgiSW50bC5Db2xsYXRvciIsICJGdW5jdGlvbiIpOworCisvLyAxMC4xLjIgSW50bC5Db2xs
YXRvcihbIGxvY2FsZXMgWywgb3B0aW9uc11dKQorc2hvdWxkQmVUeXBlKCJJbnRsLkNvbGxhdG9y
KCkiLCAiSW50bC5Db2xsYXRvciIpOworc2hvdWxkQmVUeXBlKCJJbnRsLkNvbGxhdG9yLmNhbGwo
e30pIiwgIkludGwuQ29sbGF0b3IiKTsKK3Nob3VsZEJlVHlwZSgibmV3IEludGwuQ29sbGF0b3Io
KSIsICJJbnRsLkNvbGxhdG9yIik7CisKKy8vIFN1YmNsYXNzYWJsZQorY2xhc3MgRGVyaXZlZENv
bGxhdG9yIGV4dGVuZHMgSW50bC5Db2xsYXRvciB7fQorc2hvdWxkQmVUeXBlKCJuZXcgRGVyaXZl
ZENvbGxhdG9yIiwgIkRlcml2ZWRDb2xsYXRvciIpOworc2hvdWxkQmVUeXBlKCJuZXcgRGVyaXZl
ZENvbGxhdG9yIiwgIkludGwuQ29sbGF0b3IiKTsKK3Nob3VsZEJlKCJuZXcgRGVyaXZlZENvbGxh
dG9yKCkuY29tcGFyZSgnYScsICdiJykiLCAiLTEiKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0UHJv
dG90eXBlT2YobmV3IERlcml2ZWRDb2xsYXRvcikiLCAiRGVyaXZlZENvbGxhdG9yLnByb3RvdHlw
ZSIpOworc2hvdWxkQmUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBl
T2YobmV3IERlcml2ZWRDb2xsYXRvcikpIiwgIkludGwuQ29sbGF0b3IucHJvdG90eXBlIik7CisK
Ky8vIDEwLjIgUHJvcGVydGllcyBvZiB0aGUgSW50bC5Db2xsYXRvciBDb25zdHJ1Y3RvcgorCisv
LyBsZW5ndGggcHJvcGVydHkgKHdob3NlIHZhbHVlIGlzIDApCitzaG91bGRCZSgiSW50bC5Db2xs
YXRvci5sZW5ndGgiLCAiMCIpOworCisvLyAxMC4yLjEgSW50bC5Db2xsYXRvci5wcm90b3R5cGUK
KworLy8gVGhpcyBwcm9wZXJ0eSBoYXMgdGhlIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IGZh
bHNlLCBbW0VudW1lcmFibGVdXTogZmFsc2UsIFtbQ29uZmlndXJhYmxlXV06IGZhbHNlIH0uCitz
aG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0
b3IsICdwcm90b3R5cGUnKS53cml0YWJsZSIpOworc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLCAncHJvdG90eXBlJykuZW51bWVyYWJs
ZSIpOworc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRs
LkNvbGxhdG9yLCAncHJvdG90eXBlJykuY29uZmlndXJhYmxlIik7CisKKy8vIDEwLjIuMiBJbnRs
LkNvbGxhdG9yLnN1cHBvcnRlZExvY2FsZXNPZiAobG9jYWxlcyBbLCBvcHRpb25zIF0pCisKKy8v
IFRoZSB2YWx1ZSBvZiB0aGUgbGVuZ3RoIHByb3BlcnR5IG9mIHRoZSBzdXBwb3J0ZWRMb2NhbGVz
T2YgbWV0aG9kIGlzIDEuCitzaG91bGRCZSgiSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRMb2NhbGVz
T2YubGVuZ3RoIiwgIjEiKTsKKworLy8gUmV0dXJucyBTdXBwb3J0ZWRMb2NhbGVzCitzaG91bGRC
ZVR5cGUoIkludGwuQ29sbGF0b3Iuc3VwcG9ydGVkTG9jYWxlc09mKCkiLCAiQXJyYXkiKTsKKwor
Ly8gMTAuMyBQcm9wZXJ0aWVzIG9mIHRoZSBJbnRsLkNvbGxhdG9yIFByb3RvdHlwZSBPYmplY3QK
KworLy8gVGhlIHZhbHVlIG9mIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yIGlz
ICVDb2xsYXRvciUuCitzaG91bGRCZSgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29uc3RydWN0
b3IiLCAiSW50bC5Db2xsYXRvciIpOworCisvLyAxMC4zLjMgSW50bC5Db2xsYXRvci5wcm90b3R5
cGUuY29tcGFyZQorCisvLyBUaGlzIG5hbWVkIGFjY2Vzc29yIHByb3BlcnR5IHJldHVybnMgYSBm
dW5jdGlvbiB0aGF0IGNvbXBhcmVzIHR3byBzdHJpbmdzIGFjY29yZGluZyB0byB0aGUgc29ydCBv
cmRlciBvZiB0aGlzIENvbGxhdG9yIG9iamVjdC4KK3Nob3VsZEJlVHlwZSgiSW50bC5Db2xsYXRv
ci5wcm90b3R5cGUuY29tcGFyZSIsICJGdW5jdGlvbiIpOworCisvLyBUaGUgdmFsdWUgb2YgdGhl
IFtbR2V0XV0gYXR0cmlidXRlIGlzIGEgZnVuY3Rpb24KK3Nob3VsZEJlVHlwZSgiT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSwgJ2NvbXBhcmUn
KS5nZXQiLCAiRnVuY3Rpb24iKTsKKworLy8gVGhlIHZhbHVlIG9mIHRoZSBbW1NldF1dIGF0dHJp
YnV0ZSBpcyB1bmRlZmluZWQuCitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSwgJ2NvbXBhcmUnKS5zZXQiLCAidW5kZWZpbmVk
Iik7CisKKy8vIE1hdGNoIEZpcmVmb3ggd2hlcmUgdW5zcGVjaWZlZC4KK3Nob3VsZEJlRmFsc2Uo
Ik9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvci5wcm90b3R5cGUs
ICdjb21wYXJlJykuZW51bWVyYWJsZSIpOworc2hvdWxkQmVUcnVlKCJPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IucHJvdG90eXBlLCAnY29tcGFyZScpLmNvbmZp
Z3VyYWJsZSIpOworCisvLyBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDIu
CitzaG91bGRCZSgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZS5sZW5ndGgiLCAiMiIp
OworCisvLyBUaHJvd3Mgb24gbm9uLUNvbGxhdG9yIHRoaXMuCitzaG91bGRUaHJvdygiT2JqZWN0
LmRlZmluZVByb3BlcnR5KHt9LCAnY29tcGFyZScsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSW50bC5Db2xsYXRvci5wcm90b3R5cGUsICdjb21wYXJlJykpLmNvbXBhcmUiLCAiJ1R5
cGVFcnJvcjogSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBjYWxsZWQgb24gdmFsdWUg
dGhhdFxcJ3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIENvbGxhdG9yJyIpOworCisv
LyBUaGUgY29tcGFyZSBmdW5jdGlvbiBpcyB1bmlxdWUgcGVyIGluc3RhbmNlLgorc2hvdWxkQmVU
cnVlKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlICE9PSBJbnRsLkNvbGxhdG9yKCku
Y29tcGFyZSIpOworc2hvdWxkQmVUcnVlKCJuZXcgSW50bC5Db2xsYXRvcigpLmNvbXBhcmUgIT09
IG5ldyBJbnRsLkNvbGxhdG9yKCkuY29tcGFyZSIpOworCisvLyAxMC4zLjQgQ29sbGF0b3IgQ29t
cGFyZSBGdW5jdGlvbnMKKworLy8gMS4gTGV0IGNvbGxhdG9yIGJlIHRoZSB0aGlzIHZhbHVlLgor
Ly8gMi4gQXNzZXJ0OiBUeXBlKGNvbGxhdG9yKSBpcyBPYmplY3QgYW5kIGNvbGxhdG9yIGhhcyBh
biBbW2luaXRpYWxpemVkQ29sbGF0b3JdXSBpbnRlcm5hbCBzbG90IHdob3NlIHZhbHVlIGlzIHRy
dWUuCisvLyBUaGlzIHNob3VsZCBub3QgYmUgcmVhY2hhYmxlLCBzaW5jZSBjb21wYXJlIGlzIGJv
dW5kIHRvIGFuIGluaXRpYWxpemVkIGNvbGxhdG9yLgorCisvLyAzLiBJZiB4IGlzIG5vdCBwcm92
aWRlZCwgbGV0IHggYmUgdW5kZWZpbmVkLgorLy8gNC4gSWYgeSBpcyBub3QgcHJvdmlkZWQsIGxl
dCB5IGJlIHVuZGVmaW5lZC4KKy8vIDUuIExldCBYIGJlIFRvU3RyaW5nKHgpLgorLy8gNi4gUmV0
dXJuSWZBYnJ1cHQoWCkuCit2YXIgYmFkQ2FsbHMgPSAwOworc2hvdWxkVGhyb3coIkludGwuQ29s
bGF0b3IucHJvdG90eXBlLmNvbXBhcmUoeyB0b1N0cmluZygpIHsgdGhyb3cgRXJyb3IoJzYnKSB9
IH0sIHsgdG9TdHJpbmcoKSB7ICsrYmFkQ2FsbHM7IHJldHVybiAnJzsgfSB9KSIsICInRXJyb3I6
IDYnIik7CitzaG91bGRCZSgiYmFkQ2FsbHMiLCAiMCIpOworCisvLyA3LiBMZXQgWSBiZSBUb1N0
cmluZyh5KS4KKy8vIDguIFJldHVybklmQWJydXB0KFkpLgorc2hvdWxkVGhyb3coIkludGwuQ29s
bGF0b3IucHJvdG90eXBlLmNvbXBhcmUoJ2EnLCB7IHRvU3RyaW5nKCkgeyB0aHJvdyBFcnJvcign
OCcpIH0gfSkiLCAiJ0Vycm9yOiA4JyIpOworCisvLyBDb21wYXJlIGlzIGJvdW5kLCBzbyBjYWxs
aW5nIHdpdGggYWx0ZXJuYXRlICJ0aGlzIiBoYXMgbm8gZWZmZWN0Lgorc2hvdWxkQmUoIkludGwu
Q29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUuY2FsbChudWxsLCAnYScsICdiJykiLCAiLTEiKTsK
K3Nob3VsZEJlKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlLmNhbGwoSW50bC5Db2xs
YXRvcignZW4nLCB7IHNlbnNpdGl2aXR5OidiYXNlJyB9KSwgJ0EnLCAnYScpIiwgIi0xIik7Citz
aG91bGRCZSgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZS5jYWxsKDUsICdhJywgJ2In
KSIsICItMSIpOworc2hvdWxkQmUoIm5ldyBJbnRsLkNvbGxhdG9yKCkuY29tcGFyZS5jYWxsKG51
bGwsICdhJywgJ2InKSIsICItMSIpOworc2hvdWxkQmUoIm5ldyBJbnRsLkNvbGxhdG9yKCkuY29t
cGFyZS5jYWxsKEludGwuQ29sbGF0b3IoJ2VuJywgeyBzZW5zaXRpdml0eTonYmFzZScgfSksICdB
JywgJ2EnKSIsICItMSIpOworc2hvdWxkQmUoIm5ldyBJbnRsLkNvbGxhdG9yKCkuY29tcGFyZS5j
YWxsKDUsICdhJywgJ2InKSIsICItMSIpOworCisvLyAxMC4zLjUgSW50bC5Db2xsYXRvci5wcm90
b3R5cGUucmVzb2x2ZWRPcHRpb25zICgpCisKK3Nob3VsZEJlKCJJbnRsLkNvbGxhdG9yLnByb3Rv
dHlwZS5yZXNvbHZlZE9wdGlvbnMubGVuZ3RoIiwgIjAiKTsKKworLy8gUmV0dXJucyBhIG5ldyBv
YmplY3Qgd2hvc2UgcHJvcGVydGllcyBhbmQgYXR0cmlidXRlcyBhcmUgc2V0IGFzIGlmIGNvbnN0
cnVjdGVkIGJ5IGFuIG9iamVjdCBsaXRlcmFsLgorc2hvdWxkQmVUeXBlKCJJbnRsLkNvbGxhdG9y
LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSIsICJPYmplY3QiKTsKKworLy8gUmV0dXJucyBh
IG5ldyBvYmplY3QgZWFjaCB0aW1lLgorc2hvdWxkQmVGYWxzZSgiSW50bC5Db2xsYXRvci5wcm90
b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgPT09IEludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29s
dmVkT3B0aW9ucygpIik7CisKKy8vIFRocm93cyBvbiBub24tQ29sbGF0b3IgdGhpcy4KK3Nob3Vs
ZFRocm93KCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMuY2FsbCg1KSIs
ICInVHlwZUVycm9yOiBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2Fs
bGVkIG9uIHZhbHVlIHRoYXRcXCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xs
YXRvciciKTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwt
ZGF0ZXRpbWVmb3JtYXQuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1kYXRl
dGltZWZvcm1hdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjhhOWNkNDM1YmRjM2ZlZThlNjM5MjRkNjI2ZmE4
NTUxOWI0MzllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2ludGwtZGF0ZXRpbWVmb3JtYXQuanMKQEAgLTAsMCArMSwxMDkgQEAKK2Rlc2NyaXB0aW9uKCJU
aGlzIHRlc3QgY2hlY2tzIHRoZSBiZWhhdmlvciBvZiBJbnRsLkRhdGVUaW1lRm9ybWF0IGFzIGRl
c2NyaWJlZCBpbiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkgU3BlY2lm
aWNhdGlvbiAoRUNNQS00MDIgMi4wKS4iKTsKKworLy8gMTIuMSBUaGUgSW50bC5EYXRlVGltZUZv
cm1hdCBDb25zdHJ1Y3RvcgorCisvLyBUaGUgSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3Rv
ciBpcyBhIHN0YW5kYXJkIGJ1aWx0LWluIHByb3BlcnR5IG9mIHRoZSBJbnRsIG9iamVjdC4KK3No
b3VsZEJlVHlwZSgiSW50bC5EYXRlVGltZUZvcm1hdCIsICJGdW5jdGlvbiIpOworCisvLyAxMi4x
LjIgSW50bC5EYXRlVGltZUZvcm1hdChbIGxvY2FsZXMgWywgb3B0aW9uc11dKQorc2hvdWxkQmVU
eXBlKCJJbnRsLkRhdGVUaW1lRm9ybWF0KCkiLCAiSW50bC5EYXRlVGltZUZvcm1hdCIpOworc2hv
dWxkQmVUeXBlKCJJbnRsLkRhdGVUaW1lRm9ybWF0LmNhbGwoe30pIiwgIkludGwuRGF0ZVRpbWVG
b3JtYXQiKTsKK3Nob3VsZEJlVHlwZSgibmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKSIsICJJbnRs
LkRhdGVUaW1lRm9ybWF0Iik7CisKKy8vIFN1YmNsYXNzYWJsZQorY2xhc3MgRGVyaXZlZERhdGVU
aW1lRm9ybWF0IGV4dGVuZHMgSW50bC5EYXRlVGltZUZvcm1hdCB7fQorc2hvdWxkQmVUeXBlKCJu
ZXcgRGVyaXZlZERhdGVUaW1lRm9ybWF0IiwgIkRlcml2ZWREYXRlVGltZUZvcm1hdCIpOworc2hv
dWxkQmVUeXBlKCJuZXcgRGVyaXZlZERhdGVUaW1lRm9ybWF0IiwgIkludGwuRGF0ZVRpbWVGb3Jt
YXQiKTsKK3Nob3VsZEJlVHJ1ZSgibmV3IERlcml2ZWREYXRlVGltZUZvcm1hdCgpLmZvcm1hdCgw
KS5sZW5ndGggPiAwIik7CitzaG91bGRCZSgiT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBEZXJp
dmVkRGF0ZVRpbWVGb3JtYXQpIiwgIkRlcml2ZWREYXRlVGltZUZvcm1hdC5wcm90b3R5cGUiKTsK
K3Nob3VsZEJlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2YoT2JqZWN0LmdldFByb3RvdHlwZU9mKG5l
dyBEZXJpdmVkRGF0ZVRpbWVGb3JtYXQpKSIsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlw
ZSIpOworCisvLyAxMi4yIFByb3BlcnRpZXMgb2YgdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgQ29u
c3RydWN0b3IKKworLy8gbGVuZ3RoIHByb3BlcnR5ICh3aG9zZSB2YWx1ZSBpcyAwKQorc2hvdWxk
QmUoIkludGwuRGF0ZVRpbWVGb3JtYXQubGVuZ3RoIiwgIjAiKTsKKworLy8gMTIuMi4xIEludGwu
RGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlCisKKy8vIFRoaXMgcHJvcGVydHkgaGFzIHRoZSBhdHRy
aWJ1dGVzIHsgW1tXcml0YWJsZV1dOiBmYWxzZSwgW1tFbnVtZXJhYmxlXV06IGZhbHNlLCBbW0Nv
bmZpZ3VyYWJsZV1dOiBmYWxzZSB9Lgorc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LCAncHJvdG90eXBlJykud3JpdGFibGUi
KTsKK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5E
YXRlVGltZUZvcm1hdCwgJ3Byb3RvdHlwZScpLmVudW1lcmFibGUiKTsKK3Nob3VsZEJlRmFsc2Uo
Ik9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdCwgJ3By
b3RvdHlwZScpLmNvbmZpZ3VyYWJsZSIpOworCisvLyAxMi4yLjIgSW50bC5EYXRlVGltZUZvcm1h
dC5zdXBwb3J0ZWRMb2NhbGVzT2YgKGxvY2FsZXMgWywgb3B0aW9ucyBdKQorCisvLyBUaGUgdmFs
dWUgb2YgdGhlIGxlbmd0aCBwcm9wZXJ0eSBvZiB0aGUgc3VwcG9ydGVkTG9jYWxlc09mIG1ldGhv
ZCBpcyAxLgorc2hvdWxkQmUoIkludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09m
Lmxlbmd0aCIsICIxIik7CisKKy8vIFJldHVybnMgU3VwcG9ydGVkTG9jYWxlcworc2hvdWxkQmVU
eXBlKCJJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZigpIiwgIkFycmF5Iik7
CisKKy8vIDEyLjMgUHJvcGVydGllcyBvZiB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCBQcm90b3R5
cGUgT2JqZWN0CisKKy8vIFRoZSB2YWx1ZSBvZiBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciBpcyAlRGF0ZVRpbWVGb3JtYXQlLgorc2hvdWxkQmUoIkludGwuRGF0ZVRp
bWVGb3JtYXQucHJvdG90eXBlLmNvbnN0cnVjdG9yIiwgIkludGwuRGF0ZVRpbWVGb3JtYXQiKTsK
KworLy8gMTIuMy4zIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdAorCisvLyBU
aGlzIG5hbWVkIGFjY2Vzc29yIHByb3BlcnR5IHJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGZvcm1h
dHMgYSBkYXRlIGFjY29yZGluZyB0byB0aGUgZWZmZWN0aXZlIGxvY2FsZSBhbmQgdGhlIGZvcm1h
dHRpbmcgb3B0aW9ucyBvZiB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdC4KK3Nob3VsZEJlVHlw
ZSgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IiwgIkZ1bmN0aW9uIik7CisK
Ky8vIFRoZSB2YWx1ZSBvZiB0aGUgW1tHZXRdXSBhdHRyaWJ1dGUgaXMgYSBmdW5jdGlvbgorc2hv
dWxkQmVUeXBlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVG
b3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykuZ2V0IiwgIkZ1bmN0aW9uIik7CisKKy8vIFRoZSB2
YWx1ZSBvZiB0aGUgW1tTZXRdXSBhdHRyaWJ1dGUgaXMgdW5kZWZpbmVkLgorc2hvdWxkQmUoIk9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5
cGUsICdmb3JtYXQnKS5zZXQiLCAidW5kZWZpbmVkIik7CisKKy8vIE1hdGNoIEZpcmVmb3ggd2hl
cmUgdW5zcGVjaWZlZC4KK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5lbnVtZXJhYmxl
Iik7CitzaG91bGRCZVRydWUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5E
YXRlVGltZUZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5jb25maWd1cmFibGUiKTsKKworLy8g
VGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAxLgorc2hvdWxkQmUoIkludGwu
RGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5sZW5ndGgiLCAiMSIpOworCisvLyBUaHJv
d3Mgb24gbm9uLURhdGVUaW1lRm9ybWF0IHRoaXMuCitzaG91bGRUaHJvdygiT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHt9LCAnZm9ybWF0JywgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJ
bnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpKS5mb3JtYXQiLCAiJ1R5cGVF
cnJvcjogSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1
ZSB0aGF0XFwncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQn
Iik7CisKKy8vIFRoZSBmb3JtYXQgZnVuY3Rpb24gaXMgdW5pcXVlIHBlciBpbnN0YW5jZS4KK3No
b3VsZEJlVHJ1ZSgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0ICE9PSBJbnRs
LkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0Iik7CitzaG91bGRCZVRydWUoIm5ldyBJbnRsLkRhdGVU
aW1lRm9ybWF0KCkuZm9ybWF0ICE9PSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdCIp
OworCisvLyAxMi4zLjQgRGF0ZVRpbWUgRm9ybWF0IEZ1bmN0aW9ucworCisvLyAxLiBMZXQgZHRm
IGJlIHRoZSB0aGlzIHZhbHVlLgorLy8gMi4gQXNzZXJ0OiBUeXBlKGR0ZikgaXMgT2JqZWN0IGFu
ZCBkdGYgaGFzIGFuIFtbaW5pdGlhbGl6ZWREYXRlVGltZUZvcm1hdF1dIGludGVybmFsIHNsb3Qg
d2hvc2UgdmFsdWUgaXMgdHJ1ZS4KKy8vIFRoaXMgc2hvdWxkIG5vdCBiZSByZWFjaGFibGUsIHNp
bmNlIGZvcm1hdCBpcyBib3VuZCB0byBhbiBpbml0aWFsaXplZCBkYXRldGltZWZvcm1hdC4KKwor
Ly8gMy4gSWYgZGF0ZSBpcyBub3QgcHJvdmlkZWQgb3IgaXMgdW5kZWZpbmVkLCB0aGVuCisvLyBh
LiBMZXQgeCBiZSAlRGF0ZV9ub3clKCkuCisvLyA0LiBFbHNlCisvLyBhLiBMZXQgeCBiZSBUb051
bWJlcihkYXRlKS4KKy8vIGIuIFJldHVybklmQWJydXB0KHgpLgorc2hvdWxkVGhyb3coIkludGwu
RGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCh7IHZhbHVlT2YoKSB7IHRocm93IEVycm9y
KCc0YicpIH0gfSkiLCAiJ0Vycm9yOiA0YiciKTsKKworLy8gMTIuMy40IEZvcm1hdERhdGVUaW1l
IGFic3RyYWN0IG9wZXJhdGlvbgorCisvLyAxLiBJZiB4IGlzIG5vdCBhIGZpbml0ZSBOdW1iZXIs
IHRoZW4gdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KK3Nob3VsZFRocm93KCJJbnRsLkRh
dGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQoSW5maW5pdHkpIiwgIidSYW5nZUVycm9yOiBk
YXRlIHZhbHVlIGlzIG5vdCBmaW5pdGUgaW4gRGF0ZVRpbWVGb3JtYXQuZm9ybWF0KCknIik7CisK
Ky8vIEZvcm1hdCBpcyBib3VuZCwgc28gY2FsbGluZyB3aXRoIGFsdGVybmF0ZSAidGhpcyIgaGFz
IG5vIGVmZmVjdC4KK3Nob3VsZEJlKCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3Jt
YXQuY2FsbChudWxsLCAwKSIsICJJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0KDApIik7Citz
aG91bGRCZSgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0LmNhbGwoSW50bC5E
YXRlVGltZUZvcm1hdCgnYXInKSwgMCkiLCAiSW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdCgw
KSIpOworc2hvdWxkQmUoIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5jYWxs
KDUsIDApIiwgIkludGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQoMCkiKTsKK3Nob3VsZEJlKCJu
ZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdC5jYWxsKG51bGwsIDApIiwgIkludGwuRGF0
ZVRpbWVGb3JtYXQoKS5mb3JtYXQoMCkiKTsKK3Nob3VsZEJlKCJuZXcgSW50bC5EYXRlVGltZUZv
cm1hdCgpLmZvcm1hdC5jYWxsKEludGwuRGF0ZVRpbWVGb3JtYXQoJ2FyJyksIDApIiwgIkludGwu
RGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQoMCkiKTsKK3Nob3VsZEJlKCJuZXcgSW50bC5EYXRlVGlt
ZUZvcm1hdCgpLmZvcm1hdC5jYWxsKDUsIDApIiwgIkludGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3Jt
YXQoMCkiKTsKKworLy8gMTIuMy41IEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29s
dmVkT3B0aW9ucyAoKQorCitzaG91bGRCZSgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUu
cmVzb2x2ZWRPcHRpb25zLmxlbmd0aCIsICIwIik7CisKKy8vIFJldHVybnMgYSBuZXcgb2JqZWN0
IHdob3NlIHByb3BlcnRpZXMgYW5kIGF0dHJpYnV0ZXMgYXJlIHNldCBhcyBpZiBjb25zdHJ1Y3Rl
ZCBieSBhbiBvYmplY3QgbGl0ZXJhbC4KK3Nob3VsZEJlVHlwZSgiSW50bC5EYXRlVGltZUZvcm1h
dC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkiLCAiT2JqZWN0Iik7CisKKy8vIFJldHVybnMg
YSBuZXcgb2JqZWN0IGVhY2ggdGltZS4KK3Nob3VsZEJlRmFsc2UoIkludGwuRGF0ZVRpbWVGb3Jt
YXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpID09PSBJbnRsLkRhdGVUaW1lRm9ybWF0LnBy
b3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSIpOworCisvLyBUaHJvd3Mgb24gbm9uLURhdGVUaW1l
Rm9ybWF0IHRoaXMuCitzaG91bGRUaHJvdygiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUu
cmVzb2x2ZWRPcHRpb25zLmNhbGwoNSkiLCAiJ1R5cGVFcnJvcjogSW50bC5EYXRlVGltZUZvcm1h
dC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0XFwncyBub3Qg
YW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQnIik7CisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLW51bWJlcmZvcm1hdC5qcyBiL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLW51bWJlcmZvcm1hdC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mNTczYjkyMDU0MTEzMDlkM2NkNGIwN2I5ZTA4Y2UxMWI2M2NhOWE4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtbnVtYmVyZm9ybWF0LmpzCkBA
IC0wLDAgKzEsMTAyIEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNoZWNrcyB0aGUgYmVoYXZp
b3Igb2YgSW50bC5OdW1iZXJGb3JtYXQgYXMgZGVzY3JpYmVkIGluIHRoZSBFQ01BU2NyaXB0IElu
dGVybmF0aW9uYWxpemF0aW9uIEFQSSBTcGVjaWZpY2F0aW9uIChFQ01BLTQwMiAyLjApLiIpOwor
CisvLyAxMS4xIFRoZSBJbnRsLk51bWJlckZvcm1hdCBDb25zdHJ1Y3RvcgorCisvLyBUaGUgSW50
bC5OdW1iZXJGb3JtYXQgY29uc3RydWN0b3IgaXMgYSBzdGFuZGFyZCBidWlsdC1pbiBwcm9wZXJ0
eSBvZiB0aGUgSW50bCBvYmplY3QuCitzaG91bGRCZVR5cGUoIkludGwuTnVtYmVyRm9ybWF0Iiwg
IkZ1bmN0aW9uIik7CisKKy8vIDExLjEuMiBJbnRsLk51bWJlckZvcm1hdChbIGxvY2FsZXMgWywg
b3B0aW9uc11dKQorc2hvdWxkQmVUeXBlKCJJbnRsLk51bWJlckZvcm1hdCgpIiwgIkludGwuTnVt
YmVyRm9ybWF0Iik7CitzaG91bGRCZVR5cGUoIkludGwuTnVtYmVyRm9ybWF0LmNhbGwoe30pIiwg
IkludGwuTnVtYmVyRm9ybWF0Iik7CitzaG91bGRCZVR5cGUoIm5ldyBJbnRsLk51bWJlckZvcm1h
dCgpIiwgIkludGwuTnVtYmVyRm9ybWF0Iik7CisKKy8vIFN1YmNsYXNzYWJsZQorY2xhc3MgRGVy
aXZlZE51bWJlckZvcm1hdCBleHRlbmRzIEludGwuTnVtYmVyRm9ybWF0IHt9CitzaG91bGRCZVR5
cGUoIm5ldyBEZXJpdmVkTnVtYmVyRm9ybWF0IiwgIkRlcml2ZWROdW1iZXJGb3JtYXQiKTsKK3No
b3VsZEJlVHlwZSgibmV3IERlcml2ZWROdW1iZXJGb3JtYXQiLCAiSW50bC5OdW1iZXJGb3JtYXQi
KTsKK3Nob3VsZEJlKCJuZXcgRGVyaXZlZE51bWJlckZvcm1hdCgpLmZvcm1hdCgxKSIsICInMSci
KTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERlcml2ZWROdW1iZXJGb3Jt
YXQpIiwgIkRlcml2ZWROdW1iZXJGb3JtYXQucHJvdG90eXBlIik7CitzaG91bGRCZSgiT2JqZWN0
LmdldFByb3RvdHlwZU9mKE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgRGVyaXZlZE51bWJlckZv
cm1hdCkpIiwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSIpOworCisvLyAxMS4yIFByb3Bl
cnRpZXMgb2YgdGhlIEludGwuTnVtYmVyRm9ybWF0IENvbnN0cnVjdG9yCisKKy8vIGxlbmd0aCBw
cm9wZXJ0eSAod2hvc2UgdmFsdWUgaXMgMCkKK3Nob3VsZEJlKCJJbnRsLk51bWJlckZvcm1hdC5s
ZW5ndGgiLCAiMCIpOworCisvLyAxMS4yLjEgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlCisK
Ky8vIFRoaXMgcHJvcGVydHkgaGFzIHRoZSBhdHRyaWJ1dGVzIHsgW1tXcml0YWJsZV1dOiBmYWxz
ZSwgW1tFbnVtZXJhYmxlXV06IGZhbHNlLCBbW0NvbmZpZ3VyYWJsZV1dOiBmYWxzZSB9Lgorc2hv
dWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZv
cm1hdCwgJ3Byb3RvdHlwZScpLndyaXRhYmxlIik7CitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LCAncHJvdG90eXBlJykuZW51
bWVyYWJsZSIpOworc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihJbnRsLk51bWJlckZvcm1hdCwgJ3Byb3RvdHlwZScpLmNvbmZpZ3VyYWJsZSIpOworCisvLyAx
MS4yLjIgSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mIChsb2NhbGVzIFssIG9w
dGlvbnMgXSkKKworLy8gVGhlIHZhbHVlIG9mIHRoZSBsZW5ndGggcHJvcGVydHkgb2YgdGhlIHN1
cHBvcnRlZExvY2FsZXNPZiBtZXRob2QgaXMgMS4KK3Nob3VsZEJlKCJJbnRsLk51bWJlckZvcm1h
dC5zdXBwb3J0ZWRMb2NhbGVzT2YubGVuZ3RoIiwgIjEiKTsKKworLy8gUmV0dXJucyBTdXBwb3J0
ZWRMb2NhbGVzCitzaG91bGRCZVR5cGUoIkludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2Fs
ZXNPZigpIiwgIkFycmF5Iik7CisKKy8vIDExLjMgUHJvcGVydGllcyBvZiB0aGUgSW50bC5OdW1i
ZXJGb3JtYXQgUHJvdG90eXBlIE9iamVjdAorCisvLyBUaGUgdmFsdWUgb2YgSW50bC5OdW1iZXJG
b3JtYXQucHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzICVOdW1iZXJGb3JtYXQlLgorc2hvdWxkQmUo
IkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciIsICJJbnRsLk51bWJlckZv
cm1hdCIpOworCisvLyAxMS4zLjMgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdAor
CisvLyBUaGlzIG5hbWVkIGFjY2Vzc29yIHByb3BlcnR5IHJldHVybnMgYSBmdW5jdGlvbiB0aGF0
IGZvcm1hdHMgYSBudW1iZXIgYWNjb3JkaW5nIHRvIHRoZSBlZmZlY3RpdmUgbG9jYWxlIGFuZCB0
aGUgZm9ybWF0dGluZyBvcHRpb25zIG9mIHRoaXMgTnVtYmVyRm9ybWF0IG9iamVjdC4KK3Nob3Vs
ZEJlVHlwZSgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCIsICJGdW5jdGlvbiIp
OworCisvLyBUaGUgdmFsdWUgb2YgdGhlIFtbR2V0XV0gYXR0cmlidXRlIGlzIGEgZnVuY3Rpb24K
K3Nob3VsZEJlVHlwZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJl
ckZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5nZXQiLCAiRnVuY3Rpb24iKTsKKworLy8gVGhl
IHZhbHVlIG9mIHRoZSBbW1NldF1dIGF0dHJpYnV0ZSBpcyB1bmRlZmluZWQuCitzaG91bGRCZSgi
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5
cGUsICdmb3JtYXQnKS5zZXQiLCAidW5kZWZpbmVkIik7CisKKy8vIE1hdGNoIEZpcmVmb3ggd2hl
cmUgdW5zcGVjaWZlZC4KK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykuZW51bWVyYWJsZSIp
Oworc2hvdWxkQmVUcnVlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVt
YmVyRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmNvbmZpZ3VyYWJsZSIpOworCisvLyBUaGUg
dmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuCitzaG91bGRCZSgiSW50bC5OdW1i
ZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5sZW5ndGgiLCAiMSIpOworCisvLyBUaHJvd3Mgb24g
bm9uLU51bWJlckZvcm1hdCB0aGlzLgorc2hvdWxkVGhyb3coIk9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh7fSwgJ2Zvcm1hdCcsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1i
ZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykpLmZvcm1hdCIsICInVHlwZUVycm9yOiBJbnRs
Lk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0XFwncyBu
b3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0JyIpOworCisvLyBUaGUg
Zm9ybWF0IGZ1bmN0aW9uIGlzIHVuaXF1ZSBwZXIgaW5zdGFuY2UuCitzaG91bGRCZVRydWUoIklu
dGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgIT09IEludGwuTnVtYmVyRm9ybWF0KCku
Zm9ybWF0Iik7CitzaG91bGRCZVRydWUoIm5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdCAh
PT0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0Iik7CisKKy8vIDExLjMuNCBGb3JtYXQg
TnVtYmVyIEZ1bmN0aW9ucworCisvLyAxLiBMZXQgbmYgYmUgdGhlIHRoaXMgdmFsdWUuCisvLyAy
LiBBc3NlcnQ6IFR5cGUobmYpIGlzIE9iamVjdCBhbmQgbmYgaGFzIGFuIFtbaW5pdGlhbGl6ZWRO
dW1iZXJGb3JtYXRdXSBpbnRlcm5hbCBzbG90IHdob3NlIHZhbHVlIGlzIHRydWUuCisvLyBUaGlz
IHNob3VsZCBub3QgYmUgcmVhY2hhYmxlLCBzaW5jZSBmb3JtYXQgaXMgYm91bmQgdG8gYW4gaW5p
dGlhbGl6ZWQgbnVtYmVyZm9ybWF0LgorCisvLyAzLiBJZiB2YWx1ZSBpcyBub3QgcHJvdmlkZWQs
IGxldCB2YWx1ZSBiZSB1bmRlZmluZWQuCisvLyA0LiBMZXQgeCBiZSBUb051bWJlcih2YWx1ZSku
CisvLyA1LiBSZXR1cm5JZkFicnVwdCh4KS4KK3Nob3VsZFRocm93KCJJbnRsLk51bWJlckZvcm1h
dC5wcm90b3R5cGUuZm9ybWF0KHsgdmFsdWVPZigpIHsgdGhyb3cgRXJyb3IoJzUnKSB9IH0pIiwg
IidFcnJvcjogNSciKTsKKworLy8gRm9ybWF0IGlzIGJvdW5kLCBzbyBjYWxsaW5nIHdpdGggYWx0
ZXJuYXRlICJ0aGlzIiBoYXMgbm8gZWZmZWN0Lgorc2hvdWxkQmUoIkludGwuTnVtYmVyRm9ybWF0
LnByb3RvdHlwZS5mb3JtYXQuY2FsbChudWxsLCAxLjIpIiwgIkludGwuTnVtYmVyRm9ybWF0KCku
Zm9ybWF0KDEuMikiKTsKK3Nob3VsZEJlKCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9y
bWF0LmNhbGwoSW50bC5EYXRlVGltZUZvcm1hdCgnYXInKSwgMS4yKSIsICJJbnRsLk51bWJlckZv
cm1hdCgpLmZvcm1hdCgxLjIpIik7CitzaG91bGRCZSgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90
eXBlLmZvcm1hdC5jYWxsKDUsIDEuMikiLCAiSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoMS4y
KSIpOworc2hvdWxkQmUoIm5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdC5jYWxsKG51bGws
IDEuMikiLCAiSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoMS4yKSIpOworc2hvdWxkQmUoIm5l
dyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdC5jYWxsKEludGwuRGF0ZVRpbWVGb3JtYXQoJ2Fy
JyksIDEuMikiLCAiSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoMS4yKSIpOworc2hvdWxkQmUo
Im5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdC5jYWxsKDUsIDEuMikiLCAiSW50bC5OdW1i
ZXJGb3JtYXQoKS5mb3JtYXQoMS4yKSIpOworCisvLyAxMS4zLjUgSW50bC5OdW1iZXJGb3JtYXQu
cHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyAoKQorCitzaG91bGRCZSgiSW50bC5OdW1iZXJGb3Jt
YXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5sZW5ndGgiLCAiMCIpOworCisvLyBSZXR1cm5z
IGEgbmV3IG9iamVjdCB3aG9zZSBwcm9wZXJ0aWVzIGFuZCBhdHRyaWJ1dGVzIGFyZSBzZXQgYXMg
aWYgY29uc3RydWN0ZWQgYnkgYW4gb2JqZWN0IGxpdGVyYWwuCitzaG91bGRCZVR5cGUoIkludGwu
TnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSIsICJPYmplY3QiKTsKKwor
Ly8gUmV0dXJucyBhIG5ldyBvYmplY3QgZWFjaCB0aW1lLgorc2hvdWxkQmVGYWxzZSgiSW50bC5O
dW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpID09PSBJbnRsLk51bWJlckZv
cm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkiKTsKKworLy8gVGhyb3dzIG9uIG5vbi1O
dW1iZXJGb3JtYXQgdGhpcy4KK3Nob3VsZFRocm93KCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5
cGUucmVzb2x2ZWRPcHRpb25zLmNhbGwoNSkiLCAiJ1R5cGVFcnJvcjogSW50bC5OdW1iZXJGb3Jt
YXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdFxcJ3Mgbm90
IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCciKTsKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwuanMgYi9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvaW50bC5qcwppbmRleCA4YTRjZjU4NGUyZjA5Y2VjODdkNTVmOTMyMjY0NDNl
ZDcxODMyZTM5Li4wOTY4Mjg3Mjg4NjBiMGNjODk4Mjc5N2M5YzRkZjk3MzgyZDg4ODU1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC5qcworKysgYi9MYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC5qcwpAQCAtMSwyMyArMSwyNiBAQAotLy8gVGhpcyBm
ZWF0dXJlIGlzbid0IGVuYWJsZWQgeWV0LgotLy9AIHNraXAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRl
c3QgY2hlY2tzIHRoZSBiZWhhdmlvciBvZiB0aGUgSW50bCBvYmplY3QgYXMgZGVzY3JpYmVkIGlu
IHRoZSBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSSBTcGVjaWZpY2F0aW9uIChF
Q01BLTQwMiAyLjApLiIpOwogCi1kZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNoZWNrcyB0aGUgYmVo
YXZpb3Igb2YgdGhlIEludGwgb2JqZWN0IGFzIGRlc2NyaWJlZCBpbiA4IG9mIHRoZSBFQ01BU2Ny
aXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSSBTcGVjaWZpY2F0aW9uLiIpOworLy8gOCBUaGUg
SW50bCBPYmplY3QKIAotLy8gVGhlIEludGwgb2JqZWN0IGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4g
b2JqZWN0IHRoYXQgaXMgdGhlIGluaXRpYWwgdmFsdWUgb2YgdGhlIEludGwgcHJvcGVydHkgb2Yg
dGhlIGdsb2JhbCBvYmplY3QuCisvLyBUaGUgSW50bCBvYmplY3QgaXMgYSBzaW5nbGUgb3JkaW5h
cnkgb2JqZWN0Lgogc2hvdWxkQmVUeXBlKCJJbnRsIiwgIk9iamVjdCIpOwogc2hvdWxkQmUoInR5
cGVvZiBJbnRsIiwgIidvYmplY3QnIik7CiBzaG91bGRCZSgiT2JqZWN0LnByb3RvdHlwZS50b1N0
cmluZy5jYWxsKEludGwpIiwgIidbb2JqZWN0IE9iamVjdF0nIik7CiAKLS8vIFRoZSB2YWx1ZSBv
ZiB0aGUgW1tQcm90b3R5cGVdXSBpbnRlcm5hbCBwcm9wZXJ0eSBvZiB0aGUgSW50bCBvYmplY3Qg
aXMgdGhlIGJ1aWx0LWluIE9iamVjdCBwcm90b3R5cGUgb2JqZWN0IHNwZWNpZmllZCBieSB0aGUg
RUNNQVNjcmlwdCBMYW5ndWFnZSBTcGVjaWZpY2F0aW9uLgorLy8gVGhlIHZhbHVlIG9mIHRoZSBb
W1Byb3RvdHlwZV1dIGludGVybmFsIHNsb3Qgb2YgdGhlIEludGwgb2JqZWN0IGlzIHRoZSBpbnRy
aW5zaWMgb2JqZWN0ICVPYmplY3RQcm90b3R5cGUlLgogc2hvdWxkQmVUcnVlKCJPYmplY3QuZ2V0
UHJvdG90eXBlT2YoSW50bCkgPT09IE9iamVjdC5wcm90b3R5cGUiKTsKIAotLy8gVGhlIEludGwg
b2JqZWN0IGRvZXMgbm90IGhhdmUgYSBbW0NvbnN0cnVjdF1dIGludGVybmFsIHByb3BlcnR5OyBp
dCBpcyBub3QgcG9zc2libGUgdG8gdXNlIHRoZSBJbnRsIG9iamVjdCBhcyBhIGNvbnN0cnVjdG9y
IHdpdGggdGhlIG5ldyBvcGVyYXRvci4KKy8vIFRoZSBJbnRsIG9iamVjdCBpcyBub3QgYSBmdW5j
dGlvbiBvYmplY3QuCisvLyBJdCBkb2VzIG5vdCBoYXZlIGEgW1tDb25zdHJ1Y3RdXSBpbnRlcm5h
bCBtZXRob2Q7IGl0IGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgdGhlIEludGwgb2JqZWN0IGFzIGEg
Y29uc3RydWN0b3Igd2l0aCB0aGUgbmV3IG9wZXJhdG9yLgogc2hvdWxkVGhyb3coIm5ldyBJbnRs
IiwgIidUeXBlRXJyb3I6IE9iamVjdCBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyBc
XCduZXcgSW50bFxcJyknIik7CiAKLS8vIFRoZSBJbnRsIG9iamVjdCBkb2VzIG5vdCBoYXZlIGEg
W1tDYWxsXV0gaW50ZXJuYWwgcHJvcGVydHk7IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBpbnZva2Ug
dGhlIEludGwgb2JqZWN0IGFzIGEgZnVuY3Rpb24uCisvLyBUaGUgSW50bCBvYmplY3QgZG9lcyBu
b3QgaGF2ZSBhIFtbQ2FsbF1dIGludGVybmFsIG1ldGhvZDsgaXQgaXMgbm90IHBvc3NpYmxlIHRv
IGludm9rZSB0aGUgSW50bCBvYmplY3QgYXMgYSBmdW5jdGlvbi4KIHNob3VsZFRocm93KCJJbnRs
KCkiLCAiJ1R5cGVFcnJvcjogSW50bCBpcyBub3QgYSBmdW5jdGlvbi4gKEluIFxcJ0ludGwoKVxc
JywgXFwnSW50bFxcJyBpcyBhbiBpbnN0YW5jZSBvZiBPYmplY3QpJyIpOwogCi0vLyBpcyBkZWxl
dGFibGUsIGluZmVycmVkIGZyb20gdXNlIG9mICJJbml0aWFsIiBpbiBzcGVjLCBjb25zaXN0ZW50
IHdpdGggb3RoZXIgaW1wbGVtZW50YXRpb25zCisvLyBIYXMgb25seSB0aGUgYnVpbHQtaW4gQ29s
bGF0b3IsIERhdGVUaW1lRm9ybWF0LCBhbmQgTnVtYmVyRm9ybWF0LCB3aGljaCBhcmUgbm90IGVu
dW1lcmFibGUuCitzaG91bGRCZSgiT2JqZWN0LmtleXMoSW50bCkubGVuZ3RoIiwgIjAiKTsKKwor
Ly8gSXMgZGVsZXRhYmxlLCBpbmZlcnJlZCBmcm9tIHVzZSBvZiAiSW5pdGlhbCIgaW4gc3BlYywg
Y29uc2lzdGVudCB3aXRoIG90aGVyIGltcGxlbWVudGF0aW9ucy4KIHZhciBfX0ludGwgPSBJbnRs
Owogc2hvdWxkQmVUcnVlKCJkZWxldGUgSW50bDsiKTsKIApAQCAtMjUsMyArMjgsNCBAQCBmdW5j
dGlvbiBnbG9iYWwoKSB7IHJldHVybiB0aGlzOyB9CiBzaG91bGRCZUZhbHNlKCInSW50bCcgaW4g
Z2xvYmFsKCkiKTsKIAogSW50bCA9IF9fSW50bDsKKwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIv
Q2hhbmdlTG9nCmluZGV4IGYwZDgxMjdhZjEwODlmNTYwMDdmODZmMmYwMDM2NmJiMGUxMWYyMDEu
Ljk5ZTg0YzU5YmQ3MTI3ZjNkNDk4ZWM5YTE2YzYyODMyNmY1NDY2ZWQgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0wNy0yOCAgQW5k
eSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBiYXNpYyB0eXBlcyBmb3IgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjkyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBm
bGFnIG5vdyB0aGF0IHRoZSBiYXNpYyBvYmplY3RzIGFyZSBpbiBwbGFjZS4KKworICAgICAgICAq
IFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZTogZW5hYmxlIElOVEwKKwogMjAxNS0w
Ny0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBb
RVM2XSBBZGQgRU5BQkxFX0VTNl9NT0RVTEVTIGNvbXBpbGUgdGltZSBmbGFnIHdpdGggdGhlIGRl
ZmF1bHQgdmFsdWUgImZhbHNlIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257794</attachid>
            <date>2015-07-29 18:00:21 -0700</date>
            <delta_ts>2015-07-29 18:43:46 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-146926-20150729175858.patch</filename>
            <type>text/plain</type>
            <size>181176</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3NTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
N2EyZWM3YjI1ODBjNWQ3NTI4NzgzYzE5MTc1OWI0ZjMyZWFlYjQ2Li5lZmJiZDMyZmM1ZWRhZTI3
M2NlODg3YTZjMTZjZTgwYTc1ZDIyNzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDQgQEAKKzIwMTUtMDctMjkgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVy
QGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3Jp
cHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1p
biBQb3VsYWluLgorCisgICAgICAgIEFkZHMgYmFzaWMgdHlwZXMgZm9yIEVDTUEtNDAyIDJuZCBl
ZGl0aW9uLCBidXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBmdWxsIGxvY2FsZS1hd2FyZSBmZWF0
dXJlcyB5ZXQuCisgICAgICAgIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21h
LTQwMi8yLjAvRUNNQS00MDIucGRmCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkZWQg
bmV3IEludGwgZmlsZXMuCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWc6IEVuYWJsZSBJTlRMLgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6IEFk
ZGVkIEludGwgZmlsZXMuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogQWRkZWQgSW50bCBmaWxlcy4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6IEFkZGVkIEludGwgZmlsZXMuCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6
IEFkZGVkIEludGwgZmlsZXMuCisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
OiBBZGRlZCBDb2xsYXRvciwgTnVtYmVyRm9ybWF0LCBhbmQgRGF0ZVRpbWVGb3JtYXQuCisgICAg
ICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwOiBNYWRlIERhdGUubm93IHB1YmxpYy4K
KyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oOiBNYWRlIERhdGUubm93IHB1Ymxp
Yy4KKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xsYXRvci5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpJbnRsQ29sbGF0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpJbnRsQ29sbGF0
b3IpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6SW50bENvbGxhdG9yOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SW50bENvbGxh
dG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpzZXRCb3Vu
ZENvbXBhcmUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JGdW5jQ29tcGFyZSk6IEFkZGVk
IHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHVzaW5nIGNvZGVQb2ludENvbXBhcmUuCisgICAg
ICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxD
b2xsYXRvcjo6Y29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmJvdW5k
Q29tcGFyZSk6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHA6
IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpJbnRsQ29sbGF0b3JDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxDb2xsYXRvcik6IEFkZGVkIENv
bGxhdG9yIGNvbnN0cnVjdG9yICgxMC4xLjIpLgorICAgICAgICAoSlNDOjpjYWxsSW50bENvbGxh
dG9yKTogQWRkZWQgQ29sbGF0b3IgY29uc3RydWN0b3IgKDEwLjEuMikuCisgICAgICAgIChKU0M6
OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpT
Qzo6SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6
SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChK
U0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6IEFkZGVk
IHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyBbXS4KKyAgICAgICAgKEpTQzo6
SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxD
b2xsYXRvckNvbnN0cnVjdG9yOjpjb2xsYXRvclN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGlt
ZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bENv
bGxhdG9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvclByb3Rv
dHlwZTo6SW50bENvbGxhdG9yUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9y
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvclBy
b3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9y
UHJvdG90eXBlR2V0dGVyQ29tcGFyZSk6IEFkZGVkIGNvbXBhcmUgZ2V0dGVyICgxMC4zLjMpCisg
ICAgICAgIChKU0M6OkludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOiBB
ZGRlZCBwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcge30uCisgICAgICAgICog
cnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgICogcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bERhdGVU
aW1lRm9ybWF0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6SW50bERh
dGVUaW1lRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0OjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6ZGVzdHJveSk6Cisg
ICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
IChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6c2V0Qm91bmRGb3JtYXQpOgorICAgICAgICAoSlND
OjpJbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUpOiBBZGRlZCBwbGFjZWhvbGRl
ciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcgbmV3IERhdGUodmFsdWUpLnRvU3RyaW5nKCkuCisg
ICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OkludGxEYXRlVGltZUZvcm1hdDo6Y29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpJbnRs
RGF0ZVRpbWVGb3JtYXQ6OmJvdW5kRm9ybWF0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0KTogQWRk
ZWQgRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgKDEyLjEuMikuCisgICAgICAgIChKU0M6OmNh
bGxJbnRsRGF0ZVRpbWVGb3JtYXQpOiBBZGRlZCBEYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciAo
MTIuMS4yKS4KKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6Omdl
dENvbnN0cnVjdERhdGEpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKTogQWRkZWQgcGxhY2Vob2xk
ZXIgaW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIFtdLgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKToKKyAg
ICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQpOiBBZGRlZCBmb3JtYXQgZ2V0dGVyICgxMi4zLjMp
LgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRP
cHRpb25zKTogQWRkZWQgcGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIHt9Lgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmg6IEFkZGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVy
Rm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0
OjpJbnRsTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpkZXN0cm95KToK
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
IChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnNldEJvdW5kRm9ybWF0KToKKyAgICAgICAgKEpTQzo6
SW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXROdW1iZXIpOiBBZGRlZCBwbGFjZWhvbGRlciBpbXBs
ZW1lbnRhdGlvbiByZXR1cm5pbmcgTnVtYmVyKHZhbHVlKS50b1N0cmluZygpLgorICAgICAgICAq
IHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bE51
bWJlckZvcm1hdDo6Y29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0
Ojpib3VuZEZvcm1hdCk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvcjo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNv
bnN0cnVjdEludGxOdW1iZXJGb3JtYXQpOiBBZGRlZCBOdW1iZXJGb3JtYXQgY29uc3RydWN0b3Ig
KDExLjEuMikuCisgICAgICAgIChKU0M6OmNhbGxJbnRsTnVtYmVyRm9ybWF0KTogQWRkZWQgTnVt
YmVyRm9ybWF0IGNvbnN0cnVjdG9yICgxMS4xLjIpLgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAoSlNDOjpJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6SW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAo
SlNDOjpJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKTog
QWRkZWQgcGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIFtdLgorICAgICAgICAo
SlNDOjpJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6Om51bWJlckZvcm1hdFN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OkludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGVHZXR0ZXJGb3JtYXQpOiBBZGRlZCBmb3JtYXQgZ2V0dGVyICgxMS4zLjMpLgorICAgICAg
ICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6IEFk
ZGVkIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyB7fS4KKyAgICAgICAgKiBy
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgICogcnVu
dGltZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOiBBZGRlZCBDb2xsYXRv
ciwgTnVtYmVyRm9ybWF0LCBhbmQgRGF0ZVRpbWVGb3JtYXQgcHJvcGVydGllcyAoOC4xKS4KKyAg
ICAgICAgKEpTQzo6SW50bE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGlt
ZS9JbnRsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmNvbGxhdG9yQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0Ojpjb2xsYXRvclByb3RvdHlwZSk6Cisg
ICAgICAgIChKU0M6OkludGxPYmplY3Q6OmNvbGxhdG9yU3RydWN0dXJlKToKKyAgICAgICAgKEpT
Qzo6SW50bE9iamVjdDo6bnVtYmVyRm9ybWF0Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpJ
bnRsT2JqZWN0OjpudW1iZXJGb3JtYXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpJbnRsT2Jq
ZWN0OjpudW1iZXJGb3JtYXRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0Ojpk
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6ZGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0OjpkYXRlVGlt
ZUZvcm1hdFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKwogMjAxNS0wNy0yOSAgQmFz
aWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgc2tpcHBpbmcgYSB0ZXN0IHRoYXQgaXMgdG9vIGNvbXBsZXggZm9yIGl0cyBvd24gZ29v
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGExMjZlMjA4YmQwMjc0ODliODAzMzFlNWI1NTMxNzkzZmVhMGQ1YmYu
LjYzNjg0OTY1ZDljZTczZTIwZTc1MDYxZWY4ODFmYWI1NTZlMWM0YzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMiBAQAorMjAxNS0wNy0yOSAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0
ZXJAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNpYyB0eXBlcyBmb3IgRUNNQVNj
cmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjkyNgorCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmph
bWluIFBvdWxhaW4uCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZzogRW5hYmxlZCBJTlRMLgorCiAyMDE1LTA3LTI5ICBNaWNoYWVsIENhdGFuemFybyAg
PG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCBSZWZQdHJDYWlyby5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwppbmRleCBmNjVhNmUyZDYxYzY4YjFmZWY3ZDA1YmRmYzFhMWFmYzA2
ZGZkYjU3Li44ZDI1YmRmYWQ0ZjBiYTgzMWFkZmViZWVlYzgyNWM1NDMzOWIyYzI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDctMjkgIEFuZHkgVmFuV2Fnb25lciAg
PHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlw
ZXMgZm9yIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZp
ZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWc6IEVuYWJsZWQgSU5UTC4KKwogMjAxNS0wNy0yOCAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBBZGQgRU5B
QkxFX0VTNl9NT0RVTEVTIGNvbXBpbGUgdGltZSBmbGFnIHdpdGggdGhlIGRlZmF1bHQgdmFsdWUg
ImZhbHNlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IDIzODA1YWQ2M2MxMWQ1NWE5ZWRhOGVkNDQ1ZWQ5NzcwOWEw
MjJjNDMuLjlkZDk2YThlZDJmODZmZTU5N2Y2NzdlOGQ4MDU3Yjg1Njg4MTM1OWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wNy0yOSAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFs
ZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNpYyB0eXBlcyBmb3Ig
RUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjkyNgorCisgICAgICAgIFJldmlld2VkIGJ5
IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZzogRW5hYmxlZCBJTlRMLgorCiAyMDE1LTA3LTI5ICBNaWNoYWVsIENhdGFu
emFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbU2VjY29tcF0gRnVydGhl
ciBpbXByb3ZlbWVudHMgdG8gZGVmYXVsdCB3ZWIgcHJvY2VzcyBwb2xpY3kKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwZWFjMzY2ZTVjNzU5NzJkNDAyM2RjNWU4YTVmMTU0
YzNkMjZiMWJmLi5kNTEwZmExZmZiMWI0ZTFhMTFkZTNmM2FkYTlmN2NhNjkxNjQ5ZGNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00NzksNiArNDc5LDE1IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuY3BwCiAgICAgcnVudGltZS9JbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcAogICAgIHJ1
bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKKyAgICBydW50aW1lL0ludGxDb2xsYXRvci5jcHAK
KyAgICBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSW50
bENvbGxhdG9yUHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNw
cAorICAgIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCisgICAgcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmNwcAorICAgIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNw
cAorICAgIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKICAgICBydW50aW1l
L0ludGxPYmplY3QuY3BwCiAgICAgcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCiAgICAg
cnVudGltZS9JdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTYyNCw2ICs2MzMsMTIgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX0xVVF9GSUxFUwogICAgIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAog
ICAgIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0Vycm9yUHJvdG90eXBl
LmNwcAorICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGlt
ZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5jcHAKKyAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKyAgICBy
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0RhdGFW
aWV3UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCiAgICAgcnVu
dGltZS9KU09OT2JqZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxNjBjN2Y4
MTNjYTRkOTY1YWIwZTAxOGQ4YjcyNjk2ZWNiZWRjNzAuLmJjZTg2MGE3ZWM4MWQxZjQ2ZmY5ZDM5
ZmNjMmFlYWY3OTUwMTcxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTExNyw3ICsx
MTcsNyBAQCBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEwMDAgPSA7
CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDExMDAgPSBFTkFCTEVf
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VF9tYWNvc3hfMTAxMjAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIAotRU5B
QkxFX0lOVEwgPSA7CitFTkFCTEVfSU5UTCA9IEVOQUJMRV9JTlRMOwogCiBFTkFCTEVfSU9TX0dF
U1RVUkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19p
b3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxfU0RLKSk7CiBFTkFCTEVfSU9TX0dF
U1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMgPSBFTkFCTEVfSU9TX0dFU1RV
UkVfRVZFTlRTOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRl
eCBmMzVhYjg2NzI0MGY5MjY4OGY5MzZkMTIxZjk5YzExYjM1ZmZhYzUzLi5kMDcxMjY1MmEwOWIx
YzhhZjUxZGEyZTY2ZDlhMTg0YjMwNTlhZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQpAQCAtNDEsNiArNDEsMTIgQEAgYWxsIDogXAogICAgIERhdGVDb25z
dHJ1Y3Rvci5sdXQuaCBcCiAgICAgRGF0ZVByb3RvdHlwZS5sdXQuaCBcCiAgICAgRXJyb3JQcm90
b3R5cGUubHV0LmggXAorICAgIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBJ
bnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggXAorICAgIEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmx1dC5oIFwKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmggXAor
ICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5sdXQuaCBcCiAgICAgSlNEYXRhVmlld1Byb3RvdHlwZS5sdXQuaCBcCiAg
ICAgSlNPTk9iamVjdC5sdXQuaCBcCiAgICAgSlNHbG9iYWxPYmplY3QubHV0LmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggN2E4NTdmMTg2Y2U2OTQzOGFhMTQ4
NjRkNGNiZTMyYjRiYmQzOWExNC4uOTEzNjk3MDdkZWRlMmI2OTE1M2FmYWY1NDQ0OTA5NzM0OTM5
YTJmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC03MzEsNiAr
NzMxLDE1IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEluaXRpYWxpemVU
aHJlYWRpbmcuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRl
bmRlZFN0cnVjdHVyZUNoYWluLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSW50ZXJuYWxGdW5jdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEludGxDb2xsYXRvci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCIgLz4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCIgLz4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9ybWF0LmNwcCIgLz4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCIgLz4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxPYmplY3QuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJdGVyYXRvck9wZXJhdGlv
bnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJdGVyYXRvclBy
b3RvdHlwZS5jcHAiIC8+CkBAIC0xNTM5LDYgKzE1NDgsMTUgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSW50OEFycmF5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50ZXJuYWxGdW5jdGlvbi5oIiAvPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCIgLz4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENvbGxhdG9yUHJvdG90eXBlLmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdC5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCIgLz4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsT2JqZWN0LmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludHJpbnNpYy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJdGVyYXRpb25TdGF0dXMuaCIgLz4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA1NmY0
ZDg0YzQzOWY1MThiODgyZjhjMTcwMWJjYzg0Y2IzZTExZGJjLi4wMDliMmYxMjI4MGZhZTc4MmIy
OTdlZjRkY2EyN2M2MzAzOTFjNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC02MzAsNiArNjMwLDMzIEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGVybmFsRnVuY3Rpb24uY3BwIj4KICAgICAgIDxGaWx0
ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3IuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50
aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEludGxDb2xsYXRvclByb3RvdHlwZS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50
aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdC5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCI+CisgICAgICA8RmlsdGVy
PnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCI+CisgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdC5jcHAiPgorICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAiPgorICAgICAg
PEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwIj4KKyAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsT2JqZWN0LmNwcCI+CiAgICAgICA8RmlsdGVy
PnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTI2OTMsNiArMjcyMCwzMyBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRlcm5hbEZ1bmN0aW9uLmgi
PgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvci5oIj4KKyAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oIj4KKyAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCI+CisgICAgICA8Rmls
dGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9ybWF0LmgiPgorICAgICAgPEZpbHRlcj5y
dW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgiPgorICAgICAgPEZp
bHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIj4KKyAgICAg
IDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0LmgiPgorICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIj4KKyAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgiPgorICAgICAg
PEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxPYmplY3QuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggYzA2NjljN2ZlMzUwYmE1ZWE0NTMxYWFjNTUzODc0OGU5ZjkzNjUzYy4uYWUyZGQ5NjNi
YmFhMDFlMjJhN2Q5YjMxMDZlYTZhYzFkZTU0Zjg4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTExNzcsMTMgKzExNzcsMzcgQEAKIAkJOUU3Mjk0MEIxOTBGMDUxNDAwMUE5MUI1
IC8qIEJ1bmRsZVBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlFNzI5NDBBMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLmggKi87IH07CiAJ
CTlFQTVDN0ExMTkwRjA4NDIwMDUwOEVCRSAvKiBCdW5kbGVQYXRoLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUU3Mjk0MDkxOTBGMDMwNjAwMUE5MUI1
IC8qIEJ1bmRsZVBhdGgubW0gKi87IH07CiAJCTlFQTVDN0EyMTkwRjA4ODcwMDUwOEVCRSAvKiBJ
bml0aWFsaXplTExWTU1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5RUE1QzdBMDE5MEYwNUQyMDA1MDhFQkUgLyogSW5pdGlhbGl6ZUxMVk1NYWMu
Y3BwICovOyB9OworCQlBMTI1ODQ2RTFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTEyNTg0NkMxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5sdXQuaCAqLzsgfTsKKwkJQTEyNTg0NkYxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTI1ODQ2RDFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5sdXQuaCAqLzsgfTsKIAkJQTEyQkJGRjIxQjA0NEE4QjAwNjY0QjY5IC8q
IEludGxPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExMkJCRkYxMUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmggKi87IH07CiAJCUEx
MkJCRkY0MUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAv
KiBJbnRsT2JqZWN0LmNwcCAqLzsgfTsKKwkJQTE1ODdENkQxQjREQzE0MTAwRDY5ODQ5IC8qIElu
dGxEYXRlVGltZUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTU4N0Q2NzFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0
LmNwcCAqLzsgfTsKKwkJQTE1ODdENkUxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZv
cm1hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1
ODdENjgxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5oICovOyB9OworCQlB
MTU4N0Q2RjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1ODdE
NjkxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCAq
LzsgfTsKKwkJQTE1ODdENzAxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMTU4N0Q2QTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IuaCAqLzsgfTsKKwkJQTE1ODdENzExQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTU4N0Q2QjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlLmNwcCAqLzsgfTsKKwkJQTE1ODdENzIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTE1ODdENkMxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZS5oICovOyB9OworCQlBMTU4N0Q3NTFCNERDMUM2MDBENjk4NDkgLyogSW50bERh
dGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q3MzFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi87IH07CisJCUExNTg3RDc2MUI0REMxQzYwMEQ2
OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q3NDFCNERDMUM2MDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oICovOyB9OwogCQlBMTcxMkIzQjEx
QzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4
cENhY2hlLmNwcCAqLzsgfTsKIAkJQTE3MTJCM0YxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENh
Y2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcx
MkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTcxMkI0MTExQzdCMjM1MDA3QTUzMTUg
LyogUmVnRXhwS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTE4MTkzRTMxQjRFMENEQjAw
RkMxMDI5IC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE4MTkzRTExQjRFMENEQjAwRkMxMDI5IC8q
IEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5oICovOyB9OworCQlBMTgxOTNFNDFCNEUwQ0RC
MDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE4MTkzRTIxQjRFMENEQjAwRkMxMDI5IC8q
IEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCAqLzsgfTsKIAkJQTFBMDA5QzAxODMxQTIyRDAw
Q0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NDA5MjNDMTU2RUVEM0IwMDU2NkNCMiAvKiBNYWNyb0Fz
c2VtYmxlckFSTTY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjQwOTIzQjE1NkVF
RDNCMDA1NjZDQjIgLyogQVJNNjRBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBMUI5RTIzOTFCNEUwRDY3MDBCQzdGRUQgLyogSW50
bENvbGxhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQjlFMjMzMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuY3BwICovOyB9Owor
CQlBMUI5RTIzQTFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5RTIzNDFCNEUwRDY3MDBCQzdG
RUQgLyogSW50bENvbGxhdG9yLmggKi87IH07CisJCUExQjlFMjNCMUI0RTBENjcwMEJDN0ZFRCAv
KiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI5RTIzNTFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxh
dG9yQ29uc3RydWN0b3IuY3BwICovOyB9OworCQlBMUI5RTIzQzFCNEUwRDY3MDBCQzdGRUQgLyog
SW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjlFMjM2MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JD
b25zdHJ1Y3Rvci5oICovOyB9OworCQlBMUI5RTIzRDFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENv
bGxhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExQjlFMjM3MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5
cGUuY3BwICovOyB9OworCQlBMUI5RTIzRTFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9y
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUI5RTIzODFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmggKi87
IH07CisJCUExRDc5MkZDMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkY2MUI0
Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmNwcCAqLzsgfTsKKwkJQTFENzkyRkQx
QjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkY3MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJ
bnRsTnVtYmVyRm9ybWF0LmggKi87IH07CisJCUExRDc5MkZFMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1MTZG
NSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkY5MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCAqLzsgfTsKKwkJQTFENzkzMDAxQjQzODY0QjAwNDUx
NkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzkyRkExQjQzODY0QjAwNDUxNkY1IC8qIElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwICovOyB9OworCQlBMUQ3OTMwMTFCNDM4NjRCMDA0
NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzkyRkIxQjQzODY0QjAwNDUxNkY1IC8qIElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCAqLzsgfTsKIAkJQTUwM0ZBMTkxODhFMEZCMDAwMTEw
RjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTMxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3Jp
cHRDYWxsRnJhbWUuY3BwICovOyB9OwogCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2
YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUu
aCAqLzsgfTsKIAkJQTUwM0ZBMUIxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxG
cmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTAzRkExNTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLzsg
fTsKQEAgLTI5NzAsMTEgKzI5OTQsMzUgQEAKIAkJOUU3Mjk0MDkxOTBGMDMwNjAwMUE5MUI1IC8q
IEJ1bmRsZVBhdGgubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBC
dW5kbGVQYXRoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RTcyOTQwQTE5MEYw
NTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBCdW5kbGVQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlFQTVDN0Ew
MTkwRjA1RDIwMDUwOEVCRSAvKiBJbml0aWFsaXplTExWTU1hYy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJbml0aWFsaXplTExWTU1hYy5jcHA7IHBhdGggPSBsbHZt
L0luaXRpYWxpemVMTFZNTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTEy
NTg0NkMxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTI1ODQ2RDFCNDVB
MzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEyQkJGRjExQjA0NEE4QjAwNjY0QjY5IC8q
IEludGxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE9iamVj
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTJCQkZGMzFCMDQ0QTk4MDA2NjRC
NjkgLyogSW50bE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbnRsT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE1ODdENjcx
QjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBMTU4N0Q2ODFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVU
aW1lRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEYXRlVGlt
ZUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4N0Q2OTFCNERDMTQx
MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4N0Q2QTFCNERDMTQxMDBENjk4
NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE1ODdENkIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBMTU4N0Q2QzFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4N0Q3
MzFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4N0Q3NDFCNERD
MUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEyQjNBMTFDN0IyMTIwMDdBNTMx
NSAvKiBSZWdFeHBDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZWdFeHBDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEyQjNF
MTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWdFeHBDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxDb2xsYXRvckNvbnN0cnVj
dG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTgxOTNFMjFCNEUwQ0RC
MDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUExQjlFMjMzMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bENvbGxhdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFCOUUyMzQxQjRFMEQ2NzAwQkM3
RkVEIC8qIEludGxDb2xsYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnRsQ29sbGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFCOUUyMzUxQjRF
MEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFCOUUyMzYxQjRFMEQ2NzAwQkM3RkVEIC8qIElu
dGxDb2xsYXRvckNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUExQjlFMjM3MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bENvbGxhdG9yUHJvdG90eXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFCOUUyMzgxQjRFMEQ2NzAwQkM3
RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnRsQ29sbGF0b3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTFENzkyRjYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bE51bWJlckZvcm1hdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRDc5MkY3MUI0Mzg2NEIwMDQ1MTZGNSAv
KiBJbnRsTnVtYmVyRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dGxOdW1iZXJGb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFENzkyRjgx
QjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUQ3OTJGOTFCNDM4NjRCMDA0
NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBMUQ3OTJGQTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTFENzkyRkIxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTAzRkExMzE4OEUwRkFG
MDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxs
RnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdENhbGxG
cmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTAzRkExNTE4OEUwRkIwMDAx
MTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC00MjczLDYgKzQzMjEsMTIgQEAKIAkJCQlBNTMyNDM4NDE4NTY4MzE3
MDAyRUQ2OTIgLyogSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5oICovLAogCQkJCUE1MzI0
Mzg1MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuY3BwICovLAog
CQkJCUE1MzI0Mzg2MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMu
aCAqLywKKwkJCQlBMTgxOTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IubHV0LmggKi8sCisJCQkJQTE4MTkzRTIxQjRFMENEQjAwRkMxMDI5IC8qIEludGxDb2xs
YXRvclByb3RvdHlwZS5sdXQuaCAqLywKKwkJCQlBMTU4N0Q3MzFCNERDMUM2MDBENjk4NDkgLyog
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJQTE1ODdENzQxQjRE
QzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCAqLywKKwkJ
CQlBMTI1ODQ2QzFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
Lmx1dC5oICovLAorCQkJCUExMjU4NDZEMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBK
U0NCdWlsdGlucy5jcHAgKi8sCiAJCQkJQTdEODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1
aWx0aW5zLmggKi8sCiAJCQkJQkM4N0NEQjgxMDcxMkFDQTAwMDYxNENGIC8qIEpTT05PYmplY3Qu
bHV0LmggKi8sCkBAIC00NTE2LDYgKzQ1NzAsMjQgQEAKIAkJCQlBNzg4NTNGODE3OTcyNjI5MDAx
NDQwRTQgLyogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oICovLAogCQkJCUJDOUJCOTVCMEUxOTY4
MDYwMERGODg1NSAvKiBJbnRlcm5hbEZ1bmN0aW9uLmNwcCAqLywKIAkJCQlCQzExNjY3QTBFMTk5
QzA1MDA4MDY2REQgLyogSW50ZXJuYWxGdW5jdGlvbi5oICovLAorCQkJCUExQjlFMjMzMUI0RTBE
NjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuY3BwICovLAorCQkJCUExQjlFMjM0MUI0RTBENjcw
MEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuaCAqLywKKwkJCQlBMUI5RTIzNTFCNEUwRDY3MDBCQzdG
RUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwICovLAorCQkJCUExQjlFMjM2MUI0RTBE
NjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oICovLAorCQkJCUExQjlFMjM3
MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwICovLAorCQkJCUEx
QjlFMjM4MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCAqLywKKwkJ
CQlBMTU4N0Q2NzFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmNwcCAqLywK
KwkJCQlBMTU4N0Q2ODFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmggKi8s
CisJCQkJQTE1ODdENjkxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmNwcCAqLywKKwkJCQlBMTU4N0Q2QTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLywKKwkJCQlBMTU4N0Q2QjFCNERDMTQxMDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCAqLywKKwkJCQlBMTU4N0Q2QzFCNERD
MTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmggKi8sCisJCQkJQTFE
NzkyRjYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuY3BwICovLAorCQkJCUEx
RDc5MkY3MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmggKi8sCisJCQkJQTFE
NzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAg
Ki8sCisJCQkJQTFENzkyRjkxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5oICovLAorCQkJCUExRDc5MkZBMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlLmNwcCAqLywKKwkJCQlBMUQ3OTJGQjFCNDM4NjRCMDA0NTE2RjUgLyog
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oICovLAogCQkJCUExMkJCRkYzMUIwNDRBOTgwMDY2
NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLywKIAkJCQlBMTJCQkZGMTFCMDQ0QThCMDA2NjRCNjkg
LyogSW50bE9iamVjdC5oICovLAogCQkJCTg2QkY2NDJBMTQ4REIyQjUwMDRERTM2QSAvKiBJbnRy
aW5zaWMuaCAqLywKQEAgLTU3MDYsNiArNTc3OCw3IEBACiAJCQkJMTQ3QjgzQUMwRTZEQjhDOTAw
NDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyQTExMTI0NjE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDNEY0QjZGNTFBMDVDOTg0MDA1Q0FCNzYgLyogZ2VuZXJhdGVfb2JqY19w
cm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovLAorCQkJCUExRDc5
MkZGMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1ODQwMzIwMThCRkZCRTEwMDVBMDgxMSAvKiBJbnNwZWN0b3JBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQkNERTcxOEVGMjk0MjAwMDAyMDk2IC8qIEdDTG9n
Z2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU3QkE2MTAxQTFBN0NFQzAwRjFGN0I0IC8qIEhl
YXBWZXJpZmllci5oIGluIEhlYWRlcnMgKi8sCkBAIC01NzU1LDYgKzU4MjgsNyBAQAogCQkJCTBG
MjRFNTQxMTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJseUhlbHBlcnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3ODRBMjYxMTFEMTY2MjIwMDU3NzZBQyAvKiBBU1RCdWlsZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NjY3MzlEMjEzQkZERTcxMDAyM0Q4N0MgLyogQmlnSW50ZWdlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQTEyNTg0NkUxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0VDMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBCb29sZWFuT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUEwODYyMDE4
MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVEMkU2
NjUxOTVFMTc0MDAwQTUxOEU3IC8qIEpTQ29udGV4dFJlZkludGVybmFsLmggaW4gSGVhZGVycyAq
LywKQEAgLTU3NjQsNiArNTgzOCw3IEBACiAJCQkJMEZCN0YzOTcxNUVEOEU0NjAwRjE2N0IyIC8q
IEJ1dHRlcmZseS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTgxNUVEOEU0NjAwRjE2N0Iy
IC8qIEJ1dHRlcmZseUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTYyRDJEMzkwMUFERjEw
M0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUI5
RTIzQTFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDMkZDQUUxMTE3QTlDMjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVCYXNpY0Jsb2NrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50
aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3MjMwRUQxQ0UzMzAwRjFGNjgxIC8qIEJ5
dGVjb2RlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTU4NDMsMTEgKzU5MTgsMTMgQEAK
IAkJCQlBNUVBNzBFODE5RjVCMTAxMDA5OEY1RUMgLyogQXVnbWVudGFibGVJbnNwZWN0b3JDb250
cm9sbGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA0RDkwMzE3QTBCQUE4MDA2QkE1
NTQgLyogREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwNEQ5
MDQxN0EwQkFBODAwNkJBNTU0IC8qIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBMUI5RTIzQzFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9y
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjIwMTc3MTQzRkNEM0YwMDY4Qjc3
QyAvKiBERkdBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkYwNTRGQTFBQzM1
QjQ0MDBFNUJFNTcgLyogRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjY2RTE2QjE0REYzRjE2MDBCN0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZGQjkyMTgxNkQwMkVCMjAwNTVBNURCIC8qIERGR0FsbG9jYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTczNzgxMEMxNzk5RUEyRTAwODE3NTMzIC8qIERGR0FuYWx5
c2lzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMUI5RTIzRTFCNEUwRDY3MDBCQzdGRUQgLyogSW50
bENvbGxhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjFFM0E0NjE1MzRDQkFG
MDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVD
M0ExQTYxOEMwNDkwMjAwQzk1OTNBIC8qIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMjIxODc3NTA1NjAwODNCNjg3IC8qIERGR0FyaXRoTW9k
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC01OTExLDYgKzU5ODgsNyBAQAogCQkJCTg2RUM5RENDMTMy
OERGODIwMDJCMkFENyAvKiBERkdKSVRDb21waWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4
QTk3NzkxNzk3MzhCODAwOURGNzQ0IC8qIERGR0pJVEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZDOTdGNDAxODIwMjExOTAwMkM5QjI2IC8qIERGR0p1bXBSZXBsYWNlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTEyNTg0NkYxQjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzNBNTM1QjE3OTlDRDVE
MDAxNzBDMTkgLyogREZHTGF6eUpTVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0U5
MTlEMEJBN0QwMEIxRDFCNSAvKiBERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBN0Q5QTI5ODE3QTBCQzc0MDBFRTI2MTggLyogREZHTElDTVBoYXNlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTYwNDAsNiArNjExOCw3IEBACiAJCQkJMEY2QjFDQjYxODVGQzlF
OTAwODQ1RDk3IC8qIEZUTEpTQ2FsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4RjJCOTYxNzJF
MDRBMzAwN0RCREE1IC8qIEZUTExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0VGQUUwMTgw
NzM4QzAwMDQ3MkNFNCAvKiBGVExMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE1ODdE
NzAxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkVBMEExMDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMTG93ZXJERkdU
b0xMVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5RDAyMTdBMEI5MDQwMDc3M0FEOCAvKiBG
VExMb3dlcmVkTm9kZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMxQzE3RDUxRjIy
MDBDQTJDNDAgLyogRlRMT1NSRW50cnkuaCBpbiBIZWFkZXJzICovLApAQCAtNjEwOCw2ICs2MTg3
LDcgQEAKIAkJCQlDMjVGOEJDRTE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5OTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhp
bmdIZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlBMTVFRDhFNDYwMEYxNjdCMiAv
KiBJbmRleGluZ0hlYWRlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUExNTg3RDc2MUI0
REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkI3RjM5QjE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdUeXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkNFRkFCMDE4MDVDQTZEMDA0NzJDRTQgLyogSW5pdGlhbGl6
ZUxMVk0uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0VGQUNDMTgwNUU3NTUwMDQ3MkNFNCAvKiBJ
bml0aWFsaXplTExWTVBPU0lYLmggaW4gSGVhZGVycyAqLywKQEAgLTYxNjIsNiArNjI0Miw3IEBA
CiAJCQkJMEZBRjdFRkUxNjVCQTkxRjAwMEM4NDU1IC8qIEpJVERpc2Fzc2VtYmxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjE0RTFGMTgxMjRBQ0UwMDlCNkI0RCAvKiBKSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFENzkzMDExQjQzODY0QjAw
NDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2Q0M4NUExMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjI0RTU0RDE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY3NjZEMzExNUFBODExMjAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmgg
aW4gSGVhZGVycyAqLywKQEAgLTYyNjMsNiArNjM0NCw3IEBACiAJCQkJN0MxODRFMjMxN0JFRTI0
MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
QzAwOENEQjE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDMTg0RTFGMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCUExODE5M0U0MUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29s
bGF0b3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjI1NTNEMjE2MTM2RTFB
MDA5RjE3RDAgLyogSlNQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTkyOEZGM0MxOEFDNEFF
QzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQy
NjBFMTZGNUNEMDBCMzQ0NjAgLyogSlNSZXRhaW5QdHIuaCBpbiBIZWFkZXJzICovLApAQCAtNjI3
NCw2ICs2MzU2LDcgQEAKIAkJCQlCQzE4QzQ1RTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNTdGFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDMUVBRjAxNzk4N0FCNjAwMjk5REIyIC8qIEpTU3RhY2tJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyNzBFMTZGNUNEMDBCMzQ0NjAgLyog
SlNTdHJpbmcuaCBpbiBIZWFkZXJzICovLAorCQkJCUExNTg3RDc1MUI0REMxQzYwMEQ2OTg0OSAv
KiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2RTg1NTM5MTExQjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1aWxkZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTI2MDBCNUE3MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjgwRTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nUmVm
LmggaW4gSGVhZGVycyAqLywKQEAgLTYzNzcsNiArNjQ2MCw3IEBACiAJCQkJQkMwMkU5MTEwRTE4
MzlEQjAwMEY5Mjk3IC8qIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMDJFOTEzMEUxODM5REIwMDBGOTI5NyAvKiBOYXRpdmVFcnJvclByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTlDQzBCNjMxOEJFOTk1MDAwNkNFQkNDIC8qIENvZGVHZW5lcmF0
b3JSZXBsYXlJbnB1dHMucHkgaW4gSGVhZGVycyAqLywKKwkJCQlBMTgxOTNFMzFCNEUwQ0RCMDBG
QzEwMjkgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkZCOTIyMDE2RDAzM0I3MDA1NUE1REIgLyogTm9kZUNvbnN0cnVjdG9ycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnlL
ZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDNGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOb2Rl
cy5oIGluIEhlYWRlcnMgKi8sCkBAIC02NTAxLDYgKzY1ODUsNyBAQAogCQkJCUE3Mjk5REE2MTdE
MTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBMUQ3OTJGRDFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZv
cm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZBRTY0QUExMzVFNUUxQzAwOTYzMDEyIC8qIFNI
NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGOEJERUIxQUQ0Q0Y3MTAwREZFODg0
IC8qIEluZmVycmVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA1MTdCNkI1QUIw
MEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC02NTc2LDYgKzY2NjEsNyBAQAogCQkJCUE3QjYwMTgyMTYzOUZEMkEwMDM3MkJBMyAvKiBVbmxp
bmtlZENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRTg5MkMxNkQwMjhBRDAwOUU0
RkQyIC8qIFVudXNlZFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCMzlGNzcwMUI2MkRF
MzIwMDM2MEZCNCAvKiBXQVNNUmVhZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTU4N0Q2RTFC
NERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY5QzVFNUYxOEUzNUY1RTAwRDQzMUMzIC8qIEZUTERXQVJGUmVnaXN0
ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNjYwMyw2ICs2Njg5LDcgQEAKIAkJCQkyQTRFQzkwQzE4
NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDMkI2RDc1MzE4QTMzNzkzMDA0QTkzMDEgLyogV3JpdGVCYXJyaWVySW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZDODE1MEExNDA0M0JGNTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1
cHBvcnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUExNTg3RDcyMUI0REMxNDEwMEQ2OTg0OSAvKiBJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2ODhDQjE2
MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
ODQwRTJBMTg3Q0E3NTkwMDg0M0IxMCAvKiB4eGQucGwgaW4gSGVhZGVycyAqLywKIAkJCQkwRjNB
MUJGQTFBOUVDQjdEMDAwREUwMUEgLyogREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuaCBpbiBIZWFk
ZXJzICovLApAQCAtNzE4NSw2ICs3MjcyLDcgQEAKIAkJCQkwRkVBMEEzMTE3MEQ0MEJGMDBCQjcy
MkMgLyogREZHQ29tbW9uRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjM4QjAxNzE3Q0ZF
NzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25LZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEYzOEIwMTkxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uTW9kZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlBMUI5RTIzQjFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29u
c3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQjNBMUExNTNFNjhGMjAwM0VEMEZG
IC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUw
RjcyMTZDMURCMDMwMDgyQzVFOCAvKiBERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3RDg5Q0Y1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdDcml0aWNhbEVkZ2VC
cmVha2luZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzIyOCw2ICs3MzE2LDcgQEAKIAkJ
CQlBN0Q4OUNGQjE3QTBCOENDMDA3NzNBRDggLyogREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjBGMTk5MTZCNzI5RjYwMDVERjk1QiAvKiBERkdMb25n
TGl2ZWRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzY3QjVCNTE3QTBCOTY1MDA2M0Q5
NDAgLyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQTFCOUUyM0QxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjJCREM0RDE1MjI4MTg2MDBDRDg5MTAgLyogREZHTWluaWZp
ZWROb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3Mzc4MTBEMTc5OUVBMkUwMDgxNzUzMyAv
KiBERkdOYXR1cmFsTG9vcHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMEYxOUMxNkI3MkEw
MzAwNURGOTVCIC8qIERGR05vZGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03MzkyLDYgKzc0ODEs
NyBAQAogCQkJCTJBRjczODJDMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE1RkQwMDgxMTg5QjE5MUEwMDYzMzIzMSAvKiBJbnNwZWN0
b3JDb25zb2xlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU3RDIzRTUxODkwQ0VCRjAw
MzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QTE1ODdENkYxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MzI0Mzg3MTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzA5RkI4Njkx
QUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBNTMyNDM4OTE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRj
aGVycy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc0MTUsNiArNzUwNSw3IEBACiAJCQkJQkNERDUx
RUIwRkI4REY3NDAwNEE4QkRDIC8qIEpJVE9wY29kZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTcxMjM2RTUxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjZFODQ1QTE5MDMwQkVGMDA1NjI3NDEgLyogREZHVmFyaWFibGVBY2Nlc3NE
YXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExNTg3RDZEMUI0REMxNDEwMEQ2OTg0OSAvKiBJ
bnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNEU1NEMxN0VFMjc0
OTAwQUJCMjE3IC8qIEpJVE9wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZDQzg1
QzQwRUU3QTg5NDAwMjg4NjgyIC8qIEpJVFByb3BlcnR5QWNjZXNzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE3QzFFOEU0MTEyRTcyRUYwMEEzN0Y5OCAvKiBKSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzU0MSw2ICs3NjMyLDcgQEAKIAkJCQkwRjQ2ODBDQzE0
QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNEI3MjNCMjEyRDdEQTQ2MDAzQkQ1RUQgLyogTWFjaGluZVN0YWNrTWFya2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRUIzRUNGMTYyMzdGNkMwMEFCNjdBRCAvKiBNYWNyb0Fzc2Vt
Ymxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUQ3OTMwMDFCNDM4NjRCMDA0NTE2RjUgLyog
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkM1NjhF
MDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTcyOTAwOUMxNzk3NkM2MDAwMzE3Mjk4IC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTUzQ0UwODUxOEJDMUE1NjAwQkVERjc2IC8qIENvbnNvbGVQ
cm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NjIwLDYgKzc3MTIsNyBAQAogCQkJCUE1
QkExNUU5MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gaW4gU291cmNlcyAq
LywKIAkJCQkyQURGQTI2MzE4RUYzNTQwMDA0RjlGQ0MgLyogR0NMb2dnaW5nLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1OTQ1NThGMTgyNDVFRkQwMENDMzg0MyAvKiBSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExRDc5MkZFMUI0Mzg2NEIwMDQ1MTZG
NSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTVCQTE1RUMxODIzNDBCNDAwQTgyRTY5IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1RUUxODIzNDBCNDAwQTgyRTY5IC8q
IFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjI0
RTU1MDE3RUUyNzQ5MDBBQkIyMTcgLyogUmVwYXRjaC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc2
MjgsNiArNzcyMSw3IEBACiAJCQkJN0IzOUY3NzIxQjYzNTc0RDAwMzYwRkI0IC8qIFdBU01SZWFk
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyOUQ4ODUwRUQyMUMzRDAwQjg5NjE5IC8qIFNh
bXBsaW5nVG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MEVDMEVDNjFBQTBEN0RBMDBCNkFB
RkEgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFC
OUUyMzkxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBNUZEMDA2NzE4OUFGRTlDMDA2MzMyMzEgLyogU2NyaXB0QXJndW1lbnRzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE1RkQwMDZEMTg5QjAwQUEwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJh
bWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwNDM5NkQxQjAzREMwQjAwOTU5OEI3IC8qIERG
R0NvbWJpbmVkTGl2ZW5lc3MuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03Njc1LDYgKzc3NjksOCBA
QAogCQkJCTBGQTJDMTdCMTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTczODY1NTUxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJh
dG9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjcwNzE3QjZCNUFCMDBBN0FFM0YgLyog
VHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTFENzkyRkMxQjQz
ODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QTE1ODdENzExQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjcwQTE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRB
cnJheVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJDOTUyQjkxOUEyOEExQzAwNjlCMzg2
IC8qIFR5cGVQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0QTE1OEVCRTkx
MDA0Q0I5RkYgLyogdWRpczg2LmMgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDQzMmZiNmMxYjE2ZmNm
MmYyMjcxMTNkMjc2ZWMwODI1ZmM1MjliZDQuLjZlZmNkNGM0YTgwNmIxZmE5NzhhNDBiYjRlM2Q3
ZDAxZmI5Yzg2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaApAQCAtMzMsNyArMzMsOSBAQAogICAgIG1hY3JvKEFycmF5SXRlcmF0
b3IpIFwKICAgICBtYWNybyhCWVRFU19QRVJfRUxFTUVOVCkgXAogICAgIG1hY3JvKEJvb2xlYW4p
IFwKKyAgICBtYWNybyhDb2xsYXRvcikgXAogICAgIG1hY3JvKERhdGUpIFwKKyAgICBtYWNybyhE
YXRlVGltZUZvcm1hdCkgXAogICAgIG1hY3JvKEVycm9yKSBcCiAgICAgbWFjcm8oRXZhbEVycm9y
KSBcCiAgICAgbWFjcm8oRnVuY3Rpb24pIFwKQEAgLTQ1LDYgKzQ3LDcgQEAKICAgICBtYWNybyhN
YXRoKSBcCiAgICAgbWFjcm8oTmFOKSBcCiAgICAgbWFjcm8oTnVtYmVyKSBcCisgICAgbWFjcm8o
TnVtYmVyRm9ybWF0KSBcCiAgICAgbWFjcm8oT2JqZWN0KSBcCiAgICAgbWFjcm8oUHJvbWlzZSkg
XAogICAgIG1hY3JvKFJhbmdlRXJyb3IpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCmluZGV4IGQ2MzI5ZmRmMWIwMjUwZDc4MjRjOGM4
YmQ3MGRkNjg3MDQ3MmI0ZmMuLmVlNjU2YTMwOTc0ZTNlYzVkYjEwNGYxNmM1MzRkNDI2YjJiZTg1
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVj
dG9yLmNwcApAQCAtNTMsNyArNTMsNiBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogbmFtZXNwYWNl
IEpTQyB7CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBhcnNlKEV4ZWNTdGF0
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlTm93KEV4ZWNTdGF0ZSopOwog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlVVRDKEV4ZWNTdGF0ZSopOwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCmluZGV4
IDA1NGY1NzFkNTc5ZThjZTRmMzRiNTQwOTE3YjhkMDI4YjUwZGZiOWIuLmNkYWM5N2QzMWJhMzZh
OWMyMmVhYzAyNDhhZmM2ZjUyMTJiZjc5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCkBAIC01OSw2ICs1OSw4IEBAIHByaXZhdGU6CiAK
IEpTT2JqZWN0KiBjb25zdHJ1Y3REYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgQXJnTGlzdCYpOwogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVOb3coRXhl
Y1N0YXRlKik7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRGF0ZUNvbnN0cnVj
dG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xs
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk4MTA4ZmMxODU5OGQzZTJjN2FkODllMGNmMWY4OGQ0ZTVhMTFlYzkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3IuY3BwCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkg
VmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yLmgiCisKKyNpZiBFTkFCTEUoSU5U
TCkKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yQ29uc3RydWN0
b3IuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9u
LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxp
bmVzLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0
dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxD
b2xsYXRvcjo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShJbnRsQ29sbGF0b3IpIH07CisKK0ludGxDb2xsYXRvciogSW50bENvbGxhdG9y
OjpjcmVhdGUoVk0mIHZtLCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IpCit7
CisgICAgSW50bENvbGxhdG9yKiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJ
bnRsQ29sbGF0b3I+KHZtLmhlYXApKSBJbnRsQ29sbGF0b3Iodm0sIGNvbnN0cnVjdG9yLT5jb2xs
YXRvclN0cnVjdHVyZSgpKTsKKyAgICBmb3JtYXQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBy
ZXR1cm4gZm9ybWF0OworfQorCitTdHJ1Y3R1cmUqIEludGxDb2xsYXRvcjo6Y3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
fQorCitJbnRsQ29sbGF0b3I6OkludGxDb2xsYXRvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3Qodm0sIHN0cnVjdHVyZSkKK3sKK30KKwor
dm9pZCBJbnRsQ29sbGF0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworfQorCit2
b2lkIEludGxDb2xsYXRvcjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nh
c3Q8SW50bENvbGxhdG9yKj4oY2VsbCktPkludGxDb2xsYXRvcjo6fkludGxDb2xsYXRvcigpOwor
fQorCit2b2lkIEludGxDb2xsYXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQoreworICAgIEludGxDb2xsYXRvciogdGhpc09iamVjdCA9IGpzQ2Fz
dDxJbnRsQ29sbGF0b3IqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYm91bmRDb21w
YXJlKTsKK30KKwordm9pZCBJbnRsQ29sbGF0b3I6OnNldEJvdW5kQ29tcGFyZShWTSYgdm0sIEpT
Qm91bmRGdW5jdGlvbiogZm9ybWF0KQoreworICAgIG1fYm91bmRDb21wYXJlLnNldCh2bSwgdGhp
cywgZm9ybWF0KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0
b3JGdW5jQ29tcGFyZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTAuMy40IENvbGxhdG9y
IENvbXBhcmUgRnVuY3Rpb25zIChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gTGV0IGNvbGxhdG9y
IGJlIHRoZSB0aGlzIHZhbHVlLgorICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFt
aWNDYXN0PEludGxDb2xsYXRvcio+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKworICAgIC8vIDIuIEFz
c2VydDogVHlwZShjb2xsYXRvcikgaXMgT2JqZWN0IGFuZCBjb2xsYXRvciBoYXMgYW4gW1tpbml0
aWFsaXplZENvbGxhdG9yXV0gaW50ZXJuYWwgc2xvdCB3aG9zZSB2YWx1ZSBpcyB0cnVlLgorICAg
IGlmICghY29sbGF0b3IpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZXhlYykpOworCisgICAgLy8gMy4gSWYgeCBpcyBub3QgcHJvdmlkZWQsIGxldCB4IGJl
IHVuZGVmaW5lZC4KKyAgICAvLyA0LiBJZiB5IGlzIG5vdCBwcm92aWRlZCwgbGV0IHkgYmUgdW5k
ZWZpbmVkLgorICAgIC8vIDUuIExldCBYIGJlIFRvU3RyaW5nKHgpLgorICAgIEpTU3RyaW5nKiBh
ID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyk7CisgICAgLy8gNi4gUmV0dXJuSWZB
YnJ1cHQoWCkuCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgLy8gNy4gTGV0IFkgYmUgVG9T
dHJpbmcoeSkuCisgICAgSlNTdHJpbmcqIGIgPSBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhl
eGVjKTsKKyAgICAvLyA4LiBSZXR1cm5JZkFicnVwdChZKS4KKyAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisKKyAgICAvLyA5LiBSZXR1cm4gQ29tcGFyZVN0cmluZ3MoY29sbGF0b3IsIFgsIFkpLgorCisg
ICAgLy8gMTAuMy40IENvbXBhcmVTdHJpbmdzIGFic3RyYWN0IG9wZXJhdGlvbiAoRUNNQS00MDIg
Mi4wKQorICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgQ29tcGFyZVN0cmluZ3MuCisKKyAgICAvLyBS
ZXR1cm4gc2ltcGxlIGNoZWNrIHVudGlsIHByb3Blcmx5IGltcGxlbWVudGVkLgorICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoY29kZVBvaW50Q29tcGFyZShhLT52YWx1ZShleGVj
KS5pbXBsKCksIGItPnZhbHVlKGV4ZWMpLmltcGwoKSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bENvbGxhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmYyMjUxNDk0MWEyMTE4NjNmOWMyODQy
ZmMxNzBkNjFiY2E0NjEwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxDb2xsYXRvci5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgSW50bENvbGxhdG9yX2gKKyNkZWZpbmUgSW50bENvbGxhdG9yX2gK
KworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOworY2xh
c3MgSlNCb3VuZEZ1bmN0aW9uOworCitjbGFzcyBJbnRsQ29sbGF0b3IgOiBwdWJsaWMgSlNEZXN0
cnVjdGlibGVPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmpl
Y3QgQmFzZTsKKworICAgIHN0YXRpYyBJbnRsQ29sbGF0b3IqIGNyZWF0ZShWTSYsIEludGxDb2xs
YXRvckNvbnN0cnVjdG9yKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKwor
ICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRDb21wYXJlKCkgY29uc3QgeyByZXR1cm4gbV9ib3Vu
ZENvbXBhcmUuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJvdW5kQ29tcGFyZShWTSYsIEpTQm91bmRG
dW5jdGlvbiopOworCitwcm90ZWN0ZWQ6CisgICAgSW50bENvbGxhdG9yKFZNJiwgU3RydWN0dXJl
Kik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOworCitwcml2YXRlOgorICAgIFdyaXRlQmFycmllcjxKU0JvdW5kRnVuY3Rpb24+
IG1fYm91bmRDb21wYXJlOworfTsKKyAgICAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bENvbGxhdG9yRnVuY0NvbXBhcmUoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsQ29sbGF0b3JfaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9y
Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0MWRkMTdjZDhlYjExMmEyMWVmYjZjMjFhMTQ0
OTRmYjJlZDZkNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxODQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFp
bC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxD
b2xsYXRvckNvbnN0cnVjdG9yLmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkVy
cm9yLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9y
UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkxvb2t1
cC5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVy
ZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklB
TExZX0RFU1RSVUNUSUJMRShJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcik7CisKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBv
cnRlZExvY2FsZXNPZihFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bENvbGxhdG9y
Q29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8g
SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFs
RnVuY3Rpb246OnNfaW5mbywgJmNvbGxhdG9yQ29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhP
RF9UQUJMRShJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBJbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIGNvbGxhdG9yQ29uc3RydWN0b3JUYWJs
ZQorICBzdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgSW50bENvbGxhdG9yQ29uc3RydWN0
b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
K0BlbmQKKyovCisKK0ludGxDb2xsYXRvckNvbnN0cnVjdG9yKiBJbnRsQ29sbGF0b3JDb25zdHJ1
Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxDb2xsYXRvclBy
b3RvdHlwZSogY29sbGF0b3JQcm90b3R5cGUsIFN0cnVjdHVyZSogY29sbGF0b3JTdHJ1Y3R1cmUp
Cit7CisgICAgSW50bENvbGxhdG9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxhdG9yQ29uc3RydWN0b3I+KHZtLmhlYXApKSBJbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+Zmlu
aXNoQ3JlYXRpb24odm0sIGNvbGxhdG9yUHJvdG90eXBlLCBjb2xsYXRvclN0cnVjdHVyZSk7Cisg
ICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIEludGxDb2xsYXRvckNvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpJbnRsQ29s
bGF0b3JDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50
ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxDb2xsYXRvckNv
bnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxDb2xsYXRvclByb3RvdHlwZSog
Y29sbGF0b3JQcm90b3R5cGUsIFN0cnVjdHVyZSogY29sbGF0b3JTdHJ1Y3R1cmUpCit7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgiQ29sbGF0b3IiKSk7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgY29sbGF0b3JQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworICAg
IG1fY29sbGF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBjb2xsYXRvclN0cnVjdHVyZSk7Cit9
CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bENvbGxhdG9yKEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMC4xLjIgSW50bC5Db2xsYXRvciAoW2xvY2FsZXMg
Wywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1
bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVs
c2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCisgICAgSlNWYWx1ZSBuZXdUYXJnZXQgPSBl
eGVjLT5uZXdUYXJnZXQoKTsKKyAgICBpZiAoIW5ld1RhcmdldCB8fCBuZXdUYXJnZXQuaXNVbmRl
ZmluZWQoKSkKKyAgICAgICAgbmV3VGFyZ2V0ID0gZXhlYy0+Y2FsbGVlKCk7CisKKyAgICAvLyAy
LiBMZXQgY29sbGF0b3IgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0
LCAlQ29sbGF0b3JQcm90b3R5cGUlKS4KKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIElu
dGxDb2xsYXRvciogY29sbGF0b3IgPSBJbnRsQ29sbGF0b3I6OmNyZWF0ZSh2bSwganNDYXN0PElu
dGxDb2xsYXRvckNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpKTsKKyAgICBpZiAoY29sbGF0
b3IgJiYgIWpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3IqPihuZXdUYXJnZXQp
KSB7CisgICAgICAgIEpTVmFsdWUgcHJvdG8gPSBhc09iamVjdChuZXdUYXJnZXQpLT5nZXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CisgICAgICAgIGFzT2JqZWN0KGNv
bGxhdG9yKS0+c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soZXhlYywgcHJvdG8pOworICAgIH0K
KworICAgIC8vIDMuIFJldHVybklmQWJydXB0KGNvbGxhdG9yKS4KKyAgICBBU1NFUlQoY29sbGF0
b3IpOworCisgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxpemVDb2xsYXRvcihjb2xsYXRvciwgbG9j
YWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSW5p
dGlhbGl6ZUNvbGxhdG9yKGNvbGxhdG9yLCBsb2NhbGVzLCBvcHRpb25zKSk7CisKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdG9yKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsSW50bENvbGxhdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMC4x
LjIgSW50bC5Db2xsYXRvciAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQor
ICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhl
IGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQu
CisgICAgLy8gTmV3VGFyZ2V0IGlzIGFsd2F5cyB1bmRlZmluZWQgd2hlbiBjYWxsZWQgYXMgYSBm
dW5jdGlvbi4KKworICAgIC8vIDIuIExldCBjb2xsYXRvciBiZSBPcmRpbmFyeUNyZWF0ZUZyb21D
b25zdHJ1Y3RvcihuZXdUYXJnZXQsICVDb2xsYXRvclByb3RvdHlwZSUpLgorICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IEludGxDb2xsYXRvcjo6
Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bENvbGxhdG9yQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUo
KSkpOworCisgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQoY29sbGF0b3IpLgorICAgIEFTU0VSVChj
b2xsYXRvcik7CisKKyAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZUNvbGxhdG9yKGNvbGxhdG9y
LCBsb2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShJbml0aWFsaXplQ29sbGF0b3IoY29sbGF0b3IsIGxvY2FsZXMsIG9wdGlvbnMpKTsKKworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3IpOworfQorCitDb25zdHJ1Y3RUeXBlIElu
dGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVj
dERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rp
b24gPSBjb25zdHJ1Y3RJbnRsQ29sbGF0b3I7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0
OworfQorCitDYWxsVHlwZSBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlv
biA9IGNhbGxJbnRsQ29sbGF0b3I7CisgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKK30KKworYm9v
bCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJu
YWxGdW5jdGlvbj4oZXhlYywgY29sbGF0b3JDb25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SW50bENv
bGxhdG9yQ29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1
cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTAuMi4yIEludGwu
Q29sbGF0b3Iuc3VwcG9ydGVkTG9jYWxlc09mKGxvY2FsZXMgWywgb3B0aW9uc10pIChFQ01BLTQw
MiAyLjApCisKKyAgICAvLyAxLiBMZXQgcmVxdWVzdGVkTG9jYWxlcyBiZSBDYW5vbmljYWxpemVM
b2NhbGVMaXN0KGxvY2FsZXMpLgorICAgIC8vIEZJWE1FOiByZXF1ZXN0ZWQgPSBDYW5vbmljYWxp
emVMb2NhbGVMaXN0KGxvY2FsZXMpOworCisgICAgLy8gMi4gUmV0dXJuSWZBYnJ1cHQocmVxdWVz
dGVkTG9jYWxlcykuCisgICAgLy8gaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgIC8vICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgLy8gMy4gUmV0
dXJuIFN1cHBvcnRlZExvY2FsZXMoJUNvbGxhdG9yJS5bW2F2YWlsYWJsZUxvY2FsZXNdXSwgcmVx
dWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6IHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGUsIHJlcXVlc3RlZCwgb3B0aW9ucykpOwor
CisgICAgLy8gUmV0dXJuIGVtcHR5IGFycmF5IHVudGlsIHByb3Blcmx5IGltcGxlbWVudGVkLgor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0FycmF5KiBzdXBwb3J0
ZWRMb2NhbGVzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlX
aXRoVW5kZWNpZGVkKSwgMCk7CisgICAgaWYgKCFzdXBwb3J0ZWRMb2NhbGVzKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7CisKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMpOworfQorICAgIAordm9p
ZCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEludGxDb2xsYXRvckNvbnN0cnVjdG9yKj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6
dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2NvbGxhdG9yU3RydWN0dXJlKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRh
YTk4ZjJmYWEyNDc5Yjg0Zjc5YjcxMDc1ZjVlOTg3ZmFlZTc2ZmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5o
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdv
bmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW50bENv
bGxhdG9yQ29uc3RydWN0b3JfaAorI2RlZmluZSBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcl9oCisK
KyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxDb2xsYXRvcjsKK2NsYXNzIEludGxDb2xsYXRvclBy
b3RvdHlwZTsKKworY2xhc3MgSW50bENvbGxhdG9yQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJu
YWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgSW50
bENvbGxhdG9yQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEludGxDb2xsYXRv
clByb3RvdHlwZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lO
Rk87CisKKyAgICBTdHJ1Y3R1cmUqIGNvbGxhdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9jb2xsYXRvclN0cnVjdHVyZS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYsIEludGxDb2xsYXRvclByb3RvdHlwZSosIFN0cnVjdHVyZSopOworCitw
cml2YXRlOgorICAgIEludGxDb2xsYXRvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7Cisg
ICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1
Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxE
YXRhJik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgCisgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9jb2xsYXRvclN0cnVjdHVyZTsKK307CisKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bENvbGxhdG9yKEV4ZWNTdGF0ZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bENvbGxhdG9yKEV4ZWNTdGF0ZSopOworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQorCisjZW5kaWYgLy8g
SW50bENvbGxhdG9yQ29uc3RydWN0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQ2ZGRi
ZmM4YzBmOWQ2MWY5ZmM1MmEyNzljNWRmN2YzMGJjYTczNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKQEAg
LTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVy
ICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKKworI2lmIEVOQUJMRShJTlRM
KQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKKyNpbmNs
dWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1
ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJ
QkxFKEludGxDb2xsYXRvclByb3RvdHlwZSk7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5
cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRlICJJbnRs
Q29sbGF0b3JQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFz
c0luZm8gSW50bENvbGxhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmSW50bENv
bGxhdG9yOjpzX2luZm8sICZjb2xsYXRvclByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEludGxDb2xsYXRvclByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBJbnRsQ29sbGF0
b3JQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBjb2xsYXRvclByb3RvdHlwZVRhYmxlCisgIGNvbXBh
cmUgICAgICAgICAgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZSAgICAgICAgRG9u
dEVudW18QWNjZXNzb3IKKyAgcmVzb2x2ZWRPcHRpb25zICBJbnRsQ29sbGF0b3JQcm90b3R5cGVG
dW5jUmVzb2x2ZWRPcHRpb25zICBEb250RW51bXxGdW5jdGlvbiAwCitAZW5kCisqLworCitJbnRs
Q29sbGF0b3JQcm90b3R5cGUqIEludGxDb2xsYXRvclByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBJbnRsQ29sbGF0
b3JQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxDb2xs
YXRvclByb3RvdHlwZT4odm0uaGVhcCkpIEludGxDb2xsYXRvclByb3RvdHlwZSh2bSwgc3RydWN0
dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0
OworfQorCitTdHJ1Y3R1cmUqIEludGxDb2xsYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
Cit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQor
CitJbnRsQ29sbGF0b3JQcm90b3R5cGU6OkludGxDb2xsYXRvclByb3RvdHlwZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50bENvbGxhdG9yKHZtLCBzdHJ1Y3R1cmUpCit7
Cit9CisKK3ZvaWQgSW50bENvbGxhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCitib29sIEludGxDb2xsYXRv
clByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQor
eworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsIGNvbGxh
dG9yUHJvdG90eXBlVGFibGUsIGpzQ2FzdDxJbnRsQ29sbGF0b3JQcm90b3R5cGUqPihvYmplY3Qp
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIC8vIDEwLjMuMyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIChFQ01BLTQwMiAy
LjApCisgICAgLy8gMS4gTGV0IGNvbGxhdG9yIGJlIHRoaXMgQ29sbGF0b3Igb2JqZWN0LgorICAg
IEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxDb2xsYXRvcio+KGV4
ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWNvbGxhdG9yKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW50bC5Db2xs
YXRvci5wcm90b3R5cGUuY29tcGFyZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmpl
Y3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciIpKSk7CisKKyAgICBKU0JvdW5kRnVuY3Rpb24q
IGJvdW5kQ29tcGFyZSA9IGNvbGxhdG9yLT5ib3VuZENvbXBhcmUoKTsKKyAgICAvLyAyLiBJZiBj
b2xsYXRvci5bW2JvdW5kQ29tcGFyZV1dIGlzIHVuZGVmaW5lZCwKKyAgICBpZiAoIWJvdW5kQ29t
cGFyZSkgeworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gY29sbGF0b3ItPmdsb2JhbE9iamVjdCgpOworICAgICAgICAv
LyBhLiBMZXQgRiBiZSBhIG5ldyBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgYXMgZGVmaW5lZCBp
biAxMS4zLjQuCisgICAgICAgIC8vIGIuIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVy
dHkgaXMgMi4KKyAgICAgICAgSlNGdW5jdGlvbiogdGFyZ2V0T2JqZWN0ID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDIsIEFTQ0lJTGl0ZXJhbCgiY29tcGFyZSIpLCBJbnRs
Q29sbGF0b3JGdW5jQ29tcGFyZSwgTm9JbnRyaW5zaWMpOworICAgICAgICBKU0FycmF5KiBib3Vu
ZEFyZ3MgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhV
bmRlY2lkZWQpLCAwKTsKKyAgICAgICAgaWYgKCFib3VuZEFyZ3MpCisgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7CisKKyAgICAg
ICAgLy8gYy4gTGV0IGJjIGJlIEJvdW5kRnVuY3Rpb25DcmVhdGUoRiwgwqt0aGlzIHZhbHVlwrsp
LgorICAgICAgICBib3VuZENvbXBhcmUgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIGNvbGxhdG9yLCBib3VuZEFyZ3MsIDIsIEFTQ0lJTGl0
ZXJhbCgiY29tcGFyZSIpKTsKKyAgICAgICAgLy8gZC4gU2V0IGNvbGxhdG9yLltbYm91bmRDb21w
YXJlXV0gdG8gYmMuCisgICAgICAgIGNvbGxhdG9yLT5zZXRCb3VuZENvbXBhcmUodm0sIGJvdW5k
Q29tcGFyZSk7CisgICAgfQorICAgIC8vIDMuIFJldHVybiBjb2xsYXRvci5bW2JvdW5kQ29tcGFy
ZV1dLgorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYm91bmRDb21wYXJlKTsKK30KKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2
ZWRPcHRpb25zKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMC4zLjUgSW50bC5Db2xsYXRv
ci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKKyAgICBJbnRsQ29s
bGF0b3IqIGNvbGxhdG9yID0ganNEeW5hbWljQ2FzdDxJbnRsQ29sbGF0b3IqPihleGVjLT50aGlz
VmFsdWUoKSk7CisgICAgaWYgKCFjb2xsYXRvcikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludGwuQ29sbGF0b3IucHJv
dG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmpl
Y3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciIpKSk7CisKKyAgICAvLyBUaGUgZnVuY3Rpb24g
cmV0dXJucyBhIG5ldyBvYmplY3Qgd2hvc2UgcHJvcGVydGllcyBhbmQgYXR0cmlidXRlcyBhcmUg
c2V0IGFzIGlmIGNvbnN0cnVjdGVkIGJ5IGFuIG9iamVjdCBsaXRlcmFsIGFzc2lnbmluZyB0byBl
YWNoIG9mIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB0aGUgdmFsdWUgb2YgdGhlIGNvcnJlc3Bv
bmRpbmcgaW50ZXJuYWwgc2xvdCBvZiB0aGlzIENvbGxhdG9yIG9iamVjdCAoc2VlIDEwLjQpOiBs
b2NhbGUsIHVzYWdlLCBzZW5zaXRpdml0eSwgaWdub3JlUHVuY3R1YXRpb24sIGNvbGxhdGlvbiwg
YXMgd2VsbCBhcyB0aG9zZSBwcm9wZXJ0aWVzIHNob3duIGluIFRhYmxlIDEgd2hvc2Uga2V5cyBh
cmUgaW5jbHVkZWQgaW4gdGhlICVDb2xsYXRvciVbW3JlbGV2YW50RXh0ZW5zaW9uS2V5c11dIGlu
dGVybmFsIHNsb3Qgb2YgdGhlIHN0YW5kYXJkIGJ1aWx0LWluIG9iamVjdCB0aGF0IGlzIHRoZSBp
bml0aWFsIHZhbHVlIG9mIEludGwuQ29sbGF0b3IuCisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9
IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworCisgICAgLy8gRklYTUU6IFBvcHVsYXRlIG9i
amVjdCBmcm9tIGludGVybmFsIHNsb3RzLgorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShv
cHRpb25zKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5U
TCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRv
clByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9y
UHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjgxNjQyNjc5ZTlmNTEyMTQ1Y2RmN2UwMmNjYWY0Njk3
ZmViN2NjMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxDb2xsYXRvclByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgSW50bENvbGxhdG9yUHJvdG90eXBlX2gKKyNkZWZpbmUgSW50bENv
bGxhdG9yUHJvdG90eXBlX2gKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSW50bENv
bGxhdG9yLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIEludGxDb2xsYXRvclByb3RvdHlwZSA6IHB1YmxpYyBJbnRsQ29sbGF0b3IgeworcHVibGlj
OgorICAgIHR5cGVkZWYgSW50bENvbGxhdG9yIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgSW50bENvbGxhdG9yUHJvdG90eXBlKiBjcmVh
dGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAg
ICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
Jik7CisKK3ByaXZhdGU6CisgICAgSW50bENvbGxhdG9yUHJvdG90eXBlKFZNJiwgU3RydWN0dXJl
Kik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsQ29sbGF0b3JQ
cm90b3R5cGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
YXRlVGltZUZvcm1hdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzgzOWJhZGMzYWU5MDM5YmZhZmQwNmZjMDFk
ZDgyM2NmOGRmZjI2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5j
b20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRp
bWVGb3JtYXQuaCIKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiRGF0ZUNvbnN0cnVj
dG9yLmgiCisjaW5jbHVkZSAiRGF0ZUluc3RhbmNlLmgiCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNp
bmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkludGxP
YmplY3QuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJTbG90
VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bERhdGVUaW1lRm9ybWF0OjpzX2luZm8g
PSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxE
YXRlVGltZUZvcm1hdCkgfTsKKworSW50bERhdGVUaW1lRm9ybWF0KiBJbnRsRGF0ZVRpbWVGb3Jt
YXQ6OmNyZWF0ZShWTSYgdm0sIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKiBjb25zdHJ1
Y3RvcikKK3sKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEludGxEYXRlVGltZUZvcm1hdD4odm0uaGVhcCkpIEludGxEYXRlVGltZUZv
cm1hdCh2bSwgY29uc3RydWN0b3ItPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkpOworICAgIGZv
cm1hdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBmb3JtYXQ7Cit9CisKK1N0cnVj
dHVyZSogSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxEYXRlVGltZUZv
cm1hdDo6SW50bERhdGVUaW1lRm9ybWF0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgOiBKU0Rlc3RydWN0aWJsZU9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIElu
dGxEYXRlVGltZUZvcm1hdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Cit9CisKK3Zv
aWQgSW50bERhdGVUaW1lRm9ybWF0OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0
aWNfY2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihjZWxsKS0+SW50bERhdGVUaW1lRm9ybWF0Ojp+
SW50bERhdGVUaW1lRm9ybWF0KCk7Cit9CisKK3ZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSW50
bERhdGVUaW1lRm9ybWF0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+
KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ib3VuZEZvcm1hdCk7Cit9CisKK3ZvaWQg
SW50bERhdGVUaW1lRm9ybWF0OjpzZXRCb3VuZEZvcm1hdChWTSYgdm0sIEpTQm91bmRGdW5jdGlv
biogZm9ybWF0KQoreworICAgIG1fYm91bmRGb3JtYXQuc2V0KHZtLCB0aGlzLCBmb3JtYXQpOwor
fQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdEZ1bmNG
b3JtYXREYXRlVGltZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTIuMy40IERhdGVUaW1l
IEZvcm1hdCBGdW5jdGlvbnMgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBMZXQgZHRmIGJlIHRo
ZSB0aGlzIHZhbHVlLgorICAgIEludGxEYXRlVGltZUZvcm1hdCogZm9ybWF0ID0ganNEeW5hbWlj
Q2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgLy8gMi4g
QXNzZXJ0OiBUeXBlKGR0ZikgaXMgT2JqZWN0IGFuZCBkdGYgaGFzIGFuIFtbaW5pdGlhbGl6ZWRE
YXRlVGltZUZvcm1hdF1dIGludGVybmFsIHNsb3Qgd2hvc2UgdmFsdWUgaXMgdHJ1ZS4KKyAgICBp
ZiAoIWZvcm1hdCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihleGVjKSk7CisKKyAgICBKU1ZhbHVlIGRhdGUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBk
b3VibGUgdmFsdWU7CisKKyAgICAvLyAzLiBJZiBkYXRlIGlzIG5vdCBwcm92aWRlZCBvciBpcyB1
bmRlZmluZWQsIHRoZW4KKyAgICBpZiAoZGF0ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIC8v
IGEuIExldCB4IGJlICVEYXRlX25vdyUoKS4KKyAgICAgICAgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZGF0ZU5vdyhleGVjKSkudG9OdW1iZXIoZXhlYyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
Ly8gNC4gRWxzZQorICAgICAgICAvLyBhLiBMZXQgeCBiZSBUb051bWJlcihkYXRlKS4KKyAgICAg
ICAgdmFsdWUgPSBkYXRlLnRvTnVtYmVyKGV4ZWMpOworICAgICAgICAvLyBiLiBSZXR1cm5JZkFi
cnVwdCh4KS4KKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICB9CisKKyAgICAvLyA1
LiBSZXR1cm4gRm9ybWF0RGF0ZVRpbWUoZHRmLCB4KS4KKworICAgIC8vIDEyLjMuNCBGb3JtYXRE
YXRlVGltZSBhYnN0cmFjdCBvcGVyYXRpb24gKEVDTUEtNDAyIDIuMCkKKworICAgIC8vIDEuIElm
IHggaXMgbm90IGEgZmluaXRlIE51bWJlciwgdGhlbiB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0
aW9uLgorICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiZGF0ZSB2YWx1
ZSBpcyBub3QgZmluaXRlIGluIERhdGVUaW1lRm9ybWF0LmZvcm1hdCgpIikpKTsKKworICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQgMiAtIDkKKworICAgIC8vIFJldHVybiBuZXcgRGF0ZSh2YWx1ZSku
dG9TdHJpbmcoKSB1bnRpbCBwcm9wZXJseSBpbXBsZW1lbnRlZC4KKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUo
KS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgRGF0ZUluc3RhbmNlKiBkID0gRGF0ZUluc3RhbmNlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdC0+ZGF0ZVN0cnVjdHVyZSgpLCB2YWx1ZSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKGQpLnRvU3RyaW5nKGV4ZWMpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2RhZWQxMzhmYjA4ZGNmYTNiZTY3ZDM3YzgzYTQ3ZGI0YWFiY2JkNwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCkBA
IC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVy
ICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW50bERhdGVU
aW1lRm9ybWF0X2gKKyNkZWZpbmUgSW50bERhdGVUaW1lRm9ybWF0X2gKKworI2lmIEVOQUJMRShJ
TlRMKQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOworY2xhc3MgSlNCb3Vu
ZEZ1bmN0aW9uOworCitjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXQgOiBwdWJsaWMgSlNEZXN0cnVj
dGlibGVPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3Qg
QmFzZTsKKworICAgIHN0YXRpYyBJbnRsRGF0ZVRpbWVGb3JtYXQqIGNyZWF0ZShWTSYsIEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVf
SU5GTzsKKworICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGb3JtYXQoKSBjb25zdCB7IHJldHVy
biBtX2JvdW5kRm9ybWF0LmdldCgpOyB9CisgICAgdm9pZCBzZXRCb3VuZEZvcm1hdChWTSYsIEpT
Qm91bmRGdW5jdGlvbiopOworCitwcm90ZWN0ZWQ6CisgICAgSW50bERhdGVUaW1lRm9ybWF0KFZN
JiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgV3JpdGVCYXJyaWVyPEpTQm91bmRGdW5jdGlv
bj4gbV9ib3VuZEZvcm1hdDsKK307CisgICAgCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRlVGltZShFeGVjU3RhdGUqKTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKworI2VuZGlmIC8vIElu
dGxEYXRlVGltZUZvcm1hdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGI4ZDQ2MGQyNjc0MWE0YjkzMzZiOGNiMGY4YjY0ZmI3OGQwNjg3ZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDE4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IuaCIKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNs
dWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiTG9va3Vw
LmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJl
SW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFM
TFlfREVTVFJVQ1RJQkxFKEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKTsKKworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRlICJJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NvbnN0IENsYXNzSW5mbyBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAmZGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yLmx1dC5oCitAYmVnaW4gZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclRhYmxlCisgIHN1cHBv
cnRlZExvY2FsZXNPZiAgICAgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1
bmNTdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVu
ZAorKi8KKworSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqIEludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlKiBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSwgU3RydWN0dXJl
KiBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSkKK3sKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2
bSwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKTsKKyAg
ICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3I6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3Zv
aWQgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSwgU3Ry
dWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSwgQVNDSUlMaXRlcmFsKCJEYXRlVGltZUZvcm1hdCIpKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBkYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgbV9k
YXRlVGltZUZvcm1hdFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIGRhdGVUaW1lRm9ybWF0U3RydWN0
dXJlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGF0
ZVRpbWVGb3JtYXQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDEyLjEuMiBJbnRsLkRhdGVU
aW1lRm9ybWF0IChbbG9jYWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQwMiAyLjApCisgICAgLy8g
MS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZl
IGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KKyAgICBK
U1ZhbHVlIG5ld1RhcmdldCA9IGV4ZWMtPm5ld1RhcmdldCgpOworICAgIGlmICghbmV3VGFyZ2V0
IHx8IG5ld1RhcmdldC5pc1VuZGVmaW5lZCgpKQorICAgICAgICBuZXdUYXJnZXQgPSBleGVjLT5j
YWxsZWUoKTsKKworICAgIC8vIDIuIExldCBkYXRlVGltZUZvcm1hdCBiZSBPcmRpbmFyeUNyZWF0
ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVEYXRlVGltZUZvcm1hdFByb3RvdHlwZSUpLgor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGlt
ZUZvcm1hdCA9IEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSkpOworICAgIGlmIChkYXRlVGlt
ZUZvcm1hdCAmJiAhanNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcio+
KG5ld1RhcmdldCkpIHsKKyAgICAgICAgSlNWYWx1ZSBwcm90byA9IGFzT2JqZWN0KG5ld1Rhcmdl
dCktPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKKyAgICAgICAg
YXNPYmplY3QoZGF0ZVRpbWVGb3JtYXQpLT5zZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhleGVj
LCBwcm90byk7CisgICAgfQorCisgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQoZGF0ZVRpbWVGb3Jt
YXQpLgorICAgIEFTU0VSVChkYXRlVGltZUZvcm1hdCk7CisKKyAgICAvLyA0LiBSZXR1cm4gSW5p
dGlhbGl6ZURhdGVUaW1lRm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKS4K
KyAgICAvLyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShJbml0aWFsaXplRGF0ZVRpbWVG
b3JtYXQoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpKTsKKworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQpOworfQorICAgIAorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsSW50bERhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICAvLyAxMi4xLjIgSW50bC5EYXRlVGltZUZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11d
KSAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxl
dCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1Rh
cmdldCBiZSBOZXdUYXJnZXQuCisgICAgLy8gTmV3VGFyZ2V0IGlzIGFsd2F5cyB1bmRlZmluZWQg
d2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlvbi4KKworICAgIC8vIDIuIExldCBkYXRlVGltZUZvcm1h
dCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1Y3RvcihuZXdUYXJnZXQsICVEYXRlVGltZUZv
cm1hdFByb3RvdHlwZSUpLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSW50bERhdGVU
aW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKHZt
LCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSkp
OworCisgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQoZGF0ZVRpbWVGb3JtYXQpLgorICAgIEFTU0VS
VChkYXRlVGltZUZvcm1hdCk7CisKKyAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZURhdGVUaW1l
Rm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBGSVhNRTog
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShJbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoZGF0ZVRpbWVG
b3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
ZGF0ZVRpbWVGb3JtYXQpOworfQorCitDb25zdHJ1Y3RUeXBlIEludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0
cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1
Y3RJbnRsRGF0ZVRpbWVGb3JtYXQ7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQor
CitDYWxsVHlwZSBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlv
biA9IGNhbGxJbnRsRGF0ZVRpbWVGb3JtYXQ7CisgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKK30K
KworYm9vbCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlv
blNsb3Q8SW50ZXJuYWxGdW5jdGlvbj4oZXhlYywgZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclRh
YmxlLCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgLy8gMTIuMi4yIEludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9j
YWxlc09mKGxvY2FsZXMgWywgb3B0aW9uc10pIChFQ01BLTQwMiAyLjApCisKKyAgICAvLyAxLiBM
ZXQgYXZhaWxhYmxlTG9jYWxlcyBiZSAlRGF0ZVRpbWVGb3JtYXQlLltbYXZhaWxhYmxlTG9jYWxl
c11dLgorICAgIC8vIEZJWE1FOiBhdmFpbGFibGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvcjo6Z2V0QXZhaWxhYmxlTG9jYWxlcygpCisKKyAgICAvLyAyLiBMZXQgcmVxdWVzdGVkTG9j
YWxlcyBiZSBDYW5vbmljYWxpemVMb2NhbGVMaXN0KGxvY2FsZXMpLgorICAgIC8vIEZJWE1FOiBy
ZXF1ZXN0ZWQgPSBDYW5vbmljYWxpemVMb2NhbGVMaXN0KGxvY2FsZXMpCisKKyAgICAvLyAzLiBS
ZXR1cm4gU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVz
LCBvcHRpb25zKS4KKyAgICAvLyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTdXBwb3J0
ZWRMb2NhbGVzKGF2YWlsYWJsZSwgcmVxdWVzdGVkLCBvcHRpb25zKSk7CisKKyAgICAvLyBSZXR1
cm4gZW1wdHkgYXJyYXkgdW50aWwgcHJvcGVybHkgaW1wbGVtZW50ZWQuCisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2Fs
bGVlKCktPmdsb2JhbE9iamVjdCgpOworICAgIEpTQXJyYXkqIHN1cHBvcnRlZExvY2FsZXMgPSBK
U0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQp
LCAwKTsKKyAgICBpZiAoIXN1cHBvcnRlZExvY2FsZXMpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcyk7Cit9CisgICAgCit2b2lkIEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihjZWxsKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUpOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2YwNDNhN2U3MGE0MmZmZWFmZjJkOGRiYjU2MGViYTFjMzNh
Y2E1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNv
bSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcl9oCisj
ZGVmaW5lIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yX2gKKworI2lmIEVOQUJMRShJTlRM
KQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgSW50bERhdGVUaW1lRm9ybWF0OworY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlOworCitjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRl
cm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFz
ZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKwor
ICAgIERFQ0xBUkVfSU5GTzsKKworICAgIFN0cnVjdHVyZSogZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLmdldCgpOyB9CisK
K3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlKiwgU3RydWN0dXJlKik7CisKK3ByaXZhdGU6CisgICAgSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0
VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0
aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Rh
dGVUaW1lRm9ybWF0U3RydWN0dXJlOworfTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlKik7CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNzliOTI5NWNkYzM2OTliYmUxYTk0ODM5ZGVkNWE4ZTdiZDU5MDE5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZS5oIgorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2lu
Y2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3Iu
aCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitT
VEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVu
Y1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xh
c3NJbmZvIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6c19pbmZvID0geyAiT2JqZWN0Iiwg
JkludGxEYXRlVGltZUZvcm1hdDo6c19pbmZvLCAmZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVUYWJs
ZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUpIH07CisK
Ky8qIFNvdXJjZSBmb3IgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oCitAYmVnaW4g
ZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVUYWJsZQorICBmb3JtYXQgICAgICAgICAgIEludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29y
CisgIHJlc29sdmVkT3B0aW9ucyAgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29s
dmVkT3B0aW9ucyAgRG9udEVudW18RnVuY3Rpb24gMAorQGVuZAorKi8KKworSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2
bSwgc3RydWN0dXJlKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsRGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGU6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIDogSW50bERhdGVUaW1lRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpCit7
Cit9CisKK3ZvaWQgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIFN0cnVjdHVyZSopCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQor
Citib29sIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNs
b3Q8SlNPYmplY3Q+KGV4ZWMsIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlVGFibGUsIGpzQ2FzdDxJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZUdldHRlckZvcm1hdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTIuMy4zIElu
dGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCAoRUNNQS00MDIgMi4wKQorICAgIC8v
IDEuIExldCBkdGYgYmUgdGhpcyBEYXRlVGltZUZvcm1hdCBvYmplY3QuCisgICAgSW50bERhdGVU
aW1lRm9ybWF0KiBkdGYgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KGV4ZWMt
PnRoaXNWYWx1ZSgpKTsKKyAgICAvLyAyLiBSZXR1cm5JZkFicnVwdChkdGYpLgorICAgIGlmICgh
ZHRmKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1l
Rm9ybWF0IikpKTsKKyAgICAKKyAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0ID0gZHRm
LT5ib3VuZEZvcm1hdCgpOworICAgIC8vIDMuIElmIHRoZSBbW2JvdW5kRm9ybWF0XV0gaW50ZXJu
YWwgc2xvdCBvZiB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdCBpcyB1bmRlZmluZWQsCisgICAg
aWYgKCFib3VuZEZvcm1hdCkgeworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZHRmLT5nbG9iYWxPYmplY3QoKTsKKyAg
ICAgICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRl
ZmluZWQgaW4gMTIuMy40LgorICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3Ro
IHByb3BlcnR5IGlzIDEuIChOb3RlOiBG4oCZcyBsZW5ndGggcHJvcGVydHkgd2FzIDAgaW4gRUNN
QS00MDIgMS4wKQorICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSwgSW50
bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lLCBOb0ludHJpbnNpYyk7CisgICAgICAg
IEpTQXJyYXkqIGJvdW5kQXJncyA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0s
IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIDApOworICAgICAgICBpZiAoIWJvdW5kQXJncykKKyAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4
ZWMpKTsKKyAgICAgICAgCisgICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3Jl
YXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4KKyAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIGR0ZiwgYm91bmRB
cmdzLCAxLCBBU0NJSUxpdGVyYWwoImZvcm1hdCIpKTsKKyAgICAgICAgLy8gZC4gU2V0IGR0Zi5b
W2JvdW5kRm9ybWF0XV0gdG8gYmYuCisgICAgICAgIGR0Zi0+c2V0Qm91bmRGb3JtYXQodm0sIGJv
dW5kRm9ybWF0KTsKKyAgICB9CisgICAgLy8gNC4gUmV0dXJuIGR0Zi5bW2JvdW5kRm9ybWF0XV0u
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShib3VuZEZvcm1hdCk7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29s
dmVkT3B0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTIuMy41IEludGwuRGF0ZVRp
bWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCisgICAg
SW50bERhdGVUaW1lRm9ybWF0KiBkdGYgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1h
dCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWR0ZikKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludGwuRGF0
ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdCIpKSk7CisK
KyAgICAvLyBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIG5ldyBvYmplY3Qgd2hvc2UgcHJvcGVydGll
cyBhbmQgYXR0cmlidXRlcyBhcmUgc2V0IGFzIGlmIGNvbnN0cnVjdGVkIGJ5IGFuIG9iamVjdCBs
aXRlcmFsIGFzc2lnbmluZyB0byBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB0aGUg
dmFsdWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJuYWwgc2xvdCBvZiB0aGlzIERhdGVUaW1l
Rm9ybWF0IG9iamVjdCAoc2VlIDEyLjQpOiBsb2NhbGUsIGNhbGVuZGFyLCBudW1iZXJpbmdTeXN0
ZW0sIHRpbWVab25lLCBob3VyMTIsIHdlZWtkYXksIGVyYSwgeWVhciwgbW9udGgsIGRheSwgaG91
ciwgbWludXRlLCBzZWNvbmQsIGFuZCB0aW1lWm9uZU5hbWUuIFByb3BlcnRpZXMgd2hvc2UgY29y
cmVzcG9uZGluZyBpbnRlcm5hbCBzbG90cyBhcmUgbm90IHByZXNlbnQgYXJlIG5vdCBhc3NpZ25l
ZC4KKyAgICAvLyBOb3RlOiBJbiB0aGlzIHZlcnNpb24gb2YgdGhlIEVDTUFTY3JpcHQgMjAxNSBJ
bnRlcm5hdGlvbmFsaXphdGlvbiBBUEksIHRoZSB0aW1lWm9uZSBwcm9wZXJ0eSB3aWxsIGJlIHRo
ZSBuYW1lIG9mIHRoZSBkZWZhdWx0IHRpbWUgem9uZSBpZiBubyB0aW1lWm9uZSBwcm9wZXJ0eSB3
YXMgcHJvdmlkZWQgaW4gdGhlIG9wdGlvbnMgb2JqZWN0IHByb3ZpZGVkIHRvIHRoZSBJbnRsLkRh
dGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yLiBUaGUgcHJldmlvdXMgdmVyc2lvbiBsZWZ0IHRoZSB0
aW1lWm9uZSBwcm9wZXJ0eSB1bmRlZmluZWQgaW4gdGhpcyBjYXNlLgorCisgICAgSlNPYmplY3Qq
IG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKworICAgIC8vIEZJWE1FOiBQ
b3B1bGF0ZSBvYmplY3QgZnJvbSBpbnRlcm5hbCBzbG90cy4KKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUob3B0aW9ucyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
RU5BQkxFKElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyZmQ1ZTM0ZWE3
OTU4NmU0Nzg5NmZhZmZjNDRlNWU2ZmE2MTU5Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaApAQCAt
MCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAo
dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZV9oCisjZGVmaW5lIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZV9o
CisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgor
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUgOiBwdWJsaWMgSW50bERhdGVUaW1lRm9ybWF0IHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIEludGxEYXRlVGltZUZvcm1hdCBCYXNlOworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGljIEludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYsIFN0cnVjdHVyZSopOworCitwcml2YXRlOgorICAgIEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJ
TlRMKQorCisjZW5kaWYgLy8gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTM5ZGM1YjE5ZWE0OGVjYjRhNGFlMzE3OTBlMzA5ZWI0YWM3NmFiOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQu
Y3BwCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFu
V2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorCisjaWYgRU5BQkxFKElO
VEwpCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVu
Y3Rpb24uaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2Vs
bElubGluZXMuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJT
dHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8g
SW50bE51bWJlckZvcm1hdDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShJbnRsTnVtYmVyRm9ybWF0KSB9OworCitJbnRsTnVtYmVyRm9y
bWF0KiBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IqIGNvbnN0cnVjdG9yKQoreworICAgIEludGxOdW1iZXJGb3JtYXQqIGZvcm1hdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxOdW1iZXJGb3JtYXQ+KHZtLmhlYXApKSBJ
bnRsTnVtYmVyRm9ybWF0KHZtLCBjb25zdHJ1Y3Rvci0+bnVtYmVyRm9ybWF0U3RydWN0dXJlKCkp
OworICAgIGZvcm1hdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBmb3JtYXQ7Cit9
CisKK1N0cnVjdHVyZSogSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsTnVt
YmVyRm9ybWF0OjpJbnRsTnVtYmVyRm9ybWF0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgOiBKU0Rlc3RydWN0aWJsZU9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lk
IEludGxOdW1iZXJGb3JtYXQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworfQorCit2
b2lkIEludGxOdW1iZXJGb3JtYXQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRp
Y19jYXN0PEludGxOdW1iZXJGb3JtYXQqPihjZWxsKS0+SW50bE51bWJlckZvcm1hdDo6fkludGxO
dW1iZXJGb3JtYXQoKTsKK30KKwordm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSW50bE51bWJlckZv
cm1hdCogdGhpc09iamVjdCA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oY2VsbCk7CisgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5kRm9ybWF0KTsKK30KKwordm9pZCBJbnRsTnVtYmVyRm9y
bWF0OjpzZXRCb3VuZEZvcm1hdChWTSYgdm0sIEpTQm91bmRGdW5jdGlvbiogZm9ybWF0KQorewor
ICAgIG1fYm91bmRGb3JtYXQuc2V0KHZtLCB0aGlzLCBmb3JtYXQpOworfQorCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyKEV4ZWNT
dGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMS4zLjQgRm9ybWF0IE51bWJlciBGdW5jdGlvbnMgKEVD
TUEtNDAyIDIuMCkKKyAgICAvLyAxLiBMZXQgbmYgYmUgdGhlIHRoaXMgdmFsdWUuCisgICAgSW50
bE51bWJlckZvcm1hdCogZm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4o
ZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIC8vIDIuIEFzc2VydDogVHlwZShuZikgaXMgT2JqZWN0
IGFuZCBuZiBoYXMgYW4gW1tpbml0aWFsaXplZE51bWJlckZvcm1hdF1dIGludGVybmFsIHNsb3Qg
d2hvc2UgdmFsdWUgaXMgdHJ1ZS4KKyAgICBpZiAoIWZvcm1hdCkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisKKyAgICAvLyAzLiBJZiB2YWx1
ZSBpcyBub3QgcHJvdmlkZWQsIGxldCB2YWx1ZSBiZSB1bmRlZmluZWQuCisgICAgLy8gNC4gTGV0
IHggYmUgVG9OdW1iZXIodmFsdWUpLgorICAgIGRvdWJsZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50
KDApLnRvTnVtYmVyKGV4ZWMpOworICAgIC8vIDUuIFJldHVybklmQWJydXB0KHgpLgorICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKworICAgIC8vIDYuIFJldHVybiBGb3JtYXROdW1iZXIobmYsIHgpLgor
ICAgIAorICAgIC8vIDExLjMuNCBGb3JtYXROdW1iZXIgYWJzdHJhY3Qgb3BlcmF0aW9uIChFQ01B
LTQwMiAyLjApCisgICAgLy8gRklYTUU6IEltcGxlbWVudCBGb3JtYXROdW1iZXIuCisKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZhbHVlKS50b1N0cmluZyhleGVjKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2MyNTM4ZjliZmJhMzBlNzQzODIxYjJmMGQxODFlNjM4NzJhMTIwOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaApA
QCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25l
ciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxOdW1i
ZXJGb3JtYXRfaAorI2RlZmluZSBJbnRsTnVtYmVyRm9ybWF0X2gKKworI2lmIEVOQUJMRShJTlRM
KQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvcjsKK2NsYXNzIEpTQm91bmRGdW5j
dGlvbjsKKworY2xhc3MgSW50bE51bWJlckZvcm1hdCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9i
amVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwor
CisgICAgc3RhdGljIEludGxOdW1iZXJGb3JtYXQqIGNyZWF0ZShWTSYsIEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3RvciopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAg
ICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEZv
cm1hdC5nZXQoKTsgfQorICAgIHZvaWQgc2V0Qm91bmRGb3JtYXQoVk0mLCBKU0JvdW5kRnVuY3Rp
b24qKTsKKworcHJvdGVjdGVkOgorICAgIEludGxOdW1iZXJGb3JtYXQoVk0mLCBTdHJ1Y3R1cmUq
KTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CisKKyAgICBXcml0ZUJhcnJpZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2JvdW5kRm9y
bWF0OworfTsKKyAgICAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZv
cm1hdEZ1bmNGb3JtYXROdW1iZXIoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsTnVtYmVyRm9ybWF0X2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4NjM5ZDZiMTRjNzAwN2E4NzEw
MjU1NzdhYWUyZWQyOWZiY2QyZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEs
MTgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFs
ZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCIKKworI2lmIEVOQUJMRShJTlRM
KQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisj
aW5jbHVkZSAiSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxPYmpl
Y3QuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElu
bGluZXMuaCIKKyNpbmNsdWRlICJMb29rdXAuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGlu
ZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yKTsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUq
KTsKKworfQorCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmbnVtYmVyRm9y
bWF0Q29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmx1dC5oCitAYmVnaW4gbnVtYmVyRm9ybWF0Q29uc3RydWN0b3JUYWJsZQorICBzdXBwb3J0
ZWRMb2NhbGVzT2YgICAgICAgICAgICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1
cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisq
LworCitJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGUqIG51bWJlckZvcm1hdFByb3RvdHlwZSwgU3RydWN0dXJlKiBudW1iZXJGb3Jt
YXRTdHJ1Y3R1cmUpCit7CisgICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKiBjb25zdHJ1
Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvcj4odm0uaGVhcCkpIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJl
KTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIG51bWJlckZvcm1hdFByb3Rv
dHlwZSwgbnVtYmVyRm9ybWF0U3RydWN0dXJlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9
CisKK1N0cnVjdHVyZSogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9
CisKK0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6SW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9u
KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIG51bWJl
ckZvcm1hdFByb3RvdHlwZSwgU3RydWN0dXJlKiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUpCit7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgiTnVtYmVyRm9ybWF0Iikp
OworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIG51bWJlckZvcm1hdFByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERl
bGV0ZSk7CisgICAgbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBudW1iZXJG
b3JtYXRTdHJ1Y3R1cmUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdEludGxOdW1iZXJGb3JtYXQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDExLjEuMiBJ
bnRsLk51bWJlckZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQor
ICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhl
IGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQu
CisgICAgSlNWYWx1ZSBuZXdUYXJnZXQgPSBleGVjLT5uZXdUYXJnZXQoKTsKKyAgICBpZiAoIW5l
d1RhcmdldCB8fCBuZXdUYXJnZXQuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgbmV3VGFyZ2V0ID0g
ZXhlYy0+Y2FsbGVlKCk7CisKKyAgICAvLyAyLiBMZXQgbnVtYmVyRm9ybWF0IGJlIE9yZGluYXJ5
Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJU51bWJlckZvcm1hdFByb3RvdHlwZSUp
LgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVy
Rm9ybWF0ID0gSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKHZtLCBqc0Nhc3Q8SW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpKTsKKyAgICBpZiAobnVtYmVyRm9ybWF0
ICYmICFqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KG5ld1Rhcmdl
dCkpIHsKKyAgICAgICAgSlNWYWx1ZSBwcm90byA9IGFzT2JqZWN0KG5ld1RhcmdldCktPmdldERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKKyAgICAgICAgYXNPYmplY3Qo
bnVtYmVyRm9ybWF0KS0+c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soZXhlYywgcHJvdG8pOwor
ICAgIH0KKworICAgIC8vIDMuIFJldHVybklmQWJydXB0KG51bWJlckZvcm1hdCkuCisgICAgQVNT
RVJUKG51bWJlckZvcm1hdCk7CisKKyAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZU51bWJlckZv
cm1hdChudW1iZXJGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpLgorICAgIC8vIEZJWE1FOiByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEluaXRpYWxpemVOdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBs
b2NhbGVzLCBvcHRpb25zKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZv
cm1hdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxOdW1iZXJG
b3JtYXQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDExLjEuMiBJbnRsLk51bWJlckZvcm1h
dCAoW2xvY2FsZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIElmIE5l
d1RhcmdldCBpcyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlv
biBvYmplY3QsIGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCisgICAgLy8gTmV3VGFy
Z2V0IGlzIGFsd2F5cyB1bmRlZmluZWQgd2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlvbi4KKworICAg
IC8vIDIuIExldCBudW1iZXJGb3JtYXQgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0b3Io
bmV3VGFyZ2V0LCAlTnVtYmVyRm9ybWF0UHJvdG90eXBlJSkuCisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBJbnRsTnVtYmVyRm9y
bWF0OjpjcmVhdGUodm0sIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqPihleGVj
LT5jYWxsZWUoKSkpOworCisgICAgLy8gMy4gUmV0dXJuSWZBYnJ1cHQobnVtYmVyRm9ybWF0KS4K
KyAgICBBU1NFUlQobnVtYmVyRm9ybWF0KTsKKworICAgIC8vIDQuIFJldHVybiBJbml0aWFsaXpl
TnVtYmVyRm9ybWF0KG51bWJlckZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gRklY
TUU6IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSW5pdGlhbGl6ZU51bWJlckZvcm1hdChudW1iZXJG
b3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
bnVtYmVyRm9ybWF0KTsKK30KKworQ29uc3RydWN0VHlwZSBJbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0
RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdElu
dGxOdW1iZXJGb3JtYXQ7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCitDYWxs
VHlwZSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENh
bGxEYXRhJiBjYWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxs
SW50bE51bWJlckZvcm1hdDsKKyAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitib29sIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SW50ZXJu
YWxGdW5jdGlvbj4oZXhlYywgbnVtYmVyRm9ybWF0Q29uc3RydWN0b3JUYWJsZSwganNDYXN0PElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8g
MTEuMi4yIEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGVzIFssIG9w
dGlvbnNdKSAoRUNNQS00MDIgMi4wKQorCisgICAgLy8gMS4gTGV0IGF2YWlsYWJsZUxvY2FsZXMg
YmUgJU51bWJlckZvcm1hdCUuW1thdmFpbGFibGVMb2NhbGVzXV0uCisgICAgLy8gRklYTUU6IGF2
YWlsYWJsZSA9IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0QXZhaWxhYmxlTG9jYWxl
cygpCisKKyAgICAvLyAyLiBMZXQgcmVxdWVzdGVkTG9jYWxlcyBiZSBDYW5vbmljYWxpemVMb2Nh
bGVMaXN0KGxvY2FsZXMpLgorICAgIC8vIEZJWE1FOiByZXF1ZXN0ZWQgPSBDYW5vbmljYWxpemVM
b2NhbGVMaXN0KGxvY2FsZXMpCisKKyAgICAvLyAzLiBSZXR1cm4gU3VwcG9ydGVkTG9jYWxlcyhh
dmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBGSVhN
RTogcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTdXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJsZSwgcmVx
dWVzdGVkLCBvcHRpb25zKSk7CisKKyAgICAvLyBSZXR1cm4gZW1wdHkgYXJyYXkgdW50aWwgcHJv
cGVybHkgaW1wbGVtZW50ZWQuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwor
ICAgIEpTQXJyYXkqIHN1cHBvcnRlZExvY2FsZXMgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRp
YWxpemVkKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVy
aW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKKyAgICBpZiAoIXN1cHBvcnRl
ZExvY2FsZXMpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9j
YWxlcyk7Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3Rvcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlz
aXRvcik7CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9udW1iZXJGb3JtYXRT
dHJ1Y3R1cmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJ
TlRMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjc1ZjEwMjE2NGNjZGYxMmNl
NTNlNWM5NDhiNmNhMTE3OTk5YWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw3
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVj
cmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3JfaAorI2RlZmluZSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JfaAorCisjaWYg
RU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBJbnRsTnVtYmVyRm9ybWF0OworY2xhc3MgSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZTsKKworY2xhc3MgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yIDogcHVibGlj
IEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlv
biBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3Rh
dGljIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwg
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisK
KyAgICBERUNMQVJFX0lORk87CisKKyAgICBTdHJ1Y3R1cmUqIG51bWJlckZvcm1hdFN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLmdldCgpOyB9CisKK3By
b3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZSosIFN0cnVjdHVyZSopOworCitwcml2YXRlOgorICAgIEludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdl
dENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxs
VHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOworICAgIAorICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbnVtYmVyRm9y
bWF0U3RydWN0dXJlOworfTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RJbnRsTnVtYmVyRm9ybWF0KEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsSW50bE51bWJlckZvcm1hdChFeGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKworI2VuZGlmIC8vIEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhMzQ5MjI5
NGVjMzgxNmI5MWJiMWMwMDRlMjM5ZjlmZWJiZGU0ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcApA
QCAtMCwwICsxLDEzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29u
ZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCIKKworI2lmIEVOQUJM
RShJTlRMKQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0
LmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlu
bGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZ
X0RFU1RSVUNUSUJMRShJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKTsKKworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZv
cm1hdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSopOwor
Cit9CisKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6
OnNfaW5mbyA9IHsgIk9iamVjdCIsICZJbnRsTnVtYmVyRm9ybWF0OjpzX2luZm8sICZudW1iZXJG
b3JtYXRQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUu
bHV0LmgKK0BiZWdpbiBudW1iZXJGb3JtYXRQcm90b3R5cGVUYWJsZQorICBmb3JtYXQgICAgICAg
ICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQgICAgICAgICBEb250RW51
bXxBY2Nlc3NvcgorICByZXNvbHZlZE9wdGlvbnMgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVG
dW5jUmVzb2x2ZWRPcHRpb25zICBEb250RW51bXxGdW5jdGlvbiAwCitAZW5kCisqLworCitJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0s
IHN0cnVjdHVyZSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGU6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICA6IEludGxOdW1iZXJGb3JtYXQodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9p
ZCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0cnVj
dHVyZSopCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCitib29sIEludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTT2JqZWN0Pihl
eGVjLCBudW1iZXJGb3JtYXRQcm90b3R5cGVUYWJsZSwganNDYXN0PEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQo
RXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDExLjMuMyBJbnRsLk51bWJlckZvcm1hdC5wcm90
b3R5cGUuZm9ybWF0IChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gTGV0IG5mIGJlIHRoaXMgTnVt
YmVyRm9ybWF0IG9iamVjdC4KKyAgICBJbnRsTnVtYmVyRm9ybWF0KiBuZiA9IGpzRHluYW1pY0Nh
c3Q8SW50bE51bWJlckZvcm1hdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIW5mKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiKSkp
OworICAgIAorICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGb3JtYXQgPSBuZi0+Ym91bmRGb3Jt
YXQoKTsKKyAgICAvLyAyLiBJZiBuZi5bW2JvdW5kRm9ybWF0XV0gaXMgdW5kZWZpbmVkLAorICAg
IGlmICghYm91bmRGb3JtYXQpIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG5mLT5nbG9iYWxPYmplY3QoKTsKKyAg
ICAgICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRl
ZmluZWQgaW4gMTEuMy40LgorICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3Ro
IHByb3BlcnR5IGlzIDEuCisgICAgICAgIEpTRnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCBBU0NJSUxpdGVyYWwoImZvcm1hdCIp
LCBJbnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1hdE51bWJlciwgTm9JbnRyaW5zaWMpOworICAgICAg
ICBKU0FycmF5KiBib3VuZEFyZ3MgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZt
LCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2Nh
dGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKKyAgICAgICAgaWYgKCFib3VuZEFyZ3MpCisg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjKSk7CisKKyAgICAgICAgLy8gYy4gTGV0IGJmIGJlIEJvdW5kRnVuY3Rpb25DcmVhdGUoRiwg
wqt0aGlzIHZhbHVlwrspLgorICAgICAgICBib3VuZEZvcm1hdCA9IEpTQm91bmRGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVjdCwgbmYsIGJvdW5kQXJncywgMSwg
QVNDSUlMaXRlcmFsKCJmb3JtYXQiKSk7CisgICAgICAgIC8vIGQuIFNldCBuZi5bW2JvdW5kRm9y
bWF0XV0gdG8gYmYuCisgICAgICAgIG5mLT5zZXRCb3VuZEZvcm1hdCh2bSwgYm91bmRGb3JtYXQp
OworICAgIH0KKyAgICAvLyAzLiBSZXR1cm4gbmYuW1tib3VuZEZvcm1hdF1dLgorICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoYm91bmRGb3JtYXQpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMS4zLjUgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90
eXBlLnJlc29sdmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCisgICAgSW50bE51bWJlckZvcm1h
dCogbmYgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihleGVjLT50aGlzVmFsdWUo
KSk7CisgICAgaWYgKCFuZikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRp
YWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0IikpKTsKKworICAgIC8vIFRoZSBmdW5jdGlvbiByZXR1
cm5zIGEgbmV3IG9iamVjdCB3aG9zZSBwcm9wZXJ0aWVzIGFuZCBhdHRyaWJ1dGVzIGFyZSBzZXQg
YXMgaWYgY29uc3RydWN0ZWQgYnkgYW4gb2JqZWN0IGxpdGVyYWwgYXNzaWduaW5nIHRvIGVhY2gg
b2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIHRoZSB2YWx1ZSBvZiB0aGUgY29ycmVzcG9uZGlu
ZyBpbnRlcm5hbCBzbG90IG9mIHRoaXMgTnVtYmVyRm9ybWF0IG9iamVjdCAoc2VlIDExLjQpOiBs
b2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgc3R5bGUsIGN1cnJlbmN5LCBjdXJyZW5jeURpc3BsYXks
IG1pbmltdW1JbnRlZ2VyRGlnaXRzLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIG1heGltdW1GcmFj
dGlvbkRpZ2l0cywgbWluaW11bVNpZ25pZmljYW50RGlnaXRzLCBtYXhpbXVtU2lnbmlmaWNhbnRE
aWdpdHMsIGFuZCB1c2VHcm91cGluZy4gUHJvcGVydGllcyB3aG9zZSBjb3JyZXNwb25kaW5nIGlu
dGVybmFsIHNsb3RzIGFyZSBub3QgcHJlc2VudCBhcmUgbm90IGFzc2lnbmVkLgorCisgICAgSlNP
YmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKworICAgIC8vIEZJ
WE1FOiBQb3B1bGF0ZSBvYmplY3QgZnJvbSBpbnRlcm5hbCBzbG90cy4KKworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUob3B0aW9ucyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gRU5BQkxFKElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhiYzA1MWZk
ZGI4ODUyYTlhOTVmOWYxN2Q5OGFlOGNiNzg1MjExNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaApAQCAt
MCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAo
dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGVfaAorI2RlZmluZSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlX2gKKwor
I2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlIDogcHVibGljIEludGxOdW1iZXJGb3JtYXQgeworcHVibGljOgorICAgIHR5
cGVkZWYgSW50bE51bWJlckZvcm1hdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90OworCisgICAgc3RhdGljIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIGNyZWF0
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAg
IERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
LCBTdHJ1Y3R1cmUqKTsKKworcHJpdmF0ZToKKyAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
KFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAv
LyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggMTJkYTkzOGZhODEzYWUzMWYzNzU2ZGIwNGRmMDdm
YmIwOTkyZGQwYy4uYmE0NTdlNzI1NjA5MTA3ODkxMjJmNTEzNzVlZTlmZGMxMDI0ZDMyZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTI4LDYg
KzI4LDE2IEBACiAKICNpZiBFTkFCTEUoSU5UTCkKIAorI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90
eXBlLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9y
Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKKyNpbmNs
dWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIgor
I2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk9i
amVjdFByb3RvdHlwZS5oIgpAQCAtNDgsMTcgKzU4LDQzIEBAIEludGxPYmplY3Q6OkludGxPYmpl
Y3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotSW50bE9iamVjdCogSW50
bE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitJbnRsT2JqZWN0
KiBJbnRsT2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBJbnRsT2JqZWN0KiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsT2JqZWN0Pih2bS5oZWFwKSkgSW50bE9iamVjdCh2
bSwgc3RydWN0dXJlKTsKLSAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBvYmpl
Y3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBvYmplY3Q7
CiB9CiAKLXZvaWQgSW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQordm9pZCBJbnRs
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0
cyhpbmZvKCkpKTsKKworICAgIC8vIFNldCB1cCBDb2xsYXRvci4KKyAgICBJbnRsQ29sbGF0b3JQ
cm90b3R5cGUqIGNvbGxhdG9yUHJvdG90eXBlID0gSW50bENvbGxhdG9yUHJvdG90eXBlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgSW50bENvbGxhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwor
ICAgIFN0cnVjdHVyZSogY29sbGF0b3JTdHJ1Y3R1cmUgPSBJbnRsQ29sbGF0b3I6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBjb2xsYXRvclByb3RvdHlwZSk7CisgICAgSW50bENv
bGxhdG9yQ29uc3RydWN0b3IqIGNvbGxhdG9yQ29uc3RydWN0b3IgPSBJbnRsQ29sbGF0b3JDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSks
IGNvbGxhdG9yUHJvdG90eXBlLCBjb2xsYXRvclN0cnVjdHVyZSk7CisKKyAgICBjb2xsYXRvclBy
b3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PmNvbnN0cnVjdG9yLCBjb2xsYXRvckNvbnN0cnVjdG9yLCBEb250RW51bSk7CisKKyAgICAvLyBT
ZXQgdXAgTnVtYmVyRm9ybWF0LgorICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIG51bWJl
ckZvcm1hdFByb3RvdHlwZSA9IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAg
IFN0cnVjdHVyZSogbnVtYmVyRm9ybWF0U3RydWN0dXJlID0gSW50bE51bWJlckZvcm1hdDo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIG51bWJlckZvcm1hdFByb3RvdHlwZSk7Cisg
ICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKiBudW1iZXJGb3JtYXRDb25zdHJ1Y3RvciA9
IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBudW1iZXJGb3JtYXRQcm90b3R5cGUsIG51bWJlckZv
cm1hdFN0cnVjdHVyZSk7CisKKyAgICBudW1iZXJGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgbnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKKworICAgIC8vIFNldCB1cCBEYXRlVGltZUZv
cm1hdC4KKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGRhdGVUaW1lRm9ybWF0UHJv
dG90eXBlID0gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgIFN0cnVj
dHVyZSogZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSk7Cisg
ICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqIGRhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IgPSBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBl
LCBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSk7CisKKyAgICBkYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLCBkYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLCBEb250RW51bSk7CisKKyAgICAvLyA4
LjEgUHJvcGVydGllcyBvZiB0aGUgSW50bCBPYmplY3QgKEVDTUEtNDAyIDIuMCkKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Q29sbGF0b3IsIGNv
bGxhdG9yQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+TnVtYmVyRm9ybWF0LCBudW1iZXJGb3JtYXRDb25z
dHJ1Y3RvciwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5EYXRlVGltZUZvcm1hdCwgZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
ciwgRG9udEVudW0pOwogfQogCiBTdHJ1Y3R1cmUqIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCmluZGV4IGY0NWI5
YWI2NDkwMjI4ZWRlYTU3YWIyZTBiZTljMGI1YTg5ZTJmYzAuLjgzNDI4NTQyYjJkMGZiYzdlNWIx
NDRhMzZiY2JiODZlZGZjYmJlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0LmgKQEAgLTMyLDE4ICszMiwyNSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xh
c3MgSW50bENvbGxhdG9yQ29uc3RydWN0b3I7CitjbGFzcyBJbnRsQ29sbGF0b3JQcm90b3R5cGU7
CitjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcjsKK2NsYXNzIEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZTsKK2NsYXNzIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvcjsKK2Ns
YXNzIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU7CisKIGNsYXNzIEludGxPYmplY3QgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2Jq
ZWN0IEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKLSAgICBz
dGF0aWMgSW50bE9iamVjdCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIElu
dGxPYmplY3QqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxP
YmplY3QqKTsKIAogcHJpdmF0ZToKICAgICBJbnRsT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5k
ZXggMDlkZDU2YWVmZTE3ODFlYTllMDY1OTY1NjRjYjYwNGMxYmExYTAyZi4uMWNhZGZmZTViOTRm
ZTcwMDg3MTBiMmJlMWYzNWEwYTM1ODc0OTY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNDM2LDcgKzQzNiw3IEBAIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dl
ck5hbWUgIyMgQ29uc3RydWN0CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPmV2YWwsIG1fZXZhbEZ1bmN0aW9uLmdldCgpLCBEb250RW51bSk7CiAg
ICAgCiAjaWYgRU5BQkxFKElOVEwpCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPkludGwsIEludGxPYmplY3Q6OmNyZWF0ZSh2bSwgSW50bE9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBE
b250RW51bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPkludGwsIEludGxPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgSW50bE9iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51
bSk7CiAjZW5kaWYgLy8gRU5BQkxFKElOVEwpCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkpTT04sIEpTT05PYmplY3Q6OmNyZWF0ZSh2bSwgSlNP
Tk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQo
KSkpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPk1hdGgsIE1hdGhPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgTWF0aE9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBE
b250RW51bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxNjBjN2Y4MTNjYTRkOTY1YWIwZTAxOGQ4YjcyNjk2
ZWNiZWRjNzAuLmJjZTg2MGE3ZWM4MWQxZjQ2ZmY5ZDM5ZmNjMmFlYWY3OTUwMTcxOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCkBAIC0xMTcsNyArMTE3LDcgQEAgRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VF9tYWNvc3hfMTAxMDAwID0gOwogRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNv
c3hfMTAxMTAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIEVOQUJMRV9XSVJF
TEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTIwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQ7CiAKLUVOQUJMRV9JTlRMID0gOworRU5BQkxFX0lOVEwgPSBFTkFCTEVfSU5U
TDsKIAogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU1tzZGs9aXBob25lKl0gPSAkKEVOQUJMRV9J
T1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFMX1NE
SykpOwogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfWUVT
ID0gRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktp
dC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZTE2MGM3
ZjgxM2NhNGQ5NjVhYjBlMDE4ZDhiNzI2OTZlY2JlZGM3MC4uYmNlODYwYTdlYzgxZDFmNDZmZjlk
MzlmY2MyYWVhZjc5NTAxNzE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTExNyw3ICsxMTcsNyBA
QCBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEwMDAgPSA7CiBFTkFC
TEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDExMDAgPSBFTkFCTEVfV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUOwogRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNv
c3hfMTAxMjAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIAotRU5BQkxFX0lO
VEwgPSA7CitFTkFCTEVfSU5UTCA9IEVOQUJMRV9JTlRMOwogCiBFTkFCTEVfSU9TX0dFU1RVUkVf
RVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lU
SF9JTlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxfU0RLKSk7CiBFTkFCTEVfSU9TX0dFU1RVUkVf
RVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMgPSBFTkFCTEVfSU9TX0dFU1RVUkVfRVZF
TlRTOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZwppbmRleCBlMTYwYzdmODEzY2E0ZDk2NWFiMGUwMThkOGI3MjY5NmVjYmVk
YzcwLi5iY2U4NjBhN2VjODFkMWY0NmZmOWQzOWZjYzJhZWFmNzk1MDE3MTljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
ZwpAQCAtMTE3LDcgKzExNyw3IEBAIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFj
b3N4XzEwMTAwMCA9IDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEw
MTEwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiBFTkFCTEVfV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEyMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUOwogCi1FTkFCTEVfSU5UTCA9IDsKK0VOQUJMRV9JTlRMID0gRU5BQkxFX0lOVEw7CiAK
IEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNbc2RrPWlwaG9uZSpdID0gJChFTkFCTEVfSU9TX0dF
U1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES18kKFVTRV9JTlRFUk5BTF9TREspKTsK
IEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLX1lFUyA9IEVO
QUJMRV9JT1NfR0VTVFVSRV9FVkVOVFM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0
RmVhdHVyZXMuY21ha2UgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKaW5kZXgg
Yzk0M2VkZGE5ZjNlMjI0MjA5YTA5YmEyZWQ3NTZmMDVlZGZmZjU1MC4uYzUyZjk0OWZkNTNjMjgx
ZjdiODU5ZjgyYTZkMTM0MmI0MjJiNGU1YSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL1dlYktp
dEZlYXR1cmVzLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQpA
QCAtOTksNyArOTksNyBAQCBtYWNybyhXRUJLSVRfT1BUSU9OX0JFR0lOKQogICAgIFdFQktJVF9P
UFRJT05fREVGSU5FKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIICJUb2dnbGUgbW9udGggdHlwZSA8
aW5wdXQ+IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVO
QUJMRV9JTlBVVF9UWVBFX1RJTUUgIlRvZ2dsZSB0aW1lIHR5cGUgPGlucHV0PiBzdXBwb3J0IiBQ
UklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU5QVVRfVFlQRV9X
RUVLICJUb2dnbGUgd2VlayB0eXBlIDxpbnB1dD4gc3VwcG9ydCIgUFJJVkFURSBPRkYpCi0gICAg
V0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lOVEwgIlRvZ2dsZSBJbnRsIHN1cHBvcnQiIFBS
SVZBVEUgT0ZGKQorICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9JTlRMICJUb2dnbGUg
SW50bCBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJM
RV9JT1NfQUlSUExBWSAiVG9nZ2xlIGlPUyBhaXJwbGF5IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQog
ICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9JT1NfVEVYVF9BVVRPU0laSU5HICJUb2dn
bGUgaU9TIHRleHQgYXV0b3NpemluZyBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRf
T1BUSU9OX0RFRklORShFTkFCTEVfSklUICJFbmFibGUgSnVzdEluVGltZSBqYXZhc2NyaXB0IHN1
cHBvcnQiIFBSSVZBVEUgT04pCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggODBmYjdlNzQxZDhlMDk1NzMzMjNmOTJhODVhZWNiZWJkZWZlZDEyNS4u
MmRlMDY1ZWE2OGFhZmRkMjcyODlhNjUzZDVjYjQwMzQwNTQzMWMxMiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1
LTA3LTI5ICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IGJhc2ljIHR5cGVzIGZvciBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxp
emF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ2OTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKworICAg
ICAgICBFbmFibGUgZmxhZyBub3cgdGhhdCB0aGUgYmFzaWMgb2JqZWN0cyBhcmUgaW4gcGxhY2Uu
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06IEVuYWJsZWQg
SU5UTAorCiAyMDE1LTA3LTI4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgQVBJIHRvIHNldCB0aGUgbWF4aW11bSBudW1iZXIg
b2Ygd2ViIHByb2Nlc3NlcyBwZXIgV2ViS2l0V2ViQ29udGV4dApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
ZXJsL0ZlYXR1cmVMaXN0LnBtCmluZGV4IGIzZjY1YTU3OTY5MjkyZjEwMTU1NmYxNjc1MTcyYWEw
ODM0MmI5MDEuLjJiZDYxNDUyMzU4ZGRhNzMyNjBlNWRmZWRlZjZlYWUxNGNhNDJiYzUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KQEAgLTI5MSw3ICsyOTEsNyBAQCBt
eSBAZmVhdHVyZXMgPSAoCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlBVVF9UWVBFX1dFRUsi
LCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkaW5wdXRUeXBlV2Vla1N1cHBvcnQgfSwKIAogICAg
IHsgb3B0aW9uID0+ICJpbnRsIiwgZGVzYyA9PiAiVG9nZ2xlIEludGwgc3VwcG9ydCIsCi0gICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9JTlRMIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGludGxT
dXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlRMIiwgZGVmYXVsdCA9PiAxLCB2
YWx1ZSA9PiBcJGludGxTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibGVnYWN5LW5vdGlm
aWNhdGlvbnMiLCBkZXNjID0+ICJUb2dnbGUgTGVnYWN5IE5vdGlmaWNhdGlvbnMgc3VwcG9ydCIs
CiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyIsIGRlZmF1bHQg
PT4gMCwgdmFsdWUgPT4gXCRsZWdhY3lOb3RpZmljYXRpb25zU3VwcG9ydCB9LApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIw
ODRkNTg5ZDUwZDVjZGRjZWFkMDRmYmViYzkyYzcyYTM3NDI5MzUuLjM2ZDgwODg3ZDdjNTM1ODMy
MGE0ZGIyNDUyMzRhZTg2NjRhYThjOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNS0wNy0y
OSAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBiYXNpYyB0eXBlcyBmb3IgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlv
biBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NjkyNgorCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAg
QWRkIHRlc3RzIGZvciBJbnRsLkNvbGxhdG9yLCBJbnRsLk51bWJlckZvcm1hdCwgYW5kIEludGwu
RGF0ZVRpbWVGb3JtYXQKKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6IEVuYWJsZWQgaW50
bCB0ZXN0cy4KKyAgICAgICAgKiBqcy9pbnRsLWNvbGxhdG9yLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICoganMvaW50bC1jb2xsYXRvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9p
bnRsLWRhdGV0aW1lZm9ybWF0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvaW50
bC1kYXRldGltZWZvcm1hdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9pbnRsLWV4cGVjdGVk
LnR4dDogVXBkYXRlZC4KKyAgICAgICAgKiBqcy9pbnRsLW51bWJlcmZvcm1hdC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2ludGwtbnVtYmVyZm9ybWF0Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9pbnRsLWNvbGxhdG9yLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9zY3JpcHQtdGVzdHMvaW50bC1kYXRldGltZWZvcm1hdC5qczogQWRkZWQuCisgICAg
ICAgICoganMvc2NyaXB0LXRlc3RzL2ludGwtbnVtYmVyZm9ybWF0LmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9zY3JpcHQtdGVzdHMvaW50bC5qczogQWRkZWQgdGVzdHMgZm9yIENvbGxhdG9yLCBO
dW1iZXJGb3JtYXQsIGFuZCBEYXRlVGltZUZvcm1hdC4KKwogMjAxNS0wNy0xOSAgTWF0dCBSYWpj
YSAgPG1yYWpjYUBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWEgU2Vzc2lvbjogdGVzdCAnVHJh
bnNpZW50IFNvbG8nIGludGVycnVwdGlvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGE5YzczZTkw
NDI0MjhmNTllOTQ0MGNhZTI2YTc0MmMwM2ZhODU3M2IuLjE4NTJkZTE4ZWVkMDViNTYxNzBkMTQ1
YzlmNDRiZjY2YTMwYjQyMTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTMwLDYgKzUzMCwzIEBA
IHdlYmtpdC5vcmcvYi8xNDYxODIgZWRpdGluZy9zZWxlY3Rpb24vbGVhay1kb2N1bWVudC13aXRo
LXNlbGVjdGlvbi1pbnNpZGUuaHRtbCBbCiAKIHdlYmtpdC5vcmcvYi8xNDY0MzQgZmFzdC9kb20v
SFRNTEltYWdlRWxlbWVudC9zaXplcyBbIFNraXAgXQogCi0jIEludGwgaXMgbm90IGVuYWJsZWQg
eWV0Ci1qcy9pbnRsLmh0bWwgWyBTa2lwIF0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
aW50bC1jb2xsYXRvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWNvbGxhdG9y
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYWNlNDk5NjBhYzI4ZWM2MGE4ODlkYmVhYTRlZjhh
NWY5MTQyYzlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvaW50bC1jb2xsYXRv
ci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0NyBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGUgYmVo
YXZpb3Igb2YgSW50bC5Db2xsYXRvciBhcyBkZXNjcmliZWQgaW4gdGhlIEVDTUFTY3JpcHQgSW50
ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmljYXRpb24gKEVDTUEtNDAyIDIuMCkuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEludGwuQ29sbGF0b3IgaXMgYW4gaW5z
dGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgSW50bC5Db2xsYXRvcigpIGlzIGFuIGluc3RhbmNlIG9m
IEludGwuQ29sbGF0b3IKK1BBU1MgSW50bC5Db2xsYXRvci5jYWxsKHt9KSBpcyBhbiBpbnN0YW5j
ZSBvZiBJbnRsLkNvbGxhdG9yCitQQVNTIG5ldyBJbnRsLkNvbGxhdG9yKCkgaXMgYW4gaW5zdGFu
Y2Ugb2YgSW50bC5Db2xsYXRvcgorUEFTUyBuZXcgRGVyaXZlZENvbGxhdG9yIGlzIGFuIGluc3Rh
bmNlIG9mIERlcml2ZWRDb2xsYXRvcgorUEFTUyBuZXcgRGVyaXZlZENvbGxhdG9yIGlzIGFuIGlu
c3RhbmNlIG9mIEludGwuQ29sbGF0b3IKK1BBU1MgbmV3IERlcml2ZWRDb2xsYXRvcigpLmNvbXBh
cmUoJ2EnLCAnYicpIGlzIC0xCitQQVNTIE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgRGVyaXZl
ZENvbGxhdG9yKSBpcyBEZXJpdmVkQ29sbGF0b3IucHJvdG90eXBlCitQQVNTIE9iamVjdC5nZXRQ
cm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERlcml2ZWRDb2xsYXRvcikpIGlz
IEludGwuQ29sbGF0b3IucHJvdG90eXBlCitQQVNTIEludGwuQ29sbGF0b3IubGVuZ3RoIGlzIDAK
K1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLCAncHJv
dG90eXBlJykud3JpdGFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihJbnRsLkNvbGxhdG9yLCAncHJvdG90eXBlJykuZW51bWVyYWJsZSBpcyBmYWxzZQor
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IsICdwcm90
b3R5cGUnKS5jb25maWd1cmFibGUgaXMgZmFsc2UKK1BBU1MgSW50bC5Db2xsYXRvci5zdXBwb3J0
ZWRMb2NhbGVzT2YubGVuZ3RoIGlzIDEKK1BBU1MgSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRMb2Nh
bGVzT2YoKSBpcyBhbiBpbnN0YW5jZSBvZiBBcnJheQorUEFTUyBJbnRsLkNvbGxhdG9yLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciBpcyBJbnRsLkNvbGxhdG9yCitQQVNTIEludGwuQ29sbGF0b3IucHJv
dG90eXBlLmNvbXBhcmUgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSwgJ2NvbXBhcmUn
KS5nZXQgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSwgJ2NvbXBhcmUnKS5zZXQgaXMg
dW5kZWZpbmVkCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xs
YXRvci5wcm90b3R5cGUsICdjb21wYXJlJykuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IucHJvdG90eXBlLCAnY29t
cGFyZScpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQQVNTIEludGwuQ29sbGF0b3IucHJvdG90eXBl
LmNvbXBhcmUubGVuZ3RoIGlzIDIKK1BBU1MgT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnY29t
cGFyZScsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvci5wcm90
b3R5cGUsICdjb21wYXJlJykpLmNvbXBhcmUgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogSW50
bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
biBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvci4KK1BBU1MgSW50bC5Db2xsYXRvci5w
cm90b3R5cGUuY29tcGFyZSAhPT0gSW50bC5Db2xsYXRvcigpLmNvbXBhcmUgaXMgdHJ1ZQorUEFT
UyBuZXcgSW50bC5Db2xsYXRvcigpLmNvbXBhcmUgIT09IG5ldyBJbnRsLkNvbGxhdG9yKCkuY29t
cGFyZSBpcyB0cnVlCitQQVNTIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUoeyB0b1N0
cmluZygpIHsgdGhyb3cgRXJyb3IoJzYnKSB9IH0sIHsgdG9TdHJpbmcoKSB7ICsrYmFkQ2FsbHM7
IHJldHVybiAnJzsgfSB9KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IDYuCitQQVNTIGJhZENhbGxz
IGlzIDAKK1BBU1MgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSgnYScsIHsgdG9TdHJp
bmcoKSB7IHRocm93IEVycm9yKCc4JykgfSB9KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IDguCitQ
QVNTIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUuY2FsbChudWxsLCAnYScsICdiJykg
aXMgLTEKK1BBU1MgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZS5jYWxsKEludGwuQ29s
bGF0b3IoJ2VuJywgeyBzZW5zaXRpdml0eTonYmFzZScgfSksICdBJywgJ2EnKSBpcyAtMQorUEFT
UyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlLmNhbGwoNSwgJ2EnLCAnYicpIGlzIC0x
CitQQVNTIG5ldyBJbnRsLkNvbGxhdG9yKCkuY29tcGFyZS5jYWxsKG51bGwsICdhJywgJ2InKSBp
cyAtMQorUEFTUyBuZXcgSW50bC5Db2xsYXRvcigpLmNvbXBhcmUuY2FsbChJbnRsLkNvbGxhdG9y
KCdlbicsIHsgc2Vuc2l0aXZpdHk6J2Jhc2UnIH0pLCAnQScsICdhJykgaXMgLTEKK1BBU1MgbmV3
IEludGwuQ29sbGF0b3IoKS5jb21wYXJlLmNhbGwoNSwgJ2EnLCAnYicpIGlzIC0xCitQQVNTIElu
dGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5sZW5ndGggaXMgMAorUEFTUyBJ
bnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSBpcyBhbiBpbnN0YW5jZSBv
ZiBPYmplY3QKK1BBU1MgSW50bC5Db2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkg
PT09IEludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIGlzIGZhbHNlCitQ
QVNTIEludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5jYWxsKDUpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0
aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMg
YSBDb2xsYXRvci4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9pbnRsLWNvbGxhdG9yLmh0bWwgYi9M
YXlvdXRUZXN0cy9qcy9pbnRsLWNvbGxhdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGU2Yzg3ZGNmMGRh
ODE3MTk0MjQ4ZTg1NTY3NGNjODQ2OTk4OThkYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL2ludGwtY29sbGF0b3IuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvaW50bC1jb2xsYXRvci5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9pbnRsLWRhdGV0
aW1lZm9ybWF0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2ludGwtZGF0ZXRpbWVmb3Jt
YXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5Nzc2ZjVkYmM2MzIzOGVjMGYyYjgyZDJjODg0
NzM2ZmExZmQwZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWRhdGV0
aW1lZm9ybWF0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQ2IEBACitUaGlzIHRlc3QgY2hlY2tz
IHRoZSBiZWhhdmlvciBvZiBJbnRsLkRhdGVUaW1lRm9ybWF0IGFzIGRlc2NyaWJlZCBpbiB0aGUg
RUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkgU3BlY2lmaWNhdGlvbiAoRUNNQS00
MDIgMi4wKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgSW50bC5EYXRl
VGltZUZvcm1hdCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBJbnRsLkRhdGVUaW1l
Rm9ybWF0KCkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5EYXRlVGltZUZvcm1hdAorUEFTUyBJbnRs
LkRhdGVUaW1lRm9ybWF0LmNhbGwoe30pIGlzIGFuIGluc3RhbmNlIG9mIEludGwuRGF0ZVRpbWVG
b3JtYXQKK1BBU1MgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKSBpcyBhbiBpbnN0YW5jZSBvZiBJ
bnRsLkRhdGVUaW1lRm9ybWF0CitQQVNTIG5ldyBEZXJpdmVkRGF0ZVRpbWVGb3JtYXQgaXMgYW4g
aW5zdGFuY2Ugb2YgRGVyaXZlZERhdGVUaW1lRm9ybWF0CitQQVNTIG5ldyBEZXJpdmVkRGF0ZVRp
bWVGb3JtYXQgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5EYXRlVGltZUZvcm1hdAorUEFTUyBuZXcg
RGVyaXZlZERhdGVUaW1lRm9ybWF0KCkuZm9ybWF0KDApLmxlbmd0aCA+IDAgaXMgdHJ1ZQorUEFT
UyBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERlcml2ZWREYXRlVGltZUZvcm1hdCkgaXMgRGVy
aXZlZERhdGVUaW1lRm9ybWF0LnByb3RvdHlwZQorUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
T2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBEZXJpdmVkRGF0ZVRpbWVGb3JtYXQpKSBpcyBJbnRs
LkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZQorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0Lmxlbmd0
aCBpcyAwCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGlt
ZUZvcm1hdCwgJ3Byb3RvdHlwZScpLndyaXRhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdCwgJ3Byb3RvdHlwZScpLmVu
dW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJ
bnRsLkRhdGVUaW1lRm9ybWF0LCAncHJvdG90eXBlJykuY29uZmlndXJhYmxlIGlzIGZhbHNlCitQ
QVNTIEludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mLmxlbmd0aCBpcyAxCitQ
QVNTIEludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCkgaXMgYW4gaW5zdGFu
Y2Ugb2YgQXJyYXkKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0
b3IgaXMgSW50bC5EYXRlVGltZUZvcm1hdAorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3Rv
dHlwZS5mb3JtYXQgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1h
dCcpLmdldCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0Jyku
c2V0IGlzIHVuZGVmaW5lZAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKElu
dGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykuZW51bWVyYWJsZSBpcyBmYWxz
ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3Jt
YXQucHJvdG90eXBlLCAnZm9ybWF0JykuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgSW50bC5E
YXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0Lmxlbmd0aCBpcyAxCitQQVNTIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh7fSwgJ2Zvcm1hdCcsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKSkuZm9ybWF0IHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1h
dCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBE
YXRlVGltZUZvcm1hdC4KK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0
ICE9PSBJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0IGlzIHRydWUKK1BBU1MgbmV3IEludGwu
RGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQgIT09IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9y
bWF0IGlzIHRydWUKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0KHsg
dmFsdWVPZigpIHsgdGhyb3cgRXJyb3IoJzRiJykgfSB9KSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IDRiLgorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQoSW5maW5pdHkp
IHRocmV3IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiBkYXRlIHZhbHVlIGlzIG5vdCBmaW5pdGUgaW4g
RGF0ZVRpbWVGb3JtYXQuZm9ybWF0KCkuCitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90
eXBlLmZvcm1hdC5jYWxsKG51bGwsIDApIGlzIEludGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQo
MCkKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0LmNhbGwoSW50bC5E
YXRlVGltZUZvcm1hdCgnYXInKSwgMCkgaXMgSW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdCgw
KQorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQuY2FsbCg1LCAwKSBp
cyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0KDApCitQQVNTIG5ldyBJbnRsLkRhdGVUaW1l
Rm9ybWF0KCkuZm9ybWF0LmNhbGwobnVsbCwgMCkgaXMgSW50bC5EYXRlVGltZUZvcm1hdCgpLmZv
cm1hdCgwKQorUEFTUyBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdC5jYWxsKEludGwu
RGF0ZVRpbWVGb3JtYXQoJ2FyJyksIDApIGlzIEludGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQo
MCkKK1BBU1MgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQuY2FsbCg1LCAwKSBpcyBJ
bnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0KDApCitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQu
cHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5sZW5ndGggaXMgMAorUEFTUyBJbnRsLkRhdGVUaW1l
Rm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSBpcyBhbiBpbnN0YW5jZSBvZiBPYmpl
Y3QKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkg
PT09IEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIGlzIGZh
bHNlCitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5j
YWxsKDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludGwuRGF0ZVRpbWVGb3JtYXQucHJv
dG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmpl
Y3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9pbnRsLWRhdGV0aW1lZm9ybWF0Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWRhdGV0aW1l
Zm9ybWF0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE1OGZjZjUwNDkxOGYwMDk0MDhhMmMyOWY4ZTMzNjc1
OWRlZTkzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2ludGwtZGF0ZXRpbWVm
b3JtYXQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQg
c3JjPSJzY3JpcHQtdGVzdHMvaW50bC1kYXRldGltZWZvcm1hdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9pbnRsLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2pzL2ludGwtZXhwZWN0ZWQudHh0CmluZGV4IGIyNmFmODYzMzY1MWIxNDBj
OGYxMGI4OTdhOTA4ZjBjYThjYWE5ZDYuLmFjNGIwNDQ4NjFmMDFkNWQzNmY3ZDRhM2Y3NjM3ZWVl
NzZhZTc2MTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2ludGwtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2pzL2ludGwtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotVGhp
cyB0ZXN0IGNoZWNrcyB0aGUgYmVoYXZpb3Igb2YgdGhlIEludGwgb2JqZWN0IGFzIGRlc2NyaWJl
ZCBpbiA4IG9mIHRoZSBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSSBTcGVjaWZp
Y2F0aW9uLgorVGhpcyB0ZXN0IGNoZWNrcyB0aGUgYmVoYXZpb3Igb2YgdGhlIEludGwgb2JqZWN0
IGFzIGRlc2NyaWJlZCBpbiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkg
U3BlY2lmaWNhdGlvbiAoRUNNQS00MDIgMi4wKS4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgogCkBAIC05LDYgKzksNyBAQCBQQVNTIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChJ
bnRsKSBpcyAnW29iamVjdCBPYmplY3RdJwogUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2YoSW50
bCkgPT09IE9iamVjdC5wcm90b3R5cGUgaXMgdHJ1ZQogUEFTUyBuZXcgSW50bCB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBPYmplY3QgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcg
J25ldyBJbnRsJykuCiBQQVNTIEludGwoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBJbnRs
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ0ludGwoKScsICdJbnRsJyBpcyBhbiBpbnN0YW5jZSBv
ZiBPYmplY3QpLgorUEFTUyBPYmplY3Qua2V5cyhJbnRsKS5sZW5ndGggaXMgMAogUEFTUyBkZWxl
dGUgSW50bDsgaXMgdHJ1ZQogUEFTUyAnSW50bCcgaW4gZ2xvYmFsKCkgaXMgZmFsc2UKIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2lu
dGwtbnVtYmVyZm9ybWF0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2ludGwtbnVtYmVy
Zm9ybWF0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NmRlMDEyMWJmYzMyOWI0NmU2OGNhOGEz
OGQ4ODZiMjIyYWM5MWRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvaW50bC1u
dW1iZXJmb3JtYXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDUgQEAKK1RoaXMgdGVzdCBjaGVj
a3MgdGhlIGJlaGF2aW9yIG9mIEludGwuTnVtYmVyRm9ybWF0IGFzIGRlc2NyaWJlZCBpbiB0aGUg
RUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkgU3BlY2lmaWNhdGlvbiAoRUNNQS00
MDIgMi4wKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgSW50bC5OdW1i
ZXJGb3JtYXQgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgSW50bC5OdW1iZXJGb3Jt
YXQoKSBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLk51bWJlckZvcm1hdAorUEFTUyBJbnRsLk51bWJl
ckZvcm1hdC5jYWxsKHt9KSBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLk51bWJlckZvcm1hdAorUEFT
UyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKSBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLk51bWJlckZv
cm1hdAorUEFTUyBuZXcgRGVyaXZlZE51bWJlckZvcm1hdCBpcyBhbiBpbnN0YW5jZSBvZiBEZXJp
dmVkTnVtYmVyRm9ybWF0CitQQVNTIG5ldyBEZXJpdmVkTnVtYmVyRm9ybWF0IGlzIGFuIGluc3Rh
bmNlIG9mIEludGwuTnVtYmVyRm9ybWF0CitQQVNTIG5ldyBEZXJpdmVkTnVtYmVyRm9ybWF0KCku
Zm9ybWF0KDEpIGlzICcxJworUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERlcml2ZWRO
dW1iZXJGb3JtYXQpIGlzIERlcml2ZWROdW1iZXJGb3JtYXQucHJvdG90eXBlCitQQVNTIE9iamVj
dC5nZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERlcml2ZWROdW1iZXJG
b3JtYXQpKSBpcyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUKK1BBU1MgSW50bC5OdW1iZXJG
b3JtYXQubGVuZ3RoIGlzIDAKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJ
bnRsLk51bWJlckZvcm1hdCwgJ3Byb3RvdHlwZScpLndyaXRhYmxlIGlzIGZhbHNlCitQQVNTIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQsICdwcm90b3R5
cGUnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSW50bC5OdW1iZXJGb3JtYXQsICdwcm90b3R5cGUnKS5jb25maWd1cmFibGUgaXMgZmFs
c2UKK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mLmxlbmd0aCBpcyAx
CitQQVNTIEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZigpIGlzIGFuIGluc3Rh
bmNlIG9mIEFycmF5CitQQVNTIEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciBpcyBJbnRsLk51bWJlckZvcm1hdAorUEFTUyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUu
Zm9ybWF0IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykuZ2V0
IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0Jykuc2V0IGlzIHVu
ZGVmaW5lZAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVy
Rm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUs
ICdmb3JtYXQnKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBJbnRsLk51bWJlckZvcm1hdC5w
cm90b3R5cGUuZm9ybWF0Lmxlbmd0aCBpcyAxCitQQVNTIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7
fSwgJ2Zvcm1hdCcsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJG
b3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykpLmZvcm1hdCB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdC4KK1BBU1Mg
SW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCAhPT0gSW50bC5OdW1iZXJGb3JtYXQo
KS5mb3JtYXQgaXMgdHJ1ZQorUEFTUyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQgIT09
IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdCBpcyB0cnVlCitQQVNTIEludGwuTnVtYmVy
Rm9ybWF0LnByb3RvdHlwZS5mb3JtYXQoeyB2YWx1ZU9mKCkgeyB0aHJvdyBFcnJvcignNScpIH0g
fSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiA1LgorUEFTUyBJbnRsLk51bWJlckZvcm1hdC5wcm90
b3R5cGUuZm9ybWF0LmNhbGwobnVsbCwgMS4yKSBpcyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1h
dCgxLjIpCitQQVNTIEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQuY2FsbChJbnRs
LkRhdGVUaW1lRm9ybWF0KCdhcicpLCAxLjIpIGlzIEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0
KDEuMikKK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5jYWxsKDUsIDEu
MikgaXMgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoMS4yKQorUEFTUyBuZXcgSW50bC5OdW1i
ZXJGb3JtYXQoKS5mb3JtYXQuY2FsbChudWxsLCAxLjIpIGlzIEludGwuTnVtYmVyRm9ybWF0KCku
Zm9ybWF0KDEuMikKK1BBU1MgbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0LmNhbGwoSW50
bC5EYXRlVGltZUZvcm1hdCgnYXInKSwgMS4yKSBpcyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1h
dCgxLjIpCitQQVNTIG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdC5jYWxsKDUsIDEuMikg
aXMgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoMS4yKQorUEFTUyBJbnRsLk51bWJlckZvcm1h
dC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zLmxlbmd0aCBpcyAwCitQQVNTIEludGwuTnVtYmVy
Rm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSBpcyBhbiBpbnN0YW5jZSBvZiBPYmpl
Y3QKK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpID09
PSBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgaXMgZmFsc2UK
K1BBU1MgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5jYWxsKDUp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRp
YWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2ludGwtbnVt
YmVyZm9ybWF0Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLW51bWJlcmZvcm1hdC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjkzOGUyMGYyZjI5YWE3YTU3YjNkODk4YWNkYWNiZTRiYTljYzU3ZWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLW51bWJlcmZvcm1hdC5odG1sCkBAIC0w
LDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0
cy9pbnRsLW51bWJlcmZvcm1hdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1jb2xsYXRvci5qcyBiL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLWNvbGxhdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjNjNi
ZDYyMGMwODNhZTc1YmQwYjYxN2MxY2I4M2Y5MzllMmQwZjYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1jb2xsYXRvci5qcwpAQCAtMCwwICsxLDEw
OSBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIEludGwu
Q29sbGF0b3IgYXMgZGVzY3JpYmVkIGluIHRoZSBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0
aW9uIEFQSSBTcGVjaWZpY2F0aW9uIChFQ01BLTQwMiAyLjApLiIpOworCisvLyAxMC4xIFRoZSBJ
bnRsLkNvbGxhdG9yIENvbnN0cnVjdG9yCisKKy8vIFRoZSBJbnRsLkNvbGxhdG9yIGNvbnN0cnVj
dG9yIGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4gcHJvcGVydHkgb2YgdGhlIEludGwgb2JqZWN0Lgor
c2hvdWxkQmVUeXBlKCJJbnRsLkNvbGxhdG9yIiwgIkZ1bmN0aW9uIik7CisKKy8vIDEwLjEuMiBJ
bnRsLkNvbGxhdG9yKFsgbG9jYWxlcyBbLCBvcHRpb25zXV0pCitzaG91bGRCZVR5cGUoIkludGwu
Q29sbGF0b3IoKSIsICJJbnRsLkNvbGxhdG9yIik7CitzaG91bGRCZVR5cGUoIkludGwuQ29sbGF0
b3IuY2FsbCh7fSkiLCAiSW50bC5Db2xsYXRvciIpOworc2hvdWxkQmVUeXBlKCJuZXcgSW50bC5D
b2xsYXRvcigpIiwgIkludGwuQ29sbGF0b3IiKTsKKworLy8gU3ViY2xhc3NhYmxlCitjbGFzcyBE
ZXJpdmVkQ29sbGF0b3IgZXh0ZW5kcyBJbnRsLkNvbGxhdG9yIHt9CitzaG91bGRCZVR5cGUoIm5l
dyBEZXJpdmVkQ29sbGF0b3IiLCAiRGVyaXZlZENvbGxhdG9yIik7CitzaG91bGRCZVR5cGUoIm5l
dyBEZXJpdmVkQ29sbGF0b3IiLCAiSW50bC5Db2xsYXRvciIpOworc2hvdWxkQmUoIm5ldyBEZXJp
dmVkQ29sbGF0b3IoKS5jb21wYXJlKCdhJywgJ2InKSIsICItMSIpOworc2hvdWxkQmUoIk9iamVj
dC5nZXRQcm90b3R5cGVPZihuZXcgRGVyaXZlZENvbGxhdG9yKSIsICJEZXJpdmVkQ29sbGF0b3Iu
cHJvdG90eXBlIik7CitzaG91bGRCZSgiT2JqZWN0LmdldFByb3RvdHlwZU9mKE9iamVjdC5nZXRQ
cm90b3R5cGVPZihuZXcgRGVyaXZlZENvbGxhdG9yKSkiLCAiSW50bC5Db2xsYXRvci5wcm90b3R5
cGUiKTsKKworLy8gMTAuMiBQcm9wZXJ0aWVzIG9mIHRoZSBJbnRsLkNvbGxhdG9yIENvbnN0cnVj
dG9yCisKKy8vIGxlbmd0aCBwcm9wZXJ0eSAod2hvc2UgdmFsdWUgaXMgMCkKK3Nob3VsZEJlKCJJ
bnRsLkNvbGxhdG9yLmxlbmd0aCIsICIwIik7CisKKy8vIDEwLjIuMSBJbnRsLkNvbGxhdG9yLnBy
b3RvdHlwZQorCisvLyBUaGlzIHByb3BlcnR5IGhhcyB0aGUgYXR0cmlidXRlcyB7IFtbV3JpdGFi
bGVdXTogZmFsc2UsIFtbRW51bWVyYWJsZV1dOiBmYWxzZSwgW1tDb25maWd1cmFibGVdXTogZmFs
c2UgfS4KK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50
bC5Db2xsYXRvciwgJ3Byb3RvdHlwZScpLndyaXRhYmxlIik7CitzaG91bGRCZUZhbHNlKCJPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IsICdwcm90b3R5cGUnKS5l
bnVtZXJhYmxlIik7CitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEludGwuQ29sbGF0b3IsICdwcm90b3R5cGUnKS5jb25maWd1cmFibGUiKTsKKworLy8gMTAu
Mi4yIEludGwuQ29sbGF0b3Iuc3VwcG9ydGVkTG9jYWxlc09mIChsb2NhbGVzIFssIG9wdGlvbnMg
XSkKKworLy8gVGhlIHZhbHVlIG9mIHRoZSBsZW5ndGggcHJvcGVydHkgb2YgdGhlIHN1cHBvcnRl
ZExvY2FsZXNPZiBtZXRob2QgaXMgMS4KK3Nob3VsZEJlKCJJbnRsLkNvbGxhdG9yLnN1cHBvcnRl
ZExvY2FsZXNPZi5sZW5ndGgiLCAiMSIpOworCisvLyBSZXR1cm5zIFN1cHBvcnRlZExvY2FsZXMK
K3Nob3VsZEJlVHlwZSgiSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRMb2NhbGVzT2YoKSIsICJBcnJh
eSIpOworCisvLyAxMC4zIFByb3BlcnRpZXMgb2YgdGhlIEludGwuQ29sbGF0b3IgUHJvdG90eXBl
IE9iamVjdAorCisvLyBUaGUgdmFsdWUgb2YgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgaXMgJUNvbGxhdG9yJS4KK3Nob3VsZEJlKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciIsICJJbnRsLkNvbGxhdG9yIik7CisKKy8vIDEwLjMuMyBJbnRsLkNvbGxhdG9y
LnByb3RvdHlwZS5jb21wYXJlCisKKy8vIFRoaXMgbmFtZWQgYWNjZXNzb3IgcHJvcGVydHkgcmV0
dXJucyBhIGZ1bmN0aW9uIHRoYXQgY29tcGFyZXMgdHdvIHN0cmluZ3MgYWNjb3JkaW5nIHRvIHRo
ZSBzb3J0IG9yZGVyIG9mIHRoaXMgQ29sbGF0b3Igb2JqZWN0Lgorc2hvdWxkQmVUeXBlKCJJbnRs
LkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIiwgIkZ1bmN0aW9uIik7CisKKy8vIFRoZSB2YWx1
ZSBvZiB0aGUgW1tHZXRdXSBhdHRyaWJ1dGUgaXMgYSBmdW5jdGlvbgorc2hvdWxkQmVUeXBlKCJP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IucHJvdG90eXBlLCAn
Y29tcGFyZScpLmdldCIsICJGdW5jdGlvbiIpOworCisvLyBUaGUgdmFsdWUgb2YgdGhlIFtbU2V0
XV0gYXR0cmlidXRlIGlzIHVuZGVmaW5lZC4KK3Nob3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IucHJvdG90eXBlLCAnY29tcGFyZScpLnNldCIsICJ1
bmRlZmluZWQiKTsKKworLy8gTWF0Y2ggRmlyZWZveCB3aGVyZSB1bnNwZWNpZmVkLgorc2hvdWxk
QmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLnBy
b3RvdHlwZSwgJ2NvbXBhcmUnKS5lbnVtZXJhYmxlIik7CitzaG91bGRCZVRydWUoIk9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvci5wcm90b3R5cGUsICdjb21wYXJl
JykuY29uZmlndXJhYmxlIik7CisKKy8vIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVy
dHkgaXMgMi4KK3Nob3VsZEJlKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlLmxlbmd0
aCIsICIyIik7CisKKy8vIFRocm93cyBvbiBub24tQ29sbGF0b3IgdGhpcy4KK3Nob3VsZFRocm93
KCJPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdjb21wYXJlJywgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSwgJ2NvbXBhcmUnKSkuY29tcGFy
ZSIsICInVHlwZUVycm9yOiBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIGNhbGxlZCBv
biB2YWx1ZSB0aGF0XFwncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ29sbGF0b3In
Iik7CisKKy8vIFRoZSBjb21wYXJlIGZ1bmN0aW9uIGlzIHVuaXF1ZSBwZXIgaW5zdGFuY2UuCitz
aG91bGRCZVRydWUoIkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUgIT09IEludGwuQ29s
bGF0b3IoKS5jb21wYXJlIik7CitzaG91bGRCZVRydWUoIm5ldyBJbnRsLkNvbGxhdG9yKCkuY29t
cGFyZSAhPT0gbmV3IEludGwuQ29sbGF0b3IoKS5jb21wYXJlIik7CisKKy8vIDEwLjMuNCBDb2xs
YXRvciBDb21wYXJlIEZ1bmN0aW9ucworCisvLyAxLiBMZXQgY29sbGF0b3IgYmUgdGhlIHRoaXMg
dmFsdWUuCisvLyAyLiBBc3NlcnQ6IFR5cGUoY29sbGF0b3IpIGlzIE9iamVjdCBhbmQgY29sbGF0
b3IgaGFzIGFuIFtbaW5pdGlhbGl6ZWRDb2xsYXRvcl1dIGludGVybmFsIHNsb3Qgd2hvc2UgdmFs
dWUgaXMgdHJ1ZS4KKy8vIFRoaXMgc2hvdWxkIG5vdCBiZSByZWFjaGFibGUsIHNpbmNlIGNvbXBh
cmUgaXMgYm91bmQgdG8gYW4gaW5pdGlhbGl6ZWQgY29sbGF0b3IuCisKKy8vIDMuIElmIHggaXMg
bm90IHByb3ZpZGVkLCBsZXQgeCBiZSB1bmRlZmluZWQuCisvLyA0LiBJZiB5IGlzIG5vdCBwcm92
aWRlZCwgbGV0IHkgYmUgdW5kZWZpbmVkLgorLy8gNS4gTGV0IFggYmUgVG9TdHJpbmcoeCkuCisv
LyA2LiBSZXR1cm5JZkFicnVwdChYKS4KK3ZhciBiYWRDYWxscyA9IDA7CitzaG91bGRUaHJvdygi
SW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSh7IHRvU3RyaW5nKCkgeyB0aHJvdyBFcnJv
cignNicpIH0gfSwgeyB0b1N0cmluZygpIHsgKytiYWRDYWxsczsgcmV0dXJuICcnOyB9IH0pIiwg
IidFcnJvcjogNiciKTsKK3Nob3VsZEJlKCJiYWRDYWxscyIsICIwIik7CisKKy8vIDcuIExldCBZ
IGJlIFRvU3RyaW5nKHkpLgorLy8gOC4gUmV0dXJuSWZBYnJ1cHQoWSkuCitzaG91bGRUaHJvdygi
SW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSgnYScsIHsgdG9TdHJpbmcoKSB7IHRocm93
IEVycm9yKCc4JykgfSB9KSIsICInRXJyb3I6IDgnIik7CisKKy8vIENvbXBhcmUgaXMgYm91bmQs
IHNvIGNhbGxpbmcgd2l0aCBhbHRlcm5hdGUgInRoaXMiIGhhcyBubyBlZmZlY3QuCitzaG91bGRC
ZSgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZS5jYWxsKG51bGwsICdhJywgJ2InKSIs
ICItMSIpOworc2hvdWxkQmUoIkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUuY2FsbChJ
bnRsLkNvbGxhdG9yKCdlbicsIHsgc2Vuc2l0aXZpdHk6J2Jhc2UnIH0pLCAnQScsICdhJykiLCAi
LTEiKTsKK3Nob3VsZEJlKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlLmNhbGwoNSwg
J2EnLCAnYicpIiwgIi0xIik7CitzaG91bGRCZSgibmV3IEludGwuQ29sbGF0b3IoKS5jb21wYXJl
LmNhbGwobnVsbCwgJ2EnLCAnYicpIiwgIi0xIik7CitzaG91bGRCZSgibmV3IEludGwuQ29sbGF0
b3IoKS5jb21wYXJlLmNhbGwoSW50bC5Db2xsYXRvcignZW4nLCB7IHNlbnNpdGl2aXR5OidiYXNl
JyB9KSwgJ0EnLCAnYScpIiwgIi0xIik7CitzaG91bGRCZSgibmV3IEludGwuQ29sbGF0b3IoKS5j
b21wYXJlLmNhbGwoNSwgJ2EnLCAnYicpIiwgIi0xIik7CisKKy8vIDEwLjMuNSBJbnRsLkNvbGxh
dG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgKCkKKworc2hvdWxkQmUoIkludGwuQ29sbGF0
b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5sZW5ndGgiLCAiMCIpOworCisvLyBSZXR1cm5z
IGEgbmV3IG9iamVjdCB3aG9zZSBwcm9wZXJ0aWVzIGFuZCBhdHRyaWJ1dGVzIGFyZSBzZXQgYXMg
aWYgY29uc3RydWN0ZWQgYnkgYW4gb2JqZWN0IGxpdGVyYWwuCitzaG91bGRCZVR5cGUoIkludGwu
Q29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIiwgIk9iamVjdCIpOworCisvLyBS
ZXR1cm5zIGEgbmV3IG9iamVjdCBlYWNoIHRpbWUuCitzaG91bGRCZUZhbHNlKCJJbnRsLkNvbGxh
dG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSA9PT0gSW50bC5Db2xsYXRvci5wcm90b3R5
cGUucmVzb2x2ZWRPcHRpb25zKCkiKTsKKworLy8gVGhyb3dzIG9uIG5vbi1Db2xsYXRvciB0aGlz
Lgorc2hvdWxkVGhyb3coIkludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5j
YWxsKDUpIiwgIidUeXBlRXJyb3I6IEludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0
aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdFxcJ3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBh
cyBhIENvbGxhdG9yJyIpOworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvaW50bC1kYXRldGltZWZvcm1hdC5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9p
bnRsLWRhdGV0aW1lZm9ybWF0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmOGE5Y2Q0MzViZGMzZmVlOGU2Mzky
NGQ2MjZmYTg1NTE5YjQzOWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvaW50bC1kYXRldGltZWZvcm1hdC5qcwpAQCAtMCwwICsxLDEwOSBAQAorZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIEludGwuRGF0ZVRpbWVGb3Jt
YXQgYXMgZGVzY3JpYmVkIGluIHRoZSBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQ
SSBTcGVjaWZpY2F0aW9uIChFQ01BLTQwMiAyLjApLiIpOworCisvLyAxMi4xIFRoZSBJbnRsLkRh
dGVUaW1lRm9ybWF0IENvbnN0cnVjdG9yCisKKy8vIFRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IGNv
bnN0cnVjdG9yIGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4gcHJvcGVydHkgb2YgdGhlIEludGwgb2Jq
ZWN0Lgorc2hvdWxkQmVUeXBlKCJJbnRsLkRhdGVUaW1lRm9ybWF0IiwgIkZ1bmN0aW9uIik7CisK
Ky8vIDEyLjEuMiBJbnRsLkRhdGVUaW1lRm9ybWF0KFsgbG9jYWxlcyBbLCBvcHRpb25zXV0pCitz
aG91bGRCZVR5cGUoIkludGwuRGF0ZVRpbWVGb3JtYXQoKSIsICJJbnRsLkRhdGVUaW1lRm9ybWF0
Iik7CitzaG91bGRCZVR5cGUoIkludGwuRGF0ZVRpbWVGb3JtYXQuY2FsbCh7fSkiLCAiSW50bC5E
YXRlVGltZUZvcm1hdCIpOworc2hvdWxkQmVUeXBlKCJuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgp
IiwgIkludGwuRGF0ZVRpbWVGb3JtYXQiKTsKKworLy8gU3ViY2xhc3NhYmxlCitjbGFzcyBEZXJp
dmVkRGF0ZVRpbWVGb3JtYXQgZXh0ZW5kcyBJbnRsLkRhdGVUaW1lRm9ybWF0IHt9CitzaG91bGRC
ZVR5cGUoIm5ldyBEZXJpdmVkRGF0ZVRpbWVGb3JtYXQiLCAiRGVyaXZlZERhdGVUaW1lRm9ybWF0
Iik7CitzaG91bGRCZVR5cGUoIm5ldyBEZXJpdmVkRGF0ZVRpbWVGb3JtYXQiLCAiSW50bC5EYXRl
VGltZUZvcm1hdCIpOworc2hvdWxkQmVUcnVlKCJuZXcgRGVyaXZlZERhdGVUaW1lRm9ybWF0KCku
Zm9ybWF0KDApLmxlbmd0aCA+IDAiKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
bmV3IERlcml2ZWREYXRlVGltZUZvcm1hdCkiLCAiRGVyaXZlZERhdGVUaW1lRm9ybWF0LnByb3Rv
dHlwZSIpOworc2hvdWxkQmUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90
eXBlT2YobmV3IERlcml2ZWREYXRlVGltZUZvcm1hdCkpIiwgIkludGwuRGF0ZVRpbWVGb3JtYXQu
cHJvdG90eXBlIik7CisKKy8vIDEyLjIgUHJvcGVydGllcyBvZiB0aGUgSW50bC5EYXRlVGltZUZv
cm1hdCBDb25zdHJ1Y3RvcgorCisvLyBsZW5ndGggcHJvcGVydHkgKHdob3NlIHZhbHVlIGlzIDAp
CitzaG91bGRCZSgiSW50bC5EYXRlVGltZUZvcm1hdC5sZW5ndGgiLCAiMCIpOworCisvLyAxMi4y
LjEgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUKKworLy8gVGhpcyBwcm9wZXJ0eSBoYXMg
dGhlIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IGZhbHNlLCBbW0VudW1lcmFibGVdXTogZmFs
c2UsIFtbQ29uZmlndXJhYmxlXV06IGZhbHNlIH0uCitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQsICdwcm90b3R5cGUnKS53
cml0YWJsZSIpOworc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihJbnRsLkRhdGVUaW1lRm9ybWF0LCAncHJvdG90eXBlJykuZW51bWVyYWJsZSIpOworc2hvdWxk
QmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9y
bWF0LCAncHJvdG90eXBlJykuY29uZmlndXJhYmxlIik7CisKKy8vIDEyLjIuMiBJbnRsLkRhdGVU
aW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZiAobG9jYWxlcyBbLCBvcHRpb25zIF0pCisKKy8v
IFRoZSB2YWx1ZSBvZiB0aGUgbGVuZ3RoIHByb3BlcnR5IG9mIHRoZSBzdXBwb3J0ZWRMb2NhbGVz
T2YgbWV0aG9kIGlzIDEuCitzaG91bGRCZSgiSW50bC5EYXRlVGltZUZvcm1hdC5zdXBwb3J0ZWRM
b2NhbGVzT2YubGVuZ3RoIiwgIjEiKTsKKworLy8gUmV0dXJucyBTdXBwb3J0ZWRMb2NhbGVzCitz
aG91bGRCZVR5cGUoIkludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCkiLCAi
QXJyYXkiKTsKKworLy8gMTIuMyBQcm9wZXJ0aWVzIG9mIHRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0
IFByb3RvdHlwZSBPYmplY3QKKworLy8gVGhlIHZhbHVlIG9mIEludGwuRGF0ZVRpbWVGb3JtYXQu
cHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzICVEYXRlVGltZUZvcm1hdCUuCitzaG91bGRCZSgiSW50
bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0b3IiLCAiSW50bC5EYXRlVGltZUZv
cm1hdCIpOworCisvLyAxMi4zLjMgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0
CisKKy8vIFRoaXMgbmFtZWQgYWNjZXNzb3IgcHJvcGVydHkgcmV0dXJucyBhIGZ1bmN0aW9uIHRo
YXQgZm9ybWF0cyBhIGRhdGUgYWNjb3JkaW5nIHRvIHRoZSBlZmZlY3RpdmUgbG9jYWxlIGFuZCB0
aGUgZm9ybWF0dGluZyBvcHRpb25zIG9mIHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0Lgorc2hv
dWxkQmVUeXBlKCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQiLCAiRnVuY3Rp
b24iKTsKKworLy8gVGhlIHZhbHVlIG9mIHRoZSBbW0dldF1dIGF0dHJpYnV0ZSBpcyBhIGZ1bmN0
aW9uCitzaG91bGRCZVR5cGUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5E
YXRlVGltZUZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5nZXQiLCAiRnVuY3Rpb24iKTsKKwor
Ly8gVGhlIHZhbHVlIG9mIHRoZSBbW1NldF1dIGF0dHJpYnV0ZSBpcyB1bmRlZmluZWQuCitzaG91
bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0
LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLnNldCIsICJ1bmRlZmluZWQiKTsKKworLy8gTWF0Y2ggRmly
ZWZveCB3aGVyZSB1bnNwZWNpZmVkLgorc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmVu
dW1lcmFibGUiKTsKK3Nob3VsZEJlVHJ1ZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmNvbmZpZ3VyYWJsZSIp
OworCisvLyBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuCitzaG91bGRC
ZSgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0Lmxlbmd0aCIsICIxIik7CisK
Ky8vIFRocm93cyBvbiBub24tRGF0ZVRpbWVGb3JtYXQgdGhpcy4KK3Nob3VsZFRocm93KCJPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoe30sICdmb3JtYXQnLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykpLmZvcm1hdCIs
ICInVHlwZUVycm9yOiBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVk
IG9uIHZhbHVlIHRoYXRcXCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGlt
ZUZvcm1hdCciKTsKKworLy8gVGhlIGZvcm1hdCBmdW5jdGlvbiBpcyB1bmlxdWUgcGVyIGluc3Rh
bmNlLgorc2hvdWxkQmVUcnVlKCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQg
IT09IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQiKTsKK3Nob3VsZEJlVHJ1ZSgibmV3IElu
dGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQgIT09IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCku
Zm9ybWF0Iik7CisKKy8vIDEyLjMuNCBEYXRlVGltZSBGb3JtYXQgRnVuY3Rpb25zCisKKy8vIDEu
IExldCBkdGYgYmUgdGhlIHRoaXMgdmFsdWUuCisvLyAyLiBBc3NlcnQ6IFR5cGUoZHRmKSBpcyBP
YmplY3QgYW5kIGR0ZiBoYXMgYW4gW1tpbml0aWFsaXplZERhdGVUaW1lRm9ybWF0XV0gaW50ZXJu
YWwgc2xvdCB3aG9zZSB2YWx1ZSBpcyB0cnVlLgorLy8gVGhpcyBzaG91bGQgbm90IGJlIHJlYWNo
YWJsZSwgc2luY2UgZm9ybWF0IGlzIGJvdW5kIHRvIGFuIGluaXRpYWxpemVkIGRhdGV0aW1lZm9y
bWF0LgorCisvLyAzLiBJZiBkYXRlIGlzIG5vdCBwcm92aWRlZCBvciBpcyB1bmRlZmluZWQsIHRo
ZW4KKy8vIGEuIExldCB4IGJlICVEYXRlX25vdyUoKS4KKy8vIDQuIEVsc2UKKy8vIGEuIExldCB4
IGJlIFRvTnVtYmVyKGRhdGUpLgorLy8gYi4gUmV0dXJuSWZBYnJ1cHQoeCkuCitzaG91bGRUaHJv
dygiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0KHsgdmFsdWVPZigpIHsgdGhy
b3cgRXJyb3IoJzRiJykgfSB9KSIsICInRXJyb3I6IDRiJyIpOworCisvLyAxMi4zLjQgRm9ybWF0
RGF0ZVRpbWUgYWJzdHJhY3Qgb3BlcmF0aW9uCisKKy8vIDEuIElmIHggaXMgbm90IGEgZmluaXRl
IE51bWJlciwgdGhlbiB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uLgorc2hvdWxkVGhyb3co
IkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdChJbmZpbml0eSkiLCAiJ1Jhbmdl
RXJyb3I6IGRhdGUgdmFsdWUgaXMgbm90IGZpbml0ZSBpbiBEYXRlVGltZUZvcm1hdC5mb3JtYXQo
KSciKTsKKworLy8gRm9ybWF0IGlzIGJvdW5kLCBzbyBjYWxsaW5nIHdpdGggYWx0ZXJuYXRlICJ0
aGlzIiBoYXMgbm8gZWZmZWN0Lgorc2hvdWxkQmUoIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90
eXBlLmZvcm1hdC5jYWxsKG51bGwsIDApIiwgIkludGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQo
MCkiKTsKK3Nob3VsZEJlKCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQuY2Fs
bChJbnRsLkRhdGVUaW1lRm9ybWF0KCdhcicpLCAwKSIsICJJbnRsLkRhdGVUaW1lRm9ybWF0KCku
Zm9ybWF0KDApIik7CitzaG91bGRCZSgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9y
bWF0LmNhbGwoNSwgMCkiLCAiSW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdCgwKSIpOworc2hv
dWxkQmUoIm5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0LmNhbGwobnVsbCwgMCkiLCAi
SW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdCgwKSIpOworc2hvdWxkQmUoIm5ldyBJbnRsLkRh
dGVUaW1lRm9ybWF0KCkuZm9ybWF0LmNhbGwoSW50bC5EYXRlVGltZUZvcm1hdCgnYXInKSwgMCki
LCAiSW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdCgwKSIpOworc2hvdWxkQmUoIm5ldyBJbnRs
LkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0LmNhbGwoNSwgMCkiLCAiSW50bC5EYXRlVGltZUZvcm1h
dCgpLmZvcm1hdCgwKSIpOworCisvLyAxMi4zLjUgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5
cGUucmVzb2x2ZWRPcHRpb25zICgpCisKK3Nob3VsZEJlKCJJbnRsLkRhdGVUaW1lRm9ybWF0LnBy
b3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMubGVuZ3RoIiwgIjAiKTsKKworLy8gUmV0dXJucyBhIG5l
dyBvYmplY3Qgd2hvc2UgcHJvcGVydGllcyBhbmQgYXR0cmlidXRlcyBhcmUgc2V0IGFzIGlmIGNv
bnN0cnVjdGVkIGJ5IGFuIG9iamVjdCBsaXRlcmFsLgorc2hvdWxkQmVUeXBlKCJJbnRsLkRhdGVU
aW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSIsICJPYmplY3QiKTsKKworLy8g
UmV0dXJucyBhIG5ldyBvYmplY3QgZWFjaCB0aW1lLgorc2hvdWxkQmVGYWxzZSgiSW50bC5EYXRl
VGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgPT09IEludGwuRGF0ZVRpbWVG
b3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIik7CisKKy8vIFRocm93cyBvbiBub24t
RGF0ZVRpbWVGb3JtYXQgdGhpcy4KK3Nob3VsZFRocm93KCJJbnRsLkRhdGVUaW1lRm9ybWF0LnBy
b3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMuY2FsbCg1KSIsICInVHlwZUVycm9yOiBJbnRsLkRhdGVU
aW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXRc
XCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdCciKTsKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtbnVtYmVyZm9ybWF0
LmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtbnVtYmVyZm9ybWF0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY1NzNiOTIwNTQxMTMwOWQzY2Q0YjA3YjllMDhjZTExYjYzY2E5YTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1udW1iZXJmb3Jt
YXQuanMKQEAgLTAsMCArMSwxMDIgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRo
ZSBiZWhhdmlvciBvZiBJbnRsLk51bWJlckZvcm1hdCBhcyBkZXNjcmliZWQgaW4gdGhlIEVDTUFT
Y3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmljYXRpb24gKEVDTUEtNDAyIDIu
MCkuIik7CisKKy8vIDExLjEgVGhlIEludGwuTnVtYmVyRm9ybWF0IENvbnN0cnVjdG9yCisKKy8v
IFRoZSBJbnRsLk51bWJlckZvcm1hdCBjb25zdHJ1Y3RvciBpcyBhIHN0YW5kYXJkIGJ1aWx0LWlu
IHByb3BlcnR5IG9mIHRoZSBJbnRsIG9iamVjdC4KK3Nob3VsZEJlVHlwZSgiSW50bC5OdW1iZXJG
b3JtYXQiLCAiRnVuY3Rpb24iKTsKKworLy8gMTEuMS4yIEludGwuTnVtYmVyRm9ybWF0KFsgbG9j
YWxlcyBbLCBvcHRpb25zXV0pCitzaG91bGRCZVR5cGUoIkludGwuTnVtYmVyRm9ybWF0KCkiLCAi
SW50bC5OdW1iZXJGb3JtYXQiKTsKK3Nob3VsZEJlVHlwZSgiSW50bC5OdW1iZXJGb3JtYXQuY2Fs
bCh7fSkiLCAiSW50bC5OdW1iZXJGb3JtYXQiKTsKK3Nob3VsZEJlVHlwZSgibmV3IEludGwuTnVt
YmVyRm9ybWF0KCkiLCAiSW50bC5OdW1iZXJGb3JtYXQiKTsKKworLy8gU3ViY2xhc3NhYmxlCitj
bGFzcyBEZXJpdmVkTnVtYmVyRm9ybWF0IGV4dGVuZHMgSW50bC5OdW1iZXJGb3JtYXQge30KK3No
b3VsZEJlVHlwZSgibmV3IERlcml2ZWROdW1iZXJGb3JtYXQiLCAiRGVyaXZlZE51bWJlckZvcm1h
dCIpOworc2hvdWxkQmVUeXBlKCJuZXcgRGVyaXZlZE51bWJlckZvcm1hdCIsICJJbnRsLk51bWJl
ckZvcm1hdCIpOworc2hvdWxkQmUoIm5ldyBEZXJpdmVkTnVtYmVyRm9ybWF0KCkuZm9ybWF0KDEp
IiwgIicxJyIpOworc2hvdWxkQmUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgRGVyaXZlZE51
bWJlckZvcm1hdCkiLCAiRGVyaXZlZE51bWJlckZvcm1hdC5wcm90b3R5cGUiKTsKK3Nob3VsZEJl
KCJPYmplY3QuZ2V0UHJvdG90eXBlT2YoT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBEZXJpdmVk
TnVtYmVyRm9ybWF0KSkiLCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlIik7CisKKy8vIDEx
LjIgUHJvcGVydGllcyBvZiB0aGUgSW50bC5OdW1iZXJGb3JtYXQgQ29uc3RydWN0b3IKKworLy8g
bGVuZ3RoIHByb3BlcnR5ICh3aG9zZSB2YWx1ZSBpcyAwKQorc2hvdWxkQmUoIkludGwuTnVtYmVy
Rm9ybWF0Lmxlbmd0aCIsICIwIik7CisKKy8vIDExLjIuMSBJbnRsLk51bWJlckZvcm1hdC5wcm90
b3R5cGUKKworLy8gVGhpcyBwcm9wZXJ0eSBoYXMgdGhlIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxl
XV06IGZhbHNlLCBbW0VudW1lcmFibGVdXTogZmFsc2UsIFtbQ29uZmlndXJhYmxlXV06IGZhbHNl
IH0uCitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwu
TnVtYmVyRm9ybWF0LCAncHJvdG90eXBlJykud3JpdGFibGUiKTsKK3Nob3VsZEJlRmFsc2UoIk9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQsICdwcm90b3R5
cGUnKS5lbnVtZXJhYmxlIik7CitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LCAncHJvdG90eXBlJykuY29uZmlndXJhYmxlIik7
CisKKy8vIDExLjIuMiBJbnRsLk51bWJlckZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YgKGxvY2Fs
ZXMgWywgb3B0aW9ucyBdKQorCisvLyBUaGUgdmFsdWUgb2YgdGhlIGxlbmd0aCBwcm9wZXJ0eSBv
ZiB0aGUgc3VwcG9ydGVkTG9jYWxlc09mIG1ldGhvZCBpcyAxLgorc2hvdWxkQmUoIkludGwuTnVt
YmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZi5sZW5ndGgiLCAiMSIpOworCisvLyBSZXR1cm5z
IFN1cHBvcnRlZExvY2FsZXMKK3Nob3VsZEJlVHlwZSgiSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9y
dGVkTG9jYWxlc09mKCkiLCAiQXJyYXkiKTsKKworLy8gMTEuMyBQcm9wZXJ0aWVzIG9mIHRoZSBJ
bnRsLk51bWJlckZvcm1hdCBQcm90b3R5cGUgT2JqZWN0CisKKy8vIFRoZSB2YWx1ZSBvZiBJbnRs
Lk51bWJlckZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgJU51bWJlckZvcm1hdCUuCitz
aG91bGRCZSgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmNvbnN0cnVjdG9yIiwgIkludGwu
TnVtYmVyRm9ybWF0Iik7CisKKy8vIDExLjMuMyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUu
Zm9ybWF0CisKKy8vIFRoaXMgbmFtZWQgYWNjZXNzb3IgcHJvcGVydHkgcmV0dXJucyBhIGZ1bmN0
aW9uIHRoYXQgZm9ybWF0cyBhIG51bWJlciBhY2NvcmRpbmcgdG8gdGhlIGVmZmVjdGl2ZSBsb2Nh
bGUgYW5kIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgb2YgdGhpcyBOdW1iZXJGb3JtYXQgb2JqZWN0
Lgorc2hvdWxkQmVUeXBlKCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IiwgIkZ1
bmN0aW9uIik7CisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUgW1tHZXRdXSBhdHRyaWJ1dGUgaXMgYSBm
dW5jdGlvbgorc2hvdWxkQmVUeXBlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKElu
dGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmdldCIsICJGdW5jdGlvbiIpOwor
CisvLyBUaGUgdmFsdWUgb2YgdGhlIFtbU2V0XV0gYXR0cmlidXRlIGlzIHVuZGVmaW5lZC4KK3No
b3VsZEJlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0
LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLnNldCIsICJ1bmRlZmluZWQiKTsKKworLy8gTWF0Y2ggRmly
ZWZveCB3aGVyZSB1bnNwZWNpZmVkLgorc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5lbnVt
ZXJhYmxlIik7CitzaG91bGRCZVRydWUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykuY29uZmlndXJhYmxlIik7CisK
Ky8vIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVydHkgaXMgMS4KK3Nob3VsZEJlKCJJ
bnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0Lmxlbmd0aCIsICIxIik7CisKKy8vIFRo
cm93cyBvbiBub24tTnVtYmVyRm9ybWF0IHRoaXMuCitzaG91bGRUaHJvdygiT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHt9LCAnZm9ybWF0JywgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJ
bnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKSkuZm9ybWF0IiwgIidUeXBlRXJy
b3I6IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRo
YXRcXCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQnIik7CisK
Ky8vIFRoZSBmb3JtYXQgZnVuY3Rpb24gaXMgdW5pcXVlIHBlciBpbnN0YW5jZS4KK3Nob3VsZEJl
VHJ1ZSgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCAhPT0gSW50bC5OdW1iZXJG
b3JtYXQoKS5mb3JtYXQiKTsKK3Nob3VsZEJlVHJ1ZSgibmV3IEludGwuTnVtYmVyRm9ybWF0KCku
Zm9ybWF0ICE9PSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQiKTsKKworLy8gMTEuMy40
IEZvcm1hdCBOdW1iZXIgRnVuY3Rpb25zCisKKy8vIDEuIExldCBuZiBiZSB0aGUgdGhpcyB2YWx1
ZS4KKy8vIDIuIEFzc2VydDogVHlwZShuZikgaXMgT2JqZWN0IGFuZCBuZiBoYXMgYW4gW1tpbml0
aWFsaXplZE51bWJlckZvcm1hdF1dIGludGVybmFsIHNsb3Qgd2hvc2UgdmFsdWUgaXMgdHJ1ZS4K
Ky8vIFRoaXMgc2hvdWxkIG5vdCBiZSByZWFjaGFibGUsIHNpbmNlIGZvcm1hdCBpcyBib3VuZCB0
byBhbiBpbml0aWFsaXplZCBudW1iZXJmb3JtYXQuCisKKy8vIDMuIElmIHZhbHVlIGlzIG5vdCBw
cm92aWRlZCwgbGV0IHZhbHVlIGJlIHVuZGVmaW5lZC4KKy8vIDQuIExldCB4IGJlIFRvTnVtYmVy
KHZhbHVlKS4KKy8vIDUuIFJldHVybklmQWJydXB0KHgpLgorc2hvdWxkVGhyb3coIkludGwuTnVt
YmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQoeyB2YWx1ZU9mKCkgeyB0aHJvdyBFcnJvcignNScp
IH0gfSkiLCAiJ0Vycm9yOiA1JyIpOworCisvLyBGb3JtYXQgaXMgYm91bmQsIHNvIGNhbGxpbmcg
d2l0aCBhbHRlcm5hdGUgInRoaXMiIGhhcyBubyBlZmZlY3QuCitzaG91bGRCZSgiSW50bC5OdW1i
ZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5jYWxsKG51bGwsIDEuMikiLCAiSW50bC5OdW1iZXJG
b3JtYXQoKS5mb3JtYXQoMS4yKSIpOworc2hvdWxkQmUoIkludGwuTnVtYmVyRm9ybWF0LnByb3Rv
dHlwZS5mb3JtYXQuY2FsbChJbnRsLkRhdGVUaW1lRm9ybWF0KCdhcicpLCAxLjIpIiwgIkludGwu
TnVtYmVyRm9ybWF0KCkuZm9ybWF0KDEuMikiKTsKK3Nob3VsZEJlKCJJbnRsLk51bWJlckZvcm1h
dC5wcm90b3R5cGUuZm9ybWF0LmNhbGwoNSwgMS4yKSIsICJJbnRsLk51bWJlckZvcm1hdCgpLmZv
cm1hdCgxLjIpIik7CitzaG91bGRCZSgibmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0LmNh
bGwobnVsbCwgMS4yKSIsICJJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdCgxLjIpIik7CitzaG91
bGRCZSgibmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0LmNhbGwoSW50bC5EYXRlVGltZUZv
cm1hdCgnYXInKSwgMS4yKSIsICJJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdCgxLjIpIik7Citz
aG91bGRCZSgibmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0LmNhbGwoNSwgMS4yKSIsICJJ
bnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdCgxLjIpIik7CisKKy8vIDExLjMuNSBJbnRsLk51bWJl
ckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zICgpCisKK3Nob3VsZEJlKCJJbnRsLk51
bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zLmxlbmd0aCIsICIwIik7CisKKy8v
IFJldHVybnMgYSBuZXcgb2JqZWN0IHdob3NlIHByb3BlcnRpZXMgYW5kIGF0dHJpYnV0ZXMgYXJl
IHNldCBhcyBpZiBjb25zdHJ1Y3RlZCBieSBhbiBvYmplY3QgbGl0ZXJhbC4KK3Nob3VsZEJlVHlw
ZSgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIiwgIk9iamVj
dCIpOworCisvLyBSZXR1cm5zIGEgbmV3IG9iamVjdCBlYWNoIHRpbWUuCitzaG91bGRCZUZhbHNl
KCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgPT09IEludGwu
TnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSIpOworCisvLyBUaHJvd3Mg
b24gbm9uLU51bWJlckZvcm1hdCB0aGlzLgorc2hvdWxkVGhyb3coIkludGwuTnVtYmVyRm9ybWF0
LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMuY2FsbCg1KSIsICInVHlwZUVycm9yOiBJbnRsLk51
bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
XFwncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0JyIpOworCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC5qcyBiL0xheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLmpzCmluZGV4IDhhNGNmNTg0ZTJmMDljZWM4N2Q1NWY5
MzIyNjQ0M2VkNzE4MzJlMzkuLjA5NjgyODcyODg2MGIwY2M4OTgyNzk3YzljNGRmOTczODJkODg4
NTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLmpzCisrKyBi
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLmpzCkBAIC0xLDIzICsxLDI2IEBACi0v
LyBUaGlzIGZlYXR1cmUgaXNuJ3QgZW5hYmxlZCB5ZXQuCi0vL0Agc2tpcAorZGVzY3JpcHRpb24o
IlRoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBJbnRsIG9iamVjdCBhcyBkZXNj
cmliZWQgaW4gdGhlIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmlj
YXRpb24gKEVDTUEtNDAyIDIuMCkuIik7CiAKLWRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tz
IHRoZSBiZWhhdmlvciBvZiB0aGUgSW50bCBvYmplY3QgYXMgZGVzY3JpYmVkIGluIDggb2YgdGhl
IEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmljYXRpb24uIik7Cisv
LyA4IFRoZSBJbnRsIE9iamVjdAogCi0vLyBUaGUgSW50bCBvYmplY3QgaXMgYSBzdGFuZGFyZCBi
dWlsdC1pbiBvYmplY3QgdGhhdCBpcyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgSW50bCBwcm9w
ZXJ0eSBvZiB0aGUgZ2xvYmFsIG9iamVjdC4KKy8vIFRoZSBJbnRsIG9iamVjdCBpcyBhIHNpbmds
ZSBvcmRpbmFyeSBvYmplY3QuCiBzaG91bGRCZVR5cGUoIkludGwiLCAiT2JqZWN0Iik7CiBzaG91
bGRCZSgidHlwZW9mIEludGwiLCAiJ29iamVjdCciKTsKIHNob3VsZEJlKCJPYmplY3QucHJvdG90
eXBlLnRvU3RyaW5nLmNhbGwoSW50bCkiLCAiJ1tvYmplY3QgT2JqZWN0XSciKTsKIAotLy8gVGhl
IHZhbHVlIG9mIHRoZSBbW1Byb3RvdHlwZV1dIGludGVybmFsIHByb3BlcnR5IG9mIHRoZSBJbnRs
IG9iamVjdCBpcyB0aGUgYnVpbHQtaW4gT2JqZWN0IHByb3RvdHlwZSBvYmplY3Qgc3BlY2lmaWVk
IGJ5IHRoZSBFQ01BU2NyaXB0IExhbmd1YWdlIFNwZWNpZmljYXRpb24uCisvLyBUaGUgdmFsdWUg
b2YgdGhlIFtbUHJvdG90eXBlXV0gaW50ZXJuYWwgc2xvdCBvZiB0aGUgSW50bCBvYmplY3QgaXMg
dGhlIGludHJpbnNpYyBvYmplY3QgJU9iamVjdFByb3RvdHlwZSUuCiBzaG91bGRCZVRydWUoIk9i
amVjdC5nZXRQcm90b3R5cGVPZihJbnRsKSA9PT0gT2JqZWN0LnByb3RvdHlwZSIpOwogCi0vLyBU
aGUgSW50bCBvYmplY3QgZG9lcyBub3QgaGF2ZSBhIFtbQ29uc3RydWN0XV0gaW50ZXJuYWwgcHJv
cGVydHk7IGl0IGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgdGhlIEludGwgb2JqZWN0IGFzIGEgY29u
c3RydWN0b3Igd2l0aCB0aGUgbmV3IG9wZXJhdG9yLgorLy8gVGhlIEludGwgb2JqZWN0IGlzIG5v
dCBhIGZ1bmN0aW9uIG9iamVjdC4KKy8vIEl0IGRvZXMgbm90IGhhdmUgYSBbW0NvbnN0cnVjdF1d
IGludGVybmFsIG1ldGhvZDsgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHVzZSB0aGUgSW50bCBvYmpl
Y3QgYXMgYSBjb25zdHJ1Y3RvciB3aXRoIHRoZSBuZXcgb3BlcmF0b3IuCiBzaG91bGRUaHJvdygi
bmV3IEludGwiLCAiJ1R5cGVFcnJvcjogT2JqZWN0IGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFs
dWF0aW5nIFxcJ25ldyBJbnRsXFwnKSciKTsKIAotLy8gVGhlIEludGwgb2JqZWN0IGRvZXMgbm90
IGhhdmUgYSBbW0NhbGxdXSBpbnRlcm5hbCBwcm9wZXJ0eTsgaXQgaXMgbm90IHBvc3NpYmxlIHRv
IGludm9rZSB0aGUgSW50bCBvYmplY3QgYXMgYSBmdW5jdGlvbi4KKy8vIFRoZSBJbnRsIG9iamVj
dCBkb2VzIG5vdCBoYXZlIGEgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kOyBpdCBpcyBub3QgcG9z
c2libGUgdG8gaW52b2tlIHRoZSBJbnRsIG9iamVjdCBhcyBhIGZ1bmN0aW9uLgogc2hvdWxkVGhy
b3coIkludGwoKSIsICInVHlwZUVycm9yOiBJbnRsIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gXFwn
SW50bCgpXFwnLCBcXCdJbnRsXFwnIGlzIGFuIGluc3RhbmNlIG9mIE9iamVjdCknIik7CiAKLS8v
IGlzIGRlbGV0YWJsZSwgaW5mZXJyZWQgZnJvbSB1c2Ugb2YgIkluaXRpYWwiIGluIHNwZWMsIGNv
bnNpc3RlbnQgd2l0aCBvdGhlciBpbXBsZW1lbnRhdGlvbnMKKy8vIEhhcyBvbmx5IHRoZSBidWls
dC1pbiBDb2xsYXRvciwgRGF0ZVRpbWVGb3JtYXQsIGFuZCBOdW1iZXJGb3JtYXQsIHdoaWNoIGFy
ZSBub3QgZW51bWVyYWJsZS4KK3Nob3VsZEJlKCJPYmplY3Qua2V5cyhJbnRsKS5sZW5ndGgiLCAi
MCIpOworCisvLyBJcyBkZWxldGFibGUsIGluZmVycmVkIGZyb20gdXNlIG9mICJJbml0aWFsIiBp
biBzcGVjLCBjb25zaXN0ZW50IHdpdGggb3RoZXIgaW1wbGVtZW50YXRpb25zLgogdmFyIF9fSW50
bCA9IEludGw7CiBzaG91bGRCZVRydWUoImRlbGV0ZSBJbnRsOyIpOwogCkBAIC0yNSwzICsyOCw0
IEBAIGZ1bmN0aW9uIGdsb2JhbCgpIHsgcmV0dXJuIHRoaXM7IH0KIHNob3VsZEJlRmFsc2UoIidJ
bnRsJyBpbiBnbG9iYWwoKSIpOwogCiBJbnRsID0gX19JbnRsOworCmRpZmYgLS1naXQgYS9DaGFu
Z2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZjBkODEyN2FmMTA4OWY1NjAwN2Y4NmYyZjAwMzY2YmIw
ZTExZjIwMS4uZTFlODdiZjhiNmNkOTM2NmQ5MjExMzNlZjhhZmQyMzZhNmJiYTRiNiAxMDA2NDQK
LS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTA3
LTI5ICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CisKKyAgICAg
ICAgSW1wbGVtZW50IGJhc2ljIHR5cGVzIGZvciBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0
aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ2OTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKworICAgICAg
ICBFbmFibGUgZmxhZyBub3cgdGhhdCB0aGUgYmFzaWMgb2JqZWN0cyBhcmUgaW4gcGxhY2UuCisK
KyAgICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2U6IGVuYWJsZSBJTlRM
CisKIDIwMTUtMDctMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAK
ICAgICAgICAgW0VTNl0gQWRkIEVOQUJMRV9FUzZfTU9EVUxFUyBjb21waWxlIHRpbWUgZmxhZyB3
aXRoIHRoZSBkZWZhdWx0IHZhbHVlICJmYWxzZSIK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257796</attachid>
            <date>2015-07-29 18:43:50 -0700</date>
            <delta_ts>2015-07-29 20:35:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146926-20150729184227.patch</filename>
            <type>text/plain</type>
            <size>181140</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3NTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YTFmMGY5MzgwZTBjZGU0NmY5ZWMxNzJmM2MyNzUzMTVmMWI4ZmYxLi4zYmRiMmEyNzg0MTAzZDMy
ZGMxYTNhOGI0ZmUyNTU4ZTQ3MTE4MThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDQgQEAKKzIwMTUtMDctMjkgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVy
QGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgdHlwZXMgZm9yIEVDTUFTY3Jp
cHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1p
biBQb3VsYWluLgorCisgICAgICAgIEFkZHMgYmFzaWMgdHlwZXMgZm9yIEVDTUEtNDAyIDJuZCBl
ZGl0aW9uLCBidXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBmdWxsIGxvY2FsZS1hd2FyZSBmZWF0
dXJlcyB5ZXQuCisgICAgICAgIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21h
LTQwMi8yLjAvRUNNQS00MDIucGRmCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkZWQg
bmV3IEludGwgZmlsZXMuCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWc6IEVuYWJsZSBJTlRMLgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6IEFk
ZGVkIEludGwgZmlsZXMuCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogQWRkZWQgSW50bCBmaWxlcy4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6IEFkZGVkIEludGwgZmlsZXMuCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6
IEFkZGVkIEludGwgZmlsZXMuCisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
OiBBZGRlZCBDb2xsYXRvciwgTnVtYmVyRm9ybWF0LCBhbmQgRGF0ZVRpbWVGb3JtYXQuCisgICAg
ICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwOiBNYWRlIERhdGUubm93IHB1YmxpYy4K
KyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oOiBNYWRlIERhdGUubm93IHB1Ymxp
Yy4KKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xsYXRvci5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpJbnRsQ29sbGF0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpJbnRsQ29sbGF0
b3IpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6SW50bENvbGxhdG9yOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SW50bENvbGxh
dG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjpzZXRCb3Vu
ZENvbXBhcmUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JGdW5jQ29tcGFyZSk6IEFkZGVk
IHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHVzaW5nIGNvZGVQb2ludENvbXBhcmUuCisgICAg
ICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxD
b2xsYXRvcjo6Y29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmJvdW5k
Q29tcGFyZSk6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHA6
IEFkZGVkLgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpJbnRsQ29sbGF0b3JDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxDb2xsYXRvcik6IEFkZGVkIENv
bGxhdG9yIGNvbnN0cnVjdG9yICgxMC4xLjIpLgorICAgICAgICAoSlNDOjpjYWxsSW50bENvbGxh
dG9yKTogQWRkZWQgQ29sbGF0b3IgY29uc3RydWN0b3IgKDEwLjEuMikuCisgICAgICAgIChKU0M6
OkludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpT
Qzo6SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6
SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChK
U0M6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6IEFkZGVk
IHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyBbXS4KKyAgICAgICAgKEpTQzo6
SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxD
b2xsYXRvckNvbnN0cnVjdG9yOjpjb2xsYXRvclN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGlt
ZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bENv
bGxhdG9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvclByb3Rv
dHlwZTo6SW50bENvbGxhdG9yUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9y
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvclBy
b3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9y
UHJvdG90eXBlR2V0dGVyQ29tcGFyZSk6IEFkZGVkIGNvbXBhcmUgZ2V0dGVyICgxMC4zLjMpCisg
ICAgICAgIChKU0M6OkludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOiBB
ZGRlZCBwbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcge30uCisgICAgICAgICog
cnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgICogcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bERhdGVU
aW1lRm9ybWF0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6SW50bERh
dGVUaW1lRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0OjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6ZGVzdHJveSk6Cisg
ICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
IChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6c2V0Qm91bmRGb3JtYXQpOgorICAgICAgICAoSlND
OjpJbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUpOiBBZGRlZCBwbGFjZWhvbGRl
ciBpbXBsZW1lbnRhdGlvbiByZXR1cm5pbmcgbmV3IERhdGUodmFsdWUpLnRvU3RyaW5nKCkuCisg
ICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OkludGxEYXRlVGltZUZvcm1hdDo6Y29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpJbnRs
RGF0ZVRpbWVGb3JtYXQ6OmJvdW5kRm9ybWF0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0KTogQWRk
ZWQgRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgKDEyLjEuMikuCisgICAgICAgIChKU0M6OmNh
bGxJbnRsRGF0ZVRpbWVGb3JtYXQpOiBBZGRlZCBEYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciAo
MTIuMS4yKS4KKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6Omdl
dENvbnN0cnVjdERhdGEpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKTogQWRkZWQgcGxhY2Vob2xk
ZXIgaW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIFtdLgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKToKKyAg
ICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQpOiBBZGRlZCBmb3JtYXQgZ2V0dGVyICgxMi4zLjMp
LgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRP
cHRpb25zKTogQWRkZWQgcGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIHt9Lgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmg6IEFkZGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVy
Rm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0
OjpJbnRsTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpkZXN0cm95KToK
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
IChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnNldEJvdW5kRm9ybWF0KToKKyAgICAgICAgKEpTQzo6
SW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXROdW1iZXIpOiBBZGRlZCBwbGFjZWhvbGRlciBpbXBs
ZW1lbnRhdGlvbiByZXR1cm5pbmcgTnVtYmVyKHZhbHVlKS50b1N0cmluZygpLgorICAgICAgICAq
IHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bE51
bWJlckZvcm1hdDo6Y29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0
Ojpib3VuZEZvcm1hdCk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvcjo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNv
bnN0cnVjdEludGxOdW1iZXJGb3JtYXQpOiBBZGRlZCBOdW1iZXJGb3JtYXQgY29uc3RydWN0b3Ig
KDExLjEuMikuCisgICAgICAgIChKU0M6OmNhbGxJbnRsTnVtYmVyRm9ybWF0KTogQWRkZWQgTnVt
YmVyRm9ybWF0IGNvbnN0cnVjdG9yICgxMS4xLjIpLgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAoSlNDOjpJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6SW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAo
SlNDOjpJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKTog
QWRkZWQgcGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24gcmV0dXJuaW5nIFtdLgorICAgICAgICAo
SlNDOjpJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6Om51bWJlckZvcm1hdFN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OkludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGVHZXR0ZXJGb3JtYXQpOiBBZGRlZCBmb3JtYXQgZ2V0dGVyICgxMS4zLjMpLgorICAgICAg
ICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6IEFk
ZGVkIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIHJldHVybmluZyB7fS4KKyAgICAgICAgKiBy
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgICogcnVu
dGltZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOiBBZGRlZCBDb2xsYXRv
ciwgTnVtYmVyRm9ybWF0LCBhbmQgRGF0ZVRpbWVGb3JtYXQgcHJvcGVydGllcyAoOC4xKS4KKyAg
ICAgICAgKEpTQzo6SW50bE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGlt
ZS9JbnRsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmNvbGxhdG9yQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0Ojpjb2xsYXRvclByb3RvdHlwZSk6Cisg
ICAgICAgIChKU0M6OkludGxPYmplY3Q6OmNvbGxhdG9yU3RydWN0dXJlKToKKyAgICAgICAgKEpT
Qzo6SW50bE9iamVjdDo6bnVtYmVyRm9ybWF0Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpJ
bnRsT2JqZWN0OjpudW1iZXJGb3JtYXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpJbnRsT2Jq
ZWN0OjpudW1iZXJGb3JtYXRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0Ojpk
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6ZGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0OjpkYXRlVGlt
ZUZvcm1hdFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKwogMjAxNS0wNy0yOSAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjE4NzU1MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiYTk1M2MyZjA4ZjZiYzQzOWU4
MjRlMWIzZmE5NDFjMGM1Mzg4OTU4Li42MTY0Y2JkMjZlNWE1NDAxMWNlZWY0ZTAyMjk0N2M0MTg2
OTUyYWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDctMjkgIEFuZHkgVmFu
V2Fnb25lciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
YmFzaWMgdHlwZXMgZm9yIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgICogQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6IEVuYWJsZWQgSU5UTC4KKwogMjAxNS0wNy0y
OSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFVz
ZSBydmFsdWUgcmVmZXJlbmNlcyBpbiBGb250Q2FzY2FkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGY2
NWE2ZTJkNjFjNjhiMWZlZjdkMDViZGZjMWExYWZjMDZkZmRiNTcuLjhkMjViZGZhZDRmMGJhODMx
YWRmZWJlZWVjODI1YzU0MzM5YjJjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAxNS0wNy0yOSAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBiYXNpYyB0eXBlcyBmb3IgRUNNQVNjcmlwdCBJbnRlcm5h
dGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0NjkyNgorCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4u
CisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzogRW5h
YmxlZCBJTlRMLgorCiAyMDE1LTA3LTI4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgogCiAgICAgICAgIFtFUzZdIEFkZCBFTkFCTEVfRVM2X01PRFVMRVMgY29tcGlsZSB0
aW1lIGZsYWcgd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZSAiZmFsc2UiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWVm
MzA3ZmQ3ODYzZmIzMjUwMTExMGI1NGI3NzZiMmZjMzdhOWUxZi4uMjgzNDc1ZTkwNGUyNzkxZGYx
YTU5ZDk5ZjY5ZjU1YTQxM2YzNjg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1
LTA3LTI5ICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IGJhc2ljIHR5cGVzIGZvciBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxp
emF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ2OTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKworICAg
ICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOiBFbmFibGVkIElO
VEwuCisKIDIwMTUtMDctMjkgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBQcmV2aWV3IHNob3VsZCBub3Qgc3RhcnQgaWYgdG91Y2ggaGFuZGxlciBwcmV2ZW50
cyBkZWZhdWx0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDUxZmM0OWQz
NTBmZTQ4MDM0ZWZlNGM3NTg2MmVmMGUwMTI4YTdjNjguLjQ1YmE1ODU1YWUyZGEwYTMyNTNjMTE3
NTkwN2I3YzhjNDY3YzgxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTQ3Niw2ICs0NzYsMTUgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAg
IHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKICAgICBydW50aW1lL0ludGVuZGVkU3Ry
dWN0dXJlQ2hhaW4uY3BwCiAgICAgcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAorICAgIHJ1
bnRpbWUvSW50bENvbGxhdG9yLmNwcAorICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0
b3IuY3BwCisgICAgcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCisgICAgcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisgICAgcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5j
cHAKKyAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisgICAgcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSW50bE9iamVjdC5jcHAKICAgICBydW50aW1lL0l0ZXJh
dG9yT3BlcmF0aW9ucy5jcHAKICAgICBydW50aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAt
NjIxLDYgKzYzMCwxMiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfTFVUX0ZJTEVTCiAgICAgcnVudGlt
ZS9EYXRlQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAogICAg
IHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9JbnRsQ29sbGF0b3JDb25z
dHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKKyAgICBy
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5j
cHAKICAgICBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKICAgICBydW50aW1lL0pTT05PYmplY3QuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKaW5kZXggZTE2MGM3ZjgxM2NhNGQ5NjVhYjBlMDE4ZDhiNzI2OTZlY2JlZGM3MC4u
YmNlODYwYTdlYzgxZDFmNDZmZjlkMzlmY2MyYWVhZjc5NTAxNzE5YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZwpAQCAtMTE3LDcgKzExNyw3IEBAIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19U
QVJHRVRfbWFjb3N4XzEwMTAwMCA9IDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRf
bWFjb3N4XzEwMTEwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiBFTkFCTEVf
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEyMDAgPSBFTkFCTEVfV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUOwogCi1FTkFCTEVfSU5UTCA9IDsKK0VOQUJMRV9JTlRMID0gRU5BQkxF
X0lOVEw7CiAKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNbc2RrPWlwaG9uZSpdID0gJChFTkFC
TEVfSU9TX0dFU1RVUkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES18kKFVTRV9JTlRFUk5B
TF9TREspKTsKIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RL
X1lFUyA9IEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGYzNWFiODY3MjQwZjkyNjg4ZjkzNmQxMjFmOTljMTFi
MzVmZmFjNTMuLmQwNzEyNjUyYTA5YjFjOGFmNTFkYTJlNjZkOWExODRiMzA1OWFlNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC00MSw2ICs0MSwxMiBA
QCBhbGwgOiBcCiAgICAgRGF0ZUNvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBEYXRlUHJvdG90eXBl
Lmx1dC5oIFwKICAgICBFcnJvclByb3RvdHlwZS5sdXQuaCBcCisgICAgSW50bENvbGxhdG9yQ29u
c3RydWN0b3IubHV0LmggXAorICAgIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCBcCisgICAg
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggXAorICAgIEludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZS5sdXQuaCBcCisgICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1
dC5oIFwKKyAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oIFwKICAgICBKU0RhdGFW
aWV3UHJvdG90eXBlLmx1dC5oIFwKICAgICBKU09OT2JqZWN0Lmx1dC5oIFwKICAgICBKU0dsb2Jh
bE9iamVjdC5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRl
eCBhNDVhYjY2ZDBlOWFlNmJjOGM5NDg2NTkyOGE5ZmIxM2NjYzhhMmQ0Li5lNjc2MzM4MjUzMDll
N2NhMmEwZDVkZjEwMTkyZTdmMWY5ZjM0ZDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2oKQEAgLTczMSw2ICs3MzEsMTUgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEludGVuZGVkU3RydWN0dXJlQ2hhaW4uY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRlcm5hbEZ1bmN0aW9uLmNwcCIgLz4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENvbGxhdG9yLmNwcCIgLz4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENvbGxhdG9yQ29uc3RydWN0b3Iu
Y3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3JQ
cm90b3R5cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRs
RGF0ZVRpbWVGb3JtYXQuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAiIC8+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3JtYXQuY3BwIiAv
PgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSW50bE9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEl0ZXJhdG9yT3BlcmF0aW9ucy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEl0ZXJhdG9yUHJvdG90eXBlLmNwcCIgLz4KQEAgLTE1MzcsNiArMTU0Niwx
NSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnQ4QXJyYXkuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50ZW5kZWRTdHJ1Y3R1cmVDaGFp
bi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRlcm5hbEZ1bmN0
aW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRv
ci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsQ29sbGF0b3JD
b25zdHJ1Y3Rvci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRs
Q29sbGF0b3JQcm90b3R5cGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSW50bERhdGVUaW1lRm9ybWF0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgiIC8+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9ybWF0LmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3Rvci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEludGxPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SW50cmluc2ljLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEl0ZXJh
dGlvblN0YXR1cy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvai5maWx0ZXJzCmluZGV4IDZjZTM2Nzc0NmU3YWM5Yjc4YmQxNDlhMzg2MDgwYzQ2NGQ1ZTRm
ZTMuLmY2NmM5YmM0ZTBhMWNiZjJkM2Y4YmViNzA5ZGUzNDU1ZGM3NzNhMDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTYzMCw2ICs2
MzAsMzMgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50ZXJuYWxGdW5j
dGlvbi5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBp
bGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvci5jcHAi
PgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNw
cCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bENvbGxhdG9yUHJvdG90eXBlLmNw
cCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9ybWF0LmNwcCI+
CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxl
PgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xD
b21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsTnVtYmVyRm9y
bWF0LmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGls
ZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0Ns
Q29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAg
PC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxPYmpl
Y3QuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxl
PgpAQCAtMjY4Nyw2ICsyNzE0LDMzIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEludGVybmFsRnVuY3Rpb24uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50
bENvbGxhdG9yLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvckNv
bnN0cnVjdG9yLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxDb2xsYXRvclBy
b3RvdHlwZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxJbnRsRGF0ZVRpbWVGb3Jt
YXQuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5j
bHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9D
bEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJG
b3JtYXQuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVk
ZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGUuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0Ns
SW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSW50bE9iamVjdC5o
Ij4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2OTllN2E2NjY1N2Y4MTk0Mjc5NTg5NzA0YWYx
NjQ0MGViM2RiY2E4Li5hZWVlMTAyNTAxNWZkZDVhYmMwNDkxZDM3ODVmNmRjZjU1MTRlYWZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE3MiwxMyArMTE3MiwzNyBAQAogCQk5
RTcyOTQwQjE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUU3Mjk0MEExOTBGMDUxNDAwMUE5MUI1IC8q
IEJ1bmRsZVBhdGguaCAqLzsgfTsKIAkJOUVBNUM3QTExOTBGMDg0MjAwNTA4RUJFIC8qIEJ1bmRs
ZVBhdGgubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
RTcyOTQwOTE5MEYwMzA2MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5tbSAqLzsgfTsKIAkJOUVBNUM3
QTIxOTBGMDg4NzAwNTA4RUJFIC8qIEluaXRpYWxpemVMTFZNTWFjLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlFQTVDN0EwMTkwRjA1RDIwMDUwOEVC
RSAvKiBJbml0aWFsaXplTExWTU1hYy5jcHAgKi87IH07CisJCUExMjU4NDZFMUI0NUEzNjAwMEND
N0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTI1ODQ2QzFCNDVBMzYwMDBDQzdGNkMg
LyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oICovOyB9OworCQlBMTI1ODQ2RjFC
NDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMjU4NDZEMUI0NUEzNjAw
MENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oICovOyB9OwogCQlBMTJC
QkZGMjFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEyQkJGRjExQjA0NEE4QjAwNjY0QjY5IC8qIElu
dGxPYmplY3QuaCAqLzsgfTsKIAkJQTEyQkJGRjQxQjA0NEE5ODAwNjY0QjY5IC8qIEludGxPYmpl
Y3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEy
QkJGRjMxQjA0NEE5ODAwNjY0QjY5IC8qIEludGxPYmplY3QuY3BwICovOyB9OworCQlBMTU4N0Q2
RDFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNTg3RDY3MUI0REMxNDEwMEQ2OTg0
OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3BwICovOyB9OworCQlBMTU4N0Q2RTFCNERDMTQxMDBE
Njk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q2ODFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVU
aW1lRm9ybWF0LmggKi87IH07CisJCUExNTg3RDZGMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q2OTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuY3BwICovOyB9OworCQlBMTU4N0Q3MDFCNERDMTQxMDBENjk4NDkg
LyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNTg3RDZBMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oICovOyB9OworCQlBMTU4N0Q3MTFCNERDMTQxMDBE
Njk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNTg3RDZCMUI0REMxNDEwMEQ2OTg0OSAv
KiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwICovOyB9OworCQlBMTU4N0Q3MjFCNERD
MTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTU4N0Q2QzFCNERDMTQxMDBENjk4
NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmggKi87IH07CisJCUExNTg3RDc1MUI0
REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNTg3RDczMUI0REMx
QzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLzsgfTsK
KwkJQTE1ODdENzYxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
NTg3RDc0MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0
LmggKi87IH07CiAJCUExNzEyQjNCMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcxMkIzQTEx
QzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwICovOyB9OwogCQlBMTcxMkIzRjExQzdC
MjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNo
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUEx
NzEyQjQxMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBS
ZWdFeHBLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlBMTgxOTNFMzFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3Iu
bHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTgx
OTNFMTFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0LmggKi87
IH07CisJCUExODE5M0U0MUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUu
bHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTgx
OTNFMjFCNEUwQ0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oICovOyB9
OwogCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY0MDkyM0MxNTZF
RUQzQjAwNTY2Q0IyIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3MTEg
LyogQVJNNjRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2NDA5MjNCMTU2RUVEM0IwMDU2NkNCMiAvKiBBUk02NEFzc2VtYmxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUExQjlFMjM5
MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCOUUyMzMxQjRFMEQ2NzAwQkM3RkVEIC8qIElu
dGxDb2xsYXRvci5jcHAgKi87IH07CisJCUExQjlFMjNBMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRs
Q29sbGF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExQjlFMjM0MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3IuaCAqLzsgfTsKKwkJQTFC
OUUyM0IxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjlFMjM1MUI0RTBE
NjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCUExQjlF
MjNDMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCOUUyMzYxQjRFMEQ2NzAw
QkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVjdG9yLmggKi87IH07CisJCUExQjlFMjNEMUI0
RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCOUUyMzcxQjRFMEQ2NzAwQkM3RkVE
IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5jcHAgKi87IH07CisJCUExQjlFMjNFMUI0RTBENjcw
MEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjlFMjM4MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRs
Q29sbGF0b3JQcm90b3R5cGUuaCAqLzsgfTsKKwkJQTFENzkyRkMxQjQzODY0QjAwNDUxNkY1IC8q
IEludGxOdW1iZXJGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFENzkyRjYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQu
Y3BwICovOyB9OworCQlBMUQ3OTJGRDFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1h
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzky
RjcxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCAqLzsgfTsKKwkJQTFENzky
RkUxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3OTJGODFCNDM4
NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLzsgfTsKKwkJ
QTFENzkyRkYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzkyRjkx
QjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICovOyB9Owor
CQlBMUQ3OTMwMDFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3OTJG
QTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgKi87IH07
CisJCUExRDc5MzAxMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3OTJG
QjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oICovOyB9Owog
CQlBNTAzRkExOTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExMzE4OEUw
RkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07CiAJCUE1MDNGQTFB
MTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNDE4OEUwRkFGMDAxMTBGMTQg
LyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExQjE4OEUwRkIwMDAxMTBG
MTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE1MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFT
Y3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwpAQCAtMjk2MCwxMSArMjk4NCwzNSBAQAogCQk5RTcy
OTQwOTE5MEYwMzA2MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJ1bmRsZVBhdGgubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlFNzI5NDBBMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1bmRsZVBhdGguaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOUVBNUM3QTAxOTBGMDVEMjAwNTA4RUJFIC8qIEluaXRpYWxpemVMTFZN
TWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEluaXRpYWxpemVM
TFZNTWFjLmNwcDsgcGF0aCA9IGxsdm0vSW5pdGlhbGl6ZUxMVk1NYWMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBMTI1ODQ2QzFCNDVBMzYwMDBDQzdGNkMgLyogSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUExMjU4NDZEMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTJC
QkZGMTFCMDQ0QThCMDA2NjRCNjkgLyogSW50bE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnRsT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUExMkJCRkYzMUIwNDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBMTU4N0Q2NzFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9y
bWF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxEYXRlVGlt
ZUZvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNTg3RDY4MUI0REMx
NDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUExNTg3RDY5MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUExNTg3RDZBMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTU4N0Q2QjFCNERD
MTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNTg3RDZDMUI0REMxNDEwMEQ2OTg0
OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUExNTg3RDczMUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUExNTg3RDc0MUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTE3MTJCM0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cENhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cENhY2hlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBL
ZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwS2V5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExODE5M0UxMUI0RTBDREIwMEZDMTAyOSAvKiBJbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW50bENvbGxhdG9yQ29uc3RydWN0b3IubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUExODE5M0UyMUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUu
bHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxDb2xsYXRvclByb3Rv
dHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFCOUUyMzMxQjRFMEQ2
NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnRsQ29sbGF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBMUI5RTIzNDFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxDb2xsYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBMUI5RTIzNTFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3Ry
dWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bENvbGxh
dG9yQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUI5RTIz
NjFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFCOUUyMzcxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxD
b2xsYXRvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBMUI5RTIzODFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxDb2xsYXRvclByb3RvdHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUQ3OTJGNjFCNDM4NjRCMDA0NTE2RjUgLyog
SW50bE51bWJlckZvcm1hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbnRsTnVtYmVyRm9ybWF0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFE
NzkyRjcxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE51bWJlckZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBMUQ3OTJGODFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUExRDc5MkY5MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRDc5MkZBMUI0Mzg2
NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMUQ3OTJGQjFCNDM4NjRCMDA0NTE2RjUgLyog
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1MDNGQTEzMTg4RTBGQUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEphdmFTY3JpcHRDYWxsRnJh
bWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTAzRkExNDE4OEUwRkFGMDAx
MTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKYXZhU2NyaXB0Q2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE1MDNGQTE1MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNjMsNiArNDMxMSwxMiBA
QAogCQkJCUE1MzI0Mzg0MTg1NjgzMTcwMDJFRDY5MiAvKiBJbnNwZWN0b3JGcm9udGVuZERpc3Bh
dGNoZXJzLmggKi8sCiAJCQkJQTUzMjQzODUxODU2ODMxNzAwMkVENjkyIC8qIEluc3BlY3RvclBy
b3RvY29sT2JqZWN0cy5jcHAgKi8sCiAJCQkJQTUzMjQzODYxODU2ODMxNzAwMkVENjkyIC8qIElu
c3BlY3RvclByb3RvY29sT2JqZWN0cy5oICovLAorCQkJCUExODE5M0UxMUI0RTBDREIwMEZDMTAy
OSAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQlBMTgxOTNFMjFCNEUw
Q0RCMDBGQzEwMjkgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5oICovLAorCQkJCUExNTg3
RDczMUI0REMxQzYwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQu
aCAqLywKKwkJCQlBMTU4N0Q3NDFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmx1dC5oICovLAorCQkJCUExMjU4NDZDMUI0NUEzNjAwMENDN0Y2QyAvKiBJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8sCisJCQkJQTEyNTg0NkQxQjQ1QTM2MDAw
Q0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQTdEODAx
QTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLywKIAkJCQlBN0Q4MDFBNzE4
ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLywKIAkJCQlCQzg3Q0RCODEwNzEyQUNB
MDAwNjE0Q0YgLyogSlNPTk9iamVjdC5sdXQuaCAqLywKQEAgLTQ1MDEsNiArNDU1NSwyNCBAQAog
CQkJCUE3ODg1M0Y4MTc5NzI2MjkwMDE0NDBFNCAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmgg
Ki8sCiAJCQkJQkM5QkI5NUIwRTE5NjgwNjAwREY4ODU1IC8qIEludGVybmFsRnVuY3Rpb24uY3Bw
ICovLAogCQkJCUJDMTE2NjdBMEUxOTlDMDUwMDgwNjZERCAvKiBJbnRlcm5hbEZ1bmN0aW9uLmgg
Ki8sCisJCQkJQTFCOUUyMzMxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5jcHAgKi8s
CisJCQkJQTFCOUUyMzQxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvci5oICovLAorCQkJ
CUExQjlFMjM1MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAg
Ki8sCisJCQkJQTFCOUUyMzYxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvckNvbnN0cnVj
dG9yLmggKi8sCisJCQkJQTFCOUUyMzcxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xsYXRvclBy
b3RvdHlwZS5jcHAgKi8sCisJCQkJQTFCOUUyMzgxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxDb2xs
YXRvclByb3RvdHlwZS5oICovLAorCQkJCUExNTg3RDY3MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRs
RGF0ZVRpbWVGb3JtYXQuY3BwICovLAorCQkJCUExNTg3RDY4MUI0REMxNDEwMEQ2OTg0OSAvKiBJ
bnRsRGF0ZVRpbWVGb3JtYXQuaCAqLywKKwkJCQlBMTU4N0Q2OTFCNERDMTQxMDBENjk4NDkgLyog
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwICovLAorCQkJCUExNTg3RDZBMUI0REMx
NDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUEx
NTg3RDZCMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3Bw
ICovLAorCQkJCUExNTg3RDZDMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUuaCAqLywKKwkJCQlBMUQ3OTJGNjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJl
ckZvcm1hdC5jcHAgKi8sCisJCQkJQTFENzkyRjcxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1i
ZXJGb3JtYXQuaCAqLywKKwkJCQlBMUQ3OTJGODFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBMUQ3OTJGOTFCNDM4NjRCMDA0NTE2RjUg
LyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggKi8sCisJCQkJQTFENzkyRkExQjQzODY0
QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwICovLAorCQkJCUExRDc5
MkZCMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggKi8sCiAJ
CQkJQTEyQkJGRjMxQjA0NEE5ODAwNjY0QjY5IC8qIEludGxPYmplY3QuY3BwICovLAogCQkJCUEx
MkJCRkYxMUIwNDRBOEIwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmggKi8sCiAJCQkJODZCRjY0MkEx
NDhEQjJCNTAwNERFMzZBIC8qIEludHJpbnNpYy5oICovLApAQCAtNTY5MSw2ICs1NzYzLDcgQEAK
IAkJCQkxNDdCODNBQzBFNkRCOEM5MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBMTExMjQ2MTkyRkNFNzkwMDVFRTE4RCAvKiBDdXN0
b21HZXR0ZXJTZXR0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM0RjRCNkY1MUEwNUM5ODQwMDVD
QUI3NiAvKiBnZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5IGlu
IEhlYWRlcnMgKi8sCisJCQkJQTFENzkyRkYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJG
b3JtYXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDAzMjAxOEJGRkJFMTAw
NUEwODExIC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUFCQ0RFNzE4
RUYyOTQyMDAwMDIwOTYgLyogR0NMb2dnaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTdCQTYx
MDFBMUE3Q0VDMDBGMUY3QjQgLyogSGVhcFZlcmlmaWVyLmggaW4gSGVhZGVycyAqLywKQEAgLTU3
NDAsNiArNTgxMyw3IEBACiAJCQkJMEYyNEU1NDExN0VBOUY1OTAwQUJCMjE3IC8qIEFzc2VtYmx5
SGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4NEEyNjExMUQxNjYyMjAwNTc3NkFDIC8q
IEFTVEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NjczOUQyMTNCRkRFNzEwMDIzRDg3
QyAvKiBCaWdJbnRlZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTI1ODQ2RTFCNDVBMzYwMDBD
QzdGNkMgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEMzRUMwRTE2RjVDRDAwQjM0NDYwIC8qIEJvb2xlYW5PYmplY3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZFQTA4NjIwMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNUQyRTY2NTE5NUUxNzQwMDBBNTE4RTcgLyogSlNDb250ZXh0UmVm
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtNTc0OSw2ICs1ODIzLDcgQEAKIAkJCQkwRkI3
RjM5NzE1RUQ4RTQ2MDBGMTY3QjIgLyogQnV0dGVyZmx5LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkI3RjM5ODE1RUQ4RTQ2MDBGMTY3QjIgLyogQnV0dGVyZmx5SW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjJEMkQzOTAxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuaCBp
biBIZWFkZXJzICovLAorCQkJCUExQjlFMjNBMUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRkNBRTExMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRl
Y29kZUJhc2ljQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjFDMjdGMTRCRUFBODIwMEFE
QzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDcy
MzBFRDFDRTMzMDBGMUY2ODEgLyogQnl0ZWNvZGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApA
QCAtNTgyOCwxMSArNTkwMywxMyBAQAogCQkJCUE1RUE3MEU4MTlGNUIxMDEwMDk4RjVFQyAvKiBB
dWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3MDREOTAzMTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVycHJldGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzA0RDkwNDE3QTBCQUE4MDA2QkE1NTQgLyogREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUExQjlFMjNDMUI0RTBENjcw
MEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY2MjAxNzcxNDNGQ0QzRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0VmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRjA1NEZBMUFDMzVCNDQwMEU1QkU1NyAvKiBFeGVjdXRhYmxlQWxsb2NhdGlv
bkZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjZFMTZCMTRERjNGMTYwMEI3QjJFNCAvKiBE
RkdBZGphY2VuY3lMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxODE2RDAyRUIyMDA1
NUE1REIgLyogREZHQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzM3ODEwQzE3OTlF
QTJFMDA4MTc1MzMgLyogREZHQW5hbHlzaXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUExQjlFMjNF
MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMUUzQTQ2MTUzNENCQUYwMDBGOTQ1NiAvKiBERkdBcmd1bWVudFBvc2l0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNUMzQTFBNjE4QzA0OTAyMDBDOTU5M0EgLyogSlNHbG9iYWxP
YmplY3RDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyMjE4Nzc1MDU2
MDA4M0I2ODcgLyogREZHQXJpdGhNb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTU4OTYsNiArNTk3
Myw3IEBACiAJCQkJODZFQzlEQ0MxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0pJVENvbXBpbGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNzhBOTc3OTE3OTczOEI4MDA5REY3NDQgLyogREZHSklURmlu
YWxpemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM5N0Y0MDE4MjAyMTE5MDAyQzlCMjYgLyog
REZHSnVtcFJlcGxhY2VtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTI1ODQ2RjFCNDVBMzYw
MDBDQzdGNkMgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3M0E1MzVCMTc5OUNENUQwMDE3MEMxOSAvKiBERkdMYXp5SlNWYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyQjlDRTkxOUQwQkE3RDAwQjFEMUI1IC8qIERGR09iamVjdE1hdGVy
aWFsaXphdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDlBMjk4MTdBMEJDNzQwMEVF
MjYxOCAvKiBERkdMSUNNUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNjAyNSw2ICs2MTAzLDcg
QEAKIAkJCQkwRjZCMUNCNjE4NUZDOUU5MDA4NDVEOTcgLyogRlRMSlNDYWxsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjhGMkI5NjE3MkUwNEEzMDA3REJEQTUgLyogRlRMTGluay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZDRUZBRTAxODA3MzhDMDAwNDcyQ0U0IC8qIEZUTExvY2F0aW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBMTU4N0Q3MDFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTEwMTcwNTEzREIw
MEJCNzIyQyAvKiBGVExMb3dlckRGR1RvTExWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlE
MDIxN0EwQjkwNDAwNzczQUQ4IC8qIEZUTExvd2VyZWROb2RlVmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRDhBMzFDMTdENTFGMjIwMENBMkM0MCAvKiBGVExPU1JFbnRyeS5oIGluIEhlYWRl
cnMgKi8sCkBAIC02MDkzLDYgKzYxNzIsNyBAQAogCQkJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3
MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk5MTVF
RDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZC
N0YzOUExNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVySW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTE1ODdENzYxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlCMTVFRDhFNDYwMEYx
NjdCMiAvKiBJbmRleGluZ1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0VGQUIwMTgwNUNB
NkQwMDQ3MkNFNCAvKiBJbml0aWFsaXplTExWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDRUZB
Q0MxODA1RTc1NTAwNDcyQ0U0IC8qIEluaXRpYWxpemVMTFZNUE9TSVguaCBpbiBIZWFkZXJzICov
LApAQCAtNjE0Nyw2ICs2MjI3LDcgQEAKIAkJCQkwRkFGN0VGRTE2NUJBOTFGMDAwQzg0NTUgLyog
SklURGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBC
RkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTRFMUYxODEy
NEFDRTAwOUI2QjREIC8qIEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
KwkJCQlBMUQ3OTMwMTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZDQzg1QTEwRUU3OUE0NzAwMjg4NjgyIC8qIEpJVElu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTREMTdFRTI3NDkwMEFCQjIxNyAvKiBK
SVRPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQzMTE1QUE4MTEyMDA4RjM2
M0UgLyogSklUU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovLApAQCAtNjI0Nyw2ICs2MzI4LDcg
QEAKIAkJCQk3QzE4NEUyMzE3QkVFMjQwMDA3Q0I2M0EgLyogSlNQcm9taXNlQ29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDMDA4Q0RCMTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21p
c2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MxODRFMUYxN0JFRTIyRTAwN0NCNjNB
IC8qIEpTUHJvbWlzZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE4MTkzRTQxQjRF
MENEQjAwRkMxMDI5IC8qIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg2MjU1M0QyMTYxMzZFMUEwMDlGMTdEMCAvKiBKU1Byb3h5LmggaW4gSGVhZGVycyAq
LywKIAkJCQk5OTI4RkYzQzE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDI2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1JldGFpblB0ci5o
IGluIEhlYWRlcnMgKi8sCkBAIC02MjU4LDYgKzYzNDAsNyBAQAogCQkJCUJDMThDNDVFMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBKU1N0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0MxRUFGMDE3OTg3
QUI2MDAyOTlEQjIgLyogSlNTdGFja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
NDI3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE1
ODdENzUxQjREQzFDNjAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFODU1MzkxMTFCOTk2ODAwMUFGNTFFIC8qIEpTU3Ry
aW5nQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjYwMEI1QTcxNTJCQUFBNzAwOTFFRTVG
IC8qIEpTU3RyaW5nSm9pbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyODBFMTZGNUNE
MDBCMzQ0NjAgLyogSlNTdHJpbmdSZWYuaCBpbiBIZWFkZXJzICovLApAQCAtNjM2MSw2ICs2NDQ0
LDcgQEAKIAkJCQlCQzAyRTkxMTBFMTgzOURCMDAwRjkyOTcgLyogTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMkU5MTMwRTE4MzlEQjAwMEY5Mjk3IC8qIE5h
dGl2ZUVycm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUNDMEI2MzE4QkU5OTUw
MDA2Q0VCQ0MgLyogQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weSBpbiBIZWFkZXJzICovLAor
CQkJCUExODE5M0UzMUI0RTBDREIwMEZDMTAyOSAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5s
dXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjIwMTZEMDMzQjcwMDU1QTVEQiAvKiBOb2Rl
Q29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEVDQTYwOTFBRkRCRUEyMDA0NDk3
MzkgLyogVGVtcGxhdGVSZWdpc3RyeUtleS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0M0Yw
RTE2RjVDRDAwQjM0NDYwIC8qIE5vZGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTY0ODQsNiArNjU2
OCw3IEBACiAJCQkJQTcyOTlEQTYxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNzkwREQ2RTE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0
b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REEyMTdEMTI4NDgwMDVGNUZG
OSAvKiBTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUExRDc5MkZEMUI0Mzg2NEIw
MDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFFNjRB
QTEzNUU1RTFDMDA5NjMwMTIgLyogU0g0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkY4QkRFQjFBRDRDRjcxMDBERkU4ODQgLyogSW5mZXJyZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyQjY3MDUxN0I2QjVBQjAwQTdBRTNGIC8qIFNpbXBsZVR5cGVkQXJyYXlDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTY1NTgsNiArNjY0Myw3IEBACiAJCQkJMEY1RjA4Q0Yx
NDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3QjYwMTgyMTYzOUZEMkEwMDM3MkJBMyAvKiBVbmxpbmtlZENvZGVCbG9jay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyRTg5MkMxNkQwMjhBRDAwOUU0RkQyIC8qIFVudXNlZFBvaW50
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUExNTg3RDZFMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRs
RGF0ZVRpbWVGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTYzQjM4MTNGQzZGRTkwMDAy
RDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDI2QTQ4MTQ2MENC
QjMwMDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlDNUU1
RjE4RTM1RjVFMDBENDMxQzMgLyogRlRMRFdBUkZSZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC02NTg1LDYgKzY2NzEsNyBAQAogCQkJCTJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0
ZUJhcnJpZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQjZENzUzMThBMzM3OTMwMDRB
OTMwMSAvKiBXcml0ZUJhcnJpZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM4MTUw
QTE0MDQzQkY1MDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTE1ODdENzIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4
NkFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMkExODdDQTc1OTAwODQzQjEw
IC8qIHh4ZC5wbCBpbiBIZWFkZXJzICovLAogCQkJCTBGM0ExQkZBMUE5RUNCN0QwMDBERTAxQSAv
KiBERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MTY3LDYgKzcy
NTQsNyBAQAogCQkJCTBGRUEwQTMxMTcwRDQwQkYwMEJCNzIyQyAvKiBERkdDb21tb25EYXRhLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzhCMDE3MTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21w
aWxhdGlvbktleS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjM4QjAxOTE3Q0ZFNzU1MDBCMTQ0
RDMgLyogREZHQ29tcGlsYXRpb25Nb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExQjlFMjNC
MUI0RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjNCM0ExQTE1M0U2OEYyMDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5n
UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCRTBGNzIxNkMxREIwMzAwODJDNUU4IC8q
IERGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjUx
N0EwQjhDQzAwNzczQUQ4IC8qIERGR0NyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC03MjA5LDYgKzcyOTcsNyBAQAogCQkJCUE3RDg5Q0ZCMTdBMEI4Q0MwMDc3
M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZGMEYxOTkxNkI3MjlGNjAwNURGOTVCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3NjdCNUI1MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVy
Q3JlYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMUI5RTIzRDFCNEUwRDY3MDBC
QzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkJEQzREMTUyMjgxODYwMENEODkxMCAvKiBERkdNaW5pZmllZE5vZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTczNzgxMEQxNzk5RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkYwRjE5QzE2QjcyQTAzMDA1REY5NUIgLyogREZHTm9kZS5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTczNzMsNiArNzQ2Miw3IEBACiAJCQkJMkFGNzM4MkMxOEJC
QkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTVGRDAwODExODlCMTkxQTAwNjMzMjMxIC8qIEluc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNTdEMjNFNTE4OTBDRUJGMDAzMUM3RkEgLyogSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMTU4N0Q2RjFCNERDMTQxMDBENjk4
NDkgLyogSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTUzMjQzODcxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MDlGQjg2OTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vh
a1NldENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MzI0Mzg5MTg1NjgzMzUw
MDJFRDY5MiAvKiBJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtNzM5Niw2ICs3NDg2LDcgQEAKIAkJCQlCQ0RENTFFQjBGQjhERjc0MDA0QThCREMgLyog
SklUT3Bjb2Rlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzEyMzZFNTExOTVGMzNDMDBCRDIx
NzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNkU4NDVBMTkw
MzBCRUYwMDU2Mjc0MSAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQTE1ODdENkQxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjI0RTU0QzE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0
aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkNDODVDNDBFRTdBODk0MDAyODg2ODIgLyog
SklUUHJvcGVydHlBY2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDMUU4RTQxMTJFNzJF
RjAwQTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC03NTIyLDYgKzc2MTMsNyBAQAogCQkJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dM
ZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0QjcyM0IyMTJEN0RBNDYw
MDNCRDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZF
QjNFQ0YxNjIzN0Y2QzAwQUI2N0FEIC8qIE1hY3JvQXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUExRDc5MzAwMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBN
YWNyb0Fzc2VtYmxlckFSTS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzI5MDA5QzE3OTc2QzYw
MDAzMTcyOTggLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NTNDRTA4NTE4QkMxQTU2MDBCRURGNzYgLyogQ29uc29sZVByb3RvdHlwZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTc2MDEsNiArNzY5Myw3IEBACiAJCQkJQTVCQTE1RTkxODIzNDBCMzAwQTgyRTY5
IC8qIFJlbW90ZUluc3BlY3Rvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJBREZBMjYzMThFRjM1
NDAwMDRGOUZDQyAvKiBHQ0xvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5NDU1OEYx
ODI0NUVGRDAwQ0MzODQzIC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTFENzkyRkUxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUJBMTVFQzE4MjM0MEI0MDBBODJF
NjkgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAq
LywKIAkJCQlBNUJBMTVFRTE4MjM0MEI0MDBBODJFNjkgLyogUmVtb3RlSW5zcGVjdG9yWFBDQ29u
bmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGMjRFNTUwMTdFRTI3NDkwMEFCQjIxNyAv
KiBSZXBhdGNoLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzYwOCw2ICs3NzAxLDcgQEAKIAkJCQkw
Rjc3MDA5MjE0MDJGRjNDMDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MjlEODg1MEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNzBFQzBFQzYxQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExQjlFMjM5MUI0RTBENjcwMEJD
N0ZFRCAvKiBJbnRsQ29sbGF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVGRDAwNjcxODlB
RkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NUZEMDA2RDE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGMDQzOTZEMUIwM0RDMEIwMDk1OThCNyAvKiBERkdDb21iaW5lZExpdmVuZXNz
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzY1NSw2ICs3NzQ5LDggQEAKIAkJCQkwRkEyQzE3QjE3
RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3Mzg2NTU1MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEYyQjY3MDcxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlDb250cm9s
bGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExRDc5MkZDMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJ
bnRsTnVtYmVyRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExNTg3RDcxMUI0REMxNDEw
MEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYyQjY3MEExN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlUeXBlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUyQzk1MkI5MTlBMjhBMUMwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NEExNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4
Ni5jIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA0MzJmYjZjMWIxNmZjZjJmMjI3MTEzZDI3NmVjMDgy
NWZjNTI5YmQ0Li42ZWZjZDRjNGE4MDZiMWZhOTc4YTQwYmI0ZTNkN2QwMWZiOWM4NjE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgK
QEAgLTMzLDcgKzMzLDkgQEAKICAgICBtYWNybyhBcnJheUl0ZXJhdG9yKSBcCiAgICAgbWFjcm8o
QllURVNfUEVSX0VMRU1FTlQpIFwKICAgICBtYWNybyhCb29sZWFuKSBcCisgICAgbWFjcm8oQ29s
bGF0b3IpIFwKICAgICBtYWNybyhEYXRlKSBcCisgICAgbWFjcm8oRGF0ZVRpbWVGb3JtYXQpIFwK
ICAgICBtYWNybyhFcnJvcikgXAogICAgIG1hY3JvKEV2YWxFcnJvcikgXAogICAgIG1hY3JvKEZ1
bmN0aW9uKSBcCkBAIC00NSw2ICs0Nyw3IEBACiAgICAgbWFjcm8oTWF0aCkgXAogICAgIG1hY3Jv
KE5hTikgXAogICAgIG1hY3JvKE51bWJlcikgXAorICAgIG1hY3JvKE51bWJlckZvcm1hdCkgXAog
ICAgIG1hY3JvKE9iamVjdCkgXAogICAgIG1hY3JvKFByb21pc2UpIFwKICAgICBtYWNybyhSYW5n
ZUVycm9yKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmNwcAppbmRleCBkNjMyOWZkZjFiMDI1MGQ3ODI0YzhjOGJkNzBkZDY4NzA0NzJiNGZj
Li5lZTY1NmEzMDk3NGUzZWM1ZGIxMDRmMTZjNTM0ZDQyNmIyYmU4NWY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTUzLDcg
KzUzLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIG5hbWVzcGFjZSBKU0MgewogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQYXJzZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZU5vdyhFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVVUQyhFeGVjU3RhdGUqKTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaAppbmRleCAwNTRmNTcxZDU3OWU4Y2U0
ZjM0YjU0MDkxN2I4ZDAyOGI1MGRmYjliLi5jZGFjOTdkMzFiYTM2YTljMjJlYWMwMjQ4YWZjNmY1
MjEyYmY3OTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
c3RydWN0b3IuaApAQCAtNTksNiArNTksOCBAQCBwcml2YXRlOgogCiBKU09iamVjdCogY29uc3Ry
dWN0RGF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmKTsKIAor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlTm93KEV4ZWNTdGF0ZSopOworCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIERhdGVDb25zdHJ1Y3Rvcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODEw
OGZjMTg1OThkM2UyYzdhZDg5ZTBjZjFmODhkNGU1YTExZWM5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcApAQCAtMCwwICsx
LDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRh
bGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkludGxDb2xsYXRvci5oIgorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJF
cnJvci5oIgorI2luY2x1ZGUgIkludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAi
SW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpT
Q0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUg
IlNsb3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsQ29sbGF0b3I6OnNfaW5mbyA9
IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bENv
bGxhdG9yKSB9OworCitJbnRsQ29sbGF0b3IqIEludGxDb2xsYXRvcjo6Y3JlYXRlKFZNJiB2bSwg
SW50bENvbGxhdG9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQoreworICAgIEludGxDb2xsYXRv
ciogZm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bENvbGxhdG9yPih2bS5o
ZWFwKSkgSW50bENvbGxhdG9yKHZtLCBjb25zdHJ1Y3Rvci0+Y29sbGF0b3JTdHJ1Y3R1cmUoKSk7
CisgICAgZm9ybWF0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGZvcm1hdDsKK30K
KworU3RydWN0dXJlKiBJbnRsQ29sbGF0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bENvbGxhdG9y
OjpJbnRsQ29sbGF0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bENvbGxhdG9y
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKK30KKwordm9pZCBJbnRsQ29sbGF0b3I6
OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PEludGxDb2xsYXRvcio+
KGNlbGwpLT5JbnRsQ29sbGF0b3I6On5JbnRsQ29sbGF0b3IoKTsKK30KKwordm9pZCBJbnRsQ29s
bGF0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
K3sKKyAgICBJbnRsQ29sbGF0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SW50bENvbGxhdG9yKj4o
Y2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkp
OworCisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5kQ29tcGFyZSk7Cit9CisKK3ZvaWQg
SW50bENvbGxhdG9yOjpzZXRCb3VuZENvbXBhcmUoVk0mIHZtLCBKU0JvdW5kRnVuY3Rpb24qIGZv
cm1hdCkKK3sKKyAgICBtX2JvdW5kQ29tcGFyZS5zZXQodm0sIHRoaXMsIGZvcm1hdCk7Cit9CisK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yRnVuY0NvbXBhcmUoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIC8vIDEwLjMuNCBDb2xsYXRvciBDb21wYXJlIEZ1bmN0aW9u
cyAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIExldCBjb2xsYXRvciBiZSB0aGUgdGhpcyB2YWx1
ZS4KKyAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0ganNEeW5hbWljQ2FzdDxJbnRsQ29sbGF0
b3IqPihleGVjLT50aGlzVmFsdWUoKSk7CisKKyAgICAvLyAyLiBBc3NlcnQ6IFR5cGUoY29sbGF0
b3IpIGlzIE9iamVjdCBhbmQgY29sbGF0b3IgaGFzIGFuIFtbaW5pdGlhbGl6ZWRDb2xsYXRvcl1d
IGludGVybmFsIHNsb3Qgd2hvc2UgdmFsdWUgaXMgdHJ1ZS4KKyAgICBpZiAoIWNvbGxhdG9yKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKwor
ICAgIC8vIDMuIElmIHggaXMgbm90IHByb3ZpZGVkLCBsZXQgeCBiZSB1bmRlZmluZWQuCisgICAg
Ly8gNC4gSWYgeSBpcyBub3QgcHJvdmlkZWQsIGxldCB5IGJlIHVuZGVmaW5lZC4KKyAgICAvLyA1
LiBMZXQgWCBiZSBUb1N0cmluZyh4KS4KKyAgICBKU1N0cmluZyogYSA9IGV4ZWMtPmFyZ3VtZW50
KDApLnRvU3RyaW5nKGV4ZWMpOworICAgIC8vIDYuIFJldHVybklmQWJydXB0KFgpLgorICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKworICAgIC8vIDcuIExldCBZIGJlIFRvU3RyaW5nKHkpLgorICAgIEpT
U3RyaW5nKiBiID0gZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyk7CisgICAgLy8gOC4g
UmV0dXJuSWZBYnJ1cHQoWSkuCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgLy8gOS4gUmV0
dXJuIENvbXBhcmVTdHJpbmdzKGNvbGxhdG9yLCBYLCBZKS4KKworICAgIC8vIDEwLjMuNCBDb21w
YXJlU3RyaW5ncyBhYnN0cmFjdCBvcGVyYXRpb24gKEVDTUEtNDAyIDIuMCkKKyAgICAvLyBGSVhN
RTogSW1wbGVtZW50IENvbXBhcmVTdHJpbmdzLgorCisgICAgLy8gUmV0dXJuIHNpbXBsZSBjaGVj
ayB1bnRpbCBwcm9wZXJseSBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKGNvZGVQb2ludENvbXBhcmUoYS0+dmFsdWUoZXhlYykuaW1wbCgpLCBiLT52YWx1
ZShleGVjKS5pbXBsKCkpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
RU5BQkxFKElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsQ29sbGF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZmMjI1MTQ5NDFhMjExODYzZjljMjg0MmZjMTcwZDYxYmNhNDYxMDIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29s
bGF0b3IuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkg
VmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEludGxDb2xsYXRvcl9oCisjZGVmaW5lIEludGxDb2xsYXRvcl9oCisKKyNpZiBFTkFCTEUoSU5U
TCkKKworI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvcjsKK2NsYXNzIEpTQm91bmRGdW5jdGlv
bjsKKworY2xhc3MgSW50bENvbGxhdG9yIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisKKyAgICBz
dGF0aWMgSW50bENvbGxhdG9yKiBjcmVhdGUoVk0mLCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvciop
OworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBKU0JvdW5kRnVuY3Rp
b24qIGJvdW5kQ29tcGFyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRDb21wYXJlLmdldCgpOyB9
CisgICAgdm9pZCBzZXRCb3VuZENvbXBhcmUoVk0mLCBKU0JvdW5kRnVuY3Rpb24qKTsKKworcHJv
dGVjdGVkOgorICAgIEludGxDb2xsYXRvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworcHJp
dmF0ZToKKyAgICBXcml0ZUJhcnJpZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2JvdW5kQ29tcGFyZTsK
K307CisgICAgCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvckZ1bmND
b21wYXJlKEV4ZWNTdGF0ZSopOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVO
QUJMRShJTlRMKQorCisjZW5kaWYgLy8gSW50bENvbGxhdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kNDFkZDE3Y2Q4ZWIxMTJhMjFlZmI2YzIxYTE0NDk0ZmIyZWQ2ZDY1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9y
Q29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
ci5oIgorCisjaWYgRU5BQkxFKElOVEwpCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUg
IkludGxDb2xsYXRvci5oIgorI2luY2x1ZGUgIkludGxDb2xsYXRvclByb3RvdHlwZS5oIgorI2lu
Y2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJMb29rdXAuaCIKKyNpbmNsdWRlICJT
bG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUo
SW50bENvbGxhdG9yQ29uc3RydWN0b3IpOworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoRXhl
Y1N0YXRlKik7CisKK30KKworI2luY2x1ZGUgIkludGxDb2xsYXRvckNvbnN0cnVjdG9yLmx1dC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxDb2xsYXRvckNvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8s
ICZjb2xsYXRvckNvbnN0cnVjdG9yVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bENvbGxh
dG9yQ29uc3RydWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bENvbGxhdG9yQ29uc3RydWN0
b3IubHV0LmgKK0BiZWdpbiBjb2xsYXRvckNvbnN0cnVjdG9yVGFibGUKKyAgc3VwcG9ydGVkTG9j
YWxlc09mICAgICAgICAgICAgIEludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExv
Y2FsZXNPZiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCitJbnRs
Q29sbGF0b3JDb25zdHJ1Y3RvciogSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIGNvbGxhdG9y
UHJvdG90eXBlLCBTdHJ1Y3R1cmUqIGNvbGxhdG9yU3RydWN0dXJlKQoreworICAgIEludGxDb2xs
YXRvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEludGxDb2xsYXRvckNvbnN0cnVjdG9yPih2bS5oZWFwKSkgSW50bENvbGxhdG9yQ29uc3RydWN0
b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBj
b2xsYXRvclByb3RvdHlwZSwgY29sbGF0b3JTdHJ1Y3R1cmUpOworICAgIHJldHVybiBjb25zdHJ1
Y3RvcjsKK30KKworU3RydWN0dXJlKiBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworfQorCitJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6SW50bENvbGxhdG9yQ29uc3RydWN0b3Io
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24odm0s
IHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIGNvbGxhdG9yUHJvdG90eXBl
LCBTdHJ1Y3R1cmUqIGNvbGxhdG9yU3RydWN0dXJlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtLCBBU0NJSUxpdGVyYWwoIkNvbGxhdG9yIikpOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGNvbGxhdG9yUHJvdG90
eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCks
IFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKKyAgICBtX2NvbGxhdG9yU3RydWN0
dXJlLnNldCh2bSwgdGhpcywgY29sbGF0b3JTdHJ1Y3R1cmUpOworfQorCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxDb2xsYXRvcihFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgLy8gMTAuMS4yIEludGwuQ29sbGF0b3IgKFtsb2NhbGVzIFssIG9wdGlvbnNdXSkgKEVD
TUEtNDAyIDIuMCkKKyAgICAvLyAxLiBJZiBOZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3
VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rpb24gb2JqZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQg
YmUgTmV3VGFyZ2V0LgorICAgIEpTVmFsdWUgbmV3VGFyZ2V0ID0gZXhlYy0+bmV3VGFyZ2V0KCk7
CisgICAgaWYgKCFuZXdUYXJnZXQgfHwgbmV3VGFyZ2V0LmlzVW5kZWZpbmVkKCkpCisgICAgICAg
IG5ld1RhcmdldCA9IGV4ZWMtPmNhbGxlZSgpOworCisgICAgLy8gMi4gTGV0IGNvbGxhdG9yIGJl
IE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJUNvbGxhdG9yUHJvdG90
eXBlJSkuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBJbnRsQ29sbGF0b3IqIGNvbGxh
dG9yID0gSW50bENvbGxhdG9yOjpjcmVhdGUodm0sIGpzQ2FzdDxJbnRsQ29sbGF0b3JDb25zdHJ1
Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKSk7CisgICAgaWYgKGNvbGxhdG9yICYmICFqc0R5bmFtaWND
YXN0PEludGxDb2xsYXRvckNvbnN0cnVjdG9yKj4obmV3VGFyZ2V0KSkgeworICAgICAgICBKU1Zh
bHVlIHByb3RvID0gYXNPYmplY3QobmV3VGFyZ2V0KS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUpOworICAgICAgICBhc09iamVjdChjb2xsYXRvciktPnNldFByb3Rv
dHlwZVdpdGhDeWNsZUNoZWNrKGV4ZWMsIHByb3RvKTsKKyAgICB9CisKKyAgICAvLyAzLiBSZXR1
cm5JZkFicnVwdChjb2xsYXRvcikuCisgICAgQVNTRVJUKGNvbGxhdG9yKTsKKworICAgIC8vIDQu
IFJldHVybiBJbml0aWFsaXplQ29sbGF0b3IoY29sbGF0b3IsIGxvY2FsZXMsIG9wdGlvbnMpLgor
ICAgIC8vIEZJWE1FOiByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEluaXRpYWxpemVDb2xsYXRvcihj
b2xsYXRvciwgbG9jYWxlcywgb3B0aW9ucykpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjb2xsYXRvcik7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxD
b2xsYXRvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTAuMS4yIEludGwuQ29sbGF0b3Ig
KFtsb2NhbGVzIFssIG9wdGlvbnNdXSkgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBJZiBOZXdU
YXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rpb24g
b2JqZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0LgorICAgIC8vIE5ld1Rhcmdl
dCBpcyBhbHdheXMgdW5kZWZpbmVkIHdoZW4gY2FsbGVkIGFzIGEgZnVuY3Rpb24uCisKKyAgICAv
LyAyLiBMZXQgY29sbGF0b3IgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0b3IobmV3VGFy
Z2V0LCAlQ29sbGF0b3JQcm90b3R5cGUlKS4KKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IEludGxDb2xsYXRvciogY29sbGF0b3IgPSBJbnRsQ29sbGF0b3I6OmNyZWF0ZSh2bSwganNDYXN0
PEludGxDb2xsYXRvckNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpKTsKKworICAgIC8vIDMu
IFJldHVybklmQWJydXB0KGNvbGxhdG9yKS4KKyAgICBBU1NFUlQoY29sbGF0b3IpOworCisgICAg
Ly8gNC4gUmV0dXJuIEluaXRpYWxpemVDb2xsYXRvcihjb2xsYXRvciwgbG9jYWxlcywgb3B0aW9u
cykuCisgICAgLy8gRklYTUU6IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSW5pdGlhbGl6ZUNvbGxh
dG9yKGNvbGxhdG9yLCBsb2NhbGVzLCBvcHRpb25zKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNvbGxhdG9yKTsKK30KKworQ29uc3RydWN0VHlwZSBJbnRsQ29sbGF0b3JDb25zdHJ1
Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3RE
YXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SW50
bENvbGxhdG9yOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworQ2FsbFR5cGUg
SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBj
YWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsSW50bENvbGxh
dG9yOworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK2Jvb2wgSW50bENvbGxhdG9yQ29u
c3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sK
KyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEludGVybmFsRnVuY3Rpb24+KGV4ZWMs
IGNvbGxhdG9yQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEludGxDb2xsYXRvckNvbnN0cnVjdG9y
Kj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2Yo
RXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDEwLjIuMiBJbnRsLkNvbGxhdG9yLnN1cHBvcnRl
ZExvY2FsZXNPZihsb2NhbGVzIFssIG9wdGlvbnNdKSAoRUNNQS00MDIgMi4wKQorCisgICAgLy8g
MS4gTGV0IHJlcXVlc3RlZExvY2FsZXMgYmUgQ2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2NhbGVz
KS4KKyAgICAvLyBGSVhNRTogcmVxdWVzdGVkID0gQ2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2Nh
bGVzKTsKKworICAgIC8vIDIuIFJldHVybklmQWJydXB0KHJlcXVlc3RlZExvY2FsZXMpLgorICAg
IC8vIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAvLyAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIC8vIDMuIFJldHVybiBTdXBwb3J0ZWRMb2Nh
bGVzKCVDb2xsYXRvciUuW1thdmFpbGFibGVMb2NhbGVzXV0sIHJlcXVlc3RlZExvY2FsZXMsIG9w
dGlvbnMpLgorICAgIC8vIEZJWE1FOiByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN1cHBvcnRlZExv
Y2FsZXMoYXZhaWxhYmxlLCByZXF1ZXN0ZWQsIG9wdGlvbnMpKTsKKworICAgIC8vIFJldHVybiBl
bXB0eSBhcnJheSB1bnRpbCBwcm9wZXJseSBpbXBsZW1lbnRlZC4KKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUo
KS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgSlNBcnJheSogc3VwcG9ydGVkTG9jYWxlcyA9IEpTQXJy
YXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIDAp
OworICAgIGlmICghc3VwcG9ydGVkTG9jYWxlcykKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYykpOworCisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShzdXBwb3J0ZWRMb2NhbGVzKTsKK30KKyAgICAKK3ZvaWQgSW50bENvbGxhdG9yQ29u
c3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciogdGhpc09iamVjdCA9IGpzQ2FzdDxJ
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9j
b2xsYXRvclN0cnVjdHVyZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
RU5BQkxFKElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bENvbGxhdG9yQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YWE5OGYyZmFhMjQ3OWI4NGY3
OWI3MTA3NWY1ZTk4N2ZhZWU3NmZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDcwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0
ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxDb2xsYXRvckNvbnN0cnVjdG9y
X2gKKyNkZWZpbmUgSW50bENvbGxhdG9yQ29uc3RydWN0b3JfaAorCisjaWYgRU5BQkxFKElOVEwp
CisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBJbnRsQ29sbGF0b3I7CitjbGFzcyBJbnRsQ29sbGF0b3JQcm90b3R5cGU7CisKK2NsYXNz
IEludGxDb2xsYXRvckNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVi
bGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90OworCisgICAgc3RhdGljIEludGxDb2xsYXRvckNvbnN0cnVj
dG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJbnRsQ29sbGF0b3JQcm90b3R5cGUqLCBTdHJ1
Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgU3RydWN0
dXJlKiBjb2xsYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sbGF0b3JTdHJ1Y3R1
cmUuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJ
bnRsQ29sbGF0b3JQcm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKKworcHJpdmF0ZToKKyAgICBJbnRs
Q29sbGF0b3JDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBDb25zdHJ1
Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0
YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOworICAgIAorICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
Y29sbGF0b3JTdHJ1Y3R1cmU7Cit9OworCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdEludGxDb2xsYXRvcihFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbEludGxDb2xsYXRvcihFeGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKworI2VuZGlmIC8vIEludGxDb2xsYXRvckNvbnN0
cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxD
b2xsYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
Q29sbGF0b3JQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0NmRkYmZjOGMwZjlkNjFmOWZjNTJh
Mjc5YzVkZjdmMzBiY2E3MzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsMTM2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50
bENvbGxhdG9yUHJvdG90eXBlLmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkVy
cm9yLmgiCisjaW5jbHVkZSAiSW50bENvbGxhdG9yLmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0
aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1
Y3Rvci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsQ29sbGF0b3JQ
cm90b3R5cGUpOworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29s
bGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0
aW9ucyhFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bENvbGxhdG9yUHJvdG90eXBl
Lmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxDb2xsYXRv
clByb3RvdHlwZTo6c19pbmZvID0geyAiT2JqZWN0IiwgJkludGxDb2xsYXRvcjo6c19pbmZvLCAm
Y29sbGF0b3JQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsQ29sbGF0b3JQ
cm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bENvbGxhdG9yUHJvdG90eXBlLmx1dC5o
CitAYmVnaW4gY29sbGF0b3JQcm90b3R5cGVUYWJsZQorICBjb21wYXJlICAgICAgICAgIEludGxD
b2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCisg
IHJlc29sdmVkT3B0aW9ucyAgSW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9u
cyAgRG9udEVudW18RnVuY3Rpb24gMAorQGVuZAorKi8KKworSW50bENvbGxhdG9yUHJvdG90eXBl
KiBJbnRsQ29sbGF0b3JQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSW50bENvbGxhdG9yUHJvdG90eXBlKiBvYmpl
Y3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsQ29sbGF0b3JQcm90b3R5cGU+KHZt
LmhlYXApKSBJbnRsQ29sbGF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0
LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJl
KiBJbnRsQ29sbGF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bENvbGxhdG9yUHJv
dG90eXBlOjpJbnRsQ29sbGF0b3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICA6IEludGxDb2xsYXRvcih2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxD
b2xsYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKK30KKworYm9vbCBJbnRsQ29sbGF0b3JQcm90b3R5cGU6OmdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0
U3RhdGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCBjb2xsYXRvclByb3RvdHlwZVRhYmxl
LCBqc0Nhc3Q8SW50bENvbGxhdG9yUHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBz
bG90KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JQcm90
b3R5cGVHZXR0ZXJDb21wYXJlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMC4zLjMgSW50
bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIExl
dCBjb2xsYXRvciBiZSB0aGlzIENvbGxhdG9yIG9iamVjdC4KKyAgICBJbnRsQ29sbGF0b3IqIGNv
bGxhdG9yID0ganNEeW5hbWljQ2FzdDxJbnRsQ29sbGF0b3IqPihleGVjLT50aGlzVmFsdWUoKSk7
CisgICAgaWYgKCFjb2xsYXRvcikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNv
bXBhcmUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFz
IGEgQ29sbGF0b3IiKSkpOworCisgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZENvbXBhcmUgPSBj
b2xsYXRvci0+Ym91bmRDb21wYXJlKCk7CisgICAgLy8gMi4gSWYgY29sbGF0b3IuW1tib3VuZENv
bXBhcmVdXSBpcyB1bmRlZmluZWQsCisgICAgaWYgKCFib3VuZENvbXBhcmUpIHsKKyAgICAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGNvbGxhdG9yLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBu
ZXcgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmluZWQgaW4gMTEuMy40LgorICAgICAg
ICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDIuCisgICAgICAg
IEpTRnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAyLCBBU0NJSUxpdGVyYWwoImNvbXBhcmUiKSwgSW50bENvbGxhdG9yRnVuY0NvbXBh
cmUsIE5vSW50cmluc2ljKTsKKyAgICAgICAgSlNBcnJheSogYm91bmRBcmdzID0gSlNBcnJheTo6
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZv
ckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7Cisg
ICAgICAgIGlmICghYm91bmRBcmdzKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYykpOworCisgICAgICAgIC8vIGMuIExldCBiYyBi
ZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4KKyAgICAgICAgYm91bmRD
b21wYXJlID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0
T2JqZWN0LCBjb2xsYXRvciwgYm91bmRBcmdzLCAyLCBBU0NJSUxpdGVyYWwoImNvbXBhcmUiKSk7
CisgICAgICAgIC8vIGQuIFNldCBjb2xsYXRvci5bW2JvdW5kQ29tcGFyZV1dIHRvIGJjLgorICAg
ICAgICBjb2xsYXRvci0+c2V0Qm91bmRDb21wYXJlKHZtLCBib3VuZENvbXBhcmUpOworICAgIH0K
KyAgICAvLyAzLiBSZXR1cm4gY29sbGF0b3IuW1tib3VuZENvbXBhcmVdXS4KKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGJvdW5kQ29tcGFyZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgLy8gMTAuMy41IEludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29s
dmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCisgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9
IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlm
ICghY29sbGF0b3IpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9w
dGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFz
IGEgQ29sbGF0b3IiKSkpOworCisgICAgLy8gVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBuZXcgb2Jq
ZWN0IHdob3NlIHByb3BlcnRpZXMgYW5kIGF0dHJpYnV0ZXMgYXJlIHNldCBhcyBpZiBjb25zdHJ1
Y3RlZCBieSBhbiBvYmplY3QgbGl0ZXJhbCBhc3NpZ25pbmcgdG8gZWFjaCBvZiB0aGUgZm9sbG93
aW5nIHByb3BlcnRpZXMgdGhlIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGludGVybmFsIHNs
b3Qgb2YgdGhpcyBDb2xsYXRvciBvYmplY3QgKHNlZSAxMC40KTogbG9jYWxlLCB1c2FnZSwgc2Vu
c2l0aXZpdHksIGlnbm9yZVB1bmN0dWF0aW9uLCBjb2xsYXRpb24sIGFzIHdlbGwgYXMgdGhvc2Ug
cHJvcGVydGllcyBzaG93biBpbiBUYWJsZSAxIHdob3NlIGtleXMgYXJlIGluY2x1ZGVkIGluIHRo
ZSAlQ29sbGF0b3IlW1tyZWxldmFudEV4dGVuc2lvbktleXNdXSBpbnRlcm5hbCBzbG90IG9mIHRo
ZSBzdGFuZGFyZCBidWlsdC1pbiBvYmplY3QgdGhhdCBpcyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBJ
bnRsLkNvbGxhdG9yLgorCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChleGVjKTsKKworICAgIC8vIEZJWE1FOiBQb3B1bGF0ZSBvYmplY3QgZnJvbSBpbnRlcm5h
bCBzbG90cy4KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3B0aW9ucyk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY4MTY0MjY3OWU5ZjUxMjE0NWNkZjdlMDJjY2FmNDY5N2ZlYjdjYzEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90
b3R5cGUuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkg
VmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEludGxDb2xsYXRvclByb3RvdHlwZV9oCisjZGVmaW5lIEludGxDb2xsYXRvclByb3RvdHlwZV9o
CisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkludGxDb2xsYXRvci5oIgorI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsQ29sbGF0b3JQ
cm90b3R5cGUgOiBwdWJsaWMgSW50bENvbGxhdG9yIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIElu
dGxDb2xsYXRvciBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90Owor
CisgICAgc3RhdGljIEludGxDb2xsYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOwor
Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcml2YXRlOgor
ICAgIEludGxDb2xsYXRvclByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IEVOQUJMRShJTlRMKQorCisjZW5kaWYgLy8gSW50bENvbGxhdG9yUHJvdG90eXBlX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc4MzliYWRjM2FlOTAzOWJmYWZkMDZmYzAxZGQ4MjNjZjhkZmYyNjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXQuY3BwCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tKQorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisKKyNp
ZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkRhdGVDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUg
IkRhdGVJbnN0YW5jZS5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNp
bmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgi
CisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29u
c3QgQ2xhc3NJbmZvIEludGxEYXRlVGltZUZvcm1hdDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJh
c2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsRGF0ZVRpbWVGb3JtYXQpIH07
CisKK0ludGxEYXRlVGltZUZvcm1hdCogSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUoVk0mIHZt
LCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IpCit7CisgICAgSW50
bERhdGVUaW1lRm9ybWF0KiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRs
RGF0ZVRpbWVGb3JtYXQ+KHZtLmhlYXApKSBJbnRsRGF0ZVRpbWVGb3JtYXQodm0sIGNvbnN0cnVj
dG9yLT5kYXRlVGltZUZvcm1hdFN0cnVjdHVyZSgpKTsKKyAgICBmb3JtYXQtPmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICByZXR1cm4gZm9ybWF0OworfQorCitTdHJ1Y3R1cmUqIEludGxEYXRlVGlt
ZUZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsRGF0ZVRpbWVGb3JtYXQ6OkludGxEYXRlVGlt
ZUZvcm1hdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNEZXN0cnVjdGli
bGVPYmplY3Qodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworfQorCit2b2lkIEludGxEYXRlVGltZUZv
cm1hdDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8SW50bERhdGVU
aW1lRm9ybWF0Kj4oY2VsbCktPkludGxEYXRlVGltZUZvcm1hdDo6fkludGxEYXRlVGltZUZvcm1h
dCgpOworfQorCit2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEludGxEYXRlVGltZUZvcm1hdCog
dGhpc09iamVjdCA9IGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihjZWxsKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fYm91bmRGb3JtYXQpOworfQorCit2b2lkIEludGxEYXRlVGltZUZvcm1h
dDo6c2V0Qm91bmRGb3JtYXQoVk0mIHZtLCBKU0JvdW5kRnVuY3Rpb24qIGZvcm1hdCkKK3sKKyAg
ICBtX2JvdW5kRm9ybWF0LnNldCh2bSwgdGhpcywgZm9ybWF0KTsKK30KKworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIC8vIDEyLjMuNCBEYXRlVGltZSBGb3JtYXQgRnVuY3Rpb25z
IChFQ01BLTQwMiAyLjApCisgICAgLy8gMS4gTGV0IGR0ZiBiZSB0aGUgdGhpcyB2YWx1ZS4KKyAg
ICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1l
Rm9ybWF0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIC8vIDIuIEFzc2VydDogVHlwZShkdGYp
IGlzIE9iamVjdCBhbmQgZHRmIGhhcyBhbiBbW2luaXRpYWxpemVkRGF0ZVRpbWVGb3JtYXRdXSBp
bnRlcm5hbCBzbG90IHdob3NlIHZhbHVlIGlzIHRydWUuCisgICAgaWYgKCFmb3JtYXQpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYykpOworCisgICAg
SlNWYWx1ZSBkYXRlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgZG91YmxlIHZhbHVlOworCisg
ICAgLy8gMy4gSWYgZGF0ZSBpcyBub3QgcHJvdmlkZWQgb3IgaXMgdW5kZWZpbmVkLCB0aGVuCisg
ICAgaWYgKGRhdGUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICAvLyBhLiBMZXQgeCBiZSAlRGF0
ZV9ub3clKCkuCisgICAgICAgIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGRhdGVOb3coZXhlYykp
LnRvTnVtYmVyKGV4ZWMpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIDQuIEVsc2UKKyAgICAg
ICAgLy8gYS4gTGV0IHggYmUgVG9OdW1iZXIoZGF0ZSkuCisgICAgICAgIHZhbHVlID0gZGF0ZS50
b051bWJlcihleGVjKTsKKyAgICAgICAgLy8gYi4gUmV0dXJuSWZBYnJ1cHQoeCkuCisgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgfQorCisgICAgLy8gNS4gUmV0dXJuIEZvcm1hdERh
dGVUaW1lKGR0ZiwgeCkuCisKKyAgICAvLyAxMi4zLjQgRm9ybWF0RGF0ZVRpbWUgYWJzdHJhY3Qg
b3BlcmF0aW9uIChFQ01BLTQwMiAyLjApCisKKyAgICAvLyAxLiBJZiB4IGlzIG5vdCBhIGZpbml0
ZSBOdW1iZXIsIHRoZW4gdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KKyAgICBpZiAoIXN0
ZDo6aXNmaW5pdGUodmFsdWUpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
UmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImRhdGUgdmFsdWUgaXMgbm90IGZpbml0ZSBp
biBEYXRlVGltZUZvcm1hdC5mb3JtYXQoKSIpKSk7CisKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50
IDIgLSA5CisKKyAgICAvLyBSZXR1cm4gbmV3IERhdGUodmFsdWUpLnRvU3RyaW5nKCkgdW50aWwg
cHJvcGVybHkgaW1wbGVtZW50ZWQuCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgp
OworICAgIERhdGVJbnN0YW5jZSogZCA9IERhdGVJbnN0YW5jZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QtPmRhdGVTdHJ1Y3R1cmUoKSwgdmFsdWUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNWYWx1ZShkKS50b1N0cmluZyhleGVjKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkYWVkMTM4ZmIwOGRjZmEz
YmU2N2QzN2M4M2E0N2RiNGFhYmNiZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaApAQCAtMCwwICsxLDY1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEludGxEYXRlVGltZUZvcm1hdF9oCisjZGVm
aW5lIEludGxEYXRlVGltZUZvcm1hdF9oCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUg
IkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRs
RGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcjsKK2NsYXNzIEpTQm91bmRGdW5jdGlvbjsKKworY2xh
c3MgSW50bERhdGVUaW1lRm9ybWF0IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0
aWMgSW50bERhdGVUaW1lRm9ybWF0KiBjcmVhdGUoVk0mLCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3RvciopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBKU0Jv
dW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEZvcm1hdC5n
ZXQoKTsgfQorICAgIHZvaWQgc2V0Qm91bmRGb3JtYXQoVk0mLCBKU0JvdW5kRnVuY3Rpb24qKTsK
KworcHJvdGVjdGVkOgorICAgIEludGxEYXRlVGltZUZvcm1hdChWTSYsIFN0cnVjdHVyZSopOwor
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCopOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKKworICAgIFdyaXRlQmFycmllcjxKU0JvdW5kRnVuY3Rpb24+IG1fYm91bmRGb3JtYXQ7
Cit9OworICAgIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3Jt
YXRGdW5jRm9ybWF0RGF0ZVRpbWUoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsRGF0ZVRpbWVGb3JtYXRf
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiOGQ0NjBkMjY3NDFh
NGI5MzM2YjhjYjBmOGI2NGZiNzhkMDY4N2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKQEAg
LTAsMCArMSwxODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVy
ICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgiCisKKyNpZiBF
TkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1l
Rm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCisjaW5j
bHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIlNs
b3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcik7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExv
Y2FsZXNPZihFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8g
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJklu
dGVybmFsRnVuY3Rpb246OnNfaW5mbywgJmRhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JUYWJsZSwg
Q1JFQVRFX01FVEhPRF9UQUJMRShJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcikgfTsKKwor
LyogU291cmNlIGZvciBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2lu
IGRhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JUYWJsZQorICBzdXBwb3J0ZWRMb2NhbGVzT2YgICAg
ICAgICAgICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxl
c09mICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK0ludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZSogZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIFN0cnVjdHVyZSogZGF0ZVRpbWVGb3JtYXRT
dHJ1Y3R1cmUpCit7CisgICAgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqIGNvbnN0cnVj
dG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3I+KHZtLmhlYXApKSBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcih2bSwgc3RydWN0
dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGRhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLCBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSk7CisgICAgcmV0dXJuIGNvbnN0cnVj
dG9yOworfQorCitTdHJ1Y3R1cmUqIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7Cit9CisKK0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50
ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZSogZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIFN0cnVjdHVyZSogZGF0ZVRpbWVG
b3JtYXRTdHJ1Y3R1cmUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0
ZXJhbCgiRGF0ZVRpbWVGb3JtYXQiKSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUs
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVh
ZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworICAgIG1fZGF0ZVRpbWVGb3JtYXRTdHJ1
Y3R1cmUuc2V0KHZtLCB0aGlzLCBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSk7Cit9CisKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0KEV4ZWNT
dGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMi4xLjIgSW50bC5EYXRlVGltZUZvcm1hdCAoW2xvY2Fs
ZXMgWywgb3B0aW9uc11dKSAoRUNNQS00MDIgMi4wKQorICAgIC8vIDEuIElmIE5ld1RhcmdldCBp
cyB1bmRlZmluZWQsIGxldCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3Qs
IGVsc2UgbGV0IG5ld1RhcmdldCBiZSBOZXdUYXJnZXQuCisgICAgSlNWYWx1ZSBuZXdUYXJnZXQg
PSBleGVjLT5uZXdUYXJnZXQoKTsKKyAgICBpZiAoIW5ld1RhcmdldCB8fCBuZXdUYXJnZXQuaXNV
bmRlZmluZWQoKSkKKyAgICAgICAgbmV3VGFyZ2V0ID0gZXhlYy0+Y2FsbGVlKCk7CisKKyAgICAv
LyAyLiBMZXQgZGF0ZVRpbWVGb3JtYXQgYmUgT3JkaW5hcnlDcmVhdGVGcm9tQ29uc3RydWN0b3Io
bmV3VGFyZ2V0LCAlRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUlKS4KKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwganNDYXN0PEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yKj4oZXhlYy0+Y2FsbGVlKCkpKTsKKyAgICBpZiAoZGF0ZVRpbWVGb3JtYXQgJiYgIWpzRHlu
YW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IqPihuZXdUYXJnZXQpKSB7Cisg
ICAgICAgIEpTVmFsdWUgcHJvdG8gPSBhc09iamVjdChuZXdUYXJnZXQpLT5nZXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CisgICAgICAgIGFzT2JqZWN0KGRhdGVUaW1l
Rm9ybWF0KS0+c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soZXhlYywgcHJvdG8pOworICAgIH0K
KworICAgIC8vIDMuIFJldHVybklmQWJydXB0KGRhdGVUaW1lRm9ybWF0KS4KKyAgICBBU1NFUlQo
ZGF0ZVRpbWVGb3JtYXQpOworCisgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxpemVEYXRlVGltZUZv
cm1hdChkYXRlVGltZUZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6IHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KGRhdGVUaW1lRm9y
bWF0LCBsb2NhbGVzLCBvcHRpb25zKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRh
dGVUaW1lRm9ybWF0KTsKK30KKyAgICAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bEludGxEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gMTIuMS4yIElu
dGwuRGF0ZVRpbWVGb3JtYXQgKFtsb2NhbGVzIFssIG9wdGlvbnNdXSkgKEVDTUEtNDAyIDIuMCkK
KyAgICAvLyAxLiBJZiBOZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRo
ZSBhY3RpdmUgZnVuY3Rpb24gb2JqZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0
LgorICAgIC8vIE5ld1RhcmdldCBpcyBhbHdheXMgdW5kZWZpbmVkIHdoZW4gY2FsbGVkIGFzIGEg
ZnVuY3Rpb24uCisKKyAgICAvLyAyLiBMZXQgZGF0ZVRpbWVGb3JtYXQgYmUgT3JkaW5hcnlDcmVh
dGVGcm9tQ29uc3RydWN0b3IobmV3VGFyZ2V0LCAlRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUlKS4K
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRp
bWVGb3JtYXQgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwganNDYXN0PEludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpKTsKKworICAgIC8vIDMuIFJl
dHVybklmQWJydXB0KGRhdGVUaW1lRm9ybWF0KS4KKyAgICBBU1NFUlQoZGF0ZVRpbWVGb3JtYXQp
OworCisgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxpemVEYXRlVGltZUZvcm1hdChkYXRlVGltZUZv
cm1hdCwgbG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6IHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KGRhdGVUaW1lRm9ybWF0LCBsb2NhbGVzLCBv
cHRpb25zKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0KTsK
K30KKworQ29uc3RydWN0VHlwZSBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Z2V0Q29u
c3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAg
IGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SW50bERhdGVUaW1lRm9y
bWF0OworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworQ2FsbFR5cGUgSW50bERh
dGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBj
YWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsSW50bERhdGVU
aW1lRm9ybWF0OworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK2Jvb2wgSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEludGVybmFsRnVu
Y3Rpb24+KGV4ZWMsIGRhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JUYWJsZSwganNDYXN0PEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsK
K30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8v
IDEyLjIuMiBJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGVzIFss
IG9wdGlvbnNdKSAoRUNNQS00MDIgMi4wKQorCisgICAgLy8gMS4gTGV0IGF2YWlsYWJsZUxvY2Fs
ZXMgYmUgJURhdGVUaW1lRm9ybWF0JS5bW2F2YWlsYWJsZUxvY2FsZXNdXS4KKyAgICAvLyBGSVhN
RTogYXZhaWxhYmxlID0gSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmdldEF2YWlsYWJs
ZUxvY2FsZXMoKQorCisgICAgLy8gMi4gTGV0IHJlcXVlc3RlZExvY2FsZXMgYmUgQ2Fub25pY2Fs
aXplTG9jYWxlTGlzdChsb2NhbGVzKS4KKyAgICAvLyBGSVhNRTogcmVxdWVzdGVkID0gQ2Fub25p
Y2FsaXplTG9jYWxlTGlzdChsb2NhbGVzKQorCisgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExv
Y2FsZXMoYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCisgICAg
Ly8gRklYTUU6IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFi
bGUsIHJlcXVlc3RlZCwgb3B0aW9ucykpOworCisgICAgLy8gUmV0dXJuIGVtcHR5IGFycmF5IHVu
dGlsIHByb3Blcmx5IGltcGxlbWVudGVkLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmpl
Y3QoKTsKKyAgICBKU0FycmF5KiBzdXBwb3J0ZWRMb2NhbGVzID0gSlNBcnJheTo6dHJ5Q3JlYXRl
VW5pbml0aWFsaXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7CisgICAgaWYgKCFz
dXBwb3J0ZWRMb2NhbGVzKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0
T2ZNZW1vcnlFcnJvcihleGVjKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN1cHBv
cnRlZExvY2FsZXMpOworfQorICAgIAordm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
cjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PElu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNmMDQzYTdlNzBhNDJmZmVhZmYyZDhkYmI1NjBlYmExYzMzYWNhNTcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JfaAorI2RlZmluZSBJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvcl9oCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIklu
dGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxEYXRlVGlt
ZUZvcm1hdDsKK2NsYXNzIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTsKKworY2xhc3MgSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7Citw
dWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CisKKyAgICBzdGF0aWMgSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87
CisKKyAgICBTdHJ1Y3R1cmUqIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSosIFN0
cnVjdHVyZSopOworCitwcml2YXRlOgorICAgIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
KFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0
RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENh
bGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CisgICAgCisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kYXRlVGltZUZvcm1hdFN0cnVj
dHVyZTsKK307CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bERh
dGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsSW50bERhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSopOworCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQorCisjZW5kaWYgLy8gSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc5Yjky
OTVjZGMzNjk5YmJlMWE5NDgzOWRlZDVhOGU3YmQ1OTAxOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5j
cHAKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5X
YWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKworI2lm
IEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRp
bWVGb3JtYXQuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJK
U09iamVjdC5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiU3Ry
dWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19U
UklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSk7CisKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZUdldHRlckZvcm1hdChFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMo
RXhlY1N0YXRlKik7CisKK30KKworI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZJbnRsRGF0ZVRpbWVGb3Jt
YXQ6OnNfaW5mbywgJmRhdGVUaW1lRm9ybWF0UHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIElu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaAorQGJlZ2luIGRhdGVUaW1lRm9ybWF0UHJv
dG90eXBlVGFibGUKKyAgZm9ybWF0ICAgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGVHZXR0ZXJGb3JtYXQgICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorICByZXNvbHZlZE9wdGlv
bnMgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMgIERvbnRF
bnVtfEZ1bmN0aW9uIDAKK0BlbmQKKyovCisKK0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSog
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZSogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlPih2bS5oZWFwKSkgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKHZtLCBz
dHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cnVjdHVyZSk7Cisg
ICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICA6IEludGxEYXRlVGltZUZvcm1hdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUq
KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKK30KKworYm9vbCBJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVj
LCBkYXRlVGltZUZvcm1hdFByb3RvdHlwZVRhYmxlLCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3Jt
YXQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDEyLjMuMyBJbnRsLkRhdGVUaW1lRm9ybWF0
LnByb3RvdHlwZS5mb3JtYXQgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBMZXQgZHRmIGJlIHRo
aXMgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0LgorICAgIEludGxEYXRlVGltZUZvcm1hdCogZHRmID0g
anNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihleGVjLT50aGlzVmFsdWUoKSk7Cisg
ICAgLy8gMi4gUmV0dXJuSWZBYnJ1cHQoZHRmKS4KKyAgICBpZiAoIWR0ZikKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIklu
dGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdCIpKSk7CisgICAg
CisgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IGR0Zi0+Ym91bmRGb3JtYXQoKTsK
KyAgICAvLyAzLiBJZiB0aGUgW1tib3VuZEZvcm1hdF1dIGludGVybmFsIHNsb3Qgb2YgdGhpcyBE
YXRlVGltZUZvcm1hdCBvYmplY3QgaXMgdW5kZWZpbmVkLAorICAgIGlmICghYm91bmRGb3JtYXQp
IHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGR0Zi0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgIC8vIGEuIExldCBG
IGJlIGEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBhcyBkZWZpbmVkIGluIDEyLjMuNC4K
KyAgICAgICAgLy8gYi4gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAxLiAo
Tm90ZTogRuKAmXMgbGVuZ3RoIHByb3BlcnR5IHdhcyAwIGluIEVDTUEtNDAyIDEuMCkKKyAgICAg
ICAgSlNGdW5jdGlvbiogdGFyZ2V0T2JqZWN0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIDEsIEFTQ0lJTGl0ZXJhbCgiZm9ybWF0IiksIEludGxEYXRlVGltZUZvcm1hdEZ1
bmNGb3JtYXREYXRlVGltZSwgTm9JbnRyaW5zaWMpOworICAgICAgICBKU0FycmF5KiBib3VuZEFy
Z3MgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxPYmplY3QtPmFy
cmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRl
Y2lkZWQpLCAwKTsKKyAgICAgICAgaWYgKCFib3VuZEFyZ3MpCisgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7CisgICAgICAgIAor
ICAgICAgICAvLyBjLiBMZXQgYmYgYmUgQm91bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3RoaXMgdmFs
dWXCuykuCisgICAgICAgIGJvdW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBkdGYsIGJvdW5kQXJncywgMSwgQVNDSUlMaXRl
cmFsKCJmb3JtYXQiKSk7CisgICAgICAgIC8vIGQuIFNldCBkdGYuW1tib3VuZEZvcm1hdF1dIHRv
IGJmLgorICAgICAgICBkdGYtPnNldEJvdW5kRm9ybWF0KHZtLCBib3VuZEZvcm1hdCk7CisgICAg
fQorICAgIC8vIDQuIFJldHVybiBkdGYuW1tib3VuZEZvcm1hdF1dLgorICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoYm91bmRGb3JtYXQpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIC8vIDEyLjMuNSBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlw
ZS5yZXNvbHZlZE9wdGlvbnMoKSAoRUNNQS00MDIgMi4wKQorICAgIEludGxEYXRlVGltZUZvcm1h
dCogZHRmID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihleGVjLT50aGlzVmFs
dWUoKSk7CisgICAgaWYgKCFkdGYpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3Rv
dHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiKSkpOworCisgICAgLy8gVGhlIGZ1bmN0
aW9uIHJldHVybnMgYSBuZXcgb2JqZWN0IHdob3NlIHByb3BlcnRpZXMgYW5kIGF0dHJpYnV0ZXMg
YXJlIHNldCBhcyBpZiBjb25zdHJ1Y3RlZCBieSBhbiBvYmplY3QgbGl0ZXJhbCBhc3NpZ25pbmcg
dG8gZWFjaCBvZiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgdGhlIHZhbHVlIG9mIHRoZSBjb3Jy
ZXNwb25kaW5nIGludGVybmFsIHNsb3Qgb2YgdGhpcyBEYXRlVGltZUZvcm1hdCBvYmplY3QgKHNl
ZSAxMi40KTogbG9jYWxlLCBjYWxlbmRhciwgbnVtYmVyaW5nU3lzdGVtLCB0aW1lWm9uZSwgaG91
cjEyLCB3ZWVrZGF5LCBlcmEsIHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25k
LCBhbmQgdGltZVpvbmVOYW1lLiBQcm9wZXJ0aWVzIHdob3NlIGNvcnJlc3BvbmRpbmcgaW50ZXJu
YWwgc2xvdHMgYXJlIG5vdCBwcmVzZW50IGFyZSBub3QgYXNzaWduZWQuCisgICAgLy8gTm90ZTog
SW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBFQ01BU2NyaXB0IDIwMTUgSW50ZXJuYXRpb25hbGl6YXRp
b24gQVBJLCB0aGUgdGltZVpvbmUgcHJvcGVydHkgd2lsbCBiZSB0aGUgbmFtZSBvZiB0aGUgZGVm
YXVsdCB0aW1lIHpvbmUgaWYgbm8gdGltZVpvbmUgcHJvcGVydHkgd2FzIHByb3ZpZGVkIGluIHRo
ZSBvcHRpb25zIG9iamVjdCBwcm92aWRlZCB0byB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCBjb25z
dHJ1Y3Rvci4gVGhlIHByZXZpb3VzIHZlcnNpb24gbGVmdCB0aGUgdGltZVpvbmUgcHJvcGVydHkg
dW5kZWZpbmVkIGluIHRoaXMgY2FzZS4KKworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gY29uc3Ry
dWN0RW1wdHlPYmplY3QoZXhlYyk7CisKKyAgICAvLyBGSVhNRTogUG9wdWxhdGUgb2JqZWN0IGZy
b20gaW50ZXJuYWwgc2xvdHMuCisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9wdGlvbnMp
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMmZkNWUzNGVhNzk1ODZlNDc4OTZmYWZmYzQ0
ZTVlNmZhNjE1OWNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgKQEAgLTAsMCArMSw1OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdt
YWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVf
aAorI2RlZmluZSBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVfaAorCisjaWYgRU5BQkxFKElO
VEwpCisKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJKU09iamVj
dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlIDogcHVibGljIEludGxEYXRlVGltZUZvcm1hdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJ
bnRsRGF0ZVRpbWVGb3JtYXQgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdDsKKworICAgIHN0YXRpYyBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGNyZWF0ZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERF
Q0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBT
dHJ1Y3R1cmUqKTsKKworcHJpdmF0ZToKKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUo
Vk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKworI2VuZGlmIC8v
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzOWRjNWIxOWVh
NDhlY2I0YTRhZTMxNzkwZTMwOWViNGFjNzZhYjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMCwwICsxLDEx
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVj
cmFmdGVyQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKKworI2lmIEVOQUJMRShJTlRMKQorCisjaW5jbHVkZSAi
RXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCIKKyNpbmNs
dWRlICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5j
bHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxOdW1iZXJGb3JtYXQ6
OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoSW50bE51bWJlckZvcm1hdCkgfTsKKworSW50bE51bWJlckZvcm1hdCogSW50bE51bWJlckZv
cm1hdDo6Y3JlYXRlKFZNJiB2bSwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKiBjb25zdHJ1
Y3RvcikKK3sKKyAgICBJbnRsTnVtYmVyRm9ybWF0KiBmb3JtYXQgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxJbnRsTnVtYmVyRm9ybWF0Pih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1hdCh2
bSwgY29uc3RydWN0b3ItPm51bWJlckZvcm1hdFN0cnVjdHVyZSgpKTsKKyAgICBmb3JtYXQtPmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZm9ybWF0OworfQorCitTdHJ1Y3R1cmUqIElu
dGxOdW1iZXJGb3JtYXQ6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bE51bWJlckZvcm1hdDo6SW50bE51
bWJlckZvcm1hdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSlNEZXN0cnVj
dGlibGVPYmplY3Qodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsTnVtYmVyRm9ybWF0
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKK30KKwordm9pZCBJbnRsTnVtYmVyRm9y
bWF0OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxJbnRsTnVtYmVy
Rm9ybWF0Kj4oY2VsbCktPkludGxOdW1iZXJGb3JtYXQ6On5JbnRsTnVtYmVyRm9ybWF0KCk7Cit9
CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEludGxOdW1iZXJGb3JtYXQqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9ib3VuZEZvcm1hdCk7Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1hdDo6c2V0Qm91bmRGb3Jt
YXQoVk0mIHZtLCBKU0JvdW5kRnVuY3Rpb24qIGZvcm1hdCkKK3sKKyAgICBtX2JvdW5kRm9ybWF0
LnNldCh2bSwgdGhpcywgZm9ybWF0KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1hdE51bWJlcihFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgLy8gMTEuMy40IEZvcm1hdCBOdW1iZXIgRnVuY3Rpb25zIChFQ01BLTQwMiAyLjApCisgICAg
Ly8gMS4gTGV0IG5mIGJlIHRoZSB0aGlzIHZhbHVlLgorICAgIEludGxOdW1iZXJGb3JtYXQqIGZv
cm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KGV4ZWMtPnRoaXNWYWx1ZSgp
KTsKKyAgICAvLyAyLiBBc3NlcnQ6IFR5cGUobmYpIGlzIE9iamVjdCBhbmQgbmYgaGFzIGFuIFtb
aW5pdGlhbGl6ZWROdW1iZXJGb3JtYXRdXSBpbnRlcm5hbCBzbG90IHdob3NlIHZhbHVlIGlzIHRy
dWUuCisgICAgaWYgKCFmb3JtYXQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYykpOworCisgICAgLy8gMy4gSWYgdmFsdWUgaXMgbm90IHByb3ZpZGVk
LCBsZXQgdmFsdWUgYmUgdW5kZWZpbmVkLgorICAgIC8vIDQuIExldCB4IGJlIFRvTnVtYmVyKHZh
bHVlKS4KKyAgICBkb3VibGUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVj
KTsKKyAgICAvLyA1LiBSZXR1cm5JZkFicnVwdCh4KS4KKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisK
KyAgICAvLyA2LiBSZXR1cm4gRm9ybWF0TnVtYmVyKG5mLCB4KS4KKyAgICAKKyAgICAvLyAxMS4z
LjQgRm9ybWF0TnVtYmVyIGFic3RyYWN0IG9wZXJhdGlvbiAoRUNNQS00MDIgMi4wKQorICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgRm9ybWF0TnVtYmVyLgorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcih2YWx1ZSkudG9TdHJpbmcoZXhlYykpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjMjUzOGY5YmZiYTMw
ZTc0MzgyMWIyZjBkMTgxZTYzODcyYTEyMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKQEAgLTAsMCArMSw2NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVy
QGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRsTnVtYmVyRm9ybWF0X2gKKyNkZWZp
bmUgSW50bE51bWJlckZvcm1hdF9oCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3I7CitjbGFzcyBKU0JvdW5kRnVuY3Rpb247CisKK2NsYXNzIElu
dGxOdW1iZXJGb3JtYXQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVibGljOgor
ICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBJbnRs
TnVtYmVyRm9ybWF0KiBjcmVhdGUoVk0mLCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqKTsK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgSlNCb3VuZEZ1bmN0aW9u
KiBib3VuZEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRGb3JtYXQuZ2V0KCk7IH0KKyAg
ICB2b2lkIHNldEJvdW5kRm9ybWF0KFZNJiwgSlNCb3VuZEZ1bmN0aW9uKik7CisKK3Byb3RlY3Rl
ZDoKKyAgICBJbnRsTnVtYmVyRm9ybWF0KFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAg
V3JpdGVCYXJyaWVyPEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZEZvcm1hdDsKK307CisgICAgCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVt
YmVyKEV4ZWNTdGF0ZSopOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJM
RShJTlRMKQorCisjZW5kaWYgLy8gSW50bE51bWJlckZvcm1hdF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iODYzOWQ2YjE0YzcwMDdhODcxMDI1NTc3YWFlMmVkMjlmYmNk
MmUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDE4MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNv
bSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1ZGUgIkVy
cm9yLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAi
U3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9J
U19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcik7CisK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRDb25z
dHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKik7CisKK30KKworI2luY2x1
ZGUgIkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJm51bWJlckZvcm1hdENvbnN0cnVjdG9yVGFi
bGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKSB9Owor
CisvKiBTb3VyY2UgZm9yIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2lu
IG51bWJlckZvcm1hdENvbnN0cnVjdG9yVGFibGUKKyAgc3VwcG9ydGVkTG9jYWxlc09mICAgICAg
ICAgICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2Yg
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKworSW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBudW1i
ZXJGb3JtYXRQcm90b3R5cGUsIFN0cnVjdHVyZSogbnVtYmVyRm9ybWF0U3RydWN0dXJlKQorewor
ICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I+KHZtLmhlYXApKSBJ
bnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0
b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBudW1iZXJGb3JtYXRQcm90b3R5cGUsIG51bWJlckZvcm1h
dFN0cnVjdHVyZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3I6OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQor
eworfQorCit2b2lkIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBudW1iZXJGb3JtYXRQcm90b3R5cGUs
IFN0cnVjdHVyZSogbnVtYmVyRm9ybWF0U3RydWN0dXJlKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtLCBBU0NJSUxpdGVyYWwoIk51bWJlckZvcm1hdCIpKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBudW1iZXJG
b3JtYXRQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworICAgIG1fbnVt
YmVyRm9ybWF0U3RydWN0dXJlLnNldCh2bSwgdGhpcywgbnVtYmVyRm9ybWF0U3RydWN0dXJlKTsK
K30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsTnVtYmVyRm9y
bWF0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyAxMS4xLjIgSW50bC5OdW1iZXJGb3JtYXQg
KFtsb2NhbGVzIFssIG9wdGlvbnNdXSkgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBJZiBOZXdU
YXJnZXQgaXMgdW5kZWZpbmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rpb24g
b2JqZWN0LCBlbHNlIGxldCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0LgorICAgIEpTVmFsdWUgbmV3
VGFyZ2V0ID0gZXhlYy0+bmV3VGFyZ2V0KCk7CisgICAgaWYgKCFuZXdUYXJnZXQgfHwgbmV3VGFy
Z2V0LmlzVW5kZWZpbmVkKCkpCisgICAgICAgIG5ld1RhcmdldCA9IGV4ZWMtPmNhbGxlZSgpOwor
CisgICAgLy8gMi4gTGV0IG51bWJlckZvcm1hdCBiZSBPcmRpbmFyeUNyZWF0ZUZyb21Db25zdHJ1
Y3RvcihuZXdUYXJnZXQsICVOdW1iZXJGb3JtYXRQcm90b3R5cGUlKS4KKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IEludGxOdW1i
ZXJGb3JtYXQ6OmNyZWF0ZSh2bSwganNDYXN0PEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcio+
KGV4ZWMtPmNhbGxlZSgpKSk7CisgICAgaWYgKG51bWJlckZvcm1hdCAmJiAhanNEeW5hbWljQ2Fz
dDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqPihuZXdUYXJnZXQpKSB7CisgICAgICAgIEpT
VmFsdWUgcHJvdG8gPSBhc09iamVjdChuZXdUYXJnZXQpLT5nZXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSk7CisgICAgICAgIGFzT2JqZWN0KG51bWJlckZvcm1hdCktPnNl
dFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKGV4ZWMsIHByb3RvKTsKKyAgICB9CisKKyAgICAvLyAz
LiBSZXR1cm5JZkFicnVwdChudW1iZXJGb3JtYXQpLgorICAgIEFTU0VSVChudW1iZXJGb3JtYXQp
OworCisgICAgLy8gNC4gUmV0dXJuIEluaXRpYWxpemVOdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0
LCBsb2NhbGVzLCBvcHRpb25zKS4KKyAgICAvLyBGSVhNRTogcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShJbml0aWFsaXplTnVtYmVyRm9ybWF0KG51bWJlckZvcm1hdCwgbG9jYWxlcywgb3B0aW9ucykp
OworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQpOworfQorCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsTnVtYmVyRm9ybWF0KEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICAvLyAxMS4xLjIgSW50bC5OdW1iZXJGb3JtYXQgKFtsb2NhbGVzIFssIG9w
dGlvbnNdXSkgKEVDTUEtNDAyIDIuMCkKKyAgICAvLyAxLiBJZiBOZXdUYXJnZXQgaXMgdW5kZWZp
bmVkLCBsZXQgbmV3VGFyZ2V0IGJlIHRoZSBhY3RpdmUgZnVuY3Rpb24gb2JqZWN0LCBlbHNlIGxl
dCBuZXdUYXJnZXQgYmUgTmV3VGFyZ2V0LgorICAgIC8vIE5ld1RhcmdldCBpcyBhbHdheXMgdW5k
ZWZpbmVkIHdoZW4gY2FsbGVkIGFzIGEgZnVuY3Rpb24uCisKKyAgICAvLyAyLiBMZXQgbnVtYmVy
Rm9ybWF0IGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJU51bWJl
ckZvcm1hdFByb3RvdHlwZSUpLgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSW50bE51
bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0ID0gSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKHZtLCBq
c0Nhc3Q8SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpKTsKKwor
ICAgIC8vIDMuIFJldHVybklmQWJydXB0KG51bWJlckZvcm1hdCkuCisgICAgQVNTRVJUKG51bWJl
ckZvcm1hdCk7CisKKyAgICAvLyA0LiBSZXR1cm4gSW5pdGlhbGl6ZU51bWJlckZvcm1hdChudW1i
ZXJGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpLgorICAgIC8vIEZJWE1FOiByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEluaXRpYWxpemVOdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBsb2NhbGVzLCBv
cHRpb25zKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdCk7Cit9
CisKK0NvbnN0cnVjdFR5cGUgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1
Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29u
c3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0Owor
ICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworQ2FsbFR5cGUgSW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEp
Cit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEludGxOdW1iZXJGb3JtYXQ7
CisgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKK30KKworYm9vbCBJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sK
KyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEludGVybmFsRnVuY3Rpb24+KGV4ZWMs
IG51bWJlckZvcm1hdENvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0
ZWRMb2NhbGVzT2YoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIDExLjIuMiBJbnRsLk51bWJl
ckZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YobG9jYWxlcyBbLCBvcHRpb25zXSkgKEVDTUEtNDAy
IDIuMCkKKworICAgIC8vIDEuIExldCBhdmFpbGFibGVMb2NhbGVzIGJlICVOdW1iZXJGb3JtYXQl
LltbYXZhaWxhYmxlTG9jYWxlc11dLgorICAgIC8vIEZJWE1FOiBhdmFpbGFibGUgPSBJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3I6OmdldEF2YWlsYWJsZUxvY2FsZXMoKQorCisgICAgLy8gMi4g
TGV0IHJlcXVlc3RlZExvY2FsZXMgYmUgQ2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2NhbGVzKS4K
KyAgICAvLyBGSVhNRTogcmVxdWVzdGVkID0gQ2Fub25pY2FsaXplTG9jYWxlTGlzdChsb2NhbGVz
KQorCisgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMoYXZhaWxhYmxlTG9jYWxlcywg
cmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucykuCisgICAgLy8gRklYTUU6IHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGUsIHJlcXVlc3RlZCwgb3B0aW9ucykp
OworCisgICAgLy8gUmV0dXJuIGVtcHR5IGFycmF5IHVudGlsIHByb3Blcmx5IGltcGxlbWVudGVk
LgorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBKU0FycmF5KiBzdXBw
b3J0ZWRMb2NhbGVzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZ2xvYmFs
T2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJy
YXlXaXRoVW5kZWNpZGVkKSwgMCk7CisgICAgaWYgKCFzdXBwb3J0ZWRMb2NhbGVzKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7CisK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMpOworfQorCit2b2lk
IEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ciogdGhpc09iamVjdCA9IGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IqPihjZWxs
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisK
KyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbnVtYmVyRm9ybWF0U3RydWN0dXJlKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI3NWYxMDIxNjRjY2RmMTJjZTUzZTVjOTQ4YjZjYTExNzk5
OWFmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20p
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yX2gKKyNkZWZp
bmUgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yX2gKKworI2lmIEVOQUJMRShJTlRMKQorCisj
aW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
SW50bE51bWJlckZvcm1hdDsKK2NsYXNzIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU7CisKK2Ns
YXNzIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9u
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAgIHN0YXRpYyBJbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZP
OworCisgICAgU3RydWN0dXJlKiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX251bWJlckZvcm1hdFN0cnVjdHVyZS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYsIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqLCBTdHJ1Y3R1
cmUqKTsKKworcHJpdmF0ZToKKyAgICBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IoVk0mLCBT
dHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpT
Q2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEo
SlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICAK
KyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX251bWJlckZvcm1hdFN0cnVjdHVyZTsKK307
CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bE51bWJlckZvcm1h
dChFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxOdW1i
ZXJGb3JtYXQoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
RU5BQkxFKElOVEwpCisKKyNlbmRpZiAvLyBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3JfaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTM0OTIyOTRlYzM4MTZiOTFiYjFjMDA0
ZTIzOWY5ZmViYmRlNGY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwxMzYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRl
ckBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgiCisKKyNpZiBFTkFCTEUoSU5UTCkKKworI2luY2x1
ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkpT
Qm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiT2Jq
ZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZSk7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqKTsKKworfQorCisjaW5jbHVkZSAi
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Nv
bnN0IENsYXNzSW5mbyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJPYmpl
Y3QiLCAmSW50bE51bWJlckZvcm1hdDo6c19pbmZvLCAmbnVtYmVyRm9ybWF0UHJvdG90eXBlVGFi
bGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSkgfTsKKwor
LyogU291cmNlIGZvciBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5oCitAYmVnaW4gbnVt
YmVyRm9ybWF0UHJvdG90eXBlVGFibGUKKyAgZm9ybWF0ICAgICAgICAgICBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0ICAgICAgICAgRG9udEVudW18QWNjZXNzb3IKKyAgcmVz
b2x2ZWRPcHRpb25zICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9u
cyAgRG9udEVudW18RnVuY3Rpb24gMAorQGVuZAorKi8KKworSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZSogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlPih2bS5oZWFwKSkgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSh2bSwgc3Ry
dWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUpOworICAg
IHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworfQorCitJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRs
TnVtYmVyRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKK30KKworYm9vbCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAg
cmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgbnVtYmVyRm9ybWF0
UHJvdG90eXBlVGFibGUsIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKj4ob2JqZWN0
KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICAvLyAxMS4zLjMgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCAoRUNN
QS00MDIgMi4wKQorICAgIC8vIDEuIExldCBuZiBiZSB0aGlzIE51bWJlckZvcm1hdCBvYmplY3Qu
CisgICAgSW50bE51bWJlckZvcm1hdCogbmYgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3Jt
YXQqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFuZikKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludGwuTnVt
YmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4g
b2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0IikpKTsKKyAgICAKKyAgICBKU0Jv
dW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0ID0gbmYtPmJvdW5kRm9ybWF0KCk7CisgICAgLy8gMi4g
SWYgbmYuW1tib3VuZEZvcm1hdF1dIGlzIHVuZGVmaW5lZCwKKyAgICBpZiAoIWJvdW5kRm9ybWF0
KSB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBuZi0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgIC8vIGEuIExldCBG
IGJlIGEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBhcyBkZWZpbmVkIGluIDExLjMuNC4K
KyAgICAgICAgLy8gYi4gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAxLgor
ICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSwgSW50bE51bWJlckZvcm1h
dEZ1bmNGb3JtYXROdW1iZXIsIE5vSW50cmluc2ljKTsKKyAgICAgICAgSlNBcnJheSogYm91bmRB
cmdzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5h
cnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoVW5k
ZWNpZGVkKSwgMCk7CisgICAgICAgIGlmICghYm91bmRBcmdzKQorICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYykpOworCisgICAgICAg
IC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4K
KyAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCB0YXJnZXRPYmplY3QsIG5mLCBib3VuZEFyZ3MsIDEsIEFTQ0lJTGl0ZXJhbCgiZm9y
bWF0IikpOworICAgICAgICAvLyBkLiBTZXQgbmYuW1tib3VuZEZvcm1hdF1dIHRvIGJmLgorICAg
ICAgICBuZi0+c2V0Qm91bmRGb3JtYXQodm0sIGJvdW5kRm9ybWF0KTsKKyAgICB9CisgICAgLy8g
My4gUmV0dXJuIG5mLltbYm91bmRGb3JtYXRdXS4KKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGJvdW5kRm9ybWF0KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgLy8gMTEuMy41IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlv
bnMoKSAoRUNNQS00MDIgMi4wKQorICAgIEludGxOdW1iZXJGb3JtYXQqIG5mID0ganNEeW5hbWlj
Q2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbmYp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJl
ckZvcm1hdCIpKSk7CisKKyAgICAvLyBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIG5ldyBvYmplY3Qg
d2hvc2UgcHJvcGVydGllcyBhbmQgYXR0cmlidXRlcyBhcmUgc2V0IGFzIGlmIGNvbnN0cnVjdGVk
IGJ5IGFuIG9iamVjdCBsaXRlcmFsIGFzc2lnbmluZyB0byBlYWNoIG9mIHRoZSBmb2xsb3dpbmcg
cHJvcGVydGllcyB0aGUgdmFsdWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJuYWwgc2xvdCBv
ZiB0aGlzIE51bWJlckZvcm1hdCBvYmplY3QgKHNlZSAxMS40KTogbG9jYWxlLCBudW1iZXJpbmdT
eXN0ZW0sIHN0eWxlLCBjdXJyZW5jeSwgY3VycmVuY3lEaXNwbGF5LCBtaW5pbXVtSW50ZWdlckRp
Z2l0cywgbWluaW11bUZyYWN0aW9uRGlnaXRzLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMsIG1pbmlt
dW1TaWduaWZpY2FudERpZ2l0cywgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzLCBhbmQgdXNlR3Jv
dXBpbmcuIFByb3BlcnRpZXMgd2hvc2UgY29ycmVzcG9uZGluZyBpbnRlcm5hbCBzbG90cyBhcmUg
bm90IHByZXNlbnQgYXJlIG5vdCBhc3NpZ25lZC4KKworICAgIEpTT2JqZWN0KiBvcHRpb25zID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisKKyAgICAvLyBGSVhNRTogUG9wdWxhdGUgb2Jq
ZWN0IGZyb20gaW50ZXJuYWwgc2xvdHMuCisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9w
dGlvbnMpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4YmMwNTFmZGRiODg1MmE5YTk1ZjlmMTdk
OThhZThjYjc4NTIxMTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgKQEAgLTAsMCArMSw1OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdt
YWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlX2gK
KyNkZWZpbmUgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZV9oCisKKyNpZiBFTkFCTEUoSU5UTCkK
KworI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSA6IHB1
YmxpYyBJbnRsTnVtYmVyRm9ybWF0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGxOdW1iZXJG
b3JtYXQgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKworICAg
IHN0YXRpYyBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisK
K3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgU3RydWN0dXJlKik7CisK
K3ByaXZhdGU6CisgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSop
OworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworI2VuZGlmIC8vIEVOQUJMRShJTlRMKQorCisjZW5kaWYgLy8gSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3Qu
Y3BwCmluZGV4IDEyZGE5MzhmYTgxM2FlMzFmMzc1NmRiMDRkZjA3ZmJiMDk5MmRkMGMuLmJhNDU3
ZTcyNTYwOTEwNzg5MTIyZjUxMzc1ZWU5ZmRjMTAyNGQzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0yOCw2ICsyOCwxNiBAQAogCiAjaWYg
RU5BQkxFKElOVEwpCiAKKyNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUg
IkludGxDb2xsYXRvci5oIgorI2luY2x1ZGUgIkludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgiCisj
aW5jbHVkZSAiSW50bENvbGxhdG9yUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1l
Rm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCIKKyNp
bmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsTnVt
YmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgiCisj
aW5jbHVkZSAiSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIK
QEAgLTQ4LDE3ICs1OCw0MyBAQCBJbnRsT2JqZWN0OjpJbnRsT2JqZWN0KFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAKLUludGxPYmplY3QqIEludGxPYmplY3Q6OmNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorSW50bE9iamVjdCogSW50bE9iamVjdDo6Y3Jl
YXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiB7CiAgICAgSW50bE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SW50bE9iamVjdD4odm0uaGVhcCkpIEludGxPYmplY3Qodm0sIHN0cnVjdHVyZSk7Ci0g
ICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlv
bih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gb2JqZWN0OwogfQogCi12b2lkIEludGxP
YmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3ZvaWQgSW50bE9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisKKyAg
ICAvLyBTZXQgdXAgQ29sbGF0b3IuCisgICAgSW50bENvbGxhdG9yUHJvdG90eXBlKiBjb2xsYXRv
clByb3RvdHlwZSA9IEludGxDb2xsYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIEludGxDb2xsYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICBTdHJ1Y3R1cmUqIGNv
bGxhdG9yU3RydWN0dXJlID0gSW50bENvbGxhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2Jh
bE9iamVjdCwgY29sbGF0b3JQcm90b3R5cGUpOworICAgIEludGxDb2xsYXRvckNvbnN0cnVjdG9y
KiBjb2xsYXRvckNvbnN0cnVjdG9yID0gSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmNyZWF0ZSh2
bSwgSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBjb2xsYXRvclByb3RvdHlw
ZSwgY29sbGF0b3JTdHJ1Y3R1cmUpOworCisgICAgY29sbGF0b3JQcm90b3R5cGUtPnB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgY29s
bGF0b3JDb25zdHJ1Y3RvciwgRG9udEVudW0pOworCisgICAgLy8gU2V0IHVwIE51bWJlckZvcm1h
dC4KKyAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBudW1iZXJGb3JtYXRQcm90b3R5cGUg
PSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICBTdHJ1Y3R1cmUqIG51bWJl
ckZvcm1hdFN0cnVjdHVyZSA9IEludGxOdW1iZXJGb3JtYXQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
Z2xvYmFsT2JqZWN0LCBudW1iZXJGb3JtYXRQcm90b3R5cGUpOworICAgIEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3RvciogbnVtYmVyRm9ybWF0Q29uc3RydWN0b3IgPSBJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3Rv
dHlwZSgpKSwgbnVtYmVyRm9ybWF0UHJvdG90eXBlLCBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUpOwor
CisgICAgbnVtYmVyRm9ybWF0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG51bWJlckZvcm1hdENvbnN0cnVjdG9y
LCBEb250RW51bSk7CisKKyAgICAvLyBTZXQgdXAgRGF0ZVRpbWVGb3JtYXQuCisgICAgSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlKiBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSA9IEludGxEYXRl
VGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICBTdHJ1Y3R1cmUqIGRhdGVUaW1lRm9y
bWF0U3RydWN0dXJlID0gSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGds
b2JhbE9iamVjdCwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUpOworICAgIEludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yKiBkYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yID0gSW50bERhdGVUaW1l
Rm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0
aW9uUHJvdG90eXBlKCkpLCBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSwgZGF0ZVRpbWVGb3JtYXRT
dHJ1Y3R1cmUpOworCisgICAgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3RvciwgRG9udEVudW0pOworCisgICAgLy8gOC4xIFByb3BlcnRpZXMgb2Yg
dGhlIEludGwgT2JqZWN0IChFQ01BLTQwMiAyLjApCisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkNvbGxhdG9yLCBjb2xsYXRvckNvbnN0cnVjdG9y
LCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPk51bWJlckZvcm1hdCwgbnVtYmVyRm9ybWF0Q29uc3RydWN0b3IsIERvbnRFbnVt
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
RGF0ZVRpbWVGb3JtYXQsIGRhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKIH0K
IAogU3RydWN0dXJlKiBJbnRsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRleCBmNDViOWFiNjQ5MDIyOGVkZWE1N2Fi
MmUwYmU5YzBiNWE4OWUyZmMwLi44MzQyODU0MmIyZDBmYmM3ZTViMTQ0YTM2YmNiYjg2ZWRmY2Ji
ZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCkBAIC0z
MiwxOCArMzIsMjUgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEludGxDb2xsYXRvckNv
bnN0cnVjdG9yOworY2xhc3MgSW50bENvbGxhdG9yUHJvdG90eXBlOworY2xhc3MgSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3I7CitjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU7
CitjbGFzcyBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I7CitjbGFzcyBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlOworCiBjbGFzcyBJbnRsT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OwogCi0gICAgc3RhdGljIEludGxPYmplY3Qq
IGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBJbnRsT2JqZWN0KiBjcmVhdGUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBE
RUNMQVJFX0lORk87CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CiAKIHByaXZh
dGU6CiAgICAgSW50bE9iamVjdChWTSYsIFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDI5ZjEwMzc4NzNlNWFm
ZGIyYzAxMzc5ZTY5OWVkYjVlMDRlMTM1YzQuLjdhZTJlOWU1OWJlODgxZDc3NThjZjM2NDY5NTJm
NDk0MzlmMjIwODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKQEAgLTQzMSw3ICs0MzEsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVj
dAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5l
dmFsLCBtX2V2YWxGdW5jdGlvbi5nZXQoKSwgRG9udEVudW0pOwogICAgIAogI2lmIEVOQUJMRShJ
TlRMKQotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5JbnRsLCBJbnRsT2JqZWN0OjpjcmVhdGUodm0sIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5JbnRsLCBJbnRs
T2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOwogI2VuZGlmIC8vIEVO
QUJMRShJTlRMKQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5KU09OLCBKU09OT2JqZWN0OjpjcmVhdGUodm0sIEpTT05PYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOwog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5NYXRo
LCBNYXRoT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIE1hdGhPYmplY3Q6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
ZwppbmRleCBlMTYwYzdmODEzY2E0ZDk2NWFiMGUwMThkOGI3MjY5NmVjYmVkYzcwLi5iY2U4NjBh
N2VjODFkMWY0NmZmOWQzOWZjYzJhZWFmNzk1MDE3MTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMTE3LDcg
KzExNyw3IEBAIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTAwMCA9
IDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTEwMCA9IEVOQUJM
RV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUX21hY29zeF8xMDEyMDAgPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogCi1F
TkFCTEVfSU5UTCA9IDsKK0VOQUJMRV9JTlRMID0gRU5BQkxFX0lOVEw7CiAKIEVOQUJMRV9JT1Nf
R0VTVFVSRV9FVkVOVFNbc2RrPWlwaG9uZSpdID0gJChFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRT
X2lvc19XSVRIX0lOVEVSTkFMX1NES18kKFVTRV9JTlRFUk5BTF9TREspKTsKIEVOQUJMRV9JT1Nf
R0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLX1lFUyA9IEVOQUJMRV9JT1NfR0VT
VFVSRV9FVkVOVFM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUxNjBjN2Y4MTNjYTRkOTY1YWIwZTAx
OGQ4YjcyNjk2ZWNiZWRjNzAuLmJjZTg2MGE3ZWM4MWQxZjQ2ZmY5ZDM5ZmNjMmFlYWY3OTUwMTcx
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0xMTcsNyArMTE3LDcgQEAgRU5BQkxFX1dJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMDAwID0gOwogRU5BQkxFX1dJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVF9tYWNvc3hfMTAxMTAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VDsKIEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XzEwMTIwMCA9IEVOQUJM
RV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CiAKLUVOQUJMRV9JTlRMID0gOworRU5BQkxFX0lO
VEwgPSBFTkFCTEVfSU5UTDsKIAogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU1tzZGs9aXBob25l
Kl0gPSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLXyQo
VVNFX0lOVEVSTkFMX1NESykpOwogRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9J
TlRFUk5BTF9TREtfWUVTID0gRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIv
U291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5k
ZXggZTE2MGM3ZjgxM2NhNGQ5NjVhYjBlMDE4ZDhiNzI2OTZlY2JlZGM3MC4uYmNlODYwYTdlYzgx
ZDFmNDZmZjlkMzlmY2MyYWVhZjc5NTAxNzE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYktp
dDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTExNyw3ICsxMTcs
NyBAQCBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEwMDAgPSA7CiBF
TkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDExMDAgPSBFTkFCTEVfV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUOwogRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9t
YWNvc3hfMTAxMjAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKIAotRU5BQkxF
X0lOVEwgPSA7CitFTkFCTEVfSU5UTCA9IEVOQUJMRV9JTlRMOwogCiBFTkFCTEVfSU9TX0dFU1RV
UkVfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3Nf
V0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxfU0RLKSk7CiBFTkFCTEVfSU9TX0dFU1RV
UkVfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMgPSBFTkFCTEVfSU9TX0dFU1RVUkVf
RVZFTlRTOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlIGIv
U291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCmluZGV4IDMwMGM3Mzg0YzI4YmZiMzll
M2U2MzdmZDllNGY1MjY3MjY5YWZiODQuLmYyMGRmNmI4MzQ3NGYxOTUwNGZlMzdlNDM3MzJiM2Vm
Yzg4NDI5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQor
KysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKQEAgLTk4LDcgKzk4LDcgQEAg
bWFjcm8oV0VCS0lUX09QVElPTl9CRUdJTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFC
TEVfSU5QVVRfVFlQRV9NT05USCAiVG9nZ2xlIG1vbnRoIHR5cGUgPGlucHV0PiBzdXBwb3J0IiBQ
UklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU5QVVRfVFlQRV9U
SU1FICJUb2dnbGUgdGltZSB0eXBlIDxpbnB1dD4gc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAg
V0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyAiVG9nZ2xlIHdlZWsg
dHlwZSA8aW5wdXQ+IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQotICAgIFdFQktJVF9PUFRJT05fREVG
SU5FKEVOQUJMRV9JTlRMICJUb2dnbGUgSW50bCBzdXBwb3J0IiBQUklWQVRFIE9GRikKKyAgICBX
RUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU5UTCAiVG9nZ2xlIEludGwgc3VwcG9ydCIgUFJJ
VkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU9TX0FJUlBMQVkgIlRv
Z2dsZSBpT1MgYWlycGxheSBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9O
X0RFRklORShFTkFCTEVfSU9TX1RFWFRfQVVUT1NJWklORyAiVG9nZ2xlIGlPUyB0ZXh0IGF1dG9z
aXppbmcgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5B
QkxFX0pJVCAiRW5hYmxlIEp1c3RJblRpbWUgamF2YXNjcmlwdCBzdXBwb3J0IiBQUklWQVRFIE9O
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDgw
ZmI3ZTc0MWQ4ZTA5NTczMzIzZjkyYTg1YWVjYmViZGVmZWQxMjUuLjJkZTA2NWVhNjhhYWZkZDI3
Mjg5YTY1M2Q1Y2I0MDM0MDU0MzFjMTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0wNy0yOSAgQW5keSBWYW5X
YWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBi
YXNpYyB0eXBlcyBmb3IgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBBUEkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjkyNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAgRW5hYmxlIGZsYWcg
bm93IHRoYXQgdGhlIGJhc2ljIG9iamVjdHMgYXJlIGluIHBsYWNlLgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOiBFbmFibGVkIElOVEwKKwogMjAxNS0wNy0y
OCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS10gQWRkIEFQSSB0byBzZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHdlYiBwcm9jZXNzZXMg
cGVyIFdlYktpdFdlYkNvbnRleHQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5w
bQppbmRleCBiM2Y2NWE1Nzk2OTI5MmYxMDE1NTZmMTY3NTE3MmFhMDgzNDJiOTAxLi4yYmQ2MTQ1
MjM1OGRkYTczMjYwZTVkZmVkZWY2ZWFlMTRjYTQyYmM1IDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
ZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC0yOTEsNyArMjkxLDcgQEAgbXkgQGZlYXR1cmVzID0gKAog
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfSU5QVVRfVFlQRV9XRUVLIiwgZGVmYXVsdCA9PiAwLCB2
YWx1ZSA9PiBcJGlucHV0VHlwZVdlZWtTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAiaW50
bCIsIGRlc2MgPT4gIlRvZ2dsZSBJbnRsIHN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFC
TEVfSU5UTCIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRpbnRsU3VwcG9ydCB9LAorICAgICAg
ZGVmaW5lID0+ICJFTkFCTEVfSU5UTCIsIGRlZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRpbnRsU3Vw
cG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gImxlZ2FjeS1ub3RpZmljYXRpb25zIiwgZGVzYyA9
PiAiVG9nZ2xlIExlZ2FjeSBOb3RpZmljYXRpb25zIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+
ICJFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwk
bGVnYWN5Tm90aWZpY2F0aW9uc1N1cHBvcnQgfSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2NzFkNTY4YmFkZjYzODIwMjM1
MzczZTE0MGMyYmNlYTQ3OTM5Y2FlLi5iZGQwOWEwYjBiMzVjZDAzYzhiZmNjZGU3NzgzZjc3ZWJh
M2E4NTUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTUtMDctMjkgIEFuZHkgVmFuV2Fnb25l
ciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMg
dHlwZXMgZm9yIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MjYKKworICAgICAgICBS
ZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgSW50
bC5Db2xsYXRvciwgSW50bC5OdW1iZXJGb3JtYXQsIGFuZCBJbnRsLkRhdGVUaW1lRm9ybWF0CisK
KyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOiBFbmFibGVkIGludGwgdGVzdHMuCisgICAgICAg
ICoganMvaW50bC1jb2xsYXRvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2lu
dGwtY29sbGF0b3IuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvaW50bC1kYXRldGltZWZvcm1h
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2ludGwtZGF0ZXRpbWVmb3JtYXQu
aHRtbDogQWRkZWQuCisgICAgICAgICoganMvaW50bC1leHBlY3RlZC50eHQ6IFVwZGF0ZWQuCisg
ICAgICAgICoganMvaW50bC1udW1iZXJmb3JtYXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9pbnRsLW51bWJlcmZvcm1hdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3Jp
cHQtdGVzdHMvaW50bC1jb2xsYXRvci5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRl
c3RzL2ludGwtZGF0ZXRpbWVmb3JtYXQuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10
ZXN0cy9pbnRsLW51bWJlcmZvcm1hdC5qczogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRl
c3RzL2ludGwuanM6IEFkZGVkIHRlc3RzIGZvciBDb2xsYXRvciwgTnVtYmVyRm9ybWF0LCBhbmQg
RGF0ZVRpbWVGb3JtYXQuCisKIDIwMTUtMDctMjkgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIHNwYW5uZXIgcGxhY2Vob2xkZXIgZnJvbSBtX3Nw
YW5uZXJNYXAgd2hlbiB0aGUgcGxhY2Vob2xkZXIgb2JqZWN0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCBhOWM3M2U5MDQyNDI4ZjU5ZTk0NDBjYWUyNmE3NDJjMDNmYTg1NzNiLi4xODUyZGUxOGVlZDA1
YjU2MTcwZDE0NWM5ZjQ0YmY2NmEzMGI0MjE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTUzMCw2
ICs1MzAsMyBAQCB3ZWJraXQub3JnL2IvMTQ2MTgyIGVkaXRpbmcvc2VsZWN0aW9uL2xlYWstZG9j
dW1lbnQtd2l0aC1zZWxlY3Rpb24taW5zaWRlLmh0bWwgWwogCiB3ZWJraXQub3JnL2IvMTQ2NDM0
IGZhc3QvZG9tL0hUTUxJbWFnZUVsZW1lbnQvc2l6ZXMgWyBTa2lwIF0KIAotIyBJbnRsIGlzIG5v
dCBlbmFibGVkIHlldAotanMvaW50bC5odG1sIFsgU2tpcCBdCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2ludGwtY29sbGF0b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvaW50
bC1jb2xsYXRvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmFjZTQ5OTYwYWMyOGVjNjBhODg5
ZGJlYWE0ZWY4YTVmOTE0MmM5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2lu
dGwtY29sbGF0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDcgQEAKK1RoaXMgdGVzdCBjaGVj
a3MgdGhlIGJlaGF2aW9yIG9mIEludGwuQ29sbGF0b3IgYXMgZGVzY3JpYmVkIGluIHRoZSBFQ01B
U2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSSBTcGVjaWZpY2F0aW9uIChFQ01BLTQwMiAy
LjApLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBJbnRsLkNvbGxhdG9y
IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIEludGwuQ29sbGF0b3IoKSBpcyBhbiBp
bnN0YW5jZSBvZiBJbnRsLkNvbGxhdG9yCitQQVNTIEludGwuQ29sbGF0b3IuY2FsbCh7fSkgaXMg
YW4gaW5zdGFuY2Ugb2YgSW50bC5Db2xsYXRvcgorUEFTUyBuZXcgSW50bC5Db2xsYXRvcigpIGlz
IGFuIGluc3RhbmNlIG9mIEludGwuQ29sbGF0b3IKK1BBU1MgbmV3IERlcml2ZWRDb2xsYXRvciBp
cyBhbiBpbnN0YW5jZSBvZiBEZXJpdmVkQ29sbGF0b3IKK1BBU1MgbmV3IERlcml2ZWRDb2xsYXRv
ciBpcyBhbiBpbnN0YW5jZSBvZiBJbnRsLkNvbGxhdG9yCitQQVNTIG5ldyBEZXJpdmVkQ29sbGF0
b3IoKS5jb21wYXJlKCdhJywgJ2InKSBpcyAtMQorUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
bmV3IERlcml2ZWRDb2xsYXRvcikgaXMgRGVyaXZlZENvbGxhdG9yLnByb3RvdHlwZQorUEFTUyBP
YmplY3QuZ2V0UHJvdG90eXBlT2YoT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBEZXJpdmVkQ29s
bGF0b3IpKSBpcyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZQorUEFTUyBJbnRsLkNvbGxhdG9yLmxl
bmd0aCBpcyAwCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xs
YXRvciwgJ3Byb3RvdHlwZScpLndyaXRhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvciwgJ3Byb3RvdHlwZScpLmVudW1lcmFibGUg
aXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxh
dG9yLCAncHJvdG90eXBlJykuY29uZmlndXJhYmxlIGlzIGZhbHNlCitQQVNTIEludGwuQ29sbGF0
b3Iuc3VwcG9ydGVkTG9jYWxlc09mLmxlbmd0aCBpcyAxCitQQVNTIEludGwuQ29sbGF0b3Iuc3Vw
cG9ydGVkTG9jYWxlc09mKCkgaXMgYW4gaW5zdGFuY2Ugb2YgQXJyYXkKK1BBU1MgSW50bC5Db2xs
YXRvci5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgSW50bC5Db2xsYXRvcgorUEFTUyBJbnRsLkNv
bGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNT
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvci5wcm90b3R5cGUs
ICdjb21wYXJlJykuZ2V0IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvci5wcm90b3R5cGUsICdjb21wYXJl
Jykuc2V0IGlzIHVuZGVmaW5lZAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEludGwuQ29sbGF0b3IucHJvdG90eXBlLCAnY29tcGFyZScpLmVudW1lcmFibGUgaXMgZmFsc2UK
K1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLnByb3Rv
dHlwZSwgJ2NvbXBhcmUnKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBJbnRsLkNvbGxhdG9y
LnByb3RvdHlwZS5jb21wYXJlLmxlbmd0aCBpcyAyCitQQVNTIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh7fSwgJ2NvbXBhcmUnLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29s
bGF0b3IucHJvdG90eXBlLCAnY29tcGFyZScpKS5jb21wYXJlIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ29sbGF0b3IuCitQQVNTIEludGwu
Q29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUgIT09IEludGwuQ29sbGF0b3IoKS5jb21wYXJlIGlz
IHRydWUKK1BBU1MgbmV3IEludGwuQ29sbGF0b3IoKS5jb21wYXJlICE9PSBuZXcgSW50bC5Db2xs
YXRvcigpLmNvbXBhcmUgaXMgdHJ1ZQorUEFTUyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21w
YXJlKHsgdG9TdHJpbmcoKSB7IHRocm93IEVycm9yKCc2JykgfSB9LCB7IHRvU3RyaW5nKCkgeyAr
K2JhZENhbGxzOyByZXR1cm4gJyc7IH0gfSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiA2LgorUEFT
UyBiYWRDYWxscyBpcyAwCitQQVNTIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUoJ2En
LCB7IHRvU3RyaW5nKCkgeyB0aHJvdyBFcnJvcignOCcpIH0gfSkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiA4LgorUEFTUyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlLmNhbGwobnVsbCwg
J2EnLCAnYicpIGlzIC0xCitQQVNTIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUuY2Fs
bChJbnRsLkNvbGxhdG9yKCdlbicsIHsgc2Vuc2l0aXZpdHk6J2Jhc2UnIH0pLCAnQScsICdhJykg
aXMgLTEKK1BBU1MgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZS5jYWxsKDUsICdhJywg
J2InKSBpcyAtMQorUEFTUyBuZXcgSW50bC5Db2xsYXRvcigpLmNvbXBhcmUuY2FsbChudWxsLCAn
YScsICdiJykgaXMgLTEKK1BBU1MgbmV3IEludGwuQ29sbGF0b3IoKS5jb21wYXJlLmNhbGwoSW50
bC5Db2xsYXRvcignZW4nLCB7IHNlbnNpdGl2aXR5OidiYXNlJyB9KSwgJ0EnLCAnYScpIGlzIC0x
CitQQVNTIG5ldyBJbnRsLkNvbGxhdG9yKCkuY29tcGFyZS5jYWxsKDUsICdhJywgJ2InKSBpcyAt
MQorUEFTUyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMubGVuZ3RoIGlz
IDAKK1BBU1MgSW50bC5Db2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgaXMgYW4g
aW5zdGFuY2Ugb2YgT2JqZWN0CitQQVNTIEludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVk
T3B0aW9ucygpID09PSBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSBp
cyBmYWxzZQorUEFTUyBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMuY2Fs
bCg1KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRp
YWxpemVkIGFzIGEgQ29sbGF0b3IuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvaW50bC1jb2xsYXRv
ci5odG1sIGIvTGF5b3V0VGVzdHMvanMvaW50bC1jb2xsYXRvci5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBl
NmM4N2RjZjBkYTgxNzE5NDI0OGU4NTU2NzRjYzg0Njk5ODk4ZGIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9pbnRsLWNvbGxhdG9yLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2ludGwtY29sbGF0b3Iu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
aW50bC1kYXRldGltZWZvcm1hdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWRh
dGV0aW1lZm9ybWF0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTc3NmY1ZGJjNjMyMzhlYzBm
MmI4MmQyYzg4NDczNmZhMWZkMGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
aW50bC1kYXRldGltZWZvcm1hdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0NiBAQAorVGhpcyB0
ZXN0IGNoZWNrcyB0aGUgYmVoYXZpb3Igb2YgSW50bC5EYXRlVGltZUZvcm1hdCBhcyBkZXNjcmli
ZWQgaW4gdGhlIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmljYXRp
b24gKEVDTUEtNDAyIDIuMCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IEludGwuRGF0ZVRpbWVGb3JtYXQgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgSW50
bC5EYXRlVGltZUZvcm1hdCgpIGlzIGFuIGluc3RhbmNlIG9mIEludGwuRGF0ZVRpbWVGb3JtYXQK
K1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5jYWxsKHt9KSBpcyBhbiBpbnN0YW5jZSBvZiBJbnRs
LkRhdGVUaW1lRm9ybWF0CitQQVNTIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkgaXMgYW4gaW5z
dGFuY2Ugb2YgSW50bC5EYXRlVGltZUZvcm1hdAorUEFTUyBuZXcgRGVyaXZlZERhdGVUaW1lRm9y
bWF0IGlzIGFuIGluc3RhbmNlIG9mIERlcml2ZWREYXRlVGltZUZvcm1hdAorUEFTUyBuZXcgRGVy
aXZlZERhdGVUaW1lRm9ybWF0IGlzIGFuIGluc3RhbmNlIG9mIEludGwuRGF0ZVRpbWVGb3JtYXQK
K1BBU1MgbmV3IERlcml2ZWREYXRlVGltZUZvcm1hdCgpLmZvcm1hdCgwKS5sZW5ndGggPiAwIGlz
IHRydWUKK1BBU1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBEZXJpdmVkRGF0ZVRpbWVGb3Jt
YXQpIGlzIERlcml2ZWREYXRlVGltZUZvcm1hdC5wcm90b3R5cGUKK1BBU1MgT2JqZWN0LmdldFBy
b3RvdHlwZU9mKE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgRGVyaXZlZERhdGVUaW1lRm9ybWF0
KSkgaXMgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUKK1BBU1MgSW50bC5EYXRlVGltZUZv
cm1hdC5sZW5ndGggaXMgMAorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKElu
dGwuRGF0ZVRpbWVGb3JtYXQsICdwcm90b3R5cGUnKS53cml0YWJsZSBpcyBmYWxzZQorUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQsICdwcm90
b3R5cGUnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdCwgJ3Byb3RvdHlwZScpLmNvbmZpZ3VyYWJsZSBp
cyBmYWxzZQorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZi5sZW5n
dGggaXMgMQorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZigpIGlz
IGFuIGluc3RhbmNlIG9mIEFycmF5CitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBl
LmNvbnN0cnVjdG9yIGlzIEludGwuRGF0ZVRpbWVGb3JtYXQKK1BBU1MgSW50bC5EYXRlVGltZUZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5
cGUsICdmb3JtYXQnKS5nZXQgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwg
J2Zvcm1hdCcpLnNldCBpcyB1bmRlZmluZWQKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmVudW1lcmFi
bGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRh
dGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQ
QVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5sZW5ndGggaXMgMQorUEFT
UyBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdmb3JtYXQnLCBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykpLmZv
cm1hdCB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3Rv
dHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxp
emVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQuCitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90
eXBlLmZvcm1hdCAhPT0gSW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdCBpcyB0cnVlCitQQVNT
IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0ICE9PSBuZXcgSW50bC5EYXRlVGltZUZv
cm1hdCgpLmZvcm1hdCBpcyB0cnVlCitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBl
LmZvcm1hdCh7IHZhbHVlT2YoKSB7IHRocm93IEVycm9yKCc0YicpIH0gfSkgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiA0Yi4KK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0
KEluZmluaXR5KSB0aHJldyBleGNlcHRpb24gUmFuZ2VFcnJvcjogZGF0ZSB2YWx1ZSBpcyBub3Qg
ZmluaXRlIGluIERhdGVUaW1lRm9ybWF0LmZvcm1hdCgpLgorUEFTUyBJbnRsLkRhdGVUaW1lRm9y
bWF0LnByb3RvdHlwZS5mb3JtYXQuY2FsbChudWxsLCAwKSBpcyBJbnRsLkRhdGVUaW1lRm9ybWF0
KCkuZm9ybWF0KDApCitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5j
YWxsKEludGwuRGF0ZVRpbWVGb3JtYXQoJ2FyJyksIDApIGlzIEludGwuRGF0ZVRpbWVGb3JtYXQo
KS5mb3JtYXQoMCkKK1BBU1MgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0LmNh
bGwoNSwgMCkgaXMgSW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdCgwKQorUEFTUyBuZXcgSW50
bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdC5jYWxsKG51bGwsIDApIGlzIEludGwuRGF0ZVRpbWVG
b3JtYXQoKS5mb3JtYXQoMCkKK1BBU1MgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQu
Y2FsbChJbnRsLkRhdGVUaW1lRm9ybWF0KCdhcicpLCAwKSBpcyBJbnRsLkRhdGVUaW1lRm9ybWF0
KCkuZm9ybWF0KDApCitQQVNTIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0LmNhbGwo
NSwgMCkgaXMgSW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdCgwKQorUEFTUyBJbnRsLkRhdGVU
aW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMubGVuZ3RoIGlzIDAKK1BBU1MgSW50
bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgaXMgYW4gaW5zdGFu
Y2Ugb2YgT2JqZWN0CitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVk
T3B0aW9ucygpID09PSBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlv
bnMoKSBpcyBmYWxzZQorUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZl
ZE9wdGlvbnMuY2FsbCg1KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBJbnRsLkRhdGVUaW1l
Rm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQuCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvaW50bC1kYXRldGltZWZvcm1hdC5odG1sIGIvTGF5b3V0VGVzdHMvanMvaW50
bC1kYXRldGltZWZvcm1hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhNThmY2Y1MDQ5MThmMDA5NDA4YTJj
MjlmOGUzMzY3NTlkZWU5MzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9pbnRs
LWRhdGV0aW1lZm9ybWF0Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2ludGwtZGF0ZXRpbWVmb3JtYXQuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvaW50bC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWV4cGVjdGVkLnR4dAppbmRleCBiMjZhZjg2
MzM2NTFiMTQwYzhmMTBiODk3YTkwOGYwY2E4Y2FhOWQ2Li5hYzRiMDQ0ODYxZjAxZDVkMzZmN2Q0
YTNmNzYzN2VlZTc2YWU3NjExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9pbnRsLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDQgQEAKLVRoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBJbnRsIG9iamVjdCBh
cyBkZXNjcmliZWQgaW4gOCBvZiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFsaXphdGlvbiBB
UEkgU3BlY2lmaWNhdGlvbi4KK1RoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBJ
bnRsIG9iamVjdCBhcyBkZXNjcmliZWQgaW4gdGhlIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6
YXRpb24gQVBJIFNwZWNpZmljYXRpb24gKEVDTUEtNDAyIDIuMCkuCiAKIE9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KIApAQCAtOSw2ICs5LDcgQEAgUEFTUyBPYmplY3QucHJvdG90eXBlLnRvU3Ry
aW5nLmNhbGwoSW50bCkgaXMgJ1tvYmplY3QgT2JqZWN0XScKIFBBU1MgT2JqZWN0LmdldFByb3Rv
dHlwZU9mKEludGwpID09PSBPYmplY3QucHJvdG90eXBlIGlzIHRydWUKIFBBU1MgbmV3IEludGwg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqZWN0IGlzIG5vdCBhIGNvbnN0cnVjdG9yIChl
dmFsdWF0aW5nICduZXcgSW50bCcpLgogUEFTUyBJbnRsKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogSW50bCBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdJbnRsKCknLCAnSW50bCcgaXMgYW4g
aW5zdGFuY2Ugb2YgT2JqZWN0KS4KK1BBU1MgT2JqZWN0LmtleXMoSW50bCkubGVuZ3RoIGlzIDAK
IFBBU1MgZGVsZXRlIEludGw7IGlzIHRydWUKIFBBU1MgJ0ludGwnIGluIGdsb2JhbCgpIGlzIGZh
bHNlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9pbnRsLW51bWJlcmZvcm1hdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9p
bnRsLW51bWJlcmZvcm1hdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDZkZTAxMjFiZmMzMjli
NDZlNjhjYThhMzhkODg2YjIyMmFjOTFkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL2ludGwtbnVtYmVyZm9ybWF0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQ1IEBACitUaGlz
IHRlc3QgY2hlY2tzIHRoZSBiZWhhdmlvciBvZiBJbnRsLk51bWJlckZvcm1hdCBhcyBkZXNjcmli
ZWQgaW4gdGhlIEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmljYXRp
b24gKEVDTUEtNDAyIDIuMCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IEludGwuTnVtYmVyRm9ybWF0IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIEludGwu
TnVtYmVyRm9ybWF0KCkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5OdW1iZXJGb3JtYXQKK1BBU1Mg
SW50bC5OdW1iZXJGb3JtYXQuY2FsbCh7fSkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50bC5OdW1iZXJG
b3JtYXQKK1BBU1MgbmV3IEludGwuTnVtYmVyRm9ybWF0KCkgaXMgYW4gaW5zdGFuY2Ugb2YgSW50
bC5OdW1iZXJGb3JtYXQKK1BBU1MgbmV3IERlcml2ZWROdW1iZXJGb3JtYXQgaXMgYW4gaW5zdGFu
Y2Ugb2YgRGVyaXZlZE51bWJlckZvcm1hdAorUEFTUyBuZXcgRGVyaXZlZE51bWJlckZvcm1hdCBp
cyBhbiBpbnN0YW5jZSBvZiBJbnRsLk51bWJlckZvcm1hdAorUEFTUyBuZXcgRGVyaXZlZE51bWJl
ckZvcm1hdCgpLmZvcm1hdCgxKSBpcyAnMScKK1BBU1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKG5l
dyBEZXJpdmVkTnVtYmVyRm9ybWF0KSBpcyBEZXJpdmVkTnVtYmVyRm9ybWF0LnByb3RvdHlwZQor
UEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2YoT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBEZXJp
dmVkTnVtYmVyRm9ybWF0KSkgaXMgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlCitQQVNTIElu
dGwuTnVtYmVyRm9ybWF0Lmxlbmd0aCBpcyAwCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQsICdwcm90b3R5cGUnKS53cml0YWJsZSBpcyBmYWxz
ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0
LCAncHJvdG90eXBlJykuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LCAncHJvdG90eXBlJykuY29uZmlndXJh
YmxlIGlzIGZhbHNlCitQQVNTIEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZi5s
ZW5ndGggaXMgMQorUEFTUyBJbnRsLk51bWJlckZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoKSBp
cyBhbiBpbnN0YW5jZSBvZiBBcnJheQorUEFTUyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUu
Y29uc3RydWN0b3IgaXMgSW50bC5OdW1iZXJGb3JtYXQKK1BBU1MgSW50bC5OdW1iZXJGb3JtYXQu
cHJvdG90eXBlLmZvcm1hdCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSwgJ2Zv
cm1hdCcpLmdldCBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcp
LnNldCBpcyB1bmRlZmluZWQKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJ
bnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5lbnVtZXJhYmxlIGlzIGZhbHNl
CitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQu
cHJvdG90eXBlLCAnZm9ybWF0JykuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgSW50bC5OdW1i
ZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5sZW5ndGggaXMgMQorUEFTUyBPYmplY3QuZGVmaW5l
UHJvcGVydHkoe30sICdmb3JtYXQnLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKElu
dGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpKS5mb3JtYXQgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3Jt
YXQuCitQQVNTIEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgIT09IEludGwuTnVt
YmVyRm9ybWF0KCkuZm9ybWF0IGlzIHRydWUKK1BBU1MgbmV3IEludGwuTnVtYmVyRm9ybWF0KCku
Zm9ybWF0ICE9PSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQgaXMgdHJ1ZQorUEFTUyBJ
bnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0KHsgdmFsdWVPZigpIHsgdGhyb3cgRXJy
b3IoJzUnKSB9IH0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogNS4KK1BBU1MgSW50bC5OdW1iZXJG
b3JtYXQucHJvdG90eXBlLmZvcm1hdC5jYWxsKG51bGwsIDEuMikgaXMgSW50bC5OdW1iZXJGb3Jt
YXQoKS5mb3JtYXQoMS4yKQorUEFTUyBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0
LmNhbGwoSW50bC5EYXRlVGltZUZvcm1hdCgnYXInKSwgMS4yKSBpcyBJbnRsLk51bWJlckZvcm1h
dCgpLmZvcm1hdCgxLjIpCitQQVNTIEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQu
Y2FsbCg1LCAxLjIpIGlzIEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KDEuMikKK1BBU1MgbmV3
IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0LmNhbGwobnVsbCwgMS4yKSBpcyBJbnRsLk51bWJl
ckZvcm1hdCgpLmZvcm1hdCgxLjIpCitQQVNTIG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1h
dC5jYWxsKEludGwuRGF0ZVRpbWVGb3JtYXQoJ2FyJyksIDEuMikgaXMgSW50bC5OdW1iZXJGb3Jt
YXQoKS5mb3JtYXQoMS4yKQorUEFTUyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQuY2Fs
bCg1LCAxLjIpIGlzIEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KDEuMikKK1BBU1MgSW50bC5O
dW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5sZW5ndGggaXMgMAorUEFTUyBJ
bnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgaXMgYW4gaW5zdGFu
Y2Ugb2YgT2JqZWN0CitQQVNTIEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9w
dGlvbnMoKSA9PT0gSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygp
IGlzIGZhbHNlCitQQVNTIEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlv
bnMuY2FsbCg1KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBJbnRsLk51bWJlckZvcm1hdC5w
cm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9i
amVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9pbnRsLW51bWJlcmZvcm1hdC5odG1sIGIvTGF5b3V0VGVzdHMvanMvaW50bC1udW1iZXJmb3Jt
YXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45MzhlMjBmMmYyOWFhN2E1N2IzZDg5OGFjZGFjYmU0YmE5Y2M1
N2VhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvaW50bC1udW1iZXJmb3JtYXQu
aHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJz
Y3JpcHQtdGVzdHMvaW50bC1udW1iZXJmb3JtYXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtY29sbGF0b3Iu
anMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1jb2xsYXRvci5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iYzYzYmQ2MjBjMDgzYWU3NWJkMGI2MTdjMWNiODNmOTM5ZTJkMGY2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtY29sbGF0b3IuanMKQEAg
LTAsMCArMSwxMDkgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRoZSBiZWhhdmlv
ciBvZiBJbnRsLkNvbGxhdG9yIGFzIGRlc2NyaWJlZCBpbiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5h
dGlvbmFsaXphdGlvbiBBUEkgU3BlY2lmaWNhdGlvbiAoRUNNQS00MDIgMi4wKS4iKTsKKworLy8g
MTAuMSBUaGUgSW50bC5Db2xsYXRvciBDb25zdHJ1Y3RvcgorCisvLyBUaGUgSW50bC5Db2xsYXRv
ciBjb25zdHJ1Y3RvciBpcyBhIHN0YW5kYXJkIGJ1aWx0LWluIHByb3BlcnR5IG9mIHRoZSBJbnRs
IG9iamVjdC4KK3Nob3VsZEJlVHlwZSgiSW50bC5Db2xsYXRvciIsICJGdW5jdGlvbiIpOworCisv
LyAxMC4xLjIgSW50bC5Db2xsYXRvcihbIGxvY2FsZXMgWywgb3B0aW9uc11dKQorc2hvdWxkQmVU
eXBlKCJJbnRsLkNvbGxhdG9yKCkiLCAiSW50bC5Db2xsYXRvciIpOworc2hvdWxkQmVUeXBlKCJJ
bnRsLkNvbGxhdG9yLmNhbGwoe30pIiwgIkludGwuQ29sbGF0b3IiKTsKK3Nob3VsZEJlVHlwZSgi
bmV3IEludGwuQ29sbGF0b3IoKSIsICJJbnRsLkNvbGxhdG9yIik7CisKKy8vIFN1YmNsYXNzYWJs
ZQorY2xhc3MgRGVyaXZlZENvbGxhdG9yIGV4dGVuZHMgSW50bC5Db2xsYXRvciB7fQorc2hvdWxk
QmVUeXBlKCJuZXcgRGVyaXZlZENvbGxhdG9yIiwgIkRlcml2ZWRDb2xsYXRvciIpOworc2hvdWxk
QmVUeXBlKCJuZXcgRGVyaXZlZENvbGxhdG9yIiwgIkludGwuQ29sbGF0b3IiKTsKK3Nob3VsZEJl
KCJuZXcgRGVyaXZlZENvbGxhdG9yKCkuY29tcGFyZSgnYScsICdiJykiLCAiLTEiKTsKK3Nob3Vs
ZEJlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERlcml2ZWRDb2xsYXRvcikiLCAiRGVyaXZl
ZENvbGxhdG9yLnByb3RvdHlwZSIpOworc2hvdWxkQmUoIk9iamVjdC5nZXRQcm90b3R5cGVPZihP
YmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERlcml2ZWRDb2xsYXRvcikpIiwgIkludGwuQ29sbGF0
b3IucHJvdG90eXBlIik7CisKKy8vIDEwLjIgUHJvcGVydGllcyBvZiB0aGUgSW50bC5Db2xsYXRv
ciBDb25zdHJ1Y3RvcgorCisvLyBsZW5ndGggcHJvcGVydHkgKHdob3NlIHZhbHVlIGlzIDApCitz
aG91bGRCZSgiSW50bC5Db2xsYXRvci5sZW5ndGgiLCAiMCIpOworCisvLyAxMC4yLjEgSW50bC5D
b2xsYXRvci5wcm90b3R5cGUKKworLy8gVGhpcyBwcm9wZXJ0eSBoYXMgdGhlIGF0dHJpYnV0ZXMg
eyBbW1dyaXRhYmxlXV06IGZhbHNlLCBbW0VudW1lcmFibGVdXTogZmFsc2UsIFtbQ29uZmlndXJh
YmxlXV06IGZhbHNlIH0uCitzaG91bGRCZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEludGwuQ29sbGF0b3IsICdwcm90b3R5cGUnKS53cml0YWJsZSIpOworc2hvdWxkQmVG
YWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLCAncHJv
dG90eXBlJykuZW51bWVyYWJsZSIpOworc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLCAncHJvdG90eXBlJykuY29uZmlndXJhYmxlIik7
CisKKy8vIDEwLjIuMiBJbnRsLkNvbGxhdG9yLnN1cHBvcnRlZExvY2FsZXNPZiAobG9jYWxlcyBb
LCBvcHRpb25zIF0pCisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUgbGVuZ3RoIHByb3BlcnR5IG9mIHRo
ZSBzdXBwb3J0ZWRMb2NhbGVzT2YgbWV0aG9kIGlzIDEuCitzaG91bGRCZSgiSW50bC5Db2xsYXRv
ci5zdXBwb3J0ZWRMb2NhbGVzT2YubGVuZ3RoIiwgIjEiKTsKKworLy8gUmV0dXJucyBTdXBwb3J0
ZWRMb2NhbGVzCitzaG91bGRCZVR5cGUoIkludGwuQ29sbGF0b3Iuc3VwcG9ydGVkTG9jYWxlc09m
KCkiLCAiQXJyYXkiKTsKKworLy8gMTAuMyBQcm9wZXJ0aWVzIG9mIHRoZSBJbnRsLkNvbGxhdG9y
IFByb3RvdHlwZSBPYmplY3QKKworLy8gVGhlIHZhbHVlIG9mIEludGwuQ29sbGF0b3IucHJvdG90
eXBlLmNvbnN0cnVjdG9yIGlzICVDb2xsYXRvciUuCitzaG91bGRCZSgiSW50bC5Db2xsYXRvci5w
cm90b3R5cGUuY29uc3RydWN0b3IiLCAiSW50bC5Db2xsYXRvciIpOworCisvLyAxMC4zLjMgSW50
bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZQorCisvLyBUaGlzIG5hbWVkIGFjY2Vzc29yIHBy
b3BlcnR5IHJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGNvbXBhcmVzIHR3byBzdHJpbmdzIGFjY29y
ZGluZyB0byB0aGUgc29ydCBvcmRlciBvZiB0aGlzIENvbGxhdG9yIG9iamVjdC4KK3Nob3VsZEJl
VHlwZSgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSIsICJGdW5jdGlvbiIpOworCisv
LyBUaGUgdmFsdWUgb2YgdGhlIFtbR2V0XV0gYXR0cmlidXRlIGlzIGEgZnVuY3Rpb24KK3Nob3Vs
ZEJlVHlwZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLnBy
b3RvdHlwZSwgJ2NvbXBhcmUnKS5nZXQiLCAiRnVuY3Rpb24iKTsKKworLy8gVGhlIHZhbHVlIG9m
IHRoZSBbW1NldF1dIGF0dHJpYnV0ZSBpcyB1bmRlZmluZWQuCitzaG91bGRCZSgiT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSwgJ2NvbXBhcmUn
KS5zZXQiLCAidW5kZWZpbmVkIik7CisKKy8vIE1hdGNoIEZpcmVmb3ggd2hlcmUgdW5zcGVjaWZl
ZC4KK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5D
b2xsYXRvci5wcm90b3R5cGUsICdjb21wYXJlJykuZW51bWVyYWJsZSIpOworc2hvdWxkQmVUcnVl
KCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuQ29sbGF0b3IucHJvdG90eXBl
LCAnY29tcGFyZScpLmNvbmZpZ3VyYWJsZSIpOworCisvLyBUaGUgdmFsdWUgb2YgRuKAmXMgbGVu
Z3RoIHByb3BlcnR5IGlzIDIuCitzaG91bGRCZSgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29t
cGFyZS5sZW5ndGgiLCAiMiIpOworCisvLyBUaHJvd3Mgb24gbm9uLUNvbGxhdG9yIHRoaXMuCitz
aG91bGRUaHJvdygiT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnY29tcGFyZScsIE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Db2xsYXRvci5wcm90b3R5cGUsICdjb21wYXJl
JykpLmNvbXBhcmUiLCAiJ1R5cGVFcnJvcjogSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFy
ZSBjYWxsZWQgb24gdmFsdWUgdGhhdFxcJ3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBh
IENvbGxhdG9yJyIpOworCisvLyBUaGUgY29tcGFyZSBmdW5jdGlvbiBpcyB1bmlxdWUgcGVyIGlu
c3RhbmNlLgorc2hvdWxkQmVUcnVlKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlICE9
PSBJbnRsLkNvbGxhdG9yKCkuY29tcGFyZSIpOworc2hvdWxkQmVUcnVlKCJuZXcgSW50bC5Db2xs
YXRvcigpLmNvbXBhcmUgIT09IG5ldyBJbnRsLkNvbGxhdG9yKCkuY29tcGFyZSIpOworCisvLyAx
MC4zLjQgQ29sbGF0b3IgQ29tcGFyZSBGdW5jdGlvbnMKKworLy8gMS4gTGV0IGNvbGxhdG9yIGJl
IHRoZSB0aGlzIHZhbHVlLgorLy8gMi4gQXNzZXJ0OiBUeXBlKGNvbGxhdG9yKSBpcyBPYmplY3Qg
YW5kIGNvbGxhdG9yIGhhcyBhbiBbW2luaXRpYWxpemVkQ29sbGF0b3JdXSBpbnRlcm5hbCBzbG90
IHdob3NlIHZhbHVlIGlzIHRydWUuCisvLyBUaGlzIHNob3VsZCBub3QgYmUgcmVhY2hhYmxlLCBz
aW5jZSBjb21wYXJlIGlzIGJvdW5kIHRvIGFuIGluaXRpYWxpemVkIGNvbGxhdG9yLgorCisvLyAz
LiBJZiB4IGlzIG5vdCBwcm92aWRlZCwgbGV0IHggYmUgdW5kZWZpbmVkLgorLy8gNC4gSWYgeSBp
cyBub3QgcHJvdmlkZWQsIGxldCB5IGJlIHVuZGVmaW5lZC4KKy8vIDUuIExldCBYIGJlIFRvU3Ry
aW5nKHgpLgorLy8gNi4gUmV0dXJuSWZBYnJ1cHQoWCkuCit2YXIgYmFkQ2FsbHMgPSAwOworc2hv
dWxkVGhyb3coIkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUoeyB0b1N0cmluZygpIHsg
dGhyb3cgRXJyb3IoJzYnKSB9IH0sIHsgdG9TdHJpbmcoKSB7ICsrYmFkQ2FsbHM7IHJldHVybiAn
JzsgfSB9KSIsICInRXJyb3I6IDYnIik7CitzaG91bGRCZSgiYmFkQ2FsbHMiLCAiMCIpOworCisv
LyA3LiBMZXQgWSBiZSBUb1N0cmluZyh5KS4KKy8vIDguIFJldHVybklmQWJydXB0KFkpLgorc2hv
dWxkVGhyb3coIkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUoJ2EnLCB7IHRvU3RyaW5n
KCkgeyB0aHJvdyBFcnJvcignOCcpIH0gfSkiLCAiJ0Vycm9yOiA4JyIpOworCisvLyBDb21wYXJl
IGlzIGJvdW5kLCBzbyBjYWxsaW5nIHdpdGggYWx0ZXJuYXRlICJ0aGlzIiBoYXMgbm8gZWZmZWN0
Lgorc2hvdWxkQmUoIkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUuY2FsbChudWxsLCAn
YScsICdiJykiLCAiLTEiKTsKK3Nob3VsZEJlKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21w
YXJlLmNhbGwoSW50bC5Db2xsYXRvcignZW4nLCB7IHNlbnNpdGl2aXR5OidiYXNlJyB9KSwgJ0En
LCAnYScpIiwgIi0xIik7CitzaG91bGRCZSgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFy
ZS5jYWxsKDUsICdhJywgJ2InKSIsICItMSIpOworc2hvdWxkQmUoIm5ldyBJbnRsLkNvbGxhdG9y
KCkuY29tcGFyZS5jYWxsKG51bGwsICdhJywgJ2InKSIsICItMSIpOworc2hvdWxkQmUoIm5ldyBJ
bnRsLkNvbGxhdG9yKCkuY29tcGFyZS5jYWxsKEludGwuQ29sbGF0b3IoJ2VuJywgeyBzZW5zaXRp
dml0eTonYmFzZScgfSksICdBJywgJ2EnKSIsICItMSIpOworc2hvdWxkQmUoIm5ldyBJbnRsLkNv
bGxhdG9yKCkuY29tcGFyZS5jYWxsKDUsICdhJywgJ2InKSIsICItMSIpOworCisvLyAxMC4zLjUg
SW50bC5Db2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zICgpCisKK3Nob3VsZEJlKCJJ
bnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMubGVuZ3RoIiwgIjAiKTsKKwor
Ly8gUmV0dXJucyBhIG5ldyBvYmplY3Qgd2hvc2UgcHJvcGVydGllcyBhbmQgYXR0cmlidXRlcyBh
cmUgc2V0IGFzIGlmIGNvbnN0cnVjdGVkIGJ5IGFuIG9iamVjdCBsaXRlcmFsLgorc2hvdWxkQmVU
eXBlKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSIsICJPYmplY3Qi
KTsKKworLy8gUmV0dXJucyBhIG5ldyBvYmplY3QgZWFjaCB0aW1lLgorc2hvdWxkQmVGYWxzZSgi
SW50bC5Db2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgPT09IEludGwuQ29sbGF0
b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIik7CisKKy8vIFRocm93cyBvbiBub24tQ29s
bGF0b3IgdGhpcy4KK3Nob3VsZFRocm93KCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZl
ZE9wdGlvbnMuY2FsbCg1KSIsICInVHlwZUVycm9yOiBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXRcXCdzIG5vdCBhbiBvYmplY3QgaW5p
dGlhbGl6ZWQgYXMgYSBDb2xsYXRvciciKTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2ludGwtZGF0ZXRpbWVmb3JtYXQuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvaW50bC1kYXRldGltZWZvcm1hdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjhhOWNkNDM1YmRj
M2ZlZThlNjM5MjRkNjI2ZmE4NTUxOWI0MzllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2ludGwtZGF0ZXRpbWVmb3JtYXQuanMKQEAgLTAsMCArMSwxMDkg
QEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRoZSBiZWhhdmlvciBvZiBJbnRsLkRh
dGVUaW1lRm9ybWF0IGFzIGRlc2NyaWJlZCBpbiB0aGUgRUNNQVNjcmlwdCBJbnRlcm5hdGlvbmFs
aXphdGlvbiBBUEkgU3BlY2lmaWNhdGlvbiAoRUNNQS00MDIgMi4wKS4iKTsKKworLy8gMTIuMSBU
aGUgSW50bC5EYXRlVGltZUZvcm1hdCBDb25zdHJ1Y3RvcgorCisvLyBUaGUgSW50bC5EYXRlVGlt
ZUZvcm1hdCBjb25zdHJ1Y3RvciBpcyBhIHN0YW5kYXJkIGJ1aWx0LWluIHByb3BlcnR5IG9mIHRo
ZSBJbnRsIG9iamVjdC4KK3Nob3VsZEJlVHlwZSgiSW50bC5EYXRlVGltZUZvcm1hdCIsICJGdW5j
dGlvbiIpOworCisvLyAxMi4xLjIgSW50bC5EYXRlVGltZUZvcm1hdChbIGxvY2FsZXMgWywgb3B0
aW9uc11dKQorc2hvdWxkQmVUeXBlKCJJbnRsLkRhdGVUaW1lRm9ybWF0KCkiLCAiSW50bC5EYXRl
VGltZUZvcm1hdCIpOworc2hvdWxkQmVUeXBlKCJJbnRsLkRhdGVUaW1lRm9ybWF0LmNhbGwoe30p
IiwgIkludGwuRGF0ZVRpbWVGb3JtYXQiKTsKK3Nob3VsZEJlVHlwZSgibmV3IEludGwuRGF0ZVRp
bWVGb3JtYXQoKSIsICJJbnRsLkRhdGVUaW1lRm9ybWF0Iik7CisKKy8vIFN1YmNsYXNzYWJsZQor
Y2xhc3MgRGVyaXZlZERhdGVUaW1lRm9ybWF0IGV4dGVuZHMgSW50bC5EYXRlVGltZUZvcm1hdCB7
fQorc2hvdWxkQmVUeXBlKCJuZXcgRGVyaXZlZERhdGVUaW1lRm9ybWF0IiwgIkRlcml2ZWREYXRl
VGltZUZvcm1hdCIpOworc2hvdWxkQmVUeXBlKCJuZXcgRGVyaXZlZERhdGVUaW1lRm9ybWF0Iiwg
IkludGwuRGF0ZVRpbWVGb3JtYXQiKTsKK3Nob3VsZEJlVHJ1ZSgibmV3IERlcml2ZWREYXRlVGlt
ZUZvcm1hdCgpLmZvcm1hdCgwKS5sZW5ndGggPiAwIik7CitzaG91bGRCZSgiT2JqZWN0LmdldFBy
b3RvdHlwZU9mKG5ldyBEZXJpdmVkRGF0ZVRpbWVGb3JtYXQpIiwgIkRlcml2ZWREYXRlVGltZUZv
cm1hdC5wcm90b3R5cGUiKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2YoT2JqZWN0
LmdldFByb3RvdHlwZU9mKG5ldyBEZXJpdmVkRGF0ZVRpbWVGb3JtYXQpKSIsICJJbnRsLkRhdGVU
aW1lRm9ybWF0LnByb3RvdHlwZSIpOworCisvLyAxMi4yIFByb3BlcnRpZXMgb2YgdGhlIEludGwu
RGF0ZVRpbWVGb3JtYXQgQ29uc3RydWN0b3IKKworLy8gbGVuZ3RoIHByb3BlcnR5ICh3aG9zZSB2
YWx1ZSBpcyAwKQorc2hvdWxkQmUoIkludGwuRGF0ZVRpbWVGb3JtYXQubGVuZ3RoIiwgIjAiKTsK
KworLy8gMTIuMi4xIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlCisKKy8vIFRoaXMgcHJv
cGVydHkgaGFzIHRoZSBhdHRyaWJ1dGVzIHsgW1tXcml0YWJsZV1dOiBmYWxzZSwgW1tFbnVtZXJh
YmxlXV06IGZhbHNlLCBbW0NvbmZpZ3VyYWJsZV1dOiBmYWxzZSB9Lgorc2hvdWxkQmVGYWxzZSgi
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LCAncHJv
dG90eXBlJykud3JpdGFibGUiKTsKK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdCwgJ3Byb3RvdHlwZScpLmVudW1lcmFibGUi
KTsKK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5E
YXRlVGltZUZvcm1hdCwgJ3Byb3RvdHlwZScpLmNvbmZpZ3VyYWJsZSIpOworCisvLyAxMi4yLjIg
SW50bC5EYXRlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YgKGxvY2FsZXMgWywgb3B0aW9u
cyBdKQorCisvLyBUaGUgdmFsdWUgb2YgdGhlIGxlbmd0aCBwcm9wZXJ0eSBvZiB0aGUgc3VwcG9y
dGVkTG9jYWxlc09mIG1ldGhvZCBpcyAxLgorc2hvdWxkQmUoIkludGwuRGF0ZVRpbWVGb3JtYXQu
c3VwcG9ydGVkTG9jYWxlc09mLmxlbmd0aCIsICIxIik7CisKKy8vIFJldHVybnMgU3VwcG9ydGVk
TG9jYWxlcworc2hvdWxkQmVUeXBlKCJJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2Fs
ZXNPZigpIiwgIkFycmF5Iik7CisKKy8vIDEyLjMgUHJvcGVydGllcyBvZiB0aGUgSW50bC5EYXRl
VGltZUZvcm1hdCBQcm90b3R5cGUgT2JqZWN0CisKKy8vIFRoZSB2YWx1ZSBvZiBJbnRsLkRhdGVU
aW1lRm9ybWF0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyAlRGF0ZVRpbWVGb3JtYXQlLgorc2hv
dWxkQmUoIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmNvbnN0cnVjdG9yIiwgIkludGwu
RGF0ZVRpbWVGb3JtYXQiKTsKKworLy8gMTIuMy4zIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90
eXBlLmZvcm1hdAorCisvLyBUaGlzIG5hbWVkIGFjY2Vzc29yIHByb3BlcnR5IHJldHVybnMgYSBm
dW5jdGlvbiB0aGF0IGZvcm1hdHMgYSBkYXRlIGFjY29yZGluZyB0byB0aGUgZWZmZWN0aXZlIGxv
Y2FsZSBhbmQgdGhlIGZvcm1hdHRpbmcgb3B0aW9ucyBvZiB0aGlzIERhdGVUaW1lRm9ybWF0IG9i
amVjdC4KK3Nob3VsZEJlVHlwZSgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0
IiwgIkZ1bmN0aW9uIik7CisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUgW1tHZXRdXSBhdHRyaWJ1dGUg
aXMgYSBmdW5jdGlvbgorc2hvdWxkQmVUeXBlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykuZ2V0IiwgIkZ1bmN0
aW9uIik7CisKKy8vIFRoZSB2YWx1ZSBvZiB0aGUgW1tTZXRdXSBhdHRyaWJ1dGUgaXMgdW5kZWZp
bmVkLgorc2hvdWxkQmUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRl
VGltZUZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5zZXQiLCAidW5kZWZpbmVkIik7CisKKy8v
IE1hdGNoIEZpcmVmb3ggd2hlcmUgdW5zcGVjaWZlZC4KK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUsICdm
b3JtYXQnKS5lbnVtZXJhYmxlIik7CitzaG91bGRCZVRydWUoIk9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5jb25m
aWd1cmFibGUiKTsKKworLy8gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAx
Lgorc2hvdWxkQmUoIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5sZW5ndGgi
LCAiMSIpOworCisvLyBUaHJvd3Mgb24gbm9uLURhdGVUaW1lRm9ybWF0IHRoaXMuCitzaG91bGRU
aHJvdygiT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnZm9ybWF0JywgT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcp
KS5mb3JtYXQiLCAiJ1R5cGVFcnJvcjogSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9y
bWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0XFwncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFz
IGEgRGF0ZVRpbWVGb3JtYXQnIik7CisKKy8vIFRoZSBmb3JtYXQgZnVuY3Rpb24gaXMgdW5pcXVl
IHBlciBpbnN0YW5jZS4KK3Nob3VsZEJlVHJ1ZSgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5
cGUuZm9ybWF0ICE9PSBJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0Iik7CitzaG91bGRCZVRy
dWUoIm5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkuZm9ybWF0ICE9PSBuZXcgSW50bC5EYXRlVGlt
ZUZvcm1hdCgpLmZvcm1hdCIpOworCisvLyAxMi4zLjQgRGF0ZVRpbWUgRm9ybWF0IEZ1bmN0aW9u
cworCisvLyAxLiBMZXQgZHRmIGJlIHRoZSB0aGlzIHZhbHVlLgorLy8gMi4gQXNzZXJ0OiBUeXBl
KGR0ZikgaXMgT2JqZWN0IGFuZCBkdGYgaGFzIGFuIFtbaW5pdGlhbGl6ZWREYXRlVGltZUZvcm1h
dF1dIGludGVybmFsIHNsb3Qgd2hvc2UgdmFsdWUgaXMgdHJ1ZS4KKy8vIFRoaXMgc2hvdWxkIG5v
dCBiZSByZWFjaGFibGUsIHNpbmNlIGZvcm1hdCBpcyBib3VuZCB0byBhbiBpbml0aWFsaXplZCBk
YXRldGltZWZvcm1hdC4KKworLy8gMy4gSWYgZGF0ZSBpcyBub3QgcHJvdmlkZWQgb3IgaXMgdW5k
ZWZpbmVkLCB0aGVuCisvLyBhLiBMZXQgeCBiZSAlRGF0ZV9ub3clKCkuCisvLyA0LiBFbHNlCisv
LyBhLiBMZXQgeCBiZSBUb051bWJlcihkYXRlKS4KKy8vIGIuIFJldHVybklmQWJydXB0KHgpLgor
c2hvdWxkVGhyb3coIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCh7IHZhbHVl
T2YoKSB7IHRocm93IEVycm9yKCc0YicpIH0gfSkiLCAiJ0Vycm9yOiA0YiciKTsKKworLy8gMTIu
My40IEZvcm1hdERhdGVUaW1lIGFic3RyYWN0IG9wZXJhdGlvbgorCisvLyAxLiBJZiB4IGlzIG5v
dCBhIGZpbml0ZSBOdW1iZXIsIHRoZW4gdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KK3No
b3VsZFRocm93KCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQoSW5maW5pdHkp
IiwgIidSYW5nZUVycm9yOiBkYXRlIHZhbHVlIGlzIG5vdCBmaW5pdGUgaW4gRGF0ZVRpbWVGb3Jt
YXQuZm9ybWF0KCknIik7CisKKy8vIEZvcm1hdCBpcyBib3VuZCwgc28gY2FsbGluZyB3aXRoIGFs
dGVybmF0ZSAidGhpcyIgaGFzIG5vIGVmZmVjdC4KK3Nob3VsZEJlKCJJbnRsLkRhdGVUaW1lRm9y
bWF0LnByb3RvdHlwZS5mb3JtYXQuY2FsbChudWxsLCAwKSIsICJJbnRsLkRhdGVUaW1lRm9ybWF0
KCkuZm9ybWF0KDApIik7CitzaG91bGRCZSgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUu
Zm9ybWF0LmNhbGwoSW50bC5EYXRlVGltZUZvcm1hdCgnYXInKSwgMCkiLCAiSW50bC5EYXRlVGlt
ZUZvcm1hdCgpLmZvcm1hdCgwKSIpOworc2hvdWxkQmUoIkludGwuRGF0ZVRpbWVGb3JtYXQucHJv
dG90eXBlLmZvcm1hdC5jYWxsKDUsIDApIiwgIkludGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQo
MCkiKTsKK3Nob3VsZEJlKCJuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdC5jYWxsKG51
bGwsIDApIiwgIkludGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQoMCkiKTsKK3Nob3VsZEJlKCJu
ZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdC5jYWxsKEludGwuRGF0ZVRpbWVGb3JtYXQo
J2FyJyksIDApIiwgIkludGwuRGF0ZVRpbWVGb3JtYXQoKS5mb3JtYXQoMCkiKTsKK3Nob3VsZEJl
KCJuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLmZvcm1hdC5jYWxsKDUsIDApIiwgIkludGwuRGF0
ZVRpbWVGb3JtYXQoKS5mb3JtYXQoMCkiKTsKKworLy8gMTIuMy41IEludGwuRGF0ZVRpbWVGb3Jt
YXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyAoKQorCitzaG91bGRCZSgiSW50bC5EYXRlVGlt
ZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zLmxlbmd0aCIsICIwIik7CisKKy8vIFJl
dHVybnMgYSBuZXcgb2JqZWN0IHdob3NlIHByb3BlcnRpZXMgYW5kIGF0dHJpYnV0ZXMgYXJlIHNl
dCBhcyBpZiBjb25zdHJ1Y3RlZCBieSBhbiBvYmplY3QgbGl0ZXJhbC4KK3Nob3VsZEJlVHlwZSgi
SW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkiLCAiT2JqZWN0
Iik7CisKKy8vIFJldHVybnMgYSBuZXcgb2JqZWN0IGVhY2ggdGltZS4KK3Nob3VsZEJlRmFsc2Uo
IkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpID09PSBJbnRs
LkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSIpOworCisvLyBUaHJv
d3Mgb24gbm9uLURhdGVUaW1lRm9ybWF0IHRoaXMuCitzaG91bGRUaHJvdygiSW50bC5EYXRlVGlt
ZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zLmNhbGwoNSkiLCAiJ1R5cGVFcnJvcjog
SW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0XFwncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3Jt
YXQnIik7CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLW51
bWJlcmZvcm1hdC5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLW51bWJlcmZv
cm1hdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mNTczYjkyMDU0MTEzMDlkM2NkNGIwN2I5ZTA4Y2UxMWI2M2Nh
OWE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwt
bnVtYmVyZm9ybWF0LmpzCkBAIC0wLDAgKzEsMTAyIEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
IGNoZWNrcyB0aGUgYmVoYXZpb3Igb2YgSW50bC5OdW1iZXJGb3JtYXQgYXMgZGVzY3JpYmVkIGlu
IHRoZSBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSSBTcGVjaWZpY2F0aW9uIChF
Q01BLTQwMiAyLjApLiIpOworCisvLyAxMS4xIFRoZSBJbnRsLk51bWJlckZvcm1hdCBDb25zdHJ1
Y3RvcgorCisvLyBUaGUgSW50bC5OdW1iZXJGb3JtYXQgY29uc3RydWN0b3IgaXMgYSBzdGFuZGFy
ZCBidWlsdC1pbiBwcm9wZXJ0eSBvZiB0aGUgSW50bCBvYmplY3QuCitzaG91bGRCZVR5cGUoIklu
dGwuTnVtYmVyRm9ybWF0IiwgIkZ1bmN0aW9uIik7CisKKy8vIDExLjEuMiBJbnRsLk51bWJlckZv
cm1hdChbIGxvY2FsZXMgWywgb3B0aW9uc11dKQorc2hvdWxkQmVUeXBlKCJJbnRsLk51bWJlckZv
cm1hdCgpIiwgIkludGwuTnVtYmVyRm9ybWF0Iik7CitzaG91bGRCZVR5cGUoIkludGwuTnVtYmVy
Rm9ybWF0LmNhbGwoe30pIiwgIkludGwuTnVtYmVyRm9ybWF0Iik7CitzaG91bGRCZVR5cGUoIm5l
dyBJbnRsLk51bWJlckZvcm1hdCgpIiwgIkludGwuTnVtYmVyRm9ybWF0Iik7CisKKy8vIFN1YmNs
YXNzYWJsZQorY2xhc3MgRGVyaXZlZE51bWJlckZvcm1hdCBleHRlbmRzIEludGwuTnVtYmVyRm9y
bWF0IHt9CitzaG91bGRCZVR5cGUoIm5ldyBEZXJpdmVkTnVtYmVyRm9ybWF0IiwgIkRlcml2ZWRO
dW1iZXJGb3JtYXQiKTsKK3Nob3VsZEJlVHlwZSgibmV3IERlcml2ZWROdW1iZXJGb3JtYXQiLCAi
SW50bC5OdW1iZXJGb3JtYXQiKTsKK3Nob3VsZEJlKCJuZXcgRGVyaXZlZE51bWJlckZvcm1hdCgp
LmZvcm1hdCgxKSIsICInMSciKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3
IERlcml2ZWROdW1iZXJGb3JtYXQpIiwgIkRlcml2ZWROdW1iZXJGb3JtYXQucHJvdG90eXBlIik7
CitzaG91bGRCZSgiT2JqZWN0LmdldFByb3RvdHlwZU9mKE9iamVjdC5nZXRQcm90b3R5cGVPZihu
ZXcgRGVyaXZlZE51bWJlckZvcm1hdCkpIiwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSIp
OworCisvLyAxMS4yIFByb3BlcnRpZXMgb2YgdGhlIEludGwuTnVtYmVyRm9ybWF0IENvbnN0cnVj
dG9yCisKKy8vIGxlbmd0aCBwcm9wZXJ0eSAod2hvc2UgdmFsdWUgaXMgMCkKK3Nob3VsZEJlKCJJ
bnRsLk51bWJlckZvcm1hdC5sZW5ndGgiLCAiMCIpOworCisvLyAxMS4yLjEgSW50bC5OdW1iZXJG
b3JtYXQucHJvdG90eXBlCisKKy8vIFRoaXMgcHJvcGVydHkgaGFzIHRoZSBhdHRyaWJ1dGVzIHsg
W1tXcml0YWJsZV1dOiBmYWxzZSwgW1tFbnVtZXJhYmxlXV06IGZhbHNlLCBbW0NvbmZpZ3VyYWJs
ZV1dOiBmYWxzZSB9Lgorc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihJbnRsLk51bWJlckZvcm1hdCwgJ3Byb3RvdHlwZScpLndyaXRhYmxlIik7CitzaG91bGRC
ZUZhbHNlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0
LCAncHJvdG90eXBlJykuZW51bWVyYWJsZSIpOworc2hvdWxkQmVGYWxzZSgiT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51bWJlckZvcm1hdCwgJ3Byb3RvdHlwZScpLmNvbmZp
Z3VyYWJsZSIpOworCisvLyAxMS4yLjIgSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxl
c09mIChsb2NhbGVzIFssIG9wdGlvbnMgXSkKKworLy8gVGhlIHZhbHVlIG9mIHRoZSBsZW5ndGgg
cHJvcGVydHkgb2YgdGhlIHN1cHBvcnRlZExvY2FsZXNPZiBtZXRob2QgaXMgMS4KK3Nob3VsZEJl
KCJJbnRsLk51bWJlckZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YubGVuZ3RoIiwgIjEiKTsKKwor
Ly8gUmV0dXJucyBTdXBwb3J0ZWRMb2NhbGVzCitzaG91bGRCZVR5cGUoIkludGwuTnVtYmVyRm9y
bWF0LnN1cHBvcnRlZExvY2FsZXNPZigpIiwgIkFycmF5Iik7CisKKy8vIDExLjMgUHJvcGVydGll
cyBvZiB0aGUgSW50bC5OdW1iZXJGb3JtYXQgUHJvdG90eXBlIE9iamVjdAorCisvLyBUaGUgdmFs
dWUgb2YgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzICVOdW1iZXJG
b3JtYXQlLgorc2hvdWxkQmUoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciIsICJJbnRsLk51bWJlckZvcm1hdCIpOworCisvLyAxMS4zLjMgSW50bC5OdW1iZXJGb3JtYXQu
cHJvdG90eXBlLmZvcm1hdAorCisvLyBUaGlzIG5hbWVkIGFjY2Vzc29yIHByb3BlcnR5IHJldHVy
bnMgYSBmdW5jdGlvbiB0aGF0IGZvcm1hdHMgYSBudW1iZXIgYWNjb3JkaW5nIHRvIHRoZSBlZmZl
Y3RpdmUgbG9jYWxlIGFuZCB0aGUgZm9ybWF0dGluZyBvcHRpb25zIG9mIHRoaXMgTnVtYmVyRm9y
bWF0IG9iamVjdC4KK3Nob3VsZEJlVHlwZSgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZv
cm1hdCIsICJGdW5jdGlvbiIpOworCisvLyBUaGUgdmFsdWUgb2YgdGhlIFtbR2V0XV0gYXR0cmli
dXRlIGlzIGEgZnVuY3Rpb24KK3Nob3VsZEJlVHlwZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5nZXQiLCAiRnVu
Y3Rpb24iKTsKKworLy8gVGhlIHZhbHVlIG9mIHRoZSBbW1NldF1dIGF0dHJpYnV0ZSBpcyB1bmRl
ZmluZWQuCitzaG91bGRCZSgiT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLk51
bWJlckZvcm1hdC5wcm90b3R5cGUsICdmb3JtYXQnKS5zZXQiLCAidW5kZWZpbmVkIik7CisKKy8v
IE1hdGNoIEZpcmVmb3ggd2hlcmUgdW5zcGVjaWZlZC4KK3Nob3VsZEJlRmFsc2UoIk9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCAnZm9y
bWF0JykuZW51bWVyYWJsZSIpOworc2hvdWxkQmVUcnVlKCJPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSwgJ2Zvcm1hdCcpLmNvbmZpZ3Vy
YWJsZSIpOworCisvLyBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuCitz
aG91bGRCZSgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5sZW5ndGgiLCAiMSIp
OworCisvLyBUaHJvd3Mgb24gbm9uLU51bWJlckZvcm1hdCB0aGlzLgorc2hvdWxkVGhyb3coIk9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2Zvcm1hdCcsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLCAnZm9ybWF0JykpLmZvcm1hdCIs
ICInVHlwZUVycm9yOiBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBv
biB2YWx1ZSB0aGF0XFwncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9y
bWF0JyIpOworCisvLyBUaGUgZm9ybWF0IGZ1bmN0aW9uIGlzIHVuaXF1ZSBwZXIgaW5zdGFuY2Uu
CitzaG91bGRCZVRydWUoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgIT09IElu
dGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0Iik7CitzaG91bGRCZVRydWUoIm5ldyBJbnRsLk51bWJl
ckZvcm1hdCgpLmZvcm1hdCAhPT0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0Iik7CisK
Ky8vIDExLjMuNCBGb3JtYXQgTnVtYmVyIEZ1bmN0aW9ucworCisvLyAxLiBMZXQgbmYgYmUgdGhl
IHRoaXMgdmFsdWUuCisvLyAyLiBBc3NlcnQ6IFR5cGUobmYpIGlzIE9iamVjdCBhbmQgbmYgaGFz
IGFuIFtbaW5pdGlhbGl6ZWROdW1iZXJGb3JtYXRdXSBpbnRlcm5hbCBzbG90IHdob3NlIHZhbHVl
IGlzIHRydWUuCisvLyBUaGlzIHNob3VsZCBub3QgYmUgcmVhY2hhYmxlLCBzaW5jZSBmb3JtYXQg
aXMgYm91bmQgdG8gYW4gaW5pdGlhbGl6ZWQgbnVtYmVyZm9ybWF0LgorCisvLyAzLiBJZiB2YWx1
ZSBpcyBub3QgcHJvdmlkZWQsIGxldCB2YWx1ZSBiZSB1bmRlZmluZWQuCisvLyA0LiBMZXQgeCBi
ZSBUb051bWJlcih2YWx1ZSkuCisvLyA1LiBSZXR1cm5JZkFicnVwdCh4KS4KK3Nob3VsZFRocm93
KCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0KHsgdmFsdWVPZigpIHsgdGhyb3cg
RXJyb3IoJzUnKSB9IH0pIiwgIidFcnJvcjogNSciKTsKKworLy8gRm9ybWF0IGlzIGJvdW5kLCBz
byBjYWxsaW5nIHdpdGggYWx0ZXJuYXRlICJ0aGlzIiBoYXMgbm8gZWZmZWN0Lgorc2hvdWxkQmUo
IkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQuY2FsbChudWxsLCAxLjIpIiwgIklu
dGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KDEuMikiKTsKK3Nob3VsZEJlKCJJbnRsLk51bWJlckZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0LmNhbGwoSW50bC5EYXRlVGltZUZvcm1hdCgnYXInKSwgMS4y
KSIsICJJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdCgxLjIpIik7CitzaG91bGRCZSgiSW50bC5O
dW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5jYWxsKDUsIDEuMikiLCAiSW50bC5OdW1iZXJG
b3JtYXQoKS5mb3JtYXQoMS4yKSIpOworc2hvdWxkQmUoIm5ldyBJbnRsLk51bWJlckZvcm1hdCgp
LmZvcm1hdC5jYWxsKG51bGwsIDEuMikiLCAiSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoMS4y
KSIpOworc2hvdWxkQmUoIm5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdC5jYWxsKEludGwu
RGF0ZVRpbWVGb3JtYXQoJ2FyJyksIDEuMikiLCAiSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQo
MS4yKSIpOworc2hvdWxkQmUoIm5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdC5jYWxsKDUs
IDEuMikiLCAiSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoMS4yKSIpOworCisvLyAxMS4zLjUg
SW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyAoKQorCitzaG91bGRC
ZSgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5sZW5ndGgiLCAi
MCIpOworCisvLyBSZXR1cm5zIGEgbmV3IG9iamVjdCB3aG9zZSBwcm9wZXJ0aWVzIGFuZCBhdHRy
aWJ1dGVzIGFyZSBzZXQgYXMgaWYgY29uc3RydWN0ZWQgYnkgYW4gb2JqZWN0IGxpdGVyYWwuCitz
aG91bGRCZVR5cGUoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMo
KSIsICJPYmplY3QiKTsKKworLy8gUmV0dXJucyBhIG5ldyBvYmplY3QgZWFjaCB0aW1lLgorc2hv
dWxkQmVGYWxzZSgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygp
ID09PSBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkiKTsKKwor
Ly8gVGhyb3dzIG9uIG5vbi1OdW1iZXJGb3JtYXQgdGhpcy4KK3Nob3VsZFRocm93KCJJbnRsLk51
bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zLmNhbGwoNSkiLCAiJ1R5cGVFcnJv
cjogSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24g
dmFsdWUgdGhhdFxcJ3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1h
dCciKTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwuanMg
Yi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC5qcwppbmRleCA4YTRjZjU4NGUyZjA5
Y2VjODdkNTVmOTMyMjY0NDNlZDcxODMyZTM5Li4wOTY4Mjg3Mjg4NjBiMGNjODk4Mjc5N2M5YzRk
Zjk3MzgyZDg4ODU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50
bC5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC5qcwpAQCAtMSwyMyAr
MSwyNiBAQAotLy8gVGhpcyBmZWF0dXJlIGlzbid0IGVuYWJsZWQgeWV0LgotLy9AIHNraXAKK2Rl
c2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRoZSBiZWhhdmlvciBvZiB0aGUgSW50bCBvYmpl
Y3QgYXMgZGVzY3JpYmVkIGluIHRoZSBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQ
SSBTcGVjaWZpY2F0aW9uIChFQ01BLTQwMiAyLjApLiIpOwogCi1kZXNjcmlwdGlvbigiVGhpcyB0
ZXN0IGNoZWNrcyB0aGUgYmVoYXZpb3Igb2YgdGhlIEludGwgb2JqZWN0IGFzIGRlc2NyaWJlZCBp
biA4IG9mIHRoZSBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSSBTcGVjaWZpY2F0
aW9uLiIpOworLy8gOCBUaGUgSW50bCBPYmplY3QKIAotLy8gVGhlIEludGwgb2JqZWN0IGlzIGEg
c3RhbmRhcmQgYnVpbHQtaW4gb2JqZWN0IHRoYXQgaXMgdGhlIGluaXRpYWwgdmFsdWUgb2YgdGhl
IEludGwgcHJvcGVydHkgb2YgdGhlIGdsb2JhbCBvYmplY3QuCisvLyBUaGUgSW50bCBvYmplY3Qg
aXMgYSBzaW5nbGUgb3JkaW5hcnkgb2JqZWN0Lgogc2hvdWxkQmVUeXBlKCJJbnRsIiwgIk9iamVj
dCIpOwogc2hvdWxkQmUoInR5cGVvZiBJbnRsIiwgIidvYmplY3QnIik7CiBzaG91bGRCZSgiT2Jq
ZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEludGwpIiwgIidbb2JqZWN0IE9iamVjdF0nIik7
CiAKLS8vIFRoZSB2YWx1ZSBvZiB0aGUgW1tQcm90b3R5cGVdXSBpbnRlcm5hbCBwcm9wZXJ0eSBv
ZiB0aGUgSW50bCBvYmplY3QgaXMgdGhlIGJ1aWx0LWluIE9iamVjdCBwcm90b3R5cGUgb2JqZWN0
IHNwZWNpZmllZCBieSB0aGUgRUNNQVNjcmlwdCBMYW5ndWFnZSBTcGVjaWZpY2F0aW9uLgorLy8g
VGhlIHZhbHVlIG9mIHRoZSBbW1Byb3RvdHlwZV1dIGludGVybmFsIHNsb3Qgb2YgdGhlIEludGwg
b2JqZWN0IGlzIHRoZSBpbnRyaW5zaWMgb2JqZWN0ICVPYmplY3RQcm90b3R5cGUlLgogc2hvdWxk
QmVUcnVlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2YoSW50bCkgPT09IE9iamVjdC5wcm90b3R5cGUi
KTsKIAotLy8gVGhlIEludGwgb2JqZWN0IGRvZXMgbm90IGhhdmUgYSBbW0NvbnN0cnVjdF1dIGlu
dGVybmFsIHByb3BlcnR5OyBpdCBpcyBub3QgcG9zc2libGUgdG8gdXNlIHRoZSBJbnRsIG9iamVj
dCBhcyBhIGNvbnN0cnVjdG9yIHdpdGggdGhlIG5ldyBvcGVyYXRvci4KKy8vIFRoZSBJbnRsIG9i
amVjdCBpcyBub3QgYSBmdW5jdGlvbiBvYmplY3QuCisvLyBJdCBkb2VzIG5vdCBoYXZlIGEgW1tD
b25zdHJ1Y3RdXSBpbnRlcm5hbCBtZXRob2Q7IGl0IGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgdGhl
IEludGwgb2JqZWN0IGFzIGEgY29uc3RydWN0b3Igd2l0aCB0aGUgbmV3IG9wZXJhdG9yLgogc2hv
dWxkVGhyb3coIm5ldyBJbnRsIiwgIidUeXBlRXJyb3I6IE9iamVjdCBpcyBub3QgYSBjb25zdHJ1
Y3RvciAoZXZhbHVhdGluZyBcXCduZXcgSW50bFxcJyknIik7CiAKLS8vIFRoZSBJbnRsIG9iamVj
dCBkb2VzIG5vdCBoYXZlIGEgW1tDYWxsXV0gaW50ZXJuYWwgcHJvcGVydHk7IGl0IGlzIG5vdCBw
b3NzaWJsZSB0byBpbnZva2UgdGhlIEludGwgb2JqZWN0IGFzIGEgZnVuY3Rpb24uCisvLyBUaGUg
SW50bCBvYmplY3QgZG9lcyBub3QgaGF2ZSBhIFtbQ2FsbF1dIGludGVybmFsIG1ldGhvZDsgaXQg
aXMgbm90IHBvc3NpYmxlIHRvIGludm9rZSB0aGUgSW50bCBvYmplY3QgYXMgYSBmdW5jdGlvbi4K
IHNob3VsZFRocm93KCJJbnRsKCkiLCAiJ1R5cGVFcnJvcjogSW50bCBpcyBub3QgYSBmdW5jdGlv
bi4gKEluIFxcJ0ludGwoKVxcJywgXFwnSW50bFxcJyBpcyBhbiBpbnN0YW5jZSBvZiBPYmplY3Qp
JyIpOwogCi0vLyBpcyBkZWxldGFibGUsIGluZmVycmVkIGZyb20gdXNlIG9mICJJbml0aWFsIiBp
biBzcGVjLCBjb25zaXN0ZW50IHdpdGggb3RoZXIgaW1wbGVtZW50YXRpb25zCisvLyBIYXMgb25s
eSB0aGUgYnVpbHQtaW4gQ29sbGF0b3IsIERhdGVUaW1lRm9ybWF0LCBhbmQgTnVtYmVyRm9ybWF0
LCB3aGljaCBhcmUgbm90IGVudW1lcmFibGUuCitzaG91bGRCZSgiT2JqZWN0LmtleXMoSW50bCku
bGVuZ3RoIiwgIjAiKTsKKworLy8gSXMgZGVsZXRhYmxlLCBpbmZlcnJlZCBmcm9tIHVzZSBvZiAi
SW5pdGlhbCIgaW4gc3BlYywgY29uc2lzdGVudCB3aXRoIG90aGVyIGltcGxlbWVudGF0aW9ucy4K
IHZhciBfX0ludGwgPSBJbnRsOwogc2hvdWxkQmVUcnVlKCJkZWxldGUgSW50bDsiKTsKIApAQCAt
MjUsMyArMjgsNCBAQCBmdW5jdGlvbiBnbG9iYWwoKSB7IHJldHVybiB0aGlzOyB9CiBzaG91bGRC
ZUZhbHNlKCInSW50bCcgaW4gZ2xvYmFsKCkiKTsKIAogSW50bCA9IF9fSW50bDsKKwpkaWZmIC0t
Z2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGNkMDFjM2Q3NTQ5NzYwNTFmNTI4NWM1
NjVkYTdlY2JhODlmNzc4NTQuLjZjNTFkY2I4YjZjMjk3MmRhMTIzOTkwYzk1ZjJlMWQwYzIyMmRk
NTUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxNS0wNy0yOSAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBiYXNpYyB0eXBlcyBmb3IgRUNNQVNjcmlwdCBJbnRlcm5h
dGlvbmFsaXphdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0NjkyNgorCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4u
CisKKyAgICAgICAgRW5hYmxlIGZsYWcgbm93IHRoYXQgdGhlIGJhc2ljIG9iamVjdHMgYXJlIGlu
IHBsYWNlLgorCisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlOiBl
bmFibGUgSU5UTAorCiAyMDE1LTA3LTI5ICBCYXNpbGUgQ2xlbWVudCAgPGJhc2lsZV9jbGVtZW50
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgbmF0aXZlIGNhbGwgaW5saW5pbmcK
</data>

          </attachment>
      

    </bug>

</bugzilla>