<?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>212680</bug_id>
          
          <creation_ts>2020-06-02 19:05:20 -0700</creation_ts>
          <short_desc>Enhance DoesGC verification to print more useful info when verification fails.</short_desc>
          <delta_ts>2020-06-04 02:23:29 -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>
          <dependson>212687</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>annulen</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>pmatos</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</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>1658566</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-02 19:05:20 -0700</bug_when>
    <thetext>Previously, we were just getting an assertion failure without too much extra info.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658572</commentid>
    <comment_count>1</comment_count>
      <attachid>400879</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-02 19:20:46 -0700</bug_when>
    <thetext>Created attachment 400879
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658575</commentid>
    <comment_count>2</comment_count>
      <attachid>400881</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-02 19:27:50 -0700</bug_when>
    <thetext>Created attachment 400881
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658577</commentid>
    <comment_count>3</comment_count>
      <attachid>400883</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-02 19:30:15 -0700</bug_when>
    <thetext>Created attachment 400883
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658589</commentid>
    <comment_count>4</comment_count>
      <attachid>400887</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-02 20:06:44 -0700</bug_when>
    <thetext>Created attachment 400887
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658591</commentid>
    <comment_count>5</comment_count>
      <attachid>400887</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-02 20:26:48 -0700</bug_when>
    <thetext>Comment on attachment 400887
proposed patch.

Looks like the patch is ready for a review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658592</commentid>
    <comment_count>6</comment_count>
      <attachid>400887</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-02 20:30:09 -0700</bug_when>
    <thetext>Comment on attachment 400887
proposed patch.

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

&gt; Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:977
&gt; +    }

We should do the same thing to `void store64(TrustedImm64 imm, ImplicitAddress address)`.
This is splitting store64 into two stores. This is not good since it is not atomic.
If the client assumes that this store is atomic in 64bit width, we have a bad time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658595</commentid>
    <comment_count>7</comment_count>
      <attachid>400887</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-02 20:34:36 -0700</bug_when>
    <thetext>Comment on attachment 400887
proposed patch.

Taking out of review while I address Yusuke&apos;s concern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658600</commentid>
    <comment_count>8</comment_count>
      <attachid>400889</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-02 20:56:01 -0700</bug_when>
    <thetext>Created attachment 400889
proposed patch.

Fixed store64 to use a single store.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658606</commentid>
    <comment_count>9</comment_count>
      <attachid>400889</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-02 21:24:31 -0700</bug_when>
    <thetext>Comment on attachment 400889
proposed patch.

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

r=me with comment

&gt; Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:988
&gt;  
&gt; +    void store64(TrustedImm64 imm, void* address)
&gt; +    {
&gt; +        auto src = scratchRegister();
&gt; +        move(imm, src);
&gt; +        swap(src, X86Registers::eax);
&gt; +        m_assembler.movq_EAXm(address);
&gt; +        swap(src, X86Registers::eax);
&gt; +    }
&gt; +

Why not just doing the same thing to `void store64(TrustedImm64 imm, ImplicitAddress address)`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658608</commentid>
    <comment_count>10</comment_count>
      <attachid>400889</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-02 21:45:17 -0700</bug_when>
    <thetext>Comment on attachment 400889
proposed patch.

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

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:988
&gt;&gt; +
&gt; 
&gt; Why not just doing the same thing to `void store64(TrustedImm64 imm, ImplicitAddress address)`?

I talked with Yusuke offline about this: the ImplicitAddress takes a register as the base of the address.  My store64 does not have an extra register to use as that base.  However, we noted that in the scenario where the imm fits in 32-bits, we can use the scratchRegister to store the address instead of the imm value.  So, I added a fast path for this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658610</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-02 21:48:15 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r262475: &lt;http://trac.webkit.org/r262475&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658612</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-02 21:49:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/63908362&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658633</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-02 23:27:25 -0700</bug_when>
    <thetext>Rolled out in r262478: &lt;http://trac.webkit.org/r262478&gt; because of broken Windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658634</commentid>
    <comment_count>14</comment_count>
      <attachid>400902</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-02 23:33:28 -0700</bug_when>
    <thetext>Created attachment 400902
test for Windows bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658863</commentid>
    <comment_count>15</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-03 13:25:20 -0700</bug_when>
    <thetext>Now that the true cause of the Windows bot build failure has been resolved in https://bugs.webkit.org/show_bug.cgi?id=212687, we can re-land this.


Re-landed in r262513: &lt;http://trac.webkit.org/r262513&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658888</commentid>
    <comment_count>16</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-03 15:16:59 -0700</bug_when>
    <thetext>Landed Windows debug build fix in r262517: &lt;http://trac.webkit.org/r262517&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400879</attachid>
            <date>2020-06-02 19:20:46 -0700</date>
            <delta_ts>2020-06-02 19:27:50 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-212680.patch</filename>
            <type>text/plain</type>
            <size>42620</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyNDcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NSBA
QAorMjAyMC0wNi0wMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW5oYW5jZSBEb2VzR0MgdmVyaWZpY2F0aW9uIHRvIHByaW50IG1vcmUgdXNlZnVsIGluZm8gd2hl
biB2ZXJpZmljYXRpb24gZmFpbHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTI2ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXaGVuIERvZXNHQyB2ZXJpZmljYXRpb24gZmFpbHMsIHRoZSBmaXJzdCBz
dGVwIG9mIGRlYnVnZ2luZyBpdCB3b3VsZCBiZSB0byBmaW5kCisgICAgICAgIG91dCB3aGF0IGFu
ZCB3aGljaCBERkcgbm9kZSByZXN1bHRlZCBpbiB0aGUgZmFpbGVkIHZlcmlmaWNhdGlvbi4gIElu
IHByZS1leGlzdGluZworICAgICAgICBjb2RlLCBhbGwgd2UgZ2V0IGlzIGFuIGFzc2VydGlvbiBm
YWlsdXJlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhhdCB0aGUgdmVyaWZp
ZXIgd2lsbCBkdW1wIHVzZWZ1bCBpbmZvLiAgSGVyZSdzIGFuIGV4YW1wbGU6CisKKyAgICAgICAg
ICAgIEVycm9yOiBEb2VzR0MgZmFpbGVkIEAgREAzNCBEYXRlR2V0SW50MzJPck5hTiBpbiAjRHRD
SE16OlsweDExMzViZDFkMC0+MHgxMTM1YmNhYjAtPjB4MTEzNWU1YzgwLCBERkdGdW5jdGlvbkNh
bGwsIDE1MCAoRGlkVHJ5VG9FbnRlckluTG9vcCldCisgICAgICAgICAgICAgICAgWzBdIGZyYW1l
IDB4N2ZmZWU4Mjg1NjYwIHsKKyAgICAgICAgICAgICAgICAgIG5hbWU6IAorICAgICAgICAgICAg
ICAgICAgc291cmNlVVJMOiAKKyAgICAgICAgICAgICAgICAgIGlzSW5saW5lZEZyYW1lOiBmYWxz
ZQorICAgICAgICAgICAgICAgICAgY2FsbGVlOiAweDExMzVmNjgyMAorICAgICAgICAgICAgICAg
ICAgcmV0dXJuUEM6IDB4NTBjZTYxMjQ4YWU2CisgICAgICAgICAgICAgICAgICBjYWxsZXJGcmFt
ZTogMHg3ZmZlZTgyODU2ZjAKKyAgICAgICAgICAgICAgICAgIHJhd0xvY2F0aW9uQml0czogNSAw
eDUKKyAgICAgICAgICAgICAgICAgIGNvZGVCbG9jazogMHgxMTM1YmQxZDAgI0R0Q0hNejpbMHgx
MTM1YmQxZDAtPjB4MTEzNWJjYWIwLT4weDExMzVlNWM4MCwgREZHRnVuY3Rpb25DYWxsLCAxNTAg
KERpZFRyeVRvRW50ZXJJbkxvb3ApXQorICAgICAgICAgICAgICAgICAgICBoYXNDb2RlT3JpZ2lu
czogdHJ1ZQorICAgICAgICAgICAgICAgICAgICBjYWxsU2l0ZUluZGV4OiA1IG9mIDEzCisgICAg
ICAgICAgICAgICAgICAgIGppdENvZGU6IDB4MTEzMDIwMjAwIHN0YXJ0IDB4NTBjZTYxMjE0YzYw
IGVuZCAweDUwY2U2MTIxOWIwMAorICAgICAgICAgICAgICAgICAgICBsaW5lOiAxCisgICAgICAg
ICAgICAgICAgICAgIGNvbHVtbjogNjAKKyAgICAgICAgICAgICAgICAgIEVudHJ5RnJhbWU6IDB4
N2ZmZWU4Mjg1ODYwCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFsxXSBmcmFt
ZSAweDdmZmVlODI4NTZmMCB7CisgICAgICAgICAgICAgICAgICBuYW1lOiAKKyAgICAgICAgICAg
ICAgICAgIHNvdXJjZVVSTDogZGF0ZS1mb3JtYXQteHBhcmIuanMKKyAgICAgICAgICAgICAgICAg
IGlzSW5saW5lZEZyYW1lOiBmYWxzZQorICAgICAgICAgICAgICAgICAgY2FsbGVlOiAweDExMzVm
NjVhMAorICAgICAgICAgICAgICAgICAgcmV0dXJuUEM6IDB4NTBjZTYxMjI3ZTk5CisgICAgICAg
ICAgICAgICAgICBjYWxsZXJGcmFtZTogMHg3ZmZlZTgyODU3NzAKKyAgICAgICAgICAgICAgICAg
IHJhd0xvY2F0aW9uQml0czogNCAweDQKKyAgICAgICAgICAgICAgICAgIGNvZGVCbG9jazogMHgx
MTM1YmQwYTAgI0JVNlpjZDpbMHgxMTM1YmQwYTAtPjB4MTEzNWJjMjYwLT4weDExMzVlNTE4MCwg
REZHRnVuY3Rpb25DYWxsLCAxMTIgKERpZFRyeVRvRW50ZXJJbkxvb3ApXQorICAgICAgICAgICAg
ICAgICAgICBoYXNDb2RlT3JpZ2luczogdHJ1ZQorICAgICAgICAgICAgICAgICAgICBjYWxsU2l0
ZUluZGV4OiA0IG9mIDEyCisgICAgICAgICAgICAgICAgICAgIGppdENvZGU6IDB4MTEzMDA0MDAw
IHN0YXJ0IDB4NTBjZTYxMjEyYzYwIGVuZCAweDUwY2U2MTIxNDk2MAorICAgICAgICAgICAgICAg
ICAgICBsaW5lOiAyNgorICAgICAgICAgICAgICAgICAgICBjb2x1bW46IDIyCisgICAgICAgICAg
ICAgICAgICBFbnRyeUZyYW1lOiAweDdmZmVlODI4NTg2MAorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBbMl0gZnJhbWUgMHg3ZmZlZTgyODU3NzAgeworICAgICAgICAgICAgICAg
ICAgbmFtZTogCisgICAgICAgICAgICAgICAgICBzb3VyY2VVUkw6IGRhdGUtZm9ybWF0LXhwYXJi
LmpzCisgICAgICAgICAgICAgICAgICBpc0lubGluZWRGcmFtZTogZmFsc2UKKyAgICAgICAgICAg
ICAgICAgIGNhbGxlZTogMHgxMTM1ZjY0ZTAKKyAgICAgICAgICAgICAgICAgIHJldHVyblBDOiAw
eDEwODA1OGViMQorICAgICAgICAgICAgICAgICAgY2FsbGVyRnJhbWU6IDB4N2ZmZWU4Mjg1N2Uw
CisgICAgICAgICAgICAgICAgICByYXdMb2NhdGlvbkJpdHM6IDEwMDEgMHgzZTkKKyAgICAgICAg
ICAgICAgICAgIGNvZGVCbG9jazogMHgxMTM1YmMxMzAgI0RBUzl4ZTpbMHgxMTM1YmMxMzAtPjB4
MTEzNWU1MTAwLCBCYXNlbGluZUZ1bmN0aW9uQ2FsbCwgMTE0OV0KKyAgICAgICAgICAgICAgICAg
ICAgYmMjMTAwMSBvZiAxMTQ5CisgICAgICAgICAgICAgICAgICAgIGxpbmU6IDQxNworICAgICAg
ICAgICAgICAgICAgICBjb2x1bW46IDM4CisgICAgICAgICAgICAgICAgICBFbnRyeUZyYW1lOiAw
eDdmZmVlODI4NTg2MAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBbM10gZnJh
bWUgMHg3ZmZlZTgyODU3ZTAgeworICAgICAgICAgICAgICAgICAgbmFtZTogZ2xvYmFsIGNvZGUK
KyAgICAgICAgICAgICAgICAgIHNvdXJjZVVSTDogZGF0ZS1mb3JtYXQteHBhcmIuanMKKyAgICAg
ICAgICAgICAgICAgIGlzSW5saW5lZEZyYW1lOiBmYWxzZQorICAgICAgICAgICAgICAgICAgY2Fs
bGVlOiAweDExMzBmOTdiOAorICAgICAgICAgICAgICAgICAgcmV0dXJuUEM6IDB4MTA4MDM5MDQz
CisgICAgICAgICAgICAgICAgICBjYWxsZXJGcmFtZTogMHgwCisgICAgICAgICAgICAgICAgICBy
YXdMb2NhdGlvbkJpdHM6IDIzIDB4MTcKKyAgICAgICAgICAgICAgICAgIGNvZGVCbG9jazogMHgx
MTM1YmMwMDAgPGdsb2JhbD4jQ3VrWHZ0OlsweDExMzViYzAwMC0+MHgxMTMwY2Q3NjgsIExMSW50
R2xvYmFsLCA4MV0KKyAgICAgICAgICAgICAgICAgICAgYmMjMjMgb2YgODEKKyAgICAgICAgICAg
ICAgICAgICAgbGluZTogNDI1CisgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogMworICAgICAg
ICAgICAgICAgICAgRW50cnlGcmFtZTogMHg3ZmZlZTgyODU4NjAKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IGV4cGVjdERvZXNHQygpCisKKyAgICAg
ICAgVGhlIGVycm9yIG1lc3NhZ2Ugbm93IGNvbWVzIHdpdGggdGhlIG5vZGUgaW5kZXgsIE5vZGVU
eXBlLCBjb2RlQmxvY2sgd2hpY2ggdGhpcworICAgICAgICBmYWlsdXJlIHdhcyBmb3VuZCBpbiwg
YW5kIHRoZSBKUyBjYWxsIHN0YWNrIHRoYXQgbGVkIHRvIHRoZSBmYWlsdXJlLgorCisgICAgICAg
IENoYW5nZXMgbWFkZToKKworICAgICAgICAxLiBJbnRyb2R1Y2VkIGEgRG9lc0dDQ2hlY2sgdmFs
dWUgdGhhdCBpcyB1c2VkIHRvIGVuY29kZSBzb21lIG9mIHRoZSBhYm92ZSBkYXRhLgorCisgICAg
ICAgICAgIFByZXZpb3VzbHksIHdlIG9ubHkgcmVjb3JkZWQgd2hldGhlciBkb2VzR0MoKSByZXR1
cm5zIHRydWUgb3IgZmFsc2UgZm9yIHRoZQorICAgICAgICAgICBOb2RlLiAgTm93LCB3ZSByZWNv
cmQgdGhlIG5vZGVJbmRleCBhbmQgbm9kZU9wIGFzIHdlbGwuCisKKyAgICAgICAgICAgTm90ZSB0
aGF0IHdlIGFsc28gc2V0IERvZXNHQyBleHBlY3RhdGlvbnMgZm9yIE9TUiBleGl0cy4gIFNvLCBE
b2VzR0NDaGVjaworICAgICAgICAgICBpbmNsdWRlcyBTcGVjaWFsIGNhc2VzIGZvciB0aG9zZS4K
KworICAgICAgICAyLiBBZGRlZCBzdG9yZTY0KFRydXN0ZWRJbW02NCBpbW0sIGNvbnN0IHZvaWQq
IGFkZHJlc3MpIGVtaXR0ZXJzIGZvciBYODZfNjQgYW5kIEFSTTY0LgorICAgICAgICAgICBBbHNv
IGFkZGVkIGEgdGVzdCBmb3IgdGhpcyBuZXcgZW1pdHRlciBpbiB0ZXN0bWFzbS4KKworICAgICAg
ICAgICBOb3RlOiBmb3IgdGhlIFg4Nl82NCBlbWl0dGVyLCB3ZSBkb24ndCBoYXZlIGVub3VnaCBz
Y3JhdGNoIHJlZ2lzdGVycyB0byBkbyBhCisgICAgICAgICAgIHRydWUgNjQtYml0IHN0b3JlLiAg
U28sIEkgaW1wbGVtZW50ZWQgaXQgd2l0aCAyIDMyLWJpdCBzdG9yZXMgaW5zdGVhZC4gIFNpbmNl
CisgICAgICAgICAgIHRoaXMgaXMgbm90IHVzZWQgaW4gYW55IGhvdCBwYXRocywgdGhpcyBpcyBm
aW5lIGZvciBub3cuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OnN0b3JlNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6c3RvcmU2NCk6CisgICAgICAgICog
YXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6dGVzdFN0b3JlNjRJbW02NEFk
ZHJlc3NQb2ludGVyKToKKyAgICAgICAgKEpTQzo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHRG9l
c0dDQ2hlY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpEb2VzR0NDaGVjazo6dmVy
aWZ5Q2FuR0MpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0NDaGVjay5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6REZHOjpEb2VzR0NDaGVjazo6RG9lc0dDQ2hlY2spOgorICAgICAgICAoSlNDOjpE
Rkc6OkRvZXNHQ0NoZWNrOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNr
OjpzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNrOjpleHBlY3REb2VzR0MpOgor
ICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNrOjpzcGVjaWFsKToKKyAgICAgICAgKEpTQzo6
REZHOjpEb2VzR0NDaGVjazo6bm9kZUluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpEb2VzR0ND
aGVjazo6bm9kZU9wKToKKyAgICAgICAgKEpTQzo6REZHOjpEb2VzR0NDaGVjazo6aXNTcGVjaWFs
KToKKyAgICAgICAgKEpTQzo6REZHOjpEb2VzR0NDaGVjazo6c3BlY2lhbEluZGV4KToKKyAgICAg
ICAgKEpTQzo6REZHOjpEb2VzR0NDaGVjazo6Yml0cyk6CisgICAgICAgICogZGZnL0RGR0dyYXBo
LmNwcDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
b3BlcmF0aW9uQ29tcGlsZU9TUkV4aXQpOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNv
bXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlTm9kZSk6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJh
dGlvbkNvbXBpbGVGVExPU1JFeGl0KToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vic3BhY2Uu
Y3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjp0cnlBbGxvY2F0ZVNsb3cpOgor
ICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjpyZWFsbG9jYXRlUHJlY2lzZUFsbG9jYXRp
b25Ob25WaXJ0dWFsKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OmFsbG9jYXRlTm9uVmlydHVhbCk6Cisg
ICAgICAgICogaGVhcC9EZWZlckdDLmg6CisgICAgICAgIChKU0M6OkRlZmVyR0M6On5EZWZlckdD
KToKKyAgICAgICAgKiBoZWFwL0dDRGVmZXJyYWxDb250ZXh0SW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpHQ0RlZmVycmFsQ29udGV4dDo6fkdDRGVmZXJyYWxDb250ZXh0KToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0Tm93KToKKyAgICAgICAg
KEpTQzo6SGVhcDo6Y29sbGVjdEFzeW5jKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdFN5
bmMpOgorICAgICAgICAoSlNDOjpIZWFwOjpzdG9wSWZOZWNlc3NhcnlTbG93KToKKyAgICAgICAg
KEpTQzo6SGVhcDo6Y29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcik6CisgICAgICAgICogaGVhcC9I
ZWFwLmg6CisgICAgICAgIChKU0M6OkhlYXA6OmFkZHJlc3NPZkRvZXNHQyk6CisgICAgICAgIChK
U0M6OkhlYXA6OnNldERvZXNHQ0V4cGVjdGF0aW9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dmVy
aWZ5Q2FuR0MpOgorICAgICAgICAoSlNDOjpIZWFwOjpleHBlY3REb2VzR0MgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpIZWFwOjpzZXRFeHBlY3REb2VzR0MpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpIZWFwOjphZGRyZXNzT2ZFeHBlY3REb2VzR0MpOiBEZWxldGVkLgorICAgICAg
ICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6YWNxdWlyZUFjY2Vz
cyk6CisgICAgICAgIChKU0M6OkhlYXA6OnN0b3BJZk5lY2Vzc2FyeSk6CisgICAgICAgICogaGVh
cC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6TG9jYWxBbGxvY2F0b3I6
OmFsbG9jYXRlKToKKyAgICAgICAgKiBoZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6UHJlY2lzZUFsbG9jYXRpb246OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OlBy
ZWNpc2VBbGxvY2F0aW9uOjpjcmVhdGVGb3JMb3dlclRpZXIpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6anNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1N0cmluZzo6dG9BdG9tU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SlNTdHJpbmc6OnRvRXhpc3RpbmdBdG9tU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNT
dHJpbmc6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OnRyeUdldFZhbHVl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjp1bnNhZmVWaWV3IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjp2aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcgY29u
c3QpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dW5zYWZlVmlldyBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlUmVn
RXhwTWF0Y2hlc0FycmF5KToKKwogMjAyMC0wNi0wMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgVk1JbnNwZWN0b3IgQVBJcyBzaG91bGQgYmUgdGFraW5nIGEgVk0q
IGluc3RlYWQgb2YgYSBKU0dsb2JhbE9iamVjdCouCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CShyZXZpc2lvbiAyNjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM0Nyw2ICszNDcsNyBAQCBkZmcvREZHRGVzaXJlZFdh
dGNocG9pbnRzLmNwcAogZGZnL0RGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5jcHAKIGRmZy9ERkdE
aXNhc3NlbWJsZXIuY3BwCiBkZmcvREZHRG9lc0dDLmNwcAorZGZnL0RGR0RvZXNHQ0NoZWNrLmNw
cAogZGZnL0RGR0RyaXZlci5jcHAKIGRmZy9ERkdFZGdlLmNwcAogZGZnL0RGR0Vwb2NoLmNwcApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTM2LDYgKzE5MzYsNyBAQAogCQlGRUI1MUY2QzFBOTdC
Njg4MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjUxRjZCMUE5N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNz
MTQxODA5Lm1tICovOyB9OwogCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5k
bGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRUI1OEMxMzE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVDMTYwMzIyMzM5
RTlGOTAwQTA0Q0I4IC8qIENlbGxTaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRUMxNjAzMTIzMzlFOUY5MDBBMDRDQjggLyogQ2VsbFNpemUuaCAq
LzsgfTsKKwkJRkVDM0EzQTEyNDg3MzVDQTAwMzk1QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUMzQTNBMDI0ODcz
NUJDMDAzOTVCNTQgLyogREZHRG9lc0dDQ2hlY2suaCAqLzsgfTsKIAkJRkVDNTc5NzMyMzEwNUI1
MTAwQkNBODNGIC8qIFZNSW5zcGVjdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDNTc5NzIyMzEwNUI0ODAwQkNBODNGIC8qIFZNSW5z
cGVjdG9ySW5saW5lcy5oICovOyB9OwogCQlGRUM1Nzk3NjIzMTA1RjRFMDBCQ0E4M0YgLyogSW50
ZWdyaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RUM1Nzk3NTIzMTA1RjQzMDBCQ0E4M0YgLyogSW50ZWdyaXR5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVDNTc5NzgyMzEwOTU0QzAwQkNBODNG
IC8qIEludGVncml0eUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFQzU3OTc3MjMxMDk1NEIwMEJDQTgzRiAvKiBJbnRlZ3JpdHlJbmxpbmVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUy
MzIsNiArNTIzMyw4IEBACiAJCUZFQjU4QzEyMTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRs
aW5nU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXJyb3JI
YW5kbGluZ1Njb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVCNThDMTMx
ODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBFcnJvckhhbmRsaW5nU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkVDMTYwMzEyMzM5RTlGOTAwQTA0Q0I4IC8qIENlbGxTaXplLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENlbGxTaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFQzNBMzlGMjQ4NzM1QkMwMDM5NUI1NCAvKiBERkdEb2VzR0NDaGVjay5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdEb2VzR0NDaGVjay5jcHA7IHBhdGggPSBkZmcvREZH
RG9lc0dDQ2hlY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUMzQTNBMDI0
ODczNUJDMDAzOTVCNTQgLyogREZHRG9lc0dDQ2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRG9l
c0dDQ2hlY2suaDsgcGF0aCA9IGRmZy9ERkdEb2VzR0NDaGVjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRUM1Nzk3MjIzMTA1QjQ4MDBCQ0E4M0YgLyogVk1JbnNwZWN0b3JJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZNSW5zcGVjdG9ySW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUM1Nzk3NDIzMTA1RjQyMDBCQ0E4
M0YgLyogSW50ZWdyaXR5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEludGVncml0eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQzU3OTc1MjMx
MDVGNDMwMEJDQTgzRiAvKiBJbnRlZ3JpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW50ZWdyaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03ODk2LDYg
Kzc4OTksOCBAQAogCQkJCTBGRjQyNzYyMTU5MUExQzkwMDRDQjlGRiAvKiBERkdEaXNhc3NlbWJs
ZXIuaCAqLywKIAkJCQkwRjVBMTI3MTE5MkQ5RkRGMDA4NzY0QTMgLyogREZHRG9lc0dDLmNwcCAq
LywKIAkJCQkwRjVBMTI3MjE5MkQ5RkRGMDA4NzY0QTMgLyogREZHRG9lc0dDLmggKi8sCisJCQkJ
RkVDM0EzOUYyNDg3MzVCQzAwMzk1QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmNwcCAqLywKKwkJCQlG
RUMzQTNBMDI0ODczNUJDMDAzOTVCNTQgLyogREZHRG9lc0dDQ2hlY2suaCAqLywKIAkJCQkwRkQ4
MUFEMDE1NEZCNEVCMDA5ODNFNzIgLyogREZHRG9taW5hdG9ycy5oICovLAogCQkJCTBGMUUzQTQ0
MTUzNENCQUQwMDBGOTQ1NiAvKiBERkdEb3VibGVGb3JtYXRTdGF0ZS5oICovLAogCQkJCTBGRDND
ODIwMTQxMTVDRjgwMEZEODFDQiAvKiBERkdEcml2ZXIuY3BwICovLApAQCAtMTAxOTYsNiArMTAy
MDEsNyBAQAogCQkJCTc5RDVDRDVCMUMxMTA2QTkwMENFQ0EwNyAvKiBTYW1wbGluZ1Byb2ZpbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyODFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVk
QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyOTFBQTkwOTU2MDBEMzNCMzMg
LyogU2NvcGVkQXJndW1lbnRzVGFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFQzNBM0ExMjQ4
NzM1Q0EwMDM5NUI1NCAvKiBERkdEb2VzR0NDaGVjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZF
MDUwMkIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjI0RTU1MjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzMzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUu
aCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDU5LDYgKzE0NTksMTcgQEAgcHVibGljOgogICAgICAgICBzdG9yZTw2
ND4oc3JjLCBhZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTY0
IGltbSwgY29uc3Qgdm9pZCogYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmICghaW1tLm1fdmFs
dWUpIHsKKyAgICAgICAgICAgIHN0b3JlNjQoQVJNNjRSZWdpc3RlcnM6OnpyLCBhZGRyZXNzKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1vdmVUb0NhY2hlZFJl
ZyhpbW0sIGRhdGFNZW1vcnlUZW1wUmVnaXN0ZXIoKSk7CisgICAgICAgIHN0b3JlNjQoZGF0YVRl
bXBSZWdpc3RlciwgYWRkcmVzcyk7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJ
bW0zMiBpbW0sIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgc3RvcmU2
NChUcnVzdGVkSW1tNjQoaW1tLm1fdmFsdWUpLCBhZGRyZXNzKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJ
KHJldmlzaW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtOTY3LDYgKzk2NywxNSBAQCBw
dWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTY0
IGltbSwgdm9pZCogYWRkcmVzcykKKyAgICB7CisgICAgICAgIHVpbnQzMl90IGxvID0gc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgdWludDMyX3QgaGkgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oaW1tLm1fdmFsdWUgPj4gMzIpOworICAgICAgICB2b2lkKiBoaUFk
ZHJlc3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihhZGRyZXNzKSArIDQ7CisgICAgICAg
IHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvKSwgYWRkcmVzcyk7CisgICAgICAgIHN0b3JlMzIoVHJ1
c3RlZEltbTMyKGhpKSwgaGlBZGRyZXNzKTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlNjQoVHJ1
c3RlZEltbTMyIGltbSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBt
X2Fzc2VtYmxlci5tb3ZxX2kzMm0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFz
bS5jcHAJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvdGVzdG1hc20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTgsNiArNjU4LDMxIEBAIHZvaWQg
dGVzdENvdW50VHJhaWxpbmdaZXJvczY0V2l0aG91dE51bGwKICAgICBib29sIHdvcmRDYW5CZVpl
cm8gPSBmYWxzZTsKICAgICB0ZXN0Q291bnRUcmFpbGluZ1plcm9zNjRJbXBsKHdvcmRDYW5CZVpl
cm8pOwogfQorCit2b2lkIHRlc3RTdG9yZTY0SW1tNjRBZGRyZXNzUG9pbnRlcigpCit7CisgICAg
YXV0byBkb1Rlc3QgPSBbXSAoaW50NjRfdCB2YWx1ZSkgeworICAgICAgICBpbnQ2NF90IGRlc3Q7
CisgICAgICAgIHZvaWQqIGRlc3RBZGRyZXNzID0gJmRlc3Q7CisKKyAgICAgICAgYXV0byB0ZXN0
ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICBlbWl0RnVu
Y3Rpb25Qcm9sb2d1ZShqaXQpOworICAgICAgICAgICAgaml0LnN0b3JlNjQoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tNjQodmFsdWUpLCBkZXN0QWRkcmVzcyk7CisgICAgICAgICAgICBlbWl0RnVu
Y3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICB9KTsK
KworICAgICAgICBpbnZva2U8c2l6ZV90Pih0ZXN0KTsKKyAgICAgICAgQ0hFQ0tfRVEoZGVzdCwg
dmFsdWUpOworICAgIH07CisgICAgCisgICAgZm9yIChhdXRvIHZhbHVlIDogaW50NjRPcGVyYW5k
cygpKQorICAgICAgICBkb1Rlc3QodmFsdWUpOworCisgICAgZG9UZXN0KDB4OTg3NjU1NTVBQUFB
NDMyMSk7CisgICAgZG9UZXN0KDB4QUFBQTQzMjE5ODc2NTU1NSk7Cit9CisKICNlbmRpZiAvLyBD
UFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCiAKIHZvaWQgdGVzdENvbXBhcmVEb3VibGUoTWFjcm9B
c3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbiBjb25kaXRpb24pCkBAIC0yNDk5LDYgKzI1MjQsNyBA
QCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RDbGVhckJpdHM2NFdp
dGhNYXNrVGVybmFyeSgpKTsKICAgICBSVU4odGVzdENvdW50VHJhaWxpbmdaZXJvczY0KCkpOwog
ICAgIFJVTih0ZXN0Q291bnRUcmFpbGluZ1plcm9zNjRXaXRob3V0TnVsbENoZWNrKCkpOworICAg
IFJVTih0ZXN0U3RvcmU2NEltbTY0QWRkcmVzc1BvaW50ZXIoKSk7CiAjZW5kaWYKIAogI2lmIENQ
VShBUk02NCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDQ2hlY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDQ2hl
Y2suY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDQ2hlY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiREZHRG9lc0dDQ2hlY2suaCIKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJWTUluc3Bl
Y3Rvci5oIgorI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisKK25hbWVzcGFjZSBKU0MgeworbmFt
ZXNwYWNlIERGRyB7CisKKyNpZiBFTkFCTEUoREZHX0RPRVNfR0NfVkFMSURBVElPTikKKworZXh0
ZXJuIGNvbnN0IGNoYXIqIGRmZ09wTmFtZXNbXTsKKworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBE
b2VzR0NDaGVjazo6dmVyaWZ5Q2FuR0MoVk0mIHZtKQoreworICAgIGlmICghZXhwZWN0RG9lc0dD
KCkpIHsKKyAgICAgICAgZGF0YUxvZygiRXJyb3I6IERvZXNHQyBmYWlsZWQiKTsKKyAgICAgICAg
aWYgKGlzU3BlY2lhbCgpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHNwZWNpYWwoKSkgeworICAg
ICAgICAgICAgY2FzZSBTcGVjaWFsOjpVbmluaXRpYWxpemVkOgorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjaWFsOjpERkdPU1JFeGl0OgorICAgICAgICAgICAg
ICAgIGRhdGFMb2coIiBAIERGRyBvc3IgZXhpdCIpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBTcGVjaWFsOjpGVExPU1JFeGl0OgorICAgICAgICAgICAgICAgIGRh
dGFMb2coIiBAIEZUTCBvc3IgZXhpdCIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBTcGVjaWFsOjpSZXNlcnZlZFVudXNlZDoKKyAgICAgICAgICAgIGNhc2UgU3Bl
Y2lhbDo6TnVtYmVyT2ZTcGVjaWFsczoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IGRhdGFMb2coIiBAIERAIiwgbm9kZUluZGV4KCksICIgIiwgREZHOjpkZmdPcE5hbWVzW25vZGVP
cCgpXSk7CisKKyAgICAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSB2bS50b3BDYWxsRnJhbWU7
CisgICAgICAgIGlmIChjYWxsRnJhbWUpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiIGlu
ICIsIGNvZGVCbG9jayk7CisgICAgICAgICAgICBWTUluc3BlY3Rvcjo6ZHVtcFN0YWNrKCZ2bSwg
Y2FsbEZyYW1lKTsKKyAgICAgICAgfQorICAgICAgICBkYXRhTG9nTG4oKTsKKyAgICB9CisgICAg
UkVMRUFTRV9BU1NFUlQoZXhwZWN0RG9lc0dDKCkpOworfQorI2VuZGlmIC8vIEVOQUJMRShERkdf
RE9FU19HQ19WQUxJREFUSU9OKQorCit9IC8vIG5hbWVzcGFjZSBERkcKK30gLy8gbmFtZXNwYWNl
IEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQ0NoZWNrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0NDaGVjay5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDQ2hl
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8Y3N0
ZGludD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgSlNDIHsKK25h
bWVzcGFjZSBERkcgeworCitzdHJ1Y3QgRG9lc0dDQ2hlY2sgeworICAgIGVudW0gY2xhc3MgU3Bl
Y2lhbCB7CisgICAgICAgIFJlc2VydmVkVW51c2VkLCAvLyBzbyB0aGF0IHNwZWNpYWxzIHN0YXJ0
IHdpdGggMS4gaXNTcGVjaWFsKCkgcmVsaWVzIG9uIHRoaXMuCisgICAgICAgIFVuaW5pdGlhbGl6
ZWQsCisgICAgICAgIERGR09TUkV4aXQsCisgICAgICAgIEZUTE9TUkV4aXQsCisgICAgICAgIE51
bWJlck9mU3BlY2lhbHMKKyAgICB9OworCisgICAgRG9lc0dDQ2hlY2soKQorICAgICAgICA6IG1f
dmFsdWUoZW5jb2RlKHRydWUsIFNwZWNpYWw6OlVuaW5pdGlhbGl6ZWQpKQorICAgIHsgfQorCisg
ICAgc3RhdGljIHVpbnQ2NF90IGVuY29kZShib29sIGV4cGVjdERvZXNHQywgdW5zaWduZWQgbm9k
ZUluZGV4LCB1bnNpZ25lZCBub2RlT3ApCisgICAgeworICAgICAgICB1aW50NjRfdCByZXN1bHQg
PSBiaXRzKG5vZGVJbmRleCkgPDwgbm9kZUluZGV4U2hpZnQ7CisgICAgICAgIHJlc3VsdCB8PSBi
aXRzKG5vZGVPcCkgPDwgbm9kZU9wU2hpZnQ7CisgICAgICAgIHJlc3VsdCB8PSBiaXRzKGV4cGVj
dERvZXNHQykgPDwgZXhwZWN0RG9lc0dDU2hpZnQ7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCisgICAgc3RhdGljIHVpbnQ2NF90IGVuY29kZShib29sIGV4cGVjdERvZXNHQywgU3Bl
Y2lhbCBzcGVjaWFsKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGJpdHMoc3BlY2lhbCkgPCBudW1i
ZXJPZlNwZWNpYWxzKTsKKyAgICAgICAgdWludDY0X3QgcmVzdWx0ID0gYml0cyhzcGVjaWFsKSA8
PCBzcGVjaWFsU2hpZnQ7CisgICAgICAgIHJlc3VsdCB8PSBiaXRzKGV4cGVjdERvZXNHQykgPDwg
ZXhwZWN0RG9lc0dDU2hpZnQ7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAg
dm9pZCBzZXQoYm9vbCBleHBlY3REb2VzR0MsIHVuc2lnbmVkIG5vZGVJbmRleCwgdW5zaWduZWQg
bm9kZU9wKQorICAgIHsKKyAgICAgICAgbV92YWx1ZSA9IGVuY29kZShleHBlY3REb2VzR0MsIG5v
ZGVJbmRleCwgbm9kZU9wKTsKKyAgICB9CisKKyAgICB2b2lkIHNldChib29sIGV4cGVjdERvZXNH
QywgU3BlY2lhbCBzcGVjaWFsKQorICAgIHsKKyAgICAgICAgbV92YWx1ZSA9IGVuY29kZShleHBl
Y3REb2VzR0MsIHNwZWNpYWwpOworICAgIH0KKworICAgIGJvb2wgZXhwZWN0RG9lc0dDKCkgeyBy
ZXR1cm4gbV92YWx1ZSAmIGV4cGVjdERvZXNHQ01hc2s7IH0KKyAgICBTcGVjaWFsIHNwZWNpYWwo
KSB7IHJldHVybiBzdGF0aWNfY2FzdDxTcGVjaWFsPihzcGVjaWFsSW5kZXgoKSk7IH0KKyAgICB1
bnNpZ25lZCBub2RlSW5kZXgoKSB7IHJldHVybiBtX3ZhbHVlID4+IG5vZGVJbmRleFNoaWZ0OyB9
CisgICAgdW5zaWduZWQgbm9kZU9wKCkgeyByZXR1cm4gKG1fdmFsdWUgPj4gbm9kZU9wU2hpZnQp
ICYgbm9kZU9wTWFzazsgfQorCisgICAgYm9vbCBpc1NwZWNpYWwoKSB7IHJldHVybiBzcGVjaWFs
SW5kZXgoKTsgfQorCisgICAgdm9pZCB2ZXJpZnlDYW5HQyhWTSYpOworCitwcml2YXRlOgorICAg
IHVuc2lnbmVkIHNwZWNpYWxJbmRleCgpIHsgcmV0dXJuIChtX3ZhbHVlID4+IHNwZWNpYWxTaGlm
dCkgJiBzcGVjaWFsTWFzazsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHVp
bnQ2NF90IGJpdHMoVCB2YWx1ZSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZhbHVl
KTsgfQorCisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBudW1iZXJPZlNwZWNpYWxzID0g
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KFNwZWNpYWw6Ok51bWJlck9mU3BlY2lhbHMpOworCisgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBleHBlY3REb2VzR0NTaGlmdCA9IDA7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzcGVjaWFsU2hpZnQgPSAxOworICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgbm9kZU9wU2hpZnQgPSAxNjsKKyAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIG5vZGVJbmRleFNoaWZ0ID0gMzI7CisKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIGV4cGVjdERvZXNHQ01hc2sgPSAweDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBzcGVjaWFsTWFzayA9IDB4N2ZmZjsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG5v
ZGVPcE1hc2sgPSAweGZmZmY7CisKKyAgICB1aW50NjRfdCBtX3ZhbHVlIHsgMCB9OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgREZHCisKK3VzaW5nIERGRzo6RG9lc0dDQ2hlY2s7CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJl
dmlzaW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBkdW1wT1NSQXZhaWxhYmlsaXR5RGF0YSA9
IGZhbHNlOwogCiAvLyBDcmVhdGVzIGFuIGFycmF5IG9mIHN0cmluZ2l6ZWQgbmFtZXMuCi1zdGF0
aWMgY29uc3QgY2hhciogZGZnT3BOYW1lc1tdID0geworY29uc3QgY2hhciogZGZnT3BOYW1lc1td
ID0gewogI2RlZmluZSBTVFJJTkdJWkVfREZHX09QX0VOVU0ob3Bjb2RlLCBmbGFncykgI29wY29k
ZSAsCiAgICAgRk9SX0VBQ0hfREZHX09QKFNUUklOR0laRV9ERkdfT1BfRU5VTSkKICN1bmRlZiBT
VFJJTkdJWkVfREZHX09QX0VOVU0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0LmNwcAkocmV2aXNpb24gMjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Db21waWxlT1NSRXgKICAgICBpZiAodmFsaWRhdGVERkdE
b2VzR0MpIHsKICAgICAgICAgLy8gV2UncmUgYWJvdXQgdG8gZXhpdCBvcHRpbWl6ZWQgY29kZS4g
U28sIHRoZXJlJ3Mgbm8gbG9uZ2VyIGFueSBvcHRpbWl6ZWQKICAgICAgICAgLy8gY29kZSBydW5u
aW5nIHRoYXQgZXhwZWN0cyBubyBHQy4KLSAgICAgICAgdm0uaGVhcC5zZXRFeHBlY3REb2VzR0Mo
dHJ1ZSk7CisgICAgICAgIHZtLmhlYXAuc2V0RG9lc0dDRXhwZWN0YXRpb24odHJ1ZSwgRG9lc0dD
Q2hlY2s6OlNwZWNpYWw6OkRGR09TUkV4aXQpOwogICAgIH0KIAogICAgIGlmICh2bS5jYWxsRnJh
bWVGb3JDYXRjaCkKQEAgLTU1NSwxMSArNTU1LDExIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4
aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgLy8gY29kZSBydW5uaW5nIHRoYXQgZXhwZWN0cyBu
byBHQy4gV2UgbmVlZCB0byBzZXQgdGhpcyBiZWZvcmUgYXJndW1lbnRzCiAgICAgICAgIC8vIG1h
dGVyaWFsaXphdGlvbiBiZWxvdyAoc2VlIGVtaXRSZXN0b3JlQXJndW1lbnRzKCkpLgogCi0gICAg
ICAgIC8vIEV2ZW4gdGhvdWdoIHdlIHNldCBIZWFwOjptX2V4cGVjdERvZXNHQyBpbiBjb21waWxl
T1NSRXhpdCgpLCB3ZSBhbHNvIG5lZWQKKyAgICAgICAgLy8gRXZlbiB0aG91Z2ggd2Ugc2V0IEhl
YXA6Om1fZG9lc0dDIGluIGNvbXBpbGVPU1JFeGl0KCksIHdlIGFsc28gbmVlZAogICAgICAgICAv
LyB0byBzZXQgaXQgaGVyZSBiZWNhdXNlIGNvbXBpbGVPU1JFeGl0KCkgaXMgb25seSBjYWxsZWQg
b24gdGhlIGZpcnN0IHRpbWUKICAgICAgICAgLy8gd2UgZXhpdCBmcm9tIHRoaXMgc2l0ZSwgYnV0
IGFsbCBzdWJzZXF1ZW50IGV4aXRzIHdpbGwgdGFrZSB0aGlzIGNvbXBpbGVkCiAgICAgICAgIC8v
IHJhbXAgd2l0aG91dCBjYWxsaW5nIGNvbXBpbGVPU1JFeGl0KCkgZmlyc3QuCi0gICAgICAgIGpp
dC5zdG9yZTgoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodHJ1ZSksIHZtLmhlYXAuYWRkcmVz
c09mRXhwZWN0RG9lc0dDKCkpOworICAgICAgICBqaXQuc3RvcmU2NChDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW02NChEb2VzR0NDaGVjazo6ZW5jb2RlKHRydWUsIERvZXNHQ0NoZWNrOjpTcGVjaWFs
OjpERkdPU1JFeGl0KSksIHZtLmhlYXAuYWRkcmVzc09mRG9lc0dDKCkpOwogICAgIH0KIAogICAg
IC8vIE5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHN0YWNrIHBvaW50ZXIgYWNjb3VudHMgZm9yIHRo
ZSB3b3JzdC1jYXNlIHN0YWNrIHVzYWdlIGF0IGV4aXQuIFRoaXMKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24g
MjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzOCw3ICsyMTM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKSB7
CiAgICAgICAgIGJvb2wgZXhwZWN0RG9lc0dDID0gZG9lc0dDKG1faml0LmdyYXBoKCksIG5vZGUp
OwotICAgICAgICBtX2ppdC5zdG9yZTgoVHJ1c3RlZEltbTMyKGV4cGVjdERvZXNHQyksIHZtKCku
aGVhcC5hZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSk7CisgICAgICAgIG1faml0LnN0b3JlNjQoVHJ1
c3RlZEltbTY0KERvZXNHQ0NoZWNrOjplbmNvZGUoZXhwZWN0RG9lc0dDLCBub2RlLT5pbmRleCgp
LCBub2RlLT5vcCgpKSksIHZtKCkuaGVhcC5hZGRyZXNzT2ZEb2VzR0MoKSk7CiAgICAgfQogCiAj
aWYgRU5BQkxFKERGR19SRUdJU1RFUl9BTExPQ0FUSU9OX1ZBTElEQVRJT04pCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAy
NjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcwNCw3ICs3MDQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGlm
ICh2YWxpZGF0ZURGR0RvZXNHQykgewogICAgICAgICAgICAgYm9vbCBleHBlY3REb2VzR0MgPSBk
b2VzR0MobV9ncmFwaCwgbV9ub2RlKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlKG1fb3V0LmNv
bnN0Qm9vbChleHBlY3REb2VzR0MpLCBtX291dC5hYnNvbHV0ZSh2bSgpLmhlYXAuYWRkcmVzc09m
RXhwZWN0RG9lc0dDKCkpKTsKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlKG1fb3V0LmNvbnN0SW50
NjQoRG9lc0dDQ2hlY2s6OmVuY29kZShleHBlY3REb2VzR0MsIG1fbm9kZS0+aW5kZXgoKSwgbV9u
b2RlLT5vcCgpKSksIG1fb3V0LmFic29sdXRlKHZtKCkuaGVhcC5hZGRyZXNzT2ZEb2VzR0MoKSkp
OwogICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoIChtX25vZGUtPm9wKCkpIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHJl
dmlzaW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENv
bXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDExICsyMTEsMTEgQEAgc3RhdGljIHZv
aWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25lZAogICAgICAgICAvLyBjb2RlIHJ1bm5pbmcg
dGhhdCBleHBlY3RzIG5vIEdDLiBXZSBuZWVkIHRvIHNldCB0aGlzIGJlZm9yZSBvYmplY3QKICAg
ICAgICAgLy8gbWF0ZXJpYWxpemF0aW9uIGJlbG93LgogCi0gICAgICAgIC8vIEV2ZW4gdGhvdWdo
IHdlIHNldCBIZWFwOjptX2V4cGVjdERvZXNHQyBpbiBjb21waWxlRlRMT1NSRXhpdCgpLCB3ZSBh
bHNvIG5lZWQKKyAgICAgICAgLy8gRXZlbiB0aG91Z2ggd2Ugc2V0IEhlYXA6Om1fZG9lc0dDIGlu
IGNvbXBpbGVGVExPU1JFeGl0KCksIHdlIGFsc28gbmVlZAogICAgICAgICAvLyB0byBzZXQgaXQg
aGVyZSBiZWNhdXNlIGNvbXBpbGVGVExPU1JFeGl0KCkgaXMgb25seSBjYWxsZWQgb24gdGhlIGZp
cnN0IHRpbWUKICAgICAgICAgLy8gd2UgZXhpdCBmcm9tIHRoaXMgc2l0ZSwgYnV0IGFsbCBzdWJz
ZXF1ZW50IGV4aXRzIHdpbGwgdGFrZSB0aGlzIGNvbXBpbGVkCiAgICAgICAgIC8vIHJhbXAgd2l0
aG91dCBjYWxsaW5nIGNvbXBpbGVGVExPU1JFeGl0KCkgZmlyc3QuCi0gICAgICAgIGppdC5zdG9y
ZTgoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodHJ1ZSksIHZtLmhlYXAuYWRkcmVzc09mRXhw
ZWN0RG9lc0dDKCkpOworICAgICAgICBqaXQuc3RvcmU2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW02NChEb2VzR0NDaGVjazo6ZW5jb2RlKHRydWUsIERvZXNHQ0NoZWNrOjpTcGVjaWFsOjpGVExP
U1JFeGl0KSksIHZtLmhlYXAuYWRkcmVzc09mRG9lc0dDKCkpOwogICAgIH0KIAogICAgIC8vIEJy
aW5nIHRoZSBzdGFjayBiYWNrIGludG8gYSBzYW5lIGZvcm0gYW5kIGFzc2VydCB0aGF0IGl0J3Mg
c2FuZS4KQEAgLTU0OCw3ICs1NDgsNyBAQCBleHRlcm4gIkMiIEpJVF9PUEVSQVRJT04gdm9pZCog
b3BlcmF0aW9uCiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKSB7CiAgICAgICAgIC8vIFdlJ3Jl
IGFib3V0IHRvIGV4aXQgb3B0aW1pemVkIGNvZGUuIFNvLCB0aGVyZSdzIG5vIGxvbmdlciBhbnkg
b3B0aW1pemVkCiAgICAgICAgIC8vIGNvZGUgcnVubmluZyB0aGF0IGV4cGVjdHMgbm8gR0MuCi0g
ICAgICAgIHZtLmhlYXAuc2V0RXhwZWN0RG9lc0dDKHRydWUpOworICAgICAgICB2bS5oZWFwLnNl
dERvZXNHQ0V4cGVjdGF0aW9uKHRydWUsIERvZXNHQ0NoZWNrOjpTcGVjaWFsOjpGVExPU1JFeGl0
KTsKICAgICB9CiAKICAgICBpZiAodm0uY2FsbEZyYW1lRm9yQ2F0Y2gpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAkocmV2aXNpb24g
MjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCogQ29tcGxldGVTdWJz
cGFjZTo6YWxsb2NhdGVTbG93KFZNJgogdm9pZCogQ29tcGxldGVTdWJzcGFjZTo6dHJ5QWxsb2Nh
dGVTbG93KFZNJiB2bSwgc2l6ZV90IHNpemUsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENv
bnRleHQpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FT
U0VSVCh2bS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdm0uaGVhcC52ZXJpZnlDYW5H
QygpOwogCiAgICAgc2FuaXRpemVTdGFja0ZvclZNKHZtKTsKICAgICAKQEAgLTE1Niw3ICsxNTYs
NyBAQCB2b2lkKiBDb21wbGV0ZVN1YnNwYWNlOjp0cnlBbGxvY2F0ZVNsb3coCiB2b2lkKiBDb21w
bGV0ZVN1YnNwYWNlOjpyZWFsbG9jYXRlUHJlY2lzZUFsbG9jYXRpb25Ob25WaXJ0dWFsKFZNJiB2
bSwgSGVhcENlbGwqIG9sZENlbGwsIHNpemVfdCBzaXplLCBHQ0RlZmVycmFsQ29udGV4dCogZGVm
ZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCiB7CiAgICAg
aWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bS5oZWFwLmV4
cGVjdERvZXNHQygpKTsKKyAgICAgICAgdm0uaGVhcC52ZXJpZnlDYW5HQygpOwogCiAgICAgLy8g
VGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQgaW4gQnV0dGVyZmx5IGZvciBleGFtcGxl
LgogICAgIEFTU0VSVChvbGRDZWxsLT5pc1ByZWNpc2VBbGxvY2F0aW9uKCkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZUlubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlSW5saW5l
cy5oCShyZXZpc2lvbiAyNjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21w
bGV0ZVN1YnNwYWNlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNyArMzMsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIEFMV0FZU19JTkxJTkUgdm9pZCogQ29tcGxldGVTdWJzcGFjZTo6YWxs
b2NhdGVOb25WaXJ0dWFsKFZNJiB2bSwgc2l6ZV90IHNpemUsIEdDRGVmZXJyYWxDb250ZXh0KiBk
ZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBmYWlsdXJlTW9kZSkKIHsKICAg
ICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtLmhlYXAu
ZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAKICAgICBp
ZiAoQWxsb2NhdG9yIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwgQWxs
b2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpKQogICAgICAgICByZXR1cm4gYWxsb2Nh
dG9yLmFsbG9jYXRlKHZtLmhlYXAsIGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0MuaAkocmV2aXNpb24gMjYyNDY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgfkRlZmVyR0MoKQogICAgIHsKICAgICAgICAgaWYg
KHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9oZWFwLmV4
cGVjdERvZXNHQygpKTsKKyAgICAgICAgICAgIG1faGVhcC52ZXJpZnlDYW5HQygpOwogICAgICAg
ICBtX2hlYXAuZGVjcmVtZW50RGVmZXJyYWxEZXB0aEFuZEdDSWZOZWVkZWQoKTsKICAgICB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDRGVmZXJyYWxDb250ZXh0SW5saW5l
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDRGVmZXJyYWxD
b250ZXh0SW5saW5lcy5oCShyZXZpc2lvbiAyNjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9HQ0RlZmVycmFsQ29udGV4dElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4
LDcgKzM4LDcgQEAgQUxXQVlTX0lOTElORSBHQ0RlZmVycmFsQ29udGV4dDo6R0NEZWZlcgogQUxX
QVlTX0lOTElORSBHQ0RlZmVycmFsQ29udGV4dDo6fkdDRGVmZXJyYWxDb250ZXh0KCkKIHsKICAg
ICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faGVhcC5l
eHBlY3REb2VzR0MoKSk7CisgICAgICAgIG1faGVhcC52ZXJpZnlDYW5HQygpOwogCiAgICAgaWYg
KFVOTElLRUxZKG1fc2hvdWxkR0MpKQogICAgICAgICBtX2hlYXAuY29sbGVjdElmTmVjZXNzYXJ5
T3JEZWZlcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9u
IDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAw
NyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xMDY0LDcg
KzEwNjQsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3luY2hyb25vdXNuZXNzIHN5bmNoCiB2b2lk
IEhlYXA6OmNvbGxlY3ROb3coU3luY2hyb25vdXNuZXNzIHN5bmNocm9ub3VzbmVzcywgR0NSZXF1
ZXN0IHJlcXVlc3QpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxF
QVNFX0FTU0VSVChleHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZlcmlmeUNhbkdDKCk7CiAKICAg
ICBzd2l0Y2ggKHN5bmNocm9ub3VzbmVzcykgewogICAgIGNhc2UgQXN5bmM6IHsKQEAgLTEwOTcs
NyArMTA5Nyw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdE5vdyhTeW5jaHJvbm91c25lc3Mgc3kKIHZv
aWQgSGVhcDo6Y29sbGVjdEFzeW5jKEdDUmVxdWVzdCByZXF1ZXN0KQogewogICAgIGlmICh2YWxp
ZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhwZWN0RG9lc0dDKCkpOwor
ICAgICAgICB2ZXJpZnlDYW5HQygpOwogCiAgICAgaWYgKCFtX2lzU2FmZVRvQ29sbGVjdCkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTEyMSw3ICsxMTIxLDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0QXN5
bmMoR0NSZXF1ZXN0IHJlcXVlcwogdm9pZCBIZWFwOjpjb2xsZWN0U3luYyhHQ1JlcXVlc3QgcmVx
dWVzdCkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNT
RVJUKGV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdmVyaWZ5Q2FuR0MoKTsKIAogICAgIGlmICgh
bV9pc1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJldHVybjsKQEAgLTE3ODQsNyArMTc4NCw3IEBA
IE5FVkVSX0lOTElORSB2b2lkIEhlYXA6OnJlc3VtZVRoZU11dGF0b3IKIHZvaWQgSGVhcDo6c3Rv
cElmTmVjZXNzYXJ5U2xvdygpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChleHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZlcmlmeUNhbkdDKCk7
CiAKICAgICB3aGlsZSAoc3RvcElmTmVjZXNzYXJ5U2xvdyhtX3dvcmxkU3RhdGUubG9hZCgpKSkg
eyB9CiAgICAgCkBAIC0xNzk5LDcgKzE3OTksNyBAQCB2b2lkIEhlYXA6OnN0b3BJZk5lY2Vzc2Fy
eVNsb3coKQogYm9vbCBIZWFwOjpzdG9wSWZOZWNlc3NhcnlTbG93KHVuc2lnbmVkIG9sZFN0YXRl
KQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
ZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2ZXJpZnlDYW5HQygpOwogCiAgICAgUkVMRUFTRV9B
U1NFUlQob2xkU3RhdGUgJiBoYXNBY2Nlc3NCaXQpOwogICAgIFJFTEVBU0VfQVNTRVJUKCEob2xk
U3RhdGUgJiBzdG9wcGVkQml0KSk7CkBAIC0yNjAxLDcgKzI2MDEsNyBAQCB2b2lkIEhlYXA6OmNv
bGxlY3RJZk5lY2Vzc2FyeU9yRGVmZXIoR0NECiB7CiAgICAgQVNTRVJUKGRlZmVycmFsQ29udGV4
dCB8fCBpc0RlZmVycmVkKCkgfHwgIURpc2FsbG93R0M6OmlzSW5FZmZlY3RPbkN1cnJlbnRUaHJl
YWQoKSk7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VS
VChleHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZlcmlmeUNhbkdDKCk7CiAKICAgICBpZiAoIW1f
aXNTYWZlVG9Db2xsZWN0KQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCShyZXZpc2lvbiAyNjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdo
dCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJp
Z2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChD
KSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdo
dCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJDZWxsU3RhdGUuaCIKICNp
bmNsdWRlICJDb2xsZWN0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJDb2xsZWN0b3JQaGFzZS5oIgor
I2luY2x1ZGUgIkRGR0RvZXNHQ0NoZWNrLmgiCiAjaW5jbHVkZSAiRGVsZXRlQWxsQ29kZUVmZm9y
dC5oIgogI2luY2x1ZGUgIkdDQ29uZHVjdG9yLmgiCiAjaW5jbHVkZSAiR0NJbmNvbWluZ1JlZkNv
dW50ZWRTZXQuaCIKQEAgLTMwMywxMyArMzA0LDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCB1bnNp
Z25lZCogYWRkcmVzc09mQmFycmllclRocmVzaG9sZCgpIGNvbnN0IHsgcmV0dXJuICZtX2JhcnJp
ZXJUaHJlc2hvbGQ7IH0KIAogI2lmIEVOQUJMRShERkdfRE9FU19HQ19WQUxJREFUSU9OKQotICAg
IGJvb2wgZXhwZWN0RG9lc0dDKCkgY29uc3QgeyByZXR1cm4gbV9leHBlY3REb2VzR0M7IH0KLSAg
ICB2b2lkIHNldEV4cGVjdERvZXNHQyhib29sIHZhbHVlKSB7IG1fZXhwZWN0RG9lc0dDID0gdmFs
dWU7IH0KLSAgICBib29sKiBhZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSB7IHJldHVybiAmbV9leHBl
Y3REb2VzR0M7IH0KKyAgICBEb2VzR0NDaGVjayogYWRkcmVzc09mRG9lc0dDKCkgeyByZXR1cm4g
Jm1fZG9lc0dDOyB9CisgICAgdm9pZCBzZXREb2VzR0NFeHBlY3RhdGlvbihib29sIGV4cGVjdERv
ZXNHQywgdW5zaWduZWQgbm9kZUluZGV4LCB1bnNpZ25lZCBub2RlT3ApIHsgbV9kb2VzR0Muc2V0
KGV4cGVjdERvZXNHQywgbm9kZUluZGV4LCBub2RlT3ApOyB9CisgICAgdm9pZCBzZXREb2VzR0NF
eHBlY3RhdGlvbihib29sIGV4cGVjdERvZXNHQywgRG9lc0dDQ2hlY2s6OlNwZWNpYWwgc3BlY2lh
bCkgeyBtX2RvZXNHQy5zZXQoZXhwZWN0RG9lc0dDLCBzcGVjaWFsKTsgfQorICAgIHZvaWQgdmVy
aWZ5Q2FuR0MoKSB7IG1fZG9lc0dDLnZlcmlmeUNhbkdDKHZtKCkpOyB9CiAjZWxzZQotICAgIGJv
b2wgZXhwZWN0RG9lc0dDKCkgY29uc3QgeyBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsgcmV0
dXJuIHRydWU7IH0KLSAgICB2b2lkIHNldEV4cGVjdERvZXNHQyhib29sKSB7IFVOUkVBQ0hBQkxF
X0ZPUl9QTEFURk9STSgpOyB9Ci0gICAgYm9vbCogYWRkcmVzc09mRXhwZWN0RG9lc0dDKCkgeyBV
TlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBEb2VzR0ND
aGVjayogYWRkcmVzc09mRG9lc0dDKCkgeyBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsgcmV0
dXJuIG51bGxwdHI7IH0KKyAgICB2b2lkIHNldERvZXNHQ0V4cGVjdGF0aW9uKGJvb2wsIHVuc2ln
bmVkLCB1bnNpZ25lZCkgeyB9CisgICAgdm9pZCBzZXREb2VzR0NFeHBlY3RhdGlvbihib29sLCBE
b2VzR0NDaGVjazo6U3BlY2lhbCkgeyB9CisgICAgdm9pZCB2ZXJpZnlDYW5HQygpIHsgfQogI2Vu
ZGlmCiAKICAgICAvLyBJZiB0cnVlLCB0aGUgR0MgYmVsaWV2ZXMgdGhhdCB0aGUgbXV0YXRvciBp
cyBjdXJyZW50bHkgbWVzc2luZyB3aXRoIHRoZSBoZWFwLiBXZSBjYWxsIHRoaXMKQEAgLTYwNiw3
ICs2MDksNyBAQCBwcml2YXRlOgogICAgIE1hcmthYmxlPENvbGxlY3Rpb25TY29wZSwgRW51bU1h
cmthYmxlVHJhaXRzPENvbGxlY3Rpb25TY29wZT4+IG1fbGFzdENvbGxlY3Rpb25TY29wZTsKICAg
ICBMb2NrIG1fcmFjZU1hcmtTdGFja0xvY2s7CiAjaWYgRU5BQkxFKERGR19ET0VTX0dDX1ZBTElE
QVRJT04pCi0gICAgYm9vbCBtX2V4cGVjdERvZXNHQyB7IHRydWUgfTsKKyAgICBEb2VzR0NDaGVj
ayBtX2RvZXNHQzsKICNlbmRpZgogCiAgICAgU3RydWN0dXJlSURUYWJsZSBtX3N0cnVjdHVyZUlE
VGFibGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJKHJl
dmlzaW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw3ICsyMzYsNyBAQCBpbmxpbmUgdm9pZCBIZWFwOjpk
ZXByZWNhdGVkUmVwb3J0RXh0cmFNCiBpbmxpbmUgdm9pZCBIZWFwOjphY3F1aXJlQWNjZXNzKCkK
IHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4
cGVjdERvZXNHQygpKTsKKyAgICAgICAgdmVyaWZ5Q2FuR0MoKTsKIAogICAgIGlmIChtX3dvcmxk
U3RhdGUuY29tcGFyZUV4Y2hhbmdlV2VhaygwLCBoYXNBY2Nlc3NCaXQpKQogICAgICAgICByZXR1
cm47CkBAIC0yNjMsNyArMjYzLDcgQEAgaW5saW5lIGJvb2wgSGVhcDo6bWF5TmVlZFRvU3RvcCgp
CiBpbmxpbmUgdm9pZCBIZWFwOjpzdG9wSWZOZWNlc3NhcnkoKQogewogICAgIGlmICh2YWxpZGF0
ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhwZWN0RG9lc0dDKCkpOworICAg
ICAgICB2ZXJpZnlDYW5HQygpOwogCiAgICAgaWYgKG1heU5lZWRUb1N0b3AoKSkKICAgICAgICAg
c3RvcElmTmVjZXNzYXJ5U2xvdygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogQUxXQVlTX0lOTElORSB2
b2lkKiBMb2NhbEFsbG9jYXRvcjo6YWxsb2NhdGUoSGVhcCYgaGVhcCwgR0NEZWZlcnJhbENvbnRl
eHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQog
ewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaGVh
cC5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIGhlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICByZXR1
cm4gbV9mcmVlTGlzdC5hbGxvY2F0ZSgKICAgICAgICAgWyZdICgpIC0+IEhlYXBDZWxsKiB7CiAg
ICAgICAgICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0oaGVhcC52bSgpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHAJKHJldmlzaW9u
IDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
aXNBbGlnbmVkRm9yUHJlY2lzZUFsCiBQcmVjaXNlQWxsb2NhdGlvbiogUHJlY2lzZUFsbG9jYXRp
b246OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBzaXplX3Qgc2l6ZSwgU3Vic3BhY2UqIHN1YnNwYWNl
LCB1bnNpZ25lZCBpbmRleEluU3BhY2UpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQot
ICAgICAgICBSRUxFQVNFX0FTU0VSVChoZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgaGVh
cC52ZXJpZnlDYW5HQygpOwogCiAgICAgc2l6ZV90IGFkanVzdGVkQWxpZ25tZW50QWxsb2NhdGlv
blNpemUgPSBoZWFkZXJTaXplKCkgKyBzaXplICsgaGFsZkFsaWdubWVudDsKICAgICBzdGF0aWNf
YXNzZXJ0KGhhbGZBbGlnbm1lbnQgPT0gOCwgIldlIGFzc3VtZSB0aGF0IG1lbW9yeSByZXR1cm5l
ZCBieSBtYWxsb2MgaGFzIGFsaWdubWVudCA+PSA4LiIpOwpAQCAtMTIzLDcgKzEyMyw3IEBAIFBy
ZWNpc2VBbGxvY2F0aW9uKiBQcmVjaXNlQWxsb2NhdGlvbjo6dHIKIFByZWNpc2VBbGxvY2F0aW9u
KiBQcmVjaXNlQWxsb2NhdGlvbjo6Y3JlYXRlRm9yTG93ZXJUaWVyKEhlYXAmIGhlYXAsIHNpemVf
dCBzaXplLCBTdWJzcGFjZSogc3Vic3BhY2UsIHVpbnQ4X3QgbG93ZXJUaWVySW5kZXgpCiB7CiAg
ICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChoZWFwLmV4
cGVjdERvZXNHQygpKTsKKyAgICAgICAgaGVhcC52ZXJpZnlDYW5HQygpOwogCiAgICAgc2l6ZV90
IGFkanVzdGVkQWxpZ25tZW50QWxsb2NhdGlvblNpemUgPSBoZWFkZXJTaXplKCkgKyBzaXplICsg
aGFsZkFsaWdubWVudDsKICAgICBzdGF0aWNfYXNzZXJ0KGhhbGZBbGlnbm1lbnQgPT0gOCwgIldl
IGFzc3VtZSB0aGF0IG1lbW9yeSByZXR1cm5lZCBieSBtYWxsb2MgaGFzIGFsaWdubWVudCA+PSA4
LiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZp
c2lvbiAyNjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC03MzMsNyArNzMzLDcgQEAgaW5saW5lIEpTU3RyaW5nKiBqc0Vt
cHR5U3RyaW5nKFZNJiB2bSkKIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFj
dGVyU3RyaW5nKFZNJiB2bSwgVUNoYXIgYykKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0Mp
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAg
ICB2bS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVy
U3RyaW5nKQogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0
cmluZyhjKTsKICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSh2bSwgU3RyaW5nSW1wbDo6Y3Jl
YXRlKCZjLCAxKSk7CkBAIC03NjMsNyArNzYzLDcgQEAgQUxXQVlTX0lOTElORSBJZGVudGlmaWVy
IEpTU3RyaW5nOjp0b0lkZQogQUxXQVlTX0lOTElORSBBdG9tU3RyaW5nIEpTU3RyaW5nOjp0b0F0
b21TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAgICBpZiAo
dmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtKCkuaGVhcC5leHBl
Y3REb2VzR0MoKSk7CisgICAgICAgIHZtKCkuaGVhcC52ZXJpZnlDYW5HQygpOwogICAgIGlmIChp
c1JvcGUoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTUm9wZVN0cmluZyo+
KHRoaXMpLT5yZXNvbHZlUm9wZVRvQXRvbVN0cmluZyhnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBBdG9tU3RyaW5nKHZhbHVlSW50ZXJuYWwoKSk7CkBAIC03NzIsNyArNzcyLDcgQEAgQUxXQVlT
X0lOTElORSBBdG9tU3RyaW5nIEpTU3RyaW5nOjp0b0F0bwogQUxXQVlTX0lOTElORSBSZWZQdHI8
QXRvbVN0cmluZ0ltcGw+IEpTU3RyaW5nOjp0b0V4aXN0aW5nQXRvbVN0cmluZyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAg
ICAgdm0oKS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYgKGlzUm9wZSgpKQogICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4odGhpcyktPnJlc29sdmVSb3Bl
VG9FeGlzdGluZ0F0b21TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAodmFsdWVJbnRlcm5h
bCgpLmltcGwoKS0+aXNBdG9tKCkpCkBAIC03ODMsNyArNzgzLDcgQEAgQUxXQVlTX0lOTElORSBS
ZWZQdHI8QXRvbVN0cmluZ0ltcGw+IEpTUwogaW5saW5lIGNvbnN0IFN0cmluZyYgSlNTdHJpbmc6
OnZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKHZh
bGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhwZWN0
RG9lc0dDKCkpOworICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAoaXNS
b3BlKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0
aGlzKS0+cmVzb2x2ZVJvcGUoZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gdmFsdWVJbnRlcm5h
bCgpOwpAQCAtNzkzLDcgKzc5Myw3IEBAIGlubGluZSBjb25zdCBTdHJpbmcmIEpTU3RyaW5nOjp0
cnlHZXRWYWwKIHsKICAgICBpZiAoYWxsb2NhdGlvbkFsbG93ZWQpIHsKICAgICAgICAgaWYgKHZh
bGlkYXRlREZHRG9lc0dDKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS5oZWFwLmV4
cGVjdERvZXNHQygpKTsKKyAgICAgICAgICAgIHZtKCkuaGVhcC52ZXJpZnlDYW5HQygpOwogICAg
ICAgICBpZiAoaXNSb3BlKCkpIHsKICAgICAgICAgICAgIC8vIFBhc3MgbnVsbHB0ciBmb3IgdGhl
IEpTR2xvYmFsT2JqZWN0IHNvIHRoYXQgcmVzb2x2ZVJvcGUgZG9lcyBub3QgdGhyb3cgaW4gdGhl
IGV2ZW50IG9mIGFuIE9PTSBlcnJvci4KICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGUobnVsbHB0cik7CkBAIC05ODMs
NyArOTgzLDcgQEAgaW5saW5lIGJvb2wgaXNKU1N0cmluZyhKU1ZhbHVlIHYpCiBBTFdBWVNfSU5M
SU5FIFN0cmluZ1ZpZXcgSlNSb3BlU3RyaW5nOjp1bnNhZmVWaWV3KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAg
ICBSRUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bSgp
LmhlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAoaXNTdWJzdHJpbmcoKSkgewogICAgICAgICBh
dXRvJiBiYXNlID0gc3Vic3RyaW5nQmFzZSgpLT52YWx1ZUludGVybmFsKCk7CiAgICAgICAgIGlm
IChiYXNlLmlzOEJpdCgpKQpAQCAtOTk2LDcgKzk5Niw3IEBAIEFMV0FZU19JTkxJTkUgU3RyaW5n
VmlldyBKU1JvcGVTdHJpbmc6OnUKIEFMV0FZU19JTkxJTkUgU3RyaW5nVmlld1dpdGhVbmRlcmx5
aW5nU3RyaW5nIEpTUm9wZVN0cmluZzo6dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dD
KQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAg
ICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAoaXNTdWJzdHJpbmcoKSkgewog
ICAgICAgICBhdXRvJiBiYXNlID0gc3Vic3RyaW5nQmFzZSgpLT52YWx1ZUludGVybmFsKCk7CiAg
ICAgICAgIGlmIChiYXNlLmlzOEJpdCgpKQpAQCAtMTAxMCw3ICsxMDEwLDcgQEAgQUxXQVlTX0lO
TElORSBTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdAogQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3
IEpTU3RyaW5nOjp1bnNhZmVWaWV3KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0
CiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2
bSgpLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0Mo
KTsKICAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBK
U1JvcGVTdHJpbmcqPih0aGlzKS0+dW5zYWZlVmlldyhnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biB2YWx1ZUludGVybmFsKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBNYXRjaGVzQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkocmV2aXNpb24gMjYyNDY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDcgKzY0LDcgQEAgQUxXQVlTX0lOTElORSBKU0FycmF5KiBjcmVhdGVSZWdFeHBN
YXRjaAogICAgIFJlZ0V4cCogcmVnRXhwLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgTWF0Y2hSZXN1
bHQmIHJlc3VsdCkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKHZtLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bS5oZWFwLnZlcmlm
eUNhbkdDKCk7CiAKICAgICBWZWN0b3I8aW50LCAzMj4gc3VicGF0dGVyblJlc3VsdHM7CiAgICAg
aW50IHBvc2l0aW9uID0gcmVnRXhwLT5tYXRjaElubGluZShnbG9iYWxPYmplY3QsIHZtLCBpbnB1
dFZhbHVlLCBzdGFydE9mZnNldCwgc3VicGF0dGVyblJlc3VsdHMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400881</attachid>
            <date>2020-06-02 19:27:50 -0700</date>
            <delta_ts>2020-06-02 19:30:15 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-212680.patch</filename>
            <type>text/plain</type>
            <size>42635</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyNDcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NSBA
QAorMjAyMC0wNi0wMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW5oYW5jZSBEb2VzR0MgdmVyaWZpY2F0aW9uIHRvIHByaW50IG1vcmUgdXNlZnVsIGluZm8gd2hl
biB2ZXJpZmljYXRpb24gZmFpbHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTI2ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXaGVuIERvZXNHQyB2ZXJpZmljYXRpb24gZmFpbHMsIHRoZSBmaXJzdCBz
dGVwIG9mIGRlYnVnZ2luZyBpdCB3b3VsZCBiZSB0byBmaW5kCisgICAgICAgIG91dCB3aGF0IGFu
ZCB3aGljaCBERkcgbm9kZSByZXN1bHRlZCBpbiB0aGUgZmFpbGVkIHZlcmlmaWNhdGlvbi4gIElu
IHByZS1leGlzdGluZworICAgICAgICBjb2RlLCBhbGwgd2UgZ2V0IGlzIGFuIGFzc2VydGlvbiBm
YWlsdXJlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhhdCB0aGUgdmVyaWZp
ZXIgd2lsbCBkdW1wIHVzZWZ1bCBpbmZvLiAgSGVyZSdzIGFuIGV4YW1wbGU6CisKKyAgICAgICAg
ICAgIEVycm9yOiBEb2VzR0MgZmFpbGVkIEAgREAzNCBEYXRlR2V0SW50MzJPck5hTiBpbiAjRHRD
SE16OlsweDExMzViZDFkMC0+MHgxMTM1YmNhYjAtPjB4MTEzNWU1YzgwLCBERkdGdW5jdGlvbkNh
bGwsIDE1MCAoRGlkVHJ5VG9FbnRlckluTG9vcCldCisgICAgICAgICAgICAgICAgWzBdIGZyYW1l
IDB4N2ZmZWU4Mjg1NjYwIHsKKyAgICAgICAgICAgICAgICAgIG5hbWU6IAorICAgICAgICAgICAg
ICAgICAgc291cmNlVVJMOiAKKyAgICAgICAgICAgICAgICAgIGlzSW5saW5lZEZyYW1lOiBmYWxz
ZQorICAgICAgICAgICAgICAgICAgY2FsbGVlOiAweDExMzVmNjgyMAorICAgICAgICAgICAgICAg
ICAgcmV0dXJuUEM6IDB4NTBjZTYxMjQ4YWU2CisgICAgICAgICAgICAgICAgICBjYWxsZXJGcmFt
ZTogMHg3ZmZlZTgyODU2ZjAKKyAgICAgICAgICAgICAgICAgIHJhd0xvY2F0aW9uQml0czogNSAw
eDUKKyAgICAgICAgICAgICAgICAgIGNvZGVCbG9jazogMHgxMTM1YmQxZDAgI0R0Q0hNejpbMHgx
MTM1YmQxZDAtPjB4MTEzNWJjYWIwLT4weDExMzVlNWM4MCwgREZHRnVuY3Rpb25DYWxsLCAxNTAg
KERpZFRyeVRvRW50ZXJJbkxvb3ApXQorICAgICAgICAgICAgICAgICAgICBoYXNDb2RlT3JpZ2lu
czogdHJ1ZQorICAgICAgICAgICAgICAgICAgICBjYWxsU2l0ZUluZGV4OiA1IG9mIDEzCisgICAg
ICAgICAgICAgICAgICAgIGppdENvZGU6IDB4MTEzMDIwMjAwIHN0YXJ0IDB4NTBjZTYxMjE0YzYw
IGVuZCAweDUwY2U2MTIxOWIwMAorICAgICAgICAgICAgICAgICAgICBsaW5lOiAxCisgICAgICAg
ICAgICAgICAgICAgIGNvbHVtbjogNjAKKyAgICAgICAgICAgICAgICAgIEVudHJ5RnJhbWU6IDB4
N2ZmZWU4Mjg1ODYwCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFsxXSBmcmFt
ZSAweDdmZmVlODI4NTZmMCB7CisgICAgICAgICAgICAgICAgICBuYW1lOiAKKyAgICAgICAgICAg
ICAgICAgIHNvdXJjZVVSTDogZGF0ZS1mb3JtYXQteHBhcmIuanMKKyAgICAgICAgICAgICAgICAg
IGlzSW5saW5lZEZyYW1lOiBmYWxzZQorICAgICAgICAgICAgICAgICAgY2FsbGVlOiAweDExMzVm
NjVhMAorICAgICAgICAgICAgICAgICAgcmV0dXJuUEM6IDB4NTBjZTYxMjI3ZTk5CisgICAgICAg
ICAgICAgICAgICBjYWxsZXJGcmFtZTogMHg3ZmZlZTgyODU3NzAKKyAgICAgICAgICAgICAgICAg
IHJhd0xvY2F0aW9uQml0czogNCAweDQKKyAgICAgICAgICAgICAgICAgIGNvZGVCbG9jazogMHgx
MTM1YmQwYTAgI0JVNlpjZDpbMHgxMTM1YmQwYTAtPjB4MTEzNWJjMjYwLT4weDExMzVlNTE4MCwg
REZHRnVuY3Rpb25DYWxsLCAxMTIgKERpZFRyeVRvRW50ZXJJbkxvb3ApXQorICAgICAgICAgICAg
ICAgICAgICBoYXNDb2RlT3JpZ2luczogdHJ1ZQorICAgICAgICAgICAgICAgICAgICBjYWxsU2l0
ZUluZGV4OiA0IG9mIDEyCisgICAgICAgICAgICAgICAgICAgIGppdENvZGU6IDB4MTEzMDA0MDAw
IHN0YXJ0IDB4NTBjZTYxMjEyYzYwIGVuZCAweDUwY2U2MTIxNDk2MAorICAgICAgICAgICAgICAg
ICAgICBsaW5lOiAyNgorICAgICAgICAgICAgICAgICAgICBjb2x1bW46IDIyCisgICAgICAgICAg
ICAgICAgICBFbnRyeUZyYW1lOiAweDdmZmVlODI4NTg2MAorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBbMl0gZnJhbWUgMHg3ZmZlZTgyODU3NzAgeworICAgICAgICAgICAgICAg
ICAgbmFtZTogCisgICAgICAgICAgICAgICAgICBzb3VyY2VVUkw6IGRhdGUtZm9ybWF0LXhwYXJi
LmpzCisgICAgICAgICAgICAgICAgICBpc0lubGluZWRGcmFtZTogZmFsc2UKKyAgICAgICAgICAg
ICAgICAgIGNhbGxlZTogMHgxMTM1ZjY0ZTAKKyAgICAgICAgICAgICAgICAgIHJldHVyblBDOiAw
eDEwODA1OGViMQorICAgICAgICAgICAgICAgICAgY2FsbGVyRnJhbWU6IDB4N2ZmZWU4Mjg1N2Uw
CisgICAgICAgICAgICAgICAgICByYXdMb2NhdGlvbkJpdHM6IDEwMDEgMHgzZTkKKyAgICAgICAg
ICAgICAgICAgIGNvZGVCbG9jazogMHgxMTM1YmMxMzAgI0RBUzl4ZTpbMHgxMTM1YmMxMzAtPjB4
MTEzNWU1MTAwLCBCYXNlbGluZUZ1bmN0aW9uQ2FsbCwgMTE0OV0KKyAgICAgICAgICAgICAgICAg
ICAgYmMjMTAwMSBvZiAxMTQ5CisgICAgICAgICAgICAgICAgICAgIGxpbmU6IDQxNworICAgICAg
ICAgICAgICAgICAgICBjb2x1bW46IDM4CisgICAgICAgICAgICAgICAgICBFbnRyeUZyYW1lOiAw
eDdmZmVlODI4NTg2MAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBbM10gZnJh
bWUgMHg3ZmZlZTgyODU3ZTAgeworICAgICAgICAgICAgICAgICAgbmFtZTogZ2xvYmFsIGNvZGUK
KyAgICAgICAgICAgICAgICAgIHNvdXJjZVVSTDogZGF0ZS1mb3JtYXQteHBhcmIuanMKKyAgICAg
ICAgICAgICAgICAgIGlzSW5saW5lZEZyYW1lOiBmYWxzZQorICAgICAgICAgICAgICAgICAgY2Fs
bGVlOiAweDExMzBmOTdiOAorICAgICAgICAgICAgICAgICAgcmV0dXJuUEM6IDB4MTA4MDM5MDQz
CisgICAgICAgICAgICAgICAgICBjYWxsZXJGcmFtZTogMHgwCisgICAgICAgICAgICAgICAgICBy
YXdMb2NhdGlvbkJpdHM6IDIzIDB4MTcKKyAgICAgICAgICAgICAgICAgIGNvZGVCbG9jazogMHgx
MTM1YmMwMDAgPGdsb2JhbD4jQ3VrWHZ0OlsweDExMzViYzAwMC0+MHgxMTMwY2Q3NjgsIExMSW50
R2xvYmFsLCA4MV0KKyAgICAgICAgICAgICAgICAgICAgYmMjMjMgb2YgODEKKyAgICAgICAgICAg
ICAgICAgICAgbGluZTogNDI1CisgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogMworICAgICAg
ICAgICAgICAgICAgRW50cnlGcmFtZTogMHg3ZmZlZTgyODU4NjAKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IGV4cGVjdERvZXNHQygpCisKKyAgICAg
ICAgVGhlIGVycm9yIG1lc3NhZ2Ugbm93IGNvbWVzIHdpdGggdGhlIG5vZGUgaW5kZXgsIE5vZGVU
eXBlLCBjb2RlQmxvY2sgd2hpY2ggdGhpcworICAgICAgICBmYWlsdXJlIHdhcyBmb3VuZCBpbiwg
YW5kIHRoZSBKUyBjYWxsIHN0YWNrIHRoYXQgbGVkIHRvIHRoZSBmYWlsdXJlLgorCisgICAgICAg
IENoYW5nZXMgbWFkZToKKworICAgICAgICAxLiBJbnRyb2R1Y2VkIGEgRG9lc0dDQ2hlY2sgdmFs
dWUgdGhhdCBpcyB1c2VkIHRvIGVuY29kZSBzb21lIG9mIHRoZSBhYm92ZSBkYXRhLgorCisgICAg
ICAgICAgIFByZXZpb3VzbHksIHdlIG9ubHkgcmVjb3JkZWQgd2hldGhlciBkb2VzR0MoKSByZXR1
cm5zIHRydWUgb3IgZmFsc2UgZm9yIHRoZQorICAgICAgICAgICBOb2RlLiAgTm93LCB3ZSByZWNv
cmQgdGhlIG5vZGVJbmRleCBhbmQgbm9kZU9wIGFzIHdlbGwuCisKKyAgICAgICAgICAgTm90ZSB0
aGF0IHdlIGFsc28gc2V0IERvZXNHQyBleHBlY3RhdGlvbnMgZm9yIE9TUiBleGl0cy4gIFNvLCBE
b2VzR0NDaGVjaworICAgICAgICAgICBpbmNsdWRlcyBTcGVjaWFsIGNhc2VzIGZvciB0aG9zZS4K
KworICAgICAgICAyLiBBZGRlZCBzdG9yZTY0KFRydXN0ZWRJbW02NCBpbW0sIGNvbnN0IHZvaWQq
IGFkZHJlc3MpIGVtaXR0ZXJzIGZvciBYODZfNjQgYW5kIEFSTTY0LgorICAgICAgICAgICBBbHNv
IGFkZGVkIGEgdGVzdCBmb3IgdGhpcyBuZXcgZW1pdHRlciBpbiB0ZXN0bWFzbS4KKworICAgICAg
ICAgICBOb3RlOiBmb3IgdGhlIFg4Nl82NCBlbWl0dGVyLCB3ZSBkb24ndCBoYXZlIGVub3VnaCBz
Y3JhdGNoIHJlZ2lzdGVycyB0byBkbyBhCisgICAgICAgICAgIHRydWUgNjQtYml0IHN0b3JlLiAg
U28sIEkgaW1wbGVtZW50ZWQgaXQgd2l0aCAyIDMyLWJpdCBzdG9yZXMgaW5zdGVhZC4gIFNpbmNl
CisgICAgICAgICAgIHRoaXMgaXMgbm90IHVzZWQgaW4gYW55IGhvdCBwYXRocywgdGhpcyBpcyBm
aW5lIGZvciBub3cuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OnN0b3JlNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6c3RvcmU2NCk6CisgICAgICAgICog
YXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6dGVzdFN0b3JlNjRJbW02NEFk
ZHJlc3NQb2ludGVyKToKKyAgICAgICAgKEpTQzo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHRG9l
c0dDQ2hlY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpEb2VzR0NDaGVjazo6dmVy
aWZ5Q2FuR0MpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0NDaGVjay5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6REZHOjpEb2VzR0NDaGVjazo6RG9lc0dDQ2hlY2spOgorICAgICAgICAoSlNDOjpE
Rkc6OkRvZXNHQ0NoZWNrOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNr
OjpzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNrOjpleHBlY3REb2VzR0MpOgor
ICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNrOjpzcGVjaWFsKToKKyAgICAgICAgKEpTQzo6
REZHOjpEb2VzR0NDaGVjazo6bm9kZUluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpEb2VzR0ND
aGVjazo6bm9kZU9wKToKKyAgICAgICAgKEpTQzo6REZHOjpEb2VzR0NDaGVjazo6aXNTcGVjaWFs
KToKKyAgICAgICAgKEpTQzo6REZHOjpEb2VzR0NDaGVjazo6c3BlY2lhbEluZGV4KToKKyAgICAg
ICAgKEpTQzo6REZHOjpEb2VzR0NDaGVjazo6Yml0cyk6CisgICAgICAgICogZGZnL0RGR0dyYXBo
LmNwcDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
b3BlcmF0aW9uQ29tcGlsZU9TUkV4aXQpOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNv
bXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlTm9kZSk6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJh
dGlvbkNvbXBpbGVGVExPU1JFeGl0KToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vic3BhY2Uu
Y3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjp0cnlBbGxvY2F0ZVNsb3cpOgor
ICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjpyZWFsbG9jYXRlUHJlY2lzZUFsbG9jYXRp
b25Ob25WaXJ0dWFsKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OmFsbG9jYXRlTm9uVmlydHVhbCk6Cisg
ICAgICAgICogaGVhcC9EZWZlckdDLmg6CisgICAgICAgIChKU0M6OkRlZmVyR0M6On5EZWZlckdD
KToKKyAgICAgICAgKiBoZWFwL0dDRGVmZXJyYWxDb250ZXh0SW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpHQ0RlZmVycmFsQ29udGV4dDo6fkdDRGVmZXJyYWxDb250ZXh0KToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0Tm93KToKKyAgICAgICAg
KEpTQzo6SGVhcDo6Y29sbGVjdEFzeW5jKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdFN5
bmMpOgorICAgICAgICAoSlNDOjpIZWFwOjpzdG9wSWZOZWNlc3NhcnlTbG93KToKKyAgICAgICAg
KEpTQzo6SGVhcDo6Y29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcik6CisgICAgICAgICogaGVhcC9I
ZWFwLmg6CisgICAgICAgIChKU0M6OkhlYXA6OmFkZHJlc3NPZkRvZXNHQyk6CisgICAgICAgIChK
U0M6OkhlYXA6OnNldERvZXNHQ0V4cGVjdGF0aW9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dmVy
aWZ5Q2FuR0MpOgorICAgICAgICAoSlNDOjpIZWFwOjpleHBlY3REb2VzR0MgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpIZWFwOjpzZXRFeHBlY3REb2VzR0MpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpIZWFwOjphZGRyZXNzT2ZFeHBlY3REb2VzR0MpOiBEZWxldGVkLgorICAgICAg
ICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6YWNxdWlyZUFjY2Vz
cyk6CisgICAgICAgIChKU0M6OkhlYXA6OnN0b3BJZk5lY2Vzc2FyeSk6CisgICAgICAgICogaGVh
cC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6TG9jYWxBbGxvY2F0b3I6
OmFsbG9jYXRlKToKKyAgICAgICAgKiBoZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6UHJlY2lzZUFsbG9jYXRpb246OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OlBy
ZWNpc2VBbGxvY2F0aW9uOjpjcmVhdGVGb3JMb3dlclRpZXIpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6anNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1N0cmluZzo6dG9BdG9tU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SlNTdHJpbmc6OnRvRXhpc3RpbmdBdG9tU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNT
dHJpbmc6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OnRyeUdldFZhbHVl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjp1bnNhZmVWaWV3IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjp2aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcgY29u
c3QpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dW5zYWZlVmlldyBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlUmVn
RXhwTWF0Y2hlc0FycmF5KToKKwogMjAyMC0wNi0wMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgVk1JbnNwZWN0b3IgQVBJcyBzaG91bGQgYmUgdGFraW5nIGEgVk0q
IGluc3RlYWQgb2YgYSBKU0dsb2JhbE9iamVjdCouCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CShyZXZpc2lvbiAyNjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM0Nyw2ICszNDcsNyBAQCBkZmcvREZHRGVzaXJlZFdh
dGNocG9pbnRzLmNwcAogZGZnL0RGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5jcHAKIGRmZy9ERkdE
aXNhc3NlbWJsZXIuY3BwCiBkZmcvREZHRG9lc0dDLmNwcAorZGZnL0RGR0RvZXNHQ0NoZWNrLmNw
cAogZGZnL0RGR0RyaXZlci5jcHAKIGRmZy9ERkdFZGdlLmNwcAogZGZnL0RGR0Vwb2NoLmNwcApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTM2LDYgKzE5MzYsNyBAQAogCQlGRUI1MUY2QzFBOTdC
Njg4MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjUxRjZCMUE5N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNz
MTQxODA5Lm1tICovOyB9OwogCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5k
bGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRUI1OEMxMzE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVDMTYwMzIyMzM5
RTlGOTAwQTA0Q0I4IC8qIENlbGxTaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRUMxNjAzMTIzMzlFOUY5MDBBMDRDQjggLyogQ2VsbFNpemUuaCAq
LzsgfTsKKwkJRkVDM0EzQTEyNDg3MzVDQTAwMzk1QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUMzQTNBMDI0ODcz
NUJDMDAzOTVCNTQgLyogREZHRG9lc0dDQ2hlY2suaCAqLzsgfTsKIAkJRkVDNTc5NzMyMzEwNUI1
MTAwQkNBODNGIC8qIFZNSW5zcGVjdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDNTc5NzIyMzEwNUI0ODAwQkNBODNGIC8qIFZNSW5z
cGVjdG9ySW5saW5lcy5oICovOyB9OwogCQlGRUM1Nzk3NjIzMTA1RjRFMDBCQ0E4M0YgLyogSW50
ZWdyaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RUM1Nzk3NTIzMTA1RjQzMDBCQ0E4M0YgLyogSW50ZWdyaXR5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVDNTc5NzgyMzEwOTU0QzAwQkNBODNG
IC8qIEludGVncml0eUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFQzU3OTc3MjMxMDk1NEIwMEJDQTgzRiAvKiBJbnRlZ3JpdHlJbmxpbmVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUy
MzIsNiArNTIzMyw4IEBACiAJCUZFQjU4QzEyMTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRs
aW5nU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXJyb3JI
YW5kbGluZ1Njb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVCNThDMTMx
ODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBFcnJvckhhbmRsaW5nU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkVDMTYwMzEyMzM5RTlGOTAwQTA0Q0I4IC8qIENlbGxTaXplLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENlbGxTaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFQzNBMzlGMjQ4NzM1QkMwMDM5NUI1NCAvKiBERkdEb2VzR0NDaGVjay5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdEb2VzR0NDaGVjay5jcHA7IHBhdGggPSBkZmcvREZH
RG9lc0dDQ2hlY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUMzQTNBMDI0
ODczNUJDMDAzOTVCNTQgLyogREZHRG9lc0dDQ2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRG9l
c0dDQ2hlY2suaDsgcGF0aCA9IGRmZy9ERkdEb2VzR0NDaGVjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRUM1Nzk3MjIzMTA1QjQ4MDBCQ0E4M0YgLyogVk1JbnNwZWN0b3JJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZNSW5zcGVjdG9ySW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUM1Nzk3NDIzMTA1RjQyMDBCQ0E4
M0YgLyogSW50ZWdyaXR5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEludGVncml0eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQzU3OTc1MjMx
MDVGNDMwMEJDQTgzRiAvKiBJbnRlZ3JpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW50ZWdyaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03ODk2LDYg
Kzc4OTksOCBAQAogCQkJCTBGRjQyNzYyMTU5MUExQzkwMDRDQjlGRiAvKiBERkdEaXNhc3NlbWJs
ZXIuaCAqLywKIAkJCQkwRjVBMTI3MTE5MkQ5RkRGMDA4NzY0QTMgLyogREZHRG9lc0dDLmNwcCAq
LywKIAkJCQkwRjVBMTI3MjE5MkQ5RkRGMDA4NzY0QTMgLyogREZHRG9lc0dDLmggKi8sCisJCQkJ
RkVDM0EzOUYyNDg3MzVCQzAwMzk1QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmNwcCAqLywKKwkJCQlG
RUMzQTNBMDI0ODczNUJDMDAzOTVCNTQgLyogREZHRG9lc0dDQ2hlY2suaCAqLywKIAkJCQkwRkQ4
MUFEMDE1NEZCNEVCMDA5ODNFNzIgLyogREZHRG9taW5hdG9ycy5oICovLAogCQkJCTBGMUUzQTQ0
MTUzNENCQUQwMDBGOTQ1NiAvKiBERkdEb3VibGVGb3JtYXRTdGF0ZS5oICovLAogCQkJCTBGRDND
ODIwMTQxMTVDRjgwMEZEODFDQiAvKiBERkdEcml2ZXIuY3BwICovLApAQCAtMTAxOTYsNiArMTAy
MDEsNyBAQAogCQkJCTc5RDVDRDVCMUMxMTA2QTkwMENFQ0EwNyAvKiBTYW1wbGluZ1Byb2ZpbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyODFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVk
QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyOTFBQTkwOTU2MDBEMzNCMzMg
LyogU2NvcGVkQXJndW1lbnRzVGFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFQzNBM0ExMjQ4
NzM1Q0EwMDM5NUI1NCAvKiBERkdEb2VzR0NDaGVjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZF
MDUwMkIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjI0RTU1MjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzMzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUu
aCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDU5LDYgKzE0NTksMTcgQEAgcHVibGljOgogICAgICAgICBzdG9yZTw2
ND4oc3JjLCBhZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTY0
IGltbSwgY29uc3Qgdm9pZCogYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmICghaW1tLm1fdmFs
dWUpIHsKKyAgICAgICAgICAgIHN0b3JlNjQoQVJNNjRSZWdpc3RlcnM6OnpyLCBhZGRyZXNzKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1vdmVUb0NhY2hlZFJl
ZyhpbW0sIGRhdGFNZW1vcnlUZW1wUmVnaXN0ZXIoKSk7CisgICAgICAgIHN0b3JlNjQoZGF0YVRl
bXBSZWdpc3RlciwgYWRkcmVzcyk7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJ
bW0zMiBpbW0sIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgc3RvcmU2
NChUcnVzdGVkSW1tNjQoaW1tLm1fdmFsdWUpLCBhZGRyZXNzKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJ
KHJldmlzaW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtOTY3LDYgKzk2NywxNSBAQCBw
dWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTY0
IGltbSwgdm9pZCogYWRkcmVzcykKKyAgICB7CisgICAgICAgIHVpbnQzMl90IGxvID0gc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgdWludDMyX3QgaGkgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oaW1tLm1fdmFsdWUgPj4gMzIpOworICAgICAgICB2b2lkKiBoaUFk
ZHJlc3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihhZGRyZXNzKSArIDQ7CisgICAgICAg
IHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvKSwgYWRkcmVzcyk7CisgICAgICAgIHN0b3JlMzIoVHJ1
c3RlZEltbTMyKGhpKSwgaGlBZGRyZXNzKTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlNjQoVHJ1
c3RlZEltbTMyIGltbSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBt
X2Fzc2VtYmxlci5tb3ZxX2kzMm0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFz
bS5jcHAJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvdGVzdG1hc20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTgsNiArNjU4LDMxIEBAIHZvaWQg
dGVzdENvdW50VHJhaWxpbmdaZXJvczY0V2l0aG91dE51bGwKICAgICBib29sIHdvcmRDYW5CZVpl
cm8gPSBmYWxzZTsKICAgICB0ZXN0Q291bnRUcmFpbGluZ1plcm9zNjRJbXBsKHdvcmRDYW5CZVpl
cm8pOwogfQorCit2b2lkIHRlc3RTdG9yZTY0SW1tNjRBZGRyZXNzUG9pbnRlcigpCit7CisgICAg
YXV0byBkb1Rlc3QgPSBbXSAoaW50NjRfdCB2YWx1ZSkgeworICAgICAgICBpbnQ2NF90IGRlc3Q7
CisgICAgICAgIHZvaWQqIGRlc3RBZGRyZXNzID0gJmRlc3Q7CisKKyAgICAgICAgYXV0byB0ZXN0
ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICBlbWl0RnVu
Y3Rpb25Qcm9sb2d1ZShqaXQpOworICAgICAgICAgICAgaml0LnN0b3JlNjQoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tNjQodmFsdWUpLCBkZXN0QWRkcmVzcyk7CisgICAgICAgICAgICBlbWl0RnVu
Y3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICB9KTsK
KworICAgICAgICBpbnZva2U8c2l6ZV90Pih0ZXN0KTsKKyAgICAgICAgQ0hFQ0tfRVEoZGVzdCwg
dmFsdWUpOworICAgIH07CisgICAgCisgICAgZm9yIChhdXRvIHZhbHVlIDogaW50NjRPcGVyYW5k
cygpKQorICAgICAgICBkb1Rlc3QodmFsdWUpOworCisgICAgZG9UZXN0KDB4OTg3NjU1NTVBQUFB
NDMyMSk7CisgICAgZG9UZXN0KDB4QUFBQTQzMjE5ODc2NTU1NSk7Cit9CisKICNlbmRpZiAvLyBD
UFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCiAKIHZvaWQgdGVzdENvbXBhcmVEb3VibGUoTWFjcm9B
c3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbiBjb25kaXRpb24pCkBAIC0yNDk5LDYgKzI1MjQsNyBA
QCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RDbGVhckJpdHM2NFdp
dGhNYXNrVGVybmFyeSgpKTsKICAgICBSVU4odGVzdENvdW50VHJhaWxpbmdaZXJvczY0KCkpOwog
ICAgIFJVTih0ZXN0Q291bnRUcmFpbGluZ1plcm9zNjRXaXRob3V0TnVsbENoZWNrKCkpOworICAg
IFJVTih0ZXN0U3RvcmU2NEltbTY0QWRkcmVzc1BvaW50ZXIoKSk7CiAjZW5kaWYKIAogI2lmIENQ
VShBUk02NCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDQ2hlY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDQ2hl
Y2suY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDQ2hlY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiREZHRG9lc0dDQ2hlY2suaCIKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJWTUluc3Bl
Y3Rvci5oIgorI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisKK25hbWVzcGFjZSBKU0MgeworbmFt
ZXNwYWNlIERGRyB7CisKKyNpZiBFTkFCTEUoREZHX0RPRVNfR0NfVkFMSURBVElPTikKKworZXh0
ZXJuIGNvbnN0IGNoYXIqIGRmZ09wTmFtZXNbXTsKKworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBE
b2VzR0NDaGVjazo6dmVyaWZ5Q2FuR0MoVk0mIHZtKQoreworICAgIGlmICghZXhwZWN0RG9lc0dD
KCkpIHsKKyAgICAgICAgZGF0YUxvZygiRXJyb3I6IERvZXNHQyBmYWlsZWQiKTsKKyAgICAgICAg
aWYgKGlzU3BlY2lhbCgpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHNwZWNpYWwoKSkgeworICAg
ICAgICAgICAgY2FzZSBTcGVjaWFsOjpVbmluaXRpYWxpemVkOgorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjaWFsOjpERkdPU1JFeGl0OgorICAgICAgICAgICAg
ICAgIGRhdGFMb2coIiBAIERGRyBvc3IgZXhpdCIpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBTcGVjaWFsOjpGVExPU1JFeGl0OgorICAgICAgICAgICAgICAgIGRh
dGFMb2coIiBAIEZUTCBvc3IgZXhpdCIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBTcGVjaWFsOjpSZXNlcnZlZFVudXNlZDoKKyAgICAgICAgICAgIGNhc2UgU3Bl
Y2lhbDo6TnVtYmVyT2ZTcGVjaWFsczoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IGRhdGFMb2coIiBAIERAIiwgbm9kZUluZGV4KCksICIgIiwgREZHOjpkZmdPcE5hbWVzW25vZGVP
cCgpXSk7CisKKyAgICAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSB2bS50b3BDYWxsRnJhbWU7
CisgICAgICAgIGlmIChjYWxsRnJhbWUpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiIGlu
ICIsIGNvZGVCbG9jayk7CisgICAgICAgICAgICBWTUluc3BlY3Rvcjo6ZHVtcFN0YWNrKCZ2bSwg
Y2FsbEZyYW1lKTsKKyAgICAgICAgfQorICAgICAgICBkYXRhTG9nTG4oKTsKKyAgICB9CisgICAg
UkVMRUFTRV9BU1NFUlQoZXhwZWN0RG9lc0dDKCkpOworfQorI2VuZGlmIC8vIEVOQUJMRShERkdf
RE9FU19HQ19WQUxJREFUSU9OKQorCit9IC8vIG5hbWVzcGFjZSBERkcKK30gLy8gbmFtZXNwYWNl
IEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQ0NoZWNrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0NDaGVjay5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDQ2hl
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8Y3N0
ZGludD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgVk07CisKK25hbWVzcGFjZSBERkcgeworCitzdHJ1Y3QgRG9lc0dDQ2hlY2sgeworICAg
IGVudW0gY2xhc3MgU3BlY2lhbCB7CisgICAgICAgIFJlc2VydmVkVW51c2VkLCAvLyBzbyB0aGF0
IHNwZWNpYWxzIHN0YXJ0IHdpdGggMS4gaXNTcGVjaWFsKCkgcmVsaWVzIG9uIHRoaXMuCisgICAg
ICAgIFVuaW5pdGlhbGl6ZWQsCisgICAgICAgIERGR09TUkV4aXQsCisgICAgICAgIEZUTE9TUkV4
aXQsCisgICAgICAgIE51bWJlck9mU3BlY2lhbHMKKyAgICB9OworCisgICAgRG9lc0dDQ2hlY2so
KQorICAgICAgICA6IG1fdmFsdWUoZW5jb2RlKHRydWUsIFNwZWNpYWw6OlVuaW5pdGlhbGl6ZWQp
KQorICAgIHsgfQorCisgICAgc3RhdGljIHVpbnQ2NF90IGVuY29kZShib29sIGV4cGVjdERvZXNH
QywgdW5zaWduZWQgbm9kZUluZGV4LCB1bnNpZ25lZCBub2RlT3ApCisgICAgeworICAgICAgICB1
aW50NjRfdCByZXN1bHQgPSBiaXRzKG5vZGVJbmRleCkgPDwgbm9kZUluZGV4U2hpZnQ7CisgICAg
ICAgIHJlc3VsdCB8PSBiaXRzKG5vZGVPcCkgPDwgbm9kZU9wU2hpZnQ7CisgICAgICAgIHJlc3Vs
dCB8PSBiaXRzKGV4cGVjdERvZXNHQykgPDwgZXhwZWN0RG9lc0dDU2hpZnQ7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIHVpbnQ2NF90IGVuY29kZShib29sIGV4
cGVjdERvZXNHQywgU3BlY2lhbCBzcGVjaWFsKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGJpdHMo
c3BlY2lhbCkgPCBudW1iZXJPZlNwZWNpYWxzKTsKKyAgICAgICAgdWludDY0X3QgcmVzdWx0ID0g
Yml0cyhzcGVjaWFsKSA8PCBzcGVjaWFsU2hpZnQ7CisgICAgICAgIHJlc3VsdCB8PSBiaXRzKGV4
cGVjdERvZXNHQykgPDwgZXhwZWN0RG9lc0dDU2hpZnQ7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorCisgICAgdm9pZCBzZXQoYm9vbCBleHBlY3REb2VzR0MsIHVuc2lnbmVkIG5vZGVJ
bmRleCwgdW5zaWduZWQgbm9kZU9wKQorICAgIHsKKyAgICAgICAgbV92YWx1ZSA9IGVuY29kZShl
eHBlY3REb2VzR0MsIG5vZGVJbmRleCwgbm9kZU9wKTsKKyAgICB9CisKKyAgICB2b2lkIHNldChi
b29sIGV4cGVjdERvZXNHQywgU3BlY2lhbCBzcGVjaWFsKQorICAgIHsKKyAgICAgICAgbV92YWx1
ZSA9IGVuY29kZShleHBlY3REb2VzR0MsIHNwZWNpYWwpOworICAgIH0KKworICAgIGJvb2wgZXhw
ZWN0RG9lc0dDKCkgeyByZXR1cm4gbV92YWx1ZSAmIGV4cGVjdERvZXNHQ01hc2s7IH0KKyAgICBT
cGVjaWFsIHNwZWNpYWwoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTcGVjaWFsPihzcGVjaWFsSW5k
ZXgoKSk7IH0KKyAgICB1bnNpZ25lZCBub2RlSW5kZXgoKSB7IHJldHVybiBtX3ZhbHVlID4+IG5v
ZGVJbmRleFNoaWZ0OyB9CisgICAgdW5zaWduZWQgbm9kZU9wKCkgeyByZXR1cm4gKG1fdmFsdWUg
Pj4gbm9kZU9wU2hpZnQpICYgbm9kZU9wTWFzazsgfQorCisgICAgYm9vbCBpc1NwZWNpYWwoKSB7
IHJldHVybiBzcGVjaWFsSW5kZXgoKTsgfQorCisgICAgdm9pZCB2ZXJpZnlDYW5HQyhWTSYpOwor
Citwcml2YXRlOgorICAgIHVuc2lnbmVkIHNwZWNpYWxJbmRleCgpIHsgcmV0dXJuIChtX3ZhbHVl
ID4+IHNwZWNpYWxTaGlmdCkgJiBzcGVjaWFsTWFzazsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RhdGljIHVpbnQ2NF90IGJpdHMoVCB2YWx1ZSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KHZhbHVlKTsgfQorCisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBudW1i
ZXJPZlNwZWNpYWxzID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KFNwZWNpYWw6Ok51bWJlck9mU3Bl
Y2lhbHMpOworCisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBleHBlY3REb2VzR0NTaGlm
dCA9IDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzcGVjaWFsU2hpZnQgPSAxOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbm9kZU9wU2hpZnQgPSAxNjsKKyAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIG5vZGVJbmRleFNoaWZ0ID0gMzI7CisKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIGV4cGVjdERvZXNHQ01hc2sgPSAweDE7CisgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBzcGVjaWFsTWFzayA9IDB4N2ZmZjsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIG5vZGVPcE1hc2sgPSAweGZmZmY7CisKKyAgICB1aW50NjRfdCBtX3ZhbHVl
IHsgMCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgREZHCisKK3VzaW5nIERGRzo6RG9lc0dDQ2hl
Y2s7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBkdW1wT1NSQXZh
aWxhYmlsaXR5RGF0YSA9IGZhbHNlOwogCiAvLyBDcmVhdGVzIGFuIGFycmF5IG9mIHN0cmluZ2l6
ZWQgbmFtZXMuCi1zdGF0aWMgY29uc3QgY2hhciogZGZnT3BOYW1lc1tdID0geworY29uc3QgY2hh
ciogZGZnT3BOYW1lc1tdID0gewogI2RlZmluZSBTVFJJTkdJWkVfREZHX09QX0VOVU0ob3Bjb2Rl
LCBmbGFncykgI29wY29kZSAsCiAgICAgRk9SX0VBQ0hfREZHX09QKFNUUklOR0laRV9ERkdfT1Bf
RU5VTSkKICN1bmRlZiBTVFJJTkdJWkVfREZHX09QX0VOVU0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24gMjYyNDY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcg
KzE0Niw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21waWxlT1NSRXgKICAgICBp
ZiAodmFsaWRhdGVERkdEb2VzR0MpIHsKICAgICAgICAgLy8gV2UncmUgYWJvdXQgdG8gZXhpdCBv
cHRpbWl6ZWQgY29kZS4gU28sIHRoZXJlJ3Mgbm8gbG9uZ2VyIGFueSBvcHRpbWl6ZWQKICAgICAg
ICAgLy8gY29kZSBydW5uaW5nIHRoYXQgZXhwZWN0cyBubyBHQy4KLSAgICAgICAgdm0uaGVhcC5z
ZXRFeHBlY3REb2VzR0ModHJ1ZSk7CisgICAgICAgIHZtLmhlYXAuc2V0RG9lc0dDRXhwZWN0YXRp
b24odHJ1ZSwgRG9lc0dDQ2hlY2s6OlNwZWNpYWw6OkRGR09TUkV4aXQpOwogICAgIH0KIAogICAg
IGlmICh2bS5jYWxsRnJhbWVGb3JDYXRjaCkKQEAgLTU1NSwxMSArNTU1LDExIEBAIHZvaWQgT1NS
RXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgLy8gY29kZSBydW5uaW5n
IHRoYXQgZXhwZWN0cyBubyBHQy4gV2UgbmVlZCB0byBzZXQgdGhpcyBiZWZvcmUgYXJndW1lbnRz
CiAgICAgICAgIC8vIG1hdGVyaWFsaXphdGlvbiBiZWxvdyAoc2VlIGVtaXRSZXN0b3JlQXJndW1l
bnRzKCkpLgogCi0gICAgICAgIC8vIEV2ZW4gdGhvdWdoIHdlIHNldCBIZWFwOjptX2V4cGVjdERv
ZXNHQyBpbiBjb21waWxlT1NSRXhpdCgpLCB3ZSBhbHNvIG5lZWQKKyAgICAgICAgLy8gRXZlbiB0
aG91Z2ggd2Ugc2V0IEhlYXA6Om1fZG9lc0dDIGluIGNvbXBpbGVPU1JFeGl0KCksIHdlIGFsc28g
bmVlZAogICAgICAgICAvLyB0byBzZXQgaXQgaGVyZSBiZWNhdXNlIGNvbXBpbGVPU1JFeGl0KCkg
aXMgb25seSBjYWxsZWQgb24gdGhlIGZpcnN0IHRpbWUKICAgICAgICAgLy8gd2UgZXhpdCBmcm9t
IHRoaXMgc2l0ZSwgYnV0IGFsbCBzdWJzZXF1ZW50IGV4aXRzIHdpbGwgdGFrZSB0aGlzIGNvbXBp
bGVkCiAgICAgICAgIC8vIHJhbXAgd2l0aG91dCBjYWxsaW5nIGNvbXBpbGVPU1JFeGl0KCkgZmly
c3QuCi0gICAgICAgIGppdC5zdG9yZTgoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodHJ1ZSks
IHZtLmhlYXAuYWRkcmVzc09mRXhwZWN0RG9lc0dDKCkpOworICAgICAgICBqaXQuc3RvcmU2NChD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChEb2VzR0NDaGVjazo6ZW5jb2RlKHRydWUsIERvZXNH
Q0NoZWNrOjpTcGVjaWFsOjpERkdPU1JFeGl0KSksIHZtLmhlYXAuYWRkcmVzc09mRG9lc0dDKCkp
OwogICAgIH0KIAogICAgIC8vIE5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHN0YWNrIHBvaW50ZXIg
YWNjb3VudHMgZm9yIHRoZSB3b3JzdC1jYXNlIHN0YWNrIHVzYWdlIGF0IGV4aXQuIFRoaXMKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAkocmV2aXNpb24gMjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzOCw3ICsyMTM4LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgaWYgKHZhbGlk
YXRlREZHRG9lc0dDKSB7CiAgICAgICAgIGJvb2wgZXhwZWN0RG9lc0dDID0gZG9lc0dDKG1faml0
LmdyYXBoKCksIG5vZGUpOwotICAgICAgICBtX2ppdC5zdG9yZTgoVHJ1c3RlZEltbTMyKGV4cGVj
dERvZXNHQyksIHZtKCkuaGVhcC5hZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSk7CisgICAgICAgIG1f
aml0LnN0b3JlNjQoVHJ1c3RlZEltbTY0KERvZXNHQ0NoZWNrOjplbmNvZGUoZXhwZWN0RG9lc0dD
LCBub2RlLT5pbmRleCgpLCBub2RlLT5vcCgpKSksIHZtKCkuaGVhcC5hZGRyZXNzT2ZEb2VzR0Mo
KSk7CiAgICAgfQogCiAjaWYgRU5BQkxFKERGR19SRUdJU1RFUl9BTExPQ0FUSU9OX1ZBTElEQVRJ
T04pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCShyZXZpc2lvbiAyNjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwNCw3ICs3MDQsNyBAQCBwcml2YXRl
OgogCiAgICAgICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykgewogICAgICAgICAgICAgYm9vbCBl
eHBlY3REb2VzR0MgPSBkb2VzR0MobV9ncmFwaCwgbV9ub2RlKTsKLSAgICAgICAgICAgIG1fb3V0
LnN0b3JlKG1fb3V0LmNvbnN0Qm9vbChleHBlY3REb2VzR0MpLCBtX291dC5hYnNvbHV0ZSh2bSgp
LmhlYXAuYWRkcmVzc09mRXhwZWN0RG9lc0dDKCkpKTsKKyAgICAgICAgICAgIG1fb3V0LnN0b3Jl
KG1fb3V0LmNvbnN0SW50NjQoRG9lc0dDQ2hlY2s6OmVuY29kZShleHBlY3REb2VzR0MsIG1fbm9k
ZS0+aW5kZXgoKSwgbV9ub2RlLT5vcCgpKSksIG1fb3V0LmFic29sdXRlKHZtKCkuaGVhcC5hZGRy
ZXNzT2ZEb2VzR0MoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoIChtX25vZGUtPm9w
KCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRD
b21waWxlci5jcHAJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDExICsyMTEs
MTEgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25lZAogICAgICAgICAv
LyBjb2RlIHJ1bm5pbmcgdGhhdCBleHBlY3RzIG5vIEdDLiBXZSBuZWVkIHRvIHNldCB0aGlzIGJl
Zm9yZSBvYmplY3QKICAgICAgICAgLy8gbWF0ZXJpYWxpemF0aW9uIGJlbG93LgogCi0gICAgICAg
IC8vIEV2ZW4gdGhvdWdoIHdlIHNldCBIZWFwOjptX2V4cGVjdERvZXNHQyBpbiBjb21waWxlRlRM
T1NSRXhpdCgpLCB3ZSBhbHNvIG5lZWQKKyAgICAgICAgLy8gRXZlbiB0aG91Z2ggd2Ugc2V0IEhl
YXA6Om1fZG9lc0dDIGluIGNvbXBpbGVGVExPU1JFeGl0KCksIHdlIGFsc28gbmVlZAogICAgICAg
ICAvLyB0byBzZXQgaXQgaGVyZSBiZWNhdXNlIGNvbXBpbGVGVExPU1JFeGl0KCkgaXMgb25seSBj
YWxsZWQgb24gdGhlIGZpcnN0IHRpbWUKICAgICAgICAgLy8gd2UgZXhpdCBmcm9tIHRoaXMgc2l0
ZSwgYnV0IGFsbCBzdWJzZXF1ZW50IGV4aXRzIHdpbGwgdGFrZSB0aGlzIGNvbXBpbGVkCiAgICAg
ICAgIC8vIHJhbXAgd2l0aG91dCBjYWxsaW5nIGNvbXBpbGVGVExPU1JFeGl0KCkgZmlyc3QuCi0g
ICAgICAgIGppdC5zdG9yZTgoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodHJ1ZSksIHZtLmhl
YXAuYWRkcmVzc09mRXhwZWN0RG9lc0dDKCkpOworICAgICAgICBqaXQuc3RvcmU2NChDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW02NChEb2VzR0NDaGVjazo6ZW5jb2RlKHRydWUsIERvZXNHQ0NoZWNr
OjpTcGVjaWFsOjpGVExPU1JFeGl0KSksIHZtLmhlYXAuYWRkcmVzc09mRG9lc0dDKCkpOwogICAg
IH0KIAogICAgIC8vIEJyaW5nIHRoZSBzdGFjayBiYWNrIGludG8gYSBzYW5lIGZvcm0gYW5kIGFz
c2VydCB0aGF0IGl0J3Mgc2FuZS4KQEAgLTU0OCw3ICs1NDgsNyBAQCBleHRlcm4gIkMiIEpJVF9P
UEVSQVRJT04gdm9pZCogb3BlcmF0aW9uCiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKSB7CiAg
ICAgICAgIC8vIFdlJ3JlIGFib3V0IHRvIGV4aXQgb3B0aW1pemVkIGNvZGUuIFNvLCB0aGVyZSdz
IG5vIGxvbmdlciBhbnkgb3B0aW1pemVkCiAgICAgICAgIC8vIGNvZGUgcnVubmluZyB0aGF0IGV4
cGVjdHMgbm8gR0MuCi0gICAgICAgIHZtLmhlYXAuc2V0RXhwZWN0RG9lc0dDKHRydWUpOworICAg
ICAgICB2bS5oZWFwLnNldERvZXNHQ0V4cGVjdGF0aW9uKHRydWUsIERvZXNHQ0NoZWNrOjpTcGVj
aWFsOjpGVExPU1JFeGl0KTsKICAgICB9CiAKICAgICBpZiAodm0uY2FsbEZyYW1lRm9yQ2F0Y2gp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNl
LmNwcAkocmV2aXNpb24gMjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29t
cGxldGVTdWJzcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9p
ZCogQ29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdGVTbG93KFZNJgogdm9pZCogQ29tcGxldGVTdWJz
cGFjZTo6dHJ5QWxsb2NhdGVTbG93KFZNJiB2bSwgc2l6ZV90IHNpemUsIEdDRGVmZXJyYWxDb250
ZXh0KiBkZWZlcnJhbENvbnRleHQpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAg
ICAgICBSRUxFQVNFX0FTU0VSVCh2bS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdm0u
aGVhcC52ZXJpZnlDYW5HQygpOwogCiAgICAgc2FuaXRpemVTdGFja0ZvclZNKHZtKTsKICAgICAK
QEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkKiBDb21wbGV0ZVN1YnNwYWNlOjp0cnlBbGxvY2F0ZVNs
b3coCiB2b2lkKiBDb21wbGV0ZVN1YnNwYWNlOjpyZWFsbG9jYXRlUHJlY2lzZUFsbG9jYXRpb25O
b25WaXJ0dWFsKFZNJiB2bSwgSGVhcENlbGwqIG9sZENlbGwsIHNpemVfdCBzaXplLCBHQ0RlZmVy
cmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVy
ZU1vZGUpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FT
U0VSVCh2bS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdm0uaGVhcC52ZXJpZnlDYW5H
QygpOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQgaW4gQnV0dGVy
Zmx5IGZvciBleGFtcGxlLgogICAgIEFTU0VSVChvbGRDZWxsLT5pc1ByZWNpc2VBbGxvY2F0aW9u
KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZUlu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0
ZVN1YnNwYWNlSW5saW5lcy5oCShyZXZpc2lvbiAyNjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIEFMV0FZU19JTkxJTkUgdm9pZCogQ29tcGxl
dGVTdWJzcGFjZTo6YWxsb2NhdGVOb25WaXJ0dWFsKFZNJiB2bSwgc2l6ZV90IHNpemUsIEdDRGVm
ZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBmYWls
dXJlTW9kZSkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHZtLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bS5oZWFwLnZlcmlmeUNh
bkdDKCk7CiAKICAgICBpZiAoQWxsb2NhdG9yIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvck5vblZp
cnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpKQogICAgICAg
ICByZXR1cm4gYWxsb2NhdG9yLmFsbG9jYXRlKHZtLmhlYXAsIGRlZmVycmFsQ29udGV4dCwgZmFp
bHVyZU1vZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0MuaAkocmV2aXNp
b24gMjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgfkRlZmVyR0MoKQogICAg
IHsKICAgICAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQobV9oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgICAgIG1faGVhcC52ZXJpZnlD
YW5HQygpOwogICAgICAgICBtX2hlYXAuZGVjcmVtZW50RGVmZXJyYWxEZXB0aEFuZEdDSWZOZWVk
ZWQoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDRGVmZXJy
YWxDb250ZXh0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0dDRGVmZXJyYWxDb250ZXh0SW5saW5lcy5oCShyZXZpc2lvbiAyNjI0NjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0RlZmVycmFsQ29udGV4dElubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgQUxXQVlTX0lOTElORSBHQ0RlZmVycmFsQ29udGV4
dDo6R0NEZWZlcgogQUxXQVlTX0lOTElORSBHQ0RlZmVycmFsQ29udGV4dDo6fkdDRGVmZXJyYWxD
b250ZXh0KCkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1faGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIG1faGVhcC52ZXJpZnlDYW5H
QygpOwogCiAgICAgaWYgKFVOTElLRUxZKG1fc2hvdWxkR0MpKQogICAgICAgICBtX2hlYXAuY29s
bGVjdElmTmVjZXNzYXJ5T3JEZWZlcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQg
KEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJp
Z2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENv
cHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCkBAIC0xMDY0LDcgKzEwNjQsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3luY2hyb25vdXNu
ZXNzIHN5bmNoCiB2b2lkIEhlYXA6OmNvbGxlY3ROb3coU3luY2hyb25vdXNuZXNzIHN5bmNocm9u
b3VzbmVzcywgR0NSZXF1ZXN0IHJlcXVlc3QpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dD
KQotICAgICAgICBSRUxFQVNFX0FTU0VSVChleHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZlcmlm
eUNhbkdDKCk7CiAKICAgICBzd2l0Y2ggKHN5bmNocm9ub3VzbmVzcykgewogICAgIGNhc2UgQXN5
bmM6IHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdE5vdyhTeW5jaHJv
bm91c25lc3Mgc3kKIHZvaWQgSGVhcDo6Y29sbGVjdEFzeW5jKEdDUmVxdWVzdCByZXF1ZXN0KQog
ewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhw
ZWN0RG9lc0dDKCkpOworICAgICAgICB2ZXJpZnlDYW5HQygpOwogCiAgICAgaWYgKCFtX2lzU2Fm
ZVRvQ29sbGVjdCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTEyMSw3ICsxMTIxLDcgQEAgdm9pZCBI
ZWFwOjpjb2xsZWN0QXN5bmMoR0NSZXF1ZXN0IHJlcXVlcwogdm9pZCBIZWFwOjpjb2xsZWN0U3lu
YyhHQ1JlcXVlc3QgcmVxdWVzdCkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdmVyaWZ5Q2FuR0Mo
KTsKIAogICAgIGlmICghbV9pc1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJldHVybjsKQEAgLTE3
ODQsNyArMTc4NCw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEhlYXA6OnJlc3VtZVRoZU11dGF0b3IK
IHZvaWQgSGVhcDo6c3RvcElmTmVjZXNzYXJ5U2xvdygpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZH
RG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChleHBlY3REb2VzR0MoKSk7CisgICAgICAg
IHZlcmlmeUNhbkdDKCk7CiAKICAgICB3aGlsZSAoc3RvcElmTmVjZXNzYXJ5U2xvdyhtX3dvcmxk
U3RhdGUubG9hZCgpKSkgeyB9CiAgICAgCkBAIC0xNzk5LDcgKzE3OTksNyBAQCB2b2lkIEhlYXA6
OnN0b3BJZk5lY2Vzc2FyeVNsb3coKQogYm9vbCBIZWFwOjpzdG9wSWZOZWNlc3NhcnlTbG93KHVu
c2lnbmVkIG9sZFN0YXRlKQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQoZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2ZXJpZnlDYW5HQygpOwog
CiAgICAgUkVMRUFTRV9BU1NFUlQob2xkU3RhdGUgJiBoYXNBY2Nlc3NCaXQpOwogICAgIFJFTEVB
U0VfQVNTRVJUKCEob2xkU3RhdGUgJiBzdG9wcGVkQml0KSk7CkBAIC0yNjAxLDcgKzI2MDEsNyBA
QCB2b2lkIEhlYXA6OmNvbGxlY3RJZk5lY2Vzc2FyeU9yRGVmZXIoR0NECiB7CiAgICAgQVNTRVJU
KGRlZmVycmFsQ29udGV4dCB8fCBpc0RlZmVycmVkKCkgfHwgIURpc2FsbG93R0M6OmlzSW5FZmZl
Y3RPbkN1cnJlbnRUaHJlYWQoKSk7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChleHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZlcmlmeUNhbkdDKCk7
CiAKICAgICBpZiAoIW1faXNTYWZlVG9Db2xsZWN0KQogICAgICAgICByZXR1cm47CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyNjI0NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAv
KgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5v
cmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJD
ZWxsU3RhdGUuaCIKICNpbmNsdWRlICJDb2xsZWN0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJDb2xs
ZWN0b3JQaGFzZS5oIgorI2luY2x1ZGUgIkRGR0RvZXNHQ0NoZWNrLmgiCiAjaW5jbHVkZSAiRGVs
ZXRlQWxsQ29kZUVmZm9ydC5oIgogI2luY2x1ZGUgIkdDQ29uZHVjdG9yLmgiCiAjaW5jbHVkZSAi
R0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaCIKQEAgLTMwMywxMyArMzA0LDE1IEBAIHB1YmxpYzoK
ICAgICBjb25zdCB1bnNpZ25lZCogYWRkcmVzc09mQmFycmllclRocmVzaG9sZCgpIGNvbnN0IHsg
cmV0dXJuICZtX2JhcnJpZXJUaHJlc2hvbGQ7IH0KIAogI2lmIEVOQUJMRShERkdfRE9FU19HQ19W
QUxJREFUSU9OKQotICAgIGJvb2wgZXhwZWN0RG9lc0dDKCkgY29uc3QgeyByZXR1cm4gbV9leHBl
Y3REb2VzR0M7IH0KLSAgICB2b2lkIHNldEV4cGVjdERvZXNHQyhib29sIHZhbHVlKSB7IG1fZXhw
ZWN0RG9lc0dDID0gdmFsdWU7IH0KLSAgICBib29sKiBhZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSB7
IHJldHVybiAmbV9leHBlY3REb2VzR0M7IH0KKyAgICBEb2VzR0NDaGVjayogYWRkcmVzc09mRG9l
c0dDKCkgeyByZXR1cm4gJm1fZG9lc0dDOyB9CisgICAgdm9pZCBzZXREb2VzR0NFeHBlY3RhdGlv
bihib29sIGV4cGVjdERvZXNHQywgdW5zaWduZWQgbm9kZUluZGV4LCB1bnNpZ25lZCBub2RlT3Ap
IHsgbV9kb2VzR0Muc2V0KGV4cGVjdERvZXNHQywgbm9kZUluZGV4LCBub2RlT3ApOyB9CisgICAg
dm9pZCBzZXREb2VzR0NFeHBlY3RhdGlvbihib29sIGV4cGVjdERvZXNHQywgRG9lc0dDQ2hlY2s6
OlNwZWNpYWwgc3BlY2lhbCkgeyBtX2RvZXNHQy5zZXQoZXhwZWN0RG9lc0dDLCBzcGVjaWFsKTsg
fQorICAgIHZvaWQgdmVyaWZ5Q2FuR0MoKSB7IG1fZG9lc0dDLnZlcmlmeUNhbkdDKHZtKCkpOyB9
CiAjZWxzZQotICAgIGJvb2wgZXhwZWN0RG9lc0dDKCkgY29uc3QgeyBVTlJFQUNIQUJMRV9GT1Jf
UExBVEZPUk0oKTsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHNldEV4cGVjdERvZXNHQyhib29s
KSB7IFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOyB9Ci0gICAgYm9vbCogYWRkcmVzc09mRXhw
ZWN0RG9lc0dDKCkgeyBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsgcmV0dXJuIG51bGxwdHI7
IH0KKyAgICBEb2VzR0NDaGVjayogYWRkcmVzc09mRG9lc0dDKCkgeyBVTlJFQUNIQUJMRV9GT1Jf
UExBVEZPUk0oKTsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2b2lkIHNldERvZXNHQ0V4cGVjdGF0
aW9uKGJvb2wsIHVuc2lnbmVkLCB1bnNpZ25lZCkgeyB9CisgICAgdm9pZCBzZXREb2VzR0NFeHBl
Y3RhdGlvbihib29sLCBEb2VzR0NDaGVjazo6U3BlY2lhbCkgeyB9CisgICAgdm9pZCB2ZXJpZnlD
YW5HQygpIHsgfQogI2VuZGlmCiAKICAgICAvLyBJZiB0cnVlLCB0aGUgR0MgYmVsaWV2ZXMgdGhh
dCB0aGUgbXV0YXRvciBpcyBjdXJyZW50bHkgbWVzc2luZyB3aXRoIHRoZSBoZWFwLiBXZSBjYWxs
IHRoaXMKQEAgLTYwNiw3ICs2MDksNyBAQCBwcml2YXRlOgogICAgIE1hcmthYmxlPENvbGxlY3Rp
b25TY29wZSwgRW51bU1hcmthYmxlVHJhaXRzPENvbGxlY3Rpb25TY29wZT4+IG1fbGFzdENvbGxl
Y3Rpb25TY29wZTsKICAgICBMb2NrIG1fcmFjZU1hcmtTdGFja0xvY2s7CiAjaWYgRU5BQkxFKERG
R19ET0VTX0dDX1ZBTElEQVRJT04pCi0gICAgYm9vbCBtX2V4cGVjdERvZXNHQyB7IHRydWUgfTsK
KyAgICBEb2VzR0NDaGVjayBtX2RvZXNHQzsKICNlbmRpZgogCiAgICAgU3RydWN0dXJlSURUYWJs
ZSBtX3N0cnVjdHVyZUlEVGFibGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBJbmxpbmVzLmgJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw3ICsyMzYsNyBAQCBpbmxp
bmUgdm9pZCBIZWFwOjpkZXByZWNhdGVkUmVwb3J0RXh0cmFNCiBpbmxpbmUgdm9pZCBIZWFwOjph
Y3F1aXJlQWNjZXNzKCkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJF
TEVBU0VfQVNTRVJUKGV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdmVyaWZ5Q2FuR0MoKTsKIAog
ICAgIGlmIChtX3dvcmxkU3RhdGUuY29tcGFyZUV4Y2hhbmdlV2VhaygwLCBoYXNBY2Nlc3NCaXQp
KQogICAgICAgICByZXR1cm47CkBAIC0yNjMsNyArMjYzLDcgQEAgaW5saW5lIGJvb2wgSGVhcDo6
bWF5TmVlZFRvU3RvcCgpCiBpbmxpbmUgdm9pZCBIZWFwOjpzdG9wSWZOZWNlc3NhcnkoKQogewog
ICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhwZWN0
RG9lc0dDKCkpOworICAgICAgICB2ZXJpZnlDYW5HQygpOwogCiAgICAgaWYgKG1heU5lZWRUb1N0
b3AoKSkKICAgICAgICAgc3RvcElmTmVjZXNzYXJ5U2xvdygpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgJKHJldmlzaW9u
IDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9ySW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
QUxXQVlTX0lOTElORSB2b2lkKiBMb2NhbEFsbG9jYXRvcjo6YWxsb2NhdGUoSGVhcCYgaGVhcCwg
R0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2Rl
IGZhaWx1cmVNb2RlKQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlQoaGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIGhlYXAudmVyaWZ5Q2Fu
R0MoKTsKICAgICByZXR1cm4gbV9mcmVlTGlzdC5hbGxvY2F0ZSgKICAgICAgICAgWyZdICgpIC0+
IEhlYXBDZWxsKiB7CiAgICAgICAgICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0oaGVhcC52bSgpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlv
bi5jcHAJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1By
ZWNpc2VBbGxvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaXNBbGlnbmVkRm9yUHJlY2lzZUFsCiBQcmVjaXNlQWxsb2NhdGlvbiog
UHJlY2lzZUFsbG9jYXRpb246OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBzaXplX3Qgc2l6ZSwgU3Vi
c3BhY2UqIHN1YnNwYWNlLCB1bnNpZ25lZCBpbmRleEluU3BhY2UpCiB7CiAgICAgaWYgKHZhbGlk
YXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChoZWFwLmV4cGVjdERvZXNHQygp
KTsKKyAgICAgICAgaGVhcC52ZXJpZnlDYW5HQygpOwogCiAgICAgc2l6ZV90IGFkanVzdGVkQWxp
Z25tZW50QWxsb2NhdGlvblNpemUgPSBoZWFkZXJTaXplKCkgKyBzaXplICsgaGFsZkFsaWdubWVu
dDsKICAgICBzdGF0aWNfYXNzZXJ0KGhhbGZBbGlnbm1lbnQgPT0gOCwgIldlIGFzc3VtZSB0aGF0
IG1lbW9yeSByZXR1cm5lZCBieSBtYWxsb2MgaGFzIGFsaWdubWVudCA+PSA4LiIpOwpAQCAtMTIz
LDcgKzEyMyw3IEBAIFByZWNpc2VBbGxvY2F0aW9uKiBQcmVjaXNlQWxsb2NhdGlvbjo6dHIKIFBy
ZWNpc2VBbGxvY2F0aW9uKiBQcmVjaXNlQWxsb2NhdGlvbjo6Y3JlYXRlRm9yTG93ZXJUaWVyKEhl
YXAmIGhlYXAsIHNpemVfdCBzaXplLCBTdWJzcGFjZSogc3Vic3BhY2UsIHVpbnQ4X3QgbG93ZXJU
aWVySW5kZXgpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNF
X0FTU0VSVChoZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgaGVhcC52ZXJpZnlDYW5HQygp
OwogCiAgICAgc2l6ZV90IGFkanVzdGVkQWxpZ25tZW50QWxsb2NhdGlvblNpemUgPSBoZWFkZXJT
aXplKCkgKyBzaXplICsgaGFsZkFsaWdubWVudDsKICAgICBzdGF0aWNfYXNzZXJ0KGhhbGZBbGln
bm1lbnQgPT0gOCwgIldlIGFzc3VtZSB0aGF0IG1lbW9yeSByZXR1cm5lZCBieSBtYWxsb2MgaGFz
IGFsaWdubWVudCA+PSA4LiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5oCShyZXZpc2lvbiAyNjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MzMsNyArNzMzLDcgQEAgaW5saW5l
IEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKFZNJiB2bSkKIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcq
IGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKFZNJiB2bSwgVUNoYXIgYykKIHsKICAgICBpZiAodmFs
aWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtLmhlYXAuZXhwZWN0RG9l
c0dDKCkpOworICAgICAgICB2bS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYgKGMgPD0gbWF4
U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNp
bmdsZUNoYXJhY3RlclN0cmluZyhjKTsKICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSh2bSwg
U3RyaW5nSW1wbDo6Y3JlYXRlKCZjLCAxKSk7CkBAIC03NjMsNyArNzYzLDcgQEAgQUxXQVlTX0lO
TElORSBJZGVudGlmaWVyIEpTU3RyaW5nOjp0b0lkZQogQUxXQVlTX0lOTElORSBBdG9tU3RyaW5n
IEpTU3RyaW5nOjp0b0F0b21TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29u
c3QKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KHZtKCkuaGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZtKCkuaGVhcC52ZXJpZnlDYW5H
QygpOwogICAgIGlmIChpc1JvcGUoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IEpTUm9wZVN0cmluZyo+KHRoaXMpLT5yZXNvbHZlUm9wZVRvQXRvbVN0cmluZyhnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBBdG9tU3RyaW5nKHZhbHVlSW50ZXJuYWwoKSk7CkBAIC03NzIsNyAr
NzcyLDcgQEAgQUxXQVlTX0lOTElORSBBdG9tU3RyaW5nIEpTU3RyaW5nOjp0b0F0bwogQUxXQVlT
X0lOTElORSBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IEpTU3RyaW5nOjp0b0V4aXN0aW5nQXRvbVN0
cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIGlmICh2YWxp
ZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS5oZWFwLmV4cGVjdERv
ZXNHQygpKTsKKyAgICAgICAgdm0oKS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYgKGlzUm9w
ZSgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4odGhp
cyktPnJlc29sdmVSb3BlVG9FeGlzdGluZ0F0b21TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKICAgICBp
ZiAodmFsdWVJbnRlcm5hbCgpLmltcGwoKS0+aXNBdG9tKCkpCkBAIC03ODMsNyArNzgzLDcgQEAg
QUxXQVlTX0lOTElORSBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IEpTUwogaW5saW5lIGNvbnN0IFN0
cmluZyYgSlNTdHJpbmc6OnZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0
CiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2
bSgpLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0Mo
KTsKICAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBK
U1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGUoZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gdmFsdWVJbnRlcm5hbCgpOwpAQCAtNzkzLDcgKzc5Myw3IEBAIGlubGluZSBjb25zdCBTdHJp
bmcmIEpTU3RyaW5nOjp0cnlHZXRWYWwKIHsKICAgICBpZiAoYWxsb2NhdGlvbkFsbG93ZWQpIHsK
ICAgICAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQodm0oKS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgICAgIHZtKCkuaGVhcC52ZXJp
ZnlDYW5HQygpOwogICAgICAgICBpZiAoaXNSb3BlKCkpIHsKICAgICAgICAgICAgIC8vIFBhc3Mg
bnVsbHB0ciBmb3IgdGhlIEpTR2xvYmFsT2JqZWN0IHNvIHRoYXQgcmVzb2x2ZVJvcGUgZG9lcyBu
b3QgdGhyb3cgaW4gdGhlIGV2ZW50IG9mIGFuIE9PTSBlcnJvci4KICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGUobnVs
bHB0cik7CkBAIC05ODMsNyArOTgzLDcgQEAgaW5saW5lIGJvb2wgaXNKU1N0cmluZyhKU1ZhbHVl
IHYpCiBBTFdBWVNfSU5MSU5FIFN0cmluZ1ZpZXcgSlNSb3BlU3RyaW5nOjp1bnNhZmVWaWV3KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKHZhbGlkYXRlREZH
RG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhwZWN0RG9lc0dDKCkp
OworICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAoaXNTdWJzdHJpbmco
KSkgewogICAgICAgICBhdXRvJiBiYXNlID0gc3Vic3RyaW5nQmFzZSgpLT52YWx1ZUludGVybmFs
KCk7CiAgICAgICAgIGlmIChiYXNlLmlzOEJpdCgpKQpAQCAtOTk2LDcgKzk5Niw3IEBAIEFMV0FZ
U19JTkxJTkUgU3RyaW5nVmlldyBKU1JvcGVTdHJpbmc6OnUKIEFMV0FZU19JTkxJTkUgU3RyaW5n
Vmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nIEpTUm9wZVN0cmluZzo6dmlld1dpdGhVbmRlcmx5aW5n
U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKHZh
bGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhwZWN0
RG9lc0dDKCkpOworICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAoaXNT
dWJzdHJpbmcoKSkgewogICAgICAgICBhdXRvJiBiYXNlID0gc3Vic3RyaW5nQmFzZSgpLT52YWx1
ZUludGVybmFsKCk7CiAgICAgICAgIGlmIChiYXNlLmlzOEJpdCgpKQpAQCAtMTAxMCw3ICsxMDEw
LDcgQEAgQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdAogQUxXQVlTX0lO
TElORSBTdHJpbmdWaWV3IEpTU3RyaW5nOjp1bnNhZmVWaWV3KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBS
RUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bSgpLmhl
YXAudmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+dW5zYWZlVmlldyhnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiB2YWx1ZUludGVybmFsKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkocmV2aXNpb24gMjYy
NDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgQUxXQVlTX0lOTElORSBKU0FycmF5
KiBjcmVhdGVSZWdFeHBNYXRjaAogICAgIFJlZ0V4cCogcmVnRXhwLCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgTWF0Y2hSZXN1bHQmIHJlc3VsdCkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0Mp
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAg
ICB2bS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAKICAgICBWZWN0b3I8aW50LCAzMj4gc3VicGF0dGVy
blJlc3VsdHM7CiAgICAgaW50IHBvc2l0aW9uID0gcmVnRXhwLT5tYXRjaElubGluZShnbG9iYWxP
YmplY3QsIHZtLCBpbnB1dFZhbHVlLCBzdGFydE9mZnNldCwgc3VicGF0dGVyblJlc3VsdHMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400883</attachid>
            <date>2020-06-02 19:30:15 -0700</date>
            <delta_ts>2020-06-02 20:06:44 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-212680.patch</filename>
            <type>text/plain</type>
            <size>42676</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyNDcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NSBA
QAorMjAyMC0wNi0wMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW5oYW5jZSBEb2VzR0MgdmVyaWZpY2F0aW9uIHRvIHByaW50IG1vcmUgdXNlZnVsIGluZm8gd2hl
biB2ZXJpZmljYXRpb24gZmFpbHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTI2ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXaGVuIERvZXNHQyB2ZXJpZmljYXRpb24gZmFpbHMsIHRoZSBmaXJzdCBz
dGVwIG9mIGRlYnVnZ2luZyBpdCB3b3VsZCBiZSB0byBmaW5kCisgICAgICAgIG91dCB3aGF0IGFu
ZCB3aGljaCBERkcgbm9kZSByZXN1bHRlZCBpbiB0aGUgZmFpbGVkIHZlcmlmaWNhdGlvbi4gIElu
IHByZS1leGlzdGluZworICAgICAgICBjb2RlLCBhbGwgd2UgZ2V0IGlzIGFuIGFzc2VydGlvbiBm
YWlsdXJlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhhdCB0aGUgdmVyaWZp
ZXIgd2lsbCBkdW1wIHVzZWZ1bCBpbmZvLiAgSGVyZSdzIGFuIGV4YW1wbGU6CisKKyAgICAgICAg
ICAgIEVycm9yOiBEb2VzR0MgZmFpbGVkIEAgREAzNCBEYXRlR2V0SW50MzJPck5hTiBpbiAjRHRD
SE16OlsweDExMzViZDFkMC0+MHgxMTM1YmNhYjAtPjB4MTEzNWU1YzgwLCBERkdGdW5jdGlvbkNh
bGwsIDE1MCAoRGlkVHJ5VG9FbnRlckluTG9vcCldCisgICAgICAgICAgICAgICAgWzBdIGZyYW1l
IDB4N2ZmZWU4Mjg1NjYwIHsKKyAgICAgICAgICAgICAgICAgIG5hbWU6IAorICAgICAgICAgICAg
ICAgICAgc291cmNlVVJMOiAKKyAgICAgICAgICAgICAgICAgIGlzSW5saW5lZEZyYW1lOiBmYWxz
ZQorICAgICAgICAgICAgICAgICAgY2FsbGVlOiAweDExMzVmNjgyMAorICAgICAgICAgICAgICAg
ICAgcmV0dXJuUEM6IDB4NTBjZTYxMjQ4YWU2CisgICAgICAgICAgICAgICAgICBjYWxsZXJGcmFt
ZTogMHg3ZmZlZTgyODU2ZjAKKyAgICAgICAgICAgICAgICAgIHJhd0xvY2F0aW9uQml0czogNSAw
eDUKKyAgICAgICAgICAgICAgICAgIGNvZGVCbG9jazogMHgxMTM1YmQxZDAgI0R0Q0hNejpbMHgx
MTM1YmQxZDAtPjB4MTEzNWJjYWIwLT4weDExMzVlNWM4MCwgREZHRnVuY3Rpb25DYWxsLCAxNTAg
KERpZFRyeVRvRW50ZXJJbkxvb3ApXQorICAgICAgICAgICAgICAgICAgICBoYXNDb2RlT3JpZ2lu
czogdHJ1ZQorICAgICAgICAgICAgICAgICAgICBjYWxsU2l0ZUluZGV4OiA1IG9mIDEzCisgICAg
ICAgICAgICAgICAgICAgIGppdENvZGU6IDB4MTEzMDIwMjAwIHN0YXJ0IDB4NTBjZTYxMjE0YzYw
IGVuZCAweDUwY2U2MTIxOWIwMAorICAgICAgICAgICAgICAgICAgICBsaW5lOiAxCisgICAgICAg
ICAgICAgICAgICAgIGNvbHVtbjogNjAKKyAgICAgICAgICAgICAgICAgIEVudHJ5RnJhbWU6IDB4
N2ZmZWU4Mjg1ODYwCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFsxXSBmcmFt
ZSAweDdmZmVlODI4NTZmMCB7CisgICAgICAgICAgICAgICAgICBuYW1lOiAKKyAgICAgICAgICAg
ICAgICAgIHNvdXJjZVVSTDogZGF0ZS1mb3JtYXQteHBhcmIuanMKKyAgICAgICAgICAgICAgICAg
IGlzSW5saW5lZEZyYW1lOiBmYWxzZQorICAgICAgICAgICAgICAgICAgY2FsbGVlOiAweDExMzVm
NjVhMAorICAgICAgICAgICAgICAgICAgcmV0dXJuUEM6IDB4NTBjZTYxMjI3ZTk5CisgICAgICAg
ICAgICAgICAgICBjYWxsZXJGcmFtZTogMHg3ZmZlZTgyODU3NzAKKyAgICAgICAgICAgICAgICAg
IHJhd0xvY2F0aW9uQml0czogNCAweDQKKyAgICAgICAgICAgICAgICAgIGNvZGVCbG9jazogMHgx
MTM1YmQwYTAgI0JVNlpjZDpbMHgxMTM1YmQwYTAtPjB4MTEzNWJjMjYwLT4weDExMzVlNTE4MCwg
REZHRnVuY3Rpb25DYWxsLCAxMTIgKERpZFRyeVRvRW50ZXJJbkxvb3ApXQorICAgICAgICAgICAg
ICAgICAgICBoYXNDb2RlT3JpZ2luczogdHJ1ZQorICAgICAgICAgICAgICAgICAgICBjYWxsU2l0
ZUluZGV4OiA0IG9mIDEyCisgICAgICAgICAgICAgICAgICAgIGppdENvZGU6IDB4MTEzMDA0MDAw
IHN0YXJ0IDB4NTBjZTYxMjEyYzYwIGVuZCAweDUwY2U2MTIxNDk2MAorICAgICAgICAgICAgICAg
ICAgICBsaW5lOiAyNgorICAgICAgICAgICAgICAgICAgICBjb2x1bW46IDIyCisgICAgICAgICAg
ICAgICAgICBFbnRyeUZyYW1lOiAweDdmZmVlODI4NTg2MAorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBbMl0gZnJhbWUgMHg3ZmZlZTgyODU3NzAgeworICAgICAgICAgICAgICAg
ICAgbmFtZTogCisgICAgICAgICAgICAgICAgICBzb3VyY2VVUkw6IGRhdGUtZm9ybWF0LXhwYXJi
LmpzCisgICAgICAgICAgICAgICAgICBpc0lubGluZWRGcmFtZTogZmFsc2UKKyAgICAgICAgICAg
ICAgICAgIGNhbGxlZTogMHgxMTM1ZjY0ZTAKKyAgICAgICAgICAgICAgICAgIHJldHVyblBDOiAw
eDEwODA1OGViMQorICAgICAgICAgICAgICAgICAgY2FsbGVyRnJhbWU6IDB4N2ZmZWU4Mjg1N2Uw
CisgICAgICAgICAgICAgICAgICByYXdMb2NhdGlvbkJpdHM6IDEwMDEgMHgzZTkKKyAgICAgICAg
ICAgICAgICAgIGNvZGVCbG9jazogMHgxMTM1YmMxMzAgI0RBUzl4ZTpbMHgxMTM1YmMxMzAtPjB4
MTEzNWU1MTAwLCBCYXNlbGluZUZ1bmN0aW9uQ2FsbCwgMTE0OV0KKyAgICAgICAgICAgICAgICAg
ICAgYmMjMTAwMSBvZiAxMTQ5CisgICAgICAgICAgICAgICAgICAgIGxpbmU6IDQxNworICAgICAg
ICAgICAgICAgICAgICBjb2x1bW46IDM4CisgICAgICAgICAgICAgICAgICBFbnRyeUZyYW1lOiAw
eDdmZmVlODI4NTg2MAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBbM10gZnJh
bWUgMHg3ZmZlZTgyODU3ZTAgeworICAgICAgICAgICAgICAgICAgbmFtZTogZ2xvYmFsIGNvZGUK
KyAgICAgICAgICAgICAgICAgIHNvdXJjZVVSTDogZGF0ZS1mb3JtYXQteHBhcmIuanMKKyAgICAg
ICAgICAgICAgICAgIGlzSW5saW5lZEZyYW1lOiBmYWxzZQorICAgICAgICAgICAgICAgICAgY2Fs
bGVlOiAweDExMzBmOTdiOAorICAgICAgICAgICAgICAgICAgcmV0dXJuUEM6IDB4MTA4MDM5MDQz
CisgICAgICAgICAgICAgICAgICBjYWxsZXJGcmFtZTogMHgwCisgICAgICAgICAgICAgICAgICBy
YXdMb2NhdGlvbkJpdHM6IDIzIDB4MTcKKyAgICAgICAgICAgICAgICAgIGNvZGVCbG9jazogMHgx
MTM1YmMwMDAgPGdsb2JhbD4jQ3VrWHZ0OlsweDExMzViYzAwMC0+MHgxMTMwY2Q3NjgsIExMSW50
R2xvYmFsLCA4MV0KKyAgICAgICAgICAgICAgICAgICAgYmMjMjMgb2YgODEKKyAgICAgICAgICAg
ICAgICAgICAgbGluZTogNDI1CisgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogMworICAgICAg
ICAgICAgICAgICAgRW50cnlGcmFtZTogMHg3ZmZlZTgyODU4NjAKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IGV4cGVjdERvZXNHQygpCisKKyAgICAg
ICAgVGhlIGVycm9yIG1lc3NhZ2Ugbm93IGNvbWVzIHdpdGggdGhlIG5vZGUgaW5kZXgsIE5vZGVU
eXBlLCBjb2RlQmxvY2sgd2hpY2ggdGhpcworICAgICAgICBmYWlsdXJlIHdhcyBmb3VuZCBpbiwg
YW5kIHRoZSBKUyBjYWxsIHN0YWNrIHRoYXQgbGVkIHRvIHRoZSBmYWlsdXJlLgorCisgICAgICAg
IENoYW5nZXMgbWFkZToKKworICAgICAgICAxLiBJbnRyb2R1Y2VkIGEgRG9lc0dDQ2hlY2sgdmFs
dWUgdGhhdCBpcyB1c2VkIHRvIGVuY29kZSBzb21lIG9mIHRoZSBhYm92ZSBkYXRhLgorCisgICAg
ICAgICAgIFByZXZpb3VzbHksIHdlIG9ubHkgcmVjb3JkZWQgd2hldGhlciBkb2VzR0MoKSByZXR1
cm5zIHRydWUgb3IgZmFsc2UgZm9yIHRoZQorICAgICAgICAgICBOb2RlLiAgTm93LCB3ZSByZWNv
cmQgdGhlIG5vZGVJbmRleCBhbmQgbm9kZU9wIGFzIHdlbGwuCisKKyAgICAgICAgICAgTm90ZSB0
aGF0IHdlIGFsc28gc2V0IERvZXNHQyBleHBlY3RhdGlvbnMgZm9yIE9TUiBleGl0cy4gIFNvLCBE
b2VzR0NDaGVjaworICAgICAgICAgICBpbmNsdWRlcyBTcGVjaWFsIGNhc2VzIGZvciB0aG9zZS4K
KworICAgICAgICAyLiBBZGRlZCBzdG9yZTY0KFRydXN0ZWRJbW02NCBpbW0sIGNvbnN0IHZvaWQq
IGFkZHJlc3MpIGVtaXR0ZXJzIGZvciBYODZfNjQgYW5kIEFSTTY0LgorICAgICAgICAgICBBbHNv
IGFkZGVkIGEgdGVzdCBmb3IgdGhpcyBuZXcgZW1pdHRlciBpbiB0ZXN0bWFzbS4KKworICAgICAg
ICAgICBOb3RlOiBmb3IgdGhlIFg4Nl82NCBlbWl0dGVyLCB3ZSBkb24ndCBoYXZlIGVub3VnaCBz
Y3JhdGNoIHJlZ2lzdGVycyB0byBkbyBhCisgICAgICAgICAgIHRydWUgNjQtYml0IHN0b3JlLiAg
U28sIEkgaW1wbGVtZW50ZWQgaXQgd2l0aCAyIDMyLWJpdCBzdG9yZXMgaW5zdGVhZC4gIFNpbmNl
CisgICAgICAgICAgIHRoaXMgaXMgbm90IHVzZWQgaW4gYW55IGhvdCBwYXRocywgdGhpcyBpcyBm
aW5lIGZvciBub3cuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OnN0b3JlNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6c3RvcmU2NCk6CisgICAgICAgICog
YXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6dGVzdFN0b3JlNjRJbW02NEFk
ZHJlc3NQb2ludGVyKToKKyAgICAgICAgKEpTQzo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHRG9l
c0dDQ2hlY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpEb2VzR0NDaGVjazo6dmVy
aWZ5Q2FuR0MpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0NDaGVjay5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6REZHOjpEb2VzR0NDaGVjazo6RG9lc0dDQ2hlY2spOgorICAgICAgICAoSlNDOjpE
Rkc6OkRvZXNHQ0NoZWNrOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNr
OjpzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNrOjpleHBlY3REb2VzR0MpOgor
ICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNrOjpzcGVjaWFsKToKKyAgICAgICAgKEpTQzo6
REZHOjpEb2VzR0NDaGVjazo6bm9kZUluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpEb2VzR0ND
aGVjazo6bm9kZU9wKToKKyAgICAgICAgKEpTQzo6REZHOjpEb2VzR0NDaGVjazo6aXNTcGVjaWFs
KToKKyAgICAgICAgKEpTQzo6REZHOjpEb2VzR0NDaGVjazo6c3BlY2lhbEluZGV4KToKKyAgICAg
ICAgKEpTQzo6REZHOjpEb2VzR0NDaGVjazo6Yml0cyk6CisgICAgICAgICogZGZnL0RGR0dyYXBo
LmNwcDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
b3BlcmF0aW9uQ29tcGlsZU9TUkV4aXQpOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNv
bXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlTm9kZSk6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJh
dGlvbkNvbXBpbGVGVExPU1JFeGl0KToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vic3BhY2Uu
Y3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjp0cnlBbGxvY2F0ZVNsb3cpOgor
ICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjpyZWFsbG9jYXRlUHJlY2lzZUFsbG9jYXRp
b25Ob25WaXJ0dWFsKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OmFsbG9jYXRlTm9uVmlydHVhbCk6Cisg
ICAgICAgICogaGVhcC9EZWZlckdDLmg6CisgICAgICAgIChKU0M6OkRlZmVyR0M6On5EZWZlckdD
KToKKyAgICAgICAgKiBoZWFwL0dDRGVmZXJyYWxDb250ZXh0SW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpHQ0RlZmVycmFsQ29udGV4dDo6fkdDRGVmZXJyYWxDb250ZXh0KToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0Tm93KToKKyAgICAgICAg
KEpTQzo6SGVhcDo6Y29sbGVjdEFzeW5jKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdFN5
bmMpOgorICAgICAgICAoSlNDOjpIZWFwOjpzdG9wSWZOZWNlc3NhcnlTbG93KToKKyAgICAgICAg
KEpTQzo6SGVhcDo6Y29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcik6CisgICAgICAgICogaGVhcC9I
ZWFwLmg6CisgICAgICAgIChKU0M6OkhlYXA6OmFkZHJlc3NPZkRvZXNHQyk6CisgICAgICAgIChK
U0M6OkhlYXA6OnNldERvZXNHQ0V4cGVjdGF0aW9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dmVy
aWZ5Q2FuR0MpOgorICAgICAgICAoSlNDOjpIZWFwOjpleHBlY3REb2VzR0MgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpIZWFwOjpzZXRFeHBlY3REb2VzR0MpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpIZWFwOjphZGRyZXNzT2ZFeHBlY3REb2VzR0MpOiBEZWxldGVkLgorICAgICAg
ICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6YWNxdWlyZUFjY2Vz
cyk6CisgICAgICAgIChKU0M6OkhlYXA6OnN0b3BJZk5lY2Vzc2FyeSk6CisgICAgICAgICogaGVh
cC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6TG9jYWxBbGxvY2F0b3I6
OmFsbG9jYXRlKToKKyAgICAgICAgKiBoZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6UHJlY2lzZUFsbG9jYXRpb246OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OlBy
ZWNpc2VBbGxvY2F0aW9uOjpjcmVhdGVGb3JMb3dlclRpZXIpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6anNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1N0cmluZzo6dG9BdG9tU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SlNTdHJpbmc6OnRvRXhpc3RpbmdBdG9tU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNT
dHJpbmc6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OnRyeUdldFZhbHVl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjp1bnNhZmVWaWV3IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjp2aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcgY29u
c3QpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dW5zYWZlVmlldyBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlUmVn
RXhwTWF0Y2hlc0FycmF5KToKKwogMjAyMC0wNi0wMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgVk1JbnNwZWN0b3IgQVBJcyBzaG91bGQgYmUgdGFraW5nIGEgVk0q
IGluc3RlYWQgb2YgYSBKU0dsb2JhbE9iamVjdCouCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CShyZXZpc2lvbiAyNjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM0Nyw2ICszNDcsNyBAQCBkZmcvREZHRGVzaXJlZFdh
dGNocG9pbnRzLmNwcAogZGZnL0RGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5jcHAKIGRmZy9ERkdE
aXNhc3NlbWJsZXIuY3BwCiBkZmcvREZHRG9lc0dDLmNwcAorZGZnL0RGR0RvZXNHQ0NoZWNrLmNw
cAogZGZnL0RGR0RyaXZlci5jcHAKIGRmZy9ERkdFZGdlLmNwcAogZGZnL0RGR0Vwb2NoLmNwcApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTM2LDYgKzE5MzYsNyBAQAogCQlGRUI1MUY2QzFBOTdC
Njg4MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjUxRjZCMUE5N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNz
MTQxODA5Lm1tICovOyB9OwogCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5k
bGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRUI1OEMxMzE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVDMTYwMzIyMzM5
RTlGOTAwQTA0Q0I4IC8qIENlbGxTaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRUMxNjAzMTIzMzlFOUY5MDBBMDRDQjggLyogQ2VsbFNpemUuaCAq
LzsgfTsKKwkJRkVDM0EzQTEyNDg3MzVDQTAwMzk1QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUMzQTNBMDI0ODcz
NUJDMDAzOTVCNTQgLyogREZHRG9lc0dDQ2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUM1Nzk3MzIzMTA1QjUxMDBCQ0E4M0YgLyogVk1J
bnNwZWN0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRUM1Nzk3MjIzMTA1QjQ4MDBCQ0E4M0YgLyogVk1JbnNwZWN0b3JJbmxpbmVzLmgg
Ki87IH07CiAJCUZFQzU3OTc2MjMxMDVGNEUwMEJDQTgzRiAvKiBJbnRlZ3JpdHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzU3OTc1MjMxMDVGNDMw
MEJDQTgzRiAvKiBJbnRlZ3JpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlGRUM1Nzk3ODIzMTA5NTRDMDBCQ0E4M0YgLyogSW50ZWdyaXR5SW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVD
NTc5NzcyMzEwOTU0QjAwQkNBODNGIC8qIEludGVncml0eUlubGluZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTIzMiw2ICs1MjMzLDggQEAK
IAkJRkVCNThDMTIxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcnJvckhhbmRsaW5nU2NvcGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUI1OEMxMzE4N0I4QjE2MDA5OEVGMEIg
LyogRXJyb3JIYW5kbGluZ1Njb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEVycm9ySGFuZGxpbmdTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUMx
NjAzMTIzMzlFOUY5MDBBMDRDQjggLyogQ2VsbFNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ2VsbFNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVD
M0EzOUYyNDg3MzVCQzAwMzk1QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERGR0RvZXNHQ0NoZWNrLmNwcDsgcGF0aCA9IGRmZy9ERkdEb2VzR0NDaGVjay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQzNBM0EwMjQ4NzM1QkMwMDM5NUI1NCAv
KiBERkdEb2VzR0NDaGVjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdEb2VzR0NDaGVjay5oOyBwYXRo
ID0gZGZnL0RGR0RvZXNHQ0NoZWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
QzU3OTcyMjMxMDVCNDgwMEJDQTgzRiAvKiBWTUluc3BlY3RvcklubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk1JbnNwZWN0b3JJbmxpbmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFQzU3OTc0MjMxMDVGNDIwMEJDQTgzRiAvKiBJbnRlZ3JpdHku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZWdyaXR5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVDNTc5NzUyMzEwNUY0MzAwQkNBODNGIC8q
IEludGVncml0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlZ3JpdHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc4OTYsNiArNzg5OSw4IEBACiAJCQkJ
MEZGNDI3NjIxNTkxQTFDOTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oICovLAogCQkJCTBG
NUExMjcxMTkyRDlGREYwMDg3NjRBMyAvKiBERkdEb2VzR0MuY3BwICovLAogCQkJCTBGNUExMjcy
MTkyRDlGREYwMDg3NjRBMyAvKiBERkdEb2VzR0MuaCAqLywKKwkJCQlGRUMzQTM5RjI0ODczNUJD
MDAzOTVCNTQgLyogREZHRG9lc0dDQ2hlY2suY3BwICovLAorCQkJCUZFQzNBM0EwMjQ4NzM1QkMw
MDM5NUI1NCAvKiBERkdEb2VzR0NDaGVjay5oICovLAogCQkJCTBGRDgxQUQwMTU0RkI0RUIwMDk4
M0U3MiAvKiBERkdEb21pbmF0b3JzLmggKi8sCiAJCQkJMEYxRTNBNDQxNTM0Q0JBRDAwMEY5NDU2
IC8qIERGR0RvdWJsZUZvcm1hdFN0YXRlLmggKi8sCiAJCQkJMEZEM0M4MjAxNDExNUNGODAwRkQ4
MUNCIC8qIERGR0RyaXZlci5jcHAgKi8sCkBAIC0xMDE5Niw2ICsxMDIwMSw3IEBACiAJCQkJNzlE
NUNENUIxQzExMDZBOTAwQ0VDQTA3IC8qIFNhbXBsaW5nUHJvZmlsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRTA1MDI4MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRTA1MDI5MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVu
dHNUYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVDM0EzQTEyNDg3MzVDQTAwMzk1QjU0IC8q
IERGR0RvZXNHQ0NoZWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyQjFBQTkwOTU2MDBE
MzNCMzMgLyogU2NvcGVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTUyMTdFRTI3
NDkwMEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMzMTExQjhCMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oIGluIEhlYWRlcnMgKi8s
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaAkocmV2aXNpb24gMjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0
NTksNiArMTQ1OSwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlPDY0PihzcmMsIGFkZHJlc3Mp
OwogICAgIH0KIAorICAgIHZvaWQgc3RvcmU2NChUcnVzdGVkSW1tNjQgaW1tLCBjb25zdCB2b2lk
KiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSkgeworICAgICAgICAg
ICAgc3RvcmU2NChBUk02NFJlZ2lzdGVyczo6enIsIGFkZHJlc3MpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgbW92ZVRvQ2FjaGVkUmVnKGltbSwgZGF0YU1lbW9y
eVRlbXBSZWdpc3RlcigpKTsKKyAgICAgICAgc3RvcmU2NChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRy
ZXNzKTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTMyIGltbSwgSW1wbGlj
aXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBzdG9yZTY0KFRydXN0ZWRJbW02NChp
bW0ubV92YWx1ZSksIGFkZHJlc3MpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gMjYyNDY3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NjcsNiArOTY3LDE1IEBAIHB1YmxpYzoKICAgICAgICAg
fQogICAgIH0KIAorICAgIHZvaWQgc3RvcmU2NChUcnVzdGVkSW1tNjQgaW1tLCB2b2lkKiBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgdWludDMyX3QgbG8gPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
aW1tLm1fdmFsdWUpOworICAgICAgICB1aW50MzJfdCBoaSA9IHN0YXRpY19jYXN0PHVpbnQzMl90
PihpbW0ubV92YWx1ZSA+PiAzMik7CisgICAgICAgIHZvaWQqIGhpQWRkcmVzcyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDhfdCo+KGFkZHJlc3MpICsgNDsKKyAgICAgICAgc3RvcmUzMihUcnVzdGVk
SW1tMzIobG8pLCBhZGRyZXNzKTsKKyAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoaGkpLCBo
aUFkZHJlc3MpOworICAgIH0KKwogICAgIHZvaWQgc3RvcmU2NChUcnVzdGVkSW1tMzIgaW1tLCBJ
bXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFf
aTMybShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAkocmV2aXNpb24g
MjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY1OCw2ICs2NTgsMzEgQEAgdm9pZCB0ZXN0Q291bnRUcmFpbGlu
Z1plcm9zNjRXaXRob3V0TnVsbAogICAgIGJvb2wgd29yZENhbkJlWmVybyA9IGZhbHNlOwogICAg
IHRlc3RDb3VudFRyYWlsaW5nWmVyb3M2NEltcGwod29yZENhbkJlWmVybyk7CiB9CisKK3ZvaWQg
dGVzdFN0b3JlNjRJbW02NEFkZHJlc3NQb2ludGVyKCkKK3sKKyAgICBhdXRvIGRvVGVzdCA9IFtd
IChpbnQ2NF90IHZhbHVlKSB7CisgICAgICAgIGludDY0X3QgZGVzdDsKKyAgICAgICAgdm9pZCog
ZGVzdEFkZHJlc3MgPSAmZGVzdDsKKworICAgICAgICBhdXRvIHRlc3QgPSBjb21waWxlKFs9XSAo
Q0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGpp
dCk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NCh2
YWx1ZSksIGRlc3RBZGRyZXNzKTsKKyAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGpp
dCk7CisgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgIH0pOworCisgICAgICAgIGludm9r
ZTxzaXplX3Q+KHRlc3QpOworICAgICAgICBDSEVDS19FUShkZXN0LCB2YWx1ZSk7CisgICAgfTsK
KyAgICAKKyAgICBmb3IgKGF1dG8gdmFsdWUgOiBpbnQ2NE9wZXJhbmRzKCkpCisgICAgICAgIGRv
VGVzdCh2YWx1ZSk7CisKKyAgICBkb1Rlc3QoMHg5ODc2NTU1NUFBQUE0MzIxKTsKKyAgICBkb1Rl
c3QoMHhBQUFBNDMyMTk4NzY1NTU1KTsKK30KKwogI2VuZGlmIC8vIENQVShYODZfNjQpIHx8IENQ
VShBUk02NCkKIAogdm9pZCB0ZXN0Q29tcGFyZURvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91Ymxl
Q29uZGl0aW9uIGNvbmRpdGlvbikKQEAgLTI0OTksNiArMjUyNCw3IEBAIHZvaWQgcnVuKGNvbnN0
IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdENsZWFyQml0czY0V2l0aE1hc2tUZXJuYXJ5KCkp
OwogICAgIFJVTih0ZXN0Q291bnRUcmFpbGluZ1plcm9zNjQoKSk7CiAgICAgUlVOKHRlc3RDb3Vu
dFRyYWlsaW5nWmVyb3M2NFdpdGhvdXROdWxsQ2hlY2soKSk7CisgICAgUlVOKHRlc3RTdG9yZTY0
SW1tNjRBZGRyZXNzUG9pbnRlcigpKTsKICNlbmRpZgogCiAjaWYgQ1BVKEFSTTY0KQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0NDaGVjay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0NDaGVjay5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0NDaGVjay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJERkdEb2Vz
R0NDaGVjay5oIgorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCisjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIlZNSW5zcGVjdG9yLmgiCisjaW5jbHVk
ZSA8d3RmL0RhdGFMb2cuaD4KKworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgREZHIHsKKwor
I2lmIEVOQUJMRShERkdfRE9FU19HQ19WQUxJREFUSU9OKQorCitleHRlcm4gY29uc3QgY2hhciog
ZGZnT3BOYW1lc1tdOworCitKU19FWFBPUlRfUFJJVkFURSB2b2lkIERvZXNHQ0NoZWNrOjp2ZXJp
ZnlDYW5HQyhWTSYgdm0pCit7CisgICAgaWYgKCFleHBlY3REb2VzR0MoKSkgeworICAgICAgICBk
YXRhTG9nKCJFcnJvcjogRG9lc0dDIGZhaWxlZCIpOworICAgICAgICBpZiAoaXNTcGVjaWFsKCkp
IHsKKyAgICAgICAgICAgIHN3aXRjaCAoc3BlY2lhbCgpKSB7CisgICAgICAgICAgICBjYXNlIFNw
ZWNpYWw6OlVuaW5pdGlhbGl6ZWQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIFNwZWNpYWw6OkRGR09TUkV4aXQ6CisgICAgICAgICAgICAgICAgZGF0YUxvZygiIEAg
REZHIG9zciBleGl0Iik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IFNwZWNpYWw6OkZUTE9TUkV4aXQ6CisgICAgICAgICAgICAgICAgZGF0YUxvZygiIEAgRlRMIG9z
ciBleGl0Iik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNwZWNp
YWw6OlJlc2VydmVkVW51c2VkOgorICAgICAgICAgICAgY2FzZSBTcGVjaWFsOjpOdW1iZXJPZlNw
ZWNpYWxzOgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZGF0YUxvZygiIEAgREAi
LCBub2RlSW5kZXgoKSwgIiAiLCBERkc6OmRmZ09wTmFtZXNbbm9kZU9wKCldKTsKKworICAgICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHZtLnRvcENhbGxGcmFtZTsKKyAgICAgICAgaWYgKGNh
bGxGcmFtZSkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpOworICAgICAgICAgICAgZGF0YUxvZ0xuKCIgaW4gIiwgY29kZUJsb2NrKTsK
KyAgICAgICAgICAgIFZNSW5zcGVjdG9yOjpkdW1wU3RhY2soJnZtLCBjYWxsRnJhbWUpOworICAg
ICAgICB9CisgICAgICAgIGRhdGFMb2dMbigpOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVChl
eHBlY3REb2VzR0MoKSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKERGR19ET0VTX0dDX1ZBTElEQVRJ
T04pCisKK30gLy8gbmFtZXNwYWNlIERGRworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDQ2hlY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQ0NoZWNrLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0NDaGVjay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBWTTsKKworbmFt
ZXNwYWNlIERGRyB7CisKK3N0cnVjdCBEb2VzR0NDaGVjayB7CisgICAgZW51bSBjbGFzcyBTcGVj
aWFsIHsKKyAgICAgICAgUmVzZXJ2ZWRVbnVzZWQsIC8vIHNvIHRoYXQgc3BlY2lhbHMgc3RhcnQg
d2l0aCAxLiBpc1NwZWNpYWwoKSByZWxpZXMgb24gdGhpcy4KKyAgICAgICAgVW5pbml0aWFsaXpl
ZCwKKyAgICAgICAgREZHT1NSRXhpdCwKKyAgICAgICAgRlRMT1NSRXhpdCwKKyAgICAgICAgTnVt
YmVyT2ZTcGVjaWFscworICAgIH07CisKKyAgICBEb2VzR0NDaGVjaygpCisgICAgICAgIDogbV92
YWx1ZShlbmNvZGUodHJ1ZSwgU3BlY2lhbDo6VW5pbml0aWFsaXplZCkpCisgICAgeyB9CisKKyAg
ICBzdGF0aWMgdWludDY0X3QgZW5jb2RlKGJvb2wgZXhwZWN0RG9lc0dDLCB1bnNpZ25lZCBub2Rl
SW5kZXgsIHVuc2lnbmVkIG5vZGVPcCkKKyAgICB7CisgICAgICAgIHVpbnQ2NF90IHJlc3VsdCA9
IGJpdHMobm9kZUluZGV4KSA8PCBub2RlSW5kZXhTaGlmdDsKKyAgICAgICAgcmVzdWx0IHw9IGJp
dHMobm9kZU9wKSA8PCBub2RlT3BTaGlmdDsKKyAgICAgICAgcmVzdWx0IHw9IGJpdHMoZXhwZWN0
RG9lc0dDKSA8PCBleHBlY3REb2VzR0NTaGlmdDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisKKyAgICBzdGF0aWMgdWludDY0X3QgZW5jb2RlKGJvb2wgZXhwZWN0RG9lc0dDLCBTcGVj
aWFsIHNwZWNpYWwpCisgICAgeworICAgICAgICBBU1NFUlQoYml0cyhzcGVjaWFsKSA8IG51bWJl
ck9mU3BlY2lhbHMpOworICAgICAgICB1aW50NjRfdCByZXN1bHQgPSBiaXRzKHNwZWNpYWwpIDw8
IHNwZWNpYWxTaGlmdDsKKyAgICAgICAgcmVzdWx0IHw9IGJpdHMoZXhwZWN0RG9lc0dDKSA8PCBl
eHBlY3REb2VzR0NTaGlmdDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB2
b2lkIHNldChib29sIGV4cGVjdERvZXNHQywgdW5zaWduZWQgbm9kZUluZGV4LCB1bnNpZ25lZCBu
b2RlT3ApCisgICAgeworICAgICAgICBtX3ZhbHVlID0gZW5jb2RlKGV4cGVjdERvZXNHQywgbm9k
ZUluZGV4LCBub2RlT3ApOworICAgIH0KKworICAgIHZvaWQgc2V0KGJvb2wgZXhwZWN0RG9lc0dD
LCBTcGVjaWFsIHNwZWNpYWwpCisgICAgeworICAgICAgICBtX3ZhbHVlID0gZW5jb2RlKGV4cGVj
dERvZXNHQywgc3BlY2lhbCk7CisgICAgfQorCisgICAgYm9vbCBleHBlY3REb2VzR0MoKSB7IHJl
dHVybiBtX3ZhbHVlICYgZXhwZWN0RG9lc0dDTWFzazsgfQorICAgIFNwZWNpYWwgc3BlY2lhbCgp
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNwZWNpYWw+KHNwZWNpYWxJbmRleCgpKTsgfQorICAgIHVu
c2lnbmVkIG5vZGVJbmRleCgpIHsgcmV0dXJuIG1fdmFsdWUgPj4gbm9kZUluZGV4U2hpZnQ7IH0K
KyAgICB1bnNpZ25lZCBub2RlT3AoKSB7IHJldHVybiAobV92YWx1ZSA+PiBub2RlT3BTaGlmdCkg
JiBub2RlT3BNYXNrOyB9CisKKyAgICBib29sIGlzU3BlY2lhbCgpIHsgcmV0dXJuIHNwZWNpYWxJ
bmRleCgpOyB9CisKKyAgICB2b2lkIHZlcmlmeUNhbkdDKFZNJik7CisKK3ByaXZhdGU6CisgICAg
dW5zaWduZWQgc3BlY2lhbEluZGV4KCkgeyByZXR1cm4gKG1fdmFsdWUgPj4gc3BlY2lhbFNoaWZ0
KSAmIHNwZWNpYWxNYXNrOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdWlu
dDY0X3QgYml0cyhUIHZhbHVlKSB7IHJldHVybiBzdGF0aWNfY2FzdDx1aW50NjRfdD4odmFsdWUp
OyB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IG51bWJlck9mU3BlY2lhbHMgPSBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oU3BlY2lhbDo6TnVtYmVyT2ZTcGVjaWFscyk7CisKKyAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGV4cGVjdERvZXNHQ1NoaWZ0ID0gMDsKKyAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIHNwZWNpYWxTaGlmdCA9IDE7CisgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBub2RlT3BTaGlmdCA9IDE2OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgbm9kZUluZGV4U2hpZnQgPSAzMjsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgZXhwZWN0RG9lc0dDTWFzayA9IDB4MTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IHNwZWNpYWxNYXNrID0gMHg3ZmZmOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbm9k
ZU9wTWFzayA9IDB4ZmZmZjsKKworICAgIHVpbnQ2NF90IG1fdmFsdWUgeyAwIH07Cit9OworCit9
IC8vIG5hbWVzcGFjZSBERkcKKwordXNpbmcgREZHOjpEb2VzR0NDaGVjazsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2
aXNpb24gMjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogc3RhdGljIGNvbnN0ZXhwciBib29sIGR1bXBPU1JBdmFpbGFiaWxpdHlEYXRhID0g
ZmFsc2U7CiAKIC8vIENyZWF0ZXMgYW4gYXJyYXkgb2Ygc3RyaW5naXplZCBuYW1lcy4KLXN0YXRp
YyBjb25zdCBjaGFyKiBkZmdPcE5hbWVzW10gPSB7Citjb25zdCBjaGFyKiBkZmdPcE5hbWVzW10g
PSB7CiAjZGVmaW5lIFNUUklOR0laRV9ERkdfT1BfRU5VTShvcGNvZGUsIGZsYWdzKSAjb3Bjb2Rl
ICwKICAgICBGT1JfRUFDSF9ERkdfT1AoU1RSSU5HSVpFX0RGR19PUF9FTlVNKQogI3VuZGVmIFNU
UklOR0laRV9ERkdfT1BfRU5VTQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXQuY3BwCShyZXZpc2lvbiAyNjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBpbGVPU1JFeAogICAgIGlmICh2YWxpZGF0ZURGR0Rv
ZXNHQykgewogICAgICAgICAvLyBXZSdyZSBhYm91dCB0byBleGl0IG9wdGltaXplZCBjb2RlLiBT
bywgdGhlcmUncyBubyBsb25nZXIgYW55IG9wdGltaXplZAogICAgICAgICAvLyBjb2RlIHJ1bm5p
bmcgdGhhdCBleHBlY3RzIG5vIEdDLgotICAgICAgICB2bS5oZWFwLnNldEV4cGVjdERvZXNHQyh0
cnVlKTsKKyAgICAgICAgdm0uaGVhcC5zZXREb2VzR0NFeHBlY3RhdGlvbih0cnVlLCBEb2VzR0ND
aGVjazo6U3BlY2lhbDo6REZHT1NSRXhpdCk7CiAgICAgfQogCiAgICAgaWYgKHZtLmNhbGxGcmFt
ZUZvckNhdGNoKQpAQCAtNTU1LDExICs1NTUsMTEgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhp
dChDQ2FsbEhlbHBlcnMmIAogICAgICAgICAvLyBjb2RlIHJ1bm5pbmcgdGhhdCBleHBlY3RzIG5v
IEdDLiBXZSBuZWVkIHRvIHNldCB0aGlzIGJlZm9yZSBhcmd1bWVudHMKICAgICAgICAgLy8gbWF0
ZXJpYWxpemF0aW9uIGJlbG93IChzZWUgZW1pdFJlc3RvcmVBcmd1bWVudHMoKSkuCiAKLSAgICAg
ICAgLy8gRXZlbiB0aG91Z2ggd2Ugc2V0IEhlYXA6Om1fZXhwZWN0RG9lc0dDIGluIGNvbXBpbGVP
U1JFeGl0KCksIHdlIGFsc28gbmVlZAorICAgICAgICAvLyBFdmVuIHRob3VnaCB3ZSBzZXQgSGVh
cDo6bV9kb2VzR0MgaW4gY29tcGlsZU9TUkV4aXQoKSwgd2UgYWxzbyBuZWVkCiAgICAgICAgIC8v
IHRvIHNldCBpdCBoZXJlIGJlY2F1c2UgY29tcGlsZU9TUkV4aXQoKSBpcyBvbmx5IGNhbGxlZCBv
biB0aGUgZmlyc3QgdGltZQogICAgICAgICAvLyB3ZSBleGl0IGZyb20gdGhpcyBzaXRlLCBidXQg
YWxsIHN1YnNlcXVlbnQgZXhpdHMgd2lsbCB0YWtlIHRoaXMgY29tcGlsZWQKICAgICAgICAgLy8g
cmFtcCB3aXRob3V0IGNhbGxpbmcgY29tcGlsZU9TUkV4aXQoKSBmaXJzdC4KLSAgICAgICAgaml0
LnN0b3JlOChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih0cnVlKSwgdm0uaGVhcC5hZGRyZXNz
T2ZFeHBlY3REb2VzR0MoKSk7CisgICAgICAgIGppdC5zdG9yZTY0KENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTY0KERvZXNHQ0NoZWNrOjplbmNvZGUodHJ1ZSwgRG9lc0dDQ2hlY2s6OlNwZWNpYWw6
OkRGR09TUkV4aXQpKSwgdm0uaGVhcC5hZGRyZXNzT2ZEb2VzR0MoKSk7CiAgICAgfQogCiAgICAg
Ly8gTmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgc3RhY2sgcG9pbnRlciBhY2NvdW50cyBmb3IgdGhl
IHdvcnN0LWNhc2Ugc3RhY2sgdXNhZ2UgYXQgZXhpdC4gVGhpcwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAy
NjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTM4LDcgKzIxMzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpIHsK
ICAgICAgICAgYm9vbCBleHBlY3REb2VzR0MgPSBkb2VzR0MobV9qaXQuZ3JhcGgoKSwgbm9kZSk7
Ci0gICAgICAgIG1faml0LnN0b3JlOChUcnVzdGVkSW1tMzIoZXhwZWN0RG9lc0dDKSwgdm0oKS5o
ZWFwLmFkZHJlc3NPZkV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgbV9qaXQuc3RvcmU2NChUcnVz
dGVkSW1tNjQoRG9lc0dDQ2hlY2s6OmVuY29kZShleHBlY3REb2VzR0MsIG5vZGUtPmluZGV4KCks
IG5vZGUtPm9wKCkpKSwgdm0oKS5oZWFwLmFkZHJlc3NPZkRvZXNHQygpKTsKICAgICB9CiAKICNp
ZiBFTkFCTEUoREZHX1JFR0lTVEVSX0FMTE9DQVRJT05fVkFMSURBVElPTikKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI2
MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzA0LDcgKzcwNCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgaWYg
KHZhbGlkYXRlREZHRG9lc0dDKSB7CiAgICAgICAgICAgICBib29sIGV4cGVjdERvZXNHQyA9IGRv
ZXNHQyhtX2dyYXBoLCBtX25vZGUpOwotICAgICAgICAgICAgbV9vdXQuc3RvcmUobV9vdXQuY29u
c3RCb29sKGV4cGVjdERvZXNHQyksIG1fb3V0LmFic29sdXRlKHZtKCkuaGVhcC5hZGRyZXNzT2ZF
eHBlY3REb2VzR0MoKSkpOworICAgICAgICAgICAgbV9vdXQuc3RvcmUobV9vdXQuY29uc3RJbnQ2
NChEb2VzR0NDaGVjazo6ZW5jb2RlKGV4cGVjdERvZXNHQywgbV9ub2RlLT5pbmRleCgpLCBtX25v
ZGUtPm9wKCkpKSwgbV9vdXQuYWJzb2x1dGUodm0oKS5oZWFwLmFkZHJlc3NPZkRvZXNHQygpKSk7
CiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+b3AoKSkgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2
aXNpb24gMjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29t
cGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBzdGF0aWMgdm9p
ZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVkCiAgICAgICAgIC8vIGNvZGUgcnVubmluZyB0
aGF0IGV4cGVjdHMgbm8gR0MuIFdlIG5lZWQgdG8gc2V0IHRoaXMgYmVmb3JlIG9iamVjdAogICAg
ICAgICAvLyBtYXRlcmlhbGl6YXRpb24gYmVsb3cuCiAKLSAgICAgICAgLy8gRXZlbiB0aG91Z2gg
d2Ugc2V0IEhlYXA6Om1fZXhwZWN0RG9lc0dDIGluIGNvbXBpbGVGVExPU1JFeGl0KCksIHdlIGFs
c28gbmVlZAorICAgICAgICAvLyBFdmVuIHRob3VnaCB3ZSBzZXQgSGVhcDo6bV9kb2VzR0MgaW4g
Y29tcGlsZUZUTE9TUkV4aXQoKSwgd2UgYWxzbyBuZWVkCiAgICAgICAgIC8vIHRvIHNldCBpdCBo
ZXJlIGJlY2F1c2UgY29tcGlsZUZUTE9TUkV4aXQoKSBpcyBvbmx5IGNhbGxlZCBvbiB0aGUgZmly
c3QgdGltZQogICAgICAgICAvLyB3ZSBleGl0IGZyb20gdGhpcyBzaXRlLCBidXQgYWxsIHN1YnNl
cXVlbnQgZXhpdHMgd2lsbCB0YWtlIHRoaXMgY29tcGlsZWQKICAgICAgICAgLy8gcmFtcCB3aXRo
b3V0IGNhbGxpbmcgY29tcGlsZUZUTE9TUkV4aXQoKSBmaXJzdC4KLSAgICAgICAgaml0LnN0b3Jl
OChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih0cnVlKSwgdm0uaGVhcC5hZGRyZXNzT2ZFeHBl
Y3REb2VzR0MoKSk7CisgICAgICAgIGppdC5zdG9yZTY0KENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTY0KERvZXNHQ0NoZWNrOjplbmNvZGUodHJ1ZSwgRG9lc0dDQ2hlY2s6OlNwZWNpYWw6OkZUTE9T
UkV4aXQpKSwgdm0uaGVhcC5hZGRyZXNzT2ZEb2VzR0MoKSk7CiAgICAgfQogCiAgICAgLy8gQnJp
bmcgdGhlIHN0YWNrIGJhY2sgaW50byBhIHNhbmUgZm9ybSBhbmQgYXNzZXJ0IHRoYXQgaXQncyBz
YW5lLgpAQCAtNTQ4LDcgKzU0OCw3IEBAIGV4dGVybiAiQyIgSklUX09QRVJBVElPTiB2b2lkKiBv
cGVyYXRpb24KICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpIHsKICAgICAgICAgLy8gV2UncmUg
YWJvdXQgdG8gZXhpdCBvcHRpbWl6ZWQgY29kZS4gU28sIHRoZXJlJ3Mgbm8gbG9uZ2VyIGFueSBv
cHRpbWl6ZWQKICAgICAgICAgLy8gY29kZSBydW5uaW5nIHRoYXQgZXhwZWN0cyBubyBHQy4KLSAg
ICAgICAgdm0uaGVhcC5zZXRFeHBlY3REb2VzR0ModHJ1ZSk7CisgICAgICAgIHZtLmhlYXAuc2V0
RG9lc0dDRXhwZWN0YXRpb24odHJ1ZSwgRG9lc0dDQ2hlY2s6OlNwZWNpYWw6OkZUTE9TUkV4aXQp
OwogICAgIH0KIAogICAgIGlmICh2bS5jYWxsRnJhbWVGb3JDYXRjaCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCShyZXZpc2lvbiAy
NjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkKiBDb21wbGV0ZVN1YnNw
YWNlOjphbGxvY2F0ZVNsb3coVk0mCiB2b2lkKiBDb21wbGV0ZVN1YnNwYWNlOjp0cnlBbGxvY2F0
ZVNsb3coVk0mIHZtLCBzaXplX3Qgc2l6ZSwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29u
dGV4dCkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNT
RVJUKHZtLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bS5oZWFwLnZlcmlmeUNhbkdD
KCk7CiAKICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0odm0pOwogICAgIApAQCAtMTU2LDcgKzE1Niw3
IEBAIHZvaWQqIENvbXBsZXRlU3Vic3BhY2U6OnRyeUFsbG9jYXRlU2xvdygKIHZvaWQqIENvbXBs
ZXRlU3Vic3BhY2U6OnJlYWxsb2NhdGVQcmVjaXNlQWxsb2NhdGlvbk5vblZpcnR1YWwoVk0mIHZt
LCBIZWFwQ2VsbCogb2xkQ2VsbCwgc2l6ZV90IHNpemUsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZl
cnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBmYWlsdXJlTW9kZSkKIHsKICAgICBp
ZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtLmhlYXAuZXhw
ZWN0RG9lc0dDKCkpOworICAgICAgICB2bS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAKICAgICAvLyBU
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldCBpbiBCdXR0ZXJmbHkgZm9yIGV4YW1wbGUu
CiAgICAgQVNTRVJUKG9sZENlbGwtPmlzUHJlY2lzZUFsbG9jYXRpb24oKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVz
LmgJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBs
ZXRlU3Vic3BhY2VJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw3ICszMyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogQUxXQVlTX0lOTElORSB2b2lkKiBDb21wbGV0ZVN1YnNwYWNlOjphbGxv
Y2F0ZU5vblZpcnR1YWwoVk0mIHZtLCBzaXplX3Qgc2l6ZSwgR0NEZWZlcnJhbENvbnRleHQqIGRl
ZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQogewogICAg
IGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0uaGVhcC5l
eHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZtLmhlYXAudmVyaWZ5Q2FuR0MoKTsKIAogICAgIGlm
IChBbGxvY2F0b3IgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxv
Y2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cykpCiAgICAgICAgIHJldHVybiBhbGxvY2F0
b3IuYWxsb2NhdGUodm0uaGVhcCwgZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oCShyZXZpc2lvbiAyNjI0NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB+RGVmZXJHQygpCiAgICAgewogICAgICAgICBpZiAo
dmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2hlYXAuZXhw
ZWN0RG9lc0dDKCkpOworICAgICAgICAgICAgbV9oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgICAg
IG1faGVhcC5kZWNyZW1lbnREZWZlcnJhbERlcHRoQW5kR0NJZk5lZWRlZCgpOwogICAgIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NEZWZlcnJhbENvbnRleHRJbmxpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NEZWZlcnJhbENv
bnRleHRJbmxpbmVzLmgJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0dDRGVmZXJyYWxDb250ZXh0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgs
NyArMzgsNyBAQCBBTFdBWVNfSU5MSU5FIEdDRGVmZXJyYWxDb250ZXh0OjpHQ0RlZmVyCiBBTFdB
WVNfSU5MSU5FIEdDRGVmZXJyYWxDb250ZXh0Ojp+R0NEZWZlcnJhbENvbnRleHQoKQogewogICAg
IGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9oZWFwLmV4
cGVjdERvZXNHQygpKTsKKyAgICAgICAgbV9oZWFwLnZlcmlmeUNhbkdDKCk7CiAKICAgICBpZiAo
VU5MSUtFTFkobV9zaG91bGRHQykpCiAgICAgICAgIG1faGVhcC5jb2xsZWN0SWZOZWNlc3NhcnlP
ckRlZmVyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24g
MjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3
IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTEwNjQsNyAr
MTA2NCw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTeW5jaHJvbm91c25lc3Mgc3luY2gKIHZvaWQg
SGVhcDo6Y29sbGVjdE5vdyhTeW5jaHJvbm91c25lc3Mgc3luY2hyb25vdXNuZXNzLCBHQ1JlcXVl
c3QgcmVxdWVzdCkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKGV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdmVyaWZ5Q2FuR0MoKTsKIAogICAg
IHN3aXRjaCAoc3luY2hyb25vdXNuZXNzKSB7CiAgICAgY2FzZSBBc3luYzogewpAQCAtMTA5Nyw3
ICsxMDk3LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0Tm93KFN5bmNocm9ub3VzbmVzcyBzeQogdm9p
ZCBIZWFwOjpjb2xsZWN0QXN5bmMoR0NSZXF1ZXN0IHJlcXVlc3QpCiB7CiAgICAgaWYgKHZhbGlk
YXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChleHBlY3REb2VzR0MoKSk7Cisg
ICAgICAgIHZlcmlmeUNhbkdDKCk7CiAKICAgICBpZiAoIW1faXNTYWZlVG9Db2xsZWN0KQogICAg
ICAgICByZXR1cm47CkBAIC0xMTIxLDcgKzExMjEsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBc3lu
YyhHQ1JlcXVlc3QgcmVxdWVzCiB2b2lkIEhlYXA6OmNvbGxlY3RTeW5jKEdDUmVxdWVzdCByZXF1
ZXN0KQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlQoZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2ZXJpZnlDYW5HQygpOwogCiAgICAgaWYgKCFt
X2lzU2FmZVRvQ29sbGVjdCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTc4NCw3ICsxNzg0LDcgQEAg
TkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6cmVzdW1lVGhlTXV0YXRvcgogdm9pZCBIZWFwOjpzdG9w
SWZOZWNlc3NhcnlTbG93KCkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKGV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdmVyaWZ5Q2FuR0MoKTsK
IAogICAgIHdoaWxlIChzdG9wSWZOZWNlc3NhcnlTbG93KG1fd29ybGRTdGF0ZS5sb2FkKCkpKSB7
IH0KICAgICAKQEAgLTE3OTksNyArMTc5OSw3IEBAIHZvaWQgSGVhcDo6c3RvcElmTmVjZXNzYXJ5
U2xvdygpCiBib29sIEhlYXA6OnN0b3BJZk5lY2Vzc2FyeVNsb3codW5zaWduZWQgb2xkU3RhdGUp
CiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChl
eHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZlcmlmeUNhbkdDKCk7CiAKICAgICBSRUxFQVNFX0FT
U0VSVChvbGRTdGF0ZSAmIGhhc0FjY2Vzc0JpdCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIShvbGRT
dGF0ZSAmIHN0b3BwZWRCaXQpKTsKQEAgLTI2MDEsNyArMjYwMSw3IEBAIHZvaWQgSGVhcDo6Y29s
bGVjdElmTmVjZXNzYXJ5T3JEZWZlcihHQ0QKIHsKICAgICBBU1NFUlQoZGVmZXJyYWxDb250ZXh0
IHx8IGlzRGVmZXJyZWQoKSB8fCAhRGlzYWxsb3dHQzo6aXNJbkVmZmVjdE9uQ3VycmVudFRocmVh
ZCgpKTsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KGV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdmVyaWZ5Q2FuR0MoKTsKIAogICAgIGlmICghbV9p
c1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmgJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0
IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmln
aHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkNlbGxTdGF0ZS5oIgogI2lu
Y2x1ZGUgIkNvbGxlY3Rpb25TY29wZS5oIgogI2luY2x1ZGUgIkNvbGxlY3RvclBoYXNlLmgiCisj
aW5jbHVkZSAiREZHRG9lc0dDQ2hlY2suaCIKICNpbmNsdWRlICJEZWxldGVBbGxDb2RlRWZmb3J0
LmgiCiAjaW5jbHVkZSAiR0NDb25kdWN0b3IuaCIKICNpbmNsdWRlICJHQ0luY29taW5nUmVmQ291
bnRlZFNldC5oIgpAQCAtMzAzLDEzICszMDQsMTUgQEAgcHVibGljOgogICAgIGNvbnN0IHVuc2ln
bmVkKiBhZGRyZXNzT2ZCYXJyaWVyVGhyZXNob2xkKCkgY29uc3QgeyByZXR1cm4gJm1fYmFycmll
clRocmVzaG9sZDsgfQogCiAjaWYgRU5BQkxFKERGR19ET0VTX0dDX1ZBTElEQVRJT04pCi0gICAg
Ym9vbCBleHBlY3REb2VzR0MoKSBjb25zdCB7IHJldHVybiBtX2V4cGVjdERvZXNHQzsgfQotICAg
IHZvaWQgc2V0RXhwZWN0RG9lc0dDKGJvb2wgdmFsdWUpIHsgbV9leHBlY3REb2VzR0MgPSB2YWx1
ZTsgfQotICAgIGJvb2wqIGFkZHJlc3NPZkV4cGVjdERvZXNHQygpIHsgcmV0dXJuICZtX2V4cGVj
dERvZXNHQzsgfQorICAgIERvZXNHQ0NoZWNrKiBhZGRyZXNzT2ZEb2VzR0MoKSB7IHJldHVybiAm
bV9kb2VzR0M7IH0KKyAgICB2b2lkIHNldERvZXNHQ0V4cGVjdGF0aW9uKGJvb2wgZXhwZWN0RG9l
c0dDLCB1bnNpZ25lZCBub2RlSW5kZXgsIHVuc2lnbmVkIG5vZGVPcCkgeyBtX2RvZXNHQy5zZXQo
ZXhwZWN0RG9lc0dDLCBub2RlSW5kZXgsIG5vZGVPcCk7IH0KKyAgICB2b2lkIHNldERvZXNHQ0V4
cGVjdGF0aW9uKGJvb2wgZXhwZWN0RG9lc0dDLCBEb2VzR0NDaGVjazo6U3BlY2lhbCBzcGVjaWFs
KSB7IG1fZG9lc0dDLnNldChleHBlY3REb2VzR0MsIHNwZWNpYWwpOyB9CisgICAgdm9pZCB2ZXJp
ZnlDYW5HQygpIHsgbV9kb2VzR0MudmVyaWZ5Q2FuR0Modm0oKSk7IH0KICNlbHNlCi0gICAgYm9v
bCBleHBlY3REb2VzR0MoKSBjb25zdCB7IFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOyByZXR1
cm4gdHJ1ZTsgfQotICAgIHZvaWQgc2V0RXhwZWN0RG9lc0dDKGJvb2wpIHsgVU5SRUFDSEFCTEVf
Rk9SX1BMQVRGT1JNKCk7IH0KLSAgICBib29sKiBhZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSB7IFVO
UkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOyByZXR1cm4gbnVsbHB0cjsgfQorICAgIERvZXNHQ0No
ZWNrKiBhZGRyZXNzT2ZEb2VzR0MoKSB7IFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIHZvaWQgc2V0RG9lc0dDRXhwZWN0YXRpb24oYm9vbCwgdW5zaWdu
ZWQsIHVuc2lnbmVkKSB7IH0KKyAgICB2b2lkIHNldERvZXNHQ0V4cGVjdGF0aW9uKGJvb2wsIERv
ZXNHQ0NoZWNrOjpTcGVjaWFsKSB7IH0KKyAgICB2b2lkIHZlcmlmeUNhbkdDKCkgeyB9CiAjZW5k
aWYKIAogICAgIC8vIElmIHRydWUsIHRoZSBHQyBiZWxpZXZlcyB0aGF0IHRoZSBtdXRhdG9yIGlz
IGN1cnJlbnRseSBtZXNzaW5nIHdpdGggdGhlIGhlYXAuIFdlIGNhbGwgdGhpcwpAQCAtNjA2LDcg
KzYwOSw3IEBAIHByaXZhdGU6CiAgICAgTWFya2FibGU8Q29sbGVjdGlvblNjb3BlLCBFbnVtTWFy
a2FibGVUcmFpdHM8Q29sbGVjdGlvblNjb3BlPj4gbV9sYXN0Q29sbGVjdGlvblNjb3BlOwogICAg
IExvY2sgbV9yYWNlTWFya1N0YWNrTG9jazsKICNpZiBFTkFCTEUoREZHX0RPRVNfR0NfVkFMSURB
VElPTikKLSAgICBib29sIG1fZXhwZWN0RG9lc0dDIHsgdHJ1ZSB9OworICAgIERvZXNHQ0NoZWNr
IG1fZG9lc0dDOwogI2VuZGlmCiAKICAgICBTdHJ1Y3R1cmVJRFRhYmxlIG1fc3RydWN0dXJlSURU
YWJsZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAkocmV2
aXNpb24gMjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjM2LDcgKzIzNiw3IEBAIGlubGluZSB2b2lkIEhlYXA6OmRl
cHJlY2F0ZWRSZXBvcnRFeHRyYU0KIGlubGluZSB2b2lkIEhlYXA6OmFjcXVpcmVBY2Nlc3MoKQog
ewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhw
ZWN0RG9lc0dDKCkpOworICAgICAgICB2ZXJpZnlDYW5HQygpOwogCiAgICAgaWYgKG1fd29ybGRT
dGF0ZS5jb21wYXJlRXhjaGFuZ2VXZWFrKDAsIGhhc0FjY2Vzc0JpdCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTI2Myw3ICsyNjMsNyBAQCBpbmxpbmUgYm9vbCBIZWFwOjptYXlOZWVkVG9TdG9wKCkK
IGlubGluZSB2b2lkIEhlYXA6OnN0b3BJZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKHZhbGlkYXRl
REZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChleHBlY3REb2VzR0MoKSk7CisgICAg
ICAgIHZlcmlmeUNhbkdDKCk7CiAKICAgICBpZiAobWF5TmVlZFRvU3RvcCgpKQogICAgICAgICBz
dG9wSWZOZWNlc3NhcnlTbG93KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9M
b2NhbEFsbG9jYXRvcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaAkocmV2aXNpb24gMjYyNDY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBBTFdBWVNfSU5MSU5FIHZv
aWQqIExvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZShIZWFwJiBoZWFwLCBHQ0RlZmVycmFsQ29udGV4
dCogZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCiB7
CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChoZWFw
LmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgaGVhcC52ZXJpZnlDYW5HQygpOwogICAgIHJldHVy
biBtX2ZyZWVMaXN0LmFsbG9jYXRlKAogICAgICAgICBbJl0gKCkgLT4gSGVhcENlbGwqIHsKICAg
ICAgICAgICAgIHNhbml0aXplU3RhY2tGb3JWTShoZWFwLnZtKCkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcAkocmV2aXNpb24g
MjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBp
c0FsaWduZWRGb3JQcmVjaXNlQWwKIFByZWNpc2VBbGxvY2F0aW9uKiBQcmVjaXNlQWxsb2NhdGlv
bjo6dHJ5Q3JlYXRlKEhlYXAmIGhlYXAsIHNpemVfdCBzaXplLCBTdWJzcGFjZSogc3Vic3BhY2Us
IHVuc2lnbmVkIGluZGV4SW5TcGFjZSkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICBoZWFw
LnZlcmlmeUNhbkdDKCk7CiAKICAgICBzaXplX3QgYWRqdXN0ZWRBbGlnbm1lbnRBbGxvY2F0aW9u
U2l6ZSA9IGhlYWRlclNpemUoKSArIHNpemUgKyBoYWxmQWxpZ25tZW50OwogICAgIHN0YXRpY19h
c3NlcnQoaGFsZkFsaWdubWVudCA9PSA4LCAiV2UgYXNzdW1lIHRoYXQgbWVtb3J5IHJldHVybmVk
IGJ5IG1hbGxvYyBoYXMgYWxpZ25tZW50ID49IDguIik7CkBAIC0xMjMsNyArMTIzLDcgQEAgUHJl
Y2lzZUFsbG9jYXRpb24qIFByZWNpc2VBbGxvY2F0aW9uOjp0cgogUHJlY2lzZUFsbG9jYXRpb24q
IFByZWNpc2VBbGxvY2F0aW9uOjpjcmVhdGVGb3JMb3dlclRpZXIoSGVhcCYgaGVhcCwgc2l6ZV90
IHNpemUsIFN1YnNwYWNlKiBzdWJzcGFjZSwgdWludDhfdCBsb3dlclRpZXJJbmRleCkKIHsKICAg
ICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGhlYXAuZXhw
ZWN0RG9lc0dDKCkpOworICAgICAgICBoZWFwLnZlcmlmeUNhbkdDKCk7CiAKICAgICBzaXplX3Qg
YWRqdXN0ZWRBbGlnbm1lbnRBbGxvY2F0aW9uU2l6ZSA9IGhlYWRlclNpemUoKSArIHNpemUgKyBo
YWxmQWxpZ25tZW50OwogICAgIHN0YXRpY19hc3NlcnQoaGFsZkFsaWdubWVudCA9PSA4LCAiV2Ug
YXNzdW1lIHRoYXQgbWVtb3J5IHJldHVybmVkIGJ5IG1hbGxvYyBoYXMgYWxpZ25tZW50ID49IDgu
Iik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlz
aW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTczMyw3ICs3MzMsNyBAQCBpbmxpbmUgSlNTdHJpbmcqIGpzRW1w
dHlTdHJpbmcoVk0mIHZtKQogQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0
ZXJTdHJpbmcoVk0mIHZtLCBVQ2hhciBjKQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0uaGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAg
IHZtLmhlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAoYyA8PSBtYXhTaW5nbGVDaGFyYWN0ZXJT
dHJpbmcpCiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKGMpOwogICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKHZtLCBTdHJpbmdJbXBsOjpjcmVh
dGUoJmMsIDEpKTsKQEAgLTc2Myw3ICs3NjMsNyBAQCBBTFdBWVNfSU5MSU5FIElkZW50aWZpZXIg
SlNTdHJpbmc6OnRvSWRlCiBBTFdBWVNfSU5MSU5FIEF0b21TdHJpbmcgSlNTdHJpbmc6OnRvQXRv
bVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIGlmICh2
YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS5oZWFwLmV4cGVj
dERvZXNHQygpKTsKKyAgICAgICAgdm0oKS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYgKGlz
Um9wZSgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4o
dGhpcyktPnJlc29sdmVSb3BlVG9BdG9tU3RyaW5nKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IEF0b21TdHJpbmcodmFsdWVJbnRlcm5hbCgpKTsKQEAgLTc3Miw3ICs3NzIsNyBAQCBBTFdBWVNf
SU5MSU5FIEF0b21TdHJpbmcgSlNTdHJpbmc6OnRvQXRvCiBBTFdBWVNfSU5MSU5FIFJlZlB0cjxB
dG9tU3RyaW5nSW1wbD4gSlNTdHJpbmc6OnRvRXhpc3RpbmdBdG9tU3RyaW5nKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQot
ICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAg
ICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGVU
b0V4aXN0aW5nQXRvbVN0cmluZyhnbG9iYWxPYmplY3QpOwogICAgIGlmICh2YWx1ZUludGVybmFs
KCkuaW1wbCgpLT5pc0F0b20oKSkKQEAgLTc4Myw3ICs3ODMsNyBAQCBBTFdBWVNfSU5MSU5FIFJl
ZlB0cjxBdG9tU3RyaW5nSW1wbD4gSlNTCiBpbmxpbmUgY29uc3QgU3RyaW5nJiBKU1N0cmluZzo6
dmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAgICBpZiAodmFs
aWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtKCkuaGVhcC5leHBlY3RE
b2VzR0MoKSk7CisgICAgICAgIHZtKCkuaGVhcC52ZXJpZnlDYW5HQygpOwogICAgIGlmIChpc1Jv
cGUoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTUm9wZVN0cmluZyo+KHRo
aXMpLT5yZXNvbHZlUm9wZShnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiB2YWx1ZUludGVybmFs
KCk7CkBAIC03OTMsNyArNzkzLDcgQEAgaW5saW5lIGNvbnN0IFN0cmluZyYgSlNTdHJpbmc6OnRy
eUdldFZhbAogewogICAgIGlmIChhbGxvY2F0aW9uQWxsb3dlZCkgewogICAgICAgICBpZiAodmFs
aWRhdGVERkdEb2VzR0MpCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhw
ZWN0RG9lc0dDKCkpOworICAgICAgICAgICAgdm0oKS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAg
ICAgIGlmIChpc1JvcGUoKSkgewogICAgICAgICAgICAgLy8gUGFzcyBudWxscHRyIGZvciB0aGUg
SlNHbG9iYWxPYmplY3Qgc28gdGhhdCByZXNvbHZlUm9wZSBkb2VzIG5vdCB0aHJvdyBpbiB0aGUg
ZXZlbnQgb2YgYW4gT09NIGVycm9yLgogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IEpTUm9wZVN0cmluZyo+KHRoaXMpLT5yZXNvbHZlUm9wZShudWxscHRyKTsKQEAgLTk4Myw3
ICs5ODMsNyBAQCBpbmxpbmUgYm9vbCBpc0pTU3RyaW5nKEpTVmFsdWUgdikKIEFMV0FZU19JTkxJ
TkUgU3RyaW5nVmlldyBKU1JvcGVTdHJpbmc6OnVuc2FmZVZpZXcoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkgY29uc3QKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKHZtKCkuaGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZtKCku
aGVhcC52ZXJpZnlDYW5HQygpOwogICAgIGlmIChpc1N1YnN0cmluZygpKSB7CiAgICAgICAgIGF1
dG8mIGJhc2UgPSBzdWJzdHJpbmdCYXNlKCktPnZhbHVlSW50ZXJuYWwoKTsKICAgICAgICAgaWYg
KGJhc2UuaXM4Qml0KCkpCkBAIC05OTYsNyArOTk2LDcgQEAgQUxXQVlTX0lOTElORSBTdHJpbmdW
aWV3IEpTUm9wZVN0cmluZzo6dQogQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3V2l0aFVuZGVybHlp
bmdTdHJpbmcgSlNSb3BlU3RyaW5nOjp2aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0Mp
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtKCkuaGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAg
ICAgIHZtKCkuaGVhcC52ZXJpZnlDYW5HQygpOwogICAgIGlmIChpc1N1YnN0cmluZygpKSB7CiAg
ICAgICAgIGF1dG8mIGJhc2UgPSBzdWJzdHJpbmdCYXNlKCktPnZhbHVlSW50ZXJuYWwoKTsKICAg
ICAgICAgaWYgKGJhc2UuaXM4Qml0KCkpCkBAIC0xMDEwLDcgKzEwMTAsNyBAQCBBTFdBWVNfSU5M
SU5FIFN0cmluZ1ZpZXdXaXRoVW5kZXJseWluZ1N0CiBBTFdBWVNfSU5MSU5FIFN0cmluZ1ZpZXcg
SlNTdHJpbmc6OnVuc2FmZVZpZXcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QK
IHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHZt
KCkuaGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZtKCkuaGVhcC52ZXJpZnlDYW5HQygp
OwogICAgIGlmIChpc1JvcGUoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpT
Um9wZVN0cmluZyo+KHRoaXMpLT51bnNhZmVWaWV3KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJu
IHZhbHVlSW50ZXJuYWwoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE1hdGNoZXNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCShyZXZpc2lvbiAyNjI0NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkod29ya2luZyBjb3B5
KQpAQCAtNjQsNyArNjQsNyBAQCBBTFdBWVNfSU5MSU5FIEpTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1h
dGNoCiAgICAgUmVnRXhwKiByZWdFeHAsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBNYXRjaFJlc3Vs
dCYgcmVzdWx0KQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlQodm0uaGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZtLmhlYXAudmVyaWZ5
Q2FuR0MoKTsKIAogICAgIFZlY3RvcjxpbnQsIDMyPiBzdWJwYXR0ZXJuUmVzdWx0czsKICAgICBp
bnQgcG9zaXRpb24gPSByZWdFeHAtPm1hdGNoSW5saW5lKGdsb2JhbE9iamVjdCwgdm0sIGlucHV0
VmFsdWUsIHN0YXJ0T2Zmc2V0LCBzdWJwYXR0ZXJuUmVzdWx0cyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400887</attachid>
            <date>2020-06-02 20:06:44 -0700</date>
            <delta_ts>2020-06-02 20:56:01 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-212680.patch</filename>
            <type>text/plain</type>
            <size>43130</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyNDcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NiBA
QAorMjAyMC0wNi0wMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW5oYW5jZSBEb2VzR0MgdmVyaWZpY2F0aW9uIHRvIHByaW50IG1vcmUgdXNlZnVsIGluZm8gd2hl
biB2ZXJpZmljYXRpb24gZmFpbHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTI2ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXaGVuIERvZXNHQyB2ZXJpZmljYXRpb24gZmFpbHMsIHRoZSBmaXJzdCBz
dGVwIG9mIGRlYnVnZ2luZyBpdCB3b3VsZCBiZSB0byBmaW5kCisgICAgICAgIG91dCB3aGF0IGFu
ZCB3aGljaCBERkcgbm9kZSByZXN1bHRlZCBpbiB0aGUgZmFpbGVkIHZlcmlmaWNhdGlvbi4gIElu
IHByZS1leGlzdGluZworICAgICAgICBjb2RlLCBhbGwgd2UgZ2V0IGlzIGFuIGFzc2VydGlvbiBm
YWlsdXJlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhhdCB0aGUgdmVyaWZp
ZXIgd2lsbCBkdW1wIHVzZWZ1bCBpbmZvLiAgSGVyZSdzIGFuIGV4YW1wbGU6CisKKyAgICAgICAg
ICAgIEVycm9yOiBEb2VzR0MgZmFpbGVkIEAgREAzNCBEYXRlR2V0SW50MzJPck5hTiBpbiAjRHRD
SE16OlsweDExMzViZDFkMC0+MHgxMTM1YmNhYjAtPjB4MTEzNWU1YzgwLCBERkdGdW5jdGlvbkNh
bGwsIDE1MCAoRGlkVHJ5VG9FbnRlckluTG9vcCldCisgICAgICAgICAgICAgICAgWzBdIGZyYW1l
IDB4N2ZmZWU4Mjg1NjYwIHsKKyAgICAgICAgICAgICAgICAgIG5hbWU6IAorICAgICAgICAgICAg
ICAgICAgc291cmNlVVJMOiAKKyAgICAgICAgICAgICAgICAgIGlzSW5saW5lZEZyYW1lOiBmYWxz
ZQorICAgICAgICAgICAgICAgICAgY2FsbGVlOiAweDExMzVmNjgyMAorICAgICAgICAgICAgICAg
ICAgcmV0dXJuUEM6IDB4NTBjZTYxMjQ4YWU2CisgICAgICAgICAgICAgICAgICBjYWxsZXJGcmFt
ZTogMHg3ZmZlZTgyODU2ZjAKKyAgICAgICAgICAgICAgICAgIHJhd0xvY2F0aW9uQml0czogNSAw
eDUKKyAgICAgICAgICAgICAgICAgIGNvZGVCbG9jazogMHgxMTM1YmQxZDAgI0R0Q0hNejpbMHgx
MTM1YmQxZDAtPjB4MTEzNWJjYWIwLT4weDExMzVlNWM4MCwgREZHRnVuY3Rpb25DYWxsLCAxNTAg
KERpZFRyeVRvRW50ZXJJbkxvb3ApXQorICAgICAgICAgICAgICAgICAgICBoYXNDb2RlT3JpZ2lu
czogdHJ1ZQorICAgICAgICAgICAgICAgICAgICBjYWxsU2l0ZUluZGV4OiA1IG9mIDEzCisgICAg
ICAgICAgICAgICAgICAgIGppdENvZGU6IDB4MTEzMDIwMjAwIHN0YXJ0IDB4NTBjZTYxMjE0YzYw
IGVuZCAweDUwY2U2MTIxOWIwMAorICAgICAgICAgICAgICAgICAgICBsaW5lOiAxCisgICAgICAg
ICAgICAgICAgICAgIGNvbHVtbjogNjAKKyAgICAgICAgICAgICAgICAgIEVudHJ5RnJhbWU6IDB4
N2ZmZWU4Mjg1ODYwCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFsxXSBmcmFt
ZSAweDdmZmVlODI4NTZmMCB7CisgICAgICAgICAgICAgICAgICBuYW1lOiAKKyAgICAgICAgICAg
ICAgICAgIHNvdXJjZVVSTDogZGF0ZS1mb3JtYXQteHBhcmIuanMKKyAgICAgICAgICAgICAgICAg
IGlzSW5saW5lZEZyYW1lOiBmYWxzZQorICAgICAgICAgICAgICAgICAgY2FsbGVlOiAweDExMzVm
NjVhMAorICAgICAgICAgICAgICAgICAgcmV0dXJuUEM6IDB4NTBjZTYxMjI3ZTk5CisgICAgICAg
ICAgICAgICAgICBjYWxsZXJGcmFtZTogMHg3ZmZlZTgyODU3NzAKKyAgICAgICAgICAgICAgICAg
IHJhd0xvY2F0aW9uQml0czogNCAweDQKKyAgICAgICAgICAgICAgICAgIGNvZGVCbG9jazogMHgx
MTM1YmQwYTAgI0JVNlpjZDpbMHgxMTM1YmQwYTAtPjB4MTEzNWJjMjYwLT4weDExMzVlNTE4MCwg
REZHRnVuY3Rpb25DYWxsLCAxMTIgKERpZFRyeVRvRW50ZXJJbkxvb3ApXQorICAgICAgICAgICAg
ICAgICAgICBoYXNDb2RlT3JpZ2luczogdHJ1ZQorICAgICAgICAgICAgICAgICAgICBjYWxsU2l0
ZUluZGV4OiA0IG9mIDEyCisgICAgICAgICAgICAgICAgICAgIGppdENvZGU6IDB4MTEzMDA0MDAw
IHN0YXJ0IDB4NTBjZTYxMjEyYzYwIGVuZCAweDUwY2U2MTIxNDk2MAorICAgICAgICAgICAgICAg
ICAgICBsaW5lOiAyNgorICAgICAgICAgICAgICAgICAgICBjb2x1bW46IDIyCisgICAgICAgICAg
ICAgICAgICBFbnRyeUZyYW1lOiAweDdmZmVlODI4NTg2MAorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBbMl0gZnJhbWUgMHg3ZmZlZTgyODU3NzAgeworICAgICAgICAgICAgICAg
ICAgbmFtZTogCisgICAgICAgICAgICAgICAgICBzb3VyY2VVUkw6IGRhdGUtZm9ybWF0LXhwYXJi
LmpzCisgICAgICAgICAgICAgICAgICBpc0lubGluZWRGcmFtZTogZmFsc2UKKyAgICAgICAgICAg
ICAgICAgIGNhbGxlZTogMHgxMTM1ZjY0ZTAKKyAgICAgICAgICAgICAgICAgIHJldHVyblBDOiAw
eDEwODA1OGViMQorICAgICAgICAgICAgICAgICAgY2FsbGVyRnJhbWU6IDB4N2ZmZWU4Mjg1N2Uw
CisgICAgICAgICAgICAgICAgICByYXdMb2NhdGlvbkJpdHM6IDEwMDEgMHgzZTkKKyAgICAgICAg
ICAgICAgICAgIGNvZGVCbG9jazogMHgxMTM1YmMxMzAgI0RBUzl4ZTpbMHgxMTM1YmMxMzAtPjB4
MTEzNWU1MTAwLCBCYXNlbGluZUZ1bmN0aW9uQ2FsbCwgMTE0OV0KKyAgICAgICAgICAgICAgICAg
ICAgYmMjMTAwMSBvZiAxMTQ5CisgICAgICAgICAgICAgICAgICAgIGxpbmU6IDQxNworICAgICAg
ICAgICAgICAgICAgICBjb2x1bW46IDM4CisgICAgICAgICAgICAgICAgICBFbnRyeUZyYW1lOiAw
eDdmZmVlODI4NTg2MAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBbM10gZnJh
bWUgMHg3ZmZlZTgyODU3ZTAgeworICAgICAgICAgICAgICAgICAgbmFtZTogZ2xvYmFsIGNvZGUK
KyAgICAgICAgICAgICAgICAgIHNvdXJjZVVSTDogZGF0ZS1mb3JtYXQteHBhcmIuanMKKyAgICAg
ICAgICAgICAgICAgIGlzSW5saW5lZEZyYW1lOiBmYWxzZQorICAgICAgICAgICAgICAgICAgY2Fs
bGVlOiAweDExMzBmOTdiOAorICAgICAgICAgICAgICAgICAgcmV0dXJuUEM6IDB4MTA4MDM5MDQz
CisgICAgICAgICAgICAgICAgICBjYWxsZXJGcmFtZTogMHgwCisgICAgICAgICAgICAgICAgICBy
YXdMb2NhdGlvbkJpdHM6IDIzIDB4MTcKKyAgICAgICAgICAgICAgICAgIGNvZGVCbG9jazogMHgx
MTM1YmMwMDAgPGdsb2JhbD4jQ3VrWHZ0OlsweDExMzViYzAwMC0+MHgxMTMwY2Q3NjgsIExMSW50
R2xvYmFsLCA4MV0KKyAgICAgICAgICAgICAgICAgICAgYmMjMjMgb2YgODEKKyAgICAgICAgICAg
ICAgICAgICAgbGluZTogNDI1CisgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogMworICAgICAg
ICAgICAgICAgICAgRW50cnlGcmFtZTogMHg3ZmZlZTgyODU4NjAKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IGV4cGVjdERvZXNHQygpCisKKyAgICAg
ICAgVGhlIGVycm9yIG1lc3NhZ2Ugbm93IGNvbWVzIHdpdGggdGhlIG5vZGUgaW5kZXgsIE5vZGVU
eXBlLCBjb2RlQmxvY2sgd2hpY2ggdGhpcworICAgICAgICBmYWlsdXJlIHdhcyBmb3VuZCBpbiwg
YW5kIHRoZSBKUyBjYWxsIHN0YWNrIHRoYXQgbGVkIHRvIHRoZSBmYWlsdXJlLgorCisgICAgICAg
IENoYW5nZXMgbWFkZToKKworICAgICAgICAxLiBJbnRyb2R1Y2VkIGEgRG9lc0dDQ2hlY2sgdmFs
dWUgdGhhdCBpcyB1c2VkIHRvIGVuY29kZSBzb21lIG9mIHRoZSBhYm92ZSBkYXRhLgorCisgICAg
ICAgICAgIFByZXZpb3VzbHksIHdlIG9ubHkgcmVjb3JkZWQgd2hldGhlciBkb2VzR0MoKSByZXR1
cm5zIHRydWUgb3IgZmFsc2UgZm9yIHRoZQorICAgICAgICAgICBOb2RlLiAgTm93LCB3ZSByZWNv
cmQgdGhlIG5vZGVJbmRleCBhbmQgbm9kZU9wIGFzIHdlbGwuCisKKyAgICAgICAgICAgTm90ZSB0
aGF0IHdlIGFsc28gc2V0IERvZXNHQyBleHBlY3RhdGlvbnMgZm9yIE9TUiBleGl0cy4gIFNvLCBE
b2VzR0NDaGVjaworICAgICAgICAgICBpbmNsdWRlcyBTcGVjaWFsIGNhc2VzIGZvciB0aG9zZS4K
KworICAgICAgICAyLiBBZGRlZCBzdG9yZTY0KFRydXN0ZWRJbW02NCBpbW0sIGNvbnN0IHZvaWQq
IGFkZHJlc3MpIGVtaXR0ZXJzIGZvciBYODZfNjQgYW5kIEFSTTY0LgorICAgICAgICAgICBBbHNv
IGFkZGVkIGEgdGVzdCBmb3IgdGhpcyBuZXcgZW1pdHRlciBpbiB0ZXN0bWFzbS4KKworICAgICAg
ICAgICBOb3RlOiBmb3IgdGhlIFg4Nl82NCBlbWl0dGVyLCB3ZSBkb24ndCBoYXZlIGVub3VnaCBz
Y3JhdGNoIHJlZ2lzdGVycyB0byBkbyBhCisgICAgICAgICAgIHRydWUgNjQtYml0IHN0b3JlLiAg
U28sIEkgaW1wbGVtZW50ZWQgaXQgd2l0aCAyIDMyLWJpdCBzdG9yZXMgaW5zdGVhZC4gIFNpbmNl
CisgICAgICAgICAgIHRoaXMgaXMgbm90IHVzZWQgaW4gYW55IGhvdCBwYXRocywgdGhpcyBpcyBm
aW5lIGZvciBub3cuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlNjQpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
Nl82NDo6c3RvcmU2NCk6CisgICAgICAgICogYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAg
ICAgKEpTQzo6dGVzdFN0b3JlNjRJbW02NEFkZHJlc3NQb2ludGVyKToKKyAgICAgICAgKEpTQzo6
cnVuKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDQ2hlY2suY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6REZHOjpEb2VzR0NDaGVjazo6dmVyaWZ5Q2FuR0MpOgorICAgICAgICAqIGRmZy9ERkdE
b2VzR0NDaGVjay5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpEb2VzR0NDaGVjazo6RG9l
c0dDQ2hlY2spOgorICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNrOjplbmNvZGUpOgorICAg
ICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNrOjpzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkRv
ZXNHQ0NoZWNrOjpleHBlY3REb2VzR0MpOgorICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNr
OjpzcGVjaWFsKToKKyAgICAgICAgKEpTQzo6REZHOjpEb2VzR0NDaGVjazo6bm9kZUluZGV4KToK
KyAgICAgICAgKEpTQzo6REZHOjpEb2VzR0NDaGVjazo6bm9kZU9wKToKKyAgICAgICAgKEpTQzo6
REZHOjpEb2VzR0NDaGVjazo6aXNTcGVjaWFsKToKKyAgICAgICAgKEpTQzo6REZHOjpEb2VzR0ND
aGVjazo6c3BlY2lhbEluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpEb2VzR0NDaGVjazo6Yml0
cyk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhp
dC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6b3BlcmF0aW9uQ29tcGlsZU9TUkV4aXQpOgorICAg
ICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgICogZnRs
L0ZUTE9TUkV4aXRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIp
OgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbkNvbXBpbGVGVExPU1JFeGl0KToKKyAgICAg
ICAgKiBoZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1
YnNwYWNlOjp0cnlBbGxvY2F0ZVNsb3cpOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNl
OjpyZWFsbG9jYXRlUHJlY2lzZUFsbG9jYXRpb25Ob25WaXJ0dWFsKToKKyAgICAgICAgKiBoZWFw
L0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vic3Bh
Y2U6OmFsbG9jYXRlTm9uVmlydHVhbCk6CisgICAgICAgICogaGVhcC9EZWZlckdDLmg6CisgICAg
ICAgIChKU0M6OkRlZmVyR0M6On5EZWZlckdDKToKKyAgICAgICAgKiBoZWFwL0dDRGVmZXJyYWxD
b250ZXh0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHQ0RlZmVycmFsQ29udGV4dDo6fkdDRGVm
ZXJyYWxDb250ZXh0KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpI
ZWFwOjpjb2xsZWN0Tm93KToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdEFzeW5jKToKKyAg
ICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdFN5bmMpOgorICAgICAgICAoSlNDOjpIZWFwOjpzdG9w
SWZOZWNlc3NhcnlTbG93KToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdElmTmVjZXNzYXJ5
T3JEZWZlcik6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0M6OkhlYXA6OmFk
ZHJlc3NPZkRvZXNHQyk6CisgICAgICAgIChKU0M6OkhlYXA6OnNldERvZXNHQ0V4cGVjdGF0aW9u
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6dmVyaWZ5Q2FuR0MpOgorICAgICAgICAoSlNDOjpIZWFw
OjpleHBlY3REb2VzR0MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpIZWFwOjpzZXRF
eHBlY3REb2VzR0MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpIZWFwOjphZGRyZXNzT2ZFeHBl
Y3REb2VzR0MpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6SGVhcDo6YWNxdWlyZUFjY2Vzcyk6CisgICAgICAgIChKU0M6OkhlYXA6OnN0b3BJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgICogaGVhcC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6TG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlKToKKyAgICAgICAgKiBoZWFwL1By
ZWNpc2VBbGxvY2F0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6UHJlY2lzZUFsbG9jYXRpb246OnRy
eUNyZWF0ZSk6CisgICAgICAgIChKU0M6OlByZWNpc2VBbGxvY2F0aW9uOjpjcmVhdGVGb3JMb3dl
clRpZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6anNT
aW5nbGVDaGFyYWN0ZXJTdHJpbmcpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dG9BdG9tU3Ry
aW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OnRvRXhpc3RpbmdBdG9tU3RyaW5n
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OnZhbHVlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNTdHJpbmc6OnRyeUdldFZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNSb3Bl
U3RyaW5nOjp1bnNhZmVWaWV3IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjp2
aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6
dW5zYWZlVmlldyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXku
aDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KToKKwogMjAyMC0wNi0w
MiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgVk1JbnNwZWN0b3Ig
QVBJcyBzaG91bGQgYmUgdGFraW5nIGEgVk0qIGluc3RlYWQgb2YgYSBKU0dsb2JhbE9iamVjdCou
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNjI0Njcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTU2NCw2ICs1NjQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBCiAKICAgICBkZmcvREZHQ29tbW9uLmgKICAgICBkZmcvREZHQ29tcGlsYXRpb25Nb2RlLmgK
KyAgICBkZmcvREZHRG9lc0dDQ2hlY2suaAogICAgIGRmZy9ERkdNaW5pZmllZElELmgKIAogICAg
IGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dAkocmV2aXNpb24gMjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNDcsNiArMzQ3LDcgQEAgZGZnL0RGR0Rlc2lyZWRXYXRj
aHBvaW50cy5jcHAKIGRmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwCiBkZmcvREZHRGlz
YXNzZW1ibGVyLmNwcAogZGZnL0RGR0RvZXNHQy5jcHAKK2RmZy9ERkdEb2VzR0NDaGVjay5jcHAK
IGRmZy9ERkdEcml2ZXIuY3BwCiBkZmcvREZHRWRnZS5jcHAKIGRmZy9ERkdFcG9jaC5jcHAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjI0NjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTkzNiw2ICsxOTM2LDcgQEAKIAkJRkVCNTFGNkMxQTk3QjY4
ODAwMUY5MjFDIC8qIFJlZ3Jlc3MxNDE4MDkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRUI1MUY2QjFBOTdCNjg4MDAxRjkyMUMgLyogUmVncmVzczE0
MTgwOS5tbSAqLzsgfTsKIAkJRkVCNThDMTUxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxp
bmdTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkVCNThDMTMxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFQzE2MDMyMjMzOUU5
RjkwMEEwNENCOCAvKiBDZWxsU2l6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkVDMTYwMzEyMzM5RTlGOTAwQTA0Q0I4IC8qIENlbGxTaXplLmggKi87
IH07CisJCUZFQzNBM0ExMjQ4NzM1Q0EwMDM5NUI1NCAvKiBERkdEb2VzR0NDaGVjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDM0EzQTAyNDg3MzVC
QzAwMzk1QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVDNTc5NzMyMzEwNUI1MTAwQkNBODNGIC8qIFZNSW5z
cGVjdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkVDNTc5NzIyMzEwNUI0ODAwQkNBODNGIC8qIFZNSW5zcGVjdG9ySW5saW5lcy5oICov
OyB9OwogCQlGRUM1Nzk3NjIzMTA1RjRFMDBCQ0E4M0YgLyogSW50ZWdyaXR5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUM1Nzk3NTIzMTA1RjQzMDBC
Q0E4M0YgLyogSW50ZWdyaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRkVDNTc5NzgyMzEwOTU0QzAwQkNBODNGIC8qIEludGVncml0eUlubGlu
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzU3
OTc3MjMxMDk1NEIwMEJDQTgzRiAvKiBJbnRlZ3JpdHlJbmxpbmVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUyMzIsNiArNTIzMyw4IEBACiAJ
CUZFQjU4QzEyMTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXJyb3JIYW5kbGluZ1Njb3BlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVCNThDMTMxODdCOEIxNjAwOThFRjBCIC8q
IEVycm9ySGFuZGxpbmdTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBF
cnJvckhhbmRsaW5nU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVDMTYw
MzEyMzM5RTlGOTAwQTA0Q0I4IC8qIENlbGxTaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENlbGxTaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQzNB
MzlGMjQ4NzM1QkMwMDM5NUI1NCAvKiBERkdEb2VzR0NDaGVjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdEb2VzR0NDaGVjay5jcHA7IHBhdGggPSBkZmcvREZHRG9lc0dDQ2hlY2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUMzQTNBMDI0ODczNUJDMDAzOTVCNTQgLyog
REZHRG9lc0dDQ2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRG9lc0dDQ2hlY2suaDsgcGF0aCA9
IGRmZy9ERkdEb2VzR0NDaGVjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUM1
Nzk3MjIzMTA1QjQ4MDBCQ0E4M0YgLyogVk1JbnNwZWN0b3JJbmxpbmVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZNSW5zcGVjdG9ySW5saW5lcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRUM1Nzk3NDIzMTA1RjQyMDBCQ0E4M0YgLyogSW50ZWdyaXR5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGVncml0eS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQzU3OTc1MjMxMDVGNDMwMEJDQTgzRiAvKiBJ
bnRlZ3JpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZWdyaXR5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03ODk2LDYgKzc4OTksOCBAQAogCQkJCTBG
RjQyNzYyMTU5MUExQzkwMDRDQjlGRiAvKiBERkdEaXNhc3NlbWJsZXIuaCAqLywKIAkJCQkwRjVB
MTI3MTE5MkQ5RkRGMDA4NzY0QTMgLyogREZHRG9lc0dDLmNwcCAqLywKIAkJCQkwRjVBMTI3MjE5
MkQ5RkRGMDA4NzY0QTMgLyogREZHRG9lc0dDLmggKi8sCisJCQkJRkVDM0EzOUYyNDg3MzVCQzAw
Mzk1QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmNwcCAqLywKKwkJCQlGRUMzQTNBMDI0ODczNUJDMDAz
OTVCNTQgLyogREZHRG9lc0dDQ2hlY2suaCAqLywKIAkJCQkwRkQ4MUFEMDE1NEZCNEVCMDA5ODNF
NzIgLyogREZHRG9taW5hdG9ycy5oICovLAogCQkJCTBGMUUzQTQ0MTUzNENCQUQwMDBGOTQ1NiAv
KiBERkdEb3VibGVGb3JtYXRTdGF0ZS5oICovLAogCQkJCTBGRDNDODIwMTQxMTVDRjgwMEZEODFD
QiAvKiBERkdEcml2ZXIuY3BwICovLApAQCAtMTAxOTYsNiArMTAyMDEsNyBAQAogCQkJCTc5RDVD
RDVCMUMxMTA2QTkwMENFQ0EwNyAvKiBTYW1wbGluZ1Byb2ZpbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkUwNTAyODFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkUwNTAyOTFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRz
VGFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFQzNBM0ExMjQ4NzM1Q0EwMDM5NUI1NCAvKiBE
RkdEb2VzR0NDaGVjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMkIxQUE5MDk1NjAwRDMz
QjMzIC8qIFNjb3BlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU1MjE3RUUyNzQ5
MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzMzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCBpbiBIZWFkZXJzICovLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0LmgJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDU5
LDYgKzE0NTksMTcgQEAgcHVibGljOgogICAgICAgICBzdG9yZTw2ND4oc3JjLCBhZGRyZXNzKTsK
ICAgICB9CiAKKyAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTY0IGltbSwgY29uc3Qgdm9pZCog
YWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmICghaW1tLm1fdmFsdWUpIHsKKyAgICAgICAgICAg
IHN0b3JlNjQoQVJNNjRSZWdpc3RlcnM6OnpyLCBhZGRyZXNzKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIG1vdmVUb0NhY2hlZFJlZyhpbW0sIGRhdGFNZW1vcnlU
ZW1wUmVnaXN0ZXIoKSk7CisgICAgICAgIHN0b3JlNjQoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVz
cyk7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJbW0zMiBpbW0sIEltcGxpY2l0
QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgc3RvcmU2NChUcnVzdGVkSW1tNjQoaW1t
Lm1fdmFsdWUpLCBhZGRyZXNzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDI2MjQ2NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aAkod29ya2luZyBjb3B5KQpAQCAtOTY3LDYgKzk2NywxNSBAQCBwdWJsaWM6CiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTY0IGltbSwgdm9pZCogYWRkcmVz
cykKKyAgICB7CisgICAgICAgIHVpbnQzMl90IGxvID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGlt
bS5tX3ZhbHVlKTsKKyAgICAgICAgdWludDMyX3QgaGkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
aW1tLm1fdmFsdWUgPj4gMzIpOworICAgICAgICB2b2lkKiBoaUFkZHJlc3MgPSByZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPihhZGRyZXNzKSArIDQ7CisgICAgICAgIHN0b3JlMzIoVHJ1c3RlZElt
bTMyKGxvKSwgYWRkcmVzcyk7CisgICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGhpKSwgaGlB
ZGRyZXNzKTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTMyIGltbSwgSW1w
bGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX2kz
Mm0oaW1tLm1fdmFsdWUsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAJKHJldmlzaW9uIDI2
MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NTgsNiArNjU4LDMxIEBAIHZvaWQgdGVzdENvdW50VHJhaWxpbmda
ZXJvczY0V2l0aG91dE51bGwKICAgICBib29sIHdvcmRDYW5CZVplcm8gPSBmYWxzZTsKICAgICB0
ZXN0Q291bnRUcmFpbGluZ1plcm9zNjRJbXBsKHdvcmRDYW5CZVplcm8pOwogfQorCit2b2lkIHRl
c3RTdG9yZTY0SW1tNjRBZGRyZXNzUG9pbnRlcigpCit7CisgICAgYXV0byBkb1Rlc3QgPSBbXSAo
aW50NjRfdCB2YWx1ZSkgeworICAgICAgICBpbnQ2NF90IGRlc3Q7CisgICAgICAgIHZvaWQqIGRl
c3RBZGRyZXNzID0gJmRlc3Q7CisKKyAgICAgICAgYXV0byB0ZXN0ID0gY29tcGlsZShbPV0gKEND
YWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQp
OworICAgICAgICAgICAgaml0LnN0b3JlNjQoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQodmFs
dWUpLCBkZXN0QWRkcmVzcyk7CisgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQp
OworICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICB9KTsKKworICAgICAgICBpbnZva2U8
c2l6ZV90Pih0ZXN0KTsKKyAgICAgICAgQ0hFQ0tfRVEoZGVzdCwgdmFsdWUpOworICAgIH07Cisg
ICAgCisgICAgZm9yIChhdXRvIHZhbHVlIDogaW50NjRPcGVyYW5kcygpKQorICAgICAgICBkb1Rl
c3QodmFsdWUpOworCisgICAgZG9UZXN0KDB4OTg3NjU1NTVBQUFBNDMyMSk7CisgICAgZG9UZXN0
KDB4QUFBQTQzMjE5ODc2NTU1NSk7Cit9CisKICNlbmRpZiAvLyBDUFUoWDg2XzY0KSB8fCBDUFUo
QVJNNjQpCiAKIHZvaWQgdGVzdENvbXBhcmVEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNv
bmRpdGlvbiBjb25kaXRpb24pCkBAIC0yNDk5LDYgKzI1MjQsNyBAQCB2b2lkIHJ1bihjb25zdCBj
aGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RDbGVhckJpdHM2NFdpdGhNYXNrVGVybmFyeSgpKTsK
ICAgICBSVU4odGVzdENvdW50VHJhaWxpbmdaZXJvczY0KCkpOwogICAgIFJVTih0ZXN0Q291bnRU
cmFpbGluZ1plcm9zNjRXaXRob3V0TnVsbENoZWNrKCkpOworICAgIFJVTih0ZXN0U3RvcmU2NElt
bTY0QWRkcmVzc1BvaW50ZXIoKSk7CiAjZW5kaWYKIAogI2lmIENQVShBUk02NCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDQ2hlY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDQ2hlY2suY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDQ2hlY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZHRG9lc0dD
Q2hlY2suaCIKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgorI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJWTUluc3BlY3Rvci5oIgorI2luY2x1ZGUg
PHd0Zi9EYXRhTG9nLmg+CisKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIERGRyB7CisKKyNp
ZiBFTkFCTEUoREZHX0RPRVNfR0NfVkFMSURBVElPTikKKworZXh0ZXJuIGNvbnN0IGNoYXIqIGRm
Z09wTmFtZXNbXTsKKworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBEb2VzR0NDaGVjazo6dmVyaWZ5
Q2FuR0MoVk0mIHZtKQoreworICAgIGlmICghZXhwZWN0RG9lc0dDKCkpIHsKKyAgICAgICAgZGF0
YUxvZygiRXJyb3I6IERvZXNHQyBmYWlsZWQiKTsKKyAgICAgICAgaWYgKGlzU3BlY2lhbCgpKSB7
CisgICAgICAgICAgICBzd2l0Y2ggKHNwZWNpYWwoKSkgeworICAgICAgICAgICAgY2FzZSBTcGVj
aWFsOjpVbmluaXRpYWxpemVkOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBTcGVjaWFsOjpERkdPU1JFeGl0OgorICAgICAgICAgICAgICAgIGRhdGFMb2coIiBAIERG
RyBvc3IgZXhpdCIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBT
cGVjaWFsOjpGVExPU1JFeGl0OgorICAgICAgICAgICAgICAgIGRhdGFMb2coIiBAIEZUTCBvc3Ig
ZXhpdCIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTcGVjaWFs
OjpSZXNlcnZlZFVudXNlZDoKKyAgICAgICAgICAgIGNhc2UgU3BlY2lhbDo6TnVtYmVyT2ZTcGVj
aWFsczoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGRhdGFMb2coIiBAIERAIiwg
bm9kZUluZGV4KCksICIgIiwgREZHOjpkZmdPcE5hbWVzW25vZGVPcCgpXSk7CisKKyAgICAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSB2bS50b3BDYWxsRnJhbWU7CisgICAgICAgIGlmIChjYWxs
RnJhbWUpIHsKKyAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5j
b2RlQmxvY2soKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiIGluICIsIGNvZGVCbG9jayk7Cisg
ICAgICAgICAgICBWTUluc3BlY3Rvcjo6ZHVtcFN0YWNrKCZ2bSwgY2FsbEZyYW1lKTsKKyAgICAg
ICAgfQorICAgICAgICBkYXRhTG9nTG4oKTsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlQoZXhw
ZWN0RG9lc0dDKCkpOworfQorI2VuZGlmIC8vIEVOQUJMRShERkdfRE9FU19HQ19WQUxJREFUSU9O
KQorCit9IC8vIG5hbWVzcGFjZSBERkcKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQ0NoZWNrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0NDaGVjay5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDQ2hlY2suaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVk07CisKK25hbWVz
cGFjZSBERkcgeworCitzdHJ1Y3QgRG9lc0dDQ2hlY2sgeworICAgIGVudW0gY2xhc3MgU3BlY2lh
bCB7CisgICAgICAgIFJlc2VydmVkVW51c2VkLCAvLyBzbyB0aGF0IHNwZWNpYWxzIHN0YXJ0IHdp
dGggMS4gaXNTcGVjaWFsKCkgcmVsaWVzIG9uIHRoaXMuCisgICAgICAgIFVuaW5pdGlhbGl6ZWQs
CisgICAgICAgIERGR09TUkV4aXQsCisgICAgICAgIEZUTE9TUkV4aXQsCisgICAgICAgIE51bWJl
ck9mU3BlY2lhbHMKKyAgICB9OworCisgICAgRG9lc0dDQ2hlY2soKQorICAgICAgICA6IG1fdmFs
dWUoZW5jb2RlKHRydWUsIFNwZWNpYWw6OlVuaW5pdGlhbGl6ZWQpKQorICAgIHsgfQorCisgICAg
c3RhdGljIHVpbnQ2NF90IGVuY29kZShib29sIGV4cGVjdERvZXNHQywgdW5zaWduZWQgbm9kZUlu
ZGV4LCB1bnNpZ25lZCBub2RlT3ApCisgICAgeworICAgICAgICB1aW50NjRfdCByZXN1bHQgPSBi
aXRzKG5vZGVJbmRleCkgPDwgbm9kZUluZGV4U2hpZnQ7CisgICAgICAgIHJlc3VsdCB8PSBiaXRz
KG5vZGVPcCkgPDwgbm9kZU9wU2hpZnQ7CisgICAgICAgIHJlc3VsdCB8PSBiaXRzKGV4cGVjdERv
ZXNHQykgPDwgZXhwZWN0RG9lc0dDU2hpZnQ7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorCisgICAgc3RhdGljIHVpbnQ2NF90IGVuY29kZShib29sIGV4cGVjdERvZXNHQywgU3BlY2lh
bCBzcGVjaWFsKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGJpdHMoc3BlY2lhbCkgPCBudW1iZXJP
ZlNwZWNpYWxzKTsKKyAgICAgICAgdWludDY0X3QgcmVzdWx0ID0gYml0cyhzcGVjaWFsKSA8PCBz
cGVjaWFsU2hpZnQ7CisgICAgICAgIHJlc3VsdCB8PSBiaXRzKGV4cGVjdERvZXNHQykgPDwgZXhw
ZWN0RG9lc0dDU2hpZnQ7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdm9p
ZCBzZXQoYm9vbCBleHBlY3REb2VzR0MsIHVuc2lnbmVkIG5vZGVJbmRleCwgdW5zaWduZWQgbm9k
ZU9wKQorICAgIHsKKyAgICAgICAgbV92YWx1ZSA9IGVuY29kZShleHBlY3REb2VzR0MsIG5vZGVJ
bmRleCwgbm9kZU9wKTsKKyAgICB9CisKKyAgICB2b2lkIHNldChib29sIGV4cGVjdERvZXNHQywg
U3BlY2lhbCBzcGVjaWFsKQorICAgIHsKKyAgICAgICAgbV92YWx1ZSA9IGVuY29kZShleHBlY3RE
b2VzR0MsIHNwZWNpYWwpOworICAgIH0KKworICAgIGJvb2wgZXhwZWN0RG9lc0dDKCkgeyByZXR1
cm4gbV92YWx1ZSAmIGV4cGVjdERvZXNHQ01hc2s7IH0KKyAgICBTcGVjaWFsIHNwZWNpYWwoKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxTcGVjaWFsPihzcGVjaWFsSW5kZXgoKSk7IH0KKyAgICB1bnNp
Z25lZCBub2RlSW5kZXgoKSB7IHJldHVybiBtX3ZhbHVlID4+IG5vZGVJbmRleFNoaWZ0OyB9Cisg
ICAgdW5zaWduZWQgbm9kZU9wKCkgeyByZXR1cm4gKG1fdmFsdWUgPj4gbm9kZU9wU2hpZnQpICYg
bm9kZU9wTWFzazsgfQorCisgICAgYm9vbCBpc1NwZWNpYWwoKSB7IHJldHVybiBzcGVjaWFsSW5k
ZXgoKTsgfQorCisgICAgdm9pZCB2ZXJpZnlDYW5HQyhWTSYpOworCitwcml2YXRlOgorICAgIHVu
c2lnbmVkIHNwZWNpYWxJbmRleCgpIHsgcmV0dXJuIChtX3ZhbHVlID4+IHNwZWNpYWxTaGlmdCkg
JiBzcGVjaWFsTWFzazsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHVpbnQ2
NF90IGJpdHMoVCB2YWx1ZSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZhbHVlKTsg
fQorCisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBudW1iZXJPZlNwZWNpYWxzID0gc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KFNwZWNpYWw6Ok51bWJlck9mU3BlY2lhbHMpOworCisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBleHBlY3REb2VzR0NTaGlmdCA9IDA7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBzcGVjaWFsU2hpZnQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgbm9kZU9wU2hpZnQgPSAxNjsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIG5vZGVJbmRleFNoaWZ0ID0gMzI7CisKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IGV4cGVjdERvZXNHQ01hc2sgPSAweDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBz
cGVjaWFsTWFzayA9IDB4N2ZmZjsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG5vZGVP
cE1hc2sgPSAweGZmZmY7CisKKyAgICB1aW50NjRfdCBtX3ZhbHVlIHsgMCB9OworfTsKKworfSAv
LyBuYW1lc3BhY2UgREZHCisKK3VzaW5nIERGRzo6RG9lc0dDQ2hlY2s7CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlz
aW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBkdW1wT1NSQXZhaWxhYmlsaXR5RGF0YSA9IGZh
bHNlOwogCiAvLyBDcmVhdGVzIGFuIGFycmF5IG9mIHN0cmluZ2l6ZWQgbmFtZXMuCi1zdGF0aWMg
Y29uc3QgY2hhciogZGZnT3BOYW1lc1tdID0geworY29uc3QgY2hhciogZGZnT3BOYW1lc1tdID0g
ewogI2RlZmluZSBTVFJJTkdJWkVfREZHX09QX0VOVU0ob3Bjb2RlLCBmbGFncykgI29wY29kZSAs
CiAgICAgRk9SX0VBQ0hfREZHX09QKFNUUklOR0laRV9ERkdfT1BfRU5VTSkKICN1bmRlZiBTVFJJ
TkdJWkVfREZHX09QX0VOVU0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmNwcAkocmV2aXNpb24gMjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Db21waWxlT1NSRXgKICAgICBpZiAodmFsaWRhdGVERkdEb2Vz
R0MpIHsKICAgICAgICAgLy8gV2UncmUgYWJvdXQgdG8gZXhpdCBvcHRpbWl6ZWQgY29kZS4gU28s
IHRoZXJlJ3Mgbm8gbG9uZ2VyIGFueSBvcHRpbWl6ZWQKICAgICAgICAgLy8gY29kZSBydW5uaW5n
IHRoYXQgZXhwZWN0cyBubyBHQy4KLSAgICAgICAgdm0uaGVhcC5zZXRFeHBlY3REb2VzR0ModHJ1
ZSk7CisgICAgICAgIHZtLmhlYXAuc2V0RG9lc0dDRXhwZWN0YXRpb24odHJ1ZSwgRG9lc0dDQ2hl
Y2s6OlNwZWNpYWw6OkRGR09TUkV4aXQpOwogICAgIH0KIAogICAgIGlmICh2bS5jYWxsRnJhbWVG
b3JDYXRjaCkKQEAgLTU1NSwxMSArNTU1LDExIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQo
Q0NhbGxIZWxwZXJzJiAKICAgICAgICAgLy8gY29kZSBydW5uaW5nIHRoYXQgZXhwZWN0cyBubyBH
Qy4gV2UgbmVlZCB0byBzZXQgdGhpcyBiZWZvcmUgYXJndW1lbnRzCiAgICAgICAgIC8vIG1hdGVy
aWFsaXphdGlvbiBiZWxvdyAoc2VlIGVtaXRSZXN0b3JlQXJndW1lbnRzKCkpLgogCi0gICAgICAg
IC8vIEV2ZW4gdGhvdWdoIHdlIHNldCBIZWFwOjptX2V4cGVjdERvZXNHQyBpbiBjb21waWxlT1NS
RXhpdCgpLCB3ZSBhbHNvIG5lZWQKKyAgICAgICAgLy8gRXZlbiB0aG91Z2ggd2Ugc2V0IEhlYXA6
Om1fZG9lc0dDIGluIGNvbXBpbGVPU1JFeGl0KCksIHdlIGFsc28gbmVlZAogICAgICAgICAvLyB0
byBzZXQgaXQgaGVyZSBiZWNhdXNlIGNvbXBpbGVPU1JFeGl0KCkgaXMgb25seSBjYWxsZWQgb24g
dGhlIGZpcnN0IHRpbWUKICAgICAgICAgLy8gd2UgZXhpdCBmcm9tIHRoaXMgc2l0ZSwgYnV0IGFs
bCBzdWJzZXF1ZW50IGV4aXRzIHdpbGwgdGFrZSB0aGlzIGNvbXBpbGVkCiAgICAgICAgIC8vIHJh
bXAgd2l0aG91dCBjYWxsaW5nIGNvbXBpbGVPU1JFeGl0KCkgZmlyc3QuCi0gICAgICAgIGppdC5z
dG9yZTgoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodHJ1ZSksIHZtLmhlYXAuYWRkcmVzc09m
RXhwZWN0RG9lc0dDKCkpOworICAgICAgICBqaXQuc3RvcmU2NChDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW02NChEb2VzR0NDaGVjazo6ZW5jb2RlKHRydWUsIERvZXNHQ0NoZWNrOjpTcGVjaWFsOjpE
RkdPU1JFeGl0KSksIHZtLmhlYXAuYWRkcmVzc09mRG9lc0dDKCkpOwogICAgIH0KIAogICAgIC8v
IE5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHN0YWNrIHBvaW50ZXIgYWNjb3VudHMgZm9yIHRoZSB3
b3JzdC1jYXNlIHN0YWNrIHVzYWdlIGF0IGV4aXQuIFRoaXMKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjYy
NDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjEzOCw3ICsyMTM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKSB7CiAg
ICAgICAgIGJvb2wgZXhwZWN0RG9lc0dDID0gZG9lc0dDKG1faml0LmdyYXBoKCksIG5vZGUpOwot
ICAgICAgICBtX2ppdC5zdG9yZTgoVHJ1c3RlZEltbTMyKGV4cGVjdERvZXNHQyksIHZtKCkuaGVh
cC5hZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSk7CisgICAgICAgIG1faml0LnN0b3JlNjQoVHJ1c3Rl
ZEltbTY0KERvZXNHQ0NoZWNrOjplbmNvZGUoZXhwZWN0RG9lc0dDLCBub2RlLT5pbmRleCgpLCBu
b2RlLT5vcCgpKSksIHZtKCkuaGVhcC5hZGRyZXNzT2ZEb2VzR0MoKSk7CiAgICAgfQogCiAjaWYg
RU5BQkxFKERGR19SRUdJU1RFUl9BTExPQ0FUSU9OX1ZBTElEQVRJT04pCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyNjI0
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcwNCw3ICs3MDQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGlmICh2
YWxpZGF0ZURGR0RvZXNHQykgewogICAgICAgICAgICAgYm9vbCBleHBlY3REb2VzR0MgPSBkb2Vz
R0MobV9ncmFwaCwgbV9ub2RlKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlKG1fb3V0LmNvbnN0
Qm9vbChleHBlY3REb2VzR0MpLCBtX291dC5hYnNvbHV0ZSh2bSgpLmhlYXAuYWRkcmVzc09mRXhw
ZWN0RG9lc0dDKCkpKTsKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlKG1fb3V0LmNvbnN0SW50NjQo
RG9lc0dDQ2hlY2s6OmVuY29kZShleHBlY3REb2VzR0MsIG1fbm9kZS0+aW5kZXgoKSwgbV9ub2Rl
LT5vcCgpKSksIG1fb3V0LmFic29sdXRlKHZtKCkuaGVhcC5hZGRyZXNzT2ZEb2VzR0MoKSkpOwog
ICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoIChtX25vZGUtPm9wKCkpIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHJldmlz
aW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBp
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDExICsyMTEsMTEgQEAgc3RhdGljIHZvaWQg
Y29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25lZAogICAgICAgICAvLyBjb2RlIHJ1bm5pbmcgdGhh
dCBleHBlY3RzIG5vIEdDLiBXZSBuZWVkIHRvIHNldCB0aGlzIGJlZm9yZSBvYmplY3QKICAgICAg
ICAgLy8gbWF0ZXJpYWxpemF0aW9uIGJlbG93LgogCi0gICAgICAgIC8vIEV2ZW4gdGhvdWdoIHdl
IHNldCBIZWFwOjptX2V4cGVjdERvZXNHQyBpbiBjb21waWxlRlRMT1NSRXhpdCgpLCB3ZSBhbHNv
IG5lZWQKKyAgICAgICAgLy8gRXZlbiB0aG91Z2ggd2Ugc2V0IEhlYXA6Om1fZG9lc0dDIGluIGNv
bXBpbGVGVExPU1JFeGl0KCksIHdlIGFsc28gbmVlZAogICAgICAgICAvLyB0byBzZXQgaXQgaGVy
ZSBiZWNhdXNlIGNvbXBpbGVGVExPU1JFeGl0KCkgaXMgb25seSBjYWxsZWQgb24gdGhlIGZpcnN0
IHRpbWUKICAgICAgICAgLy8gd2UgZXhpdCBmcm9tIHRoaXMgc2l0ZSwgYnV0IGFsbCBzdWJzZXF1
ZW50IGV4aXRzIHdpbGwgdGFrZSB0aGlzIGNvbXBpbGVkCiAgICAgICAgIC8vIHJhbXAgd2l0aG91
dCBjYWxsaW5nIGNvbXBpbGVGVExPU1JFeGl0KCkgZmlyc3QuCi0gICAgICAgIGppdC5zdG9yZTgo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodHJ1ZSksIHZtLmhlYXAuYWRkcmVzc09mRXhwZWN0
RG9lc0dDKCkpOworICAgICAgICBqaXQuc3RvcmU2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02
NChEb2VzR0NDaGVjazo6ZW5jb2RlKHRydWUsIERvZXNHQ0NoZWNrOjpTcGVjaWFsOjpGVExPU1JF
eGl0KSksIHZtLmhlYXAuYWRkcmVzc09mRG9lc0dDKCkpOwogICAgIH0KIAogICAgIC8vIEJyaW5n
IHRoZSBzdGFjayBiYWNrIGludG8gYSBzYW5lIGZvcm0gYW5kIGFzc2VydCB0aGF0IGl0J3Mgc2Fu
ZS4KQEAgLTU0OCw3ICs1NDgsNyBAQCBleHRlcm4gIkMiIEpJVF9PUEVSQVRJT04gdm9pZCogb3Bl
cmF0aW9uCiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKSB7CiAgICAgICAgIC8vIFdlJ3JlIGFi
b3V0IHRvIGV4aXQgb3B0aW1pemVkIGNvZGUuIFNvLCB0aGVyZSdzIG5vIGxvbmdlciBhbnkgb3B0
aW1pemVkCiAgICAgICAgIC8vIGNvZGUgcnVubmluZyB0aGF0IGV4cGVjdHMgbm8gR0MuCi0gICAg
ICAgIHZtLmhlYXAuc2V0RXhwZWN0RG9lc0dDKHRydWUpOworICAgICAgICB2bS5oZWFwLnNldERv
ZXNHQ0V4cGVjdGF0aW9uKHRydWUsIERvZXNHQ0NoZWNrOjpTcGVjaWFsOjpGVExPU1JFeGl0KTsK
ICAgICB9CiAKICAgICBpZiAodm0uY2FsbEZyYW1lRm9yQ2F0Y2gpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAkocmV2aXNpb24gMjYy
NDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCogQ29tcGxldGVTdWJzcGFj
ZTo6YWxsb2NhdGVTbG93KFZNJgogdm9pZCogQ29tcGxldGVTdWJzcGFjZTo6dHJ5QWxsb2NhdGVT
bG93KFZNJiB2bSwgc2l6ZV90IHNpemUsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRl
eHQpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VS
VCh2bS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdm0uaGVhcC52ZXJpZnlDYW5HQygp
OwogCiAgICAgc2FuaXRpemVTdGFja0ZvclZNKHZtKTsKICAgICAKQEAgLTE1Niw3ICsxNTYsNyBA
QCB2b2lkKiBDb21wbGV0ZVN1YnNwYWNlOjp0cnlBbGxvY2F0ZVNsb3coCiB2b2lkKiBDb21wbGV0
ZVN1YnNwYWNlOjpyZWFsbG9jYXRlUHJlY2lzZUFsbG9jYXRpb25Ob25WaXJ0dWFsKFZNJiB2bSwg
SGVhcENlbGwqIG9sZENlbGwsIHNpemVfdCBzaXplLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJy
YWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCiB7CiAgICAgaWYg
KHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bS5oZWFwLmV4cGVj
dERvZXNHQygpKTsKKyAgICAgICAgdm0uaGVhcC52ZXJpZnlDYW5HQygpOwogCiAgICAgLy8gVGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQgaW4gQnV0dGVyZmx5IGZvciBleGFtcGxlLgog
ICAgIEFTU0VSVChvbGRDZWxsLT5pc1ByZWNpc2VBbGxvY2F0aW9uKCkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZUlubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlSW5saW5lcy5o
CShyZXZpc2lvbiAyNjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0
ZVN1YnNwYWNlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNyArMzMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIEFMV0FZU19JTkxJTkUgdm9pZCogQ29tcGxldGVTdWJzcGFjZTo6YWxsb2Nh
dGVOb25WaXJ0dWFsKFZNJiB2bSwgc2l6ZV90IHNpemUsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZl
cnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBmYWlsdXJlTW9kZSkKIHsKICAgICBp
ZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtLmhlYXAuZXhw
ZWN0RG9lc0dDKCkpOworICAgICAgICB2bS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAKICAgICBpZiAo
QWxsb2NhdG9yIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwgQWxsb2Nh
dG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpKQogICAgICAgICByZXR1cm4gYWxsb2NhdG9y
LmFsbG9jYXRlKHZtLmhlYXAsIGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0MuaAkocmV2aXNpb24gMjYyNDY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUs
NyArNDUsNyBAQCBwdWJsaWM6CiAgICAgfkRlZmVyR0MoKQogICAgIHsKICAgICAgICAgaWYgKHZh
bGlkYXRlREZHRG9lc0dDKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9oZWFwLmV4cGVj
dERvZXNHQygpKTsKKyAgICAgICAgICAgIG1faGVhcC52ZXJpZnlDYW5HQygpOwogICAgICAgICBt
X2hlYXAuZGVjcmVtZW50RGVmZXJyYWxEZXB0aEFuZEdDSWZOZWVkZWQoKTsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDRGVmZXJyYWxDb250ZXh0SW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDRGVmZXJyYWxDb250
ZXh0SW5saW5lcy5oCShyZXZpc2lvbiAyNjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9HQ0RlZmVycmFsQ29udGV4dElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcg
KzM4LDcgQEAgQUxXQVlTX0lOTElORSBHQ0RlZmVycmFsQ29udGV4dDo6R0NEZWZlcgogQUxXQVlT
X0lOTElORSBHQ0RlZmVycmFsQ29udGV4dDo6fkdDRGVmZXJyYWxDb250ZXh0KCkKIHsKICAgICBp
ZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faGVhcC5leHBl
Y3REb2VzR0MoKSk7CisgICAgICAgIG1faGVhcC52ZXJpZnlDYW5HQygpOwogCiAgICAgaWYgKFVO
TElLRUxZKG1fc2hvdWxkR0MpKQogICAgICAgICBtX2hlYXAuY29sbGVjdElmTmVjZXNzYXJ5T3JE
ZWZlcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDI2
MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwNyBF
cmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xMDY0LDcgKzEw
NjQsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3luY2hyb25vdXNuZXNzIHN5bmNoCiB2b2lkIEhl
YXA6OmNvbGxlY3ROb3coU3luY2hyb25vdXNuZXNzIHN5bmNocm9ub3VzbmVzcywgR0NSZXF1ZXN0
IHJlcXVlc3QpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNF
X0FTU0VSVChleHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZlcmlmeUNhbkdDKCk7CiAKICAgICBz
d2l0Y2ggKHN5bmNocm9ub3VzbmVzcykgewogICAgIGNhc2UgQXN5bmM6IHsKQEAgLTEwOTcsNyAr
MTA5Nyw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdE5vdyhTeW5jaHJvbm91c25lc3Mgc3kKIHZvaWQg
SGVhcDo6Y29sbGVjdEFzeW5jKEdDUmVxdWVzdCByZXF1ZXN0KQogewogICAgIGlmICh2YWxpZGF0
ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhwZWN0RG9lc0dDKCkpOworICAg
ICAgICB2ZXJpZnlDYW5HQygpOwogCiAgICAgaWYgKCFtX2lzU2FmZVRvQ29sbGVjdCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTEyMSw3ICsxMTIxLDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0QXN5bmMo
R0NSZXF1ZXN0IHJlcXVlcwogdm9pZCBIZWFwOjpjb2xsZWN0U3luYyhHQ1JlcXVlc3QgcmVxdWVz
dCkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KGV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdmVyaWZ5Q2FuR0MoKTsKIAogICAgIGlmICghbV9p
c1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJldHVybjsKQEAgLTE3ODQsNyArMTc4NCw3IEBAIE5F
VkVSX0lOTElORSB2b2lkIEhlYXA6OnJlc3VtZVRoZU11dGF0b3IKIHZvaWQgSGVhcDo6c3RvcElm
TmVjZXNzYXJ5U2xvdygpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBS
RUxFQVNFX0FTU0VSVChleHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZlcmlmeUNhbkdDKCk7CiAK
ICAgICB3aGlsZSAoc3RvcElmTmVjZXNzYXJ5U2xvdyhtX3dvcmxkU3RhdGUubG9hZCgpKSkgeyB9
CiAgICAgCkBAIC0xNzk5LDcgKzE3OTksNyBAQCB2b2lkIEhlYXA6OnN0b3BJZk5lY2Vzc2FyeVNs
b3coKQogYm9vbCBIZWFwOjpzdG9wSWZOZWNlc3NhcnlTbG93KHVuc2lnbmVkIG9sZFN0YXRlKQog
ewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhw
ZWN0RG9lc0dDKCkpOworICAgICAgICB2ZXJpZnlDYW5HQygpOwogCiAgICAgUkVMRUFTRV9BU1NF
UlQob2xkU3RhdGUgJiBoYXNBY2Nlc3NCaXQpOwogICAgIFJFTEVBU0VfQVNTRVJUKCEob2xkU3Rh
dGUgJiBzdG9wcGVkQml0KSk7CkBAIC0yNjAxLDcgKzI2MDEsNyBAQCB2b2lkIEhlYXA6OmNvbGxl
Y3RJZk5lY2Vzc2FyeU9yRGVmZXIoR0NECiB7CiAgICAgQVNTRVJUKGRlZmVycmFsQ29udGV4dCB8
fCBpc0RlZmVycmVkKCkgfHwgIURpc2FsbG93R0M6OmlzSW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQo
KSk7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChl
eHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZlcmlmeUNhbkdDKCk7CiAKICAgICBpZiAoIW1faXNT
YWZlVG9Db2xsZWN0KQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCShyZXZpc2lvbiAyNjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAo
QykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0
IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJDZWxsU3RhdGUuaCIKICNpbmNs
dWRlICJDb2xsZWN0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJDb2xsZWN0b3JQaGFzZS5oIgorI2lu
Y2x1ZGUgIkRGR0RvZXNHQ0NoZWNrLmgiCiAjaW5jbHVkZSAiRGVsZXRlQWxsQ29kZUVmZm9ydC5o
IgogI2luY2x1ZGUgIkdDQ29uZHVjdG9yLmgiCiAjaW5jbHVkZSAiR0NJbmNvbWluZ1JlZkNvdW50
ZWRTZXQuaCIKQEAgLTMwMywxMyArMzA0LDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCB1bnNpZ25l
ZCogYWRkcmVzc09mQmFycmllclRocmVzaG9sZCgpIGNvbnN0IHsgcmV0dXJuICZtX2JhcnJpZXJU
aHJlc2hvbGQ7IH0KIAogI2lmIEVOQUJMRShERkdfRE9FU19HQ19WQUxJREFUSU9OKQotICAgIGJv
b2wgZXhwZWN0RG9lc0dDKCkgY29uc3QgeyByZXR1cm4gbV9leHBlY3REb2VzR0M7IH0KLSAgICB2
b2lkIHNldEV4cGVjdERvZXNHQyhib29sIHZhbHVlKSB7IG1fZXhwZWN0RG9lc0dDID0gdmFsdWU7
IH0KLSAgICBib29sKiBhZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSB7IHJldHVybiAmbV9leHBlY3RE
b2VzR0M7IH0KKyAgICBEb2VzR0NDaGVjayogYWRkcmVzc09mRG9lc0dDKCkgeyByZXR1cm4gJm1f
ZG9lc0dDOyB9CisgICAgdm9pZCBzZXREb2VzR0NFeHBlY3RhdGlvbihib29sIGV4cGVjdERvZXNH
QywgdW5zaWduZWQgbm9kZUluZGV4LCB1bnNpZ25lZCBub2RlT3ApIHsgbV9kb2VzR0Muc2V0KGV4
cGVjdERvZXNHQywgbm9kZUluZGV4LCBub2RlT3ApOyB9CisgICAgdm9pZCBzZXREb2VzR0NFeHBl
Y3RhdGlvbihib29sIGV4cGVjdERvZXNHQywgRG9lc0dDQ2hlY2s6OlNwZWNpYWwgc3BlY2lhbCkg
eyBtX2RvZXNHQy5zZXQoZXhwZWN0RG9lc0dDLCBzcGVjaWFsKTsgfQorICAgIHZvaWQgdmVyaWZ5
Q2FuR0MoKSB7IG1fZG9lc0dDLnZlcmlmeUNhbkdDKHZtKCkpOyB9CiAjZWxzZQotICAgIGJvb2wg
ZXhwZWN0RG9lc0dDKCkgY29uc3QgeyBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsgcmV0dXJu
IHRydWU7IH0KLSAgICB2b2lkIHNldEV4cGVjdERvZXNHQyhib29sKSB7IFVOUkVBQ0hBQkxFX0ZP
Ul9QTEFURk9STSgpOyB9Ci0gICAgYm9vbCogYWRkcmVzc09mRXhwZWN0RG9lc0dDKCkgeyBVTlJF
QUNIQUJMRV9GT1JfUExBVEZPUk0oKTsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBEb2VzR0NDaGVj
ayogYWRkcmVzc09mRG9lc0dDKCkgeyBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsgcmV0dXJu
IG51bGxwdHI7IH0KKyAgICB2b2lkIHNldERvZXNHQ0V4cGVjdGF0aW9uKGJvb2wsIHVuc2lnbmVk
LCB1bnNpZ25lZCkgeyB9CisgICAgdm9pZCBzZXREb2VzR0NFeHBlY3RhdGlvbihib29sLCBEb2Vz
R0NDaGVjazo6U3BlY2lhbCkgeyB9CisgICAgdm9pZCB2ZXJpZnlDYW5HQygpIHsgfQogI2VuZGlm
CiAKICAgICAvLyBJZiB0cnVlLCB0aGUgR0MgYmVsaWV2ZXMgdGhhdCB0aGUgbXV0YXRvciBpcyBj
dXJyZW50bHkgbWVzc2luZyB3aXRoIHRoZSBoZWFwLiBXZSBjYWxsIHRoaXMKQEAgLTYwNiw3ICs2
MDksNyBAQCBwcml2YXRlOgogICAgIE1hcmthYmxlPENvbGxlY3Rpb25TY29wZSwgRW51bU1hcmth
YmxlVHJhaXRzPENvbGxlY3Rpb25TY29wZT4+IG1fbGFzdENvbGxlY3Rpb25TY29wZTsKICAgICBM
b2NrIG1fcmFjZU1hcmtTdGFja0xvY2s7CiAjaWYgRU5BQkxFKERGR19ET0VTX0dDX1ZBTElEQVRJ
T04pCi0gICAgYm9vbCBtX2V4cGVjdERvZXNHQyB7IHRydWUgfTsKKyAgICBEb2VzR0NDaGVjayBt
X2RvZXNHQzsKICNlbmRpZgogCiAgICAgU3RydWN0dXJlSURUYWJsZSBtX3N0cnVjdHVyZUlEVGFi
bGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJKHJldmlz
aW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzNiw3ICsyMzYsNyBAQCBpbmxpbmUgdm9pZCBIZWFwOjpkZXBy
ZWNhdGVkUmVwb3J0RXh0cmFNCiBpbmxpbmUgdm9pZCBIZWFwOjphY3F1aXJlQWNjZXNzKCkKIHsK
ICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4cGVj
dERvZXNHQygpKTsKKyAgICAgICAgdmVyaWZ5Q2FuR0MoKTsKIAogICAgIGlmIChtX3dvcmxkU3Rh
dGUuY29tcGFyZUV4Y2hhbmdlV2VhaygwLCBoYXNBY2Nlc3NCaXQpKQogICAgICAgICByZXR1cm47
CkBAIC0yNjMsNyArMjYzLDcgQEAgaW5saW5lIGJvb2wgSGVhcDo6bWF5TmVlZFRvU3RvcCgpCiBp
bmxpbmUgdm9pZCBIZWFwOjpzdG9wSWZOZWNlc3NhcnkoKQogewogICAgIGlmICh2YWxpZGF0ZURG
R0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhwZWN0RG9lc0dDKCkpOworICAgICAg
ICB2ZXJpZnlDYW5HQygpOwogCiAgICAgaWYgKG1heU5lZWRUb1N0b3AoKSkKICAgICAgICAgc3Rv
cElmTmVjZXNzYXJ5U2xvdygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9j
YWxBbGxvY2F0b3JJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogQUxXQVlTX0lOTElORSB2b2lk
KiBMb2NhbEFsbG9jYXRvcjo6YWxsb2NhdGUoSGVhcCYgaGVhcCwgR0NEZWZlcnJhbENvbnRleHQq
IGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQogewog
ICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaGVhcC5l
eHBlY3REb2VzR0MoKSk7CisgICAgICAgIGhlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICByZXR1cm4g
bV9mcmVlTGlzdC5hbGxvY2F0ZSgKICAgICAgICAgWyZdICgpIC0+IEhlYXBDZWxsKiB7CiAgICAg
ICAgICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0oaGVhcC52bSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHAJKHJldmlzaW9uIDI2
MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNB
bGlnbmVkRm9yUHJlY2lzZUFsCiBQcmVjaXNlQWxsb2NhdGlvbiogUHJlY2lzZUFsbG9jYXRpb246
OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBzaXplX3Qgc2l6ZSwgU3Vic3BhY2UqIHN1YnNwYWNlLCB1
bnNpZ25lZCBpbmRleEluU3BhY2UpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAg
ICAgICBSRUxFQVNFX0FTU0VSVChoZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgaGVhcC52
ZXJpZnlDYW5HQygpOwogCiAgICAgc2l6ZV90IGFkanVzdGVkQWxpZ25tZW50QWxsb2NhdGlvblNp
emUgPSBoZWFkZXJTaXplKCkgKyBzaXplICsgaGFsZkFsaWdubWVudDsKICAgICBzdGF0aWNfYXNz
ZXJ0KGhhbGZBbGlnbm1lbnQgPT0gOCwgIldlIGFzc3VtZSB0aGF0IG1lbW9yeSByZXR1cm5lZCBi
eSBtYWxsb2MgaGFzIGFsaWdubWVudCA+PSA4LiIpOwpAQCAtMTIzLDcgKzEyMyw3IEBAIFByZWNp
c2VBbGxvY2F0aW9uKiBQcmVjaXNlQWxsb2NhdGlvbjo6dHIKIFByZWNpc2VBbGxvY2F0aW9uKiBQ
cmVjaXNlQWxsb2NhdGlvbjo6Y3JlYXRlRm9yTG93ZXJUaWVyKEhlYXAmIGhlYXAsIHNpemVfdCBz
aXplLCBTdWJzcGFjZSogc3Vic3BhY2UsIHVpbnQ4X3QgbG93ZXJUaWVySW5kZXgpCiB7CiAgICAg
aWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChoZWFwLmV4cGVj
dERvZXNHQygpKTsKKyAgICAgICAgaGVhcC52ZXJpZnlDYW5HQygpOwogCiAgICAgc2l6ZV90IGFk
anVzdGVkQWxpZ25tZW50QWxsb2NhdGlvblNpemUgPSBoZWFkZXJTaXplKCkgKyBzaXplICsgaGFs
ZkFsaWdubWVudDsKICAgICBzdGF0aWNfYXNzZXJ0KGhhbGZBbGlnbm1lbnQgPT0gOCwgIldlIGFz
c3VtZSB0aGF0IG1lbW9yeSByZXR1cm5lZCBieSBtYWxsb2MgaGFzIGFsaWdubWVudCA+PSA4LiIp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lv
biAyNjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MzMsNyArNzMzLDcgQEAgaW5saW5lIEpTU3RyaW5nKiBqc0VtcHR5
U3RyaW5nKFZNJiB2bSkKIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVy
U3RyaW5nKFZNJiB2bSwgVUNoYXIgYykKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2
bS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKQogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmlu
ZyhjKTsKICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSh2bSwgU3RyaW5nSW1wbDo6Y3JlYXRl
KCZjLCAxKSk7CkBAIC03NjMsNyArNzYzLDcgQEAgQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIEpT
U3RyaW5nOjp0b0lkZQogQUxXQVlTX0lOTElORSBBdG9tU3RyaW5nIEpTU3RyaW5nOjp0b0F0b21T
dHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAgICBpZiAodmFs
aWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtKCkuaGVhcC5leHBlY3RE
b2VzR0MoKSk7CisgICAgICAgIHZtKCkuaGVhcC52ZXJpZnlDYW5HQygpOwogICAgIGlmIChpc1Jv
cGUoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTUm9wZVN0cmluZyo+KHRo
aXMpLT5yZXNvbHZlUm9wZVRvQXRvbVN0cmluZyhnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBB
dG9tU3RyaW5nKHZhbHVlSW50ZXJuYWwoKSk7CkBAIC03NzIsNyArNzcyLDcgQEAgQUxXQVlTX0lO
TElORSBBdG9tU3RyaW5nIEpTU3RyaW5nOjp0b0F0bwogQUxXQVlTX0lOTElORSBSZWZQdHI8QXRv
bVN0cmluZ0ltcGw+IEpTU3RyaW5nOjp0b0V4aXN0aW5nQXRvbVN0cmluZyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAg
dm0oKS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYgKGlzUm9wZSgpKQogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4odGhpcyktPnJlc29sdmVSb3BlVG9F
eGlzdGluZ0F0b21TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAodmFsdWVJbnRlcm5hbCgp
LmltcGwoKS0+aXNBdG9tKCkpCkBAIC03ODMsNyArNzgzLDcgQEAgQUxXQVlTX0lOTElORSBSZWZQ
dHI8QXRvbVN0cmluZ0ltcGw+IEpTUwogaW5saW5lIGNvbnN0IFN0cmluZyYgSlNTdHJpbmc6OnZh
bHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKHZhbGlk
YXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhwZWN0RG9l
c0dDKCkpOworICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAoaXNSb3Bl
KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlz
KS0+cmVzb2x2ZVJvcGUoZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gdmFsdWVJbnRlcm5hbCgp
OwpAQCAtNzkzLDcgKzc5Myw3IEBAIGlubGluZSBjb25zdCBTdHJpbmcmIEpTU3RyaW5nOjp0cnlH
ZXRWYWwKIHsKICAgICBpZiAoYWxsb2NhdGlvbkFsbG93ZWQpIHsKICAgICAgICAgaWYgKHZhbGlk
YXRlREZHRG9lc0dDKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS5oZWFwLmV4cGVj
dERvZXNHQygpKTsKKyAgICAgICAgICAgIHZtKCkuaGVhcC52ZXJpZnlDYW5HQygpOwogICAgICAg
ICBpZiAoaXNSb3BlKCkpIHsKICAgICAgICAgICAgIC8vIFBhc3MgbnVsbHB0ciBmb3IgdGhlIEpT
R2xvYmFsT2JqZWN0IHNvIHRoYXQgcmVzb2x2ZVJvcGUgZG9lcyBub3QgdGhyb3cgaW4gdGhlIGV2
ZW50IG9mIGFuIE9PTSBlcnJvci4KICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGUobnVsbHB0cik7CkBAIC05ODMsNyAr
OTgzLDcgQEAgaW5saW5lIGJvb2wgaXNKU1N0cmluZyhKU1ZhbHVlIHYpCiBBTFdBWVNfSU5MSU5F
IFN0cmluZ1ZpZXcgSlNSb3BlU3RyaW5nOjp1bnNhZmVWaWV3KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBS
RUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bSgpLmhl
YXAudmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAoaXNTdWJzdHJpbmcoKSkgewogICAgICAgICBhdXRv
JiBiYXNlID0gc3Vic3RyaW5nQmFzZSgpLT52YWx1ZUludGVybmFsKCk7CiAgICAgICAgIGlmIChi
YXNlLmlzOEJpdCgpKQpAQCAtOTk2LDcgKzk5Niw3IEBAIEFMV0FZU19JTkxJTkUgU3RyaW5nVmll
dyBKU1JvcGVTdHJpbmc6OnUKIEFMV0FZU19JTkxJTkUgU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5n
U3RyaW5nIEpTUm9wZVN0cmluZzo6dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQot
ICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAg
ICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAoaXNTdWJzdHJpbmcoKSkgewogICAg
ICAgICBhdXRvJiBiYXNlID0gc3Vic3RyaW5nQmFzZSgpLT52YWx1ZUludGVybmFsKCk7CiAgICAg
ICAgIGlmIChiYXNlLmlzOEJpdCgpKQpAQCAtMTAxMCw3ICsxMDEwLDcgQEAgQUxXQVlTX0lOTElO
RSBTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdAogQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3IEpT
U3RyaW5nOjp1bnNhZmVWaWV3KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7
CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgp
LmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsK
ICAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1Jv
cGVTdHJpbmcqPih0aGlzKS0+dW5zYWZlVmlldyhnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiB2
YWx1ZUludGVybmFsKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBNYXRjaGVzQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkocmV2aXNpb24gMjYyNDY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTY0LDcgKzY0LDcgQEAgQUxXQVlTX0lOTElORSBKU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRj
aAogICAgIFJlZ0V4cCogcmVnRXhwLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgTWF0Y2hSZXN1bHQm
IHJlc3VsdCkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHZtLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bS5oZWFwLnZlcmlmeUNh
bkdDKCk7CiAKICAgICBWZWN0b3I8aW50LCAzMj4gc3VicGF0dGVyblJlc3VsdHM7CiAgICAgaW50
IHBvc2l0aW9uID0gcmVnRXhwLT5tYXRjaElubGluZShnbG9iYWxPYmplY3QsIHZtLCBpbnB1dFZh
bHVlLCBzdGFydE9mZnNldCwgc3VicGF0dGVyblJlc3VsdHMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400889</attachid>
            <date>2020-06-02 20:56:01 -0700</date>
            <delta_ts>2020-06-02 21:24:31 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-212680.patch</filename>
            <type>text/plain</type>
            <size>42849</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyNDcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MiBA
QAorMjAyMC0wNi0wMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW5oYW5jZSBEb2VzR0MgdmVyaWZpY2F0aW9uIHRvIHByaW50IG1vcmUgdXNlZnVsIGluZm8gd2hl
biB2ZXJpZmljYXRpb24gZmFpbHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTI2ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXaGVuIERvZXNHQyB2ZXJpZmljYXRpb24gZmFpbHMsIHRoZSBmaXJzdCBz
dGVwIG9mIGRlYnVnZ2luZyBpdCB3b3VsZCBiZSB0byBmaW5kCisgICAgICAgIG91dCB3aGF0IGFu
ZCB3aGljaCBERkcgbm9kZSByZXN1bHRlZCBpbiB0aGUgZmFpbGVkIHZlcmlmaWNhdGlvbi4gIElu
IHByZS1leGlzdGluZworICAgICAgICBjb2RlLCBhbGwgd2UgZ2V0IGlzIGFuIGFzc2VydGlvbiBm
YWlsdXJlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhhdCB0aGUgdmVyaWZp
ZXIgd2lsbCBkdW1wIHVzZWZ1bCBpbmZvLiAgSGVyZSdzIGFuIGV4YW1wbGU6CisKKyAgICAgICAg
ICAgIEVycm9yOiBEb2VzR0MgZmFpbGVkIEAgREAzNCBEYXRlR2V0SW50MzJPck5hTiBpbiAjRHRD
SE16OlsweDExMzViZDFkMC0+MHgxMTM1YmNhYjAtPjB4MTEzNWU1YzgwLCBERkdGdW5jdGlvbkNh
bGwsIDE1MCAoRGlkVHJ5VG9FbnRlckluTG9vcCldCisgICAgICAgICAgICAgICAgWzBdIGZyYW1l
IDB4N2ZmZWU4Mjg1NjYwIHsKKyAgICAgICAgICAgICAgICAgIG5hbWU6IAorICAgICAgICAgICAg
ICAgICAgc291cmNlVVJMOiAKKyAgICAgICAgICAgICAgICAgIGlzSW5saW5lZEZyYW1lOiBmYWxz
ZQorICAgICAgICAgICAgICAgICAgY2FsbGVlOiAweDExMzVmNjgyMAorICAgICAgICAgICAgICAg
ICAgcmV0dXJuUEM6IDB4NTBjZTYxMjQ4YWU2CisgICAgICAgICAgICAgICAgICBjYWxsZXJGcmFt
ZTogMHg3ZmZlZTgyODU2ZjAKKyAgICAgICAgICAgICAgICAgIHJhd0xvY2F0aW9uQml0czogNSAw
eDUKKyAgICAgICAgICAgICAgICAgIGNvZGVCbG9jazogMHgxMTM1YmQxZDAgI0R0Q0hNejpbMHgx
MTM1YmQxZDAtPjB4MTEzNWJjYWIwLT4weDExMzVlNWM4MCwgREZHRnVuY3Rpb25DYWxsLCAxNTAg
KERpZFRyeVRvRW50ZXJJbkxvb3ApXQorICAgICAgICAgICAgICAgICAgICBoYXNDb2RlT3JpZ2lu
czogdHJ1ZQorICAgICAgICAgICAgICAgICAgICBjYWxsU2l0ZUluZGV4OiA1IG9mIDEzCisgICAg
ICAgICAgICAgICAgICAgIGppdENvZGU6IDB4MTEzMDIwMjAwIHN0YXJ0IDB4NTBjZTYxMjE0YzYw
IGVuZCAweDUwY2U2MTIxOWIwMAorICAgICAgICAgICAgICAgICAgICBsaW5lOiAxCisgICAgICAg
ICAgICAgICAgICAgIGNvbHVtbjogNjAKKyAgICAgICAgICAgICAgICAgIEVudHJ5RnJhbWU6IDB4
N2ZmZWU4Mjg1ODYwCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFsxXSBmcmFt
ZSAweDdmZmVlODI4NTZmMCB7CisgICAgICAgICAgICAgICAgICBuYW1lOiAKKyAgICAgICAgICAg
ICAgICAgIHNvdXJjZVVSTDogZGF0ZS1mb3JtYXQteHBhcmIuanMKKyAgICAgICAgICAgICAgICAg
IGlzSW5saW5lZEZyYW1lOiBmYWxzZQorICAgICAgICAgICAgICAgICAgY2FsbGVlOiAweDExMzVm
NjVhMAorICAgICAgICAgICAgICAgICAgcmV0dXJuUEM6IDB4NTBjZTYxMjI3ZTk5CisgICAgICAg
ICAgICAgICAgICBjYWxsZXJGcmFtZTogMHg3ZmZlZTgyODU3NzAKKyAgICAgICAgICAgICAgICAg
IHJhd0xvY2F0aW9uQml0czogNCAweDQKKyAgICAgICAgICAgICAgICAgIGNvZGVCbG9jazogMHgx
MTM1YmQwYTAgI0JVNlpjZDpbMHgxMTM1YmQwYTAtPjB4MTEzNWJjMjYwLT4weDExMzVlNTE4MCwg
REZHRnVuY3Rpb25DYWxsLCAxMTIgKERpZFRyeVRvRW50ZXJJbkxvb3ApXQorICAgICAgICAgICAg
ICAgICAgICBoYXNDb2RlT3JpZ2luczogdHJ1ZQorICAgICAgICAgICAgICAgICAgICBjYWxsU2l0
ZUluZGV4OiA0IG9mIDEyCisgICAgICAgICAgICAgICAgICAgIGppdENvZGU6IDB4MTEzMDA0MDAw
IHN0YXJ0IDB4NTBjZTYxMjEyYzYwIGVuZCAweDUwY2U2MTIxNDk2MAorICAgICAgICAgICAgICAg
ICAgICBsaW5lOiAyNgorICAgICAgICAgICAgICAgICAgICBjb2x1bW46IDIyCisgICAgICAgICAg
ICAgICAgICBFbnRyeUZyYW1lOiAweDdmZmVlODI4NTg2MAorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBbMl0gZnJhbWUgMHg3ZmZlZTgyODU3NzAgeworICAgICAgICAgICAgICAg
ICAgbmFtZTogCisgICAgICAgICAgICAgICAgICBzb3VyY2VVUkw6IGRhdGUtZm9ybWF0LXhwYXJi
LmpzCisgICAgICAgICAgICAgICAgICBpc0lubGluZWRGcmFtZTogZmFsc2UKKyAgICAgICAgICAg
ICAgICAgIGNhbGxlZTogMHgxMTM1ZjY0ZTAKKyAgICAgICAgICAgICAgICAgIHJldHVyblBDOiAw
eDEwODA1OGViMQorICAgICAgICAgICAgICAgICAgY2FsbGVyRnJhbWU6IDB4N2ZmZWU4Mjg1N2Uw
CisgICAgICAgICAgICAgICAgICByYXdMb2NhdGlvbkJpdHM6IDEwMDEgMHgzZTkKKyAgICAgICAg
ICAgICAgICAgIGNvZGVCbG9jazogMHgxMTM1YmMxMzAgI0RBUzl4ZTpbMHgxMTM1YmMxMzAtPjB4
MTEzNWU1MTAwLCBCYXNlbGluZUZ1bmN0aW9uQ2FsbCwgMTE0OV0KKyAgICAgICAgICAgICAgICAg
ICAgYmMjMTAwMSBvZiAxMTQ5CisgICAgICAgICAgICAgICAgICAgIGxpbmU6IDQxNworICAgICAg
ICAgICAgICAgICAgICBjb2x1bW46IDM4CisgICAgICAgICAgICAgICAgICBFbnRyeUZyYW1lOiAw
eDdmZmVlODI4NTg2MAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBbM10gZnJh
bWUgMHg3ZmZlZTgyODU3ZTAgeworICAgICAgICAgICAgICAgICAgbmFtZTogZ2xvYmFsIGNvZGUK
KyAgICAgICAgICAgICAgICAgIHNvdXJjZVVSTDogZGF0ZS1mb3JtYXQteHBhcmIuanMKKyAgICAg
ICAgICAgICAgICAgIGlzSW5saW5lZEZyYW1lOiBmYWxzZQorICAgICAgICAgICAgICAgICAgY2Fs
bGVlOiAweDExMzBmOTdiOAorICAgICAgICAgICAgICAgICAgcmV0dXJuUEM6IDB4MTA4MDM5MDQz
CisgICAgICAgICAgICAgICAgICBjYWxsZXJGcmFtZTogMHgwCisgICAgICAgICAgICAgICAgICBy
YXdMb2NhdGlvbkJpdHM6IDIzIDB4MTcKKyAgICAgICAgICAgICAgICAgIGNvZGVCbG9jazogMHgx
MTM1YmMwMDAgPGdsb2JhbD4jQ3VrWHZ0OlsweDExMzViYzAwMC0+MHgxMTMwY2Q3NjgsIExMSW50
R2xvYmFsLCA4MV0KKyAgICAgICAgICAgICAgICAgICAgYmMjMjMgb2YgODEKKyAgICAgICAgICAg
ICAgICAgICAgbGluZTogNDI1CisgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogMworICAgICAg
ICAgICAgICAgICAgRW50cnlGcmFtZTogMHg3ZmZlZTgyODU4NjAKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IGV4cGVjdERvZXNHQygpCisKKyAgICAg
ICAgVGhlIGVycm9yIG1lc3NhZ2Ugbm93IGNvbWVzIHdpdGggdGhlIG5vZGUgaW5kZXgsIE5vZGVU
eXBlLCBjb2RlQmxvY2sgd2hpY2ggdGhpcworICAgICAgICBmYWlsdXJlIHdhcyBmb3VuZCBpbiwg
YW5kIHRoZSBKUyBjYWxsIHN0YWNrIHRoYXQgbGVkIHRvIHRoZSBmYWlsdXJlLgorCisgICAgICAg
IENoYW5nZXMgbWFkZToKKworICAgICAgICAxLiBJbnRyb2R1Y2VkIGEgRG9lc0dDQ2hlY2sgdmFs
dWUgdGhhdCBpcyB1c2VkIHRvIGVuY29kZSBzb21lIG9mIHRoZSBhYm92ZSBkYXRhLgorCisgICAg
ICAgICAgIFByZXZpb3VzbHksIHdlIG9ubHkgcmVjb3JkZWQgd2hldGhlciBkb2VzR0MoKSByZXR1
cm5zIHRydWUgb3IgZmFsc2UgZm9yIHRoZQorICAgICAgICAgICBOb2RlLiAgTm93LCB3ZSByZWNv
cmQgdGhlIG5vZGVJbmRleCBhbmQgbm9kZU9wIGFzIHdlbGwuCisKKyAgICAgICAgICAgTm90ZSB0
aGF0IHdlIGFsc28gc2V0IERvZXNHQyBleHBlY3RhdGlvbnMgZm9yIE9TUiBleGl0cy4gIFNvLCBE
b2VzR0NDaGVjaworICAgICAgICAgICBpbmNsdWRlcyBTcGVjaWFsIGNhc2VzIGZvciB0aG9zZS4K
KworICAgICAgICAyLiBBZGRlZCBzdG9yZTY0KFRydXN0ZWRJbW02NCBpbW0sIGNvbnN0IHZvaWQq
IGFkZHJlc3MpIGVtaXR0ZXJzIGZvciBYODZfNjQgYW5kIEFSTTY0LgorICAgICAgICAgICBBbHNv
IGFkZGVkIGEgdGVzdCBmb3IgdGhpcyBuZXcgZW1pdHRlciBpbiB0ZXN0bWFzbS4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6c3RvcmU2NCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdG9yZTY0KToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0U3RvcmU2NElt
bTY0QWRkcmVzc1BvaW50ZXIpOgorICAgICAgICAoSlNDOjpydW4pOgorICAgICAgICAqIGRmZy9E
RkdEb2VzR0NDaGVjay5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNr
Ojp2ZXJpZnlDYW5HQyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQ0NoZWNrLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNrOjpEb2VzR0NDaGVjayk6CisgICAgICAgIChK
U0M6OkRGRzo6RG9lc0dDQ2hlY2s6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkRGRzo6RG9lc0dD
Q2hlY2s6OnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6RG9lc0dDQ2hlY2s6OmV4cGVjdERvZXNH
Qyk6CisgICAgICAgIChKU0M6OkRGRzo6RG9lc0dDQ2hlY2s6OnNwZWNpYWwpOgorICAgICAgICAo
SlNDOjpERkc6OkRvZXNHQ0NoZWNrOjpub2RlSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkRv
ZXNHQ0NoZWNrOjpub2RlT3ApOgorICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNrOjppc1Nw
ZWNpYWwpOgorICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNrOjpzcGVjaWFsSW5kZXgpOgor
ICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNrOjpiaXRzKToKKyAgICAgICAgKiBkZmcvREZH
R3JhcGguY3BwOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpvcGVyYXRpb25Db21waWxlT1NSRXhpdCk6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhp
dDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAgIChKU0M6OkZUTDo6
b3BlcmF0aW9uQ29tcGlsZUZUTE9TUkV4aXQpOgorICAgICAgICAqIGhlYXAvQ29tcGxldGVTdWJz
cGFjZS5jcHA6CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OnRyeUFsbG9jYXRlU2xv
dyk6CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OnJlYWxsb2NhdGVQcmVjaXNlQWxs
b2NhdGlvbk5vblZpcnR1YWwpOgorICAgICAgICAqIGhlYXAvQ29tcGxldGVTdWJzcGFjZUlubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6Q29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdGVOb25WaXJ0dWFs
KToKKyAgICAgICAgKiBoZWFwL0RlZmVyR0MuaDoKKyAgICAgICAgKEpTQzo6RGVmZXJHQzo6fkRl
ZmVyR0MpOgorICAgICAgICAqIGhlYXAvR0NEZWZlcnJhbENvbnRleHRJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkdDRGVmZXJyYWxDb250ZXh0Ojp+R0NEZWZlcnJhbENvbnRleHQpOgorICAgICAg
ICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3ROb3cpOgorICAg
ICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0QXN5bmMpOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xs
ZWN0U3luYyk6CisgICAgICAgIChKU0M6OkhlYXA6OnN0b3BJZk5lY2Vzc2FyeVNsb3cpOgorICAg
ICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0SWZOZWNlc3NhcnlPckRlZmVyKToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6YWRkcmVzc09mRG9lc0dDKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6c2V0RG9lc0dDRXhwZWN0YXRpb24pOgorICAgICAgICAoSlNDOjpIZWFw
Ojp2ZXJpZnlDYW5HQyk6CisgICAgICAgIChKU0M6OkhlYXA6OmV4cGVjdERvZXNHQyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkhlYXA6OnNldEV4cGVjdERvZXNHQyk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkhlYXA6OmFkZHJlc3NPZkV4cGVjdERvZXNHQyk6IERlbGV0ZWQuCisg
ICAgICAgICogaGVhcC9IZWFwSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpIZWFwOjphY3F1aXJl
QWNjZXNzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6c3RvcElmTmVjZXNzYXJ5KToKKyAgICAgICAg
KiBoZWFwL0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpMb2NhbEFsbG9j
YXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAqIGhlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwOgor
ICAgICAgICAoSlNDOjpQcmVjaXNlQWxsb2NhdGlvbjo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6UHJlY2lzZUFsbG9jYXRpb246OmNyZWF0ZUZvckxvd2VyVGllcik6CisgICAgICAgICogcnVu
dGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpqc1NpbmdsZUNoYXJhY3RlclN0cmluZyk6
CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp0b0F0b21TdHJpbmcgY29uc3QpOgorICAgICAgICAo
SlNDOjpKU1N0cmluZzo6dG9FeGlzdGluZ0F0b21TdHJpbmcgY29uc3QpOgorICAgICAgICAoSlND
OjpKU1N0cmluZzo6dmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dHJ5R2V0
VmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1JvcGVTdHJpbmc6OnVuc2FmZVZpZXcgY29u
c3QpOgorICAgICAgICAoSlNDOjpKU1JvcGVTdHJpbmc6OnZpZXdXaXRoVW5kZXJseWluZ1N0cmlu
ZyBjb25zdCk6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp1bnNhZmVWaWV3IGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oOgorICAgICAgICAoSlNDOjpjcmVh
dGVSZWdFeHBNYXRjaGVzQXJyYXkpOgorCiAyMDIwLTA2LTAyICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBWTUluc3BlY3RvciBBUElzIHNob3VsZCBiZSB0YWtpbmcg
YSBWTSogaW5zdGVhZCBvZiBhIEpTR2xvYmFsT2JqZWN0Ki4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTY0LDYgKzU2NCw3IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUEKIAogICAgIGRmZy9ERkdDb21t
b24uaAogICAgIGRmZy9ERkdDb21waWxhdGlvbk1vZGUuaAorICAgIGRmZy9ERkdEb2VzR0NDaGVj
ay5oCiAgICAgZGZnL0RGR01pbmlmaWVkSUQuaAogCiAgICAgZG9taml0L0RPTUpJVEFic3RyYWN0
SGVhcC5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNjI0Njcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTM0Nyw2ICszNDcsNyBAQCBkZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcAogZGZnL0RGR0Rl
c2lyZWRXZWFrUmVmZXJlbmNlcy5jcHAKIGRmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCiBkZmcvREZH
RG9lc0dDLmNwcAorZGZnL0RGR0RvZXNHQ0NoZWNrLmNwcAogZGZnL0RGR0RyaXZlci5jcHAKIGRm
Zy9ERkdFZGdlLmNwcAogZGZnL0RGR0Vwb2NoLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTM2LDYgKzE5MzYsNyBAQAogCQlGRUI1MUY2QzFBOTdCNjg4MDAxRjkyMUMgLyogUmVncmVzczE0
MTgwOS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
QjUxRjZCMUE5N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQxODA5Lm1tICovOyB9OwogCQlGRUI1
OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUI1OEMxMzE4N0I4QjE2MDA5OEVG
MEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVDMTYwMzIyMzM5RTlGOTAwQTA0Q0I4IC8qIENlbGxTaXpl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUMxNjAz
MTIzMzlFOUY5MDBBMDRDQjggLyogQ2VsbFNpemUuaCAqLzsgfTsKKwkJRkVDM0EzQTEyNDg3MzVD
QTAwMzk1QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRUMzQTNBMDI0ODczNUJDMDAzOTVCNTQgLyogREZHRG9lc0dD
Q2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlGRUM1Nzk3MzIzMTA1QjUxMDBCQ0E4M0YgLyogVk1JbnNwZWN0b3JJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUM1Nzk3MjIzMTA1QjQ4
MDBCQ0E4M0YgLyogVk1JbnNwZWN0b3JJbmxpbmVzLmggKi87IH07CiAJCUZFQzU3OTc2MjMxMDVG
NEUwMEJDQTgzRiAvKiBJbnRlZ3JpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFQzU3OTc1MjMxMDVGNDMwMEJDQTgzRiAvKiBJbnRlZ3JpdHkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUM1Nzk3
ODIzMTA5NTRDMDBCQ0E4M0YgLyogSW50ZWdyaXR5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDNTc5NzcyMzEwOTU0QjAwQkNBODNGIC8q
IEludGVncml0eUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtNTIzMiw2ICs1MjMzLDggQEAKIAkJRkVCNThDMTIxODdCOEIxNjAwOThF
RjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBFcnJvckhhbmRsaW5nU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRUI1OEMxMzE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVycm9ySGFuZGxpbmdTY29wZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUMxNjAzMTIzMzlFOUY5MDBBMDRDQjggLyog
Q2VsbFNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2VsbFNpemUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVDM0EzOUYyNDg3MzVCQzAwMzk1QjU0IC8q
IERGR0RvZXNHQ0NoZWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0RvZXNHQ0NoZWNrLmNw
cDsgcGF0aCA9IGRmZy9ERkdEb2VzR0NDaGVjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZFQzNBM0EwMjQ4NzM1QkMwMDM5NUI1NCAvKiBERkdEb2VzR0NDaGVjay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdEb2VzR0NDaGVjay5oOyBwYXRoID0gZGZnL0RGR0RvZXNHQ0NoZWNrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQzU3OTcyMjMxMDVCNDgwMEJDQTgzRiAv
KiBWTUluc3BlY3RvcklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Vk1JbnNwZWN0b3JJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQzU3
OTc0MjMxMDVGNDIwMEJDQTgzRiAvKiBJbnRlZ3JpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW50ZWdyaXR5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkVDNTc5NzUyMzEwNUY0MzAwQkNBODNGIC8qIEludGVncml0eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlZ3JpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTc4OTYsNiArNzg5OSw4IEBACiAJCQkJMEZGNDI3NjIxNTkxQTFDOTAwNENCOUZG
IC8qIERGR0Rpc2Fzc2VtYmxlci5oICovLAogCQkJCTBGNUExMjcxMTkyRDlGREYwMDg3NjRBMyAv
KiBERkdEb2VzR0MuY3BwICovLAogCQkJCTBGNUExMjcyMTkyRDlGREYwMDg3NjRBMyAvKiBERkdE
b2VzR0MuaCAqLywKKwkJCQlGRUMzQTM5RjI0ODczNUJDMDAzOTVCNTQgLyogREZHRG9lc0dDQ2hl
Y2suY3BwICovLAorCQkJCUZFQzNBM0EwMjQ4NzM1QkMwMDM5NUI1NCAvKiBERkdEb2VzR0NDaGVj
ay5oICovLAogCQkJCTBGRDgxQUQwMTU0RkI0RUIwMDk4M0U3MiAvKiBERkdEb21pbmF0b3JzLmgg
Ki8sCiAJCQkJMEYxRTNBNDQxNTM0Q0JBRDAwMEY5NDU2IC8qIERGR0RvdWJsZUZvcm1hdFN0YXRl
LmggKi8sCiAJCQkJMEZEM0M4MjAxNDExNUNGODAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgKi8s
CkBAIC0xMDE5Niw2ICsxMDIwMSw3IEBACiAJCQkJNzlENUNENUIxQzExMDZBOTAwQ0VDQTA3IC8q
IFNhbXBsaW5nUHJvZmlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDI4MUFBOTA5NTYw
MEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDI5
MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJsZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRkVDM0EzQTEyNDg3MzVDQTAwMzk1QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMjRFNTUyMTdFRTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNoUmVn
aXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzMTExQjhCMjM5NzI1NjUwMEFB
MzRDRSAvKiBTY3JpYmJsZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAkocmV2aXNp
b24gMjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NTksNiArMTQ1OSwxNyBAQCBwdWJsaWM6
CiAgICAgICAgIHN0b3JlPDY0PihzcmMsIGFkZHJlc3MpOwogICAgIH0KIAorICAgIHZvaWQgc3Rv
cmU2NChUcnVzdGVkSW1tNjQgaW1tLCBjb25zdCB2b2lkKiBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgaWYgKCFpbW0ubV92YWx1ZSkgeworICAgICAgICAgICAgc3RvcmU2NChBUk02NFJlZ2lzdGVy
czo6enIsIGFkZHJlc3MpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgbW92ZVRvQ2FjaGVkUmVnKGltbSwgZGF0YU1lbW9yeVRlbXBSZWdpc3RlcigpKTsKKyAgICAg
ICAgc3RvcmU2NChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKKyAgICB9CisKICAgICB2b2lk
IHN0b3JlNjQoVHJ1c3RlZEltbTMyIGltbSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICAg
ewogICAgICAgICBzdG9yZTY0KFRydXN0ZWRJbW02NChpbW0ubV92YWx1ZSksIGFkZHJlc3MpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gMjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkpCkBAIC05
NzcsNiArOTc3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubW92cV9pMzJtKGlt
bS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBh
ZGRyZXNzLnNjYWxlKTsKICAgICB9CiAKKyAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTY0IGlt
bSwgdm9pZCogYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF1dG8gc3JjID0gc2NyYXRjaFJlZ2lz
dGVyKCk7CisgICAgICAgIG1vdmUoaW1tLCBzcmMpOworICAgICAgICBzd2FwKHNyYywgWDg2UmVn
aXN0ZXJzOjplYXgpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX0VBWG0oYWRkcmVzcyk7Cisg
ICAgICAgIHN3YXAoc3JjLCBYODZSZWdpc3RlcnM6OmVheCk7CisgICAgfQorCiAgICAgdm9pZCBz
dG9yZTY0KFRydXN0ZWRJbW02NCBpbW0sIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsK
ICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF8zMl82NChpbW0ubV92YWx1ZSkpIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCShyZXZpc2lv
biAyNjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjU4LDYgKzY1OCwzMSBAQCB2b2lkIHRlc3RDb3VudFRyYWls
aW5nWmVyb3M2NFdpdGhvdXROdWxsCiAgICAgYm9vbCB3b3JkQ2FuQmVaZXJvID0gZmFsc2U7CiAg
ICAgdGVzdENvdW50VHJhaWxpbmdaZXJvczY0SW1wbCh3b3JkQ2FuQmVaZXJvKTsKIH0KKwordm9p
ZCB0ZXN0U3RvcmU2NEltbTY0QWRkcmVzc1BvaW50ZXIoKQoreworICAgIGF1dG8gZG9UZXN0ID0g
W10gKGludDY0X3QgdmFsdWUpIHsKKyAgICAgICAgaW50NjRfdCBkZXN0OworICAgICAgICB2b2lk
KiBkZXN0QWRkcmVzcyA9ICZkZXN0OworCisgICAgICAgIGF1dG8gdGVzdCA9IGNvbXBpbGUoWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
aml0KTsKKyAgICAgICAgICAgIGppdC5zdG9yZTY0KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0
KHZhbHVlKSwgZGVzdEFkZHJlc3MpOworICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUo
aml0KTsKKyAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaW52
b2tlPHNpemVfdD4odGVzdCk7CisgICAgICAgIENIRUNLX0VRKGRlc3QsIHZhbHVlKTsKKyAgICB9
OworICAgIAorICAgIGZvciAoYXV0byB2YWx1ZSA6IGludDY0T3BlcmFuZHMoKSkKKyAgICAgICAg
ZG9UZXN0KHZhbHVlKTsKKworICAgIGRvVGVzdCgweDk4NzY1NTU1QUFBQTQzMjEpOworICAgIGRv
VGVzdCgweEFBQUE0MzIxOTg3NjU1NTUpOworfQorCiAjZW5kaWYgLy8gQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KQogCiB2b2lkIHRlc3RDb21wYXJlRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3Vi
bGVDb25kaXRpb24gY29uZGl0aW9uKQpAQCAtMjQ5OSw2ICsyNTI0LDcgQEAgdm9pZCBydW4oY29u
c3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0Q2xlYXJCaXRzNjRXaXRoTWFza1Rlcm5hcnko
KSk7CiAgICAgUlVOKHRlc3RDb3VudFRyYWlsaW5nWmVyb3M2NCgpKTsKICAgICBSVU4odGVzdENv
dW50VHJhaWxpbmdaZXJvczY0V2l0aG91dE51bGxDaGVjaygpKTsKKyAgICBSVU4odGVzdFN0b3Jl
NjRJbW02NEFkZHJlc3NQb2ludGVyKCkpOwogI2VuZGlmCiAKICNpZiBDUFUoQVJNNjQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQ0NoZWNrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQ0NoZWNrLmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQ0NoZWNrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRGR0Rv
ZXNHQ0NoZWNrLmgiCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKKyNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAiVk1JbnNwZWN0b3IuaCIKKyNpbmNs
dWRlIDx3dGYvRGF0YUxvZy5oPgorCituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBERkcgewor
CisjaWYgRU5BQkxFKERGR19ET0VTX0dDX1ZBTElEQVRJT04pCisKK2V4dGVybiBjb25zdCBjaGFy
KiBkZmdPcE5hbWVzW107CisKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgRG9lc0dDQ2hlY2s6OnZl
cmlmeUNhbkdDKFZNJiB2bSkKK3sKKyAgICBpZiAoIWV4cGVjdERvZXNHQygpKSB7CisgICAgICAg
IGRhdGFMb2coIkVycm9yOiBEb2VzR0MgZmFpbGVkIik7CisgICAgICAgIGlmIChpc1NwZWNpYWwo
KSkgeworICAgICAgICAgICAgc3dpdGNoIChzcGVjaWFsKCkpIHsKKyAgICAgICAgICAgIGNhc2Ug
U3BlY2lhbDo6VW5pbml0aWFsaXplZDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgU3BlY2lhbDo6REZHT1NSRXhpdDoKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
QCBERkcgb3NyIGV4aXQiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgU3BlY2lhbDo6RlRMT1NSRXhpdDoKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgQCBGVEwg
b3NyIGV4aXQiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU3Bl
Y2lhbDo6UmVzZXJ2ZWRVbnVzZWQ6CisgICAgICAgICAgICBjYXNlIFNwZWNpYWw6Ok51bWJlck9m
U3BlY2lhbHM6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBkYXRhTG9nKCIgQCBE
QCIsIG5vZGVJbmRleCgpLCAiICIsIERGRzo6ZGZnT3BOYW1lc1tub2RlT3AoKV0pOworCisgICAg
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gdm0udG9wQ2FsbEZyYW1lOworICAgICAgICBpZiAo
Y2FsbEZyYW1lKSB7CisgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBkYXRhTG9nTG4oIiBpbiAiLCBjb2RlQmxvY2sp
OworICAgICAgICAgICAgVk1JbnNwZWN0b3I6OmR1bXBTdGFjaygmdm0sIGNhbGxGcmFtZSk7Cisg
ICAgICAgIH0KKyAgICAgICAgZGF0YUxvZ0xuKCk7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJU
KGV4cGVjdERvZXNHQygpKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoREZHX0RPRVNfR0NfVkFMSURB
VElPTikKKworfSAvLyBuYW1lc3BhY2UgREZHCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0NDaGVjay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDQ2hlY2suaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQ0NoZWNrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFZNOworCitu
YW1lc3BhY2UgREZHIHsKKworc3RydWN0IERvZXNHQ0NoZWNrIHsKKyAgICBlbnVtIGNsYXNzIFNw
ZWNpYWwgeworICAgICAgICBSZXNlcnZlZFVudXNlZCwgLy8gc28gdGhhdCBzcGVjaWFscyBzdGFy
dCB3aXRoIDEuIGlzU3BlY2lhbCgpIHJlbGllcyBvbiB0aGlzLgorICAgICAgICBVbmluaXRpYWxp
emVkLAorICAgICAgICBERkdPU1JFeGl0LAorICAgICAgICBGVExPU1JFeGl0LAorICAgICAgICBO
dW1iZXJPZlNwZWNpYWxzCisgICAgfTsKKworICAgIERvZXNHQ0NoZWNrKCkKKyAgICAgICAgOiBt
X3ZhbHVlKGVuY29kZSh0cnVlLCBTcGVjaWFsOjpVbmluaXRpYWxpemVkKSkKKyAgICB7IH0KKwor
ICAgIHN0YXRpYyB1aW50NjRfdCBlbmNvZGUoYm9vbCBleHBlY3REb2VzR0MsIHVuc2lnbmVkIG5v
ZGVJbmRleCwgdW5zaWduZWQgbm9kZU9wKQorICAgIHsKKyAgICAgICAgdWludDY0X3QgcmVzdWx0
ID0gYml0cyhub2RlSW5kZXgpIDw8IG5vZGVJbmRleFNoaWZ0OworICAgICAgICByZXN1bHQgfD0g
Yml0cyhub2RlT3ApIDw8IG5vZGVPcFNoaWZ0OworICAgICAgICByZXN1bHQgfD0gYml0cyhleHBl
Y3REb2VzR0MpIDw8IGV4cGVjdERvZXNHQ1NoaWZ0OworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKworICAgIHN0YXRpYyB1aW50NjRfdCBlbmNvZGUoYm9vbCBleHBlY3REb2VzR0MsIFNw
ZWNpYWwgc3BlY2lhbCkKKyAgICB7CisgICAgICAgIEFTU0VSVChiaXRzKHNwZWNpYWwpIDwgbnVt
YmVyT2ZTcGVjaWFscyk7CisgICAgICAgIHVpbnQ2NF90IHJlc3VsdCA9IGJpdHMoc3BlY2lhbCkg
PDwgc3BlY2lhbFNoaWZ0OworICAgICAgICByZXN1bHQgfD0gYml0cyhleHBlY3REb2VzR0MpIDw8
IGV4cGVjdERvZXNHQ1NoaWZ0OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAg
IHZvaWQgc2V0KGJvb2wgZXhwZWN0RG9lc0dDLCB1bnNpZ25lZCBub2RlSW5kZXgsIHVuc2lnbmVk
IG5vZGVPcCkKKyAgICB7CisgICAgICAgIG1fdmFsdWUgPSBlbmNvZGUoZXhwZWN0RG9lc0dDLCBu
b2RlSW5kZXgsIG5vZGVPcCk7CisgICAgfQorCisgICAgdm9pZCBzZXQoYm9vbCBleHBlY3REb2Vz
R0MsIFNwZWNpYWwgc3BlY2lhbCkKKyAgICB7CisgICAgICAgIG1fdmFsdWUgPSBlbmNvZGUoZXhw
ZWN0RG9lc0dDLCBzcGVjaWFsKTsKKyAgICB9CisKKyAgICBib29sIGV4cGVjdERvZXNHQygpIHsg
cmV0dXJuIG1fdmFsdWUgJiBleHBlY3REb2VzR0NNYXNrOyB9CisgICAgU3BlY2lhbCBzcGVjaWFs
KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3BlY2lhbD4oc3BlY2lhbEluZGV4KCkpOyB9CisgICAg
dW5zaWduZWQgbm9kZUluZGV4KCkgeyByZXR1cm4gbV92YWx1ZSA+PiBub2RlSW5kZXhTaGlmdDsg
fQorICAgIHVuc2lnbmVkIG5vZGVPcCgpIHsgcmV0dXJuIChtX3ZhbHVlID4+IG5vZGVPcFNoaWZ0
KSAmIG5vZGVPcE1hc2s7IH0KKworICAgIGJvb2wgaXNTcGVjaWFsKCkgeyByZXR1cm4gc3BlY2lh
bEluZGV4KCk7IH0KKworICAgIHZvaWQgdmVyaWZ5Q2FuR0MoVk0mKTsKKworcHJpdmF0ZToKKyAg
ICB1bnNpZ25lZCBzcGVjaWFsSW5kZXgoKSB7IHJldHVybiAobV92YWx1ZSA+PiBzcGVjaWFsU2hp
ZnQpICYgc3BlY2lhbE1hc2s7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1
aW50NjRfdCBiaXRzKFQgdmFsdWUpIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1
ZSk7IH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3QgbnVtYmVyT2ZTcGVjaWFscyA9
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihTcGVjaWFsOjpOdW1iZXJPZlNwZWNpYWxzKTsKKworICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZXhwZWN0RG9lc0dDU2hpZnQgPSAwOworICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc3BlY2lhbFNoaWZ0ID0gMTsKKyAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIG5vZGVPcFNoaWZ0ID0gMTY7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBub2RlSW5kZXhTaGlmdCA9IDMyOworCisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBleHBlY3REb2VzR0NNYXNrID0gMHgxOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgc3BlY2lhbE1hc2sgPSAweDdmZmY7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBu
b2RlT3BNYXNrID0gMHhmZmZmOworCisgICAgdWludDY0X3QgbV92YWx1ZSB7IDAgfTsKK307CisK
K30gLy8gbmFtZXNwYWNlIERGRworCit1c2luZyBERkc6OkRvZXNHQ0NoZWNrOworCit9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShy
ZXZpc2lvbiAyNjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiBzdGF0aWMgY29uc3RleHByIGJvb2wgZHVtcE9TUkF2YWlsYWJpbGl0eURhdGEg
PSBmYWxzZTsKIAogLy8gQ3JlYXRlcyBhbiBhcnJheSBvZiBzdHJpbmdpemVkIG5hbWVzLgotc3Rh
dGljIGNvbnN0IGNoYXIqIGRmZ09wTmFtZXNbXSA9IHsKK2NvbnN0IGNoYXIqIGRmZ09wTmFtZXNb
XSA9IHsKICNkZWZpbmUgU1RSSU5HSVpFX0RGR19PUF9FTlVNKG9wY29kZSwgZmxhZ3MpICNvcGNv
ZGUgLAogICAgIEZPUl9FQUNIX0RGR19PUChTVFJJTkdJWkVfREZHX09QX0VOVU0pCiAjdW5kZWYg
U1RSSU5HSVpFX0RGR19PUF9FTlVNCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdC5jcHAJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGlsZU9TUkV4CiAgICAgaWYgKHZhbGlkYXRlREZH
RG9lc0dDKSB7CiAgICAgICAgIC8vIFdlJ3JlIGFib3V0IHRvIGV4aXQgb3B0aW1pemVkIGNvZGUu
IFNvLCB0aGVyZSdzIG5vIGxvbmdlciBhbnkgb3B0aW1pemVkCiAgICAgICAgIC8vIGNvZGUgcnVu
bmluZyB0aGF0IGV4cGVjdHMgbm8gR0MuCi0gICAgICAgIHZtLmhlYXAuc2V0RXhwZWN0RG9lc0dD
KHRydWUpOworICAgICAgICB2bS5oZWFwLnNldERvZXNHQ0V4cGVjdGF0aW9uKHRydWUsIERvZXNH
Q0NoZWNrOjpTcGVjaWFsOjpERkdPU1JFeGl0KTsKICAgICB9CiAKICAgICBpZiAodm0uY2FsbEZy
YW1lRm9yQ2F0Y2gpCkBAIC01NTUsMTEgKzU1NSwxMSBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVF
eGl0KENDYWxsSGVscGVycyYgCiAgICAgICAgIC8vIGNvZGUgcnVubmluZyB0aGF0IGV4cGVjdHMg
bm8gR0MuIFdlIG5lZWQgdG8gc2V0IHRoaXMgYmVmb3JlIGFyZ3VtZW50cwogICAgICAgICAvLyBt
YXRlcmlhbGl6YXRpb24gYmVsb3cgKHNlZSBlbWl0UmVzdG9yZUFyZ3VtZW50cygpKS4KIAotICAg
ICAgICAvLyBFdmVuIHRob3VnaCB3ZSBzZXQgSGVhcDo6bV9leHBlY3REb2VzR0MgaW4gY29tcGls
ZU9TUkV4aXQoKSwgd2UgYWxzbyBuZWVkCisgICAgICAgIC8vIEV2ZW4gdGhvdWdoIHdlIHNldCBI
ZWFwOjptX2RvZXNHQyBpbiBjb21waWxlT1NSRXhpdCgpLCB3ZSBhbHNvIG5lZWQKICAgICAgICAg
Ly8gdG8gc2V0IGl0IGhlcmUgYmVjYXVzZSBjb21waWxlT1NSRXhpdCgpIGlzIG9ubHkgY2FsbGVk
IG9uIHRoZSBmaXJzdCB0aW1lCiAgICAgICAgIC8vIHdlIGV4aXQgZnJvbSB0aGlzIHNpdGUsIGJ1
dCBhbGwgc3Vic2VxdWVudCBleGl0cyB3aWxsIHRha2UgdGhpcyBjb21waWxlZAogICAgICAgICAv
LyByYW1wIHdpdGhvdXQgY2FsbGluZyBjb21waWxlT1NSRXhpdCgpIGZpcnN0LgotICAgICAgICBq
aXQuc3RvcmU4KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHRydWUpLCB2bS5oZWFwLmFkZHJl
c3NPZkV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgaml0LnN0b3JlNjQoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tNjQoRG9lc0dDQ2hlY2s6OmVuY29kZSh0cnVlLCBEb2VzR0NDaGVjazo6U3BlY2lh
bDo6REZHT1NSRXhpdCkpLCB2bS5oZWFwLmFkZHJlc3NPZkRvZXNHQygpKTsKICAgICB9CiAKICAg
ICAvLyBOZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBzdGFjayBwb2ludGVyIGFjY291bnRzIGZvciB0
aGUgd29yc3QtY2FzZSBzdGFjayB1c2FnZSBhdCBleGl0LiBUaGlzCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9u
IDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMzgsNyArMjEzOCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykg
ewogICAgICAgICBib29sIGV4cGVjdERvZXNHQyA9IGRvZXNHQyhtX2ppdC5ncmFwaCgpLCBub2Rl
KTsKLSAgICAgICAgbV9qaXQuc3RvcmU4KFRydXN0ZWRJbW0zMihleHBlY3REb2VzR0MpLCB2bSgp
LmhlYXAuYWRkcmVzc09mRXhwZWN0RG9lc0dDKCkpOworICAgICAgICBtX2ppdC5zdG9yZTY0KFRy
dXN0ZWRJbW02NChEb2VzR0NDaGVjazo6ZW5jb2RlKGV4cGVjdERvZXNHQywgbm9kZS0+aW5kZXgo
KSwgbm9kZS0+b3AoKSkpLCB2bSgpLmhlYXAuYWRkcmVzc09mRG9lc0dDKCkpOwogICAgIH0KIAog
I2lmIEVOQUJMRShERkdfUkVHSVNURVJfQUxMT0NBVElPTl9WQUxJREFUSU9OKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24g
MjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03MDQsNyArNzA0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBp
ZiAodmFsaWRhdGVERkdEb2VzR0MpIHsKICAgICAgICAgICAgIGJvb2wgZXhwZWN0RG9lc0dDID0g
ZG9lc0dDKG1fZ3JhcGgsIG1fbm9kZSk7Ci0gICAgICAgICAgICBtX291dC5zdG9yZShtX291dC5j
b25zdEJvb2woZXhwZWN0RG9lc0dDKSwgbV9vdXQuYWJzb2x1dGUodm0oKS5oZWFwLmFkZHJlc3NP
ZkV4cGVjdERvZXNHQygpKSk7CisgICAgICAgICAgICBtX291dC5zdG9yZShtX291dC5jb25zdElu
dDY0KERvZXNHQ0NoZWNrOjplbmNvZGUoZXhwZWN0RG9lc0dDLCBtX25vZGUtPmluZGV4KCksIG1f
bm9kZS0+b3AoKSkpLCBtX291dC5hYnNvbHV0ZSh2bSgpLmhlYXAuYWRkcmVzc09mRG9lc0dDKCkp
KTsKICAgICAgICAgfQogCiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5vcCgpKSB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCShy
ZXZpc2lvbiAyNjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRD
b21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMSwxMSArMjExLDExIEBAIHN0YXRpYyB2
b2lkIGNvbXBpbGVTdHViKFZNJiB2bSwgdW5zaWduZWQKICAgICAgICAgLy8gY29kZSBydW5uaW5n
IHRoYXQgZXhwZWN0cyBubyBHQy4gV2UgbmVlZCB0byBzZXQgdGhpcyBiZWZvcmUgb2JqZWN0CiAg
ICAgICAgIC8vIG1hdGVyaWFsaXphdGlvbiBiZWxvdy4KIAotICAgICAgICAvLyBFdmVuIHRob3Vn
aCB3ZSBzZXQgSGVhcDo6bV9leHBlY3REb2VzR0MgaW4gY29tcGlsZUZUTE9TUkV4aXQoKSwgd2Ug
YWxzbyBuZWVkCisgICAgICAgIC8vIEV2ZW4gdGhvdWdoIHdlIHNldCBIZWFwOjptX2RvZXNHQyBp
biBjb21waWxlRlRMT1NSRXhpdCgpLCB3ZSBhbHNvIG5lZWQKICAgICAgICAgLy8gdG8gc2V0IGl0
IGhlcmUgYmVjYXVzZSBjb21waWxlRlRMT1NSRXhpdCgpIGlzIG9ubHkgY2FsbGVkIG9uIHRoZSBm
aXJzdCB0aW1lCiAgICAgICAgIC8vIHdlIGV4aXQgZnJvbSB0aGlzIHNpdGUsIGJ1dCBhbGwgc3Vi
c2VxdWVudCBleGl0cyB3aWxsIHRha2UgdGhpcyBjb21waWxlZAogICAgICAgICAvLyByYW1wIHdp
dGhvdXQgY2FsbGluZyBjb21waWxlRlRMT1NSRXhpdCgpIGZpcnN0LgotICAgICAgICBqaXQuc3Rv
cmU4KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHRydWUpLCB2bS5oZWFwLmFkZHJlc3NPZkV4
cGVjdERvZXNHQygpKTsKKyAgICAgICAgaml0LnN0b3JlNjQoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tNjQoRG9lc0dDQ2hlY2s6OmVuY29kZSh0cnVlLCBEb2VzR0NDaGVjazo6U3BlY2lhbDo6RlRM
T1NSRXhpdCkpLCB2bS5oZWFwLmFkZHJlc3NPZkRvZXNHQygpKTsKICAgICB9CiAKICAgICAvLyBC
cmluZyB0aGUgc3RhY2sgYmFjayBpbnRvIGEgc2FuZSBmb3JtIGFuZCBhc3NlcnQgdGhhdCBpdCdz
IHNhbmUuCkBAIC01NDgsNyArNTQ4LDcgQEAgZXh0ZXJuICJDIiBKSVRfT1BFUkFUSU9OIHZvaWQq
IG9wZXJhdGlvbgogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykgewogICAgICAgICAvLyBXZSdy
ZSBhYm91dCB0byBleGl0IG9wdGltaXplZCBjb2RlLiBTbywgdGhlcmUncyBubyBsb25nZXIgYW55
IG9wdGltaXplZAogICAgICAgICAvLyBjb2RlIHJ1bm5pbmcgdGhhdCBleHBlY3RzIG5vIEdDLgot
ICAgICAgICB2bS5oZWFwLnNldEV4cGVjdERvZXNHQyh0cnVlKTsKKyAgICAgICAgdm0uaGVhcC5z
ZXREb2VzR0NFeHBlY3RhdGlvbih0cnVlLCBEb2VzR0NDaGVjazo6U3BlY2lhbDo6RlRMT1NSRXhp
dCk7CiAgICAgfQogCiAgICAgaWYgKHZtLmNhbGxGcmFtZUZvckNhdGNoKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAJKHJldmlzaW9u
IDI2MjQ2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQqIENvbXBsZXRlU3Vi
c3BhY2U6OmFsbG9jYXRlU2xvdyhWTSYKIHZvaWQqIENvbXBsZXRlU3Vic3BhY2U6OnRyeUFsbG9j
YXRlU2xvdyhWTSYgdm0sIHNpemVfdCBzaXplLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxD
b250ZXh0KQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQodm0uaGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZtLmhlYXAudmVyaWZ5Q2Fu
R0MoKTsKIAogICAgIHNhbml0aXplU3RhY2tGb3JWTSh2bSk7CiAgICAgCkBAIC0xNTYsNyArMTU2
LDcgQEAgdm9pZCogQ29tcGxldGVTdWJzcGFjZTo6dHJ5QWxsb2NhdGVTbG93KAogdm9pZCogQ29t
cGxldGVTdWJzcGFjZTo6cmVhbGxvY2F0ZVByZWNpc2VBbGxvY2F0aW9uTm9uVmlydHVhbChWTSYg
dm0sIEhlYXBDZWxsKiBvbGRDZWxsLCBzaXplX3Qgc2l6ZSwgR0NEZWZlcnJhbENvbnRleHQqIGRl
ZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQogewogICAg
IGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0uaGVhcC5l
eHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZtLmhlYXAudmVyaWZ5Q2FuR0MoKTsKIAogICAgIC8v
IFRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0IGluIEJ1dHRlcmZseSBmb3IgZXhhbXBs
ZS4KICAgICBBU1NFUlQob2xkQ2VsbC0+aXNQcmVjaXNlQWxsb2NhdGlvbigpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZUlubGlu
ZXMuaAkocmV2aXNpb24gMjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29t
cGxldGVTdWJzcGFjZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDcgKzMzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiBBTFdBWVNfSU5MSU5FIHZvaWQqIENvbXBsZXRlU3Vic3BhY2U6OmFs
bG9jYXRlTm9uVmlydHVhbChWTSYgdm0sIHNpemVfdCBzaXplLCBHQ0RlZmVycmFsQ29udGV4dCog
ZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCiB7CiAg
ICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bS5oZWFw
LmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdm0uaGVhcC52ZXJpZnlDYW5HQygpOwogCiAgICAg
aWYgKEFsbG9jYXRvciBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFs
bG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKSkKICAgICAgICAgcmV0dXJuIGFsbG9j
YXRvci5hbGxvY2F0ZSh2bS5oZWFwLCBkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmgJKHJldmlzaW9uIDI2MjQ2NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0MuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIH5EZWZlckdDKCkKICAgICB7CiAgICAgICAgIGlm
ICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faGVhcC5l
eHBlY3REb2VzR0MoKSk7CisgICAgICAgICAgICBtX2hlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICAg
ICAgbV9oZWFwLmRlY3JlbWVudERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVkKCk7CiAgICAgfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0RlZmVycmFsQ29udGV4dElubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0RlZmVycmFs
Q29udGV4dElubGluZXMuaAkocmV2aXNpb24gMjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvR0NEZWZlcnJhbENvbnRleHRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
OCw3ICszOCw3IEBAIEFMV0FZU19JTkxJTkUgR0NEZWZlcnJhbENvbnRleHQ6OkdDRGVmZXIKIEFM
V0FZU19JTkxJTkUgR0NEZWZlcnJhbENvbnRleHQ6On5HQ0RlZmVycmFsQ29udGV4dCgpCiB7CiAg
ICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2hlYXAu
ZXhwZWN0RG9lc0dDKCkpOworICAgICAgICBtX2hlYXAudmVyaWZ5Q2FuR0MoKTsKIAogICAgIGlm
IChVTkxJS0VMWShtX3Nob3VsZEdDKSkKICAgICAgICAgbV9oZWFwLmNvbGxlY3RJZk5lY2Vzc2Fy
eU9yRGVmZXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lv
biAyNjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIw
MDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMTA2NCw3
ICsxMDY0LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN5bmNocm9ub3VzbmVzcyBzeW5jaAogdm9p
ZCBIZWFwOjpjb2xsZWN0Tm93KFN5bmNocm9ub3VzbmVzcyBzeW5jaHJvbm91c25lc3MsIEdDUmVx
dWVzdCByZXF1ZXN0KQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlQoZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2ZXJpZnlDYW5HQygpOwogCiAg
ICAgc3dpdGNoIChzeW5jaHJvbm91c25lc3MpIHsKICAgICBjYXNlIEFzeW5jOiB7CkBAIC0xMDk3
LDcgKzEwOTcsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3ROb3coU3luY2hyb25vdXNuZXNzIHN5CiB2
b2lkIEhlYXA6OmNvbGxlY3RBc3luYyhHQ1JlcXVlc3QgcmVxdWVzdCkKIHsKICAgICBpZiAodmFs
aWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4cGVjdERvZXNHQygpKTsK
KyAgICAgICAgdmVyaWZ5Q2FuR0MoKTsKIAogICAgIGlmICghbV9pc1NhZmVUb0NvbGxlY3QpCiAg
ICAgICAgIHJldHVybjsKQEAgLTExMjEsNyArMTEyMSw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdEFz
eW5jKEdDUmVxdWVzdCByZXF1ZXMKIHZvaWQgSGVhcDo6Y29sbGVjdFN5bmMoR0NSZXF1ZXN0IHJl
cXVlc3QpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FT
U0VSVChleHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZlcmlmeUNhbkdDKCk7CiAKICAgICBpZiAo
IW1faXNTYWZlVG9Db2xsZWN0KQogICAgICAgICByZXR1cm47CkBAIC0xNzg0LDcgKzE3ODQsNyBA
QCBORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpyZXN1bWVUaGVNdXRhdG9yCiB2b2lkIEhlYXA6OnN0
b3BJZk5lY2Vzc2FyeVNsb3coKQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2ZXJpZnlDYW5HQygp
OwogCiAgICAgd2hpbGUgKHN0b3BJZk5lY2Vzc2FyeVNsb3cobV93b3JsZFN0YXRlLmxvYWQoKSkp
IHsgfQogICAgIApAQCAtMTc5OSw3ICsxNzk5LDcgQEAgdm9pZCBIZWFwOjpzdG9wSWZOZWNlc3Nh
cnlTbG93KCkKIGJvb2wgSGVhcDo6c3RvcElmTmVjZXNzYXJ5U2xvdyh1bnNpZ25lZCBvbGRTdGF0
ZSkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KGV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdmVyaWZ5Q2FuR0MoKTsKIAogICAgIFJFTEVBU0Vf
QVNTRVJUKG9sZFN0YXRlICYgaGFzQWNjZXNzQml0KTsKICAgICBSRUxFQVNFX0FTU0VSVCghKG9s
ZFN0YXRlICYgc3RvcHBlZEJpdCkpOwpAQCAtMjYwMSw3ICsyNjAxLDcgQEAgdm9pZCBIZWFwOjpj
b2xsZWN0SWZOZWNlc3NhcnlPckRlZmVyKEdDRAogewogICAgIEFTU0VSVChkZWZlcnJhbENvbnRl
eHQgfHwgaXNEZWZlcnJlZCgpIHx8ICFEaXNhbGxvd0dDOjppc0luRWZmZWN0T25DdXJyZW50VGhy
ZWFkKCkpOwogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlQoZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2ZXJpZnlDYW5HQygpOwogCiAgICAgaWYgKCFt
X2lzU2FmZVRvQ29sbGVjdCkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaAkocmV2aXNpb24gMjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmln
aHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHly
aWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAo
QykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmln
aHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiQ2VsbFN0YXRlLmgiCiAj
aW5jbHVkZSAiQ29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiQ29sbGVjdG9yUGhhc2UuaCIK
KyNpbmNsdWRlICJERkdEb2VzR0NDaGVjay5oIgogI2luY2x1ZGUgIkRlbGV0ZUFsbENvZGVFZmZv
cnQuaCIKICNpbmNsdWRlICJHQ0NvbmR1Y3Rvci5oIgogI2luY2x1ZGUgIkdDSW5jb21pbmdSZWZD
b3VudGVkU2V0LmgiCkBAIC0zMDMsMTMgKzMwNCwxNSBAQCBwdWJsaWM6CiAgICAgY29uc3QgdW5z
aWduZWQqIGFkZHJlc3NPZkJhcnJpZXJUaHJlc2hvbGQoKSBjb25zdCB7IHJldHVybiAmbV9iYXJy
aWVyVGhyZXNob2xkOyB9CiAKICNpZiBFTkFCTEUoREZHX0RPRVNfR0NfVkFMSURBVElPTikKLSAg
ICBib29sIGV4cGVjdERvZXNHQygpIGNvbnN0IHsgcmV0dXJuIG1fZXhwZWN0RG9lc0dDOyB9Ci0g
ICAgdm9pZCBzZXRFeHBlY3REb2VzR0MoYm9vbCB2YWx1ZSkgeyBtX2V4cGVjdERvZXNHQyA9IHZh
bHVlOyB9Ci0gICAgYm9vbCogYWRkcmVzc09mRXhwZWN0RG9lc0dDKCkgeyByZXR1cm4gJm1fZXhw
ZWN0RG9lc0dDOyB9CisgICAgRG9lc0dDQ2hlY2sqIGFkZHJlc3NPZkRvZXNHQygpIHsgcmV0dXJu
ICZtX2RvZXNHQzsgfQorICAgIHZvaWQgc2V0RG9lc0dDRXhwZWN0YXRpb24oYm9vbCBleHBlY3RE
b2VzR0MsIHVuc2lnbmVkIG5vZGVJbmRleCwgdW5zaWduZWQgbm9kZU9wKSB7IG1fZG9lc0dDLnNl
dChleHBlY3REb2VzR0MsIG5vZGVJbmRleCwgbm9kZU9wKTsgfQorICAgIHZvaWQgc2V0RG9lc0dD
RXhwZWN0YXRpb24oYm9vbCBleHBlY3REb2VzR0MsIERvZXNHQ0NoZWNrOjpTcGVjaWFsIHNwZWNp
YWwpIHsgbV9kb2VzR0Muc2V0KGV4cGVjdERvZXNHQywgc3BlY2lhbCk7IH0KKyAgICB2b2lkIHZl
cmlmeUNhbkdDKCkgeyBtX2RvZXNHQy52ZXJpZnlDYW5HQyh2bSgpKTsgfQogI2Vsc2UKLSAgICBi
b29sIGV4cGVjdERvZXNHQygpIGNvbnN0IHsgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdm9pZCBzZXRFeHBlY3REb2VzR0MoYm9vbCkgeyBVTlJFQUNIQUJM
RV9GT1JfUExBVEZPUk0oKTsgfQotICAgIGJvb2wqIGFkZHJlc3NPZkV4cGVjdERvZXNHQygpIHsg
VU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7IHJldHVybiBudWxscHRyOyB9CisgICAgRG9lc0dD
Q2hlY2sqIGFkZHJlc3NPZkRvZXNHQygpIHsgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7IHJl
dHVybiBudWxscHRyOyB9CisgICAgdm9pZCBzZXREb2VzR0NFeHBlY3RhdGlvbihib29sLCB1bnNp
Z25lZCwgdW5zaWduZWQpIHsgfQorICAgIHZvaWQgc2V0RG9lc0dDRXhwZWN0YXRpb24oYm9vbCwg
RG9lc0dDQ2hlY2s6OlNwZWNpYWwpIHsgfQorICAgIHZvaWQgdmVyaWZ5Q2FuR0MoKSB7IH0KICNl
bmRpZgogCiAgICAgLy8gSWYgdHJ1ZSwgdGhlIEdDIGJlbGlldmVzIHRoYXQgdGhlIG11dGF0b3Ig
aXMgY3VycmVudGx5IG1lc3Npbmcgd2l0aCB0aGUgaGVhcC4gV2UgY2FsbCB0aGlzCkBAIC02MDYs
NyArNjA5LDcgQEAgcHJpdmF0ZToKICAgICBNYXJrYWJsZTxDb2xsZWN0aW9uU2NvcGUsIEVudW1N
YXJrYWJsZVRyYWl0czxDb2xsZWN0aW9uU2NvcGU+PiBtX2xhc3RDb2xsZWN0aW9uU2NvcGU7CiAg
ICAgTG9jayBtX3JhY2VNYXJrU3RhY2tMb2NrOwogI2lmIEVOQUJMRShERkdfRE9FU19HQ19WQUxJ
REFUSU9OKQotICAgIGJvb2wgbV9leHBlY3REb2VzR0MgeyB0cnVlIH07CisgICAgRG9lc0dDQ2hl
Y2sgbV9kb2VzR0M7CiAjZW5kaWYKIAogICAgIFN0cnVjdHVyZUlEVGFibGUgbV9zdHJ1Y3R1cmVJ
RFRhYmxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCShy
ZXZpc2lvbiAyNjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsNyArMjM2LDcgQEAgaW5saW5lIHZvaWQgSGVhcDo6
ZGVwcmVjYXRlZFJlcG9ydEV4dHJhTQogaW5saW5lIHZvaWQgSGVhcDo6YWNxdWlyZUFjY2Vzcygp
CiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChl
eHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZlcmlmeUNhbkdDKCk7CiAKICAgICBpZiAobV93b3Js
ZFN0YXRlLmNvbXBhcmVFeGNoYW5nZVdlYWsoMCwgaGFzQWNjZXNzQml0KSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjYzLDcgKzI2Myw3IEBAIGlubGluZSBib29sIEhlYXA6Om1heU5lZWRUb1N0b3Ao
KQogaW5saW5lIHZvaWQgSGVhcDo6c3RvcElmTmVjZXNzYXJ5KCkKIHsKICAgICBpZiAodmFsaWRh
dGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4cGVjdERvZXNHQygpKTsKKyAg
ICAgICAgdmVyaWZ5Q2FuR0MoKTsKIAogICAgIGlmIChtYXlOZWVkVG9TdG9wKCkpCiAgICAgICAg
IHN0b3BJZk5lY2Vzc2FyeVNsb3coKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oCShyZXZpc2lvbiAyNjI0NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIEFMV0FZU19JTkxJTkUg
dm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlKEhlYXAmIGhlYXAsIEdDRGVmZXJyYWxDb250
ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBmYWlsdXJlTW9kZSkK
IHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGhl
YXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICBoZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgcmV0
dXJuIG1fZnJlZUxpc3QuYWxsb2NhdGUoCiAgICAgICAgIFsmXSAoKSAtPiBIZWFwQ2VsbCogewog
ICAgICAgICAgICAgc2FuaXRpemVTdGFja0ZvclZNKGhlYXAudm0oKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwCShyZXZpc2lv
biAyNjI0NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIGlubGluZSBib29s
IGlzQWxpZ25lZEZvclByZWNpc2VBbAogUHJlY2lzZUFsbG9jYXRpb24qIFByZWNpc2VBbGxvY2F0
aW9uOjp0cnlDcmVhdGUoSGVhcCYgaGVhcCwgc2l6ZV90IHNpemUsIFN1YnNwYWNlKiBzdWJzcGFj
ZSwgdW5zaWduZWQgaW5kZXhJblNwYWNlKQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIGhl
YXAudmVyaWZ5Q2FuR0MoKTsKIAogICAgIHNpemVfdCBhZGp1c3RlZEFsaWdubWVudEFsbG9jYXRp
b25TaXplID0gaGVhZGVyU2l6ZSgpICsgc2l6ZSArIGhhbGZBbGlnbm1lbnQ7CiAgICAgc3RhdGlj
X2Fzc2VydChoYWxmQWxpZ25tZW50ID09IDgsICJXZSBhc3N1bWUgdGhhdCBtZW1vcnkgcmV0dXJu
ZWQgYnkgbWFsbG9jIGhhcyBhbGlnbm1lbnQgPj0gOC4iKTsKQEAgLTEyMyw3ICsxMjMsNyBAQCBQ
cmVjaXNlQWxsb2NhdGlvbiogUHJlY2lzZUFsbG9jYXRpb246OnRyCiBQcmVjaXNlQWxsb2NhdGlv
biogUHJlY2lzZUFsbG9jYXRpb246OmNyZWF0ZUZvckxvd2VyVGllcihIZWFwJiBoZWFwLCBzaXpl
X3Qgc2l6ZSwgU3Vic3BhY2UqIHN1YnNwYWNlLCB1aW50OF90IGxvd2VyVGllckluZGV4KQogewog
ICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaGVhcC5l
eHBlY3REb2VzR0MoKSk7CisgICAgICAgIGhlYXAudmVyaWZ5Q2FuR0MoKTsKIAogICAgIHNpemVf
dCBhZGp1c3RlZEFsaWdubWVudEFsbG9jYXRpb25TaXplID0gaGVhZGVyU2l6ZSgpICsgc2l6ZSAr
IGhhbGZBbGlnbm1lbnQ7CiAgICAgc3RhdGljX2Fzc2VydChoYWxmQWxpZ25tZW50ID09IDgsICJX
ZSBhc3N1bWUgdGhhdCBtZW1vcnkgcmV0dXJuZWQgYnkgbWFsbG9jIGhhcyBhbGlnbm1lbnQgPj0g
OC4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2
aXNpb24gMjYyNDY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aAkod29ya2luZyBjb3B5KQpAQCAtNzMzLDcgKzczMyw3IEBAIGlubGluZSBKU1N0cmluZyoganNF
bXB0eVN0cmluZyhWTSYgdm0pCiBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJh
Y3RlclN0cmluZyhWTSYgdm0sIFVDaGFyIGMpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dD
KQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAg
ICAgdm0uaGVhcC52ZXJpZnlDYW5HQygpOwogICAgIGlmIChjIDw9IG1heFNpbmdsZUNoYXJhY3Rl
clN0cmluZykKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJT
dHJpbmcoYyk7CiAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUodm0sIFN0cmluZ0ltcGw6OmNy
ZWF0ZSgmYywgMSkpOwpAQCAtNzYzLDcgKzc2Myw3IEBAIEFMV0FZU19JTkxJTkUgSWRlbnRpZmll
ciBKU1N0cmluZzo6dG9JZGUKIEFMV0FZU19JTkxJTkUgQXRvbVN0cmluZyBKU1N0cmluZzo6dG9B
dG9tU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYg
KHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhw
ZWN0RG9lc0dDKCkpOworICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAo
aXNSb3BlKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcq
Pih0aGlzKS0+cmVzb2x2ZVJvcGVUb0F0b21TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gQXRvbVN0cmluZyh2YWx1ZUludGVybmFsKCkpOwpAQCAtNzcyLDcgKzc3Miw3IEBAIEFMV0FZ
U19JTkxJTkUgQXRvbVN0cmluZyBKU1N0cmluZzo6dG9BdG8KIEFMV0FZU19JTkxJTkUgUmVmUHRy
PEF0b21TdHJpbmdJbXBsPiBKU1N0cmluZzo6dG9FeGlzdGluZ0F0b21TdHJpbmcoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0Mp
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtKCkuaGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAg
ICAgIHZtKCkuaGVhcC52ZXJpZnlDYW5HQygpOwogICAgIGlmIChpc1JvcGUoKSkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTUm9wZVN0cmluZyo+KHRoaXMpLT5yZXNvbHZlUm9w
ZVRvRXhpc3RpbmdBdG9tU3RyaW5nKGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKHZhbHVlSW50ZXJu
YWwoKS5pbXBsKCktPmlzQXRvbSgpKQpAQCAtNzgzLDcgKzc4Myw3IEBAIEFMV0FZU19JTkxJTkUg
UmVmUHRyPEF0b21TdHJpbmdJbXBsPiBKU1MKIGlubGluZSBjb25zdCBTdHJpbmcmIEpTU3RyaW5n
Ojp2YWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIGlmICh2
YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS5oZWFwLmV4cGVj
dERvZXNHQygpKTsKKyAgICAgICAgdm0oKS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYgKGlz
Um9wZSgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4o
dGhpcyktPnJlc29sdmVSb3BlKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIHZhbHVlSW50ZXJu
YWwoKTsKQEAgLTc5Myw3ICs3OTMsNyBAQCBpbmxpbmUgY29uc3QgU3RyaW5nJiBKU1N0cmluZzo6
dHJ5R2V0VmFsCiB7CiAgICAgaWYgKGFsbG9jYXRpb25BbGxvd2VkKSB7CiAgICAgICAgIGlmICh2
YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtKCkuaGVhcC5l
eHBlY3REb2VzR0MoKSk7CisgICAgICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsKICAg
ICAgICAgaWYgKGlzUm9wZSgpKSB7CiAgICAgICAgICAgICAvLyBQYXNzIG51bGxwdHIgZm9yIHRo
ZSBKU0dsb2JhbE9iamVjdCBzbyB0aGF0IHJlc29sdmVSb3BlIGRvZXMgbm90IHRocm93IGluIHRo
ZSBldmVudCBvZiBhbiBPT00gZXJyb3IuCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgSlNSb3BlU3RyaW5nKj4odGhpcyktPnJlc29sdmVSb3BlKG51bGxwdHIpOwpAQCAtOTgz
LDcgKzk4Myw3IEBAIGlubGluZSBib29sIGlzSlNTdHJpbmcoSlNWYWx1ZSB2KQogQUxXQVlTX0lO
TElORSBTdHJpbmdWaWV3IEpTUm9wZVN0cmluZzo6dW5zYWZlVmlldyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQodm0oKS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdm0o
KS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYgKGlzU3Vic3RyaW5nKCkpIHsKICAgICAgICAg
YXV0byYgYmFzZSA9IHN1YnN0cmluZ0Jhc2UoKS0+dmFsdWVJbnRlcm5hbCgpOwogICAgICAgICBp
ZiAoYmFzZS5pczhCaXQoKSkKQEAgLTk5Niw3ICs5OTYsNyBAQCBBTFdBWVNfSU5MSU5FIFN0cmlu
Z1ZpZXcgSlNSb3BlU3RyaW5nOjp1CiBBTFdBWVNfSU5MSU5FIFN0cmluZ1ZpZXdXaXRoVW5kZXJs
eWluZ1N0cmluZyBKU1JvcGVTdHJpbmc6OnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNH
QykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAg
ICAgICAgdm0oKS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYgKGlzU3Vic3RyaW5nKCkpIHsK
ICAgICAgICAgYXV0byYgYmFzZSA9IHN1YnN0cmluZ0Jhc2UoKS0+dmFsdWVJbnRlcm5hbCgpOwog
ICAgICAgICBpZiAoYmFzZS5pczhCaXQoKSkKQEAgLTEwMTAsNyArMTAxMCw3IEBAIEFMV0FZU19J
TkxJTkUgU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5nU3QKIEFMV0FZU19JTkxJTkUgU3RyaW5nVmll
dyBKU1N0cmluZzo6dW5zYWZlVmlldyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25z
dAogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
dm0oKS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdm0oKS5oZWFwLnZlcmlmeUNhbkdD
KCk7CiAgICAgaWYgKGlzUm9wZSgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
SlNSb3BlU3RyaW5nKj4odGhpcyktPnVuc2FmZVZpZXcoZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gdmFsdWVJbnRlcm5hbCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwTWF0Y2hlc0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJldmlzaW9uIDI2MjQ2NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NCw3ICs2NCw3IEBAIEFMV0FZU19JTkxJTkUgSlNBcnJheSogY3JlYXRlUmVnRXhw
TWF0Y2gKICAgICBSZWdFeHAqIHJlZ0V4cCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIE1hdGNoUmVz
dWx0JiByZXN1bHQpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxF
QVNFX0FTU0VSVCh2bS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdm0uaGVhcC52ZXJp
ZnlDYW5HQygpOwogCiAgICAgVmVjdG9yPGludCwgMzI+IHN1YnBhdHRlcm5SZXN1bHRzOwogICAg
IGludCBwb3NpdGlvbiA9IHJlZ0V4cC0+bWF0Y2hJbmxpbmUoZ2xvYmFsT2JqZWN0LCB2bSwgaW5w
dXRWYWx1ZSwgc3RhcnRPZmZzZXQsIHN1YnBhdHRlcm5SZXN1bHRzKTsK
</data>
<flag name="review"
          id="416279"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400902</attachid>
            <date>2020-06-02 23:33:28 -0700</date>
            <delta_ts>2020-06-02 23:34:13 -0700</delta_ts>
            <desc>test for Windows bot.</desc>
            <filename>test-212680.patch</filename>
            <type>text/plain</type>
            <size>35120</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI2MjQ3OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNTY0LDYgKzU2NCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKIAogICAgIGRmZy9ERkdDb21tb24uaAogICAgIGRmZy9ERkdDb21waWxhdGlvbk1vZGUuaAor
ICAgIGRmZy9ERkdEb2VzR0NDaGVjay5oCiAgICAgZGZnL0RGR01pbmlmaWVkSUQuaAogCiAgICAg
ZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CShyZXZpc2lvbiAyNjI0NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTM0Nyw2ICszNDcsNyBAQCBkZmcvREZHRGVzaXJlZFdhdGNo
cG9pbnRzLmNwcAogZGZnL0RGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5jcHAKIGRmZy9ERkdEaXNh
c3NlbWJsZXIuY3BwCiBkZmcvREZHRG9lc0dDLmNwcAorZGZnL0RGR0RvZXNHQ0NoZWNrLmNwcAog
ZGZnL0RGR0RyaXZlci5jcHAKIGRmZy9ERkdFZGdlLmNwcAogZGZnL0RGR0Vwb2NoLmNwcApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2MjQ3OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTM2LDYgKzE5MzYsNyBAQAogCQlGRUI1MUY2QzFBOTdCNjg4
MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjUxRjZCMUE5N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQx
ODA5Lm1tICovOyB9OwogCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGlu
Z1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RUI1OEMxMzE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVDMTYwMzIyMzM5RTlG
OTAwQTA0Q0I4IC8qIENlbGxTaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRUMxNjAzMTIzMzlFOUY5MDBBMDRDQjggLyogQ2VsbFNpemUuaCAqLzsg
fTsKKwkJRkVDM0EzQTEyNDg3MzVDQTAwMzk1QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUMzQTNBMDI0ODczNUJD
MDAzOTVCNTQgLyogREZHRG9lc0dDQ2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUM1Nzk3MzIzMTA1QjUxMDBCQ0E4M0YgLyogVk1JbnNw
ZWN0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRUM1Nzk3MjIzMTA1QjQ4MDBCQ0E4M0YgLyogVk1JbnNwZWN0b3JJbmxpbmVzLmggKi87
IH07CiAJCUZFQzU3OTc2MjMxMDVGNEUwMEJDQTgzRiAvKiBJbnRlZ3JpdHkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzU3OTc1MjMxMDVGNDMwMEJD
QTgzRiAvKiBJbnRlZ3JpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlGRUM1Nzk3ODIzMTA5NTRDMDBCQ0E4M0YgLyogSW50ZWdyaXR5SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDNTc5
NzcyMzEwOTU0QjAwQkNBODNGIC8qIEludGVncml0eUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTIzMiw2ICs1MjMzLDggQEAKIAkJ
RkVCNThDMTIxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcnJvckhhbmRsaW5nU2NvcGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUI1OEMxMzE4N0I4QjE2MDA5OEVGMEIgLyog
RXJyb3JIYW5kbGluZ1Njb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVy
cm9ySGFuZGxpbmdTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUMxNjAz
MTIzMzlFOUY5MDBBMDRDQjggLyogQ2VsbFNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ2VsbFNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVDM0Ez
OUYyNDg3MzVCQzAwMzk1QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR0RvZXNHQ0NoZWNrLmNwcDsgcGF0aCA9IGRmZy9ERkdEb2VzR0NDaGVjay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQzNBM0EwMjQ4NzM1QkMwMDM5NUI1NCAvKiBE
RkdEb2VzR0NDaGVjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdEb2VzR0NDaGVjay5oOyBwYXRoID0g
ZGZnL0RGR0RvZXNHQ0NoZWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQzU3
OTcyMjMxMDVCNDgwMEJDQTgzRiAvKiBWTUluc3BlY3RvcklubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVk1JbnNwZWN0b3JJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFQzU3OTc0MjMxMDVGNDIwMEJDQTgzRiAvKiBJbnRlZ3JpdHkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZWdyaXR5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVDNTc5NzUyMzEwNUY0MzAwQkNBODNGIC8qIElu
dGVncml0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlZ3JpdHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc4OTYsNiArNzg5OSw4IEBACiAJCQkJMEZG
NDI3NjIxNTkxQTFDOTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oICovLAogCQkJCTBGNUEx
MjcxMTkyRDlGREYwMDg3NjRBMyAvKiBERkdEb2VzR0MuY3BwICovLAogCQkJCTBGNUExMjcyMTky
RDlGREYwMDg3NjRBMyAvKiBERkdEb2VzR0MuaCAqLywKKwkJCQlGRUMzQTM5RjI0ODczNUJDMDAz
OTVCNTQgLyogREZHRG9lc0dDQ2hlY2suY3BwICovLAorCQkJCUZFQzNBM0EwMjQ4NzM1QkMwMDM5
NUI1NCAvKiBERkdEb2VzR0NDaGVjay5oICovLAogCQkJCTBGRDgxQUQwMTU0RkI0RUIwMDk4M0U3
MiAvKiBERkdEb21pbmF0b3JzLmggKi8sCiAJCQkJMEYxRTNBNDQxNTM0Q0JBRDAwMEY5NDU2IC8q
IERGR0RvdWJsZUZvcm1hdFN0YXRlLmggKi8sCiAJCQkJMEZEM0M4MjAxNDExNUNGODAwRkQ4MUNC
IC8qIERGR0RyaXZlci5jcHAgKi8sCkBAIC0xMDE5Niw2ICsxMDIwMSw3IEBACiAJCQkJNzlENUNE
NUIxQzExMDZBOTAwQ0VDQTA3IC8qIFNhbXBsaW5nUHJvZmlsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRTA1MDI4MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRTA1MDI5MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNU
YWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVDM0EzQTEyNDg3MzVDQTAwMzk1QjU0IC8qIERG
R0RvZXNHQ0NoZWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNC
MzMgLyogU2NvcGVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTUyMTdFRTI3NDkw
MEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMzMTExQjhCMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oIGluIEhlYWRlcnMgKi8sCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaAkocmV2aXNpb24gMjYyNDc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NTks
NiArMTQ1OSwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlPDY0PihzcmMsIGFkZHJlc3MpOwog
ICAgIH0KIAorICAgIHZvaWQgc3RvcmU2NChUcnVzdGVkSW1tNjQgaW1tLCBjb25zdCB2b2lkKiBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSkgeworICAgICAgICAgICAg
c3RvcmU2NChBUk02NFJlZ2lzdGVyczo6enIsIGFkZHJlc3MpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgbW92ZVRvQ2FjaGVkUmVnKGltbSwgZGF0YU1lbW9yeVRl
bXBSZWdpc3RlcigpKTsKKyAgICAgICAgc3RvcmU2NChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNz
KTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTMyIGltbSwgSW1wbGljaXRB
ZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBzdG9yZTY0KFRydXN0ZWRJbW02NChpbW0u
bV92YWx1ZSksIGFkZHJlc3MpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gMjYyNDc4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
CSh3b3JraW5nIGNvcHkpCkBAIC05NzcsNiArOTc3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbV9h
c3NlbWJsZXIubW92cV9pMzJtKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9CiAKKyAgICB2b2lkIHN0
b3JlNjQoVHJ1c3RlZEltbTY0IGltbSwgdm9pZCogYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF1
dG8gc3JjID0gc2NyYXRjaFJlZ2lzdGVyKCk7CisgICAgICAgIG1vdmUoaW1tLCBzcmMpOworICAg
ICAgICBzd2FwKHNyYywgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZxX0VBWG0oYWRkcmVzcyk7CisgICAgICAgIHN3YXAoc3JjLCBYODZSZWdpc3RlcnM6OmVheCk7
CisgICAgfQorCiAgICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJbW02NCBpbW0sIEltcGxpY2l0QWRk
cmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF8zMl82NChp
bW0ubV92YWx1ZSkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVz
dG1hc20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
dGVzdG1hc20uY3BwCShyZXZpc2lvbiAyNjI0NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjU4LDYgKzY1OCwzMSBA
QCB2b2lkIHRlc3RDb3VudFRyYWlsaW5nWmVyb3M2NFdpdGhvdXROdWxsCiAgICAgYm9vbCB3b3Jk
Q2FuQmVaZXJvID0gZmFsc2U7CiAgICAgdGVzdENvdW50VHJhaWxpbmdaZXJvczY0SW1wbCh3b3Jk
Q2FuQmVaZXJvKTsKIH0KKwordm9pZCB0ZXN0U3RvcmU2NEltbTY0QWRkcmVzc1BvaW50ZXIoKQor
eworICAgIGF1dG8gZG9UZXN0ID0gW10gKGludDY0X3QgdmFsdWUpIHsKKyAgICAgICAgaW50NjRf
dCBkZXN0OworICAgICAgICB2b2lkKiBkZXN0QWRkcmVzcyA9ICZkZXN0OworCisgICAgICAgIGF1
dG8gdGVzdCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAg
ZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKyAgICAgICAgICAgIGppdC5zdG9yZTY0KENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTY0KHZhbHVlKSwgZGVzdEFkZHJlc3MpOworICAgICAgICAgICAg
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgaW52b2tlPHNpemVfdD4odGVzdCk7CisgICAgICAgIENIRUNLX0VR
KGRlc3QsIHZhbHVlKTsKKyAgICB9OworICAgIAorICAgIGZvciAoYXV0byB2YWx1ZSA6IGludDY0
T3BlcmFuZHMoKSkKKyAgICAgICAgZG9UZXN0KHZhbHVlKTsKKworICAgIGRvVGVzdCgweDk4NzY1
NTU1QUFBQTQzMjEpOworICAgIGRvVGVzdCgweEFBQUE0MzIxOTg3NjU1NTUpOworfQorCiAjZW5k
aWYgLy8gQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQogCiB2b2lkIHRlc3RDb21wYXJlRG91Ymxl
KE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24gY29uZGl0aW9uKQpAQCAtMjQ5OSw2ICsy
NTI0LDcgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0Q2xlYXJC
aXRzNjRXaXRoTWFza1Rlcm5hcnkoKSk7CiAgICAgUlVOKHRlc3RDb3VudFRyYWlsaW5nWmVyb3M2
NCgpKTsKICAgICBSVU4odGVzdENvdW50VHJhaWxpbmdaZXJvczY0V2l0aG91dE51bGxDaGVjaygp
KTsKKyAgICBSVU4odGVzdFN0b3JlNjRJbW02NEFkZHJlc3NQb2ludGVyKCkpOwogI2VuZGlmCiAK
ICNpZiBDUFUoQVJNNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Q0NoZWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQ0NoZWNrLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQ0NoZWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkRGR0RvZXNHQ0NoZWNrLmgiCisKKyNpbmNsdWRlICJDYWxsRnJhbWUu
aCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAi
Vk1JbnNwZWN0b3IuaCIKKyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorCituYW1lc3BhY2UgSlND
IHsKK25hbWVzcGFjZSBERkcgeworCisjaWYgRU5BQkxFKERGR19ET0VTX0dDX1ZBTElEQVRJT04p
CisKK2V4dGVybiBjb25zdCBjaGFyKiBkZmdPcE5hbWVzW107CisKK0pTX0VYUE9SVF9QUklWQVRF
IHZvaWQgRG9lc0dDQ2hlY2s6OnZlcmlmeUNhbkdDKFZNJiB2bSkKK3sKKyAgICBpZiAoIWV4cGVj
dERvZXNHQygpKSB7CisgICAgICAgIGRhdGFMb2coIkVycm9yOiBEb2VzR0MgZmFpbGVkIik7Cisg
ICAgICAgIGlmIChpc1NwZWNpYWwoKSkgeworICAgICAgICAgICAgc3dpdGNoIChzcGVjaWFsKCkp
IHsKKyAgICAgICAgICAgIGNhc2UgU3BlY2lhbDo6VW5pbml0aWFsaXplZDoKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU3BlY2lhbDo6REZHT1NSRXhpdDoKKyAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgQCBERkcgb3NyIGV4aXQiKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgU3BlY2lhbDo6RlRMT1NSRXhpdDoKKyAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgQCBGVEwgb3NyIGV4aXQiKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgU3BlY2lhbDo6UmVzZXJ2ZWRVbnVzZWQ6CisgICAgICAgICAgICBj
YXNlIFNwZWNpYWw6Ok51bWJlck9mU3BlY2lhbHM6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBkYXRhTG9nKCIgQCBEQCIsIG5vZGVJbmRleCgpLCAiICIsIERGRzo6ZGZnT3BOYW1l
c1tub2RlT3AoKV0pOworCisgICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gdm0udG9wQ2Fs
bEZyYW1lOworICAgICAgICBpZiAoY2FsbEZyYW1lKSB7CisvLyAgICAgICAgICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKy8vICAgICAgICAgICAgZGF0
YUxvZ0xuKCIgaW4gIiwgY29kZUJsb2NrKTsKKyAgICAgICAgICAgIFZNSW5zcGVjdG9yOjpkdW1w
U3RhY2soJnZtLCBjYWxsRnJhbWUpOworICAgICAgICB9CisgICAgICAgIGRhdGFMb2dMbigpOwor
ICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVChleHBlY3REb2VzR0MoKSk7Cit9CisjZW5kaWYgLy8g
RU5BQkxFKERGR19ET0VTX0dDX1ZBTElEQVRJT04pCisKK30gLy8gbmFtZXNwYWNlIERGRworfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Q0NoZWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0NDaGVjay5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDQ2hlY2suaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgVk07CisKK25hbWVzcGFjZSBERkcgeworCitzdHJ1Y3QgRG9lc0dDQ2hl
Y2sgeworICAgIGVudW0gY2xhc3MgU3BlY2lhbCB7CisgICAgICAgIFJlc2VydmVkVW51c2VkLCAv
LyBzbyB0aGF0IHNwZWNpYWxzIHN0YXJ0IHdpdGggMS4gaXNTcGVjaWFsKCkgcmVsaWVzIG9uIHRo
aXMuCisgICAgICAgIFVuaW5pdGlhbGl6ZWQsCisgICAgICAgIERGR09TUkV4aXQsCisgICAgICAg
IEZUTE9TUkV4aXQsCisgICAgICAgIE51bWJlck9mU3BlY2lhbHMKKyAgICB9OworCisgICAgRG9l
c0dDQ2hlY2soKQorICAgICAgICA6IG1fdmFsdWUoZW5jb2RlKHRydWUsIFNwZWNpYWw6OlVuaW5p
dGlhbGl6ZWQpKQorICAgIHsgfQorCisgICAgc3RhdGljIHVpbnQ2NF90IGVuY29kZShib29sIGV4
cGVjdERvZXNHQywgdW5zaWduZWQgbm9kZUluZGV4LCB1bnNpZ25lZCBub2RlT3ApCisgICAgewor
ICAgICAgICB1aW50NjRfdCByZXN1bHQgPSBiaXRzKG5vZGVJbmRleCkgPDwgbm9kZUluZGV4U2hp
ZnQ7CisgICAgICAgIHJlc3VsdCB8PSBiaXRzKG5vZGVPcCkgPDwgbm9kZU9wU2hpZnQ7CisgICAg
ICAgIHJlc3VsdCB8PSBiaXRzKGV4cGVjdERvZXNHQykgPDwgZXhwZWN0RG9lc0dDU2hpZnQ7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIHVpbnQ2NF90IGVuY29k
ZShib29sIGV4cGVjdERvZXNHQywgU3BlY2lhbCBzcGVjaWFsKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKGJpdHMoc3BlY2lhbCkgPCBudW1iZXJPZlNwZWNpYWxzKTsKKyAgICAgICAgdWludDY0X3Qg
cmVzdWx0ID0gYml0cyhzcGVjaWFsKSA8PCBzcGVjaWFsU2hpZnQ7CisgICAgICAgIHJlc3VsdCB8
PSBiaXRzKGV4cGVjdERvZXNHQykgPDwgZXhwZWN0RG9lc0dDU2hpZnQ7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCisgICAgdm9pZCBzZXQoYm9vbCBleHBlY3REb2VzR0MsIHVuc2ln
bmVkIG5vZGVJbmRleCwgdW5zaWduZWQgbm9kZU9wKQorICAgIHsKKyAgICAgICAgbV92YWx1ZSA9
IGVuY29kZShleHBlY3REb2VzR0MsIG5vZGVJbmRleCwgbm9kZU9wKTsKKyAgICB9CisKKyAgICB2
b2lkIHNldChib29sIGV4cGVjdERvZXNHQywgU3BlY2lhbCBzcGVjaWFsKQorICAgIHsKKyAgICAg
ICAgbV92YWx1ZSA9IGVuY29kZShleHBlY3REb2VzR0MsIHNwZWNpYWwpOworICAgIH0KKworICAg
IGJvb2wgZXhwZWN0RG9lc0dDKCkgeyByZXR1cm4gbV92YWx1ZSAmIGV4cGVjdERvZXNHQ01hc2s7
IH0KKyAgICBTcGVjaWFsIHNwZWNpYWwoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTcGVjaWFsPihz
cGVjaWFsSW5kZXgoKSk7IH0KKyAgICB1bnNpZ25lZCBub2RlSW5kZXgoKSB7IHJldHVybiBtX3Zh
bHVlID4+IG5vZGVJbmRleFNoaWZ0OyB9CisgICAgdW5zaWduZWQgbm9kZU9wKCkgeyByZXR1cm4g
KG1fdmFsdWUgPj4gbm9kZU9wU2hpZnQpICYgbm9kZU9wTWFzazsgfQorCisgICAgYm9vbCBpc1Nw
ZWNpYWwoKSB7IHJldHVybiBzcGVjaWFsSW5kZXgoKTsgfQorCisgICAgdm9pZCB2ZXJpZnlDYW5H
QyhWTSYpOworCitwcml2YXRlOgorICAgIHVuc2lnbmVkIHNwZWNpYWxJbmRleCgpIHsgcmV0dXJu
IChtX3ZhbHVlID4+IHNwZWNpYWxTaGlmdCkgJiBzcGVjaWFsTWFzazsgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RhdGljIHVpbnQ2NF90IGJpdHMoVCB2YWx1ZSkgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHZhbHVlKTsgfQorCisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
NjRfdCBudW1iZXJPZlNwZWNpYWxzID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KFNwZWNpYWw6Ok51
bWJlck9mU3BlY2lhbHMpOworCisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBleHBlY3RE
b2VzR0NTaGlmdCA9IDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzcGVjaWFsU2hp
ZnQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbm9kZU9wU2hpZnQgPSAxNjsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG5vZGVJbmRleFNoaWZ0ID0gMzI7CisKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGV4cGVjdERvZXNHQ01hc2sgPSAweDE7CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzcGVjaWFsTWFzayA9IDB4N2ZmZjsKKyAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIG5vZGVPcE1hc2sgPSAweGZmZmY7CisKKyAgICB1aW50NjRf
dCBtX3ZhbHVlIHsgMCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgREZHCisKK3VzaW5nIERGRzo6
RG9lc0dDQ2hlY2s7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDI2MjQ3OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBk
dW1wT1NSQXZhaWxhYmlsaXR5RGF0YSA9IGZhbHNlOwogCiAvLyBDcmVhdGVzIGFuIGFycmF5IG9m
IHN0cmluZ2l6ZWQgbmFtZXMuCi1zdGF0aWMgY29uc3QgY2hhciogZGZnT3BOYW1lc1tdID0gewor
Y29uc3QgY2hhciogZGZnT3BOYW1lc1tdID0gewogI2RlZmluZSBTVFJJTkdJWkVfREZHX09QX0VO
VU0ob3Bjb2RlLCBmbGFncykgI29wY29kZSAsCiAgICAgRk9SX0VBQ0hfREZHX09QKFNUUklOR0la
RV9ERkdfT1BfRU5VTSkKICN1bmRlZiBTVFJJTkdJWkVfREZHX09QX0VOVU0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24gMjYyNDc4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21waWxlT1NS
RXgKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpIHsKICAgICAgICAgLy8gV2UncmUgYWJvdXQg
dG8gZXhpdCBvcHRpbWl6ZWQgY29kZS4gU28sIHRoZXJlJ3Mgbm8gbG9uZ2VyIGFueSBvcHRpbWl6
ZWQKICAgICAgICAgLy8gY29kZSBydW5uaW5nIHRoYXQgZXhwZWN0cyBubyBHQy4KLSAgICAgICAg
dm0uaGVhcC5zZXRFeHBlY3REb2VzR0ModHJ1ZSk7CisgICAgICAgIHZtLmhlYXAuc2V0RG9lc0dD
RXhwZWN0YXRpb24odHJ1ZSwgRG9lc0dDQ2hlY2s6OlNwZWNpYWw6OkRGR09TUkV4aXQpOwogICAg
IH0KIAogICAgIGlmICh2bS5jYWxsRnJhbWVGb3JDYXRjaCkKQEAgLTU1NSwxMSArNTU1LDExIEBA
IHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgLy8gY29k
ZSBydW5uaW5nIHRoYXQgZXhwZWN0cyBubyBHQy4gV2UgbmVlZCB0byBzZXQgdGhpcyBiZWZvcmUg
YXJndW1lbnRzCiAgICAgICAgIC8vIG1hdGVyaWFsaXphdGlvbiBiZWxvdyAoc2VlIGVtaXRSZXN0
b3JlQXJndW1lbnRzKCkpLgogCi0gICAgICAgIC8vIEV2ZW4gdGhvdWdoIHdlIHNldCBIZWFwOjpt
X2V4cGVjdERvZXNHQyBpbiBjb21waWxlT1NSRXhpdCgpLCB3ZSBhbHNvIG5lZWQKKyAgICAgICAg
Ly8gRXZlbiB0aG91Z2ggd2Ugc2V0IEhlYXA6Om1fZG9lc0dDIGluIGNvbXBpbGVPU1JFeGl0KCks
IHdlIGFsc28gbmVlZAogICAgICAgICAvLyB0byBzZXQgaXQgaGVyZSBiZWNhdXNlIGNvbXBpbGVP
U1JFeGl0KCkgaXMgb25seSBjYWxsZWQgb24gdGhlIGZpcnN0IHRpbWUKICAgICAgICAgLy8gd2Ug
ZXhpdCBmcm9tIHRoaXMgc2l0ZSwgYnV0IGFsbCBzdWJzZXF1ZW50IGV4aXRzIHdpbGwgdGFrZSB0
aGlzIGNvbXBpbGVkCiAgICAgICAgIC8vIHJhbXAgd2l0aG91dCBjYWxsaW5nIGNvbXBpbGVPU1JF
eGl0KCkgZmlyc3QuCi0gICAgICAgIGppdC5zdG9yZTgoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIodHJ1ZSksIHZtLmhlYXAuYWRkcmVzc09mRXhwZWN0RG9lc0dDKCkpOworICAgICAgICBqaXQu
c3RvcmU2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChEb2VzR0NDaGVjazo6ZW5jb2RlKHRy
dWUsIERvZXNHQ0NoZWNrOjpTcGVjaWFsOjpERkdPU1JFeGl0KSksIHZtLmhlYXAuYWRkcmVzc09m
RG9lc0dDKCkpOwogICAgIH0KIAogICAgIC8vIE5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHN0YWNr
IHBvaW50ZXIgYWNjb3VudHMgZm9yIHRoZSB3b3JzdC1jYXNlIHN0YWNrIHVzYWdlIGF0IGV4aXQu
IFRoaXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjYyNDc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzOCw3ICsy
MTM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAg
aWYgKHZhbGlkYXRlREZHRG9lc0dDKSB7CiAgICAgICAgIGJvb2wgZXhwZWN0RG9lc0dDID0gZG9l
c0dDKG1faml0LmdyYXBoKCksIG5vZGUpOwotICAgICAgICBtX2ppdC5zdG9yZTgoVHJ1c3RlZElt
bTMyKGV4cGVjdERvZXNHQyksIHZtKCkuaGVhcC5hZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSk7Cisg
ICAgICAgIG1faml0LnN0b3JlNjQoVHJ1c3RlZEltbTY0KERvZXNHQ0NoZWNrOjplbmNvZGUoZXhw
ZWN0RG9lc0dDLCBub2RlLT5pbmRleCgpLCBub2RlLT5vcCgpKSksIHZtKCkuaGVhcC5hZGRyZXNz
T2ZEb2VzR0MoKSk7CiAgICAgfQogCiAjaWYgRU5BQkxFKERGR19SRUdJU1RFUl9BTExPQ0FUSU9O
X1ZBTElEQVRJT04pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyNjI0NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwNCw3ICs3MDQsNyBA
QCBwcml2YXRlOgogCiAgICAgICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykgewogICAgICAgICAg
ICAgYm9vbCBleHBlY3REb2VzR0MgPSBkb2VzR0MobV9ncmFwaCwgbV9ub2RlKTsKLSAgICAgICAg
ICAgIG1fb3V0LnN0b3JlKG1fb3V0LmNvbnN0Qm9vbChleHBlY3REb2VzR0MpLCBtX291dC5hYnNv
bHV0ZSh2bSgpLmhlYXAuYWRkcmVzc09mRXhwZWN0RG9lc0dDKCkpKTsKKyAgICAgICAgICAgIG1f
b3V0LnN0b3JlKG1fb3V0LmNvbnN0SW50NjQoRG9lc0dDQ2hlY2s6OmVuY29kZShleHBlY3REb2Vz
R0MsIG1fbm9kZS0+aW5kZXgoKSwgbV9ub2RlLT5vcCgpKSksIG1fb3V0LmFic29sdXRlKHZtKCku
aGVhcC5hZGRyZXNzT2ZEb2VzR0MoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoICht
X25vZGUtPm9wKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhp
dENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDI2MjQ3OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEx
LDExICsyMTEsMTEgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25lZAog
ICAgICAgICAvLyBjb2RlIHJ1bm5pbmcgdGhhdCBleHBlY3RzIG5vIEdDLiBXZSBuZWVkIHRvIHNl
dCB0aGlzIGJlZm9yZSBvYmplY3QKICAgICAgICAgLy8gbWF0ZXJpYWxpemF0aW9uIGJlbG93Lgog
Ci0gICAgICAgIC8vIEV2ZW4gdGhvdWdoIHdlIHNldCBIZWFwOjptX2V4cGVjdERvZXNHQyBpbiBj
b21waWxlRlRMT1NSRXhpdCgpLCB3ZSBhbHNvIG5lZWQKKyAgICAgICAgLy8gRXZlbiB0aG91Z2gg
d2Ugc2V0IEhlYXA6Om1fZG9lc0dDIGluIGNvbXBpbGVGVExPU1JFeGl0KCksIHdlIGFsc28gbmVl
ZAogICAgICAgICAvLyB0byBzZXQgaXQgaGVyZSBiZWNhdXNlIGNvbXBpbGVGVExPU1JFeGl0KCkg
aXMgb25seSBjYWxsZWQgb24gdGhlIGZpcnN0IHRpbWUKICAgICAgICAgLy8gd2UgZXhpdCBmcm9t
IHRoaXMgc2l0ZSwgYnV0IGFsbCBzdWJzZXF1ZW50IGV4aXRzIHdpbGwgdGFrZSB0aGlzIGNvbXBp
bGVkCiAgICAgICAgIC8vIHJhbXAgd2l0aG91dCBjYWxsaW5nIGNvbXBpbGVGVExPU1JFeGl0KCkg
Zmlyc3QuCi0gICAgICAgIGppdC5zdG9yZTgoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodHJ1
ZSksIHZtLmhlYXAuYWRkcmVzc09mRXhwZWN0RG9lc0dDKCkpOworICAgICAgICBqaXQuc3RvcmU2
NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChEb2VzR0NDaGVjazo6ZW5jb2RlKHRydWUsIERv
ZXNHQ0NoZWNrOjpTcGVjaWFsOjpGVExPU1JFeGl0KSksIHZtLmhlYXAuYWRkcmVzc09mRG9lc0dD
KCkpOwogICAgIH0KIAogICAgIC8vIEJyaW5nIHRoZSBzdGFjayBiYWNrIGludG8gYSBzYW5lIGZv
cm0gYW5kIGFzc2VydCB0aGF0IGl0J3Mgc2FuZS4KQEAgLTU0OCw3ICs1NDgsNyBAQCBleHRlcm4g
IkMiIEpJVF9PUEVSQVRJT04gdm9pZCogb3BlcmF0aW9uCiAgICAgaWYgKHZhbGlkYXRlREZHRG9l
c0dDKSB7CiAgICAgICAgIC8vIFdlJ3JlIGFib3V0IHRvIGV4aXQgb3B0aW1pemVkIGNvZGUuIFNv
LCB0aGVyZSdzIG5vIGxvbmdlciBhbnkgb3B0aW1pemVkCiAgICAgICAgIC8vIGNvZGUgcnVubmlu
ZyB0aGF0IGV4cGVjdHMgbm8gR0MuCi0gICAgICAgIHZtLmhlYXAuc2V0RXhwZWN0RG9lc0dDKHRy
dWUpOworICAgICAgICB2bS5oZWFwLnNldERvZXNHQ0V4cGVjdGF0aW9uKHRydWUsIERvZXNHQ0No
ZWNrOjpTcGVjaWFsOjpGVExPU1JFeGl0KTsKICAgICB9CiAKICAgICBpZiAodm0uY2FsbEZyYW1l
Rm9yQ2F0Y2gpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNw
YWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0
ZVN1YnNwYWNlLmNwcAkocmV2aXNpb24gMjYyNDc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMjAsNyArMTIw
LDcgQEAgdm9pZCogQ29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdGVTbG93KFZNJgogdm9pZCogQ29t
cGxldGVTdWJzcGFjZTo6dHJ5QWxsb2NhdGVTbG93KFZNJiB2bSwgc2l6ZV90IHNpemUsIEdDRGVm
ZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9l
c0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAg
ICAgICAgdm0uaGVhcC52ZXJpZnlDYW5HQygpOwogCiAgICAgc2FuaXRpemVTdGFja0ZvclZNKHZt
KTsKICAgICAKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkKiBDb21wbGV0ZVN1YnNwYWNlOjp0cnlB
bGxvY2F0ZVNsb3coCiB2b2lkKiBDb21wbGV0ZVN1YnNwYWNlOjpyZWFsbG9jYXRlUHJlY2lzZUFs
bG9jYXRpb25Ob25WaXJ0dWFsKFZNJiB2bSwgSGVhcENlbGwqIG9sZENlbGwsIHNpemVfdCBzaXpl
LCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1v
ZGUgZmFpbHVyZU1vZGUpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBS
RUxFQVNFX0FTU0VSVCh2bS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdm0uaGVhcC52
ZXJpZnlDYW5HQygpOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQg
aW4gQnV0dGVyZmx5IGZvciBleGFtcGxlLgogICAgIEFTU0VSVChvbGRDZWxsLT5pc1ByZWNpc2VB
bGxvY2F0aW9uKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVT
dWJzcGFjZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Db21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oCShyZXZpc2lvbiAyNjI0NzgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIEFMV0FZU19JTkxJTkUgdm9p
ZCogQ29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdGVOb25WaXJ0dWFsKFZNJiB2bSwgc2l6ZV90IHNp
emUsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJl
TW9kZSBmYWlsdXJlTW9kZSkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKHZtLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bS5oZWFw
LnZlcmlmeUNhbkdDKCk7CiAKICAgICBpZiAoQWxsb2NhdG9yIGFsbG9jYXRvciA9IGFsbG9jYXRv
ckZvck5vblZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMp
KQogICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmFsbG9jYXRlKHZtLmhlYXAsIGRlZmVycmFsQ29u
dGV4dCwgZmFpbHVyZU1vZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVm
ZXJHQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0Mu
aAkocmV2aXNpb24gMjYyNDc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJH
Qy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgfkRlZmVy
R0MoKQogICAgIHsKICAgICAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQobV9oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgICAgIG1faGVh
cC52ZXJpZnlDYW5HQygpOwogICAgICAgICBtX2hlYXAuZGVjcmVtZW50RGVmZXJyYWxEZXB0aEFu
ZEdDSWZOZWVkZWQoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0dDRGVmZXJyYWxDb250ZXh0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDRGVmZXJyYWxDb250ZXh0SW5saW5lcy5oCShyZXZpc2lvbiAyNjI0Nzgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0RlZmVycmFsQ29udGV4dElubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgQUxXQVlTX0lOTElORSBHQ0RlZmVy
cmFsQ29udGV4dDo6R0NEZWZlcgogQUxXQVlTX0lOTElORSBHQ0RlZmVycmFsQ29udGV4dDo6fkdD
RGVmZXJyYWxDb250ZXh0KCkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1faGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIG1faGVhcC52
ZXJpZnlDYW5HQygpOwogCiAgICAgaWYgKFVOTElLRUxZKG1fc2hvdWxkR0MpKQogICAgICAgICBt
X2hlYXAuY29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcigpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDI2MjQ3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCkBAIC0xMDY0LDcgKzEwNjQsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3lu
Y2hyb25vdXNuZXNzIHN5bmNoCiB2b2lkIEhlYXA6OmNvbGxlY3ROb3coU3luY2hyb25vdXNuZXNz
IHN5bmNocm9ub3VzbmVzcywgR0NSZXF1ZXN0IHJlcXVlc3QpCiB7CiAgICAgaWYgKHZhbGlkYXRl
REZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChleHBlY3REb2VzR0MoKSk7CisgICAg
ICAgIHZlcmlmeUNhbkdDKCk7CiAKICAgICBzd2l0Y2ggKHN5bmNocm9ub3VzbmVzcykgewogICAg
IGNhc2UgQXN5bmM6IHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdE5v
dyhTeW5jaHJvbm91c25lc3Mgc3kKIHZvaWQgSGVhcDo6Y29sbGVjdEFzeW5jKEdDUmVxdWVzdCBy
ZXF1ZXN0KQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQoZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2ZXJpZnlDYW5HQygpOwogCiAgICAgaWYg
KCFtX2lzU2FmZVRvQ29sbGVjdCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTEyMSw3ICsxMTIxLDcg
QEAgdm9pZCBIZWFwOjpjb2xsZWN0QXN5bmMoR0NSZXF1ZXN0IHJlcXVlcwogdm9pZCBIZWFwOjpj
b2xsZWN0U3luYyhHQ1JlcXVlc3QgcmVxdWVzdCkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2Vz
R0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdmVy
aWZ5Q2FuR0MoKTsKIAogICAgIGlmICghbV9pc1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJldHVy
bjsKQEAgLTE3ODQsNyArMTc4NCw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEhlYXA6OnJlc3VtZVRo
ZU11dGF0b3IKIHZvaWQgSGVhcDo6c3RvcElmTmVjZXNzYXJ5U2xvdygpCiB7CiAgICAgaWYgKHZh
bGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChleHBlY3REb2VzR0MoKSk7
CisgICAgICAgIHZlcmlmeUNhbkdDKCk7CiAKICAgICB3aGlsZSAoc3RvcElmTmVjZXNzYXJ5U2xv
dyhtX3dvcmxkU3RhdGUubG9hZCgpKSkgeyB9CiAgICAgCkBAIC0xNzk5LDcgKzE3OTksNyBAQCB2
b2lkIEhlYXA6OnN0b3BJZk5lY2Vzc2FyeVNsb3coKQogYm9vbCBIZWFwOjpzdG9wSWZOZWNlc3Nh
cnlTbG93KHVuc2lnbmVkIG9sZFN0YXRlKQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2ZXJpZnlD
YW5HQygpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQob2xkU3RhdGUgJiBoYXNBY2Nlc3NCaXQpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKCEob2xkU3RhdGUgJiBzdG9wcGVkQml0KSk7CkBAIC0yNjAxLDcg
KzI2MDEsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RJZk5lY2Vzc2FyeU9yRGVmZXIoR0NECiB7CiAg
ICAgQVNTRVJUKGRlZmVycmFsQ29udGV4dCB8fCBpc0RlZmVycmVkKCkgfHwgIURpc2FsbG93R0M6
OmlzSW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQoKSk7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dD
KQotICAgICAgICBSRUxFQVNFX0FTU0VSVChleHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZlcmlm
eUNhbkdDKCk7CiAKICAgICBpZiAoIW1faXNTYWZlVG9Db2xsZWN0KQogICAgICAgICByZXR1cm47
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyNjI0NzgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyAr
MSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9y
dGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9z
dC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTI1LDYgKzI1LDcgQEAKICNp
bmNsdWRlICJDZWxsU3RhdGUuaCIKICNpbmNsdWRlICJDb2xsZWN0aW9uU2NvcGUuaCIKICNpbmNs
dWRlICJDb2xsZWN0b3JQaGFzZS5oIgorI2luY2x1ZGUgIkRGR0RvZXNHQ0NoZWNrLmgiCiAjaW5j
bHVkZSAiRGVsZXRlQWxsQ29kZUVmZm9ydC5oIgogI2luY2x1ZGUgIkdDQ29uZHVjdG9yLmgiCiAj
aW5jbHVkZSAiR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaCIKQEAgLTMwMywxMyArMzA0LDE1IEBA
IHB1YmxpYzoKICAgICBjb25zdCB1bnNpZ25lZCogYWRkcmVzc09mQmFycmllclRocmVzaG9sZCgp
IGNvbnN0IHsgcmV0dXJuICZtX2JhcnJpZXJUaHJlc2hvbGQ7IH0KIAogI2lmIEVOQUJMRShERkdf
RE9FU19HQ19WQUxJREFUSU9OKQotICAgIGJvb2wgZXhwZWN0RG9lc0dDKCkgY29uc3QgeyByZXR1
cm4gbV9leHBlY3REb2VzR0M7IH0KLSAgICB2b2lkIHNldEV4cGVjdERvZXNHQyhib29sIHZhbHVl
KSB7IG1fZXhwZWN0RG9lc0dDID0gdmFsdWU7IH0KLSAgICBib29sKiBhZGRyZXNzT2ZFeHBlY3RE
b2VzR0MoKSB7IHJldHVybiAmbV9leHBlY3REb2VzR0M7IH0KKyAgICBEb2VzR0NDaGVjayogYWRk
cmVzc09mRG9lc0dDKCkgeyByZXR1cm4gJm1fZG9lc0dDOyB9CisgICAgdm9pZCBzZXREb2VzR0NF
eHBlY3RhdGlvbihib29sIGV4cGVjdERvZXNHQywgdW5zaWduZWQgbm9kZUluZGV4LCB1bnNpZ25l
ZCBub2RlT3ApIHsgbV9kb2VzR0Muc2V0KGV4cGVjdERvZXNHQywgbm9kZUluZGV4LCBub2RlT3Ap
OyB9CisgICAgdm9pZCBzZXREb2VzR0NFeHBlY3RhdGlvbihib29sIGV4cGVjdERvZXNHQywgRG9l
c0dDQ2hlY2s6OlNwZWNpYWwgc3BlY2lhbCkgeyBtX2RvZXNHQy5zZXQoZXhwZWN0RG9lc0dDLCBz
cGVjaWFsKTsgfQorICAgIHZvaWQgdmVyaWZ5Q2FuR0MoKSB7IG1fZG9lc0dDLnZlcmlmeUNhbkdD
KHZtKCkpOyB9CiAjZWxzZQotICAgIGJvb2wgZXhwZWN0RG9lc0dDKCkgY29uc3QgeyBVTlJFQUNI
QUJMRV9GT1JfUExBVEZPUk0oKTsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHNldEV4cGVjdERv
ZXNHQyhib29sKSB7IFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOyB9Ci0gICAgYm9vbCogYWRk
cmVzc09mRXhwZWN0RG9lc0dDKCkgeyBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsgcmV0dXJu
IG51bGxwdHI7IH0KKyAgICBEb2VzR0NDaGVjayogYWRkcmVzc09mRG9lc0dDKCkgeyBVTlJFQUNI
QUJMRV9GT1JfUExBVEZPUk0oKTsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2b2lkIHNldERvZXNH
Q0V4cGVjdGF0aW9uKGJvb2wsIHVuc2lnbmVkLCB1bnNpZ25lZCkgeyB9CisgICAgdm9pZCBzZXRE
b2VzR0NFeHBlY3RhdGlvbihib29sLCBEb2VzR0NDaGVjazo6U3BlY2lhbCkgeyB9CisgICAgdm9p
ZCB2ZXJpZnlDYW5HQygpIHsgfQogI2VuZGlmCiAKICAgICAvLyBJZiB0cnVlLCB0aGUgR0MgYmVs
aWV2ZXMgdGhhdCB0aGUgbXV0YXRvciBpcyBjdXJyZW50bHkgbWVzc2luZyB3aXRoIHRoZSBoZWFw
LiBXZSBjYWxsIHRoaXMKQEAgLTYwNiw3ICs2MDksNyBAQCBwcml2YXRlOgogICAgIE1hcmthYmxl
PENvbGxlY3Rpb25TY29wZSwgRW51bU1hcmthYmxlVHJhaXRzPENvbGxlY3Rpb25TY29wZT4+IG1f
bGFzdENvbGxlY3Rpb25TY29wZTsKICAgICBMb2NrIG1fcmFjZU1hcmtTdGFja0xvY2s7CiAjaWYg
RU5BQkxFKERGR19ET0VTX0dDX1ZBTElEQVRJT04pCi0gICAgYm9vbCBtX2V4cGVjdERvZXNHQyB7
IHRydWUgfTsKKyAgICBEb2VzR0NDaGVjayBtX2RvZXNHQzsKICNlbmRpZgogCiAgICAgU3RydWN0
dXJlSURUYWJsZSBtX3N0cnVjdHVyZUlEVGFibGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBJbmxpbmVzLmgJKHJldmlzaW9uIDI2MjQ3OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw3ICsyMzYs
NyBAQCBpbmxpbmUgdm9pZCBIZWFwOjpkZXByZWNhdGVkUmVwb3J0RXh0cmFNCiBpbmxpbmUgdm9p
ZCBIZWFwOjphY3F1aXJlQWNjZXNzKCkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdmVyaWZ5Q2Fu
R0MoKTsKIAogICAgIGlmIChtX3dvcmxkU3RhdGUuY29tcGFyZUV4Y2hhbmdlV2VhaygwLCBoYXNB
Y2Nlc3NCaXQpKQogICAgICAgICByZXR1cm47CkBAIC0yNjMsNyArMjYzLDcgQEAgaW5saW5lIGJv
b2wgSGVhcDo6bWF5TmVlZFRvU3RvcCgpCiBpbmxpbmUgdm9pZCBIZWFwOjpzdG9wSWZOZWNlc3Nh
cnkoKQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlQoZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2ZXJpZnlDYW5HQygpOwogCiAgICAgaWYgKG1h
eU5lZWRUb1N0b3AoKSkKICAgICAgICAgc3RvcElmTmVjZXNzYXJ5U2xvdygpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgJ
KHJldmlzaW9uIDI2MjQ3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxs
b2NhdG9ySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogQUxXQVlTX0lOTElORSB2b2lkKiBMb2NhbEFsbG9jYXRvcjo6YWxsb2NhdGUoSGVh
cCYgaGVhcCwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZh
aWx1cmVNb2RlIGZhaWx1cmVNb2RlKQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIGhlYXAu
dmVyaWZ5Q2FuR0MoKTsKICAgICByZXR1cm4gbV9mcmVlTGlzdC5hbGxvY2F0ZSgKICAgICAgICAg
WyZdICgpIC0+IEhlYXBDZWxsKiB7CiAgICAgICAgICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0oaGVh
cC52bSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNl
QWxsb2NhdGlvbi5jcHAJKHJldmlzaW9uIDI2MjQ3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMs
NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBbGlnbmVkRm9yUHJlY2lzZUFsCiBQcmVjaXNlQWxs
b2NhdGlvbiogUHJlY2lzZUFsbG9jYXRpb246OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBzaXplX3Qg
c2l6ZSwgU3Vic3BhY2UqIHN1YnNwYWNlLCB1bnNpZ25lZCBpbmRleEluU3BhY2UpCiB7CiAgICAg
aWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChoZWFwLmV4cGVj
dERvZXNHQygpKTsKKyAgICAgICAgaGVhcC52ZXJpZnlDYW5HQygpOwogCiAgICAgc2l6ZV90IGFk
anVzdGVkQWxpZ25tZW50QWxsb2NhdGlvblNpemUgPSBoZWFkZXJTaXplKCkgKyBzaXplICsgaGFs
ZkFsaWdubWVudDsKICAgICBzdGF0aWNfYXNzZXJ0KGhhbGZBbGlnbm1lbnQgPT0gOCwgIldlIGFz
c3VtZSB0aGF0IG1lbW9yeSByZXR1cm5lZCBieSBtYWxsb2MgaGFzIGFsaWdubWVudCA+PSA4LiIp
OwpAQCAtMTIzLDcgKzEyMyw3IEBAIFByZWNpc2VBbGxvY2F0aW9uKiBQcmVjaXNlQWxsb2NhdGlv
bjo6dHIKIFByZWNpc2VBbGxvY2F0aW9uKiBQcmVjaXNlQWxsb2NhdGlvbjo6Y3JlYXRlRm9yTG93
ZXJUaWVyKEhlYXAmIGhlYXAsIHNpemVfdCBzaXplLCBTdWJzcGFjZSogc3Vic3BhY2UsIHVpbnQ4
X3QgbG93ZXJUaWVySW5kZXgpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChoZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgaGVhcC52ZXJp
ZnlDYW5HQygpOwogCiAgICAgc2l6ZV90IGFkanVzdGVkQWxpZ25tZW50QWxsb2NhdGlvblNpemUg
PSBoZWFkZXJTaXplKCkgKyBzaXplICsgaGFsZkFsaWdubWVudDsKICAgICBzdGF0aWNfYXNzZXJ0
KGhhbGZBbGlnbm1lbnQgPT0gOCwgIldlIGFzc3VtZSB0aGF0IG1lbW9yeSByZXR1cm5lZCBieSBt
YWxsb2MgaGFzIGFsaWdubWVudCA+PSA4LiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAyNjI0NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MzMsNyArNzMzLDcg
QEAgaW5saW5lIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKFZNJiB2bSkKIEFMV0FZU19JTkxJTkUg
SlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKFZNJiB2bSwgVUNoYXIgYykKIHsKICAg
ICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtLmhlYXAu
ZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYg
KGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQogICAgICAgICByZXR1cm4gdm0uc21hbGxT
dHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhjKTsKICAgICByZXR1cm4gSlNTdHJpbmc6OmNy
ZWF0ZSh2bSwgU3RyaW5nSW1wbDo6Y3JlYXRlKCZjLCAxKSk7CkBAIC03NjMsNyArNzYzLDcgQEAg
QUxXQVlTX0lOTElORSBJZGVudGlmaWVyIEpTU3RyaW5nOjp0b0lkZQogQUxXQVlTX0lOTElORSBB
dG9tU3RyaW5nIEpTU3RyaW5nOjp0b0F0b21TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkgY29uc3QKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKHZtKCkuaGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZtKCkuaGVhcC52
ZXJpZnlDYW5HQygpOwogICAgIGlmIChpc1JvcGUoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTUm9wZVN0cmluZyo+KHRoaXMpLT5yZXNvbHZlUm9wZVRvQXRvbVN0cmluZyhn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiBBdG9tU3RyaW5nKHZhbHVlSW50ZXJuYWwoKSk7CkBA
IC03NzIsNyArNzcyLDcgQEAgQUxXQVlTX0lOTElORSBBdG9tU3RyaW5nIEpTU3RyaW5nOjp0b0F0
bwogQUxXQVlTX0lOTElORSBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IEpTU3RyaW5nOjp0b0V4aXN0
aW5nQXRvbVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAg
IGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS5oZWFw
LmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdm0oKS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAg
aWYgKGlzUm9wZSgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3Ry
aW5nKj4odGhpcyktPnJlc29sdmVSb3BlVG9FeGlzdGluZ0F0b21TdHJpbmcoZ2xvYmFsT2JqZWN0
KTsKICAgICBpZiAodmFsdWVJbnRlcm5hbCgpLmltcGwoKS0+aXNBdG9tKCkpCkBAIC03ODMsNyAr
NzgzLDcgQEAgQUxXQVlTX0lOTElORSBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IEpTUwogaW5saW5l
IGNvbnN0IFN0cmluZyYgSlNTdHJpbmc6OnZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0CiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNF
X0FTU0VSVCh2bSgpLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bSgpLmhlYXAudmVy
aWZ5Q2FuR0MoKTsKICAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGUoZ2xvYmFsT2JqZWN0KTsK
ICAgICByZXR1cm4gdmFsdWVJbnRlcm5hbCgpOwpAQCAtNzkzLDcgKzc5Myw3IEBAIGlubGluZSBj
b25zdCBTdHJpbmcmIEpTU3RyaW5nOjp0cnlHZXRWYWwKIHsKICAgICBpZiAoYWxsb2NhdGlvbkFs
bG93ZWQpIHsKICAgICAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQodm0oKS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgICAgIHZtKCku
aGVhcC52ZXJpZnlDYW5HQygpOwogICAgICAgICBpZiAoaXNSb3BlKCkpIHsKICAgICAgICAgICAg
IC8vIFBhc3MgbnVsbHB0ciBmb3IgdGhlIEpTR2xvYmFsT2JqZWN0IHNvIHRoYXQgcmVzb2x2ZVJv
cGUgZG9lcyBub3QgdGhyb3cgaW4gdGhlIGV2ZW50IG9mIGFuIE9PTSBlcnJvci4KICAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2
ZVJvcGUobnVsbHB0cik7CkBAIC05ODMsNyArOTgzLDcgQEAgaW5saW5lIGJvb2wgaXNKU1N0cmlu
ZyhKU1ZhbHVlIHYpCiBBTFdBWVNfSU5MSU5FIFN0cmluZ1ZpZXcgSlNSb3BlU3RyaW5nOjp1bnNh
ZmVWaWV3KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKHZh
bGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhwZWN0
RG9lc0dDKCkpOworICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAoaXNT
dWJzdHJpbmcoKSkgewogICAgICAgICBhdXRvJiBiYXNlID0gc3Vic3RyaW5nQmFzZSgpLT52YWx1
ZUludGVybmFsKCk7CiAgICAgICAgIGlmIChiYXNlLmlzOEJpdCgpKQpAQCAtOTk2LDcgKzk5Niw3
IEBAIEFMV0FZU19JTkxJTkUgU3RyaW5nVmlldyBKU1JvcGVTdHJpbmc6OnUKIEFMV0FZU19JTkxJ
TkUgU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nIEpTUm9wZVN0cmluZzo6dmlld1dpdGhV
bmRlcmx5aW5nU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAg
ICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLmhl
YXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsKICAg
ICBpZiAoaXNTdWJzdHJpbmcoKSkgewogICAgICAgICBhdXRvJiBiYXNlID0gc3Vic3RyaW5nQmFz
ZSgpLT52YWx1ZUludGVybmFsKCk7CiAgICAgICAgIGlmIChiYXNlLmlzOEJpdCgpKQpAQCAtMTAx
MCw3ICsxMDEwLDcgQEAgQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdAog
QUxXQVlTX0lOTElORSBTdHJpbmdWaWV3IEpTU3RyaW5nOjp1bnNhZmVWaWV3KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQot
ICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAg
ICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+dW5zYWZlVmlldyhn
bG9iYWxPYmplY3QpOwogICAgIHJldHVybiB2YWx1ZUludGVybmFsKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkocmV2
aXNpb24gMjYyNDc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0
Y2hlc0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgQUxXQVlTX0lOTElO
RSBKU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaAogICAgIFJlZ0V4cCogcmVnRXhwLCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgTWF0Y2hSZXN1bHQmIHJlc3VsdCkKIHsKICAgICBpZiAodmFsaWRhdGVE
RkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtLmhlYXAuZXhwZWN0RG9lc0dDKCkp
OworICAgICAgICB2bS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAKICAgICBWZWN0b3I8aW50LCAzMj4g
c3VicGF0dGVyblJlc3VsdHM7CiAgICAgaW50IHBvc2l0aW9uID0gcmVnRXhwLT5tYXRjaElubGlu
ZShnbG9iYWxPYmplY3QsIHZtLCBpbnB1dFZhbHVlLCBzdGFydE9mZnNldCwgc3VicGF0dGVyblJl
c3VsdHMpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>