<?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>34481</bug_id>
          
          <creation_ts>2010-02-02 08:34:56 -0800</creation_ts>
          <short_desc>Web Inspector: Start unforking profiler and debugger stuff</short_desc>
          <delta_ts>2010-02-03 02:54:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Mikhail Naganov">mnaganov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>186976</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-02-02 08:34:56 -0800</bug_when>
    <thetext>The goal is to enable &quot;JAVASCRIPT_DEBUGGER&quot; in Chromium port and have profiler / debugger stuff compiled --- this requires not to depend directly on JSC, for example.

As a first step, I&apos;m removing custom implementations of Console, and migrating InspectorController towards using &apos;Script...&apos; types instead of &apos;JSC::&apos; ones.

Temporarily, there will be stuff under &quot;#if ENABLE(JAVASCRIPT_DEBUGGER) || USE(V8)&quot; conditionals. The second part will be removed back after migration will have been finished, and thus JAVASCRIPT_DEBUGGER will be enabled in Chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186979</commentid>
    <comment_count>1</comment_count>
      <attachid>47935</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-02-02 08:37:18 -0800</bug_when>
    <thetext>Created attachment 47935
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186980</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-02 08:38:27 -0800</bug_when>
    <thetext>Attachment 47935 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/page/Console.h:42:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Skipping input &apos;WebCore/bindings/v8/custom/V8ConsoleCustom.cpp&apos;: Can&apos;t open for reading
WebCore/bindings/js/ScriptProfiler.cpp:31:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
WebCore/bindings/v8/ScriptProfile.h:40:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/bindings/v8/ScriptProfiler.cpp:32:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
WebCore/bindings/v8/ScriptProfiler.cpp:40:  context_scope is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 5


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187000</commentid>
    <comment_count>3</comment_count>
      <attachid>47941</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-02-02 09:22:53 -0800</bug_when>
    <thetext>Created attachment 47941
proposed patch - fixed style violations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187010</commentid>
    <comment_count>4</comment_count>
      <attachid>47941</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-02-02 09:47:55 -0800</bug_when>
    <thetext>Comment on attachment 47941
proposed patch - fixed style violations

r- for no comments on the migration scenario.

&gt; +
&gt; +    const String&amp; title() const { return m_title; }

Return copy in order not to deal with the ownership.

