<?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>190405</bug_id>
          
          <creation_ts>2018-10-09 10:57:00 -0700</creation_ts>
          <short_desc>Changes towards allowing use of the ASAN detect_stack_use_after_return option.</short_desc>
          <delta_ts>2018-10-11 12:20:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1467473</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-09 10:57:00 -0700</bug_when>
    <thetext>The ASAN detect_stack_use_after_return options makes a assumptions about how code should behave that does not jive well with how a VM needs to operate.  In order to enable the use of detect_stack_use_after_return, we&apos;ll need to suppress ASAN in any function that takes the address of a variable in the current stack frame.  

We have not yet isolated all the places where we need to apply workarounds needed for ASAN detect_stack_use_after_return, but this patch for landing what we have found so far.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467476</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-09 10:57:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/45131464&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467968</commentid>
    <comment_count>2</comment_count>
      <attachid>352020</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-10 22:37:54 -0700</bug_when>
    <thetext>Created attachment 352020
proposed patch.

Let&apos;s try this on the EWS bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467969</commentid>
    <comment_count>3</comment_count>
      <attachid>352021</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-10 22:43:12 -0700</bug_when>
    <thetext>Created attachment 352021
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467970</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-10 22:47:57 -0700</bug_when>
    <thetext>Attachment 352021 did not pass style-queue:


ERROR: Source/JavaScriptCore/ChangeLog:9:  Please consider whether the use of security-sensitive phrasing could help someone exploit WebKit: use after free  [changelog/unwantedsecurityterms] [3]
Total errors found: 1 in 14 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>1467972</commentid>
    <comment_count>5</comment_count>
      <attachid>352022</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-10 22:53:17 -0700</bug_when>
    <thetext>Created attachment 352022
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468049</commentid>
    <comment_count>6</comment_count>
      <attachid>352022</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-10-11 09:22:12 -0700</bug_when>
    <thetext>Comment on attachment 352022
proposed patch.

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

r=me

&gt; Source/WTF/wtf/StackPointer.cpp:39
&gt; +    // Make sure that sp is the only local variable decalred in this function.

*declared*

&gt; Source/WTF/wtf/StackPointer.cpp:40
&gt; +    void* sp = reinterpret_cast&lt;uint8_t*&gt;(&amp;sp) + sizeOfFrameHeader + sizeof(sp);

uint8_t should probably be a uintptr_t.

&gt; Source/WTF/wtf/StackPointer.h:30
&gt; +WTF_EXPORT_PRIVATE void* currentStackPointer();

Did you consider using inline assembly for architectures we know well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468061</commentid>
    <comment_count>7</comment_count>
      <attachid>352022</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-11 09:44:14 -0700</bug_when>
    <thetext>Comment on attachment 352022
proposed patch.

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

Thanks for the review.

&gt;&gt; Source/WTF/wtf/StackPointer.cpp:39
&gt;&gt; +    // Make sure that sp is the only local variable decalred in this function.
&gt; 
&gt; *declared*

Fixed.

&gt;&gt; Source/WTF/wtf/StackPointer.cpp:40
&gt;&gt; +    void* sp = reinterpret_cast&lt;uint8_t*&gt;(&amp;sp) + sizeOfFrameHeader + sizeof(sp);
&gt; 
&gt; uint8_t should probably be a uintptr_t.

Actually this needs to be uint8_t* because I&apos;m adding sizes in bytes to it.  I&apos;ve verified in lldb that this computes the correct value.

&gt;&gt; Source/WTF/wtf/StackPointer.h:30
&gt;&gt; +WTF_EXPORT_PRIVATE void* currentStackPointer();
&gt; 
&gt; Did you consider using inline assembly for architectures we know well?

I did, but thought that it unnecessarily complicates the implementation.  I ended up removing the inline asm solution in favor of more simplicity since I didn&apos;t think that this will was used in the perf critical path.  On second thought, I&apos;ll re-install the inline asm implementation so that this function is more versatile and can be used without worrying about perf.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468082</commentid>
    <comment_count>8</comment_count>
      <attachid>352056</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-11 11:01:57 -0700</bug_when>
    <thetext>Created attachment 352056
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468084</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-11 11:03:57 -0700</bug_when>
    <thetext>Attachment 352056 did not pass style-queue:


ERROR: Source/WTF/wtf/StackPointer.h:39:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/StackPointer.h:39:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/StackPointer.h:39:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/StackPointer.h:41:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/StackPointer.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/StackPointer.h:41:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/StackPointer.h:44:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/StackPointer.h:44:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/StackPointer.h:44:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/StackPointer.h:47:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/StackPointer.h:47:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/StackPointer.h:47:  Extra space before )  [whitespace/parens] [2]
Total errors found: 12 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>1468085</commentid>
    <comment_count>10</comment_count>
      <attachid>352056</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-10-11 11:10:47 -0700</bug_when>
    <thetext>Comment on attachment 352056
patch for landing.

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

r=me

&gt; Source/WTF/wtf/StackPointer.h:56
&gt; +#endif
&gt; +
&gt; +#if USE(GENERIC_CURRENT_STACK_POINTER)

You can eliminate these lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468087</commentid>
    <comment_count>11</comment_count>
      <attachid>352057</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-11 11:12:14 -0700</bug_when>
    <thetext>Created attachment 352057
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468090</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-11 11:13:56 -0700</bug_when>
    <thetext>Attachment 352057 did not pass style-queue:


ERROR: Source/WTF/wtf/StackPointer.h:39:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/StackPointer.h:41:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/StackPointer.h:44:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/StackPointer.h:47:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 4 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>1468108</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-11 12:20:06 -0700</bug_when>
    <thetext>Landed in r237042: &lt;http://trac.webkit.org/r237042&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352020</attachid>
            <date>2018-10-10 22:37:54 -0700</date>
            <delta_ts>2018-10-10 22:43:12 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-190405.patch</filename>
            <type>text/plain</type>
            <size>18085</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM3MDMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDE4LTEwLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
aGFuZ2VzIHRvd2FyZHMgYWxsb3dpbmcgdXNlIG9mIHRoZSBBU0FOIGRldGVjdF9zdGFja191c2Vf
YWZ0ZXJfcmV0dXJuIG9wdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MDQwNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDUxMzE0NjQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIEFTQU4g
ZGV0ZWN0X3N0YWNrX3VzZV9hZnRlcl9yZXR1cm4gb3B0aW9uIGNoZWNrcyBmb3IgdXNlIGFmdGVy
IGZyZWUgb2Ygc3RhY2sKKyAgICAgICAgdmFyaWFibGVzIGJ5IGFsbG9jYXRpbmcgcmVsZXZhbnQg
c3RhY2sgdmFyaWFibGVzIGluIGhlYXAgbWVtb3J5IGlmIHRoZSBjb2RlIGV2ZXIKKyAgICAgICAg
dGFrZXMgdGhlIGFkZHJlc3Mgb2YgdGhvc2Ugc3RhY2sgdmFyaWFibGVzLiAgVW5mb3J0dW5hdGVs
eSwgdGhpcyBpcyBhIGNvbW1vbiBpZGlvbQorICAgICAgICB0aGF0IHdlIHVzZSB0byBjb21wdXRl
IHRoZSBhcHByb3hpbWF0ZSBzdGFjayBwb2ludGVyIHZhbHVlLiAgQXMgYSByZXN1bHQsIG9uIHN1
Y2gKKyAgICAgICAgQVNBTiBydW5zLCB0aGUgY29tcHV0ZWQgYXBwcm94aW1hdGUgc3RhY2sgcG9p
bnRlciB2YWx1ZSB3aWxsIHBvaW50IGludG8gdGhlIGhlYXAKKyAgICAgICAgaW5zdGVhZCBvZiB0
aGUgc3RhY2suICBUaGlzIGJyZWFrcyB0aGUgVk0ncyBleHBlY3RhdGlvbnMgYW5kIHdyZWFrcyBo
YXZvYy4KKworICAgICAgICBUbyBmaXggdGhpcywgd2UgdXNlIHRoZSBuZXdseSBpbnRyb2R1Y2Vk
IFdURjo6Y3VycmVudFN0YWNrUG9pbnRlcigpIGluc3RlYWQgb2YKKyAgICAgICAgdGFraW5nIHRo
ZSBhZGRyZXNzIG9mIHN0YWNrIHZhcmlhYmxlcy4KKworICAgICAgICBXZSBhbHNvIG5lZWQgdG8g
ZW5oYW5jZSBFeGNlcHRpb25TY29wZXMgdG8gYmUgYWJsZSB0byB3b3JrIHdpdGggQVNBTgorICAg
ICAgICBkZXRlY3Rfc3RhY2tfdXNlX2FmdGVyX3JldHVybiB3aGljaCB3aWxsIGFsbG9jYXRlZCB0
aGUgc2NvcGUgaW4gdGhlIGhlYXAuICBXZQorICAgICAgICB3b3JrIGFyb3VuZCB0aGlzIGJ5IHBh
c3NpbmcgdGhlIGN1cnJlbnQgc3RhY2sgcG9pbnRlciBvZiB0aGUgaW5zdGFudGlhdGluZyBjYWxs
aW5nCisgICAgICAgIGZyYW1lIGludG8gdGhlIHNjb3BlIGNvbnN0cnVjdG9yLCBhbmQgdXNpbmcg
dGhhdCBmb3IgdGhlIHBvc2l0aW9uIGNoZWNrIGluCisgICAgICAgIH5UaHJvd1Njb3BlKCkgaW5z
dGVhZC4KKworICAgICAgICBUaGUgYWJvdmUgaXMgb25seSBhIHN0YXJ0IHRvd2FyZHMgZW5hYmxp
bmcgQVNBTiBkZXRlY3Rfc3RhY2tfdXNlX2FmdGVyX3JldHVybiBvbgorICAgICAgICB0aGUgVk0u
ICBUaGVyZSBhcmUgc3RpbGwgb3RoZXIgaXNzdWVzIHRvIGJlIHJlc29sdmVkIGJlZm9yZSB3ZSBj
YW4gcnVuIHdpdGggdGhpcworICAgICAgICBBU0FOIG9wdGlvbi4KKworICAgICAgICAqIHJ1bnRp
bWUvQ2F0Y2hTY29wZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uRXZlbnRMb2NhdGlv
bi5oOgorICAgICAgICAoSlNDOjpFeGNlcHRpb25FdmVudExvY2F0aW9uOjpFeGNlcHRpb25FdmVu
dExvY2F0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvblNjb3BlLmg6CisgICAgICAg
IChKU0M6OkV4Y2VwdGlvblNjb3BlOjpzdGFja1Bvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6ZGlkQWNxdWlyZUxvY2sp
OgorICAgICAgICAqIHJ1bnRpbWUvVGhyb3dTY29wZS5jcHA6CisgICAgICAgIChKU0M6OlRocm93
U2NvcGU6On5UaHJvd1Njb3BlKToKKyAgICAgICAgKiBydW50aW1lL1Rocm93U2NvcGUuaDoKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpuZWVkRXhjZXB0aW9uQ2hl
Y2sgY29uc3QpOgorICAgICAgICAoSlNDOjpWTTo6aXNTYWZlVG9SZWN1cnNlIGNvbnN0KToKKyAg
ICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpj
YWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisgICAgICAgICogeWFyci9ZYXJyUGF0dGVybi5jcHA6
CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OmlzU2FmZVRvUmVj
dXJzZSBjb25zdCk6CisKIDIwMTgtMTAtMTAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNyZWF0ZSBzcGVjaWFsIE5ldHdvcmsgd2F0
ZXJmYWxsIGZvciBtZWRpYSBldmVudHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhdGNoU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYXRjaFNjb3BlLmgJKHJldmlzaW9uIDIzNjkwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhdGNoU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw3ICszNSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogLy8gdG9wIG9mIHRoZSBmdW5jdGlvbiAoYXMgZWFybHkgYXMgcG9zc2li
bGUpIHVzaW5nIHRoZSBERUNMQVJFX0NBVENIX1NDT1BFIG1hY3JvLgogLy8gRGVjbGFyaW5nIGEg
Q2F0Y2hTY29wZSBpbiBhIGZ1bmN0aW9uIG1lYW5zIHRoYXQgdGhlIGZ1bmN0aW9uIGludGVuZHMg
dG8gY2xlYXIKIC8vIHBlbmRpbmcgZXhjZXB0aW9ucyBiZWZvcmUgcmV0dXJuaW5nIHRvIGl0cyBj
YWxsZXIuCi0gICAgCisKIGNsYXNzIENhdGNoU2NvcGUgOiBwdWJsaWMgRXhjZXB0aW9uU2NvcGUg
ewogcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIENhdGNoU2NvcGUoVk0mLCBFeGNlcHRp
b25FdmVudExvY2F0aW9uKTsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogfTsKIAogI2RlZmlu
ZSBERUNMQVJFX0NBVENIX1NDT1BFKHZtX18pIFwKLSAgICBKU0M6OkNhdGNoU2NvcGUoKHZtX18p
LCBKU0M6OkV4Y2VwdGlvbkV2ZW50TG9jYXRpb24oX19GVU5DVElPTl9fLCBfX0ZJTEVfXywgX19M
SU5FX18pKQorICAgIEpTQzo6Q2F0Y2hTY29wZSgodm1fXyksIEpTQzo6RXhjZXB0aW9uRXZlbnRM
b2NhdGlvbihFWENFUFRJT05fU0NPUEVfUE9TSVRJT05fRk9SX0FTQU4sIF9fRlVOQ1RJT05fXywg
X19GSUxFX18sIF9fTElORV9fKSkKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShFWENFUFRJT05fU0NP
UEVfVkVSSUZJQ0FUSU9OKQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb25FdmVudExvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uRXZlbnRMb2NhdGlvbi5oCShyZXZpc2lvbiAyMzY5MDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25FdmVudExvY2F0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjksMTIgKzI5LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBzdHJ1Y3Qg
RXhjZXB0aW9uRXZlbnRMb2NhdGlvbiB7CiAgICAgRXhjZXB0aW9uRXZlbnRMb2NhdGlvbigpIHsg
fQotICAgIEV4Y2VwdGlvbkV2ZW50TG9jYXRpb24oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBj
b25zdCBjaGFyKiBmaWxlLCB1bnNpZ25lZCBsaW5lKQotICAgICAgICA6IGZ1bmN0aW9uTmFtZShm
dW5jdGlvbk5hbWUpCisgICAgRXhjZXB0aW9uRXZlbnRMb2NhdGlvbih2b2lkKiBzdGFja1Bvc2l0
aW9uLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGZpbGUsIHVuc2lnbmVk
IGxpbmUpCisgICAgICAgIDogc3RhY2tQb3NpdGlvbihzdGFja1Bvc2l0aW9uKQorICAgICAgICAs
IGZ1bmN0aW9uTmFtZShmdW5jdGlvbk5hbWUpCiAgICAgICAgICwgZmlsZShmaWxlKQogICAgICAg
ICAsIGxpbmUobGluZSkKICAgICB7IH0KICAgICAKKyAgICB2b2lkKiBzdGFja1Bvc2l0aW9uIHsg
bnVsbHB0ciB9OyAvLyBOZWVkZWQgZm9yIEFTQU4gZGV0ZWN0X3N0YWNrX3VzZV9hZnRlcl9yZXR1
cm4uCiAgICAgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lIHsgbnVsbHB0ciB9OwogICAgIGNvbnN0
IGNoYXIqIGZpbGUgeyBudWxscHRyIH07CiAgICAgdW5zaWduZWQgbGluZSB7IDAgfTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvblNjb3BlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uU2NvcGUuaAkocmV2
aXNpb24gMjM2OTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlIDx3dGYvU3RhY2tQb2ludGVyLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogICAgIApAQCAtMzcsNiArMzgsMTIgQEAgY2xhc3MgRXhjZXB0aW9uOwogI2Rl
ZmluZSBFWENFUFRJT05fQVNTRVJUX1VOVVNFRCh2YXJpYWJsZSwgYXNzZXJ0aW9uKSBSRUxFQVNF
X0FTU0VSVChhc3NlcnRpb24pCiAjZGVmaW5lIEVYQ0VQVElPTl9BU1NFUlRfV0lUSF9NRVNTQUdF
KGFzc2VydGlvbiwgbWVzc2FnZSkgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGFzc2VydGlv
biwgbWVzc2FnZSkKIAorI2lmIEFTQU5fRU5BQkxFRCAmJiBDT01QSUxFUihHQ0NfQ09NUEFUSUJM
RSkKKyNkZWZpbmUgRVhDRVBUSU9OX1NDT1BFX1BPU0lUSU9OX0ZPUl9BU0FOIGN1cnJlbnRTdGFj
a1BvaW50ZXIoKQorI2Vsc2UKKyNkZWZpbmUgRVhDRVBUSU9OX1NDT1BFX1BPU0lUSU9OX0ZPUl9B
U0FOIG51bGxwdHIKKyNlbmRpZgorCiBjbGFzcyBFeGNlcHRpb25TY29wZSB7CiBwdWJsaWM6CiAg
ICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQpAQCAtNDYsNiArNTMsMTIgQEAgcHVi
bGljOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhc3NlcnROb0V4Y2VwdGlvbigpIHsgUkVMRUFT
RV9BU1NFUlRfV0lUSF9NRVNTQUdFKCFleGNlcHRpb24oKSwgIiVzIiwgdW5leHBlY3RlZEV4Y2Vw
dGlvbk1lc3NhZ2UoKS5kYXRhKCkpOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHJlbGVhc2VB
c3NlcnROb0V4Y2VwdGlvbigpIHsgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKCFleGNlcHRp
b24oKSwgIiVzIiwgdW5leHBlY3RlZEV4Y2VwdGlvbk1lc3NhZ2UoKS5kYXRhKCkpOyB9CiAKKyNp
ZiBBU0FOX0VOQUJMRUQKKyAgICBjb25zdCB2b2lkKiBzdGFja1Bvc2l0aW9uKCkgY29uc3QgeyAg
cmV0dXJuIG1fbG9jYXRpb24uc3RhY2tQb3NpdGlvbjsgfQorI2Vsc2UKKyAgICBjb25zdCB2b2lk
KiBzdGFja1Bvc2l0aW9uKCkgY29uc3QgeyAgcmV0dXJuIHRoaXM7IH0KKyNlbmRpZgorCiBwcm90
ZWN0ZWQ6CiAgICAgRXhjZXB0aW9uU2NvcGUoVk0mLCBFeGNlcHRpb25FdmVudExvY2F0aW9uKTsK
ICAgICBFeGNlcHRpb25TY29wZShjb25zdCBFeGNlcHRpb25TY29wZSYpID0gZGVsZXRlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCShyZXZpc2lvbiAyMzY5
MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgog
I2luY2x1ZGUgIldhc21NYWNoaW5lVGhyZWFkcy5oIgogI2luY2x1ZGUgPHRocmVhZD4KKyNpbmNs
dWRlIDx3dGYvU3RhY2tQb2ludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90aHJlYWRzL1NpZ25hbHMuaD4KIApAQCAtMTQzLDcgKzE0NCw3IEBAIHZvaWQg
SlNMb2NrOjpkaWRBY3F1aXJlTG9jaygpCiAgICAgfQogCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1f
dm0tPnN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpKTsKLSAgICB2b2lkKiBwID0gJnA7IC8vIEEgcHJv
eHkgZm9yIHRoZSBjdXJyZW50IHN0YWNrIHBvaW50ZXIuCisgICAgdm9pZCogcCA9IGN1cnJlbnRT
dGFja1BvaW50ZXIoKTsKICAgICBtX3ZtLT5zZXRTdGFja1BvaW50ZXJBdFZNRW50cnkocCk7CiAK
ICAgICBtX3ZtLT5oZWFwLm1hY2hpbmVUaHJlYWRzKCkuYWRkQ3VycmVudFRocmVhZCgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZS5jcHAJKHJldmlz
aW9uIDIzNjkwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTYsMTYgKzU2LDE2IEBAIFRocm93U2NvcGU6On5UaHJv
d1Njb3BlKCkKICAgICB9CiAKICAgICBib29sIHdpbGxCZUhhbmRsZUJ5TExJbnRPckpJVCA9IGZh
bHNlOwotICAgIHZvaWQqIHByZXZpb3VzU2NvcGUgPSBtX3ByZXZpb3VzU2NvcGU7CisgICAgY29u
c3Qgdm9pZCogcHJldmlvdXNTY29wZVN0YWNrUG9zaXRpb24gPSBtX3ByZXZpb3VzU2NvcGUgPyBt
X3ByZXZpb3VzU2NvcGUtPnN0YWNrUG9zaXRpb24oKSA6IG51bGxwdHI7CiAgICAgdm9pZCogdG9w
RW50cnlGcmFtZSA9IG1fdm0udG9wRW50cnlGcmFtZTsKIAogICAgIC8vIElmIHRoZSB0b3BFbnRy
eUZyYW1lIHdhcyBwdXNoZWQgb24gdGhlIHN0YWNrIGFmdGVyIHRoZSBwcmV2aW91c1Njb3BlIHdh
cyBpbnN0YW50aWF0ZWQsCiAgICAgLy8gdGhlbiB0aGlzIHRocm93U2NvcGUgd2lsbCBiZSByZXR1
cm5pbmcgdG8gTExJTlQgb3IgSklUIGNvZGUgdGhhdCBhbHdheXMgZG8gYW4gZXhjZXB0aW9uCiAg
ICAgLy8gY2hlY2suIEluIHRoYXQgY2FzZSwgc2tpcCB0aGUgc2ltdWxhdGVkIHRocm93IGJlY2F1
c2UgdGhlIExMSW50IGFuZCBKSVQgd2lsbCBiZQogICAgIC8vIGNoZWNraW5nIGZvciB0aGUgZXhj
ZXB0aW9uIHRoZWlyIG93biB3YXkgaW5zdGVhZCBvZiBjYWxsaW5nIFRocm93U2NvcGU6OmV4Y2Vw
dGlvbigpLgotICAgIGlmICh0b3BFbnRyeUZyYW1lICYmIHByZXZpb3VzU2NvcGUgPiB0b3BFbnRy
eUZyYW1lKQorICAgIGlmICh0b3BFbnRyeUZyYW1lICYmIHByZXZpb3VzU2NvcGVTdGFja1Bvc2l0
aW9uID4gdG9wRW50cnlGcmFtZSkKICAgICAgICAgd2lsbEJlSGFuZGxlQnlMTEludE9ySklUID0g
dHJ1ZTsKLSAgICAKKwogICAgIGlmICghd2lsbEJlSGFuZGxlQnlMTEludE9ySklUKQogICAgICAg
ICBzaW11bGF0ZVRocm93KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UaHJvd1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGhyb3dTY29wZS5oCShyZXZpc2lvbiAyMzY5MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UaHJvd1Njb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAg
cHJpdmF0ZToKIH07CiAKICNkZWZpbmUgREVDTEFSRV9USFJPV19TQ09QRSh2bV9fKSBcCi0gICAg
SlNDOjpUaHJvd1Njb3BlKCh2bV9fKSwgSlNDOjpFeGNlcHRpb25FdmVudExvY2F0aW9uKF9fRlVO
Q1RJT05fXywgX19GSUxFX18sIF9fTElORV9fKSkKKyAgICBKU0M6OlRocm93U2NvcGUoKHZtX18p
LCBKU0M6OkV4Y2VwdGlvbkV2ZW50TG9jYXRpb24oRVhDRVBUSU9OX1NDT1BFX1BPU0lUSU9OX0ZP
Ul9BU0FOLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXykpCiAKICNkZWZpbmUgdGhy
b3dTY29wZVByaW50SWZOZWVkQ2hlY2soc2NvcGVfXykgXAogICAgIHNjb3BlX18ucHJpbnRJZk5l
ZWRDaGVjayhfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjM2OTA5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvU3RhY2tCb3VuZHMuaD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tQb2ludGVyLmg+CiAjaW5j
bHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgpAQCAtODg0LDYgKzg4NSw3IEBA
IHB1YmxpYzoKICNpZiBFTkFCTEUoRVhDRVBUSU9OX1NDT1BFX1ZFUklGSUNBVElPTikKICAgICBT
dGFja1RyYWNlKiBuYXRpdmVTdGFja1RyYWNlT2ZMYXN0VGhyb3coKSBjb25zdCB7IHJldHVybiBt
X25hdGl2ZVN0YWNrVHJhY2VPZkxhc3RUaHJvdy5nZXQoKTsgfQogICAgIFRocmVhZCogdGhyb3dp
bmdUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3Rocm93aW5nVGhyZWFkLmdldCgpOyB9CisgICAg
Ym9vbCBuZWVkRXhjZXB0aW9uQ2hlY2soKSBjb25zdCB7IHJldHVybiBtX25lZWRFeGNlcHRpb25D
aGVjazsgfQogI2VuZGlmCiAKICNpZiBVU0UoQ0YpCkBAIC05MDMsNyArOTA1LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIGlzU2FmZVRvUmVjdXJzZSh2b2lkKiBzdGFja0xpbWl0KSBjb25zdAogICAg
IHsKICAgICAgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCkuaXNHcm93aW5nRG93
bndhcmQoKSk7Ci0gICAgICAgIHZvaWQqIGN1cnIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPigm
Y3Vycik7CisgICAgICAgIHZvaWQqIGN1cnIgPSBjdXJyZW50U3RhY2tQb2ludGVyKCk7CiAgICAg
ICAgIHJldHVybiBjdXJyID49IHN0YWNrTGltaXQ7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAko
cmV2aXNpb24gMjM2OTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs
dWRlICJXYXNtTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKICNp
bmNsdWRlIDx3dGYvRmFzdFRMUy5oPgorI2luY2x1ZGUgPHd0Zi9TdGFja1BvaW50ZXIuaD4KICNp
bmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEzNSw3
ICsxMzYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsCiAgICAg
ewogICAgICAgICAvLyBXZSBkbyB0aGUgc3RhY2sgY2hlY2sgaGVyZSBmb3IgdGhlIHdyYXBwZXIg
ZnVuY3Rpb24gYmVjYXVzZSB3ZSBkb24ndAogICAgICAgICAvLyB3YW50IHRvIGVtaXQgYSBzdGFj
ayBjaGVjayBpbnNpZGUgZXZlcnkgd3JhcHBlciBmdW5jdGlvbi4KLSAgICAgICAgY29uc3QgaW50
cHRyX3Qgc3AgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZzcCk7IC8vIEEgcHJveHkgZm9yIHRo
ZSBjdXJyZW50IHN0YWNrIHBvaW50ZXIuCisgICAgICAgIGNvbnN0IGludHB0cl90IHNwID0gYml0
d2lzZV9jYXN0PGludHB0cl90PihjdXJyZW50U3RhY2tQb2ludGVyKCkpOwogICAgICAgICBjb25z
dCBpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94ZWRBcmdzLnNpemUoKSArIENhbGxGcmFtZTo6aGVh
ZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVvZihSZWdpc3Rlcik7CiAgICAgICAgIGNvbnN0IGlu
dHB0cl90IHN0YWNrU3BhY2VVc2VkID0gMiAqIGZyYW1lU2l6ZTsgLy8gV2UncmUgbWFraW5nIHR3
byBjYWxscy4gT25lIHRvIHRoZSB3cmFwcGVyLCBhbmQgb25lIHRvIHRoZSBhY3R1YWwgd2FzbSBj
b2RlLgogICAgICAgICBpZiAoVU5MSUtFTFkoKHNwIDwgc3RhY2tTcGFjZVVzZWQpIHx8ICgoc3Ag
LSBzdGFja1NwYWNlVXNlZCkgPCBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZtLnNvZnRTdGFja0xp
bWl0KCkpKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4u
Y3BwCShyZXZpc2lvbiAyMzY5MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
UGF0dGVybi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJZ
YXJyUGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tQb2ludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KQEAgLTEwOTMsNyArMTA5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICgh
bV9zdGFja0xpbWl0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIEFTU0VSVChU
aHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwotICAgICAgICBp
bnQ4X3QqIGN1cnIgPSByZWludGVycHJldF9jYXN0PGludDhfdCo+KCZjdXJyKTsKKyAgICAgICAg
aW50OF90KiBjdXJyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPihjdXJyZW50U3RhY2tQb2lu
dGVyKCkpOwogICAgICAgICBpbnQ4X3QqIGxpbWl0ID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3Qq
PihtX3N0YWNrTGltaXQpOwogICAgICAgICByZXR1cm4gY3VyciA+PSBsaW1pdDsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjM2OTA5KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0xMC0xMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlcyB0b3dhcmRzIGFsbG93aW5nIHVzZSBvZiB0aGUg
QVNBTiBkZXRlY3Rfc3RhY2tfdXNlX2FmdGVyX3JldHVybiBvcHRpb24uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA0MDUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzQ1MTMxNDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEludHJvZHVjZSBXVEY6OmN1cnJlbnRTdGFja1BvaW50ZXIoKSB3aGljaCBj
b21wdXRlcyBpdHMgY2FsbGVyJ3Mgc3RhY2sgcG9pbnRlciB2YWx1ZS4KKworICAgICAgICAqIFdU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiB3dGYvU3RhY2tCb3VuZHMuaDoKKyAgICAgICAgKFdURjo6U3RhY2tCb3Vu
ZHM6OmNoZWNrQ29uc2lzdGVuY3kgY29uc3QpOgorCiAyMDE4LTEwLTA2ICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRpbmcgc29tZSB0ZW1wb3JhcnkgYXNzZXJ0
cyB3aXRoIGRhdGEgbG9nZ2luZyB0byBkZWJ1ZyBhIG15c3RlcmlvdXMgQVNBTiBib3QgY3Jhc2gu
CkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDIzNjkwOSkKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTE1OCw2ICsxNTgsNyBAQAogCQlGRTA1RkFGRjFGRTUwMDc1MDAwOTMy
MzAgLyogV1RGQXNzZXJ0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTA1RkFGRTFGRTUwMDc1MDAwOTMyMzAgLyogV1RGQXNzZXJ0aW9ucy5j
cHAgKi87IH07CiAJCUZFODU0MTZFMUZCRTI4NUQwMDhEQTVEQSAvKiBQb2lzb25lZC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTg1NDE2QzFGQkUy
ODVCMDA4REE1REEgLyogUG9pc29uZWQuY3BwICovOyB9OwogCQlGRURBQ0QzRDE2MzBGODNGMDBD
Njk2MzQgLyogU3RhY2tTdGF0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAg
Ki87IH07CisJCUZFRUE0REY5MjE2RDdCRTQwMEFDMDYwMiAvKiBTdGFja1BvaW50ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVFQTRERjgyMTZE
N0JFNDAwQUMwNjAyIC8qIFN0YWNrUG9pbnRlci5jcHAgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRG
aWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24g
Ki8KQEAgLTY2MCw2ICs2NjEsOCBAQAogCQlGRUI2QjAzNTIwMUJFMEI2MDBCOTU4QzEgLyogUG9p
bnRlclByZXBhcmF0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb2lu
dGVyUHJlcGFyYXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREFDRDNC
MTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFN0YWNrU3RhdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRURBQ0QzQzE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1N0YXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUZFRUE0REY3MjE2RDYwOEMwMEFDMDYwMiAvKiBTdGFja1BvaW50ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhY2tQb2ludGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZFRUE0REY4MjE2RDdCRTQwMEFDMDYwMiAvKiBTdGFja1BvaW50
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhY2tQb2ludGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMjk1QkYyMEI0OURDQjAwQ0Yy
ODNBIC8qIFVURjhDb252ZXJzaW9uRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVVRGOENvbnZlcnNpb25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRjBBNDM2NTg4OTU0RjNDQjA3REJFQ0EgLyogU3RkTGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdGRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAv
KiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCkBAIC0xMDg2LDYgKzEwODksOCBAQAog
CQkJCUE4QTQ3MzBEMTUxQTgyNUIwMDQxMjNGRiAvKiBTcGVjdHJ1bS5oICovLAogCQkJCUE4QTQ3
MzBFMTUxQTgyNUIwMDQxMjNGRiAvKiBTdGFja0JvdW5kcy5jcHAgKi8sCiAJCQkJQThBNDczMEYx
NTFBODI1QjAwNDEyM0ZGIC8qIFN0YWNrQm91bmRzLmggKi8sCisJCQkJRkVFQTRERjgyMTZEN0JF
NDAwQUMwNjAyIC8qIFN0YWNrUG9pbnRlci5jcHAgKi8sCisJCQkJRkVFQTRERjcyMTZENjA4QzAw
QUMwNjAyIC8qIFN0YWNrUG9pbnRlci5oICovLAogCQkJCTBGOURBQTA0MUZEMUMzN0IwMDc5QzVC
MiAvKiBTdGFja1Nob3QuaCAqLywKIAkJCQkwRjlEQUEwNTFGRDFDMzdCMDA3OUM1QjIgLyogU3Rh
Y2tTaG90UHJvZmlsZXIuaCAqLywKIAkJCQlGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3Rh
Y2tTdGF0cy5jcHAgKi8sCkBAIC0xNTQyLDYgKzE1NDcsNyBAQAogCQkJCTUxRjE3NTJDMUYzRDQ4
NjAwMEM3NDk1MCAvKiBQZXJzaXN0ZW50RGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MUYxNzUyRDFGM0Q0ODYwMDBDNzQ5NTAgLyogUGVyc2lzdGVudEVuY29kZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRkU4NTQxNkUxRkJFMjg1RDAwOERBNURBIC8qIFBvaXNvbmVkLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUZFRUE0REY5MjE2RDdCRTQwMEFDMDYwMiAvKiBTdGFja1BvaW50ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMzNjIxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50
U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBRjAyM0I1MjA2MUUxNzAwMEE4RUZENiAv
KiBQcm9jZXNzUHJpdmlsZWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0M0Y2MTFGMTU2NUYw
RjkwMERCNTE0QSAvKiBSQU1TaXplLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDIzNjkwOSkKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsNiArMjEwLDcgQEAgc2V0KFdURl9QVUJMSUNfSEVB
REVSUwogICAgIFNvZnRMaW5raW5nLmgKICAgICBTcGVjdHJ1bS5oCiAgICAgU3RhY2tCb3VuZHMu
aAorICAgIFN0YWNrUG9pbnRlci5oCiAgICAgU3RhY2tTaG90LmgKICAgICBTdGFja1Nob3RQcm9m
aWxlci5oCiAgICAgU3RhY2tTdGF0cy5oCkBAIC0zODQsNiArMzg1LDcgQEAgc2V0KFdURl9TT1VS
Q0VTCiAgICAgU2Vjb25kcy5jcHAKICAgICBTaXhDaGFyYWN0ZXJIYXNoLmNwcAogICAgIFN0YWNr
Qm91bmRzLmNwcAorICAgIFN0YWNrUG9pbnRlci5jcHAKICAgICBTdGFja1N0YXRzLmNwcAogICAg
IFN0YWNrVHJhY2UuY3BwCiAgICAgU3RyaW5nUHJpbnRTdHJlYW0uY3BwCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9TdGFja0JvdW5kcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1N0YWNr
Qm91bmRzLmgJKHJldmlzaW9uIDIzNjkwOSkKKysrIFNvdXJjZS9XVEYvd3RmL1N0YWNrQm91bmRz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNkZWZpbmUgU3RhY2tCb3VuZHNf
aAogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9TdGFja1BvaW50ZXIuaD4K
ICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsK
QEAgLTE0Niw3ICsxNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgp
IGNvbnN0CiAgICAgewogI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgdm9pZCogY3VycmVu
dFBvc2l0aW9uID0gJmN1cnJlbnRQb3NpdGlvbjsKKyAgICAgICAgdm9pZCogY3VycmVudFBvc2l0
aW9uID0gY3VycmVudFN0YWNrUG9pbnRlcigpOwogCiAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcg
c2V0IG9mIGFzc2VydGlvbnMgYXJlIG9ubHkgbmVlZGVkIGZvciBkZWJ1Z2dpbmcgYQogICAgICAg
ICAvLyBteXN0ZXJpb3VzIGNyYXNoIG9uIGFuIEFTQU4gYm90IHRoYXQgaXMgbm90IHJlcHJvZHVj
aWJsZSBvdGhlcndpc2UuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352021</attachid>
            <date>2018-10-10 22:43:12 -0700</date>
            <delta_ts>2018-10-10 22:50:48 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-190405.patch</filename>
            <type>text/plain</type>
            <size>18063</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM3MDMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDE4LTEwLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
