<?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>48264</bug_id>
          
          <creation_ts>2010-10-25 14:16:25 -0700</creation_ts>
          <short_desc>new-run-webkit-tests: split out webkit-specific configuration stuff into a new module</short_desc>
          <delta_ts>2010-11-04 18:06:02 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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>
          
          <blocked>48280</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>299101</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-25 14:16:25 -0700</bug_when>
    <thetext>new-run-webkit-tests: split out webkit-specific configuration stuff into a new module</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299102</commentid>
    <comment_count>1</comment_count>
      <attachid>71793</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-25 14:18:44 -0700</bug_when>
    <thetext>Created attachment 71793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299185</commentid>
    <comment_count>2</comment_count>
      <attachid>71815</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-25 16:39:26 -0700</bug_when>
    <thetext>Created attachment 71815
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299211</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-25 17:32:35 -0700</bug_when>
    <thetext>Note that I&apos;m not wedded to either the name &quot;config&quot; or the location in the tree (under layout_tests/port) for this new class. 

The class doesn&apos;t depend on anything else in layout_tests/ and could move to webkitpy/common/config. At some point we should unify those classes, but it&apos;s not 100% clear to me how to do so yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300738</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-27 17:38:49 -0700</bug_when>
    <thetext>You&apos;re aware of webkitpy.common.config right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300752</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-27 18:00:09 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; You&apos;re aware of webkitpy.common.config right?

Yes; you replied to the email I sent about that. That said, it&apos;s not clear to me what to do about the two classes since they have largely disjoint functionality. That&apos;s why there&apos;s a FIXME at the top of the file to do something about it at some point ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302867</commentid>
    <comment_count>6</comment_count>
      <attachid>71815</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-01 13:15:44 -0700</bug_when>
    <thetext>Comment on attachment 71815
Patch

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

I don&apos;t really understand this patch.  Seems to replicate functionality that already exists in webkitpy but it doesn&apos;t remove that code, so we just end up with more duplicate code.  Without seeing this code in use, it&apos;s difficult to know whether this patch is an improvement or not.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/config.py:63
&gt; +    _FLAGS_FROM_CONFIGURATIONS = {
&gt; +        &quot;Debug&quot;: &quot;--debug&quot;,
&gt; +        &quot;Release&quot;: &quot;--release&quot;,
&gt; +    }

Surely this information exists in webkitpy already.  I don&apos;t see any minus lines in this patch...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302941</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-01 14:32:00 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 71815 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=71815&amp;action=review
&gt; 
&gt; I don&apos;t really understand this patch.  Seems to replicate functionality that already exists in webkitpy but it doesn&apos;t remove that code, so we just end up with more duplicate code.  Without seeing this code in use, it&apos;s difficult to know whether this patch is an improvement or not.
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/config.py:63
&gt; &gt; +    _FLAGS_FROM_CONFIGURATIONS = {
&gt; &gt; +        &quot;Debug&quot;: &quot;--debug&quot;,
&gt; &gt; +        &quot;Release&quot;: &quot;--release&quot;,
&gt; &gt; +    }
&gt; 
&gt; Surely this information exists in webkitpy already.  I don&apos;t see any minus lines in this patch...

There is a similar chunk of code in common/config/ports.py (build_webkit_command), but it&apos;s tied to the build_webkit_command() routine.

This code does not remove any other code. The duplicate code in layout_tests will be removed in the patch in bug 48280. The duplicate code in common/config/ports is not yet removed because the code that uses config/ports will need to be refactored, which I think should be done in a separate patch in order to be manageable (and there is value in this refactoring even without the config/ports refactoring).

Given that, does this patch make more sense now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304856</commentid>
    <comment_count>8</comment_count>
      <attachid>71815</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-04 14:02:23 -0700</bug_when>
    <thetext>Comment on attachment 71815
Patch

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

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/config.py:91
&gt; +        ed)turns whether build was successful or is up-to-date.

ed)turns =&gt; returns</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304858</commentid>
    <comment_count>9</comment_count>
      <attachid>71815</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-04 14:03:10 -0700</bug_when>
    <thetext>Comment on attachment 71815
Patch

I feel sad that we&apos;re adding a bunch of redundant code, but Dirk promises me that he&apos;ll remove the other instances.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305065</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-04 18:06:02 -0700</bug_when>
    <thetext>Committed r71374: &lt;http://trac.webkit.org/changeset/71374&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71793</attachid>
            <date>2010-10-25 14:18:44 -0700</date>
            <delta_ts>2010-10-25 16:39:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48264-20101025141843.patch</filename>
            <type>text/plain</type>
            <size>14694</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA1YWI0Yzc2MzVhZDg1MWUxYmRiZmI3NDVhNTk1ZjIxY2NkYzRmNDM0Li40YWVjNzg4
