<?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>228052</bug_id>
          
          <creation_ts>2021-07-17 19:46:26 -0700</creation_ts>
          <short_desc>AirFixObviousSpills should be optimized</short_desc>
          <delta_ts>2021-11-19 01:38:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1777733</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-07-17 19:46:26 -0700</bug_when>
    <thetext>It has two problems:
- It visit blocks even when their state at head has not changed
- Worse, the &quot;merge()&quot; function on its State has quadratic time complexity
The result of these is that it is the 5th slowest phase on average in JetStream2, at 390ms on an M1 MBP (for comparison, all of Air is 2.2s and all of B3+Air is 3.3s), and we spend 105ms in it for a single function as a result of the quadratic blow-up in merge().
Both problems are fairly easy to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777734</commentid>
    <comment_count>1</comment_count>
      <attachid>433739</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-07-17 19:54:06 -0700</bug_when>
    <thetext>Created attachment 433739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777741</commentid>
    <comment_count>2</comment_count>
      <attachid>433744</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-07-17 20:14:43 -0700</bug_when>
    <thetext>Created attachment 433744
Patch

Fix style nitpicks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779350</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-24 19:47:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/81064637&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781360</commentid>
    <comment_count>4</comment_count>
      <attachid>434786</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-08-02 12:48:46 -0700</bug_when>
    <thetext>Created attachment 434786
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807882</commentid>
    <comment_count>5</comment_count>
      <attachid>442200</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-22 14:27:27 -0700</bug_when>
    <thetext>Created attachment 442200
Patch

just rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816542</commentid>
    <comment_count>6</comment_count>
      <attachid>442200</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-18 11:52:32 -0800</bug_when>
    <thetext>Comment on attachment 442200
Patch

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

r=me

&gt; Source/JavaScriptCore/b3/air/AirFixObviousSpills.cpp:92
&gt; +                    // Before we call merge we must make sure that the two states are sorted.
&gt; +                    m_state.sort();

Do we need to call `sort()` inside this loop? Can we sort() before starting this loop?

&gt; Source/JavaScriptCore/b3/air/AirFixObviousSpills.cpp:-568
&gt; +                    it = std::find_if_not(it, end, [&amp;] (const T&amp; otherAlias) {
&gt; +                        return otherAlias &lt; alias;
&gt; +                    });
&gt; +                    if (it == end)
&gt;                          return true;
&gt; -                    return false;

How about using std::lower_bound or the other binary-searching since other is also sorted?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816743</commentid>
    <comment_count>7</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-11-18 22:13:14 -0800</bug_when>
    <thetext>Thanks for the review.

&gt; &gt; Source/JavaScriptCore/b3/air/AirFixObviousSpills.cpp:92
&gt; &gt; +                    // Before we call merge we must make sure that the two states are sorted.
&gt; &gt; +                    m_state.sort();
&gt; 
&gt; Do we need to call `sort()` inside this loop? Can we sort() before starting
&gt; this loop?

Good idea, it is a small improvement (total time 139-146ms before, 133-136ms after)

&gt; &gt; Source/JavaScriptCore/b3/air/AirFixObviousSpills.cpp:-568
&gt; &gt; +                    it = std::find_if_not(it, end, [&amp;] (const T&amp; otherAlias) {
&gt; &gt; +                        return otherAlias &lt; alias;
&gt; &gt; +                    });
&gt; &gt; +                    if (it == end)
&gt; &gt;                          return true;
&gt; &gt; -                    return false;
&gt; 
&gt; How about using std::lower_bound or the other binary-searching since other
&gt; is also sorted?

I tried this, and it turned out to be measurably slower, probably we rarely skip over enough elements of the vector to be worth the branch mispredictions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816744</commentid>
    <comment_count>8</comment_count>
      <attachid>444781</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-11-18 22:14:13 -0800</bug_when>
    <thetext>Created attachment 444781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816784</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-19 01:38:35 -0800</bug_when>
    <thetext>Committed r286053 (244440@main): &lt;https://commits.webkit.org/244440@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444781.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433739</attachid>
            <date>2021-07-17 19:54:06 -0700</date>
            <delta_ts>2021-07-17 20:14:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch228052</filename>
            <type>text/plain</type>
            <size>11033</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDExNDU1NzJhZjdhNy4uOWVkNWU5MGY1YzMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wNy0xNyAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIEFpckZpeE9idmlv
