<?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>194485</bug_id>
          
          <creation_ts>2019-02-10 16:18:21 -0800</creation_ts>
          <short_desc>Switch uses of StringBuilder with String::format for hex numbers to use HexNumber.h instead</short_desc>
          <delta_ts>2019-02-10 22:03:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>30342</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>ggaren</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1504749</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-02-10 16:18:21 -0800</bug_when>
    <thetext>Switch uses of StringBuilder with String::format for hex numbers to use HexNumber.h instead</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504750</commentid>
    <comment_count>1</comment_count>
      <attachid>361649</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-02-10 16:29:31 -0800</bug_when>
    <thetext>Created attachment 361649
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504757</commentid>
    <comment_count>2</comment_count>
      <attachid>361650</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-02-10 16:37:18 -0800</bug_when>
    <thetext>Created attachment 361650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504770</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-02-10 19:41:04 -0800</bug_when>
    <thetext>Adding some people to the cc list who have shown interest in this work recently. Patch is compiling and passing all tests so ready to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504783</commentid>
    <comment_count>4</comment_count>
      <attachid>361650</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-02-10 20:16:43 -0800</bug_when>
    <thetext>Comment on attachment 361650
Patch

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

&gt; Source/JavaScriptCore/heap/HeapSnapshotBuilder.cpp:438
&gt; +            json.appendLiteral(&quot;,\&quot;&quot;);

No need to change this. Just had a thought, raw string to avoid escaping? R&quot;(,&quot;)&quot; :/

&gt; Source/JavaScriptCore/heap/HeapSnapshotBuilder.cpp:440
&gt; +            json.appendLiteral(&quot;\&quot;,\&quot;&quot;);

Raw string? R&quot;(&quot;,&quot;)&quot;? Again, :/ (still feeling these raw strings out)

&gt; Source/WTF/wtf/HexNumber.h:55
&gt; +    auto unsignedNumber = static_cast&lt;typename std::make_unsigned&lt;NumberType&gt;::type&gt;(number);

Nothing to change. Just a thought, we still need typename? I thought C++14 was going to save us. Maybe that&apos;s C++17 or C++20.

&gt; Source/WTF/wtf/HexNumber.h:70
&gt; +    auto unsignedNumber = static_cast&lt;typename std::make_unsigned&lt;NumberType&gt;::type&gt;(number);

Ditto.

&gt; Source/WebCore/css/parser/CSSParserToken.cpp:397
&gt; +        break;

Nice! I don&apos;t like returning void either. Did you see &lt;https://lists.webkit.org/pipermail/webkit-dev/2019-February/030439.html&gt;? Your voice was noticeably absent. Opinions appreciated :)

&gt; Source/WebKit/UIProcess/WebBackForwardList.cpp:488
&gt; +    builder.append(m_currentIndex ? &quot;YES&quot; : &quot;NO&quot;);

appendLiteral()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504798</commentid>
    <comment_count>5</comment_count>
      <attachid>361650</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-02-10 22:01:25 -0800</bug_when>
    <thetext>Comment on attachment 361650
Patch

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

Thank you for your review and your thoughtful comments.

&gt;&gt; Source/JavaScriptCore/heap/HeapSnapshotBuilder.cpp:438
&gt;&gt; +            json.appendLiteral(&quot;,\&quot;&quot;);
&gt; 
&gt; No need to change this. Just had a thought, raw string to avoid escaping? R&quot;(,&quot;)&quot; :/

Never heard of a raw string before. I’d prefer not to use it for the first time here, but it seems like a reasonable thing to do later, revisiting all the places with \&quot; to see if they can be made better.

&gt;&gt; Source/WTF/wtf/HexNumber.h:55
&gt;&gt; +    auto unsignedNumber = static_cast&lt;typename std::make_unsigned&lt;NumberType&gt;::type&gt;(number);
&gt; 
&gt; Nothing to change. Just a thought, we still need typename? I thought C++14 was going to save us. Maybe that&apos;s C++17 or C++20.

According to &lt;https://en.cppreference.com/w/cpp/language/dependent_name&gt; this will be resolved in C++20, which we can’t yet depend on in WebKit.

I realize on reflection we can use make_unsigned_t instead of make_unsigned. I prefer to leave this as-is now and revisit this and all other call sites where we use make_unsigned in a separate patch.

&gt;&gt; Source/WebCore/css/parser/CSSParserToken.cpp:397
&gt;&gt; +        break;
&gt; 
&gt; Nice! I don&apos;t like returning void either. Did you see &lt;https://lists.webkit.org/pipermail/webkit-dev/2019-February/030439.html&gt;? Your voice was noticeably absent. Opinions appreciated :)

I did see it. I didn’t feel that I needed to comment. Our style has been to not return void. I might make a different choice in my own project but WebKit has been consistent on this for some time and I am simply following suit. That’s what the conversation on webkit-dev also seemed to conclude without my voice.

&gt;&gt; Source/WebKit/UIProcess/WebBackForwardList.cpp:488
&gt;&gt; +    builder.append(m_currentIndex ? &quot;YES&quot; : &quot;NO&quot;);
&gt; 
&gt; appendLiteral()?

It would need to be two calls to appendLiteral; the expression is not a literal. I prefer to leave it like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504799</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-02-10 22:02:08 -0800</bug_when>
    <thetext>Committed r241256: &lt;https://trac.webkit.org/changeset/241256&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504800</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-10 22:03:40 -0800</bug_when>
    <thetext>&lt;rdar://problem/47955039&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361649</attachid>
            <date>2019-02-10 16:29:31 -0800</date>
            <delta_ts>2019-02-10 16:37:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194485-20190210162930.patch</filename>
            <type>text/plain</type>
            <size>27594</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NjIxMDFiY2I1YzUzZDExZmRjMGYxNjNlMTI5Yjc2ZDkxNzNiYTA2Li42NWNhMjBmZmQ0ODY0MzQz
