<?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>192271</bug_id>
          
          <creation_ts>2018-11-30 17:30:18 -0800</creation_ts>
          <short_desc>Fix the bytecode code generator scripts to pretty print BytecodeStructs.h and BytecodeIndices.h.</short_desc>
          <delta_ts>2018-12-03 09:59:46 -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="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1483868</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-11-30 17:30:18 -0800</bug_when>
    <thetext>This makes the generated code style compliant and human readable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483871</commentid>
    <comment_count>1</comment_count>
      <attachid>356271</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-11-30 17:34:44 -0800</bug_when>
    <thetext>Created attachment 356271
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484026</commentid>
    <comment_count>2</comment_count>
      <attachid>356271</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-12-01 12:53:54 -0800</bug_when>
    <thetext>Comment on attachment 356271
proposed patch.

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

r=me

&gt; Source/JavaScriptCore/generator/Opcode.rb:208
&gt; +#{@metadata.struct(self)}#{@metadata.accessor}

Shouldn’t there be a new line between these?

&gt; Source/JavaScriptCore/generator/Opcode.rb:214
&gt; +#{print_members(&quot;    &quot;, &amp;:field)}#{@metadata.field(&quot;    &quot;)}

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484029</commentid>
    <comment_count>3</comment_count>
      <attachid>356271</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-12-01 13:34:48 -0800</bug_when>
    <thetext>Comment on attachment 356271
proposed patch.

Can you do this in a way that doesn&apos;t make the ruby code worse to read? Why not just do some post processing on the string?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484030</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-12-01 13:35:03 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #3)
&gt; Comment on attachment 356271 [details]
&gt; proposed patch.
&gt; 
&gt; Can you do this in a way that doesn&apos;t make the ruby code worse to read? Why
&gt; not just do some post processing on the string?

I think this would also lead to fewer LOC changed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484373</commentid>
    <comment_count>5</comment_count>
      <attachid>356271</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-12-03 09:47:50 -0800</bug_when>
    <thetext>Comment on attachment 356271
proposed patch.

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

Thanks for the review.

&gt;&gt; Source/JavaScriptCore/generator/Opcode.rb:208
&gt;&gt; +#{@metadata.struct(self)}#{@metadata.accessor}
&gt; 
&gt; Shouldn’t there be a new line between these?

This is needed because the #{@metadata.struct(self)} maybe an empty string, and we don&apos;t want the extra &apos;\n&apos;.

&gt;&gt; Source/JavaScriptCore/generator/Opcode.rb:214
&gt;&gt; +#{print_members(&quot;    &quot;, &amp;:field)}#{@metadata.field(&quot;    &quot;)}
&gt; 
&gt; Ditto.