dXNTcGlsbHMgc2hvdWxkIGJlIG9wdGltaXplZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MDUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgd2VyZSB0d28gcHJvYmxlbXMgd2l0aCBBaXJGaXhP
YnZpb3VzU3BpbGxzOgorICAgICAgICAtIG1lcmdlKCkgaGFkIGEgcXVhZHJhdGljIGJsb3ctdXAs
IGFzIGZvciBlYWNoIGVsZW1lbnQgaW4gYSB2ZWN0b3IsIGl0IHdhcyBzZWFyY2hpbmcgaXQgaW4g
YSBkaWZmZXJlbnQgdmVjdG9yLgorICAgICAgICAtIGl0IHdvdWxkIHZpc2l0IGJsb2NrcyBldmVu
IHdoZW4gdGhlaXIgc3RhdGUgYXQgaGVhZCBoYWQgbm90IGNoYW5nZWQuCisKKyAgICAgICAgSSBm
aXhlZCB0aGUgZmlyc3QgcHJvYmxlbSBieSBtYWtpbmcgc3VyZSB0aGF0IHRoZSB2ZWN0b3JzIGFy
ZSBzb3J0ZWQgYmVmb3JlIGNhbGxpbmcgbWVyZ2UsIGFuZCBtYWtpbmcgdXNlIG9mIHRoYXQgaW52
YXJpYW50IGluIHRoZSBzZWFyY2ggb2YgdGhlIHZlY3RvcnMKKwkoc2VlIGZpbHRlclZlY3RvckFn
YWluc3QpCisJVGhpcyByZWR1Y2VkIHRoZSB0b3RhbCB0aW1lIHNwZW50IGluIHRoYXQgcGhhc2Ug
ZnJvbSAzOTBtcyB0byAyMzBtcywgYW5kIHRoZSB3b3JzdCBjYXNlIHRpbWUgc3BlbnQgaW4gdGhh
dCBwaGFzZSBmb3Igb25lIGZ1bmN0aW9uIGZyb20gMTAwbXMgdG8gMzBtcyAoYWxsIG9mIHRoZSBy
ZXN1bHRzIGluIHRoaXMgQ2hhbmdlbG9nIGFyZSBmb3IgSmV0U3RyZWFtMiBvbiBhIE0xIE1CUCku
CisKKwlJIGZpeGVkIHRoZSBzZWNvbmQgcHJvYmxlbSBldmVuIG1vcmUgZWFzaWx5IGJ5IGFkZGlu
ZyBhIG1fc2hvdWxkVmlzaXQgQml0VmVjdG9yLiBJIGFsc28gbW92ZWQgdGhlIG1fd2FzVmlzaXRl
ZCBib29sZWFuIHRoYXQgd2FzIGluIFN0YXRlIHRvIGEgbV9ub3RCb3R0b20gQml0VmVjdG9yIGZv
ciBzaW1wbGljaXR5IGFuZCBzeW1tZXRyeS4KKwlUaGF0IGNoYW5nZSBmdXJ0aGVyIHJlZHVjZWQg
dGhlIHRvdGFsL21heCB0aW1lIGZyb20gMjMwbXMvMzBtcyB0byAxNDBtcy8xNm1zLgorCisgICAg
ICAgICogYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwOgorCiAyMDIxLTA3LTE1ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSGFyZGVuIGRl
ZmF1bHRUaW1lWm9uZSByZXRyaWV2YWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCmluZGV4IDYyNTYxM2UzNTkwNC4uMGJhYzQ5
ODdkYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9i
dmlvdXNTcGlsbHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4
T2J2aW91c1NwaWxscy5jcHAKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogICAgIEZpeE9idmlv
dXNTcGlsbHMoQ29kZSYgY29kZSkKICAgICAgICAgOiBtX2NvZGUoY29kZSkKICAgICAgICAgLCBt
X2F0SGVhZChjb2RlLnNpemUoKSkKKyAgICAgICAgLCBtX25vdEJvdHRvbShjb2RlLnNpemUoKSkK
KyAgICAgICAgLCBtX3Nob3VsZFZpc2l0KGNvZGUuc2l6ZSgpKQogICAgIHsKICAgICB9CiAKQEAg
LTYzLDE3ICs2NSwxOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZUFsaWFz
ZXMoKQogICAgIHsKLSAgICAgICAgbV9hdEhlYWRbbV9jb2RlWzBdXS53YXNWaXNpdGVkID0gdHJ1
ZTsKKyAgICAgICAgbV9ub3RCb3R0b20ucXVpY2tTZXQoMCk7CisgICAgICAgIG1fc2hvdWxkVmlz
aXQucXVpY2tTZXQoMCk7CiAgICAgICAgIAogICAgICAgICBib29sIGNoYW5nZWQgPSB0cnVlOwog
ICAgICAgICB3aGlsZSAoY2hhbmdlZCkgewogICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9jb2Rl
KSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGJsb2NrSW5kZXggOiBtX3Nob3VsZFZpc2l0
KSB7CisgICAgICAgICAgICAgICAgbV9zaG91bGRWaXNpdC5xdWlja0NsZWFyKGJsb2NrSW5kZXgp
OworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9jb2RlW2Jsb2NrSW5kZXhd
OworICAgICAgICAgICAgICAgIEFTU0VSVChtX25vdEJvdHRvbS5xdWlja0dldChibG9ja0luZGV4
KSk7CiAgICAgICAgICAgICAgICAgbV9ibG9jayA9IGJsb2NrOwogICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBtX2F0SGVhZFtibG9ja107Ci0gICAgICAgICAgICAgICAgaWYgKCFtX3N0YXRlLndh
c1Zpc2l0ZWQpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAg
ICAgaWYgKEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiRXhlY3V0aW5nIGJsb2NrICIsICptX2Jsb2NrLCAiOiAiLCBtX3N0
YXRlLCAiXG4iKTsKQEAgLTgyLDEyICs4NiwyMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICBleGVjdXRlSW5zdCgpOwogCiAgICAgICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBz
dWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29yQmxvY2tzKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgc3VjY2Vzc29ySW5kZXggPSBzdWNjZXNzb3ItPmluZGV4KCk7CiAgICAgICAg
ICAgICAgICAgICAgIFN0YXRlJiB0b1N0YXRlID0gbV9hdEhlYWRbc3VjY2Vzc29yXTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHRvU3RhdGUud2FzVmlzaXRlZCkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gdG9TdGF0ZS5tZXJnZShtX3N0YXRlKTsKLSAgICAgICAgICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEJlZm9yZSB3ZSBjYWxsIG1lcmdl
IHdlIG11c3QgbWFrZSBzdXJlIHRoYXQgdGhlIHR3byBzdGF0ZXMgYXJlIHNvcnRlZC4KKyAgICAg
ICAgICAgICAgICAgICAgbV9zdGF0ZS5zb3J0KCk7CisgICAgICAgICAgICAgICAgICAgIGlmICht
X25vdEJvdHRvbS5xdWlja0dldChzdWNjZXNzb3JJbmRleCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgY2hhbmdlZEF0U3VjY2Vzc29ySGVhZCA9IHRvU3RhdGUubWVyZ2UobV9zdGF0
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hhbmdlZEF0U3VjY2Vzc29ySGVhZCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fc2hvdWxkVmlzaXQucXVpY2tTZXQoc3VjY2Vzc29ySW5kZXgp
OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
eyAvLyBUaGUgc3RhdGUgYXQgaGVhZCBvZiBzdWNjZXNzb3IgaXMgYm90dG9tCiAgICAgICAgICAg
ICAgICAgICAgICAgICB0b1N0YXRlID0gbV9zdGF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ub3RCb3R0b20ucXVp
Y2tTZXQoc3VjY2Vzc29ySW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9zaG91bGRW
aXNpdC5xdWlja1NldChzdWNjZXNzb3JJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC05OSw3ICsxMTIsNyBAQCBwcml2YXRl
OgogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9jb2RlKSB7CiAgICAgICAgICAg
ICBtX2Jsb2NrID0gYmxvY2s7CiAgICAgICAgICAgICBtX3N0YXRlID0gbV9hdEhlYWRbYmxvY2td
OwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZS53YXNWaXNpdGVkKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fbm90Qm90dG9tLnF1aWNrR2V0KGJsb2NrLT5pbmRleCgp
KSk7CiAKICAgICAgICAgICAgIGZvciAobV9pbnN0SW5kZXggPSAwOyBtX2luc3RJbmRleCA8IGJs
b2NrLT5zaXplKCk7ICsrbV9pbnN0SW5kZXgpIHsKICAgICAgICAgICAgICAgICBmaXhJbnN0KCk7
CkBAIC0zNDEsNiArMzU0LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgJiYgY29uc3Rh
bnQgPT0gb3RoZXIuY29uc3RhbnQ7CiAgICAgICAgIH0KIAorICAgICAgICBib29sIG9wZXJhdG9y
PChjb25zdCBSZWdDb25zdCYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiByZWcgPCBvdGhlci5yZWcgfHwgKHJlZyA9PSBvdGhlci5yZWcgJiYgY29uc3RhbnQgPCBv
dGhlci5jb25zdGFudCk7CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgb3V0LnByaW50KHJlZywgIi0+
IiwgY29uc3RhbnQpOwpAQCAtMzgwLDYgKzM5OCwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICYmIG1vZGUgPT0gb3RoZXIubW9kZTsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgb3Bl
cmF0b3I8KGNvbnN0IFJlZ1Nsb3QmIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICAvLyBXZSBpZ25vcmUgYG1vZGVgIG9uIHB1cnBvc2UsIHNlZSBtZXJnZSgpIGZvciBob3cgd2Ug
ZGVhbCB3aXRoIGl0LgorICAgICAgICAgICAgcmV0dXJuIHNsb3QgPCBvdGhlci5zbG90IHx8IChz
bG90ID09IG90aGVyLnNsb3QgJiYgcmVnIDwgb3RoZXIucmVnKTsKKyAgICAgICAgfQorCiAgICAg
ICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAgICB7CiAgICAgICAg
ICAgICBvdXQucHJpbnQocG9pbnRlckR1bXAoc2xvdCksICItPiIsIHJlZyk7CkBAIC00MjMsNiAr
NDQ3LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgJiYgY29uc3RhbnQgPT0gb3RoZXIu
Y29uc3RhbnQ7CiAgICAgICAgIH0KIAorICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBTbG90
Q29uc3QmIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gc2xvdCA8
IG90aGVyLnNsb3QgfHwgKHNsb3QgPT0gb3RoZXIuc2xvdCAmJiBjb25zdGFudCA8IG90aGVyLmNv
bnN0YW50KTsKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBvdXQucHJpbnQocG9pbnRlckR1bXAoc2xv
dCksICItPiIsIGNvbnN0YW50KTsKQEAgLTQzNSwxNSArNDY0LDI0IEBAIHByaXZhdGU6CiAgICAg
c3RydWN0IFN0YXRlIHsKICAgICAgICAgdm9pZCBhZGRBbGlhcyhjb25zdCBSZWdDb25zdCYgbmV3
QWxpYXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByZWdDb25zdC5hcHBlbmQobmV3
QWxpYXMpOworICAgICAgICAgICAgcmVnQ29uc3QuYXBwZW5kKG5ld0FsaWFzKTsKKyNpZiBBU1NF
UlRfRU5BQkxFRAorICAgICAgICAgICAgbV9pc1NvcnRlZCA9IGZhbHNlOworI2VuZGlmCiAgICAg
ICAgIH0KICAgICAgICAgdm9pZCBhZGRBbGlhcyhjb25zdCBSZWdTbG90JiBuZXdBbGlhcykKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJlZ1Nsb3QuYXBwZW5kKG5ld0FsaWFzKTsKKyAg
ICAgICAgICAgIHJlZ1Nsb3QuYXBwZW5kKG5ld0FsaWFzKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAor
ICAgICAgICAgICAgbV9pc1NvcnRlZCA9IGZhbHNlOworI2VuZGlmCiAgICAgICAgIH0KICAgICAg
ICAgdm9pZCBhZGRBbGlhcyhjb25zdCBTbG90Q29uc3QmIG5ld0FsaWFzKQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gc2xvdENvbnN0LmFwcGVuZChuZXdBbGlhcyk7CisgICAgICAgICAg
ICBzbG90Q29uc3QuYXBwZW5kKG5ld0FsaWFzKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAg
ICAgICAgbV9pc1NvcnRlZCA9IGZhbHNlOworI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgUmVnQ29uc3QmIGFsaWFzKQpAQCAtNTQ0LDQxICs1
ODIsNjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGJv
b2wgbWVyZ2UoY29uc3QgU3RhdGUmIG90aGVyKQorICAgICAgICB2b2lkIHNvcnQoKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgY2hhbmdlZCB8PSAhIXJlZ0NvbnN0LnJlbW92ZUFsbE1hdGNoaW5nKAotICAgICAg
ICAgICAgICAgIFsmXSAoUmVnQ29uc3QmIGFsaWFzKSAtPiBib29sIHsKLSAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUmVnQ29uc3QqIG90aGVyQWxpYXMgPSBvdGhlci5nZXRSZWdDb25zdChhbGlh
cy5yZWcpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIW90aGVyQWxpYXMpCi0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFsaWFz
LmNvbnN0YW50ICE9IG90aGVyQWxpYXMtPmNvbnN0YW50KQorICAgICAgICAgICAgc3RkOjpzb3J0
KHJlZ0NvbnN0LmJlZ2luKCksIHJlZ0NvbnN0LmVuZCgpLCBbXSAoY29uc3QgUmVnQ29uc3QmIGEs
IGNvbnN0IFJlZ0NvbnN0JiBiKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGEgPCBiOworICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICBzdGQ6OnNvcnQoc2xvdENvbnN0LmJlZ2luKCksIHNs
b3RDb25zdC5lbmQoKSwgW10gKGNvbnN0IFNsb3RDb25zdCYgYSwgY29uc3QgU2xvdENvbnN0JiBi
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGEgPCBiOworICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICBzdGQ6OnNvcnQocmVnU2xvdC5iZWdpbigpLCByZWdTbG90LmVuZCgpLCBbXSAoY29u
c3QgUmVnU2xvdCYgYSwgY29uc3QgUmVnU2xvdCYgYikgeworICAgICAgICAgICAgICAgIHJldHVy
biBhIDwgYjsKKyAgICAgICAgICAgIH0pOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgICAg
ICBtX2lzU29ydGVkID0gdHJ1ZTsKKyNlbmRpZgorICAgICAgICB9CisKKyAgICAgICAgLy8gVGFr
ZXMgdHdvIHNvcnRlZCB2ZWN0b3JzLCBmb3IgZWFjaCBlbGVtZW50IGluIHRoZSBmaXJzdCwgaXQg
bG9va3MgZm9yIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBzZWNvbmQgd2hpY2ggaXMgbm90IHNt
YWxsZXIuCisgICAgICAgIC8vIElmIHRoaXMgZWxlbWVudCBjb21wYXJlcyBlcXVhbCwgdGhlbiBr
ZWVwIGl0IGFuZCBjYWxsIGYoKSBvbiBib3RoLgorICAgICAgICAvLyBPdGhlcndpc2UgcmVtb3Zl
IHRoZSBlbGVtZW50IGZyb20gdGhlIGZpcnN0IHZlY3Rvci4KKyAgICAgICAgLy8gUmV0dXJucyB0
cnVlIGlmIGFueSBlbGVtZW50IGhhcyBiZWVuIHJlbW92ZWQuCisgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEZ1bmM+CisgICAgICAgIHN0YXRpYyBib29sIGZpbHRlclZlY3Rv
ckFnYWluc3QoVmVjdG9yPFQ+JiBvd24sIGNvbnN0IFZlY3RvcjxUPiYgb3RoZXIsIEZ1bmMgZikg
eworICAgICAgICAgICAgY29uc3QgVCogaXQgPSBvdGhlci5iZWdpbigpOworICAgICAgICAgICAg
Y29uc3QgVCogZW5kID0gb3RoZXIuZW5kKCk7CisgICAgICAgICAgICByZXR1cm4gISFvd24ucmVt
b3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgICAgICAgICAgWyZdIChUJiBhbGlhcykgeworICAgICAg
ICAgICAgICAgICAgICBpdCA9IHN0ZDo6ZmluZF9pZl9ub3QoaXQsIGVuZCwgWyZdIChjb25zdCBU
JiBvdGhlckFsaWFzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXJBbGlh
cyA8IGFsaWFzOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGl0ID09IGVuZCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChhbGlhcyA9PSAqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGYoYWxpYXMsICppdCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGFsaWFz
IDwgKml0KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBjaGFuZ2VkIHw9ICEhc2xvdENvbnN0LnJlbW92
ZUFsbE1hdGNoaW5nKAotICAgICAgICAgICAgICAgIFsmXSAoU2xvdENvbnN0JiBhbGlhcykgLT4g
Ym9vbCB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IFNsb3RDb25zdCogb3RoZXJBbGlhcyA9
IG90aGVyLmdldFNsb3RDb25zdChhbGlhcy5zbG90KTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KCFvdGhlckFsaWFzKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChhbGlhcy5jb25zdGFudCAhPSBvdGhlckFsaWFzLT5jb25zdGFu
dCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfSk7CisgICAgICAgIGJvb2wgbWVy
Z2UoY29uc3QgU3RhdGUmIG90aGVyKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV9p
c1NvcnRlZCk7CisgICAgICAgICAgICBBU1NFUlQob3RoZXIubV9pc1NvcnRlZCk7CisgICAgICAg
ICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKIAotICAgICAgICAgICAgY2hhbmdlZCB8PSAhIXJl
Z1Nsb3QucmVtb3ZlQWxsTWF0Y2hpbmcoCi0gICAgICAgICAgICAgICAgWyZdIChSZWdTbG90JiBh
bGlhcykgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlZ1Nsb3QqIG90aGVy
QWxpYXMgPSBvdGhlci5nZXRSZWdTbG90KGFsaWFzLnJlZywgYWxpYXMuc2xvdCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICghb3RoZXJBbGlhcykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoYWxpYXMubW9kZSAhPSBSZWdTbG90
OjpNYXRjaDMyICYmIGFsaWFzLm1vZGUgIT0gb3RoZXJBbGlhcy0+bW9kZSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgYWxpYXMubW9kZSA9IFJlZ1Nsb3Q6Ok1hdGNoMzI7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICBjaGFuZ2VkIHw9IGZpbHRlclZlY3RvckFnYWluc3QocmVnQ29uc3QsIG90aGVyLnJl
Z0NvbnN0LCBbXShSZWdDb25zdCYsIGNvbnN0IFJlZ0NvbnN0Jil7IH0pOworICAgICAgICAgICAg
Y2hhbmdlZCB8PSBmaWx0ZXJWZWN0b3JBZ2FpbnN0KHNsb3RDb25zdCwgb3RoZXIuc2xvdENvbnN0
LCBbXShTbG90Q29uc3QmLCBjb25zdCBTbG90Q29uc3QmKXsgfSk7CisgICAgICAgICAgICBjaGFu
Z2VkIHw9IGZpbHRlclZlY3RvckFnYWluc3QocmVnU2xvdCwgb3RoZXIucmVnU2xvdCwgWyZdKFJl
Z1Nsb3QmIGFsaWFzLCBjb25zdCBSZWdTbG90JiBvdGhlckFsaWFzKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGFsaWFzLm1vZGUgIT0gUmVnU2xvdDo6TWF0Y2gzMiAmJiBhbGlhcy5tb2RlICE9IG90
aGVyQWxpYXMubW9kZSkgeworICAgICAgICAgICAgICAgICAgICBhbGlhcy5tb2RlID0gUmVnU2xv
dDo6TWF0Y2gzMjsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIHJldHVybiBjaGFuZ2Vk
OwogICAgICAgICB9CkBAIC01ODcsMTggKzY0NCwyMiBAQCBwcml2YXRlOgogICAgICAgICB7CiAg
ICAgICAgICAgICBvdXQucHJpbnQoCiAgICAgICAgICAgICAgICAgIntyZWdDb25zdCA9IFsiLCBs
aXN0RHVtcChyZWdDb25zdCksICJdLCBzbG90Q29uc3QgPSBbIiwgbGlzdER1bXAoc2xvdENvbnN0
KSwKLSAgICAgICAgICAgICAgICAiXSwgcmVnU2xvdCA9IFsiLCBsaXN0RHVtcChyZWdTbG90KSwg
Il0sIHdhc1Zpc2l0ZWQgPSAiLCB3YXNWaXNpdGVkLCAifSIpOworICAgICAgICAgICAgICAgICJd
LCByZWdTbG90ID0gWyIsIGxpc3REdW1wKHJlZ1Nsb3QpLCAiXX0iKTsKICAgICAgICAgfQogCiAg
ICAgICAgIFZlY3RvcjxSZWdDb25zdD4gcmVnQ29uc3Q7CiAgICAgICAgIFZlY3RvcjxTbG90Q29u
c3Q+IHNsb3RDb25zdDsKICAgICAgICAgVmVjdG9yPFJlZ1Nsb3Q+IHJlZ1Nsb3Q7Ci0gICAgICAg
IGJvb2wgd2FzVmlzaXRlZCB7IGZhbHNlIH07CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAg
Ym9vbCBtX2lzU29ydGVkIHsgdHJ1ZSB9OworI2VuZGlmCiAgICAgfTsKIAogICAgIENvZGUmIG1f
Y29kZTsKICAgICBJbmRleE1hcDxCYXNpY0Jsb2NrKiwgU3RhdGU+IG1fYXRIZWFkOwogICAgIFN0
YXRlIG1fc3RhdGU7CisgICAgQml0VmVjdG9yIG1fbm90Qm90dG9tOworICAgIEJpdFZlY3RvciBt
X3Nob3VsZFZpc2l0OwogICAgIEJhc2ljQmxvY2sqIG1fYmxvY2sgeyBudWxscHRyIH07CiAgICAg
dW5zaWduZWQgbV9pbnN0SW5kZXggeyAwIH07CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433744</attachid>
            <date>2021-07-17 20:14:43 -0700</date>
            <delta_ts>2021-08-02 12:48:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch228052</filename>
            <type>text/plain</type>
            <size>11051</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDExNDU1NzJhZjdhNy4uZTM3NWQ2NGJmYTE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wNy0xNyAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIEFpckZpeE9idmlv