&gt; -    JSC::StringBuilder message;
&gt; -    message.append(&quot;Profile \&quot;webkit-profile://&quot;);
&gt; -    message.append((UString)encodeWithURLEscapeSequences(CPUProfileType));
&gt; -    message.append(&quot;/&quot;);
&gt; -    message.append((UString)encodeWithURLEscapeSequences(profile-&gt;title()));
&gt; -    message.append(&quot;#&quot;);
&gt; -    message.append(UString::from(profile-&gt;uid()));
&gt; -    message.append(&quot;\&quot; finished.&quot;);
&gt; -    addMessageToConsole(JSMessageSource, LogMessageType, LogMessageLevel, message.release(), lineNumber, sourceURL);
&gt; +    String message;
&gt; +    message += &quot;Profile \&quot;webkit-profile://&quot;;
&gt; +    message += encodeWithURLEscapeSequences(CPUProfileType);
&gt; +    message += &quot;/&quot;;
&gt; +    message += encodeWithURLEscapeSequences(profile-&gt;title());
&gt; +    message += &quot;#&quot;;
&gt; +    message += String::number(profile-&gt;uid());
&gt; +    message += &quot;\&quot; finished.&quot;;
&gt; +    addMessageToConsole(JSMessageSource, LogMessageType, LogMessageLevel, message, lineNumber, sourceURL);
&gt;  }
&gt;  

Why not to use String::format?


&gt; -void InspectorController::addStartProfilingMessageToConsole(const UString&amp; title, unsigned lineNumber, const UString&amp; sourceURL)
&gt; +void InspectorController::addStartProfilingMessageToConsole(const String&amp; title, unsigned lineNumber, const String&amp; sourceURL)
&gt;  {
&gt; -    JSC::StringBuilder message;
&gt; -    message.append(&quot;Profile \&quot;webkit-profile://&quot;);
&gt; -    message.append(encodeWithURLEscapeSequences(CPUProfileType));
&gt; -    message.append(&quot;/&quot;);
&gt; -    message.append(encodeWithURLEscapeSequences(title));
&gt; -    message.append(&quot;#0\&quot; started.&quot;);
&gt; -    addMessageToConsole(JSMessageSource, LogMessageType, LogMessageLevel, message.release(), lineNumber, sourceURL);
&gt; +    String message;
&gt; +    message += &quot;Profile \&quot;webkit-profile://&quot;;
&gt; +    message += encodeWithURLEscapeSequences(CPUProfileType);
&gt; +    message += &quot;/&quot;;
&gt; +    message += encodeWithURLEscapeSequences(title);
&gt; +    message += &quot;#0\&quot; started.&quot;;
&gt; +    addMessageToConsole(JSMessageSource, LogMessageType, LogMessageLevel, message, lineNumber, sourceURL);
&gt;  }
&gt;  

ditto

&gt; +#if ENABLE(JAVASCRIPT_DEBUGGER) || USE(V8)
&gt;  

&gt; -#if ENABLE(INSPECTOR)
&gt; +#if ENABLE(INSPECTOR) &amp;&amp; USE(JSC)
&gt;      InspectorController* controller = page-&gt;inspectorController();
&gt;      // FIXME: log a console message when profiling is disabled.

&gt; -#if ENABLE(INSPECTOR)
&gt; +#if ENABLE(INSPECTOR) &amp;&amp; USE(JSC)
&gt;          resolvedTitle = controller-&gt;getCurrentUserInitiatedProfileName(true);
&gt;  #else

Could you comment on the fact that this is a temporary measure that will exist until JAVASCRIPT_DEBUGGER is enabled in V8 case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187293</commentid>
    <comment_count>5</comment_count>
      <attachid>48003</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-02-03 01:25:40 -0800</bug_when>
    <thetext>Created attachment 48003
comments addressed, fixed style violations found by an updated version of style checking script

There can be an error from style checker concerning absence of `#include &quot;config.h&quot;&apos; in JSBindingsAllInOne.cpp. I&apos;m considering this as a problem in the style checker, not my fault.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187300</commentid>
    <comment_count>6</comment_count>
      <attachid>48003</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-03 02:54:34 -0800</bug_when>
    <thetext>Comment on attachment 48003
comments addressed, fixed style violations found by an updated version of style checking script

Clearing flags on attachment: 48003

Committed r54277: &lt;http://trac.webkit.org/changeset/54277&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187301</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-03 02:54:44 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47935</attachid>
            <date>2010-02-02 08:37:18 -0800</date>
            <delta_ts>2010-02-02 09:22:53 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>unfork-prof-1-patch</filename>
            <type>text/plain</type>
            <size>41149</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
N2E1Yzc3Yi4uOTNhMzY5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxMC0wMi0wMiAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFN0YXJ0IHVuZm9ya2luZyBkZWJ1Z2dlciBhbmQgcHJvZmls
ZXIgY29kZS4KKworICAgICAgICBSZW1vdmUgY3VzdG9tIGltcGxlbWVudGF0aW9uIG9mIENvbnNv
bGUuCisgICAgICAgIEFkZCAnU2NyaXB0UHJvZmlsZXInIGFuZCAnU2NyaXB0UHJvZmlsZScgdHlw
ZXMuCisgICAgICAgIFN0YXJ0IG1pZ3JhdGlvbiB0byBlbmdpbmUtbmV1dHJhbCB0eXBlcyBpbiBJ
bnNwZWN0b3JDb250cm9sbGVyLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNDQ4MQorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Jp
bmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3Rv
bS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dFByb2ZpbGVyOjpzdG9wKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5o
OiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0UHJvZmlsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dFByb2ZpbGU6On5TY3JpcHRQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Zp
bGU6OnRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2ZpbGU6OnVpZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRQcm9maWxlOjpTY3JpcHRQcm9maWxlKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0UHJvZmlsZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2ZpbGVy
OjpzdG9wKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5oOiBBZGRlZC4K
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjphZGRQcm9maWxlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmFkZFByb2ZpbGVGaW5pc2hlZE1lc3NhZ2VUb0Nv
bnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkU3RhcnRQ
cm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OmNyZWF0ZVByb2ZpbGVIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFVzZXJJbml0aWF0ZWRQcm9m
aWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c3RvcFVzZXJJ
bml0aWF0ZWRQcm9maWxpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmg6CisgICAgICAgICogcGFnZS9Db25zb2xlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnNvbGU6OnByb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6cHJvZmlsZUVuZCk6
CisgICAgICAgICogcGFnZS9Db25zb2xlLmg6CisgICAgICAgICogcGFnZS9Db25zb2xlLmlkbDoK
KwogMjAxMC0wMi0wMiAgU2hpbmljaGlybyBIYW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMjY4MGE4MC4uOWY5
NzNkYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCkBAIC00ODQsNiArNDg0LDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEluc3RhbmNlLmggXAogCVdlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0T2JqZWN0LmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3Qu
aCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmggXAorCVdlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFByb2ZpbGVyLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oIFwK
IAlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZVByb3ZpZGVyLmggXAogCVdlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZDgyYTRlMS4uZWQ0OWU4MyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTY3NCw3ICs2NzQsNiBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENT
U1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9j
dXN0b20vVjhDU1NTdHlsZVNoZWV0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q1NTVmFsdWVDdXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0
b20vVjhDdXN0b21FdmVudExpc3RlbmVyLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tRXZlbnRMaXN0ZW5lci5oJywKQEAgLTgxMCw2ICs4MDksOSBAQAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdEluc3RhbmNlLmgnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Nj
cmlwdE9iamVjdC5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlLmgn
LAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcCcsCisgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuaCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvU2NyaXB0U2NvcGUuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRT
Y29wZS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRTb3VyY2VDb2RlLmgnLApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5k
ZXggN2FkYTczOS4uZGEyM2E3MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysg
Yi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0zNDYsNiArMzQ2LDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgXAogICAgIGJpbmRpbmdzL2pz
L1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgXAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5j
cHAgXAorICAgIGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNwcCBcCiAgICAgYmluZGluZ3Mv
anMvU2NyaXB0U3RhdGUuY3BwIFwKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAgXAog
ICAgIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYmI4YmFmLi42Y2VhZDRmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQ1NSw2ICsyNDU1LDkgQEAK
IAkJOTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdERDREODQwRkRGNEQ2RDAwRUNG
OUE0IC8qIFhTU0F1ZGl0b3IuY3BwICovOyB9OwogCQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5QTQg
LyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTdERDREODUwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCAqLzsgfTsKIAkJ
OTdFRjdERkUxMDdFNTVCNzAwRDdDNDlDIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RUY3REZEMTA3RTU1
QjcwMEQ3QzQ5QyAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5jcHAgKi87IH07CisJCTlGNzIzMDRG
MTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjcyMzA0QzExMTg0QjQxMDBBRDAxMjYgLyogU2Ny
aXB0UHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTlGNzIzMDUwMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjcyMzA0RDExMTg0
QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZXIuY3BwICovOyB9OworCQk5RjcyMzA1MTExMTg0
QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNzIzMDRFMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQ
cm9maWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUExN0M4MTIyMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3QzgxMjAwRjJB
NUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgKi87IH07CiAJCUExN0M4MTIz
MEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExN0M4MTIxMEYyQTVDRjcwMDVEQUFFQiAv
KiBIVE1MRWxlbWVudEZhY3RvcnkuaCAqLzsgfTsKIAkJQTcxODc2MEUwQjJBMTIwMTAwQTE2RUNF
IC8qIERyYWdBY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNzE4NzYwRDBCMkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzc4NSw2ICs3Nzg4
LDkgQEAKIAkJOTdERDREODQwRkRGNEQ2RDAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWFNTQXVkaXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3REQ0RDg1MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRp
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhTU0F1ZGl0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdFRjdERkQxMDdFNTVCNzAwRDdDNDlDIC8qIFNj
cmlwdENvbnRyb2xsZXJCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNjcmlwdENvbnRyb2xsZXJCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOUY3MjMwNEMxMTE4NEI0MTAwQUQwMTI2IC8qIFNjcmlwdFByb2ZpbGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0UHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5RjcyMzA0RDExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0UHJvZmlsZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5RjcyMzA0RTExMTg0QjQxMDBBRDAx
MjYgLyogU2NyaXB0UHJvZmlsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2NyaXB0UHJvZmlsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3QzgxMjAw
RjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRWxlbWVudEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBMTdDODEyMTBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1l
bnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxFbGVtZW50
RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4NzYwRDBCMkExMjAx
MDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRHJhZ0FjdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NjE3LDYg
KzE0NjIzLDkgQEAKIAkJCQk5MzRDQzExNjBFRENBQzczMDBBNjU4RjIgLyogU2NyaXB0SW5zdGFu
Y2UuaCAqLywKIAkJCQk0MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmNw
cCAqLywKIAkJCQk0MUYwNjZFMjBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmggKi8s
CisJCQkJOUY3MjMwNEMxMTE4NEI0MTAwQUQwMTI2IC8qIFNjcmlwdFByb2ZpbGUuaCAqLywKKwkJ
CQk5RjcyMzA0RDExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZXIuY3BwICovLAorCQkJ
CTlGNzIzMDRFMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlci5oICovLAogCQkJCTkz
NENDMTA5MEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VDb2RlLmggKi8sCiAJCQkJQ0U1
NEZEMzcxMDE2RDlBNjAwOEI0NEM4IC8qIFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi8sCiAJCQkJ
NDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCAqLywKQEAgLTE4NDc5
LDYgKzE4NDg4LDggQEAKIAkJCQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODREMEM0MDYxMTE1RjFFQTAwMThBQTM0IC8qIEFmZmlu
ZVRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjcxRkU2REYxMTA5MUNCMzAwREFFRjc3
IC8qIFByaW50Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUY3MjMwNEYxMTE4NEI0MTAw
QUQwMTI2IC8qIFNjcmlwdFByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTlGNzIzMDUxMTEx
ODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMDY1
NSw2ICsyMDY2Niw3IEBACiAJCQkJOTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODREMEM0MDQxMTE1RjFENDAwMThBQTM0IC8qIEFm
ZmluZVRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNzc2RDQzRDExMDQ1Mjc1MDBC
RUIwRUMgLyogUHJpbnRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTlGNzIzMDUwMTEx
ODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAppbmRleCBlNTM5MDQyLi44YTkx
OGEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5j
cHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC0x
NDIsNiArMTQyLDcgQEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyV2luLmNwcCIKICNpbmNs
dWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmNwcCIKICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNh
bGwuY3BwIgorI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmNwcCIKICNpbmNsdWRlICJTY3JpcHRT
dGF0ZS5jcHAiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCIKICNpbmNsdWRl
ICJXb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb25zb2xl
Q3VzdG9tLmNwcAppbmRleCA4MzY2YjM5Li5jNGI3ZTE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NvbnNvbGVDdXN0b20uY3BwCkBAIC01MSwyMiArNTEsNiBAQCBKU1ZhbHVlIEpTQ29uc29sZTo6
cHJvZmlsZXMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIHJldHVybiBjb25zdHJ1Y3RBcnJh
eShleGVjLCBsaXN0KTsKIH0KIAotSlNWYWx1ZSBKU0NvbnNvbGU6OnByb2ZpbGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQotewotICAgIFNjcmlwdENhbGxTdGFjayBjYWxs
U3RhY2soZXhlYywgYXJncywgMSk7Ci0gICAgY29uc3QgVVN0cmluZyB0aXRsZSA9IHZhbHVlVG9T
dHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soZXhlYywgYXJncy5hdCgwKSk7Ci0gICAgaW1w
bCgpLT5wcm9maWxlKHRpdGxlLCAmY2FsbFN0YWNrKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKLX0KLQotSlNWYWx1ZSBKU0NvbnNvbGU6OnByb2ZpbGVFbmQoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBBcmdMaXN0JiBhcmdzKQotewotICAgIFNjcmlwdENhbGxTdGFjayBjYWxsU3RhY2soZXhl
YywgYXJncywgMSk7Ci0gICAgY29uc3QgVVN0cmluZyB0aXRsZSA9IHZhbHVlVG9TdHJpbmdXaXRo
VW5kZWZpbmVkT3JOdWxsQ2hlY2soZXhlYywgYXJncy5hdCgwKSk7Ci0gICAgaW1wbCgpLT5wcm9m
aWxlRW5kKHRpdGxlLCAmY2FsbFN0YWNrKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0K
LQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQ
cm9maWxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzIwOTVlMwotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5oCkBAIC0w
LDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JpcHRQcm9maWxlX2gKKyNkZWZpbmUgU2Ny
aXB0UHJvZmlsZV9oCisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyNpbmNsdWRl
IDxwcm9maWxlci9Qcm9maWxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBK
U0M6OlByb2ZpbGUgU2NyaXB0UHJvZmlsZTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKKyNlbmRpZiAvLyBTY3JpcHRQ
cm9maWxlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIu
Y3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzEzOWRiZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
CisKKyNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgorI2luY2x1ZGUgPHByb2ZpbGVyL1Byb2Zp
bGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBTY3JpcHRQcm9maWxlcjo6c3Rh
cnQoU2NyaXB0U3RhdGUqIHN0YXRlLCBjb25zdCBTdHJpbmcmIHRpdGxlKQoreworICAgIEpTQzo6
UHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0YXJ0UHJvZmlsaW5nKHN0YXRlLCB0aXRsZSk7Cit9CisK
K1Bhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4gU2NyaXB0UHJvZmlsZXI6OnN0b3AoU2NyaXB0U3Rh
dGUqIHN0YXRlLCBjb25zdCBTdHJpbmcmIHRpdGxlKQoreworICAgIHJldHVybiBKU0M6OlByb2Zp
bGVyOjpwcm9maWxlcigpLT5zdG9wUHJvZmlsaW5nKHN0YXRlLCB0aXRsZSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VS
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5oIGIvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmE4NmJjZmIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFByb2ZpbGVyLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNj
cmlwdFByb2ZpbGVyX2gKKyNkZWZpbmUgU2NyaXB0UHJvZmlsZXJfaAorCisjaWYgRU5BQkxFKEpB
VkFTQ1JJUFRfREVCVUdHRVIpCisjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgorI2luY2x1ZGUg
IlNjcmlwdFN0YXRlLmgiCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JpcHRQcm9maWxlciA6IHB1YmxpYyBOb25jb3B5YWJs
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgc3RhcnQoU2NyaXB0U3RhdGUqIHN0YXRlLCBj
b25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JpcHRQcm9maWxl
PiBzdG9wKFNjcmlwdFN0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSk7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKKworI2VuZGlmIC8vIFNjcmlwdFByb2ZpbGVyX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDU5ZmZmZmMuLmVkYmJkMGMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMjA1Niw3ICsyMDU2
LDYgQEAgc3ViIEhhc0N1c3RvbVRvVjhJbXBsZW1lbnRhdGlvbiB7CiAgICAgcmV0dXJuIDEgaWYg
JGludGVyZmFjZU5hbWUgZXEgIkJhckluZm8iOwogICAgIHJldHVybiAxIGlmICRpbnRlcmZhY2VO
YW1lIGVxICJDU1NTdHlsZVNoZWV0IjsKICAgICByZXR1cm4gMSBpZiAkaW50ZXJmYWNlTmFtZSBl
cSAiQ2FudmFzUGl4ZWxBcnJheSI7Ci0gICAgcmV0dXJuIDEgaWYgJGludGVyZmFjZU5hbWUgZXEg
IkNvbnNvbGUiOwogICAgIHJldHVybiAxIGlmICRpbnRlcmZhY2VOYW1lIGVxICJET01TZWxlY3Rp
b24iOwogICAgIHJldHVybiAxIGlmICRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciOwogICAg
IHJldHVybiAxIGlmICRpbnRlcmZhY2VOYW1lIGVxICJFbGVtZW50IjsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZS5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRQcm9maWxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ2MzZl
NgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZS5o
CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JpcHRQcm9maWxlX2gKKyNkZWZpbmUgU2NyaXB0
UHJvZmlsZV9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFNjcmlwdFByb2ZpbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTY3JpcHRQ
cm9maWxlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCkgeworICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTY3JpcHRQcm9maWxlKHRpdGxlLCB1aWQpKTsKKyAgICB9CisgICAgdmly
dHVhbCB+U2NyaXB0UHJvZmlsZSgpIHt9CisKKyAgICBjb25zdCBTdHJpbmcmIHRpdGxlKCkgY29u
c3QgeyByZXR1cm4gbV90aXRsZTsgfQorICAgIHVuc2lnbmVkIGludCB1aWQoKSBjb25zdCB7IHJl
dHVybiBtX3VpZDsgfQorCitwcm90ZWN0ZWQ6CisgICAgU2NyaXB0UHJvZmlsZShjb25zdCBTdHJp
bmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpCisgICAgICAgIDogbV90aXRsZSh0aXRsZSkKKyAgICAg
ICAgLCBtX3VpZCh1aWQpCisgICAge30KKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV90aXRsZTsK
KyAgICB1bnNpZ25lZCBpbnQgbV91aWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBTY3JpcHRQcm9maWxlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0UHJvZmlsZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTViNmIwNAotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwCkBAIC0w
LDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVy
LmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQg
U2NyaXB0UHJvZmlsZXI6OnN0YXJ0KFNjcmlwdFN0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiB0
aXRsZSkKK3sKKyAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CisgICAgdjg6OkNvbnRleHQ6OlNj
b3BlIGNvbnRleHRfc2NvcGUodjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKSk7CisgICAgdjg6OlY4
OjpSZXN1bWVQcm9maWxlcigpOworfQorCitQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IFNjcmlw
dFByb2ZpbGVyOjpzdG9wKFNjcmlwdFN0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkK
K3sKKyAgICB2ODo6Vjg6OlBhdXNlUHJvZmlsZXIoKTsKKyAgICByZXR1cm4gMDsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRQcm9maWxlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMmNjMzIKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmgKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFNjcmlwdFByb2ZpbGVyX2gKKyNkZWZpbmUgU2NyaXB0UHJvZmlsZXJfaAorCisjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCisjaW5j
bHVkZSAiU2NyaXB0U3RhdGUuaCIKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdFByb2ZpbGVyIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBzdGFydChTY3JpcHRTdGF0ZSogc3Rh
dGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlwdFBy
b2ZpbGU+IHN0b3AoU2NyaXB0U3RhdGUqIHN0YXRlLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNjcmlwdFByb2ZpbGVyX2gK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5j
cHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWNjMjIyLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlY4Q29uc29sZS5oIgot
Ci0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKLSNpbmNs
dWRlICJWOFByb3h5LmgiCi0jaW5jbHVkZSA8djguaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjpwcm9maWxlQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoImNvbnNvbGUucHJvZmlsZSgp
Iik7Ci0gICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBj
b250ZXh0X3Njb3BlKHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCkpOwotICAgIHY4OjpWODo6UmVz
dW1lUHJvZmlsZXIoKTsKLSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotfQotCi12ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjpwcm9maWxlRW5kQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoImNvbnNvbGUucHJvZmlsZUVuZCgpIik7
Ci0gICAgdjg6OlY4OjpQYXVzZVByb2ZpbGVyKCk7Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKLX0KLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoQ29uc29sZSogaW1wbCkKLXsKLSAg
ICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiB2ODo6TnVsbCgpOwotICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IGdldERPTU9iamVjdE1hcCgpLmdldChpbXBsKTsKLSAgICBp
ZiAod3JhcHBlci5Jc0VtcHR5KCkpIHsKLSAgICAgICAgd3JhcHBlciA9IFY4Q29uc29sZTo6d3Jh
cChpbXBsKTsKLSAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKLSAgICAgICAgICAgIFY4
RE9NV3JhcHBlcjo6c2V0SGlkZGVuV2luZG93UmVmZXJlbmNlKGltcGwtPmZyYW1lKCksIFY4RE9N
V2luZG93Ojpjb25zb2xlSW5kZXgsIHdyYXBwZXIpOwotICAgIH0KLSAgICByZXR1cm4gd3JhcHBl
cjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAppbmRleCA1YWIxMzU0Li5iZTg2YzBlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNzMsNiArNzMsOCBAQAogI2luY2x1ZGUg
IlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgogI2lu
Y2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKKyNpbmNs
dWRlICJTY3JpcHRQcm9maWxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFN0cmluZy5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTk4LDEwICsx
MDAsNyBAQAogI2luY2x1ZGUgIkphdmFTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIkpT
SmF2YVNjcmlwdENhbGxGcmFtZS5oIgogCi0jaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZS5oPgot
I2luY2x1ZGUgPHByb2ZpbGVyL1Byb2ZpbGVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2su
aD4KLSNpbmNsdWRlIDxydW50aW1lL1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDxydW50aW1l
L1VTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTEzNDUsMTIgKzEzNDQsMTIg
QEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjptb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQg
eSkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjphZGRQcm9maWxlKFBhc3NSZWZQdHI8UHJvZmlsZT4gcHJwUHJvZmls
ZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMKQordm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjphZGRQcm9maWxlKFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4g
cHJwUHJvZmlsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwp
CiB7CiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxQ
cm9maWxlPiBwcm9maWxlID0gcHJwUHJvZmlsZTsKKyAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4g
cHJvZmlsZSA9IHBycFByb2ZpbGU7CiAgICAgbV9wcm9maWxlcy5hZGQocHJvZmlsZS0+dWlkKCks
IHByb2ZpbGUpOwogCiAgICAgaWYgKG1fZnJvbnRlbmQpIHsKQEAgLTEzNjEsMzAgKzEzNjAsMzAg
QEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRQcm9maWxlKFBhc3NSZWZQdHI8UHJvZmls
ZT4gcHJwUHJvZmlsZSwgdW5zaWduZWQgbGkKICAgICBhZGRQcm9maWxlRmluaXNoZWRNZXNzYWdl
VG9Db25zb2xlKHByb2ZpbGUsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6YWRkUHJvZmlsZUZpbmlzaGVkTWVzc2FnZVRvQ29uc29sZShQYXNz
UmVmUHRyPFByb2ZpbGU+IHBycFByb2ZpbGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFVT
dHJpbmcmIHNvdXJjZVVSTCkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkUHJvZmlsZUZp
bmlzaGVkTWVzc2FnZVRvQ29uc29sZShQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHBycFByb2Zp
bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAg
IFJlZlB0cjxQcm9maWxlPiBwcm9maWxlID0gcHJwUHJvZmlsZTsKKyAgICBSZWZQdHI8U2NyaXB0
UHJvZmlsZT4gcHJvZmlsZSA9IHBycFByb2ZpbGU7CiAKLSAgICBKU0M6OlN0cmluZ0J1aWxkZXIg
bWVzc2FnZTsKLSAgICBtZXNzYWdlLmFwcGVuZCgiUHJvZmlsZSBcIndlYmtpdC1wcm9maWxlOi8v
Iik7Ci0gICAgbWVzc2FnZS5hcHBlbmQoKFVTdHJpbmcpZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVl
bmNlcyhDUFVQcm9maWxlVHlwZSkpOwotICAgIG1lc3NhZ2UuYXBwZW5kKCIvIik7Ci0gICAgbWVz
c2FnZS5hcHBlbmQoKFVTdHJpbmcpZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhwcm9maWxl
LT50aXRsZSgpKSk7Ci0gICAgbWVzc2FnZS5hcHBlbmQoIiMiKTsKLSAgICBtZXNzYWdlLmFwcGVu
ZChVU3RyaW5nOjpmcm9tKHByb2ZpbGUtPnVpZCgpKSk7Ci0gICAgbWVzc2FnZS5hcHBlbmQoIlwi
IGZpbmlzaGVkLiIpOwotICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBM
b2dNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBtZXNzYWdlLnJlbGVhc2UoKSwgbGluZU51
bWJlciwgc291cmNlVVJMKTsKKyAgICBTdHJpbmcgbWVzc2FnZTsKKyAgICBtZXNzYWdlICs9ICJQ
cm9maWxlIFwid2Via2l0LXByb2ZpbGU6Ly8iOworICAgIG1lc3NhZ2UgKz0gZW5jb2RlV2l0aFVS
TEVzY2FwZVNlcXVlbmNlcyhDUFVQcm9maWxlVHlwZSk7CisgICAgbWVzc2FnZSArPSAiLyI7Cisg
ICAgbWVzc2FnZSArPSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHByb2ZpbGUtPnRpdGxl
KCkpOworICAgIG1lc3NhZ2UgKz0gIiMiOworICAgIG1lc3NhZ2UgKz0gU3RyaW5nOjpudW1iZXIo
cHJvZmlsZS0+dWlkKCkpOworICAgIG1lc3NhZ2UgKz0gIlwiIGZpbmlzaGVkLiI7CisgICAgYWRk
TWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNz
YWdlTGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKGNvbnN0
IFVTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBVU3RyaW5nJiBzb3Vy
Y2VVUkwpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZFN0YXJ0UHJvZmlsaW5nTWVzc2Fn
ZVRvQ29uc29sZShjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAgICBKU0M6OlN0cmluZ0J1aWxkZXIgbWVzc2FnZTsK
LSAgICBtZXNzYWdlLmFwcGVuZCgiUHJvZmlsZSBcIndlYmtpdC1wcm9maWxlOi8vIik7Ci0gICAg
bWVzc2FnZS5hcHBlbmQoZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhDUFVQcm9maWxlVHlw
ZSkpOwotICAgIG1lc3NhZ2UuYXBwZW5kKCIvIik7Ci0gICAgbWVzc2FnZS5hcHBlbmQoZW5jb2Rl
V2l0aFVSTEVzY2FwZVNlcXVlbmNlcyh0aXRsZSkpOwotICAgIG1lc3NhZ2UuYXBwZW5kKCIjMFwi
IHN0YXJ0ZWQuIik7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExv
Z01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UucmVsZWFzZSgpLCBsaW5lTnVt
YmVyLCBzb3VyY2VVUkwpOworICAgIFN0cmluZyBtZXNzYWdlOworICAgIG1lc3NhZ2UgKz0gIlBy
b2ZpbGUgXCJ3ZWJraXQtcHJvZmlsZTovLyI7CisgICAgbWVzc2FnZSArPSBlbmNvZGVXaXRoVVJM
RXNjYXBlU2VxdWVuY2VzKENQVVByb2ZpbGVUeXBlKTsKKyAgICBtZXNzYWdlICs9ICIvIjsKKyAg
ICBtZXNzYWdlICs9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXModGl0bGUpOworICAgIG1l
c3NhZ2UgKz0gIiMwXCIgc3RhcnRlZC4iOworICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNz
YWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5l
TnVtYmVyLCBzb3VyY2VVUkwpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmdldFBy
b2ZpbGVIZWFkZXJzKGxvbmcgY2FsbElkKQpAQCAtMTQwOCwyNiArMTQwNywyMSBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OmdldFByb2ZpbGUobG9uZyBjYWxsSWQsIHVuc2lnbmVkIHVpZCkK
ICAgICAgICAgbV9mcm9udGVuZC0+ZGlkR2V0UHJvZmlsZShjYWxsSWQsIHRvSlMobV9zY3JpcHRT
dGF0ZSwgaXQtPnNlY29uZC5nZXQoKSkpOwogfQogCi1TY3JpcHRPYmplY3QgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6Y3JlYXRlUHJvZmlsZUhlYWRlcihjb25zdCBKU0M6OlByb2ZpbGUmIHByb2ZpbGUp
CitTY3JpcHRPYmplY3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlUHJvZmlsZUhlYWRlcihj
b25zdCBTY3JpcHRQcm9maWxlJiBwcm9maWxlKQogewogICAgIFNjcmlwdE9iamVjdCBoZWFkZXIg
PSBtX2Zyb250ZW5kLT5uZXdTY3JpcHRPYmplY3QoKTsKICAgICBoZWFkZXIuc2V0KCJ0aXRsZSIs
IHByb2ZpbGUudGl0bGUoKSk7CiAgICAgaGVhZGVyLnNldCgidWlkIiwgcHJvZmlsZS51aWQoKSk7
Ci0gICAgaGVhZGVyLnNldCgidHlwZUlkIiwgVVN0cmluZyhDUFVQcm9maWxlVHlwZSkpOworICAg
IGhlYWRlci5zZXQoInR5cGVJZCIsIFN0cmluZyhDUFVQcm9maWxlVHlwZSkpOwogICAgIHJldHVy
biBoZWFkZXI7CiB9CiAKLVVTdHJpbmcgSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0Q3VycmVudFVz
ZXJJbml0aWF0ZWRQcm9maWxlTmFtZShib29sIGluY3JlbWVudFByb2ZpbGVOdW1iZXIgPSBmYWxz
ZSkKK1N0cmluZyBJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRDdXJyZW50VXNlckluaXRpYXRlZFBy
b2ZpbGVOYW1lKGJvb2wgaW5jcmVtZW50UHJvZmlsZU51bWJlciA9IGZhbHNlKQogewogICAgIGlm
IChpbmNyZW1lbnRQcm9maWxlTnVtYmVyKQogICAgICAgICBtX2N1cnJlbnRVc2VySW5pdGlhdGVk
UHJvZmlsZU51bWJlciA9IG1fbmV4dFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyKys7ICAgICAg
ICAKIAotICAgIEpTQzo6U3RyaW5nQnVpbGRlciB0aXRsZTsKLSAgICB0aXRsZS5hcHBlbmQoVXNl
ckluaXRpYXRlZFByb2ZpbGVOYW1lKTsKLSAgICB0aXRsZS5hcHBlbmQoIi4iKTsKLSAgICB0aXRs
ZS5hcHBlbmQoVVN0cmluZzo6ZnJvbShtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJl
cikpOwotICAgIAotICAgIHJldHVybiB0aXRsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFN0cmlu
Zzo6Zm9ybWF0KCIlcy4lZCIsIFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSwgbV9jdXJyZW50VXNl
ckluaXRpYXRlZFByb2ZpbGVOdW1iZXIpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OnN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZ1Nvb24oKQpAQCAtMTQ0NywxMiArMTQ0MSwxMiBA
QCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZyhU
aW1lcjxJbnNwZWN0b3JDb250cm9sbGVyPgogCiAgICAgbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVk
UHJvZmlsZSA9IHRydWU7CiAKLSAgICBVU3RyaW5nIHRpdGxlID0gZ2V0Q3VycmVudFVzZXJJbml0
aWF0ZWRQcm9maWxlTmFtZSh0cnVlKTsKKyAgICBTdHJpbmcgdGl0bGUgPSBnZXRDdXJyZW50VXNl
ckluaXRpYXRlZFByb2ZpbGVOYW1lKHRydWUpOwogCiAgICAgRXhlY1N0YXRlKiBzY3JpcHRTdGF0
ZSA9IHRvSlNET01XaW5kb3cobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSwgZGVidWdnZXJX
b3JsZCgpKS0+Z2xvYmFsRXhlYygpOwotICAgIFByb2ZpbGVyOjpwcm9maWxlcigpLT5zdGFydFBy
b2ZpbGluZyhzY3JpcHRTdGF0ZSwgdGl0bGUpOworICAgIFNjcmlwdFByb2ZpbGVyOjpzdGFydChz
Y3JpcHRTdGF0ZSwgdGl0bGUpOwogCi0gICAgYWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25z
b2xlKHRpdGxlLCAwLCBVU3RyaW5nKCkpOworICAgIGFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRv
Q29uc29sZSh0aXRsZSwgMCwgU3RyaW5nKCkpOwogCiAgICAgdG9nZ2xlUmVjb3JkQnV0dG9uKHRy
dWUpOwogfQpAQCAtMTQ2NCwxMiArMTQ1OCwxMiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OnN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCkKIAogICAgIG1fcmVjb3JkaW5nVXNlckluaXRp
YXRlZFByb2ZpbGUgPSBmYWxzZTsKIAotICAgIFVTdHJpbmcgdGl0bGUgPSBnZXRDdXJyZW50VXNl
ckluaXRpYXRlZFByb2ZpbGVOYW1lKCk7CisgICAgU3RyaW5nIHRpdGxlID0gZ2V0Q3VycmVudFVz
ZXJJbml0aWF0ZWRQcm9maWxlTmFtZSgpOwogCiAgICAgRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9
IHRvSlNET01XaW5kb3cobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSwgZGVidWdnZXJXb3Js
ZCgpKS0+Z2xvYmFsRXhlYygpOwotICAgIFJlZlB0cjxQcm9maWxlPiBwcm9maWxlID0gUHJvZmls
ZXI6OnByb2ZpbGVyKCktPnN0b3BQcm9maWxpbmcoc2NyaXB0U3RhdGUsIHRpdGxlKTsKKyAgICBS
ZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSA9IFNjcmlwdFByb2ZpbGVyOjpzdG9wKHNjcmlw
dFN0YXRlLCB0aXRsZSk7CiAgICAgaWYgKHByb2ZpbGUpCi0gICAgICAgIGFkZFByb2ZpbGUocHJv
ZmlsZSwgMCwgVVN0cmluZygpKTsKKyAgICAgICAgYWRkUHJvZmlsZShwcm9maWxlLCAwLCBTdHJp
bmcoKSk7CiAKICAgICB0b2dnbGVSZWNvcmRCdXR0b24oZmFsc2UpOwogfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDg2MGJmNDkuLmY4Y2FhNjQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNjcmlwdEFycmF5LmgiCiAjaW5jbHVk
ZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1ZGUg
IlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTdHJp
bmdIYXNoLmgiCkBAIC01MCw3ICs1MSw2IEBACiAjaW5jbHVkZSAiSmF2YVNjcmlwdERlYnVnTGlz
dGVuZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci0gICAgY2xhc3MgUHJvZmlsZTsKICAgICBjbGFz
cyBVU3RyaW5nOwogfQogI2VuZGlmCkBAIC0yMjAsMTMgKzIyMCwxMyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBtYXJrVGltZWxpbmUoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsgCiAKICNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICB2b2lkIGFkZFByb2ZpbGUoUGFzc1JlZlB0cjxKU0M6
OlByb2ZpbGU+LCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBKU0M6OlVTdHJpbmcmIHNvdXJj
ZVVSTCk7Ci0gICAgdm9pZCBhZGRQcm9maWxlRmluaXNoZWRNZXNzYWdlVG9Db25zb2xlKFBhc3NS
ZWZQdHI8SlNDOjpQcm9maWxlPiwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgSlNDOjpVU3Ry
aW5nJiBzb3VyY2VVUkwpOwotICAgIHZvaWQgYWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25z
b2xlKGNvbnN0IEpTQzo6VVN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0
IEpTQzo6VVN0cmluZyYgc291cmNlVVJMKTsKKyAgICB2b2lkIGFkZFByb2ZpbGUoUGFzc1JlZlB0
cjxTY3JpcHRQcm9maWxlPiwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpOworICAgIHZvaWQgYWRkUHJvZmlsZUZpbmlzaGVkTWVzc2FnZVRvQ29uc29sZShQYXNz
UmVmUHRyPFNjcmlwdFByb2ZpbGU+LCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCk7CisgICAgdm9pZCBhZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUo
Y29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwpOwogCiAgICAgYm9vbCBpc1JlY29yZGluZ1VzZXJJbml0aWF0ZWRQcm9maWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZTsgfQogCi0gICAg
SlNDOjpVU3RyaW5nIGdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUoYm9vbCBpbmNy
ZW1lbnRQcm9maWxlTnVtYmVyKTsKKyAgICBTdHJpbmcgZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQ
cm9maWxlTmFtZShib29sIGluY3JlbWVudFByb2ZpbGVOdW1iZXIpOwogICAgIHZvaWQgc3RhcnRV
c2VySW5pdGlhdGVkUHJvZmlsaW5nKFRpbWVyPEluc3BlY3RvckNvbnRyb2xsZXI+KiA9IDApOwog
ICAgIHZvaWQgc3RvcFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKTsKIApAQCAtMjY4LDE0ICsyNjgs
MTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBTdHJpbmcmIGNvb2tp
ZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQotICAgIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCBpbnQsIFJlZlB0cjxKU0M6OlBy
b2ZpbGU+ID4gUHJvZmlsZXNNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkIGludCwg
UmVmUHRyPFNjcmlwdFByb2ZpbGU+ID4gUHJvZmlsZXNNYXA7CiAKICAgICB2b2lkIHN0YXJ0VXNl
ckluaXRpYXRlZFByb2ZpbGluZ1Nvb24oKTsKICAgICB2b2lkIHRvZ2dsZVJlY29yZEJ1dHRvbihi
b29sKTsKICAgICB2b2lkIGVuYWJsZURlYnVnZ2VyRnJvbUZyb250ZW5kKGJvb2wgYWx3YXlzKTsK
ICAgICB2b2lkIGdldFByb2ZpbGVIZWFkZXJzKGxvbmcgY2FsbElkKTsKICAgICB2b2lkIGdldFBy
b2ZpbGUobG9uZyBjYWxsSWQsIHVuc2lnbmVkIHVpZCk7Ci0gICAgU2NyaXB0T2JqZWN0IGNyZWF0
ZVByb2ZpbGVIZWFkZXIoY29uc3QgSlNDOjpQcm9maWxlJiBwcm9maWxlKTsKKyAgICBTY3JpcHRP
YmplY3QgY3JlYXRlUHJvZmlsZUhlYWRlcihjb25zdCBTY3JpcHRQcm9maWxlJiBwcm9maWxlKTsK
ICNlbmRpZgogI2lmIEVOQUJMRShEQVRBQkFTRSkKICAgICB2b2lkIHNlbGVjdERhdGFiYXNlKERh
dGFiYXNlKiBkYXRhYmFzZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAg
Yi9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKaW5kZXggMjI3M2E1ZS4uMDI4MGVmNiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9Db25zb2xl
LmNwcApAQCAtNDEsMTEgKzQxLDkgQEAKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgogCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0j
aW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZXIuaD4KLSNlbmRpZgotCiAjaW5jbHVkZSAiU2NyaXB0
Q2FsbFN0YWNrLmgiCisjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgorI2luY2x1ZGUgIlNjcmlw
dFByb2ZpbGVyLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFy
YW0uaD4KIApAQCAtMzE0LDM4ICszMTIsMzggQEAgU3RyaW5nIENvbnNvbGU6Omxhc3RXTUxFcnJv
ck1lc3NhZ2UoKSBjb25zdAogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgfHwgVVNFKFY4KQogCi12b2lk
IENvbnNvbGU6OnByb2ZpbGUoY29uc3QgSlNDOjpVU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0
YWNrKiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OnByb2ZpbGUoY29uc3QgU3RyaW5nJiB0aXRs
ZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCiB7CiAgICAgUGFnZSogcGFnZSA9IHRoaXMt
PnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCisjaWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgVVNFKEpTQykKICAgICBJbnNwZWN0
b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwog
ICAgIC8vIEZJWE1FOiBsb2cgYSBjb25zb2xlIG1lc3NhZ2Ugd2hlbiBwcm9maWxpbmcgaXMgZGlz
YWJsZWQuCiAgICAgaWYgKCFjb250cm9sbGVyLT5wcm9maWxlckVuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogI2VuZGlmCiAKLSAgICBKU0M6OlVTdHJpbmcgcmVzb2x2ZWRUaXRsZSA9IHRpdGxl
OworICAgIFN0cmluZyByZXNvbHZlZFRpdGxlID0gdGl0bGU7CiAgICAgaWYgKHRpdGxlLmlzTnVs
bCgpKSAgIC8vIG5vIHRpdGxlIHNvIGdpdmUgaXQgdGhlIG5leHQgdXNlciBpbml0aWF0ZWQgcHJv
ZmlsZSB0aXRsZS4KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQorI2lmIEVOQUJMRShJTlNQRUNUT1Ip
ICYmIFVTRShKU0MpCiAgICAgICAgIHJlc29sdmVkVGl0bGUgPSBjb250cm9sbGVyLT5nZXRDdXJy
ZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKHRydWUpOwogI2Vsc2UKICAgICAgICAgcmVzb2x2
ZWRUaXRsZSA9ICIiOwogI2VuZGlmCiAKLSAgICBKU0M6OlByb2ZpbGVyOjpwcm9maWxlcigpLT5z
dGFydFByb2ZpbGluZyhjYWxsU3RhY2stPnN0YXRlKCksIHJlc29sdmVkVGl0bGUpOworICAgIFNj
cmlwdFByb2ZpbGVyOjpzdGFydChjYWxsU3RhY2stPnN0YXRlKCksIHJlc29sdmVkVGl0bGUpOwog
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBVU0UoSlND
KQogICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxTdGFjay0+YXQo
MCk7CiAgICAgY29udHJvbGxlci0+YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKHJl
c29sdmVkVGl0bGUsIGxhc3RDYWxsZXIubGluZU51bWJlcigpLCBsYXN0Q2FsbGVyLnNvdXJjZVVS
TCgpKTsKICNlbmRpZgogfQogCi12b2lkIENvbnNvbGU6OnByb2ZpbGVFbmQoY29uc3QgSlNDOjpV
U3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6
OnByb2ZpbGVFbmQoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3Rh
Y2spCiB7CiAgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCkBA
IC0zNTQsMTkgKzM1MiwxOSBAQCB2b2lkIENvbnNvbGU6OnByb2ZpbGVFbmQoY29uc3QgSlNDOjpV
U3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCiAgICAgaWYgKCF0aGlz
LT5wYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCisjaWYg
RU5BQkxFKElOU1BFQ1RPUikgJiYgVVNFKEpTQykKICAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBj
b250cm9sbGVyID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwogICAgIGlmICghY29udHJv
bGxlci0+cHJvZmlsZXJFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAg
UmVmUHRyPEpTQzo6UHJvZmlsZT4gcHJvZmlsZSA9IEpTQzo6UHJvZmlsZXI6OnByb2ZpbGVyKCkt
PnN0b3BQcm9maWxpbmcoY2FsbFN0YWNrLT5zdGF0ZSgpLCB0aXRsZSk7CisgICAgUmVmUHRyPFNj
cmlwdFByb2ZpbGU+IHByb2ZpbGUgPSBTY3JpcHRQcm9maWxlcjo6c3RvcChjYWxsU3RhY2stPnN0
YXRlKCksIHRpdGxlKTsKICAgICBpZiAoIXByb2ZpbGUpCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1fcHJvZmlsZXMuYXBwZW5kKHByb2ZpbGUpOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBVU0UoSlNDKQogICAgIGNvbnN0IFNjcmlwdENhbGxGcmFt
ZSYgbGFzdENhbGxlciA9IGNhbGxTdGFjay0+YXQoMCk7CiAgICAgY29udHJvbGxlci0+YWRkUHJv
ZmlsZShwcm9maWxlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5zb3VyY2VV
UkwoKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Db25zb2xlLmggYi9XZWJD
b3JlL3BhZ2UvQ29uc29sZS5oCmluZGV4IGVhM2ExNjEuLjM5NDNmOWUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGFnZS9Db25zb2xlLmgKKysrIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaApAQCAtMzEs
MTcgKzMxLDE1IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCi0jaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0jaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZS5oPgotI2Vu
ZGlmCisjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgogCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICB0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8SlNDOjpQcm9maWxlPiA+IFByb2ZpbGVzQXJyYXk7CisjaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpIHx8IFVTRShWOCkKKyAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8U2NyaXB0
UHJvZmlsZT4gPiBQcm9maWxlc0FycmF5OwogI2VuZGlmCiAKICAgICBjbGFzcyBGcmFtZTsKQEAg
LTk5LDkgKzk3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShXTUwpCiAgICAg
ICAgIFN0cmluZyBsYXN0V01MRXJyb3JNZXNzYWdlKCkgY29uc3Q7CiAjZW5kaWYKLSNpZiBFTkFC
TEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICAgICAgdm9pZCBwcm9maWxlKGNvbnN0IEpTQzo6
VVN0cmluZyYsIFNjcmlwdENhbGxTdGFjayopOwotICAgICAgICB2b2lkIHByb2ZpbGVFbmQoY29u
c3QgSlNDOjpVU3RyaW5nJiwgU2NyaXB0Q2FsbFN0YWNrKik7CisjaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpIHx8IFVTRShWOCkKKyAgICAgICAgdm9pZCBwcm9maWxlKGNvbnN0IFN0cmlu
ZyYsIFNjcmlwdENhbGxTdGFjayopOworICAgICAgICB2b2lkIHByb2ZpbGVFbmQoY29uc3QgU3Ry
aW5nJiwgU2NyaXB0Q2FsbFN0YWNrKik7CiAjZW5kaWYKICAgICAgICAgdm9pZCB0aW1lKGNvbnN0
IFN0cmluZyYpOwogICAgICAgICB2b2lkIHRpbWVFbmQoY29uc3QgU3RyaW5nJiwgU2NyaXB0Q2Fs
bFN0YWNrKik7CkBAIC0xMjIsNyArMTIwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBDb25zb2xlKEZyYW1lKik7CiAKICAgICAgICAgRnJhbWUqIG1fZnJhbWU7Ci0jaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpIHx8
IFVTRShWOCkKICAgICAgICAgUHJvZmlsZXNBcnJheSBtX3Byb2ZpbGVzOwogI2VuZGlmCiAgICAg
fTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Db25zb2xlLmlkbCBiL1dlYkNvcmUvcGFnZS9D
b25zb2xlLmlkbAppbmRleCBiOWMwYTU3Li4yOTAyMzViIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bh
Z2UvQ29uc29sZS5pZGwKKysrIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCkBAIC01MSw4ICs1
MSw4IEBAIG1vZHVsZSB3aW5kb3cgewogI2VuZGlmCiAKICNpZiBkZWZpbmVkKEVOQUJMRV9KQVZB
U0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiB8fCBkZWZpbmVk
KFY4X0JJTkRJTkcpICYmIFY4X0JJTkRJTkcKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBwcm9maWxl
KGluIFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgdGl0bGUp
OwotICAgICAgICBbQ3VzdG9tXSB2b2lkIHByb2ZpbGVFbmQoaW4gW0NvbnZlcnRVbmRlZmluZWRP
ck51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyB0aXRsZSk7CisgICAgICAgIFtDdXN0b21Bcmd1
bWVudEhhbmRsaW5nXSB2b2lkIHByb2ZpbGUoaW4gW0NvbnZlcnRVbmRlZmluZWRPck51bGxUb051
bGxTdHJpbmddIERPTVN0cmluZyB0aXRsZSk7CisgICAgICAgIFtDdXN0b21Bcmd1bWVudEhhbmRs
aW5nXSB2b2lkIHByb2ZpbGVFbmQoaW4gW0NvbnZlcnRVbmRlZmluZWRPck51bGxUb051bGxTdHJp
bmddIERPTVN0cmluZyB0aXRsZSk7CiAjZW5kaWYKIAogICAgICAgICB2b2lkIHRpbWUoaW4gW0Nv
bnZlcnRVbmRlZmluZWRPck51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyB0aXRsZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47941</attachid>
            <date>2010-02-02 09:22:53 -0800</date>
            <delta_ts>2010-02-03 01:25:40 -0800</delta_ts>
            <desc>proposed patch - fixed style violations</desc>
            <filename>unfork-prof-1-patch</filename>
            <type>text/plain</type>
            <size>45076</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
N2E1Yzc3Yi4uYjdkNzI1YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAxMC0wMi0wMiAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFN0YXJ0IHVuZm9ya2luZyBkZWJ1Z2dlciBhbmQgcHJvZmls
ZXIgY29kZS4KKworICAgICAgICBSZW1vdmUgY3VzdG9tIGltcGxlbWVudGF0aW9uIG9mIENvbnNv
bGUuCisgICAgICAgIEFkZCAnU2NyaXB0UHJvZmlsZXInIGFuZCAnU2NyaXB0UHJvZmlsZScgdHlw
ZXMuCisgICAgICAgIFN0YXJ0IG1pZ3JhdGlvbiB0byBlbmdpbmUtbmV1dHJhbCB0eXBlcyBpbiBJ
bnNwZWN0b3JDb250cm9sbGVyLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNDQ4MQorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Jp
bmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3Rv
bS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dFByb2ZpbGVyOjpzdG9wKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5o
OiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0UHJvZmlsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dFByb2ZpbGU6On5TY3JpcHRQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Zp
bGU6OnRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2ZpbGU6OnVpZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRQcm9maWxlOjpTY3JpcHRQcm9maWxlKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0UHJvZmlsZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2ZpbGVy
OjpzdG9wKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5oOiBBZGRlZC4K
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjphZGRQcm9maWxlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmFkZFByb2ZpbGVGaW5pc2hlZE1lc3NhZ2VUb0Nv
bnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkU3RhcnRQ
cm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OmNyZWF0ZVByb2ZpbGVIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFVzZXJJbml0aWF0ZWRQcm9m
aWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c3RvcFVzZXJJ
bml0aWF0ZWRQcm9maWxpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmg6CisgICAgICAgICogcGFnZS9Db25zb2xlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnNvbGU6OnByb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6cHJvZmlsZUVuZCk6
CisgICAgICAgICogcGFnZS9Db25zb2xlLmg6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAg
ICAoV2ViQ29yZTo6Q29uc29sZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6
OnByb2ZpbGVzKToKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuaWRsOgorCiAyMDEwLTAyLTAyICBT
aGluaWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAyNjgwYTgwLi45Zjk3M2RhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAg
LTQ4NCw2ICs0ODQsOSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0SW5zdGFuY2UuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3Qu
Y3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5oIFwKKwlXZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuaCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQ
cm9maWxlci5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaCBcCiAJ
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmggXAogCVdlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0U291cmNlUHJvdmlkZXIuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBkODJhNGUxLi5lZDQ5ZTgzIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjc0LDcgKzY3NCw2
IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q1NTU3R5bGVEZWNsYXJhdGlv
bkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1N0eWxl
U2hlZXRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDU1NW
YWx1ZUN1c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNv
bGVDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21C
aW5kaW5nLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUV2ZW50
TGlzdGVuZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21F
dmVudExpc3RlbmVyLmgnLApAQCAtODEwLDYgKzgwOSw5IEBACiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvU2NyaXB0SW5zdGFuY2UuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0
T2JqZWN0LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0LmgnLAor
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGUuaCcsCisgICAgICAgICAgICAn
YmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92
OC9TY3JpcHRQcm9maWxlci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRTY29w
ZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdFNjb3BlLmgnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdFNvdXJjZUNvZGUuaCcsCmRpZmYgLS1naXQgYS9XZWJD
b3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA3YWRhNzM5Li5kYTIz
YTcxIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KQEAgLTM0Niw2ICszNDYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBiaW5kaW5ncy9qcy9T
Y3JpcHRFdmVudExpc3RlbmVyLmNwcCBcCiAgICAgYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25D
YWxsLmNwcCBcCiAgICAgYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcCBcCisgICAgYmluZGlu
Z3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwIFwKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5j
cHAgXAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcCBcCiAgICAgYmluZGluZ3MvanMv
U2NoZWR1bGVkQWN0aW9uLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGZiYjhiYWYuLjZjZWFkNGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDU1LDYgKzI0NTUsOSBAQAogCQk5N0RENEQ4NjBGREY0
RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5N0RENEQ4NDBGREY0RDZEMDBFQ0Y5QTQgLyogWFNTQXVkaXRv
ci5jcHAgKi87IH07CiAJCTk3REQ0RDg3MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0RENEQ4NTBG
REY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oICovOyB9OwogCQk5N0VGN0RGRTEwN0U1NUI3
MDBEN0M0OUMgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdFRjdERkQxMDdFNTVCNzAwRDdDNDlDIC8qIFNj
cmlwdENvbnRyb2xsZXJCYXNlLmNwcCAqLzsgfTsKKwkJOUY3MjMwNEYxMTE4NEI0MTAwQUQwMTI2
IC8qIFNjcmlwdFByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlGNzIzMDRDMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOUY3MjMwNTAx
MTE4NEI0MTAwQUQwMTI2IC8qIFNjcmlwdFByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNzIzMDREMTExODRCNDEwMEFEMDEyNiAvKiBT
Y3JpcHRQcm9maWxlci5jcHAgKi87IH07CisJCTlGNzIzMDUxMTExODRCNDEwMEFEMDEyNiAvKiBT
Y3JpcHRQcm9maWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUY3MjMwNEUxMTE4NEI0MTAwQUQwMTI2IC8qIFNjcmlwdFByb2ZpbGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE3QzgxMjIwRjJB
NUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyog
SFRNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLzsgfTsKIAkJQTE3QzgxMjMwRjJBNUNGNzAwNURBQUVC
IC8qIEhUTUxFbGVtZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTE3QzgxMjEwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFj
dG9yeS5oICovOyB9OwogCQlBNzE4NzYwRTBCMkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTg3NjBE
MEIyQTEyMDEwMEExNkVDRSAvKiBEcmFnQWN0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03Nzg1LDYgKzc3ODgsOSBAQAogCQk5N0RENEQ4
NDBGREY0RDZEMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBYU1NBdWRpdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTdERDREODUwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFNTQXVkaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5N0VGN0RGRDEwN0U1NUI3MDBEN0M0OUMgLyogU2NyaXB0Q29udHJvbGxlckJh
c2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0Q29udHJv
bGxlckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5RjcyMzA0QzExMTg0
QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTY3JpcHRQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlG
NzIzMDREMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRQcm9maWxlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTlGNzIzMDRFMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9m
aWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRQcm9maWxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIg
LyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEhUTUxFbGVtZW50RmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUExN0M4MTIxMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MTg3NjBEMEIyQTEyMDEwMEExNkVDRSAvKiBEcmFn
QWN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEcmFnQWN0aW9ucy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ2MTcsNiArMTQ2MjMsOSBAQAogCQkJ
CTkzNENDMTE2MEVEQ0FDNzMwMEE2NThGMiAvKiBTY3JpcHRJbnN0YW5jZS5oICovLAogCQkJCTQx
RjA2NkUzMEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRPYmplY3QuY3BwICovLAogCQkJCTQxRjA2
NkUyMEY2NEJDRjYwMEEwN0VBQyAvKiBTY3JpcHRPYmplY3QuaCAqLywKKwkJCQk5RjcyMzA0QzEx
MTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZS5oICovLAorCQkJCTlGNzIzMDREMTExODRC
NDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlci5jcHAgKi8sCisJCQkJOUY3MjMwNEUxMTE4NEI0
MTAwQUQwMTI2IC8qIFNjcmlwdFByb2ZpbGVyLmggKi8sCiAJCQkJOTM0Q0MxMDkwRURCMjIzOTAw
QTY1OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCAqLywKIAkJCQlDRTU0RkQzNzEwMTZEOUE2MDA4
QjQ0QzggLyogU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQk0MTI3RDUzNjBGOEFBQjFE
MDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovLApAQCAtMTg0NzksNiArMTg0ODgsOCBAQAog
CQkJCTk3REQ0RDg3MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NEQwQzQwNjExMTVGMUVBMDAxOEFBMzQgLyogQWZmaW5lVHJhbnNmb3JtLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCNzFGRTZERjExMDkxQ0IzMDBEQUVGNzcgLyogUHJpbnRDb250ZXh0
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5RjcyMzA0RjExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0
UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUY3MjMwNTExMTE4NEI0MTAwQUQwMTI2IC8q
IFNjcmlwdFByb2ZpbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIwNjU1LDYgKzIwNjY2LDcgQEAK
IAkJCQk5N0RENEQ4NjBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4NEQwQzQwNDExMTVGMUQ0MDAxOEFBMzQgLyogQWZmaW5lVHJhbnNmb3JtLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUI3NzZENDNEMTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENv
bnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOUY3MjMwNTAxMTE4NEI0MTAwQUQwMTI2IC8q
IFNjcmlwdFByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpbmRpbmdzQWxsSW5PbmUuY3BwCmluZGV4IGU1MzkwNDIuLjhhOTE4YTMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKQEAgLTE0Miw2ICsxNDIsNyBAQAog
I2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXJXaW4uY3BwIgogI2luY2x1ZGUgIlNjcmlwdEV2ZW50
TGlzdGVuZXIuY3BwIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAiCisjaW5jbHVk
ZSAiU2NyaXB0UHJvZmlsZXIuY3BwIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmNwcCIKICNpbmNs
dWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbnNvbGVD
dXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwCmluZGV4
IDgzNjZiMzkuLmM0YjdlMTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb25z
b2xlQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5j
cHAKQEAgLTUxLDIyICs1MSw2IEBAIEpTVmFsdWUgSlNDb25zb2xlOjpwcm9maWxlcyhFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KGV4ZWMsIGxpc3QpOwog
fQogCi1KU1ZhbHVlIEpTQ29uc29sZTo6cHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFy
Z0xpc3QmIGFyZ3MpCi17Ci0gICAgU2NyaXB0Q2FsbFN0YWNrIGNhbGxTdGFjayhleGVjLCBhcmdz
LCAxKTsKLSAgICBjb25zdCBVU3RyaW5nIHRpdGxlID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmlu
ZWRPck51bGxDaGVjayhleGVjLCBhcmdzLmF0KDApKTsKLSAgICBpbXBsKCktPnByb2ZpbGUodGl0
bGUsICZjYWxsU3RhY2spOwotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVl
IEpTQ29uc29sZTo6cHJvZmlsZUVuZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MpCi17Ci0gICAgU2NyaXB0Q2FsbFN0YWNrIGNhbGxTdGFjayhleGVjLCBhcmdzLCAxKTsKLSAg
ICBjb25zdCBVU3RyaW5nIHRpdGxlID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxD
aGVjayhleGVjLCBhcmdzLmF0KDApKTsKLSAgICBpbXBsKCktPnByb2ZpbGVFbmQodGl0bGUsICZj
YWxsU3RhY2spOwotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCiAjZW5kaWYKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRQcm9maWxlLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjA5NWUzCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmgKQEAgLTAsMCArMSw0MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFNjcmlwdFByb2ZpbGVfaAorI2RlZmluZSBTY3JpcHRQcm9maWxlX2gKKwor
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorI2luY2x1ZGUgPHByb2ZpbGVyL1Byb2Zp
bGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIEpTQzo6UHJvZmlsZSBTY3Jp
cHRQcm9maWxlOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikKKworI2VuZGlmIC8vIFNjcmlwdFByb2ZpbGVfaApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43ODllM2QzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRQcm9maWxlci5jcHAKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKworI2luY2x1ZGUgIlNj
cmlwdFByb2ZpbGVyLmgiCisKKyNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgU2NyaXB0UHJvZmlsZXI6OnN0YXJ0KFNjcmlwdFN0YXRl
KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICBKU0M6OlByb2ZpbGVyOjpwcm9m
aWxlcigpLT5zdGFydFByb2ZpbGluZyhzdGF0ZSwgdGl0bGUpOworfQorCitQYXNzUmVmUHRyPFNj
cmlwdFByb2ZpbGU+IFNjcmlwdFByb2ZpbGVyOjpzdG9wKFNjcmlwdFN0YXRlKiBzdGF0ZSwgY29u
c3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICByZXR1cm4gSlNDOjpQcm9maWxlcjo6cHJvZmlsZXIo
KS0+c3RvcFByb2ZpbGluZyhzdGF0ZSwgdGl0bGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaCBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0UHJvZmlsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5h
ODZiY2ZiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9m
aWxlci5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JpcHRQcm9maWxlcl9o
CisjZGVmaW5lIFNjcmlwdFByb2ZpbGVyX2gKKworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVH
R0VSKQorI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKKyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5o
IgorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgU2NyaXB0UHJvZmlsZXIgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgor
ICAgIHN0YXRpYyB2b2lkIHN0YXJ0KFNjcmlwdFN0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiB0
aXRsZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4gc3RvcChTY3JpcHRT
dGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKKyNlbmRp
ZiAvLyBTY3JpcHRQcm9maWxlcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbQppbmRleCA1OWZmZmZjLi5lZGJiZDBjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTIwNTYsNyArMjA1Niw2IEBAIHN1YiBIYXND
dXN0b21Ub1Y4SW1wbGVtZW50YXRpb24gewogICAgIHJldHVybiAxIGlmICRpbnRlcmZhY2VOYW1l
IGVxICJCYXJJbmZvIjsKICAgICByZXR1cm4gMSBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiQ1NTU3R5
bGVTaGVldCI7CiAgICAgcmV0dXJuIDEgaWYgJGludGVyZmFjZU5hbWUgZXEgIkNhbnZhc1BpeGVs
QXJyYXkiOwotICAgIHJldHVybiAxIGlmICRpbnRlcmZhY2VOYW1lIGVxICJDb25zb2xlIjsKICAg
ICByZXR1cm4gMSBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRE9NU2VsZWN0aW9uIjsKICAgICByZXR1
cm4gMSBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IjsKICAgICByZXR1cm4gMSBpZiAk
aW50ZXJmYWNlTmFtZSBlcSAiRWxlbWVudCI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdFByb2ZpbGUuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3N2FhOTgKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGUuaApAQCAtMCwwICsxLDYy
IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgU2NyaXB0UHJvZmlsZV9oCisjZGVmaW5lIFNjcmlwdFByb2ZpbGVfaAorCisj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBTY3JpcHRQcm9maWxlIDogcHVibGljIFJlZkNvdW50ZWQ8U2NyaXB0UHJvZmlsZT4geworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpCisgICAgeworICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTY3JpcHRQcm9maWxlKHRpdGxlLCB1aWQpKTsKKyAgICB9CisgICAgdmlydHVhbCB+U2Ny
aXB0UHJvZmlsZSgpIHt9CisKKyAgICBjb25zdCBTdHJpbmcmIHRpdGxlKCkgY29uc3QgeyByZXR1
cm4gbV90aXRsZTsgfQorICAgIHVuc2lnbmVkIGludCB1aWQoKSBjb25zdCB7IHJldHVybiBtX3Vp
ZDsgfQorCitwcm90ZWN0ZWQ6CisgICAgU2NyaXB0UHJvZmlsZShjb25zdCBTdHJpbmcmIHRpdGxl
LCB1bnNpZ25lZCB1aWQpCisgICAgICAgIDogbV90aXRsZSh0aXRsZSkKKyAgICAgICAgLCBtX3Vp
ZCh1aWQpCisgICAge30KKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV90aXRsZTsKKyAgICB1bnNp
Z25lZCBpbnQgbV91aWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBTY3JpcHRQcm9maWxlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
UHJvZmlsZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIzOGY2ZgotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwCkBAIC0wLDAgKzEsNTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFNjcmlwdFByb2ZpbGVyOjpzdGFydChTY3JpcHRT
dGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit7CisgICAgdjg6OkhhbmRsZVNjb3Bl
IHNjb3BlOworICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUodjg6OkNvbnRleHQ6
OkdldEN1cnJlbnQoKSk7CisgICAgdjg6OlY4OjpSZXN1bWVQcm9maWxlcigpOworfQorCitQYXNz
UmVmUHRyPFNjcmlwdFByb2ZpbGU+IFNjcmlwdFByb2ZpbGVyOjpzdG9wKFNjcmlwdFN0YXRlKiBz
dGF0ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICB2ODo6Vjg6OlBhdXNlUHJvZmlsZXIo
KTsKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5oIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRQcm9maWxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmMwMmNjMzIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFBy
b2ZpbGVyLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCwgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNjcmlwdFByb2ZpbGVyX2gKKyNkZWZp
bmUgU2NyaXB0UHJvZmlsZXJfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNs
dWRlICJTY3JpcHRQcm9maWxlLmgiCisjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKKworI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNj
cmlwdFByb2ZpbGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
dm9pZCBzdGFydChTY3JpcHRTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHN0b3AoU2NyaXB0U3RhdGUqIHN0YXRl
LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFNjcmlwdFByb2ZpbGVyX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOENvbnNvbGVDdXN0b20uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWNj
MjIyLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1
c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlY4Q29uc29sZS5oIgotCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5j
bHVkZSAiVjhET01XaW5kb3cuaCIKLSNpbmNsdWRlICJWOFByb3h5LmgiCi0jaW5jbHVkZSA8djgu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25z
b2xlOjpwcm9maWxlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJ
TkNfU1RBVFMoImNvbnNvbGUucHJvZmlsZSgpIik7Ci0gICAgdjg6OkhhbmRsZVNjb3BlIHNjb3Bl
OwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0X3Njb3BlKHY4OjpDb250ZXh0OjpHZXRD
dXJyZW50KCkpOwotICAgIHY4OjpWODo6UmVzdW1lUHJvZmlsZXIoKTsKLSAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjpwcm9m
aWxlRW5kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RB
VFMoImNvbnNvbGUucHJvZmlsZUVuZCgpIik7Ci0gICAgdjg6OlY4OjpQYXVzZVByb2ZpbGVyKCk7
Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLX0KLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjgoQ29uc29sZSogaW1wbCkKLXsKLSAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiB2
ODo6TnVsbCgpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGdldERPTU9i
amVjdE1hcCgpLmdldChpbXBsKTsKLSAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpIHsKLSAgICAg
ICAgd3JhcHBlciA9IFY4Q29uc29sZTo6d3JhcChpbXBsKTsKLSAgICAgICAgaWYgKCF3cmFwcGVy
LklzRW1wdHkoKSkKLSAgICAgICAgICAgIFY4RE9NV3JhcHBlcjo6c2V0SGlkZGVuV2luZG93UmVm
ZXJlbmNlKGltcGwtPmZyYW1lKCksIFY4RE9NV2luZG93Ojpjb25zb2xlSW5kZXgsIHdyYXBwZXIp
OwotICAgIH0KLSAgICByZXR1cm4gd3JhcHBlcjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA1YWIxMzU0
Li5iZTg2YzBlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApA
QCAtNzMsNiArNzMsOCBAQAogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUg
IlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1
ZGUgIlNjcmlwdFByb2ZpbGUuaCIKKyNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgogI2luY2x1
ZGUgIlNjcmlwdFN0cmluZy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKQEAgLTk4LDEwICsxMDAsNyBAQAogI2luY2x1ZGUgIkphdmFTY3JpcHRE
ZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIgogCi0jaW5j
bHVkZSA8cHJvZmlsZXIvUHJvZmlsZS5oPgotI2luY2x1ZGUgPHByb2ZpbGVyL1Byb2ZpbGVyLmg+
CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KLSNpbmNsdWRlIDxydW50aW1lL1N0cmluZ0J1
aWxkZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IEpTQzsKQEAgLTEzNDUsMTIgKzEzNDQsMTIgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpt
b3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShKQVZB
U0NSSVBUX0RFQlVHR0VSKQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRQcm9maWxlKFBh
c3NSZWZQdHI8UHJvZmlsZT4gcHJwUHJvZmlsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3Qg
VVN0cmluZyYgc291cmNlVVJMKQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRQcm9maWxl
KFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJwUHJvZmlsZSwgdW5zaWduZWQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7CiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxQcm9maWxlPiBwcm9maWxlID0gcHJwUHJvZmlsZTsK
KyAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSA9IHBycFByb2ZpbGU7CiAgICAgbV9w
cm9maWxlcy5hZGQocHJvZmlsZS0+dWlkKCksIHByb2ZpbGUpOwogCiAgICAgaWYgKG1fZnJvbnRl
bmQpIHsKQEAgLTEzNjEsMzAgKzEzNjAsMzAgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjph
ZGRQcm9maWxlKFBhc3NSZWZQdHI8UHJvZmlsZT4gcHJwUHJvZmlsZSwgdW5zaWduZWQgbGkKICAg
ICBhZGRQcm9maWxlRmluaXNoZWRNZXNzYWdlVG9Db25zb2xlKHByb2ZpbGUsIGxpbmVOdW1iZXIs
IHNvdXJjZVVSTCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkUHJvZmlsZUZp
bmlzaGVkTWVzc2FnZVRvQ29uc29sZShQYXNzUmVmUHRyPFByb2ZpbGU+IHBycFByb2ZpbGUsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCkKK3ZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6YWRkUHJvZmlsZUZpbmlzaGVkTWVzc2FnZVRvQ29uc29sZShQYXNzUmVm
UHRyPFNjcmlwdFByb2ZpbGU+IHBycFByb2ZpbGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIFJlZlB0cjxQcm9maWxlPiBwcm9maWxlID0gcHJw
UHJvZmlsZTsKKyAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSA9IHBycFByb2ZpbGU7
CiAKLSAgICBKU0M6OlN0cmluZ0J1aWxkZXIgbWVzc2FnZTsKLSAgICBtZXNzYWdlLmFwcGVuZCgi
UHJvZmlsZSBcIndlYmtpdC1wcm9maWxlOi8vIik7Ci0gICAgbWVzc2FnZS5hcHBlbmQoKFVTdHJp
bmcpZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhDUFVQcm9maWxlVHlwZSkpOwotICAgIG1l
c3NhZ2UuYXBwZW5kKCIvIik7Ci0gICAgbWVzc2FnZS5hcHBlbmQoKFVTdHJpbmcpZW5jb2RlV2l0
aFVSTEVzY2FwZVNlcXVlbmNlcyhwcm9maWxlLT50aXRsZSgpKSk7Ci0gICAgbWVzc2FnZS5hcHBl
bmQoIiMiKTsKLSAgICBtZXNzYWdlLmFwcGVuZChVU3RyaW5nOjpmcm9tKHByb2ZpbGUtPnVpZCgp
KSk7Ci0gICAgbWVzc2FnZS5hcHBlbmQoIlwiIGZpbmlzaGVkLiIpOwotICAgIGFkZE1lc3NhZ2VU
b0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVs
LCBtZXNzYWdlLnJlbGVhc2UoKSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKKyAgICBTdHJpbmcg
bWVzc2FnZTsKKyAgICBtZXNzYWdlICs9ICJQcm9maWxlIFwid2Via2l0LXByb2ZpbGU6Ly8iOwor
ICAgIG1lc3NhZ2UgKz0gZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhDUFVQcm9maWxlVHlw
ZSk7CisgICAgbWVzc2FnZSArPSAiLyI7CisgICAgbWVzc2FnZSArPSBlbmNvZGVXaXRoVVJMRXNj
YXBlU2VxdWVuY2VzKHByb2ZpbGUtPnRpdGxlKCkpOworICAgIG1lc3NhZ2UgKz0gIiMiOworICAg
IG1lc3NhZ2UgKz0gU3RyaW5nOjpudW1iZXIocHJvZmlsZS0+dWlkKCkpOworICAgIG1lc3NhZ2Ug
Kz0gIlwiIGZpbmlzaGVkLiI7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3Vy
Y2UsIExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIs
IHNvdXJjZVVSTCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkU3RhcnRQcm9m
aWxpbmdNZXNzYWdlVG9Db25zb2xlKGNvbnN0IFVTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwpCit2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29sZShjb25zdCBTdHJpbmcmIHRpdGxl
LCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAgICBK
U0M6OlN0cmluZ0J1aWxkZXIgbWVzc2FnZTsKLSAgICBtZXNzYWdlLmFwcGVuZCgiUHJvZmlsZSBc
IndlYmtpdC1wcm9maWxlOi8vIik7Ci0gICAgbWVzc2FnZS5hcHBlbmQoZW5jb2RlV2l0aFVSTEVz
Y2FwZVNlcXVlbmNlcyhDUFVQcm9maWxlVHlwZSkpOwotICAgIG1lc3NhZ2UuYXBwZW5kKCIvIik7
Ci0gICAgbWVzc2FnZS5hcHBlbmQoZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyh0aXRsZSkp
OwotICAgIG1lc3NhZ2UuYXBwZW5kKCIjMFwiIHN0YXJ0ZWQuIik7Ci0gICAgYWRkTWVzc2FnZVRv
Q29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWws
IG1lc3NhZ2UucmVsZWFzZSgpLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIFN0cmluZyBt
ZXNzYWdlOworICAgIG1lc3NhZ2UgKz0gIlByb2ZpbGUgXCJ3ZWJraXQtcHJvZmlsZTovLyI7Cisg
ICAgbWVzc2FnZSArPSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKENQVVByb2ZpbGVUeXBl
KTsKKyAgICBtZXNzYWdlICs9ICIvIjsKKyAgICBtZXNzYWdlICs9IGVuY29kZVdpdGhVUkxFc2Nh
cGVTZXF1ZW5jZXModGl0bGUpOworICAgIG1lc3NhZ2UgKz0gIiMwXCIgc3RhcnRlZC4iOworICAg
IGFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgTG9n
TWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogfQogCiB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmdldFByb2ZpbGVIZWFkZXJzKGxvbmcgY2FsbElkKQpAQCAt
MTQwOCwyNiArMTQwNywyMSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmdldFByb2ZpbGUo
bG9uZyBjYWxsSWQsIHVuc2lnbmVkIHVpZCkKICAgICAgICAgbV9mcm9udGVuZC0+ZGlkR2V0UHJv
ZmlsZShjYWxsSWQsIHRvSlMobV9zY3JpcHRTdGF0ZSwgaXQtPnNlY29uZC5nZXQoKSkpOwogfQog
Ci1TY3JpcHRPYmplY3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlUHJvZmlsZUhlYWRlcihj
b25zdCBKU0M6OlByb2ZpbGUmIHByb2ZpbGUpCitTY3JpcHRPYmplY3QgSW5zcGVjdG9yQ29udHJv
bGxlcjo6Y3JlYXRlUHJvZmlsZUhlYWRlcihjb25zdCBTY3JpcHRQcm9maWxlJiBwcm9maWxlKQog
ewogICAgIFNjcmlwdE9iamVjdCBoZWFkZXIgPSBtX2Zyb250ZW5kLT5uZXdTY3JpcHRPYmplY3Qo
KTsKICAgICBoZWFkZXIuc2V0KCJ0aXRsZSIsIHByb2ZpbGUudGl0bGUoKSk7CiAgICAgaGVhZGVy
LnNldCgidWlkIiwgcHJvZmlsZS51aWQoKSk7Ci0gICAgaGVhZGVyLnNldCgidHlwZUlkIiwgVVN0
cmluZyhDUFVQcm9maWxlVHlwZSkpOworICAgIGhlYWRlci5zZXQoInR5cGVJZCIsIFN0cmluZyhD
UFVQcm9maWxlVHlwZSkpOwogICAgIHJldHVybiBoZWFkZXI7CiB9CiAKLVVTdHJpbmcgSW5zcGVj
dG9yQ29udHJvbGxlcjo6Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShib29sIGlu
Y3JlbWVudFByb2ZpbGVOdW1iZXIgPSBmYWxzZSkKK1N0cmluZyBJbnNwZWN0b3JDb250cm9sbGVy
OjpnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKGJvb2wgaW5jcmVtZW50UHJvZmls
ZU51bWJlciA9IGZhbHNlKQogewogICAgIGlmIChpbmNyZW1lbnRQcm9maWxlTnVtYmVyKQogICAg
ICAgICBtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlciA9IG1fbmV4dFVzZXJJbml0
aWF0ZWRQcm9maWxlTnVtYmVyKys7ICAgICAgICAKIAotICAgIEpTQzo6U3RyaW5nQnVpbGRlciB0
aXRsZTsKLSAgICB0aXRsZS5hcHBlbmQoVXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKTsKLSAgICB0
aXRsZS5hcHBlbmQoIi4iKTsKLSAgICB0aXRsZS5hcHBlbmQoVVN0cmluZzo6ZnJvbShtX2N1cnJl
bnRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlcikpOwotICAgIAotICAgIHJldHVybiB0aXRsZS5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcy4lZCIsIFVzZXJJbml0aWF0
ZWRQcm9maWxlTmFtZSwgbV9jdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXIpOwogfQog
CiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZ1Nv
b24oKQpAQCAtMTQ0NywxMiArMTQ0MSwxMiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnN0
YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZyhUaW1lcjxJbnNwZWN0b3JDb250cm9sbGVyPgogCiAg
ICAgbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSA9IHRydWU7CiAKLSAgICBVU3RyaW5n
IHRpdGxlID0gZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSh0cnVlKTsKKyAgICBT
dHJpbmcgdGl0bGUgPSBnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKHRydWUpOwog
CiAgICAgRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IHRvSlNET01XaW5kb3cobV9pbnNwZWN0ZWRQ
YWdlLT5tYWluRnJhbWUoKSwgZGVidWdnZXJXb3JsZCgpKS0+Z2xvYmFsRXhlYygpOwotICAgIFBy
b2ZpbGVyOjpwcm9maWxlcigpLT5zdGFydFByb2ZpbGluZyhzY3JpcHRTdGF0ZSwgdGl0bGUpOwor
ICAgIFNjcmlwdFByb2ZpbGVyOjpzdGFydChzY3JpcHRTdGF0ZSwgdGl0bGUpOwogCi0gICAgYWRk
U3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKHRpdGxlLCAwLCBVU3RyaW5nKCkpOworICAg
IGFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29sZSh0aXRsZSwgMCwgU3RyaW5nKCkpOwog
CiAgICAgdG9nZ2xlUmVjb3JkQnV0dG9uKHRydWUpOwogfQpAQCAtMTQ2NCwxMiArMTQ1OCwxMiBA
QCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCkK
IAogICAgIG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGUgPSBmYWxzZTsKIAotICAgIFVT
dHJpbmcgdGl0bGUgPSBnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKCk7CisgICAg
U3RyaW5nIHRpdGxlID0gZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSgpOwogCiAg
ICAgRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IHRvSlNET01XaW5kb3cobV9pbnNwZWN0ZWRQYWdl
LT5tYWluRnJhbWUoKSwgZGVidWdnZXJXb3JsZCgpKS0+Z2xvYmFsRXhlYygpOwotICAgIFJlZlB0
cjxQcm9maWxlPiBwcm9maWxlID0gUHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0b3BQcm9maWxpbmco
c2NyaXB0U3RhdGUsIHRpdGxlKTsKKyAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSA9
IFNjcmlwdFByb2ZpbGVyOjpzdG9wKHNjcmlwdFN0YXRlLCB0aXRsZSk7CiAgICAgaWYgKHByb2Zp
bGUpCi0gICAgICAgIGFkZFByb2ZpbGUocHJvZmlsZSwgMCwgVVN0cmluZygpKTsKKyAgICAgICAg
YWRkUHJvZmlsZShwcm9maWxlLCAwLCBTdHJpbmcoKSk7CiAKICAgICB0b2dnbGVSZWNvcmRCdXR0
b24oZmFsc2UpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4
IDg2MGJmNDkuLmY4Y2FhNjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1
ZGUgIlNjcmlwdEFycmF5LmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAi
U2NyaXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0VmFsdWUuaCIKICNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCkBAIC01MCw3ICs1MSw2IEBACiAj
aW5jbHVkZSAiSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci0g
ICAgY2xhc3MgUHJvZmlsZTsKICAgICBjbGFzcyBVU3RyaW5nOwogfQogI2VuZGlmCkBAIC0yMjAs
MTMgKzIyMCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrVGltZWxpbmUoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsgCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICB2b2lk
IGFkZFByb2ZpbGUoUGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+LCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCBjb25zdCBKU0M6OlVTdHJpbmcmIHNvdXJjZVVSTCk7Ci0gICAgdm9pZCBhZGRQcm9maWxlRmlu
aXNoZWRNZXNzYWdlVG9Db25zb2xlKFBhc3NSZWZQdHI8SlNDOjpQcm9maWxlPiwgdW5zaWduZWQg
bGluZU51bWJlciwgY29uc3QgSlNDOjpVU3RyaW5nJiBzb3VyY2VVUkwpOwotICAgIHZvaWQgYWRk
U3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKGNvbnN0IEpTQzo6VVN0cmluZyYgdGl0bGUs
IHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IEpTQzo6VVN0cmluZyYgc291cmNlVVJMKTsKKyAg
ICB2b2lkIGFkZFByb2ZpbGUoUGFzc1JlZlB0cjxTY3JpcHRQcm9maWxlPiwgdW5zaWduZWQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworICAgIHZvaWQgYWRkUHJvZmlsZUZp
bmlzaGVkTWVzc2FnZVRvQ29uc29sZShQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+LCB1bnNpZ25l
ZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisgICAgdm9pZCBhZGRTdGFy
dFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQg
bGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogCiAgICAgYm9vbCBpc1JlY29y
ZGluZ1VzZXJJbml0aWF0ZWRQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9yZWNvcmRpbmdVc2Vy
SW5pdGlhdGVkUHJvZmlsZTsgfQogCi0gICAgSlNDOjpVU3RyaW5nIGdldEN1cnJlbnRVc2VySW5p
dGlhdGVkUHJvZmlsZU5hbWUoYm9vbCBpbmNyZW1lbnRQcm9maWxlTnVtYmVyKTsKKyAgICBTdHJp
bmcgZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShib29sIGluY3JlbWVudFByb2Zp
bGVOdW1iZXIpOwogICAgIHZvaWQgc3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nKFRpbWVyPElu
c3BlY3RvckNvbnRyb2xsZXI+KiA9IDApOwogICAgIHZvaWQgc3RvcFVzZXJJbml0aWF0ZWRQcm9m
aWxpbmcoKTsKIApAQCAtMjY4LDE0ICsyNjgsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKTsK
IAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIHR5cGVkZWYgSGFzaE1hcDx1
bnNpZ25lZCBpbnQsIFJlZlB0cjxKU0M6OlByb2ZpbGU+ID4gUHJvZmlsZXNNYXA7CisgICAgdHlw
ZWRlZiBIYXNoTWFwPHVuc2lnbmVkIGludCwgUmVmUHRyPFNjcmlwdFByb2ZpbGU+ID4gUHJvZmls
ZXNNYXA7CiAKICAgICB2b2lkIHN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZ1Nvb24oKTsKICAg
ICB2b2lkIHRvZ2dsZVJlY29yZEJ1dHRvbihib29sKTsKICAgICB2b2lkIGVuYWJsZURlYnVnZ2Vy
RnJvbUZyb250ZW5kKGJvb2wgYWx3YXlzKTsKICAgICB2b2lkIGdldFByb2ZpbGVIZWFkZXJzKGxv
bmcgY2FsbElkKTsKICAgICB2b2lkIGdldFByb2ZpbGUobG9uZyBjYWxsSWQsIHVuc2lnbmVkIHVp
ZCk7Ci0gICAgU2NyaXB0T2JqZWN0IGNyZWF0ZVByb2ZpbGVIZWFkZXIoY29uc3QgSlNDOjpQcm9m
aWxlJiBwcm9maWxlKTsKKyAgICBTY3JpcHRPYmplY3QgY3JlYXRlUHJvZmlsZUhlYWRlcihjb25z
dCBTY3JpcHRQcm9maWxlJiBwcm9maWxlKTsKICNlbmRpZgogI2lmIEVOQUJMRShEQVRBQkFTRSkK
ICAgICB2b2lkIHNlbGVjdERhdGFiYXNlKERhdGFiYXNlKiBkYXRhYmFzZSk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAgYi9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKaW5k
ZXggMjI3M2E1ZS4uMDI4MGVmNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3Bw
CisrKyBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcApAQCAtNDEsMTEgKzQxLDkgQEAKICNpbmNs
dWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCi0jaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0jaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZXIuaD4K
LSNlbmRpZgotCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCisjaW5jbHVkZSAiU2NyaXB0
UHJvZmlsZS5oIgorI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCiAjaW5jbHVkZSA8c3RkaW8u
aD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIApAQCAtMzE0LDM4ICszMTIsMzggQEAg
U3RyaW5nIENvbnNvbGU6Omxhc3RXTUxFcnJvck1lc3NhZ2UoKSBjb25zdAogfQogI2VuZGlmCiAK
LSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikgfHwgVVNFKFY4KQogCi12b2lkIENvbnNvbGU6OnByb2ZpbGUoY29uc3QgSlNDOjpV
U3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6
OnByb2ZpbGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2sp
CiB7CiAgICAgUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCisjaWYgRU5BQkxFKElOU1BFQ1RP
UikgJiYgVVNFKEpTQykKICAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gcGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwogICAgIC8vIEZJWE1FOiBsb2cgYSBjb25zb2xlIG1l
c3NhZ2Ugd2hlbiBwcm9maWxpbmcgaXMgZGlzYWJsZWQuCiAgICAgaWYgKCFjb250cm9sbGVyLT5w
cm9maWxlckVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKLSAgICBKU0M6OlVT
dHJpbmcgcmVzb2x2ZWRUaXRsZSA9IHRpdGxlOworICAgIFN0cmluZyByZXNvbHZlZFRpdGxlID0g
dGl0bGU7CiAgICAgaWYgKHRpdGxlLmlzTnVsbCgpKSAgIC8vIG5vIHRpdGxlIHNvIGdpdmUgaXQg
dGhlIG5leHQgdXNlciBpbml0aWF0ZWQgcHJvZmlsZSB0aXRsZS4KLSNpZiBFTkFCTEUoSU5TUEVD
VE9SKQorI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIFVTRShKU0MpCiAgICAgICAgIHJlc29sdmVk
VGl0bGUgPSBjb250cm9sbGVyLT5nZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKHRy
dWUpOwogI2Vsc2UKICAgICAgICAgcmVzb2x2ZWRUaXRsZSA9ICIiOwogI2VuZGlmCiAKLSAgICBK
U0M6OlByb2ZpbGVyOjpwcm9maWxlcigpLT5zdGFydFByb2ZpbGluZyhjYWxsU3RhY2stPnN0YXRl
KCksIHJlc29sdmVkVGl0bGUpOworICAgIFNjcmlwdFByb2ZpbGVyOjpzdGFydChjYWxsU3RhY2st
PnN0YXRlKCksIHJlc29sdmVkVGl0bGUpOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SKSAmJiBVU0UoSlNDKQogICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYg
bGFzdENhbGxlciA9IGNhbGxTdGFjay0+YXQoMCk7CiAgICAgY29udHJvbGxlci0+YWRkU3RhcnRQ
cm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKHJlc29sdmVkVGl0bGUsIGxhc3RDYWxsZXIubGluZU51
bWJlcigpLCBsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpKTsKICNlbmRpZgogfQogCi12b2lkIENvbnNv
bGU6OnByb2ZpbGVFbmQoY29uc3QgSlNDOjpVU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNr
KiBjYWxsU3RhY2spCit2b2lkIENvbnNvbGU6OnByb2ZpbGVFbmQoY29uc3QgU3RyaW5nJiB0aXRs
ZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCiB7CiAgICAgUGFnZSogcGFnZSA9IHRoaXMt
PnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCkBAIC0zNTQsMTkgKzM1MiwxOSBAQCB2b2lkIENvbnNv
bGU6OnByb2ZpbGVFbmQoY29uc3QgSlNDOjpVU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNr
KiBjYWxsU3RhY2spCiAgICAgaWYgKCF0aGlzLT5wYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAot
I2lmIEVOQUJMRShJTlNQRUNUT1IpCisjaWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgVVNFKEpTQykK
ICAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpOwogICAgIGlmICghY29udHJvbGxlci0+cHJvZmlsZXJFbmFibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgUmVmUHRyPEpTQzo6UHJvZmlsZT4gcHJvZmlsZSA9
IEpTQzo6UHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0b3BQcm9maWxpbmcoY2FsbFN0YWNrLT5zdGF0
ZSgpLCB0aXRsZSk7CisgICAgUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHByb2ZpbGUgPSBTY3JpcHRQ
cm9maWxlcjo6c3RvcChjYWxsU3RhY2stPnN0YXRlKCksIHRpdGxlKTsKICAgICBpZiAoIXByb2Zp
bGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcHJvZmlsZXMuYXBwZW5kKHByb2ZpbGUpOwog
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBVU0UoSlND
KQogICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxTdGFjay0+YXQo
MCk7CiAgICAgY29udHJvbGxlci0+YWRkUHJvZmlsZShwcm9maWxlLCBsYXN0Q2FsbGVyLmxpbmVO
dW1iZXIoKSwgbGFzdENhbGxlci5zb3VyY2VVUkwoKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGFnZS9Db25zb2xlLmggYi9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oCmluZGV4IGVhM2Ex
NjEuLmQ3ODMwNDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Db25zb2xlLmgKKysrIGIvV2Vi
Q29yZS9wYWdlL0NvbnNvbGUuaApAQCAtMzEsMTAxICszMSw5OSBAQAogCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKIAotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotI2luY2x1
ZGUgPHByb2ZpbGVyL1Byb2ZpbGUuaD4KLSNlbmRpZgorI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUu
aCIKIAotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICB0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8SlNDOjpQcm9maWxlPiA+IFByb2ZpbGVzQXJyYXk7CisjaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpIHx8IFVTRShWOCkKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxTY3JpcHRQcm9m
aWxlPiA+IFByb2ZpbGVzQXJyYXk7CiAjZW5kaWYKIAotICAgIGNsYXNzIEZyYW1lOwotICAgIGNs
YXNzIFBhZ2U7Ci0gICAgY2xhc3MgU3RyaW5nOwotICAgIGNsYXNzIFNjcmlwdENhbGxTdGFjazsK
LQotICAgIC8vIEtlZXAgaW4gc3luYyB3aXRoIGluc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZS5q
cwotICAgIGVudW0gTWVzc2FnZVNvdXJjZSB7Ci0gICAgICAgIEhUTUxNZXNzYWdlU291cmNlLAot
ICAgICAgICBXTUxNZXNzYWdlU291cmNlLAotICAgICAgICBYTUxNZXNzYWdlU291cmNlLAotICAg
ICAgICBKU01lc3NhZ2VTb3VyY2UsCi0gICAgICAgIENTU01lc3NhZ2VTb3VyY2UsCi0gICAgICAg
IE90aGVyTWVzc2FnZVNvdXJjZQotICAgIH07Ci0KLSAgICBlbnVtIE1lc3NhZ2VUeXBlIHsKLSAg
ICAgICAgTG9nTWVzc2FnZVR5cGUsCi0gICAgICAgIE9iamVjdE1lc3NhZ2VUeXBlLAotICAgICAg
ICBUcmFjZU1lc3NhZ2VUeXBlLAotICAgICAgICBTdGFydEdyb3VwTWVzc2FnZVR5cGUsCi0gICAg
ICAgIEVuZEdyb3VwTWVzc2FnZVR5cGUsCi0gICAgICAgIEFzc2VydE1lc3NhZ2VUeXBlCi0gICAg
fTsKLQotICAgIGVudW0gTWVzc2FnZUxldmVsIHsKLSAgICAgICAgVGlwTWVzc2FnZUxldmVsLAot
ICAgICAgICBMb2dNZXNzYWdlTGV2ZWwsCi0gICAgICAgIFdhcm5pbmdNZXNzYWdlTGV2ZWwsCi0g
ICAgICAgIEVycm9yTWVzc2FnZUxldmVsLAotICAgICAgICBEZWJ1Z01lc3NhZ2VMZXZlbAotICAg
IH07Ci0KLSAgICBjbGFzcyBDb25zb2xlIDogcHVibGljIFJlZkNvdW50ZWQ8Q29uc29sZT4gewot
ICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29uc29sZT4gY3JlYXRlKEZy
YW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENvbnNvbGUoZnJhbWUpKTsgfQotCi0g
ICAgICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OwotICAgICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFt
ZSgpOwotCi0gICAgICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlw
ZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKLQotICAgICAgICB2b2lkIGRlYnVnKFNjcmlw
dENhbGxTdGFjayopOwotICAgICAgICB2b2lkIGVycm9yKFNjcmlwdENhbGxTdGFjayopOwotICAg
ICAgICB2b2lkIGluZm8oU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAgICAgIHZvaWQgbG9nKFNjcmlw
dENhbGxTdGFjayopOwotICAgICAgICB2b2lkIHdhcm4oU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAg
ICAgIHZvaWQgZGlyKFNjcmlwdENhbGxTdGFjayopOwotICAgICAgICB2b2lkIGRpcnhtbChTY3Jp
cHRDYWxsU3RhY2sqKTsKLSAgICAgICAgdm9pZCB0cmFjZShTY3JpcHRDYWxsU3RhY2sqKTsKLSAg
ICAgICAgdm9pZCBhc3NlcnRDb25kaXRpb24oYm9vbCBjb25kaXRpb24sIFNjcmlwdENhbGxTdGFj
ayopOwotICAgICAgICB2b2lkIGNvdW50KFNjcmlwdENhbGxTdGFjayopOwotICAgICAgICB2b2lk
IG1hcmtUaW1lbGluZShTY3JpcHRDYWxsU3RhY2sqKTsKK2NsYXNzIEZyYW1lOworY2xhc3MgUGFn
ZTsKK2NsYXNzIFN0cmluZzsKK2NsYXNzIFNjcmlwdENhbGxTdGFjazsKKworLy8gS2VlcCBpbiBz
eW5jIHdpdGggaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlLmpzCitlbnVtIE1lc3NhZ2VTb3Vy
Y2UgeworICAgIEhUTUxNZXNzYWdlU291cmNlLAorICAgIFdNTE1lc3NhZ2VTb3VyY2UsCisgICAg
WE1MTWVzc2FnZVNvdXJjZSwKKyAgICBKU01lc3NhZ2VTb3VyY2UsCisgICAgQ1NTTWVzc2FnZVNv
dXJjZSwKKyAgICBPdGhlck1lc3NhZ2VTb3VyY2UKK307CisKK2VudW0gTWVzc2FnZVR5cGUgewor
ICAgIExvZ01lc3NhZ2VUeXBlLAorICAgIE9iamVjdE1lc3NhZ2VUeXBlLAorICAgIFRyYWNlTWVz
c2FnZVR5cGUsCisgICAgU3RhcnRHcm91cE1lc3NhZ2VUeXBlLAorICAgIEVuZEdyb3VwTWVzc2Fn
ZVR5cGUsCisgICAgQXNzZXJ0TWVzc2FnZVR5cGUKK307CisKK2VudW0gTWVzc2FnZUxldmVsIHsK
KyAgICBUaXBNZXNzYWdlTGV2ZWwsCisgICAgTG9nTWVzc2FnZUxldmVsLAorICAgIFdhcm5pbmdN
ZXNzYWdlTGV2ZWwsCisgICAgRXJyb3JNZXNzYWdlTGV2ZWwsCisgICAgRGVidWdNZXNzYWdlTGV2
ZWwKK307CisKK2NsYXNzIENvbnNvbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxDb25zb2xlPiB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29uc29sZT4gY3JlYXRlKEZyYW1lKiBmcmFt
ZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENvbnNvbGUoZnJhbWUpKTsgfQorCisgICAgRnJhbWUq
IGZyYW1lKCkgY29uc3Q7CisgICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKKworICAgIHZvaWQg
YWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKTsKKworICAgIHZvaWQgZGVidWcoU2NyaXB0Q2FsbFN0YWNrKik7CisgICAgdm9pZCBl
cnJvcihTY3JpcHRDYWxsU3RhY2sqKTsKKyAgICB2b2lkIGluZm8oU2NyaXB0Q2FsbFN0YWNrKik7
CisgICAgdm9pZCBsb2coU2NyaXB0Q2FsbFN0YWNrKik7CisgICAgdm9pZCB3YXJuKFNjcmlwdENh
bGxTdGFjayopOworICAgIHZvaWQgZGlyKFNjcmlwdENhbGxTdGFjayopOworICAgIHZvaWQgZGly
eG1sKFNjcmlwdENhbGxTdGFjayopOworICAgIHZvaWQgdHJhY2UoU2NyaXB0Q2FsbFN0YWNrKik7
CisgICAgdm9pZCBhc3NlcnRDb25kaXRpb24oYm9vbCBjb25kaXRpb24sIFNjcmlwdENhbGxTdGFj
ayopOworICAgIHZvaWQgY291bnQoU2NyaXB0Q2FsbFN0YWNrKik7CisgICAgdm9pZCBtYXJrVGlt
ZWxpbmUoU2NyaXB0Q2FsbFN0YWNrKik7CiAjaWYgRU5BQkxFKFdNTCkKLSAgICAgICAgU3RyaW5n
IGxhc3RXTUxFcnJvck1lc3NhZ2UoKSBjb25zdDsKKyAgICBTdHJpbmcgbGFzdFdNTEVycm9yTWVz
c2FnZSgpIGNvbnN0OwogI2VuZGlmCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0g
ICAgICAgIHZvaWQgcHJvZmlsZShjb25zdCBKU0M6OlVTdHJpbmcmLCBTY3JpcHRDYWxsU3RhY2sq
KTsKLSAgICAgICAgdm9pZCBwcm9maWxlRW5kKGNvbnN0IEpTQzo6VVN0cmluZyYsIFNjcmlwdENh
bGxTdGFjayopOworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSB8fCBVU0UoVjgpCisg
ICAgdm9pZCBwcm9maWxlKGNvbnN0IFN0cmluZyYsIFNjcmlwdENhbGxTdGFjayopOworICAgIHZv
aWQgcHJvZmlsZUVuZChjb25zdCBTdHJpbmcmLCBTY3JpcHRDYWxsU3RhY2sqKTsKICNlbmRpZgot
ICAgICAgICB2b2lkIHRpbWUoY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIHZvaWQgdGltZUVuZChj
b25zdCBTdHJpbmcmLCBTY3JpcHRDYWxsU3RhY2sqKTsKLSAgICAgICAgdm9pZCBncm91cChTY3Jp
cHRDYWxsU3RhY2sqKTsKLSAgICAgICAgdm9pZCBncm91cEVuZCgpOworICAgIHZvaWQgdGltZShj
b25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHRpbWVFbmQoY29uc3QgU3RyaW5nJiwgU2NyaXB0Q2Fs
bFN0YWNrKik7CisgICAgdm9pZCBncm91cChTY3JpcHRDYWxsU3RhY2sqKTsKKyAgICB2b2lkIGdy
b3VwRW5kKCk7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgc2hvdWxkUHJpbnRFeGNlcHRpb25zKCk7
Ci0gICAgICAgIHN0YXRpYyB2b2lkIHNldFNob3VsZFByaW50RXhjZXB0aW9ucyhib29sKTsKKyAg
ICBzdGF0aWMgYm9vbCBzaG91bGRQcmludEV4Y2VwdGlvbnMoKTsKKyAgICBzdGF0aWMgdm9pZCBz
ZXRTaG91bGRQcmludEV4Y2VwdGlvbnMoYm9vbCk7CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikKLSAgICAgICAgY29uc3QgUHJvZmlsZXNBcnJheSYgcHJvZmlsZXMoKSBjb25zdCB7
IHJldHVybiBtX3Byb2ZpbGVzOyB9CisgICAgY29uc3QgUHJvZmlsZXNBcnJheSYgcHJvZmlsZXMo
KSBjb25zdCB7IHJldHVybiBtX3Byb2ZpbGVzOyB9CiAjZW5kaWYKIAotICAgIHByaXZhdGU6Ci0g
ICAgICAgIGlubGluZSBQYWdlKiBwYWdlKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgYWRkTWVzc2Fn
ZShNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBTY3JpcHRDYWxsU3RhY2sqLCBib29sIGFjY2Vw
dE5vQXJndW1lbnRzID0gZmFsc2UpOworcHJpdmF0ZToKKyAgICBpbmxpbmUgUGFnZSogcGFnZSgp
IGNvbnN0OworICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBT
Y3JpcHRDYWxsU3RhY2sqLCBib29sIGFjY2VwdE5vQXJndW1lbnRzID0gZmFsc2UpOwogCi0gICAg
ICAgIENvbnNvbGUoRnJhbWUqKTsKKyAgICBDb25zb2xlKEZyYW1lKik7CiAKLSAgICAgICAgRnJh
bWUqIG1fZnJhbWU7Ci0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgICAgIFBy
b2ZpbGVzQXJyYXkgbV9wcm9maWxlczsKKyAgICBGcmFtZSogbV9mcmFtZTsKKyNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikgfHwgVVNFKFY4KQorICAgIFByb2ZpbGVzQXJyYXkgbV9wcm9m
aWxlczsKICNlbmRpZgotICAgIH07Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Db25zb2xlLmlkbCBiL1dlYkNvcmUvcGFnZS9Db25zb2xl
LmlkbAppbmRleCBiOWMwYTU3Li4yOTAyMzViIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ29u
c29sZS5pZGwKKysrIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCkBAIC01MSw4ICs1MSw4IEBA
IG1vZHVsZSB3aW5kb3cgewogI2VuZGlmCiAKICNpZiBkZWZpbmVkKEVOQUJMRV9KQVZBU0NSSVBU
X0RFQlVHR0VSKSAmJiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiB8fCBkZWZpbmVkKFY4X0JJ
TkRJTkcpICYmIFY4X0JJTkRJTkcKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBwcm9maWxlKGluIFtD
b252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgdGl0bGUpOwotICAg
ICAgICBbQ3VzdG9tXSB2b2lkIHByb2ZpbGVFbmQoaW4gW0NvbnZlcnRVbmRlZmluZWRPck51bGxU
b051bGxTdHJpbmddIERPTVN0cmluZyB0aXRsZSk7CisgICAgICAgIFtDdXN0b21Bcmd1bWVudEhh
bmRsaW5nXSB2b2lkIHByb2ZpbGUoaW4gW0NvbnZlcnRVbmRlZmluZWRPck51bGxUb051bGxTdHJp
bmddIERPTVN0cmluZyB0aXRsZSk7CisgICAgICAgIFtDdXN0b21Bcmd1bWVudEhhbmRsaW5nXSB2
b2lkIHByb2ZpbGVFbmQoaW4gW0NvbnZlcnRVbmRlZmluZWRPck51bGxUb051bGxTdHJpbmddIERP
TVN0cmluZyB0aXRsZSk7CiAjZW5kaWYKIAogICAgICAgICB2b2lkIHRpbWUoaW4gW0NvbnZlcnRV
bmRlZmluZWRPck51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyB0aXRsZSk7Cg==
</data>
<flag name="review"
          id="30518"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48003</attachid>
            <date>2010-02-03 01:25:40 -0800</date>
            <delta_ts>2010-02-03 02:54:34 -0800</delta_ts>
            <desc>comments addressed, fixed style violations found by an updated version of style checking script</desc>
            <filename>unfork-prof-1-patch</filename>
            <type>text/plain</type>
            <size>49648</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDFhZTU5MS4uM2I5NTI3ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAxMC0wMi0wMyAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFN0YXJ0IHVuZm9ya2luZyBkZWJ1Z2dlciBhbmQgcHJvZmls
ZXIgY29kZS4KKworICAgICAgICBSZW1vdmUgY3VzdG9tIGltcGxlbWVudGF0aW9uIG9mIENvbnNv
bGUuCisgICAgICAgIEFkZCAnU2NyaXB0UHJvZmlsZXInIGFuZCAnU2NyaXB0UHJvZmlsZScgdHlw
ZXMuCisgICAgICAgIFN0YXJ0IG1pZ3JhdGlvbiB0byBlbmdpbmUtbmV1dHJhbCB0eXBlcyBpbiBJ
bnNwZWN0b3JDb250cm9sbGVyLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNDQ4MQorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Jp
bmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3Rv
bS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dFByb2ZpbGVyOjpzdG9wKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5o
OiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0UHJvZmlsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dFByb2ZpbGU6On5TY3JpcHRQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Zp
bGU6OnRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2ZpbGU6OnVpZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRQcm9maWxlOjpTY3JpcHRQcm9maWxlKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0UHJvZmlsZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2ZpbGVy
OjpzdG9wKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5oOiBBZGRlZC4K
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbmRHcm91cCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OnNldERPTVN0b3JhZ2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OmFkZFByb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6YWRkUHJvZmlsZUZpbmlzaGVkTWVzc2FnZVRvQ29uc29sZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjphZGRTdGFydFByb2ZpbGluZ01lc3Nh
Z2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y3Jl
YXRlUHJvZmlsZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjpnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNvbnRyb2xsZXI6OnN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzdG9wVXNlckluaXRpYXRlZFByb2Zp
bGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVEZWJ1
Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzcGVjaWFsUGFu
ZWxGb3JKU05hbWUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzZWFyY2hpbmdGb3JOb2Rl
SW5QYWdlKToKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29uc29sZTo6cHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjpwcm9maWxlRW5k
KToKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAg
ICAgIChXZWJDb3JlOjpDb25zb2xlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29s
ZTo6cHJvZmlsZXMpOgorICAgICAgICAqIHBhZ2UvQ29uc29sZS5pZGw6CisKIDIwMTAtMDItMDIg
IEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMjY4MGE4MC4uOWY5NzNkYSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC00ODQs
NiArNDg0LDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdEluc3RhbmNlLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcCBc
CiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3QuaCBcCisJV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRQcm9maWxlLmggXAorCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmls
ZXIuY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmggXAogCVdlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFNvdXJjZVByb3ZpZGVyLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3Rh
dGUuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggZDgyYTRlMS4uZWQ0OWU4MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTY3NCw3ICs2NzQsNiBAQAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1N0eWxlRGVjbGFyYXRpb25DdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDU1NTdHlsZVNoZWV0
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q1NTVmFsdWVD
dXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3Vz
dG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGlu
Zy5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FdmVudExpc3Rl
bmVyLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tRXZlbnRM
aXN0ZW5lci5oJywKQEAgLTgxMCw2ICs4MDksOSBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1NjcmlwdEluc3RhbmNlLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVj
dC5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5oJywKKyAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlLmgnLAorICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2Ny
aXB0UHJvZmlsZXIuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NyaXB0U2NvcGUuY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRTY29wZS5oJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9TY3JpcHRTb3VyY2VDb2RlLmgnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggZGFjYjhkNS4uNjFlOGMzYyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJv
CkBAIC0zNDYsNiArMzQ2LDcgQEAgU09VUkNFUyArPSBcCiAgICAgYmluZGluZ3MvanMvU2NyaXB0
RXZlbnRMaXN0ZW5lci5jcHAgXAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAgXAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVjdC5jcHAgXAorICAgIGJpbmRpbmdzL2pz
L1NjcmlwdFByb2ZpbGVyLmNwcCBcCiAgICAgYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwIFwK
ICAgICBiaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL1NjaGVk
dWxlZEFjdGlvbi5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAyODMyNjhmLi40YjM0ZWIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMjQ1NSw2ICsyNDU1LDkgQEAKIAkJOTdERDREODYwRkRGNEQ2RTAw
RUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTdERDREODQwRkRGNEQ2RDAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3Bw
ICovOyB9OwogCQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdERDREODUwRkRGNEQ2
RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCAqLzsgfTsKIAkJOTdFRjdERkUxMDdFNTVCNzAwRDdD
NDlDIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RUY3REZEMTA3RTU1QjcwMEQ3QzQ5QyAvKiBTY3JpcHRD
b250cm9sbGVyQmFzZS5jcHAgKi87IH07CisJCTlGNzIzMDRGMTExODRCNDEwMEFEMDEyNiAvKiBT
Y3JpcHRQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5RjcyMzA0QzExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTlGNzIzMDUwMTExODRC
NDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjcyMzA0RDExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0
UHJvZmlsZXIuY3BwICovOyB9OworCQk5RjcyMzA1MTExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0
UHJvZmlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlGNzIzMDRFMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExN0M4MTIyMEYyQTVDRjcw
MDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3QzgxMjAwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxF
bGVtZW50RmFjdG9yeS5jcHAgKi87IH07CiAJCUExN0M4MTIzMEYyQTVDRjcwMDVEQUFFQiAvKiBI
VE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExN0M4MTIxMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3Rvcnku
aCAqLzsgfTsKIAkJQTcxODc2MEUwQjJBMTIwMTAwQTE2RUNFIC8qIERyYWdBY3Rpb25zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzE4NzYwRDBCMkEx
MjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzc4OSw2ICs3NzkyLDkgQEAKIAkJOTdERDREODQwRkRG
NEQ2RDAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gWFNTQXVkaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk3REQ0RDg1MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFhTU0F1ZGl0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTdFRjdERkQxMDdFNTVCNzAwRDdDNDlDIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdENvbnRyb2xsZXJC
YXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUY3MjMwNEMxMTE4NEI0MTAw
QUQwMTI2IC8qIFNjcmlwdFByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2NyaXB0UHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5RjcyMzA0
RDExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0UHJvZmlsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5RjcyMzA0RTExMTg0QjQxMDBBRDAxMjYgLyogU2NyaXB0UHJvZmlsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0UHJvZmlsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3QzgxMjAwRjJBNUNGNzAwNURBQUVCIC8qIEhU
TUxFbGVtZW50RmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBIVE1MRWxlbWVudEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MTdDODEyMTBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxFbGVtZW50RmFjdG9yeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNzE4NzYwRDBCMkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlv
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhZ0FjdGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NjIxLDYgKzE0NjI3LDkgQEAKIAkJCQk5MzRD
QzExNjBFRENBQzczMDBBNjU4RjIgLyogU2NyaXB0SW5zdGFuY2UuaCAqLywKIAkJCQk0MUYwNjZF
MzBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmNwcCAqLywKIAkJCQk0MUYwNjZFMjBG
NjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2JqZWN0LmggKi8sCisJCQkJOUY3MjMwNEMxMTE4NEI0
MTAwQUQwMTI2IC8qIFNjcmlwdFByb2ZpbGUuaCAqLywKKwkJCQk5RjcyMzA0RDExMTg0QjQxMDBB
RDAxMjYgLyogU2NyaXB0UHJvZmlsZXIuY3BwICovLAorCQkJCTlGNzIzMDRFMTExODRCNDEwMEFE
MDEyNiAvKiBTY3JpcHRQcm9maWxlci5oICovLAogCQkJCTkzNENDMTA5MEVEQjIyMzkwMEE2NThG
MiAvKiBTY3JpcHRTb3VyY2VDb2RlLmggKi8sCiAJCQkJQ0U1NEZEMzcxMDE2RDlBNjAwOEI0NEM4
IC8qIFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi8sCiAJCQkJNDEyN0Q1MzYwRjhBQUIxRDAwRTQy
NEY1IC8qIFNjcmlwdFN0YXRlLmNwcCAqLywKQEAgLTE4NDg3LDYgKzE4NDk2LDggQEAKIAkJCQk5
N0RENEQ4NzBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODREMEM0MDYxMTE1RjFFQTAwMThBQTM0IC8qIEFmZmluZVRyYW5zZm9ybS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjcxRkU2REYxMTA5MUNCMzAwREFFRjc3IC8qIFByaW50Q29udGV4dC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOUY3MjMwNEYxMTE4NEI0MTAwQUQwMTI2IC8qIFNjcmlwdFByb2Zp
bGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTlGNzIzMDUxMTExODRCNDEwMEFEMDEyNiAvKiBTY3Jp
cHRQcm9maWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMDY2Myw2ICsyMDY3NCw3IEBACiAJCQkJ
OTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODREMEM0MDQxMTE1RjFENDAwMThBQTM0IC8qIEFmZmluZVRyYW5zZm9ybS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCNzc2RDQzRDExMDQ1Mjc1MDBCRUIwRUMgLyogUHJpbnRDb250ZXh0
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTlGNzIzMDUwMTExODRCNDEwMEFEMDEyNiAvKiBTY3Jp
cHRQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcAppbmRleCBlNTM5MDQyLi44YTkxOGEzIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC0xNDIsNiArMTQyLDcgQEAKICNpbmNs
dWRlICJTY3JpcHRDb250cm9sbGVyV2luLmNwcCIKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3Rl
bmVyLmNwcCIKICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIgorI2luY2x1ZGUgIlNj
cmlwdFByb2ZpbGVyLmNwcCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5jcHAiCiAjaW5jbHVkZSAi
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRDb250cm9s
bGVyLmNwcCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9t
LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcAppbmRleCA4MzY2
YjM5Li5iNjMxY2RkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1
c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwCkBA
IC0yNCwxMyArMjQsMTQgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpbmNsdWRl
ICJKU0NvbnNvbGUuaCIKKworI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJKYXZhU2Ny
aXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgPHJ1
bnRpbWUvSlNBcnJheS5oPgogCi0jaW5jbHVkZSAiQ29uc29sZS5oIgotCiB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MSwyMiArNTIsNiBAQCBKU1ZhbHVl
IEpTQ29uc29sZTo6cHJvZmlsZXMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIHJldHVybiBj
b25zdHJ1Y3RBcnJheShleGVjLCBsaXN0KTsKIH0KIAotSlNWYWx1ZSBKU0NvbnNvbGU6OnByb2Zp
bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQotewotICAgIFNjcmlwdENh
bGxTdGFjayBjYWxsU3RhY2soZXhlYywgYXJncywgMSk7Ci0gICAgY29uc3QgVVN0cmluZyB0aXRs
ZSA9IHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soZXhlYywgYXJncy5hdCgw
KSk7Ci0gICAgaW1wbCgpLT5wcm9maWxlKHRpdGxlLCAmY2FsbFN0YWNrKTsKLSAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSBKU0NvbnNvbGU6OnByb2ZpbGVFbmQoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQotewotICAgIFNjcmlwdENhbGxTdGFjayBj
YWxsU3RhY2soZXhlYywgYXJncywgMSk7Ci0gICAgY29uc3QgVVN0cmluZyB0aXRsZSA9IHZhbHVl
VG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soZXhlYywgYXJncy5hdCgwKSk7Ci0gICAg
aW1wbCgpLT5wcm9maWxlRW5kKHRpdGxlLCAmY2FsbFN0YWNrKTsKLSAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKLX0KLQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5oIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRQcm9maWxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MzIwOTVlMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJv
ZmlsZS5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JpcHRQcm9maWxlX2gK
KyNkZWZpbmUgU2NyaXB0UHJvZmlsZV9oCisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKKyNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KwordHlwZWRlZiBKU0M6OlByb2ZpbGUgU2NyaXB0UHJvZmlsZTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKKyNlbmRp
ZiAvLyBTY3JpcHRQcm9maWxlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0UHJvZmlsZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg5ZTNkMwotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwCkBAIC0wLDAgKzEs
NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpCisKKyNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgorCisjaW5jbHVkZSA8
cHJvZmlsZXIvUHJvZmlsZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFNjcmlw
dFByb2ZpbGVyOjpzdGFydChTY3JpcHRTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgdGl0bGUp
Cit7CisgICAgSlNDOjpQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3RhcnRQcm9maWxpbmcoc3RhdGUs
IHRpdGxlKTsKK30KKworUGFzc1JlZlB0cjxTY3JpcHRQcm9maWxlPiBTY3JpcHRQcm9maWxlcjo6
c3RvcChTY3JpcHRTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit7CisgICAgcmV0
dXJuIEpTQzo6UHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0b3BQcm9maWxpbmcoc3RhdGUsIHRpdGxl
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFT
Q1JJUFRfREVCVUdHRVIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFBy
b2ZpbGVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2YmNmYgotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaApAQCAtMCwwICsxLDQ4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgU2NyaXB0UHJvZmlsZXJfaAorI2RlZmluZSBTY3JpcHRQcm9maWxlcl9oCisK
KyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyNpbmNsdWRlICJTY3JpcHRQcm9maWxl
LmgiCisjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdFByb2ZpbGVyIDogcHVi
bGljIE5vbmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBzdGFydChTY3JpcHRT
dGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNjcmlwdFByb2ZpbGU+IHN0b3AoU2NyaXB0U3RhdGUqIHN0YXRlLCBjb25zdCBTdHJpbmcmIHRp
dGxlKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQorCisjZW5kaWYgLy8gU2NyaXB0UHJvZmlsZXJfaApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggNTlmZmZmYy4uZWRi
YmQwYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JW
OC5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBA
IC0yMDU2LDcgKzIwNTYsNiBAQCBzdWIgSGFzQ3VzdG9tVG9WOEltcGxlbWVudGF0aW9uIHsKICAg
ICByZXR1cm4gMSBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiQmFySW5mbyI7CiAgICAgcmV0dXJuIDEg
aWYgJGludGVyZmFjZU5hbWUgZXEgIkNTU1N0eWxlU2hlZXQiOwogICAgIHJldHVybiAxIGlmICRp
bnRlcmZhY2VOYW1lIGVxICJDYW52YXNQaXhlbEFycmF5IjsKLSAgICByZXR1cm4gMSBpZiAkaW50
ZXJmYWNlTmFtZSBlcSAiQ29uc29sZSI7CiAgICAgcmV0dXJuIDEgaWYgJGludGVyZmFjZU5hbWUg
ZXEgIkRPTVNlbGVjdGlvbiI7CiAgICAgcmV0dXJuIDEgaWYgJGludGVyZmFjZU5hbWUgZXEgIkRP
TVdpbmRvdyI7CiAgICAgcmV0dXJuIDEgaWYgJGludGVyZmFjZU5hbWUgZXEgIkVsZW1lbnQiOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlLmggYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4xYTRkNjc3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRQcm9maWxlLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAx
MCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNjcmlwdFByb2ZpbGVfaAor
I2RlZmluZSBTY3JpcHRQcm9maWxlX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0UHJvZmlsZSA6IHB1YmxpYyBSZWZD
b3VudGVkPFNjcmlwdFByb2ZpbGU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
Y3JpcHRQcm9maWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKQor
ICAgIHsKKyAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2NyaXB0UHJvZmlsZSh0aXRsZSwgdWlk
KSk7CisgICAgfQorICAgIHZpcnR1YWwgflNjcmlwdFByb2ZpbGUoKSB7fQorCisgICAgU3RyaW5n
IHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsgfQorICAgIHVuc2lnbmVkIGludCB1aWQo
KSBjb25zdCB7IHJldHVybiBtX3VpZDsgfQorCitwcm90ZWN0ZWQ6CisgICAgU2NyaXB0UHJvZmls
ZShjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpCisgICAgICAgIDogbV90aXRsZSh0
aXRsZSkKKyAgICAgICAgLCBtX3VpZCh1aWQpCisgICAge30KKworcHJpdmF0ZToKKyAgICBTdHJp
bmcgbV90aXRsZTsKKyAgICB1bnNpZ25lZCBpbnQgbV91aWQ7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTY3JpcHRQcm9maWxlX2gKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRQcm9maWxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIz
OGY2ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmls
ZXIuY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAi
U2NyaXB0UHJvZmlsZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFNjcmlwdFBy
b2ZpbGVyOjpzdGFydChTY3JpcHRTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit7
CisgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250
ZXh0U2NvcGUodjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKSk7CisgICAgdjg6OlY4OjpSZXN1bWVQ
cm9maWxlcigpOworfQorCitQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IFNjcmlwdFByb2ZpbGVy
OjpzdG9wKFNjcmlwdFN0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICB2
ODo6Vjg6OlBhdXNlUHJvZmlsZXIoKTsKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxl
ci5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMmNjMzIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNj
cmlwdFByb2ZpbGVyX2gKKyNkZWZpbmUgU2NyaXB0UHJvZmlsZXJfaAorCisjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCisjaW5jbHVkZSAiU2Ny
aXB0U3RhdGUuaCIKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdFByb2ZpbGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBzdGFydChTY3JpcHRTdGF0ZSogc3RhdGUsIGNvbnN0
IFN0cmluZyYgdGl0bGUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHN0
b3AoU2NyaXB0U3RhdGUqIHN0YXRlLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNjcmlwdFByb2ZpbGVyX2gKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0NWNjMjIyLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlY4Q29uc29sZS5oIgotCi0jaW5jbHVk
ZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKLSNpbmNsdWRlICJWOFBy
b3h5LmgiCi0jaW5jbHVkZSA8djguaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjpwcm9maWxlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoImNvbnNvbGUucHJvZmlsZSgpIik7Ci0gICAg
djg6OkhhbmRsZVNjb3BlIHNjb3BlOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0X3Nj
b3BlKHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCkpOwotICAgIHY4OjpWODo6UmVzdW1lUHJvZmls
ZXIoKTsKLSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotfQotCi12ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhDb25zb2xlOjpwcm9maWxlRW5kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKLXsKLSAgICBJTkNfU1RBVFMoImNvbnNvbGUucHJvZmlsZUVuZCgpIik7Ci0gICAgdjg6
OlY4OjpQYXVzZVByb2ZpbGVyKCk7Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLX0KLQot
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoQ29uc29sZSogaW1wbCkKLXsKLSAgICBpZiAoIWlt
cGwpCi0gICAgICAgIHJldHVybiB2ODo6TnVsbCgpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd3JhcHBlciA9IGdldERPTU9iamVjdE1hcCgpLmdldChpbXBsKTsKLSAgICBpZiAod3JhcHBl
ci5Jc0VtcHR5KCkpIHsKLSAgICAgICAgd3JhcHBlciA9IFY4Q29uc29sZTo6d3JhcChpbXBsKTsK
LSAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKLSAgICAgICAgICAgIFY4RE9NV3JhcHBl
cjo6c2V0SGlkZGVuV2luZG93UmVmZXJlbmNlKGltcGwtPmZyYW1lKCksIFY4RE9NV2luZG93Ojpj
b25zb2xlSW5kZXgsIHdyYXBwZXIpOwotICAgIH0KLSAgICByZXR1cm4gd3JhcHBlcjsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcAppbmRleCA1YWIxMzU0Li40ZTNiNDIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMzksOSArMzksOSBAQAogI2luY2x1ZGUgIkNvbnNvbGVN
ZXNzYWdlLmgiCiAjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCisj
aW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJE
b2N1bWVudExvYWRlci5oIgotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkVsZW1l
bnQuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFF1YWQu
aCIKQEAgLTUzLDE2ICs1MywxNiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQu
aCIKLSNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3Jp
cHRIb3N0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckNsaWVudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCi0jaW5jbHVkZSAi
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRGF0YWJhc2VSZXNv
dXJjZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRE9NU3RvcmFnZVJlc291cmNlLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kSG9zdC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvclJlc291cmNlLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oIgogI2luY2x1ZGUgIkphdmFTY3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgpAQCAtNzMsNiArNzMsOCBAQAogI2lu
Y2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5o
IgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIK
KyNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFN0cmluZy5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTk0
LDE0ICs5NiwxMSBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
KyNpbmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJKYXZhU2NyaXB0
Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSmF2YVNjcmlwdERlYnVnU2VydmVyLmgiCi0jaW5jbHVk
ZSAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCiAKLSNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxl
Lmg+Ci0jaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0pT
TG9jay5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHJ1
bnRpbWUvVVN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtMzkwLDcgKzM4OSw3
IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c3RhcnRHcm91cChNZXNzYWdlU291cmNlIHNv
dXJjZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsCiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZW5kR3JvdXAoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIGlmIChtX2dyb3VwTGV2ZWwgPT0gMCkKKyAgICBp
ZiAoIW1fZ3JvdXBMZXZlbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLS1tX2dyb3VwTGV2ZWw7
CkBAIC01NTgsNyArNTU3LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KCkKICAg
ICAKICAgICBpZiAoIW1fcGFnZSkgewogICAgICAgICBpZiAobV9mcm9udGVuZCkKLSAgICAgICAg
ICAgIHJldHVybjsgIC8vIFdlIGFyZSB1c2luZyBjdXN0b20gZnJvbnRlbmQgLSBubyBuZWVkIHRv
IGNyZWF0ZSBwYWdlLgorICAgICAgICAgICAgcmV0dXJuOyAvLyBXZSBhcmUgdXNpbmcgY3VzdG9t
IGZyb250ZW5kIC0gbm8gbmVlZCB0byBjcmVhdGUgcGFnZS4KIAogICAgICAgICBtX3BhZ2UgPSBt
X2NsaWVudC0+Y3JlYXRlUGFnZSgpOwogICAgICAgICBpZiAoIW1fcGFnZSkKQEAgLTEzMDYsNyAr
MTMwNSw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0RE9NU3RvcmFnZUl0ZW0obG9u
ZyBjYWxsSWQsIGxvbmcgc3RvcmFnZUlkLCBjb25zdCBTCiAgICAgaWYgKHN0b3JhZ2VSZXNvdXJj
ZSkgewogICAgICAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgIHN0b3Jh
Z2VSZXNvdXJjZS0+ZG9tU3RvcmFnZSgpLT5zZXRJdGVtKGtleSwgdmFsdWUsIGV4Y2VwdGlvbik7
Ci0gICAgICAgIHN1Y2Nlc3MgPSAoZXhjZXB0aW9uID09IDApOworICAgICAgICBzdWNjZXNzID0g
IWV4Y2VwdGlvbjsKICAgICB9CiAgICAgbV9mcm9udGVuZC0+ZGlkU2V0RE9NU3RvcmFnZUl0ZW0o
Y2FsbElkLCBzdWNjZXNzKTsKIH0KQEAgLTEzNDUsMTIgKzEzNDQsMTIgQEAgdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjptb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkgY29uc3QKIH0KIAog
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjphZGRQcm9maWxlKFBhc3NSZWZQdHI8UHJvZmlsZT4gcHJwUHJvZmlsZSwgdW5zaWduZWQgbGlu
ZU51bWJlciwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMKQordm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjphZGRQcm9maWxlKFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJwUHJvZmlsZSwgdW5z
aWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7CiAgICAgaWYgKCFl
bmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxQcm9maWxlPiBwcm9maWxl
ID0gcHJwUHJvZmlsZTsKKyAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSA9IHBycFBy
b2ZpbGU7CiAgICAgbV9wcm9maWxlcy5hZGQocHJvZmlsZS0+dWlkKCksIHByb2ZpbGUpOwogCiAg
ICAgaWYgKG1fZnJvbnRlbmQpIHsKQEAgLTEzNjEsMzAgKzEzNjAsMTggQEAgdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjphZGRQcm9maWxlKFBhc3NSZWZQdHI8UHJvZmlsZT4gcHJwUHJvZmlsZSwg
dW5zaWduZWQgbGkKICAgICBhZGRQcm9maWxlRmluaXNoZWRNZXNzYWdlVG9Db25zb2xlKHByb2Zp
bGUsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6YWRkUHJvZmlsZUZpbmlzaGVkTWVzc2FnZVRvQ29uc29sZShQYXNzUmVmUHRyPFByb2ZpbGU+
IHBycFByb2ZpbGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVS
TCkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkUHJvZmlsZUZpbmlzaGVkTWVzc2FnZVRv
Q29uc29sZShQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHBycFByb2ZpbGUsIHVuc2lnbmVkIGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIFJlZlB0cjxQcm9maWxl
PiBwcm9maWxlID0gcHJwUHJvZmlsZTsKKyAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmls
ZSA9IHBycFByb2ZpbGU7CiAKLSAgICBKU0M6OlN0cmluZ0J1aWxkZXIgbWVzc2FnZTsKLSAgICBt
ZXNzYWdlLmFwcGVuZCgiUHJvZmlsZSBcIndlYmtpdC1wcm9maWxlOi8vIik7Ci0gICAgbWVzc2Fn
ZS5hcHBlbmQoKFVTdHJpbmcpZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhDUFVQcm9maWxl
VHlwZSkpOwotICAgIG1lc3NhZ2UuYXBwZW5kKCIvIik7Ci0gICAgbWVzc2FnZS5hcHBlbmQoKFVT
dHJpbmcpZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhwcm9maWxlLT50aXRsZSgpKSk7Ci0g
ICAgbWVzc2FnZS5hcHBlbmQoIiMiKTsKLSAgICBtZXNzYWdlLmFwcGVuZChVU3RyaW5nOjpmcm9t
KHByb2ZpbGUtPnVpZCgpKSk7Ci0gICAgbWVzc2FnZS5hcHBlbmQoIlwiIGZpbmlzaGVkLiIpOwot
ICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwg
TG9nTWVzc2FnZUxldmVsLCBtZXNzYWdlLnJlbGVhc2UoKSwgbGluZU51bWJlciwgc291cmNlVVJM
KTsKKyAgICBTdHJpbmcgbWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJQcm9maWxlIFwid2Via2l0
LXByb2ZpbGU6Ly8lcy8lcyMlZFwiIGZpbmlzaGVkLiIsIENQVVByb2ZpbGVUeXBlLCBlbmNvZGVX
aXRoVVJMRXNjYXBlU2VxdWVuY2VzKHByb2ZpbGUtPnRpdGxlKCkpLnV0ZjgoKS5kYXRhKCksIHBy
b2ZpbGUtPnVpZCgpKTsKKyAgICBhZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwg
TG9nTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291
cmNlVVJMKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRTdGFydFByb2ZpbGlu
Z01lc3NhZ2VUb0NvbnNvbGUoY29uc3QgVVN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgdGl0bGUsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIEpTQzo6
U3RyaW5nQnVpbGRlciBtZXNzYWdlOwotICAgIG1lc3NhZ2UuYXBwZW5kKCJQcm9maWxlIFwid2Vi
a2l0LXByb2ZpbGU6Ly8iKTsKLSAgICBtZXNzYWdlLmFwcGVuZChlbmNvZGVXaXRoVVJMRXNjYXBl
U2VxdWVuY2VzKENQVVByb2ZpbGVUeXBlKSk7Ci0gICAgbWVzc2FnZS5hcHBlbmQoIi8iKTsKLSAg
ICBtZXNzYWdlLmFwcGVuZChlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHRpdGxlKSk7Ci0g
ICAgbWVzc2FnZS5hcHBlbmQoIiMwXCIgc3RhcnRlZC4iKTsKLSAgICBhZGRNZXNzYWdlVG9Db25z
b2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgbWVz
c2FnZS5yZWxlYXNlKCksIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CisgICAgU3RyaW5nIG1lc3Nh
Z2UgPSBTdHJpbmc6OmZvcm1hdCgiUHJvZmlsZSBcIndlYmtpdC1wcm9maWxlOi8vJXMvJXMjMFwi
IHN0YXJ0ZWQuIiwgQ1BVUHJvZmlsZVR5cGUsIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMo
dGl0bGUpLnV0ZjgoKS5kYXRhKCkpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdl
U291cmNlLCBMb2dNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5lTnVt
YmVyLCBzb3VyY2VVUkwpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmdldFByb2Zp
bGVIZWFkZXJzKGxvbmcgY2FsbElkKQpAQCAtMTQwOCwyNiArMTM5NSwyMSBAQCB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmdldFByb2ZpbGUobG9uZyBjYWxsSWQsIHVuc2lnbmVkIHVpZCkKICAg
ICAgICAgbV9mcm9udGVuZC0+ZGlkR2V0UHJvZmlsZShjYWxsSWQsIHRvSlMobV9zY3JpcHRTdGF0
ZSwgaXQtPnNlY29uZC5nZXQoKSkpOwogfQogCi1TY3JpcHRPYmplY3QgSW5zcGVjdG9yQ29udHJv
bGxlcjo6Y3JlYXRlUHJvZmlsZUhlYWRlcihjb25zdCBKU0M6OlByb2ZpbGUmIHByb2ZpbGUpCitT
Y3JpcHRPYmplY3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlUHJvZmlsZUhlYWRlcihjb25z
dCBTY3JpcHRQcm9maWxlJiBwcm9maWxlKQogewogICAgIFNjcmlwdE9iamVjdCBoZWFkZXIgPSBt
X2Zyb250ZW5kLT5uZXdTY3JpcHRPYmplY3QoKTsKICAgICBoZWFkZXIuc2V0KCJ0aXRsZSIsIHBy
b2ZpbGUudGl0bGUoKSk7CiAgICAgaGVhZGVyLnNldCgidWlkIiwgcHJvZmlsZS51aWQoKSk7Ci0g
ICAgaGVhZGVyLnNldCgidHlwZUlkIiwgVVN0cmluZyhDUFVQcm9maWxlVHlwZSkpOworICAgIGhl
YWRlci5zZXQoInR5cGVJZCIsIFN0cmluZyhDUFVQcm9maWxlVHlwZSkpOwogICAgIHJldHVybiBo
ZWFkZXI7CiB9CiAKLVVTdHJpbmcgSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0Q3VycmVudFVzZXJJ
bml0aWF0ZWRQcm9maWxlTmFtZShib29sIGluY3JlbWVudFByb2ZpbGVOdW1iZXIgPSBmYWxzZSkK
K1N0cmluZyBJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2Zp
bGVOYW1lKGJvb2wgaW5jcmVtZW50UHJvZmlsZU51bWJlciA9IGZhbHNlKQogewogICAgIGlmIChp
bmNyZW1lbnRQcm9maWxlTnVtYmVyKQogICAgICAgICBtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJv
ZmlsZU51bWJlciA9IG1fbmV4dFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyKys7ICAgICAgICAK
IAotICAgIEpTQzo6U3RyaW5nQnVpbGRlciB0aXRsZTsKLSAgICB0aXRsZS5hcHBlbmQoVXNlcklu
aXRpYXRlZFByb2ZpbGVOYW1lKTsKLSAgICB0aXRsZS5hcHBlbmQoIi4iKTsKLSAgICB0aXRsZS5h
cHBlbmQoVVN0cmluZzo6ZnJvbShtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlcikp
OwotICAgIAotICAgIHJldHVybiB0aXRsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFN0cmluZzo6
Zm9ybWF0KCIlcy4lZCIsIFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSwgbV9jdXJyZW50VXNlcklu
aXRpYXRlZFByb2ZpbGVOdW1iZXIpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnN0
YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZ1Nvb24oKQpAQCAtMTQ0NywxMiArMTQyOSwxMiBAQCB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZyhUaW1l
cjxJbnNwZWN0b3JDb250cm9sbGVyPgogCiAgICAgbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJv
ZmlsZSA9IHRydWU7CiAKLSAgICBVU3RyaW5nIHRpdGxlID0gZ2V0Q3VycmVudFVzZXJJbml0aWF0
ZWRQcm9maWxlTmFtZSh0cnVlKTsKKyAgICBTdHJpbmcgdGl0bGUgPSBnZXRDdXJyZW50VXNlcklu
aXRpYXRlZFByb2ZpbGVOYW1lKHRydWUpOwogCiAgICAgRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9
IHRvSlNET01XaW5kb3cobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSwgZGVidWdnZXJXb3Js
ZCgpKS0+Z2xvYmFsRXhlYygpOwotICAgIFByb2ZpbGVyOjpwcm9maWxlcigpLT5zdGFydFByb2Zp
bGluZyhzY3JpcHRTdGF0ZSwgdGl0bGUpOworICAgIFNjcmlwdFByb2ZpbGVyOjpzdGFydChzY3Jp
cHRTdGF0ZSwgdGl0bGUpOwogCi0gICAgYWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xl
KHRpdGxlLCAwLCBVU3RyaW5nKCkpOworICAgIGFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRvQ29u
c29sZSh0aXRsZSwgMCwgU3RyaW5nKCkpOwogCiAgICAgdG9nZ2xlUmVjb3JkQnV0dG9uKHRydWUp
OwogfQpAQCAtMTQ2NCwxMiArMTQ0NiwxMiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnN0
b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCkKIAogICAgIG1fcmVjb3JkaW5nVXNlckluaXRpYXRl
ZFByb2ZpbGUgPSBmYWxzZTsKIAotICAgIFVTdHJpbmcgdGl0bGUgPSBnZXRDdXJyZW50VXNlcklu
aXRpYXRlZFByb2ZpbGVOYW1lKCk7CisgICAgU3RyaW5nIHRpdGxlID0gZ2V0Q3VycmVudFVzZXJJ
bml0aWF0ZWRQcm9maWxlTmFtZSgpOwogCiAgICAgRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IHRv
SlNET01XaW5kb3cobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSwgZGVidWdnZXJXb3JsZCgp
KS0+Z2xvYmFsRXhlYygpOwotICAgIFJlZlB0cjxQcm9maWxlPiBwcm9maWxlID0gUHJvZmlsZXI6
OnByb2ZpbGVyKCktPnN0b3BQcm9maWxpbmcoc2NyaXB0U3RhdGUsIHRpdGxlKTsKKyAgICBSZWZQ
dHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSA9IFNjcmlwdFByb2ZpbGVyOjpzdG9wKHNjcmlwdFN0
YXRlLCB0aXRsZSk7CiAgICAgaWYgKHByb2ZpbGUpCi0gICAgICAgIGFkZFByb2ZpbGUocHJvZmls
ZSwgMCwgVVN0cmluZygpKTsKKyAgICAgICAgYWRkUHJvZmlsZShwcm9maWxlLCAwLCBTdHJpbmco
KSk7CiAKICAgICB0b2dnbGVSZWNvcmRCdXR0b24oZmFsc2UpOwogfQpAQCAtMTUzNiw5ICsxNTE4
LDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVEZWJ1Z2dlcigpCiAgICAgaWYg
KG1fZGVidWdnZXJFbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fc2NyaXB0
U3RhdGUgfHwgIW1fZnJvbnRlbmQpIHsKKyAgICBpZiAoIW1fc2NyaXB0U3RhdGUgfHwgIW1fZnJv
bnRlbmQpCiAgICAgICAgIG1fYXR0YWNoRGVidWdnZXJXaGVuU2hvd24gPSB0cnVlOwotICAgIH0g
ZWxzZSB7CisgICAgZWxzZSB7CiAgICAgICAgIG1fZnJvbnRlbmQtPmF0dGFjaERlYnVnZ2VyV2hl
blNob3duKCk7CiAgICAgICAgIG1fYXR0YWNoRGVidWdnZXJXaGVuU2hvd24gPSBmYWxzZTsKICAg
ICB9CkBAIC0xODAzLDIwICsxNzg1LDE5IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6OlNwZWNpYWxQ
YW5lbHMgSW5zcGVjdG9yQ29udHJvbGxlcjo6c3BlY2lhbFBhbmVsRm9ySlNOYW1lKGNvCiB7CiAg
ICAgaWYgKHBhbmVsTmFtZSA9PSAiZWxlbWVudHMiKQogICAgICAgICByZXR1cm4gRWxlbWVudHNQ
YW5lbDsKLSAgICBlbHNlIGlmIChwYW5lbE5hbWUgPT0gInJlc291cmNlcyIpCisgICAgaWYgKHBh
bmVsTmFtZSA9PSAicmVzb3VyY2VzIikKICAgICAgICAgcmV0dXJuIFJlc291cmNlc1BhbmVsOwot
ICAgIGVsc2UgaWYgKHBhbmVsTmFtZSA9PSAic2NyaXB0cyIpCisgICAgaWYgKHBhbmVsTmFtZSA9
PSAic2NyaXB0cyIpCiAgICAgICAgIHJldHVybiBTY3JpcHRzUGFuZWw7Ci0gICAgZWxzZSBpZiAo
cGFuZWxOYW1lID09ICJ0aW1lbGluZSIpCisgICAgaWYgKHBhbmVsTmFtZSA9PSAidGltZWxpbmUi
KQogICAgICAgICByZXR1cm4gVGltZWxpbmVQYW5lbDsKLSAgICBlbHNlIGlmIChwYW5lbE5hbWUg
PT0gInByb2ZpbGVzIikKKyAgICBpZiAocGFuZWxOYW1lID09ICJwcm9maWxlcyIpCiAgICAgICAg
IHJldHVybiBQcm9maWxlc1BhbmVsOwotICAgIGVsc2UgaWYgKHBhbmVsTmFtZSA9PSAic3RvcmFn
ZSIgfHwgcGFuZWxOYW1lID09ICJkYXRhYmFzZXMiKQorICAgIGlmIChwYW5lbE5hbWUgPT0gInN0
b3JhZ2UiIHx8IHBhbmVsTmFtZSA9PSAiZGF0YWJhc2VzIikKICAgICAgICAgcmV0dXJuIFN0b3Jh
Z2VQYW5lbDsKLSAgICBlbHNlIGlmIChwYW5lbE5hbWUgPT0gImNvbnNvbGUiKQorICAgIGlmIChw
YW5lbE5hbWUgPT0gImNvbnNvbGUiKQogICAgICAgICByZXR1cm4gQ29uc29sZVBhbmVsOwotICAg
IGVsc2UKLSAgICAgICAgcmV0dXJuIEVsZW1lbnRzUGFuZWw7CisgICAgcmV0dXJuIEVsZW1lbnRz
UGFuZWw7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGVsZXRlQ29va2llKGNvbnN0
IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4pCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggODYwYmY0OS4uOWVmMjAyZiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0QXJyYXkuaCIKICNpbmNsdWRl
ICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlN0cmlu
Z0hhc2guaCIKQEAgLTUwLDggKzUxLDcgQEAKICNpbmNsdWRlICJKYXZhU2NyaXB0RGVidWdMaXN0
ZW5lci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBQcm9maWxlOwotICAgIGNsYXNz
IFVTdHJpbmc7CitjbGFzcyBVU3RyaW5nOwogfQogI2VuZGlmCiAKQEAgLTE0OSw3ICsxNDksNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkZXRhY2hXaW5kb3coKTsKIAogICAgIHZvaWQgdG9nZ2xlU2Vh
cmNoRm9yTm9kZUluUGFnZSgpOwotICAgIGJvb2wgc2VhcmNoaW5nRm9yTm9kZUluUGFnZSgpIHsg
cmV0dXJuIG1fc2VhcmNoaW5nRm9yTm9kZTsgfTsKKyAgICBib29sIHNlYXJjaGluZ0Zvck5vZGVJ
blBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3NlYXJjaGluZ0Zvck5vZGU7IH0KICAgICB2b2lkIG1v
dXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2Rp
ZmllckZsYWdzKTsKICAgICB2b2lkIGhhbmRsZU1vdXNlUHJlc3NPbk5vZGUoTm9kZSopOwogCkBA
IC0yMjAsMTMgKzIyMCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrVGltZWxpbmUoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKTsgCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAg
ICB2b2lkIGFkZFByb2ZpbGUoUGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+LCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCBjb25zdCBKU0M6OlVTdHJpbmcmIHNvdXJjZVVSTCk7Ci0gICAgdm9pZCBhZGRQcm9m
aWxlRmluaXNoZWRNZXNzYWdlVG9Db25zb2xlKFBhc3NSZWZQdHI8SlNDOjpQcm9maWxlPiwgdW5z
aWduZWQgbGluZU51bWJlciwgY29uc3QgSlNDOjpVU3RyaW5nJiBzb3VyY2VVUkwpOwotICAgIHZv
aWQgYWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKGNvbnN0IEpTQzo6VVN0cmluZyYg
dGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IEpTQzo6VVN0cmluZyYgc291cmNlVVJM
KTsKKyAgICB2b2lkIGFkZFByb2ZpbGUoUGFzc1JlZlB0cjxTY3JpcHRQcm9maWxlPiwgdW5zaWdu
ZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworICAgIHZvaWQgYWRkUHJv
ZmlsZUZpbmlzaGVkTWVzc2FnZVRvQ29uc29sZShQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+LCB1
bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisgICAgdm9pZCBh
ZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5z
aWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogCiAgICAgYm9vbCBp
c1JlY29yZGluZ1VzZXJJbml0aWF0ZWRQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9yZWNvcmRp
bmdVc2VySW5pdGlhdGVkUHJvZmlsZTsgfQogCi0gICAgSlNDOjpVU3RyaW5nIGdldEN1cnJlbnRV
c2VySW5pdGlhdGVkUHJvZmlsZU5hbWUoYm9vbCBpbmNyZW1lbnRQcm9maWxlTnVtYmVyKTsKKyAg
ICBTdHJpbmcgZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShib29sIGluY3JlbWVu
dFByb2ZpbGVOdW1iZXIpOwogICAgIHZvaWQgc3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nKFRp
bWVyPEluc3BlY3RvckNvbnRyb2xsZXI+KiA9IDApOwogICAgIHZvaWQgc3RvcFVzZXJJbml0aWF0
ZWRQcm9maWxpbmcoKTsKIApAQCAtMjY4LDE0ICsyNjgsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRlbGV0ZUNvb2tpZShjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9t
YWluKTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIHR5cGVkZWYgSGFz
aE1hcDx1bnNpZ25lZCBpbnQsIFJlZlB0cjxKU0M6OlByb2ZpbGU+ID4gUHJvZmlsZXNNYXA7Cisg
ICAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkIGludCwgUmVmUHRyPFNjcmlwdFByb2ZpbGU+ID4g
UHJvZmlsZXNNYXA7CiAKICAgICB2b2lkIHN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZ1Nvb24o
KTsKICAgICB2b2lkIHRvZ2dsZVJlY29yZEJ1dHRvbihib29sKTsKICAgICB2b2lkIGVuYWJsZURl
YnVnZ2VyRnJvbUZyb250ZW5kKGJvb2wgYWx3YXlzKTsKICAgICB2b2lkIGdldFByb2ZpbGVIZWFk
ZXJzKGxvbmcgY2FsbElkKTsKICAgICB2b2lkIGdldFByb2ZpbGUobG9uZyBjYWxsSWQsIHVuc2ln
bmVkIHVpZCk7Ci0gICAgU2NyaXB0T2JqZWN0IGNyZWF0ZVByb2ZpbGVIZWFkZXIoY29uc3QgSlND
OjpQcm9maWxlJiBwcm9maWxlKTsKKyAgICBTY3JpcHRPYmplY3QgY3JlYXRlUHJvZmlsZUhlYWRl
cihjb25zdCBTY3JpcHRQcm9maWxlJiBwcm9maWxlKTsKICNlbmRpZgogI2lmIEVOQUJMRShEQVRB
QkFTRSkKICAgICB2b2lkIHNlbGVjdERhdGFiYXNlKERhdGFiYXNlKiBkYXRhYmFzZSk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAgYi9XZWJDb3JlL3BhZ2UvQ29uc29sZS5j
cHAKaW5kZXggMjI3M2E1ZS4uOGY1NWM3OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0NvbnNv
bGUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcApAQCAtNDEsMTEgKzQxLDkgQEAK
ICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCi0j
aWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0jaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmls
ZXIuaD4KLSNlbmRpZgotCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCisjaW5jbHVkZSAi
U2NyaXB0UHJvZmlsZS5oIgorI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCiAjaW5jbHVkZSA8
c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIApAQCAtMzE0LDM4ICszMTIs
NDAgQEAgU3RyaW5nIENvbnNvbGU6Omxhc3RXTUxFcnJvck1lc3NhZ2UoKSBjb25zdAogfQogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKy8vIEZJWE1FOiAiVVNFKFY4
KSIgYW5kICJVU0UoSlNDKSIgYmVsb3cgYXJlIHRlbXBvcmFyeSBtZWFzdXJlcyB1bnRpbCBKQVZB
U0NSSVBUX0RFQlVHR0VSIGlzCisvLyBlbmFibGVkIHdoZW4gYnVpbGRpbmcgQ2hyb21pdW0uCisj
aWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpIHx8IFVTRShWOCkKIAotdm9pZCBDb25zb2xl
Ojpwcm9maWxlKGNvbnN0IEpTQzo6VVN0cmluZyYgdGl0bGUsIFNjcmlwdENhbGxTdGFjayogY2Fs
bFN0YWNrKQordm9pZCBDb25zb2xlOjpwcm9maWxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNjcmlw
dENhbGxTdGFjayogY2FsbFN0YWNrKQogewogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7
CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9S
KQorI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIFVTRShKU0MpCiAgICAgSW5zcGVjdG9yQ29udHJv
bGxlciogY29udHJvbGxlciA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKICAgICAvLyBG
SVhNRTogbG9nIGEgY29uc29sZSBtZXNzYWdlIHdoZW4gcHJvZmlsaW5nIGlzIGRpc2FibGVkLgog
ICAgIGlmICghY29udHJvbGxlci0+cHJvZmlsZXJFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsK
ICNlbmRpZgogCi0gICAgSlNDOjpVU3RyaW5nIHJlc29sdmVkVGl0bGUgPSB0aXRsZTsKLSAgICBp
ZiAodGl0bGUuaXNOdWxsKCkpICAgLy8gbm8gdGl0bGUgc28gZ2l2ZSBpdCB0aGUgbmV4dCB1c2Vy
IGluaXRpYXRlZCBwcm9maWxlIHRpdGxlLgotI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgU3Ry
aW5nIHJlc29sdmVkVGl0bGUgPSB0aXRsZTsKKyAgICBpZiAodGl0bGUuaXNOdWxsKCkpIC8vIG5v
IHRpdGxlIHNvIGdpdmUgaXQgdGhlIG5leHQgdXNlciBpbml0aWF0ZWQgcHJvZmlsZSB0aXRsZS4K
KyNpZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBVU0UoSlNDKQogICAgICAgICByZXNvbHZlZFRpdGxl
ID0gY29udHJvbGxlci0+Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSh0cnVlKTsK
ICNlbHNlCiAgICAgICAgIHJlc29sdmVkVGl0bGUgPSAiIjsKICNlbmRpZgogCi0gICAgSlNDOjpQ
cm9maWxlcjo6cHJvZmlsZXIoKS0+c3RhcnRQcm9maWxpbmcoY2FsbFN0YWNrLT5zdGF0ZSgpLCBy
ZXNvbHZlZFRpdGxlKTsKKyAgICBTY3JpcHRQcm9maWxlcjo6c3RhcnQoY2FsbFN0YWNrLT5zdGF0
ZSgpLCByZXNvbHZlZFRpdGxlKTsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCisjaWYgRU5BQkxF
KElOU1BFQ1RPUikgJiYgVVNFKEpTQykKICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RD
YWxsZXIgPSBjYWxsU3RhY2stPmF0KDApOwogICAgIGNvbnRyb2xsZXItPmFkZFN0YXJ0UHJvZmls
aW5nTWVzc2FnZVRvQ29uc29sZShyZXNvbHZlZFRpdGxlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIo
KSwgbGFzdENhbGxlci5zb3VyY2VVUkwoKSk7CiAjZW5kaWYKIH0KIAotdm9pZCBDb25zb2xlOjpw
cm9maWxlRW5kKGNvbnN0IEpTQzo6VVN0cmluZyYgdGl0bGUsIFNjcmlwdENhbGxTdGFjayogY2Fs
bFN0YWNrKQordm9pZCBDb25zb2xlOjpwcm9maWxlRW5kKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNj
cmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQogewogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdl
KCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMzU0LDE5ICszNTQsMTkgQEAgdm9pZCBDb25zb2xlOjpw
cm9maWxlRW5kKGNvbnN0IEpTQzo6VVN0cmluZyYgdGl0bGUsIFNjcmlwdENhbGxTdGFjayogY2Fs
bFN0YWNrKQogICAgIGlmICghdGhpcy0+cGFnZSgpKQogICAgICAgICByZXR1cm47CiAKLSNpZiBF
TkFCTEUoSU5TUEVDVE9SKQorI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIFVTRShKU0MpCiAgICAg
SW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKTsKICAgICBpZiAoIWNvbnRyb2xsZXItPnByb2ZpbGVyRW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAjZW5kaWYKIAotICAgIFJlZlB0cjxKU0M6OlByb2ZpbGU+IHByb2ZpbGUgPSBKU0M6
OlByb2ZpbGVyOjpwcm9maWxlcigpLT5zdG9wUHJvZmlsaW5nKGNhbGxTdGFjay0+c3RhdGUoKSwg
dGl0bGUpOworICAgIFJlZlB0cjxTY3JpcHRQcm9maWxlPiBwcm9maWxlID0gU2NyaXB0UHJvZmls
ZXI6OnN0b3AoY2FsbFN0YWNrLT5zdGF0ZSgpLCB0aXRsZSk7CiAgICAgaWYgKCFwcm9maWxlKQog
ICAgICAgICByZXR1cm47CiAKICAgICBtX3Byb2ZpbGVzLmFwcGVuZChwcm9maWxlKTsKIAotI2lm
IEVOQUJMRShJTlNQRUNUT1IpCisjaWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgVVNFKEpTQykKICAg
ICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGxhc3RDYWxsZXIgPSBjYWxsU3RhY2stPmF0KDApOwog
ICAgIGNvbnRyb2xsZXItPmFkZFByb2ZpbGUocHJvZmlsZSwgbGFzdENhbGxlci5saW5lTnVtYmVy
KCksIGxhc3RDYWxsZXIuc291cmNlVVJMKCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BhZ2UvQ29uc29sZS5oIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAppbmRleCBlYTNhMTYxLi5i
YmYyYWM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5oCisrKyBiL1dlYkNvcmUv
cGFnZS9Db25zb2xlLmgKQEAgLTMxLDEwMSArMzEsMTAxIEBACiAKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0jaW5jbHVkZSA8
cHJvZmlsZXIvUHJvZmlsZS5oPgotI2VuZGlmCisjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgog
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0
cjxKU0M6OlByb2ZpbGU+ID4gUHJvZmlsZXNBcnJheTsKKy8vIEZJWE1FOiAiVVNFKFY4KSIgYW5k
ICJVU0UoSlNDKSIgYmVsb3cgYXJlIHRlbXBvcmFyeSBtZWFzdXJlcyB1bnRpbCBKQVZBU0NSSVBU
X0RFQlVHR0VSIGlzCisvLyBlbmFibGVkIHdoZW4gYnVpbGRpbmcgQ2hyb21pdW0uCisjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpIHx8IFVTRShWOCkKK3R5cGVkZWYgVmVjdG9yPFJlZlB0
cjxTY3JpcHRQcm9maWxlPiA+IFByb2ZpbGVzQXJyYXk7CiAjZW5kaWYKIAotICAgIGNsYXNzIEZy
YW1lOwotICAgIGNsYXNzIFBhZ2U7Ci0gICAgY2xhc3MgU3RyaW5nOwotICAgIGNsYXNzIFNjcmlw
dENhbGxTdGFjazsKLQotICAgIC8vIEtlZXAgaW4gc3luYyB3aXRoIGluc3BlY3Rvci9mcm9udC1l
bmQvQ29uc29sZS5qcwotICAgIGVudW0gTWVzc2FnZVNvdXJjZSB7Ci0gICAgICAgIEhUTUxNZXNz
YWdlU291cmNlLAotICAgICAgICBXTUxNZXNzYWdlU291cmNlLAotICAgICAgICBYTUxNZXNzYWdl
U291cmNlLAotICAgICAgICBKU01lc3NhZ2VTb3VyY2UsCi0gICAgICAgIENTU01lc3NhZ2VTb3Vy
Y2UsCi0gICAgICAgIE90aGVyTWVzc2FnZVNvdXJjZQotICAgIH07Ci0KLSAgICBlbnVtIE1lc3Nh
Z2VUeXBlIHsKLSAgICAgICAgTG9nTWVzc2FnZVR5cGUsCi0gICAgICAgIE9iamVjdE1lc3NhZ2VU
eXBlLAotICAgICAgICBUcmFjZU1lc3NhZ2VUeXBlLAotICAgICAgICBTdGFydEdyb3VwTWVzc2Fn
ZVR5cGUsCi0gICAgICAgIEVuZEdyb3VwTWVzc2FnZVR5cGUsCi0gICAgICAgIEFzc2VydE1lc3Nh
Z2VUeXBlCi0gICAgfTsKLQotICAgIGVudW0gTWVzc2FnZUxldmVsIHsKLSAgICAgICAgVGlwTWVz
c2FnZUxldmVsLAotICAgICAgICBMb2dNZXNzYWdlTGV2ZWwsCi0gICAgICAgIFdhcm5pbmdNZXNz
YWdlTGV2ZWwsCi0gICAgICAgIEVycm9yTWVzc2FnZUxldmVsLAotICAgICAgICBEZWJ1Z01lc3Nh
Z2VMZXZlbAotICAgIH07Ci0KLSAgICBjbGFzcyBDb25zb2xlIDogcHVibGljIFJlZkNvdW50ZWQ8
Q29uc29sZT4gewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29uc29s
ZT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENvbnNvbGUoZnJh
bWUpKTsgfQotCi0gICAgICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OwotICAgICAgICB2b2lkIGRp
c2Nvbm5lY3RGcmFtZSgpOwotCi0gICAgICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNl
LCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2ln
bmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKLQotICAgICAgICB2b2lk
IGRlYnVnKFNjcmlwdENhbGxTdGFjayopOwotICAgICAgICB2b2lkIGVycm9yKFNjcmlwdENhbGxT
dGFjayopOwotICAgICAgICB2b2lkIGluZm8oU2NyaXB0Q2FsbFN0YWNrKik7Ci0gICAgICAgIHZv
aWQgbG9nKFNjcmlwdENhbGxTdGFjayopOwotICAgICAgICB2b2lkIHdhcm4oU2NyaXB0Q2FsbFN0
YWNrKik7Ci0gICAgICAgIHZvaWQgZGlyKFNjcmlwdENhbGxTdGFjayopOwotICAgICAgICB2b2lk
IGRpcnhtbChTY3JpcHRDYWxsU3RhY2sqKTsKLSAgICAgICAgdm9pZCB0cmFjZShTY3JpcHRDYWxs
U3RhY2sqKTsKLSAgICAgICAgdm9pZCBhc3NlcnRDb25kaXRpb24oYm9vbCBjb25kaXRpb24sIFNj
cmlwdENhbGxTdGFjayopOwotICAgICAgICB2b2lkIGNvdW50KFNjcmlwdENhbGxTdGFjayopOwot
ICAgICAgICB2b2lkIG1hcmtUaW1lbGluZShTY3JpcHRDYWxsU3RhY2sqKTsKK2NsYXNzIEZyYW1l
OworY2xhc3MgUGFnZTsKK2NsYXNzIFN0cmluZzsKK2NsYXNzIFNjcmlwdENhbGxTdGFjazsKKwor
Ly8gS2VlcCBpbiBzeW5jIHdpdGggaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlLmpzCitlbnVt
IE1lc3NhZ2VTb3VyY2UgeworICAgIEhUTUxNZXNzYWdlU291cmNlLAorICAgIFdNTE1lc3NhZ2VT
b3VyY2UsCisgICAgWE1MTWVzc2FnZVNvdXJjZSwKKyAgICBKU01lc3NhZ2VTb3VyY2UsCisgICAg
Q1NTTWVzc2FnZVNvdXJjZSwKKyAgICBPdGhlck1lc3NhZ2VTb3VyY2UKK307CisKK2VudW0gTWVz
c2FnZVR5cGUgeworICAgIExvZ01lc3NhZ2VUeXBlLAorICAgIE9iamVjdE1lc3NhZ2VUeXBlLAor
ICAgIFRyYWNlTWVzc2FnZVR5cGUsCisgICAgU3RhcnRHcm91cE1lc3NhZ2VUeXBlLAorICAgIEVu
ZEdyb3VwTWVzc2FnZVR5cGUsCisgICAgQXNzZXJ0TWVzc2FnZVR5cGUKK307CisKK2VudW0gTWVz
c2FnZUxldmVsIHsKKyAgICBUaXBNZXNzYWdlTGV2ZWwsCisgICAgTG9nTWVzc2FnZUxldmVsLAor
ICAgIFdhcm5pbmdNZXNzYWdlTGV2ZWwsCisgICAgRXJyb3JNZXNzYWdlTGV2ZWwsCisgICAgRGVi
dWdNZXNzYWdlTGV2ZWwKK307CisKK2NsYXNzIENvbnNvbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxD
b25zb2xlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29uc29sZT4gY3JlYXRl
KEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENvbnNvbGUoZnJhbWUpKTsgfQor
CisgICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7CisgICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsK
KworICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2Fn
ZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKTsKKworICAgIHZvaWQgZGVidWcoU2NyaXB0Q2FsbFN0YWNrKik7
CisgICAgdm9pZCBlcnJvcihTY3JpcHRDYWxsU3RhY2sqKTsKKyAgICB2b2lkIGluZm8oU2NyaXB0
Q2FsbFN0YWNrKik7CisgICAgdm9pZCBsb2coU2NyaXB0Q2FsbFN0YWNrKik7CisgICAgdm9pZCB3
YXJuKFNjcmlwdENhbGxTdGFjayopOworICAgIHZvaWQgZGlyKFNjcmlwdENhbGxTdGFjayopOwor
ICAgIHZvaWQgZGlyeG1sKFNjcmlwdENhbGxTdGFjayopOworICAgIHZvaWQgdHJhY2UoU2NyaXB0
Q2FsbFN0YWNrKik7CisgICAgdm9pZCBhc3NlcnRDb25kaXRpb24oYm9vbCBjb25kaXRpb24sIFNj
cmlwdENhbGxTdGFjayopOworICAgIHZvaWQgY291bnQoU2NyaXB0Q2FsbFN0YWNrKik7CisgICAg
dm9pZCBtYXJrVGltZWxpbmUoU2NyaXB0Q2FsbFN0YWNrKik7CiAjaWYgRU5BQkxFKFdNTCkKLSAg
ICAgICAgU3RyaW5nIGxhc3RXTUxFcnJvck1lc3NhZ2UoKSBjb25zdDsKKyAgICBTdHJpbmcgbGFz
dFdNTEVycm9yTWVzc2FnZSgpIGNvbnN0OwogI2VuZGlmCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRf
REVCVUdHRVIpCi0gICAgICAgIHZvaWQgcHJvZmlsZShjb25zdCBKU0M6OlVTdHJpbmcmLCBTY3Jp
cHRDYWxsU3RhY2sqKTsKLSAgICAgICAgdm9pZCBwcm9maWxlRW5kKGNvbnN0IEpTQzo6VVN0cmlu
ZyYsIFNjcmlwdENhbGxTdGFjayopOworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSB8
fCBVU0UoVjgpCisgICAgdm9pZCBwcm9maWxlKGNvbnN0IFN0cmluZyYsIFNjcmlwdENhbGxTdGFj
ayopOworICAgIHZvaWQgcHJvZmlsZUVuZChjb25zdCBTdHJpbmcmLCBTY3JpcHRDYWxsU3RhY2sq
KTsKICNlbmRpZgotICAgICAgICB2b2lkIHRpbWUoY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIHZv
aWQgdGltZUVuZChjb25zdCBTdHJpbmcmLCBTY3JpcHRDYWxsU3RhY2sqKTsKLSAgICAgICAgdm9p
ZCBncm91cChTY3JpcHRDYWxsU3RhY2sqKTsKLSAgICAgICAgdm9pZCBncm91cEVuZCgpOworICAg
IHZvaWQgdGltZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHRpbWVFbmQoY29uc3QgU3RyaW5n
JiwgU2NyaXB0Q2FsbFN0YWNrKik7CisgICAgdm9pZCBncm91cChTY3JpcHRDYWxsU3RhY2sqKTsK
KyAgICB2b2lkIGdyb3VwRW5kKCk7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgc2hvdWxkUHJpbnRF
eGNlcHRpb25zKCk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHNldFNob3VsZFByaW50RXhjZXB0aW9u
cyhib29sKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRQcmludEV4Y2VwdGlvbnMoKTsKKyAgICBz
dGF0aWMgdm9pZCBzZXRTaG91bGRQcmludEV4Y2VwdGlvbnMoYm9vbCk7CiAKICNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICAgICAgY29uc3QgUHJvZmlsZXNBcnJheSYgcHJvZmls
ZXMoKSBjb25zdCB7IHJldHVybiBtX3Byb2ZpbGVzOyB9CisgICAgY29uc3QgUHJvZmlsZXNBcnJh
eSYgcHJvZmlsZXMoKSBjb25zdCB7IHJldHVybiBtX3Byb2ZpbGVzOyB9CiAjZW5kaWYKIAotICAg
IHByaXZhdGU6Ci0gICAgICAgIGlubGluZSBQYWdlKiBwYWdlKCkgY29uc3Q7Ci0gICAgICAgIHZv
aWQgYWRkTWVzc2FnZShNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBTY3JpcHRDYWxsU3RhY2sq
LCBib29sIGFjY2VwdE5vQXJndW1lbnRzID0gZmFsc2UpOworcHJpdmF0ZToKKyAgICBpbmxpbmUg
UGFnZSogcGFnZSgpIGNvbnN0OworICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlVHlwZSwgTWVz
c2FnZUxldmVsLCBTY3JpcHRDYWxsU3RhY2sqLCBib29sIGFjY2VwdE5vQXJndW1lbnRzID0gZmFs
c2UpOwogCi0gICAgICAgIENvbnNvbGUoRnJhbWUqKTsKKyAgICBDb25zb2xlKEZyYW1lKik7CiAK
LSAgICAgICAgRnJhbWUqIG1fZnJhbWU7Ci0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
Ci0gICAgICAgIFByb2ZpbGVzQXJyYXkgbV9wcm9maWxlczsKKyAgICBGcmFtZSogbV9mcmFtZTsK
KyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgfHwgVVNFKFY4KQorICAgIFByb2ZpbGVz
QXJyYXkgbV9wcm9maWxlczsKICNlbmRpZgotICAgIH07Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Db25zb2xlLmlkbCBiL1dlYkNvcmUv
cGFnZS9Db25zb2xlLmlkbAppbmRleCBiOWMwYTU3Li4yOTAyMzViIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvQ29uc29sZS5pZGwKKysrIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCkBAIC01
MSw4ICs1MSw4IEBAIG1vZHVsZSB3aW5kb3cgewogI2VuZGlmCiAKICNpZiBkZWZpbmVkKEVOQUJM
RV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiB8fCBk
ZWZpbmVkKFY4X0JJTkRJTkcpICYmIFY4X0JJTkRJTkcKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBw
cm9maWxlKGluIFtDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcg
dGl0bGUpOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIHByb2ZpbGVFbmQoaW4gW0NvbnZlcnRVbmRl
ZmluZWRPck51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyB0aXRsZSk7CisgICAgICAgIFtDdXN0
b21Bcmd1bWVudEhhbmRsaW5nXSB2b2lkIHByb2ZpbGUoaW4gW0NvbnZlcnRVbmRlZmluZWRPck51
bGxUb051bGxTdHJpbmddIERPTVN0cmluZyB0aXRsZSk7CisgICAgICAgIFtDdXN0b21Bcmd1bWVu
dEhhbmRsaW5nXSB2b2lkIHByb2ZpbGVFbmQoaW4gW0NvbnZlcnRVbmRlZmluZWRPck51bGxUb051
bGxTdHJpbmddIERPTVN0cmluZyB0aXRsZSk7CiAjZW5kaWYKIAogICAgICAgICB2b2lkIHRpbWUo
aW4gW0NvbnZlcnRVbmRlZmluZWRPck51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyB0aXRsZSk7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>