MjFiMWY4ZGI5YmI0ODE1Y2E4YTlkNDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxOS0wMi0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgU3dpdGNoIHVzZXMgb2YgU3RyaW5nQnVpbGRlciB3aXRoIFN0cmluZzo6Zm9ybWF0
IGZvciBoZXggbnVtYmVycyB0byB1c2UgSGV4TnVtYmVyLmggaW5zdGVhZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDg1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKTogVXNl
IGFwcGVuZFVuc2lnbmVkQXNIZXggYWxvbmcgd2l0aAorICAgICAgICByZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4gdG8gcmVwbGFjZSB1c2VzIG9mIFN0cmluZzo6Zm9ybWF0IHdpdGggIiVwIi4K
KworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAg
ICAoSlNDOjplbmNvZGUpOiBSZW1vdmVkIHNvbWUgdW5uZWVkZWQgY2FzdHMgaW4gU3RyaW5nQnVp
bGRlciBjb2RlLAorICAgICAgICBpbmNsdWRpbmcgb25lIGluIGEgY2FsbCB0byBhcHBlbmRCeXRl
QXNIZXguCisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNFc2NhcGUpOiBEaXR0by4KKwogMjAxOS0w
Mi0wOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIExleGVyIHNob3VsZCB1c2UgaXNMYXRpbjEgaW1wbGVtZW50YXRpb24gaW4gV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IGY3YWFiYmQwZGE4ZGViNGQ4Nzg2OGMyNWJiMmRlOTM5YjQwMmY3MjMuLjkzNGQ2MmUxMmY1
NTE5YzgzN2E4ZTQwN2ZlOTE4ZDY3NmE2MjYzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTkt
MDItMTAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFN3aXRjaCB1
c2VzIG9mIFN0cmluZ0J1aWxkZXIgd2l0aCBTdHJpbmc6OmZvcm1hdCBmb3IgaGV4IG51bWJlcnMg
dG8gdXNlIEhleE51bWJlci5oIGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NDQ4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL0hleE51bWJlci5oOiBSZW1vdmVkIHVudXNlZCBmdW5j
dGlvbnMgcGxhY2VCeXRlQXNIZXhDb21wcmVzc0lmUG9zc2libGUgYW5kCisgICAgICAgIHBsYWNl
Qnl0ZUFzSGV4LiBDYW4gYWx3YXlzIGJyaW5nIHRoZW0gYmFjayBpZiBzb21lb25lIG5lZWRzIHRo
ZW0uIFVwZGF0ZWQKKyAgICAgICAgYXBwZW5kVW5zaWduZWRBc0hleCB0byBiZSBhIHRlbXBsYXRl
IHNvIHdlIGNhbiB1c2UgaXQgb24gYW55IGludGVnZXIgdHlwZSwKKyAgICAgICAgZ290IHJpZCBv
ZiB1bm5lY2Vzc2FyeSB1c2Ugb2YgVmVjdG9yIGFuZCB1bm5lY2Vzc2FyeSByZXZlcnNpbmcsIGFu
ZCBnb3QgcmlkIG9mCisgICAgICAgIGFwcGVuZFVuc2lnbmVkNjRBc0hleCBzaW5jZSBjYWxsZXJz
IGNhbiBub3cganVzdCB1c2UgYXBwZW5kVW5zaWduZWRBc0hleC4KKyAgICAgICAgUmV3cm90ZSBh
cHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXplIHRvIHNoYXJlIG1vZGUgY29kZSByYXRoZXIgdGhh
biByZXBsaWNhdGluZy4KKworICAgICAgICAqIHd0Zi9Mb2dnZXIuaDogVXNlIGFwcGVuZFVuc2ln
bmVkQXNIZXggaW5zdGVhZCBvZiBhcHBlbmRVbnNpZ25lZDY0QXNIZXguCisKKyAgICAgICAgKiB3
dGYvVVJMLmNwcDogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBpbmNsdWRlIG9mIEhleE51bWJlci5oLgor
CisgICAgICAgICogd3RmL2NvY29hL05TVVJMRXh0cmFzLmg6IEFkZGVkIG1pc3NpbmcgaW5jbHVk
ZSBvZiBGb3VuZGF0aW9uLmggdGhhdCB3YXMKKyAgICAgICAgd29ya2VkIGFyb3VuZCBpbiBOU1VS
TEV4dHJhcy5tbS4KKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxFeHRyYXMubW06IFJlbW92ZWQg
dW5uZWNlc3NhcnkgaW5jbHVkZXMgb2YgSGV4TnVtYmVyLmgKKyAgICAgICAgYW5kIEZvdW5kYXRp
b24uaC4KKwogMjAxOS0wMi0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgRWxpbWluYXRlIHVubmVjZXNzYXJ5IFN0cmluZyB0ZW1wb3JhcmllcyBieSB1c2luZyBT
dHJpbmdDb25jYXRlbmF0ZU51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1YjE4YmQ4NDRmOWVlMTMzMWJi
ZGE5MGRiMWM5Y2U1Mjk2M2QxYWIzLi43NGJiZWNkMmMwOTI3MTA3N2EyMDBiZDk2MWFmNTRmMzFm
N2JlZTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTktMDItMTAgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFN3aXRjaCB1c2VzIG9mIFN0cmluZ0J1
aWxkZXIgd2l0aCBTdHJpbmc6OmZvcm1hdCBmb3IgaGV4IG51bWJlcnMgdG8gdXNlIEhleE51bWJl
ci5oIGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NDQ4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjplbmNvZGVQcm90b2NvbFN0cmluZyk6IFVzZSBhcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXpl
IGluc3RlYWQgb2YgU3RyaW5nOjpmb3JtYXQuCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Bh
cnNlclRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpzZXJpYWxp
emUgY29uc3QpOiBGaXhlZCBzdHlsZSBvZiBtYW55IHJldHVybiBzdGF0ZW1lbnRzCisgICAgICAg
IHRoYXQgY2FsbGVkIGEgZnVuY3Rpb24gcmV0dXJuaW5nIHZvaWQ7IGRvZXNuJ3QgbWF0Y2ggV2Vi
S2l0J3MgcHJldmFpbGluZyBzdHlsZS4KKyAgICAgICAgQWxzbyB1c2UgYnJlYWsgaW5zdGVhZCBv
ZiByZXR1cm4uIFVzZWQgYXBwZW5kTGl0ZXJhbCBpbnN0ZWFkIG9mIGFwcGVuZCBpbiBtYW55Cisg
ICAgICAgIGNhc2VzLCBhbmQgYXBwZW5kIGNoYXJhY3RlciBpbnN0ZWFkIG9mIHNpbmdsZS1jaGFy
YWN0ZXIgbGl0ZXJhbCBpbiBvdGhlcnMuCisgICAgICAgIFVzZSBhcHBlbmRVbnNpZ25lZEFzSGV4
IGluc3RlYWQgb2YgU3RyaW5nOjpmb3JtYXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Z2VuZXJhdGVIYXNoZWROYW1lKTogVXNlIGFwcGVuZFVuc2lnbmVkQXNIZXggaW5zdGFk
IG9mIGFwcGVuZFVuc2lnbmVkNjRBc0hleC4KKyAgICAgICAgU2hvdWxkIGNvbWUgYmFjayBoZXJl
IGFuZCB1c2UgbWFrZVN0cmluZyBvbmNlIHdlIG1ha2UgSGV4TnVtYmVyLmggd29yayB3aXRoIHRo
YXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tOiBSZW1v
dmVkIHVubmVjZXNzYXJ5IGluY2x1ZGUgb2YgSGV4TnVtYmVyLmguCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpxdW90ZUFuZEVz
Y2FwZU5vblByaW50YWJsZXMpOiBVc2UgYXBwZW5kTGl0ZXJhbCBpbnN0ZWFkIG9mIG11bHRpcGxl
IGNhbGxzCisgICAgICAgIHRvIGNoYXJhY3RlciBhcHBlbmQuIFRvdWNoZWQgYmVjYXVzZSBpdCB3
YXMgbmV4dCB0byBhIGNhbGwgdG8gYXBwZW5kVW5zaWduZWRBc0hleC4KKwogMjAxOS0wMi0xMCAg
UGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgR1RLIERlYnVnIGJ1aWxkIGZpeCBhZnRlciByMjQxMTQ4LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlZGM0
YjEyOGRhZWVlOGEyNWMzNmJlYzc5NjgwOTFkN2JjZmYxNmU0Li44ZjI5ZGIxYzRlMzM3MzA3YTgx
NmRhMzhlOWFkMTFmYTljYWMyOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTAy
LTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTd2l0Y2ggdXNl
cyBvZiBTdHJpbmdCdWlsZGVyIHdpdGggU3RyaW5nOjpmb3JtYXQgZm9yIGhleCBudW1iZXJzIHRv
IHVzZSBIZXhOdW1iZXIuaCBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTQ0ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpjb21wbGV0ZURldmlj
ZUlkSGFzaFNhbHRGb3JPcmlnaW5DYWxsKTogVXNlCisgICAgICAgIGFwcGVuZFVuc2lnbmVkQXNI
ZXggaW5zdGVhZCBvZiBhcHBlbmRVbnNpZ25lZDY0QXNIZXguCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0Zvcndh
cmRMaXN0Ojpsb2dnaW5nU3RyaW5nKTogVXNlIGFwcGVuZFVuc2lnbmVkQXNIZXggYW5kCisgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PiBpbnN0ZWFkIG9mIFN0cmluZzo6Zm9ybWF0
IGFuZCAiJXAiLgorCiAyMDE5LTAyLTEwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjQxMTY3LgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcApp
bmRleCAzMDNhMWY3ZDViNTg3ZjhjODk3MjZlMjQ4NGUyY2M5NTRhYWIwMDA3Li5jZDkxZjgwMGY4
MGQ2NjRhMTEzMzI0NjM0OTJlNjNjOGNhMzFjMGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgIkpTQ2FzdC5oIgogI2luY2x1ZGUgIlByZXZlbnRDb2xsZWN0aW9uU2NvcGUuaCIK
ICNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDM0LDEwICs0
MzUsMTEgQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24oRnVuY3Rpb248Ym9vbCAo
Y29uc3QgSGVhcFNuYXBzaG90Tm9kZSYpPiBhbGxvd04KICAgICAgICAgaWYgKG1fc25hcHNob3RU
eXBlID09IFNuYXBzaG90VHlwZTo6R0NEZWJ1Z2dpbmdTbmFwc2hvdCkgewogICAgICAgICAgICAg
anNvbi5hcHBlbmQoJywnKTsKICAgICAgICAgICAgIGpzb24uYXBwZW5kTnVtYmVyKGxhYmVsSW5k
ZXgpOwotICAgICAgICAgICAganNvbi5hcHBlbmQoJywnKTsKLSAgICAgICAgICAgIGpzb24uYXBw
ZW5kKFN0cmluZzo6Zm9ybWF0KCJcIiVwXCIiLCBub2RlLmNlbGwpKTsgLy8gRklYTUU6IFNob3Vs
ZCBhZGQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kQWRkcmVzcyh2b2lkKikuCi0gICAgICAgICAgICBq
c29uLmFwcGVuZCgnLCcpOwotICAgICAgICAgICAganNvbi5hcHBlbmQoU3RyaW5nOjpmb3JtYXQo
IlwiJXBcIiIsIHdyYXBwZWRBZGRyZXNzKSk7CisgICAgICAgICAgICBqc29uLmFwcGVuZExpdGVy
YWwoIixcIiIpOworICAgICAgICAgICAgYXBwZW5kVW5zaWduZWRBc0hleChyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4obm9kZS5jZWxsKSwganNvbiwgTG93ZXJjYXNlKTsKKyAgICAgICAgICAg
IGpzb24uYXBwZW5kTGl0ZXJhbCgiXCIsXCIiKTsKKyAgICAgICAgICAgIGFwcGVuZFVuc2lnbmVk
QXNIZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHdyYXBwZWRBZGRyZXNzKSwganNvbiwg
TG93ZXJjYXNlKTsKKyAgICAgICAgICAgIGpzb24uYXBwZW5kKCciJyk7CiAgICAgICAgIH0KICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggNjhhODJjMjNhNDNiOTcxMjQ1MjkzNmYyMjZj
OWQ1ZjgzOGQwNWJiOS4uMTdlZTMzZjA0OWYyOGZmMGNkYzlhZDY2OWQ3NmYzZTFjNmU4Mzg1NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0YXRpYyBKU1ZhbHVlIGVu
Y29kZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEJpdG1hcDwyNTY+JiBkb05vdEVzY2FwZSwgY29u
c3QgQ2hhCiAgICAgICAgICAgICAvLyA0LWQtdmktMS4gTGV0IGpPY3RldCBiZSB0aGUgdmFsdWUg
YXQgaW5kZXggaiB3aXRoaW4gT2N0ZXRzLgogICAgICAgICAgICAgLy8gNC1kLXZpLTIuIExldCBT
IGJlIGEgU3RyaW5nIGNvbnRhaW5pbmcgdGhyZWUgY29kZSB1bml0cyAiJVhZIiB3aGVyZSBYWSBh
cmUgdHdvIHVwcGVyY2FzZSBoZXhhZGVjaW1hbCBkaWdpdHMgZW5jb2RpbmcgdGhlIHZhbHVlIG9m
IGpPY3RldC4KICAgICAgICAgICAgIC8vIDQtZC12aS0zLiBMZXQgUiBiZSBhIG5ldyBTdHJpbmcg
dmFsdWUgY29tcHV0ZWQgYnkgY29uY2F0ZW5hdGluZyB0aGUgcHJldmlvdXMgdmFsdWUgb2YgUiBh
bmQgUy4KLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPignJScp
KTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCclJyk7CiAgICAgICAgICAgICBhcHBlbmRC
eXRlQXNIZXgodXRmOE9jdGV0c0J1ZmZlcltpbmRleF0sIGJ1aWxkZXIpOwogICAgICAgICB9CiAg
ICAgfQpAQCAtNjAwLDggKzYwMCw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xv
YmFsRnVuY0VzY2FwZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgICAgaWYgKGRvTm90
RXNjYXBlLmdldChzdGF0aWNfY2FzdDxMQ2hhcj4odSkpKQogICAgICAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgqYyk7CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPignJScpKTsKLSAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KHN0YXRpY19jYXN0PExDaGFyPih1KSwgYnVpbGRl
cik7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCclJyk7CisgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZEJ5dGVBc0hleCh1LCBidWlsZGVyKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgYnVpbGRl
ci50b1N0cmluZygpKTsKQEAgLTYxMSwxNCArNjExLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2xvYmFsRnVuY0VzY2FwZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGZvciAo
dW5zaWduZWQgayA9IDA7IGsgPCB2aWV3Lmxlbmd0aCgpOyBrKyssIGMrKykgewogICAgICAgICAg
ICAgVUNoYXIgdSA9IGNbMF07CiAgICAgICAgICAgICBpZiAodSA+PSBkb05vdEVzY2FwZS5zaXpl
KCkpIHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4o
JyUnKSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+
KCd1JykpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiJXUiKTsKICAg
ICAgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgodSA+PiA4LCBidWlsZGVyKTsKICAgICAgICAg
ICAgICAgICBhcHBlbmRCeXRlQXNIZXgodSAmIDB4RkYsIGJ1aWxkZXIpOwogICAgICAgICAgICAg
fSBlbHNlIGlmIChkb05vdEVzY2FwZS5nZXQoc3RhdGljX2Nhc3Q8TENoYXI+KHUpKSkKICAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgqYyk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4oJyUnKSk7CisgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyUnKTsKICAgICAgICAgICAgICAgICBhcHBlbmRC
eXRlQXNIZXgodSwgYnVpbGRlcik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0hleE51bWJlci5oIGIvU291cmNlL1dURi93dGYvSGV4TnVtYmVy
LmgKaW5kZXggYzY3YjcxZWRjMDljOWJlNmRlNjU3NjcwYjcxNDM0NGYyMGQ4OTE3MC4uM2QxMjY1
ZmExMzdlNGVlZTBhN2E0ZTNkNzc5YTcwMzkwOWNjMTA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvSGV4TnVtYmVyLmgKKysrIGIvU291cmNlL1dURi93dGYvSGV4TnVtYmVyLmgKQEAgLTIw
LDYgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTQ1
LDY3ICs0NiwzNSBAQCBpbmxpbmUgdm9pZCBhcHBlbmRCeXRlQXNIZXgodW5zaWduZWQgY2hhciBi
eXRlLCBUJiBkZXN0aW5hdGlvbiwgSGV4Q29udmVyc2lvbk1vZAogICAgIGRlc3RpbmF0aW9uLmFw
cGVuZChoZXhEaWdpdHNbYnl0ZSAmIDB4Rl0pOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
aW5saW5lIHZvaWQgcGxhY2VCeXRlQXNIZXhDb21wcmVzc0lmUG9zc2libGUodW5zaWduZWQgY2hh
ciBieXRlLCBUJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQmIGluZGV4LCBIZXhDb252ZXJzaW9uTW9k
ZSBtb2RlID0gVXBwZXJjYXNlKQotewotICAgIGF1dG8qIGhleERpZ2l0cyA9IEludGVybmFsOjpo
ZXhEaWdpdHNGb3JNb2RlKG1vZGUpOwotICAgIGlmIChieXRlID49IDB4MTApCi0gICAgICAgIGRl
c3RpbmF0aW9uW2luZGV4KytdID0gaGV4RGlnaXRzW2J5dGUgPj4gNF07Ci0gICAgZGVzdGluYXRp
b25baW5kZXgrK10gPSBoZXhEaWdpdHNbYnl0ZSAmIDB4Rl07Ci19Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci1pbmxpbmUgdm9pZCBwbGFjZUJ5dGVBc0hleCh1bnNpZ25lZCBjaGFyIGJ5dGUsIFQm
IGRlc3RpbmF0aW9uLCBIZXhDb252ZXJzaW9uTW9kZSBtb2RlID0gVXBwZXJjYXNlKQotewotICAg
IGF1dG8qIGhleERpZ2l0cyA9IEludGVybmFsOjpoZXhEaWdpdHNGb3JNb2RlKG1vZGUpOwotICAg
ICpkZXN0aW5hdGlvbisrID0gaGV4RGlnaXRzW2J5dGUgPj4gNF07Ci0gICAgKmRlc3RpbmF0aW9u
KysgPSBoZXhEaWdpdHNbYnl0ZSAmIDB4Rl07Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1p
bmxpbmUgdm9pZCBhcHBlbmRVbnNpZ25lZEFzSGV4KHVuc2lnbmVkIG51bWJlciwgVCYgZGVzdGlu
YXRpb24sIEhleENvbnZlcnNpb25Nb2RlIG1vZGUgPSBVcHBlcmNhc2UpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBOdW1iZXJUeXBlLCB0eXBlbmFtZSBEZXN0aW5hdGlvblR5cGU+CitpbmxpbmUgdm9pZCBh
cHBlbmRVbnNpZ25lZEFzSGV4KE51bWJlclR5cGUgbnVtYmVyLCBEZXN0aW5hdGlvblR5cGUmIGRl
c3RpbmF0aW9uLCBIZXhDb252ZXJzaW9uTW9kZSBtb2RlID0gVXBwZXJjYXNlKQogewotICAgIGF1
dG8qIGhleERpZ2l0cyA9IEludGVybmFsOjpoZXhEaWdpdHNGb3JNb2RlKG1vZGUpOwotICAgIFZl
Y3RvcjxMQ2hhciwgOD4gcmVzdWx0OworICAgIC8vIEVhY2ggYnl0ZSBjYW4gZ2VuZXJhdGUgdXAg
dG8gdHdvIGRpZ2l0cy4KKyAgICBzdGQ6OmFycmF5PExDaGFyLCBzaXplb2YoTnVtYmVyVHlwZSkg
KiAyPiBidWZmZXI7CisgICAgYXV0byBzdGFydCA9IGJ1ZmZlci5lbmQoKTsKKyAgICBhdXRvIHVu
c2lnbmVkTnVtYmVyID0gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPE51
bWJlclR5cGU+Ojp0eXBlPihudW1iZXIpOworICAgIGF1dG8gaGV4RGlnaXRzID0gSW50ZXJuYWw6
OmhleERpZ2l0c0Zvck1vZGUobW9kZSk7CiAgICAgZG8gewotICAgICAgICByZXN1bHQuYXBwZW5k
KGhleERpZ2l0c1tudW1iZXIgJSAxNl0pOwotICAgICAgICBudW1iZXIgPj49IDQ7Ci0gICAgfSB3
aGlsZSAobnVtYmVyID4gMCk7Ci0KLSAgICByZXN1bHQucmV2ZXJzZSgpOwotICAgIGRlc3RpbmF0
aW9uLmFwcGVuZChyZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpKTsKLX0KLSAgICAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBhcHBlbmRVbnNpZ25lZDY0QXNIZXgodWludDY0
X3QgbnVtYmVyLCBUJiBkZXN0aW5hdGlvbiwgSGV4Q29udmVyc2lvbk1vZGUgbW9kZSA9IFVwcGVy
Y2FzZSkKLXsKLSAgICBhdXRvKiBoZXhEaWdpdHMgPSBJbnRlcm5hbDo6aGV4RGlnaXRzRm9yTW9k
ZShtb2RlKTsKLSAgICBWZWN0b3I8TENoYXIsIDg+IHJlc3VsdDsKLSAgICBkbyB7Ci0gICAgICAg
IHJlc3VsdC5hcHBlbmQoaGV4RGlnaXRzW251bWJlciAlIDE2XSk7Ci0gICAgICAgIG51bWJlciA+
Pj0gNDsKLSAgICB9IHdoaWxlIChudW1iZXIgPiAwKTsKLSAgICAKLSAgICByZXN1bHQucmV2ZXJz
ZSgpOwotICAgIGRlc3RpbmF0aW9uLmFwcGVuZChyZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgp
KTsKKyAgICAgICAgQVNTRVJUKHN0YXJ0ID4gYnVmZmVyLmJlZ2luKCkpOworICAgICAgICAqLS1z
dGFydCA9IGhleERpZ2l0c1t1bnNpZ25lZE51bWJlciAmIDB4Rl07CisgICAgICAgIHVuc2lnbmVk
TnVtYmVyID4+PSA0OworICAgIH0gd2hpbGUgKHVuc2lnbmVkTnVtYmVyKTsKKyAgICBkZXN0aW5h
dGlvbi5hcHBlbmQoc3RhcnQsIGJ1ZmZlci5lbmQoKSAtIHN0YXJ0KTsKIH0KIAotLy8gU2FtZSBh
cyBhcHBlbmRVbnNpZ25lZEFzSGV4LCBidXQgdXNpbmcgZXhhY3RseSAnZGVzaXJlZERpZ2l0cycg
Zm9yIHRoZSBjb252ZXJzaW9uLgotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkIGFw
cGVuZFVuc2lnbmVkQXNIZXhGaXhlZFNpemUodW5zaWduZWQgbnVtYmVyLCBUJiBkZXN0aW5hdGlv
biwgdW5zaWduZWQgZGVzaXJlZERpZ2l0cywgSGV4Q29udmVyc2lvbk1vZGUgbW9kZSA9IFVwcGVy
Y2FzZSkKKy8vIFNhbWUgYXMgYXBwZW5kVW5zaWduZWRBc0hleCwgYnV0IHplcm8tcGFkZGluZyB0
byBnZXQgYXQgbGVhc3QgdGhlIGRlc2lyZWQgbnVtYmVyIG9mIGRpZ2l0cy4KK3RlbXBsYXRlPHR5
cGVuYW1lIE51bWJlclR5cGUsIHR5cGVuYW1lIERlc3RpbmF0aW9uVHlwZT4KK2lubGluZSB2b2lk
IGFwcGVuZFVuc2lnbmVkQXNIZXhGaXhlZFNpemUoTnVtYmVyVHlwZSBudW1iZXIsIERlc3RpbmF0
aW9uVHlwZSYgZGVzdGluYXRpb24sIHVuc2lnbmVkIGRlc2lyZWREaWdpdHMsIEhleENvbnZlcnNp
b25Nb2RlIG1vZGUgPSBVcHBlcmNhc2UpCiB7Ci0gICAgQVNTRVJUKGRlc2lyZWREaWdpdHMpOwot
Ci0gICAgYXV0byogaGV4RGlnaXRzID0gSW50ZXJuYWw6OmhleERpZ2l0c0Zvck1vZGUobW9kZSk7
Ci0gICAgVmVjdG9yPExDaGFyLCA4PiByZXN1bHQ7CisgICAgdW5zaWduZWQgZGlnaXRzID0gMDsK
KyAgICBhdXRvIHVuc2lnbmVkTnVtYmVyID0gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjptYWtl
X3Vuc2lnbmVkPE51bWJlclR5cGU+Ojp0eXBlPihudW1iZXIpOwogICAgIGRvIHsKLSAgICAgICAg
cmVzdWx0LmFwcGVuZChoZXhEaWdpdHNbbnVtYmVyICUgMTZdKTsKLSAgICAgICAgbnVtYmVyID4+
PSA0OwotICAgIH0gd2hpbGUgKHJlc3VsdC5zaXplKCkgPCBkZXNpcmVkRGlnaXRzKTsKLQotICAg
IEFTU0VSVChyZXN1bHQuc2l6ZSgpID09IGRlc2lyZWREaWdpdHMpOwotICAgIHJlc3VsdC5yZXZl
cnNlKCk7Ci0gICAgZGVzdGluYXRpb24uYXBwZW5kKHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXpl
KCkpOworICAgICAgICArK2RpZ2l0czsKKyAgICAgICAgdW5zaWduZWROdW1iZXIgPj49IDQ7Cisg
ICAgfSB3aGlsZSAodW5zaWduZWROdW1iZXIpOworICAgIGZvciAoOyBkaWdpdHMgPCBkZXNpcmVk
RGlnaXRzOyArK2RpZ2l0cykKKyAgICAgICAgZGVzdGluYXRpb24uYXBwZW5kKCcwJyk7CisgICAg
YXBwZW5kVW5zaWduZWRBc0hleChudW1iZXIsIGRlc3RpbmF0aW9uLCBtb2RlKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV1RGCkBAIC0xMTMsNiArODIsNCBAQCBpbmxpbmUgdm9pZCBhcHBlbmRVbnNp
Z25lZEFzSGV4Rml4ZWRTaXplKHVuc2lnbmVkIG51bWJlciwgVCYgZGVzdGluYXRpb24sIHVuc2ln
bgogdXNpbmcgV1RGOjphcHBlbmRCeXRlQXNIZXg7CiB1c2luZyBXVEY6OmFwcGVuZFVuc2lnbmVk
QXNIZXg7CiB1c2luZyBXVEY6OmFwcGVuZFVuc2lnbmVkQXNIZXhGaXhlZFNpemU7Ci11c2luZyBX
VEY6OnBsYWNlQnl0ZUFzSGV4OwotdXNpbmcgV1RGOjpwbGFjZUJ5dGVBc0hleENvbXByZXNzSWZQ
b3NzaWJsZTsKIHVzaW5nIFdURjo6TG93ZXJjYXNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvTG9nZ2VyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2dnZXIuaAppbmRleCBhODg4M2U4MzdlNGFi
MmRjMzFiNzczMTVhMzZmZjIyNzhmZjJkNzVjLi4yODk3ZDAwYWY3ZWM2ZTk1ZmI1ZDA4ZTYxMTYy
MTJiMjgyN2E2ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Mb2dnZXIuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9Mb2dnZXIuaApAQCAtMjcyLDcgKzI3Miw3IEBAIHN0cnVjdCBMb2dBcmd1
bWVudDxMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyPiB7CiAgICAgICAgIH0KICAgICAgICAgYnVp
bGRlci5hcHBlbmQodmFsdWUubWV0aG9kTmFtZSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCco
Jyk7Ci0gICAgICAgIGFwcGVuZFVuc2lnbmVkNjRBc0hleCh2YWx1ZS5vYmplY3RQdHIsIGJ1aWxk
ZXIpOworICAgICAgICBhcHBlbmRVbnNpZ25lZEFzSGV4KHZhbHVlLm9iamVjdFB0ciwgYnVpbGRl
cik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKSAiKTsKICAgICAgICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9V
UkwuY3BwIGIvU291cmNlL1dURi93dGYvVVJMLmNwcAppbmRleCBiNzhkYjlmMWM4ZjExZWMxMmQ5
MzQxM2JkODU5ODRmMThiNjBjYTA2Li5mYTAwMWE4NTFiODQ5NzY3MmVjZTM0ZWRkOGIxNTg2NTEw
ZTI1NzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1VSTC5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2lu
Y2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1
ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0
Zi9jb2NvYS9OU1VSTEV4dHJhcy5oCmluZGV4IDUzMzcxMjQ4ZTRjMTVlNjgzYzNhN2M3ZDM0OTA3
MThkMTNlZTE4YzkuLmJiNmRjYzIzMjUxYjQ4OGFhMTc2Y2Q2MzI1MDA5ZTUzMjYxZjk1MjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLmgKKysrIGIvU291cmNl
L1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMuaApAQCAtMjgsOCArMjgsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotQGNsYXNzIE5TU3RyaW5nOwotQGNsYXNzIE5TVVJMOworI2ltcG9ydCA8Rm91bmRh
dGlvbi9Gb3VuZGF0aW9uLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05T
VVJMRXh0cmFzLm1tCmluZGV4IGRmOGI4MzExNmQ0ODU3MTYwZGU5MTNmMDAxODE2ZTY5NzYyNTMx
Y2UuLjU2ZjFmM2Q1MmJiZjMyYmExM2RkZDE0NmQ4NDI5MjFkZmQ3ZGJkNDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L2NvY29hL05TVVJMRXh0cmFzLm1tCkBAIC0yNywxMSArMjcsOSBAQAogICovCiAKICNpbXBvcnQg
ImNvbmZpZy5oIgotI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0ICJO
U1VSTEV4dHJhcy5oIgogCiAjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KLSNpbXBvcnQgPHd0Zi9I
ZXhOdW1iZXIuaD4KICNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1VSTEhlbHBlcnMuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggYzg1YTAzNWQ1
MmZiN2VjNjU0MDBlNDM5NjdhMjhmMTBjNjk2MDAwOC4uNWU5ZWE1MjZmNWRhM2M3NGE5MjI5YmNm
ZjFjODhmOTJjM2Y5NjY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAKQEAgLTk4LDkgKzk4LDEwIEBAIHN0YXRpYyBTdHJpbmcgZW5jb2Rl
UHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsKICAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm90b2NvbC5sZW5ndGgo
KTsgaSsrKSB7Ci0gICAgICAgIGlmIChwcm90b2NvbFtpXSA8IDB4MjAgfHwgcHJvdG9jb2xbaV0g
PiAweDdFKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlxcdSUw
NFgiLCBwcm90b2NvbFtpXSkpOwotICAgICAgICBlbHNlIGlmIChwcm90b2NvbFtpXSA9PSAweDVj
KQorICAgICAgICBpZiAocHJvdG9jb2xbaV0gPCAweDIwIHx8IHByb3RvY29sW2ldID4gMHg3RSkg
eworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcXHUiKTsKKyAgICAgICAgICAg
IGFwcGVuZFVuc2lnbmVkQXNIZXhGaXhlZFNpemUocHJvdG9jb2xbaV0sIGJ1aWxkZXIsIDQpOwor
ICAgICAgICB9IGVsc2UgaWYgKHByb3RvY29sW2ldID09IDB4NWMpCiAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIlxcXFwiKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQocHJvdG9jb2xbaV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlclRva2VuLmNwcAppbmRleCA3YjhlNjAzM2M2ZjUyNWE5NWNmMDljYjE1Y2U3MWM2Njhm
YjI2ZGU5Li5hMTEzNWFhODIwZWY4ODE3NGE3Y2JiNDVjMjk3OTUzNmI2MzI5MDk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVy
dHlQYXJzZXIuaCIKICNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0zOTIsNyArMzkzLDggQEAgdm9pZCBDU1NQYXJzZXJUb2tlbjo6c2VyaWFsaXpl
KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
RnVuY3Rpb25Ub2tlbjoKICAgICAgICAgc2VyaWFsaXplSWRlbnRpZmllcih2YWx1ZSgpLnRvU3Ry
aW5nKCksIGJ1aWxkZXIpOwotICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJygnKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJygnKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBdEtl
eXdvcmRUb2tlbjoKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ0AnKTsKICAgICAgICAgc2VyaWFs
aXplSWRlbnRpZmllcih2YWx1ZSgpLnRvU3RyaW5nKCksIGJ1aWxkZXIpOwpAQCAtNDAyLDc2ICs0
MDQsMTA3IEBAIHZvaWQgQ1NTUGFyc2VyVG9rZW46OnNlcmlhbGl6ZShTdHJpbmdCdWlsZGVyJiBi
dWlsZGVyKSBjb25zdAogICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9TdHJp
bmcoKSwgYnVpbGRlciwgKGdldEhhc2hUb2tlblR5cGUoKSA9PSBIYXNoVG9rZW5VbnJlc3RyaWN0
ZWQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBVcmxUb2tlbjoKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmQoInVybCgiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ1cmwoIik7
CiAgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVy
KTsKLSAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcpJyk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGVsaW1pdGVyVG9rZW46Ci0g
ICAgICAgIGlmIChkZWxpbWl0ZXIoKSA9PSAnXFwnKQotICAgICAgICAgICAgcmV0dXJuIGJ1aWxk
ZXIuYXBwZW5kKCJcXFxuIik7Ci0gICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZChkZWxpbWl0
ZXIoKSk7CisgICAgICAgIGlmIChkZWxpbWl0ZXIoKSA9PSAnXFwnKSB7CisgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIlxcXG4iKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRlbGltaXRlcigpKTsKKyAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBOdW1iZXJUb2tlbjoKICAgICAgICAgLy8gVGhlc2Ugd29uJ3QgcHJvcGVybHkg
cHJlc2VydmUgdGhlIE51bWVyaWNWYWx1ZVR5cGUgZmxhZwogICAgICAgICBpZiAobV9udW1lcmlj
U2lnbiA9PSBQbHVzU2lnbikKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcrJyk7Ci0gICAg
ICAgIHJldHVybiBidWlsZGVyLmFwcGVuZE51bWJlcihudW1lcmljVmFsdWUoKSk7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG51bWVyaWNWYWx1ZSgpKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBQZXJjZW50YWdlVG9rZW46CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG51
bWVyaWNWYWx1ZSgpKTsKLSAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCclJyk7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCclJyk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGltZW5z
aW9uVG9rZW46CiAgICAgICAgIC8vIFRoaXMgd2lsbCBpbmNvcnJlY3RseSBzZXJpYWxpemUgZS5n
LiA0ZTNlMiBhcyA0MDAwZTIKICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobnVtZXJpY1Zh
bHVlKCkpOwogICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9TdHJpbmcoKSwg
YnVpbGRlcik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVW5pY29kZVJhbmdlVG9rZW46Ci0g
ICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiVSslWC0lWCIsIHVu
aWNvZGVSYW5nZVN0YXJ0KCksIHVuaWNvZGVSYW5nZUVuZCgpKSk7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiVSsiKTsKKyAgICAgICAgYXBwZW5kVW5zaWduZWRBc0hleCh1bmljb2Rl
UmFuZ2VTdGFydCgpLCBidWlsZGVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJy0nKTsKKyAg
ICAgICAgYXBwZW5kVW5zaWduZWRBc0hleCh1bmljb2RlUmFuZ2VFbmQoKSwgYnVpbGRlcik7Cisg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RyaW5nVG9rZW46Ci0gICAgICAgIHJldHVybiBzZXJp
YWxpemVTdHJpbmcodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsKKyAgICAgICAgc2VyaWFs
aXplU3RyaW5nKHZhbHVlKCkudG9TdHJpbmcoKSwgYnVpbGRlcik7CisgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBJbmNsdWRlTWF0Y2hUb2tlbjoKLSAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBw
ZW5kKCJ+PSIpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIn49Iik7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgRGFzaE1hdGNoVG9rZW46Ci0gICAgICAgIHJldHVybiBidWlsZGVy
LmFwcGVuZCgifD0iKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ8PSIpOworICAg
ICAgICBicmVhazsKICAgICBjYXNlIFByZWZpeE1hdGNoVG9rZW46Ci0gICAgICAgIHJldHVybiBi
dWlsZGVyLmFwcGVuZCgiXj0iKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJePSIp
OworICAgICAgICBicmVhazsKICAgICBjYXNlIFN1ZmZpeE1hdGNoVG9rZW46Ci0gICAgICAgIHJl
dHVybiBidWlsZGVyLmFwcGVuZCgiJD0iKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIkPSIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFN1YnN0cmluZ01hdGNoVG9rZW46Ci0g
ICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgiKj0iKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIqPSIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvbHVtblRva2VuOgot
ICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoInx8Iik7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgifHwiKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDRE9Ub2tlbjoKLSAg
ICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCI8IS0tIik7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiPCEtLSIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIENEQ1Rva2VuOgot
ICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoIi0tPiIpOworICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIi0tPiIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEJhZFN0cmluZ1Rv
a2VuOgotICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoIidcbiIpOworICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIidcbiIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEJhZFVy
bFRva2VuOgotICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoInVybCgoKSIpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInVybCgoKSIpOworICAgICAgICBicmVhazsKICAgICBj
YXNlIFdoaXRlc3BhY2VUb2tlbjoKLSAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCcgJyk7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q29sb25Ub2tlbjoKLSAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2VtaWNvbG9u
VG9rZW46Ci0gICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnOycpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgnOycpOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvbW1hVG9rZW46Ci0g
ICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnLCcpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnLCcpOworICAgICAgICBicmVhazsKICAgICBjYXNlIExlZnRQYXJlbnRoZXNpc1Rva2VuOgot
ICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJygnKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoJygnKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSaWdodFBhcmVudGhlc2lzVG9rZW46
Ci0gICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnKScpOworICAgICAgICBidWlsZGVyLmFw
cGVuZCgnKScpOworICAgICAgICBicmVhazsKICAgICBjYXNlIExlZnRCcmFja2V0VG9rZW46Ci0g
ICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnWycpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnWycpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFJpZ2h0QnJhY2tldFRva2VuOgotICAg
ICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJ10nKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
J10nKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMZWZ0QnJhY2VUb2tlbjoKLSAgICAgICAg
cmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCd7Jyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCd7Jyk7
CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmlnaHRCcmFjZVRva2VuOgotICAgICAgICByZXR1
cm4gYnVpbGRlci5hcHBlbmQoJ30nKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJ30nKTsKKyAg
ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEVPRlRva2VuOgogICAgIGNhc2UgQ29tbWVudFRva2Vu
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICBicmVhazsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0xDb21tb24uY3BwCmluZGV4IGRlMjUzMzM4YmNhYzZiYjkwZmNlNWFhZGVjMzAxZTFmZWEyNmU2
MDguLmQzNjkyYTc3Zjg3YTMzYzhlNWFmODY1ZjI3OWNiOWY0OWU2OGY5MzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQz
RE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApAQCAtOTc1LDcgKzk3NSw3
IEBAIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVIYXNoZWROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkK
ICAgICB1aW50NjRfdCBudW1iZXIgPSBuYW1lSGFzaEZvclNoYWRlcihuYW1lLnV0ZjgoKS5kYXRh
KCksIG5hbWUubGVuZ3RoKCkpOwogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIndlYmdsXyIpOwotICAgIGFwcGVuZFVuc2lnbmVkNjRBc0hleChu
dW1iZXIsIGJ1aWxkZXIsIExvd2VyY2FzZSk7CisgICAgYXBwZW5kVW5zaWduZWRBc0hleChudW1i
ZXIsIGJ1aWxkZXIsIExvd2VyY2FzZSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VS
TEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRy
YXMubW0KaW5kZXggZDM2NWIzMTY3Nzc4NDYzNDdjY2YyMzViNzYzZmFmZjMzMDk2NTdmZC4uMzgz
NjhlYzI0N2RkMDA0NGFiOWRhYWU4ZGY2NDA1OTBkZDAyMDI4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCkBAIC0yOCw5ICsyOCw5
IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgi
CisKICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDx3dGYvRnVu
Y3Rpb24uaD4KLSNpbXBvcnQgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbXBvcnQgPHd0Zi9PYmpDUnVu
dGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1Zl
Y3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVB
c1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3Bw
CmluZGV4IDhmZDMwMWYzMWMzYzgzODE0OGIzMDlhNTVjZWM0YTY3NmExNTE4ZGQuLjczMTNjNmIy
MWEwMzhkZDRkYzU0NjA0NjYzMGFiOWFmNTNhOTVhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTE1MCwyMSArMTUwLDE3IEBAIFN0cmlu
ZyBxdW90ZUFuZEVzY2FwZU5vblByaW50YWJsZXMoU3RyaW5nVmlldyBzKQogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgIT0gcy5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIFVDaGFyIGMgPSBz
W2ldOwogICAgICAgICBpZiAoYyA9PSAnXFwnKSB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCdcXCcpOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXFwnKTsKKyAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmRMaXRlcmFsKCJcXFxcIik7CiAgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnIicp
IHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xcJyk7Ci0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCciJyk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiXFxcIiIpOwog
ICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJ1xuJyB8fCBjID09IG5vQnJlYWtTcGFjZSkKICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBp
ZiAoYyA+PSAweDIwICYmIGMgPCAweDdGKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
Yyk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdc
XCcpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3gnKTsKLSAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCd7Jyk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVW5zaWduZWRBc0hl
eChjLCByZXN1bHQpOyAKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiXFx4
eyIpOworICAgICAgICAgICAgICAgIGFwcGVuZFVuc2lnbmVkQXNIZXgoYywgcmVzdWx0KTsKICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd9Jyk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRT
dG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9y
YWdlLmNwcAppbmRleCAxOWE3YTEyY2ZhM2YzMWJmMWUyMTM3YzM1Y2Q1N2QwYTUwN2I5YTlmLi5h
MmQwMzg2YWNmNWQ4YWQ1MzVjNzkxMmE4ODZjYmQwZjAwNTQ3ODY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCkBAIC0yMTUs
NyArMjE1LDcgQEAgdm9pZCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Y29tcGxldGVEZXZpY2VJ
ZEhhc2hTYWx0Rm9yT3JpZ2luQ2FsbChTZWN1cml0eU9yaWcKICAgICAgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOwogICAgICAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eShoYXNoU2FsdFNpemUp
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmFuZG9tRGF0YVNpemU7IGkrKykK
LSAgICAgICAgICAgIGFwcGVuZFVuc2lnbmVkNjRBc0hleChyYW5kb21EYXRhW2ldLCBidWlsZGVy
KTsKKyAgICAgICAgICAgIGFwcGVuZFVuc2lnbmVkQXNIZXgocmFuZG9tRGF0YVtpXSwgYnVpbGRl
cik7CiAKICAgICAgICAgU3RyaW5nIGRldmljZUlkSGFzaFNhbHQgPSBidWlsZGVyLnRvU3RyaW5n
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJk
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3Bw
CmluZGV4IDc1NjRmM2MzNmNhYzZkZWUzMDVhOGQ5NjI1ZDMwZDEwYzY5MGI4YWMuLmQ2YTI5Mzhl
MThhNjUxOWUzMjA3NGYxM2VlODNiMzc3NmIxNDE3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oPgogI2luY2x1ZGUgPHd0Zi9EZWJ1Z1V0aWxpdGllcy5o
PgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDczLDI1ICs0NzQsMzQgQEAgdm9p
ZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmRpZFJlbW92ZUl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSYgYmFja0ZvcndhcmRMaXN0SXQKICNlbmRpZgogfQogCi0KICNpZiAhTE9HX0RJU0FCTEVECisK
IGNvbnN0IGNoYXIqIFdlYkJhY2tGb3J3YXJkTGlzdDo6bG9nZ2luZ1N0cmluZygpCiB7CiAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0
KCJXZWJCYWNrRm9yd2FyZExpc3QgJXAgLSAlenUgZW50cmllcywgaGFzIGN1cnJlbnQgaW5kZXgg
JXMgKCV6dSkiLCB0aGlzLCBtX2VudHJpZXMuc2l6ZSgpLCBtX2N1cnJlbnRJbmRleCA/ICJZRVMi
IDogIk5PIiwgbV9jdXJyZW50SW5kZXggPyAqbV9jdXJyZW50SW5kZXggOiAwKSk7CisKKyAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIldlYkJhY2tGb3J3YXJkTGlzdCAiKTsKKyAgICBhcHBlbmRV
bnNpZ25lZEFzSGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSwgYnVpbGRlcik7
CisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgLSAiKTsKKyAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihtX2VudHJpZXMuc2l6ZSgpKTsKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBlbnRy
aWVzLCBoYXMgY3VycmVudCBpbmRleCAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChtX2N1cnJlbnRJ
bmRleCA/ICJZRVMiIDogIk5PIik7CisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgKCIpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG1fY3VycmVudEluZGV4ID8gKm1fY3VycmVudEluZGV4
IDogMCk7CisgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9lbnRyaWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJc
biIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICAgICAgaWYgKG1fY3VycmVu
dEluZGV4ICYmICptX2N1cnJlbnRJbmRleCA9PSBpKQotICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIiAqICIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgKiAiKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAtICIpOwotCisgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAtICIpOwogICAgICAgICBidWlsZGVyLmFwcGVu
ZChtX2VudHJpZXNbaV0tPmxvZ2dpbmdTdHJpbmcoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGRl
YnVnU3RyaW5nKCJcbiIsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CisKICNlbmRpZiAvLyAhTE9H
X0RJU0FCTEVECiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDI2NDU2ZDE2OGVlN2RmNTEzM2EzMjA5Mjll
MDhkN2YxNmFkZWM3ZGQuLjE0ZWZlYTFiNjM5NmQ3ZjhlNGYwNDhlMTFlMGRlY2I5YzE3MjM0Njkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxOS0wMi0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgU3dpdGNoIHVzZXMgb2YgU3RyaW5nQnVpbGRlciB3aXRoIFN0cmluZzo6Zm9ybWF0
IGZvciBoZXggbnVtYmVycyB0byB1c2UgSGV4TnVtYmVyLmggaW5zdGVhZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDg1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcDogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBpbmNsdWRlIG9mIEhleE51bWJl
ci5oLgorCiAyMDE5LTAyLTA5ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBBZGQgbW9yZSB0ZXN0cyBmb3IgY2xhbXBUbzw+KCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNGNjNGNjY2MwZjAyMzg3NmRlNGEw
MGRhYjM2N2VjOGM2ODFhYzI5Yi4uODA1NWVmYzFhM2RmZTE1MWVhMTQ4MjEyMjllOGU5Y2IwYTA4
MzlhNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTcw
LDcgKzcwLDYgQEAKICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVk
UG9vbC5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgot
I2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361650</attachid>
            <date>2019-02-10 16:37:18 -0800</date>
            <delta_ts>2019-02-10 20:16:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194485-20190210163717.patch</filename>
            <type>text/plain</type>
            <size>27596</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NjIxMDFiY2I1YzUzZDExZmRjMGYxNjNlMTI5Yjc2ZDkxNzNiYTA2Li42NWNhMjBmZmQ0ODY0MzQz