dXNTcGlsbHMgc2hvdWxkIGJlIG9wdGltaXplZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MDUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgd2VyZSB0d28gcHJvYmxlbXMgd2l0aCBBaXJGaXhP
YnZpb3VzU3BpbGxzOgorICAgICAgICAtIG1lcmdlKCkgaGFkIGEgcXVhZHJhdGljIGJsb3ctdXAs
IGFzIGZvciBlYWNoIGVsZW1lbnQgaW4gYSB2ZWN0b3IsIGl0IHdhcyBzZWFyY2hpbmcgaXQgaW4g
YSBkaWZmZXJlbnQgdmVjdG9yLgorICAgICAgICAtIGl0IHdvdWxkIHZpc2l0IGJsb2NrcyBldmVu
IHdoZW4gdGhlaXIgc3RhdGUgYXQgaGVhZCBoYWQgbm90IGNoYW5nZWQuCisKKyAgICAgICAgSSBm
aXhlZCB0aGUgZmlyc3QgcHJvYmxlbSBieSBtYWtpbmcgc3VyZSB0aGF0IHRoZSB2ZWN0b3JzIGFy
ZSBzb3J0ZWQgYmVmb3JlIGNhbGxpbmcgbWVyZ2UsIGFuZCBtYWtpbmcgdXNlIG9mIHRoYXQgaW52
YXJpYW50IGluIHRoZSBzZWFyY2ggb2YgdGhlIHZlY3RvcnMKKyAgICAgICAgKHNlZSBmaWx0ZXJW
ZWN0b3JBZ2FpbnN0KQorICAgICAgICBUaGlzIHJlZHVjZWQgdGhlIHRvdGFsIHRpbWUgc3BlbnQg
aW4gdGhhdCBwaGFzZSBmcm9tIDM5MG1zIHRvIDIzMG1zLCBhbmQgdGhlIHdvcnN0IGNhc2UgdGlt
ZSBzcGVudCBpbiB0aGF0IHBoYXNlIGZvciBvbmUgZnVuY3Rpb24gZnJvbSAxMDBtcyB0byAzMG1z
IChhbGwgb2YgdGhlIHJlc3VsdHMgaW4gdGhpcyBDaGFuZ2Vsb2cgYXJlIGZvciBKZXRTdHJlYW0y
IG9uIGEgTTEgTUJQKS4KKworICAgICAgICBJIGZpeGVkIHRoZSBzZWNvbmQgcHJvYmxlbSBldmVu
IG1vcmUgZWFzaWx5IGJ5IGFkZGluZyBhIG1fc2hvdWxkVmlzaXQgQml0VmVjdG9yLiBJIGFsc28g
bW92ZWQgdGhlIG1fd2FzVmlzaXRlZCBib29sZWFuIHRoYXQgd2FzIGluIFN0YXRlIHRvIGEgbV9u
b3RCb3R0b20gQml0VmVjdG9yIGZvciBzaW1wbGljaXR5IGFuZCBzeW1tZXRyeS4KKyAgICAgICAg
VGhhdCBjaGFuZ2UgZnVydGhlciByZWR1Y2VkIHRoZSB0b3RhbC9tYXggdGltZSBmcm9tIDIzMG1z
LzMwbXMgdG8gMTQwbXMvMTZtcy4KKworICAgICAgICAqIGIzL2Fpci9BaXJGaXhPYnZpb3VzU3Bp
bGxzLmNwcDoKKwogMjAyMS0wNy0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgogCiAgICAgICAgIFtKU0NdIEhhcmRlbiBkZWZhdWx0VGltZVpvbmUgcmV0cmlldmFsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNw
cAppbmRleCA2MjU2MTNlMzU5MDQuLmU5ZjljZGQ2MTRlOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCkBAIC00OCw2ICs0
OCw4IEBAIHB1YmxpYzoKICAgICBGaXhPYnZpb3VzU3BpbGxzKENvZGUmIGNvZGUpCiAgICAgICAg
IDogbV9jb2RlKGNvZGUpCiAgICAgICAgICwgbV9hdEhlYWQoY29kZS5zaXplKCkpCisgICAgICAg
ICwgbV9ub3RCb3R0b20oY29kZS5zaXplKCkpCisgICAgICAgICwgbV9zaG91bGRWaXNpdChjb2Rl
LnNpemUoKSkKICAgICB7CiAgICAgfQogCkBAIC02MywxNyArNjUsMTkgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICB2b2lkIGNvbXB1dGVBbGlhc2VzKCkKICAgICB7Ci0gICAgICAgIG1fYXRIZWFk
W21fY29kZVswXV0ud2FzVmlzaXRlZCA9IHRydWU7CisgICAgICAgIG1fbm90Qm90dG9tLnF1aWNr
U2V0KDApOworICAgICAgICBtX3Nob3VsZFZpc2l0LnF1aWNrU2V0KDApOwogICAgICAgICAKICAg
ICAgICAgYm9vbCBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgd2hpbGUgKGNoYW5nZWQpIHsKICAg
ICAgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgZm9y
IChCYXNpY0Jsb2NrKiBibG9jayA6IG1fY29kZSkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBibG9ja0luZGV4IDogbV9zaG91bGRWaXNpdCkgeworICAgICAgICAgICAgICAgIG1fc2hvdWxk
VmlzaXQucXVpY2tDbGVhcihibG9ja0luZGV4KTsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2Nr
KiBibG9jayA9IG1fY29kZVtibG9ja0luZGV4XTsKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9u
b3RCb3R0b20ucXVpY2tHZXQoYmxvY2tJbmRleCkpOwogICAgICAgICAgICAgICAgIG1fYmxvY2sg
PSBibG9jazsKICAgICAgICAgICAgICAgICBtX3N0YXRlID0gbV9hdEhlYWRbYmxvY2tdOwotICAg
ICAgICAgICAgICAgIGlmICghbV9zdGF0ZS53YXNWaXNpdGVkKQotICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIGlmIChBaXJGaXhPYnZpb3VzU3BpbGxzSW50
ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkV4ZWN1dGluZyBi
bG9jayAiLCAqbV9ibG9jaywgIjogIiwgbV9zdGF0ZSwgIlxuIik7CkBAIC04MiwxMiArODYsMjEg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZUluc3QoKTsKIAogICAgICAg
ICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvckJs
b2NrcygpKSB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHN1Y2Nlc3NvckluZGV4ID0g
c3VjY2Vzc29yLT5pbmRleCgpOwogICAgICAgICAgICAgICAgICAgICBTdGF0ZSYgdG9TdGF0ZSA9
IG1fYXRIZWFkW3N1Y2Nlc3Nvcl07Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0b1N0YXRlLndh
c1Zpc2l0ZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IHRvU3RhdGUubWVy
Z2UobV9zdGF0ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAvLyBCZWZvcmUgd2UgY2FsbCBtZXJnZSB3ZSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZSB0
d28gc3RhdGVzIGFyZSBzb3J0ZWQuCisgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc29ydCgp
OworICAgICAgICAgICAgICAgICAgICBpZiAobV9ub3RCb3R0b20ucXVpY2tHZXQoc3VjY2Vzc29y
SW5kZXgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNoYW5nZWRBdFN1Y2Nlc3Nv
ckhlYWQgPSB0b1N0YXRlLm1lcmdlKG1fc3RhdGUpOworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGNoYW5nZWRBdFN1Y2Nlc3NvckhlYWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Nob3VsZFZp
c2l0LnF1aWNrU2V0KHN1Y2Nlc3NvckluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gVGhlIHN0YXRlIGF0IGhlYWQgb2Ygc3Vj
Y2Vzc29yIGlzIGJvdHRvbQogICAgICAgICAgICAgICAgICAgICAgICAgdG9TdGF0ZSA9IG1fc3Rh
dGU7CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fbm90Qm90dG9tLnF1aWNrU2V0KHN1Y2Nlc3NvckluZGV4KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fc2hvdWxkVmlzaXQucXVpY2tTZXQoc3VjY2Vzc29ySW5kZXgp
OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQpAQCAtOTksNyArMTEyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBi
bG9jayA6IG1fY29kZSkgewogICAgICAgICAgICAgbV9ibG9jayA9IGJsb2NrOwogICAgICAgICAg
ICAgbV9zdGF0ZSA9IG1fYXRIZWFkW2Jsb2NrXTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fc3RhdGUud2FzVmlzaXRlZCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX25vdEJv
dHRvbS5xdWlja0dldChibG9jay0+aW5kZXgoKSkpOwogCiAgICAgICAgICAgICBmb3IgKG1faW5z
dEluZGV4ID0gMDsgbV9pbnN0SW5kZXggPCBibG9jay0+c2l6ZSgpOyArK21faW5zdEluZGV4KSB7
CiAgICAgICAgICAgICAgICAgZml4SW5zdCgpOwpAQCAtMzQxLDYgKzM1NCwxMSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICYmIGNvbnN0YW50ID09IG90aGVyLmNvbnN0YW50OwogICAgICAg
ICB9CiAKKyAgICAgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgUmVnQ29uc3QmIG90aGVyKSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gcmVnIDwgb3RoZXIucmVnIHx8IChyZWcg
PT0gb3RoZXIucmVnICYmIGNvbnN0YW50IDwgb3RoZXIuY29uc3RhbnQpOworICAgICAgICB9CisK
ICAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIHsKICAg
ICAgICAgICAgIG91dC5wcmludChyZWcsICItPiIsIGNvbnN0YW50KTsKQEAgLTM4MCw2ICszOTgs
MTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAmJiBtb2RlID09IG90aGVyLm1vZGU7CiAg
ICAgICAgIH0KIAorICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBSZWdTbG90JiBvdGhlcikg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgLy8gV2UgaWdub3JlIGBtb2RlYCBvbiBwdXJw
b3NlLCBzZWUgbWVyZ2UoKSBmb3IgaG93IHdlIGRlYWwgd2l0aCBpdC4KKyAgICAgICAgICAgIHJl
dHVybiBzbG90IDwgb3RoZXIuc2xvdCB8fCAoc2xvdCA9PSBvdGhlci5zbG90ICYmIHJlZyA8IG90
aGVyLnJlZyk7CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgb3V0LnByaW50KHBvaW50ZXJEdW1wKHNs
b3QpLCAiLT4iLCByZWcpOwpAQCAtNDIzLDYgKzQ0NywxMSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICYmIGNvbnN0YW50ID09IG90aGVyLmNvbnN0YW50OwogICAgICAgICB9CiAKKyAgICAg
ICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgU2xvdENvbnN0JiBvdGhlcikgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIHNsb3QgPCBvdGhlci5zbG90IHx8IChzbG90ID09IG90aGVy
LnNsb3QgJiYgY29uc3RhbnQgPCBvdGhlci5jb25zdGFudCk7CisgICAgICAgIH0KKwogICAgICAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAgewogICAgICAgICAg
ICAgb3V0LnByaW50KHBvaW50ZXJEdW1wKHNsb3QpLCAiLT4iLCBjb25zdGFudCk7CkBAIC00MzUs
MTUgKzQ2NCwyNCBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBTdGF0ZSB7CiAgICAgICAgIHZvaWQg
YWRkQWxpYXMoY29uc3QgUmVnQ29uc3QmIG5ld0FsaWFzKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gcmVnQ29uc3QuYXBwZW5kKG5ld0FsaWFzKTsKKyAgICAgICAgICAgIHJlZ0NvbnN0
LmFwcGVuZChuZXdBbGlhcyk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgICAgIG1faXNT
b3J0ZWQgPSBmYWxzZTsKKyNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHZvaWQgYWRkQWxpYXMo
Y29uc3QgUmVnU2xvdCYgbmV3QWxpYXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBy
ZWdTbG90LmFwcGVuZChuZXdBbGlhcyk7CisgICAgICAgICAgICByZWdTbG90LmFwcGVuZChuZXdB
bGlhcyk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgICAgIG1faXNTb3J0ZWQgPSBmYWxz
ZTsKKyNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHZvaWQgYWRkQWxpYXMoY29uc3QgU2xvdENv
bnN0JiBuZXdBbGlhcykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHNsb3RDb25zdC5h
cHBlbmQobmV3QWxpYXMpOworICAgICAgICAgICAgc2xvdENvbnN0LmFwcGVuZChuZXdBbGlhcyk7
CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgICAgIG1faXNTb3J0ZWQgPSBmYWxzZTsKKyNl
bmRpZgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IFJl
Z0NvbnN0JiBhbGlhcykKQEAgLTU0NCw0MSArNTgyLDYxIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAotICAgICAgICBib29sIG1lcmdlKGNvbnN0IFN0YXRlJiBvdGhlcikK
KyAgICAgICAgdm9pZCBzb3J0KCkKICAgICAgICAgewotICAgICAgICAgICAgYm9vbCBjaGFuZ2Vk
ID0gZmFsc2U7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gISFyZWdDb25z
dC5yZW1vdmVBbGxNYXRjaGluZygKLSAgICAgICAgICAgICAgICBbJl0gKFJlZ0NvbnN0JiBhbGlh
cykgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlZ0NvbnN0KiBvdGhlckFs
aWFzID0gb3RoZXIuZ2V0UmVnQ29uc3QoYWxpYXMucmVnKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCFvdGhlckFsaWFzKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChhbGlhcy5jb25zdGFudCAhPSBvdGhlckFsaWFzLT5jb25z
dGFudCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAg
IGNoYW5nZWQgfD0gISFzbG90Q29uc3QucmVtb3ZlQWxsTWF0Y2hpbmcoCi0gICAgICAgICAgICAg
ICAgWyZdIChTbG90Q29uc3QmIGFsaWFzKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAg
Y29uc3QgU2xvdENvbnN0KiBvdGhlckFsaWFzID0gb3RoZXIuZ2V0U2xvdENvbnN0KGFsaWFzLnNs
b3QpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIW90aGVyQWxpYXMpCi0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFsaWFzLmNv
bnN0YW50ICE9IG90aGVyQWxpYXMtPmNvbnN0YW50KQotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIHN0ZDo6c29ydChyZWdDb25zdC5iZWdpbigpLCByZWdD
b25zdC5lbmQoKSwgW10gKGNvbnN0IFJlZ0NvbnN0JiBhLCBjb25zdCBSZWdDb25zdCYgYikgewor
ICAgICAgICAgICAgICAgIHJldHVybiBhIDwgYjsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgc3RkOjpzb3J0KHNsb3RDb25zdC5iZWdpbigpLCBzbG90Q29uc3QuZW5kKCksIFtdIChjb25z
dCBTbG90Q29uc3QmIGEsIGNvbnN0IFNsb3RDb25zdCYgYikgeworICAgICAgICAgICAgICAgIHJl
dHVybiBhIDwgYjsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgc3RkOjpzb3J0KHJlZ1Ns
b3QuYmVnaW4oKSwgcmVnU2xvdC5lbmQoKSwgW10gKGNvbnN0IFJlZ1Nsb3QmIGEsIGNvbnN0IFJl
Z1Nsb3QmIGIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYSA8IGI7CisgICAgICAgICAgICB9
KTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICAgICAgbV9pc1NvcnRlZCA9IHRydWU7Cisj
ZW5kaWYKKyAgICAgICAgfQogCi0gICAgICAgICAgICBjaGFuZ2VkIHw9ICEhcmVnU2xvdC5yZW1v
dmVBbGxNYXRjaGluZygKLSAgICAgICAgICAgICAgICBbJl0gKFJlZ1Nsb3QmIGFsaWFzKSAtPiBi
b29sIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVnU2xvdCogb3RoZXJBbGlhcyA9IG90
aGVyLmdldFJlZ1Nsb3QoYWxpYXMucmVnLCBhbGlhcy5zbG90KTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCFvdGhlckFsaWFzKQorICAgICAgICAvLyBUYWtlcyB0d28gc29ydGVkIHZlY3RvcnMs
IGZvciBlYWNoIGVsZW1lbnQgaW4gdGhlIGZpcnN0LCBpdCBsb29rcyBmb3IgdGhlIGZpcnN0IGVs
ZW1lbnQgaW4gdGhlIHNlY29uZCB3aGljaCBpcyBub3Qgc21hbGxlci4KKyAgICAgICAgLy8gSWYg
dGhpcyBlbGVtZW50IGNvbXBhcmVzIGVxdWFsLCB0aGVuIGtlZXAgaXQgYW5kIGNhbGwgZigpIG9u
IGJvdGguCisgICAgICAgIC8vIE90aGVyd2lzZSByZW1vdmUgdGhlIGVsZW1lbnQgZnJvbSB0aGUg
Zmlyc3QgdmVjdG9yLgorICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgYW55IGVsZW1lbnQgaGFz
IGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRnVu
Yz4KKyAgICAgICAgc3RhdGljIGJvb2wgZmlsdGVyVmVjdG9yQWdhaW5zdChWZWN0b3I8VD4mIG93
biwgY29uc3QgVmVjdG9yPFQ+JiBvdGhlciwgRnVuYyBmKQorICAgICAgICB7CisgICAgICAgICAg
ICBjb25zdCBUKiBpdCA9IG90aGVyLmJlZ2luKCk7CisgICAgICAgICAgICBjb25zdCBUKiBlbmQg
PSBvdGhlci5lbmQoKTsKKyAgICAgICAgICAgIHJldHVybiAhIW93bi5yZW1vdmVBbGxNYXRjaGlu
ZygKKyAgICAgICAgICAgICAgICBbJl0gKFQmIGFsaWFzKSB7CisgICAgICAgICAgICAgICAgICAg
IGl0ID0gc3RkOjpmaW5kX2lmX25vdChpdCwgZW5kLCBbJl0gKGNvbnN0IFQmIG90aGVyQWxpYXMp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvdGhlckFsaWFzIDwgYWxpYXM7Cisg
ICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICBpZiAoaXQgPT0gZW5k
KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChhbGlhcy5tb2RlICE9IFJlZ1Nsb3Q6Ok1hdGNoMzIgJiYgYWxpYXMubW9kZSAhPSBv
dGhlckFsaWFzLT5tb2RlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbGlhcy5tb2RlID0g
UmVnU2xvdDo6TWF0Y2gzMjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICBpZiAoYWxpYXMgPT0gKml0KSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBmKGFsaWFzLCAqaXQpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KGFsaWFzIDwgKml0KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgbWVyZ2UoY29uc3QgU3RhdGUmIG90
aGVyKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV9pc1NvcnRlZCk7CisgICAgICAg
ICAgICBBU1NFUlQob3RoZXIubV9pc1NvcnRlZCk7CisgICAgICAgICAgICBib29sIGNoYW5nZWQg
PSBmYWxzZTsKKworICAgICAgICAgICAgY2hhbmdlZCB8PSBmaWx0ZXJWZWN0b3JBZ2FpbnN0KHJl
Z0NvbnN0LCBvdGhlci5yZWdDb25zdCwgW10oUmVnQ29uc3QmLCBjb25zdCBSZWdDb25zdCYpIHsg
fSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IGZpbHRlclZlY3RvckFnYWluc3Qoc2xvdENvbnN0
LCBvdGhlci5zbG90Q29uc3QsIFtdKFNsb3RDb25zdCYsIGNvbnN0IFNsb3RDb25zdCYpIHsgfSk7
CisgICAgICAgICAgICBjaGFuZ2VkIHw9IGZpbHRlclZlY3RvckFnYWluc3QocmVnU2xvdCwgb3Ro
ZXIucmVnU2xvdCwgWyZdKFJlZ1Nsb3QmIGFsaWFzLCBjb25zdCBSZWdTbG90JiBvdGhlckFsaWFz
KSB7CisgICAgICAgICAgICAgICAgaWYgKGFsaWFzLm1vZGUgIT0gUmVnU2xvdDo6TWF0Y2gzMiAm
JiBhbGlhcy5tb2RlICE9IG90aGVyQWxpYXMubW9kZSkgeworICAgICAgICAgICAgICAgICAgICBh
bGlhcy5tb2RlID0gUmVnU2xvdDo6TWF0Y2gzMjsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdl
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CiAKICAgICAgICAg
ICAgIHJldHVybiBjaGFuZ2VkOwogICAgICAgICB9CkBAIC01ODcsMTggKzY0NSwyMiBAQCBwcml2
YXRlOgogICAgICAgICB7CiAgICAgICAgICAgICBvdXQucHJpbnQoCiAgICAgICAgICAgICAgICAg
IntyZWdDb25zdCA9IFsiLCBsaXN0RHVtcChyZWdDb25zdCksICJdLCBzbG90Q29uc3QgPSBbIiwg
bGlzdER1bXAoc2xvdENvbnN0KSwKLSAgICAgICAgICAgICAgICAiXSwgcmVnU2xvdCA9IFsiLCBs
aXN0RHVtcChyZWdTbG90KSwgIl0sIHdhc1Zpc2l0ZWQgPSAiLCB3YXNWaXNpdGVkLCAifSIpOwor
ICAgICAgICAgICAgICAgICJdLCByZWdTbG90ID0gWyIsIGxpc3REdW1wKHJlZ1Nsb3QpLCAiXX0i
KTsKICAgICAgICAgfQogCiAgICAgICAgIFZlY3RvcjxSZWdDb25zdD4gcmVnQ29uc3Q7CiAgICAg
ICAgIFZlY3RvcjxTbG90Q29uc3Q+IHNsb3RDb25zdDsKICAgICAgICAgVmVjdG9yPFJlZ1Nsb3Q+
IHJlZ1Nsb3Q7Ci0gICAgICAgIGJvb2wgd2FzVmlzaXRlZCB7IGZhbHNlIH07CisjaWYgQVNTRVJU
X0VOQUJMRUQKKyAgICAgICAgYm9vbCBtX2lzU29ydGVkIHsgdHJ1ZSB9OworI2VuZGlmCiAgICAg
fTsKIAogICAgIENvZGUmIG1fY29kZTsKICAgICBJbmRleE1hcDxCYXNpY0Jsb2NrKiwgU3RhdGU+
IG1fYXRIZWFkOwogICAgIFN0YXRlIG1fc3RhdGU7CisgICAgQml0VmVjdG9yIG1fbm90Qm90dG9t
OworICAgIEJpdFZlY3RvciBtX3Nob3VsZFZpc2l0OwogICAgIEJhc2ljQmxvY2sqIG1fYmxvY2sg
eyBudWxscHRyIH07CiAgICAgdW5zaWduZWQgbV9pbnN0SW5kZXggeyAwIH07CiB9Owo=
</data>
<flag name="commit-queue"
          id="456087"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434786</attachid>
            <date>2021-08-02 12:48:46 -0700</date>
            <delta_ts>2021-10-22 14:27:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch228052</filename>
            <type>text/plain</type>
            <size>11131</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDQ5ZjA1MDAzNTNhZS4uM2YzZDE2OWEyODRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wNy0xNyAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIEFpckZpeE9idmlv