Same here.  #{print_members(&quot; &quot;, &amp;:field)} may be an empty string and we don&apos;t want the extra &apos;\n&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484377</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-12-03 09:53:43 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #4)
&gt; (In reply to Saam Barati from comment #3)
&gt; &gt; Comment on attachment 356271 [details]
&gt; &gt; proposed patch.
&gt; &gt; 
&gt; &gt; Can you do this in a way that doesn&apos;t make the ruby code worse to read? Why
&gt; &gt; not just do some post processing on the string?
&gt; 
&gt; I think this would also lead to fewer LOC changed

Perhaps, but my initial thinking is that post-processing would require a parser of sorts that recognizes when to indent and unindent.  I don&apos;t think it&apos;s trivial in the general case, but perhaps we could implement mini post-processors that might be doable.

I&apos;m going to leave this patch as is for now, and move on.  I think we&apos;ll be working with the ruby scripts less than we will with the generated C++ file.  I&apos;m going to land it so that we get the benefit of a properly formatted C++ file, and revisit the formatting of the ruby script at a later date if we find it to be a detriment to our productivity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484380</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-12-03 09:58:21 -0800</bug_when>
    <thetext>Landed in r238804: &lt;http://trac.webkit.org/r238804&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484381</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-03 09:59:46 -0800</bug_when>
    <thetext>&lt;rdar://problem/46421957&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356271</attachid>
            <date>2018-11-30 17:34:44 -0800</date>
            <delta_ts>2018-12-01 12:53:54 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-192271.patch</filename>
            <type>text/plain</type>
            <size>17429</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM4NzY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBA
CisyMDE4LTExLTMwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aXggdGhlIGJ5dGVjb2RlIGNvZGUgZ2VuZXJhdG9yIHNjcmlwdHMgdG8gcHJldHR5IHByaW50IEJ5
dGVjb2RlU3RydWN0cy5oIGFuZCBCeXRlY29kZUluZGljZXMuaC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjI3MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgbWFrZXMgdGhlIGdlbmVyYXRlZCBj
b2RlIHN0eWxlIGNvbXBsaWFudCBhbmQgaHVtYW4gcmVhZGFibGUuCisKKyAgICAgICAgKiBnZW5l
cmF0b3IvQXJndW1lbnQucmI6CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAg
KiBnZW5lcmF0b3IvRml0cy5yYjoKKyAgICAgICAgKiBnZW5lcmF0b3IvTWV0YWRhdGEucmI6Cisg
ICAgICAgICogZ2VuZXJhdG9yL09wY29kZS5yYjoKKwogMjAxOC0xMS0zMCAgRGVhbiBKYWNrc29u
ICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgVHJ5IHRvIGZpeCBXaW5kb3dzIGJ1aWxkIGJ5
IHVzaW5nIHN0cmNtcCBpbnN0ZWFkIG9mIHN0cmNhc2VjbXAuCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZ2VuZXJhdG9yL0FyZ3VtZW50LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9nZW5lcmF0b3IvQXJndW1lbnQucmIJKHJldmlzaW9uIDIzODc2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvQXJndW1lbnQucmIJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDI0ICs2MCwyNCBAQCBjbGFzcyBBcmd1bWVudAogCiAgICAgZGVmIHNldHRlcgogICAg
ICAgICA8PC1FT0YKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICAgICAg
dm9pZCBzZXQje2NhcGl0YWxpemVkX25hbWV9KCN7QHR5cGUudG9fc30gdmFsdWUsIEZ1bmN0b3Ig
ZnVuYykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGlzV2lkZSgpKQotICAgICAgICAgICAg
ICAgIHNldCN7Y2FwaXRhbGl6ZWRfbmFtZX08T3Bjb2RlU2l6ZTo6V2lkZT4odmFsdWUsIGZ1bmMp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNldCN7Y2FwaXRhbGl6ZWRfbmFt
ZX08T3Bjb2RlU2l6ZTo6TmFycm93Pih2YWx1ZSwgZnVuYyk7Ci0gICAgICAgIH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgc2V0I3tjYXBpdGFsaXplZF9uYW1lfSgj
e0B0eXBlLnRvX3N9IHZhbHVlLCBGdW5jdG9yIGZ1bmMpCisgICAgeworICAgICAgICBpZiAoaXNX
aWRlKCkpCisgICAgICAgICAgICBzZXQje2NhcGl0YWxpemVkX25hbWV9PE9wY29kZVNpemU6Oldp
ZGU+KHZhbHVlLCBmdW5jKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0I3tjYXBpdGFs
aXplZF9uYW1lfTxPcGNvZGVTaXplOjpOYXJyb3c+KHZhbHVlLCBmdW5jKTsKKyAgICB9CiAKLSAg
ICAgICAgdGVtcGxhdGUgPE9wY29kZVNpemUgc2l6ZSwgdHlwZW5hbWUgRnVuY3Rvcj4KLSAgICAg
ICAgdm9pZCBzZXQje2NhcGl0YWxpemVkX25hbWV9KCN7QHR5cGUudG9fc30gdmFsdWUsIEZ1bmN0
b3IgZnVuYykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCEje0ZpdHM6OmNoZWNrICJzaXpl
IiwgInZhbHVlIiwgQHR5cGV9KQotICAgICAgICAgICAgICAgIHZhbHVlID0gZnVuYygpOwotICAg
ICAgICAgICAgYXV0byogc3RyZWFtID0gYml0d2lzZV9jYXN0PHR5cGVuYW1lIFR5cGVCeVNpemU8
c2l6ZT46OnR5cGUqPihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPih0aGlzKSArICN7QGluZGV4
fSAqIHNpemUgKyBQYWRkaW5nQnlTaXplPHNpemU+Ojp2YWx1ZSk7Ci0gICAgICAgICAgICAqc3Ry
ZWFtID0gI3tGaXRzOjpjb252ZXJ0ICJzaXplIiwgInZhbHVlIiwgQHR5cGV9OwotICAgICAgICB9
Ci0gICAgICAgIEVPRgorICAgIHRlbXBsYXRlIDxPcGNvZGVTaXplIHNpemUsIHR5cGVuYW1lIEZ1
bmN0b3I+CisgICAgdm9pZCBzZXQje2NhcGl0YWxpemVkX25hbWV9KCN7QHR5cGUudG9fc30gdmFs
dWUsIEZ1bmN0b3IgZnVuYykKKyAgICB7CisgICAgICAgIGlmICghI3tGaXRzOjpjaGVjayAic2l6
ZSIsICJ2YWx1ZSIsIEB0eXBlfSkKKyAgICAgICAgICAgIHZhbHVlID0gZnVuYygpOworICAgICAg
ICBhdXRvKiBzdHJlYW0gPSBiaXR3aXNlX2Nhc3Q8dHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXplPjo6
dHlwZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRoaXMpICsgI3tAaW5kZXh9ICogc2l6
ZSArIFBhZGRpbmdCeVNpemU8c2l6ZT46OnZhbHVlKTsKKyAgICAgICAgKnN0cmVhbSA9ICN7Rml0
czo6Y29udmVydCAic2l6ZSIsICJ2YWx1ZSIsIEB0eXBlfTsKKyAgICB9CitFT0YKICAgICBlbmQK
IAogICAgIGRlZiBjYXBpdGFsaXplZF9uYW1lCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Z2VuZXJhdG9yL0RTTC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdG9yL0RTTC5yYgkocmV2aXNpb24gMjM4NzY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2dlbmVyYXRvci9EU0wucmIJKHdvcmtpbmcgY29weSkKQEAgLTExNCwyNiArMTE0LDI0IEBAIG1v
ZHVsZSBEU0wKICAgICAgICAgICAgIG9wY29kZXMgPSBvcGNvZGVzX2Zvcig6ZW1pdF9pbl9zdHJ1
Y3RzX2ZpbGUpCiAKICAgICAgICAgICAgIHRlbXBsYXRlLnByZWZpeCA9IDw8LUVPRgotICAgICAg
ICAgICAgI3ByYWdtYSBvbmNlCisjcHJhZ21hIG9uY2UKIAotICAgICAgICAgICAgI2luY2x1ZGUg
IkFyaXRoUHJvZmlsZS5oIgotICAgICAgICAgICAgI2luY2x1ZGUgIkJ5dGVjb2RlRHVtcGVyLmgi
Ci0gICAgICAgICAgICAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKLSAgICAgICAgICAg
ICNpbmNsdWRlICJGaXRzLmgiCi0gICAgICAgICAgICAjaW5jbHVkZSAiR2V0QnlJZE1ldGFkYXRh
LmgiCi0gICAgICAgICAgICAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKLSAgICAgICAgICAgICNp
bmNsdWRlICJPcGNvZGUuaCIKLSAgICAgICAgICAgICNpbmNsdWRlICJUb1RoaXNTdGF0dXMuaCIK
KyNpbmNsdWRlICJBcml0aFByb2ZpbGUuaCIKKyNpbmNsdWRlICJCeXRlY29kZUR1bXBlci5oIgor
I2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiRml0cy5oIgorI2luY2x1
ZGUgIkdldEJ5SWRNZXRhZGF0YS5oIgorI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVk
ZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSAiVG9UaGlzU3RhdHVzLmgiCiAKLSAgICAgICAgICAgIG5h
bWVzcGFjZSBKU0MgewotICAgICAgICAgICAgRU9GCituYW1lc3BhY2UgSlNDIHsKK0VPRgogCiAg
ICAgICAgICAgICB0ZW1wbGF0ZS5ib2R5ID0gPDwtRU9GCi0gICAgICAgICAgICAje29wY29kZXMu
bWFwKCY6c3RydWN0KS5qb2luKCJcbiIpfQotCi0gICAgICAgICAgICAje09wY29kZS5kdW1wX2J5
dGVjb2RlKG9wY29kZXMpfQotICAgICAgICAgICAgRU9GCi0KKyN7b3Bjb2Rlcy5tYXAoJjpzdHJ1
Y3QpLmpvaW4oIlxuIil9Cisje09wY29kZS5kdW1wX2J5dGVjb2RlKG9wY29kZXMpfQorRU9GCiAg
ICAgICAgICAgICB0ZW1wbGF0ZS5zdWZmaXggPSAifSAvLyBuYW1lc3BhY2UgSlNDIgogICAgICAg
ICBlbmQKICAgICBlbmQKQEAgLTE1Miw5ICsxNTAsOSBAQCBtb2R1bGUgRFNMCiAgICAgICAgIG9w
Y29kZXMgPSBvcGNvZGVzX2Zvcig6ZW1pdF9pbl9zdHJ1Y3RzX2ZpbGUpCiAKICAgICAgICAgR2Vu
ZXJhdGVkRmlsZTo6Y3JlYXRlKGluZGljZXNfZmlsZW5hbWUsIGJ5dGVjb2RlX2xpc3QpIGRvIHx0
ZW1wbGF0ZXwKLSAgICAgICAgICAgIHRlbXBsYXRlLnByZWZpeCA9ICJuYW1lc3BhY2UgSlNDIHsi
CisgICAgICAgICAgICB0ZW1wbGF0ZS5wcmVmaXggPSAibmFtZXNwYWNlIEpTQyB7XG4iCiAgICAg
ICAgICAgICB0ZW1wbGF0ZS5ib2R5ID0gb3Bjb2Rlcy5tYXAoJjpzdHJ1Y3RfaW5kaWNlcykuam9p
bigiXG4iKQotICAgICAgICAgICAgdGVtcGxhdGUuc3VmZml4ID0gIn0gLy8gbmFtZXNwYWNlIEpT
QyIKKyAgICAgICAgICAgIHRlbXBsYXRlLnN1ZmZpeCA9ICJcbn0gLy8gbmFtZXNwYWNlIEpTQyIK
ICAgICAgICAgZW5kCiAgICAgZW5kCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5l
cmF0b3IvRml0cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJh
dG9yL0ZpdHMucmIJKHJldmlzaW9uIDIzODc2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0b3IvRml0cy5yYgkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNiBAQCBtb2R1bGUg
Rml0cwogICAgIGVuZAogCiAgICAgZGVmIHNlbGYud3JpdGUoc2l6ZSwgbmFtZSwgdHlwZSkKLSAg
ICAgICAgIl9fZ2VuZXJhdG9yLT53cml0ZSgje2NvbnZlcnQoc2l6ZSwgbmFtZSwgdHlwZSl9KTsi
CisgICAgICAgICJnZW4tPndyaXRlKCN7Y29udmVydChzaXplLCBuYW1lLCB0eXBlKX0pOyIKICAg
ICBlbmQKIGVuZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9NZXRhZGF0
YS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL01ldGFk
YXRhLnJiCShyZXZpc2lvbiAyMzg3NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJh
dG9yL01ldGFkYXRhLnJiCSh3b3JraW5nIGNvcHkpCkBAIC00Miw1OSArNDIsNTkgQEAgY2xhc3Mg
TWV0YWRhdGEKICAgICBkZWYgc3RydWN0KG9wKQogICAgICAgICByZXR1cm4gaWYgZW1wdHk/CiAK
LSAgICAgICAgZGVmIGNvbnZlcnRGaWVsZHMoZmllbGRzKQorICAgICAgICBkZWYgY29udmVydEZp
ZWxkcyhwcmVmaXgsIGZpZWxkcykKICAgICAgICAgICAgIGZpZWxkcy5tYXAgZG8gfGZpZWxkLCB0
eXBlfAogICAgICAgICAgICAgICAgIGlmIHR5cGUua2luZF9vZj8gSGFzaAotICAgICAgICAgICAg
ICAgICAgICAidW5pb24ge1xuI3tjb252ZXJ0RmllbGRzKHR5cGUpfVxufTsiCisgICAgICAgICAg
ICAgICAgICAgICIje3ByZWZpeH11bmlvbiB7XG4je2NvbnZlcnRGaWVsZHMocHJlZml4ICsgJyAg
ICAnLCB0eXBlKX1cbiN7cHJlZml4fX07IgogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgIiN7dHlwZS50b19zfSAje2ZpZWxkLnRvX3N9OyIKKyAgICAgICAgICAgICAg
ICAgICAgIiN7cHJlZml4fSN7dHlwZS50b19zfSAje2ZpZWxkLnRvX3N9OyIKICAgICAgICAgICAg
ICAgICBlbmQKICAgICAgICAgICAgIGVuZC5qb2luKCJcbiIpCiAgICAgICAgIGVuZAogCi0gICAg
ICAgIGZpZWxkcyA9IGNvbnZlcnRGaWVsZHMoQGZpZWxkcykKKyAgICAgICAgZmllbGRzID0gY29u
dmVydEZpZWxkcygiICAgICAgICAiLCBAZmllbGRzKQogCiAgICAgICAgIGluaXRzID0gbmlsCiAg
ICAgICAgIGlmIEBpbml0aWFsaXplcnMgJiYgKG5vdCBAaW5pdGlhbGl6ZXJzLmVtcHR5PykKLSAg
ICAgICAgICAgIGluaXRzID0gIjogIiArIEBpbml0aWFsaXplcnMubWFwIGRvIHxtZXRhZGF0YSwg
YXJnfAorICAgICAgICAgICAgaW5pdHMgPSAiXG4gICAgICAgICAgICA6ICIgKyBAaW5pdGlhbGl6
ZXJzLm1hcCBkbyB8bWV0YWRhdGEsIGFyZ3wKICAgICAgICAgICAgICAgICAiI3ttZXRhZGF0YX0o
X19vcC4je2FyZ30pIgotICAgICAgICAgICAgZW5kLmpvaW4oIiwgIikKKyAgICAgICAgICAgIGVu
ZC5qb2luKCJcbiAgICAgICAgICAgICwgIikuY29uY2F0KCJcbiAgICAgICAiKTsKICAgICAgICAg
ZW5kCiAKICAgICAgICAgPDwtRU9GCi0gICAgICAgIHN0cnVjdCBNZXRhZGF0YSB7Ci0gICAgICAg
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZXRhZGF0YSk7CiAKLSAgICAgICAgcHVibGljOgot
ICAgICAgICAgICAgTWV0YWRhdGEoY29uc3QgI3tvcC5jYXBpdGFsaXplZF9uYW1lfSYjeyIgX19v
cCIgaWYgaW5pdHN9KQotICAgICAgICAgICAgI3tpbml0c30KLSAgICAgICAgICAgIHsgfQorICAg
IHN0cnVjdCBNZXRhZGF0YSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1ldGFkYXRh
KTsKIAotICAgICAgICAgICAgI3tmaWVsZHN9Ci0gICAgICAgIH07Ci0gICAgICAgIEVPRgorICAg
IHB1YmxpYzoKKyAgICAgICAgTWV0YWRhdGEoY29uc3QgI3tvcC5jYXBpdGFsaXplZF9uYW1lfSYj
eyIgX19vcCIgaWYgaW5pdHN9KSN7aW5pdHN9IHsgfQorCisje2ZpZWxkc30KKyAgICB9OworRU9G
CiAgICAgZW5kCiAKICAgICBkZWYgYWNjZXNzb3IKICAgICAgICAgcmV0dXJuIGlmIGVtcHR5Pwog
CiAgICAgICAgIDw8LUVPRgotICAgICAgICBNZXRhZGF0YSYgbWV0YWRhdGEoQ29kZUJsb2NrKiBj
b2RlQmxvY2spIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb2RlQmxvY2st
Pm1ldGFkYXRhPE1ldGFkYXRhPihvcGNvZGVJRCwgI3tNZXRhZGF0YS5maWVsZF9uYW1lfSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBNZXRhZGF0YSYgbWV0YWRhdGEoRXhlY1N0YXRlKiBleGVjKSBj
b25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbWV0YWRhdGEoZXhlYy0+Y29kZUJs
b2NrKCkpOwotICAgICAgICB9Ci0gICAgICAgIEVPRgorCisgICAgTWV0YWRhdGEmIG1ldGFkYXRh
KENvZGVCbG9jayogY29kZUJsb2NrKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvZGVC
bG9jay0+bWV0YWRhdGE8TWV0YWRhdGE+KG9wY29kZUlELCAje01ldGFkYXRhLmZpZWxkX25hbWV9
KTsKKyAgICB9CisKKyAgICBNZXRhZGF0YSYgbWV0YWRhdGEoRXhlY1N0YXRlKiBleGVjKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ldGFkYXRhKGV4ZWMtPmNvZGVCbG9jaygpKTsKKyAg
ICB9CitFT0YKICAgICBlbmQKIAotICAgIGRlZiBmaWVsZAorICAgIGRlZiBmaWVsZChwcmVmaXgp
CiAgICAgICAgIHJldHVybiBpZiBlbXB0eT8KIAotICAgICAgICAidW5zaWduZWQgI3tNZXRhZGF0
YS5maWVsZF9uYW1lfTsiCisgICAgICAgICJcbiN7cHJlZml4fXVuc2lnbmVkICN7TWV0YWRhdGEu
ZmllbGRfbmFtZX07IgogICAgIGVuZAogCiAgICAgZGVmIGxvYWRfZnJvbV9zdHJlYW0oaW5kZXgs
IHNpemUpCkBAIC0xMDYsOCArMTA2LDkgQEAgY2xhc3MgTWV0YWRhdGEKICAgICBkZWYgY3JlYXRl
X2VtaXR0ZXJfbG9jYWwKICAgICAgICAgcmV0dXJuIGlmIGVtcHR5PwogCi0gICAgICAgIDw8LUVP
RgotICAgICAgICBhdXRvICN7ZW1pdHRlcl9sb2NhbC5uYW1lfSA9IF9fZ2VuZXJhdG9yLT5hZGRN
ZXRhZGF0YUZvcihvcGNvZGVJRCk7CisgICAgICAgIDw8LUVPRi5jaG9tcAorCisgICAgICAgIGF1
dG8gI3tlbWl0dGVyX2xvY2FsLm5hbWV9ID0gZ2VuLT5hZGRNZXRhZGF0YUZvcihvcGNvZGVJRCk7
CiAgICAgICAgIEVPRgogICAgIGVuZAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdG9yL09wY29kZS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdG9yL09wY29kZS5yYgkocmV2aXNpb24gMjM4NzY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRvci9PcGNvZGUucmIJKHdvcmtpbmcgY29weSkKQEAgLTU2LDEwICs1NiwxNCBA
QCBjbGFzcyBPcGNvZGUKIAogICAgIGRlZiBwcmludF9hcmdzKCZibG9jaykKICAgICAgICAgcmV0
dXJuIGlmIEBhcmdzLm5pbD8KLQogICAgICAgICBAYXJncy5tYXAoJmJsb2NrKS5qb2luICJcbiIK
ICAgICBlbmQKIAorICAgIGRlZiBwcmludF9tZW1iZXJzKHByZWZpeCwgJmJsb2NrKQorICAgICAg
ICByZXR1cm4gaWYgQGFyZ3MubmlsPworICAgICAgICBAYXJncy5tYXAoJmJsb2NrKS5tYXAgeyB8
YXJnfCAiI3twcmVmaXh9I3thcmd9IiB9LmpvaW4gIlxuIgorICAgIGVuZAorCiAgICAgZGVmIGNh
cGl0YWxpemVkX25hbWUKICAgICAgICAgbmFtZS5zcGxpdCgnXycpLm1hcCgmOmNhcGl0YWxpemUp
LmpvaW4KICAgICBlbmQKQEAgLTc2LDMzICs4MCwyNyBAQCBjbGFzcyBPcGNvZGUKICAgICAgICAg
QGFyZ3MubWFwKCY6bmFtZSkudW5zaGlmdCgiIikuam9pbigiLCAiKQogICAgIGVuZAogCi0gICAg
ZGVmIG1hcF9maWVsZHNfd2l0aF9zaXplKHNpemUsICZibG9jaykKKyAgICBkZWYgbWFwX2ZpZWxk
c193aXRoX3NpemUocHJlZml4LCBzaXplLCAmYmxvY2spCiAgICAgICAgIGFyZ3MgPSBbQXJndW1l
bnQubmV3KCJvcGNvZGVJRCIsIDp1bnNpZ25lZCwgMCldCiAgICAgICAgIGFyZ3MgKz0gQGFyZ3Mu
ZHVwIGlmIEBhcmdzCiAgICAgICAgIHVubGVzcyBAbWV0YWRhdGEuZW1wdHk/CiAgICAgICAgICAg
ICBhcmdzIDw8IEBtZXRhZGF0YS5lbWl0dGVyX2xvY2FsCiAgICAgICAgIGVuZAotICAgICAgICBh
cmdzLm1hcCB7IHxhcmd8IGJsb2NrLmNhbGwoYXJnLCBzaXplKSB9CisgICAgICAgIGFyZ3MubWFw
IHsgfGFyZ3wgIiN7cHJlZml4fSN7YmxvY2suY2FsbChhcmcsIHNpemUpfSIgfQogICAgIGVuZAog
CiAgICAgZGVmIHN0cnVjdAogICAgICAgICA8PC1FT0YKLSAgICAgICAgc3RydWN0ICN7Y2FwaXRh
bGl6ZWRfbmFtZX0gOiBwdWJsaWMgSW5zdHJ1Y3Rpb24gewotICAgICAgICAgICAgI3tvcGNvZGVJ
RH0KLQotICAgICAgICAgICAgI3tlbWl0dGVyfQotCi0gICAgICAgICAgICAje2R1bXBlcn0KLQot
ICAgICAgICAgICAgI3tjb25zdHJ1Y3RvcnN9CitzdHJ1Y3QgI3tjYXBpdGFsaXplZF9uYW1lfSA6
IHB1YmxpYyBJbnN0cnVjdGlvbiB7CisgICAgI3tvcGNvZGVJRH0KIAotICAgICAgICAgICAgI3tz
ZXR0ZXJzfQotCi0gICAgICAgICAgICAje21ldGFkYXRhX3N0cnVjdF9hbmRfYWNjZXNzb3J9Ci0K
LSAgICAgICAgICAgICN7bWVtYmVyc30KLSAgICAgICAgfTsKLSAgICAgICAgRU9GCisje2VtaXR0
ZXJ9Cisje2R1bXBlcn0KKyN7Y29uc3RydWN0b3JzfQorI3tzZXR0ZXJzfSN7bWV0YWRhdGFfc3Ry
dWN0X2FuZF9hY2Nlc3Nvcn0KKyN7bWVtYmVyc30KK307CitFT0YKICAgICBlbmQKIAogICAgIGRl
ZiBvcGNvZGVJRApAQCAtMTEzLDkwICsxMTEsOTIgQEAgY2xhc3MgT3Bjb2RlCiAgICAgICAgIG9w
X3dpZGUgPSBBcmd1bWVudC5uZXcoIm9wX3dpZGUiLCA6dW5zaWduZWQsIDApCiAgICAgICAgIG1l
dGFkYXRhX3BhcmFtID0gQG1ldGFkYXRhLmVtcHR5PyA/ICIiIDogIiwgI3tAbWV0YWRhdGEuZW1p
dHRlcl9sb2NhbC5jcmVhdGVfcGFyYW19IgogICAgICAgICBtZXRhZGF0YV9hcmcgPSBAbWV0YWRh
dGEuZW1wdHk/ID8gIiIgOiAiLCAje0BtZXRhZGF0YS5lbWl0dGVyX2xvY2FsLm5hbWV9IgotICAg
ICAgICA8PC1FT0YKLSAgICAgICAgc3RhdGljIHZvaWQgZW1pdChCeXRlY29kZUdlbmVyYXRvciog
X19nZW5lcmF0b3Ije3R5cGVkX2FyZ3N9KQotICAgICAgICB7Ci0gICAgICAgICAgICBfX2dlbmVy
YXRvci0+cmVjb3JkT3Bjb2RlKG9wY29kZUlEKTsKLSAgICAgICAgICAgICN7QG1ldGFkYXRhLmNy
ZWF0ZV9lbWl0dGVyX2xvY2FsfQotICAgICAgICAgICAgZW1pdDxPcGNvZGVTaXplOjpOYXJyb3cs
IE5vQXNzZXJ0LCBmYWxzZT4oX19nZW5lcmF0b3Ije3VudHlwZWRfYXJnc30je21ldGFkYXRhX2Fy
Z30pIHx8IGVtaXQ8T3Bjb2RlU2l6ZTo6V2lkZSwgQXNzZXJ0LCBmYWxzZT4oX19nZW5lcmF0b3Ij
e3VudHlwZWRfYXJnc30je21ldGFkYXRhX2FyZ30pOwotICAgICAgICB9Ci0KLSAgICAgICAgI3sl
ewotICAgICAgICB0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemUsIEZpdHNBc3NlcnRpb24gc2hvdWxk
QXNzZXJ0ID0gQXNzZXJ0PgotICAgICAgICBzdGF0aWMgYm9vbCBlbWl0KEJ5dGVjb2RlR2VuZXJh
dG9yKiBfX2dlbmVyYXRvciN7dHlwZWRfYXJnc30pCi0gICAgICAgIHsKLSAgICAgICAgICAgICN7
QG1ldGFkYXRhLmNyZWF0ZV9lbWl0dGVyX2xvY2FsfQotICAgICAgICAgICAgcmV0dXJuIGVtaXQ8
c2l6ZSwgc2hvdWxkQXNzZXJ0PihfX2dlbmVyYXRvciN7dW50eXBlZF9hcmdzfSN7bWV0YWRhdGFf
YXJnfSk7Ci0gICAgICAgIH0KLSAgICAgICAgfSB1bmxlc3MgQG1ldGFkYXRhLmVtcHR5P30KLQot
ICAgICAgICB0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemUsIEZpdHNBc3NlcnRpb24gc2hvdWxkQXNz
ZXJ0ID0gQXNzZXJ0LCBib29sIHJlY29yZE9wY29kZSA9IHRydWU+Ci0gICAgICAgIHN0YXRpYyBi
b29sIGVtaXQoQnl0ZWNvZGVHZW5lcmF0b3IqIF9fZ2VuZXJhdG9yI3t0eXBlZF9hcmdzfSN7bWV0
YWRhdGFfcGFyYW19KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAocmVjb3JkT3Bjb2RlKQot
ICAgICAgICAgICAgICAgIF9fZ2VuZXJhdG9yLT5yZWNvcmRPcGNvZGUob3Bjb2RlSUQpOwotICAg
ICAgICAgICAgYm9vbCBkaWRFbWl0ID0gZW1pdEltcGw8c2l6ZT4oX19nZW5lcmF0b3Ije3VudHlw
ZWRfYXJnc30je21ldGFkYXRhX2FyZ30pOwotICAgICAgICAgICAgaWYgKHNob3VsZEFzc2VydCA9
PSBBc3NlcnQpCi0gICAgICAgICAgICAgICAgQVNTRVJUKGRpZEVtaXQpOwotICAgICAgICAgICAg
cmV0dXJuIGRpZEVtaXQ7Ci0gICAgICAgIH0KLQotICAgICAgICBwcml2YXRlOgotICAgICAgICB0
ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+Ci0gICAgICAgIHN0YXRpYyBib29sIGVtaXRJbXBsKEJ5
dGVjb2RlR2VuZXJhdG9yKiBfX2dlbmVyYXRvciN7dHlwZWRfYXJnc30je21ldGFkYXRhX3BhcmFt
fSkKLSAgICAgICAgeworICAgICAgICA8PC1FT0YuY2hvbXAKKyAgICBzdGF0aWMgdm9pZCBlbWl0
KEJ5dGVjb2RlR2VuZXJhdG9yKiBnZW4je3R5cGVkX2FyZ3N9KQorICAgIHsKKyAgICAgICAgZ2Vu
LT5yZWNvcmRPcGNvZGUob3Bjb2RlSUQpOyN7QG1ldGFkYXRhLmNyZWF0ZV9lbWl0dGVyX2xvY2Fs
fQorICAgICAgICBlbWl0PE9wY29kZVNpemU6Ok5hcnJvdywgTm9Bc3NlcnQsIGZhbHNlPihnZW4j
e3VudHlwZWRfYXJnc30je21ldGFkYXRhX2FyZ30pCisgICAgICAgICAgICB8fCBlbWl0PE9wY29k
ZVNpemU6OldpZGUsIEFzc2VydCwgZmFsc2U+KGdlbiN7dW50eXBlZF9hcmdzfSN7bWV0YWRhdGFf
YXJnfSk7CisgICAgfQorI3sleworICAgIHRlbXBsYXRlPE9wY29kZVNpemUgc2l6ZSwgRml0c0Fz
c2VydGlvbiBzaG91bGRBc3NlcnQgPSBBc3NlcnQ+CisgICAgc3RhdGljIGJvb2wgZW1pdChCeXRl
Y29kZUdlbmVyYXRvciogZ2VuI3t0eXBlZF9hcmdzfSkKKyAgICB7I3tAbWV0YWRhdGEuY3JlYXRl
X2VtaXR0ZXJfbG9jYWx9CisgICAgICAgIHJldHVybiBlbWl0PHNpemUsIHNob3VsZEFzc2VydD4o
Z2VuI3t1bnR5cGVkX2FyZ3N9I3ttZXRhZGF0YV9hcmd9KTsKKyAgICB9Cit9IHVubGVzcyBAbWV0
YWRhdGEuZW1wdHk/fQorICAgIHRlbXBsYXRlPE9wY29kZVNpemUgc2l6ZSwgRml0c0Fzc2VydGlv
biBzaG91bGRBc3NlcnQgPSBBc3NlcnQsIGJvb2wgcmVjb3JkT3Bjb2RlID0gdHJ1ZT4KKyAgICBz
dGF0aWMgYm9vbCBlbWl0KEJ5dGVjb2RlR2VuZXJhdG9yKiBnZW4je3R5cGVkX2FyZ3N9I3ttZXRh
ZGF0YV9wYXJhbX0pCisgICAgeworICAgICAgICBpZiAocmVjb3JkT3Bjb2RlKQorICAgICAgICAg
ICAgZ2VuLT5yZWNvcmRPcGNvZGUob3Bjb2RlSUQpOworICAgICAgICBib29sIGRpZEVtaXQgPSBl
bWl0SW1wbDxzaXplPihnZW4je3VudHlwZWRfYXJnc30je21ldGFkYXRhX2FyZ30pOworICAgICAg
ICBpZiAoc2hvdWxkQXNzZXJ0ID09IEFzc2VydCkKKyAgICAgICAgICAgIEFTU0VSVChkaWRFbWl0
KTsKKyAgICAgICAgcmV0dXJuIGRpZEVtaXQ7CisgICAgfQorCitwcml2YXRlOgorICAgIHRlbXBs
YXRlPE9wY29kZVNpemUgc2l6ZT4KKyAgICBzdGF0aWMgYm9vbCBlbWl0SW1wbChCeXRlY29kZUdl
bmVyYXRvciogZ2VuI3t0eXBlZF9hcmdzfSN7bWV0YWRhdGFfcGFyYW19KQorICAgIHsKKyAgICAg
ICAgaWYgKHNpemUgPT0gT3Bjb2RlU2l6ZTo6V2lkZSkKKyAgICAgICAgICAgIGdlbi0+YWxpZ25X
aWRlT3Bjb2RlKCk7CisgICAgICAgIGlmICgje21hcF9maWVsZHNfd2l0aF9zaXplKCIiLCAic2l6
ZSIsICY6Zml0c19jaGVjaykuam9pbiAiXG4gICAgICAgICAgICAmJiAifQorICAgICAgICAgICAg
JiYgKHNpemUgPT0gT3Bjb2RlU2l6ZTo6V2lkZSA/ICN7b3Bfd2lkZS5maXRzX2NoZWNrKFNpemU6
Ok5hcnJvdyl9IDogdHJ1ZSkpIHsKICAgICAgICAgICAgIGlmIChzaXplID09IE9wY29kZVNpemU6
OldpZGUpCi0gICAgICAgICAgICAgICAgX19nZW5lcmF0b3ItPmFsaWduV2lkZU9wY29kZSgpOwot
ICAgICAgICAgICAgaWYgKCN7bWFwX2ZpZWxkc193aXRoX3NpemUoInNpemUiLCAmOmZpdHNfY2hl
Y2spLmpvaW4gIiAmJiAifSAmJiAoc2l6ZSA9PSBPcGNvZGVTaXplOjpXaWRlID8gI3tvcF93aWRl
LmZpdHNfY2hlY2soU2l6ZTo6TmFycm93KX0gOiB0cnVlKSkgewotICAgICAgICAgICAgICAgIGlm
IChzaXplID09IE9wY29kZVNpemU6OldpZGUpCi0gICAgICAgICAgICAgICAgICAgICN7b3Bfd2lk
ZS5maXRzX3dyaXRlIFNpemU6Ok5hcnJvd30KLSAgICAgICAgICAgICAgICAje21hcF9maWVsZHNf
d2l0aF9zaXplKCJzaXplIiwgJjpmaXRzX3dyaXRlKS5qb2luICJcbiJ9Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgI3tvcF93aWRlLmZpdHNfd3JpdGUgU2l6ZTo6TmFycm93fQorI3tt
YXBfZmllbGRzX3dpdGhfc2l6ZSgiICAgICAgICAgICAgIiwgInNpemUiLCAmOmZpdHNfd3JpdGUp
LmpvaW4gIlxuIn0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAg
IHB1YmxpYzoKLSAgICAgICAgRU9GCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKK3B1
YmxpYzoKK0VPRgogICAgIGVuZAogCiAgICAgZGVmIGR1bXBlcgogICAgICAgICA8PC1FT0YKLSAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+Ci0gICAgICAgIHZvaWQgZHVtcChCeXRlY29k
ZUR1bXBlcjxCbG9jaz4qIF9fZHVtcGVyLCBJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0IF9fbG9j
YXRpb24sIGJvb2wgX19pc1dpZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIF9fZHVtcGVyLT5w
cmludExvY2F0aW9uQW5kT3AoX19sb2NhdGlvbiwgJiIqI3tAbmFtZX0iWyFfX2lzV2lkZV0pOwot
ICAgICAgICAgICAgI3twcmludF9hcmdzIHsgfGFyZ3wKLSAgICAgICAgICAgIDw8LUVPRgotICAg
ICAgICAgICAgICAgIF9fZHVtcGVyLT5kdW1wT3BlcmFuZCgje2FyZy5uYW1lfSwgI3thcmcuaW5k
ZXggPT0gMX0pOwotICAgICAgICAgICAgRU9GCi0gICAgICAgICAgICB9fQotICAgICAgICB9Ci0g
ICAgICAgIEVPRgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgorICAgIHZvaWQgZHVtcChC
eXRlY29kZUR1bXBlcjxCbG9jaz4qIGR1bXBlciwgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBf
X2xvY2F0aW9uLCBib29sIF9faXNXaWRlKQorICAgIHsKKyAgICAgICAgZHVtcGVyLT5wcmludExv
Y2F0aW9uQW5kT3AoX19sb2NhdGlvbiwgJiIqI3tAbmFtZX0iWyFfX2lzV2lkZV0pOworI3twcmlu
dF9hcmdzIHsgfGFyZ3wKKzw8LUVPRi5jaG9tcAorICAgICAgICBkdW1wZXItPmR1bXBPcGVyYW5k
KCN7YXJnLm5hbWV9LCAje2FyZy5pbmRleCA9PSAxfSk7CitFT0YKKyAgICB9fQorICAgIH0KK0VP
RgogICAgIGVuZAogCiAgICAgZGVmIGNvbnN0cnVjdG9ycwogICAgICAgICBmaWVsZHMgPSAoQGFy
Z3MgfHwgW10pICsgKEBtZXRhZGF0YS5lbXB0eT8gPyBbXSA6IFtAbWV0YWRhdGFdKQotICAgICAg
ICBpbml0ID0gLT4oc2l6ZSkgeyBmaWVsZHMuZW1wdHk/ICA/ICIiIDogIjogI3tmaWVsZHMubWFw
LndpdGhfaW5kZXggeyB8YXJnLCBpfCBhcmcubG9hZF9mcm9tX3N0cmVhbShpICsgMSwgc2l6ZSkg
fS5qb2luICIsXG4iIH0iIH0KKyAgICAgICAgaW5pdCA9IC0+KHNpemUpIHsgZmllbGRzLmVtcHR5
PyAgPyAiIiA6ICI6ICN7ZmllbGRzLm1hcC53aXRoX2luZGV4IHsgfGFyZywgaXwgYXJnLmxvYWRf
ZnJvbV9zdHJlYW0oaSArIDEsIHNpemUpIH0uam9pbiAiXG4gICAgICAgICwgIiB9IiB9CiAKICAg
ICAgICAgPDwtRU9GCi0gICAgICAgICN7Y2FwaXRhbGl6ZWRfbmFtZX0oY29uc3QgdWludDhfdCog
c3RyZWFtKQotICAgICAgICAgICAgI3tpbml0LmNhbGwoIk9wY29kZVNpemU6Ok5hcnJvdyIpfQot
ICAgICAgICB7IEFTU0VSVF9VTlVTRUQoc3RyZWFtLCBzdHJlYW1bMF0gPT0gb3Bjb2RlSUQpOyB9
Ci0KLSAgICAgICAgI3tjYXBpdGFsaXplZF9uYW1lfShjb25zdCB1aW50MzJfdCogc3RyZWFtKQot
ICAgICAgICAgICAgI3tpbml0LmNhbGwoIk9wY29kZVNpemU6OldpZGUiKX0KLSAgICAgICAgeyBB
U1NFUlRfVU5VU0VEKHN0cmVhbSwgc3RyZWFtWzBdID09IG9wY29kZUlEKTsgfQotCi0gICAgICAg
IHN0YXRpYyAje2NhcGl0YWxpemVkX25hbWV9IGRlY29kZShjb25zdCB1aW50OF90KiBzdHJlYW0p
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgqc3RyZWFtICE9IG9wX3dpZGUpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHsgc3RyZWFtIH07Ci0KLSAgICAgICAgICAgIGF1dG8gd2lkZVN0cmVh
bSA9IGJpdHdpc2VfY2FzdDxjb25zdCB1aW50MzJfdCo+KHN0cmVhbSArIDEpOwotICAgICAgICAg
ICAgcmV0dXJuIHsgd2lkZVN0cmVhbSB9OwotICAgICAgICB9Ci0KLSAgICAgICAgRU9GCisgICAg
I3tjYXBpdGFsaXplZF9uYW1lfShjb25zdCB1aW50OF90KiBzdHJlYW0pCisgICAgICAgICN7aW5p
dC5jYWxsKCJPcGNvZGVTaXplOjpOYXJyb3ciKX0KKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVT
RUQoc3RyZWFtLCBzdHJlYW1bMF0gPT0gb3Bjb2RlSUQpOworICAgIH0KKworICAgICN7Y2FwaXRh
bGl6ZWRfbmFtZX0oY29uc3QgdWludDMyX3QqIHN0cmVhbSkKKyAgICAgICAgI3tpbml0LmNhbGwo
Ik9wY29kZVNpemU6OldpZGUiKX0KKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFt
LCBzdHJlYW1bMF0gPT0gb3Bjb2RlSUQpOworICAgIH0KKworICAgIHN0YXRpYyAje2NhcGl0YWxp
emVkX25hbWV9IGRlY29kZShjb25zdCB1aW50OF90KiBzdHJlYW0pCisgICAgeworICAgICAgICBp
ZiAoKnN0cmVhbSAhPSBvcF93aWRlKQorICAgICAgICAgICAgcmV0dXJuIHsgc3RyZWFtIH07CisK
KyAgICAgICAgYXV0byB3aWRlU3RyZWFtID0gYml0d2lzZV9jYXN0PGNvbnN0IHVpbnQzMl90Kj4o
c3RyZWFtICsgMSk7CisgICAgICAgIHJldHVybiB7IHdpZGVTdHJlYW0gfTsKKyAgICB9CitFT0YK
ICAgICBlbmQKIAogICAgIGRlZiBzZXR0ZXJzCkBAIC0yMDQsMTggKzIwNCwxNSBAQCBjbGFzcyBP
cGNvZGUKICAgICBlbmQKIAogICAgIGRlZiBtZXRhZGF0YV9zdHJ1Y3RfYW5kX2FjY2Vzc29yCi0g
ICAgICAgIDw8LUVPRgotICAgICAgICAje0BtZXRhZGF0YS5zdHJ1Y3Qoc2VsZil9Ci0KLSAgICAg
ICAgI3tAbWV0YWRhdGEuYWNjZXNzb3J9Ci0gICAgICAgIEVPRgorICAgICAgICA8PC1FT0YuY2hv
bXAKKyN7QG1ldGFkYXRhLnN0cnVjdChzZWxmKX0je0BtZXRhZGF0YS5hY2Nlc3Nvcn0KK0VPRgog
ICAgIGVuZAogCiAgICAgZGVmIG1lbWJlcnMKLSAgICAgICAgPDwtRU9GCi0gICAgICAgICN7cHJp
bnRfYXJncygmOmZpZWxkKX0KLSAgICAgICAgI3tAbWV0YWRhdGEuZmllbGR9Ci0gICAgICAgIEVP
RgorICAgICAgICA8PC1FT0YuY2hvbXAKKyN7cHJpbnRfbWVtYmVycygiICAgICIsICY6ZmllbGQp
fSN7QG1ldGFkYXRhLmZpZWxkKCIgICAgIil9CitFT0YKICAgICBlbmQKIAogICAgIGRlZiBzZXRf
ZW50cnlfYWRkcmVzcyhpZCkKQEAgLTI0OCwyMiArMjQ1LDIyIEBAIGNsYXNzIE9wY29kZQogICAg
IGVuZAogCiAgICAgZGVmIHNlbGYuZHVtcF9ieXRlY29kZShvcGNvZGVzKQotICAgICAgICA8PC1F
T0YKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+Ci0gICAgICAgIHN0YXRpYyB2b2lk
IGR1bXBCeXRlY29kZShCeXRlY29kZUR1bXBlcjxCbG9jaz4qIF9fZHVtcGVyLCBJbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0IF9fbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiBfX2luc3RydWN0
aW9uKQotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKF9faW5zdHJ1Y3Rpb24tPm9wY29k
ZUlEKCkpIHsKLSAgICAgICAgICAgICN7b3Bjb2Rlcy5tYXAgeyB8b3B8Ci0gICAgICAgICAgICAg
ICAgPDwtRU9GCi0gICAgICAgICAgICAgICAgY2FzZSAje29wLm5hbWV9OgotICAgICAgICAgICAg
ICAgICAgICBfX2luc3RydWN0aW9uLT5hczwje29wLmNhcGl0YWxpemVkX25hbWV9PigpLmR1bXAo
X19kdW1wZXIsIF9fbG9jYXRpb24sIF9faW5zdHJ1Y3Rpb24tPmlzV2lkZSgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgRU9GCi0gICAgICAgICAgICB9Lmpv
aW4gIlxuIn0KLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgRU9GCisgICAg
ICAgIDw8LUVPRi5jaG9tcAordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+CitzdGF0aWMgdm9pZCBk
dW1wQnl0ZWNvZGUoQnl0ZWNvZGVEdW1wZXI8QmxvY2s+KiBkdW1wZXIsIEluc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQgX19sb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qIF9faW5zdHJ1Y3Rpb24p
Cit7CisgICAgc3dpdGNoIChfX2luc3RydWN0aW9uLT5vcGNvZGVJRCgpKSB7Cisje29wY29kZXMu
bWFwIHsgfG9wfAorICAgICAgICA8PC1FT0YuY2hvbXAKKyAgICBjYXNlICN7b3AubmFtZX06Cisg
ICAgICAgIF9faW5zdHJ1Y3Rpb24tPmFzPCN7b3AuY2FwaXRhbGl6ZWRfbmFtZX0+KCkuZHVtcChk
dW1wZXIsIF9fbG9jYXRpb24sIF9faW5zdHJ1Y3Rpb24tPmlzV2lkZSgpKTsKKyAgICAgICAgYnJl
YWs7CitFT0YKKyAgICB9LmpvaW4gIlxuIn0KKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CitFT0YKICAgICBlbmQKIGVuZAo=
</data>
<flag name="review"
          id="373273"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>