aGFuZ2VzIHRvd2FyZHMgYWxsb3dpbmcgdXNlIG9mIHRoZSBBU0FOIGRldGVjdF9zdGFja191c2Vf
YWZ0ZXJfcmV0dXJuIG9wdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MDQwNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDUxMzE0NjQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIEFTQU4g
ZGV0ZWN0X3N0YWNrX3VzZV9hZnRlcl9yZXR1cm4gb3B0aW9uIGNoZWNrcyBmb3IgdXNlIGFmdGVy
IGZyZWUgb2Ygc3RhY2sKKyAgICAgICAgdmFyaWFibGVzIGJ5IGFsbG9jYXRpbmcgcmVsZXZhbnQg
c3RhY2sgdmFyaWFibGVzIGluIGhlYXAgbWVtb3J5IGlmIHRoZSBjb2RlIGV2ZXIKKyAgICAgICAg
dGFrZXMgdGhlIGFkZHJlc3Mgb2YgdGhvc2Ugc3RhY2sgdmFyaWFibGVzLiAgVW5mb3J0dW5hdGVs
eSwgdGhpcyBpcyBhIGNvbW1vbiBpZGlvbQorICAgICAgICB0aGF0IHdlIHVzZSB0byBjb21wdXRl
IHRoZSBhcHByb3hpbWF0ZSBzdGFjayBwb2ludGVyIHZhbHVlLiAgQXMgYSByZXN1bHQsIG9uIHN1
Y2gKKyAgICAgICAgQVNBTiBydW5zLCB0aGUgY29tcHV0ZWQgYXBwcm94aW1hdGUgc3RhY2sgcG9p
bnRlciB2YWx1ZSB3aWxsIHBvaW50IGludG8gdGhlIGhlYXAKKyAgICAgICAgaW5zdGVhZCBvZiB0
aGUgc3RhY2suICBUaGlzIGJyZWFrcyB0aGUgVk0ncyBleHBlY3RhdGlvbnMgYW5kIHdyZWFrcyBo
YXZvYy4KKworICAgICAgICBUbyBmaXggdGhpcywgd2UgdXNlIHRoZSBuZXdseSBpbnRyb2R1Y2Vk
IFdURjo6Y3VycmVudFN0YWNrUG9pbnRlcigpIGluc3RlYWQgb2YKKyAgICAgICAgdGFraW5nIHRo
ZSBhZGRyZXNzIG9mIHN0YWNrIHZhcmlhYmxlcy4KKworICAgICAgICBXZSBhbHNvIG5lZWQgdG8g
ZW5oYW5jZSBFeGNlcHRpb25TY29wZXMgdG8gYmUgYWJsZSB0byB3b3JrIHdpdGggQVNBTgorICAg
ICAgICBkZXRlY3Rfc3RhY2tfdXNlX2FmdGVyX3JldHVybiB3aGljaCB3aWxsIGFsbG9jYXRlZCB0
aGUgc2NvcGUgaW4gdGhlIGhlYXAuICBXZQorICAgICAgICB3b3JrIGFyb3VuZCB0aGlzIGJ5IHBh
c3NpbmcgdGhlIGN1cnJlbnQgc3RhY2sgcG9pbnRlciBvZiB0aGUgaW5zdGFudGlhdGluZyBjYWxs
aW5nCisgICAgICAgIGZyYW1lIGludG8gdGhlIHNjb3BlIGNvbnN0cnVjdG9yLCBhbmQgdXNpbmcg
dGhhdCBmb3IgdGhlIHBvc2l0aW9uIGNoZWNrIGluCisgICAgICAgIH5UaHJvd1Njb3BlKCkgaW5z
dGVhZC4KKworICAgICAgICBUaGUgYWJvdmUgaXMgb25seSBhIHN0YXJ0IHRvd2FyZHMgZW5hYmxp
bmcgQVNBTiBkZXRlY3Rfc3RhY2tfdXNlX2FmdGVyX3JldHVybiBvbgorICAgICAgICB0aGUgVk0u
ICBUaGVyZSBhcmUgc3RpbGwgb3RoZXIgaXNzdWVzIHRvIGJlIHJlc29sdmVkIGJlZm9yZSB3ZSBj
YW4gcnVuIHdpdGggdGhpcworICAgICAgICBBU0FOIG9wdGlvbi4KKworICAgICAgICAqIHJ1bnRp
bWUvQ2F0Y2hTY29wZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uRXZlbnRMb2NhdGlv
bi5oOgorICAgICAgICAoSlNDOjpFeGNlcHRpb25FdmVudExvY2F0aW9uOjpFeGNlcHRpb25FdmVu
dExvY2F0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvblNjb3BlLmg6CisgICAgICAg
IChKU0M6OkV4Y2VwdGlvblNjb3BlOjpzdGFja1Bvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6ZGlkQWNxdWlyZUxvY2sp
OgorICAgICAgICAqIHJ1bnRpbWUvVGhyb3dTY29wZS5jcHA6CisgICAgICAgIChKU0M6OlRocm93
U2NvcGU6On5UaHJvd1Njb3BlKToKKyAgICAgICAgKiBydW50aW1lL1Rocm93U2NvcGUuaDoKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpuZWVkRXhjZXB0aW9uQ2hl
Y2sgY29uc3QpOgorICAgICAgICAoSlNDOjpWTTo6aXNTYWZlVG9SZWN1cnNlIGNvbnN0KToKKyAg
ICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpj
YWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisgICAgICAgICogeWFyci9ZYXJyUGF0dGVybi5jcHA6
CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OmlzU2FmZVRvUmVj
dXJzZSBjb25zdCk6CisKIDIwMTgtMTAtMTAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNyZWF0ZSBzcGVjaWFsIE5ldHdvcmsgd2F0
ZXJmYWxsIGZvciBtZWRpYSBldmVudHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhdGNoU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYXRjaFNjb3BlLmgJKHJldmlzaW9uIDIzNzAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhdGNoU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw3ICszNSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogLy8gdG9wIG9mIHRoZSBmdW5jdGlvbiAoYXMgZWFybHkgYXMgcG9zc2li
bGUpIHVzaW5nIHRoZSBERUNMQVJFX0NBVENIX1NDT1BFIG1hY3JvLgogLy8gRGVjbGFyaW5nIGEg
Q2F0Y2hTY29wZSBpbiBhIGZ1bmN0aW9uIG1lYW5zIHRoYXQgdGhlIGZ1bmN0aW9uIGludGVuZHMg
dG8gY2xlYXIKIC8vIHBlbmRpbmcgZXhjZXB0aW9ucyBiZWZvcmUgcmV0dXJuaW5nIHRvIGl0cyBj
YWxsZXIuCi0gICAgCisKIGNsYXNzIENhdGNoU2NvcGUgOiBwdWJsaWMgRXhjZXB0aW9uU2NvcGUg
ewogcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIENhdGNoU2NvcGUoVk0mLCBFeGNlcHRp
b25FdmVudExvY2F0aW9uKTsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogfTsKIAogI2RlZmlu
ZSBERUNMQVJFX0NBVENIX1NDT1BFKHZtX18pIFwKLSAgICBKU0M6OkNhdGNoU2NvcGUoKHZtX18p
LCBKU0M6OkV4Y2VwdGlvbkV2ZW50TG9jYXRpb24oX19GVU5DVElPTl9fLCBfX0ZJTEVfXywgX19M
SU5FX18pKQorICAgIEpTQzo6Q2F0Y2hTY29wZSgodm1fXyksIEpTQzo6RXhjZXB0aW9uRXZlbnRM
b2NhdGlvbihFWENFUFRJT05fU0NPUEVfUE9TSVRJT05fRk9SX0FTQU4sIF9fRlVOQ1RJT05fXywg
X19GSUxFX18sIF9fTElORV9fKSkKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShFWENFUFRJT05fU0NP
UEVfVkVSSUZJQ0FUSU9OKQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb25FdmVudExvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uRXZlbnRMb2NhdGlvbi5oCShyZXZpc2lvbiAyMzcwMzApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25FdmVudExvY2F0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjksMTIgKzI5LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBzdHJ1Y3Qg
RXhjZXB0aW9uRXZlbnRMb2NhdGlvbiB7CiAgICAgRXhjZXB0aW9uRXZlbnRMb2NhdGlvbigpIHsg
fQotICAgIEV4Y2VwdGlvbkV2ZW50TG9jYXRpb24oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBj
b25zdCBjaGFyKiBmaWxlLCB1bnNpZ25lZCBsaW5lKQotICAgICAgICA6IGZ1bmN0aW9uTmFtZShm
dW5jdGlvbk5hbWUpCisgICAgRXhjZXB0aW9uRXZlbnRMb2NhdGlvbih2b2lkKiBzdGFja1Bvc2l0
aW9uLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGZpbGUsIHVuc2lnbmVk
IGxpbmUpCisgICAgICAgIDogc3RhY2tQb3NpdGlvbihzdGFja1Bvc2l0aW9uKQorICAgICAgICAs
IGZ1bmN0aW9uTmFtZShmdW5jdGlvbk5hbWUpCiAgICAgICAgICwgZmlsZShmaWxlKQogICAgICAg
ICAsIGxpbmUobGluZSkKICAgICB7IH0KICAgICAKKyAgICB2b2lkKiBzdGFja1Bvc2l0aW9uIHsg
bnVsbHB0ciB9OyAvLyBOZWVkZWQgZm9yIEFTQU4gZGV0ZWN0X3N0YWNrX3VzZV9hZnRlcl9yZXR1
cm4uCiAgICAgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lIHsgbnVsbHB0ciB9OwogICAgIGNvbnN0
IGNoYXIqIGZpbGUgeyBudWxscHRyIH07CiAgICAgdW5zaWduZWQgbGluZSB7IDAgfTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvblNjb3BlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uU2NvcGUuaAkocmV2
aXNpb24gMjM3MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlIDx3dGYvU3RhY2tQb2ludGVyLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogICAgIApAQCAtMzcsNiArMzgsMTIgQEAgY2xhc3MgRXhjZXB0aW9uOwogI2Rl
ZmluZSBFWENFUFRJT05fQVNTRVJUX1VOVVNFRCh2YXJpYWJsZSwgYXNzZXJ0aW9uKSBSRUxFQVNF
X0FTU0VSVChhc3NlcnRpb24pCiAjZGVmaW5lIEVYQ0VQVElPTl9BU1NFUlRfV0lUSF9NRVNTQUdF
KGFzc2VydGlvbiwgbWVzc2FnZSkgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGFzc2VydGlv
biwgbWVzc2FnZSkKIAorI2lmIEFTQU5fRU5BQkxFRCAmJiBDT01QSUxFUihHQ0NfQ09NUEFUSUJM
RSkKKyNkZWZpbmUgRVhDRVBUSU9OX1NDT1BFX1BPU0lUSU9OX0ZPUl9BU0FOIGN1cnJlbnRTdGFj
a1BvaW50ZXIoKQorI2Vsc2UKKyNkZWZpbmUgRVhDRVBUSU9OX1NDT1BFX1BPU0lUSU9OX0ZPUl9B
U0FOIG51bGxwdHIKKyNlbmRpZgorCiBjbGFzcyBFeGNlcHRpb25TY29wZSB7CiBwdWJsaWM6CiAg
ICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQpAQCAtNDYsNiArNTMsMTIgQEAgcHVi
bGljOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhc3NlcnROb0V4Y2VwdGlvbigpIHsgUkVMRUFT
RV9BU1NFUlRfV0lUSF9NRVNTQUdFKCFleGNlcHRpb24oKSwgIiVzIiwgdW5leHBlY3RlZEV4Y2Vw
dGlvbk1lc3NhZ2UoKS5kYXRhKCkpOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHJlbGVhc2VB
c3NlcnROb0V4Y2VwdGlvbigpIHsgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKCFleGNlcHRp
b24oKSwgIiVzIiwgdW5leHBlY3RlZEV4Y2VwdGlvbk1lc3NhZ2UoKS5kYXRhKCkpOyB9CiAKKyNp
ZiBBU0FOX0VOQUJMRUQKKyAgICBjb25zdCB2b2lkKiBzdGFja1Bvc2l0aW9uKCkgY29uc3QgeyAg
cmV0dXJuIG1fbG9jYXRpb24uc3RhY2tQb3NpdGlvbjsgfQorI2Vsc2UKKyAgICBjb25zdCB2b2lk
KiBzdGFja1Bvc2l0aW9uKCkgY29uc3QgeyAgcmV0dXJuIHRoaXM7IH0KKyNlbmRpZgorCiBwcm90
ZWN0ZWQ6CiAgICAgRXhjZXB0aW9uU2NvcGUoVk0mLCBFeGNlcHRpb25FdmVudExvY2F0aW9uKTsK
ICAgICBFeGNlcHRpb25TY29wZShjb25zdCBFeGNlcHRpb25TY29wZSYpID0gZGVsZXRlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCShyZXZpc2lvbiAyMzcw
MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgog
I2luY2x1ZGUgIldhc21NYWNoaW5lVGhyZWFkcy5oIgogI2luY2x1ZGUgPHRocmVhZD4KKyNpbmNs
dWRlIDx3dGYvU3RhY2tQb2ludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90aHJlYWRzL1NpZ25hbHMuaD4KIApAQCAtMTQzLDcgKzE0NCw3IEBAIHZvaWQg
SlNMb2NrOjpkaWRBY3F1aXJlTG9jaygpCiAgICAgfQogCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1f
dm0tPnN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpKTsKLSAgICB2b2lkKiBwID0gJnA7IC8vIEEgcHJv
eHkgZm9yIHRoZSBjdXJyZW50IHN0YWNrIHBvaW50ZXIuCisgICAgdm9pZCogcCA9IGN1cnJlbnRT
dGFja1BvaW50ZXIoKTsKICAgICBtX3ZtLT5zZXRTdGFja1BvaW50ZXJBdFZNRW50cnkocCk7CiAK
ICAgICBtX3ZtLT5oZWFwLm1hY2hpbmVUaHJlYWRzKCkuYWRkQ3VycmVudFRocmVhZCgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZS5jcHAJKHJldmlz
aW9uIDIzNzAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTYsMTYgKzU2LDE2IEBAIFRocm93U2NvcGU6On5UaHJv
d1Njb3BlKCkKICAgICB9CiAKICAgICBib29sIHdpbGxCZUhhbmRsZUJ5TExJbnRPckpJVCA9IGZh
bHNlOwotICAgIHZvaWQqIHByZXZpb3VzU2NvcGUgPSBtX3ByZXZpb3VzU2NvcGU7CisgICAgY29u
c3Qgdm9pZCogcHJldmlvdXNTY29wZVN0YWNrUG9zaXRpb24gPSBtX3ByZXZpb3VzU2NvcGUgPyBt
X3ByZXZpb3VzU2NvcGUtPnN0YWNrUG9zaXRpb24oKSA6IG51bGxwdHI7CiAgICAgdm9pZCogdG9w
RW50cnlGcmFtZSA9IG1fdm0udG9wRW50cnlGcmFtZTsKIAogICAgIC8vIElmIHRoZSB0b3BFbnRy
eUZyYW1lIHdhcyBwdXNoZWQgb24gdGhlIHN0YWNrIGFmdGVyIHRoZSBwcmV2aW91c1Njb3BlIHdh
cyBpbnN0YW50aWF0ZWQsCiAgICAgLy8gdGhlbiB0aGlzIHRocm93U2NvcGUgd2lsbCBiZSByZXR1
cm5pbmcgdG8gTExJTlQgb3IgSklUIGNvZGUgdGhhdCBhbHdheXMgZG8gYW4gZXhjZXB0aW9uCiAg
ICAgLy8gY2hlY2suIEluIHRoYXQgY2FzZSwgc2tpcCB0aGUgc2ltdWxhdGVkIHRocm93IGJlY2F1
c2UgdGhlIExMSW50IGFuZCBKSVQgd2lsbCBiZQogICAgIC8vIGNoZWNraW5nIGZvciB0aGUgZXhj
ZXB0aW9uIHRoZWlyIG93biB3YXkgaW5zdGVhZCBvZiBjYWxsaW5nIFRocm93U2NvcGU6OmV4Y2Vw
dGlvbigpLgotICAgIGlmICh0b3BFbnRyeUZyYW1lICYmIHByZXZpb3VzU2NvcGUgPiB0b3BFbnRy
eUZyYW1lKQorICAgIGlmICh0b3BFbnRyeUZyYW1lICYmIHByZXZpb3VzU2NvcGVTdGFja1Bvc2l0
aW9uID4gdG9wRW50cnlGcmFtZSkKICAgICAgICAgd2lsbEJlSGFuZGxlQnlMTEludE9ySklUID0g
dHJ1ZTsKLSAgICAKKwogICAgIGlmICghd2lsbEJlSGFuZGxlQnlMTEludE9ySklUKQogICAgICAg
ICBzaW11bGF0ZVRocm93KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UaHJvd1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGhyb3dTY29wZS5oCShyZXZpc2lvbiAyMzcwMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UaHJvd1Njb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAg
cHJpdmF0ZToKIH07CiAKICNkZWZpbmUgREVDTEFSRV9USFJPV19TQ09QRSh2bV9fKSBcCi0gICAg
SlNDOjpUaHJvd1Njb3BlKCh2bV9fKSwgSlNDOjpFeGNlcHRpb25FdmVudExvY2F0aW9uKF9fRlVO
Q1RJT05fXywgX19GSUxFX18sIF9fTElORV9fKSkKKyAgICBKU0M6OlRocm93U2NvcGUoKHZtX18p
LCBKU0M6OkV4Y2VwdGlvbkV2ZW50TG9jYXRpb24oRVhDRVBUSU9OX1NDT1BFX1BPU0lUSU9OX0ZP
Ul9BU0FOLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXykpCiAKICNkZWZpbmUgdGhy
b3dTY29wZVByaW50SWZOZWVkQ2hlY2soc2NvcGVfXykgXAogICAgIHNjb3BlX18ucHJpbnRJZk5l
ZWRDaGVjayhfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjM3MDMwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvU3RhY2tCb3VuZHMuaD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tQb2ludGVyLmg+CiAjaW5j
bHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgpAQCAtODg0LDYgKzg4NSw3IEBA
IHB1YmxpYzoKICNpZiBFTkFCTEUoRVhDRVBUSU9OX1NDT1BFX1ZFUklGSUNBVElPTikKICAgICBT
dGFja1RyYWNlKiBuYXRpdmVTdGFja1RyYWNlT2ZMYXN0VGhyb3coKSBjb25zdCB7IHJldHVybiBt
X25hdGl2ZVN0YWNrVHJhY2VPZkxhc3RUaHJvdy5nZXQoKTsgfQogICAgIFRocmVhZCogdGhyb3dp
bmdUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3Rocm93aW5nVGhyZWFkLmdldCgpOyB9CisgICAg
Ym9vbCBuZWVkRXhjZXB0aW9uQ2hlY2soKSBjb25zdCB7IHJldHVybiBtX25lZWRFeGNlcHRpb25D
aGVjazsgfQogI2VuZGlmCiAKICNpZiBVU0UoQ0YpCkBAIC05MDMsNyArOTA1LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIGlzU2FmZVRvUmVjdXJzZSh2b2lkKiBzdGFja0xpbWl0KSBjb25zdAogICAg
IHsKICAgICAgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCkuaXNHcm93aW5nRG93
bndhcmQoKSk7Ci0gICAgICAgIHZvaWQqIGN1cnIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPigm
Y3Vycik7CisgICAgICAgIHZvaWQqIGN1cnIgPSBjdXJyZW50U3RhY2tQb2ludGVyKCk7CiAgICAg
ICAgIHJldHVybiBjdXJyID49IHN0YWNrTGltaXQ7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAko
cmV2aXNpb24gMjM3MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs
dWRlICJXYXNtTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKICNp
bmNsdWRlIDx3dGYvRmFzdFRMUy5oPgorI2luY2x1ZGUgPHd0Zi9TdGFja1BvaW50ZXIuaD4KICNp
bmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEzNSw3
ICsxMzYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsCiAgICAg
ewogICAgICAgICAvLyBXZSBkbyB0aGUgc3RhY2sgY2hlY2sgaGVyZSBmb3IgdGhlIHdyYXBwZXIg
ZnVuY3Rpb24gYmVjYXVzZSB3ZSBkb24ndAogICAgICAgICAvLyB3YW50IHRvIGVtaXQgYSBzdGFj
ayBjaGVjayBpbnNpZGUgZXZlcnkgd3JhcHBlciBmdW5jdGlvbi4KLSAgICAgICAgY29uc3QgaW50
cHRyX3Qgc3AgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZzcCk7IC8vIEEgcHJveHkgZm9yIHRo
ZSBjdXJyZW50IHN0YWNrIHBvaW50ZXIuCisgICAgICAgIGNvbnN0IGludHB0cl90IHNwID0gYml0
d2lzZV9jYXN0PGludHB0cl90PihjdXJyZW50U3RhY2tQb2ludGVyKCkpOwogICAgICAgICBjb25z
dCBpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94ZWRBcmdzLnNpemUoKSArIENhbGxGcmFtZTo6aGVh
ZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVvZihSZWdpc3Rlcik7CiAgICAgICAgIGNvbnN0IGlu
dHB0cl90IHN0YWNrU3BhY2VVc2VkID0gMiAqIGZyYW1lU2l6ZTsgLy8gV2UncmUgbWFraW5nIHR3
byBjYWxscy4gT25lIHRvIHRoZSB3cmFwcGVyLCBhbmQgb25lIHRvIHRoZSBhY3R1YWwgd2FzbSBj
b2RlLgogICAgICAgICBpZiAoVU5MSUtFTFkoKHNwIDwgc3RhY2tTcGFjZVVzZWQpIHx8ICgoc3Ag
LSBzdGFja1NwYWNlVXNlZCkgPCBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZtLnNvZnRTdGFja0xp
bWl0KCkpKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4u
Y3BwCShyZXZpc2lvbiAyMzcwMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
UGF0dGVybi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJZ
YXJyUGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tQb2ludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KQEAgLTEwOTMsNyArMTA5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICgh
bV9zdGFja0xpbWl0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIEFTU0VSVChU
aHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwotICAgICAgICBp
bnQ4X3QqIGN1cnIgPSByZWludGVycHJldF9jYXN0PGludDhfdCo+KCZjdXJyKTsKKyAgICAgICAg
aW50OF90KiBjdXJyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPihjdXJyZW50U3RhY2tQb2lu
dGVyKCkpOwogICAgICAgICBpbnQ4X3QqIGxpbWl0ID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3Qq
PihtX3N0YWNrTGltaXQpOwogICAgICAgICByZXR1cm4gY3VyciA+PSBsaW1pdDsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjM3MDMwKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0xMC0xMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlcyB0b3dhcmRzIGFsbG93aW5nIHVzZSBvZiB0aGUg
QVNBTiBkZXRlY3Rfc3RhY2tfdXNlX2FmdGVyX3JldHVybiBvcHRpb24uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA0MDUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzQ1MTMxNDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEludHJvZHVjZSBXVEY6OmN1cnJlbnRTdGFja1BvaW50ZXIoKSB3aGljaCBj
b21wdXRlcyBpdHMgY2FsbGVyJ3Mgc3RhY2sgcG9pbnRlciB2YWx1ZS4KKworICAgICAgICAqIFdU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiB3dGYvU3RhY2tCb3VuZHMuaDoKKyAgICAgICAgKFdURjo6U3RhY2tCb3Vu
ZHM6OmNoZWNrQ29uc2lzdGVuY3kgY29uc3QpOgorCiAyMDE4LTEwLTA5ICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHJpbmdUeXBlQWRhcHRlciBjb25zdHJ1Y3Rv
ciBpcyBub3QgcHJvcGVybHkgZW5mb3JjaW5nIFN0cmluZzo6TWF4TGVuZ3RoLgpJbmRleDogU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMzcwMzApCisr
KyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTgsNiArMTU4LDcgQEAKIAkJRkUwNUZBRkYxRkU1MDA3NTAwMDkzMjMwIC8qIFdURkFz
c2VydGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUwNUZBRkUxRkU1MDA3NTAwMDkzMjMwIC8qIFdURkFzc2VydGlvbnMuY3BwICovOyB9Owog
CQlGRTg1NDE2RTFGQkUyODVEMDA4REE1REEgLyogUG9pc29uZWQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4NTQxNkMxRkJFMjg1QjAwOERBNURB
IC8qIFBvaXNvbmVkLmNwcCAqLzsgfTsKIAkJRkVEQUNEM0QxNjMwRjgzRjAwQzY5NjM0IC8qIFN0
YWNrU3RhdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkVEQUNEM0IxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovOyB9OworCQlG
RUVBNERGOTIxNkQ3QkU0MDBBQzA2MDIgLyogU3RhY2tQb2ludGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRUE0REY4MjE2RDdCRTQwMEFDMDYw
MiAvKiBTdGFja1BvaW50ZXIuY3BwICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC02NjAs
NiArNjYxLDggQEAKIAkJRkVCNkIwMzUyMDFCRTBCNjAwQjk1OEMxIC8qIFBvaW50ZXJQcmVwYXJh
dGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9pbnRlclByZXBhcmF0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRURBQ0QzQjE2MzBGODNGMDBD
Njk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdGFja1N0YXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNE
M0MxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RhY2tTdGF0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
RUVBNERGNzIxNkQ2MDhDMDBBQzA2MDIgLyogU3RhY2tQb2ludGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0YWNrUG9pbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRUVBNERGODIxNkQ3QkU0MDBBQzA2MDIgLyogU3RhY2tQb2ludGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrUG9pbnRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRjI5NUJGMjBCNDlEQ0IwMENGMjgzQSAvKiBVVEY4
Q29udmVyc2lvbkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVURjhD
b252ZXJzaW9uRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkYwQTQzNjU4
ODk1NEYzQ0IwN0RCRUNBIC8qIFN0ZExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3RkTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZp
bGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwpAQCAtMTA4Niw2ICsxMDg5LDggQEAKIAkJCQlBOEE0NzMw
RDE1MUE4MjVCMDA0MTIzRkYgLyogU3BlY3RydW0uaCAqLywKIAkJCQlBOEE0NzMwRTE1MUE4MjVC
MDA0MTIzRkYgLyogU3RhY2tCb3VuZHMuY3BwICovLAogCQkJCUE4QTQ3MzBGMTUxQTgyNUIwMDQx
MjNGRiAvKiBTdGFja0JvdW5kcy5oICovLAorCQkJCUZFRUE0REY4MjE2RDdCRTQwMEFDMDYwMiAv
KiBTdGFja1BvaW50ZXIuY3BwICovLAorCQkJCUZFRUE0REY3MjE2RDYwOEMwMEFDMDYwMiAvKiBT
dGFja1BvaW50ZXIuaCAqLywKIAkJCQkwRjlEQUEwNDFGRDFDMzdCMDA3OUM1QjIgLyogU3RhY2tT
aG90LmggKi8sCiAJCQkJMEY5REFBMDUxRkQxQzM3QjAwNzlDNUIyIC8qIFN0YWNrU2hvdFByb2Zp
bGVyLmggKi8sCiAJCQkJRkVEQUNEM0IxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3Bw
ICovLApAQCAtMTU0Miw2ICsxNTQ3LDcgQEAKIAkJCQk1MUYxNzUyQzFGM0Q0ODYwMDBDNzQ5NTAg
LyogUGVyc2lzdGVudERlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMTc1MkQxRjNE
NDg2MDAwQzc0OTUwIC8qIFBlcnNpc3RlbnRFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUZFODU0MTZFMUZCRTI4NUQwMDhEQTVEQSAvKiBQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlGRUVBNERGOTIxNkQ3QkU0MDBBQzA2MDIgLyogU3RhY2tQb2ludGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGOUQzMzYyMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3QUYwMjNCNTIwNjFFMTcwMDBBOEVGRDYgLyogUHJvY2Vzc1By
aXZpbGVnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDNGNjExRjE1NjVGMEY5MDBEQjUxNEEg
LyogUkFNU2l6ZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CShy
ZXZpc2lvbiAyMzcwMzApCisrKyBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEwLDYgKzIxMCw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBT
b2Z0TGlua2luZy5oCiAgICAgU3BlY3RydW0uaAogICAgIFN0YWNrQm91bmRzLmgKKyAgICBTdGFj
a1BvaW50ZXIuaAogICAgIFN0YWNrU2hvdC5oCiAgICAgU3RhY2tTaG90UHJvZmlsZXIuaAogICAg
IFN0YWNrU3RhdHMuaApAQCAtMzg0LDYgKzM4NSw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIFNl
Y29uZHMuY3BwCiAgICAgU2l4Q2hhcmFjdGVySGFzaC5jcHAKICAgICBTdGFja0JvdW5kcy5jcHAK
KyAgICBTdGFja1BvaW50ZXIuY3BwCiAgICAgU3RhY2tTdGF0cy5jcHAKICAgICBTdGFja1RyYWNl
LmNwcAogICAgIFN0cmluZ1ByaW50U3RyZWFtLmNwcApJbmRleDogU291cmNlL1dURi93dGYvU3Rh
Y2tCb3VuZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5oCShy
ZXZpc2lvbiAyMzcwMzApCisrKyBTb3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjZGVmaW5lIFN0YWNrQm91bmRzX2gKIAogI2luY2x1
ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx3dGYvU3RhY2tQb2ludGVyLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xNDYsNyAr
MTQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogICAg
IHsKICNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgICAgIHZvaWQqIGN1cnJlbnRQb3NpdGlvbiA9
ICZjdXJyZW50UG9zaXRpb247CisgICAgICAgIHZvaWQqIGN1cnJlbnRQb3NpdGlvbiA9IGN1cnJl
bnRTdGFja1BvaW50ZXIoKTsKICAgICAgICAgQVNTRVJUKG1fb3JpZ2luICE9IG1fYm91bmQpOwog
ICAgICAgICBBU1NFUlQoaXNHcm93aW5nRG93bndhcmQoKQogICAgICAgICAgICAgPyAoY3VycmVu
dFBvc2l0aW9uIDwgbV9vcmlnaW4gJiYgY3VycmVudFBvc2l0aW9uID4gbV9ib3VuZCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352022</attachid>
            <date>2018-10-10 22:53:17 -0700</date>
            <delta_ts>2018-10-11 11:01:57 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-190405.patch</filename>
            <type>text/plain</type>
            <size>22067</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM3MDMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBA
CisyMDE4LTEwLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
aGFuZ2VzIHRvd2FyZHMgYWxsb3dpbmcgdXNlIG9mIHRoZSBBU0FOIGRldGVjdF9zdGFja191c2Vf
YWZ0ZXJfcmV0dXJuIG9wdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MDQwNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDUxMzE0NjQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIEFTQU4g
ZGV0ZWN0X3N0YWNrX3VzZV9hZnRlcl9yZXR1cm4gb3B0aW9uIGNoZWNrcyBmb3IgdXNlIG9mIHN0
YWNrIHZhcmlhYmxlcworICAgICAgICBhZnRlciB0aGV5IGhhdmUgYmVlbiBmcmVlZC4gIEl0IGRv
ZXMgdGhpcyBieSBhbGxvY2F0aW5nIHJlbGV2YW50IHN0YWNrIHZhcmlhYmxlcworICAgICAgICBp
biBoZWFwIG1lbW9yeSAoaW5zdGVhZCBvZiBvbiB0aGUgc3RhY2spIGlmIHRoZSBjb2RlIGV2ZXIg
dGFrZXMgdGhlIGFkZHJlc3Mgb2YKKyAgICAgICAgdGhvc2Ugc3RhY2sgdmFyaWFibGVzLiAgVW5m
b3J0dW5hdGVseSwgdGhpcyBpcyBhIGNvbW1vbiBpZGlvbSB0aGF0IHdlIHVzZSB0bworICAgICAg
ICBjb21wdXRlIHRoZSBhcHByb3hpbWF0ZSBzdGFjayBwb2ludGVyIHZhbHVlLiAgQXMgYSByZXN1
bHQsIG9uIHN1Y2ggQVNBTiBydW5zLCB0aGUKKyAgICAgICAgY29tcHV0ZWQgYXBwcm94aW1hdGUg
c3RhY2sgcG9pbnRlciB2YWx1ZSB3aWxsIHBvaW50IGludG8gdGhlIGhlYXAgaW5zdGVhZCBvZiB0
aGUKKyAgICAgICAgc3RhY2suICBUaGlzIGJyZWFrcyB0aGUgVk0ncyBleHBlY3RhdGlvbnMgYW5k
IHdyZWFrcyBoYXZvYy4KKworICAgICAgICBUbyBmaXggdGhpcywgd2UgdXNlIHRoZSBuZXdseSBp
bnRyb2R1Y2VkIFdURjo6Y3VycmVudFN0YWNrUG9pbnRlcigpIGluc3RlYWQgb2YKKyAgICAgICAg
dGFraW5nIHRoZSBhZGRyZXNzIG9mIHN0YWNrIHZhcmlhYmxlcy4KKworICAgICAgICBXZSBhbHNv
IG5lZWQgdG8gZW5oYW5jZSBFeGNlcHRpb25TY29wZXMgdG8gYmUgYWJsZSB0byB3b3JrIHdpdGgg
QVNBTgorICAgICAgICBkZXRlY3Rfc3RhY2tfdXNlX2FmdGVyX3JldHVybiB3aGljaCB3aWxsIGFs
bG9jYXRlZCB0aGUgc2NvcGUgaW4gdGhlIGhlYXAuICBXZQorICAgICAgICB3b3JrIGFyb3VuZCB0
aGlzIGJ5IHBhc3NpbmcgdGhlIGN1cnJlbnQgc3RhY2sgcG9pbnRlciBvZiB0aGUgaW5zdGFudGlh
dGluZyBjYWxsaW5nCisgICAgICAgIGZyYW1lIGludG8gdGhlIHNjb3BlIGNvbnN0cnVjdG9yLCBh
bmQgdXNpbmcgdGhhdCBmb3IgdGhlIHBvc2l0aW9uIGNoZWNrIGluCisgICAgICAgIH5UaHJvd1Nj
b3BlKCkgaW5zdGVhZC4KKworICAgICAgICBUaGUgYWJvdmUgaXMgb25seSBhIHN0YXJ0IHRvd2Fy
ZHMgZW5hYmxpbmcgQVNBTiBkZXRlY3Rfc3RhY2tfdXNlX2FmdGVyX3JldHVybiBvbgorICAgICAg
ICB0aGUgVk0uICBUaGVyZSBhcmUgc3RpbGwgb3RoZXIgaXNzdWVzIHRvIGJlIHJlc29sdmVkIGJl
Zm9yZSB3ZSBjYW4gcnVuIHdpdGggdGhpcworICAgICAgICBBU0FOIG9wdGlvbi4KKworICAgICAg
ICAqIHJ1bnRpbWUvQ2F0Y2hTY29wZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uRXZl
bnRMb2NhdGlvbi5oOgorICAgICAgICAoSlNDOjpFeGNlcHRpb25FdmVudExvY2F0aW9uOjpFeGNl
cHRpb25FdmVudExvY2F0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvblNjb3BlLmg6
CisgICAgICAgIChKU0M6OkV4Y2VwdGlvblNjb3BlOjpzdGFja1Bvc2l0aW9uIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6ZGlkQWNx
dWlyZUxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvVGhyb3dTY29wZS5jcHA6CisgICAgICAgIChK
U0M6OlRocm93U2NvcGU6On5UaHJvd1Njb3BlKToKKyAgICAgICAgKiBydW50aW1lL1Rocm93U2Nv
cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpuZWVkRXhj
ZXB0aW9uQ2hlY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpWTTo6aXNTYWZlVG9SZWN1cnNlIGNv
bnN0KToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAgICAg
ICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6Omlz
U2FmZVRvUmVjdXJzZSBjb25zdCk6CisKIDIwMTgtMTAtMTAgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNyZWF0ZSBzcGVjaWFsIE5l
dHdvcmsgd2F0ZXJmYWxsIGZvciBtZWRpYSBldmVudHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhdGNoU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYXRjaFNjb3BlLmgJKHJldmlzaW9uIDIzNzAzMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhdGNoU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw3ICsz
NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogLy8gdG9wIG9mIHRoZSBmdW5jdGlvbiAoYXMgZWFybHkg
YXMgcG9zc2libGUpIHVzaW5nIHRoZSBERUNMQVJFX0NBVENIX1NDT1BFIG1hY3JvLgogLy8gRGVj
bGFyaW5nIGEgQ2F0Y2hTY29wZSBpbiBhIGZ1bmN0aW9uIG1lYW5zIHRoYXQgdGhlIGZ1bmN0aW9u
IGludGVuZHMgdG8gY2xlYXIKIC8vIHBlbmRpbmcgZXhjZXB0aW9ucyBiZWZvcmUgcmV0dXJuaW5n
IHRvIGl0cyBjYWxsZXIuCi0gICAgCisKIGNsYXNzIENhdGNoU2NvcGUgOiBwdWJsaWMgRXhjZXB0
aW9uU2NvcGUgewogcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIENhdGNoU2NvcGUoVk0m
LCBFeGNlcHRpb25FdmVudExvY2F0aW9uKTsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogfTsK
IAogI2RlZmluZSBERUNMQVJFX0NBVENIX1NDT1BFKHZtX18pIFwKLSAgICBKU0M6OkNhdGNoU2Nv
cGUoKHZtX18pLCBKU0M6OkV4Y2VwdGlvbkV2ZW50TG9jYXRpb24oX19GVU5DVElPTl9fLCBfX0ZJ
TEVfXywgX19MSU5FX18pKQorICAgIEpTQzo6Q2F0Y2hTY29wZSgodm1fXyksIEpTQzo6RXhjZXB0
aW9uRXZlbnRMb2NhdGlvbihFWENFUFRJT05fU0NPUEVfUE9TSVRJT05fRk9SX0FTQU4sIF9fRlVO
Q1RJT05fXywgX19GSUxFX18sIF9fTElORV9fKSkKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShFWENF
UFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGNlcHRpb25FdmVudExvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRXZlbnRMb2NhdGlvbi5oCShyZXZpc2lvbiAy
MzcwMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25FdmVudExv
Y2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksMTIgKzI5LDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBzdHJ1Y3QgRXhjZXB0aW9uRXZlbnRMb2NhdGlvbiB7CiAgICAgRXhjZXB0aW9uRXZlbnRMb2Nh
dGlvbigpIHsgfQotICAgIEV4Y2VwdGlvbkV2ZW50TG9jYXRpb24oY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBjb25zdCBjaGFyKiBmaWxlLCB1bnNpZ25lZCBsaW5lKQotICAgICAgICA6IGZ1bmN0
aW9uTmFtZShmdW5jdGlvbk5hbWUpCisgICAgRXhjZXB0aW9uRXZlbnRMb2NhdGlvbih2b2lkKiBz
dGFja1Bvc2l0aW9uLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGZpbGUs
IHVuc2lnbmVkIGxpbmUpCisgICAgICAgIDogc3RhY2tQb3NpdGlvbihzdGFja1Bvc2l0aW9uKQor
ICAgICAgICAsIGZ1bmN0aW9uTmFtZShmdW5jdGlvbk5hbWUpCiAgICAgICAgICwgZmlsZShmaWxl
KQogICAgICAgICAsIGxpbmUobGluZSkKICAgICB7IH0KICAgICAKKyAgICB2b2lkKiBzdGFja1Bv
c2l0aW9uIHsgbnVsbHB0ciB9OyAvLyBOZWVkZWQgZm9yIEFTQU4gZGV0ZWN0X3N0YWNrX3VzZV9h
ZnRlcl9yZXR1cm4uCiAgICAgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lIHsgbnVsbHB0ciB9Owog
ICAgIGNvbnN0IGNoYXIqIGZpbGUgeyBudWxscHRyIH07CiAgICAgdW5zaWduZWQgbGluZSB7IDAg
fTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvblNjb3BlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uU2Nv
cGUuaAkocmV2aXNpb24gMjM3MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlIDx3dGYvU3RhY2tQb2ludGVyLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogICAgIApAQCAtMzcsNiArMzgsMTIgQEAgY2xhc3MgRXhjZXB0
aW9uOwogI2RlZmluZSBFWENFUFRJT05fQVNTRVJUX1VOVVNFRCh2YXJpYWJsZSwgYXNzZXJ0aW9u
KSBSRUxFQVNFX0FTU0VSVChhc3NlcnRpb24pCiAjZGVmaW5lIEVYQ0VQVElPTl9BU1NFUlRfV0lU
SF9NRVNTQUdFKGFzc2VydGlvbiwgbWVzc2FnZSkgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdF
KGFzc2VydGlvbiwgbWVzc2FnZSkKIAorI2lmIEFTQU5fRU5BQkxFRCAmJiBDT01QSUxFUihHQ0Nf
Q09NUEFUSUJMRSkKKyNkZWZpbmUgRVhDRVBUSU9OX1NDT1BFX1BPU0lUSU9OX0ZPUl9BU0FOIGN1
cnJlbnRTdGFja1BvaW50ZXIoKQorI2Vsc2UKKyNkZWZpbmUgRVhDRVBUSU9OX1NDT1BFX1BPU0lU
SU9OX0ZPUl9BU0FOIG51bGxwdHIKKyNlbmRpZgorCiBjbGFzcyBFeGNlcHRpb25TY29wZSB7CiBw
dWJsaWM6CiAgICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQpAQCAtNDYsNiArNTMs
MTIgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhc3NlcnROb0V4Y2VwdGlvbigp
IHsgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKCFleGNlcHRpb24oKSwgIiVzIiwgdW5leHBl
Y3RlZEV4Y2VwdGlvbk1lc3NhZ2UoKS5kYXRhKCkpOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IHJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpIHsgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdF
KCFleGNlcHRpb24oKSwgIiVzIiwgdW5leHBlY3RlZEV4Y2VwdGlvbk1lc3NhZ2UoKS5kYXRhKCkp
OyB9CiAKKyNpZiBBU0FOX0VOQUJMRUQKKyAgICBjb25zdCB2b2lkKiBzdGFja1Bvc2l0aW9uKCkg
Y29uc3QgeyAgcmV0dXJuIG1fbG9jYXRpb24uc3RhY2tQb3NpdGlvbjsgfQorI2Vsc2UKKyAgICBj
b25zdCB2b2lkKiBzdGFja1Bvc2l0aW9uKCkgY29uc3QgeyAgcmV0dXJuIHRoaXM7IH0KKyNlbmRp
ZgorCiBwcm90ZWN0ZWQ6CiAgICAgRXhjZXB0aW9uU2NvcGUoVk0mLCBFeGNlcHRpb25FdmVudExv
Y2F0aW9uKTsKICAgICBFeGNlcHRpb25TY29wZShjb25zdCBFeGNlcHRpb25TY29wZSYpID0gZGVs
ZXRlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCShyZXZp
c2lvbiAyMzcwMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9m
aWxlci5oIgogI2luY2x1ZGUgIldhc21NYWNoaW5lVGhyZWFkcy5oIgogI2luY2x1ZGUgPHRocmVh
ZD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tQb2ludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL1NpZ25hbHMuaD4KIApAQCAtMTQzLDcgKzE0NCw3
IEBAIHZvaWQgSlNMb2NrOjpkaWRBY3F1aXJlTG9jaygpCiAgICAgfQogCiAgICAgUkVMRUFTRV9B
U1NFUlQoIW1fdm0tPnN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpKTsKLSAgICB2b2lkKiBwID0gJnA7
IC8vIEEgcHJveHkgZm9yIHRoZSBjdXJyZW50IHN0YWNrIHBvaW50ZXIuCisgICAgdm9pZCogcCA9
IGN1cnJlbnRTdGFja1BvaW50ZXIoKTsKICAgICBtX3ZtLT5zZXRTdGFja1BvaW50ZXJBdFZNRW50
cnkocCk7CiAKICAgICBtX3ZtLT5oZWFwLm1hY2hpbmVUaHJlYWRzKCkuYWRkQ3VycmVudFRocmVh
ZCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZS5j
cHAJKHJldmlzaW9uIDIzNzAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Ro
cm93U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTYsMTYgKzU2LDE2IEBAIFRocm93U2Nv
cGU6On5UaHJvd1Njb3BlKCkKICAgICB9CiAKICAgICBib29sIHdpbGxCZUhhbmRsZUJ5TExJbnRP
ckpJVCA9IGZhbHNlOwotICAgIHZvaWQqIHByZXZpb3VzU2NvcGUgPSBtX3ByZXZpb3VzU2NvcGU7
CisgICAgY29uc3Qgdm9pZCogcHJldmlvdXNTY29wZVN0YWNrUG9zaXRpb24gPSBtX3ByZXZpb3Vz
U2NvcGUgPyBtX3ByZXZpb3VzU2NvcGUtPnN0YWNrUG9zaXRpb24oKSA6IG51bGxwdHI7CiAgICAg
dm9pZCogdG9wRW50cnlGcmFtZSA9IG1fdm0udG9wRW50cnlGcmFtZTsKIAogICAgIC8vIElmIHRo
ZSB0b3BFbnRyeUZyYW1lIHdhcyBwdXNoZWQgb24gdGhlIHN0YWNrIGFmdGVyIHRoZSBwcmV2aW91
c1Njb3BlIHdhcyBpbnN0YW50aWF0ZWQsCiAgICAgLy8gdGhlbiB0aGlzIHRocm93U2NvcGUgd2ls
bCBiZSByZXR1cm5pbmcgdG8gTExJTlQgb3IgSklUIGNvZGUgdGhhdCBhbHdheXMgZG8gYW4gZXhj
ZXB0aW9uCiAgICAgLy8gY2hlY2suIEluIHRoYXQgY2FzZSwgc2tpcCB0aGUgc2ltdWxhdGVkIHRo
cm93IGJlY2F1c2UgdGhlIExMSW50IGFuZCBKSVQgd2lsbCBiZQogICAgIC8vIGNoZWNraW5nIGZv
ciB0aGUgZXhjZXB0aW9uIHRoZWlyIG93biB3YXkgaW5zdGVhZCBvZiBjYWxsaW5nIFRocm93U2Nv
cGU6OmV4Y2VwdGlvbigpLgotICAgIGlmICh0b3BFbnRyeUZyYW1lICYmIHByZXZpb3VzU2NvcGUg
PiB0b3BFbnRyeUZyYW1lKQorICAgIGlmICh0b3BFbnRyeUZyYW1lICYmIHByZXZpb3VzU2NvcGVT
dGFja1Bvc2l0aW9uID4gdG9wRW50cnlGcmFtZSkKICAgICAgICAgd2lsbEJlSGFuZGxlQnlMTElu
dE9ySklUID0gdHJ1ZTsKLSAgICAKKwogICAgIGlmICghd2lsbEJlSGFuZGxlQnlMTEludE9ySklU
KQogICAgICAgICBzaW11bGF0ZVRocm93KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UaHJvd1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGhyb3dTY29wZS5oCShyZXZpc2lvbiAyMzcwMzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcg
KzYyLDcgQEAgcHJpdmF0ZToKIH07CiAKICNkZWZpbmUgREVDTEFSRV9USFJPV19TQ09QRSh2bV9f
KSBcCi0gICAgSlNDOjpUaHJvd1Njb3BlKCh2bV9fKSwgSlNDOjpFeGNlcHRpb25FdmVudExvY2F0
aW9uKF9fRlVOQ1RJT05fXywgX19GSUxFX18sIF9fTElORV9fKSkKKyAgICBKU0M6OlRocm93U2Nv
cGUoKHZtX18pLCBKU0M6OkV4Y2VwdGlvbkV2ZW50TG9jYXRpb24oRVhDRVBUSU9OX1NDT1BFX1BP
U0lUSU9OX0ZPUl9BU0FOLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXykpCiAKICNk
ZWZpbmUgdGhyb3dTY29wZVByaW50SWZOZWVkQ2hlY2soc2NvcGVfXykgXAogICAgIHNjb3BlX18u
cHJpbnRJZk5lZWRDaGVjayhfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXykKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjM3MDMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQs
NyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvU3RhY2tCb3VuZHMuaD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tQb2ludGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgpAQCAtODg0LDYg
Kzg4NSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRVhDRVBUSU9OX1NDT1BFX1ZFUklGSUNBVElP
TikKICAgICBTdGFja1RyYWNlKiBuYXRpdmVTdGFja1RyYWNlT2ZMYXN0VGhyb3coKSBjb25zdCB7
IHJldHVybiBtX25hdGl2ZVN0YWNrVHJhY2VPZkxhc3RUaHJvdy5nZXQoKTsgfQogICAgIFRocmVh
ZCogdGhyb3dpbmdUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3Rocm93aW5nVGhyZWFkLmdldCgp
OyB9CisgICAgYm9vbCBuZWVkRXhjZXB0aW9uQ2hlY2soKSBjb25zdCB7IHJldHVybiBtX25lZWRF
eGNlcHRpb25DaGVjazsgfQogI2VuZGlmCiAKICNpZiBVU0UoQ0YpCkBAIC05MDMsNyArOTA1LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzU2FmZVRvUmVjdXJzZSh2b2lkKiBzdGFja0xpbWl0KSBj
b25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCkuaXNH
cm93aW5nRG93bndhcmQoKSk7Ci0gICAgICAgIHZvaWQqIGN1cnIgPSByZWludGVycHJldF9jYXN0
PHZvaWQqPigmY3Vycik7CisgICAgICAgIHZvaWQqIGN1cnIgPSBjdXJyZW50U3RhY2tQb2ludGVy
KCk7CiAgICAgICAgIHJldHVybiBjdXJyID49IHN0YWNrTGltaXQ7CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0
aW9uLmNwcAkocmV2aXNpb24gMjM3MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcg
QEAKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGlu
ZXMuaCIKICNpbmNsdWRlIDx3dGYvRmFzdFRMUy5oPgorI2luY2x1ZGUgPHd0Zi9TdGFja1BvaW50
ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTEzNSw3ICsxMzYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsCiAgICAgewogICAgICAgICAvLyBXZSBkbyB0aGUgc3RhY2sgY2hlY2sgaGVyZSBmb3IgdGhl
IHdyYXBwZXIgZnVuY3Rpb24gYmVjYXVzZSB3ZSBkb24ndAogICAgICAgICAvLyB3YW50IHRvIGVt
aXQgYSBzdGFjayBjaGVjayBpbnNpZGUgZXZlcnkgd3JhcHBlciBmdW5jdGlvbi4KLSAgICAgICAg
Y29uc3QgaW50cHRyX3Qgc3AgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZzcCk7IC8vIEEgcHJv
eHkgZm9yIHRoZSBjdXJyZW50IHN0YWNrIHBvaW50ZXIuCisgICAgICAgIGNvbnN0IGludHB0cl90
IHNwID0gYml0d2lzZV9jYXN0PGludHB0cl90PihjdXJyZW50U3RhY2tQb2ludGVyKCkpOwogICAg
ICAgICBjb25zdCBpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94ZWRBcmdzLnNpemUoKSArIENhbGxG
cmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVvZihSZWdpc3Rlcik7CiAgICAgICAg
IGNvbnN0IGludHB0cl90IHN0YWNrU3BhY2VVc2VkID0gMiAqIGZyYW1lU2l6ZTsgLy8gV2UncmUg
bWFraW5nIHR3byBjYWxscy4gT25lIHRvIHRoZSB3cmFwcGVyLCBhbmQgb25lIHRvIHRoZSBhY3R1
YWwgd2FzbSBjb2RlLgogICAgICAgICBpZiAoVU5MSUtFTFkoKHNwIDwgc3RhY2tTcGFjZVVzZWQp
IHx8ICgoc3AgLSBzdGFja1NwYWNlVXNlZCkgPCBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZtLnNv
ZnRTdGFja0xpbWl0KCkpKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
UGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clBhdHRlcm4uY3BwCShyZXZpc2lvbiAyMzcwMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJyUGF0dGVybi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJZYXJyUGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tQb2ludGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTEwOTMsNyArMTA5NCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGlmICghbV9zdGFja0xpbWl0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwot
ICAgICAgICBpbnQ4X3QqIGN1cnIgPSByZWludGVycHJldF9jYXN0PGludDhfdCo+KCZjdXJyKTsK
KyAgICAgICAgaW50OF90KiBjdXJyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPihjdXJyZW50
U3RhY2tQb2ludGVyKCkpOwogICAgICAgICBpbnQ4X3QqIGxpbWl0ID0gcmVpbnRlcnByZXRfY2Fz
dDxpbnQ4X3QqPihtX3N0YWNrTGltaXQpOwogICAgICAgICByZXR1cm4gY3VyciA+PSBsaW1pdDsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjM3MDMwKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxOC0xMC0xMCAgTWFyayBMYW0gIDxt
YXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlcyB0b3dhcmRzIGFsbG93aW5nIHVz
ZSBvZiB0aGUgQVNBTiBkZXRlY3Rfc3RhY2tfdXNlX2FmdGVyX3JldHVybiBvcHRpb24uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA0MDUKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzQ1MTMxNDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBXVEY6OmN1cnJlbnRTdGFja1BvaW50ZXIo
KSB3aGljaCBjb21wdXRlcyBpdHMgY2FsbGVyJ3Mgc3RhY2sgcG9pbnRlciB2YWx1ZS4KKworICAg
ICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvU3RhY2tCb3VuZHMuaDoKKyAgICAgICAgKFdURjo6
U3RhY2tCb3VuZHM6OmNoZWNrQ29uc2lzdGVuY3kgY29uc3QpOgorICAgICAgICAqIHd0Zi9TdGFj
a1BvaW50ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Y3VycmVudFN0YWNrUG9pbnRlcik6
CisgICAgICAgICogd3RmL1N0YWNrUG9pbnRlci5oOiBBZGRlZC4KKwogMjAxOC0xMC0wOSAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgU3RyaW5nVHlwZUFkYXB0ZXIg
Y29uc3RydWN0b3IgaXMgbm90IHByb3Blcmx5IGVuZm9yY2luZyBTdHJpbmc6Ok1heExlbmd0aC4K
SW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjM3MDMwKQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTU4LDYgKzE1OCw3IEBACiAJCUZFMDVGQUZGMUZFNTAwNzUwMDA5MzIz
MCAvKiBXVEZBc3NlcnRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMDVGQUZFMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNw
cCAqLzsgfTsKIAkJRkU4NTQxNkUxRkJFMjg1RDAwOERBNURBIC8qIFBvaXNvbmVkLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODU0MTZDMUZCRTI4
NUIwMDhEQTVEQSAvKiBQb2lzb25lZC5jcHAgKi87IH07CiAJCUZFREFDRDNEMTYzMEY4M0YwMEM2
OTYzNCAvKiBTdGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAq
LzsgfTsKKwkJRkVFQTRERjkyMTZEN0JFNDAwQUMwNjAyIC8qIFN0YWNrUG9pbnRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUVBNERGODIxNkQ3
QkU0MDBBQzA2MDIgLyogU3RhY2tQb2ludGVyLmNwcCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZp
bGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAq
LwpAQCAtNjYwLDYgKzY2MSw4IEBACiAJCUZFQjZCMDM1MjAxQkUwQjYwMEI5NThDMSAvKiBQb2lu
dGVyUHJlcGFyYXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvaW50
ZXJQcmVwYXJhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0Ix
NjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3RhY2tTdGF0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YWNrU3RhdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkVFQTRERjcyMTZENjA4QzAwQUMwNjAyIC8qIFN0YWNrUG9pbnRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1BvaW50ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkVFQTRERjgyMTZEN0JFNDAwQUMwNjAyIC8qIFN0YWNrUG9pbnRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGFja1BvaW50ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUYyOTVCRjIwQjQ5RENCMDBDRjI4
M0EgLyogVVRGOENvbnZlcnNpb25FcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBVVEY4Q29udmVyc2lvbkVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZGMEE0MzY1ODg5NTRGM0NCMDdEQkVDQSAvKiBTdGRMaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN0ZExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8q
IEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KQEAgLTEwODYsNiArMTA4OSw4IEBACiAJ
CQkJQThBNDczMEQxNTFBODI1QjAwNDEyM0ZGIC8qIFNwZWN0cnVtLmggKi8sCiAJCQkJQThBNDcz
MEUxNTFBODI1QjAwNDEyM0ZGIC8qIFN0YWNrQm91bmRzLmNwcCAqLywKIAkJCQlBOEE0NzMwRjE1
MUE4MjVCMDA0MTIzRkYgLyogU3RhY2tCb3VuZHMuaCAqLywKKwkJCQlGRUVBNERGODIxNkQ3QkU0
MDBBQzA2MDIgLyogU3RhY2tQb2ludGVyLmNwcCAqLywKKwkJCQlGRUVBNERGNzIxNkQ2MDhDMDBB
QzA2MDIgLyogU3RhY2tQb2ludGVyLmggKi8sCiAJCQkJMEY5REFBMDQxRkQxQzM3QjAwNzlDNUIy
IC8qIFN0YWNrU2hvdC5oICovLAogCQkJCTBGOURBQTA1MUZEMUMzN0IwMDc5QzVCMiAvKiBTdGFj
a1Nob3RQcm9maWxlci5oICovLAogCQkJCUZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFj
a1N0YXRzLmNwcCAqLywKQEAgLTE1NDIsNiArMTU0Nyw3IEBACiAJCQkJNTFGMTc1MkMxRjNENDg2
MDAwQzc0OTUwIC8qIFBlcnNpc3RlbnREZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
RjE3NTJEMUYzRDQ4NjAwMEM3NDk1MCAvKiBQZXJzaXN0ZW50RW5jb2Rlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGRTg1NDE2RTFGQkUyODVEMDA4REE1REEgLyogUG9pc29uZWQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJRkVFQTRERjkyMTZEN0JFNDAwQUMwNjAyIC8qIFN0YWNrUG9pbnRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM2MjE2NURCQTczMDA1QUQzODcgLyogUHJpbnRT
dHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FGMDIzQjUyMDYxRTE3MDAwQThFRkQ2IC8q
IFByb2Nlc3NQcml2aWxlZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQzRjYxMUYxNTY1RjBG
OTAwREI1MTRBIC8qIFJBTVNpemUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMjM3MDMwKQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw2ICsyMTAsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFE
RVJTCiAgICAgU29mdExpbmtpbmcuaAogICAgIFNwZWN0cnVtLmgKICAgICBTdGFja0JvdW5kcy5o
CisgICAgU3RhY2tQb2ludGVyLmgKICAgICBTdGFja1Nob3QuaAogICAgIFN0YWNrU2hvdFByb2Zp
bGVyLmgKICAgICBTdGFja1N0YXRzLmgKQEAgLTM4NCw2ICszODUsNyBAQCBzZXQoV1RGX1NPVVJD
RVMKICAgICBTZWNvbmRzLmNwcAogICAgIFNpeENoYXJhY3Rlckhhc2guY3BwCiAgICAgU3RhY2tC
b3VuZHMuY3BwCisgICAgU3RhY2tQb2ludGVyLmNwcAogICAgIFN0YWNrU3RhdHMuY3BwCiAgICAg
U3RhY2tUcmFjZS5jcHAKICAgICBTdHJpbmdQcmludFN0cmVhbS5jcHAKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL1N0YWNrQm91bmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU3RhY2tC
b3VuZHMuaAkocmV2aXNpb24gMjM3MDMwKQorKysgU291cmNlL1dURi93dGYvU3RhY2tCb3VuZHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2RlZmluZSBTdGFja0JvdW5kc19o
CiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8d3RmL1N0YWNrUG9pbnRlci5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpA
QCAtMTQ2LDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkg
Y29uc3QKICAgICB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICB2b2lkKiBjdXJyZW50
UG9zaXRpb24gPSAmY3VycmVudFBvc2l0aW9uOworICAgICAgICB2b2lkKiBjdXJyZW50UG9zaXRp
b24gPSBjdXJyZW50U3RhY2tQb2ludGVyKCk7CiAgICAgICAgIEFTU0VSVChtX29yaWdpbiAhPSBt
X2JvdW5kKTsKICAgICAgICAgQVNTRVJUKGlzR3Jvd2luZ0Rvd253YXJkKCkKICAgICAgICAgICAg
ID8gKGN1cnJlbnRQb3NpdGlvbiA8IG1fb3JpZ2luICYmIGN1cnJlbnRQb3NpdGlvbiA+IG1fYm91
bmQpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TdGFja1BvaW50ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1N0YWNrUG9pbnRlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dURi93dGYvU3RhY2tQb2ludGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0YWNrUG9pbnRlci5oIgorCituYW1lc3BhY2UgV1RGIHsK
KworY29uc3RleHByIHNpemVfdCBzaXplT2ZGcmFtZUhlYWRlciA9IDIgKiBzaXplb2Yodm9pZCop
OworCitTVVBQUkVTU19BU0FOIE5FVkVSX0lOTElORQordm9pZCogY3VycmVudFN0YWNrUG9pbnRl
cigpCit7CisjaWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDhfdCo+KF9fYnVpbHRpbl9mcmFtZV9hZGRyZXNzKDApKSArIHNpemVPZkZy
YW1lSGVhZGVyOworI2Vsc2UKKyAgICAvLyBNYWtlIHN1cmUgdGhhdCBzcCBpcyB0aGUgb25seSBs
b2NhbCB2YXJpYWJsZSBkZWNhbHJlZCBpbiB0aGlzIGZ1bmN0aW9uLgorICAgIHZvaWQqIHNwID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnNwKSArIHNpemVPZkZyYW1lSGVhZGVyICsgc2l6
ZW9mKHNwKTsKKyAgICByZXR1cm4gc3A7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgV1RG
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TdGFja1BvaW50ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9TdGFja1BvaW50ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0
Zi9TdGFja1BvaW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25h
bWVzcGFjZSBXVEYgeworCitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCogY3VycmVudFN0YWNrUG9p
bnRlcigpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpjdXJyZW50U3RhY2tQ
b2ludGVyOwo=
</data>
<flag name="review"
          id="369358"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352056</attachid>
            <date>2018-10-11 11:01:57 -0700</date>
            <delta_ts>2018-10-11 11:12:14 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-190405.patch</filename>
            <type>text/plain</type>
            <size>23173</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM3MDM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBA
CisyMDE4LTEwLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
aGFuZ2VzIHRvd2FyZHMgYWxsb3dpbmcgdXNlIG9mIHRoZSBBU0FOIGRldGVjdF9zdGFja191c2Vf
YWZ0ZXJfcmV0dXJuIG9wdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MDQwNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDUxMzE0NjQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBTYWJvZmYuCisKKyAgICAgICAgVGhlIEFTQU4g
ZGV0ZWN0X3N0YWNrX3VzZV9hZnRlcl9yZXR1cm4gb3B0aW9uIGNoZWNrcyBmb3IgdXNlIG9mIHN0
YWNrIHZhcmlhYmxlcworICAgICAgICBhZnRlciB0aGV5IGhhdmUgYmVlbiBmcmVlZC4gIEl0IGRv
ZXMgdGhpcyBieSBhbGxvY2F0aW5nIHJlbGV2YW50IHN0YWNrIHZhcmlhYmxlcworICAgICAgICBp
biBoZWFwIG1lbW9yeSAoaW5zdGVhZCBvZiBvbiB0aGUgc3RhY2spIGlmIHRoZSBjb2RlIGV2ZXIg
dGFrZXMgdGhlIGFkZHJlc3Mgb2YKKyAgICAgICAgdGhvc2Ugc3RhY2sgdmFyaWFibGVzLiAgVW5m
b3J0dW5hdGVseSwgdGhpcyBpcyBhIGNvbW1vbiBpZGlvbSB0aGF0IHdlIHVzZSB0bworICAgICAg
ICBjb21wdXRlIHRoZSBhcHByb3hpbWF0ZSBzdGFjayBwb2ludGVyIHZhbHVlLiAgQXMgYSByZXN1
bHQsIG9uIHN1Y2ggQVNBTiBydW5zLCB0aGUKKyAgICAgICAgY29tcHV0ZWQgYXBwcm94aW1hdGUg
c3RhY2sgcG9pbnRlciB2YWx1ZSB3aWxsIHBvaW50IGludG8gdGhlIGhlYXAgaW5zdGVhZCBvZiB0
aGUKKyAgICAgICAgc3RhY2suICBUaGlzIGJyZWFrcyB0aGUgVk0ncyBleHBlY3RhdGlvbnMgYW5k
IHdyZWFrcyBoYXZvYy4KKworICAgICAgICBUbyBmaXggdGhpcywgd2UgdXNlIHRoZSBuZXdseSBp
bnRyb2R1Y2VkIFdURjo6Y3VycmVudFN0YWNrUG9pbnRlcigpIGluc3RlYWQgb2YKKyAgICAgICAg
dGFraW5nIHRoZSBhZGRyZXNzIG9mIHN0YWNrIHZhcmlhYmxlcy4KKworICAgICAgICBXZSBhbHNv
IG5lZWQgdG8gZW5oYW5jZSBFeGNlcHRpb25TY29wZXMgdG8gYmUgYWJsZSB0byB3b3JrIHdpdGgg
QVNBTgorICAgICAgICBkZXRlY3Rfc3RhY2tfdXNlX2FmdGVyX3JldHVybiB3aGljaCB3aWxsIGFs
bG9jYXRlZCB0aGUgc2NvcGUgaW4gdGhlIGhlYXAuICBXZQorICAgICAgICB3b3JrIGFyb3VuZCB0
aGlzIGJ5IHBhc3NpbmcgdGhlIGN1cnJlbnQgc3RhY2sgcG9pbnRlciBvZiB0aGUgaW5zdGFudGlh
dGluZyBjYWxsaW5nCisgICAgICAgIGZyYW1lIGludG8gdGhlIHNjb3BlIGNvbnN0cnVjdG9yLCBh
bmQgdXNpbmcgdGhhdCBmb3IgdGhlIHBvc2l0aW9uIGNoZWNrIGluCisgICAgICAgIH5UaHJvd1Nj
b3BlKCkgaW5zdGVhZC4KKworICAgICAgICBUaGUgYWJvdmUgaXMgb25seSBhIHN0YXJ0IHRvd2Fy
ZHMgZW5hYmxpbmcgQVNBTiBkZXRlY3Rfc3RhY2tfdXNlX2FmdGVyX3JldHVybiBvbgorICAgICAg
ICB0aGUgVk0uICBUaGVyZSBhcmUgc3RpbGwgb3RoZXIgaXNzdWVzIHRvIGJlIHJlc29sdmVkIGJl
Zm9yZSB3ZSBjYW4gcnVuIHdpdGggdGhpcworICAgICAgICBBU0FOIG9wdGlvbi4KKworICAgICAg
ICAqIHJ1bnRpbWUvQ2F0Y2hTY29wZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uRXZl
bnRMb2NhdGlvbi5oOgorICAgICAgICAoSlNDOjpFeGNlcHRpb25FdmVudExvY2F0aW9uOjpFeGNl
cHRpb25FdmVudExvY2F0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvblNjb3BlLmg6
CisgICAgICAgIChKU0M6OkV4Y2VwdGlvblNjb3BlOjpzdGFja1Bvc2l0aW9uIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6ZGlkQWNx
dWlyZUxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvVGhyb3dTY29wZS5jcHA6CisgICAgICAgIChK
U0M6OlRocm93U2NvcGU6On5UaHJvd1Njb3BlKToKKyAgICAgICAgKiBydW50aW1lL1Rocm93U2Nv
cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpuZWVkRXhj
ZXB0aW9uQ2hlY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpWTTo6aXNTYWZlVG9SZWN1cnNlIGNv
bnN0KToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAgICAg
ICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6Omlz
U2FmZVRvUmVjdXJzZSBjb25zdCk6CisKIDIwMTgtMTAtMTAgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNyZWF0ZSBzcGVjaWFsIE5l
dHdvcmsgd2F0ZXJmYWxsIGZvciBtZWRpYSBldmVudHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhdGNoU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYXRjaFNjb3BlLmgJKHJldmlzaW9uIDIzNzAzNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhdGNoU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw3ICsz
NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogLy8gdG9wIG9mIHRoZSBmdW5jdGlvbiAoYXMgZWFybHkg
YXMgcG9zc2libGUpIHVzaW5nIHRoZSBERUNMQVJFX0NBVENIX1NDT1BFIG1hY3JvLgogLy8gRGVj
bGFyaW5nIGEgQ2F0Y2hTY29wZSBpbiBhIGZ1bmN0aW9uIG1lYW5zIHRoYXQgdGhlIGZ1bmN0aW9u
IGludGVuZHMgdG8gY2xlYXIKIC8vIHBlbmRpbmcgZXhjZXB0aW9ucyBiZWZvcmUgcmV0dXJuaW5n
IHRvIGl0cyBjYWxsZXIuCi0gICAgCisKIGNsYXNzIENhdGNoU2NvcGUgOiBwdWJsaWMgRXhjZXB0
aW9uU2NvcGUgewogcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIENhdGNoU2NvcGUoVk0m
LCBFeGNlcHRpb25FdmVudExvY2F0aW9uKTsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogfTsK
IAogI2RlZmluZSBERUNMQVJFX0NBVENIX1NDT1BFKHZtX18pIFwKLSAgICBKU0M6OkNhdGNoU2Nv
cGUoKHZtX18pLCBKU0M6OkV4Y2VwdGlvbkV2ZW50TG9jYXRpb24oX19GVU5DVElPTl9fLCBfX0ZJ
TEVfXywgX19MSU5FX18pKQorICAgIEpTQzo6Q2F0Y2hTY29wZSgodm1fXyksIEpTQzo6RXhjZXB0
aW9uRXZlbnRMb2NhdGlvbihFWENFUFRJT05fU0NPUEVfUE9TSVRJT05fRk9SX0FTQU4sIF9fRlVO
Q1RJT05fXywgX19GSUxFX18sIF9fTElORV9fKSkKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShFWENF
UFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGNlcHRpb25FdmVudExvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRXZlbnRMb2NhdGlvbi5oCShyZXZpc2lvbiAy
MzcwMzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25FdmVudExv
Y2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksMTIgKzI5LDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBzdHJ1Y3QgRXhjZXB0aW9uRXZlbnRMb2NhdGlvbiB7CiAgICAgRXhjZXB0aW9uRXZlbnRMb2Nh
dGlvbigpIHsgfQotICAgIEV4Y2VwdGlvbkV2ZW50TG9jYXRpb24oY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBjb25zdCBjaGFyKiBmaWxlLCB1bnNpZ25lZCBsaW5lKQotICAgICAgICA6IGZ1bmN0
aW9uTmFtZShmdW5jdGlvbk5hbWUpCisgICAgRXhjZXB0aW9uRXZlbnRMb2NhdGlvbih2b2lkKiBz
dGFja1Bvc2l0aW9uLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGZpbGUs
IHVuc2lnbmVkIGxpbmUpCisgICAgICAgIDogc3RhY2tQb3NpdGlvbihzdGFja1Bvc2l0aW9uKQor
ICAgICAgICAsIGZ1bmN0aW9uTmFtZShmdW5jdGlvbk5hbWUpCiAgICAgICAgICwgZmlsZShmaWxl
KQogICAgICAgICAsIGxpbmUobGluZSkKICAgICB7IH0KICAgICAKKyAgICB2b2lkKiBzdGFja1Bv
c2l0aW9uIHsgbnVsbHB0ciB9OyAvLyBOZWVkZWQgZm9yIEFTQU4gZGV0ZWN0X3N0YWNrX3VzZV9h
ZnRlcl9yZXR1cm4uCiAgICAgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lIHsgbnVsbHB0ciB9Owog
ICAgIGNvbnN0IGNoYXIqIGZpbGUgeyBudWxscHRyIH07CiAgICAgdW5zaWduZWQgbGluZSB7IDAg
fTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvblNjb3BlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uU2Nv
cGUuaAkocmV2aXNpb24gMjM3MDM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlIDx3dGYvU3RhY2tQb2ludGVyLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogICAgIApAQCAtMzcsNiArMzgsMTIgQEAgY2xhc3MgRXhjZXB0
aW9uOwogI2RlZmluZSBFWENFUFRJT05fQVNTRVJUX1VOVVNFRCh2YXJpYWJsZSwgYXNzZXJ0aW9u
KSBSRUxFQVNFX0FTU0VSVChhc3NlcnRpb24pCiAjZGVmaW5lIEVYQ0VQVElPTl9BU1NFUlRfV0lU
SF9NRVNTQUdFKGFzc2VydGlvbiwgbWVzc2FnZSkgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdF
KGFzc2VydGlvbiwgbWVzc2FnZSkKIAorI2lmIEFTQU5fRU5BQkxFRCAmJiBDT01QSUxFUihHQ0Nf
Q09NUEFUSUJMRSkKKyNkZWZpbmUgRVhDRVBUSU9OX1NDT1BFX1BPU0lUSU9OX0ZPUl9BU0FOIGN1
cnJlbnRTdGFja1BvaW50ZXIoKQorI2Vsc2UKKyNkZWZpbmUgRVhDRVBUSU9OX1NDT1BFX1BPU0lU
SU9OX0ZPUl9BU0FOIG51bGxwdHIKKyNlbmRpZgorCiBjbGFzcyBFeGNlcHRpb25TY29wZSB7CiBw
dWJsaWM6CiAgICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQpAQCAtNDYsNiArNTMs
MTIgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhc3NlcnROb0V4Y2VwdGlvbigp
IHsgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKCFleGNlcHRpb24oKSwgIiVzIiwgdW5leHBl
Y3RlZEV4Y2VwdGlvbk1lc3NhZ2UoKS5kYXRhKCkpOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IHJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpIHsgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdF
KCFleGNlcHRpb24oKSwgIiVzIiwgdW5leHBlY3RlZEV4Y2VwdGlvbk1lc3NhZ2UoKS5kYXRhKCkp
OyB9CiAKKyNpZiBBU0FOX0VOQUJMRUQKKyAgICBjb25zdCB2b2lkKiBzdGFja1Bvc2l0aW9uKCkg
Y29uc3QgeyAgcmV0dXJuIG1fbG9jYXRpb24uc3RhY2tQb3NpdGlvbjsgfQorI2Vsc2UKKyAgICBj
b25zdCB2b2lkKiBzdGFja1Bvc2l0aW9uKCkgY29uc3QgeyAgcmV0dXJuIHRoaXM7IH0KKyNlbmRp
ZgorCiBwcm90ZWN0ZWQ6CiAgICAgRXhjZXB0aW9uU2NvcGUoVk0mLCBFeGNlcHRpb25FdmVudExv
Y2F0aW9uKTsKICAgICBFeGNlcHRpb25TY29wZShjb25zdCBFeGNlcHRpb25TY29wZSYpID0gZGVs
ZXRlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCShyZXZp
c2lvbiAyMzcwMzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9m
aWxlci5oIgogI2luY2x1ZGUgIldhc21NYWNoaW5lVGhyZWFkcy5oIgogI2luY2x1ZGUgPHRocmVh
ZD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tQb2ludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL1NpZ25hbHMuaD4KIApAQCAtMTQzLDcgKzE0NCw3
IEBAIHZvaWQgSlNMb2NrOjpkaWRBY3F1aXJlTG9jaygpCiAgICAgfQogCiAgICAgUkVMRUFTRV9B
U1NFUlQoIW1fdm0tPnN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpKTsKLSAgICB2b2lkKiBwID0gJnA7
IC8vIEEgcHJveHkgZm9yIHRoZSBjdXJyZW50IHN0YWNrIHBvaW50ZXIuCisgICAgdm9pZCogcCA9
IGN1cnJlbnRTdGFja1BvaW50ZXIoKTsKICAgICBtX3ZtLT5zZXRTdGFja1BvaW50ZXJBdFZNRW50
cnkocCk7CiAKICAgICBtX3ZtLT5oZWFwLm1hY2hpbmVUaHJlYWRzKCkuYWRkQ3VycmVudFRocmVh
ZCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZS5j
cHAJKHJldmlzaW9uIDIzNzAzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Ro
cm93U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTYsMTYgKzU2LDE2IEBAIFRocm93U2Nv
cGU6On5UaHJvd1Njb3BlKCkKICAgICB9CiAKICAgICBib29sIHdpbGxCZUhhbmRsZUJ5TExJbnRP
ckpJVCA9IGZhbHNlOwotICAgIHZvaWQqIHByZXZpb3VzU2NvcGUgPSBtX3ByZXZpb3VzU2NvcGU7
CisgICAgY29uc3Qgdm9pZCogcHJldmlvdXNTY29wZVN0YWNrUG9zaXRpb24gPSBtX3ByZXZpb3Vz
U2NvcGUgPyBtX3ByZXZpb3VzU2NvcGUtPnN0YWNrUG9zaXRpb24oKSA6IG51bGxwdHI7CiAgICAg
dm9pZCogdG9wRW50cnlGcmFtZSA9IG1fdm0udG9wRW50cnlGcmFtZTsKIAogICAgIC8vIElmIHRo
ZSB0b3BFbnRyeUZyYW1lIHdhcyBwdXNoZWQgb24gdGhlIHN0YWNrIGFmdGVyIHRoZSBwcmV2aW91
c1Njb3BlIHdhcyBpbnN0YW50aWF0ZWQsCiAgICAgLy8gdGhlbiB0aGlzIHRocm93U2NvcGUgd2ls
bCBiZSByZXR1cm5pbmcgdG8gTExJTlQgb3IgSklUIGNvZGUgdGhhdCBhbHdheXMgZG8gYW4gZXhj
ZXB0aW9uCiAgICAgLy8gY2hlY2suIEluIHRoYXQgY2FzZSwgc2tpcCB0aGUgc2ltdWxhdGVkIHRo
cm93IGJlY2F1c2UgdGhlIExMSW50IGFuZCBKSVQgd2lsbCBiZQogICAgIC8vIGNoZWNraW5nIGZv
ciB0aGUgZXhjZXB0aW9uIHRoZWlyIG93biB3YXkgaW5zdGVhZCBvZiBjYWxsaW5nIFRocm93U2Nv
cGU6OmV4Y2VwdGlvbigpLgotICAgIGlmICh0b3BFbnRyeUZyYW1lICYmIHByZXZpb3VzU2NvcGUg
PiB0b3BFbnRyeUZyYW1lKQorICAgIGlmICh0b3BFbnRyeUZyYW1lICYmIHByZXZpb3VzU2NvcGVT
dGFja1Bvc2l0aW9uID4gdG9wRW50cnlGcmFtZSkKICAgICAgICAgd2lsbEJlSGFuZGxlQnlMTElu
dE9ySklUID0gdHJ1ZTsKLSAgICAKKwogICAgIGlmICghd2lsbEJlSGFuZGxlQnlMTEludE9ySklU
KQogICAgICAgICBzaW11bGF0ZVRocm93KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UaHJvd1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGhyb3dTY29wZS5oCShyZXZpc2lvbiAyMzcwMzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcg
KzYyLDcgQEAgcHJpdmF0ZToKIH07CiAKICNkZWZpbmUgREVDTEFSRV9USFJPV19TQ09QRSh2bV9f
KSBcCi0gICAgSlNDOjpUaHJvd1Njb3BlKCh2bV9fKSwgSlNDOjpFeGNlcHRpb25FdmVudExvY2F0
aW9uKF9fRlVOQ1RJT05fXywgX19GSUxFX18sIF9fTElORV9fKSkKKyAgICBKU0M6OlRocm93U2Nv
cGUoKHZtX18pLCBKU0M6OkV4Y2VwdGlvbkV2ZW50TG9jYXRpb24oRVhDRVBUSU9OX1NDT1BFX1BP
U0lUSU9OX0ZPUl9BU0FOLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXykpCiAKICNk
ZWZpbmUgdGhyb3dTY29wZVByaW50SWZOZWVkQ2hlY2soc2NvcGVfXykgXAogICAgIHNjb3BlX18u
cHJpbnRJZk5lZWRDaGVjayhfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXykKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjM3MDM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQs
NyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvU3RhY2tCb3VuZHMuaD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tQb2ludGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgpAQCAtODg0LDYg
Kzg4NSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRVhDRVBUSU9OX1NDT1BFX1ZFUklGSUNBVElP
TikKICAgICBTdGFja1RyYWNlKiBuYXRpdmVTdGFja1RyYWNlT2ZMYXN0VGhyb3coKSBjb25zdCB7
IHJldHVybiBtX25hdGl2ZVN0YWNrVHJhY2VPZkxhc3RUaHJvdy5nZXQoKTsgfQogICAgIFRocmVh
ZCogdGhyb3dpbmdUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3Rocm93aW5nVGhyZWFkLmdldCgp
OyB9CisgICAgYm9vbCBuZWVkRXhjZXB0aW9uQ2hlY2soKSBjb25zdCB7IHJldHVybiBtX25lZWRF
eGNlcHRpb25DaGVjazsgfQogI2VuZGlmCiAKICNpZiBVU0UoQ0YpCkBAIC05MDMsNyArOTA1LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzU2FmZVRvUmVjdXJzZSh2b2lkKiBzdGFja0xpbWl0KSBj
b25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCkuaXNH
cm93aW5nRG93bndhcmQoKSk7Ci0gICAgICAgIHZvaWQqIGN1cnIgPSByZWludGVycHJldF9jYXN0
PHZvaWQqPigmY3Vycik7CisgICAgICAgIHZvaWQqIGN1cnIgPSBjdXJyZW50U3RhY2tQb2ludGVy
KCk7CiAgICAgICAgIHJldHVybiBjdXJyID49IHN0YWNrTGltaXQ7CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0
aW9uLmNwcAkocmV2aXNpb24gMjM3MDM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcg
QEAKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGlu
ZXMuaCIKICNpbmNsdWRlIDx3dGYvRmFzdFRMUy5oPgorI2luY2x1ZGUgPHd0Zi9TdGFja1BvaW50
ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTEzNSw3ICsxMzYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsCiAgICAgewogICAgICAgICAvLyBXZSBkbyB0aGUgc3RhY2sgY2hlY2sgaGVyZSBmb3IgdGhl
IHdyYXBwZXIgZnVuY3Rpb24gYmVjYXVzZSB3ZSBkb24ndAogICAgICAgICAvLyB3YW50IHRvIGVt
aXQgYSBzdGFjayBjaGVjayBpbnNpZGUgZXZlcnkgd3JhcHBlciBmdW5jdGlvbi4KLSAgICAgICAg
Y29uc3QgaW50cHRyX3Qgc3AgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZzcCk7IC8vIEEgcHJv
eHkgZm9yIHRoZSBjdXJyZW50IHN0YWNrIHBvaW50ZXIuCisgICAgICAgIGNvbnN0IGludHB0cl90
IHNwID0gYml0d2lzZV9jYXN0PGludHB0cl90PihjdXJyZW50U3RhY2tQb2ludGVyKCkpOwogICAg
ICAgICBjb25zdCBpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94ZWRBcmdzLnNpemUoKSArIENhbGxG
cmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVvZihSZWdpc3Rlcik7CiAgICAgICAg
IGNvbnN0IGludHB0cl90IHN0YWNrU3BhY2VVc2VkID0gMiAqIGZyYW1lU2l6ZTsgLy8gV2UncmUg
bWFraW5nIHR3byBjYWxscy4gT25lIHRvIHRoZSB3cmFwcGVyLCBhbmQgb25lIHRvIHRoZSBhY3R1
YWwgd2FzbSBjb2RlLgogICAgICAgICBpZiAoVU5MSUtFTFkoKHNwIDwgc3RhY2tTcGFjZVVzZWQp
IHx8ICgoc3AgLSBzdGFja1NwYWNlVXNlZCkgPCBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZtLnNv
ZnRTdGFja0xpbWl0KCkpKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
UGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clBhdHRlcm4uY3BwCShyZXZpc2lvbiAyMzcwMzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJyUGF0dGVybi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJZYXJyUGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tQb2ludGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTEwOTMsNyArMTA5NCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGlmICghbV9zdGFja0xpbWl0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwot
ICAgICAgICBpbnQ4X3QqIGN1cnIgPSByZWludGVycHJldF9jYXN0PGludDhfdCo+KCZjdXJyKTsK
KyAgICAgICAgaW50OF90KiBjdXJyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPihjdXJyZW50
U3RhY2tQb2ludGVyKCkpOwogICAgICAgICBpbnQ4X3QqIGxpbWl0ID0gcmVpbnRlcnByZXRfY2Fz
dDxpbnQ4X3QqPihtX3N0YWNrTGltaXQpOwogICAgICAgICByZXR1cm4gY3VyciA+PSBsaW1pdDsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjM3MDM3KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxOC0xMC0xMCAgTWFyayBMYW0gIDxt
YXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlcyB0b3dhcmRzIGFsbG93aW5nIHVz
ZSBvZiB0aGUgQVNBTiBkZXRlY3Rfc3RhY2tfdXNlX2FmdGVyX3JldHVybiBvcHRpb24uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA0MDUKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzQ1MTMxNDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hh
ZWwgU2Fib2ZmLgorCisgICAgICAgIEludHJvZHVjZSBXVEY6OmN1cnJlbnRTdGFja1BvaW50ZXIo
KSB3aGljaCBjb21wdXRlcyBpdHMgY2FsbGVyJ3Mgc3RhY2sgcG9pbnRlciB2YWx1ZS4KKworICAg
ICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvU3RhY2tCb3VuZHMuaDoKKyAgICAgICAgKFdURjo6
U3RhY2tCb3VuZHM6OmNoZWNrQ29uc2lzdGVuY3kgY29uc3QpOgorICAgICAgICAqIHd0Zi9TdGFj
a1BvaW50ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Y3VycmVudFN0YWNrUG9pbnRlcik6
CisgICAgICAgICogd3RmL1N0YWNrUG9pbnRlci5oOiBBZGRlZC4KKwogMjAxOC0xMC0wOSAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgU3RyaW5nVHlwZUFkYXB0ZXIg
Y29uc3RydWN0b3IgaXMgbm90IHByb3Blcmx5IGVuZm9yY2luZyBTdHJpbmc6Ok1heExlbmd0aC4K
SW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjM3MDM3KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTU4LDYgKzE1OCw3IEBACiAJCUZFMDVGQUZGMUZFNTAwNzUwMDA5MzIz
MCAvKiBXVEZBc3NlcnRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMDVGQUZFMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNw
cCAqLzsgfTsKIAkJRkU4NTQxNkUxRkJFMjg1RDAwOERBNURBIC8qIFBvaXNvbmVkLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODU0MTZDMUZCRTI4
NUIwMDhEQTVEQSAvKiBQb2lzb25lZC5jcHAgKi87IH07CiAJCUZFREFDRDNEMTYzMEY4M0YwMEM2
OTYzNCAvKiBTdGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAq
LzsgfTsKKwkJRkVFQTRERjkyMTZEN0JFNDAwQUMwNjAyIC8qIFN0YWNrUG9pbnRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUVBNERGODIxNkQ3
QkU0MDBBQzA2MDIgLyogU3RhY2tQb2ludGVyLmNwcCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZp
bGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAq
LwpAQCAtNjYwLDYgKzY2MSw4IEBACiAJCUZFQjZCMDM1MjAxQkUwQjYwMEI5NThDMSAvKiBQb2lu
dGVyUHJlcGFyYXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvaW50
ZXJQcmVwYXJhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0Ix
NjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3RhY2tTdGF0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YWNrU3RhdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkVFQTRERjcyMTZENjA4QzAwQUMwNjAyIC8qIFN0YWNrUG9pbnRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1BvaW50ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkVFQTRERjgyMTZEN0JFNDAwQUMwNjAyIC8qIFN0YWNrUG9pbnRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGFja1BvaW50ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUYyOTVCRjIwQjQ5RENCMDBDRjI4
M0EgLyogVVRGOENvbnZlcnNpb25FcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBVVEY4Q29udmVyc2lvbkVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZGMEE0MzY1ODg5NTRGM0NCMDdEQkVDQSAvKiBTdGRMaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN0ZExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8q
IEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KQEAgLTEwODYsNiArMTA4OSw4IEBACiAJ
CQkJQThBNDczMEQxNTFBODI1QjAwNDEyM0ZGIC8qIFNwZWN0cnVtLmggKi8sCiAJCQkJQThBNDcz
MEUxNTFBODI1QjAwNDEyM0ZGIC8qIFN0YWNrQm91bmRzLmNwcCAqLywKIAkJCQlBOEE0NzMwRjE1
MUE4MjVCMDA0MTIzRkYgLyogU3RhY2tCb3VuZHMuaCAqLywKKwkJCQlGRUVBNERGODIxNkQ3QkU0
MDBBQzA2MDIgLyogU3RhY2tQb2ludGVyLmNwcCAqLywKKwkJCQlGRUVBNERGNzIxNkQ2MDhDMDBB
QzA2MDIgLyogU3RhY2tQb2ludGVyLmggKi8sCiAJCQkJMEY5REFBMDQxRkQxQzM3QjAwNzlDNUIy
IC8qIFN0YWNrU2hvdC5oICovLAogCQkJCTBGOURBQTA1MUZEMUMzN0IwMDc5QzVCMiAvKiBTdGFj
a1Nob3RQcm9maWxlci5oICovLAogCQkJCUZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFj
a1N0YXRzLmNwcCAqLywKQEAgLTE1NDIsNiArMTU0Nyw3IEBACiAJCQkJNTFGMTc1MkMxRjNENDg2
MDAwQzc0OTUwIC8qIFBlcnNpc3RlbnREZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
RjE3NTJEMUYzRDQ4NjAwMEM3NDk1MCAvKiBQZXJzaXN0ZW50RW5jb2Rlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGRTg1NDE2RTFGQkUyODVEMDA4REE1REEgLyogUG9pc29uZWQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJRkVFQTRERjkyMTZEN0JFNDAwQUMwNjAyIC8qIFN0YWNrUG9pbnRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM2MjE2NURCQTczMDA1QUQzODcgLyogUHJpbnRT
dHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FGMDIzQjUyMDYxRTE3MDAwQThFRkQ2IC8q
IFByb2Nlc3NQcml2aWxlZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQzRjYxMUYxNTY1RjBG
OTAwREI1MTRBIC8qIFJBTVNpemUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMjM3MDM3KQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw2ICsyMTAsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFE
RVJTCiAgICAgU29mdExpbmtpbmcuaAogICAgIFNwZWN0cnVtLmgKICAgICBTdGFja0JvdW5kcy5o
CisgICAgU3RhY2tQb2ludGVyLmgKICAgICBTdGFja1Nob3QuaAogICAgIFN0YWNrU2hvdFByb2Zp
bGVyLmgKICAgICBTdGFja1N0YXRzLmgKQEAgLTM4NCw2ICszODUsNyBAQCBzZXQoV1RGX1NPVVJD
RVMKICAgICBTZWNvbmRzLmNwcAogICAgIFNpeENoYXJhY3Rlckhhc2guY3BwCiAgICAgU3RhY2tC
b3VuZHMuY3BwCisgICAgU3RhY2tQb2ludGVyLmNwcAogICAgIFN0YWNrU3RhdHMuY3BwCiAgICAg
U3RhY2tUcmFjZS5jcHAKICAgICBTdHJpbmdQcmludFN0cmVhbS5jcHAKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL1N0YWNrQm91bmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU3RhY2tC
b3VuZHMuaAkocmV2aXNpb24gMjM3MDM3KQorKysgU291cmNlL1dURi93dGYvU3RhY2tCb3VuZHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2RlZmluZSBTdGFja0JvdW5kc19o
CiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8d3RmL1N0YWNrUG9pbnRlci5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpA
QCAtMTQ2LDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkg
Y29uc3QKICAgICB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICB2b2lkKiBjdXJyZW50
UG9zaXRpb24gPSAmY3VycmVudFBvc2l0aW9uOworICAgICAgICB2b2lkKiBjdXJyZW50UG9zaXRp
b24gPSBjdXJyZW50U3RhY2tQb2ludGVyKCk7CiAgICAgICAgIEFTU0VSVChtX29yaWdpbiAhPSBt
X2JvdW5kKTsKICAgICAgICAgQVNTRVJUKGlzR3Jvd2luZ0Rvd253YXJkKCkKICAgICAgICAgICAg
ID8gKGN1cnJlbnRQb3NpdGlvbiA8IG1fb3JpZ2luICYmIGN1cnJlbnRQb3NpdGlvbiA+IG1fYm91
bmQpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TdGFja1BvaW50ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1N0YWNrUG9pbnRlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dURi93dGYvU3RhY2tQb2ludGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0YWNrUG9pbnRlci5oIgorCituYW1lc3BhY2UgV1RGIHsK
KworI2lmIFVTRShHRU5FUklDX0NVUlJFTlRfU1RBQ0tfUE9JTlRFUikKK2NvbnN0ZXhwciBzaXpl
X3Qgc2l6ZU9mRnJhbWVIZWFkZXIgPSAyICogc2l6ZW9mKHZvaWQqKTsKKworU1VQUFJFU1NfQVNB
TiBORVZFUl9JTkxJTkUKK3ZvaWQqIGN1cnJlbnRTdGFja1BvaW50ZXIoKQoreworI2lmIENPTVBJ
TEVSKEdDQ19DT01QQVRJQkxFKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
PihfX2J1aWx0aW5fZnJhbWVfYWRkcmVzcygwKSkgKyBzaXplT2ZGcmFtZUhlYWRlcjsKKyNlbHNl
CisgICAgLy8gTWFrZSBzdXJlIHRoYXQgc3AgaXMgdGhlIG9ubHkgbG9jYWwgdmFyaWFibGUgZGVj
bGFyZWQgaW4gdGhpcyBmdW5jdGlvbi4KKyAgICB2b2lkKiBzcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KCZzcCkgKyBzaXplT2ZGcmFtZUhlYWRlciArIHNpemVvZihzcCk7CisgICAgcmV0
dXJuIHNwOworI2VuZGlmCit9CisjZW5kaWYgLy8gVVNFKEdFTkVSSUNfQ1VSUkVOVF9TVEFDS19Q
T0lOVEVSKQorCit9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1N0YWNr
UG9pbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1N0YWNrUG9pbnRlci5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL1N0YWNrUG9pbnRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdURiB7CisKKyNpZiBkZWZpbmVk
KE5ERUJVRykgJiYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpIFwKKyAgICAmJiAoQ1BVKFg4Nl82
NCkgfHwgQ1BVKFg4NikgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFS
TV9UUkFESVRJT05BTCkpCisKKy8vIFdlIGNhbiBvbmx5IHVzZSB0aGUgaW5saW5lIGFzbSBpbXBs
ZW1lbnRhdGlvbiBvbiByZWxlYXNlIGJ1aWxkcyBiZWNhdXNlIGl0CisvLyBuZWVkcyB0byBiZSBp
bmxpbmFibGUgaW4gb3JkZXIgdG8gYmUgY29ycmVjdC4KK0FMV0FZU19JTkxJTkUgdm9pZCogY3Vy
cmVudFN0YWNrUG9pbnRlcigpCit7CisgICAgdm9pZCogc3RhY2tQb2ludGVyID0gbnVsbHB0cjsK
KyNpZiBDUFUoWDg2XzY0KQorICAgIF9fYXNtX18gdm9sYXRpbGUgKCAibW92cSAlJXJzcCwgJTAi
IDogIj1yIihzdGFja1BvaW50ZXIpIDogOiApOworI2VsaWYgQ1BVKFg4NikKKyAgICBfX2FzbV9f
IHZvbGF0aWxlICggIm1vdmwgJSVlc3AsICUwIiA6ICI9ciIoc3RhY2tQb2ludGVyKSA6IDogKTsK
KyNlbGlmIENQVShBUk02NCkgJiYgZGVmaW5lZChfX0lMUDMyX18pCisgICAgdWludDY0X3Qgc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIgPSAwOworICAgIF9fYXNtX18gdm9sYXRpbGUgKCAibW92ICUwLCBz
cCIgOiAiPXIiKHN0YWNrUG9pbnRlclJlZ2lzdGVyKSA6IDogKTsKKyAgICBzdGFja1BvaW50ZXIg
PSByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisjZWxpZiBD
UFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RSQURJVElPTkFMKQorICAg
IF9fYXNtX18gdm9sYXRpbGUgKCAibW92ICUwLCBzcCIgOiAiPXIiKHN0YWNrUG9pbnRlcikgOiA6
ICk7CisjZW5kaWYKKyAgICByZXR1cm4gc3RhY2tQb2ludGVyOworfQorCisjZWxzZQorI2RlZmlu
ZSBVU0VfR0VORVJJQ19DVVJSRU5UX1NUQUNLX1BPSU5URVIgMQorI2VuZGlmCisKKyNpZiBVU0Uo
R0VORVJJQ19DVVJSRU5UX1NUQUNLX1BPSU5URVIpCitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCog
Y3VycmVudFN0YWNrUG9pbnRlcigpOworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1
c2luZyBXVEY6OmN1cnJlbnRTdGFja1BvaW50ZXI7Cg==
</data>
<flag name="review"
          id="369371"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352057</attachid>
            <date>2018-10-11 11:12:14 -0700</date>
            <delta_ts>2018-10-11 11:12:14 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-190405.patch</filename>
            <type>text/plain</type>
            <size>23115</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM3MDM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBA
CisyMDE4LTEwLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
aGFuZ2VzIHRvd2FyZHMgYWxsb3dpbmcgdXNlIG9mIHRoZSBBU0FOIGRldGVjdF9zdGFja191c2Vf
YWZ0ZXJfcmV0dXJuIG9wdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MDQwNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDUxMzE0NjQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBTYWJvZmYuCisKKyAgICAgICAgVGhlIEFTQU4g
ZGV0ZWN0X3N0YWNrX3VzZV9hZnRlcl9yZXR1cm4gb3B0aW9uIGNoZWNrcyBmb3IgdXNlIG9mIHN0
YWNrIHZhcmlhYmxlcworICAgICAgICBhZnRlciB0aGV5IGhhdmUgYmVlbiBmcmVlZC4gIEl0IGRv
ZXMgdGhpcyBieSBhbGxvY2F0aW5nIHJlbGV2YW50IHN0YWNrIHZhcmlhYmxlcworICAgICAgICBp
biBoZWFwIG1lbW9yeSAoaW5zdGVhZCBvZiBvbiB0aGUgc3RhY2spIGlmIHRoZSBjb2RlIGV2ZXIg
dGFrZXMgdGhlIGFkZHJlc3Mgb2YKKyAgICAgICAgdGhvc2Ugc3RhY2sgdmFyaWFibGVzLiAgVW5m
b3J0dW5hdGVseSwgdGhpcyBpcyBhIGNvbW1vbiBpZGlvbSB0aGF0IHdlIHVzZSB0bworICAgICAg
ICBjb21wdXRlIHRoZSBhcHByb3hpbWF0ZSBzdGFjayBwb2ludGVyIHZhbHVlLiAgQXMgYSByZXN1
bHQsIG9uIHN1Y2ggQVNBTiBydW5zLCB0aGUKKyAgICAgICAgY29tcHV0ZWQgYXBwcm94aW1hdGUg
c3RhY2sgcG9pbnRlciB2YWx1ZSB3aWxsIHBvaW50IGludG8gdGhlIGhlYXAgaW5zdGVhZCBvZiB0
aGUKKyAgICAgICAgc3RhY2suICBUaGlzIGJyZWFrcyB0aGUgVk0ncyBleHBlY3RhdGlvbnMgYW5k
IHdyZWFrcyBoYXZvYy4KKworICAgICAgICBUbyBmaXggdGhpcywgd2UgdXNlIHRoZSBuZXdseSBp
bnRyb2R1Y2VkIFdURjo6Y3VycmVudFN0YWNrUG9pbnRlcigpIGluc3RlYWQgb2YKKyAgICAgICAg
dGFraW5nIHRoZSBhZGRyZXNzIG9mIHN0YWNrIHZhcmlhYmxlcy4KKworICAgICAgICBXZSBhbHNv
IG5lZWQgdG8gZW5oYW5jZSBFeGNlcHRpb25TY29wZXMgdG8gYmUgYWJsZSB0byB3b3JrIHdpdGgg
QVNBTgorICAgICAgICBkZXRlY3Rfc3RhY2tfdXNlX2FmdGVyX3JldHVybiB3aGljaCB3aWxsIGFs
bG9jYXRlZCB0aGUgc2NvcGUgaW4gdGhlIGhlYXAuICBXZQorICAgICAgICB3b3JrIGFyb3VuZCB0
aGlzIGJ5IHBhc3NpbmcgdGhlIGN1cnJlbnQgc3RhY2sgcG9pbnRlciBvZiB0aGUgaW5zdGFudGlh
dGluZyBjYWxsaW5nCisgICAgICAgIGZyYW1lIGludG8gdGhlIHNjb3BlIGNvbnN0cnVjdG9yLCBh
bmQgdXNpbmcgdGhhdCBmb3IgdGhlIHBvc2l0aW9uIGNoZWNrIGluCisgICAgICAgIH5UaHJvd1Nj
b3BlKCkgaW5zdGVhZC4KKworICAgICAgICBUaGUgYWJvdmUgaXMgb25seSBhIHN0YXJ0IHRvd2Fy
ZHMgZW5hYmxpbmcgQVNBTiBkZXRlY3Rfc3RhY2tfdXNlX2FmdGVyX3JldHVybiBvbgorICAgICAg
ICB0aGUgVk0uICBUaGVyZSBhcmUgc3RpbGwgb3RoZXIgaXNzdWVzIHRvIGJlIHJlc29sdmVkIGJl
Zm9yZSB3ZSBjYW4gcnVuIHdpdGggdGhpcworICAgICAgICBBU0FOIG9wdGlvbi4KKworICAgICAg
ICAqIHJ1bnRpbWUvQ2F0Y2hTY29wZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uRXZl
bnRMb2NhdGlvbi5oOgorICAgICAgICAoSlNDOjpFeGNlcHRpb25FdmVudExvY2F0aW9uOjpFeGNl
cHRpb25FdmVudExvY2F0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvblNjb3BlLmg6
CisgICAgICAgIChKU0M6OkV4Y2VwdGlvblNjb3BlOjpzdGFja1Bvc2l0aW9uIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6ZGlkQWNx
dWlyZUxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvVGhyb3dTY29wZS5jcHA6CisgICAgICAgIChK
U0M6OlRocm93U2NvcGU6On5UaHJvd1Njb3BlKToKKyAgICAgICAgKiBydW50aW1lL1Rocm93U2Nv
cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpuZWVkRXhj
ZXB0aW9uQ2hlY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpWTTo6aXNTYWZlVG9SZWN1cnNlIGNv
bnN0KToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAgICAg
ICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6Omlz
U2FmZVRvUmVjdXJzZSBjb25zdCk6CisKIDIwMTgtMTAtMTAgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNyZWF0ZSBzcGVjaWFsIE5l
dHdvcmsgd2F0ZXJmYWxsIGZvciBtZWRpYSBldmVudHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhdGNoU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYXRjaFNjb3BlLmgJKHJldmlzaW9uIDIzNzAzNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhdGNoU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw3ICsz
NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogLy8gdG9wIG9mIHRoZSBmdW5jdGlvbiAoYXMgZWFybHkg
YXMgcG9zc2libGUpIHVzaW5nIHRoZSBERUNMQVJFX0NBVENIX1NDT1BFIG1hY3JvLgogLy8gRGVj
bGFyaW5nIGEgQ2F0Y2hTY29wZSBpbiBhIGZ1bmN0aW9uIG1lYW5zIHRoYXQgdGhlIGZ1bmN0aW9u
IGludGVuZHMgdG8gY2xlYXIKIC8vIHBlbmRpbmcgZXhjZXB0aW9ucyBiZWZvcmUgcmV0dXJuaW5n
IHRvIGl0cyBjYWxsZXIuCi0gICAgCisKIGNsYXNzIENhdGNoU2NvcGUgOiBwdWJsaWMgRXhjZXB0
aW9uU2NvcGUgewogcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIENhdGNoU2NvcGUoVk0m
LCBFeGNlcHRpb25FdmVudExvY2F0aW9uKTsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogfTsK
IAogI2RlZmluZSBERUNMQVJFX0NBVENIX1NDT1BFKHZtX18pIFwKLSAgICBKU0M6OkNhdGNoU2Nv
cGUoKHZtX18pLCBKU0M6OkV4Y2VwdGlvbkV2ZW50TG9jYXRpb24oX19GVU5DVElPTl9fLCBfX0ZJ
TEVfXywgX19MSU5FX18pKQorICAgIEpTQzo6Q2F0Y2hTY29wZSgodm1fXyksIEpTQzo6RXhjZXB0
aW9uRXZlbnRMb2NhdGlvbihFWENFUFRJT05fU0NPUEVfUE9TSVRJT05fRk9SX0FTQU4sIF9fRlVO
Q1RJT05fXywgX19GSUxFX18sIF9fTElORV9fKSkKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShFWENF
UFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGNlcHRpb25FdmVudExvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRXZlbnRMb2NhdGlvbi5oCShyZXZpc2lvbiAy
MzcwMzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25FdmVudExv
Y2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksMTIgKzI5LDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBzdHJ1Y3QgRXhjZXB0aW9uRXZlbnRMb2NhdGlvbiB7CiAgICAgRXhjZXB0aW9uRXZlbnRMb2Nh
dGlvbigpIHsgfQotICAgIEV4Y2VwdGlvbkV2ZW50TG9jYXRpb24oY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBjb25zdCBjaGFyKiBmaWxlLCB1bnNpZ25lZCBsaW5lKQotICAgICAgICA6IGZ1bmN0
aW9uTmFtZShmdW5jdGlvbk5hbWUpCisgICAgRXhjZXB0aW9uRXZlbnRMb2NhdGlvbih2b2lkKiBz
dGFja1Bvc2l0aW9uLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGZpbGUs
IHVuc2lnbmVkIGxpbmUpCisgICAgICAgIDogc3RhY2tQb3NpdGlvbihzdGFja1Bvc2l0aW9uKQor
ICAgICAgICAsIGZ1bmN0aW9uTmFtZShmdW5jdGlvbk5hbWUpCiAgICAgICAgICwgZmlsZShmaWxl
KQogICAgICAgICAsIGxpbmUobGluZSkKICAgICB7IH0KICAgICAKKyAgICB2b2lkKiBzdGFja1Bv
c2l0aW9uIHsgbnVsbHB0ciB9OyAvLyBOZWVkZWQgZm9yIEFTQU4gZGV0ZWN0X3N0YWNrX3VzZV9h
ZnRlcl9yZXR1cm4uCiAgICAgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lIHsgbnVsbHB0ciB9Owog
ICAgIGNvbnN0IGNoYXIqIGZpbGUgeyBudWxscHRyIH07CiAgICAgdW5zaWduZWQgbGluZSB7IDAg
fTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvblNjb3BlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uU2Nv
cGUuaAkocmV2aXNpb24gMjM3MDM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlIDx3dGYvU3RhY2tQb2ludGVyLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogICAgIApAQCAtMzcsNiArMzgsMTIgQEAgY2xhc3MgRXhjZXB0
aW9uOwogI2RlZmluZSBFWENFUFRJT05fQVNTRVJUX1VOVVNFRCh2YXJpYWJsZSwgYXNzZXJ0aW9u
KSBSRUxFQVNFX0FTU0VSVChhc3NlcnRpb24pCiAjZGVmaW5lIEVYQ0VQVElPTl9BU1NFUlRfV0lU
SF9NRVNTQUdFKGFzc2VydGlvbiwgbWVzc2FnZSkgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdF
KGFzc2VydGlvbiwgbWVzc2FnZSkKIAorI2lmIEFTQU5fRU5BQkxFRCAmJiBDT01QSUxFUihHQ0Nf
Q09NUEFUSUJMRSkKKyNkZWZpbmUgRVhDRVBUSU9OX1NDT1BFX1BPU0lUSU9OX0ZPUl9BU0FOIGN1
cnJlbnRTdGFja1BvaW50ZXIoKQorI2Vsc2UKKyNkZWZpbmUgRVhDRVBUSU9OX1NDT1BFX1BPU0lU
SU9OX0ZPUl9BU0FOIG51bGxwdHIKKyNlbmRpZgorCiBjbGFzcyBFeGNlcHRpb25TY29wZSB7CiBw
dWJsaWM6CiAgICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQpAQCAtNDYsNiArNTMs
MTIgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhc3NlcnROb0V4Y2VwdGlvbigp
IHsgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKCFleGNlcHRpb24oKSwgIiVzIiwgdW5leHBl
Y3RlZEV4Y2VwdGlvbk1lc3NhZ2UoKS5kYXRhKCkpOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IHJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpIHsgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdF
KCFleGNlcHRpb24oKSwgIiVzIiwgdW5leHBlY3RlZEV4Y2VwdGlvbk1lc3NhZ2UoKS5kYXRhKCkp
OyB9CiAKKyNpZiBBU0FOX0VOQUJMRUQKKyAgICBjb25zdCB2b2lkKiBzdGFja1Bvc2l0aW9uKCkg
Y29uc3QgeyAgcmV0dXJuIG1fbG9jYXRpb24uc3RhY2tQb3NpdGlvbjsgfQorI2Vsc2UKKyAgICBj
b25zdCB2b2lkKiBzdGFja1Bvc2l0aW9uKCkgY29uc3QgeyAgcmV0dXJuIHRoaXM7IH0KKyNlbmRp
ZgorCiBwcm90ZWN0ZWQ6CiAgICAgRXhjZXB0aW9uU2NvcGUoVk0mLCBFeGNlcHRpb25FdmVudExv
Y2F0aW9uKTsKICAgICBFeGNlcHRpb25TY29wZShjb25zdCBFeGNlcHRpb25TY29wZSYpID0gZGVs
ZXRlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCShyZXZp
c2lvbiAyMzcwMzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9m
aWxlci5oIgogI2luY2x1ZGUgIldhc21NYWNoaW5lVGhyZWFkcy5oIgogI2luY2x1ZGUgPHRocmVh
ZD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tQb2ludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL1NpZ25hbHMuaD4KIApAQCAtMTQzLDcgKzE0NCw3
IEBAIHZvaWQgSlNMb2NrOjpkaWRBY3F1aXJlTG9jaygpCiAgICAgfQogCiAgICAgUkVMRUFTRV9B
U1NFUlQoIW1fdm0tPnN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpKTsKLSAgICB2b2lkKiBwID0gJnA7
IC8vIEEgcHJveHkgZm9yIHRoZSBjdXJyZW50IHN0YWNrIHBvaW50ZXIuCisgICAgdm9pZCogcCA9
IGN1cnJlbnRTdGFja1BvaW50ZXIoKTsKICAgICBtX3ZtLT5zZXRTdGFja1BvaW50ZXJBdFZNRW50
cnkocCk7CiAKICAgICBtX3ZtLT5oZWFwLm1hY2hpbmVUaHJlYWRzKCkuYWRkQ3VycmVudFRocmVh
ZCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZS5j
cHAJKHJldmlzaW9uIDIzNzAzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Ro
cm93U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTYsMTYgKzU2LDE2IEBAIFRocm93U2Nv
cGU6On5UaHJvd1Njb3BlKCkKICAgICB9CiAKICAgICBib29sIHdpbGxCZUhhbmRsZUJ5TExJbnRP
ckpJVCA9IGZhbHNlOwotICAgIHZvaWQqIHByZXZpb3VzU2NvcGUgPSBtX3ByZXZpb3VzU2NvcGU7
CisgICAgY29uc3Qgdm9pZCogcHJldmlvdXNTY29wZVN0YWNrUG9zaXRpb24gPSBtX3ByZXZpb3Vz
U2NvcGUgPyBtX3ByZXZpb3VzU2NvcGUtPnN0YWNrUG9zaXRpb24oKSA6IG51bGxwdHI7CiAgICAg
dm9pZCogdG9wRW50cnlGcmFtZSA9IG1fdm0udG9wRW50cnlGcmFtZTsKIAogICAgIC8vIElmIHRo
ZSB0b3BFbnRyeUZyYW1lIHdhcyBwdXNoZWQgb24gdGhlIHN0YWNrIGFmdGVyIHRoZSBwcmV2aW91
c1Njb3BlIHdhcyBpbnN0YW50aWF0ZWQsCiAgICAgLy8gdGhlbiB0aGlzIHRocm93U2NvcGUgd2ls
bCBiZSByZXR1cm5pbmcgdG8gTExJTlQgb3IgSklUIGNvZGUgdGhhdCBhbHdheXMgZG8gYW4gZXhj
ZXB0aW9uCiAgICAgLy8gY2hlY2suIEluIHRoYXQgY2FzZSwgc2tpcCB0aGUgc2ltdWxhdGVkIHRo
cm93IGJlY2F1c2UgdGhlIExMSW50IGFuZCBKSVQgd2lsbCBiZQogICAgIC8vIGNoZWNraW5nIGZv
ciB0aGUgZXhjZXB0aW9uIHRoZWlyIG93biB3YXkgaW5zdGVhZCBvZiBjYWxsaW5nIFRocm93U2Nv
cGU6OmV4Y2VwdGlvbigpLgotICAgIGlmICh0b3BFbnRyeUZyYW1lICYmIHByZXZpb3VzU2NvcGUg
PiB0b3BFbnRyeUZyYW1lKQorICAgIGlmICh0b3BFbnRyeUZyYW1lICYmIHByZXZpb3VzU2NvcGVT
dGFja1Bvc2l0aW9uID4gdG9wRW50cnlGcmFtZSkKICAgICAgICAgd2lsbEJlSGFuZGxlQnlMTElu
dE9ySklUID0gdHJ1ZTsKLSAgICAKKwogICAgIGlmICghd2lsbEJlSGFuZGxlQnlMTEludE9ySklU
KQogICAgICAgICBzaW11bGF0ZVRocm93KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UaHJvd1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGhyb3dTY29wZS5oCShyZXZpc2lvbiAyMzcwMzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcg
KzYyLDcgQEAgcHJpdmF0ZToKIH07CiAKICNkZWZpbmUgREVDTEFSRV9USFJPV19TQ09QRSh2bV9f
KSBcCi0gICAgSlNDOjpUaHJvd1Njb3BlKCh2bV9fKSwgSlNDOjpFeGNlcHRpb25FdmVudExvY2F0
aW9uKF9fRlVOQ1RJT05fXywgX19GSUxFX18sIF9fTElORV9fKSkKKyAgICBKU0M6OlRocm93U2Nv
cGUoKHZtX18pLCBKU0M6OkV4Y2VwdGlvbkV2ZW50TG9jYXRpb24oRVhDRVBUSU9OX1NDT1BFX1BP
U0lUSU9OX0ZPUl9BU0FOLCBfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXykpCiAKICNk
ZWZpbmUgdGhyb3dTY29wZVByaW50SWZOZWVkQ2hlY2soc2NvcGVfXykgXAogICAgIHNjb3BlX18u
cHJpbnRJZk5lZWRDaGVjayhfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXykKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjM3MDM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQs
NyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvU3RhY2tCb3VuZHMuaD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tQb2ludGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgpAQCAtODg0LDYg
Kzg4NSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRVhDRVBUSU9OX1NDT1BFX1ZFUklGSUNBVElP
TikKICAgICBTdGFja1RyYWNlKiBuYXRpdmVTdGFja1RyYWNlT2ZMYXN0VGhyb3coKSBjb25zdCB7
IHJldHVybiBtX25hdGl2ZVN0YWNrVHJhY2VPZkxhc3RUaHJvdy5nZXQoKTsgfQogICAgIFRocmVh
ZCogdGhyb3dpbmdUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3Rocm93aW5nVGhyZWFkLmdldCgp
OyB9CisgICAgYm9vbCBuZWVkRXhjZXB0aW9uQ2hlY2soKSBjb25zdCB7IHJldHVybiBtX25lZWRF
eGNlcHRpb25DaGVjazsgfQogI2VuZGlmCiAKICNpZiBVU0UoQ0YpCkBAIC05MDMsNyArOTA1LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzU2FmZVRvUmVjdXJzZSh2b2lkKiBzdGFja0xpbWl0KSBj
b25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCkuaXNH
cm93aW5nRG93bndhcmQoKSk7Ci0gICAgICAgIHZvaWQqIGN1cnIgPSByZWludGVycHJldF9jYXN0
PHZvaWQqPigmY3Vycik7CisgICAgICAgIHZvaWQqIGN1cnIgPSBjdXJyZW50U3RhY2tQb2ludGVy
KCk7CiAgICAgICAgIHJldHVybiBjdXJyID49IHN0YWNrTGltaXQ7CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0
aW9uLmNwcAkocmV2aXNpb24gMjM3MDM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcg
QEAKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGlu
ZXMuaCIKICNpbmNsdWRlIDx3dGYvRmFzdFRMUy5oPgorI2luY2x1ZGUgPHd0Zi9TdGFja1BvaW50
ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTEzNSw3ICsxMzYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsCiAgICAgewogICAgICAgICAvLyBXZSBkbyB0aGUgc3RhY2sgY2hlY2sgaGVyZSBmb3IgdGhl
IHdyYXBwZXIgZnVuY3Rpb24gYmVjYXVzZSB3ZSBkb24ndAogICAgICAgICAvLyB3YW50IHRvIGVt
aXQgYSBzdGFjayBjaGVjayBpbnNpZGUgZXZlcnkgd3JhcHBlciBmdW5jdGlvbi4KLSAgICAgICAg
Y29uc3QgaW50cHRyX3Qgc3AgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZzcCk7IC8vIEEgcHJv
eHkgZm9yIHRoZSBjdXJyZW50IHN0YWNrIHBvaW50ZXIuCisgICAgICAgIGNvbnN0IGludHB0cl90
IHNwID0gYml0d2lzZV9jYXN0PGludHB0cl90PihjdXJyZW50U3RhY2tQb2ludGVyKCkpOwogICAg
ICAgICBjb25zdCBpbnRwdHJfdCBmcmFtZVNpemUgPSAoYm94ZWRBcmdzLnNpemUoKSArIENhbGxG
cmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSAqIHNpemVvZihSZWdpc3Rlcik7CiAgICAgICAg
IGNvbnN0IGludHB0cl90IHN0YWNrU3BhY2VVc2VkID0gMiAqIGZyYW1lU2l6ZTsgLy8gV2UncmUg
bWFraW5nIHR3byBjYWxscy4gT25lIHRvIHRoZSB3cmFwcGVyLCBhbmQgb25lIHRvIHRoZSBhY3R1
YWwgd2FzbSBjb2RlLgogICAgICAgICBpZiAoVU5MSUtFTFkoKHNwIDwgc3RhY2tTcGFjZVVzZWQp
IHx8ICgoc3AgLSBzdGFja1NwYWNlVXNlZCkgPCBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZtLnNv
ZnRTdGFja0xpbWl0KCkpKSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
UGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clBhdHRlcm4uY3BwCShyZXZpc2lvbiAyMzcwMzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJyUGF0dGVybi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJZYXJyUGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tQb2ludGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTEwOTMsNyArMTA5NCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGlmICghbV9zdGFja0xpbWl0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwot
ICAgICAgICBpbnQ4X3QqIGN1cnIgPSByZWludGVycHJldF9jYXN0PGludDhfdCo+KCZjdXJyKTsK
KyAgICAgICAgaW50OF90KiBjdXJyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ4X3QqPihjdXJyZW50
U3RhY2tQb2ludGVyKCkpOwogICAgICAgICBpbnQ4X3QqIGxpbWl0ID0gcmVpbnRlcnByZXRfY2Fz
dDxpbnQ4X3QqPihtX3N0YWNrTGltaXQpOwogICAgICAgICByZXR1cm4gY3VyciA+PSBsaW1pdDsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjM3MDM3KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxOC0xMC0xMCAgTWFyayBMYW0gIDxt
YXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlcyB0b3dhcmRzIGFsbG93aW5nIHVz
ZSBvZiB0aGUgQVNBTiBkZXRlY3Rfc3RhY2tfdXNlX2FmdGVyX3JldHVybiBvcHRpb24uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA0MDUKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzQ1MTMxNDY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hh
ZWwgU2Fib2ZmLgorCisgICAgICAgIEludHJvZHVjZSBXVEY6OmN1cnJlbnRTdGFja1BvaW50ZXIo
KSB3aGljaCBjb21wdXRlcyBpdHMgY2FsbGVyJ3Mgc3RhY2sgcG9pbnRlciB2YWx1ZS4KKworICAg
ICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvU3RhY2tCb3VuZHMuaDoKKyAgICAgICAgKFdURjo6
U3RhY2tCb3VuZHM6OmNoZWNrQ29uc2lzdGVuY3kgY29uc3QpOgorICAgICAgICAqIHd0Zi9TdGFj
a1BvaW50ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Y3VycmVudFN0YWNrUG9pbnRlcik6
CisgICAgICAgICogd3RmL1N0YWNrUG9pbnRlci5oOiBBZGRlZC4KKwogMjAxOC0xMC0wOSAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgU3RyaW5nVHlwZUFkYXB0ZXIg
Y29uc3RydWN0b3IgaXMgbm90IHByb3Blcmx5IGVuZm9yY2luZyBTdHJpbmc6Ok1heExlbmd0aC4K
SW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjM3MDM3KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTU4LDYgKzE1OCw3IEBACiAJCUZFMDVGQUZGMUZFNTAwNzUwMDA5MzIz
MCAvKiBXVEZBc3NlcnRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMDVGQUZFMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNw
cCAqLzsgfTsKIAkJRkU4NTQxNkUxRkJFMjg1RDAwOERBNURBIC8qIFBvaXNvbmVkLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODU0MTZDMUZCRTI4
NUIwMDhEQTVEQSAvKiBQb2lzb25lZC5jcHAgKi87IH07CiAJCUZFREFDRDNEMTYzMEY4M0YwMEM2
OTYzNCAvKiBTdGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAq
LzsgfTsKKwkJRkVFQTRERjkyMTZEN0JFNDAwQUMwNjAyIC8qIFN0YWNrUG9pbnRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUVBNERGODIxNkQ3
QkU0MDBBQzA2MDIgLyogU3RhY2tQb2ludGVyLmNwcCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZp
bGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAq
LwpAQCAtNjYwLDYgKzY2MSw4IEBACiAJCUZFQjZCMDM1MjAxQkUwQjYwMEI5NThDMSAvKiBQb2lu
dGVyUHJlcGFyYXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvaW50
ZXJQcmVwYXJhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0Ix
NjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3RhY2tTdGF0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YWNrU3RhdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkVFQTRERjcyMTZENjA4QzAwQUMwNjAyIC8qIFN0YWNrUG9pbnRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1BvaW50ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkVFQTRERjgyMTZEN0JFNDAwQUMwNjAyIC8qIFN0YWNrUG9pbnRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGFja1BvaW50ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUYyOTVCRjIwQjQ5RENCMDBDRjI4
M0EgLyogVVRGOENvbnZlcnNpb25FcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBVVEY4Q29udmVyc2lvbkVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZGMEE0MzY1ODg5NTRGM0NCMDdEQkVDQSAvKiBTdGRMaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN0ZExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8q
IEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KQEAgLTEwODYsNiArMTA4OSw4IEBACiAJ
CQkJQThBNDczMEQxNTFBODI1QjAwNDEyM0ZGIC8qIFNwZWN0cnVtLmggKi8sCiAJCQkJQThBNDcz
MEUxNTFBODI1QjAwNDEyM0ZGIC8qIFN0YWNrQm91bmRzLmNwcCAqLywKIAkJCQlBOEE0NzMwRjE1
MUE4MjVCMDA0MTIzRkYgLyogU3RhY2tCb3VuZHMuaCAqLywKKwkJCQlGRUVBNERGODIxNkQ3QkU0
MDBBQzA2MDIgLyogU3RhY2tQb2ludGVyLmNwcCAqLywKKwkJCQlGRUVBNERGNzIxNkQ2MDhDMDBB
QzA2MDIgLyogU3RhY2tQb2ludGVyLmggKi8sCiAJCQkJMEY5REFBMDQxRkQxQzM3QjAwNzlDNUIy
IC8qIFN0YWNrU2hvdC5oICovLAogCQkJCTBGOURBQTA1MUZEMUMzN0IwMDc5QzVCMiAvKiBTdGFj
a1Nob3RQcm9maWxlci5oICovLAogCQkJCUZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFj
a1N0YXRzLmNwcCAqLywKQEAgLTE1NDIsNiArMTU0Nyw3IEBACiAJCQkJNTFGMTc1MkMxRjNENDg2
MDAwQzc0OTUwIC8qIFBlcnNpc3RlbnREZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
RjE3NTJEMUYzRDQ4NjAwMEM3NDk1MCAvKiBQZXJzaXN0ZW50RW5jb2Rlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGRTg1NDE2RTFGQkUyODVEMDA4REE1REEgLyogUG9pc29uZWQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJRkVFQTRERjkyMTZEN0JFNDAwQUMwNjAyIC8qIFN0YWNrUG9pbnRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM2MjE2NURCQTczMDA1QUQzODcgLyogUHJpbnRT
dHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FGMDIzQjUyMDYxRTE3MDAwQThFRkQ2IC8q
IFByb2Nlc3NQcml2aWxlZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQzRjYxMUYxNTY1RjBG
OTAwREI1MTRBIC8qIFJBTVNpemUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMjM3MDM3KQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw2ICsyMTAsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFE
RVJTCiAgICAgU29mdExpbmtpbmcuaAogICAgIFNwZWN0cnVtLmgKICAgICBTdGFja0JvdW5kcy5o
CisgICAgU3RhY2tQb2ludGVyLmgKICAgICBTdGFja1Nob3QuaAogICAgIFN0YWNrU2hvdFByb2Zp
bGVyLmgKICAgICBTdGFja1N0YXRzLmgKQEAgLTM4NCw2ICszODUsNyBAQCBzZXQoV1RGX1NPVVJD
RVMKICAgICBTZWNvbmRzLmNwcAogICAgIFNpeENoYXJhY3Rlckhhc2guY3BwCiAgICAgU3RhY2tC
b3VuZHMuY3BwCisgICAgU3RhY2tQb2ludGVyLmNwcAogICAgIFN0YWNrU3RhdHMuY3BwCiAgICAg
U3RhY2tUcmFjZS5jcHAKICAgICBTdHJpbmdQcmludFN0cmVhbS5jcHAKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL1N0YWNrQm91bmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU3RhY2tC
b3VuZHMuaAkocmV2aXNpb24gMjM3MDM3KQorKysgU291cmNlL1dURi93dGYvU3RhY2tCb3VuZHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2RlZmluZSBTdGFja0JvdW5kc19o
CiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8d3RmL1N0YWNrUG9pbnRlci5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpA
QCAtMTQ2LDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkg
Y29uc3QKICAgICB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICB2b2lkKiBjdXJyZW50
UG9zaXRpb24gPSAmY3VycmVudFBvc2l0aW9uOworICAgICAgICB2b2lkKiBjdXJyZW50UG9zaXRp
b24gPSBjdXJyZW50U3RhY2tQb2ludGVyKCk7CiAgICAgICAgIEFTU0VSVChtX29yaWdpbiAhPSBt
X2JvdW5kKTsKICAgICAgICAgQVNTRVJUKGlzR3Jvd2luZ0Rvd253YXJkKCkKICAgICAgICAgICAg
ID8gKGN1cnJlbnRQb3NpdGlvbiA8IG1fb3JpZ2luICYmIGN1cnJlbnRQb3NpdGlvbiA+IG1fYm91
bmQpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TdGFja1BvaW50ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1N0YWNrUG9pbnRlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dURi93dGYvU3RhY2tQb2ludGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0YWNrUG9pbnRlci5oIgorCituYW1lc3BhY2UgV1RGIHsK
KworI2lmIFVTRShHRU5FUklDX0NVUlJFTlRfU1RBQ0tfUE9JTlRFUikKK2NvbnN0ZXhwciBzaXpl
X3Qgc2l6ZU9mRnJhbWVIZWFkZXIgPSAyICogc2l6ZW9mKHZvaWQqKTsKKworU1VQUFJFU1NfQVNB
TiBORVZFUl9JTkxJTkUKK3ZvaWQqIGN1cnJlbnRTdGFja1BvaW50ZXIoKQoreworI2lmIENPTVBJ
TEVSKEdDQ19DT01QQVRJQkxFKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
PihfX2J1aWx0aW5fZnJhbWVfYWRkcmVzcygwKSkgKyBzaXplT2ZGcmFtZUhlYWRlcjsKKyNlbHNl
CisgICAgLy8gTWFrZSBzdXJlIHRoYXQgc3AgaXMgdGhlIG9ubHkgbG9jYWwgdmFyaWFibGUgZGVj
bGFyZWQgaW4gdGhpcyBmdW5jdGlvbi4KKyAgICB2b2lkKiBzcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KCZzcCkgKyBzaXplT2ZGcmFtZUhlYWRlciArIHNpemVvZihzcCk7CisgICAgcmV0
dXJuIHNwOworI2VuZGlmCit9CisjZW5kaWYgLy8gVVNFKEdFTkVSSUNfQ1VSUkVOVF9TVEFDS19Q
T0lOVEVSKQorCit9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1N0YWNr
UG9pbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1N0YWNrUG9pbnRlci5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL1N0YWNrUG9pbnRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdURiB7CisKKyNpZiBkZWZpbmVk
KE5ERUJVRykgJiYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpIFwKKyAgICAmJiAoQ1BVKFg4Nl82
NCkgfHwgQ1BVKFg4NikgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFS
TV9UUkFESVRJT05BTCkpCisKKy8vIFdlIGNhbiBvbmx5IHVzZSB0aGUgaW5saW5lIGFzbSBpbXBs
ZW1lbnRhdGlvbiBvbiByZWxlYXNlIGJ1aWxkcyBiZWNhdXNlIGl0CisvLyBuZWVkcyB0byBiZSBp
bmxpbmFibGUgaW4gb3JkZXIgdG8gYmUgY29ycmVjdC4KK0FMV0FZU19JTkxJTkUgdm9pZCogY3Vy
cmVudFN0YWNrUG9pbnRlcigpCit7CisgICAgdm9pZCogc3RhY2tQb2ludGVyID0gbnVsbHB0cjsK
KyNpZiBDUFUoWDg2XzY0KQorICAgIF9fYXNtX18gdm9sYXRpbGUgKCJtb3ZxICUlcnNwLCAlMCIg
OiAiPXIiKHN0YWNrUG9pbnRlcikgOjopOworI2VsaWYgQ1BVKFg4NikKKyAgICBfX2FzbV9fIHZv
bGF0aWxlICgibW92bCAlJWVzcCwgJTAiIDogIj1yIihzdGFja1BvaW50ZXIpIDo6KTsKKyNlbGlm
IENQVShBUk02NCkgJiYgZGVmaW5lZChfX0lMUDMyX18pCisgICAgdWludDY0X3Qgc3RhY2tQb2lu
dGVyUmVnaXN0ZXIgPSAwOworICAgIF9fYXNtX18gdm9sYXRpbGUgKCJtb3YgJTAsIHNwIiA6ICI9
ciIoc3RhY2tQb2ludGVyUmVnaXN0ZXIpIDo6KTsKKyAgICBzdGFja1BvaW50ZXIgPSByZWludGVy
cHJldF9jYXN0PHZvaWQqPihzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisjZWxpZiBDUFUoQVJNNjQp
IHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RSQURJVElPTkFMKQorICAgIF9fYXNtX18g
dm9sYXRpbGUgKCJtb3YgJTAsIHNwIiA6ICI9ciIoc3RhY2tQb2ludGVyKSA6Oik7CisjZW5kaWYK
KyAgICByZXR1cm4gc3RhY2tQb2ludGVyOworfQorCisjZWxzZQorCisjZGVmaW5lIFVTRV9HRU5F
UklDX0NVUlJFTlRfU1RBQ0tfUE9JTlRFUiAxCitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCogY3Vy
cmVudFN0YWNrUG9pbnRlcigpOworCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3Vz
aW5nIFdURjo6Y3VycmVudFN0YWNrUG9pbnRlcjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>