dXNTcGlsbHMgc2hvdWxkIGJlIG9wdGltaXplZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MDUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgd2VyZSB0d28gcHJvYmxlbXMgd2l0aCBBaXJGaXhP
YnZpb3VzU3BpbGxzOgorICAgICAgICAtIG1lcmdlKCkgaGFkIGEgcXVhZHJhdGljIGJsb3ctdXAs
IGFzIGZvciBlYWNoIGVsZW1lbnQgaW4gYSB2ZWN0b3IsIGl0IHdhcyBzZWFyY2hpbmcgaXQgaW4g
YSBkaWZmZXJlbnQgdmVjdG9yLgorICAgICAgICAtIGl0IHdvdWxkIHZpc2l0IGJsb2NrcyBldmVu
IHdoZW4gdGhlaXIgc3RhdGUgYXQgaGVhZCBoYWQgbm90IGNoYW5nZWQuCisKKyAgICAgICAgSSBm
aXhlZCB0aGUgZmlyc3QgcHJvYmxlbSBieSBtYWtpbmcgc3VyZSB0aGF0IHRoZSB2ZWN0b3JzIGFy
ZSBzb3J0ZWQgYmVmb3JlIGNhbGxpbmcgbWVyZ2UsIGFuZCBtYWtpbmcgdXNlIG9mIHRoYXQgaW52
YXJpYW50IGluIHRoZSBzZWFyY2ggb2YgdGhlIHZlY3RvcnMKKyAgICAgICAgKHNlZSBmaWx0ZXJW
ZWN0b3JBZ2FpbnN0KQorICAgICAgICBUaGlzIHJlZHVjZWQgdGhlIHRvdGFsIHRpbWUgc3BlbnQg
aW4gdGhhdCBwaGFzZSBmcm9tIDM5MG1zIHRvIDIzMG1zLCBhbmQgdGhlIHdvcnN0IGNhc2UgdGlt
ZSBzcGVudCBpbiB0aGF0IHBoYXNlIGZvciBvbmUgZnVuY3Rpb24gZnJvbSAxMDBtcyB0byAzMG1z
IChhbGwgb2YgdGhlIHJlc3VsdHMgaW4gdGhpcyBDaGFuZ2Vsb2cgYXJlIGZvciBKZXRTdHJlYW0y
IG9uIGEgTTEgTUJQKS4KKworICAgICAgICBJIGZpeGVkIHRoZSBzZWNvbmQgcHJvYmxlbSBldmVu
IG1vcmUgZWFzaWx5IGJ5IGFkZGluZyBhIG1fc2hvdWxkVmlzaXQgQml0VmVjdG9yLiBJIGFsc28g
bW92ZWQgdGhlIG1fd2FzVmlzaXRlZCBib29sZWFuIHRoYXQgd2FzIGluIFN0YXRlIHRvIGEgbV9u
b3RCb3R0b20gQml0VmVjdG9yIGZvciBzaW1wbGljaXR5IGFuZCBzeW1tZXRyeS4KKyAgICAgICAg
VGhhdCBjaGFuZ2UgZnVydGhlciByZWR1Y2VkIHRoZSB0b3RhbC9tYXggdGltZSBmcm9tIDIzMG1z
LzMwbXMgdG8gMTQwbXMvMTZtcy4KKworICAgICAgICAqIGIzL2Fpci9BaXJGaXhPYnZpb3VzU3Bp
bGxzLmNwcDoKKwogMjAyMS0wNy0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgogCiAgICAgICAgIFtKU0NdIFlhcnIgc2hvdWxkIHBlcmZvcm0gQm95ZXJNb29yZSBzZWFyY2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1Nw
aWxscy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGls
bHMuY3BwCmluZGV4IDYyNTYxM2UzNTkwNC4uNzBlZTE2OTZiNzViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAKQEAgLTQ4
LDYgKzQ4LDggQEAgcHVibGljOgogICAgIEZpeE9idmlvdXNTcGlsbHMoQ29kZSYgY29kZSkKICAg
ICAgICAgOiBtX2NvZGUoY29kZSkKICAgICAgICAgLCBtX2F0SGVhZChjb2RlLnNpemUoKSkKKyAg
ICAgICAgLCBtX25vdEJvdHRvbShjb2RlLnNpemUoKSkKKyAgICAgICAgLCBtX3Nob3VsZFZpc2l0
KGNvZGUuc2l6ZSgpKQogICAgIHsKICAgICB9CiAKQEAgLTYzLDE3ICs2NSwxOSBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZUFsaWFzZXMoKQogICAgIHsKLSAgICAgICAgbV9h
dEhlYWRbbV9jb2RlWzBdXS53YXNWaXNpdGVkID0gdHJ1ZTsKKyAgICAgICAgbV9ub3RCb3R0b20u
cXVpY2tTZXQoMCk7CisgICAgICAgIG1fc2hvdWxkVmlzaXQucXVpY2tTZXQoMCk7CiAgICAgICAg
IAogICAgICAgICBib29sIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICB3aGlsZSAoY2hhbmdlZCkg
ewogICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9jb2RlKSB7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGJsb2NrSW5kZXggOiBtX3Nob3VsZFZpc2l0KSB7CisgICAgICAgICAgICAgICAgbV9z
aG91bGRWaXNpdC5xdWlja0NsZWFyKGJsb2NrSW5kZXgpOworICAgICAgICAgICAgICAgIEJhc2lj
QmxvY2sqIGJsb2NrID0gbV9jb2RlW2Jsb2NrSW5kZXhdOworICAgICAgICAgICAgICAgIEFTU0VS
VChtX25vdEJvdHRvbS5xdWlja0dldChibG9ja0luZGV4KSk7CiAgICAgICAgICAgICAgICAgbV9i
bG9jayA9IGJsb2NrOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBtX2F0SGVhZFtibG9ja107
Ci0gICAgICAgICAgICAgICAgaWYgKCFtX3N0YXRlLndhc1Zpc2l0ZWQpCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAgICAgaWYgKEFpckZpeE9idmlvdXNTcGls
bHNJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRXhlY3V0
aW5nIGJsb2NrICIsICptX2Jsb2NrLCAiOiAiLCBtX3N0YXRlLCAiXG4iKTsKQEAgLTgyLDEyICs4
NiwyMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBleGVjdXRlSW5zdCgpOwogCiAg
ICAgICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vz
c29yQmxvY2tzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc3VjY2Vzc29ySW5k
ZXggPSBzdWNjZXNzb3ItPmluZGV4KCk7CiAgICAgICAgICAgICAgICAgICAgIFN0YXRlJiB0b1N0
YXRlID0gbV9hdEhlYWRbc3VjY2Vzc29yXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRvU3Rh
dGUud2FzVmlzaXRlZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gdG9TdGF0
ZS5tZXJnZShtX3N0YXRlKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIC8vIEJlZm9yZSB3ZSBjYWxsIG1lcmdlIHdlIG11c3QgbWFrZSBzdXJlIHRoYXQg
dGhlIHR3byBzdGF0ZXMgYXJlIHNvcnRlZC4KKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5z
b3J0KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX25vdEJvdHRvbS5xdWlja0dldChzdWNj
ZXNzb3JJbmRleCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2hhbmdlZEF0U3Vj
Y2Vzc29ySGVhZCA9IHRvU3RhdGUubWVyZ2UobV9zdGF0ZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoY2hhbmdlZEF0U3VjY2Vzc29ySGVhZCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2hv
dWxkVmlzaXQucXVpY2tTZXQoc3VjY2Vzc29ySW5kZXgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBUaGUgc3RhdGUgYXQgaGVhZCBv
ZiBzdWNjZXNzb3IgaXMgYm90dG9tCiAgICAgICAgICAgICAgICAgICAgICAgICB0b1N0YXRlID0g
bV9zdGF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAg
ICAgICAgICAgICAgICAgICAgbV9ub3RCb3R0b20ucXVpY2tTZXQoc3VjY2Vzc29ySW5kZXgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9zaG91bGRWaXNpdC5xdWlja1NldChzdWNjZXNzb3JJ
bmRleCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CkBAIC05OSw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKEJhc2ljQmxv
Y2sqIGJsb2NrIDogbV9jb2RlKSB7CiAgICAgICAgICAgICBtX2Jsb2NrID0gYmxvY2s7CiAgICAg
ICAgICAgICBtX3N0YXRlID0gbV9hdEhlYWRbYmxvY2tdOwotICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQobV9zdGF0ZS53YXNWaXNpdGVkKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1f
bm90Qm90dG9tLnF1aWNrR2V0KGJsb2NrLT5pbmRleCgpKSk7CiAKICAgICAgICAgICAgIGZvciAo
bV9pbnN0SW5kZXggPSAwOyBtX2luc3RJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbV9pbnN0SW5k
ZXgpIHsKICAgICAgICAgICAgICAgICBmaXhJbnN0KCk7CkBAIC0zNDEsNiArMzU0LDExIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgJiYgY29uc3RhbnQgPT0gb3RoZXIuY29uc3RhbnQ7CiAg
ICAgICAgIH0KIAorICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBSZWdDb25zdCYgb3RoZXIp
IGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiByZWcgPCBvdGhlci5yZWcgfHwg
KHJlZyA9PSBvdGhlci5yZWcgJiYgY29uc3RhbnQgPCBvdGhlci5jb25zdGFudCk7CisgICAgICAg
IH0KKwogICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICAgICAg
ewogICAgICAgICAgICAgb3V0LnByaW50KHJlZywgIi0+IiwgY29uc3RhbnQpOwpAQCAtMzgwLDYg
KzM5OCwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICYmIG1vZGUgPT0gb3RoZXIubW9k
ZTsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFJlZ1Nsb3QmIG90
aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICAvLyBXZSBpZ25vcmUgYG1vZGVgIG9u
IHB1cnBvc2UsIHNlZSBtZXJnZSgpIGZvciBob3cgd2UgZGVhbCB3aXRoIGl0LgorICAgICAgICAg
ICAgcmV0dXJuIHNsb3QgPCBvdGhlci5zbG90IHx8IChzbG90ID09IG90aGVyLnNsb3QgJiYgcmVn
IDwgb3RoZXIucmVnKTsKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBvdXQucHJpbnQocG9pbnRlckR1
bXAoc2xvdCksICItPiIsIHJlZyk7CkBAIC00MjMsNiArNDQ3LDExIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgJiYgY29uc3RhbnQgPT0gb3RoZXIuY29uc3RhbnQ7CiAgICAgICAgIH0KIAor
ICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBTbG90Q29uc3QmIG90aGVyKSBjb25zdAorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gc2xvdCA8IG90aGVyLnNsb3QgfHwgKHNsb3QgPT0g
b3RoZXIuc2xvdCAmJiBjb25zdGFudCA8IG90aGVyLmNvbnN0YW50KTsKKyAgICAgICAgfQorCiAg
ICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAgICB7CiAgICAg
ICAgICAgICBvdXQucHJpbnQocG9pbnRlckR1bXAoc2xvdCksICItPiIsIGNvbnN0YW50KTsKQEAg
LTQzNSwxNSArNDY0LDI0IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IFN0YXRlIHsKICAgICAgICAg
dm9pZCBhZGRBbGlhcyhjb25zdCBSZWdDb25zdCYgbmV3QWxpYXMpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiByZWdDb25zdC5hcHBlbmQobmV3QWxpYXMpOworICAgICAgICAgICAgcmVn
Q29uc3QuYXBwZW5kKG5ld0FsaWFzKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICAgICAg
bV9pc1NvcnRlZCA9IGZhbHNlOworI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgdm9pZCBhZGRB
bGlhcyhjb25zdCBSZWdTbG90JiBuZXdBbGlhcykKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIHJlZ1Nsb3QuYXBwZW5kKG5ld0FsaWFzKTsKKyAgICAgICAgICAgIHJlZ1Nsb3QuYXBwZW5k
KG5ld0FsaWFzKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICAgICAgbV9pc1NvcnRlZCA9
IGZhbHNlOworI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgdm9pZCBhZGRBbGlhcyhjb25zdCBT
bG90Q29uc3QmIG5ld0FsaWFzKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc2xvdENv
bnN0LmFwcGVuZChuZXdBbGlhcyk7CisgICAgICAgICAgICBzbG90Q29uc3QuYXBwZW5kKG5ld0Fs
aWFzKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICAgICAgbV9pc1NvcnRlZCA9IGZhbHNl
OworI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgY29udGFpbnMoY29u
c3QgUmVnQ29uc3QmIGFsaWFzKQpAQCAtNTQ0LDQxICs1ODIsNTkgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgbWVyZ2UoY29uc3QgU3RhdGUmIG90
aGVyKQorICAgICAgICB2b2lkIHNvcnQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBib29sIGNo
YW5nZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2hhbmdlZCB8PSAhIXJl
Z0NvbnN0LnJlbW92ZUFsbE1hdGNoaW5nKAotICAgICAgICAgICAgICAgIFsmXSAoUmVnQ29uc3Qm
IGFsaWFzKSAtPiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVnQ29uc3QqIG90
aGVyQWxpYXMgPSBvdGhlci5nZXRSZWdDb25zdChhbGlhcy5yZWcpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoIW90aGVyQWxpYXMpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFsaWFzLmNvbnN0YW50ICE9IG90aGVyQWxpYXMt
PmNvbnN0YW50KQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIHN0ZDo6c29ydChyZWdDb25zdC5iZWdpbigpLCByZWdDb25zdC5lbmQoKSwgW10gKGNvbnN0
IFJlZ0NvbnN0JiBhLCBjb25zdCBSZWdDb25zdCYgYikgeworICAgICAgICAgICAgICAgIHJldHVy
biBhIDwgYjsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgc3RkOjpzb3J0KHNsb3RDb25z
dC5iZWdpbigpLCBzbG90Q29uc3QuZW5kKCksIFtdIChjb25zdCBTbG90Q29uc3QmIGEsIGNvbnN0
IFNsb3RDb25zdCYgYikgeworICAgICAgICAgICAgICAgIHJldHVybiBhIDwgYjsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgc3RkOjpzb3J0KHJlZ1Nsb3QuYmVnaW4oKSwgcmVnU2xvdC5l
bmQoKSwgW10gKGNvbnN0IFJlZ1Nsb3QmIGEsIGNvbnN0IFJlZ1Nsb3QmIGIpIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gYSA8IGI7CisgICAgICAgICAgICB9KTsKKyNpZiBBU1NFUlRfRU5BQkxF
RAorICAgICAgICAgICAgbV9pc1NvcnRlZCA9IHRydWU7CisjZW5kaWYKKyAgICAgICAgfQogCi0g
ICAgICAgICAgICBjaGFuZ2VkIHw9ICEhc2xvdENvbnN0LnJlbW92ZUFsbE1hdGNoaW5nKAotICAg
ICAgICAgICAgICAgIFsmXSAoU2xvdENvbnN0JiBhbGlhcykgLT4gYm9vbCB7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFNsb3RDb25zdCogb3RoZXJBbGlhcyA9IG90aGVyLmdldFNsb3RDb25z
dChhbGlhcy5zbG90KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFvdGhlckFsaWFzKQotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChhbGlhcy5jb25zdGFudCAhPSBvdGhlckFsaWFzLT5jb25zdGFudCkKKyAgICAgICAgLy8gVGFr
ZXMgdHdvIHNvcnRlZCB2ZWN0b3JzLCBmb3IgZWFjaCBlbGVtZW50IGluIHRoZSBmaXJzdCwgaXQg
bG9va3MgZm9yIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBzZWNvbmQgd2hpY2ggaXMgbm90IHNt
YWxsZXIuCisgICAgICAgIC8vIElmIHN1Y2ggYW4gZWxlbWVudCBleGlzdCwgY2FsbCBmIG9uIGJv
dGggdGhlIGVsZW1lbnQgZnJvbSB0aGUgZmlyc3QgdmVjdG9yIGFuZCB0aGlzIGVsZW1lbnQuCisg
ICAgICAgIC8vIFJlbW92ZSB0aGUgZWxlbWVudCBmcm9tIHRoZSBmaXJzdCB2ZWN0b3IgdW5sZXNz
IGYgcmV0dXJuZWQgdHJ1ZSAoc28gZiBzYXlzIHdoZXRoZXIgdG8ga2VlcCB0aGUgZWxlbWVudCkK
KyAgICAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGFueSBlbGVtZW50IGhhcyBiZWVuIHJlbW92ZWQu
CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEZ1bmM+CisgICAgICAgIHN0
YXRpYyBib29sIGZpbHRlclZlY3RvckFnYWluc3QoVmVjdG9yPFQ+JiBvd24sIGNvbnN0IFZlY3Rv
cjxUPiYgb3RoZXIsIEZ1bmMgZikKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgVCogaXQg
PSBvdGhlci5iZWdpbigpOworICAgICAgICAgICAgY29uc3QgVCogZW5kID0gb3RoZXIuZW5kKCk7
CisgICAgICAgICAgICByZXR1cm4gISFvd24ucmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgICAg
ICAgICAgWyZdIChUJiBhbGlhcykgeworICAgICAgICAgICAgICAgICAgICBpdCA9IHN0ZDo6Zmlu
ZF9pZl9ub3QoaXQsIGVuZCwgWyZdIChjb25zdCBUJiBvdGhlckFsaWFzKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gb3RoZXJBbGlhcyA8IGFsaWFzOworICAgICAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ID09IGVuZCkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAhZihh
bGlhcywgKml0KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CiAKLSAgICAgICAgICAgIGNo
YW5nZWQgfD0gISFyZWdTbG90LnJlbW92ZUFsbE1hdGNoaW5nKAotICAgICAgICAgICAgICAgIFsm
XSAoUmVnU2xvdCYgYWxpYXMpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAgICBjb25zdCBS
ZWdTbG90KiBvdGhlckFsaWFzID0gb3RoZXIuZ2V0UmVnU2xvdChhbGlhcy5yZWcsIGFsaWFzLnNs
b3QpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIW90aGVyQWxpYXMpCi0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFsaWFzLm1v
ZGUgIT0gUmVnU2xvdDo6TWF0Y2gzMiAmJiBhbGlhcy5tb2RlICE9IG90aGVyQWxpYXMtPm1vZGUp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsaWFzLm1vZGUgPSBSZWdTbG90OjpNYXRjaDMy
OwotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgYm9vbCBtZXJnZShjb25zdCBTdGF0ZSYgb3RoZXIpCisgICAgICAg
IHsKKyAgICAgICAgICAgIEFTU0VSVChtX2lzU29ydGVkKTsKKyAgICAgICAgICAgIEFTU0VSVChv
dGhlci5tX2lzU29ydGVkKTsKKyAgICAgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOworCisg
ICAgICAgICAgICBjaGFuZ2VkIHw9IGZpbHRlclZlY3RvckFnYWluc3QocmVnQ29uc3QsIG90aGVy
LnJlZ0NvbnN0LCBbXShSZWdDb25zdCYgYSwgY29uc3QgUmVnQ29uc3QmIGIpIHsgcmV0dXJuIGEg
PT0gYjsgfSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IGZpbHRlclZlY3RvckFnYWluc3Qoc2xv
dENvbnN0LCBvdGhlci5zbG90Q29uc3QsIFtdKFNsb3RDb25zdCYgYSwgY29uc3QgU2xvdENvbnN0
JiBiKSB7IHJldHVybiBhID09IGI7IH0pOworICAgICAgICAgICAgY2hhbmdlZCB8PSBmaWx0ZXJW
ZWN0b3JBZ2FpbnN0KHJlZ1Nsb3QsIG90aGVyLnJlZ1Nsb3QsIFsmXShSZWdTbG90JiBhbGlhcywg
Y29uc3QgUmVnU2xvdCYgb3RoZXJBbGlhcykgeworICAgICAgICAgICAgICAgIGlmIChhbGlhcy5y
ZWcgIT0gb3RoZXJBbGlhcy5yZWcgfHwgYWxpYXMuc2xvdCAhPSBvdGhlckFsaWFzLnNsb3QpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgICAgICBpZiAoYWxpYXMubW9kZSAhPSBSZWdTbG90OjpNYXRjaDMyICYmIGFsaWFz
Lm1vZGUgIT0gb3RoZXJBbGlhcy5tb2RlKSB7CisgICAgICAgICAgICAgICAgICAgIGFsaWFzLm1v
ZGUgPSBSZWdTbG90OjpNYXRjaDMyOworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICB9KTsKIAogICAgICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CiAgICAgICAgIH0KQEAg
LTU4NywxOCArNjQzLDIyIEBAIHByaXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgICAgIG91dC5w
cmludCgKICAgICAgICAgICAgICAgICAie3JlZ0NvbnN0ID0gWyIsIGxpc3REdW1wKHJlZ0NvbnN0
KSwgIl0sIHNsb3RDb25zdCA9IFsiLCBsaXN0RHVtcChzbG90Q29uc3QpLAotICAgICAgICAgICAg
ICAgICJdLCByZWdTbG90ID0gWyIsIGxpc3REdW1wKHJlZ1Nsb3QpLCAiXSwgd2FzVmlzaXRlZCA9
ICIsIHdhc1Zpc2l0ZWQsICJ9Iik7CisgICAgICAgICAgICAgICAgIl0sIHJlZ1Nsb3QgPSBbIiwg
bGlzdER1bXAocmVnU2xvdCksICJdfSIpOwogICAgICAgICB9CiAKICAgICAgICAgVmVjdG9yPFJl
Z0NvbnN0PiByZWdDb25zdDsKICAgICAgICAgVmVjdG9yPFNsb3RDb25zdD4gc2xvdENvbnN0Owog
ICAgICAgICBWZWN0b3I8UmVnU2xvdD4gcmVnU2xvdDsKLSAgICAgICAgYm9vbCB3YXNWaXNpdGVk
IHsgZmFsc2UgfTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBib29sIG1faXNTb3J0ZWQg
eyB0cnVlIH07CisjZW5kaWYKICAgICB9OwogCiAgICAgQ29kZSYgbV9jb2RlOwogICAgIEluZGV4
TWFwPEJhc2ljQmxvY2sqLCBTdGF0ZT4gbV9hdEhlYWQ7CiAgICAgU3RhdGUgbV9zdGF0ZTsKKyAg
ICBCaXRWZWN0b3IgbV9ub3RCb3R0b207CisgICAgQml0VmVjdG9yIG1fc2hvdWxkVmlzaXQ7CiAg
ICAgQmFzaWNCbG9jayogbV9ibG9jayB7IG51bGxwdHIgfTsKICAgICB1bnNpZ25lZCBtX2luc3RJ
bmRleCB7IDAgfTsKIH07Cg==
</data>
<flag name="commit-queue"
          id="457362"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442200</attachid>
            <date>2021-10-22 14:27:27 -0700</date>
            <delta_ts>2021-11-18 22:14:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch228052</filename>
            <type>text/plain</type>
            <size>11151</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDlmYjQ5NzBkMGYzZS4uNTg2YTFmODU4Yzg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0xMC0yMiAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIEFpckZpeE9idmlv