ZGNkZTFmMjYzM2NjMDUyMDg5MzgyMjE5NWZiMGVhNjEwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMTAtMjUgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IHNwbGl0IG91dCB3ZWJraXQtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBzdHVmZiBpbnRv
IGEgbmV3IG1vZHVsZQorCisgICAgICAgIFRoZSBjdXJyZW50IE5SV1QgY29kZSBoYXMgd2Via2l0
LXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gY29kZSAobGlrZQorICAgICAgICBfc2NyaXB0X3BhdGgs
IGRlZmF1bHQgY29uZmlndXJhdGlvbiwgZXRjLikgbWl4ZWQgaW4gd2l0aAorICAgICAgICBsYXlv
dXQtdGVzdC1zcGVjaWZpYyBzdHVmZiBpbiBwb3J0L2Jhc2UuIFRoZSBjb25maWd1cmF0aW9uIGNv
ZGUKKyAgICAgICAgc2hvdWxkIGJlIHNwbGl0IG91dCBpbnRvIGEgc2VwYXJhdGUgbW9kdWxlIGZv
ciBlYXNpZXIgbW9ja2luZywKKyAgICAgICAgdGVzdGluZywgYW5kIGlzb2xhdGlvbi4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgyNjQKKworICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnLnB5OiBBZGRl
ZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191
bml0dGVzdC5weTogQWRkZWQuCisKIDIwMTAtMTAtMjIgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZp
Zy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29u
ZmlnLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI3NzQ2OGU5NTc1ODAxMWVhZjZkMzI5ZjUzZTVmZjQ1NTIwMmEw
YjAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2NvbmZpZy5weQpAQCAtMCwwICsxLDE1OCBAQAorIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiV3JhcHBlciBvYmplY3RzIGZvciBXZWJLaXQt
c3BlY2lmaWMgdXRpbGl0eSByb3V0aW5lcy4iIiIKKworIyBGSVhNRTogVGhpcyBmaWxlIG5lZWRz
IHRvIGJlIHVuaWZpZWQgd2l0aCBjb21tb24vY2hlY2tvdXQvc2NtLnB5IGFuZAorIyBjb21tb24v
Y29uZmlnL3BvcnRzLnB5IC4KKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVu
dAorCitpbXBvcnQgY29kZWNzCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworZnJvbSB3ZWJraXRw
eS5jb21tb24uY2hlY2tvdXQgaW1wb3J0IHNjbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
IGltcG9ydCBsb2d1dGlscworCisKK19sb2cgPSBsb2d1dGlscy5nZXRfbG9nZ2VyKF9fZmlsZV9f
KQorCisjCisjIFRoaXMgaXMgdXNlZCB0byByZWNvcmQgaWYgd2UndmUgYWxyZWFkeSBoaXQgdGhl
IGZpbGVzeXN0ZW0gdG8gbG9vaworIyBmb3IgYSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uIFdlIGNh
Y2hlIHRoaXMgdG8gc3BlZWQgdXAgdGhlIHVuaXQgdGVzdHMsCisjIGJ1dCB0aGlzIGNhbiBiZSBy
ZXNldCB3aXRoIGNsZWFyX2NhY2hlZF9jb25maWd1cmF0aW9uKCkuCisjCitfZGV0ZXJtaW5lZF9j
b25maWd1cmF0aW9uID0gTm9uZQorCisKK2RlZiBjbGVhcl9jYWNoZWRfY29uZmlndXJhdGlvbigp
OgorICAgIGdsb2JhbCBfZGV0ZXJtaW5lZF9jb25maWd1cmF0aW9uCisgICAgX2RldGVybWluZWRf
Y29uZmlndXJhdGlvbiA9IC0xCisKKworY2xhc3MgQ29uZmlnKG9iamVjdCk6CisgICAgX0ZMQUdT
X0ZST01fQ09ORklHVVJBVElPTlMgPSB7CisgICAgICAgICJEZWJ1ZyI6ICItLWRlYnVnIiwKKyAg
ICAgICAgIlJlbGVhc2UiOiAiLS1yZWxlYXNlIiwKKyAgICB9CisKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgZXhlY3V0aXZlKToKKyAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZlCisg
ICAgICAgIHNlbGYuX3dlYmtpdF9iYXNlX2RpciA9IE5vbmUKKyAgICAgICAgc2VsZi5fZGVmYXVs
dF9jb25maWd1cmF0aW9uID0gTm9uZQorICAgICAgICBzZWxmLl9idWlsZF9kaXJlY3RvcmllcyA9
IHt9CisKKyAgICBkZWYgYnVpbGRfZGlyZWN0b3J5KHNlbGYsIGNvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAiIiJSZXR1cm5zIHRoZSBwYXRoIHRvIHRoZSBidWlsZCBkaXJlY3RvcnkgZm9yIHRoZSBj
b25maWd1cmF0aW9uLiIiIgorICAgICAgICBpZiBjb25maWd1cmF0aW9uOgorICAgICAgICAgICAg
ZmxhZ3MgPSBbIi0tY29uZmlndXJhdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICBzZWxmLl9G
TEFHU19GUk9NX0NPTkZJR1VSQVRJT05TW2NvbmZpZ3VyYXRpb25dXQorICAgICAgICAgICAgY29u
ZmlndXJhdGlvbiA9ICIiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb25maWd1cmF0aW9u
ID0gIiIKKyAgICAgICAgICAgIGZsYWdzID0gWyItLXRvcC1sZXZlbCJdCisKKyAgICAgICAgaWYg
bm90IHNlbGYuX2J1aWxkX2RpcmVjdG9yaWVzLmdldChjb25maWd1cmF0aW9uKToKKyAgICAgICAg
ICAgIGFyZ3MgPSBbInBlcmwiLCBzZWxmLl9zY3JpcHRfcGF0aCgid2Via2l0LWJ1aWxkLWRpcmVj
dG9yeSIpXSArIGZsYWdzCisgICAgICAgICAgICBzZWxmLl9idWlsZF9kaXJlY3Rvcmllc1tjb25m
aWd1cmF0aW9uXSA9ICgKKyAgICAgICAgICAgICAgICBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1h
bmQoYXJncykucnN0cmlwKCkpCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX2RpcmVjdG9y
aWVzW2NvbmZpZ3VyYXRpb25dCisKKyAgICBkZWYgYnVpbGRfZHVtcHJlbmRlcnRyZWUoc2VsZiwg
Y29uZmlndXJhdGlvbik6CisgICAgICAgICIiIkJ1aWxkcyBEUlQgaW4gdGhlIGdpdmVuIGNvbmZp
Z3VyYXRpb24uCisKKyAgICAgICAgZWQpdHVybnMgd2hldGhlciBidWlsZCB3YXMgc3VjY2Vzc2Z1
bCBvciBpcyB1cC10by1kYXRlLgorCisgICAgICAgICIiIgorICAgICAgICBmbGFnID0gc2VsZi5f
RkxBR1NfRlJPTV9DT05GSUdVUkFUSU9OU1tjb25maWd1cmF0aW9uXQorICAgICAgICBleGl0X2Nv
ZGUgPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoWworICAgICAgICAgICAgc2VsZi5fc2Ny
aXB0X3BhdGgoImJ1aWxkLWR1bXByZW5kZXJ0cmVlIiksIGZsYWddLAorICAgICAgICAgICAgcmV0
dXJuX2V4aXRfY29kZT1UcnVlKQorICAgICAgICBpZiBleGl0X2NvZGUgIT0gMDoKKyAgICAgICAg
ICAgIF9sb2cuZXJyb3IoIkZhaWxlZCB0byBidWlsZCBEdW1wUmVuZGVyVHJlZSIpCisgICAgICAg
ICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBkZWZhdWx0
X2NvbmZpZ3VyYXRpb24oc2VsZik6CisgICAgICAgICIiIlJldHVybnMgdGhlIGRlZmF1bHQgY29u
ZmlndXJhdGlvbiBmb3IgdGhlIHVzZXIuCisKKyAgICAgICAgUmV0dXJucyB0aGUgdmFsdWUgc2V0
IGJ5ICdzZXQtd2Via2l0LWNvbmZpZ3VyYXRpb24nLCBvciAiUmVsZWFzZSIKKyAgICAgICAgaWYg
dGhhdCBoYXMgbm90IGJlZW4gc2V0LiBUaGlzIG1pcnJvcnMgdGhlIGxvZ2ljIGluIHdlYmtpdGRp
cnMucG0uCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLl9kZWZhdWx0X2NvbmZp
Z3VyYXRpb246CisgICAgICAgICAgICBzZWxmLl9kZWZhdWx0X2NvbmZpZ3VyYXRpb24gPSBzZWxm
Ll9kZXRlcm1pbmVfY29uZmlndXJhdGlvbigpCisgICAgICAgIGlmIG5vdCBzZWxmLl9kZWZhdWx0
X2NvbmZpZ3VyYXRpb246CisgICAgICAgICAgICBzZWxmLl9kZWZhdWx0X2NvbmZpZ3VyYXRpb24g
PSAnUmVsZWFzZScKKyAgICAgICAgaWYgc2VsZi5fZGVmYXVsdF9jb25maWd1cmF0aW9uIG5vdCBp
biBzZWxmLl9GTEFHU19GUk9NX0NPTkZJR1VSQVRJT05TOgorICAgICAgICAgICAgX2xvZy53YXJu
KCJDb25maWd1cmF0aW9uIFwiJXNcIiBpcyBub3QgYSByZWNvZ25pemVkIHZhbHVlLlxuIiAlCisg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGVmYXVsdF9jb25maWd1cmF0aW9uKQorICAgICAg
ICAgICAgX2xvZy53YXJuKCJTY3JpcHRzIG1heSBmYWlsLiAgIgorICAgICAgICAgICAgICAgICAg
ICAgICJTZWUgJ3NldC13ZWJraXQtY29uZmlndXJhdGlvbiAtLWhlbHAnLiIpCisgICAgICAgIHJl
dHVybiBzZWxmLl9kZWZhdWx0X2NvbmZpZ3VyYXRpb24KKworICAgIGRlZiB3ZWJraXRfYmFzZV9k
aXIoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHRv
cCBvZiB0aGUgV2ViS2l0IHRyZWUuCisKKyAgICAgICAgUmFpc2VzIGFuIEFzc2VydGlvbkVycm9y
IGlmIHRoZSB0b3AgZGlyIGNhbid0IGJlIGRldGVybWluZWQuCisKKyAgICAgICAgIiIiCisgICAg
ICAgICMgRklYTUU6IENvbnNpZGVyIGRldGVybWluaW5nIHRoaXMgaW5kZXBlbmRlbnRseSBvZiBz
Y20gaW4gb3JkZXIKKyAgICAgICAgIyB0byBiZSBhYmxlIHRvIHJ1biBpbiBhIGJhcmUgdHJlZS4K
KyAgICAgICAgaWYgbm90IHNlbGYuX3dlYmtpdF9iYXNlX2RpcjoKKyAgICAgICAgICAgIHNlbGYu
X3dlYmtpdF9iYXNlX2RpciA9IHNjbS5maW5kX2NoZWNrb3V0X3Jvb3QoKQorICAgICAgICAgICAg
YXNzZXJ0KHNlbGYuX3dlYmtpdF9iYXNlX2RpciwgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIHRv
cCAiCisgICAgICAgICAgICAgICAgICAgIm9mIHRoZSBXZWJLaXQgY2hlY2tvdXQiKQorICAgICAg
ICByZXR1cm4gc2VsZi5fd2Via2l0X2Jhc2VfZGlyCisKKyAgICBkZWYgX3NjcmlwdF9wYXRoKHNl
bGYsIHNjcmlwdF9uYW1lKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLndlYmtp
dF9iYXNlX2RpcigpLCAiV2ViS2l0VG9vbHMiLCAiU2NyaXB0cyIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2NyaXB0X25hbWUpCisKKyAgICBkZWYgX2RldGVybWluZV9jb25maWd1cmF0
aW9uKHNlbGYpOgorICAgICAgICAjIFRoaXMgbWlycm9ycyB0aGUgbG9naWMgaW4gd2Via2l0ZGly
cy5wbTpkZXRlcm1pbmVDb25maWd1cmF0aW9uKCkuCisgICAgICAgIGdsb2JhbCBfZGV0ZXJtaW5l
ZF9jb25maWd1cmF0aW9uCisgICAgICAgIGlmIF9kZXRlcm1pbmVkX2NvbmZpZ3VyYXRpb24gPT0g
LTE6CisgICAgICAgICAgICBjb250ZW50cyA9IHNlbGYuX3JlYWRfY29uZmlndXJhdGlvbigpCisg
ICAgICAgICAgICBpZiBjb250ZW50cyA9PSAiRGVwbG95bWVudCI6CisgICAgICAgICAgICAgICAg
Y29udGVudHMgPSAiUmVsZWFzZSIKKyAgICAgICAgICAgIGlmIGNvbnRlbnRzID09ICJEZXZlbG9w
bWVudCI6CisgICAgICAgICAgICAgICAgY29udGVudHMgPSAiRGVidWciCisgICAgICAgICAgICBf
ZGV0ZXJtaW5lZF9jb25maWd1cmF0aW9uID0gY29udGVudHMKKyAgICAgICAgcmV0dXJuIF9kZXRl
cm1pbmVkX2NvbmZpZ3VyYXRpb24KKworICAgIGRlZiBfcmVhZF9jb25maWd1cmF0aW9uKHNlbGYp
OgorICAgICAgICBjb25maWd1cmF0aW9uX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZF9k
aXJlY3RvcnkoTm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiQ29uZmlndXJhdGlvbiIpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGNvbmZpZ3VyYXRp
b25fcGF0aCk6CisgICAgICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKGNvbmZpZ3VyYXRpb25fcGF0
aCwgInIiLCAidXRmLTgiKSBhcyBmaDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmgucmVhZCgp
LnJzdHJpcCgpCisgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVzdC5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnX3VuaXR0
ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM0ZTY0NmNjNTM5MDJiYjc3YTZiMjVmMzdhOGJmNzRhZjk4NzQ4
YTYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVzdC5weQpAQCAtMCwwICsxLDE3NiBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK2ltcG9ydCBjb2RlY3MKK2ltcG9ydCBvcworaW1wb3J0IFN0cmluZ0lPCitpbXBv
cnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBvdXRwdXRj
YXB0dXJlCisKK2ltcG9ydCBjb25maWcKKworCisjIEZJWE1FOiBUaGlzIG1ha2VzIFN0cmluZ0lP
IG9iamVjdHMgd29yayB3aXRoICJ3aXRoIi4gUmVtb3ZlCisjIHdoZW4gd2UgdXBncmFkZSB0byAy
LjYuCitjbGFzcyBOZXdTdHJpbmdJTyhTdHJpbmdJTy5TdHJpbmdJTyk6CisgICAgZGVmIF9fZW50
ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxm
LCB0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgcGFzcworCisKK2NsYXNzIE1vY2tF
eGVjdXRpdmUob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0cHV0PScnLCBleGl0
X2NvZGU9MCk6CisgICAgICAgIHNlbGYuX291dHB1dCA9IG91dHB1dAorICAgICAgICBzZWxmLl9l
eGl0X2NvZGUgPSBleGl0X2NvZGUKKworICAgIGRlZiBydW5fY29tbWFuZChzZWxmLCBhcmdfbGlz
dCwgcmV0dXJuX2V4aXRfY29kZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgZGVjb2RlX291
dHB1dD1GYWxzZSk6CisgICAgICAgIGlmIHJldHVybl9leGl0X2NvZGU6CisgICAgICAgICAgICBy
ZXR1cm4gc2VsZi5fZXhpdF9jb2RlCisgICAgICAgIHJldHVybiBzZWxmLl9vdXRwdXQKKworCitj
bGFzcyBDb25maWdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgYXNzZXJ0Q29uZmln
dXJhdGlvbihzZWxmLCBjb250ZW50cywgZXhwZWN0ZWQpOgorICAgICAgICAjIFRoaXMgdGVzdHMg
dGhhdCBhIGNvbmZpZ3VyYXRpb24gZmlsZSBjb250YWluaW5nCisgICAgICAgICMgX2NvbnRlbnRz
XyBlbmRzZCB1cCBiZWluZyBpbnRlcnByZXRlZCBhcyBfZXhwZWN0ZWRfLgorICAgICAgICAjCisg
ICAgICAgICMgRklYTUU6IHJld3JpdGUgdGhpcyB3aGVuIHdlIGhhdmUgYSBmaWxlc3lzdGVtIGFi
c3RyYWN0aW9uIHdlCisgICAgICAgICMgY2FuIG1vY2sgb3V0IG1vcmUgZWFzaWx5LgorICAgICAg
ICBjb25maWcuY2xlYXJfY2FjaGVkX2NvbmZpZ3VyYXRpb24oKQorICAgICAgICBvcmlnX29wZW4g
PSBjb2RlY3Mub3BlbgorCisgICAgICAgIGRlZiB3cmFwX29wZW4oY29udGVudHMpOgorICAgICAg
ICAgICAgZGVmIG9wZW5fd3JhcHBlcihwYXRoLCBtb2RlLCBlbmNvZGluZyk6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIE5ld1N0cmluZ0lPKGNvbnRlbnRzKQorICAgICAgICAgICAgcmV0dXJuIG9w
ZW5fd3JhcHBlcgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9yaWdfZXhpc3RzID0gb3Mu
cGF0aC5leGlzdHMKKyAgICAgICAgICAgIG9zLnBhdGguZXhpc3RzID0gbGFtYmRhIHA6IFRydWUK
KyAgICAgICAgICAgIGNvZGVjcy5vcGVuID0gd3JhcF9vcGVuKGNvbnRlbnRzKQorCisgICAgICAg
ICAgICBlID0gTW9ja0V4ZWN1dGl2ZShvdXRwdXQ9J2ZvbycpCisgICAgICAgICAgICBjID0gY29u
ZmlnLkNvbmZpZyhlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRlZmF1bHRfY29u
ZmlndXJhdGlvbigpLCBleHBlY3RlZCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9z
LnBhdGguZXhpc3RzID0gb3JpZ19leGlzdHMKKyAgICAgICAgICAgIGNvZGVjcy5vcGVuID0gb3Jp
Z19vcGVuCisKKyAgICBkZWYgdGVzdF9idWlsZF9kaXJlY3RvcnlfdG9wbGV2ZWwoc2VsZik6Cisg
ICAgICAgIGUgPSBNb2NrRXhlY3V0aXZlKG91dHB1dD0idG9wbGV2ZWwiKQorICAgICAgICBjID0g
Y29uZmlnLkNvbmZpZyhlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuYnVpbGRfZGlyZWN0
b3J5KE5vbmUpLCAndG9wbGV2ZWwnKQorCisgICAgICAgICMgVGVzdCBhZ2FpbiB0byBjaGVjayBj
YWNoaW5nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5idWlsZF9kaXJlY3RvcnkoTm9uZSks
ICd0b3BsZXZlbCcpCisKKyAgICBkZWYgdGVzdF9idWlsZF9kaXJlY3RvcnlfX3JlbGVhc2Uoc2Vs
Zik6CisgICAgICAgIGUgPSBNb2NrRXhlY3V0aXZlKG91dHB1dD0icmVsZWFzZSIpCisgICAgICAg
IGMgPSBjb25maWcuQ29uZmlnKGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5idWlsZF9k
aXJlY3RvcnkoJ1JlbGVhc2UnKSwgJ3JlbGVhc2UnKQorCisgICAgZGVmIHRlc3RfYnVpbGRfZGly
ZWN0b3J5X19kZWJ1ZyhzZWxmKToKKyAgICAgICAgZSA9IE1vY2tFeGVjdXRpdmUob3V0cHV0PSJk
ZWJ1ZyIpCisgICAgICAgIGMgPSBjb25maWcuQ29uZmlnKGUpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYy5idWlsZF9kaXJlY3RvcnkoJ0RlYnVnJyksICdkZWJ1ZycpCisKKyAgICBkZWYgdGVz
dF9idWlsZF9kaXJlY3RvcnlfX3Vua25vd24oc2VsZik6CisgICAgICAgIGUgPSBNb2NrRXhlY3V0
aXZlKG91dHB1dD0idW5rbm93biIpCisgICAgICAgIGMgPSBjb25maWcuQ29uZmlnKGUpCisgICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBjLmJ1aWxkX2RpcmVjdG9yeSwgJ1Vua25v
d24nKQorCisgICAgZGVmIHRlc3RfYnVpbGRfZHVtcHJlbmRlcnRyZWVfX3N1Y2Nlc3Moc2VsZik6
CisgICAgICAgIGUgPSBNb2NrRXhlY3V0aXZlKGV4aXRfY29kZT0wKQorICAgICAgICBjID0gY29u
ZmlnLkNvbmZpZyhlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5idWlsZF9kdW1wcmVuZGVy
dHJlZSgiRGVidWciKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuYnVpbGRfZHVtcHJlbmRl
cnRyZWUoIlJlbGVhc2UiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGMu
YnVpbGRfZHVtcHJlbmRlcnRyZWUsICJVbmtub3duIikKKworICAgIGRlZiB0ZXN0X2J1aWxkX2R1
bXByZW5kZXJ0cmVlX19mYWlsdXJlKHNlbGYpOgorICAgICAgICBlID0gTW9ja0V4ZWN1dGl2ZShl
eGl0X2NvZGU9LTEpCisgICAgICAgIGMgPSBjb25maWcuQ29uZmlnKGUpCisKKyAgICAgICAgIyBC
dWlsZCBmYWlsdXJlcyBzaG91bGQgbG9nIGVycm9ycy4gU2luY2Ugbm8gbG9nZ2luZyBoYW5kbGVy
CisgICAgICAgICMgaXMgcmVnaXN0ZXJlZCwgd2UgZ2V0IHRoZSAibm8gaGFuZGxlcnMgZm91bmQi
IG1lc3NhZ2Ugb24KKyAgICAgICAgIyB0aGUgZmlyc3QgaW52b2NhdGlvbiwgYnV0IG5vdCB0aGUg
c2Vjb25kLiBXZSBjYXB0dXJlIG91dHB1dAorICAgICAgICAjIGluIGJvdGggY2FzZXMgaW4gY2Fz
ZSB0aGlzIGJlaGF2aW9yIGNoYW5nZXMsIGJ1dCB3ZSBvbmx5CisgICAgICAgICMgY2hlY2sgZm9y
IG91dHB1dCBvbiB0aGUgZmlyc3QgaW52b2NhdGlvbi4KKyAgICAgICAgb2MgPSBvdXRwdXRjYXB0
dXJlLk91dHB1dENhcHR1cmUoKQorICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCisgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UoYy5idWlsZF9kdW1wcmVuZGVydHJlZSgnRGVidWcnKSkKKyAgICAg
ICAgKG91dCwgZXJyKSA9IG9jLnJlc3RvcmVfb3V0cHV0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzdHIob3V0KSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc3RyKGVyciks
ICcnKQorCisgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShjLmJ1aWxkX2R1bXByZW5kZXJ0cmVlKCdSZWxlYXNlJykpCisgICAgICAgIG9jLnJlc3Rv
cmVfb3V0cHV0KCkKKworICAgIGRlZiB0ZXN0X2RlZmF1bHRfY29uZmlndXJhdGlvbl9fcmVsZWFz
ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRDb25maWd1cmF0aW9uKCdSZWxlYXNlJywgJ1Jl
bGVhc2UnKQorCisgICAgZGVmIHRlc3RfZGVmYXVsdF9jb25maWd1cmF0aW9uX19kZWJ1ZyhzZWxm
KToKKyAgICAgICAgc2VsZi5hc3NlcnRDb25maWd1cmF0aW9uKCdEZWJ1ZycsICdEZWJ1ZycpCisK
KyAgICBkZWYgdGVzdF9kZWZhdWx0X2NvbmZpZ3VyYXRpb25fX2RlcGxveW1lbnQoc2VsZik6Cisg
ICAgICAgIHNlbGYuYXNzZXJ0Q29uZmlndXJhdGlvbignRGVwbG95bWVudCcsICdSZWxlYXNlJykK
KworICAgIGRlZiB0ZXN0X2RlZmF1bHRfY29uZmlndXJhdGlvbl9fZGV2ZWxvcG1lbnQoc2VsZik6
CisgICAgICAgIHNlbGYuYXNzZXJ0Q29uZmlndXJhdGlvbignRGV2ZWxvcG1lbnQnLCAnRGVidWcn
KQorCisgICAgZGVmIHRlc3RfZGVmYXVsdF9jb25maWd1cmF0aW9uX19ub3Rmb3VuZChzZWxmKToK
KyAgICAgICAgIyBUaGlzIHRlc3RzIHdoYXQgaGFwcGVucyBpZiB0aGUgZGVmYXVsdCBjb25maWd1
cmF0aW9uIGZpbGUKKyAgICAgICAgIyBkb2Vzbid0IGV4aXN0LgorICAgICAgICBjb25maWcuY2xl
YXJfY2FjaGVkX2NvbmZpZ3VyYXRpb24oKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcmln
X2V4aXN0cyA9IG9zLnBhdGguZXhpc3RzCisgICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyA9IGxh
bWJkYSBwOiBGYWxzZQorICAgICAgICAgICAgZSA9IE1vY2tFeGVjdXRpdmUob3V0cHV0PSJmb28i
KQorICAgICAgICAgICAgYyA9IGNvbmZpZy5Db25maWcoZSkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYy5kZWZhdWx0X2NvbmZpZ3VyYXRpb24oKSwgIlJlbGVhc2UiKQorICAgICAgICBm
aW5hbGx5OgorICAgICAgICAgICAgb3MucGF0aC5leGlzdHMgPSBvcmlnX2V4aXN0cworCisgICAg
ZGVmIHRlc3RfZGVmYXVsdF9jb25maWd1cmF0aW9uX191bmtub3duKHNlbGYpOgorICAgICAgICAj
IElnbm9yZSB0aGUgd2FybmluZyBhYm91dCBhbiB1bmtub3duIGNvbmZpZ3VyYXRpb24gdmFsdWUu
CisgICAgICAgIG9jID0gb3V0cHV0Y2FwdHVyZS5PdXRwdXRDYXB0dXJlKCkKKyAgICAgICAgb2Mu
Y2FwdHVyZV9vdXRwdXQoKQorICAgICAgICBzZWxmLmFzc2VydENvbmZpZ3VyYXRpb24oJ1Vua25v
d24nLCAnVW5rbm93bicpCisgICAgICAgIG9jLnJlc3RvcmVfb3V0cHV0KCkKKworICAgIGRlZiB0
ZXN0X3dlYmtpdF9iYXNlX2RpcihzZWxmKToKKyAgICAgICAgYyA9IGNvbmZpZy5Db25maWcoTm9u
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMud2Via2l0X2Jhc2VfZGlyKCkpCisKKworaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71815</attachid>
            <date>2010-10-25 16:39:26 -0700</date>
            <delta_ts>2010-11-04 14:03:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48264-20101025163924.patch</filename>
            <type>text/plain</type>
            <size>14984</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA1YWI0Yzc2MzVhZDg1MWUxYmRiZmI3NDVhNTk1ZjIxY2NkYzRmNDM0Li40YWVjNzg4