MjFiMWY4ZGI5YmI0ODE1Y2E4YTlkNDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxOS0wMi0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgU3dpdGNoIHVzZXMgb2YgU3RyaW5nQnVpbGRlciB3aXRoIFN0cmluZzo6Zm9ybWF0
IGZvciBoZXggbnVtYmVycyB0byB1c2UgSGV4TnVtYmVyLmggaW5zdGVhZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDg1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1
aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKTogVXNl
IGFwcGVuZFVuc2lnbmVkQXNIZXggYWxvbmcgd2l0aAorICAgICAgICByZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4gdG8gcmVwbGFjZSB1c2VzIG9mIFN0cmluZzo6Zm9ybWF0IHdpdGggIiVwIi4K
KworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAg
ICAoSlNDOjplbmNvZGUpOiBSZW1vdmVkIHNvbWUgdW5uZWVkZWQgY2FzdHMgaW4gU3RyaW5nQnVp
bGRlciBjb2RlLAorICAgICAgICBpbmNsdWRpbmcgb25lIGluIGEgY2FsbCB0byBhcHBlbmRCeXRl
QXNIZXguCisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNFc2NhcGUpOiBEaXR0by4KKwogMjAxOS0w
Mi0wOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIExleGVyIHNob3VsZCB1c2UgaXNMYXRpbjEgaW1wbGVtZW50YXRpb24gaW4gV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IGY3YWFiYmQwZGE4ZGViNGQ4Nzg2OGMyNWJiMmRlOTM5YjQwMmY3MjMuLjkzNGQ2MmUxMmY1
NTE5YzgzN2E4ZTQwN2ZlOTE4ZDY3NmE2MjYzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTkt
MDItMTAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFN3aXRjaCB1
c2VzIG9mIFN0cmluZ0J1aWxkZXIgd2l0aCBTdHJpbmc6OmZvcm1hdCBmb3IgaGV4IG51bWJlcnMg
dG8gdXNlIEhleE51bWJlci5oIGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NDQ4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL0hleE51bWJlci5oOiBSZW1vdmVkIHVudXNlZCBmdW5j
dGlvbnMgcGxhY2VCeXRlQXNIZXhDb21wcmVzc0lmUG9zc2libGUgYW5kCisgICAgICAgIHBsYWNl
Qnl0ZUFzSGV4LiBDYW4gYWx3YXlzIGJyaW5nIHRoZW0gYmFjayBpZiBzb21lb25lIG5lZWRzIHRo
ZW0uIFVwZGF0ZWQKKyAgICAgICAgYXBwZW5kVW5zaWduZWRBc0hleCB0byBiZSBhIHRlbXBsYXRl
IHNvIHdlIGNhbiB1c2UgaXQgb24gYW55IGludGVnZXIgdHlwZSwKKyAgICAgICAgZ290IHJpZCBv
ZiB1bm5lY2Vzc2FyeSB1c2Ugb2YgVmVjdG9yIGFuZCB1bm5lY2Vzc2FyeSByZXZlcnNpbmcsIGFu
ZCBnb3QgcmlkIG9mCisgICAgICAgIGFwcGVuZFVuc2lnbmVkNjRBc0hleCBzaW5jZSBjYWxsZXJz
IGNhbiBub3cganVzdCB1c2UgYXBwZW5kVW5zaWduZWRBc0hleC4KKyAgICAgICAgUmV3cm90ZSBh
cHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXplIHRvIHNoYXJlIG1vZGUgY29kZSByYXRoZXIgdGhh
biByZXBsaWNhdGluZy4KKworICAgICAgICAqIHd0Zi9Mb2dnZXIuaDogVXNlIGFwcGVuZFVuc2ln
bmVkQXNIZXggaW5zdGVhZCBvZiBhcHBlbmRVbnNpZ25lZDY0QXNIZXguCisKKyAgICAgICAgKiB3
dGYvVVJMLmNwcDogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBpbmNsdWRlIG9mIEhleE51bWJlci5oLgor
CisgICAgICAgICogd3RmL2NvY29hL05TVVJMRXh0cmFzLmg6IEFkZGVkIG1pc3NpbmcgaW5jbHVk
ZSBvZiBGb3VuZGF0aW9uLmggdGhhdCB3YXMKKyAgICAgICAgd29ya2VkIGFyb3VuZCBpbiBOU1VS
TEV4dHJhcy5tbS4KKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxFeHRyYXMubW06IFJlbW92ZWQg
dW5uZWNlc3NhcnkgaW5jbHVkZXMgb2YgSGV4TnVtYmVyLmgKKyAgICAgICAgYW5kIEZvdW5kYXRp
b24uaC4KKwogMjAxOS0wMi0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgRWxpbWluYXRlIHVubmVjZXNzYXJ5IFN0cmluZyB0ZW1wb3JhcmllcyBieSB1c2luZyBT
dHJpbmdDb25jYXRlbmF0ZU51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1YjE4YmQ4NDRmOWVlMTMzMWJi
ZGE5MGRiMWM5Y2U1Mjk2M2QxYWIzLi43NGJiZWNkMmMwOTI3MTA3N2EyMDBiZDk2MWFmNTRmMzFm
N2JlZTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTktMDItMTAgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFN3aXRjaCB1c2VzIG9mIFN0cmluZ0J1
aWxkZXIgd2l0aCBTdHJpbmc6OmZvcm1hdCBmb3IgaGV4IG51bWJlcnMgdG8gdXNlIEhleE51bWJl
ci5oIGluc3RlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NDQ4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjplbmNvZGVQcm90b2NvbFN0cmluZyk6IFVzZSBhcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXpl
IGluc3RlYWQgb2YgU3RyaW5nOjpmb3JtYXQuCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Bh
cnNlclRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpzZXJpYWxp
emUgY29uc3QpOiBGaXhlZCBzdHlsZSBvZiBtYW55IHJldHVybiBzdGF0ZW1lbnRzCisgICAgICAg
IHRoYXQgY2FsbGVkIGEgZnVuY3Rpb24gcmV0dXJuaW5nIHZvaWQ7IGRvZXNuJ3QgbWF0Y2ggV2Vi
S2l0J3MgcHJldmFpbGluZyBzdHlsZS4KKyAgICAgICAgQWxzbyB1c2UgYnJlYWsgaW5zdGVhZCBv
ZiByZXR1cm4uIFVzZWQgYXBwZW5kTGl0ZXJhbCBpbnN0ZWFkIG9mIGFwcGVuZCBpbiBtYW55Cisg
ICAgICAgIGNhc2VzLCBhbmQgYXBwZW5kIGNoYXJhY3RlciBpbnN0ZWFkIG9mIHNpbmdsZS1jaGFy
YWN0ZXIgbGl0ZXJhbCBpbiBvdGhlcnMuCisgICAgICAgIFVzZSBhcHBlbmRVbnNpZ25lZEFzSGV4
IGluc3RlYWQgb2YgU3RyaW5nOjpmb3JtYXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Z2VuZXJhdGVIYXNoZWROYW1lKTogVXNlIGFwcGVuZFVuc2lnbmVkQXNIZXggaW5zdGFk
IG9mIGFwcGVuZFVuc2lnbmVkNjRBc0hleC4KKyAgICAgICAgU2hvdWxkIGNvbWUgYmFjayBoZXJl
IGFuZCB1c2UgbWFrZVN0cmluZyBvbmNlIHdlIG1ha2UgSGV4TnVtYmVyLmggd29yayB3aXRoIHRo
YXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tOiBSZW1v
dmVkIHVubmVjZXNzYXJ5IGluY2x1ZGUgb2YgSGV4TnVtYmVyLmguCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpxdW90ZUFuZEVz
Y2FwZU5vblByaW50YWJsZXMpOiBVc2UgYXBwZW5kTGl0ZXJhbCBpbnN0ZWFkIG9mIG11bHRpcGxl
IGNhbGxzCisgICAgICAgIHRvIGNoYXJhY3RlciBhcHBlbmQuIFRvdWNoZWQgYmVjYXVzZSBpdCB3
YXMgbmV4dCB0byBhIGNhbGwgdG8gYXBwZW5kVW5zaWduZWRBc0hleC4KKwogMjAxOS0wMi0xMCAg
UGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgR1RLIERlYnVnIGJ1aWxkIGZpeCBhZnRlciByMjQxMTQ4LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlZGM0
YjEyOGRhZWVlOGEyNWMzNmJlYzc5NjgwOTFkN2JjZmYxNmU0Li44ZjI5ZGIxYzRlMzM3MzA3YTgx
NmRhMzhlOWFkMTFmYTljYWMyOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTAy
LTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTd2l0Y2ggdXNl
cyBvZiBTdHJpbmdCdWlsZGVyIHdpdGggU3RyaW5nOjpmb3JtYXQgZm9yIGhleCBudW1iZXJzIHRv
IHVzZSBIZXhOdW1iZXIuaCBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTQ0ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpjb21wbGV0ZURldmlj
ZUlkSGFzaFNhbHRGb3JPcmlnaW5DYWxsKTogVXNlCisgICAgICAgIGFwcGVuZFVuc2lnbmVkQXNI
ZXggaW5zdGVhZCBvZiBhcHBlbmRVbnNpZ25lZDY0QXNIZXguCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0Zvcndh
cmRMaXN0Ojpsb2dnaW5nU3RyaW5nKTogVXNlIGFwcGVuZFVuc2lnbmVkQXNIZXggYW5kCisgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PiBpbnN0ZWFkIG9mIFN0cmluZzo6Zm9ybWF0
IGFuZCAiJXAiLgorCiAyMDE5LTAyLTEwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjQxMTY3LgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcApp
bmRleCAzMDNhMWY3ZDViNTg3ZjhjODk3MjZlMjQ4NGUyY2M5NTRhYWIwMDA3Li5jZDkxZjgwMGY4
MGQ2NjRhMTEzMzI0NjM0OTJlNjNjOGNhMzFjMGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgIkpTQ2FzdC5oIgogI2luY2x1ZGUgIlByZXZlbnRDb2xsZWN0aW9uU2NvcGUuaCIK
ICNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDM0LDEwICs0
MzUsMTEgQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24oRnVuY3Rpb248Ym9vbCAo
Y29uc3QgSGVhcFNuYXBzaG90Tm9kZSYpPiBhbGxvd04KICAgICAgICAgaWYgKG1fc25hcHNob3RU
eXBlID09IFNuYXBzaG90VHlwZTo6R0NEZWJ1Z2dpbmdTbmFwc2hvdCkgewogICAgICAgICAgICAg
anNvbi5hcHBlbmQoJywnKTsKICAgICAgICAgICAgIGpzb24uYXBwZW5kTnVtYmVyKGxhYmVsSW5k
ZXgpOwotICAgICAgICAgICAganNvbi5hcHBlbmQoJywnKTsKLSAgICAgICAgICAgIGpzb24uYXBw
ZW5kKFN0cmluZzo6Zm9ybWF0KCJcIiVwXCIiLCBub2RlLmNlbGwpKTsgLy8gRklYTUU6IFNob3Vs
ZCBhZGQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kQWRkcmVzcyh2b2lkKikuCi0gICAgICAgICAgICBq
c29uLmFwcGVuZCgnLCcpOwotICAgICAgICAgICAganNvbi5hcHBlbmQoU3RyaW5nOjpmb3JtYXQo
IlwiJXBcIiIsIHdyYXBwZWRBZGRyZXNzKSk7CisgICAgICAgICAgICBqc29uLmFwcGVuZExpdGVy
YWwoIixcIiIpOworICAgICAgICAgICAgYXBwZW5kVW5zaWduZWRBc0hleChyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4obm9kZS5jZWxsKSwganNvbiwgTG93ZXJjYXNlKTsKKyAgICAgICAgICAg
IGpzb24uYXBwZW5kTGl0ZXJhbCgiXCIsXCIiKTsKKyAgICAgICAgICAgIGFwcGVuZFVuc2lnbmVk
QXNIZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHdyYXBwZWRBZGRyZXNzKSwganNvbiwg
TG93ZXJjYXNlKTsKKyAgICAgICAgICAgIGpzb24uYXBwZW5kKCciJyk7CiAgICAgICAgIH0KICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggNjhhODJjMjNhNDNiOTcxMjQ1MjkzNmYyMjZj
OWQ1ZjgzOGQwNWJiOS4uMTdlZTMzZjA0OWYyOGZmMGNkYzlhZDY2OWQ3NmYzZTFjNmU4Mzg1NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0YXRpYyBKU1ZhbHVlIGVu
Y29kZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEJpdG1hcDwyNTY+JiBkb05vdEVzY2FwZSwgY29u
c3QgQ2hhCiAgICAgICAgICAgICAvLyA0LWQtdmktMS4gTGV0IGpPY3RldCBiZSB0aGUgdmFsdWUg
YXQgaW5kZXggaiB3aXRoaW4gT2N0ZXRzLgogICAgICAgICAgICAgLy8gNC1kLXZpLTIuIExldCBT
IGJlIGEgU3RyaW5nIGNvbnRhaW5pbmcgdGhyZWUgY29kZSB1bml0cyAiJVhZIiB3aGVyZSBYWSBh
cmUgdHdvIHVwcGVyY2FzZSBoZXhhZGVjaW1hbCBkaWdpdHMgZW5jb2RpbmcgdGhlIHZhbHVlIG9m
IGpPY3RldC4KICAgICAgICAgICAgIC8vIDQtZC12aS0zLiBMZXQgUiBiZSBhIG5ldyBTdHJpbmcg
dmFsdWUgY29tcHV0ZWQgYnkgY29uY2F0ZW5hdGluZyB0aGUgcHJldmlvdXMgdmFsdWUgb2YgUiBh
bmQgUy4KLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPignJScp
KTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCclJyk7CiAgICAgICAgICAgICBhcHBlbmRC
eXRlQXNIZXgodXRmOE9jdGV0c0J1ZmZlcltpbmRleF0sIGJ1aWxkZXIpOwogICAgICAgICB9CiAg
ICAgfQpAQCAtNjAwLDggKzYwMCw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xv
YmFsRnVuY0VzY2FwZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgICAgaWYgKGRvTm90
RXNjYXBlLmdldChzdGF0aWNfY2FzdDxMQ2hhcj4odSkpKQogICAgICAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgqYyk7CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPignJScpKTsKLSAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KHN0YXRpY19jYXN0PExDaGFyPih1KSwgYnVpbGRl
cik7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCclJyk7CisgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZEJ5dGVBc0hleCh1LCBidWlsZGVyKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgYnVpbGRl
ci50b1N0cmluZygpKTsKQEAgLTYxMSwxNCArNjExLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2xvYmFsRnVuY0VzY2FwZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGZvciAo
dW5zaWduZWQgayA9IDA7IGsgPCB2aWV3Lmxlbmd0aCgpOyBrKyssIGMrKykgewogICAgICAgICAg
ICAgVUNoYXIgdSA9IGNbMF07CiAgICAgICAgICAgICBpZiAodSA+PSBkb05vdEVzY2FwZS5zaXpl
KCkpIHsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4o
JyUnKSk7Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+
KCd1JykpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiJXUiKTsKICAg
ICAgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgodSA+PiA4LCBidWlsZGVyKTsKICAgICAgICAg
ICAgICAgICBhcHBlbmRCeXRlQXNIZXgodSAmIDB4RkYsIGJ1aWxkZXIpOwogICAgICAgICAgICAg
fSBlbHNlIGlmIChkb05vdEVzY2FwZS5nZXQoc3RhdGljX2Nhc3Q8TENoYXI+KHUpKSkKICAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgqYyk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4oJyUnKSk7CisgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyUnKTsKICAgICAgICAgICAgICAgICBhcHBlbmRC
eXRlQXNIZXgodSwgYnVpbGRlcik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0hleE51bWJlci5oIGIvU291cmNlL1dURi93dGYvSGV4TnVtYmVy
LmgKaW5kZXggYzY3YjcxZWRjMDljOWJlNmRlNjU3NjcwYjcxNDM0NGYyMGQ4OTE3MC4uNDNhMWEx
MGZlMDRiZDk3NjE3MjNlNzNkNmRmN2U0NzMxMjA0NDc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvSGV4TnVtYmVyLmgKKysrIGIvU291cmNlL1dURi93dGYvSGV4TnVtYmVyLmgKQEAgLTIw
LDYgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTQ1
LDY3ICs0NiwzNSBAQCBpbmxpbmUgdm9pZCBhcHBlbmRCeXRlQXNIZXgodW5zaWduZWQgY2hhciBi
eXRlLCBUJiBkZXN0aW5hdGlvbiwgSGV4Q29udmVyc2lvbk1vZAogICAgIGRlc3RpbmF0aW9uLmFw
cGVuZChoZXhEaWdpdHNbYnl0ZSAmIDB4Rl0pOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
aW5saW5lIHZvaWQgcGxhY2VCeXRlQXNIZXhDb21wcmVzc0lmUG9zc2libGUodW5zaWduZWQgY2hh
ciBieXRlLCBUJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQmIGluZGV4LCBIZXhDb252ZXJzaW9uTW9k
ZSBtb2RlID0gVXBwZXJjYXNlKQotewotICAgIGF1dG8qIGhleERpZ2l0cyA9IEludGVybmFsOjpo
ZXhEaWdpdHNGb3JNb2RlKG1vZGUpOwotICAgIGlmIChieXRlID49IDB4MTApCi0gICAgICAgIGRl
c3RpbmF0aW9uW2luZGV4KytdID0gaGV4RGlnaXRzW2J5dGUgPj4gNF07Ci0gICAgZGVzdGluYXRp
b25baW5kZXgrK10gPSBoZXhEaWdpdHNbYnl0ZSAmIDB4Rl07Ci19Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci1pbmxpbmUgdm9pZCBwbGFjZUJ5dGVBc0hleCh1bnNpZ25lZCBjaGFyIGJ5dGUsIFQm
IGRlc3RpbmF0aW9uLCBIZXhDb252ZXJzaW9uTW9kZSBtb2RlID0gVXBwZXJjYXNlKQotewotICAg
IGF1dG8qIGhleERpZ2l0cyA9IEludGVybmFsOjpoZXhEaWdpdHNGb3JNb2RlKG1vZGUpOwotICAg
ICpkZXN0aW5hdGlvbisrID0gaGV4RGlnaXRzW2J5dGUgPj4gNF07Ci0gICAgKmRlc3RpbmF0aW9u
KysgPSBoZXhEaWdpdHNbYnl0ZSAmIDB4Rl07Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1p
bmxpbmUgdm9pZCBhcHBlbmRVbnNpZ25lZEFzSGV4KHVuc2lnbmVkIG51bWJlciwgVCYgZGVzdGlu
YXRpb24sIEhleENvbnZlcnNpb25Nb2RlIG1vZGUgPSBVcHBlcmNhc2UpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBOdW1iZXJUeXBlLCB0eXBlbmFtZSBEZXN0aW5hdGlvblR5cGU+CitpbmxpbmUgdm9pZCBh
cHBlbmRVbnNpZ25lZEFzSGV4KE51bWJlclR5cGUgbnVtYmVyLCBEZXN0aW5hdGlvblR5cGUmIGRl
c3RpbmF0aW9uLCBIZXhDb252ZXJzaW9uTW9kZSBtb2RlID0gVXBwZXJjYXNlKQogewotICAgIGF1
dG8qIGhleERpZ2l0cyA9IEludGVybmFsOjpoZXhEaWdpdHNGb3JNb2RlKG1vZGUpOwotICAgIFZl
Y3RvcjxMQ2hhciwgOD4gcmVzdWx0OworICAgIC8vIEVhY2ggYnl0ZSBjYW4gZ2VuZXJhdGUgdXAg
dG8gdHdvIGRpZ2l0cy4KKyAgICBzdGQ6OmFycmF5PExDaGFyLCBzaXplb2YoTnVtYmVyVHlwZSkg
KiAyPiBidWZmZXI7CisgICAgYXV0byBzdGFydCA9IGJ1ZmZlci5lbmQoKTsKKyAgICBhdXRvIHVu
c2lnbmVkTnVtYmVyID0gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPE51
bWJlclR5cGU+Ojp0eXBlPihudW1iZXIpOworICAgIGF1dG8gaGV4RGlnaXRzID0gSW50ZXJuYWw6
OmhleERpZ2l0c0Zvck1vZGUobW9kZSk7CiAgICAgZG8gewotICAgICAgICByZXN1bHQuYXBwZW5k
KGhleERpZ2l0c1tudW1iZXIgJSAxNl0pOwotICAgICAgICBudW1iZXIgPj49IDQ7Ci0gICAgfSB3
aGlsZSAobnVtYmVyID4gMCk7Ci0KLSAgICByZXN1bHQucmV2ZXJzZSgpOwotICAgIGRlc3RpbmF0
aW9uLmFwcGVuZChyZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpKTsKLX0KLSAgICAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBhcHBlbmRVbnNpZ25lZDY0QXNIZXgodWludDY0
X3QgbnVtYmVyLCBUJiBkZXN0aW5hdGlvbiwgSGV4Q29udmVyc2lvbk1vZGUgbW9kZSA9IFVwcGVy
Y2FzZSkKLXsKLSAgICBhdXRvKiBoZXhEaWdpdHMgPSBJbnRlcm5hbDo6aGV4RGlnaXRzRm9yTW9k
ZShtb2RlKTsKLSAgICBWZWN0b3I8TENoYXIsIDg+IHJlc3VsdDsKLSAgICBkbyB7Ci0gICAgICAg
IHJlc3VsdC5hcHBlbmQoaGV4RGlnaXRzW251bWJlciAlIDE2XSk7Ci0gICAgICAgIG51bWJlciA+
Pj0gNDsKLSAgICB9IHdoaWxlIChudW1iZXIgPiAwKTsKLSAgICAKLSAgICByZXN1bHQucmV2ZXJz
ZSgpOwotICAgIGRlc3RpbmF0aW9uLmFwcGVuZChyZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgp
KTsKKyAgICAgICAgQVNTRVJUKHN0YXJ0ID4gYnVmZmVyLmJlZ2luKCkpOworICAgICAgICAqLS1z
dGFydCA9IGhleERpZ2l0c1t1bnNpZ25lZE51bWJlciAmIDB4Rl07CisgICAgICAgIHVuc2lnbmVk
TnVtYmVyID4+PSA0OworICAgIH0gd2hpbGUgKHVuc2lnbmVkTnVtYmVyKTsKKyAgICBkZXN0aW5h
dGlvbi5hcHBlbmQoJipzdGFydCwgYnVmZmVyLmVuZCgpIC0gc3RhcnQpOwogfQogCi0vLyBTYW1l
IGFzIGFwcGVuZFVuc2lnbmVkQXNIZXgsIGJ1dCB1c2luZyBleGFjdGx5ICdkZXNpcmVkRGlnaXRz
JyBmb3IgdGhlIGNvbnZlcnNpb24uCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQg
YXBwZW5kVW5zaWduZWRBc0hleEZpeGVkU2l6ZSh1bnNpZ25lZCBudW1iZXIsIFQmIGRlc3RpbmF0
aW9uLCB1bnNpZ25lZCBkZXNpcmVkRGlnaXRzLCBIZXhDb252ZXJzaW9uTW9kZSBtb2RlID0gVXBw
ZXJjYXNlKQorLy8gU2FtZSBhcyBhcHBlbmRVbnNpZ25lZEFzSGV4LCBidXQgemVyby1wYWRkaW5n
IHRvIGdldCBhdCBsZWFzdCB0aGUgZGVzaXJlZCBudW1iZXIgb2YgZGlnaXRzLgordGVtcGxhdGU8
dHlwZW5hbWUgTnVtYmVyVHlwZSwgdHlwZW5hbWUgRGVzdGluYXRpb25UeXBlPgoraW5saW5lIHZv
aWQgYXBwZW5kVW5zaWduZWRBc0hleEZpeGVkU2l6ZShOdW1iZXJUeXBlIG51bWJlciwgRGVzdGlu
YXRpb25UeXBlJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgZGVzaXJlZERpZ2l0cywgSGV4Q29udmVy
c2lvbk1vZGUgbW9kZSA9IFVwcGVyY2FzZSkKIHsKLSAgICBBU1NFUlQoZGVzaXJlZERpZ2l0cyk7
Ci0KLSAgICBhdXRvKiBoZXhEaWdpdHMgPSBJbnRlcm5hbDo6aGV4RGlnaXRzRm9yTW9kZShtb2Rl
KTsKLSAgICBWZWN0b3I8TENoYXIsIDg+IHJlc3VsdDsKKyAgICB1bnNpZ25lZCBkaWdpdHMgPSAw
OworICAgIGF1dG8gdW5zaWduZWROdW1iZXIgPSBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6Om1h
a2VfdW5zaWduZWQ8TnVtYmVyVHlwZT46OnR5cGU+KG51bWJlcik7CiAgICAgZG8gewotICAgICAg
ICByZXN1bHQuYXBwZW5kKGhleERpZ2l0c1tudW1iZXIgJSAxNl0pOwotICAgICAgICBudW1iZXIg
Pj49IDQ7Ci0gICAgfSB3aGlsZSAocmVzdWx0LnNpemUoKSA8IGRlc2lyZWREaWdpdHMpOwotCi0g
ICAgQVNTRVJUKHJlc3VsdC5zaXplKCkgPT0gZGVzaXJlZERpZ2l0cyk7Ci0gICAgcmVzdWx0LnJl
dmVyc2UoKTsKLSAgICBkZXN0aW5hdGlvbi5hcHBlbmQocmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNp
emUoKSk7CisgICAgICAgICsrZGlnaXRzOworICAgICAgICB1bnNpZ25lZE51bWJlciA+Pj0gNDsK
KyAgICB9IHdoaWxlICh1bnNpZ25lZE51bWJlcik7CisgICAgZm9yICg7IGRpZ2l0cyA8IGRlc2ly
ZWREaWdpdHM7ICsrZGlnaXRzKQorICAgICAgICBkZXN0aW5hdGlvbi5hcHBlbmQoJzAnKTsKKyAg
ICBhcHBlbmRVbnNpZ25lZEFzSGV4KG51bWJlciwgZGVzdGluYXRpb24sIG1vZGUpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKQEAgLTExMyw2ICs4Miw0IEBAIGlubGluZSB2b2lkIGFwcGVuZFVu
c2lnbmVkQXNIZXhGaXhlZFNpemUodW5zaWduZWQgbnVtYmVyLCBUJiBkZXN0aW5hdGlvbiwgdW5z
aWduCiB1c2luZyBXVEY6OmFwcGVuZEJ5dGVBc0hleDsKIHVzaW5nIFdURjo6YXBwZW5kVW5zaWdu
ZWRBc0hleDsKIHVzaW5nIFdURjo6YXBwZW5kVW5zaWduZWRBc0hleEZpeGVkU2l6ZTsKLXVzaW5n
IFdURjo6cGxhY2VCeXRlQXNIZXg7Ci11c2luZyBXVEY6OnBsYWNlQnl0ZUFzSGV4Q29tcHJlc3NJ
ZlBvc3NpYmxlOwogdXNpbmcgV1RGOjpMb3dlcmNhc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9Mb2dnZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0xvZ2dlci5oCmluZGV4IGE4ODgzZTgzN2U0
YWIyZGMzMWI3NzMxNWEzNmZmMjI3OGZmMmQ3NWMuLjI4OTdkMDBhZjdlYzZlOTVmYjVkMDhlNjEx
NjIxMmIyODI3YTZlZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xvZ2dlci5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0xvZ2dlci5oCkBAIC0yNzIsNyArMjcyLDcgQEAgc3RydWN0IExvZ0Fy
Z3VtZW50PExvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXI+IHsKICAgICAgICAgfQogICAgICAgICBi
dWlsZGVyLmFwcGVuZCh2YWx1ZS5tZXRob2ROYW1lKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
JygnKTsKLSAgICAgICAgYXBwZW5kVW5zaWduZWQ2NEFzSGV4KHZhbHVlLm9iamVjdFB0ciwgYnVp
bGRlcik7CisgICAgICAgIGFwcGVuZFVuc2lnbmVkQXNIZXgodmFsdWUub2JqZWN0UHRyLCBidWls
ZGVyKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIpICIpOwogICAgICAgICByZXR1
cm4gYnVpbGRlci50b1N0cmluZygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCmluZGV4IGI3OGRiOWYxYzhmMTFlYzEy
ZDkzNDEzYmQ4NTk4NGYxOGI2MGNhMDYuLmZhMDAxYTg1MWI4NDk3NjcyZWNlMzRlZGQ4YjE1ODY1
MTBlMjU3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvVVJMLmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAj
aW5jbHVkZSA8dW5pY29kZS91aWRuYS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5j
bHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMuaCBiL1NvdXJjZS9XVEYv
d3RmL2NvY29hL05TVVJMRXh0cmFzLmgKaW5kZXggNTMzNzEyNDhlNGMxNWU2ODNjM2E3YzdkMzQ5
MDcxOGQxM2VlMThjOS4uYmI2ZGNjMjMyNTFiNDg4YWExNzZjZDYzMjUwMDllNTMyNjFmOTUyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oCkBAIC0yOCw4ICsyOCw3IEBACiAKICNwcmFn
bWEgb25jZQogCi1AY2xhc3MgTlNTdHJpbmc7Ci1AY2xhc3MgTlNVUkw7CisjaW1wb3J0IDxGb3Vu
ZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dURi93dGYvY29jb2Ev
TlNVUkxFeHRyYXMubW0KaW5kZXggZGY4YjgzMTE2ZDQ4NTcxNjBkZTkxM2YwMDE4MTZlNjk3NjI1
MzFjZS4uNTZmMWYzZDUyYmJmMzJiYTEzZGRkMTQ2ZDg0MjkyMWRmZDdkYmQ0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dURi93
dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KQEAgLTI3LDExICsyNyw5IEBACiAgKi8KIAogI2ltcG9y
dCAiY29uZmlnLmgiCi0jaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQg
Ik5TVVJMRXh0cmFzLmgiCiAKICNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgotI2ltcG9ydCA8d3Rm
L0hleE51bWJlci5oPgogI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVVJMSGVscGVycy5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCBjODVhMDM1
ZDUyZmI3ZWM2NTQwMGU0Mzk2N2EyOGYxMGM2OTYwMDA4Li41ZTllYTUyNmY1ZGEzYzc0YTkyMjli
Y2ZmMWM4OGY5MmMzZjk2NjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcApAQCAtOTgsOSArOTgsMTAgQEAgc3RhdGljIFN0cmluZyBlbmNv
ZGVQcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHByb3RvY29sKQogewogICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3RvY29sLmxlbmd0
aCgpOyBpKyspIHsKLSAgICAgICAgaWYgKHByb3RvY29sW2ldIDwgMHgyMCB8fCBwcm90b2NvbFtp
XSA+IDB4N0UpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiXFx1
JTA0WCIsIHByb3RvY29sW2ldKSk7Ci0gICAgICAgIGVsc2UgaWYgKHByb3RvY29sW2ldID09IDB4
NWMpCisgICAgICAgIGlmIChwcm90b2NvbFtpXSA8IDB4MjAgfHwgcHJvdG9jb2xbaV0gPiAweDdF
KSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxcdSIpOworICAgICAgICAg
ICAgYXBwZW5kVW5zaWduZWRBc0hleEZpeGVkU2l6ZShwcm90b2NvbFtpXSwgYnVpbGRlciwgNCk7
CisgICAgICAgIH0gZWxzZSBpZiAocHJvdG9jb2xbaV0gPT0gMHg1YykKICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXFxcXCIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZChwcm90b2NvbFtpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VyVG9rZW4uY3BwCmluZGV4IDdiOGU2MDMzYzZmNTI1YTk1Y2YwOWNiMTVjZTcxYzY2
OGZiMjZkZTkuLmExMTM1YWE4MjBlZjg4MTc0YTdjYmI0NWMyOTc5NTM2YjYzMjkwOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcm9w
ZXJ0eVBhcnNlci5oIgogI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1i
ZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM5Miw3ICszOTMsOCBAQCB2b2lkIENTU1BhcnNlclRva2VuOjpzZXJpYWxp
emUoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBGdW5jdGlvblRva2VuOgogICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9T
dHJpbmcoKSwgYnVpbGRlcik7Ci0gICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnKCcpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnKCcpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEF0
S2V5d29yZFRva2VuOgogICAgICAgICBidWlsZGVyLmFwcGVuZCgnQCcpOwogICAgICAgICBzZXJp
YWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9TdHJpbmcoKSwgYnVpbGRlcik7CkBAIC00MDIsNzYg
KzQwNCwxMDcgQEAgdm9pZCBDU1NQYXJzZXJUb2tlbjo6c2VyaWFsaXplKFN0cmluZ0J1aWxkZXIm
IGJ1aWxkZXIpIGNvbnN0CiAgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0
cmluZygpLCBidWlsZGVyLCAoZ2V0SGFzaFRva2VuVHlwZSgpID09IEhhc2hUb2tlblVucmVzdHJp
Y3RlZCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFVybFRva2VuOgotICAgICAgICBidWls
ZGVyLmFwcGVuZCgidXJsKCIpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInVybCgi
KTsKICAgICAgICAgc2VyaWFsaXplSWRlbnRpZmllcih2YWx1ZSgpLnRvU3RyaW5nKCksIGJ1aWxk
ZXIpOwotICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJyknKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJyknKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEZWxpbWl0ZXJUb2tlbjoK
LSAgICAgICAgaWYgKGRlbGltaXRlcigpID09ICdcXCcpCi0gICAgICAgICAgICByZXR1cm4gYnVp
bGRlci5hcHBlbmQoIlxcXG4iKTsKLSAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKGRlbGlt
aXRlcigpKTsKKyAgICAgICAgaWYgKGRlbGltaXRlcigpID09ICdcXCcpIHsKKyAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXFxcbiIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgYnVpbGRlci5hcHBlbmQoZGVsaW1pdGVyKCkpOworICAgICAgICBicmVh
azsKICAgICBjYXNlIE51bWJlclRva2VuOgogICAgICAgICAvLyBUaGVzZSB3b24ndCBwcm9wZXJs
eSBwcmVzZXJ2ZSB0aGUgTnVtZXJpY1ZhbHVlVHlwZSBmbGFnCiAgICAgICAgIGlmIChtX251bWVy
aWNTaWduID09IFBsdXNTaWduKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJysnKTsKLSAg
ICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG51bWVyaWNWYWx1ZSgpKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmROdW1iZXIobnVtZXJpY1ZhbHVlKCkpOworICAgICAgICBicmVhazsK
ICAgICBjYXNlIFBlcmNlbnRhZ2VUb2tlbjoKICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIo
bnVtZXJpY1ZhbHVlKCkpOwotICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJyUnKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJyUnKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaW1l
bnNpb25Ub2tlbjoKICAgICAgICAgLy8gVGhpcyB3aWxsIGluY29ycmVjdGx5IHNlcmlhbGl6ZSBl
LmcuIDRlM2UyIGFzIDQwMDBlMgogICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihudW1lcmlj
VmFsdWUoKSk7CiAgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygp
LCBidWlsZGVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBVbmljb2RlUmFuZ2VUb2tlbjoK
LSAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJVKyVYLSVYIiwg
dW5pY29kZVJhbmdlU3RhcnQoKSwgdW5pY29kZVJhbmdlRW5kKCkpKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJVKyIpOworICAgICAgICBhcHBlbmRVbnNpZ25lZEFzSGV4KHVuaWNv
ZGVSYW5nZVN0YXJ0KCksIGJ1aWxkZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnLScpOwor
ICAgICAgICBhcHBlbmRVbnNpZ25lZEFzSGV4KHVuaWNvZGVSYW5nZUVuZCgpLCBidWlsZGVyKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdHJpbmdUb2tlbjoKLSAgICAgICAgcmV0dXJuIHNl
cmlhbGl6ZVN0cmluZyh2YWx1ZSgpLnRvU3RyaW5nKCksIGJ1aWxkZXIpOworICAgICAgICBzZXJp
YWxpemVTdHJpbmcodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsKKyAgICAgICAgYnJlYWs7
CiAKICAgICBjYXNlIEluY2x1ZGVNYXRjaFRva2VuOgotICAgICAgICByZXR1cm4gYnVpbGRlci5h
cHBlbmQoIn49Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgifj0iKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBEYXNoTWF0Y2hUb2tlbjoKLSAgICAgICAgcmV0dXJuIGJ1aWxk
ZXIuYXBwZW5kKCJ8PSIpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInw9Iik7Cisg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHJlZml4TWF0Y2hUb2tlbjoKLSAgICAgICAgcmV0dXJu
IGJ1aWxkZXIuYXBwZW5kKCJePSIpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIl49
Iik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3VmZml4TWF0Y2hUb2tlbjoKLSAgICAgICAg
cmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCIkPSIpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIiQ9Iik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3Vic3RyaW5nTWF0Y2hUb2tlbjoK
LSAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCIqPSIpOworICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIio9Iik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29sdW1uVG9rZW46
Ci0gICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgifHwiKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCJ8fCIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIENET1Rva2VuOgot
ICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoIjwhLS0iKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCI8IS0tIik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ0RDVG9rZW46
Ci0gICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgiLS0+Iik7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiLS0+Iik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQmFkU3RyaW5n
VG9rZW46Ci0gICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgiJ1xuIik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiJ1xuIik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQmFk
VXJsVG9rZW46Ci0gICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgidXJsKCgpIik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgidXJsKCgpIik7CisgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgV2hpdGVzcGFjZVRva2VuOgotICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJyAn
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDb2xvblRva2VuOgotICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJzonKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJzonKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZW1pY29s
b25Ub2tlbjoKLSAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCc7Jyk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29tbWFUb2tlbjoK
LSAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCcsJyk7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcsJyk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGVmdFBhcmVudGhlc2lzVG9rZW46
Ci0gICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnKCcpOworICAgICAgICBidWlsZGVyLmFw
cGVuZCgnKCcpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFJpZ2h0UGFyZW50aGVzaXNUb2tl
bjoKLSAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcpJyk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGVmdEJyYWNrZXRUb2tlbjoK
LSAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCdbJyk7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCdbJyk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmlnaHRCcmFja2V0VG9rZW46Ci0g
ICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnXScpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnXScpOworICAgICAgICBicmVhazsKICAgICBjYXNlIExlZnRCcmFjZVRva2VuOgotICAgICAg
ICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJ3snKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJ3sn
KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSaWdodEJyYWNlVG9rZW46Ci0gICAgICAgIHJl
dHVybiBidWlsZGVyLmFwcGVuZCgnfScpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnfScpOwor
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgRU9GVG9rZW46CiAgICAgY2FzZSBDb21tZW50VG9r
ZW46CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIGJyZWFrOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9w
ZW5HTENvbW1vbi5jcHAKaW5kZXggZGUyNTMzMzhiY2FjNmJiOTBmY2U1YWFkZWMzMDFlMWZlYTI2
ZTYwOC4uZDM2OTJhNzdmODdhMzNjOGU1YWY4NjVmMjc5Y2I5ZjQ5ZTY4ZjkzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC05NzUsNyArOTc1
LDcgQEAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZUhhc2hlZE5hbWUoY29uc3QgU3RyaW5nJiBuYW1l
KQogICAgIHVpbnQ2NF90IG51bWJlciA9IG5hbWVIYXNoRm9yU2hhZGVyKG5hbWUudXRmOCgpLmRh
dGEoKSwgbmFtZS5sZW5ndGgoKSk7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgid2ViZ2xfIik7Ci0gICAgYXBwZW5kVW5zaWduZWQ2NEFzSGV4
KG51bWJlciwgYnVpbGRlciwgTG93ZXJjYXNlKTsKKyAgICBhcHBlbmRVbnNpZ25lZEFzSGV4KG51
bWJlciwgYnVpbGRlciwgTG93ZXJjYXNlKTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5T
VVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4
dHJhcy5tbQppbmRleCBkMzY1YjMxNjc3Nzg0NjM0N2NjZjIzNWI3NjNmYWZmMzMwOTY1N2ZkLi4z
ODM2OGVjMjQ3ZGQwMDQ0YWI5ZGFhZThkZjY0MDU5MGRkMDIwMjhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KQEAgLTI4LDkgKzI4
LDkgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMu
aCIKKwogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9G
dW5jdGlvbi5oPgotI2ltcG9ydCA8d3RmL0hleE51bWJlci5oPgogI2ltcG9ydCA8d3RmL09iakNS
dW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYv
VmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJl
ZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5j
cHAKaW5kZXggOGZkMzAxZjMxYzNjODM4MTQ4YjMwOWE1NWNlYzRhNjc2YTE1MThkZC4uNzMxM2M2
YjIxYTAzOGRkNGRjNTQ2MDQ2NjMwYWI5YWY1M2E5NWEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtMTUwLDIxICsxNTAsMTcgQEAgU3Ry
aW5nIHF1b3RlQW5kRXNjYXBlTm9uUHJpbnRhYmxlcyhTdHJpbmdWaWV3IHMpCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSAhPSBzLmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgVUNoYXIgYyA9
IHNbaV07CiAgICAgICAgIGlmIChjID09ICdcXCcpIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJ1xcJyk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcXCcpOworICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZExpdGVyYWwoIlxcXFwiKTsKICAgICAgICAgfSBlbHNlIGlmIChjID09ICci
JykgewotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXFwnKTsKLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyInKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJcXFwiIik7
CiAgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnXG4nIHx8IGMgPT0gbm9CcmVha1NwYWNlKQogICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IGlmIChjID49IDB4MjAgJiYgYyA8IDB4N0YpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChjKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
J1xcJyk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgneCcpOwotICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJ3snKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRVbnNpZ25lZEFz
SGV4KGMsIHJlc3VsdCk7IAorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJc
XHh7Iik7CisgICAgICAgICAgICAgICAgYXBwZW5kVW5zaWduZWRBc0hleChjLCByZXN1bHQpOwog
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ30nKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2Fs
dFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0
b3JhZ2UuY3BwCmluZGV4IDE5YTdhMTJjZmEzZjMxYmYxZTIxMzdjMzVjZDU3ZDBhNTA3YjlhOWYu
LmEyZDAzODZhY2Y1ZDhhZDUzNWM3OTEyYTg4NmNiZDBmMDA1NDc4NjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKQEAgLTIx
NSw3ICsyMTUsNyBAQCB2b2lkIERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpjb21wbGV0ZURldmlj
ZUlkSGFzaFNhbHRGb3JPcmlnaW5DYWxsKFNlY3VyaXR5T3JpZwogICAgICAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KGhhc2hTYWx0U2l6
ZSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByYW5kb21EYXRhU2l6ZTsgaSsr
KQotICAgICAgICAgICAgYXBwZW5kVW5zaWduZWQ2NEFzSGV4KHJhbmRvbURhdGFbaV0sIGJ1aWxk
ZXIpOworICAgICAgICAgICAgYXBwZW5kVW5zaWduZWRBc0hleChyYW5kb21EYXRhW2ldLCBidWls
ZGVyKTsKIAogICAgICAgICBTdHJpbmcgZGV2aWNlSWRIYXNoU2FsdCA9IGJ1aWxkZXIudG9TdHJp
bmcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0Zvcndh
cmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5j
cHAKaW5kZXggNzU2NGYzYzM2Y2FjNmRlZTMwNWE4ZDk2MjVkMzBkMTBjNjkwYjhhYy4uZDZhMjkz
OGUxOGE2NTE5ZTMyMDc0ZjEzZWU4M2IzNzc2YjE0MTcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg+CiAjaW5jbHVkZSA8d3RmL0RlYnVnVXRpbGl0aWVz
Lmg+CisjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NzMsMjUgKzQ3NCwzNCBAQCB2
b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6ZGlkUmVtb3ZlSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtJiBiYWNrRm9yd2FyZExpc3RJdAogI2VuZGlmCiB9CiAKLQogI2lmICFMT0dfRElTQUJMRUQK
KwogY29uc3QgY2hhciogV2ViQmFja0ZvcndhcmRMaXN0Ojpsb2dnaW5nU3RyaW5nKCkKIHsKICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3Jt
YXQoIldlYkJhY2tGb3J3YXJkTGlzdCAlcCAtICV6dSBlbnRyaWVzLCBoYXMgY3VycmVudCBpbmRl
eCAlcyAoJXp1KSIsIHRoaXMsIG1fZW50cmllcy5zaXplKCksIG1fY3VycmVudEluZGV4ID8gIllF
UyIgOiAiTk8iLCBtX2N1cnJlbnRJbmRleCA/ICptX2N1cnJlbnRJbmRleCA6IDApKTsKKworICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiV2ViQmFja0ZvcndhcmRMaXN0ICIpOworICAgIGFwcGVu
ZFVuc2lnbmVkQXNIZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpLCBidWlsZGVy
KTsKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAtICIpOworICAgIGJ1aWxkZXIuYXBwZW5k
TnVtYmVyKG1fZW50cmllcy5zaXplKCkpOworICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGVu
dHJpZXMsIGhhcyBjdXJyZW50IGluZGV4ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKG1fY3VycmVu
dEluZGV4ID8gIllFUyIgOiAiTk8iKTsKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAoIik7
CisgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9jdXJyZW50SW5kZXggPyAqbV9jdXJyZW50SW5k
ZXggOiAwKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnKScpOwogCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2VudHJpZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQo
IlxuIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgICAgICBpZiAobV9jdXJy
ZW50SW5kZXggJiYgKm1fY3VycmVudEluZGV4ID09IGkpCi0gICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiICogIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAqICIpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiIC0gIik7Ci0KKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIC0gIik7CiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKG1fZW50cmllc1tpXS0+bG9nZ2luZ1N0cmluZygpKTsKICAgICB9CiAKICAgICByZXR1cm4g
ZGVidWdTdHJpbmcoIlxuIiwgYnVpbGRlci50b1N0cmluZygpKTsKIH0KKwogI2VuZGlmIC8vICFM
T0dfRElTQUJMRUQKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjY0NTZkMTY4ZWU3ZGY1MTMzYTMyMDky
OWUwOGQ3ZjE2YWRlYzdkZC4uMTRlZmVhMWI2Mzk2ZDdmOGU0ZjA0OGUxMWUwZGVjYjljMTcyMzQ2
OSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDE5LTAyLTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBTd2l0Y2ggdXNlcyBvZiBTdHJpbmdCdWlsZGVyIHdpdGggU3RyaW5nOjpmb3Jt
YXQgZm9yIGhleCBudW1iZXJzIHRvIHVzZSBIZXhOdW1iZXIuaCBpbnN0ZWFkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ0ODUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwOiBSZW1vdmVkIHVubmVjZXNzYXJ5IGluY2x1ZGUgb2YgSGV4TnVt
YmVyLmguCisKIDIwMTktMDItMDkgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEFkZCBtb3JlIHRlc3RzIGZvciBjbGFtcFRvPD4oKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA0Y2M0Y2NjYzBmMDIzODc2ZGU0
YTAwZGFiMzY3ZWM4YzY4MWFjMjliLi44MDU1ZWZjMWEzZGZlMTUxZWExNDgyMTIyOWU4ZTljYjBh
MDgzOWE0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAt
NzAsNyArNzAsNiBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYvQXV0b2RyYWlu
ZWRQb29sLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+
Ci0jaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgo=
</data>
<flag name="review"
          id="378308"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
      

    </bug>

</bugzilla>