dXNTcGlsbHMgc2hvdWxkIGJlIG9wdGltaXplZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MDUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgd2VyZSB0d28gcHJvYmxlbXMgd2l0aCBBaXJGaXhP
YnZpb3VzU3BpbGxzOgorICAgICAgICAtIG1lcmdlKCkgaGFkIGEgcXVhZHJhdGljIGJsb3ctdXAs
IGFzIGZvciBlYWNoIGVsZW1lbnQgaW4gYSB2ZWN0b3IsIGl0IHdhcyBzZWFyY2hpbmcgaXQgaW4g
YSBkaWZmZXJlbnQgdmVjdG9yLgorICAgICAgICAtIGl0IHdvdWxkIHZpc2l0IGJsb2NrcyBldmVu
IHdoZW4gdGhlaXIgc3RhdGUgYXQgaGVhZCBoYWQgbm90IGNoYW5nZWQuCisKKyAgICAgICAgSSBm
aXhlZCB0aGUgZmlyc3QgcHJvYmxlbSBieSBtYWtpbmcgc3VyZSB0aGF0IHRoZSB2ZWN0b3JzIGFy
ZSBzb3J0ZWQgYmVmb3JlIGNhbGxpbmcgbWVyZ2UsIGFuZCBtYWtpbmcgdXNlIG9mIHRoYXQgaW52
YXJpYW50IGluIHRoZSBzZWFyY2ggb2YgdGhlIHZlY3RvcnMKKyAgICAgICAgKHNlZSBmaWx0ZXJW
ZWN0b3JBZ2FpbnN0KQorICAgICAgICBUaGlzIHJlZHVjZWQgdGhlIHRvdGFsIHRpbWUgc3BlbnQg
aW4gdGhhdCBwaGFzZSBmcm9tIDM5MG1zIHRvIDIzMG1zLCBhbmQgdGhlIHdvcnN0IGNhc2UgdGlt
ZSBzcGVudCBpbiB0aGF0IHBoYXNlIGZvciBvbmUgZnVuY3Rpb24gZnJvbSAxMDBtcyB0byAzMG1z
IChhbGwgb2YgdGhlIHJlc3VsdHMgaW4gdGhpcyBDaGFuZ2Vsb2cgYXJlIGZvciBKZXRTdHJlYW0y
IG9uIGEgTTEgTUJQKS4KKworICAgICAgICBJIGZpeGVkIHRoZSBzZWNvbmQgcHJvYmxlbSBldmVu
IG1vcmUgZWFzaWx5IGJ5IGFkZGluZyBhIG1fc2hvdWxkVmlzaXQgQml0VmVjdG9yLiBJIGFsc28g
bW92ZWQgdGhlIG1fd2FzVmlzaXRlZCBib29sZWFuIHRoYXQgd2FzIGluIFN0YXRlIHRvIGEgbV9u
b3RCb3R0b20gQml0VmVjdG9yIGZvciBzaW1wbGljaXR5IGFuZCBzeW1tZXRyeS4KKyAgICAgICAg
VGhhdCBjaGFuZ2UgZnVydGhlciByZWR1Y2VkIHRoZSB0b3RhbC9tYXggdGltZSBmcm9tIDIzMG1z
LzMwbXMgdG8gMTQwbXMvMTZtcy4KKworICAgICAgICAqIGIzL2Fpci9BaXJGaXhPYnZpb3VzU3Bp
bGxzLmNwcDoKKwogMjAyMS0xMC0yMiAgQXN1bXUgVGFraWthd2EgIDxhc3VtdUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIENoYW5nZSBXZWJBc3NlbWJseSBtb2R1bGUgaW1wb3J0IGxpbmtpbmcgdGlt
ZSB0byBldmFsdWF0ZSBzdGVwLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAKaW5kZXggNjI1NjEzZTM1OTA0Li43MGVlMTY5NmI3
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91
c1NwaWxscy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZp
b3VzU3BpbGxzLmNwcApAQCAtNDgsNiArNDgsOCBAQCBwdWJsaWM6CiAgICAgRml4T2J2aW91c1Nw
aWxscyhDb2RlJiBjb2RlKQogICAgICAgICA6IG1fY29kZShjb2RlKQogICAgICAgICAsIG1fYXRI
ZWFkKGNvZGUuc2l6ZSgpKQorICAgICAgICAsIG1fbm90Qm90dG9tKGNvZGUuc2l6ZSgpKQorICAg
ICAgICAsIG1fc2hvdWxkVmlzaXQoY29kZS5zaXplKCkpCiAgICAgewogICAgIH0KIApAQCAtNjMs
MTcgKzY1LDE5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlQWxpYXNlcygp
CiAgICAgewotICAgICAgICBtX2F0SGVhZFttX2NvZGVbMF1dLndhc1Zpc2l0ZWQgPSB0cnVlOwor
ICAgICAgICBtX25vdEJvdHRvbS5xdWlja1NldCgwKTsKKyAgICAgICAgbV9zaG91bGRWaXNpdC5x
dWlja1NldCgwKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgY2hhbmdlZCA9IHRydWU7CiAgICAg
ICAgIHdoaWxlIChjaGFuZ2VkKSB7CiAgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2NvZGUpIHsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgYmxvY2tJbmRleCA6IG1fc2hvdWxkVmlzaXQpIHsK
KyAgICAgICAgICAgICAgICBtX3Nob3VsZFZpc2l0LnF1aWNrQ2xlYXIoYmxvY2tJbmRleCk7Cisg
ICAgICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2NvZGVbYmxvY2tJbmRleF07Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKG1fbm90Qm90dG9tLnF1aWNrR2V0KGJsb2NrSW5kZXgpKTsK
ICAgICAgICAgICAgICAgICBtX2Jsb2NrID0gYmxvY2s7CiAgICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IG1fYXRIZWFkW2Jsb2NrXTsKLSAgICAgICAgICAgICAgICBpZiAoIW1fc3RhdGUud2FzVmlz
aXRlZCkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgICAgICBp
ZiAoQWlyRml4T2J2aW91c1NwaWxsc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJFeGVjdXRpbmcgYmxvY2sgIiwgKm1fYmxvY2ssICI6ICIsIG1fc3RhdGUs
ICJcbiIpOwpAQCAtODIsMTIgKzg2LDIxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAg
IGV4ZWN1dGVJbnN0KCk7CiAKICAgICAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nl
c3NvciA6IGJsb2NrLT5zdWNjZXNzb3JCbG9ja3MoKSkgeworICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBzdWNjZXNzb3JJbmRleCA9IHN1Y2Nlc3Nvci0+aW5kZXgoKTsKICAgICAgICAgICAg
ICAgICAgICAgU3RhdGUmIHRvU3RhdGUgPSBtX2F0SGVhZFtzdWNjZXNzb3JdOwotICAgICAgICAg
ICAgICAgICAgICBpZiAodG9TdGF0ZS53YXNWaXNpdGVkKQotICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhbmdlZCB8PSB0b1N0YXRlLm1lcmdlKG1fc3RhdGUpOwotICAgICAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQmVmb3JlIHdlIGNhbGwgbWVyZ2Ugd2Ug
bXVzdCBtYWtlIHN1cmUgdGhhdCB0aGUgdHdvIHN0YXRlcyBhcmUgc29ydGVkLgorICAgICAgICAg
ICAgICAgICAgICBtX3N0YXRlLnNvcnQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fbm90
Qm90dG9tLnF1aWNrR2V0KHN1Y2Nlc3NvckluZGV4KSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBjaGFuZ2VkQXRTdWNjZXNzb3JIZWFkID0gdG9TdGF0ZS5tZXJnZShtX3N0YXRlKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGFuZ2VkQXRTdWNjZXNzb3JIZWFkKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9zaG91bGRWaXNpdC5xdWlja1NldChzdWNjZXNzb3JJbmRleCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8v
IFRoZSBzdGF0ZSBhdCBoZWFkIG9mIHN1Y2Nlc3NvciBpcyBib3R0b20KICAgICAgICAgICAgICAg
ICAgICAgICAgIHRvU3RhdGUgPSBtX3N0YXRlOwogICAgICAgICAgICAgICAgICAgICAgICAgY2hh
bmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBtX25vdEJvdHRvbS5xdWlja1Nl
dChzdWNjZXNzb3JJbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3Nob3VsZFZpc2l0
LnF1aWNrU2V0KHN1Y2Nlc3NvckluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTk5LDcgKzExMiw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2NvZGUpIHsKICAgICAgICAgICAgIG1f
YmxvY2sgPSBibG9jazsKICAgICAgICAgICAgIG1fc3RhdGUgPSBtX2F0SGVhZFtibG9ja107Ci0g
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3N0YXRlLndhc1Zpc2l0ZWQpOworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobV9ub3RCb3R0b20ucXVpY2tHZXQoYmxvY2stPmluZGV4KCkpKTsK
IAogICAgICAgICAgICAgZm9yIChtX2luc3RJbmRleCA9IDA7IG1faW5zdEluZGV4IDwgYmxvY2st
PnNpemUoKTsgKyttX2luc3RJbmRleCkgewogICAgICAgICAgICAgICAgIGZpeEluc3QoKTsKQEAg
LTM0MSw2ICszNTQsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAmJiBjb25zdGFudCA9
PSBvdGhlci5jb25zdGFudDsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IFJlZ0NvbnN0JiBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IHJlZyA8IG90aGVyLnJlZyB8fCAocmVnID09IG90aGVyLnJlZyAmJiBjb25zdGFudCA8IG90aGVy
LmNvbnN0YW50KTsKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBvdXQucHJpbnQocmVnLCAiLT4iLCBj
b25zdGFudCk7CkBAIC0zODAsNiArMzk4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
JiYgbW9kZSA9PSBvdGhlci5tb2RlOwogICAgICAgICB9CiAKKyAgICAgICAgYm9vbCBvcGVyYXRv
cjwoY29uc3QgUmVnU2xvdCYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIC8v
IFdlIGlnbm9yZSBgbW9kZWAgb24gcHVycG9zZSwgc2VlIG1lcmdlKCkgZm9yIGhvdyB3ZSBkZWFs
IHdpdGggaXQuCisgICAgICAgICAgICByZXR1cm4gc2xvdCA8IG90aGVyLnNsb3QgfHwgKHNsb3Qg
PT0gb3RoZXIuc2xvdCAmJiByZWcgPCBvdGhlci5yZWcpOworICAgICAgICB9CisKICAgICAgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAg
IG91dC5wcmludChwb2ludGVyRHVtcChzbG90KSwgIi0+IiwgcmVnKTsKQEAgLTQyMyw2ICs0NDcs
MTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAmJiBjb25zdGFudCA9PSBvdGhlci5jb25z
dGFudDsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFNsb3RDb25z
dCYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBzbG90IDwgb3Ro
ZXIuc2xvdCB8fCAoc2xvdCA9PSBvdGhlci5zbG90ICYmIGNvbnN0YW50IDwgb3RoZXIuY29uc3Rh
bnQpOworICAgICAgICB9CisKICAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIG91dC5wcmludChwb2ludGVyRHVtcChzbG90KSwg
Ii0+IiwgY29uc3RhbnQpOwpAQCAtNDM1LDE1ICs0NjQsMjQgQEAgcHJpdmF0ZToKICAgICBzdHJ1
Y3QgU3RhdGUgewogICAgICAgICB2b2lkIGFkZEFsaWFzKGNvbnN0IFJlZ0NvbnN0JiBuZXdBbGlh
cykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJlZ0NvbnN0LmFwcGVuZChuZXdBbGlh
cyk7CisgICAgICAgICAgICByZWdDb25zdC5hcHBlbmQobmV3QWxpYXMpOworI2lmIEFTU0VSVF9F
TkFCTEVECisgICAgICAgICAgICBtX2lzU29ydGVkID0gZmFsc2U7CisjZW5kaWYKICAgICAgICAg
fQogICAgICAgICB2b2lkIGFkZEFsaWFzKGNvbnN0IFJlZ1Nsb3QmIG5ld0FsaWFzKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gcmVnU2xvdC5hcHBlbmQobmV3QWxpYXMpOworICAgICAg
ICAgICAgcmVnU2xvdC5hcHBlbmQobmV3QWxpYXMpOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAg
ICAgICAgICBtX2lzU29ydGVkID0gZmFsc2U7CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICB2
b2lkIGFkZEFsaWFzKGNvbnN0IFNsb3RDb25zdCYgbmV3QWxpYXMpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBzbG90Q29uc3QuYXBwZW5kKG5ld0FsaWFzKTsKKyAgICAgICAgICAgIHNs
b3RDb25zdC5hcHBlbmQobmV3QWxpYXMpOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgICAg
ICBtX2lzU29ydGVkID0gZmFsc2U7CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgYm9vbCBjb250YWlucyhjb25zdCBSZWdDb25zdCYgYWxpYXMpCkBAIC01NDQsNDEgKzU4Miw1
OSBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBt
ZXJnZShjb25zdCBTdGF0ZSYgb3RoZXIpCisgICAgICAgIHZvaWQgc29ydCgpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBjaGFuZ2VkIHw9ICEhcmVnQ29uc3QucmVtb3ZlQWxsTWF0Y2hpbmcoCi0gICAgICAgICAg
ICAgICAgWyZdIChSZWdDb25zdCYgYWxpYXMpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAg
ICBjb25zdCBSZWdDb25zdCogb3RoZXJBbGlhcyA9IG90aGVyLmdldFJlZ0NvbnN0KGFsaWFzLnJl
Zyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghb3RoZXJBbGlhcykKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoYWxpYXMuY29u
c3RhbnQgIT0gb3RoZXJBbGlhcy0+Y29uc3RhbnQpCi0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgc3RkOjpzb3J0KHJlZ0NvbnN0LmJlZ2luKCksIHJlZ0Nv
bnN0LmVuZCgpLCBbXSAoY29uc3QgUmVnQ29uc3QmIGEsIGNvbnN0IFJlZ0NvbnN0JiBiKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGEgPCBiOworICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICBzdGQ6OnNvcnQoc2xvdENvbnN0LmJlZ2luKCksIHNsb3RDb25zdC5lbmQoKSwgW10gKGNvbnN0
IFNsb3RDb25zdCYgYSwgY29uc3QgU2xvdENvbnN0JiBiKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGEgPCBiOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBzdGQ6OnNvcnQocmVnU2xv
dC5iZWdpbigpLCByZWdTbG90LmVuZCgpLCBbXSAoY29uc3QgUmVnU2xvdCYgYSwgY29uc3QgUmVn
U2xvdCYgYikgeworICAgICAgICAgICAgICAgIHJldHVybiBhIDwgYjsKKyAgICAgICAgICAgIH0p
OworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgICAgICBtX2lzU29ydGVkID0gdHJ1ZTsKKyNl
bmRpZgorICAgICAgICB9CiAKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gISFzbG90Q29uc3QucmVt
b3ZlQWxsTWF0Y2hpbmcoCi0gICAgICAgICAgICAgICAgWyZdIChTbG90Q29uc3QmIGFsaWFzKSAt
PiBib29sIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgU2xvdENvbnN0KiBvdGhlckFsaWFz
ID0gb3RoZXIuZ2V0U2xvdENvbnN0KGFsaWFzLnNsb3QpOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoIW90aGVyQWxpYXMpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGFsaWFzLmNvbnN0YW50ICE9IG90aGVyQWxpYXMtPmNvbnN0
YW50KQorICAgICAgICAvLyBUYWtlcyB0d28gc29ydGVkIHZlY3RvcnMsIGZvciBlYWNoIGVsZW1l
bnQgaW4gdGhlIGZpcnN0LCBpdCBsb29rcyBmb3IgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIHNl
Y29uZCB3aGljaCBpcyBub3Qgc21hbGxlci4KKyAgICAgICAgLy8gSWYgc3VjaCBhbiBlbGVtZW50
IGV4aXN0LCBjYWxsIGYgb24gYm90aCB0aGUgZWxlbWVudCBmcm9tIHRoZSBmaXJzdCB2ZWN0b3Ig
YW5kIHRoaXMgZWxlbWVudC4KKyAgICAgICAgLy8gUmVtb3ZlIHRoZSBlbGVtZW50IGZyb20gdGhl
IGZpcnN0IHZlY3RvciB1bmxlc3MgZiByZXR1cm5lZCB0cnVlIChzbyBmIHNheXMgd2hldGhlciB0
byBrZWVwIHRoZSBlbGVtZW50KQorICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgYW55IGVsZW1l
bnQgaGFzIGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgRnVuYz4KKyAgICAgICAgc3RhdGljIGJvb2wgZmlsdGVyVmVjdG9yQWdhaW5zdChWZWN0b3I8
VD4mIG93biwgY29uc3QgVmVjdG9yPFQ+JiBvdGhlciwgRnVuYyBmKQorICAgICAgICB7CisgICAg
ICAgICAgICBjb25zdCBUKiBpdCA9IG90aGVyLmJlZ2luKCk7CisgICAgICAgICAgICBjb25zdCBU
KiBlbmQgPSBvdGhlci5lbmQoKTsKKyAgICAgICAgICAgIHJldHVybiAhIW93bi5yZW1vdmVBbGxN
YXRjaGluZygKKyAgICAgICAgICAgICAgICBbJl0gKFQmIGFsaWFzKSB7CisgICAgICAgICAgICAg
ICAgICAgIGl0ID0gc3RkOjpmaW5kX2lmX25vdChpdCwgZW5kLCBbJl0gKGNvbnN0IFQmIG90aGVy
QWxpYXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvdGhlckFsaWFzIDwgYWxp
YXM7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICBpZiAoaXQg
PT0gZW5kKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuICFmKGFsaWFzLCAqaXQpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0KIAotICAgICAgICAgICAgY2hhbmdlZCB8PSAhIXJlZ1Nsb3QucmVtb3ZlQWxsTWF0Y2hpbmco
Ci0gICAgICAgICAgICAgICAgWyZdIChSZWdTbG90JiBhbGlhcykgLT4gYm9vbCB7Ci0gICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFJlZ1Nsb3QqIG90aGVyQWxpYXMgPSBvdGhlci5nZXRSZWdTbG90
KGFsaWFzLnJlZywgYWxpYXMuc2xvdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghb3RoZXJB
bGlhcykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoYWxpYXMubW9kZSAhPSBSZWdTbG90OjpNYXRjaDMyICYmIGFsaWFzLm1vZGUg
IT0gb3RoZXJBbGlhcy0+bW9kZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYWxpYXMubW9k
ZSA9IFJlZ1Nsb3Q6Ok1hdGNoMzI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICBib29sIG1lcmdlKGNvbnN0IFN0
YXRlJiBvdGhlcikKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1faXNTb3J0ZWQpOwor
ICAgICAgICAgICAgQVNTRVJUKG90aGVyLm1faXNTb3J0ZWQpOworICAgICAgICAgICAgYm9vbCBj
aGFuZ2VkID0gZmFsc2U7CisKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gZmlsdGVyVmVjdG9yQWdh
aW5zdChyZWdDb25zdCwgb3RoZXIucmVnQ29uc3QsIFtdKFJlZ0NvbnN0JiBhLCBjb25zdCBSZWdD
b25zdCYgYikgeyByZXR1cm4gYSA9PSBiOyB9KTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gZmls
dGVyVmVjdG9yQWdhaW5zdChzbG90Q29uc3QsIG90aGVyLnNsb3RDb25zdCwgW10oU2xvdENvbnN0
JiBhLCBjb25zdCBTbG90Q29uc3QmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfSk7CisgICAgICAgICAg
ICBjaGFuZ2VkIHw9IGZpbHRlclZlY3RvckFnYWluc3QocmVnU2xvdCwgb3RoZXIucmVnU2xvdCwg
WyZdKFJlZ1Nsb3QmIGFsaWFzLCBjb25zdCBSZWdTbG90JiBvdGhlckFsaWFzKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGFsaWFzLnJlZyAhPSBvdGhlckFsaWFzLnJlZyB8fCBhbGlhcy5zbG90ICE9
IG90aGVyQWxpYXMuc2xvdCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGlmIChhbGlhcy5tb2RlICE9IFJlZ1Ns
b3Q6Ok1hdGNoMzIgJiYgYWxpYXMubW9kZSAhPSBvdGhlckFsaWFzLm1vZGUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgYWxpYXMubW9kZSA9IFJlZ1Nsb3Q6Ok1hdGNoMzI7CisgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICByZXR1cm4gY2hh
bmdlZDsKICAgICAgICAgfQpAQCAtNTg3LDE4ICs2NDMsMjIgQEAgcHJpdmF0ZToKICAgICAgICAg
ewogICAgICAgICAgICAgb3V0LnByaW50KAogICAgICAgICAgICAgICAgICJ7cmVnQ29uc3QgPSBb
IiwgbGlzdER1bXAocmVnQ29uc3QpLCAiXSwgc2xvdENvbnN0ID0gWyIsIGxpc3REdW1wKHNsb3RD
b25zdCksCi0gICAgICAgICAgICAgICAgIl0sIHJlZ1Nsb3QgPSBbIiwgbGlzdER1bXAocmVnU2xv
dCksICJdLCB3YXNWaXNpdGVkID0gIiwgd2FzVmlzaXRlZCwgIn0iKTsKKyAgICAgICAgICAgICAg
ICAiXSwgcmVnU2xvdCA9IFsiLCBsaXN0RHVtcChyZWdTbG90KSwgIl19Iik7CiAgICAgICAgIH0K
IAogICAgICAgICBWZWN0b3I8UmVnQ29uc3Q+IHJlZ0NvbnN0OwogICAgICAgICBWZWN0b3I8U2xv
dENvbnN0PiBzbG90Q29uc3Q7CiAgICAgICAgIFZlY3RvcjxSZWdTbG90PiByZWdTbG90OwotICAg
ICAgICBib29sIHdhc1Zpc2l0ZWQgeyBmYWxzZSB9OworI2lmIEFTU0VSVF9FTkFCTEVECisgICAg
ICAgIGJvb2wgbV9pc1NvcnRlZCB7IHRydWUgfTsKKyNlbmRpZgogICAgIH07CiAKICAgICBDb2Rl
JiBtX2NvZGU7CiAgICAgSW5kZXhNYXA8QmFzaWNCbG9jayosIFN0YXRlPiBtX2F0SGVhZDsKICAg
ICBTdGF0ZSBtX3N0YXRlOworICAgIEJpdFZlY3RvciBtX25vdEJvdHRvbTsKKyAgICBCaXRWZWN0
b3IgbV9zaG91bGRWaXNpdDsKICAgICBCYXNpY0Jsb2NrKiBtX2Jsb2NrIHsgbnVsbHB0ciB9Owog
ICAgIHVuc2lnbmVkIG1faW5zdEluZGV4IHsgMCB9OwogfTsK
</data>
<flag name="review"
          id="466655"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444781</attachid>
            <date>2021-11-18 22:14:13 -0800</date>
            <delta_ts>2021-11-19 01:38:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch228052</filename>
            <type>text/plain</type>
            <size>11196</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRiNmEwNDAzOWJmMi4uOGQ2N2MyNmM2NjNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0xMS0xOCAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgorCisgICAgICAgIEFpckZpeE9idmlv
