<?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>43850</bug_id>
          
          <creation_ts>2010-08-11 07:02:53 -0700</creation_ts>
          <short_desc>[gdb] Need to update webcore.py, which is out of sync for recent changes of basic string classes</short_desc>
          <delta_ts>2010-08-12 10:32:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Hayato Ito">hayato</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>agl</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>evan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>263229</commentid>
    <comment_count>0</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-08-11 07:02:53 -0700</bug_when>
    <thetext>Basic string classes, such as AtomicString, has moved to WTF from WebCore.

We need to update WebKitTools/gdb/webcore.py, which defines pretty printers for that classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263235</commentid>
    <comment_count>1</comment_count>
      <attachid>64109</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-08-11 07:11:20 -0700</bug_when>
    <thetext>Created attachment 64109
merge-pretty-printers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263239</commentid>
    <comment_count>2</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-08-11 07:18:35 -0700</bug_when>
    <thetext>I think it&apos;s good timing to merge webcore.py and wtf.py.
I&apos;ve merged them and name it &apos;webkit.py&apos;.

I left &apos;webcore.py&apos; for backward compatibility because that file is already used by developers.
I&apos;ll update WIKI (http://trac.webkit.org/wiki/GDB) once this patch is landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263789</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-12 07:20:38 -0700</bug_when>
    <thetext>CCing people who might have a clue about this code...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263807</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Langley">agl</who>
    <bug_when>2010-08-12 07:44:58 -0700</bug_when>
    <thetext>I&apos;m only passingly familiar with gdb scripts, but this all looks reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263868</commentid>
    <comment_count>5</comment_count>
      <attachid>64109</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-12 10:32:54 -0700</bug_when>
    <thetext>Comment on attachment 64109
merge-pretty-printers

Clearing flags on attachment: 64109

Committed r65254: &lt;http://trac.webkit.org/changeset/65254&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263869</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-12 10:32:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64109</attachid>
            <date>2010-08-11 07:11:20 -0700</date>
            <delta_ts>2010-08-12 10:32:54 -0700</delta_ts>
            <desc>merge-pretty-printers</desc>
            <filename>bug-43850-20100811231118.patch</filename>
            <type>text/plain</type>
            <size>20054</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBlOTExMTY5OGZhNmI3OWQ1NGFmYTM3ZGQ3ZmQxMjlmMWRlOGNlMTE2Li4wYjQzNWVi
MGU1NjVhMTg0NDFiY2FkYzM1NjZiMDgwYzZlMjlkZDI4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTAtMDgtMTEgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lcmdlIHByZXR0eSBwcmlu
dGVycyBmb3IgZ2RiLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDM4NTAKKworICAgICAgICBXZSBuZWVkIHRvIHVwZGF0ZSB3ZWJjb3JlLnB5IGJlY2F1
c2UgYmFzaWMgc3RyaW5nIGNsYXNzZXMgaGF2ZSBtb3ZlZCB0byBXVEYgZnJvbSBXZWJDb3JlLgor
ICAgICAgICBJdCBpcyBnb29kIHRpbWluZyB0byBtZXJnZSB3ZWJjb3JlLnB5IGFuZCB3dGYucHkg
YW5kIG5hbWUgaXQgJ3dlYmtpdC5weScuCisgICAgICAgIHdlYmNvcmUucHkgaXMgbGVmdCBmb3Ig
YmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKworICAgICAgICAqIGdkYi93ZWJjb3JlLnB5OgorICAg
ICAgICAqIGdkYi93ZWJraXQucHk6IEFkZGVkLgorICAgICAgICAqIGdkYi93dGYucHk6IFJlbW92
ZWQuCisKIDIwMTAtMDgtMDkgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBcml5YSBIaWRheWF0LgpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvZ2RiL3dlYmNvcmUucHkgYi9XZWJLaXRUb29scy9nZGIvd2ViY29yZS5weQppbmRleCA4
Mzg4NmY4NDlhODkyYTIyYjU2MmM0YjE2NjM5NzBlOWI1YjQ1YzI5Li44ZGM0ZDhlZGY4MWRmYzZi
YjIwNjhiMGNlYzQ0MGE4MWY0NDAxZTgzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9nZGIvd2Vi
Y29yZS5weQorKysgYi9XZWJLaXRUb29scy9nZGIvd2ViY29yZS5weQpAQCAtMjYsMTcwICsyNiw3
IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0iIiJHREIgc3VwcG9ydCBmb3Ig
V2ViS2l0IHR5cGVzLgotCi1BZGQgdGhpcyB0byB5b3VyIGdkYiBieSBhbWVuZGluZyB5b3VyIH4v
LmdkYmluaXQgYXMgZm9sbG93czoKLSAgcHl0aG9uCi0gIGltcG9ydCBzeXMKLSAgc3lzLnBhdGgu
aW5zZXJ0KDAsICIvcGF0aC90by90b29scy9nZGIvIikKLSAgaW1wb3J0IHdlYmNvcmUKLSIiIgot
Ci1pbXBvcnQgZ2RiCi1pbXBvcnQgc3RydWN0Ci0KLWRlZiB1c3RyaW5nX3RvX3N0cmluZyhwdHIs
IGxlbmd0aD1Ob25lKToKLSAgICAiIiJDb252ZXJ0IGEgcG9pbnRlciB0byBVVEYtMTYgZGF0YSBp
bnRvIGEgUHl0aG9uIFVuaWNvZGUgc3RyaW5nLgotCi0gICAgcHRyIGFuZCBsZW5ndGggYXJlIGJv
dGggZ2RiLlZhbHVlIG9iamVjdHMuCi0gICAgSWYgbGVuZ3RoIGlzIHVuc3BlY2lmaWVkLCB3aWxs
IGd1ZXNzIGF0IHRoZSBsZW5ndGguIiIiCi0gICAgZXh0cmEgPSAnJwotICAgIGlmIGxlbmd0aCBp
cyBOb25lOgotICAgICAgICAjIFRyeSB0byBndWVzcyBhdCB0aGUgbGVuZ3RoLgotICAgICAgICBm
b3IgaSBpbiB4cmFuZ2UoMCwgMjA0OCk6Ci0gICAgICAgICAgICBpZiBpbnQoKHB0ciArIGkpLmRl
cmVmZXJlbmNlKCkpID09IDA6Ci0gICAgICAgICAgICAgICAgbGVuZ3RoID0gaQotICAgICAgICAg
ICAgICAgIGJyZWFrCi0gICAgICAgIGlmIGxlbmd0aCBpcyBOb25lOgotICAgICAgICAgICAgbGVu
Z3RoID0gMjU2Ci0gICAgICAgICAgICBleHRyYSA9IHUnIChubyB0cmFpbGluZyBOVUwgZm91bmQp
JwotICAgIGVsc2U6Ci0gICAgICAgIGxlbmd0aCA9IGludChsZW5ndGgpCi0KLSAgICBjaGFyX3Zh
bHMgPSBbaW50KChwdHIgKyBpKS5kZXJlZmVyZW5jZSgpKSBmb3IgaSBpbiB4cmFuZ2UobGVuZ3Ro
KV0KLSAgICBzdHJpbmcgPSBzdHJ1Y3QucGFjaygnSCcgKiBsZW5ndGgsICpjaGFyX3ZhbHMpLmRl
Y29kZSgndXRmLTE2JywgJ3JlcGxhY2UnKQotCi0gICAgcmV0dXJuIHN0cmluZyArIGV4dHJhCi0K
LQotY2xhc3MgU3RyaW5nUHJpbnRlcihvYmplY3QpOgotICAgICJTaGFyZWQgY29kZSBiZXR3ZWVu
IGRpZmZlcmVudCBzdHJpbmctcHJpbnRpbmcgY2xhc3NlcyIKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgdmFsKToKLSAgICAgICAgc2VsZi52YWwgPSB2YWwKLQotICAgIGRlZiBkaXNwbGF5X2hpbnQo
c2VsZik6Ci0gICAgICAgIHJldHVybiAnc3RyaW5nJwotCi0KLWNsYXNzIFVDaGFyU3RyaW5nUHJp
bnRlcihTdHJpbmdQcmludGVyKToKLSAgICAiUHJpbnQgYSBVQ2hhcio7IHdlIG11c3QgZ3Vlc3Mg
YXQgdGhlIGxlbmd0aCIKLSAgICBkZWYgdG9fc3RyaW5nKHNlbGYpOgotICAgICAgICByZXR1cm4g
dXN0cmluZ190b19zdHJpbmcoc2VsZi52YWwpCi0KLQotY2xhc3MgV2ViQ29yZUF0b21pY1N0cmlu
Z1ByaW50ZXIoU3RyaW5nUHJpbnRlcik6Ci0gICAgIlByaW50IGEgV2ViQ29yZTo6QXRvbWljU3Ry
aW5nIgotICAgIGRlZiB0b19zdHJpbmcoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnZhbFsn
bV9zdHJpbmcnXQotCi0KLWNsYXNzIFdlYkNvcmVTdHJpbmdQcmludGVyKFN0cmluZ1ByaW50ZXIp
OgotICAgICJQcmludCBhIFdlYkNvcmU6OlN0cmluZyIKLSAgICBkZWYgZ2V0X2xlbmd0aChzZWxm
KToKLSAgICAgICAgaWYgbm90IHNlbGYudmFsWydtX2ltcGwnXVsnbV9wdHInXToKLSAgICAgICAg
ICAgIHJldHVybiAwCi0gICAgICAgIHJldHVybiBzZWxmLnZhbFsnbV9pbXBsJ11bJ21fcHRyJ11b
J21fbGVuZ3RoJ10KLQotICAgIGRlZiB0b19zdHJpbmcoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYu
Z2V0X2xlbmd0aCgpID09IDA6Ci0gICAgICAgICAgICByZXR1cm4gJyhudWxsKScKLQotICAgICAg
ICByZXR1cm4gdXN0cmluZ190b19zdHJpbmcoc2VsZi52YWxbJ21faW1wbCddWydtX3B0ciddWydt
X2RhdGEnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2xlbmd0
aCgpKQotCi0KLWNsYXNzIFdlYkNvcmVRdWFsaWZpZWROYW1lUHJpbnRlcihTdHJpbmdQcmludGVy
KToKLSAgICAiUHJpbnQgYSBXZWJDb3JlOjpRdWFsaWZpZWROYW1lIgotCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIHZhbCk6Ci0gICAgICAgIHN1cGVyKFdlYkNvcmVRdWFsaWZpZWROYW1lUHJpbnRl
ciwgc2VsZikuX19pbml0X18odmFsKQotICAgICAgICBzZWxmLnByZWZpeF9sZW5ndGggPSAwCi0g
ICAgICAgIHNlbGYubGVuZ3RoID0gMAotICAgICAgICBpZiBzZWxmLnZhbFsnbV9pbXBsJ106Ci0g
ICAgICAgICAgICBzZWxmLnByZWZpeF9wcmludGVyID0gV2ViQ29yZVN0cmluZ1ByaW50ZXIoCi0g
ICAgICAgICAgICAgICAgc2VsZi52YWxbJ21faW1wbCddWydtX3ByZWZpeCddWydtX3N0cmluZydd
KQotICAgICAgICAgICAgc2VsZi5sb2NhbF9uYW1lX3ByaW50ZXIgPSBXZWJDb3JlU3RyaW5nUHJp
bnRlcigKLSAgICAgICAgICAgICAgICBzZWxmLnZhbFsnbV9pbXBsJ11bJ21fbG9jYWxOYW1lJ11b
J21fc3RyaW5nJ10pCi0gICAgICAgICAgICBzZWxmLnByZWZpeF9sZW5ndGggPSBzZWxmLnByZWZp
eF9wcmludGVyLmdldF9sZW5ndGgoKQotICAgICAgICAgICAgaWYgc2VsZi5wcmVmaXhfbGVuZ3Ro
ID4gMDoKLSAgICAgICAgICAgICAgICBzZWxmLmxlbmd0aCA9IChzZWxmLnByZWZpeF9sZW5ndGgg
KyAxICsKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2NhbF9uYW1lX3ByaW50ZXIuZ2V0X2xl
bmd0aCgpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmxlbmd0aCA9
IHNlbGYubG9jYWxfbmFtZV9wcmludGVyLmdldF9sZW5ndGgoKQotCi0gICAgZGVmIGdldF9sZW5n
dGgoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmxlbmd0aAotCi0gICAgZGVmIHRvX3N0cmlu
ZyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5nZXRfbGVuZ3RoKCkgPT0gMDoKLSAgICAgICAgICAg
IHJldHVybiAiKG51bGwpIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgc2VsZi5wcmVm
aXhfbGVuZ3RoID4gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gKHNlbGYucHJlZml4X3ByaW50
ZXIudG9fc3RyaW5nKCkgKyAiOiIgKwotICAgICAgICAgICAgICAgICAgICBzZWxmLmxvY2FsX25h
bWVfcHJpbnRlci50b19zdHJpbmcoKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHNlbGYubG9jYWxfbmFtZV9wcmludGVyLnRvX3N0cmluZygpCi0KLQotCi1kZWYg
bG9va3VwX2Z1bmN0aW9uKHZhbCk6Ci0gICAgIiIiRnVuY3Rpb24gdXNlZCB0byBsb2FkIHByZXR0
eSBwcmludGVyczsgd2lsbCBiZSBwYXNzZWQgdG8gR0RCLiIiIgotICAgIGxvb2t1cF90YWcgPSB2
YWwudHlwZS50YWcKLSAgICBwcmludGVycyA9IHsKLSAgICAgICAgIldlYkNvcmU6OkF0b21pY1N0
cmluZyI6IFdlYkNvcmVBdG9taWNTdHJpbmdQcmludGVyLAotICAgICAgICAiV2ViQ29yZTo6U3Ry
aW5nIjogV2ViQ29yZVN0cmluZ1ByaW50ZXIsCi0gICAgICAgICJXZWJDb3JlOjpRdWFsaWZpZWRO
YW1lIjogV2ViQ29yZVF1YWxpZmllZE5hbWVQcmludGVyLAotICAgIH0KLSAgICBuYW1lID0gdmFs
LnR5cGUudGFnCi0gICAgaWYgbmFtZSBpbiBwcmludGVyczoKLSAgICAgICAgcmV0dXJuIHByaW50
ZXJzW25hbWVdKHZhbCkKLQotICAgIGlmIHZhbC50eXBlLmNvZGUgPT0gZ2RiLlRZUEVfQ09ERV9Q
VFI6Ci0gICAgICAgIG5hbWUgPSBzdHIodmFsLnR5cGUudGFyZ2V0KCkudW5xdWFsaWZpZWQoKSkK
LSAgICAgICAgaWYgbmFtZSA9PSAnVUNoYXInOgotICAgICAgICAgICAgcmV0dXJuIFVDaGFyU3Ry
aW5nUHJpbnRlcih2YWwpCi0KLSAgICByZXR1cm4gTm9uZQotCi0KLWdkYi5wcmV0dHlfcHJpbnRl
cnMuYXBwZW5kKGxvb2t1cF9mdW5jdGlvbikKLQotCi0KLWNsYXNzIFByaW50UGF0aFRvUm9vdENv
bW1hbmQoZ2RiLkNvbW1hbmQpOgotICAiIiJDb21tYW5kIGZvciBwcmludGluZyBXZWJLaXQgTm9k
ZSB0cmVlcy4KLVVzYWdlOiBwcmludHBhdGh0b3Jvb3QgdmFyaWFibGVfbmFtZQotIiIiCi0KLSAg
ZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgc3VwZXIoUHJpbnRQYXRoVG9Sb290Q29tbWFuZCwg
c2VsZikuX19pbml0X18oInByaW50cGF0aHRvcm9vdCIsCi0gICAgICAgICAgZ2RiLkNPTU1BTkRf
U1VQUE9SVCwKLSAgICAgICAgICBnZGIuQ09NUExFVEVfTk9ORSkKLQotICBkZWYgaW52b2tlKHNl
bGYsIGFyZywgZnJvbV90dHkpOgotICAgICAgZWxlbWVudF90eXBlID0gZ2RiLmxvb2t1cF90eXBl
KCdXZWJDb3JlOjpFbGVtZW50JykKLSAgICAgIG5vZGVfdHlwZSA9IGdkYi5sb29rdXBfdHlwZSgn
V2ViQ29yZTo6Tm9kZScpCi0gICAgICBmcmFtZSA9IGdkYi5zZWxlY3RlZF9mcmFtZSgpCi0gICAg
ICB0cnk6Ci0gICAgICAgICAgdmFsID0gZ2RiLkZyYW1lLnJlYWRfdmFyKGZyYW1lLCBhcmcpCi0g
ICAgICBleGNlcHQ6Ci0gICAgICAgICAgcHJpbnQgIk5vIHN1Y2ggdmFyaWFibGUsIG9yIGludmFs
aWQgdHlwZSIKLSAgICAgICAgICByZXR1cm4KLQotICAgICAgdGFyZ2V0X3R5cGUgPSBzdHIodmFs
LnR5cGUudGFyZ2V0KCkuc3RyaXBfdHlwZWRlZnMoKSkKLSAgICAgIGlmIHRhcmdldF90eXBlID09
IHN0cihub2RlX3R5cGUpOgotICAgICAgICAgIHN0YWNrID0gW10KLSAgICAgICAgICB3aGlsZSB2
YWw6Ci0gICAgICAgICAgICAgIHN0YWNrLmFwcGVuZChbdmFsLAotICAgICAgICAgICAgICAgICAg
dmFsLmNhc3QoZWxlbWVudF90eXBlLnBvaW50ZXIoKSkuZGVyZWZlcmVuY2UoKVsnbV90YWdOYW1l
J11dKQotICAgICAgICAgICAgICB2YWwgPSB2YWwuZGVyZWZlcmVuY2UoKVsnbV9wYXJlbnQnXQot
Ci0gICAgICAgICAgcGFkZGluZyA9ICcnCi0gICAgICAgICAgd2hpbGUgbGVuKHN0YWNrKSA+IDA6
Ci0gICAgICAgICAgICAgIHBhaXIgPSBzdGFjay5wb3AoKQotICAgICAgICAgICAgICBwcmludCBw
YWRkaW5nLCBwYWlyWzFdLCBwYWlyWzBdCi0gICAgICAgICAgICAgIHBhZGRpbmcgPSBwYWRkaW5n
ICsgJyAgJwotICAgICAgZWxzZToKLSAgICAgICAgICBwcmludCAnU29ycnk6IEkgZG9uXCd0IGtu
b3cgaG93IHRvIGRlYWwgd2l0aCAlcyB5ZXQuJyAlIHRhcmdldF90eXBlCi0KLVByaW50UGF0aFRv
Um9vdENvbW1hbmQoKQorIyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KK2ltcG9ydCB3ZWJr
aXQKK3ByaW50ICgid2ViY29yZS5weSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlICdpbXBvcnQg
d2Via2l0JyBpbnN0ZWFkIG9mICIKKyAgICAgICAiJ2ltcG9ydCB3ZWJjb3JlJyBpbiB5b3VyIH4v
LmdkYmluaXQuIikKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL2dkYi93ZWJraXQucHkgYi9XZWJL
aXRUb29scy9nZGIvd2Via2l0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkM2I0N2ExMThjYzAzNmJkNDgzMzU1
YWY2ZWMxYTA3NGM3NDAzZDMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9nZGIvd2Vi
a2l0LnB5CkBAIC0wLDAgKzEsMjcyIEBACisjIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIkdEQiBzdXBw
b3J0IGZvciBXZWJLaXQgdHlwZXMuCisKK0FkZCB0aGlzIHRvIHlvdXIgZ2RiIGJ5IGFtZW5kaW5n
IHlvdXIgfi8uZ2RiaW5pdCBhcyBmb2xsb3dzOgorICBweXRob24KKyAgaW1wb3J0IHN5cworICBz
eXMucGF0aC5pbnNlcnQoMCwgIi9wYXRoL3RvL3Rvb2xzL2dkYi8iKQorICBpbXBvcnQgd2Via2l0
CisiIiIKKworaW1wb3J0IGdkYgoraW1wb3J0IHJlCitpbXBvcnQgc3RydWN0CisKKworZGVmIHVz
dHJpbmdfdG9fc3RyaW5nKHB0ciwgbGVuZ3RoPU5vbmUpOgorICAgICIiIkNvbnZlcnQgYSBwb2lu
dGVyIHRvIFVURi0xNiBkYXRhIGludG8gYSBQeXRob24gVW5pY29kZSBzdHJpbmcuCisKKyAgICBw
dHIgYW5kIGxlbmd0aCBhcmUgYm90aCBnZGIuVmFsdWUgb2JqZWN0cy4KKyAgICBJZiBsZW5ndGgg
aXMgdW5zcGVjaWZpZWQsIHdpbGwgZ3Vlc3MgYXQgdGhlIGxlbmd0aC4iIiIKKyAgICBleHRyYSA9
ICcnCisgICAgaWYgbGVuZ3RoIGlzIE5vbmU6CisgICAgICAgICMgVHJ5IHRvIGd1ZXNzIGF0IHRo
ZSBsZW5ndGguCisgICAgICAgIGZvciBpIGluIHhyYW5nZSgwLCAyMDQ4KToKKyAgICAgICAgICAg
IGlmIGludCgocHRyICsgaSkuZGVyZWZlcmVuY2UoKSkgPT0gMDoKKyAgICAgICAgICAgICAgICBs
ZW5ndGggPSBpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgbGVuZ3RoIGlzIE5v
bmU6CisgICAgICAgICAgICBsZW5ndGggPSAyNTYKKyAgICAgICAgICAgIGV4dHJhID0gdScgKG5v
IHRyYWlsaW5nIE5VTCBmb3VuZCknCisgICAgZWxzZToKKyAgICAgICAgbGVuZ3RoID0gaW50KGxl
bmd0aCkKKworICAgIGNoYXJfdmFscyA9IFtpbnQoKHB0ciArIGkpLmRlcmVmZXJlbmNlKCkpIGZv
ciBpIGluIHhyYW5nZShsZW5ndGgpXQorICAgIHN0cmluZyA9IHN0cnVjdC5wYWNrKCdIJyAqIGxl
bmd0aCwgKmNoYXJfdmFscykuZGVjb2RlKCd1dGYtMTYnLCAncmVwbGFjZScpCisKKyAgICByZXR1
cm4gc3RyaW5nICsgZXh0cmEKKworCitjbGFzcyBTdHJpbmdQcmludGVyKG9iamVjdCk6CisgICAg
IlNoYXJlZCBjb2RlIGJldHdlZW4gZGlmZmVyZW50IHN0cmluZy1wcmludGluZyBjbGFzc2VzIgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWwpOgorICAgICAgICBzZWxmLnZhbCA9IHZhbAorCisg
ICAgZGVmIGRpc3BsYXlfaGludChzZWxmKToKKyAgICAgICAgcmV0dXJuICdzdHJpbmcnCisKKwor
Y2xhc3MgVUNoYXJTdHJpbmdQcmludGVyKFN0cmluZ1ByaW50ZXIpOgorICAgICJQcmludCBhIFVD
aGFyKjsgd2UgbXVzdCBndWVzcyBhdCB0aGUgbGVuZ3RoIgorICAgIGRlZiB0b19zdHJpbmcoc2Vs
Zik6CisgICAgICAgIHJldHVybiB1c3RyaW5nX3RvX3N0cmluZyhzZWxmLnZhbCkKKworCitjbGFz
cyBXVEZBdG9taWNTdHJpbmdQcmludGVyKFN0cmluZ1ByaW50ZXIpOgorICAgICJQcmludCBhIFdU
Rjo6QXRvbWljU3RyaW5nIgorICAgIGRlZiB0b19zdHJpbmcoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLnZhbFsnbV9zdHJpbmcnXQorCisKK2NsYXNzIFdURlN0cmluZ1ByaW50ZXIoU3RyaW5n
UHJpbnRlcik6CisgICAgIlByaW50IGEgV1RGOjpTdHJpbmciCisgICAgZGVmIGdldF9sZW5ndGgo
c2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLnZhbFsnbV9pbXBsJ11bJ21fcHRyJ106CisgICAg
ICAgICAgICByZXR1cm4gMAorICAgICAgICByZXR1cm4gc2VsZi52YWxbJ21faW1wbCddWydtX3B0
ciddWydtX2xlbmd0aCddCisKKyAgICBkZWYgdG9fc3RyaW5nKHNlbGYpOgorICAgICAgICBpZiBz
ZWxmLmdldF9sZW5ndGgoKSA9PSAwOgorICAgICAgICAgICAgcmV0dXJuICcobnVsbCknCisKKyAg
ICAgICAgcmV0dXJuIHVzdHJpbmdfdG9fc3RyaW5nKHNlbGYudmFsWydtX2ltcGwnXVsnbV9wdHIn
XVsnbV9kYXRhJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmdldF9s
ZW5ndGgoKSkKKworCitjbGFzcyBXZWJDb3JlUXVhbGlmaWVkTmFtZVByaW50ZXIoU3RyaW5nUHJp
bnRlcik6CisgICAgIlByaW50IGEgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSIKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCB2YWwpOgorICAgICAgICBzdXBlcihXZWJDb3JlUXVhbGlmaWVkTmFtZVBy
aW50ZXIsIHNlbGYpLl9faW5pdF9fKHZhbCkKKyAgICAgICAgc2VsZi5wcmVmaXhfbGVuZ3RoID0g
MAorICAgICAgICBzZWxmLmxlbmd0aCA9IDAKKyAgICAgICAgaWYgc2VsZi52YWxbJ21faW1wbCdd
OgorICAgICAgICAgICAgc2VsZi5wcmVmaXhfcHJpbnRlciA9IFdURlN0cmluZ1ByaW50ZXIoCisg
ICAgICAgICAgICAgICAgc2VsZi52YWxbJ21faW1wbCddWydtX3ByZWZpeCddWydtX3N0cmluZydd
KQorICAgICAgICAgICAgc2VsZi5sb2NhbF9uYW1lX3ByaW50ZXIgPSBXVEZTdHJpbmdQcmludGVy
KAorICAgICAgICAgICAgICAgIHNlbGYudmFsWydtX2ltcGwnXVsnbV9sb2NhbE5hbWUnXVsnbV9z
dHJpbmcnXSkKKyAgICAgICAgICAgIHNlbGYucHJlZml4X2xlbmd0aCA9IHNlbGYucHJlZml4X3By
aW50ZXIuZ2V0X2xlbmd0aCgpCisgICAgICAgICAgICBpZiBzZWxmLnByZWZpeF9sZW5ndGggPiAw
OgorICAgICAgICAgICAgICAgIHNlbGYubGVuZ3RoID0gKHNlbGYucHJlZml4X2xlbmd0aCArIDEg
KworICAgICAgICAgICAgICAgICAgICBzZWxmLmxvY2FsX25hbWVfcHJpbnRlci5nZXRfbGVuZ3Ro
KCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYubGVuZ3RoID0gc2Vs
Zi5sb2NhbF9uYW1lX3ByaW50ZXIuZ2V0X2xlbmd0aCgpCisKKyAgICBkZWYgZ2V0X2xlbmd0aChz
ZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYubGVuZ3RoCisKKyAgICBkZWYgdG9fc3RyaW5nKHNl
bGYpOgorICAgICAgICBpZiBzZWxmLmdldF9sZW5ndGgoKSA9PSAwOgorICAgICAgICAgICAgcmV0
dXJuICIobnVsbCkiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBzZWxmLnByZWZpeF9s
ZW5ndGggPiAwOgorICAgICAgICAgICAgICAgIHJldHVybiAoc2VsZi5wcmVmaXhfcHJpbnRlci50
b19zdHJpbmcoKSArICI6IiArCisgICAgICAgICAgICAgICAgICAgIHNlbGYubG9jYWxfbmFtZV9w
cmludGVyLnRvX3N0cmluZygpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc2VsZi5sb2NhbF9uYW1lX3ByaW50ZXIudG9fc3RyaW5nKCkKKworCitjbGFzcyBXVEZW
ZWN0b3JQcmludGVyOgorICAgICIiIlByZXR0eSBQcmludGVyIGZvciBhIFdURjo6VmVjdG9yLgor
CisgICAgVGhlIG91dHB1dCBvZiB0aGlzIHByZXR0eSBwcmludGVyIGlzIHNpbWlsYXIgdG8gdGhl
IG91dHB1dCBvZiBzdGQ6OnZlY3RvcidzCisgICAgcHJldHR5IHByaW50ZXIsIHdoaWNoIGlzIGJ1
bmRsZWQgaW4gZ2NjLgorCisgICAgRXhhbXBsZSBnZGIgc2Vzc2lvbiBzaG91bGQgbG9vayBsaWtl
OgorICAgIChnZGIpIHAgdgorICAgICQzID0gV1RGOjpWZWN0b3Igb2YgbGVuZ3RoIDcsIGNhcGFj
aXR5IDE2ID0gezcsIDE3LCAyNywgMzcsIDQ3LCA1NywgNjd9CisgICAgKGdkYikgc2V0IHByaW50
IGVsZW1lbnRzIDMKKyAgICAoZ2RiKSBwIHYKKyAgICAkNiA9IFdURjo6VmVjdG9yIG9mIGxlbmd0
aCA3LCBjYXBhY2l0eSAxNiA9IHs3LCAxNywgMjcuLi59CisgICAgKGdkYikgc2V0IHByaW50IGFy
cmF5CisgICAgKGdkYikgcCB2CisgICAgJDcgPSBXVEY6OlZlY3RvciBvZiBsZW5ndGggNywgY2Fw
YWNpdHkgMTYgPSB7CisgICAgICA3LAorICAgICAgMTcsCisgICAgICAyNworICAgICAgLi4uCisg
ICAgfQorICAgIChnZGIpIHNldCBwcmludCBlbGVtZW50cyAyMDAKKyAgICAoZ2RiKSBwIHYKKyAg
ICAkOCA9IFdURjo6VmVjdG9yIG9mIGxlbmd0aCA3LCBjYXBhY2l0eSAxNiA9IHsKKyAgICAgIDcs
CisgICAgICAxNywKKyAgICAgIDI3LAorICAgICAgMzcsCisgICAgICA0NywKKyAgICAgIDU3LAor
ICAgICAgNjcKKyAgICB9CisgICAgIiIiCisKKyAgICBjbGFzcyBJdGVyYXRvcjoKKyAgICAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHN0YXJ0LCBmaW5pc2gpOgorICAgICAgICAgICAgc2VsZi5pdGVt
ID0gc3RhcnQKKyAgICAgICAgICAgIHNlbGYuZmluaXNoID0gZmluaXNoCisgICAgICAgICAgICBz
ZWxmLmNvdW50ID0gMAorCisgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAg
IHJldHVybiBzZWxmCisKKyAgICAgICAgZGVmIG5leHQoc2VsZik6CisgICAgICAgICAgICBpZiBz
ZWxmLml0ZW0gPT0gc2VsZi5maW5pc2g6CisgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJh
dGlvbgorICAgICAgICAgICAgY291bnQgPSBzZWxmLmNvdW50CisgICAgICAgICAgICBzZWxmLmNv
dW50ICs9IDEKKyAgICAgICAgICAgIGVsZW1lbnQgPSBzZWxmLml0ZW0uZGVyZWZlcmVuY2UoKQor
ICAgICAgICAgICAgc2VsZi5pdGVtICs9IDEKKyAgICAgICAgICAgIHJldHVybiAoJ1slZF0nICUg
Y291bnQsIGVsZW1lbnQpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsKToKKyAgICAgICAg
c2VsZi52YWwgPSB2YWwKKworICAgIGRlZiBjaGlsZHJlbihzZWxmKToKKyAgICAgICAgc3RhcnQg
PSBzZWxmLnZhbFsnbV9idWZmZXInXVsnbV9idWZmZXInXQorICAgICAgICByZXR1cm4gc2VsZi5J
dGVyYXRvcihzdGFydCwgc3RhcnQgKyBzZWxmLnZhbFsnbV9zaXplJ10pCisKKyAgICBkZWYgdG9f
c3RyaW5nKHNlbGYpOgorICAgICAgICByZXR1cm4gKCclcyBvZiBsZW5ndGggJWQsIGNhcGFjaXR5
ICVkJworICAgICAgICAgICAgICAgICUgKCdXVEY6OlZlY3RvcicsIHNlbGYudmFsWydtX3NpemUn
XSwgc2VsZi52YWxbJ21fYnVmZmVyJ11bJ21fY2FwYWNpdHknXSkpCisKKyAgICBkZWYgZGlzcGxh
eV9oaW50KHNlbGYpOgorICAgICAgICByZXR1cm4gJ2FycmF5JworCisKK2RlZiBhZGRfcHJldHR5
X3ByaW50ZXJzKCk6CisgICAgcHJldHR5X3ByaW50ZXJzX2RpY3QgPSB7CisgICAgICAgIHJlLmNv
bXBpbGUoIl5XVEY6OlZlY3RvcjwuKj4kIik6IFdURlZlY3RvclByaW50ZXIsCisgICAgICAgIHJl
LmNvbXBpbGUoIl5XVEY6OkF0b21pY1N0cmluZyQiKTogV1RGQXRvbWljU3RyaW5nUHJpbnRlciwK
KyAgICAgICAgcmUuY29tcGlsZSgiXldURjo6U3RyaW5nJCIpOiBXVEZTdHJpbmdQcmludGVyLAor
ICAgICAgICByZS5jb21waWxlKCJeV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSQiKTogV2ViQ29yZVF1
YWxpZmllZE5hbWVQcmludGVyLAorICAgIH0KKworICAgIGRlZiBsb29rdXBfZnVuY3Rpb24odmFs
KToKKyAgICAgICAgIiIiRnVuY3Rpb24gdXNlZCB0byBsb2FkIHByZXR0eSBwcmludGVyczsgd2ls
bCBiZSBwYXNzZWQgdG8gR0RCLiIiIgorICAgICAgICB0eXBlID0gdmFsLnR5cGUKKyAgICAgICAg
aWYgdHlwZS5jb2RlID09IGdkYi5UWVBFX0NPREVfUkVGOgorICAgICAgICAgICAgdHlwZSA9IHR5
cGUudGFyZ2V0KCkKKyAgICAgICAgdHlwZSA9IHR5cGUudW5xdWFsaWZpZWQoKS5zdHJpcF90eXBl
ZGVmcygpCisgICAgICAgIHR5cGVuYW1lID0gdHlwZS50YWcKKyAgICAgICAgaWYgbm90IHR5cGVu
YW1lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZm9yIGZ1bmN0aW9uLCBwcmV0
dHlfcHJpbnRlciBpbiBwcmV0dHlfcHJpbnRlcnNfZGljdC5pdGVtcygpOgorICAgICAgICAgICAg
aWYgZnVuY3Rpb24uc2VhcmNoKHR5cGVuYW1lKToKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJl
dHR5X3ByaW50ZXIodmFsKQorCisgICAgICAgIGlmIHR5cGUuY29kZSA9PSBnZGIuVFlQRV9DT0RF
X1BUUjoKKyAgICAgICAgICAgIG5hbWUgPSBzdHIodHlwZS50YXJnZXQoKS51bnF1YWxpZmllZCgp
KQorICAgICAgICAgICAgaWYgbmFtZSA9PSAnVUNoYXInOgorICAgICAgICAgICAgICAgIHJldHVy
biBVQ2hhclN0cmluZ1ByaW50ZXIodmFsKQorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZ2Ri
LnByZXR0eV9wcmludGVycy5hcHBlbmQobG9va3VwX2Z1bmN0aW9uKQorCisKK2FkZF9wcmV0dHlf
cHJpbnRlcnMoKQorCisKK2NsYXNzIFByaW50UGF0aFRvUm9vdENvbW1hbmQoZ2RiLkNvbW1hbmQp
OgorICAgICIiIkNvbW1hbmQgZm9yIHByaW50aW5nIFdlYktpdCBOb2RlIHRyZWVzLgorCisgICAg
VXNhZ2U6IHByaW50cGF0aHRvcm9vdCB2YXJpYWJsZV9uYW1lIiIiCisKKyAgICBkZWYgX19pbml0
X18oc2VsZik6CisgICAgICAgIHN1cGVyKFByaW50UGF0aFRvUm9vdENvbW1hbmQsIHNlbGYpLl9f
aW5pdF9fKCJwcmludHBhdGh0b3Jvb3QiLAorICAgICAgICAgICAgZ2RiLkNPTU1BTkRfU1VQUE9S
VCwKKyAgICAgICAgICAgIGdkYi5DT01QTEVURV9OT05FKQorCisgICAgZGVmIGludm9rZShzZWxm
LCBhcmcsIGZyb21fdHR5KToKKyAgICAgICAgZWxlbWVudF90eXBlID0gZ2RiLmxvb2t1cF90eXBl
KCdXZWJDb3JlOjpFbGVtZW50JykKKyAgICAgICAgbm9kZV90eXBlID0gZ2RiLmxvb2t1cF90eXBl
KCdXZWJDb3JlOjpOb2RlJykKKyAgICAgICAgZnJhbWUgPSBnZGIuc2VsZWN0ZWRfZnJhbWUoKQor
ICAgICAgICB0cnk6CisgICAgICAgICAgICB2YWwgPSBnZGIuRnJhbWUucmVhZF92YXIoZnJhbWUs
IGFyZykKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcHJpbnQgIk5vIHN1Y2ggdmFyaWFi
bGUsIG9yIGludmFsaWQgdHlwZSIKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHRhcmdl
dF90eXBlID0gc3RyKHZhbC50eXBlLnRhcmdldCgpLnN0cmlwX3R5cGVkZWZzKCkpCisgICAgICAg
IGlmIHRhcmdldF90eXBlID09IHN0cihub2RlX3R5cGUpOgorICAgICAgICAgICAgc3RhY2sgPSBb
XQorICAgICAgICAgICAgd2hpbGUgdmFsOgorICAgICAgICAgICAgICAgIHN0YWNrLmFwcGVuZChb
dmFsLAorICAgICAgICAgICAgICAgICAgICB2YWwuY2FzdChlbGVtZW50X3R5cGUucG9pbnRlcigp
KS5kZXJlZmVyZW5jZSgpWydtX3RhZ05hbWUnXV0pCisgICAgICAgICAgICAgICAgdmFsID0gdmFs
LmRlcmVmZXJlbmNlKClbJ21fcGFyZW50J10KKworICAgICAgICAgICAgcGFkZGluZyA9ICcnCisg
ICAgICAgICAgICB3aGlsZSBsZW4oc3RhY2spID4gMDoKKyAgICAgICAgICAgICAgICBwYWlyID0g
c3RhY2sucG9wKCkKKyAgICAgICAgICAgICAgICBwcmludCBwYWRkaW5nLCBwYWlyWzFdLCBwYWly
WzBdCisgICAgICAgICAgICAgICAgcGFkZGluZyA9IHBhZGRpbmcgKyAnICAnCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBwcmludCAnU29ycnk6IEkgZG9uXCd0IGtub3cgaG93IHRvIGRlYWwg
d2l0aCAlcyB5ZXQuJyAlIHRhcmdldF90eXBlCisKKworUHJpbnRQYXRoVG9Sb290Q29tbWFuZCgp
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9nZGIvd3RmLnB5IGIvV2ViS2l0VG9vbHMvZ2RiL3d0
Zi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y0YjU5YmQwYWY0ZGJhMWM1ODk1
NGZiOGZkNTcwNzNmMWQ3ZjcyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9XZWJLaXRUb29scy9nZGIvd3RmLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTMz
ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlz
dHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiR0RCIHN1cHBvcnQgZm9yIFdlYktpdCBX
VEYgdHlwZXMuCi0KLUFkZCB0aGlzIHRvIHlvdXIgZ2RiIGJ5IGFtZW5kaW5nIHlvdXIgfi8uZ2Ri
aW5pdCBhcyBmb2xsb3dzOgotICBweXRob24KLSAgaW1wb3J0IHN5cwotICBzeXMucGF0aC5pbnNl
cnQoMCwgIi9wYXRoL3RvL3Rvb2xzL2dkYi8iKQotICBpbXBvcnQgd3RmCi0KLVNlZSBodHRwOi8v
c291cmNld2FyZS5vcmcvZ2RiL2N1cnJlbnQvb25saW5lZG9jcy9nZGIvUHl0aG9uLmh0bWwgZm9y
IEdEQidzCi1QeXRob24gQVBJLgotIiIiCi0KLWltcG9ydCBnZGIKLWltcG9ydCByZQotCi0KLWNs
YXNzIFdURlZlY3RvclByaW50ZXI6Ci0gICAgIiIiUHJldHR5IFByaW50ZXIgZm9yIGEgV1RGOjpW
ZWN0b3IuCi0KLSAgICBUaGUgb3V0cHV0IG9mIHRoaXMgcHJldHR5IHByaW50ZXIgaXMgc2ltaWxh
ciB0byB0aGUgb3V0cHV0IG9mIHN0ZDo6dmVjdG9yJ3MKLSAgICBwcmV0dHkgcHJpbnRlciwgd2hp
Y2ggaXMgYnVuZGxlZCBpbiBnY2MuCi0KLSAgICBFeGFtcGxlIGdkYiBzZXNzaW9uIHNob3VsZCBs
b29rIGxpa2U6Ci0gICAgKGdkYikgcCB2Ci0gICAgJDMgPSBXVEY6OlZlY3RvciBvZiBsZW5ndGgg
NywgY2FwYWNpdHkgMTYgPSB7NywgMTcsIDI3LCAzNywgNDcsIDU3LCA2N30KLSAgICAoZ2RiKSBz
ZXQgcHJpbnQgZWxlbWVudHMgMwotICAgIChnZGIpIHAgdgotICAgICQ2ID0gV1RGOjpWZWN0b3Ig
b2YgbGVuZ3RoIDcsIGNhcGFjaXR5IDE2ID0gezcsIDE3LCAyNy4uLn0KLSAgICAoZ2RiKSBzZXQg
cHJpbnQgYXJyYXkKLSAgICAoZ2RiKSBwIHYKLSAgICAkNyA9IFdURjo6VmVjdG9yIG9mIGxlbmd0
aCA3LCBjYXBhY2l0eSAxNiA9IHsKLSAgICAgIDcsCi0gICAgICAxNywKLSAgICAgIDI3Ci0gICAg
ICAuLi4KLSAgICB9Ci0gICAgKGdkYikgc2V0IHByaW50IGVsZW1lbnRzIDIwMAotICAgIChnZGIp
IHAgdgotICAgICQ4ID0gV1RGOjpWZWN0b3Igb2YgbGVuZ3RoIDcsIGNhcGFjaXR5IDE2ID0gewot
ICAgICAgNywKLSAgICAgIDE3LAotICAgICAgMjcsCi0gICAgICAzNywKLSAgICAgIDQ3LAotICAg
ICAgNTcsCi0gICAgICA2NwotICAgIH0KLSAgICAiIiIKLQotICAgIGNsYXNzIEl0ZXJhdG9yOgot
ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgc3RhcnQsIGZpbmlzaCk6Ci0gICAgICAgICAgICBz
ZWxmLml0ZW0gPSBzdGFydAotICAgICAgICAgICAgc2VsZi5maW5pc2ggPSBmaW5pc2gKLSAgICAg
ICAgICAgIHNlbGYuY291bnQgPSAwCi0KLSAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgotICAg
ICAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgICAgICBkZWYgbmV4dChzZWxmKToKLSAgICAgICAg
ICAgIGlmIHNlbGYuaXRlbSA9PSBzZWxmLmZpbmlzaDoKLSAgICAgICAgICAgICAgICByYWlzZSBT
dG9wSXRlcmF0aW9uCi0gICAgICAgICAgICBjb3VudCA9IHNlbGYuY291bnQKLSAgICAgICAgICAg
IHNlbGYuY291bnQgKz0gMQotICAgICAgICAgICAgZWxlbWVudCA9IHNlbGYuaXRlbS5kZXJlZmVy
ZW5jZSgpCi0gICAgICAgICAgICBzZWxmLml0ZW0gKz0gMQotICAgICAgICAgICAgcmV0dXJuICgn
WyVkXScgJSBjb3VudCwgZWxlbWVudCkKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWwpOgot
ICAgICAgICBzZWxmLnZhbCA9IHZhbAotCi0gICAgZGVmIGNoaWxkcmVuKHNlbGYpOgotICAgICAg
ICBzdGFydCA9IHNlbGYudmFsWydtX2J1ZmZlciddWydtX2J1ZmZlciddCi0gICAgICAgIHJldHVy
biBzZWxmLkl0ZXJhdG9yKHN0YXJ0LCBzdGFydCArIHNlbGYudmFsWydtX3NpemUnXSkKLQotICAg
IGRlZiB0b19zdHJpbmcoc2VsZik6Ci0gICAgICAgIHJldHVybiAoJyVzIG9mIGxlbmd0aCAlZCwg
Y2FwYWNpdHkgJWQnCi0gICAgICAgICAgICAgICAgJSAoJ1dURjo6VmVjdG9yJywgc2VsZi52YWxb
J21fc2l6ZSddLCBzZWxmLnZhbFsnbV9idWZmZXInXVsnbV9jYXBhY2l0eSddKSkKLQotICAgIGRl
ZiBkaXNwbGF5X2hpbnQoc2VsZik6Ci0gICAgICAgIHJldHVybiAnYXJyYXknCi0KLQotZGVmIGxv
b2t1cF9mdW5jdGlvbih2YWwpOgotICAgIHR5cGUgPSB2YWwudHlwZQotICAgIGlmIHR5cGUuY29k
ZSA9PSBnZGIuVFlQRV9DT0RFX1JFRjoKLSAgICAgICAgdHlwZSA9IHR5cGUudGFyZ2V0KCkKLSAg
ICB0eXBlID0gdHlwZS51bnF1YWxpZmllZCgpLnN0cmlwX3R5cGVkZWZzKCkKLSAgICB0eXBlbmFt
ZSA9IHR5cGUudGFnCi0gICAgaWYgbm90IHR5cGVuYW1lOgotICAgICAgICByZXR1cm4gTm9uZQot
ICAgIGZvciBmdW5jdGlvbiwgcHJldHR5X3ByaW50ZXIgaW4gcHJldHR5X3ByaW50ZXJzX2RpY3Qu
aXRlbXMoKToKLSAgICAgICAgaWYgZnVuY3Rpb24uc2VhcmNoKHR5cGVuYW1lKToKLSAgICAgICAg
ICAgIHJldHVybiBwcmV0dHlfcHJpbnRlcih2YWwpCi0gICAgcmV0dXJuIE5vbmUKLQotCi1kZWYg
YnVpbGRfcHJldHR5X3ByaW50ZXJzX2RpY3QoKToKLSAgICBwcmV0dHlfcHJpbnRlcnNfZGljdFty
ZS5jb21waWxlKCdeV1RGOjpWZWN0b3I8Lio+JCcpXSA9IFdURlZlY3RvclByaW50ZXIKLQotCi1w
cmV0dHlfcHJpbnRlcnNfZGljdCA9IHt9Ci0KLWJ1aWxkX3ByZXR0eV9wcmludGVyc19kaWN0KCkK
LQotZ2RiLnByZXR0eV9wcmludGVycy5hcHBlbmQobG9va3VwX2Z1bmN0aW9uKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>