<?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>180966</bug_id>
          
          <creation_ts>2017-12-18 23:41:34 -0800</creation_ts>
          <short_desc>[YARR] Yarr should return ErrorCode instead of error messages (const char*)</short_desc>
          <delta_ts>2017-12-19 11:27:40 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>180970</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1383069</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-18 23:41:34 -0800</bug_when>
    <thetext>[YARR] Yarr should return ErrorCode instead of error messages (const char*)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383073</commentid>
    <comment_count>1</comment_count>
      <attachid>329742</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-19 00:26:15 -0800</bug_when>
    <thetext>Created attachment 329742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383074</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-19 00:28:53 -0800</bug_when>
    <thetext>Attachment 329742 did not pass style-queue:


ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:36:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:37:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:38:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:39:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:40:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:41:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:42:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:43:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:44:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:45:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:46:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:47:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:48:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:49:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:50:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:51:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:52:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:53:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:54:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:55:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 20 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383108</commentid>
    <comment_count>3</comment_count>
      <attachid>329752</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-19 03:42:24 -0800</bug_when>
    <thetext>Created attachment 329752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383109</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-19 03:43:55 -0800</bug_when>
    <thetext>Attachment 329752 did not pass style-queue:


ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:36:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:37:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:38:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:39:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:40:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:41:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:42:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:43:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:44:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:45:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:46:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:47:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:48:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:49:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:50:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:51:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:52:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:53:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:54:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:55:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 20 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383115</commentid>
    <comment_count>5</comment_count>
      <attachid>329754</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-19 04:19:09 -0800</bug_when>
    <thetext>Created attachment 329754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383116</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-19 04:20:46 -0800</bug_when>
    <thetext>Attachment 329754 did not pass style-queue:


ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:36:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:37:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:38:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:39:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:40:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:41:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:42:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:43:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:44:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:45:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:46:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:47:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:48:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:49:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:50:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:51:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:52:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:53:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:54:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:55:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 20 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383117</commentid>
    <comment_count>7</comment_count>
      <attachid>329755</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-19 04:30:43 -0800</bug_when>
    <thetext>Created attachment 329755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383118</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-19 04:32:14 -0800</bug_when>
    <thetext>Attachment 329755 did not pass style-queue:


ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:36:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:37:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:38:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:39:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:40:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:41:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:42:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:43:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:44:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:45:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:46:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:47:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:48:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:49:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:50:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:51:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:52:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:53:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:54:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/yarr/YarrErrorCode.cpp:55:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 20 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383159</commentid>
    <comment_count>9</comment_count>
      <attachid>329755</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-19 09:41:35 -0800</bug_when>
    <thetext>Comment on attachment 329755
Patch

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

r=me with suggestions.

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Currently, Yarr returns const char*` to point an error message. But it is

I suggest replacing &quot;to point an error message.&quot; with &quot;for an error message when needed.&quot;

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        easier to handle error status that Yarr returns an error code instead of

I suggest replacing &quot;that Yarr returns&quot; with &quot;if Yarr returns&quot;.

&gt; Source/JavaScriptCore/runtime/RegExp.h:156
&gt; +    Yarr::ErrorCode m_constructionError { Yarr::ErrorCode::NoError };

I suggest renaming m_constructionError to m_constructionErrorCode.  &quot;m_constructionError&quot; can be ambiguous in that it can suggest that there is definitely an error.  &quot;m_constructionErrorCode &quot; also matches the new type.  I&apos;m ok with doing this renaming in a separate patch if you prefer to keep this patch cleaner.

&gt; Source/JavaScriptCore/yarr/RegularExpression.cpp:78
&gt; +    JSC::Yarr::ErrorCode m_constructionError { Yarr::ErrorCode::NoError };

Ditto.  I suggest renaming to m_constructionErrorCode.

&gt; Source/JavaScriptCore/yarr/YarrParser.h:1105
&gt; +    ErrorCode m_err { ErrorCode::NoError };

I suggest renaming m_err to m_errCode to match the new type.

&gt; Source/JavaScriptCore/yarr/YarrPattern.cpp:1131
&gt; +YarrPattern::YarrPattern(const String&amp; pattern, RegExpFlags flags, ErrorCode* error, void* stackLimit)

Since we&apos;re always expecting a return error code, I suggest making this argument a ErrorCode&amp; instead of a pointer.

&gt; Source/WebCore/contentextensions/URLFilterParser.cpp:351
&gt; +    if (JSC::Yarr::parse(patternParser, pattern, false, 0) == JSC::Yarr::ErrorCode::NoError)

nit: Why not continue to use the same !hasError() idiom used everywhere else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383196</commentid>
    <comment_count>10</comment_count>
      <attachid>329755</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-19 11:15:26 -0800</bug_when>
    <thetext>Comment on attachment 329755
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt; +        Currently, Yarr returns const char*` to point an error message. But it is
&gt; 
&gt; I suggest replacing &quot;to point an error message.&quot; with &quot;for an error message when needed.&quot;

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:9
&gt;&gt; +        easier to handle error status that Yarr returns an error code instead of
&gt; 
&gt; I suggest replacing &quot;that Yarr returns&quot; with &quot;if Yarr returns&quot;.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/RegExp.h:156
&gt;&gt; +    Yarr::ErrorCode m_constructionError { Yarr::ErrorCode::NoError };
&gt; 
&gt; I suggest renaming m_constructionError to m_constructionErrorCode.  &quot;m_constructionError&quot; can be ambiguous in that it can suggest that there is definitely an error.  &quot;m_constructionErrorCode &quot; also matches the new type.  I&apos;m ok with doing this renaming in a separate patch if you prefer to keep this patch cleaner.

Nice. I&apos;ll do this change in this patch.

&gt;&gt; Source/JavaScriptCore/yarr/RegularExpression.cpp:78
&gt;&gt; +    JSC::Yarr::ErrorCode m_constructionError { Yarr::ErrorCode::NoError };
&gt; 
&gt; Ditto.  I suggest renaming to m_constructionErrorCode.

Fixed.

&gt;&gt; Source/JavaScriptCore/yarr/YarrParser.h:1105
&gt;&gt; +    ErrorCode m_err { ErrorCode::NoError };
&gt; 
&gt; I suggest renaming m_err to m_errCode to match the new type.

Fixed. I&apos;ve changed this to &apos;m_errorCode&apos;.

&gt;&gt; Source/JavaScriptCore/yarr/YarrPattern.cpp:1131
&gt;&gt; +YarrPattern::YarrPattern(const String&amp; pattern, RegExpFlags flags, ErrorCode* error, void* stackLimit)
&gt; 
&gt; Since we&apos;re always expecting a return error code, I suggest making this argument a ErrorCode&amp; instead of a pointer.

Sounds nice. Fixed.

&gt;&gt; Source/WebCore/contentextensions/URLFilterParser.cpp:351
&gt;&gt; +    if (JSC::Yarr::parse(patternParser, pattern, false, 0) == JSC::Yarr::ErrorCode::NoError)
&gt; 
&gt; nit: Why not continue to use the same !hasError() idiom used everywhere else?

Yeah, we can just use it. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383198</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-19 11:16:27 -0800</bug_when>
    <thetext>Committed r226128: &lt;https://trac.webkit.org/changeset/226128&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383199</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-19 11:17:37 -0800</bug_when>
    <thetext>&lt;rdar://problem/36136121&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383201</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-19 11:27:40 -0800</bug_when>
    <thetext>Committed r226129: &lt;https://trac.webkit.org/changeset/226129&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329742</attachid>
            <date>2017-12-19 00:26:15 -0800</date>
            <delta_ts>2017-12-19 03:42:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180966-20171219172614.patch</filename>
            <type>text/plain</type>
            <size>52121</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZDIwMTFlMThhMDQ1NWYxZDExYzllODFlN2YwMmJhOTk5ODBlNGUwLi5mYWZhZWE0ZmU5MjUzMzJl
ZWUzMjdjMDcwMTFjOTU2OTA2NDUzYzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MCBAQAorMjAxNy0xMi0xOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbWUFSUl0gWWFyciBzaG91bGQgcmV0dXJuIEVycm9yQ29kZSBpbnN0
ZWFkIG9mIGVycm9yIG1lc3NhZ2VzIChjb25zdCBjaGFyKikKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDk2NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgWWFyciByZXR1cm5zIGNvbnN0
IGNoYXIqYCB0byBwb2ludCBhbiBlcnJvciBtZXNzYWdlLiBCdXQgaXQgaXMKKyAgICAgICAgZWFz
aWVyIHRvIGhhbmRsZSBlcnJvciBzdGF0dXMgdGhhdCBZYXJyIHJldHVybnMgYW4gZXJyb3IgY29k
ZSBpbnN0ZWFkIG9mCisgICAgICAgIGBjb25zdCBjaGFyKmAuCisKKyAgICAgICAgSW4gdGhpcyBw
YXRjaCwgd2UgaW50cm9kdWNlIFlhcnI6OkVycm9yQ29kZS4gWWFyciByZXR1cm5zIGl0IGluc3Rl
YWQgb2YKKyAgICAgICAgYGNvbnN0IGNoYXIqYC4gYHN0ZDo6ZXhwZWN0ZWQ8dm9pZCwgWWFycjo6
RXJyb3JDb2RlPmAgd291bGQgYmUgYXBwcm9wcmlhdGUKKyAgICAgICAgZm9yIHRoZSBZYXJyIEFQ
SSBpbnRlcmZhY2UuIEJ1dCBpdCByZXF1aXJlcyBzdWJzdGFudGlhbCBjaGFuZ2VzIHJlbW92aW5n
CisgICAgICAgIEVycm9yQ29kZTo6Tm9FcnJvciwgc28gdGhpcyBwYXRjaCBqdXN0IHVzZXMgdGhl
IGN1cnJlbnQgWWFycjo6RXJyb3JDb2RlIGFzCisgICAgICAgIGEgZmlyc3Qgc3RlcC4KKworICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRp
bGl0aWVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6Q29udGVudFNlYXJjaFV0aWxpdGllczo6
ZmluZE1hZ2ljQ29tbWVudCk6CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAg
ICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUmVnRXhwKToKKyAgICAgICAgKiBwYXJzZXIvUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4
cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVJlZ0V4cCk6CisgICAgICAgICogcnVudGltZS9SZWdF
eHAuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHA6OlJlZ0V4cCk6CisgICAgICAgIChKU0M6OlJl
Z0V4cDo6Ynl0ZUNvZGVDb21waWxlSWZOZWNlc3NhcnkpOgorICAgICAgICAoSlNDOjpSZWdFeHA6
OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmNvbXBpbGVNYXRjaE9ubHkpOgorICAg
ICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAgICAgICogeWFyci9SZWd1bGFyRXhwcmVzc2lv
bi5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uOjpQcml2YXRlOjpQ
cml2YXRlKToKKyAgICAgICAgKEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb246OlByaXZhdGU6
OmNvbXBpbGUpOgorICAgICAgICAqIHlhcnIvWWFyckVycm9yQ29kZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpZYXJyOjplcnJvck1lc3NhZ2UpOgorICAgICAgICAqIHlhcnIvWWFyckVycm9y
Q29kZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4
Q2hlY2tlci5oLgorICAgICAgICAoSlNDOjpZYXJyOjpoYXNFcnJvcik6CisgICAgICAgICogeWFy
ci9ZYXJyUGFyc2VyLmg6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6Q2hhcmFjdGVyQ2xh
c3NQYXJzZXJEZWxlZ2F0ZTo6Q2hhcmFjdGVyQ2xhc3NQYXJzZXJEZWxlZ2F0ZSk6CisgICAgICAg
IChKU0M6OllhcnI6OlBhcnNlcjo6Q2hhcmFjdGVyQ2xhc3NQYXJzZXJEZWxlZ2F0ZTo6YXRvbVBh
dHRlcm5DaGFyYWN0ZXIpOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXJzZXI6OlBhcnNlcik6Cisg
ICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6aXNJZGVudGl0eUVzY2FwZUFuRXJyb3IpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpQYXJzZXI6OnBhcnNlRXNjYXBlKToKKyAgICAgICAgKEpTQzo6WWFy
cjo6UGFyc2VyOjpwYXJzZUNoYXJhY3RlckNsYXNzKToKKyAgICAgICAgKEpTQzo6WWFycjo6UGFy
c2VyOjpwYXJzZVBhcmVudGhlc2VzQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXJzZXI6
OnBhcnNlUGFyZW50aGVzZXNFbmQpOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXJzZXI6OnBhcnNl
UXVhbnRpZmllcik6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6cGFyc2VUb2tlbnMpOgor
ICAgICAgICAoSlNDOjpZYXJyOjpQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKEpTQzo6WWFycjo6
UGFyc2VyOjp0cnlDb25zdW1lVW5pY29kZUVzY2FwZSk6CisgICAgICAgIChKU0M6OllhcnI6OlBh
cnNlcjo6dHJ5Q29uc3VtZVVuaWNvZGVQcm9wZXJ0eUV4cHJlc3Npb24pOgorICAgICAgICAoSlND
OjpZYXJyOjpwYXJzZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0dGVybi5jcHA6CisgICAgICAg
IChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OllhcnJQYXR0ZXJuQ29uc3RydWN0
b3IpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpzZXR1cERp
c2p1bmN0aW9uT2Zmc2V0cyk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3Ry
dWN0b3I6OnNldHVwT2Zmc2V0cyk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuOjpj
b21waWxlKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm46OllhcnJQYXR0ZXJuKToK
KyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm46OmVycm9yTWVzc2FnZSk6IERlbGV0ZWQu
CisgICAgICAgICogeWFyci9ZYXJyUGF0dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJy
UGF0dGVybjo6cmVzZXQpOgorICAgICAgICAqIHlhcnIvWWFyclN5bnRheENoZWNrZXIuY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpjaGVja1N5bnRheCk6CisgICAgICAgICogeWFyci9ZYXJyU3lu
dGF4Q2hlY2tlci5oOgorCiAyMDE3LTEyLTE3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgogCiAgICAgICAgIFtGVExdIE5ld0FycmF5QnVmZmVyIHNob3VsZCBiZSBzaW5r
ZWQgaWYgaXQgaXMgb25seSB1c2VkIGZvciBzcHJlYWRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dAppbmRleCBjZGQwOGQ5MTYzMjJmNzFiNGE1ZGFmYzBjZDNiYjZkMzVjNTI4MzA3Li5lNzI1
M2I5MzJkMjk2NjJlMmFlZWJhNmNhNzM3ZDExY2U3MWM1YmZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0CkBAIC0xMDE1LDYgKzEwMTUsNyBAQCB3YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBl
ckZ1bmN0aW9uLmNwcAogCiB5YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNwcAogeWFyci9ZYXJyQ2Fu
b25pY2FsaXplVUNTMi5jcHAKK3lhcnIvWWFyckVycm9yQ29kZS5jcHAKIHlhcnIvWWFyckludGVy
cHJldGVyLmNwcAogeWFyci9ZYXJySklULmNwcAogeWFyci9ZYXJyUGF0dGVybi5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxp
dGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hV
dGlsaXRpZXMuY3BwCmluZGV4IDg5NTgwOWFkMzY4ZGFkNTk3NDZiY2ZhZWYzMzc4N2ZiNjc0NjBm
NDQuLmUwNTdiYTRkYzU0M2RhYWUzMWZkNGYwMjhhMmJiYjNiNGY4ZGU2MWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRp
bGl0aWVzLmNwcApAQCAtMTc3LDkgKzE3Nyw5IEBAIHN0YXRpYyBTdHJpbmcgZmluZE1hZ2ljQ29t
bWVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluCiAg
ICAgaWYgKGNvbnRlbnQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAg
ICBjb25zdCBjaGFyKiBlcnJvciA9IG51bGxwdHI7CisgICAgSlNDOjpZYXJyOjpFcnJvckNvZGUg
ZXJyb3IgeyBKU0M6OllhcnI6OkVycm9yQ29kZTo6Tm9FcnJvciB9OwogICAgIFlhcnJQYXR0ZXJu
IHBhdHRlcm4ocGF0dGVyblN0cmluZywgSlNDOjpSZWdFeHBGbGFnczo6RmxhZ011bHRpbGluZSwg
JmVycm9yKTsKLSAgICBBU1NFUlQoIWVycm9yKTsKKyAgICBBU1NFUlQoIWhhc0Vycm9yKGVycm9y
KSk7CiAgICAgQnVtcFBvaW50ZXJBbGxvY2F0b3IgcmVnZXhBbGxvY2F0b3I7CiAgICAgYXV0byBi
eXRlY29kZVBhdHRlcm4gPSBieXRlQ29tcGlsZShwYXR0ZXJuLCAmcmVnZXhBbGxvY2F0b3IpOwog
ICAgIEFTU0VSVChieXRlY29kZVBhdHRlcm4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0FTVEJ1aWxkZXIuaAppbmRleCAzYWQzODhjNGM5OTY5ODllZWE5MzM0NDAwZjA1ZjNiMzVjNzcx
NzFmLi44NjFmMGNmNzA2ZjA0MGIzMTg4NTM3YTlhZmVlYTExYjhiZTMzMmRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMzM1LDcgKzMzNSw3IEBAIGNs
YXNzIEFTVEJ1aWxkZXIgewogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVJlZ0V4cChjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBj
b25zdCBJZGVudGlmaWVyJiBmbGFncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0KQogICAg
IHsKLSAgICAgICAgaWYgKFlhcnI6OmNoZWNrU3ludGF4KHBhdHRlcm4uc3RyaW5nKCksIGZsYWdz
LnN0cmluZygpKSkKKyAgICAgICAgaWYgKFlhcnI6Omhhc0Vycm9yKFlhcnI6OmNoZWNrU3ludGF4
KHBhdHRlcm4uc3RyaW5nKCksIGZsYWdzLnN0cmluZygpKSkpCiAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgUmVnRXhwTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgUmVnRXhw
Tm9kZShsb2NhdGlvbiwgcGF0dGVybiwgZmxhZ3MpOwogICAgICAgICBpbnQgc2l6ZSA9IHBhdHRl
cm4ubGVuZ3RoKCkgKyAyOyAvLyArIDIgZm9yIHRoZSB0d28gLydzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggODQ4Yzk3ZDQ0M2IyMTZlNjlkMGIyODdjYWNmNTMx
ZWZmNjczMThkZC4uZjQ4NTEzNmQwOThjYTk5YWUxMzBlZGZjYjVkM2NhNmU4NWQ2YjVlOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtNDU0Nyw4ICs0NTQ3LDgg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmUKICAgICAgICAgbmV4dCgpOwogICAgICAgICBUcmVl
RXhwcmVzc2lvbiByZSA9IGNvbnRleHQuY3JlYXRlUmVnRXhwKGxvY2F0aW9uLCAqcGF0dGVybiwg
KmZsYWdzLCBzdGFydCk7CiAgICAgICAgIGlmICghcmUpIHsKLSAgICAgICAgICAgIGNvbnN0IGNo
YXIqIHlhcnJFcnJvck1zZyA9IFlhcnI6OmNoZWNrU3ludGF4KHBhdHRlcm4tPnN0cmluZygpLCBm
bGFncy0+c3RyaW5nKCkpOwotICAgICAgICAgICAgcmVnZXhGYWlsKHlhcnJFcnJvck1zZyk7Cisg
ICAgICAgICAgICBZYXJyOjpFcnJvckNvZGUgZXJyb3JDb2RlID0gWWFycjo6Y2hlY2tTeW50YXgo
cGF0dGVybi0+c3RyaW5nKCksIGZsYWdzLT5zdHJpbmcoKSk7CisgICAgICAgICAgICByZWdleEZh
aWwoWWFycjo6ZXJyb3JNZXNzYWdlKGVycm9yQ29kZSkpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiByZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hl
Y2tlci5oCmluZGV4IDUzOWM0NzM0MGViNmE2NDVmZTdjYWY0NDFjM2YwMGRiNWIzY2Y2MzIuLjhm
M2FmZTZkMjU2ZmFjOTVlNjkzZDQyMDQ4OTE3ZGY5NWFkMzcxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xODEsNyArMTgxLDcgQEAgY2xh
c3MgU3ludGF4Q2hlY2tlciB7CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVsbChjb25zdCBK
U1Rva2VuTG9jYXRpb24mKSB7IHJldHVybiBOdWxsRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZUJyYWNrZXRBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5
cGUsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBCcmFja2V0
RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIERvdEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZWdFeHAo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3Qg
SWRlbnRpZmllciYgZmxhZ3MsIGludCkgeyByZXR1cm4gWWFycjo6Y2hlY2tTeW50YXgocGF0dGVy
bi5zdHJpbmcoKSwgZmxhZ3Muc3RyaW5nKCkpID8gMCA6IFJlZ0V4cEV4cHI7IH0KKyAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVSZWdFeHAoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRl
bnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MsIGludCkgeyByZXR1cm4g
WWFycjo6aGFzRXJyb3IoWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi5zdHJpbmcoKSwgZmxhZ3Mu
c3RyaW5nKCkpKSA/IDAgOiBSZWdFeHBFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
TmV3RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQs
IGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
TmV3RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQp
IHsgcmV0dXJuIE5ld0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVDb25kaXRpb25h
bEV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25U
eXBlLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gQ29uZGl0aW9uYWxFeHByOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAppbmRleCAwNTExZDIyNTJhZWYwMWJmNjk5
YWRiY2JhMDVjNDY2YmRjYmUxNmMzLi5mNWE0OTk2YTVmMDYzYjM1NTg3NmU3MDE5YWFiODgzZjVl
MjQwMjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKQEAgLTIx
NCwxNiArMjE0LDYgQEAgUmVnRXhwOjpSZWdFeHAoVk0mIHZtLCBjb25zdCBTdHJpbmcmIHBhdHRl
cm5TdHJpbmcsIFJlZ0V4cEZsYWdzIGZsYWdzKQogICAgICwgbV9zdGF0ZShOb3RDb21waWxlZCkK
ICAgICAsIG1fcGF0dGVyblN0cmluZyhwYXR0ZXJuU3RyaW5nKQogICAgICwgbV9mbGFncyhmbGFn
cykKLSAgICAsIG1fY29uc3RydWN0aW9uRXJyb3IoMCkKLSAgICAsIG1fbnVtU3VicGF0dGVybnMo
MCkKLSNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCi0gICAgLCBtX3J0TWF0Y2hPbmx5VG90YWxT
dWJqZWN0U3RyaW5nTGVuKDAuMCkKLSAgICAsIG1fcnRNYXRjaFRvdGFsU3ViamVjdFN0cmluZ0xl
bigwLjApCi0gICAgLCBtX3J0TWF0Y2hPbmx5Q2FsbENvdW50KDApCi0gICAgLCBtX3J0TWF0Y2hP
bmx5Rm91bmRDb3VudCgwKQotICAgICwgbV9ydE1hdGNoQ2FsbENvdW50KDApCi0gICAgLCBtX3J0
TWF0Y2hGb3VuZENvdW50KDApCi0jZW5kaWYKIHsKIH0KIApAQCAtMjgzLDcgKzI3Myw3IEBAIHZv
aWQgUmVnRXhwOjpieXRlQ29kZUNvbXBpbGVJZk5lY2Vzc2FyeShWTSogdm0pCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFlhcnI6OllhcnJQYXR0ZXJuIHBhdHRlcm4obV9wYXR0ZXJuU3RyaW5nLCBt
X2ZsYWdzLCAmbV9jb25zdHJ1Y3Rpb25FcnJvciwgdm0tPnN0YWNrTGltaXQoKSk7Ci0gICAgaWYg
KG1fY29uc3RydWN0aW9uRXJyb3IpIHsKKyAgICBpZiAoaGFzRXJyb3IobV9jb25zdHJ1Y3Rpb25F
cnJvcikpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNpZiBDT01Q
SUxFUl9RVUlSSyhDT05TSURFUlNfVU5SRUFDSEFCTEVfQ09ERSkKICAgICAgICAgbV9zdGF0ZSA9
IFBhcnNlRXJyb3I7CkBAIC0zMDAsNyArMjkwLDcgQEAgdm9pZCBSZWdFeHA6OmNvbXBpbGUoVk0q
IHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCiAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihtX2xvY2spOwogICAgIAogICAgIFlhcnI6OllhcnJQYXR0ZXJuIHBhdHRlcm4obV9w
YXR0ZXJuU3RyaW5nLCBtX2ZsYWdzLCAmbV9jb25zdHJ1Y3Rpb25FcnJvciwgdm0tPnN0YWNrTGlt
aXQoKSk7Ci0gICAgaWYgKG1fY29uc3RydWN0aW9uRXJyb3IpIHsKKyAgICBpZiAoaGFzRXJyb3Io
bV9jb25zdHJ1Y3Rpb25FcnJvcikpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICNpZiBDT01QSUxFUl9RVUlSSyhDT05TSURFUlNfVU5SRUFDSEFCTEVfQ09ERSkKICAg
ICAgICAgbV9zdGF0ZSA9IFBhcnNlRXJyb3I7CkBAIC0zNTYsNyArMzQ2LDcgQEAgdm9pZCBSZWdF
eHA6OmNvbXBpbGVNYXRjaE9ubHkoVk0qIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUp
CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgIAogICAgIFlhcnI6
OllhcnJQYXR0ZXJuIHBhdHRlcm4obV9wYXR0ZXJuU3RyaW5nLCBtX2ZsYWdzLCAmbV9jb25zdHJ1
Y3Rpb25FcnJvciwgdm0tPnN0YWNrTGltaXQoKSk7Ci0gICAgaWYgKG1fY29uc3RydWN0aW9uRXJy
b3IpIHsKKyAgICBpZiAoaGFzRXJyb3IobV9jb25zdHJ1Y3Rpb25FcnJvcikpIHsKICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNpZiBDT01QSUxFUl9RVUlSSyhDT05TSURF
UlNfVU5SRUFDSEFCTEVfQ09ERSkKICAgICAgICAgbV9zdGF0ZSA9IFBhcnNlRXJyb3I7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCmluZGV4IGJiYjI3MzhlNGQzYmRmY2RiYmEx
ZmJiYjZjYWE0OWE0YWM0ZWU2ZTkuLjUyMTEzYTNiMTUwODViMzE3OGI4MWQxY2JmN2U0OTM1YjQ0
Y2YyZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCkBAIC02MCw4ICs2
MCw4IEBAIGNsYXNzIFJlZ0V4cCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgY29uc3Qg
U3RyaW5nJiBwYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuU3RyaW5nOyB9CiAKLSAg
ICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiAhbV9jb25zdHJ1Y3Rpb25FcnJvciAmJiBt
X2ZsYWdzICE9IEludmFsaWRGbGFnczsgfQotICAgIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29uc3RydWN0aW9uRXJyb3I7IH0KKyAgICBib29sIGlzVmFsaWQo
KSBjb25zdCB7IHJldHVybiAhWWFycjo6aGFzRXJyb3IobV9jb25zdHJ1Y3Rpb25FcnJvcikgJiYg
bV9mbGFncyAhPSBJbnZhbGlkRmxhZ3M7IH0KKyAgICBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2Uo
KSBjb25zdCB7IHJldHVybiBZYXJyOjplcnJvck1lc3NhZ2UobV9jb25zdHJ1Y3Rpb25FcnJvcik7
IH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIGludCBtYXRjaChWTSYsIGNvbnN0IFN0cmluZyYs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBWZWN0b3I8aW50PiYgb3ZlY3Rvcik7CiAKQEAgLTEzOCw4
ICsxMzgsNiBAQCBjbGFzcyBSZWdFeHAgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAg
Tm90Q29tcGlsZWQKICAgICB9OwogCi0gICAgUmVnRXhwU3RhdGUgbV9zdGF0ZTsKLQogICAgIHZv
aWQgYnl0ZUNvZGVDb21waWxlSWZOZWNlc3NhcnkoVk0qKTsKIAogICAgIHZvaWQgY29tcGlsZShW
TSosIFlhcnI6OllhcnJDaGFyU2l6ZSk7CkBAIC0xNTIsMTkgKzE1MCwyMCBAQCBjbGFzcyBSZWdF
eHAgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIG1hdGNoQ29tcGFyZVdpdGhJbnRl
cnByZXRlcihjb25zdCBTdHJpbmcmLCBpbnQgc3RhcnRPZmZzZXQsIGludCogb2Zmc2V0VmVjdG9y
LCBpbnQgaml0UmVzdWx0KTsKICNlbmRpZgogCisgICAgUmVnRXhwU3RhdGUgbV9zdGF0ZSB7IE5v
dENvbXBpbGVkIH07CiAgICAgU3RyaW5nIG1fcGF0dGVyblN0cmluZzsKICAgICBSZWdFeHBGbGFn
cyBtX2ZsYWdzOwotICAgIGNvbnN0IGNoYXIqIG1fY29uc3RydWN0aW9uRXJyb3I7Ci0gICAgdW5z
aWduZWQgbV9udW1TdWJwYXR0ZXJuczsKKyAgICBZYXJyOjpFcnJvckNvZGUgbV9jb25zdHJ1Y3Rp
b25FcnJvciB7IFlhcnI6OkVycm9yQ29kZTo6Tm9FcnJvciB9OworICAgIHVuc2lnbmVkIG1fbnVt
U3VicGF0dGVybnMgeyAwIH07CiAgICAgVmVjdG9yPFN0cmluZz4gbV9jYXB0dXJlR3JvdXBOYW1l
czsKICAgICBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQ+IG1fbmFtZWRHcm91cFRvUGFyZW5JbmRl
eDsKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCi0gICAgZG91YmxlIG1fcnRNYXRjaE9ubHlU
b3RhbFN1YmplY3RTdHJpbmdMZW47Ci0gICAgZG91YmxlIG1fcnRNYXRjaFRvdGFsU3ViamVjdFN0
cmluZ0xlbjsKLSAgICB1bnNpZ25lZCBtX3J0TWF0Y2hPbmx5Q2FsbENvdW50OwotICAgIHVuc2ln
bmVkIG1fcnRNYXRjaE9ubHlGb3VuZENvdW50OwotICAgIHVuc2lnbmVkIG1fcnRNYXRjaENhbGxD
b3VudDsKLSAgICB1bnNpZ25lZCBtX3J0TWF0Y2hGb3VuZENvdW50OworICAgIGRvdWJsZSBtX3J0
TWF0Y2hPbmx5VG90YWxTdWJqZWN0U3RyaW5nTGVuIHsgMC4wIH07CisgICAgZG91YmxlIG1fcnRN
YXRjaFRvdGFsU3ViamVjdFN0cmluZ0xlbiB7IDAuMCB9OworICAgIHVuc2lnbmVkIG1fcnRNYXRj
aE9ubHlDYWxsQ291bnQgeyAwIH07CisgICAgdW5zaWduZWQgbV9ydE1hdGNoT25seUZvdW5kQ291
bnQgeyAwIH07CisgICAgdW5zaWduZWQgbV9ydE1hdGNoQ2FsbENvdW50IHsgMCB9OworICAgIHVu
c2lnbmVkIG1fcnRNYXRjaEZvdW5kQ291bnQgeyAwIH07CiAjZW5kaWYKICAgICBDb25jdXJyZW50
SlNMb2NrIG1fbG9jazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
UmVndWxhckV4cHJlc3Npb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVndWxh
ckV4cHJlc3Npb24uY3BwCmluZGV4IDFiMWIyMjQxNWFhODMwOTAzMjNmZDc4ZjFiMjNmNDRjNjU1
OGY5NWUuLjQzYmY0N2Y3YzdmYjE3OTQ3YzJiYzgxZTgyNjBjNjMwYzFlMDQzMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1bGFyRXhwcmVzc2lvbi5jcHAKQEAgLTQy
LDE2ICs0MiwxNCBAQCBjbGFzcyBSZWd1bGFyRXhwcmVzc2lvbjo6UHJpdmF0ZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFJlZ3VsYXJFeHByZXNzaW9uOjpQcml2YXRlPgogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBQcml2YXRlKHBhdHRlcm4sIGNhc2VTZW5zaXRpdml0eSwgbXVsdGlsaW5lTW9k
ZSkpOwogICAgIH0KIAotICAgIGludCBsYXN0TWF0Y2hMZW5ndGg7CisgICAgaW50IGxhc3RNYXRj
aExlbmd0aCB7IC0xIH07CiAKICAgICB1bnNpZ25lZCBtX251bVN1YnBhdHRlcm5zOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxKU0M6OllhcnI6OkJ5dGVjb2RlUGF0dGVybj4gbV9yZWdFeHBCeXRlQ29k
ZTsKIAogcHJpdmF0ZToKICAgICBQcml2YXRlKGNvbnN0IFN0cmluZyYgcGF0dGVybiwgVGV4dENh
c2VTZW5zaXRpdml0eSBjYXNlU2Vuc2l0aXZpdHksIE11bHRpbGluZU1vZGUgbXVsdGlsaW5lTW9k
ZSkKLSAgICAgICAgOiBsYXN0TWF0Y2hMZW5ndGgoLTEpCi0gICAgICAgICwgbV9yZWdFeHBCeXRl
Q29kZShjb21waWxlKHBhdHRlcm4sIGNhc2VTZW5zaXRpdml0eSwgbXVsdGlsaW5lTW9kZSkpCi0g
ICAgICAgICwgbV9jb25zdHJ1Y3Rpb25FcnJvcihudWxscHRyKQorICAgICAgICA6IG1fcmVnRXhw
Qnl0ZUNvZGUoY29tcGlsZShwYXR0ZXJuLCBjYXNlU2Vuc2l0aXZpdHksIG11bHRpbGluZU1vZGUp
KQogICAgIHsKICAgICB9CiAKQEAgLTY2LDggKzY0LDggQEAgY2xhc3MgUmVndWxhckV4cHJlc3Np
b246OlByaXZhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWd1bGFyRXhwcmVzc2lvbjo6UHJpdmF0
ZT4KICAgICAgICAgICAgIGZsYWdzID0gc3RhdGljX2Nhc3Q8UmVnRXhwRmxhZ3M+KGZsYWdzIHwg
RmxhZ011bHRpbGluZSk7CiAKICAgICAgICAgSlNDOjpZYXJyOjpZYXJyUGF0dGVybiBwYXR0ZXJu
KHBhdHRlcm5TdHJpbmcsIGZsYWdzLCAmbV9jb25zdHJ1Y3Rpb25FcnJvcik7Ci0gICAgICAgIGlm
IChtX2NvbnN0cnVjdGlvbkVycm9yKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIlJlZ3VsYXJF
eHByZXNzaW9uOiBZQVJSIGNvbXBpbGUgZmFpbGVkIHdpdGggJyVzJyIsIG1fY29uc3RydWN0aW9u
RXJyb3IpOworICAgICAgICBpZiAoSlNDOjpZYXJyOjpoYXNFcnJvcihtX2NvbnN0cnVjdGlvbkVy
cm9yKSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJSZWd1bGFyRXhwcmVzc2lvbjogWUFSUiBj
b21waWxlIGZhaWxlZCB3aXRoICclcyciLCBKU0M6OllhcnI6OmVycm9yTWVzc2FnZShtX2NvbnN0
cnVjdGlvbkVycm9yKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQog
CkBAIC03Nyw3ICs3NSw3IEBAIGNsYXNzIFJlZ3VsYXJFeHByZXNzaW9uOjpQcml2YXRlIDogcHVi
bGljIFJlZkNvdW50ZWQ8UmVndWxhckV4cHJlc3Npb246OlByaXZhdGU+CiAgICAgfQogCiAgICAg
QnVtcFBvaW50ZXJBbGxvY2F0b3IgbV9yZWdleEFsbG9jYXRvcjsKLSAgICBjb25zdCBjaGFyKiBt
X2NvbnN0cnVjdGlvbkVycm9yOworICAgIEpTQzo6WWFycjo6RXJyb3JDb2RlIG1fY29uc3RydWN0
aW9uRXJyb3IgeyBZYXJyOjpFcnJvckNvZGU6Ok5vRXJyb3IgfTsKIH07CiAKIFJlZ3VsYXJFeHBy
ZXNzaW9uOjpSZWd1bGFyRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmIHBhdHRlcm4sIFRleHRDYXNl
U2Vuc2l0aXZpdHkgY2FzZVNlbnNpdGl2aXR5LCBNdWx0aWxpbmVNb2RlIG11bHRpbGluZU1vZGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyRXJyb3JDb2RlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJFcnJvckNvZGUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmI5MGEwODFjOGVmYWUwZTg3NzFjYjA0YjhlNDZkNTQyZDVhMmI0OWQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyRXJyb3JDb2RlLmNwcApAQCAt
MCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJZYXJyRXJyb3JDb2RlLmgi
CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CisKK2NvbnN0IGNoYXIqIGVycm9y
TWVzc2FnZShFcnJvckNvZGUgZXJyb3IpCit7CisjZGVmaW5lIFJFR0VYUF9FUlJPUl9QUkVGSVgg
IkludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiAiCisgICAgLy8gVGhlIG9yZGVyIG9mIHRoaXMg
YXJyYXkgbXVzdCBtYXRjaCB0aGUgRXJyb3JDb2RlIGVudW0uCisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGVycm9yTWVzc2FnZXNbXSA9IHsKKyAgICAgICAgbnVsbHB0ciwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vRXJyb3IK
KyAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAicmVndWxhciBleHByZXNzaW9uIHRvbyBsYXJn
ZSIsICAgICAgICAgICAgICAgICAgIC8vIFBhdHRlcm5Ub29MYXJnZQorICAgICAgICBSRUdFWFBf
RVJST1JfUFJFRklYICJudW1iZXJzIG91dCBvZiBvcmRlciBpbiB7fSBxdWFudGlmaWVyIiwgICAg
ICAgICAgLy8gUXVhbnRpZmllck91dE9mT3JkZXIKKyAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJ
WCAibm90aGluZyB0byByZXBlYXQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFF1
YW50aWZpZXJXaXRob3V0QXRvbQorICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJudW1iZXIg
dG9vIGxhcmdlIGluIHt9IHF1YW50aWZpZXIiLCAgICAgICAgICAgICAgLy8gUXVhbnRpZmllclRv
b0xhcmdlCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggIm1pc3NpbmcgKSIsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNaXNzaW5nUGFyZW50aGVzZXMKKyAgICAg
ICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAidW5tYXRjaGVkIHBhcmVudGhlc2VzIiwgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFBhcmVudGhlc2VzVW5tYXRjaGVkCisgICAgICAgIFJFR0VYUF9F
UlJPUl9QUkVGSVggInVucmVjb2duaXplZCBjaGFyYWN0ZXIgYWZ0ZXIgKD8iLCAgICAgICAgICAg
ICAgICAvLyBQYXJlbnRoZXNlc1R5cGVJbnZhbGlkCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVG
SVggImludmFsaWQgZ3JvdXAgc3BlY2lmaWVyIG5hbWUiLCAgICAgICAgICAgICAgICAgICAvLyBJ
bnZhbGlkR3JvdXBOYW1lCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggImR1cGxpY2F0ZSBn
cm91cCBzcGVjaWZpZXIgbmFtZSIsICAgICAgICAgICAgICAgICAvLyBEdXBsaWNhdGVHcm91cE5h
bWUKKyAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAibWlzc2luZyB0ZXJtaW5hdGluZyBdIGZv
ciBjaGFyYWN0ZXIgY2xhc3MiLCAgICAgIC8vIENoYXJhY3RlckNsYXNzVW5tYXRjaGVkCisgICAg
ICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggInJhbmdlIG91dCBvZiBvcmRlciBpbiBjaGFyYWN0ZXIg
Y2xhc3MiLCAgICAgICAgICAvLyBDaGFyYWN0ZXJDbGFzc091dE9mT3JkZXIKKyAgICAgICAgUkVH
RVhQX0VSUk9SX1BSRUZJWCAiXFwgYXQgZW5kIG9mIHBhdHRlcm4iLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIEVzY2FwZVVudGVybWluYXRlZAorICAgICAgICBSRUdFWFBfRVJST1JfUFJF
RklYICJpbnZhbGlkIHVuaWNvZGUge30gZXNjYXBlIiwgICAgICAgICAgICAgICAgICAgICAgLy8g
SW52YWxpZFVuaWNvZGVFc2NhcGUKKyAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAiaW52YWxp
ZCBiYWNrcmVmZXJlbmNlIGZvciB1bmljb2RlIHBhdHRlcm4iLCAgICAgIC8vIEludmFsaWRCYWNr
cmVmZXJlbmNlCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggImludmFsaWQgZXNjYXBlZCBj
aGFyYWN0ZXIgZm9yIHVuaWNvZGUgcGF0dGVybiIsICAvLyBJbnZhbGlkSWRlbnRpdHlFc2NhcGUK
KyAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAiaW52YWxpZCBwcm9wZXJ0eSBleHByZXNzaW9u
IiwgICAgICAgICAgICAgICAgICAgIC8vIEludmFsaWRVbmljb2RlUHJvcGVydHlFeHByZXNzaW9u
CisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggInRvbyBtYW55IG5lc3RlZCBkaXNqdW5jdGlv
bnMiLCAgICAgICAgICAgICAgICAgICAvLyBUb29NYW55RGlzanVuY3Rpb25zCisgICAgICAgIFJF
R0VYUF9FUlJPUl9QUkVGSVggInBhdHRlcm4gZXhjZWVkcyBzdHJpbmcgbGVuZ3RoIGxpbWl0cyIs
ICAgICAgICAgICAvLyBPZmZzZXRUb29MYXJnZQorICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklY
ICJpbnZhbGlkIGZsYWdzIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW52
YWxpZFJlZ3VsYXJFeHByZXNzaW9uRmxhZ3MKKyAgICB9OworCisgICAgcmV0dXJuIGVycm9yTWVz
c2FnZXNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVycm9yKV07Cit9CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpZYXJyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
RXJyb3JDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyRXJyb3JDb2RlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGI5NDdiOThmMmU5YzJlOWNiM2M4MzgxZjI5YWY2MTRlOTc1OWNiMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJFcnJvckNvZGUu
aApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IFlhcnIgeworCitlbnVtIGNsYXNzIEVycm9yQ29kZSA6IHVuc2lnbmVkIHsKKyAgICBOb0Vycm9y
ID0gMCwKKyAgICBQYXR0ZXJuVG9vTGFyZ2UsCisgICAgUXVhbnRpZmllck91dE9mT3JkZXIsCisg
ICAgUXVhbnRpZmllcldpdGhvdXRBdG9tLAorICAgIFF1YW50aWZpZXJUb29MYXJnZSwKKyAgICBN
aXNzaW5nUGFyZW50aGVzZXMsCisgICAgUGFyZW50aGVzZXNVbm1hdGNoZWQsCisgICAgUGFyZW50
aGVzZXNUeXBlSW52YWxpZCwKKyAgICBJbnZhbGlkR3JvdXBOYW1lLAorICAgIER1cGxpY2F0ZUdy
b3VwTmFtZSwKKyAgICBDaGFyYWN0ZXJDbGFzc1VubWF0Y2hlZCwKKyAgICBDaGFyYWN0ZXJDbGFz
c091dE9mT3JkZXIsCisgICAgRXNjYXBlVW50ZXJtaW5hdGVkLAorICAgIEludmFsaWRVbmljb2Rl
RXNjYXBlLAorICAgIEludmFsaWRCYWNrcmVmZXJlbmNlLAorICAgIEludmFsaWRJZGVudGl0eUVz
Y2FwZSwKKyAgICBJbnZhbGlkVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbiwKKyAgICBUb29NYW55
RGlzanVuY3Rpb25zLAorICAgIE9mZnNldFRvb0xhcmdlLAorICAgIEludmFsaWRSZWd1bGFyRXhw
cmVzc2lvbkZsYWdzLAorfTsKKworSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgY2hhciogZXJyb3JN
ZXNzYWdlKEVycm9yQ29kZSk7CitpbmxpbmUgYm9vbCBoYXNFcnJvcihFcnJvckNvZGUgZXJyb3JD
b2RlKQoreworICAgIHJldHVybiBlcnJvckNvZGUgIT0gRXJyb3JDb2RlOjpOb0Vycm9yOworfQor
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6WWFycgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyclBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clBhcnNlci5oCmluZGV4IDEwNWMwM2JmMzE0MTAwYWNiNzRiMjkyYTNhYzNiMjM3NTk3NTNmMGUu
LjIxN2FjY2Y0NGRiZTI0MWQxMTI3YjY4ZDBmMjM1ZjBhMzk5NGFmMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJyUGFyc2VyLmgKQEAgLTQxLDcgKzQxLDcgQEAgdGVtcGxhdGU8Y2xh
c3MgRGVsZWdhdGUsIHR5cGVuYW1lIENoYXJUeXBlPgogY2xhc3MgUGFyc2VyIHsKIHByaXZhdGU6
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRnJpZW5kRGVsZWdhdGU+Ci0gICAgZnJpZW5kIGNvbnN0IGNo
YXIqIHBhcnNlKEZyaWVuZERlbGVnYXRlJiwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIGlz
VW5pY29kZSwgdW5zaWduZWQgYmFja1JlZmVyZW5jZUxpbWl0KTsKKyAgICBmcmllbmQgRXJyb3JD
b2RlIHBhcnNlKEZyaWVuZERlbGVnYXRlJiwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIGlz
VW5pY29kZSwgdW5zaWduZWQgYmFja1JlZmVyZW5jZUxpbWl0KTsKIAogICAgIC8qCiAgICAgICog
Q2hhcmFjdGVyQ2xhc3NQYXJzZXJEZWxlZ2F0ZToKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgUGFy
c2VyIHsKICAgICAgKi8KICAgICBjbGFzcyBDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVnYXRlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIENoYXJhY3RlckNsYXNzUGFyc2VyRGVsZWdhdGUoRGVsZWdh
dGUmIGRlbGVnYXRlLCBZYXJyUGF0dGVybjo6RXJyb3JDb2RlJiBlcnIpCisgICAgICAgIENoYXJh
Y3RlckNsYXNzUGFyc2VyRGVsZWdhdGUoRGVsZWdhdGUmIGRlbGVnYXRlLCBFcnJvckNvZGUmIGVy
cikKICAgICAgICAgICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKICAgICAgICAgICAgICwgbV9l
cnIoZXJyKQogICAgICAgICAgICAgLCBtX3N0YXRlKEVtcHR5KQpAQCAtMTE2LDcgKzExNiw3IEBA
IGNsYXNzIFBhcnNlciB7CiAKICAgICAgICAgICAgIGNhc2UgQ2FjaGVkQ2hhcmFjdGVySHlwaGVu
OgogICAgICAgICAgICAgICAgIGlmIChjaCA8IG1fY2hhcmFjdGVyKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OkNoYXJhY3RlckNsYXNzT3V0T2ZPcmRlcjsKKyAg
ICAgICAgICAgICAgICAgICAgbV9lcnIgPSBFcnJvckNvZGU6OkNoYXJhY3RlckNsYXNzT3V0T2ZP
cmRlcjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBtX2RlbGVnYXRlLmF0b21DaGFyYWN0ZXJDbGFzc1JhbmdlKG1fY2hhcmFj
dGVyLCBjaCk7CkBAIC0xOTgsNyArMTk4LDcgQEAgY2xhc3MgUGFyc2VyIHsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIERlbGVnYXRlJiBtX2RlbGVnYXRlOwotICAgICAgICBZYXJyUGF0dGVybjo6
RXJyb3JDb2RlJiBtX2VycjsKKyAgICAgICAgRXJyb3JDb2RlJiBtX2VycjsKICAgICAgICAgZW51
bSBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdGlvblN0YXRlIHsKICAgICAgICAgICAgIEVtcHR5LAog
ICAgICAgICAgICAgQ2FjaGVkQ2hhcmFjdGVyLApAQCAtMjEyLDEyICsyMTIsOSBAQCBjbGFzcyBQ
YXJzZXIgewogICAgIFBhcnNlcihEZWxlZ2F0ZSYgZGVsZWdhdGUsIGNvbnN0IFN0cmluZyYgcGF0
dGVybiwgYm9vbCBpc1VuaWNvZGUsIHVuc2lnbmVkIGJhY2tSZWZlcmVuY2VMaW1pdCkKICAgICAg
ICAgOiBtX2RlbGVnYXRlKGRlbGVnYXRlKQogICAgICAgICAsIG1fYmFja1JlZmVyZW5jZUxpbWl0
KGJhY2tSZWZlcmVuY2VMaW1pdCkKLSAgICAgICAgLCBtX2VycihZYXJyUGF0dGVybjo6Tm9FcnJv
cikKICAgICAgICAgLCBtX2RhdGEocGF0dGVybi5jaGFyYWN0ZXJzPENoYXJUeXBlPigpKQogICAg
ICAgICAsIG1fc2l6ZShwYXR0ZXJuLmxlbmd0aCgpKQotICAgICAgICAsIG1faW5kZXgoMCkKICAg
ICAgICAgLCBtX2lzVW5pY29kZShpc1VuaWNvZGUpCi0gICAgICAgICwgbV9wYXJlbnRoZXNlc05l
c3RpbmdEZXB0aCgwKQogICAgIHsKICAgICB9CiAKQEAgLTIyNyw3ICsyMjQsNyBAQCBjbGFzcyBQ
YXJzZXIgewogICAgIGJvb2wgaXNJZGVudGl0eUVzY2FwZUFuRXJyb3IoaW50IGNoKQogICAgIHsK
ICAgICAgICAgaWYgKG1faXNVbmljb2RlICYmICFzdHJjaHIoIl4kXFwuKis/KClbXXt9fC8iLCBj
aCkpIHsKLSAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OkludmFsaWRJZGVudGl0eUVz
Y2FwZTsKKyAgICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpJbnZhbGlkSWRlbnRpdHlFc2Nh
cGU7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC0yNTcsMTIgKzI1
NCwxMiBAQCBjbGFzcyBQYXJzZXIgewogICAgIHRlbXBsYXRlPGJvb2wgaW5DaGFyYWN0ZXJDbGFz
cywgY2xhc3MgRXNjYXBlRGVsZWdhdGU+CiAgICAgYm9vbCBwYXJzZUVzY2FwZShFc2NhcGVEZWxl
Z2F0ZSYgZGVsZWdhdGUpCiAgICAgewotICAgICAgICBBU1NFUlQoIW1fZXJyKTsKKyAgICAgICAg
QVNTRVJUKCFoYXNFcnJvcihtX2VycikpOwogICAgICAgICBBU1NFUlQocGVlaygpID09ICdcXCcp
OwogICAgICAgICBjb25zdW1lKCk7CiAKICAgICAgICAgaWYgKGF0RW5kT2ZQYXR0ZXJuKCkpIHsK
LSAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OkVzY2FwZVVudGVybWluYXRlZDsKKyAg
ICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpFc2NhcGVVbnRlcm1pbmF0ZWQ7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtMzQzLDcgKzM0MCw3IEBAIGNsYXNz
IFBhcnNlciB7CiAgICAgICAgICAgICAgICAgcmVzdG9yZVN0YXRlKHN0YXRlKTsKIAogICAgICAg
ICAgICAgICAgIGlmIChtX2lzVW5pY29kZSkgewotICAgICAgICAgICAgICAgICAgICBtX2VyciA9
IFlhcnJQYXR0ZXJuOjpJbnZhbGlkQmFja3JlZmVyZW5jZTsKKyAgICAgICAgICAgICAgICAgICAg
bV9lcnIgPSBFcnJvckNvZGU6OkludmFsaWRCYWNrcmVmZXJlbmNlOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAt
NDI5LDcgKzQyNiw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAobV9p
c1VuaWNvZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46
OkludmFsaWRCYWNrcmVmZXJlbmNlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBF
cnJvckNvZGU6OkludmFsaWRCYWNrcmVmZXJlbmNlOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC00NjAs
NyArNDU3LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgZGVsZWdhdGUuYXRvbUJ1aWx0SW5DaGFyYWN0ZXJDbGFzcyhvcHRDbGFzc0lELnZhbHVl
KCksIGVzY2FwZUNoYXIgPT0gJ1AnKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
ICAgIG1fZXJyID0gWWFyclBhdHRlcm46OkludmFsaWRVbmljb2RlUHJvcGVydHlFeHByZXNzaW9u
OworICAgICAgICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpJbnZhbGlkVW5pY29kZVByb3Bl
cnR5RXhwcmVzc2lvbjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTQ4MCwy
MCArNDc3LDIwIEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICAgICAgICAgICAgVUNoYXIzMiBjb2Rl
UG9pbnQgPSAwOwogICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGF0RW5kT2ZQYXR0ZXJuKCkgfHwgIWlzQVNDSUlIZXhEaWdpdChwZWVrKCkpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpJbnZhbGlkVW5pY29kZUVzY2Fw
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpJbnZhbGlkVW5p
Y29kZUVzY2FwZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgY29kZVBvaW50ID0gKGNvZGVQb2ludCA8
PCA0KSB8IHRvQVNDSUlIZXhWYWx1ZShjb25zdW1lKCkpOwogCiAgICAgICAgICAgICAgICAgICAg
IGlmIChjb2RlUG9pbnQgPiBVQ0hBUl9NQVhfVkFMVUUpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpJbnZhbGlkVW5pY29kZUVzY2FwZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpJbnZhbGlkVW5pY29kZUVzY2FwZTsKICAg
ICAgICAgICAgICAgICB9IHdoaWxlICghYXRFbmRPZlBhdHRlcm4oKSAmJiBwZWVrKCkgIT0gJ30n
KTsKICAgICAgICAgICAgICAgICBpZiAoIWF0RW5kT2ZQYXR0ZXJuKCkgJiYgcGVlaygpID09ICd9
JykKICAgICAgICAgICAgICAgICAgICAgY29uc3VtZSgpOwotICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKCFtX2VycikKLSAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6SW52
YWxpZFVuaWNvZGVFc2NhcGU7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZXJyKQorICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKCFoYXNFcnJvcihtX2VycikpCisgICAgICAgICAgICAgICAgICAgIG1f
ZXJyID0gRXJyb3JDb2RlOjpJbnZhbGlkVW5pY29kZUVzY2FwZTsKKyAgICAgICAgICAgICAgICBp
ZiAoaGFzRXJyb3IobV9lcnIpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAgICAgICAgICAgICBkZWxlZ2F0ZS5hdG9tUGF0dGVybkNoYXJhY3Rlcihjb2RlUG9pbnQp
OwpAQCAtNTg1LDcgKzU4Miw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICovCiAgICAgdm9pZCBw
YXJzZUNoYXJhY3RlckNsYXNzKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9lcnIpOworICAg
ICAgICBBU1NFUlQoIWhhc0Vycm9yKG1fZXJyKSk7CiAgICAgICAgIEFTU0VSVChwZWVrKCkgPT0g
J1snKTsKICAgICAgICAgY29uc3VtZSgpOwogCkBAIC02MDgsMTEgKzYwNSwxMSBAQCBjbGFzcyBQ
YXJzZXIgewogICAgICAgICAgICAgICAgIGNoYXJhY3RlckNsYXNzQ29uc3RydWN0b3IuYXRvbVBh
dHRlcm5DaGFyYWN0ZXIoY29uc3VtZVBvc3NpYmxlU3Vycm9nYXRlUGFpcigpLCB0cnVlKTsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKG1fZXJyKQorICAgICAgICAgICAgaWYgKGhh
c0Vycm9yKG1fZXJyKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpDaGFyYWN0ZXJDbGFzc1VubWF0Y2hlZDsKKyAgICAg
ICAgbV9lcnIgPSBFcnJvckNvZGU6OkNoYXJhY3RlckNsYXNzVW5tYXRjaGVkOwogICAgIH0KIAog
ICAgIC8qCkBAIC02MjIsMTMgKzYxOSwxMyBAQCBjbGFzcyBQYXJzZXIgewogICAgICAqLwogICAg
IHZvaWQgcGFyc2VQYXJlbnRoZXNlc0JlZ2luKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9l
cnIpOworICAgICAgICBBU1NFUlQoIWhhc0Vycm9yKG1fZXJyKSk7CiAgICAgICAgIEFTU0VSVChw
ZWVrKCkgPT0gJygnKTsKICAgICAgICAgY29uc3VtZSgpOwogCiAgICAgICAgIGlmICh0cnlDb25z
dW1lKCc/JykpIHsKICAgICAgICAgICAgIGlmIChhdEVuZE9mUGF0dGVybigpKSB7Ci0gICAgICAg
ICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6UGFyZW50aGVzZXNUeXBlSW52YWxpZDsKKyAg
ICAgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29kZTo6UGFyZW50aGVzZXNUeXBlSW52YWxpZDsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTY1MiwxNSArNjQ5
LDE1IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzZXRBZGRSZXN1
bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1fZGVsZWdhdGUuYXRvbVBh
cmVudGhlc2VzU3VicGF0dGVybkJlZ2luKHRydWUsIGdyb3VwTmFtZSk7CiAgICAgICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46
OkR1cGxpY2F0ZUdyb3VwTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gRXJy
b3JDb2RlOjpEdXBsaWNhdGVHcm91cE5hbWU7CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OkludmFsaWRHcm91cE5hbWU7Cisg
ICAgICAgICAgICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpJbnZhbGlkR3JvdXBOYW1lOwog
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6UGFyZW50aGVzZXNU
eXBlSW52YWxpZDsKKyAgICAgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29kZTo6UGFyZW50aGVz
ZXNUeXBlSW52YWxpZDsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICBtX2RlbGVnYXRlLmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbigpOwpAQCAtNjc1LDE0
ICs2NzIsMTQgQEAgY2xhc3MgUGFyc2VyIHsKICAgICAgKi8KICAgICB2b2lkIHBhcnNlUGFyZW50
aGVzZXNFbmQoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2Vycik7CisgICAgICAgIEFTU0VS
VCghaGFzRXJyb3IobV9lcnIpKTsKICAgICAgICAgQVNTRVJUKHBlZWsoKSA9PSAnKScpOwogICAg
ICAgICBjb25zdW1lKCk7CiAKICAgICAgICAgaWYgKG1fcGFyZW50aGVzZXNOZXN0aW5nRGVwdGgg
PiAwKQogICAgICAgICAgICAgbV9kZWxlZ2F0ZS5hdG9tUGFyZW50aGVzZXNFbmQoKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6UGFyZW50aGVzZXNVbm1h
dGNoZWQ7CisgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29kZTo6UGFyZW50aGVzZXNVbm1hdGNo
ZWQ7CiAKICAgICAgICAgLS1tX3BhcmVudGhlc2VzTmVzdGluZ0RlcHRoOwogICAgIH0KQEAgLTY5
NCwxOCArNjkxLDE4IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICovCiAgICAgdm9pZCBwYXJzZVF1
YW50aWZpZXIoYm9vbCBsYXN0VG9rZW5XYXNBbkF0b20sIHVuc2lnbmVkIG1pbiwgdW5zaWduZWQg
bWF4KQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2Vycik7CisgICAgICAgIEFTU0VSVCghaGFz
RXJyb3IobV9lcnIpKTsKICAgICAgICAgQVNTRVJUKG1pbiA8PSBtYXgpOwogCiAgICAgICAgIGlm
IChtaW4gPT0gVUlOVF9NQVgpIHsKLSAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OlF1
YW50aWZpZXJUb29MYXJnZTsKKyAgICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpRdWFudGlm
aWVyVG9vTGFyZ2U7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAobGFzdFRva2VuV2FzQW5BdG9tKQogICAgICAgICAgICAgbV9kZWxlZ2F0ZS5xdWFudGlmeUF0
b20obWluLCBtYXgsICF0cnlDb25zdW1lKCc/JykpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpRdWFudGlmaWVyV2l0aG91dEF0b207CisgICAgICAgICAg
ICBtX2VyciA9IEVycm9yQ29kZTo6UXVhbnRpZmllcldpdGhvdXRBdG9tOwogICAgIH0KIAogICAg
IC8qCkBAIC03OTksNyArNzk2LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChtaW4gPD0gbWF4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNl
UXVhbnRpZmllcihsYXN0VG9rZW5XYXNBbkF0b20sIG1pbiwgbWF4KTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2VyciA9IFlhcnJQ
YXR0ZXJuOjpRdWFudGlmaWVyT3V0T2ZPcmRlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2VyciA9IEVycm9yQ29kZTo6UXVhbnRpZmllck91dE9mT3JkZXI7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBsYXN0VG9rZW5XYXNBbkF0b20gPSBmYWxzZTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC04MTUsMjkgKzgxMiwyOCBA
QCBjbGFzcyBQYXJzZXIgewogICAgICAgICAgICAgICAgIGxhc3RUb2tlbldhc0FuQXRvbSA9IHRy
dWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChtX2VycikKKyAgICAgICAgICAg
IGlmIChoYXNFcnJvcihtX2VycikpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKG1fcGFyZW50aGVzZXNOZXN0aW5nRGVwdGggPiAwKQotICAgICAgICAg
ICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6TWlzc2luZ1BhcmVudGhlc2VzOworICAgICAgICAgICAg
bV9lcnIgPSBFcnJvckNvZGU6Ok1pc3NpbmdQYXJlbnRoZXNlczsKICAgICB9CiAKICAgICAvKgog
ICAgICAqIHBhcnNlKCk6CiAgICAgICoKLSAgICAgKiBUaGlzIG1ldGhvZCBjYWxscyBwYXJzZVRv
a2VucygpIHRvIHBhcnNlIG92ZXIgdGhlIGlucHV0IGFuZCBjb252ZXJ0cyBhbnkKLSAgICAgKiBl
cnJvciBjb2RlIHRvIGEgY29uc3QgY2hhciogZm9yIGEgcmVzdWx0LgorICAgICAqIFRoaXMgbWV0
aG9kIGNhbGxzIHBhcnNlVG9rZW5zKCkgdG8gcGFyc2Ugb3ZlciB0aGUgaW5wdXQgYW5kIHJldHVy
bnMgZXJyb3IgY29kZSBmb3IgYSByZXN1bHQuCiAgICAgICovCi0gICAgY29uc3QgY2hhciogcGFy
c2UoKQorICAgIEVycm9yQ29kZSBwYXJzZSgpCiAgICAgewogICAgICAgICBpZiAobV9zaXplID4g
TUFYX1BBVFRFUk5fU0laRSkKLSAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OlBhdHRl
cm5Ub29MYXJnZTsKKyAgICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpQYXR0ZXJuVG9vTGFy
Z2U7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBhcnNlVG9rZW5zKCk7Ci0gICAgICAgIEFT
U0VSVChhdEVuZE9mUGF0dGVybigpIHx8IG1fZXJyKTsKKyAgICAgICAgQVNTRVJUKGF0RW5kT2ZQ
YXR0ZXJuKCkgfHwgaGFzRXJyb3IobV9lcnIpKTsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBZ
YXJyUGF0dGVybjo6ZXJyb3JNZXNzYWdlKG1fZXJyKTsKKyAgICAgICAgcmV0dXJuIG1fZXJyOwog
ICAgIH0KIAogICAgIC8vIE1pc2MgaGVscGVyIGZ1bmN0aW9uczoKQEAgLTg5MiwyMiArODg4LDIy
IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICAgICAgICBpbnQgY29kZVBvaW50ID0gMDsKICAgICAg
ICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBpZiAoYXRFbmRPZlBhdHRlcm4oKSB8fCAhaXNB
U0NJSUhleERpZ2l0KHBlZWsoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJy
UGF0dGVybjo6SW52YWxpZFVuaWNvZGVFc2NhcGU7CisgICAgICAgICAgICAgICAgICAgIG1fZXJy
ID0gRXJyb3JDb2RlOjpJbnZhbGlkVW5pY29kZUVzY2FwZTsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIC0xOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGNvZGVQb2lu
dCA9IChjb2RlUG9pbnQgPDwgNCkgfCB0b0FTQ0lJSGV4VmFsdWUoY29uc3VtZSgpKTsKIAogICAg
ICAgICAgICAgICAgIGlmIChjb2RlUG9pbnQgPiBVQ0hBUl9NQVhfVkFMVUUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6SW52YWxpZFVuaWNvZGVFc2NhcGU7Cisg
ICAgICAgICAgICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpJbnZhbGlkVW5pY29kZUVzY2Fw
ZTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0gd2hpbGUgKCFhdEVuZE9mUGF0dGVybigpICYmIHBlZWsoKSAhPSAnfScpOwog
ICAgICAgICAgICAgaWYgKCFhdEVuZE9mUGF0dGVybigpICYmIHBlZWsoKSA9PSAnfScpCiAgICAg
ICAgICAgICAgICAgY29uc3VtZSgpOwotICAgICAgICAgICAgZWxzZSBpZiAoIW1fZXJyKQotICAg
ICAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OkludmFsaWRVbmljb2RlRXNjYXBlOwot
ICAgICAgICAgICAgaWYgKG1fZXJyKQorICAgICAgICAgICAgZWxzZSBpZiAoIWhhc0Vycm9yKG1f
ZXJyKSkKKyAgICAgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29kZTo6SW52YWxpZFVuaWNvZGVF
c2NhcGU7CisgICAgICAgICAgICBpZiAoaGFzRXJyb3IobV9lcnIpKQogICAgICAgICAgICAgICAg
IHJldHVybiAtMTsKIAogICAgICAgICAgICAgcmV0dXJuIGNvZGVQb2ludDsKQEAgLTEwNTMsNyAr
MTA0OSw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgc3RkOjpvcHRpb25hbDxCdWlsdEluQ2hhcmFj
dGVyQ2xhc3NJRD4gdHJ5Q29uc3VtZVVuaWNvZGVQcm9wZXJ0eUV4cHJlc3Npb24oKQogICAgIHsK
ICAgICAgICAgaWYgKGF0RW5kT2ZQYXR0ZXJuKCkgfHwgIWlzVW5pY29kZVByb3BlcnR5VmFsdWVF
eHByZXNzaW9uQ2hhcihwZWVrKCkpKSB7Ci0gICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJu
OjpJbnZhbGlkVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbjsKKyAgICAgICAgICAgIG1fZXJyID0g
RXJyb3JDb2RlOjpJbnZhbGlkVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbjsKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIApAQCAtMTA2OSwyMCArMTA2NSwyMCBA
QCBjbGFzcyBQYXJzZXIgewogICAgICAgICAgICAgaWYgKGNoID09ICd9JykgewogICAgICAgICAg
ICAgICAgIGNvbnN1bWUoKTsKICAgICAgICAgICAgICAgICBpZiAoZXJyb3JzKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OkludmFsaWRVbmljb2RlUHJvcGVydHlF
eHByZXNzaW9uOworICAgICAgICAgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29kZTo6SW52YWxp
ZFVuaWNvZGVQcm9wZXJ0eUV4cHJlc3Npb247CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGZv
dW5kRXF1YWxzKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gdW5pY29kZU1h
dGNoUHJvcGVydHlWYWx1ZSh1bmljb2RlUHJvcGVydHlOYW1lLCBleHByZXNzaW9uQnVpbGRlci50
b1N0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpJbnZhbGlkVW5pY29kZVByb3BlcnR5
RXhwcmVzc2lvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpJ
bnZhbGlkVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbjsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBhdXRvIHJl
c3VsdCA9IHVuaWNvZGVNYXRjaFByb3BlcnR5KGV4cHJlc3Npb25CdWlsZGVyLnRvU3RyaW5nKCkp
OwogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgICAgICAgICBtX2Vy
ciA9IFlhcnJQYXR0ZXJuOjpJbnZhbGlkVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbjsKKyAgICAg
ICAgICAgICAgICAgICAgbV9lcnIgPSBFcnJvckNvZGU6OkludmFsaWRVbmljb2RlUHJvcGVydHlF
eHByZXNzaW9uOwogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9
CiAKQEAgLTExMDAsMTggKzEwOTYsMTggQEAgY2xhc3MgUGFyc2VyIHsKICAgICAgICAgICAgICAg
ICBleHByZXNzaW9uQnVpbGRlci5hcHBlbmQoY2gpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9l
cnIgPSBZYXJyUGF0dGVybjo6SW52YWxpZFVuaWNvZGVQcm9wZXJ0eUV4cHJlc3Npb247CisgICAg
ICAgIG1fZXJyID0gRXJyb3JDb2RlOjpJbnZhbGlkVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbjsK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBEZWxlZ2F0ZSYgbV9k
ZWxlZ2F0ZTsKICAgICB1bnNpZ25lZCBtX2JhY2tSZWZlcmVuY2VMaW1pdDsKLSAgICBZYXJyUGF0
dGVybjo6RXJyb3JDb2RlIG1fZXJyOworICAgIEVycm9yQ29kZSBtX2VyciB7IEVycm9yQ29kZTo6
Tm9FcnJvciB9OwogICAgIGNvbnN0IENoYXJUeXBlKiBtX2RhdGE7CiAgICAgdW5zaWduZWQgbV9z
aXplOwotICAgIHVuc2lnbmVkIG1faW5kZXg7CisgICAgdW5zaWduZWQgbV9pbmRleCB7IDAgfTsK
ICAgICBib29sIG1faXNVbmljb2RlOwotICAgIHVuc2lnbmVkIG1fcGFyZW50aGVzZXNOZXN0aW5n
RGVwdGg7CisgICAgdW5zaWduZWQgbV9wYXJlbnRoZXNlc05lc3RpbmdEZXB0aCB7IDAgfTsKICAg
ICBIYXNoU2V0PFN0cmluZz4gbV9jYXB0dXJlR3JvdXBOYW1lczsKIAogICAgIC8vIERlcml2ZWQg
YnkgZW1waXJpY2FsIHRlc3Rpbmcgb2YgY29tcGlsZSB0aW1lIGluIFBDUkUgYW5kIFdSRUMuCkBA
IC0xMTc5LDcgKzExNzUsNyBAQCBjbGFzcyBQYXJzZXIgewogICovCiAKIHRlbXBsYXRlPGNsYXNz
IERlbGVnYXRlPgotY29uc3QgY2hhciogcGFyc2UoRGVsZWdhdGUmIGRlbGVnYXRlLCBjb25zdCBT
dHJpbmcmIHBhdHRlcm4sIGJvb2wgaXNVbmljb2RlLCB1bnNpZ25lZCBiYWNrUmVmZXJlbmNlTGlt
aXQgPSBxdWFudGlmeUluZmluaXRlKQorRXJyb3JDb2RlIHBhcnNlKERlbGVnYXRlJiBkZWxlZ2F0
ZSwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIGlzVW5pY29kZSwgdW5zaWduZWQgYmFja1Jl
ZmVyZW5jZUxpbWl0ID0gcXVhbnRpZnlJbmZpbml0ZSkKIHsKICAgICBpZiAocGF0dGVybi5pczhC
aXQoKSkKICAgICAgICAgcmV0dXJuIFBhcnNlcjxEZWxlZ2F0ZSwgTENoYXI+KGRlbGVnYXRlLCBw
YXR0ZXJuLCBpc1VuaWNvZGUsIGJhY2tSZWZlcmVuY2VMaW1pdCkucGFyc2UoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCA5YWQ4NjBjYTZjZTA3YjU0
NjE4N2UzMmEyNTc0ZWM5MjM1OGFhMzhiLi4yNDBhZjc0Y2JlNjI1OTQ5YmRhNTI3ODg1ZGMxZDg0
OGE0NjNjODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0
dGVybi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3Bw
CkBAIC00MzUsNyArNDM1LDYgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAg
ICAgIDogbV9wYXR0ZXJuKHBhdHRlcm4pCiAgICAgICAgICwgbV9jaGFyYWN0ZXJDbGFzc0NvbnN0
cnVjdG9yKHBhdHRlcm4uaWdub3JlQ2FzZSgpLCBwYXR0ZXJuLnVuaWNvZGUoKSA/IENhbm9uaWNh
bE1vZGU6OlVuaWNvZGUgOiBDYW5vbmljYWxNb2RlOjpVQ1MyKQogICAgICAgICAsIG1fc3RhY2tM
aW1pdChzdGFja0xpbWl0KQotICAgICAgICAsIG1faW52ZXJ0UGFyZW50aGV0aWNhbEFzc2VydGlv
bihmYWxzZSkKICAgICB7CiAgICAgICAgIGF1dG8gYm9keSA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0
dGVybkRpc2p1bmN0aW9uPigpOwogICAgICAgICBtX3BhdHRlcm4ubV9ib2R5ID0gYm9keS5nZXQo
KTsKQEAgLTc2NCwxMiArNzYzLDEyIEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3Igewog
ICAgICAgICBtX2FsdGVybmF0aXZlID0gbV9hbHRlcm5hdGl2ZS0+bV9wYXJlbnQtPmFkZE5ld0Fs
dGVybmF0aXZlKCk7CiAgICAgfQogCi0gICAgWWFyclBhdHRlcm46OkVycm9yQ29kZSBzZXR1cEFs
dGVybmF0aXZlT2Zmc2V0cyhQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlLCB1bnNpZ25l
ZCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSwgdW5zaWduZWQgaW5pdGlhbElucHV0UG9zaXRpb24sIHVu
c2lnbmVkJiBuZXdDYWxsRnJhbWVTaXplKSBXQVJOX1VOVVNFRF9SRVRVUk4KKyAgICBFcnJvckNv
ZGUgc2V0dXBBbHRlcm5hdGl2ZU9mZnNldHMoUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2
ZSwgdW5zaWduZWQgY3VycmVudENhbGxGcmFtZVNpemUsIHVuc2lnbmVkIGluaXRpYWxJbnB1dFBv
c2l0aW9uLCB1bnNpZ25lZCYgbmV3Q2FsbEZyYW1lU2l6ZSkgV0FSTl9VTlVTRURfUkVUVVJOCiAg
ICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoIWlzU2FmZVRvUmVjdXJzZSgpKSkKLSAgICAgICAg
ICAgIHJldHVybiBZYXJyUGF0dGVybjo6VG9vTWFueURpc2p1bmN0aW9uczsKKyAgICAgICAgICAg
IHJldHVybiBFcnJvckNvZGU6OlRvb01hbnlEaXNqdW5jdGlvbnM7CiAKLSAgICAgICAgWWFyclBh
dHRlcm46OkVycm9yQ29kZSBlcnJvciA9IFlhcnJQYXR0ZXJuOjpOb0Vycm9yOworICAgICAgICBF
cnJvckNvZGUgZXJyb3IgPSBFcnJvckNvZGU6Ok5vRXJyb3I7CiAgICAgICAgIGFsdGVybmF0aXZl
LT5tX2hhc0ZpeGVkU2l6ZSA9IHRydWU7CiAgICAgICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29y
ZE92ZXJmbG93PiBjdXJyZW50SW5wdXRQb3NpdGlvbiA9IGluaXRpYWxJbnB1dFBvc2l0aW9uOwog
CkBAIC04MDMsNyArODAyLDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAg
ICAgICAgICAgICAgICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiB0ZW1wQ291
bnQgPSB0ZXJtLnF1YW50aXR5TWF4Q291bnQ7CiAgICAgICAgICAgICAgICAgICAgIHRlbXBDb3Vu
dCAqPSBVMTZfTEVOR1RIKHRlcm0ucGF0dGVybkNoYXJhY3Rlcik7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICh0ZW1wQ291bnQuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFlhcnJQYXR0ZXJuOjpPZmZzZXRUb29MYXJnZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBFcnJvckNvZGU6Ok9mZnNldFRvb0xhcmdlOwogICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50SW5wdXRQb3NpdGlvbiArPSB0ZW1wQ291bnQ7CiAgICAgICAgICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJbnB1dFBvc2l0aW9uICs9IHRlcm0u
cXVhbnRpdHlNYXhDb3VudDsKQEAgLTgzMCw3ICs4MjksNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNv
bnN0cnVjdG9yIHsKICAgICAgICAgICAgICAgICBpZiAodGVybS5xdWFudGl0eU1heENvdW50ID09
IDEgJiYgIXRlcm0ucGFyZW50aGVzZXMuaXNDb3B5KSB7CiAgICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRDYWxsRnJhbWVTaXplICs9IFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb1BhcmVu
dGhlc2VzT25jZTsKICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBzZXR1cERpc2p1bmN0aW9u
T2Zmc2V0cyh0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLCBjdXJyZW50Q2FsbEZyYW1lU2l6
ZSwgY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCksIGN1cnJlbnRDYWxsRnJhbWVTaXpl
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAgICAgICBp
ZiAoaGFzRXJyb3IoZXJyb3IpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9y
OwogICAgICAgICAgICAgICAgICAgICAvLyBJZiBxdWFudGl0eSBpcyBmaXhlZCwgdGhlbiBwcmUt
Y2hlY2sgaXRzIG1pbmltdW0gc2l6ZS4KICAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0ucXVh
bnRpdHlUeXBlID09IFF1YW50aWZpZXJGaXhlZENvdW50KQpAQCAtODM5LDE0ICs4MzgsMTQgQEAg
Y2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlm
ICh0ZXJtLnBhcmVudGhlc2VzLmlzVGVybWluYWwpIHsKICAgICAgICAgICAgICAgICAgICAgY3Vy
cmVudENhbGxGcmFtZVNpemUgKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50
aGVzZXNUZXJtaW5hbDsKICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBzZXR1cERpc2p1bmN0
aW9uT2Zmc2V0cyh0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLCBjdXJyZW50Q2FsbEZyYW1l
U2l6ZSwgY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCksIGN1cnJlbnRDYWxsRnJhbWVT
aXplKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAgICAg
ICBpZiAoaGFzRXJyb3IoZXJyb3IpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOwogICAgICAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5w
dXRQb3NpdGlvbi51bnNhZmVHZXQoKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5wdXRQb3NpdGlvbi51
bnNhZmVHZXQoKTsKICAgICAgICAgICAgICAgICAgICAgY3VycmVudENhbGxGcmFtZVNpemUgKz0g
WWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM7CiAgICAgICAgICAgICAg
ICAgICAgIGVycm9yID0gc2V0dXBEaXNqdW5jdGlvbk9mZnNldHModGVybS5wYXJlbnRoZXNlcy5k
aXNqdW5jdGlvbiwgY3VycmVudENhbGxGcmFtZVNpemUsIGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVu
c2FmZUdldCgpLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChlcnJvcikKKyAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0Vycm9yKGVycm9yKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgLy8gRml4ZWQgY291bnQgb2YgMSBjb3VsZCBiZSBhY2NlcHRlZCwgaWYgdGhl
eSBoYXZlIGEgZml4ZWQgc2l6ZSAqQU5EKiBpZiBhbGwgYWx0ZXJuYXRpdmVzIGFyZSBvZiB0aGUg
c2FtZSBsZW5ndGguCkBAIC04NTcsNyArODU2LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1
Y3RvciB7CiAgICAgICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gY3VycmVudElucHV0
UG9zaXRpb24udW5zYWZlR2V0KCk7CiAgICAgICAgICAgICAgICAgdGVybS5mcmFtZUxvY2F0aW9u
ID0gY3VycmVudENhbGxGcmFtZVNpemU7CiAgICAgICAgICAgICAgICAgZXJyb3IgPSBzZXR1cERp
c2p1bmN0aW9uT2Zmc2V0cyh0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLCBjdXJyZW50Q2Fs
bEZyYW1lU2l6ZSArIFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb1BhcmVudGhldGljYWxB
c3NlcnRpb24sIGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpLCBjdXJyZW50Q2FsbEZy
YW1lU2l6ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAgIGlm
IChoYXNFcnJvcihlcnJvcikpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAg
ICAgICAgICAgICAgICBicmVhazsKIApAQCAtODcxLDcgKzg3MCw3IEBAIGNsYXNzIFlhcnJQYXR0
ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKGN1cnJlbnRJbnB1dFBvc2l0aW9uLmhhc092ZXJmbG93ZWQoKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gWWFyclBhdHRlcm46Ok9mZnNldFRvb0xhcmdlOworICAgICAg
ICAgICAgICAgIHJldHVybiBFcnJvckNvZGU6Ok9mZnNldFRvb0xhcmdlOwogICAgICAgICB9CiAK
ICAgICAgICAgYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUgPSAoY3VycmVudElucHV0UG9zaXRp
b24gLSBpbml0aWFsSW5wdXRQb3NpdGlvbikudW5zYWZlR2V0KCk7CkBAIC04NzksMTAgKzg3OCwx
MCBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgcmV0dXJuIGVycm9y
OwogICAgIH0KIAotICAgIFlhcnJQYXR0ZXJuOjpFcnJvckNvZGUgc2V0dXBEaXNqdW5jdGlvbk9m
ZnNldHMoUGF0dGVybkRpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiwgdW5zaWduZWQgaW5pdGlhbENh
bGxGcmFtZVNpemUsIHVuc2lnbmVkIGluaXRpYWxJbnB1dFBvc2l0aW9uLCB1bnNpZ25lZCYgY2Fs
bEZyYW1lU2l6ZSkKKyAgICBFcnJvckNvZGUgc2V0dXBEaXNqdW5jdGlvbk9mZnNldHMoUGF0dGVy
bkRpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiwgdW5zaWduZWQgaW5pdGlhbENhbGxGcmFtZVNpemUs
IHVuc2lnbmVkIGluaXRpYWxJbnB1dFBvc2l0aW9uLCB1bnNpZ25lZCYgY2FsbEZyYW1lU2l6ZSkK
ICAgICB7CiAgICAgICAgIGlmIChVTkxJS0VMWSghaXNTYWZlVG9SZWN1cnNlKCkpKQotICAgICAg
ICAgICAgcmV0dXJuIFlhcnJQYXR0ZXJuOjpUb29NYW55RGlzanVuY3Rpb25zOworICAgICAgICAg
ICAgcmV0dXJuIEVycm9yQ29kZTo6VG9vTWFueURpc2p1bmN0aW9uczsKIAogICAgICAgICBpZiAo
KGRpc2p1bmN0aW9uICE9IG1fcGF0dGVybi5tX2JvZHkpICYmIChkaXNqdW5jdGlvbi0+bV9hbHRl
cm5hdGl2ZXMuc2l6ZSgpID4gMSkpCiAgICAgICAgICAgICBpbml0aWFsQ2FsbEZyYW1lU2l6ZSAr
PSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9BbHRlcm5hdGl2ZTsKQEAgLTg5MCwxMyAr
ODg5LDEzIEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICB1bnNpZ25l
ZCBtaW5pbXVtSW5wdXRTaXplID0gVUlOVF9NQVg7CiAgICAgICAgIHVuc2lnbmVkIG1heGltdW1D
YWxsRnJhbWVTaXplID0gMDsKICAgICAgICAgYm9vbCBoYXNGaXhlZFNpemUgPSB0cnVlOwotICAg
ICAgICBZYXJyUGF0dGVybjo6RXJyb3JDb2RlIGVycm9yID0gWWFyclBhdHRlcm46Ok5vRXJyb3I7
CisgICAgICAgIEVycm9yQ29kZSBlcnJvciA9IEVycm9yQ29kZTo6Tm9FcnJvcjsKIAogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGFsdCA9IDA7IGFsdCA8IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZl
cy5zaXplKCk7ICsrYWx0KSB7CiAgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVy
bmF0aXZlID0gZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzW2FsdF0uZ2V0KCk7CiAgICAgICAg
ICAgICB1bnNpZ25lZCBjdXJyZW50QWx0ZXJuYXRpdmVDYWxsRnJhbWVTaXplOwogICAgICAgICAg
ICAgZXJyb3IgPSBzZXR1cEFsdGVybmF0aXZlT2Zmc2V0cyhhbHRlcm5hdGl2ZSwgaW5pdGlhbENh
bGxGcmFtZVNpemUsIGluaXRpYWxJbnB1dFBvc2l0aW9uLCBjdXJyZW50QWx0ZXJuYXRpdmVDYWxs
RnJhbWVTaXplKTsKLSAgICAgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIGlmIChoYXNF
cnJvcihlcnJvcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgICAgICAgICAg
bWluaW11bUlucHV0U2l6ZSA9IHN0ZDo6bWluKG1pbmltdW1JbnB1dFNpemUsIGFsdGVybmF0aXZl
LT5tX21pbmltdW1TaXplKTsKICAgICAgICAgICAgIG1heGltdW1DYWxsRnJhbWVTaXplID0gc3Rk
OjptYXgobWF4aW11bUNhbGxGcmFtZVNpemUsIGN1cnJlbnRBbHRlcm5hdGl2ZUNhbGxGcmFtZVNp
emUpOwpAQCAtOTE1LDE0ICs5MTQsMTEgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7
CiAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9CiAKLSAgICBjb25zdCBjaGFyKiBzZXR1cE9m
ZnNldHMoKQorICAgIEVycm9yQ29kZSBzZXR1cE9mZnNldHMoKQogICAgIHsKICAgICAgICAgLy8g
RklYTUU6IFlhcnIgc2hvdWxkIG5vdCB1c2UgdGhlIHN0YWNrIHRvIGhhbmRsZSBzdWJwYXR0ZXJu
cyAocmRhcjovL3Byb2JsZW0vMjY0MzYzMTQpLgogICAgICAgICB1bnNpZ25lZCBpZ25vcmVkQ2Fs
bEZyYW1lU2l6ZTsKLSAgICAgICAgWWFyclBhdHRlcm46OkVycm9yQ29kZSBlcnJvciA9IHNldHVw
RGlzanVuY3Rpb25PZmZzZXRzKG1fcGF0dGVybi5tX2JvZHksIDAsIDAsIGlnbm9yZWRDYWxsRnJh
bWVTaXplKTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgcmV0dXJuIFlhcnJQYXR0
ZXJuOjplcnJvck1lc3NhZ2UoZXJyb3IpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIHNldHVwRGlzanVuY3Rpb25PZmZzZXRzKG1fcGF0dGVybi5tX2JvZHksIDAsIDAs
IGlnbm9yZWRDYWxsRnJhbWVTaXplKTsKICAgICB9CiAKICAgICAvLyBUaGlzIG9wdGltaXphdGlv
biBpZGVudGlmaWVzIHNldHMgb2YgcGFyZW50aGVzZXMgdGhhdCB3ZSB3aWxsIG5ldmVyIG5lZWQg
dG8gYmFja3RyYWNrLgpAQCAtMTA4NCw0OCArMTA4MCwyMSBAQCBjbGFzcyBZYXJyUGF0dGVybkNv
bnN0cnVjdG9yIHsKICAgICBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yIG1fY2hhcmFjdGVyQ2xh
c3NDb25zdHJ1Y3RvcjsKICAgICB2b2lkKiBtX3N0YWNrTGltaXQ7CiAgICAgYm9vbCBtX2ludmVy
dENoYXJhY3RlckNsYXNzOwotICAgIGJvb2wgbV9pbnZlcnRQYXJlbnRoZXRpY2FsQXNzZXJ0aW9u
OworICAgIGJvb2wgbV9pbnZlcnRQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uIHsgZmFsc2UgfTsKIH07
CiAKLWNvbnN0IGNoYXIqIFlhcnJQYXR0ZXJuOjplcnJvck1lc3NhZ2UoWWFyclBhdHRlcm46OkVy
cm9yQ29kZSBlcnJvcikKLXsKLSNkZWZpbmUgUkVHRVhQX0VSUk9SX1BSRUZJWCAiSW52YWxpZCBy
ZWd1bGFyIGV4cHJlc3Npb246ICIKLSAgICAvLyBUaGUgb3JkZXIgb2YgdGhpcyBhcnJheSBtdXN0
IG1hdGNoIHRoZSBFcnJvckNvZGUgZW51bS4KLSAgICBzdGF0aWMgY29uc3QgY2hhciogZXJyb3JN
ZXNzYWdlc1tOdW1iZXJPZkVycm9yQ29kZXNdID0gewotICAgICAgICBudWxscHRyLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Tm9FcnJvcgotICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJyZWd1bGFyIGV4cHJlc3Npb24g
dG9vIGxhcmdlIiwgICAgICAgICAgICAgICAgICAgLy8gUGF0dGVyblRvb0xhcmdlICAgICAKLSAg
ICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAibnVtYmVycyBvdXQgb2Ygb3JkZXIgaW4ge30gcXVh
bnRpZmllciIsICAgICAgICAgIC8vIFF1YW50aWZpZXJPdXRPZk9yZGVyCi0gICAgICAgIFJFR0VY
UF9FUlJPUl9QUkVGSVggIm5vdGhpbmcgdG8gcmVwZWF0IiwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBRdWFudGlmaWVyV2l0aG91dEF0b20KLSAgICAgICAgUkVHRVhQX0VSUk9SX1BS
RUZJWCAibnVtYmVyIHRvbyBsYXJnZSBpbiB7fSBxdWFudGlmaWVyIiwgICAgICAgICAgICAgIC8v
IFF1YW50aWZpZXJUb29MYXJnZQotICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJtaXNzaW5n
ICkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWlzc2luZ1BhcmVu
dGhlc2VzCi0gICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggInVubWF0Y2hlZCBwYXJlbnRoZXNl
cyIsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQYXJlbnRoZXNlc1VubWF0Y2hlZAotICAg
ICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJ1bnJlY29nbml6ZWQgY2hhcmFjdGVyIGFmdGVyICg/
IiwgICAgICAgICAgICAgICAgLy8gUGFyZW50aGVzZXNUeXBlSW52YWxpZAotICAgICAgICBSRUdF
WFBfRVJST1JfUFJFRklYICJpbnZhbGlkIGdyb3VwIHNwZWNpZmllciBuYW1lIiwgICAgICAgICAg
ICAgICAgICAgLy8gSW52YWxpZEdyb3VwTmFtZQotICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklY
ICJkdXBsaWNhdGUgZ3JvdXAgc3BlY2lmaWVyIG5hbWUiLCAgICAgICAgICAgICAgICAgLy8gRHVw
bGljYXRlR3JvdXBOYW1lCi0gICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggIm1pc3NpbmcgdGVy
bWluYXRpbmcgXSBmb3IgY2hhcmFjdGVyIGNsYXNzIiwgICAgICAvLyBDaGFyYWN0ZXJDbGFzc1Vu
bWF0Y2hlZAotICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJyYW5nZSBvdXQgb2Ygb3JkZXIg
aW4gY2hhcmFjdGVyIGNsYXNzIiwgICAgICAgICAgLy8gQ2hhcmFjdGVyQ2xhc3NPdXRPZk9yZGVy
Ci0gICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggIlxcIGF0IGVuZCBvZiBwYXR0ZXJuIiwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBFc2NhcGVVbnRlcm1pbmF0ZWQKLSAgICAgICAgUkVH
RVhQX0VSUk9SX1BSRUZJWCAiaW52YWxpZCB1bmljb2RlIHt9IGVzY2FwZSIsICAgICAgICAgICAg
ICAgICAgICAgIC8vIEludmFsaWRVbmljb2RlRXNjYXBlCi0gICAgICAgIFJFR0VYUF9FUlJPUl9Q
UkVGSVggImludmFsaWQgYmFja3JlZmVyZW5jZSBmb3IgdW5pY29kZSBwYXR0ZXJuIiwgICAgICAv
LyBJbnZhbGlkQmFja3JlZmVyZW5jZQotICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJpbnZh
bGlkIGVzY2FwZWQgY2hhcmFjdGVyIGZvciB1bmljb2RlIHBhdHRlcm4iLCAgLy8gSW52YWxpZElk
ZW50aXR5RXNjYXBlCi0gICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggImludmFsaWQgcHJvcGVy
dHkgZXhwcmVzc2lvbiIsICAgICAgICAgICAgICAgICAgICAvLyBJbnZhbGlkVW5pY29kZVByb3Bl
cnR5RXhwcmVzc2lvbgotICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJ0b28gbWFueSBuZXN0
ZWQgZGlzanVuY3Rpb25zIiwgICAgICAgICAgICAgICAgICAgLy8gVG9vTWFueURpc2p1bmN0aW9u
cwotICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJwYXR0ZXJuIGV4Y2VlZHMgc3RyaW5nIGxl
bmd0aCBsaW1pdHMiLCAgICAgICAgICAgLy8gT2Zmc2V0VG9vTGFyZ2UKLSAgICAgICAgUkVHRVhQ
X0VSUk9SX1BSRUZJWCAiaW52YWxpZCBmbGFncyIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEludmFsaWRSZWd1bGFyRXhwcmVzc2lvbkZsYWdzCi0gICAgfTsKLQotICAgIHJl
dHVybiBlcnJvck1lc3NhZ2VzW2Vycm9yXTsKLX0KLQotY29uc3QgY2hhciogWWFyclBhdHRlcm46
OmNvbXBpbGUoY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCB2b2lkKiBzdGFja0xpbWl0KQor
RXJyb3JDb2RlIFlhcnJQYXR0ZXJuOjpjb21waWxlKGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmlu
Zywgdm9pZCogc3RhY2tMaW1pdCkKIHsKICAgICBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIGNvbnN0
cnVjdG9yKCp0aGlzLCBzdGFja0xpbWl0KTsKIAogICAgIGlmIChtX2ZsYWdzID09IEludmFsaWRG
bGFncykKLSAgICAgICAgcmV0dXJuIGVycm9yTWVzc2FnZShJbnZhbGlkUmVndWxhckV4cHJlc3Np
b25GbGFncyk7CisgICAgICAgIHJldHVybiBFcnJvckNvZGU6OkludmFsaWRSZWd1bGFyRXhwcmVz
c2lvbkZsYWdzOwogCi0gICAgaWYgKGNvbnN0IGNoYXIqIGVycm9yID0gcGFyc2UoY29uc3RydWN0
b3IsIHBhdHRlcm5TdHJpbmcsIHVuaWNvZGUoKSkpCi0gICAgICAgIHJldHVybiBlcnJvcjsKKyAg
ICB7CisgICAgICAgIEVycm9yQ29kZSBlcnJvciA9IHBhcnNlKGNvbnN0cnVjdG9yLCBwYXR0ZXJu
U3RyaW5nLCB1bmljb2RlKCkpOworICAgICAgICBpZiAoaGFzRXJyb3IoZXJyb3IpKQorICAgICAg
ICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KICAgICAKICAgICAvLyBJZiB0aGUgcGF0dGVybiBj
b250YWlucyBpbGxlZ2FsIGJhY2tyZWZlcmVuY2VzIHJlc2V0ICYgcmVwYXJzZS4KICAgICAvLyBR
dW90aW5nIE5ldHNjYXBlJ3MgIldoYXQncyBuZXcgaW4gSmF2YVNjcmlwdCAxLjIiLApAQCAtMTEz
Myw1MiArMTEwMiwzOSBAQCBjb25zdCBjaGFyKiBZYXJyUGF0dGVybjo6Y29tcGlsZShjb25zdCBT
dHJpbmcmIHBhdHRlcm5TdHJpbmcsIHZvaWQqIHN0YWNrTGltaXQpCiAgICAgLy8gICAgICAgaW4g
XCMsIHRoZSBcIyBpcyB0YWtlbiBhcyBhbiBvY3RhbCBlc2NhcGUgYXMgZGVzY3JpYmVkIGluIHRo
ZSBuZXh0IHJvdy4iCiAgICAgaWYgKGNvbnRhaW5zSWxsZWdhbEJhY2tSZWZlcmVuY2UoKSkgewog
ICAgICAgICBpZiAodW5pY29kZSgpKQotICAgICAgICAgICAgcmV0dXJuIGVycm9yTWVzc2FnZShJ
bnZhbGlkQmFja3JlZmVyZW5jZSk7CisgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2RlOjpJbnZh
bGlkQmFja3JlZmVyZW5jZTsKIAogICAgICAgICB1bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9IG1f
bnVtU3VicGF0dGVybnM7CiAKICAgICAgICAgY29uc3RydWN0b3IucmVzZXQoKTsKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECi0gICAgICAgIGNvbnN0IGNoYXIqIGVycm9yID0KLSNlbmRpZgotICAgICAg
ICAgICAgcGFyc2UoY29uc3RydWN0b3IsIHBhdHRlcm5TdHJpbmcsIHVuaWNvZGUoKSwgbnVtU3Vi
cGF0dGVybnMpOwotCi0gICAgICAgIEFTU0VSVCghZXJyb3IpOworICAgICAgICBFcnJvckNvZGUg
ZXJyb3IgPSBwYXJzZShjb25zdHJ1Y3RvciwgcGF0dGVyblN0cmluZywgdW5pY29kZSgpLCBudW1T
dWJwYXR0ZXJucyk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoZXJyb3IsICFoYXNFcnJvcihlcnJv
cikpOwogICAgICAgICBBU1NFUlQobnVtU3VicGF0dGVybnMgPT0gbV9udW1TdWJwYXR0ZXJucyk7
CiAgICAgfQogCiAgICAgY29uc3RydWN0b3IuY2hlY2tGb3JUZXJtaW5hbFBhcmVudGhlc2VzKCk7
CiAgICAgY29uc3RydWN0b3Iub3B0aW1pemVEb3RTdGFyV3JhcHBlZEV4cHJlc3Npb25zKCk7CiAg
ICAgY29uc3RydWN0b3Iub3B0aW1pemVCT0woKTsKLSAgICAgICAgCi0gICAgaWYgKGNvbnN0IGNo
YXIqIGVycm9yID0gY29uc3RydWN0b3Iuc2V0dXBPZmZzZXRzKCkpCi0gICAgICAgIHJldHVybiBl
cnJvcjsKKworICAgIHsKKyAgICAgICAgRXJyb3JDb2RlIGVycm9yID0gY29uc3RydWN0b3Iuc2V0
dXBPZmZzZXRzKCk7CisgICAgICAgIGlmIChoYXNFcnJvcihlcnJvcikpCisgICAgICAgICAgICBy
ZXR1cm4gZXJyb3I7CisgICAgfQogCiAgICAgaWYgKE9wdGlvbnM6OmR1bXBDb21waWxlZFJlZ0V4
cFBhdHRlcm5zKCkpCiAgICAgICAgIGR1bXBQYXR0ZXJuKHBhdHRlcm5TdHJpbmcpOwogCi0gICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIEVycm9yQ29kZTo6Tm9FcnJvcjsKIH0KIAotWWFy
clBhdHRlcm46OllhcnJQYXR0ZXJuKGNvbnN0IFN0cmluZyYgcGF0dGVybiwgUmVnRXhwRmxhZ3Mg
ZmxhZ3MsIGNvbnN0IGNoYXIqKiBlcnJvciwgdm9pZCogc3RhY2tMaW1pdCkKK1lhcnJQYXR0ZXJu
OjpZYXJyUGF0dGVybihjb25zdCBTdHJpbmcmIHBhdHRlcm4sIFJlZ0V4cEZsYWdzIGZsYWdzLCBF
cnJvckNvZGUqIGVycm9yLCB2b2lkKiBzdGFja0xpbWl0KQogICAgIDogbV9jb250YWluc0JhY2ty
ZWZlcmVuY2VzKGZhbHNlKQogICAgICwgbV9jb250YWluc0JPTChmYWxzZSkKICAgICAsIG1fY29u
dGFpbnNVbnNpZ25lZExlbmd0aFBhdHRlcm4oZmFsc2UpCiAgICAgLCBtX2hhc0NvcGllZFBhcmVu
U3ViZXhwcmVzc2lvbnMoZmFsc2UpCiAgICAgLCBtX3NhdmVJbml0aWFsU3RhcnRWYWx1ZShmYWxz
ZSkKICAgICAsIG1fZmxhZ3MoZmxhZ3MpCi0gICAgLCBtX251bVN1YnBhdHRlcm5zKDApCi0gICAg
LCBtX21heEJhY2tSZWZlcmVuY2UoMCkKLSAgICAsIGFueWNoYXJDYWNoZWQoMCkKLSAgICAsIG5l
d2xpbmVDYWNoZWQoMCkKLSAgICAsIGRpZ2l0c0NhY2hlZCgwKQotICAgICwgc3BhY2VzQ2FjaGVk
KDApCi0gICAgLCB3b3JkY2hhckNhY2hlZCgwKQotICAgICwgd29yZFVuaWNvZGVJZ25vcmVDYXNl
Q2hhckNhY2hlZCgwKQotICAgICwgbm9uZGlnaXRzQ2FjaGVkKDApCi0gICAgLCBub25zcGFjZXND
YWNoZWQoMCkKLSAgICAsIG5vbndvcmRjaGFyQ2FjaGVkKDApCi0gICAgLCBub253b3JkVW5pY29k
ZUlnbm9yZUNhc2VjaGFyQ2FjaGVkKDApCiB7CiAgICAgKmVycm9yID0gY29tcGlsZShwYXR0ZXJu
LCBzdGFja0xpbWl0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJQYXR0ZXJuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5o
CmluZGV4IGEwZWVkOTAzYWI1ZDI2OTY4NzczMGUwYWU4NWY5Yjc3MDJiMDE0ZGIuLjdkODY1NDY3
NTEwY2JiOTkyNWJkNzc1YTUyNzExMDBjNzZkYTk3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyclBhdHRlcm4uaApAQCAtMjcsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJSZWdFeHBLZXkuaCIKKyNpbmNsdWRlICJZYXJyRXJyb3JDb2RlLmgiCiAjaW5jbHVk
ZSAiWWFyclVuaWNvZGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1l
dGljLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTM1MSwzMyArMzUyLDcgQEAgc3Ry
dWN0IFRlcm1DaGFpbiB7CiAKIAogc3RydWN0IFlhcnJQYXR0ZXJuIHsKLSAgICBKU19FWFBPUlRf
UFJJVkFURSBZYXJyUGF0dGVybihjb25zdCBTdHJpbmcmIHBhdHRlcm4sIFJlZ0V4cEZsYWdzLCBj
b25zdCBjaGFyKiogZXJyb3IsIHZvaWQqIHN0YWNrTGltaXQgPSBudWxscHRyKTsKLQotICAgIGVu
dW0gRXJyb3JDb2RlIHsKLSAgICAgICAgTm9FcnJvciwKLSAgICAgICAgUGF0dGVyblRvb0xhcmdl
LAotICAgICAgICBRdWFudGlmaWVyT3V0T2ZPcmRlciwKLSAgICAgICAgUXVhbnRpZmllcldpdGhv
dXRBdG9tLAotICAgICAgICBRdWFudGlmaWVyVG9vTGFyZ2UsCi0gICAgICAgIE1pc3NpbmdQYXJl
bnRoZXNlcywKLSAgICAgICAgUGFyZW50aGVzZXNVbm1hdGNoZWQsCi0gICAgICAgIFBhcmVudGhl
c2VzVHlwZUludmFsaWQsCi0gICAgICAgIEludmFsaWRHcm91cE5hbWUsCi0gICAgICAgIER1cGxp
Y2F0ZUdyb3VwTmFtZSwKLSAgICAgICAgQ2hhcmFjdGVyQ2xhc3NVbm1hdGNoZWQsCi0gICAgICAg
IENoYXJhY3RlckNsYXNzT3V0T2ZPcmRlciwKLSAgICAgICAgRXNjYXBlVW50ZXJtaW5hdGVkLAot
ICAgICAgICBJbnZhbGlkVW5pY29kZUVzY2FwZSwKLSAgICAgICAgSW52YWxpZEJhY2tyZWZlcmVu
Y2UsCi0gICAgICAgIEludmFsaWRJZGVudGl0eUVzY2FwZSwKLSAgICAgICAgSW52YWxpZFVuaWNv
ZGVQcm9wZXJ0eUV4cHJlc3Npb24sCi0gICAgICAgIFRvb01hbnlEaXNqdW5jdGlvbnMsCi0gICAg
ICAgIE9mZnNldFRvb0xhcmdlLAotICAgICAgICBJbnZhbGlkUmVndWxhckV4cHJlc3Npb25GbGFn
cywKLSAgICAgICAgTnVtYmVyT2ZFcnJvckNvZGVzCi0gICAgfTsKLSAgICAKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKEVycm9yQ29kZSk7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgWWFyclBhdHRlcm4oY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBS
ZWdFeHBGbGFncywgRXJyb3JDb2RlKiwgdm9pZCogc3RhY2tMaW1pdCA9IG51bGxwdHIpOwogCiAg
ICAgdm9pZCByZXNldCgpCiAgICAgewpAQCAtMzkxLDE2ICszNjYsMTYgQEAgc3RydWN0IFlhcnJQ
YXR0ZXJuIHsKICAgICAgICAgbV9oYXNDb3BpZWRQYXJlblN1YmV4cHJlc3Npb25zID0gZmFsc2U7
CiAgICAgICAgIG1fc2F2ZUluaXRpYWxTdGFydFZhbHVlID0gZmFsc2U7CiAKLSAgICAgICAgYW55
Y2hhckNhY2hlZCA9IDA7Ci0gICAgICAgIG5ld2xpbmVDYWNoZWQgPSAwOwotICAgICAgICBkaWdp
dHNDYWNoZWQgPSAwOwotICAgICAgICBzcGFjZXNDYWNoZWQgPSAwOwotICAgICAgICB3b3JkY2hh
ckNhY2hlZCA9IDA7Ci0gICAgICAgIHdvcmRVbmljb2RlSWdub3JlQ2FzZUNoYXJDYWNoZWQgPSAw
OwotICAgICAgICBub25kaWdpdHNDYWNoZWQgPSAwOwotICAgICAgICBub25zcGFjZXNDYWNoZWQg
PSAwOwotICAgICAgICBub253b3JkY2hhckNhY2hlZCA9IDA7Ci0gICAgICAgIG5vbndvcmRVbmlj
b2RlSWdub3JlQ2FzZWNoYXJDYWNoZWQgPSAwOworICAgICAgICBhbnljaGFyQ2FjaGVkID0gbnVs
bHB0cjsKKyAgICAgICAgbmV3bGluZUNhY2hlZCA9IG51bGxwdHI7CisgICAgICAgIGRpZ2l0c0Nh
Y2hlZCA9IG51bGxwdHI7CisgICAgICAgIHNwYWNlc0NhY2hlZCA9IG51bGxwdHI7CisgICAgICAg
IHdvcmRjaGFyQ2FjaGVkID0gbnVsbHB0cjsKKyAgICAgICAgd29yZFVuaWNvZGVJZ25vcmVDYXNl
Q2hhckNhY2hlZCA9IG51bGxwdHI7CisgICAgICAgIG5vbmRpZ2l0c0NhY2hlZCA9IG51bGxwdHI7
CisgICAgICAgIG5vbnNwYWNlc0NhY2hlZCA9IG51bGxwdHI7CisgICAgICAgIG5vbndvcmRjaGFy
Q2FjaGVkID0gbnVsbHB0cjsKKyAgICAgICAgbm9ud29yZFVuaWNvZGVJZ25vcmVDYXNlY2hhckNh
Y2hlZCA9IG51bGxwdHI7CiAgICAgICAgIHVuaWNvZGVQcm9wZXJ0aWVzQ2FjaGVkLmNsZWFyKCk7
CiAKICAgICAgICAgbV9kaXNqdW5jdGlvbnMuY2xlYXIoKTsKQEAgLTUzMCw5ICs1MDUsOSBAQCBz
dHJ1Y3QgWWFyclBhdHRlcm4gewogICAgIGJvb2wgbV9oYXNDb3BpZWRQYXJlblN1YmV4cHJlc3Np
b25zIDogMTsKICAgICBib29sIG1fc2F2ZUluaXRpYWxTdGFydFZhbHVlIDogMTsKICAgICBSZWdF
eHBGbGFncyBtX2ZsYWdzOwotICAgIHVuc2lnbmVkIG1fbnVtU3VicGF0dGVybnM7Ci0gICAgdW5z
aWduZWQgbV9tYXhCYWNrUmVmZXJlbmNlOwotICAgIHVuc2lnbmVkIG1faW5pdGlhbFN0YXJ0VmFs
dWVGcmFtZUxvY2F0aW9uOworICAgIHVuc2lnbmVkIG1fbnVtU3VicGF0dGVybnMgeyAwIH07Cisg
ICAgdW5zaWduZWQgbV9tYXhCYWNrUmVmZXJlbmNlIHsgMCB9OworICAgIHVuc2lnbmVkIG1faW5p
dGlhbFN0YXJ0VmFsdWVGcmFtZUxvY2F0aW9uIHsgMCB9OwogICAgIFBhdHRlcm5EaXNqdW5jdGlv
biogbV9ib2R5OwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGF0dGVybkRpc2p1bmN0aW9u
PiwgND4gbV9kaXNqdW5jdGlvbnM7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDaGFyYWN0
ZXJDbGFzcz4+IG1fdXNlckNoYXJhY3RlckNsYXNzZXM7CkBAIC01NDAsMTggKzUxNSwxOCBAQCBz
dHJ1Y3QgWWFyclBhdHRlcm4gewogICAgIEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25lZD4gbV9uYW1l
ZEdyb3VwVG9QYXJlbkluZGV4OwogCiBwcml2YXRlOgotICAgIGNvbnN0IGNoYXIqIGNvbXBpbGUo
Y29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCB2b2lkKiBzdGFja0xpbWl0KTsKLQotICAgIENo
YXJhY3RlckNsYXNzKiBhbnljaGFyQ2FjaGVkOwotICAgIENoYXJhY3RlckNsYXNzKiBuZXdsaW5l
Q2FjaGVkOwotICAgIENoYXJhY3RlckNsYXNzKiBkaWdpdHNDYWNoZWQ7Ci0gICAgQ2hhcmFjdGVy
Q2xhc3MqIHNwYWNlc0NhY2hlZDsKLSAgICBDaGFyYWN0ZXJDbGFzcyogd29yZGNoYXJDYWNoZWQ7
Ci0gICAgQ2hhcmFjdGVyQ2xhc3MqIHdvcmRVbmljb2RlSWdub3JlQ2FzZUNoYXJDYWNoZWQ7Ci0g
ICAgQ2hhcmFjdGVyQ2xhc3MqIG5vbmRpZ2l0c0NhY2hlZDsKLSAgICBDaGFyYWN0ZXJDbGFzcyog
bm9uc3BhY2VzQ2FjaGVkOwotICAgIENoYXJhY3RlckNsYXNzKiBub253b3JkY2hhckNhY2hlZDsK
LSAgICBDaGFyYWN0ZXJDbGFzcyogbm9ud29yZFVuaWNvZGVJZ25vcmVDYXNlY2hhckNhY2hlZDsK
KyAgICBFcnJvckNvZGUgY29tcGlsZShjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIHZvaWQq
IHN0YWNrTGltaXQpOworCisgICAgQ2hhcmFjdGVyQ2xhc3MqIGFueWNoYXJDYWNoZWQgeyBudWxs
cHRyIH07CisgICAgQ2hhcmFjdGVyQ2xhc3MqIG5ld2xpbmVDYWNoZWQgeyBudWxscHRyIH07Cisg
ICAgQ2hhcmFjdGVyQ2xhc3MqIGRpZ2l0c0NhY2hlZCB7IG51bGxwdHIgfTsKKyAgICBDaGFyYWN0
ZXJDbGFzcyogc3BhY2VzQ2FjaGVkIHsgbnVsbHB0ciB9OworICAgIENoYXJhY3RlckNsYXNzKiB3
b3JkY2hhckNhY2hlZCB7IG51bGxwdHIgfTsKKyAgICBDaGFyYWN0ZXJDbGFzcyogd29yZFVuaWNv
ZGVJZ25vcmVDYXNlQ2hhckNhY2hlZCB7IG51bGxwdHIgfTsKKyAgICBDaGFyYWN0ZXJDbGFzcyog
bm9uZGlnaXRzQ2FjaGVkIHsgbnVsbHB0ciB9OworICAgIENoYXJhY3RlckNsYXNzKiBub25zcGFj
ZXNDYWNoZWQgeyBudWxscHRyIH07CisgICAgQ2hhcmFjdGVyQ2xhc3MqIG5vbndvcmRjaGFyQ2Fj
aGVkIHsgbnVsbHB0ciB9OworICAgIENoYXJhY3RlckNsYXNzKiBub253b3JkVW5pY29kZUlnbm9y
ZUNhc2VjaGFyQ2FjaGVkIHsgbnVsbHB0ciB9OwogICAgIEhhc2hNYXA8dW5zaWduZWQsIENoYXJh
Y3RlckNsYXNzKj4gdW5pY29kZVByb3BlcnRpZXNDYWNoZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tlci5jcHAKaW5kZXggMDJmZWJjNzg5
ZTlhZDM4YjJkNThiMDQ1NTIyNWJkYTJiZWE1ZGQ4Mi4uOWYwNWYyMjg1MjUzMzkwZmFkNjRmM2U0
MDU3NjAyYzc0MDhjYmZiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyclN5bnRheENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJTeW50YXhDaGVja2VyLmNwcApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBTeW50YXhDaGVja2Vy
IHsKICAgICB2b2lkIGRpc2p1bmN0aW9uKCkge30KIH07CiAKLWNvbnN0IGNoYXIqIGNoZWNrU3lu
dGF4KGNvbnN0IFN0cmluZyYgcGF0dGVybiwgY29uc3QgU3RyaW5nJiBmbGFncykKK0Vycm9yQ29k
ZSBjaGVja1N5bnRheChjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGNvbnN0IFN0cmluZyYgZmxhZ3Mp
CiB7CiAgICAgU3ludGF4Q2hlY2tlciBzeW50YXhDaGVja2VyOwogICAgIHJldHVybiBwYXJzZShz
eW50YXhDaGVja2VyLCBwYXR0ZXJuLCBmbGFncy5jb250YWlucygndScpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJTeW50YXhDaGVja2VyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tlci5oCmluZGV4IDJlMmU5YmNmYjg3
NDY2MjJiYTRmNGJkYWIwNmNlMTk3Yzc5YWFiMTQuLjg2ZGFmMzhiY2JiMjA4ZTIxOWYyMDQwOWQ0
YmM3ZGFiOGRmNTVhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJTeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclN5
bnRheENoZWNrZXIuaApAQCAtMjUsMTAgKzI1LDExIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSAiWWFyckVycm9yQ29kZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgewogCi1jb25zdCBjaGFyKiBjaGVja1N5
bnRheChjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGNvbnN0IFN0cmluZyYgZmxhZ3MpOworRXJyb3JD
b2RlIGNoZWNrU3ludGF4KGNvbnN0IFN0cmluZyYgcGF0dGVybiwgY29uc3QgU3RyaW5nJiBmbGFn
cyk7CiAKIH19IC8vIEpTQzo6WWFycgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329752</attachid>
            <date>2017-12-19 03:42:24 -0800</date>
            <delta_ts>2017-12-19 04:19:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180966-20171219204222.patch</filename>
            <type>text/plain</type>
            <size>57349</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZDIwMTFlMThhMDQ1NWYxZDExYzllODFlN2YwMmJhOTk5ODBlNGUwLi41NWNkMmQ5NzAwYjM3M2Ri
NzU2NDlkMTBmOTUxZDdjYzVkYThiYjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MSBAQAorMjAxNy0xMi0xOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbWUFSUl0gWWFyciBzaG91bGQgcmV0dXJuIEVycm9yQ29kZSBpbnN0
ZWFkIG9mIGVycm9yIG1lc3NhZ2VzIChjb25zdCBjaGFyKikKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDk2NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgWWFyciByZXR1cm5zIGNvbnN0
IGNoYXIqYCB0byBwb2ludCBhbiBlcnJvciBtZXNzYWdlLiBCdXQgaXQgaXMKKyAgICAgICAgZWFz
aWVyIHRvIGhhbmRsZSBlcnJvciBzdGF0dXMgdGhhdCBZYXJyIHJldHVybnMgYW4gZXJyb3IgY29k
ZSBpbnN0ZWFkIG9mCisgICAgICAgIGBjb25zdCBjaGFyKmAuCisKKyAgICAgICAgSW4gdGhpcyBw
YXRjaCwgd2UgaW50cm9kdWNlIFlhcnI6OkVycm9yQ29kZS4gWWFyciByZXR1cm5zIGl0IGluc3Rl
YWQgb2YKKyAgICAgICAgYGNvbnN0IGNoYXIqYC4gYHN0ZDo6ZXhwZWN0ZWQ8dm9pZCwgWWFycjo6
RXJyb3JDb2RlPmAgd291bGQgYmUgYXBwcm9wcmlhdGUKKyAgICAgICAgZm9yIHRoZSBZYXJyIEFQ
SSBpbnRlcmZhY2UuIEJ1dCBpdCByZXF1aXJlcyBzdWJzdGFudGlhbCBjaGFuZ2VzIHJlbW92aW5n
CisgICAgICAgIEVycm9yQ29kZTo6Tm9FcnJvciwgc28gdGhpcyBwYXRjaCBqdXN0IHVzZXMgdGhl
IGN1cnJlbnQgWWFycjo6RXJyb3JDb2RlIGFzCisgICAgICAgIGEgZmlyc3Qgc3RlcC4KKworICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRp
ZXMuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpmaW5k
TWFnaWNDb21tZW50KToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAo
SlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVSZWdFeHApOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmVz
c2lvbik6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlUmVnRXhwKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5j
cHA6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6UmVnRXhwKToKKyAgICAgICAgKEpTQzo6UmVnRXhw
OjpieXRlQ29kZUNvbXBpbGVJZk5lY2Vzc2FyeSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y29t
cGlsZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y29tcGlsZU1hdGNoT25seSk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiB5YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb246OlByaXZhdGU6OlByaXZh
dGUpOgorICAgICAgICAoSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbjo6UHJpdmF0ZTo6Y29t
cGlsZSk6CisgICAgICAgICogeWFyci9ZYXJyRXJyb3JDb2RlLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OllhcnI6OmVycm9yTWVzc2FnZSk6CisgICAgICAgICogeWFyci9ZYXJyRXJyb3JDb2Rl
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJTeW50YXhDaGVj
a2VyLmguCisgICAgICAgIChKU0M6OllhcnI6Omhhc0Vycm9yKToKKyAgICAgICAgKiB5YXJyL1lh
cnJQYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6WWFycjo6UGFyc2VyOjpDaGFyYWN0ZXJDbGFzc1Bh
cnNlckRlbGVnYXRlOjpDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVnYXRlKToKKyAgICAgICAgKEpT
Qzo6WWFycjo6UGFyc2VyOjpDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVnYXRlOjphdG9tUGF0dGVy
bkNoYXJhY3Rlcik6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6UGFyc2VyKToKKyAgICAg
ICAgKEpTQzo6WWFycjo6UGFyc2VyOjppc0lkZW50aXR5RXNjYXBlQW5FcnJvcik6CisgICAgICAg
IChKU0M6OllhcnI6OlBhcnNlcjo6cGFyc2VFc2NhcGUpOgorICAgICAgICAoSlNDOjpZYXJyOjpQ
YXJzZXI6OnBhcnNlQ2hhcmFjdGVyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXJzZXI6
OnBhcnNlUGFyZW50aGVzZXNCZWdpbik6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6cGFy
c2VQYXJlbnRoZXNlc0VuZCk6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6cGFyc2VRdWFu
dGlmaWVyKToKKyAgICAgICAgKEpTQzo6WWFycjo6UGFyc2VyOjpwYXJzZVRva2Vucyk6CisgICAg
ICAgIChKU0M6OllhcnI6OlBhcnNlcjo6cGFyc2UpOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXJz
ZXI6OnRyeUNvbnN1bWVVbmljb2RlRXNjYXBlKToKKyAgICAgICAgKEpTQzo6WWFycjo6UGFyc2Vy
Ojp0cnlDb25zdW1lVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ollh
cnI6OnBhcnNlKToKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAgKEpT
Qzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OnNldHVwRGlzanVu
Y3Rpb25PZmZzZXRzKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rv
cjo6c2V0dXBPZmZzZXRzKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm46OmNvbXBp
bGUpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6WWFyclBhdHRlcm4pOgorICAg
ICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6ZXJyb3JNZXNzYWdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmg6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0
ZXJuOjpyZXNldCk6CisgICAgICAgICogeWFyci9ZYXJyU3ludGF4Q2hlY2tlci5jcHA6CisgICAg
ICAgIChKU0M6OllhcnI6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKiB5YXJyL1lhcnJTeW50YXhD
aGVja2VyLmg6CisKIDIwMTctMTItMTcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKICAgICAgICAgW0ZUTF0gTmV3QXJyYXlCdWZmZXIgc2hvdWxkIGJlIHNpbmtlZCBp
ZiBpdCBpcyBvbmx5IHVzZWQgZm9yIHNwcmVhZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAxN2ZiNjI2YTkzNTYzN2M2NmY5NTFhNTU2MzM3ZjU1ZTY3MzJiZWQ5Li5kN2E2MWM2
ZDZhNzI2MjU5M2QxOTE1NzNlZThkYjAyZTVjNjVhNjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTY3Myw2ICsxNjczLDcgQEAKIAkJRTMyMDFDMUUxRjhFODI0QzAwNzZBMDMy
IC8qIFNjcmlwdEZldGNoUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM4RDA2MEMxRjhFODE0MTAwNjQ5Q0YyIC8qIFNjcmlwdEZldGNo
UGFyYW1ldGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzMjJFNUEzMURBNjQ0MzkwMDZFNzcwOSAvKiBERkdTbmlwcGV0UGFyYW1zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzIyRTVBMTFEQTY0
NDM1MDA2RTc3MDkgLyogREZHU25pcHBldFBhcmFtcy5oICovOyB9OwogCQlFMzIyRTVBNzFEQTY0
NEE4MDA2RTc3MDkgLyogRlRMU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyMkU1QTUxREE2NDRBNDAwNkU3NzA5IC8qIEZUTFNu
aXBwZXRQYXJhbXMuaCAqLzsgfTsKKwkJRTMyODJCQkIxRkU5MzBBRjAwRURBRjcxIC8qIFlhcnJF
cnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMjgyQkJBMUZFOTMwQTQwMEVEQUY3MSAvKiBZYXJyRXJyb3JDb2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMyOEM2QzcxREE0MzA0NTAw
RDI1NUZEIC8qIE1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTg2MDE3NzE4NUE4RjVFMDAwMzBFRUUg
LyogTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzI4QzZDODFEQTQzMDYxMDBEMjU1RkQgLyog
UmVnaXN0ZXJBdE9mZnNldExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1NDBDNzlEMUI4MkQ5OUQwMDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0
TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUUzMjhDNkM5MURBNDMyRjkwMEQyNTVGRCAvKiBSZWdpc3RlckF0T2Zmc2V0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTQwQzc5RjFCODJEOUNFMDAw
RjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC00NDk4LDYgKzQ0OTksOCBAQAogCQlFMzIyRTVBNDFEQTY0
NEE0MDA2RTc3MDkgLyogRlRMU25pcHBldFBhcmFtcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBGVExTbmlwcGV0UGFyYW1zLmNwcDsgcGF0aCA9IGZ0bC9GVExTbmlw
cGV0UGFyYW1zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyMkU1QTUxREE2
NDRBNDAwNkU3NzA5IC8qIEZUTFNuaXBwZXRQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gRlRMU25pcHBldFBhcmFtcy5oOyBwYXRoID0gZnRsL0ZUTFNuaXBwZXRQYXJh
bXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyNkM0OTYxRUNCRUY1NzAwQTlB
OTA1IC8qIENsYXNzSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDbGFzc0luZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzI4MkJCOTFG
RTkzMEEzMDBFREFGNzEgLyogWWFyckVycm9yQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBZYXJyRXJyb3JDb2RlLmNwcDsgcGF0aCA9IHlhcnIvWWFyckVycm9y
Q29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMjgyQkJBMUZFOTMwQTQw
MEVEQUY3MSAvKiBZYXJyRXJyb3JDb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFlhcnJFcnJvckNvZGUuaDsgcGF0aCA9IHlhcnIvWWFyckVycm9yQ29kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzM2MzdBMzFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVj
dE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZsZWN0
T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzNjM3QTQxQjYzMjIw
MjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVmbGVjdE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzNC
M0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MDAyLDYg
KzcwMDUsOCBAQAogCQkJCTg2M0M2RDk5MTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2Fs
aXplLmggKi8sCiAJCQkJODYzQzZEOTgxNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxp
emVVQ1MyLmNwcCAqLywKIAkJCQk4NjNDNkQ5QTE1MjExMTEyMDA1ODVFNEUgLyogWWFyckNhbm9u
aWNhbGl6ZVVDUzIuanMgKi8sCisJCQkJRTMyODJCQjkxRkU5MzBBMzAwRURBRjcxIC8qIFlhcnJF
cnJvckNvZGUuY3BwICovLAorCQkJCUUzMjgyQkJBMUZFOTMwQTQwMEVEQUY3MSAvKiBZYXJyRXJy
b3JDb2RlLmggKi8sCiAJCQkJODY3MDRCN0QxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnBy
ZXRlci5jcHAgKi8sCiAJCQkJODY3MDRCN0UxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnBy
ZXRlci5oICovLAogCQkJCTg2NzA0QjdGMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCAq
LywKQEAgLTk0NjYsNiArOTQ3MSw3IEBACiAJCQkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDlGIC8q
IFg4NkFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk1OUU5MkUxQkQxN0ZBNDAwMUFB
NDEzIC8qIHh4ZC5wbCBpbiBIZWFkZXJzICovLAogCQkJCTQ1MTUzOUI5MTJEQzk5NDUwMEVGN0FD
NCAvKiBZYXJyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4MkJCQjFGRTkzMEFGMDBFREFGNzEg
LyogWWFyckVycm9yQ29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCODUxMkRCQTMzNzAw
QTlGRTdCIC8qIFlhcnJJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCODcx
MkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0Qjg4
MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTk5OTks
NiArMTAwMDUsNyBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJRkUwNUZBRkQxRkU0Q0VE
QTAwMDkzMjMwIC8qIERlcHJlY2F0ZWRJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTM2QjMxOUUxRjczNUYxNjAwMzdGQzMzIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NEExNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Ni5j
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDAxNThFQkU4QjAwNENCOUZGIC8qIHVkaXM4Nl9k
ZWNvZGUuYyBpbiBTb3VyY2VzICovLApAQCAtMTAxMDcsNyArMTAxMTQsNiBAQAogCQkJCTUzNkIz
MTQxMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlOTQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTM2QjMxMzgxRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U5NS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MzZCMzEyRjFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJj
ZTk2LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZFMDVGQUZEMUZFNENFREEwMDA5MzIzMCAvKiBE
ZXByZWNhdGVkSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIzMTM2
MUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlOTcuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTM2QjMxNkExRjcxQzU5OTAwMzdGQzMzIC8qIFVuaWZpZWRTb3VyY2U5OC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MzZCMzE2MzFGNzFDNTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTk5
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGNkZDA4
ZDkxNjMyMmY3MWI0YTVkYWZjMGNkM2JiNmQzNWM1MjgzMDcuLmU3MjUzYjkzMmQyOTY2MmUyYWVl
YmE2Y2E3MzdkMTFjZTcxYzViZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTEw
MTUsNiArMTAxNSw3IEBAIHdhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwCiAK
IHlhcnIvUmVndWxhckV4cHJlc3Npb24uY3BwCiB5YXJyL1lhcnJDYW5vbmljYWxpemVVQ1MyLmNw
cAoreWFyci9ZYXJyRXJyb3JDb2RlLmNwcAogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCiB5YXJy
L1lhcnJKSVQuY3BwCiB5YXJyL1lhcnJQYXR0ZXJuLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKaW5k
ZXggODk1ODA5YWQzNjhkYWQ1OTc0NmJjZmFlZjMzNzg3ZmI2NzQ2MGY0NC4uZTA1N2JhNGRjNTQz
ZGFhZTMxZmQ0ZjAyOGEyYmJiM2I0ZjhkZTYxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCkBAIC0x
NzcsOSArMTc3LDkgQEAgc3RhdGljIFN0cmluZyBmaW5kTWFnaWNDb21tZW50KGNvbnN0IFN0cmlu
ZyYgY29udGVudCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW4KICAgICBpZiAoY29udGVudC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGNvbnN0IGNoYXIqIGVy
cm9yID0gbnVsbHB0cjsKKyAgICBKU0M6OllhcnI6OkVycm9yQ29kZSBlcnJvciB7IEpTQzo6WWFy
cjo6RXJyb3JDb2RlOjpOb0Vycm9yIH07CiAgICAgWWFyclBhdHRlcm4gcGF0dGVybihwYXR0ZXJu
U3RyaW5nLCBKU0M6OlJlZ0V4cEZsYWdzOjpGbGFnTXVsdGlsaW5lLCAmZXJyb3IpOwotICAgIEFT
U0VSVCghZXJyb3IpOworICAgIEFTU0VSVCghaGFzRXJyb3IoZXJyb3IpKTsKICAgICBCdW1wUG9p
bnRlckFsbG9jYXRvciByZWdleEFsbG9jYXRvcjsKICAgICBhdXRvIGJ5dGVjb2RlUGF0dGVybiA9
IGJ5dGVDb21waWxlKHBhdHRlcm4sICZyZWdleEFsbG9jYXRvcik7CiAgICAgQVNTRVJUKGJ5dGVj
b2RlUGF0dGVybik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FT
VEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmlu
ZGV4IDNhZDM4OGM0Yzk5Njk4OWVlYTkzMzQ0MDBmMDVmM2IzNWM3NzE3MWYuLjg2MWYwY2Y3MDZm
MDQwYjMxODg1MzdhOWFmZWVhMTFiOGJlMzMyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvQVNUQnVpbGRlci5oCkBAIC0zMzUsNyArMzM1LDcgQEAgY2xhc3MgQVNUQnVpbGRlciB7
CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXIm
IGZsYWdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQpCiAgICAgewotICAgICAgICBpZiAo
WWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi5zdHJpbmcoKSwgZmxhZ3Muc3RyaW5nKCkpKQorICAg
ICAgICBpZiAoWWFycjo6aGFzRXJyb3IoWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi5zdHJpbmco
KSwgZmxhZ3Muc3RyaW5nKCkpKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBSZWdF
eHBOb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBSZWdFeHBOb2RlKGxvY2F0aW9uLCBw
YXR0ZXJuLCBmbGFncyk7CiAgICAgICAgIGludCBzaXplID0gcGF0dGVybi5sZW5ndGgoKSArIDI7
IC8vICsgMiBmb3IgdGhlIHR3byAvJ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAppbmRleCA4NDhjOTdkNDQzYjIxNmU2OWQwYjI4N2NhY2Y1MzFlZmY2NzMxOGRkLi5mNDg1
MTM2ZDA5OGNhOTlhZTEzMGVkZmNiNWQzY2E2ZTg1ZDZiNWU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC00NTQ3LDggKzQ1NDcsOCBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVBy
aW1hcnlFeHByZQogICAgICAgICBuZXh0KCk7CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIHJlID0g
Y29udGV4dC5jcmVhdGVSZWdFeHAobG9jYXRpb24sICpwYXR0ZXJuLCAqZmxhZ3MsIHN0YXJ0KTsK
ICAgICAgICAgaWYgKCFyZSkgewotICAgICAgICAgICAgY29uc3QgY2hhciogeWFyckVycm9yTXNn
ID0gWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi0+c3RyaW5nKCksIGZsYWdzLT5zdHJpbmcoKSk7
Ci0gICAgICAgICAgICByZWdleEZhaWwoeWFyckVycm9yTXNnKTsKKyAgICAgICAgICAgIFlhcnI6
OkVycm9yQ29kZSBlcnJvckNvZGUgPSBZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLT5zdHJpbmco
KSwgZmxhZ3MtPnN0cmluZygpKTsKKyAgICAgICAgICAgIHJlZ2V4RmFpbChZYXJyOjplcnJvck1l
c3NhZ2UoZXJyb3JDb2RlKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggNTM5
YzQ3MzQwZWI2YTY0NWZlN2NhZjQ0MWMzZjAwZGI1YjNjZjYzMi4uOGYzYWZlNmQyNTZmYWM5NWU2
OTNkNDIwNDg5MTdkZjk1YWQzNzE0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9TeW50YXhDaGVja2VyLmgKQEAgLTE4MSw3ICsxODEsNyBAQCBjbGFzcyBTeW50YXhDaGVja2Vy
IHsKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYp
IHsgcmV0dXJuIE51bGxFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFj
Y2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5
cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9CiAgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRG90
RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4cChjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFn
cywgaW50KSB7IHJldHVybiBZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnN0cmluZygpLCBmbGFn
cy5zdHJpbmcoKSkgPyAwIDogUmVnRXhwRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZVJlZ0V4cChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJu
LCBjb25zdCBJZGVudGlmaWVyJiBmbGFncywgaW50KSB7IHJldHVybiBZYXJyOjpoYXNFcnJvcihZ
YXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnN0cmluZygpLCBmbGFncy5zdHJpbmcoKSkpID8gMCA6
IFJlZ0V4cEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIE5ld0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhw
cjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcihjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25U
eXBlKSB7IHJldHVybiBDb25kaXRpb25hbEV4cHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHAuY3BwCmluZGV4IDA1MTFkMjI1MmFlZjAxYmY2OTlhZGJjYmEwNWM0NjZiZGNi
ZTE2YzMuLmY1YTQ5OTZhNWYwNjNiMzU1ODc2ZTcwMTlhYWI4ODNmNWUyNDAyOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcApAQCAtMjE0LDE2ICsyMTQsNiBAQCBS
ZWdFeHA6OlJlZ0V4cChWTSYgdm0sIGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZywgUmVnRXhw
RmxhZ3MgZmxhZ3MpCiAgICAgLCBtX3N0YXRlKE5vdENvbXBpbGVkKQogICAgICwgbV9wYXR0ZXJu
U3RyaW5nKHBhdHRlcm5TdHJpbmcpCiAgICAgLCBtX2ZsYWdzKGZsYWdzKQotICAgICwgbV9jb25z
dHJ1Y3Rpb25FcnJvcigwKQotICAgICwgbV9udW1TdWJwYXR0ZXJucygwKQotI2lmIEVOQUJMRShS
RUdFWFBfVFJBQ0lORykKLSAgICAsIG1fcnRNYXRjaE9ubHlUb3RhbFN1YmplY3RTdHJpbmdMZW4o
MC4wKQotICAgICwgbV9ydE1hdGNoVG90YWxTdWJqZWN0U3RyaW5nTGVuKDAuMCkKLSAgICAsIG1f
cnRNYXRjaE9ubHlDYWxsQ291bnQoMCkKLSAgICAsIG1fcnRNYXRjaE9ubHlGb3VuZENvdW50KDAp
Ci0gICAgLCBtX3J0TWF0Y2hDYWxsQ291bnQoMCkKLSAgICAsIG1fcnRNYXRjaEZvdW5kQ291bnQo
MCkKLSNlbmRpZgogewogfQogCkBAIC0yODMsNyArMjczLDcgQEAgdm9pZCBSZWdFeHA6OmJ5dGVD
b2RlQ29tcGlsZUlmTmVjZXNzYXJ5KFZNKiB2bSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgWWFy
cjo6WWFyclBhdHRlcm4gcGF0dGVybihtX3BhdHRlcm5TdHJpbmcsIG1fZmxhZ3MsICZtX2NvbnN0
cnVjdGlvbkVycm9yLCB2bS0+c3RhY2tMaW1pdCgpKTsKLSAgICBpZiAobV9jb25zdHJ1Y3Rpb25F
cnJvcikgeworICAgIGlmIChoYXNFcnJvcihtX2NvbnN0cnVjdGlvbkVycm9yKSkgewogICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2lmIENPTVBJTEVSX1FVSVJLKENPTlNJ
REVSU19VTlJFQUNIQUJMRV9DT0RFKQogICAgICAgICBtX3N0YXRlID0gUGFyc2VFcnJvcjsKQEAg
LTMwMCw3ICsyOTAsNyBAQCB2b2lkIFJlZ0V4cDo6Y29tcGlsZShWTSogdm0sIFlhcnI6OllhcnJD
aGFyU2l6ZSBjaGFyU2l6ZSkKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CiAgICAgCiAgICAgWWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihtX3BhdHRlcm5TdHJpbmcsIG1f
ZmxhZ3MsICZtX2NvbnN0cnVjdGlvbkVycm9yLCB2bS0+c3RhY2tMaW1pdCgpKTsKLSAgICBpZiAo
bV9jb25zdHJ1Y3Rpb25FcnJvcikgeworICAgIGlmIChoYXNFcnJvcihtX2NvbnN0cnVjdGlvbkVy
cm9yKSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2lmIENPTVBJ
TEVSX1FVSVJLKENPTlNJREVSU19VTlJFQUNIQUJMRV9DT0RFKQogICAgICAgICBtX3N0YXRlID0g
UGFyc2VFcnJvcjsKQEAgLTM1Niw3ICszNDYsNyBAQCB2b2lkIFJlZ0V4cDo6Y29tcGlsZU1hdGNo
T25seShWTSogdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgCiAgICAgWWFycjo6WWFyclBhdHRlcm4gcGF0
dGVybihtX3BhdHRlcm5TdHJpbmcsIG1fZmxhZ3MsICZtX2NvbnN0cnVjdGlvbkVycm9yLCB2bS0+
c3RhY2tMaW1pdCgpKTsKLSAgICBpZiAobV9jb25zdHJ1Y3Rpb25FcnJvcikgeworICAgIGlmICho
YXNFcnJvcihtX2NvbnN0cnVjdGlvbkVycm9yKSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogI2lmIENPTVBJTEVSX1FVSVJLKENPTlNJREVSU19VTlJFQUNIQUJMRV9D
T0RFKQogICAgICAgICBtX3N0YXRlID0gUGFyc2VFcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwLmgKaW5kZXggYmJiMjczOGU0ZDNiZGZjZGJiYTFmYmJiNmNhYTQ5YTRhYzRl
ZTZlOS4uNTIxMTNhM2IxNTA4NWIzMTc4YjgxZDFjYmY3ZTQ5MzViNDRjZjJmZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKQEAgLTYwLDggKzYwLDggQEAgY2xhc3MgUmVn
RXhwIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBjb25zdCBTdHJpbmcmIHBhdHRlcm4o
KSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5TdHJpbmc7IH0KIAotICAgIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IHsgcmV0dXJuICFtX2NvbnN0cnVjdGlvbkVycm9yICYmIG1fZmxhZ3MgIT0gSW52YWxp
ZEZsYWdzOyB9Ci0gICAgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4g
bV9jb25zdHJ1Y3Rpb25FcnJvcjsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJu
ICFZYXJyOjpoYXNFcnJvcihtX2NvbnN0cnVjdGlvbkVycm9yKSAmJiBtX2ZsYWdzICE9IEludmFs
aWRGbGFnczsgfQorICAgIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJu
IFlhcnI6OmVycm9yTWVzc2FnZShtX2NvbnN0cnVjdGlvbkVycm9yKTsgfQogCiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgaW50IG1hdGNoKFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIFZlY3RvcjxpbnQ+JiBvdmVjdG9yKTsKIApAQCAtMTM4LDggKzEzOCw2IEBAIGNsYXNz
IFJlZ0V4cCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBOb3RDb21waWxlZAogICAg
IH07CiAKLSAgICBSZWdFeHBTdGF0ZSBtX3N0YXRlOwotCiAgICAgdm9pZCBieXRlQ29kZUNvbXBp
bGVJZk5lY2Vzc2FyeShWTSopOwogCiAgICAgdm9pZCBjb21waWxlKFZNKiwgWWFycjo6WWFyckNo
YXJTaXplKTsKQEAgLTE1MiwxOSArMTUwLDIwIEBAIGNsYXNzIFJlZ0V4cCBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIHZvaWQgbWF0Y2hDb21wYXJlV2l0aEludGVycHJldGVyKGNvbnN0IFN0
cmluZyYsIGludCBzdGFydE9mZnNldCwgaW50KiBvZmZzZXRWZWN0b3IsIGludCBqaXRSZXN1bHQp
OwogI2VuZGlmCiAKKyAgICBSZWdFeHBTdGF0ZSBtX3N0YXRlIHsgTm90Q29tcGlsZWQgfTsKICAg
ICBTdHJpbmcgbV9wYXR0ZXJuU3RyaW5nOwogICAgIFJlZ0V4cEZsYWdzIG1fZmxhZ3M7Ci0gICAg
Y29uc3QgY2hhciogbV9jb25zdHJ1Y3Rpb25FcnJvcjsKLSAgICB1bnNpZ25lZCBtX251bVN1YnBh
dHRlcm5zOworICAgIFlhcnI6OkVycm9yQ29kZSBtX2NvbnN0cnVjdGlvbkVycm9yIHsgWWFycjo6
RXJyb3JDb2RlOjpOb0Vycm9yIH07CisgICAgdW5zaWduZWQgbV9udW1TdWJwYXR0ZXJucyB7IDAg
fTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2NhcHR1cmVHcm91cE5hbWVzOwogICAgIEhhc2hNYXA8
U3RyaW5nLCB1bnNpZ25lZD4gbV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4OwogI2lmIEVOQUJMRShS
RUdFWFBfVFJBQ0lORykKLSAgICBkb3VibGUgbV9ydE1hdGNoT25seVRvdGFsU3ViamVjdFN0cmlu
Z0xlbjsKLSAgICBkb3VibGUgbV9ydE1hdGNoVG90YWxTdWJqZWN0U3RyaW5nTGVuOwotICAgIHVu
c2lnbmVkIG1fcnRNYXRjaE9ubHlDYWxsQ291bnQ7Ci0gICAgdW5zaWduZWQgbV9ydE1hdGNoT25s
eUZvdW5kQ291bnQ7Ci0gICAgdW5zaWduZWQgbV9ydE1hdGNoQ2FsbENvdW50OwotICAgIHVuc2ln
bmVkIG1fcnRNYXRjaEZvdW5kQ291bnQ7CisgICAgZG91YmxlIG1fcnRNYXRjaE9ubHlUb3RhbFN1
YmplY3RTdHJpbmdMZW4geyAwLjAgfTsKKyAgICBkb3VibGUgbV9ydE1hdGNoVG90YWxTdWJqZWN0
U3RyaW5nTGVuIHsgMC4wIH07CisgICAgdW5zaWduZWQgbV9ydE1hdGNoT25seUNhbGxDb3VudCB7
IDAgfTsKKyAgICB1bnNpZ25lZCBtX3J0TWF0Y2hPbmx5Rm91bmRDb3VudCB7IDAgfTsKKyAgICB1
bnNpZ25lZCBtX3J0TWF0Y2hDYWxsQ291bnQgeyAwIH07CisgICAgdW5zaWduZWQgbV9ydE1hdGNo
Rm91bmRDb3VudCB7IDAgfTsKICNlbmRpZgogICAgIENvbmN1cnJlbnRKU0xvY2sgbV9sb2NrOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1bGFyRXhwcmVzc2lv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1bGFyRXhwcmVzc2lvbi5jcHAK
aW5kZXggMWIxYjIyNDE1YWE4MzA5MDMyM2ZkNzhmMWIyM2Y0NGM2NTU4Zjk1ZS4uNDNiZjQ3Zjdj
N2ZiMTc5NDdjMmJjODFlODI2MGM2MzBjMWUwNDMyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvUmVndWxhckV4cHJlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNwcApAQCAtNDIsMTYgKzQyLDE0IEBAIGNs
YXNzIFJlZ3VsYXJFeHByZXNzaW9uOjpQcml2YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVndWxh
ckV4cHJlc3Npb246OlByaXZhdGU+CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFByaXZh
dGUocGF0dGVybiwgY2FzZVNlbnNpdGl2aXR5LCBtdWx0aWxpbmVNb2RlKSk7CiAgICAgfQogCi0g
ICAgaW50IGxhc3RNYXRjaExlbmd0aDsKKyAgICBpbnQgbGFzdE1hdGNoTGVuZ3RoIHsgLTEgfTsK
IAogICAgIHVuc2lnbmVkIG1fbnVtU3VicGF0dGVybnM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEpT
Qzo6WWFycjo6Qnl0ZWNvZGVQYXR0ZXJuPiBtX3JlZ0V4cEJ5dGVDb2RlOwogCiBwcml2YXRlOgog
ICAgIFByaXZhdGUoY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBUZXh0Q2FzZVNlbnNpdGl2aXR5IGNh
c2VTZW5zaXRpdml0eSwgTXVsdGlsaW5lTW9kZSBtdWx0aWxpbmVNb2RlKQotICAgICAgICA6IGxh
c3RNYXRjaExlbmd0aCgtMSkKLSAgICAgICAgLCBtX3JlZ0V4cEJ5dGVDb2RlKGNvbXBpbGUocGF0
dGVybiwgY2FzZVNlbnNpdGl2aXR5LCBtdWx0aWxpbmVNb2RlKSkKLSAgICAgICAgLCBtX2NvbnN0
cnVjdGlvbkVycm9yKG51bGxwdHIpCisgICAgICAgIDogbV9yZWdFeHBCeXRlQ29kZShjb21waWxl
KHBhdHRlcm4sIGNhc2VTZW5zaXRpdml0eSwgbXVsdGlsaW5lTW9kZSkpCiAgICAgewogICAgIH0K
IApAQCAtNjYsOCArNjQsOCBAQCBjbGFzcyBSZWd1bGFyRXhwcmVzc2lvbjo6UHJpdmF0ZSA6IHB1
YmxpYyBSZWZDb3VudGVkPFJlZ3VsYXJFeHByZXNzaW9uOjpQcml2YXRlPgogICAgICAgICAgICAg
ZmxhZ3MgPSBzdGF0aWNfY2FzdDxSZWdFeHBGbGFncz4oZmxhZ3MgfCBGbGFnTXVsdGlsaW5lKTsK
IAogICAgICAgICBKU0M6OllhcnI6OllhcnJQYXR0ZXJuIHBhdHRlcm4ocGF0dGVyblN0cmluZywg
ZmxhZ3MsICZtX2NvbnN0cnVjdGlvbkVycm9yKTsKLSAgICAgICAgaWYgKG1fY29uc3RydWN0aW9u
RXJyb3IpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiUmVndWxhckV4cHJlc3Npb246IFlBUlIg
Y29tcGlsZSBmYWlsZWQgd2l0aCAnJXMnIiwgbV9jb25zdHJ1Y3Rpb25FcnJvcik7CisgICAgICAg
IGlmIChKU0M6OllhcnI6Omhhc0Vycm9yKG1fY29uc3RydWN0aW9uRXJyb3IpKSB7CisgICAgICAg
ICAgICBMT0dfRVJST1IoIlJlZ3VsYXJFeHByZXNzaW9uOiBZQVJSIGNvbXBpbGUgZmFpbGVkIHdp
dGggJyVzJyIsIEpTQzo6WWFycjo6ZXJyb3JNZXNzYWdlKG1fY29uc3RydWN0aW9uRXJyb3IpKTsK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKQEAgLTc3LDcgKzc1LDcg
QEAgY2xhc3MgUmVndWxhckV4cHJlc3Npb246OlByaXZhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxS
ZWd1bGFyRXhwcmVzc2lvbjo6UHJpdmF0ZT4KICAgICB9CiAKICAgICBCdW1wUG9pbnRlckFsbG9j
YXRvciBtX3JlZ2V4QWxsb2NhdG9yOwotICAgIGNvbnN0IGNoYXIqIG1fY29uc3RydWN0aW9uRXJy
b3I7CisgICAgSlNDOjpZYXJyOjpFcnJvckNvZGUgbV9jb25zdHJ1Y3Rpb25FcnJvciB7IFlhcnI6
OkVycm9yQ29kZTo6Tm9FcnJvciB9OwogfTsKIAogUmVndWxhckV4cHJlc3Npb246OlJlZ3VsYXJF
eHByZXNzaW9uKGNvbnN0IFN0cmluZyYgcGF0dGVybiwgVGV4dENhc2VTZW5zaXRpdml0eSBjYXNl
U2Vuc2l0aXZpdHksIE11bHRpbGluZU1vZGUgbXVsdGlsaW5lTW9kZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJFcnJvckNvZGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyckVycm9yQ29kZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjkwYTA4MWM4ZWZh
ZTBlODc3MWNiMDRiOGU0NmQ1NDJkNWEyYjQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJFcnJvckNvZGUuY3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIllhcnJFcnJvckNvZGUuaCIKKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBZYXJyIHsKKworY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKEVycm9yQ29k
ZSBlcnJvcikKK3sKKyNkZWZpbmUgUkVHRVhQX0VSUk9SX1BSRUZJWCAiSW52YWxpZCByZWd1bGFy
IGV4cHJlc3Npb246ICIKKyAgICAvLyBUaGUgb3JkZXIgb2YgdGhpcyBhcnJheSBtdXN0IG1hdGNo
IHRoZSBFcnJvckNvZGUgZW51bS4KKyAgICBzdGF0aWMgY29uc3QgY2hhciogZXJyb3JNZXNzYWdl
c1tdID0geworICAgICAgICBudWxscHRyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm9FcnJvcgorICAgICAgICBSRUdFWFBf
RVJST1JfUFJFRklYICJyZWd1bGFyIGV4cHJlc3Npb24gdG9vIGxhcmdlIiwgICAgICAgICAgICAg
ICAgICAgLy8gUGF0dGVyblRvb0xhcmdlCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggIm51
bWJlcnMgb3V0IG9mIG9yZGVyIGluIHt9IHF1YW50aWZpZXIiLCAgICAgICAgICAvLyBRdWFudGlm
aWVyT3V0T2ZPcmRlcgorICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJub3RoaW5nIHRvIHJl
cGVhdCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUXVhbnRpZmllcldpdGhvdXRB
dG9tCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggIm51bWJlciB0b28gbGFyZ2UgaW4ge30g
cXVhbnRpZmllciIsICAgICAgICAgICAgICAvLyBRdWFudGlmaWVyVG9vTGFyZ2UKKyAgICAgICAg
UkVHRVhQX0VSUk9SX1BSRUZJWCAibWlzc2luZyApIiwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIE1pc3NpbmdQYXJlbnRoZXNlcworICAgICAgICBSRUdFWFBfRVJST1Jf
UFJFRklYICJ1bm1hdGNoZWQgcGFyZW50aGVzZXMiLCAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gUGFyZW50aGVzZXNVbm1hdGNoZWQKKyAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAidW5y
ZWNvZ25pemVkIGNoYXJhY3RlciBhZnRlciAoPyIsICAgICAgICAgICAgICAgIC8vIFBhcmVudGhl
c2VzVHlwZUludmFsaWQKKyAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAiaW52YWxpZCBncm91
cCBzcGVjaWZpZXIgbmFtZSIsICAgICAgICAgICAgICAgICAgIC8vIEludmFsaWRHcm91cE5hbWUK
KyAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAiZHVwbGljYXRlIGdyb3VwIHNwZWNpZmllciBu
YW1lIiwgICAgICAgICAgICAgICAgIC8vIER1cGxpY2F0ZUdyb3VwTmFtZQorICAgICAgICBSRUdF
WFBfRVJST1JfUFJFRklYICJtaXNzaW5nIHRlcm1pbmF0aW5nIF0gZm9yIGNoYXJhY3RlciBjbGFz
cyIsICAgICAgLy8gQ2hhcmFjdGVyQ2xhc3NVbm1hdGNoZWQKKyAgICAgICAgUkVHRVhQX0VSUk9S
X1BSRUZJWCAicmFuZ2Ugb3V0IG9mIG9yZGVyIGluIGNoYXJhY3RlciBjbGFzcyIsICAgICAgICAg
IC8vIENoYXJhY3RlckNsYXNzT3V0T2ZPcmRlcgorICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklY
ICJcXCBhdCBlbmQgb2YgcGF0dGVybiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXNj
YXBlVW50ZXJtaW5hdGVkCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggImludmFsaWQgdW5p
Y29kZSB7fSBlc2NhcGUiLCAgICAgICAgICAgICAgICAgICAgICAvLyBJbnZhbGlkVW5pY29kZUVz
Y2FwZQorICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJpbnZhbGlkIGJhY2tyZWZlcmVuY2Ug
Zm9yIHVuaWNvZGUgcGF0dGVybiIsICAgICAgLy8gSW52YWxpZEJhY2tyZWZlcmVuY2UKKyAgICAg
ICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAiaW52YWxpZCBlc2NhcGVkIGNoYXJhY3RlciBmb3IgdW5p
Y29kZSBwYXR0ZXJuIiwgIC8vIEludmFsaWRJZGVudGl0eUVzY2FwZQorICAgICAgICBSRUdFWFBf
RVJST1JfUFJFRklYICJpbnZhbGlkIHByb3BlcnR5IGV4cHJlc3Npb24iLCAgICAgICAgICAgICAg
ICAgICAgLy8gSW52YWxpZFVuaWNvZGVQcm9wZXJ0eUV4cHJlc3Npb24KKyAgICAgICAgUkVHRVhQ
X0VSUk9SX1BSRUZJWCAidG9vIG1hbnkgbmVzdGVkIGRpc2p1bmN0aW9ucyIsICAgICAgICAgICAg
ICAgICAgIC8vIFRvb01hbnlEaXNqdW5jdGlvbnMKKyAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJ
WCAicGF0dGVybiBleGNlZWRzIHN0cmluZyBsZW5ndGggbGltaXRzIiwgICAgICAgICAgIC8vIE9m
ZnNldFRvb0xhcmdlCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggImludmFsaWQgZmxhZ3Mi
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnZhbGlkUmVndWxhckV4cHJl
c3Npb25GbGFncworICAgIH07CisKKyAgICByZXR1cm4gZXJyb3JNZXNzYWdlc1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZXJyb3IpXTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OllhcnIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJFcnJvckNvZGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJFcnJvckNvZGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjk0
N2I5OGYyZTljMmU5Y2IzYzgzODFmMjlhZjYxNGU5NzU5Y2IyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckVycm9yQ29kZS5oCkBAIC0wLDAgKzEsNTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CisKK2VudW0g
Y2xhc3MgRXJyb3JDb2RlIDogdW5zaWduZWQgeworICAgIE5vRXJyb3IgPSAwLAorICAgIFBhdHRl
cm5Ub29MYXJnZSwKKyAgICBRdWFudGlmaWVyT3V0T2ZPcmRlciwKKyAgICBRdWFudGlmaWVyV2l0
aG91dEF0b20sCisgICAgUXVhbnRpZmllclRvb0xhcmdlLAorICAgIE1pc3NpbmdQYXJlbnRoZXNl
cywKKyAgICBQYXJlbnRoZXNlc1VubWF0Y2hlZCwKKyAgICBQYXJlbnRoZXNlc1R5cGVJbnZhbGlk
LAorICAgIEludmFsaWRHcm91cE5hbWUsCisgICAgRHVwbGljYXRlR3JvdXBOYW1lLAorICAgIENo
YXJhY3RlckNsYXNzVW5tYXRjaGVkLAorICAgIENoYXJhY3RlckNsYXNzT3V0T2ZPcmRlciwKKyAg
ICBFc2NhcGVVbnRlcm1pbmF0ZWQsCisgICAgSW52YWxpZFVuaWNvZGVFc2NhcGUsCisgICAgSW52
YWxpZEJhY2tyZWZlcmVuY2UsCisgICAgSW52YWxpZElkZW50aXR5RXNjYXBlLAorICAgIEludmFs
aWRVbmljb2RlUHJvcGVydHlFeHByZXNzaW9uLAorICAgIFRvb01hbnlEaXNqdW5jdGlvbnMsCisg
ICAgT2Zmc2V0VG9vTGFyZ2UsCisgICAgSW52YWxpZFJlZ3VsYXJFeHByZXNzaW9uRmxhZ3MsCit9
OworCitKU19FWFBPUlRfUFJJVkFURSBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UoRXJyb3JDb2Rl
KTsKK2lubGluZSBib29sIGhhc0Vycm9yKEVycm9yQ29kZSBlcnJvckNvZGUpCit7CisgICAgcmV0
dXJuIGVycm9yQ29kZSAhPSBFcnJvckNvZGU6Ok5vRXJyb3I7Cit9CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpZYXJyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
UGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGFyc2VyLmgKaW5kZXgg
MTA1YzAzYmYzMTQxMDBhY2I3NGIyOTJhM2FjM2IyMzc1OTc1M2YwZS4uMjE3YWNjZjQ0ZGJlMjQx
ZDExMjdiNjhkMGYyMzVmMGEzOTk0YWYxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyclBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJQYXJzZXIuaApAQCAtNDEsNyArNDEsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWxlZ2F0ZSwgdHlw
ZW5hbWUgQ2hhclR5cGU+CiBjbGFzcyBQYXJzZXIgewogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxj
bGFzcyBGcmllbmREZWxlZ2F0ZT4KLSAgICBmcmllbmQgY29uc3QgY2hhciogcGFyc2UoRnJpZW5k
RGVsZWdhdGUmLCBjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJvb2wgaXNVbmljb2RlLCB1bnNpZ25l
ZCBiYWNrUmVmZXJlbmNlTGltaXQpOworICAgIGZyaWVuZCBFcnJvckNvZGUgcGFyc2UoRnJpZW5k
RGVsZWdhdGUmLCBjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJvb2wgaXNVbmljb2RlLCB1bnNpZ25l
ZCBiYWNrUmVmZXJlbmNlTGltaXQpOwogCiAgICAgLyoKICAgICAgKiBDaGFyYWN0ZXJDbGFzc1Bh
cnNlckRlbGVnYXRlOgpAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgICAqLwog
ICAgIGNsYXNzIENoYXJhY3RlckNsYXNzUGFyc2VyRGVsZWdhdGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgQ2hhcmFjdGVyQ2xhc3NQYXJzZXJEZWxlZ2F0ZShEZWxlZ2F0ZSYgZGVsZWdhdGUsIFlh
cnJQYXR0ZXJuOjpFcnJvckNvZGUmIGVycikKKyAgICAgICAgQ2hhcmFjdGVyQ2xhc3NQYXJzZXJE
ZWxlZ2F0ZShEZWxlZ2F0ZSYgZGVsZWdhdGUsIEVycm9yQ29kZSYgZXJyKQogICAgICAgICAgICAg
OiBtX2RlbGVnYXRlKGRlbGVnYXRlKQogICAgICAgICAgICAgLCBtX2VycihlcnIpCiAgICAgICAg
ICAgICAsIG1fc3RhdGUoRW1wdHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgY2xhc3MgUGFyc2VyIHsK
IAogICAgICAgICAgICAgY2FzZSBDYWNoZWRDaGFyYWN0ZXJIeXBoZW46CiAgICAgICAgICAgICAg
ICAgaWYgKGNoIDwgbV9jaGFyYWN0ZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBZ
YXJyUGF0dGVybjo6Q2hhcmFjdGVyQ2xhc3NPdXRPZk9yZGVyOworICAgICAgICAgICAgICAgICAg
ICBtX2VyciA9IEVycm9yQ29kZTo6Q2hhcmFjdGVyQ2xhc3NPdXRPZk9yZGVyOwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1f
ZGVsZWdhdGUuYXRvbUNoYXJhY3RlckNsYXNzUmFuZ2UobV9jaGFyYWN0ZXIsIGNoKTsKQEAgLTE5
OCw3ICsxOTgsNyBAQCBjbGFzcyBQYXJzZXIgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgRGVs
ZWdhdGUmIG1fZGVsZWdhdGU7Ci0gICAgICAgIFlhcnJQYXR0ZXJuOjpFcnJvckNvZGUmIG1fZXJy
OworICAgICAgICBFcnJvckNvZGUmIG1fZXJyOwogICAgICAgICBlbnVtIENoYXJhY3RlckNsYXNz
Q29uc3RydWN0aW9uU3RhdGUgewogICAgICAgICAgICAgRW1wdHksCiAgICAgICAgICAgICBDYWNo
ZWRDaGFyYWN0ZXIsCkBAIC0yMTIsMTIgKzIxMiw5IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgUGFy
c2VyKERlbGVnYXRlJiBkZWxlZ2F0ZSwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIGlzVW5p
Y29kZSwgdW5zaWduZWQgYmFja1JlZmVyZW5jZUxpbWl0KQogICAgICAgICA6IG1fZGVsZWdhdGUo
ZGVsZWdhdGUpCiAgICAgICAgICwgbV9iYWNrUmVmZXJlbmNlTGltaXQoYmFja1JlZmVyZW5jZUxp
bWl0KQotICAgICAgICAsIG1fZXJyKFlhcnJQYXR0ZXJuOjpOb0Vycm9yKQogICAgICAgICAsIG1f
ZGF0YShwYXR0ZXJuLmNoYXJhY3RlcnM8Q2hhclR5cGU+KCkpCiAgICAgICAgICwgbV9zaXplKHBh
dHRlcm4ubGVuZ3RoKCkpCi0gICAgICAgICwgbV9pbmRleCgwKQogICAgICAgICAsIG1faXNVbmlj
b2RlKGlzVW5pY29kZSkKLSAgICAgICAgLCBtX3BhcmVudGhlc2VzTmVzdGluZ0RlcHRoKDApCiAg
ICAgewogICAgIH0KIApAQCAtMjI3LDcgKzIyNCw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgYm9v
bCBpc0lkZW50aXR5RXNjYXBlQW5FcnJvcihpbnQgY2gpCiAgICAgewogICAgICAgICBpZiAobV9p
c1VuaWNvZGUgJiYgIXN0cmNocigiXiRcXC4qKz8oKVtde318LyIsIGNoKSkgewotICAgICAgICAg
ICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6SW52YWxpZElkZW50aXR5RXNjYXBlOworICAgICAgICAg
ICAgbV9lcnIgPSBFcnJvckNvZGU6OkludmFsaWRJZGVudGl0eUVzY2FwZTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAgLTI1NywxMiArMjU0LDEyIEBAIGNsYXNzIFBh
cnNlciB7CiAgICAgdGVtcGxhdGU8Ym9vbCBpbkNoYXJhY3RlckNsYXNzLCBjbGFzcyBFc2NhcGVE
ZWxlZ2F0ZT4KICAgICBib29sIHBhcnNlRXNjYXBlKEVzY2FwZURlbGVnYXRlJiBkZWxlZ2F0ZSkK
ICAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9lcnIpOworICAgICAgICBBU1NFUlQoIWhhc0Vycm9y
KG1fZXJyKSk7CiAgICAgICAgIEFTU0VSVChwZWVrKCkgPT0gJ1xcJyk7CiAgICAgICAgIGNvbnN1
bWUoKTsKIAogICAgICAgICBpZiAoYXRFbmRPZlBhdHRlcm4oKSkgewotICAgICAgICAgICAgbV9l
cnIgPSBZYXJyUGF0dGVybjo6RXNjYXBlVW50ZXJtaW5hdGVkOworICAgICAgICAgICAgbV9lcnIg
PSBFcnJvckNvZGU6OkVzY2FwZVVudGVybWluYXRlZDsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogCkBAIC0zNDMsNyArMzQwLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICAg
ICAgICAgICAgICByZXN0b3JlU3RhdGUoc3RhdGUpOwogCiAgICAgICAgICAgICAgICAgaWYgKG1f
aXNVbmljb2RlKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46Oklu
dmFsaWRCYWNrcmVmZXJlbmNlOworICAgICAgICAgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29k
ZTo6SW52YWxpZEJhY2tyZWZlcmVuY2U7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC00MjksNyArNDI2LDcgQEAg
Y2xhc3MgUGFyc2VyIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2lzVW5pY29kZSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6SW52YWxpZEJhY2tyZWZl
cmVuY2U7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29kZTo6SW52YWxp
ZEJhY2tyZWZlcmVuY2U7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTQ2MCw3ICs0NTcsNyBAQCBjbGFz
cyBQYXJzZXIgewogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkZWxlZ2F0ZS5h
dG9tQnVpbHRJbkNoYXJhY3RlckNsYXNzKG9wdENsYXNzSUQudmFsdWUoKSwgZXNjYXBlQ2hhciA9
PSAnUCcpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJy
UGF0dGVybjo6SW52YWxpZFVuaWNvZGVQcm9wZXJ0eUV4cHJlc3Npb247CisgICAgICAgICAgICAg
ICAgbV9lcnIgPSBFcnJvckNvZGU6OkludmFsaWRVbmljb2RlUHJvcGVydHlFeHByZXNzaW9uOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtNDgwLDIwICs0NzcsMjAgQEAgY2xh
c3MgUGFyc2VyIHsKICAgICAgICAgICAgICAgICBVQ2hhcjMyIGNvZGVQb2ludCA9IDA7CiAgICAg
ICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICBpZiAoYXRFbmRPZlBhdHRlcm4o
KSB8fCAhaXNBU0NJSUhleERpZ2l0KHBlZWsoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IG1fZXJyID0gWWFyclBhdHRlcm46OkludmFsaWRVbmljb2RlRXNjYXBlOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9lcnIgPSBFcnJvckNvZGU6OkludmFsaWRVbmljb2RlRXNjYXBlOwogICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgICAgICAgICBjb2RlUG9pbnQgPSAoY29kZVBvaW50IDw8IDQpIHwgdG9BU0NJSUhl
eFZhbHVlKGNvbnN1bWUoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGVQb2ludCA+
IFVDSEFSX01BWF9WQUxVRSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gWWFyclBh
dHRlcm46OkludmFsaWRVbmljb2RlRXNjYXBlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9l
cnIgPSBFcnJvckNvZGU6OkludmFsaWRVbmljb2RlRXNjYXBlOwogICAgICAgICAgICAgICAgIH0g
d2hpbGUgKCFhdEVuZE9mUGF0dGVybigpICYmIHBlZWsoKSAhPSAnfScpOwogICAgICAgICAgICAg
ICAgIGlmICghYXRFbmRPZlBhdHRlcm4oKSAmJiBwZWVrKCkgPT0gJ30nKQogICAgICAgICAgICAg
ICAgICAgICBjb25zdW1lKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIW1fZXJyKQotICAg
ICAgICAgICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpJbnZhbGlkVW5pY29kZUVzY2Fw
ZTsKLSAgICAgICAgICAgICAgICBpZiAobV9lcnIpCisgICAgICAgICAgICAgICAgZWxzZSBpZiAo
IWhhc0Vycm9yKG1fZXJyKSkKKyAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBFcnJvckNvZGU6
OkludmFsaWRVbmljb2RlRXNjYXBlOworICAgICAgICAgICAgICAgIGlmIChoYXNFcnJvcihtX2Vy
cikpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAgICAgICAg
IGRlbGVnYXRlLmF0b21QYXR0ZXJuQ2hhcmFjdGVyKGNvZGVQb2ludCk7CkBAIC01ODUsNyArNTgy
LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICAgKi8KICAgICB2b2lkIHBhcnNlQ2hhcmFjdGVyQ2xh
c3MoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2Vycik7CisgICAgICAgIEFTU0VSVCghaGFz
RXJyb3IobV9lcnIpKTsKICAgICAgICAgQVNTRVJUKHBlZWsoKSA9PSAnWycpOwogICAgICAgICBj
b25zdW1lKCk7CiAKQEAgLTYwOCwxMSArNjA1LDExIEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICAg
ICAgICAgICAgY2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3Rvci5hdG9tUGF0dGVybkNoYXJhY3Rlcihj
b25zdW1lUG9zc2libGVTdXJyb2dhdGVQYWlyKCksIHRydWUpOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBpZiAobV9lcnIpCisgICAgICAgICAgICBpZiAoaGFzRXJyb3IobV9lcnIpKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIG1fZXJyID0gWWFy
clBhdHRlcm46OkNoYXJhY3RlckNsYXNzVW5tYXRjaGVkOworICAgICAgICBtX2VyciA9IEVycm9y
Q29kZTo6Q2hhcmFjdGVyQ2xhc3NVbm1hdGNoZWQ7CiAgICAgfQogCiAgICAgLyoKQEAgLTYyMiwx
MyArNjE5LDEzIEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICovCiAgICAgdm9pZCBwYXJzZVBhcmVu
dGhlc2VzQmVnaW4oKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2Vycik7CisgICAgICAgIEFT
U0VSVCghaGFzRXJyb3IobV9lcnIpKTsKICAgICAgICAgQVNTRVJUKHBlZWsoKSA9PSAnKCcpOwog
ICAgICAgICBjb25zdW1lKCk7CiAKICAgICAgICAgaWYgKHRyeUNvbnN1bWUoJz8nKSkgewogICAg
ICAgICAgICAgaWYgKGF0RW5kT2ZQYXR0ZXJuKCkpIHsKLSAgICAgICAgICAgICAgICBtX2VyciA9
IFlhcnJQYXR0ZXJuOjpQYXJlbnRoZXNlc1R5cGVJbnZhbGlkOworICAgICAgICAgICAgICAgIG1f
ZXJyID0gRXJyb3JDb2RlOjpQYXJlbnRoZXNlc1R5cGVJbnZhbGlkOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtNjUyLDE1ICs2NDksMTUgQEAgY2xhc3MgUGFy
c2VyIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHNldEFkZFJlc3VsdC5pc05ld0VudHJ5KQog
ICAgICAgICAgICAgICAgICAgICAgICAgbV9kZWxlZ2F0ZS5hdG9tUGFyZW50aGVzZXNTdWJwYXR0
ZXJuQmVnaW4odHJ1ZSwgZ3JvdXBOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6RHVwbGljYXRlR3JvdXBO
YW1lOworICAgICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBFcnJvckNvZGU6OkR1cGxpY2F0
ZUdyb3VwTmFtZTsKICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
bV9lcnIgPSBZYXJyUGF0dGVybjo6SW52YWxpZEdyb3VwTmFtZTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9lcnIgPSBFcnJvckNvZGU6OkludmFsaWRHcm91cE5hbWU7CiAKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpQYXJlbnRoZXNlc1R5cGVJbnZhbGlkOworICAg
ICAgICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpQYXJlbnRoZXNlc1R5cGVJbnZhbGlkOwog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fZGVsZWdhdGUuYXRv
bVBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2luKCk7CkBAIC02NzUsMTQgKzY3MiwxNCBAQCBjbGFz
cyBQYXJzZXIgewogICAgICAqLwogICAgIHZvaWQgcGFyc2VQYXJlbnRoZXNlc0VuZCgpCiAgICAg
ewotICAgICAgICBBU1NFUlQoIW1fZXJyKTsKKyAgICAgICAgQVNTRVJUKCFoYXNFcnJvcihtX2Vy
cikpOwogICAgICAgICBBU1NFUlQocGVlaygpID09ICcpJyk7CiAgICAgICAgIGNvbnN1bWUoKTsK
IAogICAgICAgICBpZiAobV9wYXJlbnRoZXNlc05lc3RpbmdEZXB0aCA+IDApCiAgICAgICAgICAg
ICBtX2RlbGVnYXRlLmF0b21QYXJlbnRoZXNlc0VuZCgpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpQYXJlbnRoZXNlc1VubWF0Y2hlZDsKKyAgICAgICAg
ICAgIG1fZXJyID0gRXJyb3JDb2RlOjpQYXJlbnRoZXNlc1VubWF0Y2hlZDsKIAogICAgICAgICAt
LW1fcGFyZW50aGVzZXNOZXN0aW5nRGVwdGg7CiAgICAgfQpAQCAtNjk0LDE4ICs2OTEsMTggQEAg
Y2xhc3MgUGFyc2VyIHsKICAgICAgKi8KICAgICB2b2lkIHBhcnNlUXVhbnRpZmllcihib29sIGxh
c3RUb2tlbldhc0FuQXRvbSwgdW5zaWduZWQgbWluLCB1bnNpZ25lZCBtYXgpCiAgICAgewotICAg
ICAgICBBU1NFUlQoIW1fZXJyKTsKKyAgICAgICAgQVNTRVJUKCFoYXNFcnJvcihtX2VycikpOwog
ICAgICAgICBBU1NFUlQobWluIDw9IG1heCk7CiAKICAgICAgICAgaWYgKG1pbiA9PSBVSU5UX01B
WCkgewotICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6UXVhbnRpZmllclRvb0xhcmdl
OworICAgICAgICAgICAgbV9lcnIgPSBFcnJvckNvZGU6OlF1YW50aWZpZXJUb29MYXJnZTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChsYXN0VG9rZW5XYXNB
bkF0b20pCiAgICAgICAgICAgICBtX2RlbGVnYXRlLnF1YW50aWZ5QXRvbShtaW4sIG1heCwgIXRy
eUNvbnN1bWUoJz8nKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZXJyID0gWWFyclBh
dHRlcm46OlF1YW50aWZpZXJXaXRob3V0QXRvbTsKKyAgICAgICAgICAgIG1fZXJyID0gRXJyb3JD
b2RlOjpRdWFudGlmaWVyV2l0aG91dEF0b207CiAgICAgfQogCiAgICAgLyoKQEAgLTc5OSw3ICs3
OTYsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbiA8
PSBtYXgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VRdWFudGlmaWVyKGxhc3RU
b2tlbldhc0FuQXRvbSwgbWluLCBtYXgpOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OlF1YW50aWZp
ZXJPdXRPZk9yZGVyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gRXJyb3JD
b2RlOjpRdWFudGlmaWVyT3V0T2ZPcmRlcjsKICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RU
b2tlbldhc0FuQXRvbSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgICAgIH0KQEAgLTgxNSwyOSArODEyLDI4IEBAIGNsYXNzIFBhcnNlciB7
CiAgICAgICAgICAgICAgICAgbGFzdFRva2VuV2FzQW5BdG9tID0gdHJ1ZTsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgaWYgKG1fZXJyKQorICAgICAgICAgICAgaWYgKGhhc0Vycm9yKG1f
ZXJyKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
bV9wYXJlbnRoZXNlc05lc3RpbmdEZXB0aCA+IDApCi0gICAgICAgICAgICBtX2VyciA9IFlhcnJQ
YXR0ZXJuOjpNaXNzaW5nUGFyZW50aGVzZXM7CisgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29k
ZTo6TWlzc2luZ1BhcmVudGhlc2VzOwogICAgIH0KIAogICAgIC8qCiAgICAgICogcGFyc2UoKToK
ICAgICAgKgotICAgICAqIFRoaXMgbWV0aG9kIGNhbGxzIHBhcnNlVG9rZW5zKCkgdG8gcGFyc2Ug
b3ZlciB0aGUgaW5wdXQgYW5kIGNvbnZlcnRzIGFueQotICAgICAqIGVycm9yIGNvZGUgdG8gYSBj
b25zdCBjaGFyKiBmb3IgYSByZXN1bHQuCisgICAgICogVGhpcyBtZXRob2QgY2FsbHMgcGFyc2VU
b2tlbnMoKSB0byBwYXJzZSBvdmVyIHRoZSBpbnB1dCBhbmQgcmV0dXJucyBlcnJvciBjb2RlIGZv
ciBhIHJlc3VsdC4KICAgICAgKi8KLSAgICBjb25zdCBjaGFyKiBwYXJzZSgpCisgICAgRXJyb3JD
b2RlIHBhcnNlKCkKICAgICB7CiAgICAgICAgIGlmIChtX3NpemUgPiBNQVhfUEFUVEVSTl9TSVpF
KQotICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6UGF0dGVyblRvb0xhcmdlOworICAg
ICAgICAgICAgbV9lcnIgPSBFcnJvckNvZGU6OlBhdHRlcm5Ub29MYXJnZTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgcGFyc2VUb2tlbnMoKTsKLSAgICAgICAgQVNTRVJUKGF0RW5kT2ZQYXR0
ZXJuKCkgfHwgbV9lcnIpOworICAgICAgICBBU1NFUlQoYXRFbmRPZlBhdHRlcm4oKSB8fCBoYXNF
cnJvcihtX2VycikpOwogICAgICAgICAKLSAgICAgICAgcmV0dXJuIFlhcnJQYXR0ZXJuOjplcnJv
ck1lc3NhZ2UobV9lcnIpOworICAgICAgICByZXR1cm4gbV9lcnI7CiAgICAgfQogCiAgICAgLy8g
TWlzYyBoZWxwZXIgZnVuY3Rpb25zOgpAQCAtODkyLDIyICs4ODgsMjIgQEAgY2xhc3MgUGFyc2Vy
IHsKICAgICAgICAgICAgIGludCBjb2RlUG9pbnQgPSAwOwogICAgICAgICAgICAgZG8gewogICAg
ICAgICAgICAgICAgIGlmIChhdEVuZE9mUGF0dGVybigpIHx8ICFpc0FTQ0lJSGV4RGlnaXQocGVl
aygpKSkgewotICAgICAgICAgICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpJbnZhbGlk
VW5pY29kZUVzY2FwZTsKKyAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBFcnJvckNvZGU6Oklu
dmFsaWRVbmljb2RlRXNjYXBlOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgY29kZVBvaW50ID0gKGNvZGVQb2ludCA8
PCA0KSB8IHRvQVNDSUlIZXhWYWx1ZShjb25zdW1lKCkpOwogCiAgICAgICAgICAgICAgICAgaWYg
KGNvZGVQb2ludCA+IFVDSEFSX01BWF9WQUxVRSkgewotICAgICAgICAgICAgICAgICAgICBtX2Vy
ciA9IFlhcnJQYXR0ZXJuOjpJbnZhbGlkVW5pY29kZUVzY2FwZTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9lcnIgPSBFcnJvckNvZGU6OkludmFsaWRVbmljb2RlRXNjYXBlOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSB3aGls
ZSAoIWF0RW5kT2ZQYXR0ZXJuKCkgJiYgcGVlaygpICE9ICd9Jyk7CiAgICAgICAgICAgICBpZiAo
IWF0RW5kT2ZQYXR0ZXJuKCkgJiYgcGVlaygpID09ICd9JykKICAgICAgICAgICAgICAgICBjb25z
dW1lKCk7Ci0gICAgICAgICAgICBlbHNlIGlmICghbV9lcnIpCi0gICAgICAgICAgICAgICAgbV9l
cnIgPSBZYXJyUGF0dGVybjo6SW52YWxpZFVuaWNvZGVFc2NhcGU7Ci0gICAgICAgICAgICBpZiAo
bV9lcnIpCisgICAgICAgICAgICBlbHNlIGlmICghaGFzRXJyb3IobV9lcnIpKQorICAgICAgICAg
ICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpJbnZhbGlkVW5pY29kZUVzY2FwZTsKKyAgICAgICAg
ICAgIGlmIChoYXNFcnJvcihtX2VycikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogCiAg
ICAgICAgICAgICByZXR1cm4gY29kZVBvaW50OwpAQCAtMTA1Myw3ICsxMDQ5LDcgQEAgY2xhc3Mg
UGFyc2VyIHsKICAgICBzdGQ6Om9wdGlvbmFsPEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lEPiB0cnlD
b25zdW1lVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbigpCiAgICAgewogICAgICAgICBpZiAoYXRF
bmRPZlBhdHRlcm4oKSB8fCAhaXNVbmljb2RlUHJvcGVydHlWYWx1ZUV4cHJlc3Npb25DaGFyKHBl
ZWsoKSkpIHsKLSAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OkludmFsaWRVbmljb2Rl
UHJvcGVydHlFeHByZXNzaW9uOworICAgICAgICAgICAgbV9lcnIgPSBFcnJvckNvZGU6OkludmFs
aWRVbmljb2RlUHJvcGVydHlFeHByZXNzaW9uOwogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgfQogCkBAIC0xMDY5LDIwICsxMDY1LDIwIEBAIGNsYXNzIFBhcnNlciB7
CiAgICAgICAgICAgICBpZiAoY2ggPT0gJ30nKSB7CiAgICAgICAgICAgICAgICAgY29uc3VtZSgp
OwogICAgICAgICAgICAgICAgIGlmIChlcnJvcnMpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9l
cnIgPSBZYXJyUGF0dGVybjo6SW52YWxpZFVuaWNvZGVQcm9wZXJ0eUV4cHJlc3Npb247CisgICAg
ICAgICAgICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpJbnZhbGlkVW5pY29kZVByb3BlcnR5
RXhwcmVzc2lvbjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoZm91bmRFcXVhbHMpIHsKICAg
ICAgICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSB1bmljb2RlTWF0Y2hQcm9wZXJ0eVZhbHVl
KHVuaWNvZGVQcm9wZXJ0eU5hbWUsIGV4cHJlc3Npb25CdWlsZGVyLnRvU3RyaW5nKCkpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
ZXJyID0gWWFyclBhdHRlcm46OkludmFsaWRVbmljb2RlUHJvcGVydHlFeHByZXNzaW9uOworICAg
ICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBFcnJvckNvZGU6OkludmFsaWRVbmljb2RlUHJv
cGVydHlFeHByZXNzaW9uOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gdW5pY29kZU1h
dGNoUHJvcGVydHkoZXhwcmVzc2lvbkJ1aWxkZXIudG9TdHJpbmcoKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46
OkludmFsaWRVbmljb2RlUHJvcGVydHlFeHByZXNzaW9uOworICAgICAgICAgICAgICAgICAgICBt
X2VyciA9IEVycm9yQ29kZTo6SW52YWxpZFVuaWNvZGVQcm9wZXJ0eUV4cHJlc3Npb247CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KIApAQCAtMTEwMCwxOCAr
MTA5NiwxOCBAQCBjbGFzcyBQYXJzZXIgewogICAgICAgICAgICAgICAgIGV4cHJlc3Npb25CdWls
ZGVyLmFwcGVuZChjaCk7CiAgICAgICAgIH0KIAotICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJu
OjpJbnZhbGlkVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbjsKKyAgICAgICAgbV9lcnIgPSBFcnJv
ckNvZGU6OkludmFsaWRVbmljb2RlUHJvcGVydHlFeHByZXNzaW9uOwogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIERlbGVnYXRlJiBtX2RlbGVnYXRlOwogICAgIHVu
c2lnbmVkIG1fYmFja1JlZmVyZW5jZUxpbWl0OwotICAgIFlhcnJQYXR0ZXJuOjpFcnJvckNvZGUg
bV9lcnI7CisgICAgRXJyb3JDb2RlIG1fZXJyIHsgRXJyb3JDb2RlOjpOb0Vycm9yIH07CiAgICAg
Y29uc3QgQ2hhclR5cGUqIG1fZGF0YTsKICAgICB1bnNpZ25lZCBtX3NpemU7Ci0gICAgdW5zaWdu
ZWQgbV9pbmRleDsKKyAgICB1bnNpZ25lZCBtX2luZGV4IHsgMCB9OwogICAgIGJvb2wgbV9pc1Vu
aWNvZGU7Ci0gICAgdW5zaWduZWQgbV9wYXJlbnRoZXNlc05lc3RpbmdEZXB0aDsKKyAgICB1bnNp
Z25lZCBtX3BhcmVudGhlc2VzTmVzdGluZ0RlcHRoIHsgMCB9OwogICAgIEhhc2hTZXQ8U3RyaW5n
PiBtX2NhcHR1cmVHcm91cE5hbWVzOwogCiAgICAgLy8gRGVyaXZlZCBieSBlbXBpcmljYWwgdGVz
dGluZyBvZiBjb21waWxlIHRpbWUgaW4gUENSRSBhbmQgV1JFQy4KQEAgLTExNzksNyArMTE3NSw3
IEBAIGNsYXNzIFBhcnNlciB7CiAgKi8KIAogdGVtcGxhdGU8Y2xhc3MgRGVsZWdhdGU+Ci1jb25z
dCBjaGFyKiBwYXJzZShEZWxlZ2F0ZSYgZGVsZWdhdGUsIGNvbnN0IFN0cmluZyYgcGF0dGVybiwg
Ym9vbCBpc1VuaWNvZGUsIHVuc2lnbmVkIGJhY2tSZWZlcmVuY2VMaW1pdCA9IHF1YW50aWZ5SW5m
aW5pdGUpCitFcnJvckNvZGUgcGFyc2UoRGVsZWdhdGUmIGRlbGVnYXRlLCBjb25zdCBTdHJpbmcm
IHBhdHRlcm4sIGJvb2wgaXNVbmljb2RlLCB1bnNpZ25lZCBiYWNrUmVmZXJlbmNlTGltaXQgPSBx
dWFudGlmeUluZmluaXRlKQogewogICAgIGlmIChwYXR0ZXJuLmlzOEJpdCgpKQogICAgICAgICBy
ZXR1cm4gUGFyc2VyPERlbGVnYXRlLCBMQ2hhcj4oZGVsZWdhdGUsIHBhdHRlcm4sIGlzVW5pY29k
ZSwgYmFja1JlZmVyZW5jZUxpbWl0KS5wYXJzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyclBhdHRlcm4uY3BwCmluZGV4IDlhZDg2MGNhNmNlMDdiNTQ2MTg3ZTMyYTI1NzRlYzky
MzU4YWEzOGIuLjI0MGFmNzRjYmU2MjU5NDliZGE1Mjc4ODVkYzFkODQ4YTQ2M2M4MTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKQEAgLTQzNSw3ICs0MzUs
NiBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgOiBtX3BhdHRlcm4o
cGF0dGVybikKICAgICAgICAgLCBtX2NoYXJhY3RlckNsYXNzQ29uc3RydWN0b3IocGF0dGVybi5p
Z25vcmVDYXNlKCksIHBhdHRlcm4udW5pY29kZSgpID8gQ2Fub25pY2FsTW9kZTo6VW5pY29kZSA6
IENhbm9uaWNhbE1vZGU6OlVDUzIpCiAgICAgICAgICwgbV9zdGFja0xpbWl0KHN0YWNrTGltaXQp
Ci0gICAgICAgICwgbV9pbnZlcnRQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKGZhbHNlKQogICAgIHsK
ICAgICAgICAgYXV0byBib2R5ID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+
KCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2JvZHkgPSBib2R5LmdldCgpOwpAQCAtNzY0LDEyICs3
NjMsMTIgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgIG1fYWx0ZXJu
YXRpdmUgPSBtX2FsdGVybmF0aXZlLT5tX3BhcmVudC0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKICAg
ICB9CiAKLSAgICBZYXJyUGF0dGVybjo6RXJyb3JDb2RlIHNldHVwQWx0ZXJuYXRpdmVPZmZzZXRz
KFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUsIHVuc2lnbmVkIGN1cnJlbnRDYWxsRnJh
bWVTaXplLCB1bnNpZ25lZCBpbml0aWFsSW5wdXRQb3NpdGlvbiwgdW5zaWduZWQmIG5ld0NhbGxG
cmFtZVNpemUpIFdBUk5fVU5VU0VEX1JFVFVSTgorICAgIEVycm9yQ29kZSBzZXR1cEFsdGVybmF0
aXZlT2Zmc2V0cyhQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlLCB1bnNpZ25lZCBjdXJy
ZW50Q2FsbEZyYW1lU2l6ZSwgdW5zaWduZWQgaW5pdGlhbElucHV0UG9zaXRpb24sIHVuc2lnbmVk
JiBuZXdDYWxsRnJhbWVTaXplKSBXQVJOX1VOVVNFRF9SRVRVUk4KICAgICB7CiAgICAgICAgIGlm
IChVTkxJS0VMWSghaXNTYWZlVG9SZWN1cnNlKCkpKQotICAgICAgICAgICAgcmV0dXJuIFlhcnJQ
YXR0ZXJuOjpUb29NYW55RGlzanVuY3Rpb25zOworICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29k
ZTo6VG9vTWFueURpc2p1bmN0aW9uczsKIAotICAgICAgICBZYXJyUGF0dGVybjo6RXJyb3JDb2Rl
IGVycm9yID0gWWFyclBhdHRlcm46Ok5vRXJyb3I7CisgICAgICAgIEVycm9yQ29kZSBlcnJvciA9
IEVycm9yQ29kZTo6Tm9FcnJvcjsKICAgICAgICAgYWx0ZXJuYXRpdmUtPm1faGFzRml4ZWRTaXpl
ID0gdHJ1ZTsKICAgICAgICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGN1cnJl
bnRJbnB1dFBvc2l0aW9uID0gaW5pdGlhbElucHV0UG9zaXRpb247CiAKQEAgLTgwMyw3ICs4MDIs
NyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgICAgICAgICAgICAg
Q2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IHRlbXBDb3VudCA9IHRlcm0ucXVhbnRp
dHlNYXhDb3VudDsKICAgICAgICAgICAgICAgICAgICAgdGVtcENvdW50ICo9IFUxNl9MRU5HVEgo
dGVybS5wYXR0ZXJuQ2hhcmFjdGVyKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBDb3Vu
dC5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWWFyclBh
dHRlcm46Ok9mZnNldFRvb0xhcmdlOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVy
cm9yQ29kZTo6T2Zmc2V0VG9vTGFyZ2U7CiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJbnB1
dFBvc2l0aW9uICs9IHRlbXBDb3VudDsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgY3VycmVudElucHV0UG9zaXRpb24gKz0gdGVybS5xdWFudGl0eU1heENvdW50
OwpAQCAtODMwLDcgKzgyOSw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAg
ICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5TWF4Q291bnQgPT0gMSAmJiAhdGVybS5wYXJl
bnRoZXNlcy5pc0NvcHkpIHsKICAgICAgICAgICAgICAgICAgICAgY3VycmVudENhbGxGcmFtZVNp
emUgKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXNPbmNlOwogICAg
ICAgICAgICAgICAgICAgICBlcnJvciA9IHNldHVwRGlzanVuY3Rpb25PZmZzZXRzKHRlcm0ucGFy
ZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJlbnRDYWxsRnJhbWVTaXplLCBjdXJyZW50SW5wdXRQ
b3NpdGlvbi51bnNhZmVHZXQoKSwgY3VycmVudENhbGxGcmFtZVNpemUpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIGlmIChoYXNFcnJvcihlcnJv
cikpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgICAgICAgICAg
ICAgICAgIC8vIElmIHF1YW50aXR5IGlzIGZpeGVkLCB0aGVuIHByZS1jaGVjayBpdHMgbWluaW11
bSBzaXplLgogICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5xdWFudGl0eVR5cGUgPT0gUXVh
bnRpZmllckZpeGVkQ291bnQpCkBAIC04MzksMTQgKzgzOCwxNCBAQCBjbGFzcyBZYXJyUGF0dGVy
bkNvbnN0cnVjdG9yIHsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRlcm0ucGFyZW50aGVz
ZXMuaXNUZXJtaW5hbCkgewogICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2FsbEZyYW1lU2l6
ZSArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlc1Rlcm1pbmFsOwog
ICAgICAgICAgICAgICAgICAgICBlcnJvciA9IHNldHVwRGlzanVuY3Rpb25PZmZzZXRzKHRlcm0u
cGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJlbnRDYWxsRnJhbWVTaXplLCBjdXJyZW50SW5w
dXRQb3NpdGlvbi51bnNhZmVHZXQoKSwgY3VycmVudENhbGxGcmFtZVNpemUpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIGlmIChoYXNFcnJvcihl
cnJvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgICAgICAg
ICAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2Fm
ZUdldCgpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHRl
cm0uaW5wdXRQb3NpdGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpOwogICAg
ICAgICAgICAgICAgICAgICBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFjZUZv
ckJhY2tUcmFja0luZm9QYXJlbnRoZXNlczsKICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBz
ZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyh0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLCBjdXJy
ZW50Q2FsbEZyYW1lU2l6ZSwgY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCksIGN1cnJl
bnRDYWxsRnJhbWVTaXplKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoaGFzRXJyb3IoZXJyb3IpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvLyBG
aXhlZCBjb3VudCBvZiAxIGNvdWxkIGJlIGFjY2VwdGVkLCBpZiB0aGV5IGhhdmUgYSBmaXhlZCBz
aXplICpBTkQqIGlmIGFsbCBhbHRlcm5hdGl2ZXMgYXJlIG9mIHRoZSBzYW1lIGxlbmd0aC4KQEAg
LTg1Nyw3ICs4NTYsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAg
ICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5wdXRQb3NpdGlvbi51bnNhZmVH
ZXQoKTsKICAgICAgICAgICAgICAgICB0ZXJtLmZyYW1lTG9jYXRpb24gPSBjdXJyZW50Q2FsbEZy
YW1lU2l6ZTsKICAgICAgICAgICAgICAgICBlcnJvciA9IHNldHVwRGlzanVuY3Rpb25PZmZzZXRz
KHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJlbnRDYWxsRnJhbWVTaXplICsgWWFy
clN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGV0aWNhbEFzc2VydGlvbiwgY3VycmVu
dElucHV0UG9zaXRpb24udW5zYWZlR2V0KCksIGN1cnJlbnRDYWxsRnJhbWVTaXplKTsKLSAgICAg
ICAgICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgaWYgKGhhc0Vycm9yKGVycm9y
KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogCkBAIC04NzEsNyArODcwLDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAo
Y3VycmVudElucHV0UG9zaXRpb24uaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBZYXJyUGF0dGVybjo6T2Zmc2V0VG9vTGFyZ2U7CisgICAgICAgICAgICAgICAgcmV0dXJu
IEVycm9yQ29kZTo6T2Zmc2V0VG9vTGFyZ2U7CiAgICAgICAgIH0KIAogICAgICAgICBhbHRlcm5h
dGl2ZS0+bV9taW5pbXVtU2l6ZSA9IChjdXJyZW50SW5wdXRQb3NpdGlvbiAtIGluaXRpYWxJbnB1
dFBvc2l0aW9uKS51bnNhZmVHZXQoKTsKQEAgLTg3OSwxMCArODc4LDEwIEBAIGNsYXNzIFlhcnJQ
YXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQogCi0gICAg
WWFyclBhdHRlcm46OkVycm9yQ29kZSBzZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyhQYXR0ZXJuRGlz
anVuY3Rpb24qIGRpc2p1bmN0aW9uLCB1bnNpZ25lZCBpbml0aWFsQ2FsbEZyYW1lU2l6ZSwgdW5z
aWduZWQgaW5pdGlhbElucHV0UG9zaXRpb24sIHVuc2lnbmVkJiBjYWxsRnJhbWVTaXplKQorICAg
IEVycm9yQ29kZSBzZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyhQYXR0ZXJuRGlzanVuY3Rpb24qIGRp
c2p1bmN0aW9uLCB1bnNpZ25lZCBpbml0aWFsQ2FsbEZyYW1lU2l6ZSwgdW5zaWduZWQgaW5pdGlh
bElucHV0UG9zaXRpb24sIHVuc2lnbmVkJiBjYWxsRnJhbWVTaXplKQogICAgIHsKICAgICAgICAg
aWYgKFVOTElLRUxZKCFpc1NhZmVUb1JlY3Vyc2UoKSkpCi0gICAgICAgICAgICByZXR1cm4gWWFy
clBhdHRlcm46OlRvb01hbnlEaXNqdW5jdGlvbnM7CisgICAgICAgICAgICByZXR1cm4gRXJyb3JD
b2RlOjpUb29NYW55RGlzanVuY3Rpb25zOwogCiAgICAgICAgIGlmICgoZGlzanVuY3Rpb24gIT0g
bV9wYXR0ZXJuLm1fYm9keSkgJiYgKGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlcy5zaXplKCkg
PiAxKSkKICAgICAgICAgICAgIGluaXRpYWxDYWxsRnJhbWVTaXplICs9IFlhcnJTdGFja1NwYWNl
Rm9yQmFja1RyYWNrSW5mb0FsdGVybmF0aXZlOwpAQCAtODkwLDEzICs4ODksMTMgQEAgY2xhc3Mg
WWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgIHVuc2lnbmVkIG1pbmltdW1JbnB1dFNp
emUgPSBVSU5UX01BWDsKICAgICAgICAgdW5zaWduZWQgbWF4aW11bUNhbGxGcmFtZVNpemUgPSAw
OwogICAgICAgICBib29sIGhhc0ZpeGVkU2l6ZSA9IHRydWU7Ci0gICAgICAgIFlhcnJQYXR0ZXJu
OjpFcnJvckNvZGUgZXJyb3IgPSBZYXJyUGF0dGVybjo6Tm9FcnJvcjsKKyAgICAgICAgRXJyb3JD
b2RlIGVycm9yID0gRXJyb3JDb2RlOjpOb0Vycm9yOwogCiAgICAgICAgIGZvciAodW5zaWduZWQg
YWx0ID0gMDsgYWx0IDwgZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLnNpemUoKTsgKythbHQp
IHsKICAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBkaXNqdW5j
dGlvbi0+bV9hbHRlcm5hdGl2ZXNbYWx0XS5nZXQoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGN1
cnJlbnRBbHRlcm5hdGl2ZUNhbGxGcmFtZVNpemU7CiAgICAgICAgICAgICBlcnJvciA9IHNldHVw
QWx0ZXJuYXRpdmVPZmZzZXRzKGFsdGVybmF0aXZlLCBpbml0aWFsQ2FsbEZyYW1lU2l6ZSwgaW5p
dGlhbElucHV0UG9zaXRpb24sIGN1cnJlbnRBbHRlcm5hdGl2ZUNhbGxGcmFtZVNpemUpOwotICAg
ICAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgaWYgKGhhc0Vycm9yKGVycm9yKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgICAgICAgICBtaW5pbXVtSW5wdXRTaXpl
ID0gc3RkOjptaW4obWluaW11bUlucHV0U2l6ZSwgYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUp
OwogICAgICAgICAgICAgbWF4aW11bUNhbGxGcmFtZVNpemUgPSBzdGQ6Om1heChtYXhpbXVtQ2Fs
bEZyYW1lU2l6ZSwgY3VycmVudEFsdGVybmF0aXZlQ2FsbEZyYW1lU2l6ZSk7CkBAIC05MTUsMTQg
KzkxNCwxMSBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgcmV0dXJu
IGVycm9yOwogICAgIH0KIAotICAgIGNvbnN0IGNoYXIqIHNldHVwT2Zmc2V0cygpCisgICAgRXJy
b3JDb2RlIHNldHVwT2Zmc2V0cygpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogWWFyciBzaG91
bGQgbm90IHVzZSB0aGUgc3RhY2sgdG8gaGFuZGxlIHN1YnBhdHRlcm5zIChyZGFyOi8vcHJvYmxl
bS8yNjQzNjMxNCkuCiAgICAgICAgIHVuc2lnbmVkIGlnbm9yZWRDYWxsRnJhbWVTaXplOwotICAg
ICAgICBZYXJyUGF0dGVybjo6RXJyb3JDb2RlIGVycm9yID0gc2V0dXBEaXNqdW5jdGlvbk9mZnNl
dHMobV9wYXR0ZXJuLm1fYm9keSwgMCwgMCwgaWdub3JlZENhbGxGcmFtZVNpemUpOwotICAgICAg
ICBpZiAoZXJyb3IpCi0gICAgICAgICAgICByZXR1cm4gWWFyclBhdHRlcm46OmVycm9yTWVzc2Fn
ZShlcnJvcik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc2V0dXBE
aXNqdW5jdGlvbk9mZnNldHMobV9wYXR0ZXJuLm1fYm9keSwgMCwgMCwgaWdub3JlZENhbGxGcmFt
ZVNpemUpOwogICAgIH0KIAogICAgIC8vIFRoaXMgb3B0aW1pemF0aW9uIGlkZW50aWZpZXMgc2V0
cyBvZiBwYXJlbnRoZXNlcyB0aGF0IHdlIHdpbGwgbmV2ZXIgbmVlZCB0byBiYWNrdHJhY2suCkBA
IC0xMDg0LDQ4ICsxMDgwLDIxIEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAg
IENoYXJhY3RlckNsYXNzQ29uc3RydWN0b3IgbV9jaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yOwog
ICAgIHZvaWQqIG1fc3RhY2tMaW1pdDsKICAgICBib29sIG1faW52ZXJ0Q2hhcmFjdGVyQ2xhc3M7
Ci0gICAgYm9vbCBtX2ludmVydFBhcmVudGhldGljYWxBc3NlcnRpb247CisgICAgYm9vbCBtX2lu
dmVydFBhcmVudGhldGljYWxBc3NlcnRpb24geyBmYWxzZSB9OwogfTsKIAotY29uc3QgY2hhciog
WWFyclBhdHRlcm46OmVycm9yTWVzc2FnZShZYXJyUGF0dGVybjo6RXJyb3JDb2RlIGVycm9yKQot
ewotI2RlZmluZSBSRUdFWFBfRVJST1JfUFJFRklYICJJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lv
bjogIgotICAgIC8vIFRoZSBvcmRlciBvZiB0aGlzIGFycmF5IG11c3QgbWF0Y2ggdGhlIEVycm9y
Q29kZSBlbnVtLgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2VzW051bWJlck9m
RXJyb3JDb2Rlc10gPSB7Ci0gICAgICAgIG51bGxwdHIsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb0Vycm9yCi0gICAgICAg
IFJFR0VYUF9FUlJPUl9QUkVGSVggInJlZ3VsYXIgZXhwcmVzc2lvbiB0b28gbGFyZ2UiLCAgICAg
ICAgICAgICAgICAgICAvLyBQYXR0ZXJuVG9vTGFyZ2UgICAgIAotICAgICAgICBSRUdFWFBfRVJS
T1JfUFJFRklYICJudW1iZXJzIG91dCBvZiBvcmRlciBpbiB7fSBxdWFudGlmaWVyIiwgICAgICAg
ICAgLy8gUXVhbnRpZmllck91dE9mT3JkZXIKLSAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAi
bm90aGluZyB0byByZXBlYXQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFF1YW50
aWZpZXJXaXRob3V0QXRvbQotICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJudW1iZXIgdG9v
IGxhcmdlIGluIHt9IHF1YW50aWZpZXIiLCAgICAgICAgICAgICAgLy8gUXVhbnRpZmllclRvb0xh
cmdlCi0gICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggIm1pc3NpbmcgKSIsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNaXNzaW5nUGFyZW50aGVzZXMKLSAgICAgICAg
UkVHRVhQX0VSUk9SX1BSRUZJWCAidW5tYXRjaGVkIHBhcmVudGhlc2VzIiwgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFBhcmVudGhlc2VzVW5tYXRjaGVkCi0gICAgICAgIFJFR0VYUF9FUlJP
Ul9QUkVGSVggInVucmVjb2duaXplZCBjaGFyYWN0ZXIgYWZ0ZXIgKD8iLCAgICAgICAgICAgICAg
ICAvLyBQYXJlbnRoZXNlc1R5cGVJbnZhbGlkCi0gICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVgg
ImludmFsaWQgZ3JvdXAgc3BlY2lmaWVyIG5hbWUiLCAgICAgICAgICAgICAgICAgICAvLyBJbnZh
bGlkR3JvdXBOYW1lCi0gICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggImR1cGxpY2F0ZSBncm91
cCBzcGVjaWZpZXIgbmFtZSIsICAgICAgICAgICAgICAgICAvLyBEdXBsaWNhdGVHcm91cE5hbWUK
LSAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAibWlzc2luZyB0ZXJtaW5hdGluZyBdIGZvciBj
aGFyYWN0ZXIgY2xhc3MiLCAgICAgIC8vIENoYXJhY3RlckNsYXNzVW5tYXRjaGVkCi0gICAgICAg
IFJFR0VYUF9FUlJPUl9QUkVGSVggInJhbmdlIG91dCBvZiBvcmRlciBpbiBjaGFyYWN0ZXIgY2xh
c3MiLCAgICAgICAgICAvLyBDaGFyYWN0ZXJDbGFzc091dE9mT3JkZXIKLSAgICAgICAgUkVHRVhQ
X0VSUk9SX1BSRUZJWCAiXFwgYXQgZW5kIG9mIHBhdHRlcm4iLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEVzY2FwZVVudGVybWluYXRlZAotICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklY
ICJpbnZhbGlkIHVuaWNvZGUge30gZXNjYXBlIiwgICAgICAgICAgICAgICAgICAgICAgLy8gSW52
YWxpZFVuaWNvZGVFc2NhcGUKLSAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAiaW52YWxpZCBi
YWNrcmVmZXJlbmNlIGZvciB1bmljb2RlIHBhdHRlcm4iLCAgICAgIC8vIEludmFsaWRCYWNrcmVm
ZXJlbmNlCi0gICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggImludmFsaWQgZXNjYXBlZCBjaGFy
YWN0ZXIgZm9yIHVuaWNvZGUgcGF0dGVybiIsICAvLyBJbnZhbGlkSWRlbnRpdHlFc2NhcGUKLSAg
ICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAiaW52YWxpZCBwcm9wZXJ0eSBleHByZXNzaW9uIiwg
ICAgICAgICAgICAgICAgICAgIC8vIEludmFsaWRVbmljb2RlUHJvcGVydHlFeHByZXNzaW9uCi0g
ICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggInRvbyBtYW55IG5lc3RlZCBkaXNqdW5jdGlvbnMi
LCAgICAgICAgICAgICAgICAgICAvLyBUb29NYW55RGlzanVuY3Rpb25zCi0gICAgICAgIFJFR0VY
UF9FUlJPUl9QUkVGSVggInBhdHRlcm4gZXhjZWVkcyBzdHJpbmcgbGVuZ3RoIGxpbWl0cyIsICAg
ICAgICAgICAvLyBPZmZzZXRUb29MYXJnZQotICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJp
bnZhbGlkIGZsYWdzIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW52YWxp
ZFJlZ3VsYXJFeHByZXNzaW9uRmxhZ3MKLSAgICB9OwotCi0gICAgcmV0dXJuIGVycm9yTWVzc2Fn
ZXNbZXJyb3JdOwotfQotCi1jb25zdCBjaGFyKiBZYXJyUGF0dGVybjo6Y29tcGlsZShjb25zdCBT
dHJpbmcmIHBhdHRlcm5TdHJpbmcsIHZvaWQqIHN0YWNrTGltaXQpCitFcnJvckNvZGUgWWFyclBh
dHRlcm46OmNvbXBpbGUoY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCB2b2lkKiBzdGFja0xp
bWl0KQogewogICAgIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgY29uc3RydWN0b3IoKnRoaXMsIHN0
YWNrTGltaXQpOwogCiAgICAgaWYgKG1fZmxhZ3MgPT0gSW52YWxpZEZsYWdzKQotICAgICAgICBy
ZXR1cm4gZXJyb3JNZXNzYWdlKEludmFsaWRSZWd1bGFyRXhwcmVzc2lvbkZsYWdzKTsKKyAgICAg
ICAgcmV0dXJuIEVycm9yQ29kZTo6SW52YWxpZFJlZ3VsYXJFeHByZXNzaW9uRmxhZ3M7CiAKLSAg
ICBpZiAoY29uc3QgY2hhciogZXJyb3IgPSBwYXJzZShjb25zdHJ1Y3RvciwgcGF0dGVyblN0cmlu
ZywgdW5pY29kZSgpKSkKLSAgICAgICAgcmV0dXJuIGVycm9yOworICAgIHsKKyAgICAgICAgRXJy
b3JDb2RlIGVycm9yID0gcGFyc2UoY29uc3RydWN0b3IsIHBhdHRlcm5TdHJpbmcsIHVuaWNvZGUo
KSk7CisgICAgICAgIGlmIChoYXNFcnJvcihlcnJvcikpCisgICAgICAgICAgICByZXR1cm4gZXJy
b3I7CisgICAgfQogICAgIAogICAgIC8vIElmIHRoZSBwYXR0ZXJuIGNvbnRhaW5zIGlsbGVnYWwg
YmFja3JlZmVyZW5jZXMgcmVzZXQgJiByZXBhcnNlLgogICAgIC8vIFF1b3RpbmcgTmV0c2NhcGUn
cyAiV2hhdCdzIG5ldyBpbiBKYXZhU2NyaXB0IDEuMiIsCkBAIC0xMTMzLDUyICsxMTAyLDM5IEBA
IGNvbnN0IGNoYXIqIFlhcnJQYXR0ZXJuOjpjb21waWxlKGNvbnN0IFN0cmluZyYgcGF0dGVyblN0
cmluZywgdm9pZCogc3RhY2tMaW1pdCkKICAgICAvLyAgICAgICBpbiBcIywgdGhlIFwjIGlzIHRh
a2VuIGFzIGFuIG9jdGFsIGVzY2FwZSBhcyBkZXNjcmliZWQgaW4gdGhlIG5leHQgcm93LiIKICAg
ICBpZiAoY29udGFpbnNJbGxlZ2FsQmFja1JlZmVyZW5jZSgpKSB7CiAgICAgICAgIGlmICh1bmlj
b2RlKCkpCi0gICAgICAgICAgICByZXR1cm4gZXJyb3JNZXNzYWdlKEludmFsaWRCYWNrcmVmZXJl
bmNlKTsKKyAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGU6OkludmFsaWRCYWNrcmVmZXJlbmNl
OwogCiAgICAgICAgIHVuc2lnbmVkIG51bVN1YnBhdHRlcm5zID0gbV9udW1TdWJwYXR0ZXJuczsK
IAogICAgICAgICBjb25zdHJ1Y3Rvci5yZXNldCgpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAg
ICAgICAgY29uc3QgY2hhciogZXJyb3IgPQotI2VuZGlmCi0gICAgICAgICAgICBwYXJzZShjb25z
dHJ1Y3RvciwgcGF0dGVyblN0cmluZywgdW5pY29kZSgpLCBudW1TdWJwYXR0ZXJucyk7Ci0KLSAg
ICAgICAgQVNTRVJUKCFlcnJvcik7CisgICAgICAgIEVycm9yQ29kZSBlcnJvciA9IHBhcnNlKGNv
bnN0cnVjdG9yLCBwYXR0ZXJuU3RyaW5nLCB1bmljb2RlKCksIG51bVN1YnBhdHRlcm5zKTsKKyAg
ICAgICAgQVNTRVJUX1VOVVNFRChlcnJvciwgIWhhc0Vycm9yKGVycm9yKSk7CiAgICAgICAgIEFT
U0VSVChudW1TdWJwYXR0ZXJucyA9PSBtX251bVN1YnBhdHRlcm5zKTsKICAgICB9CiAKICAgICBj
b25zdHJ1Y3Rvci5jaGVja0ZvclRlcm1pbmFsUGFyZW50aGVzZXMoKTsKICAgICBjb25zdHJ1Y3Rv
ci5vcHRpbWl6ZURvdFN0YXJXcmFwcGVkRXhwcmVzc2lvbnMoKTsKICAgICBjb25zdHJ1Y3Rvci5v
cHRpbWl6ZUJPTCgpOwotICAgICAgICAKLSAgICBpZiAoY29uc3QgY2hhciogZXJyb3IgPSBjb25z
dHJ1Y3Rvci5zZXR1cE9mZnNldHMoKSkKLSAgICAgICAgcmV0dXJuIGVycm9yOworCisgICAgewor
ICAgICAgICBFcnJvckNvZGUgZXJyb3IgPSBjb25zdHJ1Y3Rvci5zZXR1cE9mZnNldHMoKTsKKyAg
ICAgICAgaWYgKGhhc0Vycm9yKGVycm9yKSkKKyAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAg
ICB9CiAKICAgICBpZiAoT3B0aW9uczo6ZHVtcENvbXBpbGVkUmVnRXhwUGF0dGVybnMoKSkKICAg
ICAgICAgZHVtcFBhdHRlcm4ocGF0dGVyblN0cmluZyk7CiAKLSAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gRXJyb3JDb2RlOjpOb0Vycm9yOwogfQogCi1ZYXJyUGF0dGVybjo6WWFyclBh
dHRlcm4oY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBSZWdFeHBGbGFncyBmbGFncywgY29uc3QgY2hh
cioqIGVycm9yLCB2b2lkKiBzdGFja0xpbWl0KQorWWFyclBhdHRlcm46OllhcnJQYXR0ZXJuKGNv
bnN0IFN0cmluZyYgcGF0dGVybiwgUmVnRXhwRmxhZ3MgZmxhZ3MsIEVycm9yQ29kZSogZXJyb3Is
IHZvaWQqIHN0YWNrTGltaXQpCiAgICAgOiBtX2NvbnRhaW5zQmFja3JlZmVyZW5jZXMoZmFsc2Up
CiAgICAgLCBtX2NvbnRhaW5zQk9MKGZhbHNlKQogICAgICwgbV9jb250YWluc1Vuc2lnbmVkTGVu
Z3RoUGF0dGVybihmYWxzZSkKICAgICAsIG1faGFzQ29waWVkUGFyZW5TdWJleHByZXNzaW9ucyhm
YWxzZSkKICAgICAsIG1fc2F2ZUluaXRpYWxTdGFydFZhbHVlKGZhbHNlKQogICAgICwgbV9mbGFn
cyhmbGFncykKLSAgICAsIG1fbnVtU3VicGF0dGVybnMoMCkKLSAgICAsIG1fbWF4QmFja1JlZmVy
ZW5jZSgwKQotICAgICwgYW55Y2hhckNhY2hlZCgwKQotICAgICwgbmV3bGluZUNhY2hlZCgwKQot
ICAgICwgZGlnaXRzQ2FjaGVkKDApCi0gICAgLCBzcGFjZXNDYWNoZWQoMCkKLSAgICAsIHdvcmRj
aGFyQ2FjaGVkKDApCi0gICAgLCB3b3JkVW5pY29kZUlnbm9yZUNhc2VDaGFyQ2FjaGVkKDApCi0g
ICAgLCBub25kaWdpdHNDYWNoZWQoMCkKLSAgICAsIG5vbnNwYWNlc0NhY2hlZCgwKQotICAgICwg
bm9ud29yZGNoYXJDYWNoZWQoMCkKLSAgICAsIG5vbndvcmRVbmljb2RlSWdub3JlQ2FzZWNoYXJD
YWNoZWQoMCkKIHsKICAgICAqZXJyb3IgPSBjb21waWxlKHBhdHRlcm4sIHN0YWNrTGltaXQpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKaW5kZXggYTBlZWQ5MDNh
YjVkMjY5Njg3NzMwZTBhZTg1ZjliNzcwMmIwMTRkYi4uN2Q4NjU0Njc1MTBjYmI5OTI1YmQ3NzVh
NTI3MTEwMGM3NmRhOTdmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyclBhdHRlcm4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVy
bi5oCkBAIC0yNyw2ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlJlZ0V4cEtl
eS5oIgorI2luY2x1ZGUgIllhcnJFcnJvckNvZGUuaCIKICNpbmNsdWRlICJZYXJyVW5pY29kZVBy
b3BlcnRpZXMuaCIKICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgpAQCAtMzUxLDMzICszNTIsNyBAQCBzdHJ1Y3QgVGVybUNoYWluIHsK
IAogCiBzdHJ1Y3QgWWFyclBhdHRlcm4gewotICAgIEpTX0VYUE9SVF9QUklWQVRFIFlhcnJQYXR0
ZXJuKGNvbnN0IFN0cmluZyYgcGF0dGVybiwgUmVnRXhwRmxhZ3MsIGNvbnN0IGNoYXIqKiBlcnJv
ciwgdm9pZCogc3RhY2tMaW1pdCA9IG51bGxwdHIpOwotCi0gICAgZW51bSBFcnJvckNvZGUgewot
ICAgICAgICBOb0Vycm9yLAotICAgICAgICBQYXR0ZXJuVG9vTGFyZ2UsCi0gICAgICAgIFF1YW50
aWZpZXJPdXRPZk9yZGVyLAotICAgICAgICBRdWFudGlmaWVyV2l0aG91dEF0b20sCi0gICAgICAg
IFF1YW50aWZpZXJUb29MYXJnZSwKLSAgICAgICAgTWlzc2luZ1BhcmVudGhlc2VzLAotICAgICAg
ICBQYXJlbnRoZXNlc1VubWF0Y2hlZCwKLSAgICAgICAgUGFyZW50aGVzZXNUeXBlSW52YWxpZCwK
LSAgICAgICAgSW52YWxpZEdyb3VwTmFtZSwKLSAgICAgICAgRHVwbGljYXRlR3JvdXBOYW1lLAot
ICAgICAgICBDaGFyYWN0ZXJDbGFzc1VubWF0Y2hlZCwKLSAgICAgICAgQ2hhcmFjdGVyQ2xhc3NP
dXRPZk9yZGVyLAotICAgICAgICBFc2NhcGVVbnRlcm1pbmF0ZWQsCi0gICAgICAgIEludmFsaWRV
bmljb2RlRXNjYXBlLAotICAgICAgICBJbnZhbGlkQmFja3JlZmVyZW5jZSwKLSAgICAgICAgSW52
YWxpZElkZW50aXR5RXNjYXBlLAotICAgICAgICBJbnZhbGlkVW5pY29kZVByb3BlcnR5RXhwcmVz
c2lvbiwKLSAgICAgICAgVG9vTWFueURpc2p1bmN0aW9ucywKLSAgICAgICAgT2Zmc2V0VG9vTGFy
Z2UsCi0gICAgICAgIEludmFsaWRSZWd1bGFyRXhwcmVzc2lvbkZsYWdzLAotICAgICAgICBOdW1i
ZXJPZkVycm9yQ29kZXMKLSAgICB9OwotICAgIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UoRXJyb3JDb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBZYXJyUGF0dGVybihjb25zdCBTdHJpbmcmIHBhdHRlcm4sIFJlZ0V4cEZsYWdzLCBFcnJv
ckNvZGUqLCB2b2lkKiBzdGFja0xpbWl0ID0gbnVsbHB0cik7CiAKICAgICB2b2lkIHJlc2V0KCkK
ICAgICB7CkBAIC0zOTEsMTYgKzM2NiwxNiBAQCBzdHJ1Y3QgWWFyclBhdHRlcm4gewogICAgICAg
ICBtX2hhc0NvcGllZFBhcmVuU3ViZXhwcmVzc2lvbnMgPSBmYWxzZTsKICAgICAgICAgbV9zYXZl
SW5pdGlhbFN0YXJ0VmFsdWUgPSBmYWxzZTsKIAotICAgICAgICBhbnljaGFyQ2FjaGVkID0gMDsK
LSAgICAgICAgbmV3bGluZUNhY2hlZCA9IDA7Ci0gICAgICAgIGRpZ2l0c0NhY2hlZCA9IDA7Ci0g
ICAgICAgIHNwYWNlc0NhY2hlZCA9IDA7Ci0gICAgICAgIHdvcmRjaGFyQ2FjaGVkID0gMDsKLSAg
ICAgICAgd29yZFVuaWNvZGVJZ25vcmVDYXNlQ2hhckNhY2hlZCA9IDA7Ci0gICAgICAgIG5vbmRp
Z2l0c0NhY2hlZCA9IDA7Ci0gICAgICAgIG5vbnNwYWNlc0NhY2hlZCA9IDA7Ci0gICAgICAgIG5v
bndvcmRjaGFyQ2FjaGVkID0gMDsKLSAgICAgICAgbm9ud29yZFVuaWNvZGVJZ25vcmVDYXNlY2hh
ckNhY2hlZCA9IDA7CisgICAgICAgIGFueWNoYXJDYWNoZWQgPSBudWxscHRyOworICAgICAgICBu
ZXdsaW5lQ2FjaGVkID0gbnVsbHB0cjsKKyAgICAgICAgZGlnaXRzQ2FjaGVkID0gbnVsbHB0cjsK
KyAgICAgICAgc3BhY2VzQ2FjaGVkID0gbnVsbHB0cjsKKyAgICAgICAgd29yZGNoYXJDYWNoZWQg
PSBudWxscHRyOworICAgICAgICB3b3JkVW5pY29kZUlnbm9yZUNhc2VDaGFyQ2FjaGVkID0gbnVs
bHB0cjsKKyAgICAgICAgbm9uZGlnaXRzQ2FjaGVkID0gbnVsbHB0cjsKKyAgICAgICAgbm9uc3Bh
Y2VzQ2FjaGVkID0gbnVsbHB0cjsKKyAgICAgICAgbm9ud29yZGNoYXJDYWNoZWQgPSBudWxscHRy
OworICAgICAgICBub253b3JkVW5pY29kZUlnbm9yZUNhc2VjaGFyQ2FjaGVkID0gbnVsbHB0cjsK
ICAgICAgICAgdW5pY29kZVByb3BlcnRpZXNDYWNoZWQuY2xlYXIoKTsKIAogICAgICAgICBtX2Rp
c2p1bmN0aW9ucy5jbGVhcigpOwpAQCAtNTMwLDkgKzUwNSw5IEBAIHN0cnVjdCBZYXJyUGF0dGVy
biB7CiAgICAgYm9vbCBtX2hhc0NvcGllZFBhcmVuU3ViZXhwcmVzc2lvbnMgOiAxOwogICAgIGJv
b2wgbV9zYXZlSW5pdGlhbFN0YXJ0VmFsdWUgOiAxOwogICAgIFJlZ0V4cEZsYWdzIG1fZmxhZ3M7
Ci0gICAgdW5zaWduZWQgbV9udW1TdWJwYXR0ZXJuczsKLSAgICB1bnNpZ25lZCBtX21heEJhY2tS
ZWZlcmVuY2U7Ci0gICAgdW5zaWduZWQgbV9pbml0aWFsU3RhcnRWYWx1ZUZyYW1lTG9jYXRpb247
CisgICAgdW5zaWduZWQgbV9udW1TdWJwYXR0ZXJucyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX21h
eEJhY2tSZWZlcmVuY2UgeyAwIH07CisgICAgdW5zaWduZWQgbV9pbml0aWFsU3RhcnRWYWx1ZUZy
YW1lTG9jYXRpb24geyAwIH07CiAgICAgUGF0dGVybkRpc2p1bmN0aW9uKiBtX2JvZHk7CiAgICAg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQYXR0ZXJuRGlzanVuY3Rpb24+LCA0PiBtX2Rpc2p1bmN0
aW9uczsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENoYXJhY3RlckNsYXNzPj4gbV91c2Vy
Q2hhcmFjdGVyQ2xhc3NlczsKQEAgLTU0MCwxOCArNTE1LDE4IEBAIHN0cnVjdCBZYXJyUGF0dGVy
biB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBtX25hbWVkR3JvdXBUb1BhcmVuSW5k
ZXg7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogY29tcGlsZShjb25zdCBTdHJpbmcmIHBh
dHRlcm5TdHJpbmcsIHZvaWQqIHN0YWNrTGltaXQpOwotCi0gICAgQ2hhcmFjdGVyQ2xhc3MqIGFu
eWNoYXJDYWNoZWQ7Ci0gICAgQ2hhcmFjdGVyQ2xhc3MqIG5ld2xpbmVDYWNoZWQ7Ci0gICAgQ2hh
cmFjdGVyQ2xhc3MqIGRpZ2l0c0NhY2hlZDsKLSAgICBDaGFyYWN0ZXJDbGFzcyogc3BhY2VzQ2Fj
aGVkOwotICAgIENoYXJhY3RlckNsYXNzKiB3b3JkY2hhckNhY2hlZDsKLSAgICBDaGFyYWN0ZXJD
bGFzcyogd29yZFVuaWNvZGVJZ25vcmVDYXNlQ2hhckNhY2hlZDsKLSAgICBDaGFyYWN0ZXJDbGFz
cyogbm9uZGlnaXRzQ2FjaGVkOwotICAgIENoYXJhY3RlckNsYXNzKiBub25zcGFjZXNDYWNoZWQ7
Ci0gICAgQ2hhcmFjdGVyQ2xhc3MqIG5vbndvcmRjaGFyQ2FjaGVkOwotICAgIENoYXJhY3RlckNs
YXNzKiBub253b3JkVW5pY29kZUlnbm9yZUNhc2VjaGFyQ2FjaGVkOworICAgIEVycm9yQ29kZSBj
b21waWxlKGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZywgdm9pZCogc3RhY2tMaW1pdCk7CisK
KyAgICBDaGFyYWN0ZXJDbGFzcyogYW55Y2hhckNhY2hlZCB7IG51bGxwdHIgfTsKKyAgICBDaGFy
YWN0ZXJDbGFzcyogbmV3bGluZUNhY2hlZCB7IG51bGxwdHIgfTsKKyAgICBDaGFyYWN0ZXJDbGFz
cyogZGlnaXRzQ2FjaGVkIHsgbnVsbHB0ciB9OworICAgIENoYXJhY3RlckNsYXNzKiBzcGFjZXND
YWNoZWQgeyBudWxscHRyIH07CisgICAgQ2hhcmFjdGVyQ2xhc3MqIHdvcmRjaGFyQ2FjaGVkIHsg
bnVsbHB0ciB9OworICAgIENoYXJhY3RlckNsYXNzKiB3b3JkVW5pY29kZUlnbm9yZUNhc2VDaGFy
Q2FjaGVkIHsgbnVsbHB0ciB9OworICAgIENoYXJhY3RlckNsYXNzKiBub25kaWdpdHNDYWNoZWQg
eyBudWxscHRyIH07CisgICAgQ2hhcmFjdGVyQ2xhc3MqIG5vbnNwYWNlc0NhY2hlZCB7IG51bGxw
dHIgfTsKKyAgICBDaGFyYWN0ZXJDbGFzcyogbm9ud29yZGNoYXJDYWNoZWQgeyBudWxscHRyIH07
CisgICAgQ2hhcmFjdGVyQ2xhc3MqIG5vbndvcmRVbmljb2RlSWdub3JlQ2FzZWNoYXJDYWNoZWQg
eyBudWxscHRyIH07CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgQ2hhcmFjdGVyQ2xhc3MqPiB1bmlj
b2RlUHJvcGVydGllc0NhY2hlZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJTeW50YXhDaGVja2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJTeW50YXhDaGVja2VyLmNwcAppbmRleCAwMmZlYmM3ODllOWFkMzhiMmQ1OGIwNDU1
MjI1YmRhMmJlYTVkZDgyLi45ZjA1ZjIyODUyNTMzOTBmYWQ2NGYzZTQwNTc2MDJjNzQwOGNiZmJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclN5bnRheENoZWNrZXIu
Y3BwCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFN5bnRheENoZWNrZXIgewogICAgIHZvaWQgZGlz
anVuY3Rpb24oKSB7fQogfTsKIAotY29uc3QgY2hhciogY2hlY2tTeW50YXgoY29uc3QgU3RyaW5n
JiBwYXR0ZXJuLCBjb25zdCBTdHJpbmcmIGZsYWdzKQorRXJyb3JDb2RlIGNoZWNrU3ludGF4KGNv
bnN0IFN0cmluZyYgcGF0dGVybiwgY29uc3QgU3RyaW5nJiBmbGFncykKIHsKICAgICBTeW50YXhD
aGVja2VyIHN5bnRheENoZWNrZXI7CiAgICAgcmV0dXJuIHBhcnNlKHN5bnRheENoZWNrZXIsIHBh
dHRlcm4sIGZsYWdzLmNvbnRhaW5zKCd1JykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyclN5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJTeW50YXhDaGVja2VyLmgKaW5kZXggMmUyZTliY2ZiODc0NjYyMmJhNGY0YmRhYjA2
Y2UxOTdjNzlhYWIxNC4uODZkYWYzOGJjYmIyMDhlMjE5ZjIwNDA5ZDRiYzdkYWI4ZGY1NWE4NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclN5bnRheENoZWNrZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tlci5oCkBA
IC0yNSwxMCArMjUsMTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJZYXJyRXJyb3JD
b2RlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgWWFyciB7CiAKLWNvbnN0IGNoYXIqIGNoZWNrU3ludGF4KGNvbnN0IFN0cmlu
ZyYgcGF0dGVybiwgY29uc3QgU3RyaW5nJiBmbGFncyk7CitFcnJvckNvZGUgY2hlY2tTeW50YXgo
Y29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBjb25zdCBTdHJpbmcmIGZsYWdzKTsKIAogfX0gLy8gSlND
OjpZYXJyCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329754</attachid>
            <date>2017-12-19 04:19:09 -0800</date>
            <delta_ts>2017-12-19 04:30:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180966-20171219211908.patch</filename>
            <type>text/plain</type>
            <size>59009</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZDIwMTFlMThhMDQ1NWYxZDExYzllODFlN2YwMmJhOTk5ODBlNGUwLi41NWNkMmQ5NzAwYjM3M2Ri
NzU2NDlkMTBmOTUxZDdjYzVkYThiYjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MSBAQAorMjAxNy0xMi0xOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbWUFSUl0gWWFyciBzaG91bGQgcmV0dXJuIEVycm9yQ29kZSBpbnN0
ZWFkIG9mIGVycm9yIG1lc3NhZ2VzIChjb25zdCBjaGFyKikKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDk2NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgWWFyciByZXR1cm5zIGNvbnN0
IGNoYXIqYCB0byBwb2ludCBhbiBlcnJvciBtZXNzYWdlLiBCdXQgaXQgaXMKKyAgICAgICAgZWFz
aWVyIHRvIGhhbmRsZSBlcnJvciBzdGF0dXMgdGhhdCBZYXJyIHJldHVybnMgYW4gZXJyb3IgY29k
ZSBpbnN0ZWFkIG9mCisgICAgICAgIGBjb25zdCBjaGFyKmAuCisKKyAgICAgICAgSW4gdGhpcyBw
YXRjaCwgd2UgaW50cm9kdWNlIFlhcnI6OkVycm9yQ29kZS4gWWFyciByZXR1cm5zIGl0IGluc3Rl
YWQgb2YKKyAgICAgICAgYGNvbnN0IGNoYXIqYC4gYHN0ZDo6ZXhwZWN0ZWQ8dm9pZCwgWWFycjo6
RXJyb3JDb2RlPmAgd291bGQgYmUgYXBwcm9wcmlhdGUKKyAgICAgICAgZm9yIHRoZSBZYXJyIEFQ
SSBpbnRlcmZhY2UuIEJ1dCBpdCByZXF1aXJlcyBzdWJzdGFudGlhbCBjaGFuZ2VzIHJlbW92aW5n
CisgICAgICAgIEVycm9yQ29kZTo6Tm9FcnJvciwgc28gdGhpcyBwYXRjaCBqdXN0IHVzZXMgdGhl
IGN1cnJlbnQgWWFycjo6RXJyb3JDb2RlIGFzCisgICAgICAgIGEgZmlyc3Qgc3RlcC4KKworICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRp
ZXMuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpmaW5k
TWFnaWNDb21tZW50KToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAo
SlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVSZWdFeHApOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmVz
c2lvbik6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlUmVnRXhwKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5j
cHA6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6UmVnRXhwKToKKyAgICAgICAgKEpTQzo6UmVnRXhw
OjpieXRlQ29kZUNvbXBpbGVJZk5lY2Vzc2FyeSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y29t
cGlsZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y29tcGlsZU1hdGNoT25seSk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiB5YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb246OlByaXZhdGU6OlByaXZh
dGUpOgorICAgICAgICAoSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbjo6UHJpdmF0ZTo6Y29t
cGlsZSk6CisgICAgICAgICogeWFyci9ZYXJyRXJyb3JDb2RlLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OllhcnI6OmVycm9yTWVzc2FnZSk6CisgICAgICAgICogeWFyci9ZYXJyRXJyb3JDb2Rl
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJTeW50YXhDaGVj
a2VyLmguCisgICAgICAgIChKU0M6OllhcnI6Omhhc0Vycm9yKToKKyAgICAgICAgKiB5YXJyL1lh
cnJQYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6WWFycjo6UGFyc2VyOjpDaGFyYWN0ZXJDbGFzc1Bh
cnNlckRlbGVnYXRlOjpDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVnYXRlKToKKyAgICAgICAgKEpT
Qzo6WWFycjo6UGFyc2VyOjpDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVnYXRlOjphdG9tUGF0dGVy
bkNoYXJhY3Rlcik6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6UGFyc2VyKToKKyAgICAg
ICAgKEpTQzo6WWFycjo6UGFyc2VyOjppc0lkZW50aXR5RXNjYXBlQW5FcnJvcik6CisgICAgICAg
IChKU0M6OllhcnI6OlBhcnNlcjo6cGFyc2VFc2NhcGUpOgorICAgICAgICAoSlNDOjpZYXJyOjpQ
YXJzZXI6OnBhcnNlQ2hhcmFjdGVyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXJzZXI6
OnBhcnNlUGFyZW50aGVzZXNCZWdpbik6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6cGFy
c2VQYXJlbnRoZXNlc0VuZCk6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6cGFyc2VRdWFu
dGlmaWVyKToKKyAgICAgICAgKEpTQzo6WWFycjo6UGFyc2VyOjpwYXJzZVRva2Vucyk6CisgICAg
ICAgIChKU0M6OllhcnI6OlBhcnNlcjo6cGFyc2UpOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXJz
ZXI6OnRyeUNvbnN1bWVVbmljb2RlRXNjYXBlKToKKyAgICAgICAgKEpTQzo6WWFycjo6UGFyc2Vy
Ojp0cnlDb25zdW1lVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ollh
cnI6OnBhcnNlKToKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAgKEpT
Qzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OnNldHVwRGlzanVu
Y3Rpb25PZmZzZXRzKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rv
cjo6c2V0dXBPZmZzZXRzKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm46OmNvbXBp
bGUpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6WWFyclBhdHRlcm4pOgorICAg
ICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6ZXJyb3JNZXNzYWdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmg6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0
ZXJuOjpyZXNldCk6CisgICAgICAgICogeWFyci9ZYXJyU3ludGF4Q2hlY2tlci5jcHA6CisgICAg
ICAgIChKU0M6OllhcnI6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKiB5YXJyL1lhcnJTeW50YXhD
aGVja2VyLmg6CisKIDIwMTctMTItMTcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKICAgICAgICAgW0ZUTF0gTmV3QXJyYXlCdWZmZXIgc2hvdWxkIGJlIHNpbmtlZCBp
ZiBpdCBpcyBvbmx5IHVzZWQgZm9yIHNwcmVhZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDliOGFhN2FhNDEy
NzdlYzljNDAzMWQ3YjM5N2M4YTk0YThmMjY0ODIuLmNmOTUxNzNkMDc3OWM4ZjllZjZlNWMzNzg0
MzBlY2JmNmFmMTQ1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNy0xMi0xOSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbWUFSUl0g
WWFyciBzaG91bGQgcmV0dXJuIEVycm9yQ29kZSBpbnN0ZWFkIG9mIGVycm9yIG1lc3NhZ2VzIChj
b25zdCBjaGFyKikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MDk2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBTdHJpbmcgY3JlYXRpb24uCisKKyAgICAgICAgTm8gYmVo
YXZpb3IgY2hhbmdlLgorCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpVUkxGaWx0ZXJQ
YXJzZXI6OmFkZFBhdHRlcm4pOgorCiAyMDE3LTEyLTE3ICBKb2huIFdpbGFuZGVyICA8d2lsYW5k
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQSTogTWFrZSBkb2N1bWVu
dC5oYXNTdG9yYWdlQWNjZXNzKCkgcmV0cmlldmUgY3VycmVudCBzdGF0dXMgZnJvbSB0aGUgbmV0
d29yayBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE3ZmI2MjZhOTM1
NjM3YzY2Zjk1MWE1NTYzMzdmNTVlNjczMmJlZDkuLmQ3YTYxYzZkNmE3MjYyNTkzZDE5MTU3M2Vl
OGRiMDJlNWM2NWE2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjczLDYg
KzE2NzMsNyBAQAogCQlFMzIwMUMxRTFGOEU4MjRDMDA3NkEwMzIgLyogU2NyaXB0RmV0Y2hQYXJh
bWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzhEMDYwQzFGOEU4MTQxMDA2NDlDRjIgLyogU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMyMkU1QTMxREE2
NDQzOTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjJFNUExMURBNjQ0MzUwMDZFNzcwOSAvKiBERkdT
bmlwcGV0UGFyYW1zLmggKi87IH07CiAJCUUzMjJFNUE3MURBNjQ0QTgwMDZFNzcwOSAvKiBGVExT
bmlwcGV0UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzIyRTVBNTFEQTY0NEE0MDA2RTc3MDkgLyogRlRMU25pcHBldFBhcmFtcy5oICovOyB9
OworCQlFMzI4MkJCQjFGRTkzMEFGMDBFREFGNzEgLyogWWFyckVycm9yQ29kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyODJCQkExRkU5MzBBNDAw
RURBRjcxIC8qIFlhcnJFcnJvckNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzI4QzZDNzFEQTQzMDQ1MDBEMjU1RkQgLyogTWF4RnJhbWVF
eHRlbnRGb3JTbG93UGF0aENhbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1ODYwMTc3MTg1QThGNUUwMDAzMEVFRSAvKiBNYXhGcmFtZUV4dGVudEZv
clNsb3dQYXRoQ2FsbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUUzMjhDNkM4MURBNDMwNjEwMEQyNTVGRCAvKiBSZWdpc3RlckF0T2Zmc2V0TGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU0MEM3
OUQxQjgyRDk5RDAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRPZmZzZXRMaXN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMyOEM2QzkxREE0MzJGOTAw
RDI1NUZEIC8qIFJlZ2lzdGVyQXRPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1NDBDNzlGMUI4MkQ5Q0UwMDBGNkI3OSAvKiBSZWdpc3RlckF0
T2Zmc2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTQ0OTgsNiArNDQ5OSw4IEBACiAJCUUzMjJFNUE0MURBNjQ0QTQwMDZFNzcwOSAvKiBGVExT
bmlwcGV0UGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZU
TFNuaXBwZXRQYXJhbXMuY3BwOyBwYXRoID0gZnRsL0ZUTFNuaXBwZXRQYXJhbXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzIyRTVBNTFEQTY0NEE0MDA2RTc3MDkgLyogRlRM
U25pcHBldFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExTbmlw
cGV0UGFyYW1zLmg7IHBhdGggPSBmdGwvRlRMU25pcHBldFBhcmFtcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzI2QzQ5NjFFQ0JFRjU3MDBBOUE5MDUgLyogQ2xhc3NJbmZvLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzSW5mby5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMjgyQkI5MUZFOTMwQTMwMEVEQUY3MSAvKiBZ
YXJyRXJyb3JDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlh
cnJFcnJvckNvZGUuY3BwOyBwYXRoID0geWFyci9ZYXJyRXJyb3JDb2RlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMyODJCQkExRkU5MzBBNDAwRURBRjcxIC8qIFlhcnJFcnJv
ckNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyckVycm9yQ29kZS5o
OyBwYXRoID0geWFyci9ZYXJyRXJyb3JDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzMzYzN0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZmxlY3RPYmplY3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVj
dE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZsZWN0T2JqZWN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzM0IzRTI1MUI3QUJENzUwMDQ4REIy
RSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwMDIsNiArNzAwNSw4IEBACiAJCQkJODYz
QzZEOTkxNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxpemUuaCAqLywKIAkJCQk4NjND
NkQ5ODE1MjExMTEyMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwICovLAogCQkJ
CTg2M0M2RDlBMTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5qcyAqLywK
KwkJCQlFMzI4MkJCOTFGRTkzMEEzMDBFREFGNzEgLyogWWFyckVycm9yQ29kZS5jcHAgKi8sCisJ
CQkJRTMyODJCQkExRkU5MzBBNDAwRURBRjcxIC8qIFlhcnJFcnJvckNvZGUuaCAqLywKIAkJCQk4
NjcwNEI3RDEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmNwcCAqLywKIAkJCQk4
NjcwNEI3RTEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmggKi8sCiAJCQkJODY3
MDRCN0YxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3BwICovLApAQCAtOTQ2Niw2ICs5NDcx
LDcgQEAKIAkJCQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OTU5RTkyRTFCRDE3RkE0MDAxQUE0MTMgLyogeHhkLnBsIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDUxNTM5QjkxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUUzMjgyQkJCMUZFOTMwQUYwMEVEQUY3MSAvKiBZYXJyRXJyb3JDb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4NTEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVy
cHJldGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyog
WWFyckpJVC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8q
IFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICovLApAQCAtOTk5OSw2ICsxMDAwNSw3IEBACiAJCQlp
c2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQlGRTA1RkFGRDFGRTRDRURBMDAwOTMyMzAgLyogRGVwcmVj
YXRlZEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE5RTFGNzM1
RjE2MDAzN0ZDMzMgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkY0Mjc0QTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2LmMgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkY0Mjc0MDE1OEVCRThCMDA0Q0I5RkYgLyogdWRpczg2X2RlY29kZS5jIGluIFNvdXJjZXMg
Ki8sCkBAIC0xMDEwNyw3ICsxMDExNCw2IEBACiAJCQkJNTM2QjMxNDExRjcxQzU5OTAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2U5NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzEzODFGNzFD
NTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTk1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUz
NkIzMTJGMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlOTYuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJRkUwNUZBRkQxRkU0Q0VEQTAwMDkzMjMwIC8qIERlcHJlY2F0ZWRJbnNwZWN0b3JW
YWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxMzYxRjcxQzU5OTAwMzdGQzMzIC8q
IFVuaWZpZWRTb3VyY2U5Ny5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE2QTFGNzFDNTk5
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTk4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIz
MTYzMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlOTkuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggY2RkMDhkOTE2MzIyZjcxYjRhNWRhZmMw
Y2QzYmI2ZDM1YzUyODMwNy4uZTcyNTNiOTMyZDI5NjYyZTJhZWViYTZjYTczN2QxMWNlNzFjNWJm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMTAxNSw2ICsxMDE1LDcgQEAgd2Fz
bS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHAKIAogeWFyci9SZWd1bGFyRXhwcmVz
c2lvbi5jcHAKIHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwCit5YXJyL1lhcnJFcnJvckNv
ZGUuY3BwCiB5YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKIHlhcnIvWWFyckpJVC5jcHAKIHlhcnIv
WWFyclBhdHRlcm4uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcAppbmRleCA4OTU4MDlhZDM2OGRhZDU5
NzQ2YmNmYWVmMzM3ODdmYjY3NDYwZjQ0Li5lMDU3YmE0ZGM1NDNkYWFlMzFmZDRmMDI4YTJiYmIz
YjRmOGRlNjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0Nv
bnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKQEAgLTE3Nyw5ICsxNzcsOSBAQCBzdGF0
aWMgU3RyaW5nIGZpbmRNYWdpY0NvbW1lbnQoY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBT
dHJpbmcmIHBhdHRlcm5TdHJpbgogICAgIGlmIChjb250ZW50LmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogCi0gICAgY29uc3QgY2hhciogZXJyb3IgPSBudWxscHRyOworICAg
IEpTQzo6WWFycjo6RXJyb3JDb2RlIGVycm9yIHsgSlNDOjpZYXJyOjpFcnJvckNvZGU6Ok5vRXJy
b3IgfTsKICAgICBZYXJyUGF0dGVybiBwYXR0ZXJuKHBhdHRlcm5TdHJpbmcsIEpTQzo6UmVnRXhw
RmxhZ3M6OkZsYWdNdWx0aWxpbmUsICZlcnJvcik7Ci0gICAgQVNTRVJUKCFlcnJvcik7CisgICAg
QVNTRVJUKCFoYXNFcnJvcihlcnJvcikpOwogICAgIEJ1bXBQb2ludGVyQWxsb2NhdG9yIHJlZ2V4
QWxsb2NhdG9yOwogICAgIGF1dG8gYnl0ZWNvZGVQYXR0ZXJuID0gYnl0ZUNvbXBpbGUocGF0dGVy
biwgJnJlZ2V4QWxsb2NhdG9yKTsKICAgICBBU1NFUlQoYnl0ZWNvZGVQYXR0ZXJuKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggM2FkMzg4YzRjOTk2OTg5
ZWVhOTMzNDQwMGYwNWYzYjM1Yzc3MTcxZi4uODYxZjBjZjcwNmYwNDBiMzE4ODUzN2E5YWZlZWEx
MWI4YmUzMzJkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgK
QEAgLTMzNSw3ICszMzUsNyBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKIAogICAgIEV4cHJlc3Npb25O
b2RlKiBjcmVhdGVSZWdFeHAoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3Qg
SWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBzdGFydCkKICAgICB7Ci0gICAgICAgIGlmIChZYXJyOjpjaGVja1N5bnRheChw
YXR0ZXJuLnN0cmluZygpLCBmbGFncy5zdHJpbmcoKSkpCisgICAgICAgIGlmIChZYXJyOjpoYXNF
cnJvcihZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnN0cmluZygpLCBmbGFncy5zdHJpbmcoKSkp
KQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIFJlZ0V4cE5vZGUqIG5vZGUgPSBuZXcg
KG1fcGFyc2VyQXJlbmEpIFJlZ0V4cE5vZGUobG9jYXRpb24sIHBhdHRlcm4sIGZsYWdzKTsKICAg
ICAgICAgaW50IHNpemUgPSBwYXR0ZXJuLmxlbmd0aCgpICsgMjsgLy8gKyAyIGZvciB0aGUgdHdv
IC8ncwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDg0OGM5N2Q0
NDNiMjE2ZTY5ZDBiMjg3Y2FjZjUzMWVmZjY3MzE4ZGQuLmY0ODUxMzZkMDk4Y2E5OWFlMTMwZWRm
Y2I1ZDNjYTZlODVkNmI1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKQEAgLTQ1NDcsOCArNDU0Nyw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAgICAgICAg
IG5leHQoKTsKICAgICAgICAgVHJlZUV4cHJlc3Npb24gcmUgPSBjb250ZXh0LmNyZWF0ZVJlZ0V4
cChsb2NhdGlvbiwgKnBhdHRlcm4sICpmbGFncywgc3RhcnQpOwogICAgICAgICBpZiAoIXJlKSB7
Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiB5YXJyRXJyb3JNc2cgPSBZYXJyOjpjaGVja1N5bnRh
eChwYXR0ZXJuLT5zdHJpbmcoKSwgZmxhZ3MtPnN0cmluZygpKTsKLSAgICAgICAgICAgIHJlZ2V4
RmFpbCh5YXJyRXJyb3JNc2cpOworICAgICAgICAgICAgWWFycjo6RXJyb3JDb2RlIGVycm9yQ29k
ZSA9IFlhcnI6OmNoZWNrU3ludGF4KHBhdHRlcm4tPnN0cmluZygpLCBmbGFncy0+c3RyaW5nKCkp
OworICAgICAgICAgICAgcmVnZXhGYWlsKFlhcnI6OmVycm9yTWVzc2FnZShlcnJvckNvZGUpKTsK
ICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCA1MzljNDczNDBlYjZhNjQ1ZmU3Y2Fm
NDQxYzNmMDBkYjViM2NmNjMyLi44ZjNhZmU2ZDI1NmZhYzk1ZTY5M2Q0MjA0ODkxN2RmOTVhZDM3
MTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNr
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApA
QCAtMTgxLDcgKzE4MSw3IEBAIGNsYXNzIFN5bnRheENoZWNrZXIgewogICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZU51bGwoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gTnVsbEV4cHI7
IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCcmFja2V0QWNjZXNzKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gQnJhY2tldEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVE
b3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGNvbnN0IElk
ZW50aWZpZXIqLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBEb3RFeHByOyB9Ci0gICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50
aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzLCBpbnQpIHsgcmV0dXJuIFlh
cnI6OmNoZWNrU3ludGF4KHBhdHRlcm4uc3RyaW5nKCksIGZsYWdzLnN0cmluZygpKSA/IDAgOiBS
ZWdFeHBFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXIm
IGZsYWdzLCBpbnQpIHsgcmV0dXJuIFlhcnI6Omhhc0Vycm9yKFlhcnI6OmNoZWNrU3ludGF4KHBh
dHRlcm4uc3RyaW5nKCksIGZsYWdzLnN0cmluZygpKSkgPyAwIDogUmVnRXhwRXhwcjsgfQogICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQogICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvblR5cGUsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CiAgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlQ29uZGl0aW9uYWxFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIENvbmRp
dGlvbmFsRXhwcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKaW5k
ZXggMDUxMWQyMjUyYWVmMDFiZjY5OWFkYmNiYTA1YzQ2NmJkY2JlMTZjMy4uZjVhNDk5NmE1ZjA2
M2IzNTU4NzZlNzAxOWFhYjg4M2Y1ZTI0MDI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHAuY3BwCkBAIC0yMTQsMTYgKzIxNCw2IEBAIFJlZ0V4cDo6UmVnRXhwKFZNJiB2
bSwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyBmbGFncykKICAgICAs
IG1fc3RhdGUoTm90Q29tcGlsZWQpCiAgICAgLCBtX3BhdHRlcm5TdHJpbmcocGF0dGVyblN0cmlu
ZykKICAgICAsIG1fZmxhZ3MoZmxhZ3MpCi0gICAgLCBtX2NvbnN0cnVjdGlvbkVycm9yKDApCi0g
ICAgLCBtX251bVN1YnBhdHRlcm5zKDApCi0jaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQotICAg
ICwgbV9ydE1hdGNoT25seVRvdGFsU3ViamVjdFN0cmluZ0xlbigwLjApCi0gICAgLCBtX3J0TWF0
Y2hUb3RhbFN1YmplY3RTdHJpbmdMZW4oMC4wKQotICAgICwgbV9ydE1hdGNoT25seUNhbGxDb3Vu
dCgwKQotICAgICwgbV9ydE1hdGNoT25seUZvdW5kQ291bnQoMCkKLSAgICAsIG1fcnRNYXRjaENh
bGxDb3VudCgwKQotICAgICwgbV9ydE1hdGNoRm91bmRDb3VudCgwKQotI2VuZGlmCiB7CiB9CiAK
QEAgLTI4Myw3ICsyNzMsNyBAQCB2b2lkIFJlZ0V4cDo6Ynl0ZUNvZGVDb21waWxlSWZOZWNlc3Nh
cnkoVk0qIHZtKQogICAgICAgICByZXR1cm47CiAKICAgICBZYXJyOjpZYXJyUGF0dGVybiBwYXR0
ZXJuKG1fcGF0dGVyblN0cmluZywgbV9mbGFncywgJm1fY29uc3RydWN0aW9uRXJyb3IsIHZtLT5z
dGFja0xpbWl0KCkpOwotICAgIGlmIChtX2NvbnN0cnVjdGlvbkVycm9yKSB7CisgICAgaWYgKGhh
c0Vycm9yKG1fY29uc3RydWN0aW9uRXJyb3IpKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAjaWYgQ09NUElMRVJfUVVJUksoQ09OU0lERVJTX1VOUkVBQ0hBQkxFX0NP
REUpCiAgICAgICAgIG1fc3RhdGUgPSBQYXJzZUVycm9yOwpAQCAtMzAwLDcgKzI5MCw3IEBAIHZv
aWQgUmVnRXhwOjpjb21waWxlKFZNKiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQog
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAKICAgICBZYXJyOjpZ
YXJyUGF0dGVybiBwYXR0ZXJuKG1fcGF0dGVyblN0cmluZywgbV9mbGFncywgJm1fY29uc3RydWN0
aW9uRXJyb3IsIHZtLT5zdGFja0xpbWl0KCkpOwotICAgIGlmIChtX2NvbnN0cnVjdGlvbkVycm9y
KSB7CisgICAgaWYgKGhhc0Vycm9yKG1fY29uc3RydWN0aW9uRXJyb3IpKSB7CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjaWYgQ09NUElMRVJfUVVJUksoQ09OU0lERVJT
X1VOUkVBQ0hBQkxFX0NPREUpCiAgICAgICAgIG1fc3RhdGUgPSBQYXJzZUVycm9yOwpAQCAtMzU2
LDcgKzM0Niw3IEBAIHZvaWQgUmVnRXhwOjpjb21waWxlTWF0Y2hPbmx5KFZNKiB2bSwgWWFycjo6
WWFyckNoYXJTaXplIGNoYXJTaXplKQogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9s
b2NrKTsKICAgICAKICAgICBZYXJyOjpZYXJyUGF0dGVybiBwYXR0ZXJuKG1fcGF0dGVyblN0cmlu
ZywgbV9mbGFncywgJm1fY29uc3RydWN0aW9uRXJyb3IsIHZtLT5zdGFja0xpbWl0KCkpOwotICAg
IGlmIChtX2NvbnN0cnVjdGlvbkVycm9yKSB7CisgICAgaWYgKGhhc0Vycm9yKG1fY29uc3RydWN0
aW9uRXJyb3IpKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjaWYg
Q09NUElMRVJfUVVJUksoQ09OU0lERVJTX1VOUkVBQ0hBQkxFX0NPREUpCiAgICAgICAgIG1fc3Rh
dGUgPSBQYXJzZUVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAppbmRl
eCBiYmIyNzM4ZTRkM2JkZmNkYmJhMWZiYmI2Y2FhNDlhNGFjNGVlNmU5Li41MjExM2EzYjE1MDg1
YjMxNzhiODFkMWNiZjdlNDkzNWI0NGNmMmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuaApAQCAtNjAsOCArNjAsOCBAQCBjbGFzcyBSZWdFeHAgZmluYWwgOiBwdWJsaWMg
SlNDZWxsIHsKIAogICAgIGNvbnN0IFN0cmluZyYgcGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1f
cGF0dGVyblN0cmluZzsgfQogCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gIW1f
Y29uc3RydWN0aW9uRXJyb3IgJiYgbV9mbGFncyAhPSBJbnZhbGlkRmxhZ3M7IH0KLSAgICBjb25z
dCBjaGFyKiBlcnJvck1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cnVjdGlvbkVycm9y
OyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gIVlhcnI6Omhhc0Vycm9yKG1f
Y29uc3RydWN0aW9uRXJyb3IpICYmIG1fZmxhZ3MgIT0gSW52YWxpZEZsYWdzOyB9CisgICAgY29u
c3QgY2hhciogZXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gWWFycjo6ZXJyb3JNZXNzYWdl
KG1fY29uc3RydWN0aW9uRXJyb3IpOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBpbnQgbWF0
Y2goVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgVmVjdG9yPGludD4m
IG92ZWN0b3IpOwogCkBAIC0xMzgsOCArMTM4LDYgQEAgY2xhc3MgUmVnRXhwIGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgICAgIE5vdENvbXBpbGVkCiAgICAgfTsKIAotICAgIFJlZ0V4cFN0
YXRlIG1fc3RhdGU7Ci0KICAgICB2b2lkIGJ5dGVDb2RlQ29tcGlsZUlmTmVjZXNzYXJ5KFZNKik7
CiAKICAgICB2b2lkIGNvbXBpbGUoVk0qLCBZYXJyOjpZYXJyQ2hhclNpemUpOwpAQCAtMTUyLDE5
ICsxNTAsMjAgQEAgY2xhc3MgUmVnRXhwIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9p
ZCBtYXRjaENvbXBhcmVXaXRoSW50ZXJwcmV0ZXIoY29uc3QgU3RyaW5nJiwgaW50IHN0YXJ0T2Zm
c2V0LCBpbnQqIG9mZnNldFZlY3RvciwgaW50IGppdFJlc3VsdCk7CiAjZW5kaWYKIAorICAgIFJl
Z0V4cFN0YXRlIG1fc3RhdGUgeyBOb3RDb21waWxlZCB9OwogICAgIFN0cmluZyBtX3BhdHRlcm5T
dHJpbmc7CiAgICAgUmVnRXhwRmxhZ3MgbV9mbGFnczsKLSAgICBjb25zdCBjaGFyKiBtX2NvbnN0
cnVjdGlvbkVycm9yOwotICAgIHVuc2lnbmVkIG1fbnVtU3VicGF0dGVybnM7CisgICAgWWFycjo6
RXJyb3JDb2RlIG1fY29uc3RydWN0aW9uRXJyb3IgeyBZYXJyOjpFcnJvckNvZGU6Ok5vRXJyb3Ig
fTsKKyAgICB1bnNpZ25lZCBtX251bVN1YnBhdHRlcm5zIHsgMCB9OwogICAgIFZlY3RvcjxTdHJp
bmc+IG1fY2FwdHVyZUdyb3VwTmFtZXM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBt
X25hbWVkR3JvdXBUb1BhcmVuSW5kZXg7CiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQotICAg
IGRvdWJsZSBtX3J0TWF0Y2hPbmx5VG90YWxTdWJqZWN0U3RyaW5nTGVuOwotICAgIGRvdWJsZSBt
X3J0TWF0Y2hUb3RhbFN1YmplY3RTdHJpbmdMZW47Ci0gICAgdW5zaWduZWQgbV9ydE1hdGNoT25s
eUNhbGxDb3VudDsKLSAgICB1bnNpZ25lZCBtX3J0TWF0Y2hPbmx5Rm91bmRDb3VudDsKLSAgICB1
bnNpZ25lZCBtX3J0TWF0Y2hDYWxsQ291bnQ7Ci0gICAgdW5zaWduZWQgbV9ydE1hdGNoRm91bmRD
b3VudDsKKyAgICBkb3VibGUgbV9ydE1hdGNoT25seVRvdGFsU3ViamVjdFN0cmluZ0xlbiB7IDAu
MCB9OworICAgIGRvdWJsZSBtX3J0TWF0Y2hUb3RhbFN1YmplY3RTdHJpbmdMZW4geyAwLjAgfTsK
KyAgICB1bnNpZ25lZCBtX3J0TWF0Y2hPbmx5Q2FsbENvdW50IHsgMCB9OworICAgIHVuc2lnbmVk
IG1fcnRNYXRjaE9ubHlGb3VuZENvdW50IHsgMCB9OworICAgIHVuc2lnbmVkIG1fcnRNYXRjaENh
bGxDb3VudCB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX3J0TWF0Y2hGb3VuZENvdW50IHsgMCB9Owog
I2VuZGlmCiAgICAgQ29uY3VycmVudEpTTG9jayBtX2xvY2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNwcAppbmRleCAxYjFiMjI0MTVhYTgz
MDkwMzIzZmQ3OGYxYjIzZjQ0YzY1NThmOTVlLi40M2JmNDdmN2M3ZmIxNzk0N2MyYmM4MWU4MjYw
YzYzMGMxZTA0MzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1
bGFyRXhwcmVzc2lvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVndWxh
ckV4cHJlc3Npb24uY3BwCkBAIC00MiwxNiArNDIsMTQgQEAgY2xhc3MgUmVndWxhckV4cHJlc3Np
b246OlByaXZhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWd1bGFyRXhwcmVzc2lvbjo6UHJpdmF0
ZT4KICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJpdmF0ZShwYXR0ZXJuLCBjYXNlU2Vu
c2l0aXZpdHksIG11bHRpbGluZU1vZGUpKTsKICAgICB9CiAKLSAgICBpbnQgbGFzdE1hdGNoTGVu
Z3RoOworICAgIGludCBsYXN0TWF0Y2hMZW5ndGggeyAtMSB9OwogCiAgICAgdW5zaWduZWQgbV9u
dW1TdWJwYXR0ZXJuczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpZYXJyOjpCeXRlY29kZVBh
dHRlcm4+IG1fcmVnRXhwQnl0ZUNvZGU7CiAKIHByaXZhdGU6CiAgICAgUHJpdmF0ZShjb25zdCBT
dHJpbmcmIHBhdHRlcm4sIFRleHRDYXNlU2Vuc2l0aXZpdHkgY2FzZVNlbnNpdGl2aXR5LCBNdWx0
aWxpbmVNb2RlIG11bHRpbGluZU1vZGUpCi0gICAgICAgIDogbGFzdE1hdGNoTGVuZ3RoKC0xKQot
ICAgICAgICAsIG1fcmVnRXhwQnl0ZUNvZGUoY29tcGlsZShwYXR0ZXJuLCBjYXNlU2Vuc2l0aXZp
dHksIG11bHRpbGluZU1vZGUpKQotICAgICAgICAsIG1fY29uc3RydWN0aW9uRXJyb3IobnVsbHB0
cikKKyAgICAgICAgOiBtX3JlZ0V4cEJ5dGVDb2RlKGNvbXBpbGUocGF0dGVybiwgY2FzZVNlbnNp
dGl2aXR5LCBtdWx0aWxpbmVNb2RlKSkKICAgICB7CiAgICAgfQogCkBAIC02Niw4ICs2NCw4IEBA
IGNsYXNzIFJlZ3VsYXJFeHByZXNzaW9uOjpQcml2YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVn
dWxhckV4cHJlc3Npb246OlByaXZhdGU+CiAgICAgICAgICAgICBmbGFncyA9IHN0YXRpY19jYXN0
PFJlZ0V4cEZsYWdzPihmbGFncyB8IEZsYWdNdWx0aWxpbmUpOwogCiAgICAgICAgIEpTQzo6WWFy
cjo6WWFyclBhdHRlcm4gcGF0dGVybihwYXR0ZXJuU3RyaW5nLCBmbGFncywgJm1fY29uc3RydWN0
aW9uRXJyb3IpOwotICAgICAgICBpZiAobV9jb25zdHJ1Y3Rpb25FcnJvcikgewotICAgICAgICAg
ICAgTE9HX0VSUk9SKCJSZWd1bGFyRXhwcmVzc2lvbjogWUFSUiBjb21waWxlIGZhaWxlZCB3aXRo
ICclcyciLCBtX2NvbnN0cnVjdGlvbkVycm9yKTsKKyAgICAgICAgaWYgKEpTQzo6WWFycjo6aGFz
RXJyb3IobV9jb25zdHJ1Y3Rpb25FcnJvcikpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiUmVn
dWxhckV4cHJlc3Npb246IFlBUlIgY29tcGlsZSBmYWlsZWQgd2l0aCAnJXMnIiwgSlNDOjpZYXJy
OjplcnJvck1lc3NhZ2UobV9jb25zdHJ1Y3Rpb25FcnJvcikpOwogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIH0KIApAQCAtNzcsNyArNzUsNyBAQCBjbGFzcyBSZWd1bGFyRXhw
cmVzc2lvbjo6UHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlZ3VsYXJFeHByZXNzaW9uOjpQ
cml2YXRlPgogICAgIH0KIAogICAgIEJ1bXBQb2ludGVyQWxsb2NhdG9yIG1fcmVnZXhBbGxvY2F0
b3I7Ci0gICAgY29uc3QgY2hhciogbV9jb25zdHJ1Y3Rpb25FcnJvcjsKKyAgICBKU0M6OllhcnI6
OkVycm9yQ29kZSBtX2NvbnN0cnVjdGlvbkVycm9yIHsgWWFycjo6RXJyb3JDb2RlOjpOb0Vycm9y
IH07CiB9OwogCiBSZWd1bGFyRXhwcmVzc2lvbjo6UmVndWxhckV4cHJlc3Npb24oY29uc3QgU3Ry
aW5nJiBwYXR0ZXJuLCBUZXh0Q2FzZVNlbnNpdGl2aXR5IGNhc2VTZW5zaXRpdml0eSwgTXVsdGls
aW5lTW9kZSBtdWx0aWxpbmVNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckVycm9yQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
RXJyb3JDb2RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTBhMDgxYzhlZmFlMGU4NzcxY2IwNGI4ZTQ2ZDU0
MmQ1YTJiNDlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckVycm9yQ29kZS5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiWWFyckVycm9yQ29kZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIg
eworCitjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UoRXJyb3JDb2RlIGVycm9yKQoreworI2RlZmlu
ZSBSRUdFWFBfRVJST1JfUFJFRklYICJJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogIgorICAg
IC8vIFRoZSBvcmRlciBvZiB0aGlzIGFycmF5IG11c3QgbWF0Y2ggdGhlIEVycm9yQ29kZSBlbnVt
LgorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2VzW10gPSB7CisgICAgICAgIG51
bGxwdHIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBOb0Vycm9yCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggInJlZ3Vs
YXIgZXhwcmVzc2lvbiB0b28gbGFyZ2UiLCAgICAgICAgICAgICAgICAgICAvLyBQYXR0ZXJuVG9v
TGFyZ2UKKyAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAibnVtYmVycyBvdXQgb2Ygb3JkZXIg
aW4ge30gcXVhbnRpZmllciIsICAgICAgICAgIC8vIFF1YW50aWZpZXJPdXRPZk9yZGVyCisgICAg
ICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggIm5vdGhpbmcgdG8gcmVwZWF0IiwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBRdWFudGlmaWVyV2l0aG91dEF0b20KKyAgICAgICAgUkVHRVhQ
X0VSUk9SX1BSRUZJWCAibnVtYmVyIHRvbyBsYXJnZSBpbiB7fSBxdWFudGlmaWVyIiwgICAgICAg
ICAgICAgIC8vIFF1YW50aWZpZXJUb29MYXJnZQorICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklY
ICJtaXNzaW5nICkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWlz
c2luZ1BhcmVudGhlc2VzCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggInVubWF0Y2hlZCBw
YXJlbnRoZXNlcyIsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQYXJlbnRoZXNlc1VubWF0
Y2hlZAorICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJ1bnJlY29nbml6ZWQgY2hhcmFjdGVy
IGFmdGVyICg/IiwgICAgICAgICAgICAgICAgLy8gUGFyZW50aGVzZXNUeXBlSW52YWxpZAorICAg
ICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJpbnZhbGlkIGdyb3VwIHNwZWNpZmllciBuYW1lIiwg
ICAgICAgICAgICAgICAgICAgLy8gSW52YWxpZEdyb3VwTmFtZQorICAgICAgICBSRUdFWFBfRVJS
T1JfUFJFRklYICJkdXBsaWNhdGUgZ3JvdXAgc3BlY2lmaWVyIG5hbWUiLCAgICAgICAgICAgICAg
ICAgLy8gRHVwbGljYXRlR3JvdXBOYW1lCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggIm1p
c3NpbmcgdGVybWluYXRpbmcgXSBmb3IgY2hhcmFjdGVyIGNsYXNzIiwgICAgICAvLyBDaGFyYWN0
ZXJDbGFzc1VubWF0Y2hlZAorICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJyYW5nZSBvdXQg
b2Ygb3JkZXIgaW4gY2hhcmFjdGVyIGNsYXNzIiwgICAgICAgICAgLy8gQ2hhcmFjdGVyQ2xhc3NP
dXRPZk9yZGVyCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggIlxcIGF0IGVuZCBvZiBwYXR0
ZXJuIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFc2NhcGVVbnRlcm1pbmF0ZWQKKyAg
ICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAiaW52YWxpZCB1bmljb2RlIHt9IGVzY2FwZSIsICAg
ICAgICAgICAgICAgICAgICAgIC8vIEludmFsaWRVbmljb2RlRXNjYXBlCisgICAgICAgIFJFR0VY
UF9FUlJPUl9QUkVGSVggImludmFsaWQgYmFja3JlZmVyZW5jZSBmb3IgdW5pY29kZSBwYXR0ZXJu
IiwgICAgICAvLyBJbnZhbGlkQmFja3JlZmVyZW5jZQorICAgICAgICBSRUdFWFBfRVJST1JfUFJF
RklYICJpbnZhbGlkIGVzY2FwZWQgY2hhcmFjdGVyIGZvciB1bmljb2RlIHBhdHRlcm4iLCAgLy8g
SW52YWxpZElkZW50aXR5RXNjYXBlCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggImludmFs
aWQgcHJvcGVydHkgZXhwcmVzc2lvbiIsICAgICAgICAgICAgICAgICAgICAvLyBJbnZhbGlkVW5p
Y29kZVByb3BlcnR5RXhwcmVzc2lvbgorICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJ0b28g
bWFueSBuZXN0ZWQgZGlzanVuY3Rpb25zIiwgICAgICAgICAgICAgICAgICAgLy8gVG9vTWFueURp
c2p1bmN0aW9ucworICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJwYXR0ZXJuIGV4Y2VlZHMg
c3RyaW5nIGxlbmd0aCBsaW1pdHMiLCAgICAgICAgICAgLy8gT2Zmc2V0VG9vTGFyZ2UKKyAgICAg
ICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAiaW52YWxpZCBmbGFncyIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEludmFsaWRSZWd1bGFyRXhwcmVzc2lvbkZsYWdzCisgICAgfTsK
KworICAgIHJldHVybiBlcnJvck1lc3NhZ2VzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihlcnJvcild
OworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6WWFycgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckVycm9yQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckVycm9yQ29kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiOTQ3Yjk4ZjJlOWMyZTljYjNjODM4
MWYyOWFmNjE0ZTk3NTljYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJyRXJyb3JDb2RlLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJyIHsKKworZW51bSBjbGFzcyBFcnJvckNvZGUgOiB1
bnNpZ25lZCB7CisgICAgTm9FcnJvciA9IDAsCisgICAgUGF0dGVyblRvb0xhcmdlLAorICAgIFF1
YW50aWZpZXJPdXRPZk9yZGVyLAorICAgIFF1YW50aWZpZXJXaXRob3V0QXRvbSwKKyAgICBRdWFu
dGlmaWVyVG9vTGFyZ2UsCisgICAgTWlzc2luZ1BhcmVudGhlc2VzLAorICAgIFBhcmVudGhlc2Vz
VW5tYXRjaGVkLAorICAgIFBhcmVudGhlc2VzVHlwZUludmFsaWQsCisgICAgSW52YWxpZEdyb3Vw
TmFtZSwKKyAgICBEdXBsaWNhdGVHcm91cE5hbWUsCisgICAgQ2hhcmFjdGVyQ2xhc3NVbm1hdGNo
ZWQsCisgICAgQ2hhcmFjdGVyQ2xhc3NPdXRPZk9yZGVyLAorICAgIEVzY2FwZVVudGVybWluYXRl
ZCwKKyAgICBJbnZhbGlkVW5pY29kZUVzY2FwZSwKKyAgICBJbnZhbGlkQmFja3JlZmVyZW5jZSwK
KyAgICBJbnZhbGlkSWRlbnRpdHlFc2NhcGUsCisgICAgSW52YWxpZFVuaWNvZGVQcm9wZXJ0eUV4
cHJlc3Npb24sCisgICAgVG9vTWFueURpc2p1bmN0aW9ucywKKyAgICBPZmZzZXRUb29MYXJnZSwK
KyAgICBJbnZhbGlkUmVndWxhckV4cHJlc3Npb25GbGFncywKK307CisKK0pTX0VYUE9SVF9QUklW
QVRFIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZShFcnJvckNvZGUpOworaW5saW5lIGJvb2wgaGFz
RXJyb3IoRXJyb3JDb2RlIGVycm9yQ29kZSkKK3sKKyAgICByZXR1cm4gZXJyb3JDb2RlICE9IEVy
cm9yQ29kZTo6Tm9FcnJvcjsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OllhcnIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaAppbmRleCAxMDVjMDNiZjMxNDEwMGFjYjc0
YjI5MmEzYWMzYjIzNzU5NzUzZjBlLi4yMTdhY2NmNDRkYmUyNDFkMTEyN2I2OGQwZjIzNWYwYTM5
OTRhZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGFyc2Vy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oCkBAIC00MSw3
ICs0MSw3IEBAIHRlbXBsYXRlPGNsYXNzIERlbGVnYXRlLCB0eXBlbmFtZSBDaGFyVHlwZT4KIGNs
YXNzIFBhcnNlciB7CiBwcml2YXRlOgogICAgIHRlbXBsYXRlPGNsYXNzIEZyaWVuZERlbGVnYXRl
PgotICAgIGZyaWVuZCBjb25zdCBjaGFyKiBwYXJzZShGcmllbmREZWxlZ2F0ZSYsIGNvbnN0IFN0
cmluZyYgcGF0dGVybiwgYm9vbCBpc1VuaWNvZGUsIHVuc2lnbmVkIGJhY2tSZWZlcmVuY2VMaW1p
dCk7CisgICAgZnJpZW5kIEVycm9yQ29kZSBwYXJzZShGcmllbmREZWxlZ2F0ZSYsIGNvbnN0IFN0
cmluZyYgcGF0dGVybiwgYm9vbCBpc1VuaWNvZGUsIHVuc2lnbmVkIGJhY2tSZWZlcmVuY2VMaW1p
dCk7CiAKICAgICAvKgogICAgICAqIENoYXJhY3RlckNsYXNzUGFyc2VyRGVsZWdhdGU6CkBAIC01
NCw3ICs1NCw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICovCiAgICAgY2xhc3MgQ2hhcmFjdGVy
Q2xhc3NQYXJzZXJEZWxlZ2F0ZSB7CiAgICAgcHVibGljOgotICAgICAgICBDaGFyYWN0ZXJDbGFz
c1BhcnNlckRlbGVnYXRlKERlbGVnYXRlJiBkZWxlZ2F0ZSwgWWFyclBhdHRlcm46OkVycm9yQ29k
ZSYgZXJyKQorICAgICAgICBDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVnYXRlKERlbGVnYXRlJiBk
ZWxlZ2F0ZSwgRXJyb3JDb2RlJiBlcnIpCiAgICAgICAgICAgICA6IG1fZGVsZWdhdGUoZGVsZWdh
dGUpCiAgICAgICAgICAgICAsIG1fZXJyKGVycikKICAgICAgICAgICAgICwgbV9zdGF0ZShFbXB0
eSkKQEAgLTExNiw3ICsxMTYsNyBAQCBjbGFzcyBQYXJzZXIgewogCiAgICAgICAgICAgICBjYXNl
IENhY2hlZENoYXJhY3Rlckh5cGhlbjoKICAgICAgICAgICAgICAgICBpZiAoY2ggPCBtX2NoYXJh
Y3RlcikgewotICAgICAgICAgICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpDaGFyYWN0
ZXJDbGFzc091dE9mT3JkZXI7CisgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2Rl
OjpDaGFyYWN0ZXJDbGFzc091dE9mT3JkZXI7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbV9kZWxlZ2F0ZS5hdG9tQ2hhcmFj
dGVyQ2xhc3NSYW5nZShtX2NoYXJhY3RlciwgY2gpOwpAQCAtMTk4LDcgKzE5OCw3IEBAIGNsYXNz
IFBhcnNlciB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBEZWxlZ2F0ZSYgbV9kZWxlZ2F0ZTsK
LSAgICAgICAgWWFyclBhdHRlcm46OkVycm9yQ29kZSYgbV9lcnI7CisgICAgICAgIEVycm9yQ29k
ZSYgbV9lcnI7CiAgICAgICAgIGVudW0gQ2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3Rpb25TdGF0ZSB7
CiAgICAgICAgICAgICBFbXB0eSwKICAgICAgICAgICAgIENhY2hlZENoYXJhY3RlciwKQEAgLTIx
MiwxMiArMjEyLDkgQEAgY2xhc3MgUGFyc2VyIHsKICAgICBQYXJzZXIoRGVsZWdhdGUmIGRlbGVn
YXRlLCBjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJvb2wgaXNVbmljb2RlLCB1bnNpZ25lZCBiYWNr
UmVmZXJlbmNlTGltaXQpCiAgICAgICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKICAgICAgICAg
LCBtX2JhY2tSZWZlcmVuY2VMaW1pdChiYWNrUmVmZXJlbmNlTGltaXQpCi0gICAgICAgICwgbV9l
cnIoWWFyclBhdHRlcm46Ok5vRXJyb3IpCiAgICAgICAgICwgbV9kYXRhKHBhdHRlcm4uY2hhcmFj
dGVyczxDaGFyVHlwZT4oKSkKICAgICAgICAgLCBtX3NpemUocGF0dGVybi5sZW5ndGgoKSkKLSAg
ICAgICAgLCBtX2luZGV4KDApCiAgICAgICAgICwgbV9pc1VuaWNvZGUoaXNVbmljb2RlKQotICAg
ICAgICAsIG1fcGFyZW50aGVzZXNOZXN0aW5nRGVwdGgoMCkKICAgICB7CiAgICAgfQogCkBAIC0y
MjcsNyArMjI0LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICBib29sIGlzSWRlbnRpdHlFc2NhcGVB
bkVycm9yKGludCBjaCkKICAgICB7CiAgICAgICAgIGlmIChtX2lzVW5pY29kZSAmJiAhc3RyY2hy
KCJeJFxcLiorPygpW117fXwvIiwgY2gpKSB7Ci0gICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0
ZXJuOjpJbnZhbGlkSWRlbnRpdHlFc2NhcGU7CisgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29k
ZTo6SW52YWxpZElkZW50aXR5RXNjYXBlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KIApAQCAtMjU3LDEyICsyNTQsMTIgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB0ZW1wbGF0
ZTxib29sIGluQ2hhcmFjdGVyQ2xhc3MsIGNsYXNzIEVzY2FwZURlbGVnYXRlPgogICAgIGJvb2wg
cGFyc2VFc2NhcGUoRXNjYXBlRGVsZWdhdGUmIGRlbGVnYXRlKQogICAgIHsKLSAgICAgICAgQVNT
RVJUKCFtX2Vycik7CisgICAgICAgIEFTU0VSVCghaGFzRXJyb3IobV9lcnIpKTsKICAgICAgICAg
QVNTRVJUKHBlZWsoKSA9PSAnXFwnKTsKICAgICAgICAgY29uc3VtZSgpOwogCiAgICAgICAgIGlm
IChhdEVuZE9mUGF0dGVybigpKSB7Ci0gICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpF
c2NhcGVVbnRlcm1pbmF0ZWQ7CisgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29kZTo6RXNjYXBl
VW50ZXJtaW5hdGVkOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAg
LTM0Myw3ICszNDAsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgICAgICAgICAgICAgIHJlc3RvcmVT
dGF0ZShzdGF0ZSk7CiAKICAgICAgICAgICAgICAgICBpZiAobV9pc1VuaWNvZGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6SW52YWxpZEJhY2tyZWZlcmVuY2U7
CisgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpJbnZhbGlkQmFja3JlZmVy
ZW5jZTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KQEAgLTQyOSw3ICs0MjYsNyBAQCBjbGFzcyBQYXJzZXIgewogICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1faXNVbmljb2RlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpJbnZhbGlkQmFja3JlZmVyZW5jZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpJbnZhbGlkQmFja3JlZmVyZW5jZTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQpAQCAtNDYwLDcgKzQ1Nyw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGRlbGVnYXRlLmF0b21CdWlsdEluQ2hhcmFjdGVy
Q2xhc3Mob3B0Q2xhc3NJRC52YWx1ZSgpLCBlc2NhcGVDaGFyID09ICdQJyk7CiAgICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpJbnZhbGlkVW5p
Y29kZVByb3BlcnR5RXhwcmVzc2lvbjsKKyAgICAgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29k
ZTo6SW52YWxpZFVuaWNvZGVQcm9wZXJ0eUV4cHJlc3Npb247CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCkBAIC00ODAsMjAgKzQ3NywyMCBAQCBjbGFzcyBQYXJzZXIgewogICAgICAg
ICAgICAgICAgIFVDaGFyMzIgY29kZVBvaW50ID0gMDsKICAgICAgICAgICAgICAgICBkbyB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChhdEVuZE9mUGF0dGVybigpIHx8ICFpc0FTQ0lJSGV4RGln
aXQocGVlaygpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVy
bjo6SW52YWxpZFVuaWNvZGVFc2NhcGU7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2VyciA9
IEVycm9yQ29kZTo6SW52YWxpZFVuaWNvZGVFc2NhcGU7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIGNv
ZGVQb2ludCA9IChjb2RlUG9pbnQgPDwgNCkgfCB0b0FTQ0lJSGV4VmFsdWUoY29uc3VtZSgpKTsK
IAogICAgICAgICAgICAgICAgICAgICBpZiAoY29kZVBvaW50ID4gVUNIQVJfTUFYX1ZBTFVFKQot
ICAgICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6SW52YWxpZFVuaWNv
ZGVFc2NhcGU7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29kZTo6SW52
YWxpZFVuaWNvZGVFc2NhcGU7CiAgICAgICAgICAgICAgICAgfSB3aGlsZSAoIWF0RW5kT2ZQYXR0
ZXJuKCkgJiYgcGVlaygpICE9ICd9Jyk7CiAgICAgICAgICAgICAgICAgaWYgKCFhdEVuZE9mUGF0
dGVybigpICYmIHBlZWsoKSA9PSAnfScpCiAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWUoKTsK
LSAgICAgICAgICAgICAgICBlbHNlIGlmICghbV9lcnIpCi0gICAgICAgICAgICAgICAgICAgIG1f
ZXJyID0gWWFyclBhdHRlcm46OkludmFsaWRVbmljb2RlRXNjYXBlOwotICAgICAgICAgICAgICAg
IGlmIChtX2VycikKKyAgICAgICAgICAgICAgICBlbHNlIGlmICghaGFzRXJyb3IobV9lcnIpKQor
ICAgICAgICAgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29kZTo6SW52YWxpZFVuaWNvZGVFc2Nh
cGU7CisgICAgICAgICAgICAgICAgaWYgKGhhc0Vycm9yKG1fZXJyKSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICAgICAgZGVsZWdhdGUuYXRvbVBhdHRl
cm5DaGFyYWN0ZXIoY29kZVBvaW50KTsKQEAgLTU4NSw3ICs1ODIsNyBAQCBjbGFzcyBQYXJzZXIg
ewogICAgICAqLwogICAgIHZvaWQgcGFyc2VDaGFyYWN0ZXJDbGFzcygpCiAgICAgewotICAgICAg
ICBBU1NFUlQoIW1fZXJyKTsKKyAgICAgICAgQVNTRVJUKCFoYXNFcnJvcihtX2VycikpOwogICAg
ICAgICBBU1NFUlQocGVlaygpID09ICdbJyk7CiAgICAgICAgIGNvbnN1bWUoKTsKIApAQCAtNjA4
LDExICs2MDUsMTEgQEAgY2xhc3MgUGFyc2VyIHsKICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJD
bGFzc0NvbnN0cnVjdG9yLmF0b21QYXR0ZXJuQ2hhcmFjdGVyKGNvbnN1bWVQb3NzaWJsZVN1cnJv
Z2F0ZVBhaXIoKSwgdHJ1ZSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChtX2Vy
cikKKyAgICAgICAgICAgIGlmIChoYXNFcnJvcihtX2VycikpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6Q2hhcmFjdGVy
Q2xhc3NVbm1hdGNoZWQ7CisgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpDaGFyYWN0ZXJDbGFz
c1VubWF0Y2hlZDsKICAgICB9CiAKICAgICAvKgpAQCAtNjIyLDEzICs2MTksMTMgQEAgY2xhc3Mg
UGFyc2VyIHsKICAgICAgKi8KICAgICB2b2lkIHBhcnNlUGFyZW50aGVzZXNCZWdpbigpCiAgICAg
ewotICAgICAgICBBU1NFUlQoIW1fZXJyKTsKKyAgICAgICAgQVNTRVJUKCFoYXNFcnJvcihtX2Vy
cikpOwogICAgICAgICBBU1NFUlQocGVlaygpID09ICcoJyk7CiAgICAgICAgIGNvbnN1bWUoKTsK
IAogICAgICAgICBpZiAodHJ5Q29uc3VtZSgnPycpKSB7CiAgICAgICAgICAgICBpZiAoYXRFbmRP
ZlBhdHRlcm4oKSkgewotICAgICAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OlBhcmVu
dGhlc2VzVHlwZUludmFsaWQ7CisgICAgICAgICAgICAgICAgbV9lcnIgPSBFcnJvckNvZGU6OlBh
cmVudGhlc2VzVHlwZUludmFsaWQ7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCkBAIC02NTIsMTUgKzY0OSwxNSBAQCBjbGFzcyBQYXJzZXIgewogICAgICAgICAgICAg
ICAgICAgICBpZiAoc2V0QWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2RlbGVnYXRlLmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbih0cnVlLCBncm91
cE5hbWUpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAg
ICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpEdXBsaWNhdGVHcm91cE5hbWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICBtX2VyciA9IEVycm9yQ29kZTo6RHVwbGljYXRlR3JvdXBOYW1lOwogICAgICAg
ICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJu
OjpJbnZhbGlkR3JvdXBOYW1lOworICAgICAgICAgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29k
ZTo6SW52YWxpZEdyb3VwTmFtZTsKIAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIG1fZXJyID0gWWFy
clBhdHRlcm46OlBhcmVudGhlc2VzVHlwZUludmFsaWQ7CisgICAgICAgICAgICAgICAgbV9lcnIg
PSBFcnJvckNvZGU6OlBhcmVudGhlc2VzVHlwZUludmFsaWQ7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgbV9kZWxlZ2F0ZS5hdG9tUGFyZW50aGVzZXNTdWJwYXR0
ZXJuQmVnaW4oKTsKQEAgLTY3NSwxNCArNjcyLDE0IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICov
CiAgICAgdm9pZCBwYXJzZVBhcmVudGhlc2VzRW5kKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCgh
bV9lcnIpOworICAgICAgICBBU1NFUlQoIWhhc0Vycm9yKG1fZXJyKSk7CiAgICAgICAgIEFTU0VS
VChwZWVrKCkgPT0gJyknKTsKICAgICAgICAgY29uc3VtZSgpOwogCiAgICAgICAgIGlmIChtX3Bh
cmVudGhlc2VzTmVzdGluZ0RlcHRoID4gMCkKICAgICAgICAgICAgIG1fZGVsZWdhdGUuYXRvbVBh
cmVudGhlc2VzRW5kKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZXJyID0gWWFyclBh
dHRlcm46OlBhcmVudGhlc2VzVW5tYXRjaGVkOworICAgICAgICAgICAgbV9lcnIgPSBFcnJvckNv
ZGU6OlBhcmVudGhlc2VzVW5tYXRjaGVkOwogCiAgICAgICAgIC0tbV9wYXJlbnRoZXNlc05lc3Rp
bmdEZXB0aDsKICAgICB9CkBAIC02OTQsMTggKzY5MSwxOCBAQCBjbGFzcyBQYXJzZXIgewogICAg
ICAqLwogICAgIHZvaWQgcGFyc2VRdWFudGlmaWVyKGJvb2wgbGFzdFRva2VuV2FzQW5BdG9tLCB1
bnNpZ25lZCBtaW4sIHVuc2lnbmVkIG1heCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9lcnIp
OworICAgICAgICBBU1NFUlQoIWhhc0Vycm9yKG1fZXJyKSk7CiAgICAgICAgIEFTU0VSVChtaW4g
PD0gbWF4KTsKIAogICAgICAgICBpZiAobWluID09IFVJTlRfTUFYKSB7Ci0gICAgICAgICAgICBt
X2VyciA9IFlhcnJQYXR0ZXJuOjpRdWFudGlmaWVyVG9vTGFyZ2U7CisgICAgICAgICAgICBtX2Vy
ciA9IEVycm9yQ29kZTo6UXVhbnRpZmllclRvb0xhcmdlOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKGxhc3RUb2tlbldhc0FuQXRvbSkKICAgICAgICAgICAg
IG1fZGVsZWdhdGUucXVhbnRpZnlBdG9tKG1pbiwgbWF4LCAhdHJ5Q29uc3VtZSgnPycpKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6UXVhbnRpZmllcldp
dGhvdXRBdG9tOworICAgICAgICAgICAgbV9lcnIgPSBFcnJvckNvZGU6OlF1YW50aWZpZXJXaXRo
b3V0QXRvbTsKICAgICB9CiAKICAgICAvKgpAQCAtNzk5LDcgKzc5Niw3IEBAIGNsYXNzIFBhcnNl
ciB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluIDw9IG1heCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJzZVF1YW50aWZpZXIobGFzdFRva2VuV2FzQW5BdG9tLCBtaW4s
IG1heCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6UXVhbnRpZmllck91dE9mT3JkZXI7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBFcnJvckNvZGU6OlF1YW50aWZpZXJPdXRP
Zk9yZGVyOwogICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFRva2VuV2FzQW5BdG9tID0gZmFs
c2U7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
fQpAQCAtODE1LDI5ICs4MTIsMjggQEAgY2xhc3MgUGFyc2VyIHsKICAgICAgICAgICAgICAgICBs
YXN0VG9rZW5XYXNBbkF0b20gPSB0cnVlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBp
ZiAobV9lcnIpCisgICAgICAgICAgICBpZiAoaGFzRXJyb3IobV9lcnIpKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX3BhcmVudGhlc2VzTmVzdGlu
Z0RlcHRoID4gMCkKLSAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46Ok1pc3NpbmdQYXJl
bnRoZXNlczsKKyAgICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpNaXNzaW5nUGFyZW50aGVz
ZXM7CiAgICAgfQogCiAgICAgLyoKICAgICAgKiBwYXJzZSgpOgogICAgICAqCi0gICAgICogVGhp
cyBtZXRob2QgY2FsbHMgcGFyc2VUb2tlbnMoKSB0byBwYXJzZSBvdmVyIHRoZSBpbnB1dCBhbmQg
Y29udmVydHMgYW55Ci0gICAgICogZXJyb3IgY29kZSB0byBhIGNvbnN0IGNoYXIqIGZvciBhIHJl
c3VsdC4KKyAgICAgKiBUaGlzIG1ldGhvZCBjYWxscyBwYXJzZVRva2VucygpIHRvIHBhcnNlIG92
ZXIgdGhlIGlucHV0IGFuZCByZXR1cm5zIGVycm9yIGNvZGUgZm9yIGEgcmVzdWx0LgogICAgICAq
LwotICAgIGNvbnN0IGNoYXIqIHBhcnNlKCkKKyAgICBFcnJvckNvZGUgcGFyc2UoKQogICAgIHsK
ICAgICAgICAgaWYgKG1fc2l6ZSA+IE1BWF9QQVRURVJOX1NJWkUpCi0gICAgICAgICAgICBtX2Vy
ciA9IFlhcnJQYXR0ZXJuOjpQYXR0ZXJuVG9vTGFyZ2U7CisgICAgICAgICAgICBtX2VyciA9IEVy
cm9yQ29kZTo6UGF0dGVyblRvb0xhcmdlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwYXJz
ZVRva2VucygpOwotICAgICAgICBBU1NFUlQoYXRFbmRPZlBhdHRlcm4oKSB8fCBtX2Vycik7Cisg
ICAgICAgIEFTU0VSVChhdEVuZE9mUGF0dGVybigpIHx8IGhhc0Vycm9yKG1fZXJyKSk7CiAgICAg
ICAgIAotICAgICAgICByZXR1cm4gWWFyclBhdHRlcm46OmVycm9yTWVzc2FnZShtX2Vycik7Cisg
ICAgICAgIHJldHVybiBtX2VycjsKICAgICB9CiAKICAgICAvLyBNaXNjIGhlbHBlciBmdW5jdGlv
bnM6CkBAIC04OTIsMjIgKzg4OCwyMiBAQCBjbGFzcyBQYXJzZXIgewogICAgICAgICAgICAgaW50
IGNvZGVQb2ludCA9IDA7CiAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgaWYgKGF0
RW5kT2ZQYXR0ZXJuKCkgfHwgIWlzQVNDSUlIZXhEaWdpdChwZWVrKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OkludmFsaWRVbmljb2RlRXNjYXBlOworICAg
ICAgICAgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29kZTo6SW52YWxpZFVuaWNvZGVFc2NhcGU7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgICAgICBjb2RlUG9pbnQgPSAoY29kZVBvaW50IDw8IDQpIHwgdG9BU0NJSUhleFZh
bHVlKGNvbnN1bWUoKSk7CiAKICAgICAgICAgICAgICAgICBpZiAoY29kZVBvaW50ID4gVUNIQVJf
TUFYX1ZBTFVFKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46Oklu
dmFsaWRVbmljb2RlRXNjYXBlOworICAgICAgICAgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29k
ZTo6SW52YWxpZFVuaWNvZGVFc2NhcGU7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IHdoaWxlICghYXRFbmRPZlBhdHRlcm4o
KSAmJiBwZWVrKCkgIT0gJ30nKTsKICAgICAgICAgICAgIGlmICghYXRFbmRPZlBhdHRlcm4oKSAm
JiBwZWVrKCkgPT0gJ30nKQogICAgICAgICAgICAgICAgIGNvbnN1bWUoKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKCFtX2VycikKLSAgICAgICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpJ
bnZhbGlkVW5pY29kZUVzY2FwZTsKLSAgICAgICAgICAgIGlmIChtX2VycikKKyAgICAgICAgICAg
IGVsc2UgaWYgKCFoYXNFcnJvcihtX2VycikpCisgICAgICAgICAgICAgICAgbV9lcnIgPSBFcnJv
ckNvZGU6OkludmFsaWRVbmljb2RlRXNjYXBlOworICAgICAgICAgICAgaWYgKGhhc0Vycm9yKG1f
ZXJyKSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAKICAgICAgICAgICAgIHJldHVybiBj
b2RlUG9pbnQ7CkBAIC0xMDUzLDcgKzEwNDksNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIHN0ZDo6
b3B0aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+IHRyeUNvbnN1bWVVbmljb2RlUHJvcGVy
dHlFeHByZXNzaW9uKCkKICAgICB7CiAgICAgICAgIGlmIChhdEVuZE9mUGF0dGVybigpIHx8ICFp
c1VuaWNvZGVQcm9wZXJ0eVZhbHVlRXhwcmVzc2lvbkNoYXIocGVlaygpKSkgewotICAgICAgICAg
ICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6SW52YWxpZFVuaWNvZGVQcm9wZXJ0eUV4cHJlc3Npb247
CisgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29kZTo6SW52YWxpZFVuaWNvZGVQcm9wZXJ0eUV4
cHJlc3Npb247CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAK
QEAgLTEwNjksMjAgKzEwNjUsMjAgQEAgY2xhc3MgUGFyc2VyIHsKICAgICAgICAgICAgIGlmIChj
aCA9PSAnfScpIHsKICAgICAgICAgICAgICAgICBjb25zdW1lKCk7CiAgICAgICAgICAgICAgICAg
aWYgKGVycm9ycykgewotICAgICAgICAgICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpJ
bnZhbGlkVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbjsKKyAgICAgICAgICAgICAgICAgICAgbV9l
cnIgPSBFcnJvckNvZGU6OkludmFsaWRVbmljb2RlUHJvcGVydHlFeHByZXNzaW9uOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgICAgIGlmIChmb3VuZEVxdWFscykgewogICAgICAgICAgICAgICAgICAgICBh
dXRvIHJlc3VsdCA9IHVuaWNvZGVNYXRjaFByb3BlcnR5VmFsdWUodW5pY29kZVByb3BlcnR5TmFt
ZSwgZXhwcmVzc2lvbkJ1aWxkZXIudG9TdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICghcmVzdWx0KQotICAgICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6
SW52YWxpZFVuaWNvZGVQcm9wZXJ0eUV4cHJlc3Npb247CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX2VyciA9IEVycm9yQ29kZTo6SW52YWxpZFVuaWNvZGVQcm9wZXJ0eUV4cHJlc3Npb247CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSB1bmljb2RlTWF0Y2hQcm9wZXJ0eShleHByZXNz
aW9uQnVpbGRlci50b1N0cmluZygpKTsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKLSAg
ICAgICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6SW52YWxpZFVuaWNvZGVQcm9w
ZXJ0eUV4cHJlc3Npb247CisgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpJ
bnZhbGlkVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbjsKICAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgICAgICAgICAgfQogCkBAIC0xMTAwLDE4ICsxMDk2LDE4IEBAIGNsYXNzIFBh
cnNlciB7CiAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbkJ1aWxkZXIuYXBwZW5kKGNoKTsKICAg
ICAgICAgfQogCi0gICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OkludmFsaWRVbmljb2RlUHJv
cGVydHlFeHByZXNzaW9uOworICAgICAgICBtX2VyciA9IEVycm9yQ29kZTo6SW52YWxpZFVuaWNv
ZGVQcm9wZXJ0eUV4cHJlc3Npb247CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgRGVsZWdhdGUmIG1fZGVsZWdhdGU7CiAgICAgdW5zaWduZWQgbV9iYWNrUmVmZXJl
bmNlTGltaXQ7Ci0gICAgWWFyclBhdHRlcm46OkVycm9yQ29kZSBtX2VycjsKKyAgICBFcnJvckNv
ZGUgbV9lcnIgeyBFcnJvckNvZGU6Ok5vRXJyb3IgfTsKICAgICBjb25zdCBDaGFyVHlwZSogbV9k
YXRhOwogICAgIHVuc2lnbmVkIG1fc2l6ZTsKLSAgICB1bnNpZ25lZCBtX2luZGV4OworICAgIHVu
c2lnbmVkIG1faW5kZXggeyAwIH07CiAgICAgYm9vbCBtX2lzVW5pY29kZTsKLSAgICB1bnNpZ25l
ZCBtX3BhcmVudGhlc2VzTmVzdGluZ0RlcHRoOworICAgIHVuc2lnbmVkIG1fcGFyZW50aGVzZXNO
ZXN0aW5nRGVwdGggeyAwIH07CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fY2FwdHVyZUdyb3VwTmFt
ZXM7CiAKICAgICAvLyBEZXJpdmVkIGJ5IGVtcGlyaWNhbCB0ZXN0aW5nIG9mIGNvbXBpbGUgdGlt
ZSBpbiBQQ1JFIGFuZCBXUkVDLgpAQCAtMTE3OSw3ICsxMTc1LDcgQEAgY2xhc3MgUGFyc2VyIHsK
ICAqLwogCiB0ZW1wbGF0ZTxjbGFzcyBEZWxlZ2F0ZT4KLWNvbnN0IGNoYXIqIHBhcnNlKERlbGVn
YXRlJiBkZWxlZ2F0ZSwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIGlzVW5pY29kZSwgdW5z
aWduZWQgYmFja1JlZmVyZW5jZUxpbWl0ID0gcXVhbnRpZnlJbmZpbml0ZSkKK0Vycm9yQ29kZSBw
YXJzZShEZWxlZ2F0ZSYgZGVsZWdhdGUsIGNvbnN0IFN0cmluZyYgcGF0dGVybiwgYm9vbCBpc1Vu
aWNvZGUsIHVuc2lnbmVkIGJhY2tSZWZlcmVuY2VMaW1pdCA9IHF1YW50aWZ5SW5maW5pdGUpCiB7
CiAgICAgaWYgKHBhdHRlcm4uaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBQYXJzZXI8RGVsZWdh
dGUsIExDaGFyPihkZWxlZ2F0ZSwgcGF0dGVybiwgaXNVbmljb2RlLCBiYWNrUmVmZXJlbmNlTGlt
aXQpLnBhcnNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
UGF0dGVybi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAK
aW5kZXggOWFkODYwY2E2Y2UwN2I1NDYxODdlMzJhMjU3NGVjOTIzNThhYTM4Yi4uMjQwYWY3NGNi
ZTYyNTk0OWJkYTUyNzg4NWRjMWQ4NDhhNDYzYzgxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJQYXR0ZXJuLmNwcApAQCAtNDM1LDcgKzQzNSw2IEBAIGNsYXNzIFlhcnJQYXR0
ZXJuQ29uc3RydWN0b3IgewogICAgICAgICA6IG1fcGF0dGVybihwYXR0ZXJuKQogICAgICAgICAs
IG1fY2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3RvcihwYXR0ZXJuLmlnbm9yZUNhc2UoKSwgcGF0dGVy
bi51bmljb2RlKCkgPyBDYW5vbmljYWxNb2RlOjpVbmljb2RlIDogQ2Fub25pY2FsTW9kZTo6VUNT
MikKICAgICAgICAgLCBtX3N0YWNrTGltaXQoc3RhY2tMaW1pdCkKLSAgICAgICAgLCBtX2ludmVy
dFBhcmVudGhldGljYWxBc3NlcnRpb24oZmFsc2UpCiAgICAgewogICAgICAgICBhdXRvIGJvZHkg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKICAgICAgICAgbV9wYXR0
ZXJuLm1fYm9keSA9IGJvZHkuZ2V0KCk7CkBAIC03NjQsMTIgKzc2MywxMiBAQCBjbGFzcyBZYXJy
UGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgbV9hbHRlcm5hdGl2ZSA9IG1fYWx0ZXJuYXRp
dmUtPm1fcGFyZW50LT5hZGROZXdBbHRlcm5hdGl2ZSgpOwogICAgIH0KIAotICAgIFlhcnJQYXR0
ZXJuOjpFcnJvckNvZGUgc2V0dXBBbHRlcm5hdGl2ZU9mZnNldHMoUGF0dGVybkFsdGVybmF0aXZl
KiBhbHRlcm5hdGl2ZSwgdW5zaWduZWQgY3VycmVudENhbGxGcmFtZVNpemUsIHVuc2lnbmVkIGlu
aXRpYWxJbnB1dFBvc2l0aW9uLCB1bnNpZ25lZCYgbmV3Q2FsbEZyYW1lU2l6ZSkgV0FSTl9VTlVT
RURfUkVUVVJOCisgICAgRXJyb3JDb2RlIHNldHVwQWx0ZXJuYXRpdmVPZmZzZXRzKFBhdHRlcm5B
bHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUsIHVuc2lnbmVkIGN1cnJlbnRDYWxsRnJhbWVTaXplLCB1
bnNpZ25lZCBpbml0aWFsSW5wdXRQb3NpdGlvbiwgdW5zaWduZWQmIG5ld0NhbGxGcmFtZVNpemUp
IFdBUk5fVU5VU0VEX1JFVFVSTgogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFpc1NhZmVU
b1JlY3Vyc2UoKSkpCi0gICAgICAgICAgICByZXR1cm4gWWFyclBhdHRlcm46OlRvb01hbnlEaXNq
dW5jdGlvbnM7CisgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2RlOjpUb29NYW55RGlzanVuY3Rp
b25zOwogCi0gICAgICAgIFlhcnJQYXR0ZXJuOjpFcnJvckNvZGUgZXJyb3IgPSBZYXJyUGF0dGVy
bjo6Tm9FcnJvcjsKKyAgICAgICAgRXJyb3JDb2RlIGVycm9yID0gRXJyb3JDb2RlOjpOb0Vycm9y
OwogICAgICAgICBhbHRlcm5hdGl2ZS0+bV9oYXNGaXhlZFNpemUgPSB0cnVlOwogICAgICAgICBD
aGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gY3VycmVudElucHV0UG9zaXRpb24gPSBp
bml0aWFsSW5wdXRQb3NpdGlvbjsKIApAQCAtODAzLDcgKzgwMiw3IEBAIGNsYXNzIFlhcnJQYXR0
ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAgICAgICAgICAgICBDaGVja2VkPHVuc2lnbmVkLCBS
ZWNvcmRPdmVyZmxvdz4gdGVtcENvdW50ID0gdGVybS5xdWFudGl0eU1heENvdW50OwogICAgICAg
ICAgICAgICAgICAgICB0ZW1wQ291bnQgKj0gVTE2X0xFTkdUSCh0ZXJtLnBhdHRlcm5DaGFyYWN0
ZXIpOwogICAgICAgICAgICAgICAgICAgICBpZiAodGVtcENvdW50Lmhhc092ZXJmbG93ZWQoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBZYXJyUGF0dGVybjo6T2Zmc2V0VG9vTGFy
Z2U7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2RlOjpPZmZzZXRUb29M
YXJnZTsKICAgICAgICAgICAgICAgICAgICAgY3VycmVudElucHV0UG9zaXRpb24gKz0gdGVtcENv
dW50OwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBjdXJyZW50
SW5wdXRQb3NpdGlvbiArPSB0ZXJtLnF1YW50aXR5TWF4Q291bnQ7CkBAIC04MzAsNyArODI5LDcg
QEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgICAgICAgICAgaWYgKHRl
cm0ucXVhbnRpdHlNYXhDb3VudCA9PSAxICYmICF0ZXJtLnBhcmVudGhlc2VzLmlzQ29weSkgewog
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFj
ZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlc09uY2U7CiAgICAgICAgICAgICAgICAgICAgIGVy
cm9yID0gc2V0dXBEaXNqdW5jdGlvbk9mZnNldHModGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlv
biwgY3VycmVudENhbGxGcmFtZVNpemUsIGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgp
LCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0Vycm9yKGVycm9yKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICAgICAgICAgICAgICAgICAgLy8gSWYgcXVhbnRp
dHkgaXMgZml4ZWQsIHRoZW4gcHJlLWNoZWNrIGl0cyBtaW5pbXVtIHNpemUuCiAgICAgICAgICAg
ICAgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyRml4ZWRDb3VudCkK
QEAgLTgzOSwxNCArODM4LDE0IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVybS5wYXJlbnRoZXNlcy5pc1Rlcm1pbmFsKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDYWxsRnJhbWVTaXplICs9IFlhcnJTdGFja1NwYWNl
Rm9yQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzVGVybWluYWw7CiAgICAgICAgICAgICAgICAgICAg
IGVycm9yID0gc2V0dXBEaXNqdW5jdGlvbk9mZnNldHModGVybS5wYXJlbnRoZXNlcy5kaXNqdW5j
dGlvbiwgY3VycmVudENhbGxGcmFtZVNpemUsIGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdl
dCgpLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlcnJv
cikKKyAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0Vycm9yKGVycm9yKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICAgICAgICAgICAgICAgICAgdGVybS5pbnB1
dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCk7CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0g
Y3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRDYWxsRnJhbWVTaXplICs9IFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb1BhcmVu
dGhlc2VzOwogICAgICAgICAgICAgICAgICAgICBlcnJvciA9IHNldHVwRGlzanVuY3Rpb25PZmZz
ZXRzKHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJlbnRDYWxsRnJhbWVTaXplLCBj
dXJyZW50SW5wdXRQb3NpdGlvbi51bnNhZmVHZXQoKSwgY3VycmVudENhbGxGcmFtZVNpemUpOwot
ICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIGlmICho
YXNFcnJvcihlcnJvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8vIEZpeGVkIGNvdW50IG9mIDEgY291
bGQgYmUgYWNjZXB0ZWQsIGlmIHRoZXkgaGF2ZSBhIGZpeGVkIHNpemUgKkFORCogaWYgYWxsIGFs
dGVybmF0aXZlcyBhcmUgb2YgdGhlIHNhbWUgbGVuZ3RoLgpAQCAtODU3LDcgKzg1Niw3IEBAIGNs
YXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQ
b3NpdGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpOwogICAgICAgICAgICAg
ICAgIHRlcm0uZnJhbWVMb2NhdGlvbiA9IGN1cnJlbnRDYWxsRnJhbWVTaXplOwogICAgICAgICAg
ICAgICAgIGVycm9yID0gc2V0dXBEaXNqdW5jdGlvbk9mZnNldHModGVybS5wYXJlbnRoZXNlcy5k
aXNqdW5jdGlvbiwgY3VycmVudENhbGxGcmFtZVNpemUgKyBZYXJyU3RhY2tTcGFjZUZvckJhY2tU
cmFja0luZm9QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uLCBjdXJyZW50SW5wdXRQb3NpdGlvbi51bnNh
ZmVHZXQoKSwgY3VycmVudENhbGxGcmFtZVNpemUpOwotICAgICAgICAgICAgICAgIGlmIChlcnJv
cikKKyAgICAgICAgICAgICAgICBpZiAoaGFzRXJyb3IoZXJyb3IpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZXJyb3I7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTg3MSw3ICs4
NzAsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjdXJyZW50SW5wdXRQb3NpdGlv
bi5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFlhcnJQYXR0ZXJuOjpP
ZmZzZXRUb29MYXJnZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2RlOjpPZmZzZXRU
b29MYXJnZTsKICAgICAgICAgfQogCiAgICAgICAgIGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXpl
ID0gKGN1cnJlbnRJbnB1dFBvc2l0aW9uIC0gaW5pdGlhbElucHV0UG9zaXRpb24pLnVuc2FmZUdl
dCgpOwpAQCAtODc5LDEwICs4NzgsMTAgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7
CiAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9CiAKLSAgICBZYXJyUGF0dGVybjo6RXJyb3JD
b2RlIHNldHVwRGlzanVuY3Rpb25PZmZzZXRzKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rp
b24sIHVuc2lnbmVkIGluaXRpYWxDYWxsRnJhbWVTaXplLCB1bnNpZ25lZCBpbml0aWFsSW5wdXRQ
b3NpdGlvbiwgdW5zaWduZWQmIGNhbGxGcmFtZVNpemUpCisgICAgRXJyb3JDb2RlIHNldHVwRGlz
anVuY3Rpb25PZmZzZXRzKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIHVuc2lnbmVk
IGluaXRpYWxDYWxsRnJhbWVTaXplLCB1bnNpZ25lZCBpbml0aWFsSW5wdXRQb3NpdGlvbiwgdW5z
aWduZWQmIGNhbGxGcmFtZVNpemUpCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoIWlzU2Fm
ZVRvUmVjdXJzZSgpKSkKLSAgICAgICAgICAgIHJldHVybiBZYXJyUGF0dGVybjo6VG9vTWFueURp
c2p1bmN0aW9uczsKKyAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGU6OlRvb01hbnlEaXNqdW5j
dGlvbnM7CiAKICAgICAgICAgaWYgKChkaXNqdW5jdGlvbiAhPSBtX3BhdHRlcm4ubV9ib2R5KSAm
JiAoZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLnNpemUoKSA+IDEpKQogICAgICAgICAgICAg
aW5pdGlhbENhbGxGcmFtZVNpemUgKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvQWx0
ZXJuYXRpdmU7CkBAIC04OTAsMTMgKzg4OSwxMyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVj
dG9yIHsKICAgICAgICAgdW5zaWduZWQgbWluaW11bUlucHV0U2l6ZSA9IFVJTlRfTUFYOwogICAg
ICAgICB1bnNpZ25lZCBtYXhpbXVtQ2FsbEZyYW1lU2l6ZSA9IDA7CiAgICAgICAgIGJvb2wgaGFz
Rml4ZWRTaXplID0gdHJ1ZTsKLSAgICAgICAgWWFyclBhdHRlcm46OkVycm9yQ29kZSBlcnJvciA9
IFlhcnJQYXR0ZXJuOjpOb0Vycm9yOworICAgICAgICBFcnJvckNvZGUgZXJyb3IgPSBFcnJvckNv
ZGU6Ok5vRXJyb3I7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBhbHQgPSAwOyBhbHQgPCBkaXNq
dW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXMuc2l6ZSgpOyArK2FsdCkgewogICAgICAgICAgICAgUGF0
dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZl
c1thbHRdLmdldCgpOwogICAgICAgICAgICAgdW5zaWduZWQgY3VycmVudEFsdGVybmF0aXZlQ2Fs
bEZyYW1lU2l6ZTsKICAgICAgICAgICAgIGVycm9yID0gc2V0dXBBbHRlcm5hdGl2ZU9mZnNldHMo
YWx0ZXJuYXRpdmUsIGluaXRpYWxDYWxsRnJhbWVTaXplLCBpbml0aWFsSW5wdXRQb3NpdGlvbiwg
Y3VycmVudEFsdGVybmF0aXZlQ2FsbEZyYW1lU2l6ZSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3Ip
CisgICAgICAgICAgICBpZiAoaGFzRXJyb3IoZXJyb3IpKQogICAgICAgICAgICAgICAgIHJldHVy
biBlcnJvcjsKICAgICAgICAgICAgIG1pbmltdW1JbnB1dFNpemUgPSBzdGQ6Om1pbihtaW5pbXVt
SW5wdXRTaXplLCBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSk7CiAgICAgICAgICAgICBtYXhp
bXVtQ2FsbEZyYW1lU2l6ZSA9IHN0ZDo6bWF4KG1heGltdW1DYWxsRnJhbWVTaXplLCBjdXJyZW50
QWx0ZXJuYXRpdmVDYWxsRnJhbWVTaXplKTsKQEAgLTkxNSwxNCArOTE0LDExIEBAIGNsYXNzIFlh
cnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQogCi0g
ICAgY29uc3QgY2hhciogc2V0dXBPZmZzZXRzKCkKKyAgICBFcnJvckNvZGUgc2V0dXBPZmZzZXRz
KCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBZYXJyIHNob3VsZCBub3QgdXNlIHRoZSBzdGFj
ayB0byBoYW5kbGUgc3VicGF0dGVybnMgKHJkYXI6Ly9wcm9ibGVtLzI2NDM2MzE0KS4KICAgICAg
ICAgdW5zaWduZWQgaWdub3JlZENhbGxGcmFtZVNpemU7Ci0gICAgICAgIFlhcnJQYXR0ZXJuOjpF
cnJvckNvZGUgZXJyb3IgPSBzZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyhtX3BhdHRlcm4ubV9ib2R5
LCAwLCAwLCBpZ25vcmVkQ2FsbEZyYW1lU2l6ZSk7Ci0gICAgICAgIGlmIChlcnJvcikKLSAgICAg
ICAgICAgIHJldHVybiBZYXJyUGF0dGVybjo6ZXJyb3JNZXNzYWdlKGVycm9yKTsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyht
X3BhdHRlcm4ubV9ib2R5LCAwLCAwLCBpZ25vcmVkQ2FsbEZyYW1lU2l6ZSk7CiAgICAgfQogCiAg
ICAgLy8gVGhpcyBvcHRpbWl6YXRpb24gaWRlbnRpZmllcyBzZXRzIG9mIHBhcmVudGhlc2VzIHRo
YXQgd2Ugd2lsbCBuZXZlciBuZWVkIHRvIGJhY2t0cmFjay4KQEAgLTEwODQsNDggKzEwODAsMjEg
QEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgQ2hhcmFjdGVyQ2xhc3NDb25z
dHJ1Y3RvciBtX2NoYXJhY3RlckNsYXNzQ29uc3RydWN0b3I7CiAgICAgdm9pZCogbV9zdGFja0xp
bWl0OwogICAgIGJvb2wgbV9pbnZlcnRDaGFyYWN0ZXJDbGFzczsKLSAgICBib29sIG1faW52ZXJ0
UGFyZW50aGV0aWNhbEFzc2VydGlvbjsKKyAgICBib29sIG1faW52ZXJ0UGFyZW50aGV0aWNhbEFz
c2VydGlvbiB7IGZhbHNlIH07CiB9OwogCi1jb25zdCBjaGFyKiBZYXJyUGF0dGVybjo6ZXJyb3JN
ZXNzYWdlKFlhcnJQYXR0ZXJuOjpFcnJvckNvZGUgZXJyb3IpCi17Ci0jZGVmaW5lIFJFR0VYUF9F
UlJPUl9QUkVGSVggIkludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiAiCi0gICAgLy8gVGhlIG9y
ZGVyIG9mIHRoaXMgYXJyYXkgbXVzdCBtYXRjaCB0aGUgRXJyb3JDb2RlIGVudW0uCi0gICAgc3Rh
dGljIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZXNbTnVtYmVyT2ZFcnJvckNvZGVzXSA9IHsKLSAg
ICAgICAgbnVsbHB0ciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIE5vRXJyb3IKLSAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJ
WCAicmVndWxhciBleHByZXNzaW9uIHRvbyBsYXJnZSIsICAgICAgICAgICAgICAgICAgIC8vIFBh
dHRlcm5Ub29MYXJnZSAgICAgCi0gICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggIm51bWJlcnMg
b3V0IG9mIG9yZGVyIGluIHt9IHF1YW50aWZpZXIiLCAgICAgICAgICAvLyBRdWFudGlmaWVyT3V0
T2ZPcmRlcgotICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJub3RoaW5nIHRvIHJlcGVhdCIs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUXVhbnRpZmllcldpdGhvdXRBdG9tCi0g
ICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggIm51bWJlciB0b28gbGFyZ2UgaW4ge30gcXVhbnRp
ZmllciIsICAgICAgICAgICAgICAvLyBRdWFudGlmaWVyVG9vTGFyZ2UKLSAgICAgICAgUkVHRVhQ
X0VSUk9SX1BSRUZJWCAibWlzc2luZyApIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIE1pc3NpbmdQYXJlbnRoZXNlcwotICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklY
ICJ1bm1hdGNoZWQgcGFyZW50aGVzZXMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFy
ZW50aGVzZXNVbm1hdGNoZWQKLSAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAidW5yZWNvZ25p
emVkIGNoYXJhY3RlciBhZnRlciAoPyIsICAgICAgICAgICAgICAgIC8vIFBhcmVudGhlc2VzVHlw
ZUludmFsaWQKLSAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAiaW52YWxpZCBncm91cCBzcGVj
aWZpZXIgbmFtZSIsICAgICAgICAgICAgICAgICAgIC8vIEludmFsaWRHcm91cE5hbWUKLSAgICAg
ICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAiZHVwbGljYXRlIGdyb3VwIHNwZWNpZmllciBuYW1lIiwg
ICAgICAgICAgICAgICAgIC8vIER1cGxpY2F0ZUdyb3VwTmFtZQotICAgICAgICBSRUdFWFBfRVJS
T1JfUFJFRklYICJtaXNzaW5nIHRlcm1pbmF0aW5nIF0gZm9yIGNoYXJhY3RlciBjbGFzcyIsICAg
ICAgLy8gQ2hhcmFjdGVyQ2xhc3NVbm1hdGNoZWQKLSAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJ
WCAicmFuZ2Ugb3V0IG9mIG9yZGVyIGluIGNoYXJhY3RlciBjbGFzcyIsICAgICAgICAgIC8vIENo
YXJhY3RlckNsYXNzT3V0T2ZPcmRlcgotICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJcXCBh
dCBlbmQgb2YgcGF0dGVybiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXNjYXBlVW50
ZXJtaW5hdGVkCi0gICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggImludmFsaWQgdW5pY29kZSB7
fSBlc2NhcGUiLCAgICAgICAgICAgICAgICAgICAgICAvLyBJbnZhbGlkVW5pY29kZUVzY2FwZQot
ICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJpbnZhbGlkIGJhY2tyZWZlcmVuY2UgZm9yIHVu
aWNvZGUgcGF0dGVybiIsICAgICAgLy8gSW52YWxpZEJhY2tyZWZlcmVuY2UKLSAgICAgICAgUkVH
RVhQX0VSUk9SX1BSRUZJWCAiaW52YWxpZCBlc2NhcGVkIGNoYXJhY3RlciBmb3IgdW5pY29kZSBw
YXR0ZXJuIiwgIC8vIEludmFsaWRJZGVudGl0eUVzY2FwZQotICAgICAgICBSRUdFWFBfRVJST1Jf
UFJFRklYICJpbnZhbGlkIHByb3BlcnR5IGV4cHJlc3Npb24iLCAgICAgICAgICAgICAgICAgICAg
Ly8gSW52YWxpZFVuaWNvZGVQcm9wZXJ0eUV4cHJlc3Npb24KLSAgICAgICAgUkVHRVhQX0VSUk9S
X1BSRUZJWCAidG9vIG1hbnkgbmVzdGVkIGRpc2p1bmN0aW9ucyIsICAgICAgICAgICAgICAgICAg
IC8vIFRvb01hbnlEaXNqdW5jdGlvbnMKLSAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAicGF0
dGVybiBleGNlZWRzIHN0cmluZyBsZW5ndGggbGltaXRzIiwgICAgICAgICAgIC8vIE9mZnNldFRv
b0xhcmdlCi0gICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggImludmFsaWQgZmxhZ3MiICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnZhbGlkUmVndWxhckV4cHJlc3Npb25G
bGFncwotICAgIH07Ci0KLSAgICByZXR1cm4gZXJyb3JNZXNzYWdlc1tlcnJvcl07Ci19Ci0KLWNv
bnN0IGNoYXIqIFlhcnJQYXR0ZXJuOjpjb21waWxlKGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmlu
Zywgdm9pZCogc3RhY2tMaW1pdCkKK0Vycm9yQ29kZSBZYXJyUGF0dGVybjo6Y29tcGlsZShjb25z
dCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIHZvaWQqIHN0YWNrTGltaXQpCiB7CiAgICAgWWFyclBh
dHRlcm5Db25zdHJ1Y3RvciBjb25zdHJ1Y3RvcigqdGhpcywgc3RhY2tMaW1pdCk7CiAKICAgICBp
ZiAobV9mbGFncyA9PSBJbnZhbGlkRmxhZ3MpCi0gICAgICAgIHJldHVybiBlcnJvck1lc3NhZ2Uo
SW52YWxpZFJlZ3VsYXJFeHByZXNzaW9uRmxhZ3MpOworICAgICAgICByZXR1cm4gRXJyb3JDb2Rl
OjpJbnZhbGlkUmVndWxhckV4cHJlc3Npb25GbGFnczsKIAotICAgIGlmIChjb25zdCBjaGFyKiBl
cnJvciA9IHBhcnNlKGNvbnN0cnVjdG9yLCBwYXR0ZXJuU3RyaW5nLCB1bmljb2RlKCkpKQotICAg
ICAgICByZXR1cm4gZXJyb3I7CisgICAgeworICAgICAgICBFcnJvckNvZGUgZXJyb3IgPSBwYXJz
ZShjb25zdHJ1Y3RvciwgcGF0dGVyblN0cmluZywgdW5pY29kZSgpKTsKKyAgICAgICAgaWYgKGhh
c0Vycm9yKGVycm9yKSkKKyAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CiAgICAgCiAg
ICAgLy8gSWYgdGhlIHBhdHRlcm4gY29udGFpbnMgaWxsZWdhbCBiYWNrcmVmZXJlbmNlcyByZXNl
dCAmIHJlcGFyc2UuCiAgICAgLy8gUXVvdGluZyBOZXRzY2FwZSdzICJXaGF0J3MgbmV3IGluIEph
dmFTY3JpcHQgMS4yIiwKQEAgLTExMzMsNTIgKzExMDIsMzkgQEAgY29uc3QgY2hhciogWWFyclBh
dHRlcm46OmNvbXBpbGUoY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCB2b2lkKiBzdGFja0xp
bWl0KQogICAgIC8vICAgICAgIGluIFwjLCB0aGUgXCMgaXMgdGFrZW4gYXMgYW4gb2N0YWwgZXNj
YXBlIGFzIGRlc2NyaWJlZCBpbiB0aGUgbmV4dCByb3cuIgogICAgIGlmIChjb250YWluc0lsbGVn
YWxCYWNrUmVmZXJlbmNlKCkpIHsKICAgICAgICAgaWYgKHVuaWNvZGUoKSkKLSAgICAgICAgICAg
IHJldHVybiBlcnJvck1lc3NhZ2UoSW52YWxpZEJhY2tyZWZlcmVuY2UpOworICAgICAgICAgICAg
cmV0dXJuIEVycm9yQ29kZTo6SW52YWxpZEJhY2tyZWZlcmVuY2U7CiAKICAgICAgICAgdW5zaWdu
ZWQgbnVtU3VicGF0dGVybnMgPSBtX251bVN1YnBhdHRlcm5zOwogCiAgICAgICAgIGNvbnN0cnVj
dG9yLnJlc2V0KCk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICBjb25zdCBjaGFyKiBl
cnJvciA9Ci0jZW5kaWYKLSAgICAgICAgICAgIHBhcnNlKGNvbnN0cnVjdG9yLCBwYXR0ZXJuU3Ry
aW5nLCB1bmljb2RlKCksIG51bVN1YnBhdHRlcm5zKTsKLQotICAgICAgICBBU1NFUlQoIWVycm9y
KTsKKyAgICAgICAgRXJyb3JDb2RlIGVycm9yID0gcGFyc2UoY29uc3RydWN0b3IsIHBhdHRlcm5T
dHJpbmcsIHVuaWNvZGUoKSwgbnVtU3VicGF0dGVybnMpOworICAgICAgICBBU1NFUlRfVU5VU0VE
KGVycm9yLCAhaGFzRXJyb3IoZXJyb3IpKTsKICAgICAgICAgQVNTRVJUKG51bVN1YnBhdHRlcm5z
ID09IG1fbnVtU3VicGF0dGVybnMpOwogICAgIH0KIAogICAgIGNvbnN0cnVjdG9yLmNoZWNrRm9y
VGVybWluYWxQYXJlbnRoZXNlcygpOwogICAgIGNvbnN0cnVjdG9yLm9wdGltaXplRG90U3Rhcldy
YXBwZWRFeHByZXNzaW9ucygpOwogICAgIGNvbnN0cnVjdG9yLm9wdGltaXplQk9MKCk7Ci0gICAg
ICAgIAotICAgIGlmIChjb25zdCBjaGFyKiBlcnJvciA9IGNvbnN0cnVjdG9yLnNldHVwT2Zmc2V0
cygpKQotICAgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICB7CisgICAgICAgIEVycm9yQ29kZSBl
cnJvciA9IGNvbnN0cnVjdG9yLnNldHVwT2Zmc2V0cygpOworICAgICAgICBpZiAoaGFzRXJyb3Io
ZXJyb3IpKQorICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KIAogICAgIGlmIChPcHRp
b25zOjpkdW1wQ29tcGlsZWRSZWdFeHBQYXR0ZXJucygpKQogICAgICAgICBkdW1wUGF0dGVybihw
YXR0ZXJuU3RyaW5nKTsKIAotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBFcnJvckNv
ZGU6Ok5vRXJyb3I7CiB9CiAKLVlhcnJQYXR0ZXJuOjpZYXJyUGF0dGVybihjb25zdCBTdHJpbmcm
IHBhdHRlcm4sIFJlZ0V4cEZsYWdzIGZsYWdzLCBjb25zdCBjaGFyKiogZXJyb3IsIHZvaWQqIHN0
YWNrTGltaXQpCitZYXJyUGF0dGVybjo6WWFyclBhdHRlcm4oY29uc3QgU3RyaW5nJiBwYXR0ZXJu
LCBSZWdFeHBGbGFncyBmbGFncywgRXJyb3JDb2RlKiBlcnJvciwgdm9pZCogc3RhY2tMaW1pdCkK
ICAgICA6IG1fY29udGFpbnNCYWNrcmVmZXJlbmNlcyhmYWxzZSkKICAgICAsIG1fY29udGFpbnNC
T0woZmFsc2UpCiAgICAgLCBtX2NvbnRhaW5zVW5zaWduZWRMZW5ndGhQYXR0ZXJuKGZhbHNlKQog
ICAgICwgbV9oYXNDb3BpZWRQYXJlblN1YmV4cHJlc3Npb25zKGZhbHNlKQogICAgICwgbV9zYXZl
SW5pdGlhbFN0YXJ0VmFsdWUoZmFsc2UpCiAgICAgLCBtX2ZsYWdzKGZsYWdzKQotICAgICwgbV9u
dW1TdWJwYXR0ZXJucygwKQotICAgICwgbV9tYXhCYWNrUmVmZXJlbmNlKDApCi0gICAgLCBhbnlj
aGFyQ2FjaGVkKDApCi0gICAgLCBuZXdsaW5lQ2FjaGVkKDApCi0gICAgLCBkaWdpdHNDYWNoZWQo
MCkKLSAgICAsIHNwYWNlc0NhY2hlZCgwKQotICAgICwgd29yZGNoYXJDYWNoZWQoMCkKLSAgICAs
IHdvcmRVbmljb2RlSWdub3JlQ2FzZUNoYXJDYWNoZWQoMCkKLSAgICAsIG5vbmRpZ2l0c0NhY2hl
ZCgwKQotICAgICwgbm9uc3BhY2VzQ2FjaGVkKDApCi0gICAgLCBub253b3JkY2hhckNhY2hlZCgw
KQotICAgICwgbm9ud29yZFVuaWNvZGVJZ25vcmVDYXNlY2hhckNhY2hlZCgwKQogewogICAgICpl
cnJvciA9IGNvbXBpbGUocGF0dGVybiwgc3RhY2tMaW1pdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyclBhdHRlcm4uaAppbmRleCBhMGVlZDkwM2FiNWQyNjk2ODc3MzBlMGFlODVm
OWI3NzAyYjAxNGRiLi43ZDg2NTQ2NzUxMGNiYjk5MjViZDc3NWE1MjcxMTAwYzc2ZGE5N2Y4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKQEAgLTI3LDYgKzI3LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUmVnRXhwS2V5LmgiCisjaW5jbHVkZSAiWWFy
ckVycm9yQ29kZS5oIgogI2luY2x1ZGUgIllhcnJVbmljb2RlUHJvcGVydGllcy5oIgogI2luY2x1
ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBA
IC0zNTEsMzMgKzM1Miw3IEBAIHN0cnVjdCBUZXJtQ2hhaW4gewogCiAKIHN0cnVjdCBZYXJyUGF0
dGVybiB7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgWWFyclBhdHRlcm4oY29uc3QgU3RyaW5nJiBw
YXR0ZXJuLCBSZWdFeHBGbGFncywgY29uc3QgY2hhcioqIGVycm9yLCB2b2lkKiBzdGFja0xpbWl0
ID0gbnVsbHB0cik7Ci0KLSAgICBlbnVtIEVycm9yQ29kZSB7Ci0gICAgICAgIE5vRXJyb3IsCi0g
ICAgICAgIFBhdHRlcm5Ub29MYXJnZSwKLSAgICAgICAgUXVhbnRpZmllck91dE9mT3JkZXIsCi0g
ICAgICAgIFF1YW50aWZpZXJXaXRob3V0QXRvbSwKLSAgICAgICAgUXVhbnRpZmllclRvb0xhcmdl
LAotICAgICAgICBNaXNzaW5nUGFyZW50aGVzZXMsCi0gICAgICAgIFBhcmVudGhlc2VzVW5tYXRj
aGVkLAotICAgICAgICBQYXJlbnRoZXNlc1R5cGVJbnZhbGlkLAotICAgICAgICBJbnZhbGlkR3Jv
dXBOYW1lLAotICAgICAgICBEdXBsaWNhdGVHcm91cE5hbWUsCi0gICAgICAgIENoYXJhY3RlckNs
YXNzVW5tYXRjaGVkLAotICAgICAgICBDaGFyYWN0ZXJDbGFzc091dE9mT3JkZXIsCi0gICAgICAg
IEVzY2FwZVVudGVybWluYXRlZCwKLSAgICAgICAgSW52YWxpZFVuaWNvZGVFc2NhcGUsCi0gICAg
ICAgIEludmFsaWRCYWNrcmVmZXJlbmNlLAotICAgICAgICBJbnZhbGlkSWRlbnRpdHlFc2NhcGUs
Ci0gICAgICAgIEludmFsaWRVbmljb2RlUHJvcGVydHlFeHByZXNzaW9uLAotICAgICAgICBUb29N
YW55RGlzanVuY3Rpb25zLAotICAgICAgICBPZmZzZXRUb29MYXJnZSwKLSAgICAgICAgSW52YWxp
ZFJlZ3VsYXJFeHByZXNzaW9uRmxhZ3MsCi0gICAgICAgIE51bWJlck9mRXJyb3JDb2RlcwotICAg
IH07Ci0gICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGNvbnN0IGNoYXIqIGVycm9y
TWVzc2FnZShFcnJvckNvZGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFlhcnJQYXR0ZXJuKGNv
bnN0IFN0cmluZyYgcGF0dGVybiwgUmVnRXhwRmxhZ3MsIEVycm9yQ29kZSosIHZvaWQqIHN0YWNr
TGltaXQgPSBudWxscHRyKTsKIAogICAgIHZvaWQgcmVzZXQoKQogICAgIHsKQEAgLTM5MSwxNiAr
MzY2LDE2IEBAIHN0cnVjdCBZYXJyUGF0dGVybiB7CiAgICAgICAgIG1faGFzQ29waWVkUGFyZW5T
dWJleHByZXNzaW9ucyA9IGZhbHNlOwogICAgICAgICBtX3NhdmVJbml0aWFsU3RhcnRWYWx1ZSA9
IGZhbHNlOwogCi0gICAgICAgIGFueWNoYXJDYWNoZWQgPSAwOwotICAgICAgICBuZXdsaW5lQ2Fj
aGVkID0gMDsKLSAgICAgICAgZGlnaXRzQ2FjaGVkID0gMDsKLSAgICAgICAgc3BhY2VzQ2FjaGVk
ID0gMDsKLSAgICAgICAgd29yZGNoYXJDYWNoZWQgPSAwOwotICAgICAgICB3b3JkVW5pY29kZUln
bm9yZUNhc2VDaGFyQ2FjaGVkID0gMDsKLSAgICAgICAgbm9uZGlnaXRzQ2FjaGVkID0gMDsKLSAg
ICAgICAgbm9uc3BhY2VzQ2FjaGVkID0gMDsKLSAgICAgICAgbm9ud29yZGNoYXJDYWNoZWQgPSAw
OwotICAgICAgICBub253b3JkVW5pY29kZUlnbm9yZUNhc2VjaGFyQ2FjaGVkID0gMDsKKyAgICAg
ICAgYW55Y2hhckNhY2hlZCA9IG51bGxwdHI7CisgICAgICAgIG5ld2xpbmVDYWNoZWQgPSBudWxs
cHRyOworICAgICAgICBkaWdpdHNDYWNoZWQgPSBudWxscHRyOworICAgICAgICBzcGFjZXNDYWNo
ZWQgPSBudWxscHRyOworICAgICAgICB3b3JkY2hhckNhY2hlZCA9IG51bGxwdHI7CisgICAgICAg
IHdvcmRVbmljb2RlSWdub3JlQ2FzZUNoYXJDYWNoZWQgPSBudWxscHRyOworICAgICAgICBub25k
aWdpdHNDYWNoZWQgPSBudWxscHRyOworICAgICAgICBub25zcGFjZXNDYWNoZWQgPSBudWxscHRy
OworICAgICAgICBub253b3JkY2hhckNhY2hlZCA9IG51bGxwdHI7CisgICAgICAgIG5vbndvcmRV
bmljb2RlSWdub3JlQ2FzZWNoYXJDYWNoZWQgPSBudWxscHRyOwogICAgICAgICB1bmljb2RlUHJv
cGVydGllc0NhY2hlZC5jbGVhcigpOwogCiAgICAgICAgIG1fZGlzanVuY3Rpb25zLmNsZWFyKCk7
CkBAIC01MzAsOSArNTA1LDkgQEAgc3RydWN0IFlhcnJQYXR0ZXJuIHsKICAgICBib29sIG1faGFz
Q29waWVkUGFyZW5TdWJleHByZXNzaW9ucyA6IDE7CiAgICAgYm9vbCBtX3NhdmVJbml0aWFsU3Rh
cnRWYWx1ZSA6IDE7CiAgICAgUmVnRXhwRmxhZ3MgbV9mbGFnczsKLSAgICB1bnNpZ25lZCBtX251
bVN1YnBhdHRlcm5zOwotICAgIHVuc2lnbmVkIG1fbWF4QmFja1JlZmVyZW5jZTsKLSAgICB1bnNp
Z25lZCBtX2luaXRpYWxTdGFydFZhbHVlRnJhbWVMb2NhdGlvbjsKKyAgICB1bnNpZ25lZCBtX251
bVN1YnBhdHRlcm5zIHsgMCB9OworICAgIHVuc2lnbmVkIG1fbWF4QmFja1JlZmVyZW5jZSB7IDAg
fTsKKyAgICB1bnNpZ25lZCBtX2luaXRpYWxTdGFydFZhbHVlRnJhbWVMb2NhdGlvbiB7IDAgfTsK
ICAgICBQYXR0ZXJuRGlzanVuY3Rpb24qIG1fYm9keTsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPFBhdHRlcm5EaXNqdW5jdGlvbj4sIDQ+IG1fZGlzanVuY3Rpb25zOwogICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+PiBtX3VzZXJDaGFyYWN0ZXJDbGFzc2VzOwpA
QCAtNTQwLDE4ICs1MTUsMTggQEAgc3RydWN0IFlhcnJQYXR0ZXJuIHsKICAgICBIYXNoTWFwPFN0
cmluZywgdW5zaWduZWQ+IG1fbmFtZWRHcm91cFRvUGFyZW5JbmRleDsKIAogcHJpdmF0ZToKLSAg
ICBjb25zdCBjaGFyKiBjb21waWxlKGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZywgdm9pZCog
c3RhY2tMaW1pdCk7Ci0KLSAgICBDaGFyYWN0ZXJDbGFzcyogYW55Y2hhckNhY2hlZDsKLSAgICBD
aGFyYWN0ZXJDbGFzcyogbmV3bGluZUNhY2hlZDsKLSAgICBDaGFyYWN0ZXJDbGFzcyogZGlnaXRz
Q2FjaGVkOwotICAgIENoYXJhY3RlckNsYXNzKiBzcGFjZXNDYWNoZWQ7Ci0gICAgQ2hhcmFjdGVy
Q2xhc3MqIHdvcmRjaGFyQ2FjaGVkOwotICAgIENoYXJhY3RlckNsYXNzKiB3b3JkVW5pY29kZUln
bm9yZUNhc2VDaGFyQ2FjaGVkOwotICAgIENoYXJhY3RlckNsYXNzKiBub25kaWdpdHNDYWNoZWQ7
Ci0gICAgQ2hhcmFjdGVyQ2xhc3MqIG5vbnNwYWNlc0NhY2hlZDsKLSAgICBDaGFyYWN0ZXJDbGFz
cyogbm9ud29yZGNoYXJDYWNoZWQ7Ci0gICAgQ2hhcmFjdGVyQ2xhc3MqIG5vbndvcmRVbmljb2Rl
SWdub3JlQ2FzZWNoYXJDYWNoZWQ7CisgICAgRXJyb3JDb2RlIGNvbXBpbGUoY29uc3QgU3RyaW5n
JiBwYXR0ZXJuU3RyaW5nLCB2b2lkKiBzdGFja0xpbWl0KTsKKworICAgIENoYXJhY3RlckNsYXNz
KiBhbnljaGFyQ2FjaGVkIHsgbnVsbHB0ciB9OworICAgIENoYXJhY3RlckNsYXNzKiBuZXdsaW5l
Q2FjaGVkIHsgbnVsbHB0ciB9OworICAgIENoYXJhY3RlckNsYXNzKiBkaWdpdHNDYWNoZWQgeyBu
dWxscHRyIH07CisgICAgQ2hhcmFjdGVyQ2xhc3MqIHNwYWNlc0NhY2hlZCB7IG51bGxwdHIgfTsK
KyAgICBDaGFyYWN0ZXJDbGFzcyogd29yZGNoYXJDYWNoZWQgeyBudWxscHRyIH07CisgICAgQ2hh
cmFjdGVyQ2xhc3MqIHdvcmRVbmljb2RlSWdub3JlQ2FzZUNoYXJDYWNoZWQgeyBudWxscHRyIH07
CisgICAgQ2hhcmFjdGVyQ2xhc3MqIG5vbmRpZ2l0c0NhY2hlZCB7IG51bGxwdHIgfTsKKyAgICBD
aGFyYWN0ZXJDbGFzcyogbm9uc3BhY2VzQ2FjaGVkIHsgbnVsbHB0ciB9OworICAgIENoYXJhY3Rl
ckNsYXNzKiBub253b3JkY2hhckNhY2hlZCB7IG51bGxwdHIgfTsKKyAgICBDaGFyYWN0ZXJDbGFz
cyogbm9ud29yZFVuaWNvZGVJZ25vcmVDYXNlY2hhckNhY2hlZCB7IG51bGxwdHIgfTsKICAgICBI
YXNoTWFwPHVuc2lnbmVkLCBDaGFyYWN0ZXJDbGFzcyo+IHVuaWNvZGVQcm9wZXJ0aWVzQ2FjaGVk
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclN5bnRh
eENoZWNrZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclN5bnRheENoZWNr
ZXIuY3BwCmluZGV4IDAyZmViYzc4OWU5YWQzOGIyZDU4YjA0NTUyMjViZGEyYmVhNWRkODIuLjlm
MDVmMjI4NTI1MzM5MGZhZDY0ZjNlNDA1NzYwMmM3NDA4Y2JmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJTeW50YXhDaGVja2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tlci5jcHAKQEAgLTUzLDcgKzUzLDcg
QEAgY2xhc3MgU3ludGF4Q2hlY2tlciB7CiAgICAgdm9pZCBkaXNqdW5jdGlvbigpIHt9CiB9Owog
Ci1jb25zdCBjaGFyKiBjaGVja1N5bnRheChjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGNvbnN0IFN0
cmluZyYgZmxhZ3MpCitFcnJvckNvZGUgY2hlY2tTeW50YXgoY29uc3QgU3RyaW5nJiBwYXR0ZXJu
LCBjb25zdCBTdHJpbmcmIGZsYWdzKQogewogICAgIFN5bnRheENoZWNrZXIgc3ludGF4Q2hlY2tl
cjsKICAgICByZXR1cm4gcGFyc2Uoc3ludGF4Q2hlY2tlciwgcGF0dGVybiwgZmxhZ3MuY29udGFp
bnMoJ3UnKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3lu
dGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclN5bnRheENoZWNr
ZXIuaAppbmRleCAyZTJlOWJjZmI4NzQ2NjIyYmE0ZjRiZGFiMDZjZTE5N2M3OWFhYjE0Li44NmRh
ZjM4YmNiYjIwOGUyMTlmMjA0MDlkNGJjN2RhYjhkZjU1YTg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJTeW50YXhDaGVja2VyLmgKQEAgLTI1LDEwICsyNSwxMSBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIllhcnJFcnJvckNvZGUuaCIKICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJyIHsK
IAotY29uc3QgY2hhciogY2hlY2tTeW50YXgoY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBjb25zdCBT
dHJpbmcmIGZsYWdzKTsKK0Vycm9yQ29kZSBjaGVja1N5bnRheChjb25zdCBTdHJpbmcmIHBhdHRl
cm4sIGNvbnN0IFN0cmluZyYgZmxhZ3MpOwogCiB9fSAvLyBKU0M6OllhcnIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwCmluZGV4
IGUzNTFlMTdkOWVhNzY0YjQ2OGRkZmY2NTNhOGVkMDZjNTEyNWVhODQuLmU3ODdmNWEyNzJmNTYz
OTViMjM3YzZiZDZjZmNlMGJhYjE1NDk4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcApAQCAtMzQ4LDggKzM0OCw3IEBA
IFVSTEZpbHRlclBhcnNlcjo6UGFyc2VTdGF0dXMgVVJMRmlsdGVyUGFyc2VyOjphZGRQYXR0ZXJu
KGNvbnN0IFN0cmluZyYgcGF0dGVybiwKIAogICAgIFBhcnNlU3RhdHVzIHN0YXR1cyA9IE9rOwog
ICAgIFBhdHRlcm5QYXJzZXIgcGF0dGVyblBhcnNlcihwYXR0ZXJuSXNDYXNlU2Vuc2l0aXZlKTsK
LSAgICBTdHJpbmcgZXJyb3IgPSBTdHJpbmcoSlNDOjpZYXJyOjpwYXJzZShwYXR0ZXJuUGFyc2Vy
LCBwYXR0ZXJuLCBmYWxzZSwgMCkpOwotICAgIGlmIChlcnJvci5pc051bGwoKSkKKyAgICBpZiAo
SlNDOjpZYXJyOjpwYXJzZShwYXR0ZXJuUGFyc2VyLCBwYXR0ZXJuLCBmYWxzZSwgMCkgPT0gWWFy
cjo6RXJyb3JDb2RlOjpOb0Vycm9yKQogICAgICAgICBwYXR0ZXJuUGFyc2VyLmZpbmFsaXplKHBh
dHRlcm5JZCwgbV9jb21iaW5lZFVSTEZpbHRlcnMpOwogICAgIGVsc2UKICAgICAgICAgc3RhdHVz
ID0gWWFyckVycm9yOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329755</attachid>
            <date>2017-12-19 04:30:43 -0800</date>
            <delta_ts>2017-12-19 09:41:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180966-20171219213042.patch</filename>
            <type>text/plain</type>
            <size>59014</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZDIwMTFlMThhMDQ1NWYxZDExYzllODFlN2YwMmJhOTk5ODBlNGUwLi41NWNkMmQ5NzAwYjM3M2Ri
NzU2NDlkMTBmOTUxZDdjYzVkYThiYjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MSBAQAorMjAxNy0xMi0xOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbWUFSUl0gWWFyciBzaG91bGQgcmV0dXJuIEVycm9yQ29kZSBpbnN0
ZWFkIG9mIGVycm9yIG1lc3NhZ2VzIChjb25zdCBjaGFyKikKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDk2NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgWWFyciByZXR1cm5zIGNvbnN0
IGNoYXIqYCB0byBwb2ludCBhbiBlcnJvciBtZXNzYWdlLiBCdXQgaXQgaXMKKyAgICAgICAgZWFz
aWVyIHRvIGhhbmRsZSBlcnJvciBzdGF0dXMgdGhhdCBZYXJyIHJldHVybnMgYW4gZXJyb3IgY29k
ZSBpbnN0ZWFkIG9mCisgICAgICAgIGBjb25zdCBjaGFyKmAuCisKKyAgICAgICAgSW4gdGhpcyBw
YXRjaCwgd2UgaW50cm9kdWNlIFlhcnI6OkVycm9yQ29kZS4gWWFyciByZXR1cm5zIGl0IGluc3Rl
YWQgb2YKKyAgICAgICAgYGNvbnN0IGNoYXIqYC4gYHN0ZDo6ZXhwZWN0ZWQ8dm9pZCwgWWFycjo6
RXJyb3JDb2RlPmAgd291bGQgYmUgYXBwcm9wcmlhdGUKKyAgICAgICAgZm9yIHRoZSBZYXJyIEFQ
SSBpbnRlcmZhY2UuIEJ1dCBpdCByZXF1aXJlcyBzdWJzdGFudGlhbCBjaGFuZ2VzIHJlbW92aW5n
CisgICAgICAgIEVycm9yQ29kZTo6Tm9FcnJvciwgc28gdGhpcyBwYXRjaCBqdXN0IHVzZXMgdGhl
IGN1cnJlbnQgWWFycjo6RXJyb3JDb2RlIGFzCisgICAgICAgIGEgZmlyc3Qgc3RlcC4KKworICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRp
ZXMuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpmaW5k
TWFnaWNDb21tZW50KToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAo
SlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVSZWdFeHApOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmVz
c2lvbik6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlUmVnRXhwKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5j
cHA6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6UmVnRXhwKToKKyAgICAgICAgKEpTQzo6UmVnRXhw
OjpieXRlQ29kZUNvbXBpbGVJZk5lY2Vzc2FyeSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y29t
cGlsZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y29tcGlsZU1hdGNoT25seSk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiB5YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb246OlByaXZhdGU6OlByaXZh
dGUpOgorICAgICAgICAoSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbjo6UHJpdmF0ZTo6Y29t
cGlsZSk6CisgICAgICAgICogeWFyci9ZYXJyRXJyb3JDb2RlLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OllhcnI6OmVycm9yTWVzc2FnZSk6CisgICAgICAgICogeWFyci9ZYXJyRXJyb3JDb2Rl
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJTeW50YXhDaGVj
a2VyLmguCisgICAgICAgIChKU0M6OllhcnI6Omhhc0Vycm9yKToKKyAgICAgICAgKiB5YXJyL1lh
cnJQYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6WWFycjo6UGFyc2VyOjpDaGFyYWN0ZXJDbGFzc1Bh
cnNlckRlbGVnYXRlOjpDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVnYXRlKToKKyAgICAgICAgKEpT
Qzo6WWFycjo6UGFyc2VyOjpDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVnYXRlOjphdG9tUGF0dGVy
bkNoYXJhY3Rlcik6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6UGFyc2VyKToKKyAgICAg
ICAgKEpTQzo6WWFycjo6UGFyc2VyOjppc0lkZW50aXR5RXNjYXBlQW5FcnJvcik6CisgICAgICAg
IChKU0M6OllhcnI6OlBhcnNlcjo6cGFyc2VFc2NhcGUpOgorICAgICAgICAoSlNDOjpZYXJyOjpQ
YXJzZXI6OnBhcnNlQ2hhcmFjdGVyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXJzZXI6
OnBhcnNlUGFyZW50aGVzZXNCZWdpbik6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6cGFy
c2VQYXJlbnRoZXNlc0VuZCk6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6cGFyc2VRdWFu
dGlmaWVyKToKKyAgICAgICAgKEpTQzo6WWFycjo6UGFyc2VyOjpwYXJzZVRva2Vucyk6CisgICAg
ICAgIChKU0M6OllhcnI6OlBhcnNlcjo6cGFyc2UpOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXJz
ZXI6OnRyeUNvbnN1bWVVbmljb2RlRXNjYXBlKToKKyAgICAgICAgKEpTQzo6WWFycjo6UGFyc2Vy
Ojp0cnlDb25zdW1lVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ollh
cnI6OnBhcnNlKToKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAgKEpT
Qzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OnNldHVwRGlzanVu
Y3Rpb25PZmZzZXRzKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rv
cjo6c2V0dXBPZmZzZXRzKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm46OmNvbXBp
bGUpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6WWFyclBhdHRlcm4pOgorICAg
ICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6ZXJyb3JNZXNzYWdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmg6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0
ZXJuOjpyZXNldCk6CisgICAgICAgICogeWFyci9ZYXJyU3ludGF4Q2hlY2tlci5jcHA6CisgICAg
ICAgIChKU0M6OllhcnI6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKiB5YXJyL1lhcnJTeW50YXhD
aGVja2VyLmg6CisKIDIwMTctMTItMTcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKICAgICAgICAgW0ZUTF0gTmV3QXJyYXlCdWZmZXIgc2hvdWxkIGJlIHNpbmtlZCBp
ZiBpdCBpcyBvbmx5IHVzZWQgZm9yIHNwcmVhZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDliOGFhN2FhNDEy
NzdlYzljNDAzMWQ3YjM5N2M4YTk0YThmMjY0ODIuLmNmOTUxNzNkMDc3OWM4ZjllZjZlNWMzNzg0
MzBlY2JmNmFmMTQ1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNy0xMi0xOSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbWUFSUl0g
WWFyciBzaG91bGQgcmV0dXJuIEVycm9yQ29kZSBpbnN0ZWFkIG9mIGVycm9yIG1lc3NhZ2VzIChj
b25zdCBjaGFyKikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MDk2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBTdHJpbmcgY3JlYXRpb24uCisKKyAgICAgICAgTm8gYmVo
YXZpb3IgY2hhbmdlLgorCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpVUkxGaWx0ZXJQ
YXJzZXI6OmFkZFBhdHRlcm4pOgorCiAyMDE3LTEyLTE3ICBKb2huIFdpbGFuZGVyICA8d2lsYW5k
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQSTogTWFrZSBkb2N1bWVu
dC5oYXNTdG9yYWdlQWNjZXNzKCkgcmV0cmlldmUgY3VycmVudCBzdGF0dXMgZnJvbSB0aGUgbmV0
d29yayBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE3ZmI2MjZhOTM1
NjM3YzY2Zjk1MWE1NTYzMzdmNTVlNjczMmJlZDkuLmQ3YTYxYzZkNmE3MjYyNTkzZDE5MTU3M2Vl
OGRiMDJlNWM2NWE2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjczLDYg
KzE2NzMsNyBAQAogCQlFMzIwMUMxRTFGOEU4MjRDMDA3NkEwMzIgLyogU2NyaXB0RmV0Y2hQYXJh
bWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzhEMDYwQzFGOEU4MTQxMDA2NDlDRjIgLyogU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMyMkU1QTMxREE2
NDQzOTAwNkU3NzA5IC8qIERGR1NuaXBwZXRQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjJFNUExMURBNjQ0MzUwMDZFNzcwOSAvKiBERkdT
bmlwcGV0UGFyYW1zLmggKi87IH07CiAJCUUzMjJFNUE3MURBNjQ0QTgwMDZFNzcwOSAvKiBGVExT
bmlwcGV0UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzIyRTVBNTFEQTY0NEE0MDA2RTc3MDkgLyogRlRMU25pcHBldFBhcmFtcy5oICovOyB9
OworCQlFMzI4MkJCQjFGRTkzMEFGMDBFREFGNzEgLyogWWFyckVycm9yQ29kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyODJCQkExRkU5MzBBNDAw
RURBRjcxIC8qIFlhcnJFcnJvckNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzI4QzZDNzFEQTQzMDQ1MDBEMjU1RkQgLyogTWF4RnJhbWVF
eHRlbnRGb3JTbG93UGF0aENhbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1ODYwMTc3MTg1QThGNUUwMDAzMEVFRSAvKiBNYXhGcmFtZUV4dGVudEZv
clNsb3dQYXRoQ2FsbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUUzMjhDNkM4MURBNDMwNjEwMEQyNTVGRCAvKiBSZWdpc3RlckF0T2Zmc2V0TGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU0MEM3
OUQxQjgyRDk5RDAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRPZmZzZXRMaXN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMyOEM2QzkxREE0MzJGOTAw
RDI1NUZEIC8qIFJlZ2lzdGVyQXRPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1NDBDNzlGMUI4MkQ5Q0UwMDBGNkI3OSAvKiBSZWdpc3RlckF0
T2Zmc2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTQ0OTgsNiArNDQ5OSw4IEBACiAJCUUzMjJFNUE0MURBNjQ0QTQwMDZFNzcwOSAvKiBGVExT
bmlwcGV0UGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZU
TFNuaXBwZXRQYXJhbXMuY3BwOyBwYXRoID0gZnRsL0ZUTFNuaXBwZXRQYXJhbXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzIyRTVBNTFEQTY0NEE0MDA2RTc3MDkgLyogRlRM
U25pcHBldFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExTbmlw
cGV0UGFyYW1zLmg7IHBhdGggPSBmdGwvRlRMU25pcHBldFBhcmFtcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzI2QzQ5NjFFQ0JFRjU3MDBBOUE5MDUgLyogQ2xhc3NJbmZvLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzSW5mby5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMjgyQkI5MUZFOTMwQTMwMEVEQUY3MSAvKiBZ
YXJyRXJyb3JDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlh
cnJFcnJvckNvZGUuY3BwOyBwYXRoID0geWFyci9ZYXJyRXJyb3JDb2RlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMyODJCQkExRkU5MzBBNDAwRURBRjcxIC8qIFlhcnJFcnJv
ckNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyckVycm9yQ29kZS5o
OyBwYXRoID0geWFyci9ZYXJyRXJyb3JDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzMzYzN0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZmxlY3RPYmplY3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVj
dE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZsZWN0T2JqZWN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzM0IzRTI1MUI3QUJENzUwMDQ4REIy
RSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwMDIsNiArNzAwNSw4IEBACiAJCQkJODYz
QzZEOTkxNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxpemUuaCAqLywKIAkJCQk4NjND
NkQ5ODE1MjExMTEyMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwICovLAogCQkJ
CTg2M0M2RDlBMTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5qcyAqLywK
KwkJCQlFMzI4MkJCOTFGRTkzMEEzMDBFREFGNzEgLyogWWFyckVycm9yQ29kZS5jcHAgKi8sCisJ
CQkJRTMyODJCQkExRkU5MzBBNDAwRURBRjcxIC8qIFlhcnJFcnJvckNvZGUuaCAqLywKIAkJCQk4
NjcwNEI3RDEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmNwcCAqLywKIAkJCQk4
NjcwNEI3RTEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmggKi8sCiAJCQkJODY3
MDRCN0YxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3BwICovLApAQCAtOTQ2Niw2ICs5NDcx
LDcgQEAKIAkJCQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OTU5RTkyRTFCRDE3RkE0MDAxQUE0MTMgLyogeHhkLnBsIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDUxNTM5QjkxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUUzMjgyQkJCMUZFOTMwQUYwMEVEQUY3MSAvKiBZYXJyRXJyb3JDb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4NTEyREJBMzM3MDBBOUZFN0IgLyogWWFyckludGVy
cHJldGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyog
WWFyckpJVC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8q
IFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICovLApAQCAtOTk5OSw2ICsxMDAwNSw3IEBACiAJCQlp
c2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQlGRTA1RkFGRDFGRTRDRURBMDAwOTMyMzAgLyogRGVwcmVj
YXRlZEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE5RTFGNzM1
RjE2MDAzN0ZDMzMgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkY0Mjc0QTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2LmMgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkY0Mjc0MDE1OEVCRThCMDA0Q0I5RkYgLyogdWRpczg2X2RlY29kZS5jIGluIFNvdXJjZXMg
Ki8sCkBAIC0xMDEwNyw3ICsxMDExNCw2IEBACiAJCQkJNTM2QjMxNDExRjcxQzU5OTAwMzdGQzMz
IC8qIFVuaWZpZWRTb3VyY2U5NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzEzODFGNzFD
NTk5MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTk1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUz
NkIzMTJGMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlOTYuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJRkUwNUZBRkQxRkU0Q0VEQTAwMDkzMjMwIC8qIERlcHJlY2F0ZWRJbnNwZWN0b3JW
YWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM2QjMxMzYxRjcxQzU5OTAwMzdGQzMzIC8q
IFVuaWZpZWRTb3VyY2U5Ny5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZCMzE2QTFGNzFDNTk5
MDAzN0ZDMzMgLyogVW5pZmllZFNvdXJjZTk4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkIz
MTYzMUY3MUM1OTkwMDM3RkMzMyAvKiBVbmlmaWVkU291cmNlOTkuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggY2RkMDhkOTE2MzIyZjcxYjRhNWRhZmMw
Y2QzYmI2ZDM1YzUyODMwNy4uZTcyNTNiOTMyZDI5NjYyZTJhZWViYTZjYTczN2QxMWNlNzFjNWJm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMTAxNSw2ICsxMDE1LDcgQEAgd2Fz
bS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHAKIAogeWFyci9SZWd1bGFyRXhwcmVz
c2lvbi5jcHAKIHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwCit5YXJyL1lhcnJFcnJvckNv
ZGUuY3BwCiB5YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKIHlhcnIvWWFyckpJVC5jcHAKIHlhcnIv
WWFyclBhdHRlcm4uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcAppbmRleCA4OTU4MDlhZDM2OGRhZDU5
NzQ2YmNmYWVmMzM3ODdmYjY3NDYwZjQ0Li5lMDU3YmE0ZGM1NDNkYWFlMzFmZDRmMDI4YTJiYmIz
YjRmOGRlNjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0Nv
bnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKQEAgLTE3Nyw5ICsxNzcsOSBAQCBzdGF0
aWMgU3RyaW5nIGZpbmRNYWdpY0NvbW1lbnQoY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBT
dHJpbmcmIHBhdHRlcm5TdHJpbgogICAgIGlmIChjb250ZW50LmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogCi0gICAgY29uc3QgY2hhciogZXJyb3IgPSBudWxscHRyOworICAg
IEpTQzo6WWFycjo6RXJyb3JDb2RlIGVycm9yIHsgSlNDOjpZYXJyOjpFcnJvckNvZGU6Ok5vRXJy
b3IgfTsKICAgICBZYXJyUGF0dGVybiBwYXR0ZXJuKHBhdHRlcm5TdHJpbmcsIEpTQzo6UmVnRXhw
RmxhZ3M6OkZsYWdNdWx0aWxpbmUsICZlcnJvcik7Ci0gICAgQVNTRVJUKCFlcnJvcik7CisgICAg
QVNTRVJUKCFoYXNFcnJvcihlcnJvcikpOwogICAgIEJ1bXBQb2ludGVyQWxsb2NhdG9yIHJlZ2V4
QWxsb2NhdG9yOwogICAgIGF1dG8gYnl0ZWNvZGVQYXR0ZXJuID0gYnl0ZUNvbXBpbGUocGF0dGVy
biwgJnJlZ2V4QWxsb2NhdG9yKTsKICAgICBBU1NFUlQoYnl0ZWNvZGVQYXR0ZXJuKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggM2FkMzg4YzRjOTk2OTg5
ZWVhOTMzNDQwMGYwNWYzYjM1Yzc3MTcxZi4uODYxZjBjZjcwNmYwNDBiMzE4ODUzN2E5YWZlZWEx
MWI4YmUzMzJkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgK
QEAgLTMzNSw3ICszMzUsNyBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKIAogICAgIEV4cHJlc3Npb25O
b2RlKiBjcmVhdGVSZWdFeHAoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3Qg
SWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBzdGFydCkKICAgICB7Ci0gICAgICAgIGlmIChZYXJyOjpjaGVja1N5bnRheChw
YXR0ZXJuLnN0cmluZygpLCBmbGFncy5zdHJpbmcoKSkpCisgICAgICAgIGlmIChZYXJyOjpoYXNF
cnJvcihZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnN0cmluZygpLCBmbGFncy5zdHJpbmcoKSkp
KQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIFJlZ0V4cE5vZGUqIG5vZGUgPSBuZXcg
KG1fcGFyc2VyQXJlbmEpIFJlZ0V4cE5vZGUobG9jYXRpb24sIHBhdHRlcm4sIGZsYWdzKTsKICAg
ICAgICAgaW50IHNpemUgPSBwYXR0ZXJuLmxlbmd0aCgpICsgMjsgLy8gKyAyIGZvciB0aGUgdHdv
IC8ncwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDg0OGM5N2Q0
NDNiMjE2ZTY5ZDBiMjg3Y2FjZjUzMWVmZjY3MzE4ZGQuLmY0ODUxMzZkMDk4Y2E5OWFlMTMwZWRm
Y2I1ZDNjYTZlODVkNmI1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKQEAgLTQ1NDcsOCArNDU0Nyw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAgICAgICAg
IG5leHQoKTsKICAgICAgICAgVHJlZUV4cHJlc3Npb24gcmUgPSBjb250ZXh0LmNyZWF0ZVJlZ0V4
cChsb2NhdGlvbiwgKnBhdHRlcm4sICpmbGFncywgc3RhcnQpOwogICAgICAgICBpZiAoIXJlKSB7
Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiB5YXJyRXJyb3JNc2cgPSBZYXJyOjpjaGVja1N5bnRh
eChwYXR0ZXJuLT5zdHJpbmcoKSwgZmxhZ3MtPnN0cmluZygpKTsKLSAgICAgICAgICAgIHJlZ2V4
RmFpbCh5YXJyRXJyb3JNc2cpOworICAgICAgICAgICAgWWFycjo6RXJyb3JDb2RlIGVycm9yQ29k
ZSA9IFlhcnI6OmNoZWNrU3ludGF4KHBhdHRlcm4tPnN0cmluZygpLCBmbGFncy0+c3RyaW5nKCkp
OworICAgICAgICAgICAgcmVnZXhGYWlsKFlhcnI6OmVycm9yTWVzc2FnZShlcnJvckNvZGUpKTsK
ICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCA1MzljNDczNDBlYjZhNjQ1ZmU3Y2Fm
NDQxYzNmMDBkYjViM2NmNjMyLi44ZjNhZmU2ZDI1NmZhYzk1ZTY5M2Q0MjA0ODkxN2RmOTVhZDM3
MTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNr
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApA
QCAtMTgxLDcgKzE4MSw3IEBAIGNsYXNzIFN5bnRheENoZWNrZXIgewogICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZU51bGwoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gTnVsbEV4cHI7
IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCcmFja2V0QWNjZXNzKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gQnJhY2tldEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVE
b3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGNvbnN0IElk
ZW50aWZpZXIqLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBEb3RFeHByOyB9Ci0gICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50
aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzLCBpbnQpIHsgcmV0dXJuIFlh
cnI6OmNoZWNrU3ludGF4KHBhdHRlcm4uc3RyaW5nKCksIGZsYWdzLnN0cmluZygpKSA/IDAgOiBS
ZWdFeHBFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXIm
IGZsYWdzLCBpbnQpIHsgcmV0dXJuIFlhcnI6Omhhc0Vycm9yKFlhcnI6OmNoZWNrU3ludGF4KHBh
dHRlcm4uc3RyaW5nKCksIGZsYWdzLnN0cmluZygpKSkgPyAwIDogUmVnRXhwRXhwcjsgfQogICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQogICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvblR5cGUsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CiAgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlQ29uZGl0aW9uYWxFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIENvbmRp
dGlvbmFsRXhwcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKaW5k
ZXggMDUxMWQyMjUyYWVmMDFiZjY5OWFkYmNiYTA1YzQ2NmJkY2JlMTZjMy4uZjVhNDk5NmE1ZjA2
M2IzNTU4NzZlNzAxOWFhYjg4M2Y1ZTI0MDI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHAuY3BwCkBAIC0yMTQsMTYgKzIxNCw2IEBAIFJlZ0V4cDo6UmVnRXhwKFZNJiB2
bSwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyBmbGFncykKICAgICAs
IG1fc3RhdGUoTm90Q29tcGlsZWQpCiAgICAgLCBtX3BhdHRlcm5TdHJpbmcocGF0dGVyblN0cmlu
ZykKICAgICAsIG1fZmxhZ3MoZmxhZ3MpCi0gICAgLCBtX2NvbnN0cnVjdGlvbkVycm9yKDApCi0g
ICAgLCBtX251bVN1YnBhdHRlcm5zKDApCi0jaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQotICAg
ICwgbV9ydE1hdGNoT25seVRvdGFsU3ViamVjdFN0cmluZ0xlbigwLjApCi0gICAgLCBtX3J0TWF0
Y2hUb3RhbFN1YmplY3RTdHJpbmdMZW4oMC4wKQotICAgICwgbV9ydE1hdGNoT25seUNhbGxDb3Vu
dCgwKQotICAgICwgbV9ydE1hdGNoT25seUZvdW5kQ291bnQoMCkKLSAgICAsIG1fcnRNYXRjaENh
bGxDb3VudCgwKQotICAgICwgbV9ydE1hdGNoRm91bmRDb3VudCgwKQotI2VuZGlmCiB7CiB9CiAK
QEAgLTI4Myw3ICsyNzMsNyBAQCB2b2lkIFJlZ0V4cDo6Ynl0ZUNvZGVDb21waWxlSWZOZWNlc3Nh
cnkoVk0qIHZtKQogICAgICAgICByZXR1cm47CiAKICAgICBZYXJyOjpZYXJyUGF0dGVybiBwYXR0
ZXJuKG1fcGF0dGVyblN0cmluZywgbV9mbGFncywgJm1fY29uc3RydWN0aW9uRXJyb3IsIHZtLT5z
dGFja0xpbWl0KCkpOwotICAgIGlmIChtX2NvbnN0cnVjdGlvbkVycm9yKSB7CisgICAgaWYgKGhh
c0Vycm9yKG1fY29uc3RydWN0aW9uRXJyb3IpKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAjaWYgQ09NUElMRVJfUVVJUksoQ09OU0lERVJTX1VOUkVBQ0hBQkxFX0NP
REUpCiAgICAgICAgIG1fc3RhdGUgPSBQYXJzZUVycm9yOwpAQCAtMzAwLDcgKzI5MCw3IEBAIHZv
aWQgUmVnRXhwOjpjb21waWxlKFZNKiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQog
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAKICAgICBZYXJyOjpZ
YXJyUGF0dGVybiBwYXR0ZXJuKG1fcGF0dGVyblN0cmluZywgbV9mbGFncywgJm1fY29uc3RydWN0
aW9uRXJyb3IsIHZtLT5zdGFja0xpbWl0KCkpOwotICAgIGlmIChtX2NvbnN0cnVjdGlvbkVycm9y
KSB7CisgICAgaWYgKGhhc0Vycm9yKG1fY29uc3RydWN0aW9uRXJyb3IpKSB7CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjaWYgQ09NUElMRVJfUVVJUksoQ09OU0lERVJT
X1VOUkVBQ0hBQkxFX0NPREUpCiAgICAgICAgIG1fc3RhdGUgPSBQYXJzZUVycm9yOwpAQCAtMzU2
LDcgKzM0Niw3IEBAIHZvaWQgUmVnRXhwOjpjb21waWxlTWF0Y2hPbmx5KFZNKiB2bSwgWWFycjo6
WWFyckNoYXJTaXplIGNoYXJTaXplKQogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9s
b2NrKTsKICAgICAKICAgICBZYXJyOjpZYXJyUGF0dGVybiBwYXR0ZXJuKG1fcGF0dGVyblN0cmlu
ZywgbV9mbGFncywgJm1fY29uc3RydWN0aW9uRXJyb3IsIHZtLT5zdGFja0xpbWl0KCkpOwotICAg
IGlmIChtX2NvbnN0cnVjdGlvbkVycm9yKSB7CisgICAgaWYgKGhhc0Vycm9yKG1fY29uc3RydWN0
aW9uRXJyb3IpKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjaWYg
Q09NUElMRVJfUVVJUksoQ09OU0lERVJTX1VOUkVBQ0hBQkxFX0NPREUpCiAgICAgICAgIG1fc3Rh
dGUgPSBQYXJzZUVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAppbmRl
eCBiYmIyNzM4ZTRkM2JkZmNkYmJhMWZiYmI2Y2FhNDlhNGFjNGVlNmU5Li41MjExM2EzYjE1MDg1
YjMxNzhiODFkMWNiZjdlNDkzNWI0NGNmMmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuaApAQCAtNjAsOCArNjAsOCBAQCBjbGFzcyBSZWdFeHAgZmluYWwgOiBwdWJsaWMg
SlNDZWxsIHsKIAogICAgIGNvbnN0IFN0cmluZyYgcGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1f
cGF0dGVyblN0cmluZzsgfQogCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gIW1f
Y29uc3RydWN0aW9uRXJyb3IgJiYgbV9mbGFncyAhPSBJbnZhbGlkRmxhZ3M7IH0KLSAgICBjb25z
dCBjaGFyKiBlcnJvck1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cnVjdGlvbkVycm9y
OyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gIVlhcnI6Omhhc0Vycm9yKG1f
Y29uc3RydWN0aW9uRXJyb3IpICYmIG1fZmxhZ3MgIT0gSW52YWxpZEZsYWdzOyB9CisgICAgY29u
c3QgY2hhciogZXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gWWFycjo6ZXJyb3JNZXNzYWdl
KG1fY29uc3RydWN0aW9uRXJyb3IpOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBpbnQgbWF0
Y2goVk0mLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgVmVjdG9yPGludD4m
IG92ZWN0b3IpOwogCkBAIC0xMzgsOCArMTM4LDYgQEAgY2xhc3MgUmVnRXhwIGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgICAgIE5vdENvbXBpbGVkCiAgICAgfTsKIAotICAgIFJlZ0V4cFN0
YXRlIG1fc3RhdGU7Ci0KICAgICB2b2lkIGJ5dGVDb2RlQ29tcGlsZUlmTmVjZXNzYXJ5KFZNKik7
CiAKICAgICB2b2lkIGNvbXBpbGUoVk0qLCBZYXJyOjpZYXJyQ2hhclNpemUpOwpAQCAtMTUyLDE5
ICsxNTAsMjAgQEAgY2xhc3MgUmVnRXhwIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9p
ZCBtYXRjaENvbXBhcmVXaXRoSW50ZXJwcmV0ZXIoY29uc3QgU3RyaW5nJiwgaW50IHN0YXJ0T2Zm
c2V0LCBpbnQqIG9mZnNldFZlY3RvciwgaW50IGppdFJlc3VsdCk7CiAjZW5kaWYKIAorICAgIFJl
Z0V4cFN0YXRlIG1fc3RhdGUgeyBOb3RDb21waWxlZCB9OwogICAgIFN0cmluZyBtX3BhdHRlcm5T
dHJpbmc7CiAgICAgUmVnRXhwRmxhZ3MgbV9mbGFnczsKLSAgICBjb25zdCBjaGFyKiBtX2NvbnN0
cnVjdGlvbkVycm9yOwotICAgIHVuc2lnbmVkIG1fbnVtU3VicGF0dGVybnM7CisgICAgWWFycjo6
RXJyb3JDb2RlIG1fY29uc3RydWN0aW9uRXJyb3IgeyBZYXJyOjpFcnJvckNvZGU6Ok5vRXJyb3Ig
fTsKKyAgICB1bnNpZ25lZCBtX251bVN1YnBhdHRlcm5zIHsgMCB9OwogICAgIFZlY3RvcjxTdHJp
bmc+IG1fY2FwdHVyZUdyb3VwTmFtZXM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBt
X25hbWVkR3JvdXBUb1BhcmVuSW5kZXg7CiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQotICAg
IGRvdWJsZSBtX3J0TWF0Y2hPbmx5VG90YWxTdWJqZWN0U3RyaW5nTGVuOwotICAgIGRvdWJsZSBt
X3J0TWF0Y2hUb3RhbFN1YmplY3RTdHJpbmdMZW47Ci0gICAgdW5zaWduZWQgbV9ydE1hdGNoT25s
eUNhbGxDb3VudDsKLSAgICB1bnNpZ25lZCBtX3J0TWF0Y2hPbmx5Rm91bmRDb3VudDsKLSAgICB1
bnNpZ25lZCBtX3J0TWF0Y2hDYWxsQ291bnQ7Ci0gICAgdW5zaWduZWQgbV9ydE1hdGNoRm91bmRD
b3VudDsKKyAgICBkb3VibGUgbV9ydE1hdGNoT25seVRvdGFsU3ViamVjdFN0cmluZ0xlbiB7IDAu
MCB9OworICAgIGRvdWJsZSBtX3J0TWF0Y2hUb3RhbFN1YmplY3RTdHJpbmdMZW4geyAwLjAgfTsK
KyAgICB1bnNpZ25lZCBtX3J0TWF0Y2hPbmx5Q2FsbENvdW50IHsgMCB9OworICAgIHVuc2lnbmVk
IG1fcnRNYXRjaE9ubHlGb3VuZENvdW50IHsgMCB9OworICAgIHVuc2lnbmVkIG1fcnRNYXRjaENh
bGxDb3VudCB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX3J0TWF0Y2hGb3VuZENvdW50IHsgMCB9Owog
I2VuZGlmCiAgICAgQ29uY3VycmVudEpTTG9jayBtX2xvY2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmNwcAppbmRleCAxYjFiMjI0MTVhYTgz
MDkwMzIzZmQ3OGYxYjIzZjQ0YzY1NThmOTVlLi40M2JmNDdmN2M3ZmIxNzk0N2MyYmM4MWU4MjYw
YzYzMGMxZTA0MzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1
bGFyRXhwcmVzc2lvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVndWxh
ckV4cHJlc3Npb24uY3BwCkBAIC00MiwxNiArNDIsMTQgQEAgY2xhc3MgUmVndWxhckV4cHJlc3Np
b246OlByaXZhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWd1bGFyRXhwcmVzc2lvbjo6UHJpdmF0
ZT4KICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJpdmF0ZShwYXR0ZXJuLCBjYXNlU2Vu
c2l0aXZpdHksIG11bHRpbGluZU1vZGUpKTsKICAgICB9CiAKLSAgICBpbnQgbGFzdE1hdGNoTGVu
Z3RoOworICAgIGludCBsYXN0TWF0Y2hMZW5ndGggeyAtMSB9OwogCiAgICAgdW5zaWduZWQgbV9u
dW1TdWJwYXR0ZXJuczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpZYXJyOjpCeXRlY29kZVBh
dHRlcm4+IG1fcmVnRXhwQnl0ZUNvZGU7CiAKIHByaXZhdGU6CiAgICAgUHJpdmF0ZShjb25zdCBT
dHJpbmcmIHBhdHRlcm4sIFRleHRDYXNlU2Vuc2l0aXZpdHkgY2FzZVNlbnNpdGl2aXR5LCBNdWx0
aWxpbmVNb2RlIG11bHRpbGluZU1vZGUpCi0gICAgICAgIDogbGFzdE1hdGNoTGVuZ3RoKC0xKQot
ICAgICAgICAsIG1fcmVnRXhwQnl0ZUNvZGUoY29tcGlsZShwYXR0ZXJuLCBjYXNlU2Vuc2l0aXZp
dHksIG11bHRpbGluZU1vZGUpKQotICAgICAgICAsIG1fY29uc3RydWN0aW9uRXJyb3IobnVsbHB0
cikKKyAgICAgICAgOiBtX3JlZ0V4cEJ5dGVDb2RlKGNvbXBpbGUocGF0dGVybiwgY2FzZVNlbnNp
dGl2aXR5LCBtdWx0aWxpbmVNb2RlKSkKICAgICB7CiAgICAgfQogCkBAIC02Niw4ICs2NCw4IEBA
IGNsYXNzIFJlZ3VsYXJFeHByZXNzaW9uOjpQcml2YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVn
dWxhckV4cHJlc3Npb246OlByaXZhdGU+CiAgICAgICAgICAgICBmbGFncyA9IHN0YXRpY19jYXN0
PFJlZ0V4cEZsYWdzPihmbGFncyB8IEZsYWdNdWx0aWxpbmUpOwogCiAgICAgICAgIEpTQzo6WWFy
cjo6WWFyclBhdHRlcm4gcGF0dGVybihwYXR0ZXJuU3RyaW5nLCBmbGFncywgJm1fY29uc3RydWN0
aW9uRXJyb3IpOwotICAgICAgICBpZiAobV9jb25zdHJ1Y3Rpb25FcnJvcikgewotICAgICAgICAg
ICAgTE9HX0VSUk9SKCJSZWd1bGFyRXhwcmVzc2lvbjogWUFSUiBjb21waWxlIGZhaWxlZCB3aXRo
ICclcyciLCBtX2NvbnN0cnVjdGlvbkVycm9yKTsKKyAgICAgICAgaWYgKEpTQzo6WWFycjo6aGFz
RXJyb3IobV9jb25zdHJ1Y3Rpb25FcnJvcikpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiUmVn
dWxhckV4cHJlc3Npb246IFlBUlIgY29tcGlsZSBmYWlsZWQgd2l0aCAnJXMnIiwgSlNDOjpZYXJy
OjplcnJvck1lc3NhZ2UobV9jb25zdHJ1Y3Rpb25FcnJvcikpOwogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIH0KIApAQCAtNzcsNyArNzUsNyBAQCBjbGFzcyBSZWd1bGFyRXhw
cmVzc2lvbjo6UHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlZ3VsYXJFeHByZXNzaW9uOjpQ
cml2YXRlPgogICAgIH0KIAogICAgIEJ1bXBQb2ludGVyQWxsb2NhdG9yIG1fcmVnZXhBbGxvY2F0
b3I7Ci0gICAgY29uc3QgY2hhciogbV9jb25zdHJ1Y3Rpb25FcnJvcjsKKyAgICBKU0M6OllhcnI6
OkVycm9yQ29kZSBtX2NvbnN0cnVjdGlvbkVycm9yIHsgWWFycjo6RXJyb3JDb2RlOjpOb0Vycm9y
IH07CiB9OwogCiBSZWd1bGFyRXhwcmVzc2lvbjo6UmVndWxhckV4cHJlc3Npb24oY29uc3QgU3Ry
aW5nJiBwYXR0ZXJuLCBUZXh0Q2FzZVNlbnNpdGl2aXR5IGNhc2VTZW5zaXRpdml0eSwgTXVsdGls
aW5lTW9kZSBtdWx0aWxpbmVNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckVycm9yQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
RXJyb3JDb2RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTBhMDgxYzhlZmFlMGU4NzcxY2IwNGI4ZTQ2ZDU0
MmQ1YTJiNDlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckVycm9yQ29kZS5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiWWFyckVycm9yQ29kZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIg
eworCitjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UoRXJyb3JDb2RlIGVycm9yKQoreworI2RlZmlu
ZSBSRUdFWFBfRVJST1JfUFJFRklYICJJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogIgorICAg
IC8vIFRoZSBvcmRlciBvZiB0aGlzIGFycmF5IG11c3QgbWF0Y2ggdGhlIEVycm9yQ29kZSBlbnVt
LgorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2VzW10gPSB7CisgICAgICAgIG51
bGxwdHIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBOb0Vycm9yCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggInJlZ3Vs
YXIgZXhwcmVzc2lvbiB0b28gbGFyZ2UiLCAgICAgICAgICAgICAgICAgICAvLyBQYXR0ZXJuVG9v
TGFyZ2UKKyAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAibnVtYmVycyBvdXQgb2Ygb3JkZXIg
aW4ge30gcXVhbnRpZmllciIsICAgICAgICAgIC8vIFF1YW50aWZpZXJPdXRPZk9yZGVyCisgICAg
ICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggIm5vdGhpbmcgdG8gcmVwZWF0IiwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBRdWFudGlmaWVyV2l0aG91dEF0b20KKyAgICAgICAgUkVHRVhQ
X0VSUk9SX1BSRUZJWCAibnVtYmVyIHRvbyBsYXJnZSBpbiB7fSBxdWFudGlmaWVyIiwgICAgICAg
ICAgICAgIC8vIFF1YW50aWZpZXJUb29MYXJnZQorICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklY
ICJtaXNzaW5nICkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWlz
c2luZ1BhcmVudGhlc2VzCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggInVubWF0Y2hlZCBw
YXJlbnRoZXNlcyIsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQYXJlbnRoZXNlc1VubWF0
Y2hlZAorICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJ1bnJlY29nbml6ZWQgY2hhcmFjdGVy
IGFmdGVyICg/IiwgICAgICAgICAgICAgICAgLy8gUGFyZW50aGVzZXNUeXBlSW52YWxpZAorICAg
ICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJpbnZhbGlkIGdyb3VwIHNwZWNpZmllciBuYW1lIiwg
ICAgICAgICAgICAgICAgICAgLy8gSW52YWxpZEdyb3VwTmFtZQorICAgICAgICBSRUdFWFBfRVJS
T1JfUFJFRklYICJkdXBsaWNhdGUgZ3JvdXAgc3BlY2lmaWVyIG5hbWUiLCAgICAgICAgICAgICAg
ICAgLy8gRHVwbGljYXRlR3JvdXBOYW1lCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggIm1p
c3NpbmcgdGVybWluYXRpbmcgXSBmb3IgY2hhcmFjdGVyIGNsYXNzIiwgICAgICAvLyBDaGFyYWN0
ZXJDbGFzc1VubWF0Y2hlZAorICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJyYW5nZSBvdXQg
b2Ygb3JkZXIgaW4gY2hhcmFjdGVyIGNsYXNzIiwgICAgICAgICAgLy8gQ2hhcmFjdGVyQ2xhc3NP
dXRPZk9yZGVyCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggIlxcIGF0IGVuZCBvZiBwYXR0
ZXJuIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFc2NhcGVVbnRlcm1pbmF0ZWQKKyAg
ICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAiaW52YWxpZCB1bmljb2RlIHt9IGVzY2FwZSIsICAg
ICAgICAgICAgICAgICAgICAgIC8vIEludmFsaWRVbmljb2RlRXNjYXBlCisgICAgICAgIFJFR0VY
UF9FUlJPUl9QUkVGSVggImludmFsaWQgYmFja3JlZmVyZW5jZSBmb3IgdW5pY29kZSBwYXR0ZXJu
IiwgICAgICAvLyBJbnZhbGlkQmFja3JlZmVyZW5jZQorICAgICAgICBSRUdFWFBfRVJST1JfUFJF
RklYICJpbnZhbGlkIGVzY2FwZWQgY2hhcmFjdGVyIGZvciB1bmljb2RlIHBhdHRlcm4iLCAgLy8g
SW52YWxpZElkZW50aXR5RXNjYXBlCisgICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggImludmFs
aWQgcHJvcGVydHkgZXhwcmVzc2lvbiIsICAgICAgICAgICAgICAgICAgICAvLyBJbnZhbGlkVW5p
Y29kZVByb3BlcnR5RXhwcmVzc2lvbgorICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJ0b28g
bWFueSBuZXN0ZWQgZGlzanVuY3Rpb25zIiwgICAgICAgICAgICAgICAgICAgLy8gVG9vTWFueURp
c2p1bmN0aW9ucworICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJwYXR0ZXJuIGV4Y2VlZHMg
c3RyaW5nIGxlbmd0aCBsaW1pdHMiLCAgICAgICAgICAgLy8gT2Zmc2V0VG9vTGFyZ2UKKyAgICAg
ICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAiaW52YWxpZCBmbGFncyIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEludmFsaWRSZWd1bGFyRXhwcmVzc2lvbkZsYWdzCisgICAgfTsK
KworICAgIHJldHVybiBlcnJvck1lc3NhZ2VzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihlcnJvcild
OworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6WWFycgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckVycm9yQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckVycm9yQ29kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiOTQ3Yjk4ZjJlOWMyZTljYjNjODM4
MWYyOWFmNjE0ZTk3NTljYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJyRXJyb3JDb2RlLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJyIHsKKworZW51bSBjbGFzcyBFcnJvckNvZGUgOiB1
bnNpZ25lZCB7CisgICAgTm9FcnJvciA9IDAsCisgICAgUGF0dGVyblRvb0xhcmdlLAorICAgIFF1
YW50aWZpZXJPdXRPZk9yZGVyLAorICAgIFF1YW50aWZpZXJXaXRob3V0QXRvbSwKKyAgICBRdWFu
dGlmaWVyVG9vTGFyZ2UsCisgICAgTWlzc2luZ1BhcmVudGhlc2VzLAorICAgIFBhcmVudGhlc2Vz
VW5tYXRjaGVkLAorICAgIFBhcmVudGhlc2VzVHlwZUludmFsaWQsCisgICAgSW52YWxpZEdyb3Vw
TmFtZSwKKyAgICBEdXBsaWNhdGVHcm91cE5hbWUsCisgICAgQ2hhcmFjdGVyQ2xhc3NVbm1hdGNo
ZWQsCisgICAgQ2hhcmFjdGVyQ2xhc3NPdXRPZk9yZGVyLAorICAgIEVzY2FwZVVudGVybWluYXRl
ZCwKKyAgICBJbnZhbGlkVW5pY29kZUVzY2FwZSwKKyAgICBJbnZhbGlkQmFja3JlZmVyZW5jZSwK
KyAgICBJbnZhbGlkSWRlbnRpdHlFc2NhcGUsCisgICAgSW52YWxpZFVuaWNvZGVQcm9wZXJ0eUV4
cHJlc3Npb24sCisgICAgVG9vTWFueURpc2p1bmN0aW9ucywKKyAgICBPZmZzZXRUb29MYXJnZSwK
KyAgICBJbnZhbGlkUmVndWxhckV4cHJlc3Npb25GbGFncywKK307CisKK0pTX0VYUE9SVF9QUklW
QVRFIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZShFcnJvckNvZGUpOworaW5saW5lIGJvb2wgaGFz
RXJyb3IoRXJyb3JDb2RlIGVycm9yQ29kZSkKK3sKKyAgICByZXR1cm4gZXJyb3JDb2RlICE9IEVy
cm9yQ29kZTo6Tm9FcnJvcjsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OllhcnIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaAppbmRleCAxMDVjMDNiZjMxNDEwMGFjYjc0
YjI5MmEzYWMzYjIzNzU5NzUzZjBlLi4yMTdhY2NmNDRkYmUyNDFkMTEyN2I2OGQwZjIzNWYwYTM5
OTRhZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGFyc2Vy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oCkBAIC00MSw3
ICs0MSw3IEBAIHRlbXBsYXRlPGNsYXNzIERlbGVnYXRlLCB0eXBlbmFtZSBDaGFyVHlwZT4KIGNs
YXNzIFBhcnNlciB7CiBwcml2YXRlOgogICAgIHRlbXBsYXRlPGNsYXNzIEZyaWVuZERlbGVnYXRl
PgotICAgIGZyaWVuZCBjb25zdCBjaGFyKiBwYXJzZShGcmllbmREZWxlZ2F0ZSYsIGNvbnN0IFN0
cmluZyYgcGF0dGVybiwgYm9vbCBpc1VuaWNvZGUsIHVuc2lnbmVkIGJhY2tSZWZlcmVuY2VMaW1p
dCk7CisgICAgZnJpZW5kIEVycm9yQ29kZSBwYXJzZShGcmllbmREZWxlZ2F0ZSYsIGNvbnN0IFN0
cmluZyYgcGF0dGVybiwgYm9vbCBpc1VuaWNvZGUsIHVuc2lnbmVkIGJhY2tSZWZlcmVuY2VMaW1p
dCk7CiAKICAgICAvKgogICAgICAqIENoYXJhY3RlckNsYXNzUGFyc2VyRGVsZWdhdGU6CkBAIC01
NCw3ICs1NCw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICovCiAgICAgY2xhc3MgQ2hhcmFjdGVy
Q2xhc3NQYXJzZXJEZWxlZ2F0ZSB7CiAgICAgcHVibGljOgotICAgICAgICBDaGFyYWN0ZXJDbGFz
c1BhcnNlckRlbGVnYXRlKERlbGVnYXRlJiBkZWxlZ2F0ZSwgWWFyclBhdHRlcm46OkVycm9yQ29k
ZSYgZXJyKQorICAgICAgICBDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVnYXRlKERlbGVnYXRlJiBk
ZWxlZ2F0ZSwgRXJyb3JDb2RlJiBlcnIpCiAgICAgICAgICAgICA6IG1fZGVsZWdhdGUoZGVsZWdh
dGUpCiAgICAgICAgICAgICAsIG1fZXJyKGVycikKICAgICAgICAgICAgICwgbV9zdGF0ZShFbXB0
eSkKQEAgLTExNiw3ICsxMTYsNyBAQCBjbGFzcyBQYXJzZXIgewogCiAgICAgICAgICAgICBjYXNl
IENhY2hlZENoYXJhY3Rlckh5cGhlbjoKICAgICAgICAgICAgICAgICBpZiAoY2ggPCBtX2NoYXJh
Y3RlcikgewotICAgICAgICAgICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpDaGFyYWN0
ZXJDbGFzc091dE9mT3JkZXI7CisgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2Rl
OjpDaGFyYWN0ZXJDbGFzc091dE9mT3JkZXI7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbV9kZWxlZ2F0ZS5hdG9tQ2hhcmFj
dGVyQ2xhc3NSYW5nZShtX2NoYXJhY3RlciwgY2gpOwpAQCAtMTk4LDcgKzE5OCw3IEBAIGNsYXNz
IFBhcnNlciB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBEZWxlZ2F0ZSYgbV9kZWxlZ2F0ZTsK
LSAgICAgICAgWWFyclBhdHRlcm46OkVycm9yQ29kZSYgbV9lcnI7CisgICAgICAgIEVycm9yQ29k
ZSYgbV9lcnI7CiAgICAgICAgIGVudW0gQ2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3Rpb25TdGF0ZSB7
CiAgICAgICAgICAgICBFbXB0eSwKICAgICAgICAgICAgIENhY2hlZENoYXJhY3RlciwKQEAgLTIx
MiwxMiArMjEyLDkgQEAgY2xhc3MgUGFyc2VyIHsKICAgICBQYXJzZXIoRGVsZWdhdGUmIGRlbGVn
YXRlLCBjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJvb2wgaXNVbmljb2RlLCB1bnNpZ25lZCBiYWNr
UmVmZXJlbmNlTGltaXQpCiAgICAgICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKICAgICAgICAg
LCBtX2JhY2tSZWZlcmVuY2VMaW1pdChiYWNrUmVmZXJlbmNlTGltaXQpCi0gICAgICAgICwgbV9l
cnIoWWFyclBhdHRlcm46Ok5vRXJyb3IpCiAgICAgICAgICwgbV9kYXRhKHBhdHRlcm4uY2hhcmFj
dGVyczxDaGFyVHlwZT4oKSkKICAgICAgICAgLCBtX3NpemUocGF0dGVybi5sZW5ndGgoKSkKLSAg
ICAgICAgLCBtX2luZGV4KDApCiAgICAgICAgICwgbV9pc1VuaWNvZGUoaXNVbmljb2RlKQotICAg
ICAgICAsIG1fcGFyZW50aGVzZXNOZXN0aW5nRGVwdGgoMCkKICAgICB7CiAgICAgfQogCkBAIC0y
MjcsNyArMjI0LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICBib29sIGlzSWRlbnRpdHlFc2NhcGVB
bkVycm9yKGludCBjaCkKICAgICB7CiAgICAgICAgIGlmIChtX2lzVW5pY29kZSAmJiAhc3RyY2hy
KCJeJFxcLiorPygpW117fXwvIiwgY2gpKSB7Ci0gICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0
ZXJuOjpJbnZhbGlkSWRlbnRpdHlFc2NhcGU7CisgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29k
ZTo6SW52YWxpZElkZW50aXR5RXNjYXBlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KIApAQCAtMjU3LDEyICsyNTQsMTIgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB0ZW1wbGF0
ZTxib29sIGluQ2hhcmFjdGVyQ2xhc3MsIGNsYXNzIEVzY2FwZURlbGVnYXRlPgogICAgIGJvb2wg
cGFyc2VFc2NhcGUoRXNjYXBlRGVsZWdhdGUmIGRlbGVnYXRlKQogICAgIHsKLSAgICAgICAgQVNT
RVJUKCFtX2Vycik7CisgICAgICAgIEFTU0VSVCghaGFzRXJyb3IobV9lcnIpKTsKICAgICAgICAg
QVNTRVJUKHBlZWsoKSA9PSAnXFwnKTsKICAgICAgICAgY29uc3VtZSgpOwogCiAgICAgICAgIGlm
IChhdEVuZE9mUGF0dGVybigpKSB7Ci0gICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpF
c2NhcGVVbnRlcm1pbmF0ZWQ7CisgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29kZTo6RXNjYXBl
VW50ZXJtaW5hdGVkOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAg
LTM0Myw3ICszNDAsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgICAgICAgICAgICAgIHJlc3RvcmVT
dGF0ZShzdGF0ZSk7CiAKICAgICAgICAgICAgICAgICBpZiAobV9pc1VuaWNvZGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6SW52YWxpZEJhY2tyZWZlcmVuY2U7
CisgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpJbnZhbGlkQmFja3JlZmVy
ZW5jZTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KQEAgLTQyOSw3ICs0MjYsNyBAQCBjbGFzcyBQYXJzZXIgewogICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1faXNVbmljb2RlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpJbnZhbGlkQmFja3JlZmVyZW5jZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpJbnZhbGlkQmFja3JlZmVyZW5jZTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQpAQCAtNDYwLDcgKzQ1Nyw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGRlbGVnYXRlLmF0b21CdWlsdEluQ2hhcmFjdGVy
Q2xhc3Mob3B0Q2xhc3NJRC52YWx1ZSgpLCBlc2NhcGVDaGFyID09ICdQJyk7CiAgICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpJbnZhbGlkVW5p
Y29kZVByb3BlcnR5RXhwcmVzc2lvbjsKKyAgICAgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29k
ZTo6SW52YWxpZFVuaWNvZGVQcm9wZXJ0eUV4cHJlc3Npb247CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCkBAIC00ODAsMjAgKzQ3NywyMCBAQCBjbGFzcyBQYXJzZXIgewogICAgICAg
ICAgICAgICAgIFVDaGFyMzIgY29kZVBvaW50ID0gMDsKICAgICAgICAgICAgICAgICBkbyB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChhdEVuZE9mUGF0dGVybigpIHx8ICFpc0FTQ0lJSGV4RGln
aXQocGVlaygpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVy
bjo6SW52YWxpZFVuaWNvZGVFc2NhcGU7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2VyciA9
IEVycm9yQ29kZTo6SW52YWxpZFVuaWNvZGVFc2NhcGU7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIGNv
ZGVQb2ludCA9IChjb2RlUG9pbnQgPDwgNCkgfCB0b0FTQ0lJSGV4VmFsdWUoY29uc3VtZSgpKTsK
IAogICAgICAgICAgICAgICAgICAgICBpZiAoY29kZVBvaW50ID4gVUNIQVJfTUFYX1ZBTFVFKQot
ICAgICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6SW52YWxpZFVuaWNv
ZGVFc2NhcGU7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29kZTo6SW52
YWxpZFVuaWNvZGVFc2NhcGU7CiAgICAgICAgICAgICAgICAgfSB3aGlsZSAoIWF0RW5kT2ZQYXR0
ZXJuKCkgJiYgcGVlaygpICE9ICd9Jyk7CiAgICAgICAgICAgICAgICAgaWYgKCFhdEVuZE9mUGF0
dGVybigpICYmIHBlZWsoKSA9PSAnfScpCiAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWUoKTsK
LSAgICAgICAgICAgICAgICBlbHNlIGlmICghbV9lcnIpCi0gICAgICAgICAgICAgICAgICAgIG1f
ZXJyID0gWWFyclBhdHRlcm46OkludmFsaWRVbmljb2RlRXNjYXBlOwotICAgICAgICAgICAgICAg
IGlmIChtX2VycikKKyAgICAgICAgICAgICAgICBlbHNlIGlmICghaGFzRXJyb3IobV9lcnIpKQor
ICAgICAgICAgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29kZTo6SW52YWxpZFVuaWNvZGVFc2Nh
cGU7CisgICAgICAgICAgICAgICAgaWYgKGhhc0Vycm9yKG1fZXJyKSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICAgICAgZGVsZWdhdGUuYXRvbVBhdHRl
cm5DaGFyYWN0ZXIoY29kZVBvaW50KTsKQEAgLTU4NSw3ICs1ODIsNyBAQCBjbGFzcyBQYXJzZXIg
ewogICAgICAqLwogICAgIHZvaWQgcGFyc2VDaGFyYWN0ZXJDbGFzcygpCiAgICAgewotICAgICAg
ICBBU1NFUlQoIW1fZXJyKTsKKyAgICAgICAgQVNTRVJUKCFoYXNFcnJvcihtX2VycikpOwogICAg
ICAgICBBU1NFUlQocGVlaygpID09ICdbJyk7CiAgICAgICAgIGNvbnN1bWUoKTsKIApAQCAtNjA4
LDExICs2MDUsMTEgQEAgY2xhc3MgUGFyc2VyIHsKICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJD
bGFzc0NvbnN0cnVjdG9yLmF0b21QYXR0ZXJuQ2hhcmFjdGVyKGNvbnN1bWVQb3NzaWJsZVN1cnJv
Z2F0ZVBhaXIoKSwgdHJ1ZSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChtX2Vy
cikKKyAgICAgICAgICAgIGlmIChoYXNFcnJvcihtX2VycikpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6Q2hhcmFjdGVy
Q2xhc3NVbm1hdGNoZWQ7CisgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpDaGFyYWN0ZXJDbGFz
c1VubWF0Y2hlZDsKICAgICB9CiAKICAgICAvKgpAQCAtNjIyLDEzICs2MTksMTMgQEAgY2xhc3Mg
UGFyc2VyIHsKICAgICAgKi8KICAgICB2b2lkIHBhcnNlUGFyZW50aGVzZXNCZWdpbigpCiAgICAg
ewotICAgICAgICBBU1NFUlQoIW1fZXJyKTsKKyAgICAgICAgQVNTRVJUKCFoYXNFcnJvcihtX2Vy
cikpOwogICAgICAgICBBU1NFUlQocGVlaygpID09ICcoJyk7CiAgICAgICAgIGNvbnN1bWUoKTsK
IAogICAgICAgICBpZiAodHJ5Q29uc3VtZSgnPycpKSB7CiAgICAgICAgICAgICBpZiAoYXRFbmRP
ZlBhdHRlcm4oKSkgewotICAgICAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OlBhcmVu
dGhlc2VzVHlwZUludmFsaWQ7CisgICAgICAgICAgICAgICAgbV9lcnIgPSBFcnJvckNvZGU6OlBh
cmVudGhlc2VzVHlwZUludmFsaWQ7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCkBAIC02NTIsMTUgKzY0OSwxNSBAQCBjbGFzcyBQYXJzZXIgewogICAgICAgICAgICAg
ICAgICAgICBpZiAoc2V0QWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2RlbGVnYXRlLmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbih0cnVlLCBncm91
cE5hbWUpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAg
ICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpEdXBsaWNhdGVHcm91cE5hbWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICBtX2VyciA9IEVycm9yQ29kZTo6RHVwbGljYXRlR3JvdXBOYW1lOwogICAgICAg
ICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJu
OjpJbnZhbGlkR3JvdXBOYW1lOworICAgICAgICAgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29k
ZTo6SW52YWxpZEdyb3VwTmFtZTsKIAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIG1fZXJyID0gWWFy
clBhdHRlcm46OlBhcmVudGhlc2VzVHlwZUludmFsaWQ7CisgICAgICAgICAgICAgICAgbV9lcnIg
PSBFcnJvckNvZGU6OlBhcmVudGhlc2VzVHlwZUludmFsaWQ7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgbV9kZWxlZ2F0ZS5hdG9tUGFyZW50aGVzZXNTdWJwYXR0
ZXJuQmVnaW4oKTsKQEAgLTY3NSwxNCArNjcyLDE0IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICov
CiAgICAgdm9pZCBwYXJzZVBhcmVudGhlc2VzRW5kKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCgh
bV9lcnIpOworICAgICAgICBBU1NFUlQoIWhhc0Vycm9yKG1fZXJyKSk7CiAgICAgICAgIEFTU0VS
VChwZWVrKCkgPT0gJyknKTsKICAgICAgICAgY29uc3VtZSgpOwogCiAgICAgICAgIGlmIChtX3Bh
cmVudGhlc2VzTmVzdGluZ0RlcHRoID4gMCkKICAgICAgICAgICAgIG1fZGVsZWdhdGUuYXRvbVBh
cmVudGhlc2VzRW5kKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZXJyID0gWWFyclBh
dHRlcm46OlBhcmVudGhlc2VzVW5tYXRjaGVkOworICAgICAgICAgICAgbV9lcnIgPSBFcnJvckNv
ZGU6OlBhcmVudGhlc2VzVW5tYXRjaGVkOwogCiAgICAgICAgIC0tbV9wYXJlbnRoZXNlc05lc3Rp
bmdEZXB0aDsKICAgICB9CkBAIC02OTQsMTggKzY5MSwxOCBAQCBjbGFzcyBQYXJzZXIgewogICAg
ICAqLwogICAgIHZvaWQgcGFyc2VRdWFudGlmaWVyKGJvb2wgbGFzdFRva2VuV2FzQW5BdG9tLCB1
bnNpZ25lZCBtaW4sIHVuc2lnbmVkIG1heCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9lcnIp
OworICAgICAgICBBU1NFUlQoIWhhc0Vycm9yKG1fZXJyKSk7CiAgICAgICAgIEFTU0VSVChtaW4g
PD0gbWF4KTsKIAogICAgICAgICBpZiAobWluID09IFVJTlRfTUFYKSB7Ci0gICAgICAgICAgICBt
X2VyciA9IFlhcnJQYXR0ZXJuOjpRdWFudGlmaWVyVG9vTGFyZ2U7CisgICAgICAgICAgICBtX2Vy
ciA9IEVycm9yQ29kZTo6UXVhbnRpZmllclRvb0xhcmdlOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKGxhc3RUb2tlbldhc0FuQXRvbSkKICAgICAgICAgICAg
IG1fZGVsZWdhdGUucXVhbnRpZnlBdG9tKG1pbiwgbWF4LCAhdHJ5Q29uc3VtZSgnPycpKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6UXVhbnRpZmllcldp
dGhvdXRBdG9tOworICAgICAgICAgICAgbV9lcnIgPSBFcnJvckNvZGU6OlF1YW50aWZpZXJXaXRo
b3V0QXRvbTsKICAgICB9CiAKICAgICAvKgpAQCAtNzk5LDcgKzc5Niw3IEBAIGNsYXNzIFBhcnNl
ciB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluIDw9IG1heCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJzZVF1YW50aWZpZXIobGFzdFRva2VuV2FzQW5BdG9tLCBtaW4s
IG1heCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6UXVhbnRpZmllck91dE9mT3JkZXI7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBFcnJvckNvZGU6OlF1YW50aWZpZXJPdXRP
Zk9yZGVyOwogICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFRva2VuV2FzQW5BdG9tID0gZmFs
c2U7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
fQpAQCAtODE1LDI5ICs4MTIsMjggQEAgY2xhc3MgUGFyc2VyIHsKICAgICAgICAgICAgICAgICBs
YXN0VG9rZW5XYXNBbkF0b20gPSB0cnVlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBp
ZiAobV9lcnIpCisgICAgICAgICAgICBpZiAoaGFzRXJyb3IobV9lcnIpKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX3BhcmVudGhlc2VzTmVzdGlu
Z0RlcHRoID4gMCkKLSAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46Ok1pc3NpbmdQYXJl
bnRoZXNlczsKKyAgICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpNaXNzaW5nUGFyZW50aGVz
ZXM7CiAgICAgfQogCiAgICAgLyoKICAgICAgKiBwYXJzZSgpOgogICAgICAqCi0gICAgICogVGhp
cyBtZXRob2QgY2FsbHMgcGFyc2VUb2tlbnMoKSB0byBwYXJzZSBvdmVyIHRoZSBpbnB1dCBhbmQg
Y29udmVydHMgYW55Ci0gICAgICogZXJyb3IgY29kZSB0byBhIGNvbnN0IGNoYXIqIGZvciBhIHJl
c3VsdC4KKyAgICAgKiBUaGlzIG1ldGhvZCBjYWxscyBwYXJzZVRva2VucygpIHRvIHBhcnNlIG92
ZXIgdGhlIGlucHV0IGFuZCByZXR1cm5zIGVycm9yIGNvZGUgZm9yIGEgcmVzdWx0LgogICAgICAq
LwotICAgIGNvbnN0IGNoYXIqIHBhcnNlKCkKKyAgICBFcnJvckNvZGUgcGFyc2UoKQogICAgIHsK
ICAgICAgICAgaWYgKG1fc2l6ZSA+IE1BWF9QQVRURVJOX1NJWkUpCi0gICAgICAgICAgICBtX2Vy
ciA9IFlhcnJQYXR0ZXJuOjpQYXR0ZXJuVG9vTGFyZ2U7CisgICAgICAgICAgICBtX2VyciA9IEVy
cm9yQ29kZTo6UGF0dGVyblRvb0xhcmdlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwYXJz
ZVRva2VucygpOwotICAgICAgICBBU1NFUlQoYXRFbmRPZlBhdHRlcm4oKSB8fCBtX2Vycik7Cisg
ICAgICAgIEFTU0VSVChhdEVuZE9mUGF0dGVybigpIHx8IGhhc0Vycm9yKG1fZXJyKSk7CiAgICAg
ICAgIAotICAgICAgICByZXR1cm4gWWFyclBhdHRlcm46OmVycm9yTWVzc2FnZShtX2Vycik7Cisg
ICAgICAgIHJldHVybiBtX2VycjsKICAgICB9CiAKICAgICAvLyBNaXNjIGhlbHBlciBmdW5jdGlv
bnM6CkBAIC04OTIsMjIgKzg4OCwyMiBAQCBjbGFzcyBQYXJzZXIgewogICAgICAgICAgICAgaW50
IGNvZGVQb2ludCA9IDA7CiAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgaWYgKGF0
RW5kT2ZQYXR0ZXJuKCkgfHwgIWlzQVNDSUlIZXhEaWdpdChwZWVrKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OkludmFsaWRVbmljb2RlRXNjYXBlOworICAg
ICAgICAgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29kZTo6SW52YWxpZFVuaWNvZGVFc2NhcGU7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgICAgICBjb2RlUG9pbnQgPSAoY29kZVBvaW50IDw8IDQpIHwgdG9BU0NJSUhleFZh
bHVlKGNvbnN1bWUoKSk7CiAKICAgICAgICAgICAgICAgICBpZiAoY29kZVBvaW50ID4gVUNIQVJf
TUFYX1ZBTFVFKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46Oklu
dmFsaWRVbmljb2RlRXNjYXBlOworICAgICAgICAgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29k
ZTo6SW52YWxpZFVuaWNvZGVFc2NhcGU7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IHdoaWxlICghYXRFbmRPZlBhdHRlcm4o
KSAmJiBwZWVrKCkgIT0gJ30nKTsKICAgICAgICAgICAgIGlmICghYXRFbmRPZlBhdHRlcm4oKSAm
JiBwZWVrKCkgPT0gJ30nKQogICAgICAgICAgICAgICAgIGNvbnN1bWUoKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKCFtX2VycikKLSAgICAgICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpJ
bnZhbGlkVW5pY29kZUVzY2FwZTsKLSAgICAgICAgICAgIGlmIChtX2VycikKKyAgICAgICAgICAg
IGVsc2UgaWYgKCFoYXNFcnJvcihtX2VycikpCisgICAgICAgICAgICAgICAgbV9lcnIgPSBFcnJv
ckNvZGU6OkludmFsaWRVbmljb2RlRXNjYXBlOworICAgICAgICAgICAgaWYgKGhhc0Vycm9yKG1f
ZXJyKSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAKICAgICAgICAgICAgIHJldHVybiBj
b2RlUG9pbnQ7CkBAIC0xMDUzLDcgKzEwNDksNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIHN0ZDo6
b3B0aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+IHRyeUNvbnN1bWVVbmljb2RlUHJvcGVy
dHlFeHByZXNzaW9uKCkKICAgICB7CiAgICAgICAgIGlmIChhdEVuZE9mUGF0dGVybigpIHx8ICFp
c1VuaWNvZGVQcm9wZXJ0eVZhbHVlRXhwcmVzc2lvbkNoYXIocGVlaygpKSkgewotICAgICAgICAg
ICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6SW52YWxpZFVuaWNvZGVQcm9wZXJ0eUV4cHJlc3Npb247
CisgICAgICAgICAgICBtX2VyciA9IEVycm9yQ29kZTo6SW52YWxpZFVuaWNvZGVQcm9wZXJ0eUV4
cHJlc3Npb247CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAK
QEAgLTEwNjksMjAgKzEwNjUsMjAgQEAgY2xhc3MgUGFyc2VyIHsKICAgICAgICAgICAgIGlmIChj
aCA9PSAnfScpIHsKICAgICAgICAgICAgICAgICBjb25zdW1lKCk7CiAgICAgICAgICAgICAgICAg
aWYgKGVycm9ycykgewotICAgICAgICAgICAgICAgICAgICBtX2VyciA9IFlhcnJQYXR0ZXJuOjpJ
bnZhbGlkVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbjsKKyAgICAgICAgICAgICAgICAgICAgbV9l
cnIgPSBFcnJvckNvZGU6OkludmFsaWRVbmljb2RlUHJvcGVydHlFeHByZXNzaW9uOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgICAgIGlmIChmb3VuZEVxdWFscykgewogICAgICAgICAgICAgICAgICAgICBh
dXRvIHJlc3VsdCA9IHVuaWNvZGVNYXRjaFByb3BlcnR5VmFsdWUodW5pY29kZVByb3BlcnR5TmFt
ZSwgZXhwcmVzc2lvbkJ1aWxkZXIudG9TdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICghcmVzdWx0KQotICAgICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6
SW52YWxpZFVuaWNvZGVQcm9wZXJ0eUV4cHJlc3Npb247CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX2VyciA9IEVycm9yQ29kZTo6SW52YWxpZFVuaWNvZGVQcm9wZXJ0eUV4cHJlc3Npb247CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSB1bmljb2RlTWF0Y2hQcm9wZXJ0eShleHByZXNz
aW9uQnVpbGRlci50b1N0cmluZygpKTsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKLSAg
ICAgICAgICAgICAgICAgICAgbV9lcnIgPSBZYXJyUGF0dGVybjo6SW52YWxpZFVuaWNvZGVQcm9w
ZXJ0eUV4cHJlc3Npb247CisgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gRXJyb3JDb2RlOjpJ
bnZhbGlkVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbjsKICAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgICAgICAgICAgfQogCkBAIC0xMTAwLDE4ICsxMDk2LDE4IEBAIGNsYXNzIFBh
cnNlciB7CiAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbkJ1aWxkZXIuYXBwZW5kKGNoKTsKICAg
ICAgICAgfQogCi0gICAgICAgIG1fZXJyID0gWWFyclBhdHRlcm46OkludmFsaWRVbmljb2RlUHJv
cGVydHlFeHByZXNzaW9uOworICAgICAgICBtX2VyciA9IEVycm9yQ29kZTo6SW52YWxpZFVuaWNv
ZGVQcm9wZXJ0eUV4cHJlc3Npb247CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgRGVsZWdhdGUmIG1fZGVsZWdhdGU7CiAgICAgdW5zaWduZWQgbV9iYWNrUmVmZXJl
bmNlTGltaXQ7Ci0gICAgWWFyclBhdHRlcm46OkVycm9yQ29kZSBtX2VycjsKKyAgICBFcnJvckNv
ZGUgbV9lcnIgeyBFcnJvckNvZGU6Ok5vRXJyb3IgfTsKICAgICBjb25zdCBDaGFyVHlwZSogbV9k
YXRhOwogICAgIHVuc2lnbmVkIG1fc2l6ZTsKLSAgICB1bnNpZ25lZCBtX2luZGV4OworICAgIHVu
c2lnbmVkIG1faW5kZXggeyAwIH07CiAgICAgYm9vbCBtX2lzVW5pY29kZTsKLSAgICB1bnNpZ25l
ZCBtX3BhcmVudGhlc2VzTmVzdGluZ0RlcHRoOworICAgIHVuc2lnbmVkIG1fcGFyZW50aGVzZXNO
ZXN0aW5nRGVwdGggeyAwIH07CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fY2FwdHVyZUdyb3VwTmFt
ZXM7CiAKICAgICAvLyBEZXJpdmVkIGJ5IGVtcGlyaWNhbCB0ZXN0aW5nIG9mIGNvbXBpbGUgdGlt
ZSBpbiBQQ1JFIGFuZCBXUkVDLgpAQCAtMTE3OSw3ICsxMTc1LDcgQEAgY2xhc3MgUGFyc2VyIHsK
ICAqLwogCiB0ZW1wbGF0ZTxjbGFzcyBEZWxlZ2F0ZT4KLWNvbnN0IGNoYXIqIHBhcnNlKERlbGVn
YXRlJiBkZWxlZ2F0ZSwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIGlzVW5pY29kZSwgdW5z
aWduZWQgYmFja1JlZmVyZW5jZUxpbWl0ID0gcXVhbnRpZnlJbmZpbml0ZSkKK0Vycm9yQ29kZSBw
YXJzZShEZWxlZ2F0ZSYgZGVsZWdhdGUsIGNvbnN0IFN0cmluZyYgcGF0dGVybiwgYm9vbCBpc1Vu
aWNvZGUsIHVuc2lnbmVkIGJhY2tSZWZlcmVuY2VMaW1pdCA9IHF1YW50aWZ5SW5maW5pdGUpCiB7
CiAgICAgaWYgKHBhdHRlcm4uaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBQYXJzZXI8RGVsZWdh
dGUsIExDaGFyPihkZWxlZ2F0ZSwgcGF0dGVybiwgaXNVbmljb2RlLCBiYWNrUmVmZXJlbmNlTGlt
aXQpLnBhcnNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
UGF0dGVybi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAK
aW5kZXggOWFkODYwY2E2Y2UwN2I1NDYxODdlMzJhMjU3NGVjOTIzNThhYTM4Yi4uMjQwYWY3NGNi
ZTYyNTk0OWJkYTUyNzg4NWRjMWQ4NDhhNDYzYzgxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJQYXR0ZXJuLmNwcApAQCAtNDM1LDcgKzQzNSw2IEBAIGNsYXNzIFlhcnJQYXR0
ZXJuQ29uc3RydWN0b3IgewogICAgICAgICA6IG1fcGF0dGVybihwYXR0ZXJuKQogICAgICAgICAs
IG1fY2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3RvcihwYXR0ZXJuLmlnbm9yZUNhc2UoKSwgcGF0dGVy
bi51bmljb2RlKCkgPyBDYW5vbmljYWxNb2RlOjpVbmljb2RlIDogQ2Fub25pY2FsTW9kZTo6VUNT
MikKICAgICAgICAgLCBtX3N0YWNrTGltaXQoc3RhY2tMaW1pdCkKLSAgICAgICAgLCBtX2ludmVy
dFBhcmVudGhldGljYWxBc3NlcnRpb24oZmFsc2UpCiAgICAgewogICAgICAgICBhdXRvIGJvZHkg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKICAgICAgICAgbV9wYXR0
ZXJuLm1fYm9keSA9IGJvZHkuZ2V0KCk7CkBAIC03NjQsMTIgKzc2MywxMiBAQCBjbGFzcyBZYXJy
UGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgbV9hbHRlcm5hdGl2ZSA9IG1fYWx0ZXJuYXRp
dmUtPm1fcGFyZW50LT5hZGROZXdBbHRlcm5hdGl2ZSgpOwogICAgIH0KIAotICAgIFlhcnJQYXR0
ZXJuOjpFcnJvckNvZGUgc2V0dXBBbHRlcm5hdGl2ZU9mZnNldHMoUGF0dGVybkFsdGVybmF0aXZl
KiBhbHRlcm5hdGl2ZSwgdW5zaWduZWQgY3VycmVudENhbGxGcmFtZVNpemUsIHVuc2lnbmVkIGlu
aXRpYWxJbnB1dFBvc2l0aW9uLCB1bnNpZ25lZCYgbmV3Q2FsbEZyYW1lU2l6ZSkgV0FSTl9VTlVT
RURfUkVUVVJOCisgICAgRXJyb3JDb2RlIHNldHVwQWx0ZXJuYXRpdmVPZmZzZXRzKFBhdHRlcm5B
bHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUsIHVuc2lnbmVkIGN1cnJlbnRDYWxsRnJhbWVTaXplLCB1
bnNpZ25lZCBpbml0aWFsSW5wdXRQb3NpdGlvbiwgdW5zaWduZWQmIG5ld0NhbGxGcmFtZVNpemUp
IFdBUk5fVU5VU0VEX1JFVFVSTgogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFpc1NhZmVU
b1JlY3Vyc2UoKSkpCi0gICAgICAgICAgICByZXR1cm4gWWFyclBhdHRlcm46OlRvb01hbnlEaXNq
dW5jdGlvbnM7CisgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2RlOjpUb29NYW55RGlzanVuY3Rp
b25zOwogCi0gICAgICAgIFlhcnJQYXR0ZXJuOjpFcnJvckNvZGUgZXJyb3IgPSBZYXJyUGF0dGVy
bjo6Tm9FcnJvcjsKKyAgICAgICAgRXJyb3JDb2RlIGVycm9yID0gRXJyb3JDb2RlOjpOb0Vycm9y
OwogICAgICAgICBhbHRlcm5hdGl2ZS0+bV9oYXNGaXhlZFNpemUgPSB0cnVlOwogICAgICAgICBD
aGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gY3VycmVudElucHV0UG9zaXRpb24gPSBp
bml0aWFsSW5wdXRQb3NpdGlvbjsKIApAQCAtODAzLDcgKzgwMiw3IEBAIGNsYXNzIFlhcnJQYXR0
ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAgICAgICAgICAgICBDaGVja2VkPHVuc2lnbmVkLCBS
ZWNvcmRPdmVyZmxvdz4gdGVtcENvdW50ID0gdGVybS5xdWFudGl0eU1heENvdW50OwogICAgICAg
ICAgICAgICAgICAgICB0ZW1wQ291bnQgKj0gVTE2X0xFTkdUSCh0ZXJtLnBhdHRlcm5DaGFyYWN0
ZXIpOwogICAgICAgICAgICAgICAgICAgICBpZiAodGVtcENvdW50Lmhhc092ZXJmbG93ZWQoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBZYXJyUGF0dGVybjo6T2Zmc2V0VG9vTGFy
Z2U7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2RlOjpPZmZzZXRUb29M
YXJnZTsKICAgICAgICAgICAgICAgICAgICAgY3VycmVudElucHV0UG9zaXRpb24gKz0gdGVtcENv
dW50OwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBjdXJyZW50
SW5wdXRQb3NpdGlvbiArPSB0ZXJtLnF1YW50aXR5TWF4Q291bnQ7CkBAIC04MzAsNyArODI5LDcg
QEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgICAgICAgICAgaWYgKHRl
cm0ucXVhbnRpdHlNYXhDb3VudCA9PSAxICYmICF0ZXJtLnBhcmVudGhlc2VzLmlzQ29weSkgewog
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFj
ZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlc09uY2U7CiAgICAgICAgICAgICAgICAgICAgIGVy
cm9yID0gc2V0dXBEaXNqdW5jdGlvbk9mZnNldHModGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlv
biwgY3VycmVudENhbGxGcmFtZVNpemUsIGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgp
LCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0Vycm9yKGVycm9yKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICAgICAgICAgICAgICAgICAgLy8gSWYgcXVhbnRp
dHkgaXMgZml4ZWQsIHRoZW4gcHJlLWNoZWNrIGl0cyBtaW5pbXVtIHNpemUuCiAgICAgICAgICAg
ICAgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyRml4ZWRDb3VudCkK
QEAgLTgzOSwxNCArODM4LDE0IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVybS5wYXJlbnRoZXNlcy5pc1Rlcm1pbmFsKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDYWxsRnJhbWVTaXplICs9IFlhcnJTdGFja1NwYWNl
Rm9yQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzVGVybWluYWw7CiAgICAgICAgICAgICAgICAgICAg
IGVycm9yID0gc2V0dXBEaXNqdW5jdGlvbk9mZnNldHModGVybS5wYXJlbnRoZXNlcy5kaXNqdW5j
dGlvbiwgY3VycmVudENhbGxGcmFtZVNpemUsIGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdl
dCgpLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlcnJv
cikKKyAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0Vycm9yKGVycm9yKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICAgICAgICAgICAgICAgICAgdGVybS5pbnB1
dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCk7CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0g
Y3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRDYWxsRnJhbWVTaXplICs9IFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb1BhcmVu
dGhlc2VzOwogICAgICAgICAgICAgICAgICAgICBlcnJvciA9IHNldHVwRGlzanVuY3Rpb25PZmZz
ZXRzKHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJlbnRDYWxsRnJhbWVTaXplLCBj
dXJyZW50SW5wdXRQb3NpdGlvbi51bnNhZmVHZXQoKSwgY3VycmVudENhbGxGcmFtZVNpemUpOwot
ICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgICAgIGlmICho
YXNFcnJvcihlcnJvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8vIEZpeGVkIGNvdW50IG9mIDEgY291
bGQgYmUgYWNjZXB0ZWQsIGlmIHRoZXkgaGF2ZSBhIGZpeGVkIHNpemUgKkFORCogaWYgYWxsIGFs
dGVybmF0aXZlcyBhcmUgb2YgdGhlIHNhbWUgbGVuZ3RoLgpAQCAtODU3LDcgKzg1Niw3IEBAIGNs
YXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQ
b3NpdGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpOwogICAgICAgICAgICAg
ICAgIHRlcm0uZnJhbWVMb2NhdGlvbiA9IGN1cnJlbnRDYWxsRnJhbWVTaXplOwogICAgICAgICAg
ICAgICAgIGVycm9yID0gc2V0dXBEaXNqdW5jdGlvbk9mZnNldHModGVybS5wYXJlbnRoZXNlcy5k
aXNqdW5jdGlvbiwgY3VycmVudENhbGxGcmFtZVNpemUgKyBZYXJyU3RhY2tTcGFjZUZvckJhY2tU
cmFja0luZm9QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uLCBjdXJyZW50SW5wdXRQb3NpdGlvbi51bnNh
ZmVHZXQoKSwgY3VycmVudENhbGxGcmFtZVNpemUpOwotICAgICAgICAgICAgICAgIGlmIChlcnJv
cikKKyAgICAgICAgICAgICAgICBpZiAoaGFzRXJyb3IoZXJyb3IpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZXJyb3I7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTg3MSw3ICs4
NzAsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjdXJyZW50SW5wdXRQb3NpdGlv
bi5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFlhcnJQYXR0ZXJuOjpP
ZmZzZXRUb29MYXJnZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2RlOjpPZmZzZXRU
b29MYXJnZTsKICAgICAgICAgfQogCiAgICAgICAgIGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXpl
ID0gKGN1cnJlbnRJbnB1dFBvc2l0aW9uIC0gaW5pdGlhbElucHV0UG9zaXRpb24pLnVuc2FmZUdl
dCgpOwpAQCAtODc5LDEwICs4NzgsMTAgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7
CiAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9CiAKLSAgICBZYXJyUGF0dGVybjo6RXJyb3JD
b2RlIHNldHVwRGlzanVuY3Rpb25PZmZzZXRzKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rp
b24sIHVuc2lnbmVkIGluaXRpYWxDYWxsRnJhbWVTaXplLCB1bnNpZ25lZCBpbml0aWFsSW5wdXRQ
b3NpdGlvbiwgdW5zaWduZWQmIGNhbGxGcmFtZVNpemUpCisgICAgRXJyb3JDb2RlIHNldHVwRGlz
anVuY3Rpb25PZmZzZXRzKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIHVuc2lnbmVk
IGluaXRpYWxDYWxsRnJhbWVTaXplLCB1bnNpZ25lZCBpbml0aWFsSW5wdXRQb3NpdGlvbiwgdW5z
aWduZWQmIGNhbGxGcmFtZVNpemUpCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoIWlzU2Fm
ZVRvUmVjdXJzZSgpKSkKLSAgICAgICAgICAgIHJldHVybiBZYXJyUGF0dGVybjo6VG9vTWFueURp
c2p1bmN0aW9uczsKKyAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGU6OlRvb01hbnlEaXNqdW5j
dGlvbnM7CiAKICAgICAgICAgaWYgKChkaXNqdW5jdGlvbiAhPSBtX3BhdHRlcm4ubV9ib2R5KSAm
JiAoZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLnNpemUoKSA+IDEpKQogICAgICAgICAgICAg
aW5pdGlhbENhbGxGcmFtZVNpemUgKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvQWx0
ZXJuYXRpdmU7CkBAIC04OTAsMTMgKzg4OSwxMyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVj
dG9yIHsKICAgICAgICAgdW5zaWduZWQgbWluaW11bUlucHV0U2l6ZSA9IFVJTlRfTUFYOwogICAg
ICAgICB1bnNpZ25lZCBtYXhpbXVtQ2FsbEZyYW1lU2l6ZSA9IDA7CiAgICAgICAgIGJvb2wgaGFz
Rml4ZWRTaXplID0gdHJ1ZTsKLSAgICAgICAgWWFyclBhdHRlcm46OkVycm9yQ29kZSBlcnJvciA9
IFlhcnJQYXR0ZXJuOjpOb0Vycm9yOworICAgICAgICBFcnJvckNvZGUgZXJyb3IgPSBFcnJvckNv
ZGU6Ok5vRXJyb3I7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBhbHQgPSAwOyBhbHQgPCBkaXNq
dW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXMuc2l6ZSgpOyArK2FsdCkgewogICAgICAgICAgICAgUGF0
dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZl
c1thbHRdLmdldCgpOwogICAgICAgICAgICAgdW5zaWduZWQgY3VycmVudEFsdGVybmF0aXZlQ2Fs
bEZyYW1lU2l6ZTsKICAgICAgICAgICAgIGVycm9yID0gc2V0dXBBbHRlcm5hdGl2ZU9mZnNldHMo
YWx0ZXJuYXRpdmUsIGluaXRpYWxDYWxsRnJhbWVTaXplLCBpbml0aWFsSW5wdXRQb3NpdGlvbiwg
Y3VycmVudEFsdGVybmF0aXZlQ2FsbEZyYW1lU2l6ZSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3Ip
CisgICAgICAgICAgICBpZiAoaGFzRXJyb3IoZXJyb3IpKQogICAgICAgICAgICAgICAgIHJldHVy
biBlcnJvcjsKICAgICAgICAgICAgIG1pbmltdW1JbnB1dFNpemUgPSBzdGQ6Om1pbihtaW5pbXVt
SW5wdXRTaXplLCBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSk7CiAgICAgICAgICAgICBtYXhp
bXVtQ2FsbEZyYW1lU2l6ZSA9IHN0ZDo6bWF4KG1heGltdW1DYWxsRnJhbWVTaXplLCBjdXJyZW50
QWx0ZXJuYXRpdmVDYWxsRnJhbWVTaXplKTsKQEAgLTkxNSwxNCArOTE0LDExIEBAIGNsYXNzIFlh
cnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQogCi0g
ICAgY29uc3QgY2hhciogc2V0dXBPZmZzZXRzKCkKKyAgICBFcnJvckNvZGUgc2V0dXBPZmZzZXRz
KCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBZYXJyIHNob3VsZCBub3QgdXNlIHRoZSBzdGFj
ayB0byBoYW5kbGUgc3VicGF0dGVybnMgKHJkYXI6Ly9wcm9ibGVtLzI2NDM2MzE0KS4KICAgICAg
ICAgdW5zaWduZWQgaWdub3JlZENhbGxGcmFtZVNpemU7Ci0gICAgICAgIFlhcnJQYXR0ZXJuOjpF
cnJvckNvZGUgZXJyb3IgPSBzZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyhtX3BhdHRlcm4ubV9ib2R5
LCAwLCAwLCBpZ25vcmVkQ2FsbEZyYW1lU2l6ZSk7Ci0gICAgICAgIGlmIChlcnJvcikKLSAgICAg
ICAgICAgIHJldHVybiBZYXJyUGF0dGVybjo6ZXJyb3JNZXNzYWdlKGVycm9yKTsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyht
X3BhdHRlcm4ubV9ib2R5LCAwLCAwLCBpZ25vcmVkQ2FsbEZyYW1lU2l6ZSk7CiAgICAgfQogCiAg
ICAgLy8gVGhpcyBvcHRpbWl6YXRpb24gaWRlbnRpZmllcyBzZXRzIG9mIHBhcmVudGhlc2VzIHRo
YXQgd2Ugd2lsbCBuZXZlciBuZWVkIHRvIGJhY2t0cmFjay4KQEAgLTEwODQsNDggKzEwODAsMjEg
QEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgQ2hhcmFjdGVyQ2xhc3NDb25z
dHJ1Y3RvciBtX2NoYXJhY3RlckNsYXNzQ29uc3RydWN0b3I7CiAgICAgdm9pZCogbV9zdGFja0xp
bWl0OwogICAgIGJvb2wgbV9pbnZlcnRDaGFyYWN0ZXJDbGFzczsKLSAgICBib29sIG1faW52ZXJ0
UGFyZW50aGV0aWNhbEFzc2VydGlvbjsKKyAgICBib29sIG1faW52ZXJ0UGFyZW50aGV0aWNhbEFz
c2VydGlvbiB7IGZhbHNlIH07CiB9OwogCi1jb25zdCBjaGFyKiBZYXJyUGF0dGVybjo6ZXJyb3JN
ZXNzYWdlKFlhcnJQYXR0ZXJuOjpFcnJvckNvZGUgZXJyb3IpCi17Ci0jZGVmaW5lIFJFR0VYUF9F
UlJPUl9QUkVGSVggIkludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiAiCi0gICAgLy8gVGhlIG9y
ZGVyIG9mIHRoaXMgYXJyYXkgbXVzdCBtYXRjaCB0aGUgRXJyb3JDb2RlIGVudW0uCi0gICAgc3Rh
dGljIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZXNbTnVtYmVyT2ZFcnJvckNvZGVzXSA9IHsKLSAg
ICAgICAgbnVsbHB0ciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIE5vRXJyb3IKLSAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJ
WCAicmVndWxhciBleHByZXNzaW9uIHRvbyBsYXJnZSIsICAgICAgICAgICAgICAgICAgIC8vIFBh
dHRlcm5Ub29MYXJnZSAgICAgCi0gICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggIm51bWJlcnMg
b3V0IG9mIG9yZGVyIGluIHt9IHF1YW50aWZpZXIiLCAgICAgICAgICAvLyBRdWFudGlmaWVyT3V0
T2ZPcmRlcgotICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJub3RoaW5nIHRvIHJlcGVhdCIs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUXVhbnRpZmllcldpdGhvdXRBdG9tCi0g
ICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggIm51bWJlciB0b28gbGFyZ2UgaW4ge30gcXVhbnRp
ZmllciIsICAgICAgICAgICAgICAvLyBRdWFudGlmaWVyVG9vTGFyZ2UKLSAgICAgICAgUkVHRVhQ
X0VSUk9SX1BSRUZJWCAibWlzc2luZyApIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIE1pc3NpbmdQYXJlbnRoZXNlcwotICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklY
ICJ1bm1hdGNoZWQgcGFyZW50aGVzZXMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFy
ZW50aGVzZXNVbm1hdGNoZWQKLSAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAidW5yZWNvZ25p
emVkIGNoYXJhY3RlciBhZnRlciAoPyIsICAgICAgICAgICAgICAgIC8vIFBhcmVudGhlc2VzVHlw
ZUludmFsaWQKLSAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAiaW52YWxpZCBncm91cCBzcGVj
aWZpZXIgbmFtZSIsICAgICAgICAgICAgICAgICAgIC8vIEludmFsaWRHcm91cE5hbWUKLSAgICAg
ICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAiZHVwbGljYXRlIGdyb3VwIHNwZWNpZmllciBuYW1lIiwg
ICAgICAgICAgICAgICAgIC8vIER1cGxpY2F0ZUdyb3VwTmFtZQotICAgICAgICBSRUdFWFBfRVJS
T1JfUFJFRklYICJtaXNzaW5nIHRlcm1pbmF0aW5nIF0gZm9yIGNoYXJhY3RlciBjbGFzcyIsICAg
ICAgLy8gQ2hhcmFjdGVyQ2xhc3NVbm1hdGNoZWQKLSAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJ
WCAicmFuZ2Ugb3V0IG9mIG9yZGVyIGluIGNoYXJhY3RlciBjbGFzcyIsICAgICAgICAgIC8vIENo
YXJhY3RlckNsYXNzT3V0T2ZPcmRlcgotICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJcXCBh
dCBlbmQgb2YgcGF0dGVybiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXNjYXBlVW50
ZXJtaW5hdGVkCi0gICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggImludmFsaWQgdW5pY29kZSB7
fSBlc2NhcGUiLCAgICAgICAgICAgICAgICAgICAgICAvLyBJbnZhbGlkVW5pY29kZUVzY2FwZQot
ICAgICAgICBSRUdFWFBfRVJST1JfUFJFRklYICJpbnZhbGlkIGJhY2tyZWZlcmVuY2UgZm9yIHVu
aWNvZGUgcGF0dGVybiIsICAgICAgLy8gSW52YWxpZEJhY2tyZWZlcmVuY2UKLSAgICAgICAgUkVH
RVhQX0VSUk9SX1BSRUZJWCAiaW52YWxpZCBlc2NhcGVkIGNoYXJhY3RlciBmb3IgdW5pY29kZSBw
YXR0ZXJuIiwgIC8vIEludmFsaWRJZGVudGl0eUVzY2FwZQotICAgICAgICBSRUdFWFBfRVJST1Jf
UFJFRklYICJpbnZhbGlkIHByb3BlcnR5IGV4cHJlc3Npb24iLCAgICAgICAgICAgICAgICAgICAg
Ly8gSW52YWxpZFVuaWNvZGVQcm9wZXJ0eUV4cHJlc3Npb24KLSAgICAgICAgUkVHRVhQX0VSUk9S
X1BSRUZJWCAidG9vIG1hbnkgbmVzdGVkIGRpc2p1bmN0aW9ucyIsICAgICAgICAgICAgICAgICAg
IC8vIFRvb01hbnlEaXNqdW5jdGlvbnMKLSAgICAgICAgUkVHRVhQX0VSUk9SX1BSRUZJWCAicGF0
dGVybiBleGNlZWRzIHN0cmluZyBsZW5ndGggbGltaXRzIiwgICAgICAgICAgIC8vIE9mZnNldFRv
b0xhcmdlCi0gICAgICAgIFJFR0VYUF9FUlJPUl9QUkVGSVggImludmFsaWQgZmxhZ3MiICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnZhbGlkUmVndWxhckV4cHJlc3Npb25G
bGFncwotICAgIH07Ci0KLSAgICByZXR1cm4gZXJyb3JNZXNzYWdlc1tlcnJvcl07Ci19Ci0KLWNv
bnN0IGNoYXIqIFlhcnJQYXR0ZXJuOjpjb21waWxlKGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmlu
Zywgdm9pZCogc3RhY2tMaW1pdCkKK0Vycm9yQ29kZSBZYXJyUGF0dGVybjo6Y29tcGlsZShjb25z
dCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIHZvaWQqIHN0YWNrTGltaXQpCiB7CiAgICAgWWFyclBh
dHRlcm5Db25zdHJ1Y3RvciBjb25zdHJ1Y3RvcigqdGhpcywgc3RhY2tMaW1pdCk7CiAKICAgICBp
ZiAobV9mbGFncyA9PSBJbnZhbGlkRmxhZ3MpCi0gICAgICAgIHJldHVybiBlcnJvck1lc3NhZ2Uo
SW52YWxpZFJlZ3VsYXJFeHByZXNzaW9uRmxhZ3MpOworICAgICAgICByZXR1cm4gRXJyb3JDb2Rl
OjpJbnZhbGlkUmVndWxhckV4cHJlc3Npb25GbGFnczsKIAotICAgIGlmIChjb25zdCBjaGFyKiBl
cnJvciA9IHBhcnNlKGNvbnN0cnVjdG9yLCBwYXR0ZXJuU3RyaW5nLCB1bmljb2RlKCkpKQotICAg
ICAgICByZXR1cm4gZXJyb3I7CisgICAgeworICAgICAgICBFcnJvckNvZGUgZXJyb3IgPSBwYXJz
ZShjb25zdHJ1Y3RvciwgcGF0dGVyblN0cmluZywgdW5pY29kZSgpKTsKKyAgICAgICAgaWYgKGhh
c0Vycm9yKGVycm9yKSkKKyAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CiAgICAgCiAg
ICAgLy8gSWYgdGhlIHBhdHRlcm4gY29udGFpbnMgaWxsZWdhbCBiYWNrcmVmZXJlbmNlcyByZXNl
dCAmIHJlcGFyc2UuCiAgICAgLy8gUXVvdGluZyBOZXRzY2FwZSdzICJXaGF0J3MgbmV3IGluIEph
dmFTY3JpcHQgMS4yIiwKQEAgLTExMzMsNTIgKzExMDIsMzkgQEAgY29uc3QgY2hhciogWWFyclBh
dHRlcm46OmNvbXBpbGUoY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCB2b2lkKiBzdGFja0xp
bWl0KQogICAgIC8vICAgICAgIGluIFwjLCB0aGUgXCMgaXMgdGFrZW4gYXMgYW4gb2N0YWwgZXNj
YXBlIGFzIGRlc2NyaWJlZCBpbiB0aGUgbmV4dCByb3cuIgogICAgIGlmIChjb250YWluc0lsbGVn
YWxCYWNrUmVmZXJlbmNlKCkpIHsKICAgICAgICAgaWYgKHVuaWNvZGUoKSkKLSAgICAgICAgICAg
IHJldHVybiBlcnJvck1lc3NhZ2UoSW52YWxpZEJhY2tyZWZlcmVuY2UpOworICAgICAgICAgICAg
cmV0dXJuIEVycm9yQ29kZTo6SW52YWxpZEJhY2tyZWZlcmVuY2U7CiAKICAgICAgICAgdW5zaWdu
ZWQgbnVtU3VicGF0dGVybnMgPSBtX251bVN1YnBhdHRlcm5zOwogCiAgICAgICAgIGNvbnN0cnVj
dG9yLnJlc2V0KCk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICBjb25zdCBjaGFyKiBl
cnJvciA9Ci0jZW5kaWYKLSAgICAgICAgICAgIHBhcnNlKGNvbnN0cnVjdG9yLCBwYXR0ZXJuU3Ry
aW5nLCB1bmljb2RlKCksIG51bVN1YnBhdHRlcm5zKTsKLQotICAgICAgICBBU1NFUlQoIWVycm9y
KTsKKyAgICAgICAgRXJyb3JDb2RlIGVycm9yID0gcGFyc2UoY29uc3RydWN0b3IsIHBhdHRlcm5T
dHJpbmcsIHVuaWNvZGUoKSwgbnVtU3VicGF0dGVybnMpOworICAgICAgICBBU1NFUlRfVU5VU0VE
KGVycm9yLCAhaGFzRXJyb3IoZXJyb3IpKTsKICAgICAgICAgQVNTRVJUKG51bVN1YnBhdHRlcm5z
ID09IG1fbnVtU3VicGF0dGVybnMpOwogICAgIH0KIAogICAgIGNvbnN0cnVjdG9yLmNoZWNrRm9y
VGVybWluYWxQYXJlbnRoZXNlcygpOwogICAgIGNvbnN0cnVjdG9yLm9wdGltaXplRG90U3Rhcldy
YXBwZWRFeHByZXNzaW9ucygpOwogICAgIGNvbnN0cnVjdG9yLm9wdGltaXplQk9MKCk7Ci0gICAg
ICAgIAotICAgIGlmIChjb25zdCBjaGFyKiBlcnJvciA9IGNvbnN0cnVjdG9yLnNldHVwT2Zmc2V0
cygpKQotICAgICAgICByZXR1cm4gZXJyb3I7CisKKyAgICB7CisgICAgICAgIEVycm9yQ29kZSBl
cnJvciA9IGNvbnN0cnVjdG9yLnNldHVwT2Zmc2V0cygpOworICAgICAgICBpZiAoaGFzRXJyb3Io
ZXJyb3IpKQorICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KIAogICAgIGlmIChPcHRp
b25zOjpkdW1wQ29tcGlsZWRSZWdFeHBQYXR0ZXJucygpKQogICAgICAgICBkdW1wUGF0dGVybihw
YXR0ZXJuU3RyaW5nKTsKIAotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBFcnJvckNv
ZGU6Ok5vRXJyb3I7CiB9CiAKLVlhcnJQYXR0ZXJuOjpZYXJyUGF0dGVybihjb25zdCBTdHJpbmcm
IHBhdHRlcm4sIFJlZ0V4cEZsYWdzIGZsYWdzLCBjb25zdCBjaGFyKiogZXJyb3IsIHZvaWQqIHN0
YWNrTGltaXQpCitZYXJyUGF0dGVybjo6WWFyclBhdHRlcm4oY29uc3QgU3RyaW5nJiBwYXR0ZXJu
LCBSZWdFeHBGbGFncyBmbGFncywgRXJyb3JDb2RlKiBlcnJvciwgdm9pZCogc3RhY2tMaW1pdCkK
ICAgICA6IG1fY29udGFpbnNCYWNrcmVmZXJlbmNlcyhmYWxzZSkKICAgICAsIG1fY29udGFpbnNC
T0woZmFsc2UpCiAgICAgLCBtX2NvbnRhaW5zVW5zaWduZWRMZW5ndGhQYXR0ZXJuKGZhbHNlKQog
ICAgICwgbV9oYXNDb3BpZWRQYXJlblN1YmV4cHJlc3Npb25zKGZhbHNlKQogICAgICwgbV9zYXZl
SW5pdGlhbFN0YXJ0VmFsdWUoZmFsc2UpCiAgICAgLCBtX2ZsYWdzKGZsYWdzKQotICAgICwgbV9u
dW1TdWJwYXR0ZXJucygwKQotICAgICwgbV9tYXhCYWNrUmVmZXJlbmNlKDApCi0gICAgLCBhbnlj
aGFyQ2FjaGVkKDApCi0gICAgLCBuZXdsaW5lQ2FjaGVkKDApCi0gICAgLCBkaWdpdHNDYWNoZWQo
MCkKLSAgICAsIHNwYWNlc0NhY2hlZCgwKQotICAgICwgd29yZGNoYXJDYWNoZWQoMCkKLSAgICAs
IHdvcmRVbmljb2RlSWdub3JlQ2FzZUNoYXJDYWNoZWQoMCkKLSAgICAsIG5vbmRpZ2l0c0NhY2hl
ZCgwKQotICAgICwgbm9uc3BhY2VzQ2FjaGVkKDApCi0gICAgLCBub253b3JkY2hhckNhY2hlZCgw
KQotICAgICwgbm9ud29yZFVuaWNvZGVJZ25vcmVDYXNlY2hhckNhY2hlZCgwKQogewogICAgICpl
cnJvciA9IGNvbXBpbGUocGF0dGVybiwgc3RhY2tMaW1pdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyclBhdHRlcm4uaAppbmRleCBhMGVlZDkwM2FiNWQyNjk2ODc3MzBlMGFlODVm
OWI3NzAyYjAxNGRiLi43ZDg2NTQ2NzUxMGNiYjk5MjViZDc3NWE1MjcxMTAwYzc2ZGE5N2Y4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKQEAgLTI3LDYgKzI3LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUmVnRXhwS2V5LmgiCisjaW5jbHVkZSAiWWFy
ckVycm9yQ29kZS5oIgogI2luY2x1ZGUgIllhcnJVbmljb2RlUHJvcGVydGllcy5oIgogI2luY2x1
ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBA
IC0zNTEsMzMgKzM1Miw3IEBAIHN0cnVjdCBUZXJtQ2hhaW4gewogCiAKIHN0cnVjdCBZYXJyUGF0
dGVybiB7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgWWFyclBhdHRlcm4oY29uc3QgU3RyaW5nJiBw
YXR0ZXJuLCBSZWdFeHBGbGFncywgY29uc3QgY2hhcioqIGVycm9yLCB2b2lkKiBzdGFja0xpbWl0
ID0gbnVsbHB0cik7Ci0KLSAgICBlbnVtIEVycm9yQ29kZSB7Ci0gICAgICAgIE5vRXJyb3IsCi0g
ICAgICAgIFBhdHRlcm5Ub29MYXJnZSwKLSAgICAgICAgUXVhbnRpZmllck91dE9mT3JkZXIsCi0g
ICAgICAgIFF1YW50aWZpZXJXaXRob3V0QXRvbSwKLSAgICAgICAgUXVhbnRpZmllclRvb0xhcmdl
LAotICAgICAgICBNaXNzaW5nUGFyZW50aGVzZXMsCi0gICAgICAgIFBhcmVudGhlc2VzVW5tYXRj
aGVkLAotICAgICAgICBQYXJlbnRoZXNlc1R5cGVJbnZhbGlkLAotICAgICAgICBJbnZhbGlkR3Jv
dXBOYW1lLAotICAgICAgICBEdXBsaWNhdGVHcm91cE5hbWUsCi0gICAgICAgIENoYXJhY3RlckNs
YXNzVW5tYXRjaGVkLAotICAgICAgICBDaGFyYWN0ZXJDbGFzc091dE9mT3JkZXIsCi0gICAgICAg
IEVzY2FwZVVudGVybWluYXRlZCwKLSAgICAgICAgSW52YWxpZFVuaWNvZGVFc2NhcGUsCi0gICAg
ICAgIEludmFsaWRCYWNrcmVmZXJlbmNlLAotICAgICAgICBJbnZhbGlkSWRlbnRpdHlFc2NhcGUs
Ci0gICAgICAgIEludmFsaWRVbmljb2RlUHJvcGVydHlFeHByZXNzaW9uLAotICAgICAgICBUb29N
YW55RGlzanVuY3Rpb25zLAotICAgICAgICBPZmZzZXRUb29MYXJnZSwKLSAgICAgICAgSW52YWxp
ZFJlZ3VsYXJFeHByZXNzaW9uRmxhZ3MsCi0gICAgICAgIE51bWJlck9mRXJyb3JDb2RlcwotICAg
IH07Ci0gICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGNvbnN0IGNoYXIqIGVycm9y
TWVzc2FnZShFcnJvckNvZGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFlhcnJQYXR0ZXJuKGNv
bnN0IFN0cmluZyYgcGF0dGVybiwgUmVnRXhwRmxhZ3MsIEVycm9yQ29kZSosIHZvaWQqIHN0YWNr
TGltaXQgPSBudWxscHRyKTsKIAogICAgIHZvaWQgcmVzZXQoKQogICAgIHsKQEAgLTM5MSwxNiAr
MzY2LDE2IEBAIHN0cnVjdCBZYXJyUGF0dGVybiB7CiAgICAgICAgIG1faGFzQ29waWVkUGFyZW5T
dWJleHByZXNzaW9ucyA9IGZhbHNlOwogICAgICAgICBtX3NhdmVJbml0aWFsU3RhcnRWYWx1ZSA9
IGZhbHNlOwogCi0gICAgICAgIGFueWNoYXJDYWNoZWQgPSAwOwotICAgICAgICBuZXdsaW5lQ2Fj
aGVkID0gMDsKLSAgICAgICAgZGlnaXRzQ2FjaGVkID0gMDsKLSAgICAgICAgc3BhY2VzQ2FjaGVk
ID0gMDsKLSAgICAgICAgd29yZGNoYXJDYWNoZWQgPSAwOwotICAgICAgICB3b3JkVW5pY29kZUln
bm9yZUNhc2VDaGFyQ2FjaGVkID0gMDsKLSAgICAgICAgbm9uZGlnaXRzQ2FjaGVkID0gMDsKLSAg
ICAgICAgbm9uc3BhY2VzQ2FjaGVkID0gMDsKLSAgICAgICAgbm9ud29yZGNoYXJDYWNoZWQgPSAw
OwotICAgICAgICBub253b3JkVW5pY29kZUlnbm9yZUNhc2VjaGFyQ2FjaGVkID0gMDsKKyAgICAg
ICAgYW55Y2hhckNhY2hlZCA9IG51bGxwdHI7CisgICAgICAgIG5ld2xpbmVDYWNoZWQgPSBudWxs
cHRyOworICAgICAgICBkaWdpdHNDYWNoZWQgPSBudWxscHRyOworICAgICAgICBzcGFjZXNDYWNo
ZWQgPSBudWxscHRyOworICAgICAgICB3b3JkY2hhckNhY2hlZCA9IG51bGxwdHI7CisgICAgICAg
IHdvcmRVbmljb2RlSWdub3JlQ2FzZUNoYXJDYWNoZWQgPSBudWxscHRyOworICAgICAgICBub25k
aWdpdHNDYWNoZWQgPSBudWxscHRyOworICAgICAgICBub25zcGFjZXNDYWNoZWQgPSBudWxscHRy
OworICAgICAgICBub253b3JkY2hhckNhY2hlZCA9IG51bGxwdHI7CisgICAgICAgIG5vbndvcmRV
bmljb2RlSWdub3JlQ2FzZWNoYXJDYWNoZWQgPSBudWxscHRyOwogICAgICAgICB1bmljb2RlUHJv
cGVydGllc0NhY2hlZC5jbGVhcigpOwogCiAgICAgICAgIG1fZGlzanVuY3Rpb25zLmNsZWFyKCk7
CkBAIC01MzAsOSArNTA1LDkgQEAgc3RydWN0IFlhcnJQYXR0ZXJuIHsKICAgICBib29sIG1faGFz
Q29waWVkUGFyZW5TdWJleHByZXNzaW9ucyA6IDE7CiAgICAgYm9vbCBtX3NhdmVJbml0aWFsU3Rh
cnRWYWx1ZSA6IDE7CiAgICAgUmVnRXhwRmxhZ3MgbV9mbGFnczsKLSAgICB1bnNpZ25lZCBtX251
bVN1YnBhdHRlcm5zOwotICAgIHVuc2lnbmVkIG1fbWF4QmFja1JlZmVyZW5jZTsKLSAgICB1bnNp
Z25lZCBtX2luaXRpYWxTdGFydFZhbHVlRnJhbWVMb2NhdGlvbjsKKyAgICB1bnNpZ25lZCBtX251
bVN1YnBhdHRlcm5zIHsgMCB9OworICAgIHVuc2lnbmVkIG1fbWF4QmFja1JlZmVyZW5jZSB7IDAg
fTsKKyAgICB1bnNpZ25lZCBtX2luaXRpYWxTdGFydFZhbHVlRnJhbWVMb2NhdGlvbiB7IDAgfTsK
ICAgICBQYXR0ZXJuRGlzanVuY3Rpb24qIG1fYm9keTsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPFBhdHRlcm5EaXNqdW5jdGlvbj4sIDQ+IG1fZGlzanVuY3Rpb25zOwogICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+PiBtX3VzZXJDaGFyYWN0ZXJDbGFzc2VzOwpA
QCAtNTQwLDE4ICs1MTUsMTggQEAgc3RydWN0IFlhcnJQYXR0ZXJuIHsKICAgICBIYXNoTWFwPFN0
cmluZywgdW5zaWduZWQ+IG1fbmFtZWRHcm91cFRvUGFyZW5JbmRleDsKIAogcHJpdmF0ZToKLSAg
ICBjb25zdCBjaGFyKiBjb21waWxlKGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZywgdm9pZCog
c3RhY2tMaW1pdCk7Ci0KLSAgICBDaGFyYWN0ZXJDbGFzcyogYW55Y2hhckNhY2hlZDsKLSAgICBD
aGFyYWN0ZXJDbGFzcyogbmV3bGluZUNhY2hlZDsKLSAgICBDaGFyYWN0ZXJDbGFzcyogZGlnaXRz
Q2FjaGVkOwotICAgIENoYXJhY3RlckNsYXNzKiBzcGFjZXNDYWNoZWQ7Ci0gICAgQ2hhcmFjdGVy
Q2xhc3MqIHdvcmRjaGFyQ2FjaGVkOwotICAgIENoYXJhY3RlckNsYXNzKiB3b3JkVW5pY29kZUln
bm9yZUNhc2VDaGFyQ2FjaGVkOwotICAgIENoYXJhY3RlckNsYXNzKiBub25kaWdpdHNDYWNoZWQ7
Ci0gICAgQ2hhcmFjdGVyQ2xhc3MqIG5vbnNwYWNlc0NhY2hlZDsKLSAgICBDaGFyYWN0ZXJDbGFz
cyogbm9ud29yZGNoYXJDYWNoZWQ7Ci0gICAgQ2hhcmFjdGVyQ2xhc3MqIG5vbndvcmRVbmljb2Rl
SWdub3JlQ2FzZWNoYXJDYWNoZWQ7CisgICAgRXJyb3JDb2RlIGNvbXBpbGUoY29uc3QgU3RyaW5n
JiBwYXR0ZXJuU3RyaW5nLCB2b2lkKiBzdGFja0xpbWl0KTsKKworICAgIENoYXJhY3RlckNsYXNz
KiBhbnljaGFyQ2FjaGVkIHsgbnVsbHB0ciB9OworICAgIENoYXJhY3RlckNsYXNzKiBuZXdsaW5l
Q2FjaGVkIHsgbnVsbHB0ciB9OworICAgIENoYXJhY3RlckNsYXNzKiBkaWdpdHNDYWNoZWQgeyBu
dWxscHRyIH07CisgICAgQ2hhcmFjdGVyQ2xhc3MqIHNwYWNlc0NhY2hlZCB7IG51bGxwdHIgfTsK
KyAgICBDaGFyYWN0ZXJDbGFzcyogd29yZGNoYXJDYWNoZWQgeyBudWxscHRyIH07CisgICAgQ2hh
cmFjdGVyQ2xhc3MqIHdvcmRVbmljb2RlSWdub3JlQ2FzZUNoYXJDYWNoZWQgeyBudWxscHRyIH07
CisgICAgQ2hhcmFjdGVyQ2xhc3MqIG5vbmRpZ2l0c0NhY2hlZCB7IG51bGxwdHIgfTsKKyAgICBD
aGFyYWN0ZXJDbGFzcyogbm9uc3BhY2VzQ2FjaGVkIHsgbnVsbHB0ciB9OworICAgIENoYXJhY3Rl
ckNsYXNzKiBub253b3JkY2hhckNhY2hlZCB7IG51bGxwdHIgfTsKKyAgICBDaGFyYWN0ZXJDbGFz
cyogbm9ud29yZFVuaWNvZGVJZ25vcmVDYXNlY2hhckNhY2hlZCB7IG51bGxwdHIgfTsKICAgICBI
YXNoTWFwPHVuc2lnbmVkLCBDaGFyYWN0ZXJDbGFzcyo+IHVuaWNvZGVQcm9wZXJ0aWVzQ2FjaGVk
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclN5bnRh
eENoZWNrZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclN5bnRheENoZWNr
ZXIuY3BwCmluZGV4IDAyZmViYzc4OWU5YWQzOGIyZDU4YjA0NTUyMjViZGEyYmVhNWRkODIuLjlm
MDVmMjI4NTI1MzM5MGZhZDY0ZjNlNDA1NzYwMmM3NDA4Y2JmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJTeW50YXhDaGVja2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tlci5jcHAKQEAgLTUzLDcgKzUzLDcg
QEAgY2xhc3MgU3ludGF4Q2hlY2tlciB7CiAgICAgdm9pZCBkaXNqdW5jdGlvbigpIHt9CiB9Owog
Ci1jb25zdCBjaGFyKiBjaGVja1N5bnRheChjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGNvbnN0IFN0
cmluZyYgZmxhZ3MpCitFcnJvckNvZGUgY2hlY2tTeW50YXgoY29uc3QgU3RyaW5nJiBwYXR0ZXJu
LCBjb25zdCBTdHJpbmcmIGZsYWdzKQogewogICAgIFN5bnRheENoZWNrZXIgc3ludGF4Q2hlY2tl
cjsKICAgICByZXR1cm4gcGFyc2Uoc3ludGF4Q2hlY2tlciwgcGF0dGVybiwgZmxhZ3MuY29udGFp
bnMoJ3UnKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3lu
dGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclN5bnRheENoZWNr
ZXIuaAppbmRleCAyZTJlOWJjZmI4NzQ2NjIyYmE0ZjRiZGFiMDZjZTE5N2M3OWFhYjE0Li44NmRh
ZjM4YmNiYjIwOGUyMTlmMjA0MDlkNGJjN2RhYjhkZjU1YTg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJTeW50YXhDaGVja2VyLmgKQEAgLTI1LDEwICsyNSwxMSBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIllhcnJFcnJvckNvZGUuaCIKICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJyIHsK
IAotY29uc3QgY2hhciogY2hlY2tTeW50YXgoY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBjb25zdCBT
dHJpbmcmIGZsYWdzKTsKK0Vycm9yQ29kZSBjaGVja1N5bnRheChjb25zdCBTdHJpbmcmIHBhdHRl
cm4sIGNvbnN0IFN0cmluZyYgZmxhZ3MpOwogCiB9fSAvLyBKU0M6OllhcnIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwCmluZGV4
IGUzNTFlMTdkOWVhNzY0YjQ2OGRkZmY2NTNhOGVkMDZjNTEyNWVhODQuLjk4ZTUxZmZkNWI1MWJm
ZDZmNjc5YzFkNGExMzgxMmEwZjZjMTNlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcApAQCAtMzQ4LDggKzM0OCw3IEBA
IFVSTEZpbHRlclBhcnNlcjo6UGFyc2VTdGF0dXMgVVJMRmlsdGVyUGFyc2VyOjphZGRQYXR0ZXJu
KGNvbnN0IFN0cmluZyYgcGF0dGVybiwKIAogICAgIFBhcnNlU3RhdHVzIHN0YXR1cyA9IE9rOwog
ICAgIFBhdHRlcm5QYXJzZXIgcGF0dGVyblBhcnNlcihwYXR0ZXJuSXNDYXNlU2Vuc2l0aXZlKTsK
LSAgICBTdHJpbmcgZXJyb3IgPSBTdHJpbmcoSlNDOjpZYXJyOjpwYXJzZShwYXR0ZXJuUGFyc2Vy
LCBwYXR0ZXJuLCBmYWxzZSwgMCkpOwotICAgIGlmIChlcnJvci5pc051bGwoKSkKKyAgICBpZiAo
SlNDOjpZYXJyOjpwYXJzZShwYXR0ZXJuUGFyc2VyLCBwYXR0ZXJuLCBmYWxzZSwgMCkgPT0gSlND
OjpZYXJyOjpFcnJvckNvZGU6Ok5vRXJyb3IpCiAgICAgICAgIHBhdHRlcm5QYXJzZXIuZmluYWxp
emUocGF0dGVybklkLCBtX2NvbWJpbmVkVVJMRmlsdGVycyk7CiAgICAgZWxzZQogICAgICAgICBz
dGF0dXMgPSBZYXJyRXJyb3I7Cg==
</data>
<flag name="review"
          id="348802"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>