dXNTcGlsbHMgc2hvdWxkIGJlIG9wdGltaXplZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MDUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtl
IFN1enVraS4KKworICAgICAgICBUaGVyZSB3ZXJlIHR3byBwcm9ibGVtcyB3aXRoIEFpckZpeE9i
dmlvdXNTcGlsbHM6CisgICAgICAgIC0gbWVyZ2UoKSBoYWQgYSBxdWFkcmF0aWMgYmxvdy11cCwg
YXMgZm9yIGVhY2ggZWxlbWVudCBpbiBhIHZlY3RvciwgaXQgd2FzIHNlYXJjaGluZyBpdCBpbiBh
IGRpZmZlcmVudCB2ZWN0b3IuCisgICAgICAgIC0gaXQgd291bGQgdmlzaXQgYmxvY2tzIGV2ZW4g
d2hlbiB0aGVpciBzdGF0ZSBhdCBoZWFkIGhhZCBub3QgY2hhbmdlZC4KKworICAgICAgICBJIGZp
eGVkIHRoZSBmaXJzdCBwcm9ibGVtIGJ5IG1ha2luZyBzdXJlIHRoYXQgdGhlIHZlY3RvcnMgYXJl
IHNvcnRlZCBiZWZvcmUgY2FsbGluZyBtZXJnZSwgYW5kIG1ha2luZyB1c2Ugb2YgdGhhdCBpbnZh
cmlhbnQgaW4gdGhlIHNlYXJjaCBvZiB0aGUgdmVjdG9ycworICAgICAgICAoc2VlIGZpbHRlclZl
Y3RvckFnYWluc3QpCisgICAgICAgIFRoaXMgcmVkdWNlZCB0aGUgdG90YWwgdGltZSBzcGVudCBp
biB0aGF0IHBoYXNlIGZyb20gMzkwbXMgdG8gMjMwbXMsIGFuZCB0aGUgd29yc3QgY2FzZSB0aW1l
IHNwZW50IGluIHRoYXQgcGhhc2UgZm9yIG9uZSBmdW5jdGlvbiBmcm9tIDEwMG1zIHRvIDMwbXMg
KGFsbCBvZiB0aGUgcmVzdWx0cyBpbiB0aGlzIENoYW5nZWxvZyBhcmUgZm9yIEpldFN0cmVhbTIg
b24gYSBNMSBNQlApLgorCisgICAgICAgIEkgZml4ZWQgdGhlIHNlY29uZCBwcm9ibGVtIGV2ZW4g
bW9yZSBlYXNpbHkgYnkgYWRkaW5nIGEgbV9zaG91bGRWaXNpdCBCaXRWZWN0b3IuIEkgYWxzbyBt
b3ZlZCB0aGUgbV93YXNWaXNpdGVkIGJvb2xlYW4gdGhhdCB3YXMgaW4gU3RhdGUgdG8gYSBtX25v
dEJvdHRvbSBCaXRWZWN0b3IgZm9yIHNpbXBsaWNpdHkgYW5kIHN5bW1ldHJ5LgorICAgICAgICBU
aGF0IGNoYW5nZSBmdXJ0aGVyIHJlZHVjZWQgdGhlIHRvdGFsL21heCB0aW1lIGZyb20gMjMwbXMv
MzBtcyB0byAxNDBtcy8xNm1zLgorCisgICAgICAgICogYjMvYWlyL0FpckZpeE9idmlvdXNTcGls
bHMuY3BwOgorCiAyMDIxLTExLTE4ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CiAKICAgICAgICAgW0pTQ10gQWRkIGJyYW5jaFRlc3QxNiBvcGVyYXRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCmluZGV4
IDYyNTYxM2UzNTkwNC4uNzdhZmQ4ODUzYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAKQEAgLTQ4LDYgKzQ4LDggQEAg
cHVibGljOgogICAgIEZpeE9idmlvdXNTcGlsbHMoQ29kZSYgY29kZSkKICAgICAgICAgOiBtX2Nv
ZGUoY29kZSkKICAgICAgICAgLCBtX2F0SGVhZChjb2RlLnNpemUoKSkKKyAgICAgICAgLCBtX25v
dEJvdHRvbShjb2RlLnNpemUoKSkKKyAgICAgICAgLCBtX3Nob3VsZFZpc2l0KGNvZGUuc2l6ZSgp
KQogICAgIHsKICAgICB9CiAKQEAgLTYzLDE3ICs2NSwxOSBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIHZvaWQgY29tcHV0ZUFsaWFzZXMoKQogICAgIHsKLSAgICAgICAgbV9hdEhlYWRbbV9jb2Rl
WzBdXS53YXNWaXNpdGVkID0gdHJ1ZTsKKyAgICAgICAgbV9ub3RCb3R0b20ucXVpY2tTZXQoMCk7
CisgICAgICAgIG1fc2hvdWxkVmlzaXQucXVpY2tTZXQoMCk7CiAgICAgICAgIAogICAgICAgICBi
b29sIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICB3aGlsZSAoY2hhbmdlZCkgewogICAgICAgICAg
ICAgY2hhbmdlZCA9IGZhbHNlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKEJhc2lj
QmxvY2sqIGJsb2NrIDogbV9jb2RlKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGJsb2Nr
SW5kZXggOiBtX3Nob3VsZFZpc2l0KSB7CisgICAgICAgICAgICAgICAgbV9zaG91bGRWaXNpdC5x
dWlja0NsZWFyKGJsb2NrSW5kZXgpOworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2Nr
ID0gbV9jb2RlW2Jsb2NrSW5kZXhdOworICAgICAgICAgICAgICAgIEFTU0VSVChtX25vdEJvdHRv
bS5xdWlja0dldChibG9ja0luZGV4KSk7CiAgICAgICAgICAgICAgICAgbV9ibG9jayA9IGJsb2Nr
OwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBtX2F0SGVhZFtibG9ja107Ci0gICAgICAgICAg
ICAgICAgaWYgKCFtX3N0YXRlLndhc1Zpc2l0ZWQpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgICAgICAgICAgaWYgKEFpckZpeE9idmlvdXNTcGlsbHNJbnRlcm5hbDo6
dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRXhlY3V0aW5nIGJsb2NrICIs
ICptX2Jsb2NrLCAiOiAiLCBtX3N0YXRlLCAiXG4iKTsKQEAgLTgxLDEzICs4NSwyMyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIGZvciAobV9pbnN0SW5kZXggPSAwOyBtX2luc3RJbmRleCA8
IGJsb2NrLT5zaXplKCk7ICsrbV9pbnN0SW5kZXgpCiAgICAgICAgICAgICAgICAgICAgIGV4ZWN1
dGVJbnN0KCk7CiAKKyAgICAgICAgICAgICAgICAvLyBCZWZvcmUgd2UgY2FsbCBtZXJnZSB3ZSBt
dXN0IG1ha2Ugc3VyZSB0aGF0IHRoZSB0d28gc3RhdGVzIGFyZSBzb3J0ZWQuCisgICAgICAgICAg
ICAgICAgbV9zdGF0ZS5zb3J0KCk7CisKICAgICAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sq
IHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JCbG9ja3MoKSkgeworICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBzdWNjZXNzb3JJbmRleCA9IHN1Y2Nlc3Nvci0+aW5kZXgoKTsKICAgICAg
ICAgICAgICAgICAgICAgU3RhdGUmIHRvU3RhdGUgPSBtX2F0SGVhZFtzdWNjZXNzb3JdOwotICAg
ICAgICAgICAgICAgICAgICBpZiAodG9TdGF0ZS53YXNWaXNpdGVkKQotICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSB0b1N0YXRlLm1lcmdlKG1fc3RhdGUpOwotICAgICAgICAgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fbm90Qm90dG9tLnF1aWNr
R2V0KHN1Y2Nlc3NvckluZGV4KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjaGFu
Z2VkQXRTdWNjZXNzb3JIZWFkID0gdG9TdGF0ZS5tZXJnZShtX3N0YXRlKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChjaGFuZ2VkQXRTdWNjZXNzb3JIZWFkKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9zaG91bGRWaXNpdC5xdWlja1NldChzdWNjZXNzb3JJbmRleCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIFRoZSBzdGF0ZSBh
dCBoZWFkIG9mIHN1Y2Nlc3NvciBpcyBib3R0b20KICAgICAgICAgICAgICAgICAgICAgICAgIHRv
U3RhdGUgPSBtX3N0YXRlOwogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgICAgICBtX25vdEJvdHRvbS5xdWlja1NldChzdWNjZXNzb3JJ
bmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3Nob3VsZFZpc2l0LnF1aWNrU2V0KHN1
Y2Nlc3NvckluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KQEAgLTk5LDcgKzExMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGZvciAo
QmFzaWNCbG9jayogYmxvY2sgOiBtX2NvZGUpIHsKICAgICAgICAgICAgIG1fYmxvY2sgPSBibG9j
azsKICAgICAgICAgICAgIG1fc3RhdGUgPSBtX2F0SGVhZFtibG9ja107Ci0gICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChtX3N0YXRlLndhc1Zpc2l0ZWQpOworICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQobV9ub3RCb3R0b20ucXVpY2tHZXQoYmxvY2stPmluZGV4KCkpKTsKIAogICAgICAgICAg
ICAgZm9yIChtX2luc3RJbmRleCA9IDA7IG1faW5zdEluZGV4IDwgYmxvY2stPnNpemUoKTsgKytt
X2luc3RJbmRleCkgewogICAgICAgICAgICAgICAgIGZpeEluc3QoKTsKQEAgLTM0MSw2ICszNTUs
MTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAmJiBjb25zdGFudCA9PSBvdGhlci5jb25z
dGFudDsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFJlZ0NvbnN0
JiBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHJlZyA8IG90aGVy
LnJlZyB8fCAocmVnID09IG90aGVyLnJlZyAmJiBjb25zdGFudCA8IG90aGVyLmNvbnN0YW50KTsK
KyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAog
ICAgICAgICB7CiAgICAgICAgICAgICBvdXQucHJpbnQocmVnLCAiLT4iLCBjb25zdGFudCk7CkBA
IC0zODAsNiArMzk5LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgJiYgbW9kZSA9PSBv
dGhlci5tb2RlOwogICAgICAgICB9CiAKKyAgICAgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgUmVn
U2xvdCYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFdlIGlnbm9yZSBg
bW9kZWAgb24gcHVycG9zZSwgc2VlIG1lcmdlKCkgZm9yIGhvdyB3ZSBkZWFsIHdpdGggaXQuCisg
ICAgICAgICAgICByZXR1cm4gc2xvdCA8IG90aGVyLnNsb3QgfHwgKHNsb3QgPT0gb3RoZXIuc2xv
dCAmJiByZWcgPCBvdGhlci5yZWcpOworICAgICAgICB9CisKICAgICAgICAgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIG91dC5wcmludChw
b2ludGVyRHVtcChzbG90KSwgIi0+IiwgcmVnKTsKQEAgLTQyMyw2ICs0NDgsMTEgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAmJiBjb25zdGFudCA9PSBvdGhlci5jb25zdGFudDsKICAgICAg
ICAgfQogCisgICAgICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFNsb3RDb25zdCYgb3RoZXIpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBzbG90IDwgb3RoZXIuc2xvdCB8fCAo
c2xvdCA9PSBvdGhlci5zbG90ICYmIGNvbnN0YW50IDwgb3RoZXIuY29uc3RhbnQpOworICAgICAg
ICB9CisKICAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAg
IHsKICAgICAgICAgICAgIG91dC5wcmludChwb2ludGVyRHVtcChzbG90KSwgIi0+IiwgY29uc3Rh
bnQpOwpAQCAtNDM1LDE1ICs0NjUsMjQgQEAgcHJpdmF0ZToKICAgICBzdHJ1Y3QgU3RhdGUgewog
ICAgICAgICB2b2lkIGFkZEFsaWFzKGNvbnN0IFJlZ0NvbnN0JiBuZXdBbGlhcykKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIHJlZ0NvbnN0LmFwcGVuZChuZXdBbGlhcyk7CisgICAgICAg
ICAgICByZWdDb25zdC5hcHBlbmQobmV3QWxpYXMpOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAg
ICAgICAgICBtX2lzU29ydGVkID0gZmFsc2U7CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICB2
b2lkIGFkZEFsaWFzKGNvbnN0IFJlZ1Nsb3QmIG5ld0FsaWFzKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gcmVnU2xvdC5hcHBlbmQobmV3QWxpYXMpOworICAgICAgICAgICAgcmVnU2xv
dC5hcHBlbmQobmV3QWxpYXMpOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgICAgICBtX2lz
U29ydGVkID0gZmFsc2U7CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICB2b2lkIGFkZEFsaWFz
KGNvbnN0IFNsb3RDb25zdCYgbmV3QWxpYXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBzbG90Q29uc3QuYXBwZW5kKG5ld0FsaWFzKTsKKyAgICAgICAgICAgIHNsb3RDb25zdC5hcHBl
bmQobmV3QWxpYXMpOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgICAgICBtX2lzU29ydGVk
ID0gZmFsc2U7CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBjb250
YWlucyhjb25zdCBSZWdDb25zdCYgYWxpYXMpCkBAIC01NDQsNDEgKzU4Myw1OSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBtZXJnZShjb25zdCBT
dGF0ZSYgb3RoZXIpCisgICAgICAgIHZvaWQgc29ydCgpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGJvb2wgY2hhbmdlZCA9IGZhbHNlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjaGFuZ2Vk
IHw9ICEhcmVnQ29uc3QucmVtb3ZlQWxsTWF0Y2hpbmcoCi0gICAgICAgICAgICAgICAgWyZdIChS
ZWdDb25zdCYgYWxpYXMpIC0+IGJvb2wgewotICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWdD
b25zdCogb3RoZXJBbGlhcyA9IG90aGVyLmdldFJlZ0NvbnN0KGFsaWFzLnJlZyk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICghb3RoZXJBbGlhcykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoYWxpYXMuY29uc3RhbnQgIT0gb3Ro
ZXJBbGlhcy0+Y29uc3RhbnQpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgc3RkOjpzb3J0KHJlZ0NvbnN0LmJlZ2luKCksIHJlZ0NvbnN0LmVuZCgpLCBb
XSAoY29uc3QgUmVnQ29uc3QmIGEsIGNvbnN0IFJlZ0NvbnN0JiBiKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGEgPCBiOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBzdGQ6OnNvcnQo
c2xvdENvbnN0LmJlZ2luKCksIHNsb3RDb25zdC5lbmQoKSwgW10gKGNvbnN0IFNsb3RDb25zdCYg
YSwgY29uc3QgU2xvdENvbnN0JiBiKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGEgPCBiOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBzdGQ6OnNvcnQocmVnU2xvdC5iZWdpbigpLCBy
ZWdTbG90LmVuZCgpLCBbXSAoY29uc3QgUmVnU2xvdCYgYSwgY29uc3QgUmVnU2xvdCYgYikgewor
ICAgICAgICAgICAgICAgIHJldHVybiBhIDwgYjsKKyAgICAgICAgICAgIH0pOworI2lmIEFTU0VS
VF9FTkFCTEVECisgICAgICAgICAgICBtX2lzU29ydGVkID0gdHJ1ZTsKKyNlbmRpZgorICAgICAg
ICB9CiAKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gISFzbG90Q29uc3QucmVtb3ZlQWxsTWF0Y2hp
bmcoCi0gICAgICAgICAgICAgICAgWyZdIChTbG90Q29uc3QmIGFsaWFzKSAtPiBib29sIHsKLSAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU2xvdENvbnN0KiBvdGhlckFsaWFzID0gb3RoZXIuZ2V0
U2xvdENvbnN0KGFsaWFzLnNsb3QpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIW90aGVyQWxp
YXMpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGFsaWFzLmNvbnN0YW50ICE9IG90aGVyQWxpYXMtPmNvbnN0YW50KQorICAgICAg
ICAvLyBUYWtlcyB0d28gc29ydGVkIHZlY3RvcnMsIGZvciBlYWNoIGVsZW1lbnQgaW4gdGhlIGZp
cnN0LCBpdCBsb29rcyBmb3IgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIHNlY29uZCB3aGljaCBp
cyBub3Qgc21hbGxlci4KKyAgICAgICAgLy8gSWYgc3VjaCBhbiBlbGVtZW50IGV4aXN0LCBjYWxs
IGYgb24gYm90aCB0aGUgZWxlbWVudCBmcm9tIHRoZSBmaXJzdCB2ZWN0b3IgYW5kIHRoaXMgZWxl
bWVudC4KKyAgICAgICAgLy8gUmVtb3ZlIHRoZSBlbGVtZW50IGZyb20gdGhlIGZpcnN0IHZlY3Rv
ciB1bmxlc3MgZiByZXR1cm5lZCB0cnVlIChzbyBmIHNheXMgd2hldGhlciB0byBrZWVwIHRoZSBl
bGVtZW50KQorICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgYW55IGVsZW1lbnQgaGFzIGJlZW4g
cmVtb3ZlZC4KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRnVuYz4KKyAg
ICAgICAgc3RhdGljIGJvb2wgZmlsdGVyVmVjdG9yQWdhaW5zdChWZWN0b3I8VD4mIG93biwgY29u
c3QgVmVjdG9yPFQ+JiBvdGhlciwgRnVuYyBmKQorICAgICAgICB7CisgICAgICAgICAgICBjb25z
dCBUKiBpdCA9IG90aGVyLmJlZ2luKCk7CisgICAgICAgICAgICBjb25zdCBUKiBlbmQgPSBvdGhl
ci5lbmQoKTsKKyAgICAgICAgICAgIHJldHVybiAhIW93bi5yZW1vdmVBbGxNYXRjaGluZygKKyAg
ICAgICAgICAgICAgICBbJl0gKFQmIGFsaWFzKSB7CisgICAgICAgICAgICAgICAgICAgIGl0ID0g
c3RkOjpmaW5kX2lmX25vdChpdCwgZW5kLCBbJl0gKGNvbnN0IFQmIG90aGVyQWxpYXMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvdGhlckFsaWFzIDwgYWxpYXM7CisgICAgICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICBpZiAoaXQgPT0gZW5kKQogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuICFmKGFsaWFzLCAqaXQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KIAotICAgICAg
ICAgICAgY2hhbmdlZCB8PSAhIXJlZ1Nsb3QucmVtb3ZlQWxsTWF0Y2hpbmcoCi0gICAgICAgICAg
ICAgICAgWyZdIChSZWdTbG90JiBhbGlhcykgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnN0IFJlZ1Nsb3QqIG90aGVyQWxpYXMgPSBvdGhlci5nZXRSZWdTbG90KGFsaWFzLnJlZywg
YWxpYXMuc2xvdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghb3RoZXJBbGlhcykKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAo
YWxpYXMubW9kZSAhPSBSZWdTbG90OjpNYXRjaDMyICYmIGFsaWFzLm1vZGUgIT0gb3RoZXJBbGlh
cy0+bW9kZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYWxpYXMubW9kZSA9IFJlZ1Nsb3Q6
Ok1hdGNoMzI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICBib29sIG1lcmdlKGNvbnN0IFN0YXRlJiBvdGhlcikK
KyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1faXNTb3J0ZWQpOworICAgICAgICAgICAg
QVNTRVJUKG90aGVyLm1faXNTb3J0ZWQpOworICAgICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFs
c2U7CisKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gZmlsdGVyVmVjdG9yQWdhaW5zdChyZWdDb25z
dCwgb3RoZXIucmVnQ29uc3QsIFtdKFJlZ0NvbnN0JiBhLCBjb25zdCBSZWdDb25zdCYgYikgeyBy
ZXR1cm4gYSA9PSBiOyB9KTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gZmlsdGVyVmVjdG9yQWdh
aW5zdChzbG90Q29uc3QsIG90aGVyLnNsb3RDb25zdCwgW10oU2xvdENvbnN0JiBhLCBjb25zdCBT
bG90Q29uc3QmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9
IGZpbHRlclZlY3RvckFnYWluc3QocmVnU2xvdCwgb3RoZXIucmVnU2xvdCwgWyZdKFJlZ1Nsb3Qm
IGFsaWFzLCBjb25zdCBSZWdTbG90JiBvdGhlckFsaWFzKSB7CisgICAgICAgICAgICAgICAgaWYg
KGFsaWFzLnJlZyAhPSBvdGhlckFsaWFzLnJlZyB8fCBhbGlhcy5zbG90ICE9IG90aGVyQWxpYXMu
c2xvdCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgICAgIGlmIChhbGlhcy5tb2RlICE9IFJlZ1Nsb3Q6Ok1hdGNoMzIg
JiYgYWxpYXMubW9kZSAhPSBvdGhlckFsaWFzLm1vZGUpIHsKKyAgICAgICAgICAgICAgICAgICAg
YWxpYXMubW9kZSA9IFJlZ1Nsb3Q6Ok1hdGNoMzI7CisgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICByZXR1cm4gY2hhbmdlZDsKICAgICAg
ICAgfQpAQCAtNTg3LDE4ICs2NDQsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgewogICAgICAgICAg
ICAgb3V0LnByaW50KAogICAgICAgICAgICAgICAgICJ7cmVnQ29uc3QgPSBbIiwgbGlzdER1bXAo
cmVnQ29uc3QpLCAiXSwgc2xvdENvbnN0ID0gWyIsIGxpc3REdW1wKHNsb3RDb25zdCksCi0gICAg
ICAgICAgICAgICAgIl0sIHJlZ1Nsb3QgPSBbIiwgbGlzdER1bXAocmVnU2xvdCksICJdLCB3YXNW
aXNpdGVkID0gIiwgd2FzVmlzaXRlZCwgIn0iKTsKKyAgICAgICAgICAgICAgICAiXSwgcmVnU2xv
dCA9IFsiLCBsaXN0RHVtcChyZWdTbG90KSwgIl19Iik7CiAgICAgICAgIH0KIAogICAgICAgICBW
ZWN0b3I8UmVnQ29uc3Q+IHJlZ0NvbnN0OwogICAgICAgICBWZWN0b3I8U2xvdENvbnN0PiBzbG90
Q29uc3Q7CiAgICAgICAgIFZlY3RvcjxSZWdTbG90PiByZWdTbG90OwotICAgICAgICBib29sIHdh
c1Zpc2l0ZWQgeyBmYWxzZSB9OworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGJvb2wgbV9p
c1NvcnRlZCB7IHRydWUgfTsKKyNlbmRpZgogICAgIH07CiAKICAgICBDb2RlJiBtX2NvZGU7CiAg
ICAgSW5kZXhNYXA8QmFzaWNCbG9jayosIFN0YXRlPiBtX2F0SGVhZDsKICAgICBTdGF0ZSBtX3N0
YXRlOworICAgIEJpdFZlY3RvciBtX25vdEJvdHRvbTsKKyAgICBCaXRWZWN0b3IgbV9zaG91bGRW
aXNpdDsKICAgICBCYXNpY0Jsb2NrKiBtX2Jsb2NrIHsgbnVsbHB0ciB9OwogICAgIHVuc2lnbmVk
IG1faW5zdEluZGV4IHsgMCB9OwogfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>