ZGNkZTFmMjYzM2NjMDUyMDg5MzgyMjE5NWZiMGVhNjEwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMTAtMjUgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IHNwbGl0IG91dCB3ZWJraXQtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBzdHVmZiBpbnRv
IGEgbmV3IG1vZHVsZQorCisgICAgICAgIFRoZSBjdXJyZW50IE5SV1QgY29kZSBoYXMgd2Via2l0
LXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gY29kZSAobGlrZQorICAgICAgICBfc2NyaXB0X3BhdGgs
IGRlZmF1bHQgY29uZmlndXJhdGlvbiwgZXRjLikgbWl4ZWQgaW4gd2l0aAorICAgICAgICBsYXlv
dXQtdGVzdC1zcGVjaWZpYyBzdHVmZiBpbiBwb3J0L2Jhc2UuIFRoZSBjb25maWd1cmF0aW9uIGNv
ZGUKKyAgICAgICAgc2hvdWxkIGJlIHNwbGl0IG91dCBpbnRvIGEgc2VwYXJhdGUgbW9kdWxlIGZv
ciBlYXNpZXIgbW9ja2luZywKKyAgICAgICAgdGVzdGluZywgYW5kIGlzb2xhdGlvbi4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgyNjQKKworICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29uZmlnLnB5OiBBZGRl
ZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191
bml0dGVzdC5weTogQWRkZWQuCisKIDIwMTAtMTAtMjIgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZp
Zy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY29u
ZmlnLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc1OGEzMzYxOTMzNmM0NzZlYzRiOGEyNmMzNGExZWQ3YzI4NjU1
YTcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2NvbmZpZy5weQpAQCAtMCwwICsxLDE2MCBAQAorIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiV3JhcHBlciBvYmplY3RzIGZvciBXZWJLaXQt
c3BlY2lmaWMgdXRpbGl0eSByb3V0aW5lcy4iIiIKKworIyBGSVhNRTogVGhpcyBmaWxlIG5lZWRz
IHRvIGJlIHVuaWZpZWQgd2l0aCBjb21tb24vY2hlY2tvdXQvc2NtLnB5IGFuZAorIyBjb21tb24v
Y29uZmlnL3BvcnRzLnB5IC4KKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVu
dAorCitpbXBvcnQgY29kZWNzCitpbXBvcnQgb3MKKworZnJvbSB3ZWJraXRweS5jb21tb24uY2hl
Y2tvdXQgaW1wb3J0IHNjbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBsb2d1
dGlscworCisKK19sb2cgPSBsb2d1dGlscy5nZXRfbG9nZ2VyKF9fZmlsZV9fKQorCisjCisjIFRo
aXMgaXMgdXNlZCB0byByZWNvcmQgaWYgd2UndmUgYWxyZWFkeSBoaXQgdGhlIGZpbGVzeXN0ZW0g
dG8gbG9vaworIyBmb3IgYSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uIFdlIGNhY2hlIHRoaXMgdG8g
c3BlZWQgdXAgdGhlIHVuaXQgdGVzdHMsCisjIGJ1dCB0aGlzIGNhbiBiZSByZXNldCB3aXRoIGNs
ZWFyX2NhY2hlZF9jb25maWd1cmF0aW9uKCkuCisjCitfZGV0ZXJtaW5lZF9jb25maWd1cmF0aW9u
ID0gTm9uZQorCisKK2RlZiBjbGVhcl9jYWNoZWRfY29uZmlndXJhdGlvbigpOgorICAgIGdsb2Jh
bCBfZGV0ZXJtaW5lZF9jb25maWd1cmF0aW9uCisgICAgX2RldGVybWluZWRfY29uZmlndXJhdGlv
biA9IC0xCisKKworY2xhc3MgQ29uZmlnKG9iamVjdCk6CisgICAgX0ZMQUdTX0ZST01fQ09ORklH
VVJBVElPTlMgPSB7CisgICAgICAgICJEZWJ1ZyI6ICItLWRlYnVnIiwKKyAgICAgICAgIlJlbGVh
c2UiOiAiLS1yZWxlYXNlIiwKKyAgICB9CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZXhlY3V0
aXZlKToKKyAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZlCisgICAgICAgIHNlbGYu
X3dlYmtpdF9iYXNlX2RpciA9IE5vbmUKKyAgICAgICAgc2VsZi5fZGVmYXVsdF9jb25maWd1cmF0
aW9uID0gTm9uZQorICAgICAgICBzZWxmLl9idWlsZF9kaXJlY3RvcmllcyA9IHt9CisKKyAgICBk
ZWYgYnVpbGRfZGlyZWN0b3J5KHNlbGYsIGNvbmZpZ3VyYXRpb24pOgorICAgICAgICAiIiJSZXR1
cm5zIHRoZSBwYXRoIHRvIHRoZSBidWlsZCBkaXJlY3RvcnkgZm9yIHRoZSBjb25maWd1cmF0aW9u
LiIiIgorICAgICAgICBpZiBjb25maWd1cmF0aW9uOgorICAgICAgICAgICAgZmxhZ3MgPSBbIi0t
Y29uZmlndXJhdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICBzZWxmLl9GTEFHU19GUk9NX0NP
TkZJR1VSQVRJT05TW2NvbmZpZ3VyYXRpb25dXQorICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9
ICIiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gIiIKKyAgICAg
ICAgICAgIGZsYWdzID0gWyItLXRvcC1sZXZlbCJdCisKKyAgICAgICAgaWYgbm90IHNlbGYuX2J1
aWxkX2RpcmVjdG9yaWVzLmdldChjb25maWd1cmF0aW9uKToKKyAgICAgICAgICAgIGFyZ3MgPSBb
InBlcmwiLCBzZWxmLl9zY3JpcHRfcGF0aCgid2Via2l0LWJ1aWxkLWRpcmVjdG9yeSIpXSArIGZs
YWdzCisgICAgICAgICAgICBzZWxmLl9idWlsZF9kaXJlY3Rvcmllc1tjb25maWd1cmF0aW9uXSA9
ICgKKyAgICAgICAgICAgICAgICBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoYXJncykucnN0
cmlwKCkpCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX2RpcmVjdG9yaWVzW2NvbmZpZ3Vy
YXRpb25dCisKKyAgICBkZWYgYnVpbGRfZHVtcHJlbmRlcnRyZWUoc2VsZiwgY29uZmlndXJhdGlv
bik6CisgICAgICAgICIiIkJ1aWxkcyBEUlQgaW4gdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24uCisK
KyAgICAgICAgZWQpdHVybnMgd2hldGhlciBidWlsZCB3YXMgc3VjY2Vzc2Z1bCBvciBpcyB1cC10
by1kYXRlLgorCisgICAgICAgICIiIgorICAgICAgICBmbGFnID0gc2VsZi5fRkxBR1NfRlJPTV9D
T05GSUdVUkFUSU9OU1tjb25maWd1cmF0aW9uXQorICAgICAgICBleGl0X2NvZGUgPSBzZWxmLl9l
eGVjdXRpdmUucnVuX2NvbW1hbmQoWworICAgICAgICAgICAgc2VsZi5fc2NyaXB0X3BhdGgoImJ1
aWxkLWR1bXByZW5kZXJ0cmVlIiksIGZsYWddLAorICAgICAgICAgICAgcmV0dXJuX2V4aXRfY29k
ZT1UcnVlKQorICAgICAgICBpZiBleGl0X2NvZGUgIT0gMDoKKyAgICAgICAgICAgIF9sb2cuZXJy
b3IoIkZhaWxlZCB0byBidWlsZCBEdW1wUmVuZGVyVHJlZSIpCisgICAgICAgICAgICByZXR1cm4g
RmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBkZWZhdWx0X2NvbmZpZ3VyYXRp
b24oc2VsZik6CisgICAgICAgICIiIlJldHVybnMgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBm
b3IgdGhlIHVzZXIuCisKKyAgICAgICAgUmV0dXJucyB0aGUgdmFsdWUgc2V0IGJ5ICdzZXQtd2Vi
a2l0LWNvbmZpZ3VyYXRpb24nLCBvciAiUmVsZWFzZSIKKyAgICAgICAgaWYgdGhhdCBoYXMgbm90
IGJlZW4gc2V0LiBUaGlzIG1pcnJvcnMgdGhlIGxvZ2ljIGluIHdlYmtpdGRpcnMucG0uCisKKyAg
ICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLl9kZWZhdWx0X2NvbmZpZ3VyYXRpb246Cisg
ICAgICAgICAgICBzZWxmLl9kZWZhdWx0X2NvbmZpZ3VyYXRpb24gPSBzZWxmLl9kZXRlcm1pbmVf
Y29uZmlndXJhdGlvbigpCisgICAgICAgIGlmIG5vdCBzZWxmLl9kZWZhdWx0X2NvbmZpZ3VyYXRp
b246CisgICAgICAgICAgICBzZWxmLl9kZWZhdWx0X2NvbmZpZ3VyYXRpb24gPSAnUmVsZWFzZScK
KyAgICAgICAgaWYgc2VsZi5fZGVmYXVsdF9jb25maWd1cmF0aW9uIG5vdCBpbiBzZWxmLl9GTEFH
U19GUk9NX0NPTkZJR1VSQVRJT05TOgorICAgICAgICAgICAgX2xvZy53YXJuKCJDb25maWd1cmF0
aW9uIFwiJXNcIiBpcyBub3QgYSByZWNvZ25pemVkIHZhbHVlLlxuIiAlCisgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fZGVmYXVsdF9jb25maWd1cmF0aW9uKQorICAgICAgICAgICAgX2xvZy53
YXJuKCJTY3JpcHRzIG1heSBmYWlsLiAgIgorICAgICAgICAgICAgICAgICAgICAgICJTZWUgJ3Nl
dC13ZWJraXQtY29uZmlndXJhdGlvbiAtLWhlbHAnLiIpCisgICAgICAgIHJldHVybiBzZWxmLl9k
ZWZhdWx0X2NvbmZpZ3VyYXRpb24KKworICAgIGRlZiBwYXRoX2Zyb21fd2Via2l0X2Jhc2Uoc2Vs
ZiwgKmNvbXBzKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLndlYmtpdF9iYXNl
X2RpcigpLCAqY29tcHMpCisKKyAgICBkZWYgd2Via2l0X2Jhc2VfZGlyKHNlbGYpOgorICAgICAg
ICAiIiJSZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSB0b3Agb2YgdGhlIFdlYktpdCB0
cmVlLgorCisgICAgICAgIFJhaXNlcyBhbiBBc3NlcnRpb25FcnJvciBpZiB0aGUgdG9wIGRpciBj
YW4ndCBiZSBkZXRlcm1pbmVkLgorCisgICAgICAgICIiIgorICAgICAgICAjIEZJWE1FOiBDb25z
aWRlciBkZXRlcm1pbmluZyB0aGlzIGluZGVwZW5kZW50bHkgb2Ygc2NtIGluIG9yZGVyCisgICAg
ICAgICMgdG8gYmUgYWJsZSB0byBydW4gaW4gYSBiYXJlIHRyZWUuCisgICAgICAgIGlmIG5vdCBz
ZWxmLl93ZWJraXRfYmFzZV9kaXI6CisgICAgICAgICAgICBzZWxmLl93ZWJraXRfYmFzZV9kaXIg
PSBzY20uZmluZF9jaGVja291dF9yb290KCkKKyAgICAgICAgICAgIGFzc2VydCBzZWxmLl93ZWJr
aXRfYmFzZV9kaXIsICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSB0b3Agb2YgdGhlIFdlYktpdCBj
aGVja291dCIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3dlYmtpdF9iYXNlX2RpcgorCisgICAgZGVm
IF9zY3JpcHRfcGF0aChzZWxmLCBzY3JpcHRfbmFtZSk6CisgICAgICAgIHJldHVybiBvcy5wYXRo
LmpvaW4oc2VsZi53ZWJraXRfYmFzZV9kaXIoKSwgIldlYktpdFRvb2xzIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiU2NyaXB0cyIsIHNjcmlwdF9uYW1lKQorCisgICAgZGVmIF9kZXRl
cm1pbmVfY29uZmlndXJhdGlvbihzZWxmKToKKyAgICAgICAgIyBUaGlzIG1pcnJvcnMgdGhlIGxv
Z2ljIGluIHdlYmtpdGRpcnMucG06ZGV0ZXJtaW5lQ29uZmlndXJhdGlvbigpLgorICAgICAgICBn
bG9iYWwgX2RldGVybWluZWRfY29uZmlndXJhdGlvbgorICAgICAgICBpZiBfZGV0ZXJtaW5lZF9j
b25maWd1cmF0aW9uID09IC0xOgorICAgICAgICAgICAgY29udGVudHMgPSBzZWxmLl9yZWFkX2Nv
bmZpZ3VyYXRpb24oKQorICAgICAgICAgICAgaWYgY29udGVudHMgPT0gIkRlcGxveW1lbnQiOgor
ICAgICAgICAgICAgICAgIGNvbnRlbnRzID0gIlJlbGVhc2UiCisgICAgICAgICAgICBpZiBjb250
ZW50cyA9PSAiRGV2ZWxvcG1lbnQiOgorICAgICAgICAgICAgICAgIGNvbnRlbnRzID0gIkRlYnVn
IgorICAgICAgICAgICAgX2RldGVybWluZWRfY29uZmlndXJhdGlvbiA9IGNvbnRlbnRzCisgICAg
ICAgIHJldHVybiBfZGV0ZXJtaW5lZF9jb25maWd1cmF0aW9uCisKKyAgICBkZWYgX3JlYWRfY29u
ZmlndXJhdGlvbihzZWxmKToKKyAgICAgICAgY29uZmlndXJhdGlvbl9wYXRoID0gb3MucGF0aC5q
b2luKHNlbGYuYnVpbGRfZGlyZWN0b3J5KE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkNvbmZpZ3VyYXRpb24iKQorICAgICAgICBpZiBub3Qgb3MucGF0
aC5leGlzdHMoY29uZmlndXJhdGlvbl9wYXRoKToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisK
KyAgICAgICAgd2l0aCBjb2RlY3Mub3Blbihjb25maWd1cmF0aW9uX3BhdGgsICJyIiwgInV0Zi04
IikgYXMgZmg6CisgICAgICAgICAgICByZXR1cm4gZmgucmVhZCgpLnJzdHJpcCgpCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZp
Z191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY29uZmlnX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4NjNjZmUzYThjMDBkZmNmM2Fi
NGI0NDcyZDFiYjM1MzIxOTNkYmIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2NvbmZpZ191bml0dGVzdC5weQpAQCAtMCww
ICsxLDE4MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0
cmlidXRpb24uCisjICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBjb2RlY3MKK2ltcG9ydCBvcworaW1w
b3J0IFN0cmluZ0lPCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtIGltcG9ydCBvdXRwdXRjYXB0dXJlCisKK2ltcG9ydCBjb25maWcKKworCisjIEZJWE1FOiBU
aGlzIG1ha2VzIFN0cmluZ0lPIG9iamVjdHMgd29yayB3aXRoICJ3aXRoIi4gUmVtb3ZlCisjIHdo
ZW4gd2UgdXBncmFkZSB0byAyLjYuCitjbGFzcyBOZXdTdHJpbmdJTyhTdHJpbmdJTy5TdHJpbmdJ
Tyk6CisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAg
IGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgcGFz
cworCisKK2NsYXNzIE1vY2tFeGVjdXRpdmUob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2Vs
Ziwgb3V0cHV0PScnLCBleGl0X2NvZGU9MCk6CisgICAgICAgIHNlbGYuX291dHB1dCA9IG91dHB1
dAorICAgICAgICBzZWxmLl9leGl0X2NvZGUgPSBleGl0X2NvZGUKKworICAgIGRlZiBydW5fY29t
bWFuZChzZWxmLCBhcmdfbGlzdCwgcmV0dXJuX2V4aXRfY29kZT1GYWxzZSwKKyAgICAgICAgICAg
ICAgICAgICAgZGVjb2RlX291dHB1dD1GYWxzZSk6CisgICAgICAgIGlmIHJldHVybl9leGl0X2Nv
ZGU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXhpdF9jb2RlCisgICAgICAgIHJldHVybiBz
ZWxmLl9vdXRwdXQKKworCitjbGFzcyBDb25maWdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAg
ICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGNvbmZpZy5jbGVhcl9jYWNoZWRfY29uZmln
dXJhdGlvbigpCisKKyAgICBkZWYgYXNzZXJ0Q29uZmlndXJhdGlvbihzZWxmLCBjb250ZW50cywg
ZXhwZWN0ZWQpOgorICAgICAgICAjIFRoaXMgdGVzdHMgdGhhdCBhIGNvbmZpZ3VyYXRpb24gZmls
ZSBjb250YWluaW5nCisgICAgICAgICMgX2NvbnRlbnRzXyBlbmRzZCB1cCBiZWluZyBpbnRlcnBy
ZXRlZCBhcyBfZXhwZWN0ZWRfLgorICAgICAgICAjCisgICAgICAgICMgRklYTUU6IHJld3JpdGUg
dGhpcyB3aGVuIHdlIGhhdmUgYSBmaWxlc3lzdGVtIGFic3RyYWN0aW9uIHdlCisgICAgICAgICMg
Y2FuIG1vY2sgb3V0IG1vcmUgZWFzaWx5LgorICAgICAgICBjb25maWcuY2xlYXJfY2FjaGVkX2Nv
bmZpZ3VyYXRpb24oKQorICAgICAgICBvcmlnX29wZW4gPSBjb2RlY3Mub3BlbgorCisgICAgICAg
IGRlZiB3cmFwX29wZW4oY29udGVudHMpOgorICAgICAgICAgICAgZGVmIG9wZW5fd3JhcHBlcihw
YXRoLCBtb2RlLCBlbmNvZGluZyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5ld1N0cmluZ0lP
KGNvbnRlbnRzKQorICAgICAgICAgICAgcmV0dXJuIG9wZW5fd3JhcHBlcgorCisgICAgICAgIHRy
eToKKyAgICAgICAgICAgIG9yaWdfZXhpc3RzID0gb3MucGF0aC5leGlzdHMKKyAgICAgICAgICAg
IG9zLnBhdGguZXhpc3RzID0gbGFtYmRhIHA6IFRydWUKKyAgICAgICAgICAgIGNvZGVjcy5vcGVu
ID0gd3JhcF9vcGVuKGNvbnRlbnRzKQorCisgICAgICAgICAgICBlID0gTW9ja0V4ZWN1dGl2ZShv
dXRwdXQ9J2ZvbycpCisgICAgICAgICAgICBjID0gY29uZmlnLkNvbmZpZyhlKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjLmRlZmF1bHRfY29uZmlndXJhdGlvbigpLCBleHBlY3RlZCkK
KyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLnBhdGguZXhpc3RzID0gb3JpZ19leGlz
dHMKKyAgICAgICAgICAgIGNvZGVjcy5vcGVuID0gb3JpZ19vcGVuCisKKyAgICBkZWYgdGVzdF9i
dWlsZF9kaXJlY3RvcnlfdG9wbGV2ZWwoc2VsZik6CisgICAgICAgIGUgPSBNb2NrRXhlY3V0aXZl
KG91dHB1dD0idG9wbGV2ZWwiKQorICAgICAgICBjID0gY29uZmlnLkNvbmZpZyhlKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGMuYnVpbGRfZGlyZWN0b3J5KE5vbmUpLCAndG9wbGV2ZWwnKQor
CisgICAgICAgICMgVGVzdCBhZ2FpbiB0byBjaGVjayBjYWNoaW5nCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYy5idWlsZF9kaXJlY3RvcnkoTm9uZSksICd0b3BsZXZlbCcpCisKKyAgICBkZWYg
dGVzdF9idWlsZF9kaXJlY3RvcnlfX3JlbGVhc2Uoc2VsZik6CisgICAgICAgIGUgPSBNb2NrRXhl
Y3V0aXZlKG91dHB1dD0icmVsZWFzZSIpCisgICAgICAgIGMgPSBjb25maWcuQ29uZmlnKGUpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5idWlsZF9kaXJlY3RvcnkoJ1JlbGVhc2UnKSwgJ3Jl
bGVhc2UnKQorCisgICAgZGVmIHRlc3RfYnVpbGRfZGlyZWN0b3J5X19kZWJ1ZyhzZWxmKToKKyAg
ICAgICAgZSA9IE1vY2tFeGVjdXRpdmUob3V0cHV0PSJkZWJ1ZyIpCisgICAgICAgIGMgPSBjb25m
aWcuQ29uZmlnKGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5idWlsZF9kaXJlY3Rvcnko
J0RlYnVnJyksICdkZWJ1ZycpCisKKyAgICBkZWYgdGVzdF9idWlsZF9kaXJlY3RvcnlfX3Vua25v
d24oc2VsZik6CisgICAgICAgIGUgPSBNb2NrRXhlY3V0aXZlKG91dHB1dD0idW5rbm93biIpCisg
ICAgICAgIGMgPSBjb25maWcuQ29uZmlnKGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtl
eUVycm9yLCBjLmJ1aWxkX2RpcmVjdG9yeSwgJ1Vua25vd24nKQorCisgICAgZGVmIHRlc3RfYnVp
bGRfZHVtcHJlbmRlcnRyZWVfX3N1Y2Nlc3Moc2VsZik6CisgICAgICAgIGUgPSBNb2NrRXhlY3V0
aXZlKGV4aXRfY29kZT0wKQorICAgICAgICBjID0gY29uZmlnLkNvbmZpZyhlKQorICAgICAgICBz
ZWxmLmFzc2VydFRydWUoYy5idWlsZF9kdW1wcmVuZGVydHJlZSgiRGVidWciKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGMuYnVpbGRfZHVtcHJlbmRlcnRyZWUoIlJlbGVhc2UiKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGMuYnVpbGRfZHVtcHJlbmRlcnRyZWUsICJV
bmtub3duIikKKworICAgIGRlZiB0ZXN0X2J1aWxkX2R1bXByZW5kZXJ0cmVlX19mYWlsdXJlKHNl
bGYpOgorICAgICAgICBlID0gTW9ja0V4ZWN1dGl2ZShleGl0X2NvZGU9LTEpCisgICAgICAgIGMg
PSBjb25maWcuQ29uZmlnKGUpCisKKyAgICAgICAgIyBCdWlsZCBmYWlsdXJlcyBzaG91bGQgbG9n
IGVycm9ycy4gU2luY2Ugbm8gbG9nZ2luZyBoYW5kbGVyCisgICAgICAgICMgaXMgcmVnaXN0ZXJl
ZCwgd2UgZ2V0IHRoZSAibm8gaGFuZGxlcnMgZm91bmQiIG1lc3NhZ2Ugb24KKyAgICAgICAgIyB0
aGUgZmlyc3QgaW52b2NhdGlvbiwgYnV0IG5vdCB0aGUgc2Vjb25kLiBXZSBjYXB0dXJlIG91dHB1
dAorICAgICAgICAjIGluIGJvdGggY2FzZXMgaW4gY2FzZSB0aGlzIGJlaGF2aW9yIGNoYW5nZXMs
IGJ1dCB3ZSBvbmx5CisgICAgICAgICMgY2hlY2sgZm9yIG91dHB1dCBvbiB0aGUgZmlyc3QgaW52
b2NhdGlvbi4KKyAgICAgICAgb2MgPSBvdXRwdXRjYXB0dXJlLk91dHB1dENhcHR1cmUoKQorICAg
ICAgICBvYy5jYXB0dXJlX291dHB1dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5idWls
ZF9kdW1wcmVuZGVydHJlZSgnRGVidWcnKSkKKyAgICAgICAgKG91dCwgZXJyKSA9IG9jLnJlc3Rv
cmVfb3V0cHV0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIob3V0KSwgJycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc3RyKGVyciksICcnKQorCisgICAgICAgIG9jLmNhcHR1
cmVfb3V0cHV0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmJ1aWxkX2R1bXByZW5kZXJ0
cmVlKCdSZWxlYXNlJykpCisgICAgICAgIG9jLnJlc3RvcmVfb3V0cHV0KCkKKworICAgIGRlZiB0
ZXN0X2RlZmF1bHRfY29uZmlndXJhdGlvbl9fcmVsZWFzZShzZWxmKToKKyAgICAgICAgc2VsZi5h
c3NlcnRDb25maWd1cmF0aW9uKCdSZWxlYXNlJywgJ1JlbGVhc2UnKQorCisgICAgZGVmIHRlc3Rf
ZGVmYXVsdF9jb25maWd1cmF0aW9uX19kZWJ1ZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRD
b25maWd1cmF0aW9uKCdEZWJ1ZycsICdEZWJ1ZycpCisKKyAgICBkZWYgdGVzdF9kZWZhdWx0X2Nv
bmZpZ3VyYXRpb25fX2RlcGxveW1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0Q29uZmln
dXJhdGlvbignRGVwbG95bWVudCcsICdSZWxlYXNlJykKKworICAgIGRlZiB0ZXN0X2RlZmF1bHRf
Y29uZmlndXJhdGlvbl9fZGV2ZWxvcG1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0Q29u
ZmlndXJhdGlvbignRGV2ZWxvcG1lbnQnLCAnRGVidWcnKQorCisgICAgZGVmIHRlc3RfZGVmYXVs
dF9jb25maWd1cmF0aW9uX19ub3Rmb3VuZChzZWxmKToKKyAgICAgICAgIyBUaGlzIHRlc3RzIHdo
YXQgaGFwcGVucyBpZiB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZpbGUKKyAgICAgICAgIyBk
b2Vzbid0IGV4aXN0LgorICAgICAgICBjb25maWcuY2xlYXJfY2FjaGVkX2NvbmZpZ3VyYXRpb24o
KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcmlnX2V4aXN0cyA9IG9zLnBhdGguZXhpc3Rz
CisgICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyA9IGxhbWJkYSBwOiBGYWxzZQorICAgICAgICAg
ICAgZSA9IE1vY2tFeGVjdXRpdmUob3V0cHV0PSJmb28iKQorICAgICAgICAgICAgYyA9IGNvbmZp
Zy5Db25maWcoZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kZWZhdWx0X2NvbmZp
Z3VyYXRpb24oKSwgIlJlbGVhc2UiKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3Mu
cGF0aC5leGlzdHMgPSBvcmlnX2V4aXN0cworCisgICAgZGVmIHRlc3RfZGVmYXVsdF9jb25maWd1
cmF0aW9uX191bmtub3duKHNlbGYpOgorICAgICAgICAjIElnbm9yZSB0aGUgd2FybmluZyBhYm91
dCBhbiB1bmtub3duIGNvbmZpZ3VyYXRpb24gdmFsdWUuCisgICAgICAgIG9jID0gb3V0cHV0Y2Fw
dHVyZS5PdXRwdXRDYXB0dXJlKCkKKyAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQoKQorICAgICAg
ICBzZWxmLmFzc2VydENvbmZpZ3VyYXRpb24oJ1Vua25vd24nLCAnVW5rbm93bicpCisgICAgICAg
IG9jLnJlc3RvcmVfb3V0cHV0KCkKKworICAgIGRlZiB0ZXN0X3BhdGhfZnJvbV93ZWJraXRfYmFz
ZShzZWxmLCAqY29tcHMpOgorICAgICAgICBjID0gY29uZmlnLkNvbmZpZyhOb25lKQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUoYy5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ2ZvbycpKQorCisgICAg
ZGVmIHRlc3Rfd2Via2l0X2Jhc2VfZGlyKHNlbGYpOgorICAgICAgICBjID0gY29uZmlnLkNvbmZp
ZyhOb25lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYy53ZWJraXRfYmFzZV9kaXIoKSkKKwor
CitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQo=
</data>
<flag name="review"
          id="61942"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>