<?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>36911</bug_id>
          
          <creation_ts>2010-03-31 17:50:55 -0700</creation_ts>
          <short_desc>Add webkit-patch command to crawl buildbot history and find when tests started to fail</short_desc>
          <delta_ts>2010-04-06 23:41:18 -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>37063</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>abecsi</cc>
    
    <cc>aroben</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>206853</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-31 17:50:55 -0700</bug_when>
    <thetext>Add webkit-patch command to crawl buildbot history and find when tests started to fail</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206854</commentid>
    <comment_count>1</comment_count>
      <attachid>52228</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-31 17:56:34 -0700</bug_when>
    <thetext>Created attachment 52228
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206861</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-31 18:06:46 -0700</bug_when>
    <thetext>+ raise &quot;Unhandled title: %s&quot; % str(table_title)

We should only be raising Exception objects.  Better to raise an Exception().

+ def _print_blame_information_for_commit(tool, commit_info):

This should be in a base class?  Maybe on CommitInfo?  Having a random global function seems strange.

+ class FailureReason(AbstractDeclarativeCommand):

This class is kind of lame.  It makes it really hard to re-use this logic or to test it.  Maybe we need a FailureWalker class?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209416</commentid>
    <comment_count>3</comment_count>
      <attachid>52696</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-06 20:26:26 -0700</bug_when>
    <thetext>Created attachment 52696
First Try</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209418</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-06 20:27:04 -0700</bug_when>
    <thetext>Updated it so it applies to TOT.  Haven&apos;t bothered to abstract out the build-walker stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209463</commentid>
    <comment_count>5</comment_count>
      <attachid>52704</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-06 23:29:00 -0700</bug_when>
    <thetext>Created attachment 52704
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209465</commentid>
    <comment_count>6</comment_count>
      <attachid>52704</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-06 23:37:46 -0700</bug_when>
    <thetext>Comment on attachment 52704
Patch

Ok.  Let&apos;s take this as a starting point.  As you noted in the other bug, there&apos;s a lot of overlap with the algorithm the sheriff uses to track recent regressions.  This code looks like it understands more cases (e.g., &gt;= 20 failures).  We should find a way to unify and abstract out the different pieces,but I don&apos;t want to hold this patch hostage any longer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209466</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-06 23:41:18 -0700</bug_when>
    <thetext>Committed r57195: &lt;http://trac.webkit.org/changeset/57195&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52228</attachid>
            <date>2010-03-31 17:56:34 -0700</date>
            <delta_ts>2010-04-06 20:26:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36911-20100331175632.patch</filename>
            <type>text/plain</type>
            <size>13957</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA2NDUxY2U4Li5jNmMyNzgzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDMt
MzEgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB3ZWJraXQtcGF0Y2ggY29tbWFuZCB0byBj
cmF3bCBidWlsZGJvdCBoaXN0b3J5IGFuZCBmaW5kIHdoZW4gdGVzdHMgc3RhcnRlZCB0byBmYWls
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjkxMQor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90LnB5OgorICAg
ICAgICAgLSBBZGQgcmV2aXNpb25fYnVpbGRfcGFpcnNfd2l0aF9yZXN1bHRzIGZvciBjbGVhbmVy
IGNvZGUgYW5kIHBvc3NpYmxlIG9wdGltaXphdGlvbiBvZiB0aGlzIGNvbW1hbmQuCisgICAgICAg
ICAtIFJldHVybiBOb25lIGlmIGEgYnVpbGQgbnVtYmVyIGNhbid0IGJlIGZvdW5kIGZvciBhIHJl
dmlzaW9uIGluIGJ1aWxkX2Zvcl9yZXZpc2lvbgorICAgICAgICAgLSBTZXBhcmF0ZSBvdXQgc3Vz
cGVjdF9yZXZpc2lvbnNfZm9yX3RyYW5zaXRpb24gZm9yIHJlLXVzZSBieSBGYWlsdXJlUmVhc29u
CisgICAgICAgICAtIEFkZCBMYXlvdXRUZXN0UmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkgYW5kIG1h
a2Ugb3VyIHBhcnNpbmcgY29kZSBleHBsaWN0IGFib3V0IHdoYXQgdGFibGVzIGl0IGFjY2VwdHMu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXJpZXMucHk6Cisg
ICAgICAgICAtIE1vdmUgX3ByaW50X2JsYW1lX2luZm9ybWF0aW9uX2Zvcl9jb21taXQgb3V0IG9m
IFdoYXRCcm9rZSBmb3IgcmUtdXNlIGJ5IEZhaWx1cmVSZWFzb24KKyAgICAgICAgIC0gQWRkIEZh
aWx1cmVSZWFzb24gY29tbWFuZCB3aGljaCBjYW4gY3Jhd2wgYSBnaXZlbiBidWlsZGVyIGFuZCBl
eHBsYWluIHdoeSBpdCBpcworICAgICAgICAgICBjdXJyZW50bHkgcmVkIG9uIGEgcGVyLXRlc3Qg
YmFzaXMuCisKIDIwMTAtMDMtMzAgIFZpY3RvciBXYW5nICA8dmljdG9yd0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3QucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3QucHkKaW5kZXggYmRkMTQ4Zi4u
ZTMxZjUzZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
bmV0L2J1aWxkYm90LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWlsZGJvdC5weQpAQCAtMTIwLDEyICsxMjAsMjAgQEAgY2xhc3MgQnVpbGRlcihvYmpl
Y3QpOgogICAgICAgICAjIFRoaXMgYXNzdW1lcyB0aGVyZSB3YXMgb25seSBvbmUgYnVpbGQgcGVy
IHJldmlzaW9uLCB3aGljaCBpcyBmYWxzZSBidXQgd2UgZG9uJ3QgY2FyZSBmb3Igbm93LgogICAg
ICAgICByZXR1cm4gZGljdChbc2VsZi5fcmV2aXNpb25fYW5kX2J1aWxkX2Zvcl9maWxlbmFtZShm
aWxlX2luZm9bImZpbGVuYW1lIl0pIGZvciBmaWxlX2luZm8gaW4gcmVzdWx0X2ZpbGVzXSkKIAot
ICAgICMgVGhpcyBhc3N1bWVzIHRoZXJlIGNhbiBiZSBvbmx5IG9uZSBidWlsZCBwZXIgcmV2aXNp
b24sIHdoaWNoIGlzIGZhbHNlLCBidXQgd2UgZG9uJ3QgY2FyZSBmb3Igbm93LgotICAgIGRlZiBi
dWlsZF9mb3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24sIGFsbG93X2ZhaWxlZF9sb29rdXBzPUZh
bHNlKToKKyAgICBkZWYgX3JldmlzaW9uX3RvX2J1aWxkX21hcChzZWxmKToKICAgICAgICAgaWYg
bm90IHNlbGYuX3JldmlzaW9uX3RvX2J1aWxkX251bWJlcjoKICAgICAgICAgICAgIHNlbGYuX3Jl
dmlzaW9uX3RvX2J1aWxkX251bWJlciA9IHNlbGYuX2ZldGNoX3JldmlzaW9uX3RvX2J1aWxkX21h
cCgpCisgICAgICAgIHJldHVybiBzZWxmLl9yZXZpc2lvbl90b19idWlsZF9udW1iZXIKKworICAg
IGRlZiByZXZpc2lvbl9idWlsZF9wYWlyc193aXRoX3Jlc3VsdHMoc2VsZik6CisgICAgICAgIHJl
dHVybiBzZWxmLl9yZXZpc2lvbl90b19idWlsZF9tYXAoKS5pdGVtcygpCisKKyAgICAjIFRoaXMg
YXNzdW1lcyB0aGVyZSBjYW4gYmUgb25seSBvbmUgYnVpbGQgcGVyIHJldmlzaW9uLCB3aGljaCBp
cyBmYWxzZSwgYnV0IHdlIGRvbid0IGNhcmUgZm9yIG5vdy4KKyAgICBkZWYgYnVpbGRfZm9yX3Jl
dmlzaW9uKHNlbGYsIHJldmlzaW9uLCBhbGxvd19mYWlsZWRfbG9va3Vwcz1GYWxzZSk6CiAgICAg
ICAgICMgTk9URTogVGhpcyBsb29rdXAgd2lsbCBmYWlsIGlmIHRoYXQgZXhhY3QgcmV2aXNpb24g
d2FzIG5ldmVyIGJ1aWx0LgotICAgICAgICBidWlsZF9udW1iZXIgPSBzZWxmLl9yZXZpc2lvbl90
b19idWlsZF9udW1iZXIuZ2V0KGludChyZXZpc2lvbikpCisgICAgICAgIGJ1aWxkX251bWJlciA9
IHNlbGYuX3JldmlzaW9uX3RvX2J1aWxkX21hcCgpLmdldChpbnQocmV2aXNpb24pKQorICAgICAg
ICBpZiBub3QgYnVpbGRfbnVtYmVyOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAg
YnVpbGQgPSBzZWxmLmJ1aWxkKGJ1aWxkX251bWJlcikKICAgICAgICAgaWYgbm90IGJ1aWxkIGFu
ZCBhbGxvd19mYWlsZWRfbG9va3VwczoKICAgICAgICAgICAgICMgQnVpbGRzIGZvciBvbGQgcmV2
aXNpb25zIHdpdGggZmFpbCB0byBsb29rdXAgdmlhIGJ1aWxkYm90J3MgeG1scnBjIGFwaS4KQEAg
LTE1NSw2ICsxNjMsMTIgQEAgY2xhc3MgQnVpbGRlcihvYmplY3QpOgogICAgICAgICAgICAgbG9v
a19iYWNrX2NvdW50ICs9IDEKICAgICAgICAgcmV0dXJuIChncmVlbl9idWlsZCwgcmVkX2J1aWxk
KQogCisgICAgIyBGSVhNRTogVGhpcyBsaWtlbHkgZG9lcyBub3QgYmVsb25nIG9uIEJ1aWxkZXIK
KyAgICBkZWYgc3VzcGVjdF9yZXZpc2lvbnNfZm9yX3RyYW5zaXRpb24oc2VsZiwgbGFzdF9ncmVl
bl9idWlsZCwgZmlyc3RfcmVkX2J1aWxkKToKKyAgICAgICAgc3VzcGVjdF9yZXZpc2lvbnMgPSBy
YW5nZShmaXJzdF9yZWRfYnVpbGQucmV2aXNpb24oKSwgbGFzdF9ncmVlbl9idWlsZC5yZXZpc2lv
bigpLCAtMSkKKyAgICAgICAgc3VzcGVjdF9yZXZpc2lvbnMucmV2ZXJzZSgpCisgICAgICAgIHJl
dHVybiBzdXNwZWN0X3JldmlzaW9ucworCiAgICAgZGVmIHN1c3BlY3RfcmV2aXNpb25zX2Zvcl9n
cmVlbl90b19yZWRfdHJhbnNpdGlvbihzZWxmLCByZWRfYnVpbGRfbnVtYmVyLCBsb29rX2JhY2tf
bGltaXQ9MzAsIGF2b2lkX2ZsYWtleV90ZXN0cz1UcnVlKToKICAgICAgICAgKGxhc3RfZ3JlZW5f
YnVpbGQsIGZpcnN0X3JlZF9idWlsZCkgPSBzZWxmLmZpbmRfZ3JlZW5fdG9fcmVkX3RyYW5zaXRp
b24ocmVkX2J1aWxkX251bWJlciwgbG9va19iYWNrX2xpbWl0KQogICAgICAgICBpZiBub3QgbGFz
dF9ncmVlbl9idWlsZDoKQEAgLTE2MiwxOCArMTc2LDI3IEBAIGNsYXNzIEJ1aWxkZXIob2JqZWN0
KToKICAgICAgICAgIyBpZiBhdm9pZF9mbGFrZXlfdGVzdHMsIHJlcXVpcmUgYXQgbGVhc3QgMiBy
ZWQgYnVpbGRzIGJlZm9yZSB3ZSBzdXNwZWN0IGEgZ3JlZW4gdG8gcmVkIHRyYW5zaXRpb24uCiAg
ICAgICAgIGlmIGF2b2lkX2ZsYWtleV90ZXN0cyBhbmQgZmlyc3RfcmVkX2J1aWxkID09IHNlbGYu
YnVpbGQocmVkX2J1aWxkX251bWJlcik6CiAgICAgICAgICAgICByZXR1cm4gW10KLSAgICAgICAg
c3VzcGVjdF9yZXZpc2lvbnMgPSByYW5nZShmaXJzdF9yZWRfYnVpbGQucmV2aXNpb24oKSwgbGFz
dF9ncmVlbl9idWlsZC5yZXZpc2lvbigpLCAtMSkKLSAgICAgICAgc3VzcGVjdF9yZXZpc2lvbnMu
cmV2ZXJzZSgpCi0gICAgICAgIHJldHVybiBzdXNwZWN0X3JldmlzaW9ucworICAgICAgICByZXR1
cm4gc2VsZi5zdXNwZWN0X3JldmlzaW9uc19mb3JfdHJhbnNpdGlvbihsYXN0X2dyZWVuX2J1aWxk
LCBmaXJzdF9yZWRfYnVpbGQpCiAKIAorIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgdW5pZmllZCB3
aXRoIGFsbCB0aGUgbGF5b3V0IHRlc3QgcmVzdWx0cyBjb2RlIGluIHRoZSBsYXlvdXRfdGVzdHMg
cGFja2FnZQogY2xhc3MgTGF5b3V0VGVzdFJlc3VsdHMob2JqZWN0KToKKyAgICBzdGRlcnJfa2V5
ID0gdSdUZXN0cyB0aGF0IGhhZCBzdGRlcnIgb3V0cHV0OicKKyAgICBmYWlsX2tleSA9IHUnVGVz
dHMgd2hlcmUgcmVzdWx0cyBkaWQgbm90IG1hdGNoIGV4cGVjdGVkIHJlc3VsdHM6JworICAgIHRp
bWVvdXRfa2V5ID0gdSdUZXN0cyB0aGF0IHRpbWVkIG91dDonCisgICAgY3Jhc2hfa2V5ID0gdSdU
ZXN0cyB0aGF0IGNhdXNlZCB0aGUgRHVtcFJlbmRlclRyZWUgdG9vbCB0byBjcmFzaDonCisgICAg
bWlzc2luZ19rZXkgPSB1J1Rlc3RzIHRoYXQgaGFkIG5vIGV4cGVjdGVkIHJlc3VsdHMgKHByb2Jh
Ymx5IG5ldyk6JworCisgICAgZXhwZWN0ZWRfa2V5cyA9IFtzdGRlcnJfa2V5LCBmYWlsX2tleSwg
Y3Jhc2hfa2V5LCB0aW1lb3V0X2tleSwgbWlzc2luZ19rZXldCisKICAgICBAY2xhc3NtZXRob2QK
ICAgICBkZWYgX3BhcnNlX3Jlc3VsdHNfaHRtbChjbHMsIHBhZ2UpOgogICAgICAgICBwYXJzZWRf
cmVzdWx0cyA9IHt9CiAgICAgICAgIHRhYmxlcyA9IEJlYXV0aWZ1bFNvdXAocGFnZSkuZmluZEFs
bCgidGFibGUiKQogICAgICAgICBmb3IgdGFibGUgaW4gdGFibGVzOgogICAgICAgICAgICAgdGFi
bGVfdGl0bGUgPSB0YWJsZS5maW5kUHJldmlvdXNTaWJsaW5nKCJwIikuc3RyaW5nCisgICAgICAg
ICAgICBpZiB0YWJsZV90aXRsZSBub3QgaW4gY2xzLmV4cGVjdGVkX2tleXM6CisgICAgICAgICAg
ICAgICAgcmFpc2UgIlVuaGFuZGxlZCB0aXRsZTogJXMiICUgc3RyKHRhYmxlX3RpdGxlKQogICAg
ICAgICAgICAgIyBXZSBtaWdodCB3YW50IHRvIHRyYW5zbGF0ZSB0YWJsZSB0aXRsZXMgaW50byBp
ZGVudGlmaWVycyBhdCBzb21lIHBvaW50LgogICAgICAgICAgICAgcGFyc2VkX3Jlc3VsdHNbdGFi
bGVfdGl0bGVdID0gW3Jvdy5maW5kKCJhIikuc3RyaW5nIGZvciByb3cgaW4gdGFibGUuZmluZEFs
bCgidHIiKV0KIApAQCAtMjA0LDYgKzIyNywxMCBAQCBjbGFzcyBMYXlvdXRUZXN0UmVzdWx0cyhv
YmplY3QpOgogICAgIGRlZiBwYXJzZWRfcmVzdWx0cyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNl
bGYuX3BhcnNlZF9yZXN1bHRzCiAKKyAgICBkZWYgZmFpbGluZ190ZXN0cyhzZWxmKToKKyAgICAg
ICAgZmFpbGluZ19rZXlzID0gW3NlbGYuZmFpbF9rZXksIHNlbGYuY3Jhc2hfa2V5LCBzZWxmLnRp
bWVvdXRfa2V5XQorICAgICAgICByZXR1cm4gc29ydGVkKHN1bShbdGVzdHMgZm9yIGtleSwgdGVz
dHMgaW4gc2VsZi5fcGFyc2VkX3Jlc3VsdHMuaXRlbXMoKSBpZiBrZXkgaW4gZmFpbGluZ19rZXlz
XSwgW10pKQorCiAKIGNsYXNzIEJ1aWxkKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGJ1aWxkZXIsIGJ1aWxkX251bWJlciwgcmV2aXNpb24sIGlzX2dyZWVuKToKQEAgLTM5NSw3ICs0
MjIsOCBAQCBjbGFzcyBCdWlsZEJvdChvYmplY3QpOgogICAgICAgICAgICAgICAgIHJldmlzaW9u
X3RvX2ZhaWxpbmdfYm90c1tyZXZpc2lvbl0gPSBmYWlsaW5nX2JvdHMKICAgICAgICAgcmV0dXJu
IHJldmlzaW9uX3RvX2ZhaWxpbmdfYm90cwogCi0gICAgIyBGSVhNRTogVGhpcyBpcyBhIGhhY2sg
YXJvdW5kIGxhY2sgb2YgQnVpbGRlci5sYXRlc3RfYnVpbGQoKSBzdXBwb3J0CisgICAgIyBUaGlz
IG1ha2VzIGZld2VyIHJlcXVlc3RzIHRoYW4gY2FsbGluZyBCdWlsZGVyLmxhdGVzdF9idWlsZCB3
b3VsZC4gIEl0IGdyYWJzIGFsbCBidWlsZGVyCisgICAgIyBzdGF0dXNlcyBpbiBvbmUgcmVxdWVz
dCB1c2luZyBzZWxmLmJ1aWxkZXJfc3RhdHVzZXMgKGZldGNoaW5nIC9vbmVfYm94X3Blcl9idWls
ZGVyIGluc3RlYWQgb2YgYnVpbGRlciBwYWdlcykuCiAgICAgZGVmIF9sYXRlc3RfYnVpbGRzX2Zy
b21fYnVpbGRlcnMoc2VsZiwgb25seV9jb3JlX2J1aWxkZXJzPVRydWUpOgogICAgICAgICBidWls
ZGVyX3N0YXR1c2VzID0gc2VsZi5jb3JlX2J1aWxkZXJfc3RhdHVzZXMoKSBpZiBvbmx5X2NvcmVf
YnVpbGRlcnMgZWxzZSBzZWxmLmJ1aWxkZXJfc3RhdHVzZXMoKQogICAgICAgICByZXR1cm4gW3Nl
bGYuYnVpbGRlcl93aXRoX25hbWUoc3RhdHVzWyJuYW1lIl0pLmJ1aWxkKHN0YXR1c1siYnVpbGRf
bnVtYmVyIl0pIGZvciBzdGF0dXMgaW4gYnVpbGRlcl9zdGF0dXNlc10KZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVzLnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXJpZXMucHkKaW5kZXgg
NWM2ODc4MC4uYjI1NWU0OSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL3F1ZXJpZXMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL3F1ZXJpZXMucHkKQEAgLTM0LDYgKzM0LDcgQEAgZnJvbSB3ZWJr
aXRweS5jb21tb24uY2hlY2tvdXQuY2hhbmdlbG9nIGltcG9ydCB2aWV3X3NvdXJjZV91cmwKIGZy
b20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmNvbW1pdGluZm8gaW1wb3J0IENvbW1pdEluZm8K
IGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJM
aXN0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVpbGRib3QgaW1wb3J0IEJ1aWxkQm90Citm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlciBpbXBvcnQgVXNlcgogZnJvbSB3ZWJraXRw
eS50b29sLmdyYW1tYXIgaW1wb3J0IHBsdXJhbGl6ZQogZnJvbSB3ZWJraXRweS50b29sLm11bHRp
Y29tbWFuZHRvb2wgaW1wb3J0IEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGltcG9ydCBsb2cKQEAgLTExNCw2
ICsxMTUsMTUgQEAgY2xhc3MgTGFzdEdyZWVuUmV2aXNpb24oQWJzdHJhY3REZWNsYXJhdGl2ZUNv
bW1hbmQpOgogICAgICAgICBwcmludCBzZWxmLnRvb2wuYnVpbGRib3QubGFzdF9ncmVlbl9yZXZp
c2lvbigpCiAKIAorZGVmIF9wcmludF9ibGFtZV9pbmZvcm1hdGlvbl9mb3JfY29tbWl0KHRvb2ws
IGNvbW1pdF9pbmZvKToKKyAgICBwcmludCAiciVzOiIgJSBjb21taXRfaW5mby5yZXZpc2lvbigp
CisgICAgcHJpbnQgIiAgJXMiICUgdmlld19zb3VyY2VfdXJsKGNvbW1pdF9pbmZvLnJldmlzaW9u
KCkpCisgICAgcHJpbnQgIiAgQnVnOiAlcyAoJXMpIiAlIChjb21taXRfaW5mby5idWdfaWQoKSwg
dG9vbC5idWdzLmJ1Z191cmxfZm9yX2J1Z19pZChjb21taXRfaW5mby5idWdfaWQoKSkpCisgICAg
YXV0aG9yX2xpbmUgPSAiXCIlc1wiIDwlcz4iICUgKGNvbW1pdF9pbmZvLmF1dGhvcl9uYW1lKCks
IGNvbW1pdF9pbmZvLmF1dGhvcl9lbWFpbCgpKQorICAgIHByaW50ICIgIEF1dGhvcjogJXMiICUg
KGNvbW1pdF9pbmZvLmF1dGhvcigpIG9yIGF1dGhvcl9saW5lKQorICAgIHByaW50ICIgIFJldmll
d2VyOiAlcyIgJSAoY29tbWl0X2luZm8ucmV2aWV3ZXIoKSBvciBjb21taXRfaW5mby5yZXZpZXdl
cl90ZXh0KCkpCisgICAgcHJpbnQgIiAgQ29tbWl0dGVyOiAlcyIgJSBjb21taXRfaW5mby5jb21t
aXR0ZXIoKQorCiBjbGFzcyBXaGF0QnJva2UoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgog
ICAgIG5hbWUgPSAid2hhdC1icm9rZSIKICAgICBoZWxwX3RleHQgPSAiUHJpbnQgZmFpbGluZyBi
dWlsZGJvdHMgKCVzKSBhbmQgd2hhdCByZXZpc2lvbnMgYnJva2UgdGhlbSIgJSBCdWlsZEJvdC5k
ZWZhdWx0X2hvc3QKQEAgLTEyMSwxNSArMTMxLDYgQEAgY2xhc3MgV2hhdEJyb2tlKEFic3RyYWN0
RGVjbGFyYXRpdmVDb21tYW5kKToKICAgICBkZWYgX3ByaW50X2J1aWxkZXJfbGluZShzZWxmLCBi
dWlsZGVyX25hbWUsIG1heF9uYW1lX3dpZHRoLCBzdGF0dXNfbWVzc2FnZSk6CiAgICAgICAgIHBy
aW50ICIlcyA6ICVzIiAlIChidWlsZGVyX25hbWUubGp1c3QobWF4X25hbWVfd2lkdGgpLCBzdGF0
dXNfbWVzc2FnZSkKIAotICAgIGRlZiBfcHJpbnRfYmxhbWVfaW5mb3JtYXRpb25fZm9yX2NvbW1p
dChzZWxmLCBjb21taXRfaW5mbyk6Ci0gICAgICAgIHByaW50ICJyJXM6IiAlIGNvbW1pdF9pbmZv
LnJldmlzaW9uKCkKLSAgICAgICAgcHJpbnQgIiAgJXMiICUgdmlld19zb3VyY2VfdXJsKGNvbW1p
dF9pbmZvLnJldmlzaW9uKCkpCi0gICAgICAgIHByaW50ICIgIEJ1ZzogJXMgKCVzKSIgJSAoY29t
bWl0X2luZm8uYnVnX2lkKCksIHNlbGYudG9vbC5idWdzLmJ1Z191cmxfZm9yX2J1Z19pZChjb21t
aXRfaW5mby5idWdfaWQoKSkpCi0gICAgICAgIGF1dGhvcl9saW5lID0gIlwiJXNcIiA8JXM+IiAl
IChjb21taXRfaW5mby5hdXRob3JfbmFtZSgpLCBjb21taXRfaW5mby5hdXRob3JfZW1haWwoKSkK
LSAgICAgICAgcHJpbnQgIiAgQXV0aG9yOiAlcyIgJSAoY29tbWl0X2luZm8uYXV0aG9yKCkgb3Ig
YXV0aG9yX2xpbmUpCi0gICAgICAgIHByaW50ICIgIFJldmlld2VyOiAlcyIgJSAoY29tbWl0X2lu
Zm8ucmV2aWV3ZXIoKSBvciBjb21taXRfaW5mby5yZXZpZXdlcl90ZXh0KCkpCi0gICAgICAgIHBy
aW50ICIgIENvbW1pdHRlcjogJXMiICUgY29tbWl0X2luZm8uY29tbWl0dGVyKCkKLQogICAgICMg
RklYTUU6IFRoaXMgaXMgc2xpZ2h0bHkgZGlmZmVyZW50IGZyb20gQnVpbGRlci5zdXNwZWN0X3Jl
dmlzaW9uc19mb3JfZ3JlZW5fdG9fcmVkX3RyYW5zaXRpb24KICAgICAjIGR1ZSB0byBuZWVkaW5n
IHRvIGRldGVjdCB0aGUgImhpdCB0aGUgbGltaXQiIGNhc2UgYW4gcHJpbnQgYSBzcGVjaWFsIG1l
c3NhZ2UuCiAgICAgZGVmIF9wcmludF9ibGFtZV9pbmZvcm1hdGlvbl9mb3JfYnVpbGRlcihzZWxm
LCBidWlsZGVyX3N0YXR1cywgbmFtZV93aWR0aCwgYXZvaWRfZmxha2V5X3Rlc3RzPVRydWUpOgpA
QCAtMTUwLDcgKzE1MSw3IEBAIGNsYXNzIFdoYXRCcm9rZShBYnN0cmFjdERlY2xhcmF0aXZlQ29t
bWFuZCk6CiAgICAgICAgIHNlbGYuX3ByaW50X2J1aWxkZXJfbGluZShidWlsZGVyLm5hbWUoKSwg
bmFtZV93aWR0aCwgIkZBSUwgKGJsYW1lLWxpc3Q6ICVzJXMpIiAlIChzdXNwZWN0X3JldmlzaW9u
cywgZmlyc3RfZmFpbHVyZV9tZXNzYWdlKSkKICAgICAgICAgZm9yIHJldmlzaW9uIGluIHN1c3Bl
Y3RfcmV2aXNpb25zOgogICAgICAgICAgICAgY29tbWl0X2luZm8gPSBzZWxmLnRvb2wuY2hlY2tv
dXQoKS5jb21taXRfaW5mb19mb3JfcmV2aXNpb24ocmV2aXNpb24pCi0gICAgICAgICAgICBzZWxm
Ll9wcmludF9ibGFtZV9pbmZvcm1hdGlvbl9mb3JfY29tbWl0KGNvbW1pdF9pbmZvKQorICAgICAg
ICAgICAgX3ByaW50X2JsYW1lX2luZm9ybWF0aW9uX2Zvcl9jb21taXQoc2VsZi50b29sLCBjb21t
aXRfaW5mbykKIAogICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgog
ICAgICAgICBidWlsZGVyX3N0YXR1c2VzID0gdG9vbC5idWlsZGJvdC5idWlsZGVyX3N0YXR1c2Vz
KCkKQEAgLTE5OSw2ICsyMDAsNzEgQEAgY2xhc3MgUmVzdWx0c0ZvcihBYnN0cmFjdERlY2xhcmF0
aXZlQ29tbWFuZCk6CiAgICAgICAgICAgICBzZWxmLl9wcmludF9sYXlvdXRfdGVzdF9yZXN1bHRz
KGJ1aWxkLmxheW91dF90ZXN0X3Jlc3VsdHMoKSkKIAogCitjbGFzcyBGYWlsdXJlUmVhc29uKEFi
c3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKKyAgICBuYW1lID0gImZhaWx1cmUtcmVhc29uIgor
ICAgIGhlbHBfdGV4dCA9ICJMaXN0cyByZXZpc2lvbnMgd2hlcmUgaW5kaXZpZHVhbCB0ZXN0IGZh
aWx1cmVzIHN0YXJ0ZWQgYXQgJXMiICUgQnVpbGRCb3QuZGVmYXVsdF9ob3N0CisKKyAgICBkZWYg
X3ByaW50X2JsYW1lX2luZm9ybWF0aW9uX2Zvcl90cmFuc2l0aW9uKHNlbGYsIGdyZWVuX2J1aWxk
LCByZWRfYnVpbGQsIGZhaWxpbmdfdGVzdHMpOgorICAgICAgICBzdXNwZWN0X3JldmlzaW9ucyA9
IGdyZWVuX2J1aWxkLmJ1aWxkZXIoKS5zdXNwZWN0X3JldmlzaW9uc19mb3JfdHJhbnNpdGlvbihn
cmVlbl9idWlsZCwgcmVkX2J1aWxkKQorICAgICAgICBwcmludCAiU1VDQ0VTUzogQnVpbGQgJXMg
KHIlcykgd2FzIHRoZSBmaXJzdCB0byBzaG93IGZhaWx1cmVzOiAlcyIgJSAocmVkX2J1aWxkLl9u
dW1iZXIsIHJlZF9idWlsZC5yZXZpc2lvbigpLCBmYWlsaW5nX3Rlc3RzKQorICAgICAgICBwcmlu
dCAiU3VzcGVjdCByZXZpc2lvbnM6IgorICAgICAgICBmb3IgcmV2aXNpb24gaW4gc3VzcGVjdF9y
ZXZpc2lvbnM6CisgICAgICAgICAgICBjb21taXRfaW5mbyA9IHNlbGYudG9vbC5jaGVja291dCgp
LmNvbW1pdF9pbmZvX2Zvcl9yZXZpc2lvbihyZXZpc2lvbikKKyAgICAgICAgICAgIF9wcmludF9i
bGFtZV9pbmZvcm1hdGlvbl9mb3JfY29tbWl0KHNlbGYudG9vbCwgY29tbWl0X2luZm8pCisKKyAg
ICBkZWYgX2V4cGxhaW5fZmFpbHVyZXNfZm9yX2J1aWxkZXIoc2VsZiwgYnVpbGRlciwgc3RhcnRf
cmV2aXNpb24sIHNlYXJjaF9saW1pdD0xMDAwKToKKyAgICAgICAgcHJpbnQgIkV4YW1pbmluZyBm
YWlsdXJlcyBmb3IgXCIlc1wiLCBzdGFydGluZyBhdCByJXMiICUgKGJ1aWxkZXIubmFtZSgpLCBz
dGFydF9yZXZpc2lvbikKKyAgICAgICAgcmV2aXNpb25fdG9fdGVzdCA9IHN0YXJ0X3JldmlzaW9u
CisgICAgICAgIGJ1aWxkID0gYnVpbGRlci5idWlsZF9mb3JfcmV2aXNpb24ocmV2aXNpb25fdG9f
dGVzdCwgYWxsb3dfZmFpbGVkX2xvb2t1cHM9VHJ1ZSkKKyAgICAgICAgcmVzdWx0c190b19leHBs
YWluID0gc2V0KGJ1aWxkLmxheW91dF90ZXN0X3Jlc3VsdHMoKS5mYWlsaW5nX3Rlc3RzKCkpCisg
ICAgICAgIGxhc3RfYnVpbGRfd2l0aF9yZXN1bHRzID0gYnVpbGQKKyAgICAgICAgcHJpbnQgIlN0
YXJ0aW5nIGF0ICVzIiAlIHJldmlzaW9uX3RvX3Rlc3QKKyAgICAgICAgd2hpbGUgcmVzdWx0c190
b19leHBsYWluIGFuZCByZXZpc2lvbl90b190ZXN0ID4gc3RhcnRfcmV2aXNpb24gLSBzZWFyY2hf
bGltaXQ6CisgICAgICAgICAgICByZXZpc2lvbl90b190ZXN0IC09IDEKKyAgICAgICAgICAgIG5l
d19idWlsZCA9IGJ1aWxkZXIuYnVpbGRfZm9yX3JldmlzaW9uKHJldmlzaW9uX3RvX3Rlc3QsIGFs
bG93X2ZhaWxlZF9sb29rdXBzPVRydWUpCisgICAgICAgICAgICBpZiBub3QgbmV3X2J1aWxkOgor
ICAgICAgICAgICAgICAgIHByaW50ICJObyBidWlsZCBmb3IgJXMiICUgcmV2aXNpb25fdG9fdGVz
dAorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBidWlsZCA9IG5ld19idWls
ZAorICAgICAgICAgICAgbGF0ZXN0X3Jlc3VsdHMgPSBidWlsZC5sYXlvdXRfdGVzdF9yZXN1bHRz
KCkKKyAgICAgICAgICAgIGlmIG5vdCBsYXRlc3RfcmVzdWx0czoKKyAgICAgICAgICAgICAgICBw
cmludCAiTm8gcmVzdWx0cyBidWlsZCAlcyAociVzKSIgJSAoYnVpbGQuX251bWJlciwgYnVpbGQu
cmV2aXNpb24oKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZmFpbHVy
ZXMgPSBzZXQobGF0ZXN0X3Jlc3VsdHMuZmFpbGluZ190ZXN0cygpKQorICAgICAgICAgICAgaWYg
bGVuKGZhaWx1cmVzKSA+PSAyMDoKKyAgICAgICAgICAgICAgICAjIEZJWE1FOiBXZSBtYXkgbmVl
ZCB0byBtb3ZlIHRoaXMgbG9naWMgaW50byB0aGUgTGF5b3V0VGVzdFJlc3VsdHMgY2xhc3MuCisg
ICAgICAgICAgICAgICAgIyBUaGUgYnVpbGRib3Qgc3RvcHMgcnVucyBhZnRlciAyMCBmYWlsdXJl
cyBzbyB3ZSBkb24ndCBoYXZlIGZ1bGwgcmVzdWx0cyB0byB3b3JrIHdpdGggaGVyZS4KKyAgICAg
ICAgICAgICAgICBwcmludCAiVG9vIG1hbnkgZmFpbHVyZXMgaW4gYnVpbGQgJXMgKHIlcyksIGln
bm9yaW5nLiIgJSAoYnVpbGQuX251bWJlciwgYnVpbGQucmV2aXNpb24oKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICAgICAgZml4ZWRfcmVzdWx0cyA9IHJlc3VsdHNfdG9fZXhw
bGFpbiAtIGZhaWx1cmVzCisgICAgICAgICAgICBpZiBub3QgZml4ZWRfcmVzdWx0czoKKyAgICAg
ICAgICAgICAgICBsYXN0X2J1aWxkX3dpdGhfcmVzdWx0cyA9IGJ1aWxkCisgICAgICAgICAgICAg
ICAgcHJpbnQgIk5vIGNoYW5nZSBpbiBidWlsZCAlcyAociVzKSwgJXMgdW5leHBsYWluZWQgZmFp
bHVyZXMgKCVzIGluIHRoaXMgYnVpbGQpIiAlIChidWlsZC5fbnVtYmVyLCBidWlsZC5yZXZpc2lv
bigpLCBsZW4ocmVzdWx0c190b19leHBsYWluKSwgbGVuKGZhaWx1cmVzKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICAgICAgc2VsZi5fcHJpbnRfYmxhbWVfaW5mb3JtYXRpb25f
Zm9yX3RyYW5zaXRpb24oYnVpbGQsIGxhc3RfYnVpbGRfd2l0aF9yZXN1bHRzLCBmaXhlZF9yZXN1
bHRzKQorICAgICAgICAgICAgbGFzdF9idWlsZF93aXRoX3Jlc3VsdHMgPSBidWlsZAorICAgICAg
ICAgICAgcmVzdWx0c190b19leHBsYWluIC09IGZpeGVkX3Jlc3VsdHMKKyAgICAgICAgaWYgcmVz
dWx0c190b19leHBsYWluOgorICAgICAgICAgICAgcHJpbnQgIkZhaWxlZCB0byBleHBsYWluIGZh
aWx1cmVzOiAlcyIgJSByZXN1bHRzX3RvX2V4cGxhaW4KKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHByaW50ICJFeHBsYWluZWQgYWxsIHJlc3VsdHMgZm9yICVzIiAlIGJ1aWxkZXIubmFtZSgp
CisKKyAgICBkZWYgX2J1aWxkZXJfdG9fZXhwbGFpbihzZWxmKToKKyAgICAgICAgYnVpbGRlcl9z
dGF0dXNlcyA9IHNlbGYudG9vbC5idWlsZGJvdC5idWlsZGVyX3N0YXR1c2VzKCkKKyAgICAgICAg
cmVkX3N0YXR1c2VzID0gW3N0YXR1cyBmb3Igc3RhdHVzIGluIGJ1aWxkZXJfc3RhdHVzZXMgaWYg
bm90IHN0YXR1c1siaXNfZ3JlZW4iXV0KKyAgICAgICAgcHJpbnQgIiVzIGZhaWxpbmciICUgKHBs
dXJhbGl6ZSgiYnVpbGRlciIsIGxlbihyZWRfc3RhdHVzZXMpKSkKKyAgICAgICAgYnVpbGRlcl9j
aG9pY2VzID0gW3N0YXR1c1sibmFtZSJdIGZvciBzdGF0dXMgaW4gcmVkX3N0YXR1c2VzXQorICAg
ICAgICAjIFdlIGNvdWxkIG9mZmVyIGFuICJBbGwiIGNob2ljZSBoZXJlLgorICAgICAgICBjaG9z
ZW5fbmFtZSA9IFVzZXIucHJvbXB0X3dpdGhfbGlzdCgiV2hpY2ggYnVpbGRlciB0byBkaWFnbm9z
ZToiLCBidWlsZGVyX2Nob2ljZXMpCisgICAgICAgICMgRklYTUU6IHByb21wdF93aXRoX2xpc3Qg
c2hvdWxkIHJlYWxseSB0YWtlIGEgc2V0IG9mIG9iamVjdHMgYW5kIGEgc2V0IG9mIG5hbWVzIGFu
ZCB0aGVuIHJldHVybiB0aGUgb2JqZWN0LgorICAgICAgICBmb3Igc3RhdHVzIGluIHJlZF9zdGF0
dXNlczoKKyAgICAgICAgICAgIGlmIHN0YXR1c1sibmFtZSJdID09IGNob3Nlbl9uYW1lOgorICAg
ICAgICAgICAgICAgIHJldHVybiAoc2VsZi50b29sLmJ1aWxkYm90LmJ1aWxkZXJfd2l0aF9uYW1l
KGNob3Nlbl9uYW1lKSwgc3RhdHVzWyJidWlsdF9yZXZpc2lvbiJdKQorCisgICAgZGVmIGV4ZWN1
dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CisgICAgICAgIChidWlsZGVyLCBzdGFydF9y
ZXZpc2lvbikgPSBzZWxmLl9idWlsZGVyX3RvX2V4cGxhaW4oKQorICAgICAgICBzZWxmLl9leHBs
YWluX2ZhaWx1cmVzX2Zvcl9idWlsZGVyKGJ1aWxkZXIsIHN0YXJ0X3JldmlzaW9uPXN0YXJ0X3Jl
dmlzaW9uKQorCiBjbGFzcyBUcmVlU3RhdHVzKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToK
ICAgICBuYW1lID0gInRyZWUtc3RhdHVzIgogICAgIGhlbHBfdGV4dCA9ICJQcmludCB0aGUgc3Rh
dHVzIG9mIHRoZSAlcyBidWlsZGJvdHMiICUgQnVpbGRCb3QuZGVmYXVsdF9ob3N0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52696</attachid>
            <date>2010-04-06 20:26:26 -0700</date>
            <delta_ts>2010-04-06 23:28:55 -0700</delta_ts>
            <desc>First Try</desc>
            <filename>bug-36911-20100406202625.patch</filename>
            <type>text/plain</type>
            <size>17203</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAyNGM3NWU3Li4wZjM0MzVlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDMt
MzEgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB3ZWJraXQtcGF0Y2ggY29tbWFuZCB0byBj
cmF3bCBidWlsZGJvdCBoaXN0b3J5IGFuZCBmaW5kIHdoZW4gdGVzdHMgc3RhcnRlZCB0byBmYWls
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjkxMQor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90LnB5OgorICAg
ICAgICAgLSBBZGQgcmV2aXNpb25fYnVpbGRfcGFpcnNfd2l0aF9yZXN1bHRzIGZvciBjbGVhbmVy
IGNvZGUgYW5kIHBvc3NpYmxlIG9wdGltaXphdGlvbiBvZiB0aGlzIGNvbW1hbmQuCisgICAgICAg
ICAtIFJldHVybiBOb25lIGlmIGEgYnVpbGQgbnVtYmVyIGNhbid0IGJlIGZvdW5kIGZvciBhIHJl
dmlzaW9uIGluIGJ1aWxkX2Zvcl9yZXZpc2lvbgorICAgICAgICAgLSBTZXBhcmF0ZSBvdXQgc3Vz
cGVjdF9yZXZpc2lvbnNfZm9yX3RyYW5zaXRpb24gZm9yIHJlLXVzZSBieSBGYWlsdXJlUmVhc29u
CisgICAgICAgICAtIEFkZCBMYXlvdXRUZXN0UmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkgYW5kIG1h
a2Ugb3VyIHBhcnNpbmcgY29kZSBleHBsaWN0IGFib3V0IHdoYXQgdGFibGVzIGl0IGFjY2VwdHMu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXJpZXMucHk6Cisg
ICAgICAgICAtIE1vdmUgX3ByaW50X2JsYW1lX2luZm9ybWF0aW9uX2Zvcl9jb21taXQgb3V0IG9m
IFdoYXRCcm9rZSBmb3IgcmUtdXNlIGJ5IEZhaWx1cmVSZWFzb24KKyAgICAgICAgIC0gQWRkIEZh
aWx1cmVSZWFzb24gY29tbWFuZCB3aGljaCBjYW4gY3Jhd2wgYSBnaXZlbiBidWlsZGVyIGFuZCBl
eHBsYWluIHdoeSBpdCBpcworICAgICAgICAgICBjdXJyZW50bHkgcmVkIG9uIGEgcGVyLXRlc3Qg
YmFzaXMuCisKIDIwMTAtMDQtMDYgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jb21taXRpbmZvLnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY29tbWl0aW5mby5weQpp
bmRleCBjNjgyMjIxLi44ZmQ3ZTBiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9jb21taXRpbmZvLnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NvbW1pdGluZm8ucHkKQEAgLTMwLDYgKzMw
LDcgQEAKIAogaW1wb3J0IFN0cmluZ0lPCiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0
LmNoYW5nZWxvZyBpbXBvcnQgdmlld19zb3VyY2VfdXJsCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5j
b25maWcuY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0dGVyTGlzdAogCiAKQEAgLTgxLDMgKzgyLDE0
IEBAIGNsYXNzIENvbW1pdEluZm8ob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYucmV2aWV3ZXIo
KSwKICAgICAgICAgXQogICAgICAgICByZXR1cm4gc2V0KFtwYXJ0eSBmb3IgcGFydHkgaW4gcmVz
cG9uc2libGVfcGFydGllcyBpZiBwYXJ0eV0pICMgRmlsdGVyIG91dCBOb25lCisKKyAgICAjIEZJ
WE1FOiBJdCBpcyBzbGlnaHRseSBsYW1lIHRoYXQgdGhpcyAidmlldyIgbWV0aG9kIGlzIG9uIHRo
aXMgIm1vZGVsIiBjbGFzcyAoaW4gTVZDIHRlcm1zKQorICAgIGRlZiBibGFtZV9zdHJpbmcoc2Vs
ZiwgYnVncyk6CisgICAgICAgIHN0cmluZyA9ICAiciVzOlxuIiAlIHNlbGYucmV2aXNpb24oKQor
ICAgICAgICBzdHJpbmcgKz0gIiAgJXNcbiIgJSB2aWV3X3NvdXJjZV91cmwoc2VsZi5yZXZpc2lv
bigpKQorICAgICAgICBzdHJpbmcgKz0gIiAgQnVnOiAlcyAoJXMpXG4iICUgKHNlbGYuYnVnX2lk
KCksIGJ1Z3MuYnVnX3VybF9mb3JfYnVnX2lkKHNlbGYuYnVnX2lkKCkpKQorICAgICAgICBhdXRo
b3JfbGluZSA9ICJcIiVzXCIgPCVzPiIgJSAoc2VsZi5hdXRob3JfbmFtZSgpLCBzZWxmLmF1dGhv
cl9lbWFpbCgpKQorICAgICAgICBzdHJpbmcgKz0gIiAgQXV0aG9yOiAlc1xuIiAlIChzZWxmLmF1
dGhvcigpIG9yIGF1dGhvcl9saW5lKQorICAgICAgICBzdHJpbmcgKz0gIiAgUmV2aWV3ZXI6ICVz
XG4iICUgKHNlbGYucmV2aWV3ZXIoKSBvciBzZWxmLnJldmlld2VyX3RleHQoKSkKKyAgICAgICAg
c3RyaW5nICs9ICIgIENvbW1pdHRlcjogJXMiICUgc2VsZi5jb21taXR0ZXIoKQorICAgICAgICBy
ZXR1cm4gc3RyaW5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhLnB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhLnB5CmluZGV4IDE5NTFj
NjguLmJiMjJkMTQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9idWd6aWxsYS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9uZXQvYnVnemlsbGEucHkKQEAgLTM2LDIwICszNiwxNSBAQCBpbXBvcnQgc3VicHJvY2Vz
cwogCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSAjIHVzZWQgaW4gdGltZXN0YW1wKCkK
IAotIyBJbXBvcnQgV2ViS2l0LXNwZWNpZmljIG1vZHVsZXMuCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGltcG9ydCBlcnJvciwgbG9nCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5jb25maWcgaW1wb3J0IGNvbW1pdHRlcnMKIGZyb20gd2Via2l0cHkuY29tbW9u
Lm5ldC5jcmVkZW50aWFscyBpbXBvcnQgQ3JlZGVudGlhbHMKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5vc3BhdGggaW1wb3J0IHJlbHBhdGgKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS51c2VyIGltcG9ydCBVc2VyCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxl
ZC5tZWNoYW5pemUgaW1wb3J0IEJyb3dzZXIKLQotIyBXZWJLaXQgaW5jbHVkZXMgYSBidWlsdCBj
b3B5IG9mIEJlYXV0aWZ1bFNvdXAgaW4gU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5Ci0jIHNv
IHRoaXMgaW1wb3J0IHNob3VsZCBhbHdheXMgc3VjY2VlZC4KIGZyb20gd2Via2l0cHkudGhpcmRw
YXJ0eS5CZWF1dGlmdWxTb3VwIGltcG9ydCBCZWF1dGlmdWxTb3VwLCBTb3VwU3RyYWluZXIKIAog
Ci0KIGRlZiBwYXJzZV9idWdfaWQobWVzc2FnZSk6CiAgICAgaWYgbm90IG1lc3NhZ2U6CiAgICAg
ICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvYnVpbGRib3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9uZXQvYnVpbGRib3QucHkKaW5kZXggNTBlOTZhNC4uMjkyNGIxNCAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90LnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC5weQpAQCAt
MzQsMTUgKzM0LDE0IEBAIGltcG9ydCB1cmxsaWIKIGltcG9ydCB1cmxsaWIyCiBpbXBvcnQgeG1s
cnBjbGliCiAKLSMgSW1wb3J0IFdlYktpdC1zcGVjaWZpYyBtb2R1bGVzLgotZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgbG9nCi0KK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5sb2d1dGlscyBpbXBvcnQgZ2V0X2xvZ2dlcgogZnJvbSB3ZWJr
aXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQubWVjaGFuaXplIGltcG9ydCBCcm93c2VyCi0j
IFdlYktpdCBpbmNsdWRlcyBhIGJ1aWx0IGNvcHkgb2YgQmVhdXRpZnVsU291cCBpbiBTY3JpcHRz
L3dlYmtpdHB5L3RoaXJkcGFydHkKLSMgc28gdGhpcyBpbXBvcnQgc2hvdWxkIGFsd2F5cyBzdWNj
ZWVkLgogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0
aWZ1bFNvdXAKIAogCitfbG9nID0gZ2V0X2xvZ2dlcihfX2ZpbGVfXykKKworCiBjbGFzcyBCdWls
ZGVyKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGJ1aWxkYm90KToKICAg
ICAgICAgc2VsZi5fbmFtZSA9IHVuaWNvZGUobmFtZSkKQEAgLTEyMCwxMiArMTE5LDIwIEBAIGNs
YXNzIEJ1aWxkZXIob2JqZWN0KToKICAgICAgICAgIyBUaGlzIGFzc3VtZXMgdGhlcmUgd2FzIG9u
bHkgb25lIGJ1aWxkIHBlciByZXZpc2lvbiwgd2hpY2ggaXMgZmFsc2UgYnV0IHdlIGRvbid0IGNh
cmUgZm9yIG5vdy4KICAgICAgICAgcmV0dXJuIGRpY3QoW3NlbGYuX3JldmlzaW9uX2FuZF9idWls
ZF9mb3JfZmlsZW5hbWUoZmlsZV9pbmZvWyJmaWxlbmFtZSJdKSBmb3IgZmlsZV9pbmZvIGluIHJl
c3VsdF9maWxlc10pCiAKLSAgICAjIFRoaXMgYXNzdW1lcyB0aGVyZSBjYW4gYmUgb25seSBvbmUg
YnVpbGQgcGVyIHJldmlzaW9uLCB3aGljaCBpcyBmYWxzZSwgYnV0IHdlIGRvbid0IGNhcmUgZm9y
IG5vdy4KLSAgICBkZWYgYnVpbGRfZm9yX3JldmlzaW9uKHNlbGYsIHJldmlzaW9uLCBhbGxvd19m
YWlsZWRfbG9va3Vwcz1GYWxzZSk6CisgICAgZGVmIF9yZXZpc2lvbl90b19idWlsZF9tYXAoc2Vs
Zik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9yZXZpc2lvbl90b19idWlsZF9udW1iZXI6CiAgICAg
ICAgICAgICBzZWxmLl9yZXZpc2lvbl90b19idWlsZF9udW1iZXIgPSBzZWxmLl9mZXRjaF9yZXZp
c2lvbl90b19idWlsZF9tYXAoKQorICAgICAgICByZXR1cm4gc2VsZi5fcmV2aXNpb25fdG9fYnVp
bGRfbnVtYmVyCisKKyAgICBkZWYgcmV2aXNpb25fYnVpbGRfcGFpcnNfd2l0aF9yZXN1bHRzKHNl
bGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fcmV2aXNpb25fdG9fYnVpbGRfbWFwKCkuaXRlbXMo
KQorCisgICAgIyBUaGlzIGFzc3VtZXMgdGhlcmUgY2FuIGJlIG9ubHkgb25lIGJ1aWxkIHBlciBy
ZXZpc2lvbiwgd2hpY2ggaXMgZmFsc2UsIGJ1dCB3ZSBkb24ndCBjYXJlIGZvciBub3cuCisgICAg
ZGVmIGJ1aWxkX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbiwgYWxsb3dfZmFpbGVkX2xvb2t1
cHM9RmFsc2UpOgogICAgICAgICAjIE5PVEU6IFRoaXMgbG9va3VwIHdpbGwgZmFpbCBpZiB0aGF0
IGV4YWN0IHJldmlzaW9uIHdhcyBuZXZlciBidWlsdC4KLSAgICAgICAgYnVpbGRfbnVtYmVyID0g
c2VsZi5fcmV2aXNpb25fdG9fYnVpbGRfbnVtYmVyLmdldChpbnQocmV2aXNpb24pKQorICAgICAg
ICBidWlsZF9udW1iZXIgPSBzZWxmLl9yZXZpc2lvbl90b19idWlsZF9tYXAoKS5nZXQoaW50KHJl
dmlzaW9uKSkKKyAgICAgICAgaWYgbm90IGJ1aWxkX251bWJlcjoKKyAgICAgICAgICAgIHJldHVy
biBOb25lCiAgICAgICAgIGJ1aWxkID0gc2VsZi5idWlsZChidWlsZF9udW1iZXIpCiAgICAgICAg
IGlmIG5vdCBidWlsZCBhbmQgYWxsb3dfZmFpbGVkX2xvb2t1cHM6CiAgICAgICAgICAgICAjIEJ1
aWxkcyBmb3Igb2xkIHJldmlzaW9ucyB3aXRoIGZhaWwgdG8gbG9va3VwIHZpYSBidWlsZGJvdCdz
IHhtbHJwYyBhcGkuCkBAIC0xNzIsNiArMTc5LDE0IEBAIGNsYXNzIEJ1aWxkZXIob2JqZWN0KToK
ICAgICAgICAgIyB3aXRoIHJlZCBidWlsZCwgc28gd2UndmUgZm91bmQgb3VyIGZhaWx1cmUgdHJh
bnNpdGlvbi4KICAgICAgICAgcmV0dXJuIChjdXJyZW50X2J1aWxkLCBidWlsZF9hZnRlcl9jdXJy
ZW50X2J1aWxkKQogCisgICAgIyBGSVhNRTogVGhpcyBsaWtlbHkgZG9lcyBub3QgYmVsb25nIG9u
IEJ1aWxkZXIKKyAgICBkZWYgc3VzcGVjdF9yZXZpc2lvbnNfZm9yX3RyYW5zaXRpb24oc2VsZiwg
bGFzdF9nb29kX2J1aWxkLCBmaXJzdF9iYWRfYnVpbGQpOgorICAgICAgICBzdXNwZWN0X3Jldmlz
aW9ucyA9IHJhbmdlKGZpcnN0X2JhZF9idWlsZC5yZXZpc2lvbigpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxhc3RfZ29vZF9idWlsZC5yZXZpc2lvbigpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC0xKQorICAgICAgICBzdXNwZWN0X3JldmlzaW9ucy5y
ZXZlcnNlKCkKKyAgICAgICAgcmV0dXJuIHN1c3BlY3RfcmV2aXNpb25zCisKICAgICBkZWYgYmxh
bWV3b3J0aHlfcmV2aXNpb25zKHNlbGYsIHJlZF9idWlsZF9udW1iZXIsIGxvb2tfYmFja19saW1p
dD0zMCwgYXZvaWRfZmxha2V5X3Rlc3RzPVRydWUpOgogICAgICAgICByZWRfYnVpbGQgPSBzZWxm
LmJ1aWxkKHJlZF9idWlsZF9udW1iZXIpCiAgICAgICAgIChsYXN0X2dvb2RfYnVpbGQsIGZpcnN0
X2JhZF9idWlsZCkgPSBcCkBAIC0xODIsMTMgKzE5NywxMCBAQCBjbGFzcyBCdWlsZGVyKG9iamVj
dCk6CiAgICAgICAgICMgc3VzcGVjdCBhIHJlYWwgZmFpbHVyZSB0cmFuc2l0aW9uLgogICAgICAg
ICBpZiBhdm9pZF9mbGFrZXlfdGVzdHMgYW5kIGZpcnN0X2JhZF9idWlsZCA9PSByZWRfYnVpbGQ6
CiAgICAgICAgICAgICByZXR1cm4gW10KLSAgICAgICAgc3VzcGVjdF9yZXZpc2lvbnMgPSByYW5n
ZShmaXJzdF9iYWRfYnVpbGQucmV2aXNpb24oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsYXN0X2dvb2RfYnVpbGQucmV2aXNpb24oKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtMSkKLSAgICAgICAgc3VzcGVjdF9yZXZpc2lvbnMucmV2ZXJzZSgpCi0g
ICAgICAgIHJldHVybiBzdXNwZWN0X3JldmlzaW9ucworICAgICAgICByZXR1cm4gc2VsZi5zdXNw
ZWN0X3JldmlzaW9uc19mb3JfdHJhbnNpdGlvbihsYXN0X2dvb2RfYnVpbGQsIGZpcnN0X2JhZF9i
dWlsZCkKIAogCisjIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB1bmlmaWVkIHdpdGggYWxsIHRoZSBs
YXlvdXQgdGVzdCByZXN1bHRzIGNvZGUgaW4gdGhlIGxheW91dF90ZXN0cyBwYWNrYWdlCiBjbGFz
cyBMYXlvdXRUZXN0UmVzdWx0cyhvYmplY3QpOgogICAgIHN0ZGVycl9rZXkgPSB1J1Rlc3RzIHRo
YXQgaGFkIHN0ZGVyciBvdXRwdXQ6JwogICAgIGZhaWxfa2V5ID0gdSdUZXN0cyB3aGVyZSByZXN1
bHRzIGRpZCBub3QgbWF0Y2ggZXhwZWN0ZWQgcmVzdWx0czonCkBAIC0yMTEsOCArMjIzLDkgQEAg
Y2xhc3MgTGF5b3V0VGVzdFJlc3VsdHMob2JqZWN0KToKICAgICAgICAgZm9yIHRhYmxlIGluIHRh
YmxlczoKICAgICAgICAgICAgIHRhYmxlX3RpdGxlID0gdGFibGUuZmluZFByZXZpb3VzU2libGlu
ZygicCIpLnN0cmluZwogICAgICAgICAgICAgaWYgdGFibGVfdGl0bGUgbm90IGluIGNscy5leHBl
Y3RlZF9rZXlzOgotICAgICAgICAgICAgICAgIHJhaXNlICJVbmhhbmRsZWQgdGl0bGU6ICVzIiAl
IHN0cih0YWJsZV90aXRsZSkKLSAgICAgICAgICAgICMgV2UgbWlnaHQgd2FudCB0byB0cmFuc2xh
dGUgdGFibGUgdGl0bGVzIGludG8gaWRlbnRpZmllcnMgYXQgc29tZSBwb2ludC4KKyAgICAgICAg
ICAgICAgICAjIFRoaXMgRXhjZXB0aW9uIHNob3VsZCBvbmx5IGV2ZXIgYmUgaGl0IGlmIHJ1bi13
ZWJraXQtdGVzdHMgY2hhbmdlcyBpdHMgcmVzdWx0cy5odG1sIGZvcm1hdC4KKyAgICAgICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24oIlVuaGFuZGxlZCB0aXRsZTogJXMiICUgc3RyKHRhYmxlX3Rp
dGxlKSkKKyAgICAgICAgICAgICMgV2UgbWlnaHQgd2FudCB0byB0cmFuc2xhdGUgdGFibGUgdGl0
bGVzIGludG8gaWRlbnRpZmllcnMgYmVmb3JlIHN0b3JpbmcuCiAgICAgICAgICAgICBwYXJzZWRf
cmVzdWx0c1t0YWJsZV90aXRsZV0gPSBbcm93LmZpbmQoImEiKS5zdHJpbmcgZm9yIHJvdyBpbiB0
YWJsZS5maW5kQWxsKCJ0ciIpXQogCiAgICAgICAgIHJldHVybiBwYXJzZWRfcmVzdWx0cwpAQCAt
Mzg0LDcgKzM5Nyw3IEBAIGNsYXNzIEJ1aWxkQm90KG9iamVjdCk6CiAgICAgICAgICAgICByZXR1
cm4gcHJveHkuZ2V0QnVpbGQoYnVpbGRlci5uYW1lKCksIGludChidWlsZF9udW1iZXIpKQogICAg
ICAgICBleGNlcHQgeG1scnBjbGliLkZhdWx0LCBlcnI6CiAgICAgICAgICAgICBidWlsZF91cmwg
PSBCdWlsZC5idWlsZF91cmwoYnVpbGRlciwgYnVpbGRfbnVtYmVyKQotICAgICAgICAgICAgbG9n
KCJFcnJvciBmZXRjaGluZyBkYXRhIGZvciAlcyBidWlsZCAlcyAoJXMpOiAlcyIgJSAoYnVpbGRl
ci5uYW1lKCksIGJ1aWxkX251bWJlciwgYnVpbGRfdXJsLCBlcnIpKQorICAgICAgICAgICAgX2xv
Zy5lcnJvcigiRXJyb3IgZmV0Y2hpbmcgZGF0YSBmb3IgJXMgYnVpbGQgJXMgKCVzKTogJXMiICUg
KGJ1aWxkZXIubmFtZSgpLCBidWlsZF9udW1iZXIsIGJ1aWxkX3VybCwgZXJyKSkKICAgICAgICAg
ICAgIHJldHVybiBOb25lCiAKICAgICBkZWYgX2ZldGNoX29uZV9ib3hfcGVyX2J1aWxkZXIoc2Vs
Zik6CkBAIC00NDMsNyArNDU2LDggQEAgY2xhc3MgQnVpbGRCb3Qob2JqZWN0KToKICAgICAgICAg
ICAgICAgICByZXZpc2lvbl90b19mYWlsaW5nX2JvdHNbcmV2aXNpb25dID0gZmFpbGluZ19ib3Rz
CiAgICAgICAgIHJldHVybiByZXZpc2lvbl90b19mYWlsaW5nX2JvdHMKIAotICAgICMgRklYTUU6
IFRoaXMgaXMgYSBoYWNrIGFyb3VuZCBsYWNrIG9mIEJ1aWxkZXIubGF0ZXN0X2J1aWxkKCkgc3Vw
cG9ydAorICAgICMgVGhpcyBtYWtlcyBmZXdlciByZXF1ZXN0cyB0aGFuIGNhbGxpbmcgQnVpbGRl
ci5sYXRlc3RfYnVpbGQgd291bGQuICBJdCBncmFicyBhbGwgYnVpbGRlcgorICAgICMgc3RhdHVz
ZXMgaW4gb25lIHJlcXVlc3QgdXNpbmcgc2VsZi5idWlsZGVyX3N0YXR1c2VzIChmZXRjaGluZyAv
b25lX2JveF9wZXJfYnVpbGRlciBpbnN0ZWFkIG9mIGJ1aWxkZXIgcGFnZXMpLgogICAgIGRlZiBf
bGF0ZXN0X2J1aWxkc19mcm9tX2J1aWxkZXJzKHNlbGYsIG9ubHlfY29yZV9idWlsZGVycz1UcnVl
KToKICAgICAgICAgYnVpbGRlcl9zdGF0dXNlcyA9IHNlbGYuY29yZV9idWlsZGVyX3N0YXR1c2Vz
KCkgaWYgb25seV9jb3JlX2J1aWxkZXJzIGVsc2Ugc2VsZi5idWlsZGVyX3N0YXR1c2VzKCkKICAg
ICAgICAgcmV0dXJuIFtzZWxmLmJ1aWxkZXJfd2l0aF9uYW1lKHN0YXR1c1sibmFtZSJdKS5idWls
ZChzdGF0dXNbImJ1aWxkX251bWJlciJdKSBmb3Igc3RhdHVzIGluIGJ1aWxkZXJfc3RhdHVzZXNd
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvc3Rh
dHVzc2VydmVyLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3N0
YXR1c3NlcnZlci5weQppbmRleCBjMGMwNzViLi5lODk4N2E5IDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvc3RhdHVzc2VydmVyLnB5CisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNzZXJ2ZXIucHkKQEAg
LTI5LDkgKzI5LDYgQEAKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5uZXR3b3JrdHJhbnNhY3Rp
b24gaW1wb3J0IE5ldHdvcmtUcmFuc2FjdGlvbgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgbG9nCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHku
YXV0b2luc3RhbGxlZC5tZWNoYW5pemUgaW1wb3J0IEJyb3dzZXIKLQotIyBXZWJLaXQgaW5jbHVk
ZXMgYSBidWlsdCBjb3B5IG9mIEJlYXV0aWZ1bFNvdXAgaW4gU2NyaXB0cy93ZWJraXRweS90aGly
ZHBhcnR5Ci0jIHNvIHRoaXMgaW1wb3J0IHNob3VsZCBhbHdheXMgc3VjY2VlZC4KIGZyb20gd2Vi
a2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxTb3VwIGltcG9ydCBCZWF1dGlmdWxTb3VwCiAKIGlt
cG9ydCB1cmxsaWIyCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvcXVlcmllcy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9xdWVyaWVzLnB5CmluZGV4IDcxOTAyOGQuLmQyM2JmMGIgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVzLnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVzLnB5
CkBAIC0zMCwxNSArMzAsMTkgQEAKIAogZnJvbSBvcHRwYXJzZSBpbXBvcnQgbWFrZV9vcHRpb24K
IAotZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuY2hhbmdlbG9nIGltcG9ydCB2aWV3X3Nv
dXJjZV91cmwKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmNvbW1pdGluZm8gaW1wb3J0
IENvbW1pdEluZm8KIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9y
dCBDb21taXR0ZXJMaXN0Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ubG9ndXRpbHMgaW1w
b3J0IGdldF9sb2dnZXIKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWlsZGJvdCBpbXBvcnQg
QnVpbGRCb3QKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS51c2VyIGltcG9ydCBVc2VyCiBm
cm9tIHdlYmtpdHB5LnRvb2wuZ3JhbW1hciBpbXBvcnQgcGx1cmFsaXplCiBmcm9tIHdlYmtpdHB5
LnRvb2wubXVsdGljb21tYW5kdG9vbCBpbXBvcnQgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQK
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1wb3J0IGxv
ZwogCiAKK19sb2cgPSBnZXRfbG9nZ2VyKF9fZmlsZV9fKQorCisKIGNsYXNzIEJ1Z3NUb0NvbW1p
dChBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAgICAgbmFtZSA9ICJidWdzLXRvLWNvbW1p
dCIKICAgICBoZWxwX3RleHQgPSAiTGlzdCBidWdzIGluIHRoZSBjb21taXQtcXVldWUiCkBAIC0x
MjEsMTYgKzEyNSw3IEBAIGNsYXNzIFdoYXRCcm9rZShBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFu
ZCk6CiAgICAgZGVmIF9wcmludF9idWlsZGVyX2xpbmUoc2VsZiwgYnVpbGRlcl9uYW1lLCBtYXhf
bmFtZV93aWR0aCwgc3RhdHVzX21lc3NhZ2UpOgogICAgICAgICBwcmludCAiJXMgOiAlcyIgJSAo
YnVpbGRlcl9uYW1lLmxqdXN0KG1heF9uYW1lX3dpZHRoKSwgc3RhdHVzX21lc3NhZ2UpCiAKLSAg
ICBkZWYgX3ByaW50X2JsYW1lX2luZm9ybWF0aW9uX2Zvcl9jb21taXQoc2VsZiwgY29tbWl0X2lu
Zm8pOgotICAgICAgICBwcmludCAiciVzOiIgJSBjb21taXRfaW5mby5yZXZpc2lvbigpCi0gICAg
ICAgIHByaW50ICIgICVzIiAlIHZpZXdfc291cmNlX3VybChjb21taXRfaW5mby5yZXZpc2lvbigp
KQotICAgICAgICBwcmludCAiICBCdWc6ICVzICglcykiICUgKGNvbW1pdF9pbmZvLmJ1Z19pZCgp
LCBzZWxmLnRvb2wuYnVncy5idWdfdXJsX2Zvcl9idWdfaWQoY29tbWl0X2luZm8uYnVnX2lkKCkp
KQotICAgICAgICBhdXRob3JfbGluZSA9ICJcIiVzXCIgPCVzPiIgJSAoY29tbWl0X2luZm8uYXV0
aG9yX25hbWUoKSwgY29tbWl0X2luZm8uYXV0aG9yX2VtYWlsKCkpCi0gICAgICAgIHByaW50ICIg
IEF1dGhvcjogJXMiICUgKGNvbW1pdF9pbmZvLmF1dGhvcigpIG9yIGF1dGhvcl9saW5lKQotICAg
ICAgICBwcmludCAiICBSZXZpZXdlcjogJXMiICUgKGNvbW1pdF9pbmZvLnJldmlld2VyKCkgb3Ig
Y29tbWl0X2luZm8ucmV2aWV3ZXJfdGV4dCgpKQotICAgICAgICBwcmludCAiICBDb21taXR0ZXI6
ICVzIiAlIChjb21taXRfaW5mby5jb21taXR0ZXIoKSBvciBjb21taXRfaW5mby5jb21taXR0ZXJf
ZW1haWwoKSkKLQotICAgICMgRklYTUU6IFRoaXMgaXMgc2xpZ2h0bHkgZGlmZmVyZW50IGZyb20g
QnVpbGRlci5ibGFtZXdvcnRoeV9yZXZpc2lvbnMKKyAgICAjIEZJWE1FOiBUaGlzIGlzIHNsaWdo
dGx5IGRpZmZlcmVudCBmcm9tIEJ1aWxkZXIuc3VzcGVjdF9yZXZpc2lvbnNfZm9yX2dyZWVuX3Rv
X3JlZF90cmFuc2l0aW9uCiAgICAgIyBkdWUgdG8gbmVlZGluZyB0byBkZXRlY3QgdGhlICJoaXQg
dGhlIGxpbWl0IiBjYXNlIGFuIHByaW50IGEgc3BlY2lhbCBtZXNzYWdlLgogICAgIGRlZiBfcHJp
bnRfYmxhbWVfaW5mb3JtYXRpb25fZm9yX2J1aWxkZXIoc2VsZiwgYnVpbGRlcl9zdGF0dXMsIG5h
bWVfd2lkdGgsIGF2b2lkX2ZsYWtleV90ZXN0cz1UcnVlKToKICAgICAgICAgYnVpbGRlciA9IHNl
bGYudG9vbC5idWlsZGJvdC5idWlsZGVyX3dpdGhfbmFtZShidWlsZGVyX3N0YXR1c1sibmFtZSJd
KQpAQCAtMTUxLDcgKzE0Niw3IEBAIGNsYXNzIFdoYXRCcm9rZShBYnN0cmFjdERlY2xhcmF0aXZl
Q29tbWFuZCk6CiAgICAgICAgIHNlbGYuX3ByaW50X2J1aWxkZXJfbGluZShidWlsZGVyLm5hbWUo
KSwgbmFtZV93aWR0aCwgIkZBSUwgKGJsYW1lLWxpc3Q6ICVzJXMpIiAlIChzdXNwZWN0X3Jldmlz
aW9ucywgZmlyc3RfZmFpbHVyZV9tZXNzYWdlKSkKICAgICAgICAgZm9yIHJldmlzaW9uIGluIHN1
c3BlY3RfcmV2aXNpb25zOgogICAgICAgICAgICAgY29tbWl0X2luZm8gPSBzZWxmLnRvb2wuY2hl
Y2tvdXQoKS5jb21taXRfaW5mb19mb3JfcmV2aXNpb24ocmV2aXNpb24pCi0gICAgICAgICAgICBz
ZWxmLl9wcmludF9ibGFtZV9pbmZvcm1hdGlvbl9mb3JfY29tbWl0KGNvbW1pdF9pbmZvKQorICAg
ICAgICAgICAgcHJpbnQgY29tbWl0X2luZm8uYmxhbWVfc3RyaW5nKHNlbGYudG9vbC5idWdzKQog
CiAgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CiAgICAgICAgIGJ1
aWxkZXJfc3RhdHVzZXMgPSB0b29sLmJ1aWxkYm90LmJ1aWxkZXJfc3RhdHVzZXMoKQpAQCAtMjAw
LDYgKzE5NSw3MSBAQCBjbGFzcyBSZXN1bHRzRm9yKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5k
KToKICAgICAgICAgICAgIHNlbGYuX3ByaW50X2xheW91dF90ZXN0X3Jlc3VsdHMoYnVpbGQubGF5
b3V0X3Rlc3RfcmVzdWx0cygpKQogCiAKK2NsYXNzIEZhaWx1cmVSZWFzb24oQWJzdHJhY3REZWNs
YXJhdGl2ZUNvbW1hbmQpOgorICAgIG5hbWUgPSAiZmFpbHVyZS1yZWFzb24iCisgICAgaGVscF90
ZXh0ID0gIkxpc3RzIHJldmlzaW9ucyB3aGVyZSBpbmRpdmlkdWFsIHRlc3QgZmFpbHVyZXMgc3Rh
cnRlZCBhdCAlcyIgJSBCdWlsZEJvdC5kZWZhdWx0X2hvc3QKKworICAgIGRlZiBfcHJpbnRfYmxh
bWVfaW5mb3JtYXRpb25fZm9yX3RyYW5zaXRpb24oc2VsZiwgZ3JlZW5fYnVpbGQsIHJlZF9idWls
ZCwgZmFpbGluZ190ZXN0cyk6CisgICAgICAgIHN1c3BlY3RfcmV2aXNpb25zID0gZ3JlZW5fYnVp
bGQuYnVpbGRlcigpLnN1c3BlY3RfcmV2aXNpb25zX2Zvcl90cmFuc2l0aW9uKGdyZWVuX2J1aWxk
LCByZWRfYnVpbGQpCisgICAgICAgIHByaW50ICJTVUNDRVNTOiBCdWlsZCAlcyAociVzKSB3YXMg
dGhlIGZpcnN0IHRvIHNob3cgZmFpbHVyZXM6ICVzIiAlIChyZWRfYnVpbGQuX251bWJlciwgcmVk
X2J1aWxkLnJldmlzaW9uKCksIGZhaWxpbmdfdGVzdHMpCisgICAgICAgIHByaW50ICJTdXNwZWN0
IHJldmlzaW9uczoiCisgICAgICAgIGZvciByZXZpc2lvbiBpbiBzdXNwZWN0X3JldmlzaW9uczoK
KyAgICAgICAgICAgIGNvbW1pdF9pbmZvID0gc2VsZi50b29sLmNoZWNrb3V0KCkuY29tbWl0X2lu
Zm9fZm9yX3JldmlzaW9uKHJldmlzaW9uKQorICAgICAgICAgICAgcHJpbnQgY29tbWl0X2luZm8u
YmxhbWVfc3RyaW5nKHNlbGYudG9vbC5idWdzKQorCisgICAgZGVmIF9leHBsYWluX2ZhaWx1cmVz
X2Zvcl9idWlsZGVyKHNlbGYsIGJ1aWxkZXIsIHN0YXJ0X3JldmlzaW9uLCBzZWFyY2hfbGltaXQ9
MTAwMCk6CisgICAgICAgIHByaW50ICJFeGFtaW5pbmcgZmFpbHVyZXMgZm9yIFwiJXNcIiwgc3Rh
cnRpbmcgYXQgciVzIiAlIChidWlsZGVyLm5hbWUoKSwgc3RhcnRfcmV2aXNpb24pCisgICAgICAg
IHJldmlzaW9uX3RvX3Rlc3QgPSBzdGFydF9yZXZpc2lvbgorICAgICAgICBidWlsZCA9IGJ1aWxk
ZXIuYnVpbGRfZm9yX3JldmlzaW9uKHJldmlzaW9uX3RvX3Rlc3QsIGFsbG93X2ZhaWxlZF9sb29r
dXBzPVRydWUpCisgICAgICAgIHJlc3VsdHNfdG9fZXhwbGFpbiA9IHNldChidWlsZC5sYXlvdXRf
dGVzdF9yZXN1bHRzKCkuZmFpbGluZ190ZXN0cygpKQorICAgICAgICBsYXN0X2J1aWxkX3dpdGhf
cmVzdWx0cyA9IGJ1aWxkCisgICAgICAgIHByaW50ICJTdGFydGluZyBhdCAlcyIgJSByZXZpc2lv
bl90b190ZXN0CisgICAgICAgIHdoaWxlIHJlc3VsdHNfdG9fZXhwbGFpbiBhbmQgcmV2aXNpb25f
dG9fdGVzdCA+IHN0YXJ0X3JldmlzaW9uIC0gc2VhcmNoX2xpbWl0OgorICAgICAgICAgICAgcmV2
aXNpb25fdG9fdGVzdCAtPSAxCisgICAgICAgICAgICBuZXdfYnVpbGQgPSBidWlsZGVyLmJ1aWxk
X2Zvcl9yZXZpc2lvbihyZXZpc2lvbl90b190ZXN0LCBhbGxvd19mYWlsZWRfbG9va3Vwcz1UcnVl
KQorICAgICAgICAgICAgaWYgbm90IG5ld19idWlsZDoKKyAgICAgICAgICAgICAgICBfbG9nLmlu
Zm8oIk5vIGJ1aWxkIGZvciAlcyIgJSByZXZpc2lvbl90b190ZXN0KQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisgICAgICAgICAgICBidWlsZCA9IG5ld19idWlsZAorICAgICAgICAgICAgbGF0
ZXN0X3Jlc3VsdHMgPSBidWlsZC5sYXlvdXRfdGVzdF9yZXN1bHRzKCkKKyAgICAgICAgICAgIGlm
IG5vdCBsYXRlc3RfcmVzdWx0czoKKyAgICAgICAgICAgICAgICBfbG9nLmluZm8oIk5vIHJlc3Vs
dHMgYnVpbGQgJXMgKHIlcykiICUgKGJ1aWxkLl9udW1iZXIsIGJ1aWxkLnJldmlzaW9uKCkpKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmYWlsdXJlcyA9IHNldChsYXRl
c3RfcmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkpCisgICAgICAgICAgICBpZiBsZW4oZmFpbHVyZXMp
ID49IDIwOgorICAgICAgICAgICAgICAgICMgRklYTUU6IFdlIG1heSBuZWVkIHRvIG1vdmUgdGhp
cyBsb2dpYyBpbnRvIHRoZSBMYXlvdXRUZXN0UmVzdWx0cyBjbGFzcy4KKyAgICAgICAgICAgICAg
ICAjIFRoZSBidWlsZGJvdCBzdG9wcyBydW5zIGFmdGVyIDIwIGZhaWx1cmVzIHNvIHdlIGRvbid0
IGhhdmUgZnVsbCByZXN1bHRzIHRvIHdvcmsgd2l0aCBoZXJlLgorICAgICAgICAgICAgICAgIF9s
b2cuaW5mbygiVG9vIG1hbnkgZmFpbHVyZXMgaW4gYnVpbGQgJXMgKHIlcyksIGlnbm9yaW5nLiIg
JSAoYnVpbGQuX251bWJlciwgYnVpbGQucmV2aXNpb24oKSkpCisgICAgICAgICAgICAgICAgY29u
dGludWUKKyAgICAgICAgICAgIGZpeGVkX3Jlc3VsdHMgPSByZXN1bHRzX3RvX2V4cGxhaW4gLSBm
YWlsdXJlcworICAgICAgICAgICAgaWYgbm90IGZpeGVkX3Jlc3VsdHM6CisgICAgICAgICAgICAg
ICAgX2xvZy5pbmZvKCJObyBjaGFuZ2UgaW4gYnVpbGQgJXMgKHIlcyksICVzIHVuZXhwbGFpbmVk
IGZhaWx1cmVzICglcyBpbiB0aGlzIGJ1aWxkKSIgJSAoYnVpbGQuX251bWJlciwgYnVpbGQucmV2
aXNpb24oKSwgbGVuKHJlc3VsdHNfdG9fZXhwbGFpbiksIGxlbihmYWlsdXJlcykpKQorICAgICAg
ICAgICAgICAgIGxhc3RfYnVpbGRfd2l0aF9yZXN1bHRzID0gYnVpbGQKKyAgICAgICAgICAgICAg
ICBjb250aW51ZQorICAgICAgICAgICAgc2VsZi5fcHJpbnRfYmxhbWVfaW5mb3JtYXRpb25fZm9y
X3RyYW5zaXRpb24oYnVpbGQsIGxhc3RfYnVpbGRfd2l0aF9yZXN1bHRzLCBmaXhlZF9yZXN1bHRz
KQorICAgICAgICAgICAgbGFzdF9idWlsZF93aXRoX3Jlc3VsdHMgPSBidWlsZAorICAgICAgICAg
ICAgcmVzdWx0c190b19leHBsYWluIC09IGZpeGVkX3Jlc3VsdHMKKyAgICAgICAgaWYgcmVzdWx0
c190b19leHBsYWluOgorICAgICAgICAgICAgcHJpbnQgIkZhaWxlZCB0byBleHBsYWluIGZhaWx1
cmVzOiAlcyIgJSByZXN1bHRzX3RvX2V4cGxhaW4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IHByaW50ICJFeHBsYWluZWQgYWxsIHJlc3VsdHMgZm9yICVzIiAlIGJ1aWxkZXIubmFtZSgpCisK
KyAgICBkZWYgX2J1aWxkZXJfdG9fZXhwbGFpbihzZWxmKToKKyAgICAgICAgYnVpbGRlcl9zdGF0
dXNlcyA9IHNlbGYudG9vbC5idWlsZGJvdC5idWlsZGVyX3N0YXR1c2VzKCkKKyAgICAgICAgcmVk
X3N0YXR1c2VzID0gW3N0YXR1cyBmb3Igc3RhdHVzIGluIGJ1aWxkZXJfc3RhdHVzZXMgaWYgbm90
IHN0YXR1c1siaXNfZ3JlZW4iXV0KKyAgICAgICAgcHJpbnQgIiVzIGZhaWxpbmciICUgKHBsdXJh
bGl6ZSgiYnVpbGRlciIsIGxlbihyZWRfc3RhdHVzZXMpKSkKKyAgICAgICAgYnVpbGRlcl9jaG9p
Y2VzID0gW3N0YXR1c1sibmFtZSJdIGZvciBzdGF0dXMgaW4gcmVkX3N0YXR1c2VzXQorICAgICAg
ICAjIFdlIGNvdWxkIG9mZmVyIGFuICJBbGwiIGNob2ljZSBoZXJlLgorICAgICAgICBjaG9zZW5f
bmFtZSA9IFVzZXIucHJvbXB0X3dpdGhfbGlzdCgiV2hpY2ggYnVpbGRlciB0byBkaWFnbm9zZToi
LCBidWlsZGVyX2Nob2ljZXMpCisgICAgICAgICMgRklYTUU6IHByb21wdF93aXRoX2xpc3Qgc2hv
dWxkIHJlYWxseSB0YWtlIGEgc2V0IG9mIG9iamVjdHMgYW5kIGEgc2V0IG9mIG5hbWVzIGFuZCB0
aGVuIHJldHVybiB0aGUgb2JqZWN0LgorICAgICAgICBmb3Igc3RhdHVzIGluIHJlZF9zdGF0dXNl
czoKKyAgICAgICAgICAgIGlmIHN0YXR1c1sibmFtZSJdID09IGNob3Nlbl9uYW1lOgorICAgICAg
ICAgICAgICAgIHJldHVybiAoc2VsZi50b29sLmJ1aWxkYm90LmJ1aWxkZXJfd2l0aF9uYW1lKGNo
b3Nlbl9uYW1lKSwgc3RhdHVzWyJidWlsdF9yZXZpc2lvbiJdKQorCisgICAgZGVmIGV4ZWN1dGUo
c2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CisgICAgICAgIChidWlsZGVyLCBzdGFydF9yZXZp
c2lvbikgPSBzZWxmLl9idWlsZGVyX3RvX2V4cGxhaW4oKQorICAgICAgICBzZWxmLl9leHBsYWlu
X2ZhaWx1cmVzX2Zvcl9idWlsZGVyKGJ1aWxkZXIsIHN0YXJ0X3JldmlzaW9uPXN0YXJ0X3Jldmlz
aW9uKQorCiBjbGFzcyBUcmVlU3RhdHVzKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKICAg
ICBuYW1lID0gInRyZWUtc3RhdHVzIgogICAgIGhlbHBfdGV4dCA9ICJQcmludCB0aGUgc3RhdHVz
IG9mIHRoZSAlcyBidWlsZGJvdHMiICUgQnVpbGRCb3QuZGVmYXVsdF9ob3N0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52704</attachid>
            <date>2010-04-06 23:29:00 -0700</date>
            <delta_ts>2010-04-06 23:37:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36911-20100406232858.patch</filename>
            <type>text/plain</type>
            <size>17280</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBiMzc0MGUyLi5jMTgxMTIxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTAtMDMt
MzEgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB3ZWJraXQtcGF0Y2ggY29tbWFuZCB0byBj
cmF3bCBidWlsZGJvdCBoaXN0b3J5IGFuZCBmaW5kIHdoZW4gdGVzdHMKKyAgICAgICAgc3RhcnRl
ZCB0byBmYWlsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzY5MTEKKworICAgICAgICBUaGlzIGlzIGEgdmVyeSBiYXJlLWJvbmVzIGltcGxlbWVudGF0
aW9uLCB3aGljaCB3b3JrcywgYnV0IGlzbid0IHByZXR0eS4KKyAgICAgICAgV2Ugd2lsbCBuZWVk
IGZ1cnRoZXIgcmUtZmFjdG9yaW5nIGFuZCBpbXByb3ZlbWVudCB0byB0aGlzIGNvZGUsIGJ1dAor
ICAgICAgICBhZnRlciBsb25nIGRpc2N1c3Npb25zIHdpdGggQWRhbSwgSSB0aGluayBpdCdzIGJl
c3QgdGhhdCB3ZSBsYW5kIHRoaXMKKyAgICAgICAgYW5kIGl0ZXJhdGUgZnJvbSB0aGVyZS4KKwor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC5weToKKyAgICAg
ICAgIC0gQWRkIHJldmlzaW9uX2J1aWxkX3BhaXJzX3dpdGhfcmVzdWx0cyBmb3IgY2xlYW5lciBj
b2RlIGFuZCBwb3NzaWJsZQorICAgICAgICAgICBvcHRpbWl6YXRpb24gb2YgdGhpcyBjb21tYW5k
LgorICAgICAgICAgLSBSZXR1cm4gTm9uZSBpZiBhIGJ1aWxkIG51bWJlciBjYW4ndCBiZSBmb3Vu
ZCBmb3IgYSByZXZpc2lvbiBpbgorICAgICAgICAgICBidWlsZF9mb3JfcmV2aXNpb24KKyAgICAg
ICAgIC0gU2VwYXJhdGUgb3V0IHN1c3BlY3RfcmV2aXNpb25zX2Zvcl90cmFuc2l0aW9uIGZvciBy
ZS11c2UgYnkKKyAgICAgICAgICAgRmFpbHVyZVJlYXNvbgorICAgICAgICAgLSBBZGQgTGF5b3V0
VGVzdFJlc3VsdHMuZmFpbGluZ190ZXN0cygpIGFuZCBtYWtlIG91ciBwYXJzaW5nIGNvZGUKKyAg
ICAgICAgICAgZXhwbGljdCBhYm91dCB3aGF0IHRhYmxlcyBpdCBhY2NlcHRzLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVzLnB5OgorICAgICAgICAgLSBN
b3ZlIF9wcmludF9ibGFtZV9pbmZvcm1hdGlvbl9mb3JfY29tbWl0IG91dCBvZiBXaGF0QnJva2Ug
Zm9yIHJlLXVzZQorICAgICAgICAgICBieSBGYWlsdXJlUmVhc29uLgorICAgICAgICAgLSBBZGQg
RmFpbHVyZVJlYXNvbiBjb21tYW5kIHdoaWNoIGNhbiBjcmF3bCBhIGdpdmVuIGJ1aWxkZXIgYW5k
IGV4cGxhaW4KKyAgICAgICAgICAgd2h5IGl0IGlzIGN1cnJlbnRseSByZWQgb24gYSBwZXItdGVz
dCBiYXNpcy4KKwogMjAxMC0wNC0wNiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY29tbWl0aW5mby5weSBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NvbW1pdGluZm8u
cHkKaW5kZXggYzY4MjIyMS4uN2MzMzE1ZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY29tbWl0aW5mby5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jb21taXRpbmZvLnB5CkBAIC0zMCw2
ICszMCw3IEBACiAKIGltcG9ydCBTdHJpbmdJTwogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVj
a291dC5jaGFuZ2Vsb2cgaW1wb3J0IHZpZXdfc291cmNlX3VybAogZnJvbSB3ZWJraXRweS5jb21t
b24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlckxpc3QKIAogCkBAIC04MSwzICs4
MiwxNCBAQCBjbGFzcyBDb21taXRJbmZvKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLnJldmll
d2VyKCksCiAgICAgICAgIF0KICAgICAgICAgcmV0dXJuIHNldChbcGFydHkgZm9yIHBhcnR5IGlu
IHJlc3BvbnNpYmxlX3BhcnRpZXMgaWYgcGFydHldKSAjIEZpbHRlciBvdXQgTm9uZQorCisgICAg
IyBGSVhNRTogSXQgaXMgc2xpZ2h0bHkgbGFtZSB0aGF0IHRoaXMgInZpZXciIG1ldGhvZCBpcyBv
biB0aGlzICJtb2RlbCIgY2xhc3MgKGluIE1WQyB0ZXJtcykKKyAgICBkZWYgYmxhbWVfc3RyaW5n
KHNlbGYsIGJ1Z3MpOgorICAgICAgICBzdHJpbmcgPSAiciVzOlxuIiAlIHNlbGYucmV2aXNpb24o
KQorICAgICAgICBzdHJpbmcgKz0gIiAgJXNcbiIgJSB2aWV3X3NvdXJjZV91cmwoc2VsZi5yZXZp
c2lvbigpKQorICAgICAgICBzdHJpbmcgKz0gIiAgQnVnOiAlcyAoJXMpXG4iICUgKHNlbGYuYnVn
X2lkKCksIGJ1Z3MuYnVnX3VybF9mb3JfYnVnX2lkKHNlbGYuYnVnX2lkKCkpKQorICAgICAgICBh
dXRob3JfbGluZSA9ICJcIiVzXCIgPCVzPiIgJSAoc2VsZi5hdXRob3JfbmFtZSgpLCBzZWxmLmF1
dGhvcl9lbWFpbCgpKQorICAgICAgICBzdHJpbmcgKz0gIiAgQXV0aG9yOiAlc1xuIiAlIChzZWxm
LmF1dGhvcigpIG9yIGF1dGhvcl9saW5lKQorICAgICAgICBzdHJpbmcgKz0gIiAgUmV2aWV3ZXI6
ICVzXG4iICUgKHNlbGYucmV2aWV3ZXIoKSBvciBzZWxmLnJldmlld2VyX3RleHQoKSkKKyAgICAg
ICAgc3RyaW5nICs9ICIgIENvbW1pdHRlcjogJXMiICUgc2VsZi5jb21taXR0ZXIoKQorICAgICAg
ICByZXR1cm4gc3RyaW5nCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvYnVnemlsbGEucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9uZXQvYnVnemlsbGEucHkKaW5kZXggMTk1MWM2OC4uYmIyMmQxNCAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhLnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS5weQpAQCAt
MzYsMjAgKzM2LDE1IEBAIGltcG9ydCBzdWJwcm9jZXNzCiAKIGZyb20gZGF0ZXRpbWUgaW1wb3J0
IGRhdGV0aW1lICMgdXNlZCBpbiB0aW1lc3RhbXAoKQogCi0jIEltcG9ydCBXZWJLaXQtc3BlY2lm
aWMgbW9kdWxlcy4KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dp
bmcgaW1wb3J0IGVycm9yLCBsb2cKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZyBpbXBvcnQg
Y29tbWl0dGVycwogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmNyZWRlbnRpYWxzIGltcG9ydCBD
cmVkZW50aWFscwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm9zcGF0aCBpbXBvcnQgcmVs
cGF0aAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVzZXIgaW1wb3J0IFVzZXIKIGZyb20g
d2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLm1lY2hhbml6ZSBpbXBvcnQgQnJvd3Nl
cgotCi0jIFdlYktpdCBpbmNsdWRlcyBhIGJ1aWx0IGNvcHkgb2YgQmVhdXRpZnVsU291cCBpbiBT
Y3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkKLSMgc28gdGhpcyBpbXBvcnQgc2hvdWxkIGFsd2F5
cyBzdWNjZWVkLgogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0
IEJlYXV0aWZ1bFNvdXAsIFNvdXBTdHJhaW5lcgogCiAKLQogZGVmIHBhcnNlX2J1Z19pZChtZXNz
YWdlKToKICAgICBpZiBub3QgbWVzc2FnZToKICAgICAgICAgcmV0dXJuIE5vbmUKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC5weSBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC5weQppbmRl
eCA1MGU5NmE0Li4yOTI0YjE0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9uZXQvYnVpbGRib3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L2J1aWxkYm90LnB5CkBAIC0zNCwxNSArMzQsMTQgQEAgaW1wb3J0IHVy
bGxpYgogaW1wb3J0IHVybGxpYjIKIGltcG9ydCB4bWxycGNsaWIKIAotIyBJbXBvcnQgV2ViS2l0
LXNwZWNpZmljIG1vZHVsZXMuCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRl
ZF9sb2dnaW5nIGltcG9ydCBsb2cKLQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmxvZ3V0
aWxzIGltcG9ydCBnZXRfbG9nZ2VyCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3Rh
bGxlZC5tZWNoYW5pemUgaW1wb3J0IEJyb3dzZXIKLSMgV2ViS2l0IGluY2x1ZGVzIGEgYnVpbHQg
Y29weSBvZiBCZWF1dGlmdWxTb3VwIGluIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eQotIyBz
byB0aGlzIGltcG9ydCBzaG91bGQgYWx3YXlzIHN1Y2NlZWQuCiBmcm9tIHdlYmtpdHB5LnRoaXJk
cGFydHkuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cAogCiAKK19sb2cgPSBnZXRf
bG9nZ2VyKF9fZmlsZV9fKQorCisKIGNsYXNzIEJ1aWxkZXIob2JqZWN0KToKICAgICBkZWYgX19p
bml0X18oc2VsZiwgbmFtZSwgYnVpbGRib3QpOgogICAgICAgICBzZWxmLl9uYW1lID0gdW5pY29k
ZShuYW1lKQpAQCAtMTIwLDEyICsxMTksMjAgQEAgY2xhc3MgQnVpbGRlcihvYmplY3QpOgogICAg
ICAgICAjIFRoaXMgYXNzdW1lcyB0aGVyZSB3YXMgb25seSBvbmUgYnVpbGQgcGVyIHJldmlzaW9u
LCB3aGljaCBpcyBmYWxzZSBidXQgd2UgZG9uJ3QgY2FyZSBmb3Igbm93LgogICAgICAgICByZXR1
cm4gZGljdChbc2VsZi5fcmV2aXNpb25fYW5kX2J1aWxkX2Zvcl9maWxlbmFtZShmaWxlX2luZm9b
ImZpbGVuYW1lIl0pIGZvciBmaWxlX2luZm8gaW4gcmVzdWx0X2ZpbGVzXSkKIAotICAgICMgVGhp
cyBhc3N1bWVzIHRoZXJlIGNhbiBiZSBvbmx5IG9uZSBidWlsZCBwZXIgcmV2aXNpb24sIHdoaWNo
IGlzIGZhbHNlLCBidXQgd2UgZG9uJ3QgY2FyZSBmb3Igbm93LgotICAgIGRlZiBidWlsZF9mb3Jf
cmV2aXNpb24oc2VsZiwgcmV2aXNpb24sIGFsbG93X2ZhaWxlZF9sb29rdXBzPUZhbHNlKToKKyAg
ICBkZWYgX3JldmlzaW9uX3RvX2J1aWxkX21hcChzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYu
X3JldmlzaW9uX3RvX2J1aWxkX251bWJlcjoKICAgICAgICAgICAgIHNlbGYuX3JldmlzaW9uX3Rv
X2J1aWxkX251bWJlciA9IHNlbGYuX2ZldGNoX3JldmlzaW9uX3RvX2J1aWxkX21hcCgpCisgICAg
ICAgIHJldHVybiBzZWxmLl9yZXZpc2lvbl90b19idWlsZF9udW1iZXIKKworICAgIGRlZiByZXZp
c2lvbl9idWlsZF9wYWlyc193aXRoX3Jlc3VsdHMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxm
Ll9yZXZpc2lvbl90b19idWlsZF9tYXAoKS5pdGVtcygpCisKKyAgICAjIFRoaXMgYXNzdW1lcyB0
aGVyZSBjYW4gYmUgb25seSBvbmUgYnVpbGQgcGVyIHJldmlzaW9uLCB3aGljaCBpcyBmYWxzZSwg
YnV0IHdlIGRvbid0IGNhcmUgZm9yIG5vdy4KKyAgICBkZWYgYnVpbGRfZm9yX3JldmlzaW9uKHNl
bGYsIHJldmlzaW9uLCBhbGxvd19mYWlsZWRfbG9va3Vwcz1GYWxzZSk6CiAgICAgICAgICMgTk9U
RTogVGhpcyBsb29rdXAgd2lsbCBmYWlsIGlmIHRoYXQgZXhhY3QgcmV2aXNpb24gd2FzIG5ldmVy
IGJ1aWx0LgotICAgICAgICBidWlsZF9udW1iZXIgPSBzZWxmLl9yZXZpc2lvbl90b19idWlsZF9u
dW1iZXIuZ2V0KGludChyZXZpc2lvbikpCisgICAgICAgIGJ1aWxkX251bWJlciA9IHNlbGYuX3Jl
dmlzaW9uX3RvX2J1aWxkX21hcCgpLmdldChpbnQocmV2aXNpb24pKQorICAgICAgICBpZiBub3Qg
YnVpbGRfbnVtYmVyOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgYnVpbGQgPSBz
ZWxmLmJ1aWxkKGJ1aWxkX251bWJlcikKICAgICAgICAgaWYgbm90IGJ1aWxkIGFuZCBhbGxvd19m
YWlsZWRfbG9va3VwczoKICAgICAgICAgICAgICMgQnVpbGRzIGZvciBvbGQgcmV2aXNpb25zIHdp
dGggZmFpbCB0byBsb29rdXAgdmlhIGJ1aWxkYm90J3MgeG1scnBjIGFwaS4KQEAgLTE3Miw2ICsx
NzksMTQgQEAgY2xhc3MgQnVpbGRlcihvYmplY3QpOgogICAgICAgICAjIHdpdGggcmVkIGJ1aWxk
LCBzbyB3ZSd2ZSBmb3VuZCBvdXIgZmFpbHVyZSB0cmFuc2l0aW9uLgogICAgICAgICByZXR1cm4g
KGN1cnJlbnRfYnVpbGQsIGJ1aWxkX2FmdGVyX2N1cnJlbnRfYnVpbGQpCiAKKyAgICAjIEZJWE1F
OiBUaGlzIGxpa2VseSBkb2VzIG5vdCBiZWxvbmcgb24gQnVpbGRlcgorICAgIGRlZiBzdXNwZWN0
X3JldmlzaW9uc19mb3JfdHJhbnNpdGlvbihzZWxmLCBsYXN0X2dvb2RfYnVpbGQsIGZpcnN0X2Jh
ZF9idWlsZCk6CisgICAgICAgIHN1c3BlY3RfcmV2aXNpb25zID0gcmFuZ2UoZmlyc3RfYmFkX2J1
aWxkLnJldmlzaW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9n
b29kX2J1aWxkLnJldmlzaW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LTEpCisgICAgICAgIHN1c3BlY3RfcmV2aXNpb25zLnJldmVyc2UoKQorICAgICAgICByZXR1cm4g
c3VzcGVjdF9yZXZpc2lvbnMKKwogICAgIGRlZiBibGFtZXdvcnRoeV9yZXZpc2lvbnMoc2VsZiwg
cmVkX2J1aWxkX251bWJlciwgbG9va19iYWNrX2xpbWl0PTMwLCBhdm9pZF9mbGFrZXlfdGVzdHM9
VHJ1ZSk6CiAgICAgICAgIHJlZF9idWlsZCA9IHNlbGYuYnVpbGQocmVkX2J1aWxkX251bWJlcikK
ICAgICAgICAgKGxhc3RfZ29vZF9idWlsZCwgZmlyc3RfYmFkX2J1aWxkKSA9IFwKQEAgLTE4Miwx
MyArMTk3LDEwIEBAIGNsYXNzIEJ1aWxkZXIob2JqZWN0KToKICAgICAgICAgIyBzdXNwZWN0IGEg
cmVhbCBmYWlsdXJlIHRyYW5zaXRpb24uCiAgICAgICAgIGlmIGF2b2lkX2ZsYWtleV90ZXN0cyBh
bmQgZmlyc3RfYmFkX2J1aWxkID09IHJlZF9idWlsZDoKICAgICAgICAgICAgIHJldHVybiBbXQot
ICAgICAgICBzdXNwZWN0X3JldmlzaW9ucyA9IHJhbmdlKGZpcnN0X2JhZF9idWlsZC5yZXZpc2lv
bigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfZ29vZF9idWlsZC5y
ZXZpc2lvbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xKQotICAgICAg
ICBzdXNwZWN0X3JldmlzaW9ucy5yZXZlcnNlKCkKLSAgICAgICAgcmV0dXJuIHN1c3BlY3RfcmV2
aXNpb25zCisgICAgICAgIHJldHVybiBzZWxmLnN1c3BlY3RfcmV2aXNpb25zX2Zvcl90cmFuc2l0
aW9uKGxhc3RfZ29vZF9idWlsZCwgZmlyc3RfYmFkX2J1aWxkKQogCiAKKyMgRklYTUU6IFRoaXMg
c2hvdWxkIGJlIHVuaWZpZWQgd2l0aCBhbGwgdGhlIGxheW91dCB0ZXN0IHJlc3VsdHMgY29kZSBp
biB0aGUgbGF5b3V0X3Rlc3RzIHBhY2thZ2UKIGNsYXNzIExheW91dFRlc3RSZXN1bHRzKG9iamVj
dCk6CiAgICAgc3RkZXJyX2tleSA9IHUnVGVzdHMgdGhhdCBoYWQgc3RkZXJyIG91dHB1dDonCiAg
ICAgZmFpbF9rZXkgPSB1J1Rlc3RzIHdoZXJlIHJlc3VsdHMgZGlkIG5vdCBtYXRjaCBleHBlY3Rl
ZCByZXN1bHRzOicKQEAgLTIxMSw4ICsyMjMsOSBAQCBjbGFzcyBMYXlvdXRUZXN0UmVzdWx0cyhv
YmplY3QpOgogICAgICAgICBmb3IgdGFibGUgaW4gdGFibGVzOgogICAgICAgICAgICAgdGFibGVf
dGl0bGUgPSB0YWJsZS5maW5kUHJldmlvdXNTaWJsaW5nKCJwIikuc3RyaW5nCiAgICAgICAgICAg
ICBpZiB0YWJsZV90aXRsZSBub3QgaW4gY2xzLmV4cGVjdGVkX2tleXM6Ci0gICAgICAgICAgICAg
ICAgcmFpc2UgIlVuaGFuZGxlZCB0aXRsZTogJXMiICUgc3RyKHRhYmxlX3RpdGxlKQotICAgICAg
ICAgICAgIyBXZSBtaWdodCB3YW50IHRvIHRyYW5zbGF0ZSB0YWJsZSB0aXRsZXMgaW50byBpZGVu
dGlmaWVycyBhdCBzb21lIHBvaW50LgorICAgICAgICAgICAgICAgICMgVGhpcyBFeGNlcHRpb24g
c2hvdWxkIG9ubHkgZXZlciBiZSBoaXQgaWYgcnVuLXdlYmtpdC10ZXN0cyBjaGFuZ2VzIGl0cyBy
ZXN1bHRzLmh0bWwgZm9ybWF0LgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVW5o
YW5kbGVkIHRpdGxlOiAlcyIgJSBzdHIodGFibGVfdGl0bGUpKQorICAgICAgICAgICAgIyBXZSBt
aWdodCB3YW50IHRvIHRyYW5zbGF0ZSB0YWJsZSB0aXRsZXMgaW50byBpZGVudGlmaWVycyBiZWZv
cmUgc3RvcmluZy4KICAgICAgICAgICAgIHBhcnNlZF9yZXN1bHRzW3RhYmxlX3RpdGxlXSA9IFty
b3cuZmluZCgiYSIpLnN0cmluZyBmb3Igcm93IGluIHRhYmxlLmZpbmRBbGwoInRyIildCiAKICAg
ICAgICAgcmV0dXJuIHBhcnNlZF9yZXN1bHRzCkBAIC0zODQsNyArMzk3LDcgQEAgY2xhc3MgQnVp
bGRCb3Qob2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBwcm94eS5nZXRCdWlsZChidWlsZGVy
Lm5hbWUoKSwgaW50KGJ1aWxkX251bWJlcikpCiAgICAgICAgIGV4Y2VwdCB4bWxycGNsaWIuRmF1
bHQsIGVycjoKICAgICAgICAgICAgIGJ1aWxkX3VybCA9IEJ1aWxkLmJ1aWxkX3VybChidWlsZGVy
LCBidWlsZF9udW1iZXIpCi0gICAgICAgICAgICBsb2coIkVycm9yIGZldGNoaW5nIGRhdGEgZm9y
ICVzIGJ1aWxkICVzICglcyk6ICVzIiAlIChidWlsZGVyLm5hbWUoKSwgYnVpbGRfbnVtYmVyLCBi
dWlsZF91cmwsIGVycikpCisgICAgICAgICAgICBfbG9nLmVycm9yKCJFcnJvciBmZXRjaGluZyBk
YXRhIGZvciAlcyBidWlsZCAlcyAoJXMpOiAlcyIgJSAoYnVpbGRlci5uYW1lKCksIGJ1aWxkX251
bWJlciwgYnVpbGRfdXJsLCBlcnIpKQogICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRl
ZiBfZmV0Y2hfb25lX2JveF9wZXJfYnVpbGRlcihzZWxmKToKQEAgLTQ0Myw3ICs0NTYsOCBAQCBj
bGFzcyBCdWlsZEJvdChvYmplY3QpOgogICAgICAgICAgICAgICAgIHJldmlzaW9uX3RvX2ZhaWxp
bmdfYm90c1tyZXZpc2lvbl0gPSBmYWlsaW5nX2JvdHMKICAgICAgICAgcmV0dXJuIHJldmlzaW9u
X3RvX2ZhaWxpbmdfYm90cwogCi0gICAgIyBGSVhNRTogVGhpcyBpcyBhIGhhY2sgYXJvdW5kIGxh
Y2sgb2YgQnVpbGRlci5sYXRlc3RfYnVpbGQoKSBzdXBwb3J0CisgICAgIyBUaGlzIG1ha2VzIGZl
d2VyIHJlcXVlc3RzIHRoYW4gY2FsbGluZyBCdWlsZGVyLmxhdGVzdF9idWlsZCB3b3VsZC4gIEl0
IGdyYWJzIGFsbCBidWlsZGVyCisgICAgIyBzdGF0dXNlcyBpbiBvbmUgcmVxdWVzdCB1c2luZyBz
ZWxmLmJ1aWxkZXJfc3RhdHVzZXMgKGZldGNoaW5nIC9vbmVfYm94X3Blcl9idWlsZGVyIGluc3Rl
YWQgb2YgYnVpbGRlciBwYWdlcykuCiAgICAgZGVmIF9sYXRlc3RfYnVpbGRzX2Zyb21fYnVpbGRl
cnMoc2VsZiwgb25seV9jb3JlX2J1aWxkZXJzPVRydWUpOgogICAgICAgICBidWlsZGVyX3N0YXR1
c2VzID0gc2VsZi5jb3JlX2J1aWxkZXJfc3RhdHVzZXMoKSBpZiBvbmx5X2NvcmVfYnVpbGRlcnMg
ZWxzZSBzZWxmLmJ1aWxkZXJfc3RhdHVzZXMoKQogICAgICAgICByZXR1cm4gW3NlbGYuYnVpbGRl
cl93aXRoX25hbWUoc3RhdHVzWyJuYW1lIl0pLmJ1aWxkKHN0YXR1c1siYnVpbGRfbnVtYmVyIl0p
IGZvciBzdGF0dXMgaW4gYnVpbGRlcl9zdGF0dXNlc10KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNzZXJ2ZXIucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvc3RhdHVzc2VydmVyLnB5CmluZGV4IGMwYzA3
NWIuLmU4OTg3YTkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9zdGF0dXNzZXJ2ZXIucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L3N0YXR1c3NlcnZlci5weQpAQCAtMjksOSArMjksNiBAQAogZnJvbSB3ZWJr
aXRweS5jb21tb24ubmV0Lm5ldHdvcmt0cmFuc2FjdGlvbiBpbXBvcnQgTmV0d29ya1RyYW5zYWN0
aW9uCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGltcG9y
dCBsb2cKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLm1lY2hhbml6ZSBp
bXBvcnQgQnJvd3NlcgotCi0jIFdlYktpdCBpbmNsdWRlcyBhIGJ1aWx0IGNvcHkgb2YgQmVhdXRp
ZnVsU291cCBpbiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkKLSMgc28gdGhpcyBpbXBvcnQg
c2hvdWxkIGFsd2F5cyBzdWNjZWVkLgogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1
bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAKIAogaW1wb3J0IHVybGxpYjIKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWVyaWVzLnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXJpZXMucHkKaW5k
ZXggNzE5MDI4ZC4uYWJlZjQ2ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL3F1ZXJpZXMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXJpZXMucHkKQEAgLTMwLDEwICszMCwxMCBAQAogCiBm
cm9tIG9wdHBhcnNlIGltcG9ydCBtYWtlX29wdGlvbgogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5j
aGVja291dC5jaGFuZ2Vsb2cgaW1wb3J0IHZpZXdfc291cmNlX3VybAogZnJvbSB3ZWJraXRweS5j
b21tb24uY2hlY2tvdXQuY29tbWl0aW5mbyBpbXBvcnQgQ29tbWl0SW5mbwogZnJvbSB3ZWJraXRw
eS5jb21tb24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlckxpc3QKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLm5ldC5idWlsZGJvdCBpbXBvcnQgQnVpbGRCb3QKK2Zyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS51c2VyIGltcG9ydCBVc2VyCiBmcm9tIHdlYmtpdHB5LnRvb2wuZ3JhbW1h
ciBpbXBvcnQgcGx1cmFsaXplCiBmcm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21tYW5kdG9vbCBp
bXBvcnQgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1wb3J0IGxvZwpAQCAtMTIxLDE2ICsxMjEsNyBAQCBj
bGFzcyBXaGF0QnJva2UoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogICAgIGRlZiBfcHJp
bnRfYnVpbGRlcl9saW5lKHNlbGYsIGJ1aWxkZXJfbmFtZSwgbWF4X25hbWVfd2lkdGgsIHN0YXR1
c19tZXNzYWdlKToKICAgICAgICAgcHJpbnQgIiVzIDogJXMiICUgKGJ1aWxkZXJfbmFtZS5sanVz
dChtYXhfbmFtZV93aWR0aCksIHN0YXR1c19tZXNzYWdlKQogCi0gICAgZGVmIF9wcmludF9ibGFt
ZV9pbmZvcm1hdGlvbl9mb3JfY29tbWl0KHNlbGYsIGNvbW1pdF9pbmZvKToKLSAgICAgICAgcHJp
bnQgInIlczoiICUgY29tbWl0X2luZm8ucmV2aXNpb24oKQotICAgICAgICBwcmludCAiICAlcyIg
JSB2aWV3X3NvdXJjZV91cmwoY29tbWl0X2luZm8ucmV2aXNpb24oKSkKLSAgICAgICAgcHJpbnQg
IiAgQnVnOiAlcyAoJXMpIiAlIChjb21taXRfaW5mby5idWdfaWQoKSwgc2VsZi50b29sLmJ1Z3Mu
YnVnX3VybF9mb3JfYnVnX2lkKGNvbW1pdF9pbmZvLmJ1Z19pZCgpKSkKLSAgICAgICAgYXV0aG9y
X2xpbmUgPSAiXCIlc1wiIDwlcz4iICUgKGNvbW1pdF9pbmZvLmF1dGhvcl9uYW1lKCksIGNvbW1p
dF9pbmZvLmF1dGhvcl9lbWFpbCgpKQotICAgICAgICBwcmludCAiICBBdXRob3I6ICVzIiAlIChj
b21taXRfaW5mby5hdXRob3IoKSBvciBhdXRob3JfbGluZSkKLSAgICAgICAgcHJpbnQgIiAgUmV2
aWV3ZXI6ICVzIiAlIChjb21taXRfaW5mby5yZXZpZXdlcigpIG9yIGNvbW1pdF9pbmZvLnJldmll
d2VyX3RleHQoKSkKLSAgICAgICAgcHJpbnQgIiAgQ29tbWl0dGVyOiAlcyIgJSAoY29tbWl0X2lu
Zm8uY29tbWl0dGVyKCkgb3IgY29tbWl0X2luZm8uY29tbWl0dGVyX2VtYWlsKCkpCi0KLSAgICAj
IEZJWE1FOiBUaGlzIGlzIHNsaWdodGx5IGRpZmZlcmVudCBmcm9tIEJ1aWxkZXIuYmxhbWV3b3J0
aHlfcmV2aXNpb25zCisgICAgIyBGSVhNRTogVGhpcyBpcyBzbGlnaHRseSBkaWZmZXJlbnQgZnJv
bSBCdWlsZGVyLnN1c3BlY3RfcmV2aXNpb25zX2Zvcl9ncmVlbl90b19yZWRfdHJhbnNpdGlvbgog
ICAgICMgZHVlIHRvIG5lZWRpbmcgdG8gZGV0ZWN0IHRoZSAiaGl0IHRoZSBsaW1pdCIgY2FzZSBh
biBwcmludCBhIHNwZWNpYWwgbWVzc2FnZS4KICAgICBkZWYgX3ByaW50X2JsYW1lX2luZm9ybWF0
aW9uX2Zvcl9idWlsZGVyKHNlbGYsIGJ1aWxkZXJfc3RhdHVzLCBuYW1lX3dpZHRoLCBhdm9pZF9m
bGFrZXlfdGVzdHM9VHJ1ZSk6CiAgICAgICAgIGJ1aWxkZXIgPSBzZWxmLnRvb2wuYnVpbGRib3Qu
YnVpbGRlcl93aXRoX25hbWUoYnVpbGRlcl9zdGF0dXNbIm5hbWUiXSkKQEAgLTE1MSw3ICsxNDIs
NyBAQCBjbGFzcyBXaGF0QnJva2UoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogICAgICAg
ICBzZWxmLl9wcmludF9idWlsZGVyX2xpbmUoYnVpbGRlci5uYW1lKCksIG5hbWVfd2lkdGgsICJG
QUlMIChibGFtZS1saXN0OiAlcyVzKSIgJSAoc3VzcGVjdF9yZXZpc2lvbnMsIGZpcnN0X2ZhaWx1
cmVfbWVzc2FnZSkpCiAgICAgICAgIGZvciByZXZpc2lvbiBpbiBzdXNwZWN0X3JldmlzaW9uczoK
ICAgICAgICAgICAgIGNvbW1pdF9pbmZvID0gc2VsZi50b29sLmNoZWNrb3V0KCkuY29tbWl0X2lu
Zm9fZm9yX3JldmlzaW9uKHJldmlzaW9uKQotICAgICAgICAgICAgc2VsZi5fcHJpbnRfYmxhbWVf
aW5mb3JtYXRpb25fZm9yX2NvbW1pdChjb21taXRfaW5mbykKKyAgICAgICAgICAgIHByaW50IGNv
bW1pdF9pbmZvLmJsYW1lX3N0cmluZyhzZWxmLnRvb2wuYnVncykKIAogICAgIGRlZiBleGVjdXRl
KHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgogICAgICAgICBidWlsZGVyX3N0YXR1c2VzID0g
dG9vbC5idWlsZGJvdC5idWlsZGVyX3N0YXR1c2VzKCkKQEAgLTIwMCw2ICsxOTEsNzEgQEAgY2xh
c3MgUmVzdWx0c0ZvcihBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAgICAgICAgICAgICBz
ZWxmLl9wcmludF9sYXlvdXRfdGVzdF9yZXN1bHRzKGJ1aWxkLmxheW91dF90ZXN0X3Jlc3VsdHMo
KSkKIAogCitjbGFzcyBGYWlsdXJlUmVhc29uKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToK
KyAgICBuYW1lID0gImZhaWx1cmUtcmVhc29uIgorICAgIGhlbHBfdGV4dCA9ICJMaXN0cyByZXZp
c2lvbnMgd2hlcmUgaW5kaXZpZHVhbCB0ZXN0IGZhaWx1cmVzIHN0YXJ0ZWQgYXQgJXMiICUgQnVp
bGRCb3QuZGVmYXVsdF9ob3N0CisKKyAgICBkZWYgX3ByaW50X2JsYW1lX2luZm9ybWF0aW9uX2Zv
cl90cmFuc2l0aW9uKHNlbGYsIGdyZWVuX2J1aWxkLCByZWRfYnVpbGQsIGZhaWxpbmdfdGVzdHMp
OgorICAgICAgICBzdXNwZWN0X3JldmlzaW9ucyA9IGdyZWVuX2J1aWxkLmJ1aWxkZXIoKS5zdXNw
ZWN0X3JldmlzaW9uc19mb3JfdHJhbnNpdGlvbihncmVlbl9idWlsZCwgcmVkX2J1aWxkKQorICAg
ICAgICBwcmludCAiU1VDQ0VTUzogQnVpbGQgJXMgKHIlcykgd2FzIHRoZSBmaXJzdCB0byBzaG93
IGZhaWx1cmVzOiAlcyIgJSAocmVkX2J1aWxkLl9udW1iZXIsIHJlZF9idWlsZC5yZXZpc2lvbigp
LCBmYWlsaW5nX3Rlc3RzKQorICAgICAgICBwcmludCAiU3VzcGVjdCByZXZpc2lvbnM6IgorICAg
ICAgICBmb3IgcmV2aXNpb24gaW4gc3VzcGVjdF9yZXZpc2lvbnM6CisgICAgICAgICAgICBjb21t
aXRfaW5mbyA9IHNlbGYudG9vbC5jaGVja291dCgpLmNvbW1pdF9pbmZvX2Zvcl9yZXZpc2lvbihy
ZXZpc2lvbikKKyAgICAgICAgICAgIHByaW50IGNvbW1pdF9pbmZvLmJsYW1lX3N0cmluZyhzZWxm
LnRvb2wuYnVncykKKworICAgIGRlZiBfZXhwbGFpbl9mYWlsdXJlc19mb3JfYnVpbGRlcihzZWxm
LCBidWlsZGVyLCBzdGFydF9yZXZpc2lvbiwgc2VhcmNoX2xpbWl0PTEwMDApOgorICAgICAgICBw
cmludCAiRXhhbWluaW5nIGZhaWx1cmVzIGZvciBcIiVzXCIsIHN0YXJ0aW5nIGF0IHIlcyIgJSAo
YnVpbGRlci5uYW1lKCksIHN0YXJ0X3JldmlzaW9uKQorICAgICAgICByZXZpc2lvbl90b190ZXN0
ID0gc3RhcnRfcmV2aXNpb24KKyAgICAgICAgYnVpbGQgPSBidWlsZGVyLmJ1aWxkX2Zvcl9yZXZp
c2lvbihyZXZpc2lvbl90b190ZXN0LCBhbGxvd19mYWlsZWRfbG9va3Vwcz1UcnVlKQorICAgICAg
ICByZXN1bHRzX3RvX2V4cGxhaW4gPSBzZXQoYnVpbGQubGF5b3V0X3Rlc3RfcmVzdWx0cygpLmZh
aWxpbmdfdGVzdHMoKSkKKyAgICAgICAgbGFzdF9idWlsZF93aXRoX3Jlc3VsdHMgPSBidWlsZAor
ICAgICAgICBwcmludCAiU3RhcnRpbmcgYXQgJXMiICUgcmV2aXNpb25fdG9fdGVzdAorICAgICAg
ICB3aGlsZSByZXN1bHRzX3RvX2V4cGxhaW4gYW5kIHJldmlzaW9uX3RvX3Rlc3QgPiBzdGFydF9y
ZXZpc2lvbiAtIHNlYXJjaF9saW1pdDoKKyAgICAgICAgICAgIHJldmlzaW9uX3RvX3Rlc3QgLT0g
MQorICAgICAgICAgICAgbmV3X2J1aWxkID0gYnVpbGRlci5idWlsZF9mb3JfcmV2aXNpb24ocmV2
aXNpb25fdG9fdGVzdCwgYWxsb3dfZmFpbGVkX2xvb2t1cHM9VHJ1ZSkKKyAgICAgICAgICAgIGlm
IG5vdCBuZXdfYnVpbGQ6CisgICAgICAgICAgICAgICAgcHJpbnQgIk5vIGJ1aWxkIGZvciAlcyIg
JSByZXZpc2lvbl90b190ZXN0CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAg
IGJ1aWxkID0gbmV3X2J1aWxkCisgICAgICAgICAgICBsYXRlc3RfcmVzdWx0cyA9IGJ1aWxkLmxh
eW91dF90ZXN0X3Jlc3VsdHMoKQorICAgICAgICAgICAgaWYgbm90IGxhdGVzdF9yZXN1bHRzOgor
ICAgICAgICAgICAgICAgIHByaW50ICJObyByZXN1bHRzIGJ1aWxkICVzIChyJXMpIiAlIChidWls
ZC5fbnVtYmVyLCBidWlsZC5yZXZpc2lvbigpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisg
ICAgICAgICAgICBmYWlsdXJlcyA9IHNldChsYXRlc3RfcmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkp
CisgICAgICAgICAgICBpZiBsZW4oZmFpbHVyZXMpID49IDIwOgorICAgICAgICAgICAgICAgICMg
RklYTUU6IFdlIG1heSBuZWVkIHRvIG1vdmUgdGhpcyBsb2dpYyBpbnRvIHRoZSBMYXlvdXRUZXN0
UmVzdWx0cyBjbGFzcy4KKyAgICAgICAgICAgICAgICAjIFRoZSBidWlsZGJvdCBzdG9wcyBydW5z
IGFmdGVyIDIwIGZhaWx1cmVzIHNvIHdlIGRvbid0IGhhdmUgZnVsbCByZXN1bHRzIHRvIHdvcmsg
d2l0aCBoZXJlLgorICAgICAgICAgICAgICAgIHByaW50ICJUb28gbWFueSBmYWlsdXJlcyBpbiBi
dWlsZCAlcyAociVzKSwgaWdub3JpbmcuIiAlIChidWlsZC5fbnVtYmVyLCBidWlsZC5yZXZpc2lv
bigpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmaXhlZF9yZXN1bHRz
ID0gcmVzdWx0c190b19leHBsYWluIC0gZmFpbHVyZXMKKyAgICAgICAgICAgIGlmIG5vdCBmaXhl
ZF9yZXN1bHRzOgorICAgICAgICAgICAgICAgIHByaW50ICJObyBjaGFuZ2UgaW4gYnVpbGQgJXMg
KHIlcyksICVzIHVuZXhwbGFpbmVkIGZhaWx1cmVzICglcyBpbiB0aGlzIGJ1aWxkKSIgJSAoYnVp
bGQuX251bWJlciwgYnVpbGQucmV2aXNpb24oKSwgbGVuKHJlc3VsdHNfdG9fZXhwbGFpbiksIGxl
bihmYWlsdXJlcykpCisgICAgICAgICAgICAgICAgbGFzdF9idWlsZF93aXRoX3Jlc3VsdHMgPSBi
dWlsZAorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzZWxmLl9wcmludF9i
bGFtZV9pbmZvcm1hdGlvbl9mb3JfdHJhbnNpdGlvbihidWlsZCwgbGFzdF9idWlsZF93aXRoX3Jl
c3VsdHMsIGZpeGVkX3Jlc3VsdHMpCisgICAgICAgICAgICBsYXN0X2J1aWxkX3dpdGhfcmVzdWx0
cyA9IGJ1aWxkCisgICAgICAgICAgICByZXN1bHRzX3RvX2V4cGxhaW4gLT0gZml4ZWRfcmVzdWx0
cworICAgICAgICBpZiByZXN1bHRzX3RvX2V4cGxhaW46CisgICAgICAgICAgICBwcmludCAiRmFp
bGVkIHRvIGV4cGxhaW4gZmFpbHVyZXM6ICVzIiAlIHJlc3VsdHNfdG9fZXhwbGFpbgorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgcHJpbnQgIkV4cGxhaW5lZCBhbGwgcmVzdWx0cyBmb3IgJXMi
ICUgYnVpbGRlci5uYW1lKCkKKworICAgIGRlZiBfYnVpbGRlcl90b19leHBsYWluKHNlbGYpOgor
ICAgICAgICBidWlsZGVyX3N0YXR1c2VzID0gc2VsZi50b29sLmJ1aWxkYm90LmJ1aWxkZXJfc3Rh
dHVzZXMoKQorICAgICAgICByZWRfc3RhdHVzZXMgPSBbc3RhdHVzIGZvciBzdGF0dXMgaW4gYnVp
bGRlcl9zdGF0dXNlcyBpZiBub3Qgc3RhdHVzWyJpc19ncmVlbiJdXQorICAgICAgICBwcmludCAi
JXMgZmFpbGluZyIgJSAocGx1cmFsaXplKCJidWlsZGVyIiwgbGVuKHJlZF9zdGF0dXNlcykpKQor
ICAgICAgICBidWlsZGVyX2Nob2ljZXMgPSBbc3RhdHVzWyJuYW1lIl0gZm9yIHN0YXR1cyBpbiBy
ZWRfc3RhdHVzZXNdCisgICAgICAgICMgV2UgY291bGQgb2ZmZXIgYW4gIkFsbCIgY2hvaWNlIGhl
cmUuCisgICAgICAgIGNob3Nlbl9uYW1lID0gVXNlci5wcm9tcHRfd2l0aF9saXN0KCJXaGljaCBi
dWlsZGVyIHRvIGRpYWdub3NlOiIsIGJ1aWxkZXJfY2hvaWNlcykKKyAgICAgICAgIyBGSVhNRTog
cHJvbXB0X3dpdGhfbGlzdCBzaG91bGQgcmVhbGx5IHRha2UgYSBzZXQgb2Ygb2JqZWN0cyBhbmQg
YSBzZXQgb2YgbmFtZXMgYW5kIHRoZW4gcmV0dXJuIHRoZSBvYmplY3QuCisgICAgICAgIGZvciBz
dGF0dXMgaW4gcmVkX3N0YXR1c2VzOgorICAgICAgICAgICAgaWYgc3RhdHVzWyJuYW1lIl0gPT0g
Y2hvc2VuX25hbWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIChzZWxmLnRvb2wuYnVpbGRib3Qu
YnVpbGRlcl93aXRoX25hbWUoY2hvc2VuX25hbWUpLCBzdGF0dXNbImJ1aWx0X3JldmlzaW9uIl0p
CisKKyAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKKyAgICAgICAg
KGJ1aWxkZXIsIHN0YXJ0X3JldmlzaW9uKSA9IHNlbGYuX2J1aWxkZXJfdG9fZXhwbGFpbigpCisg
ICAgICAgIHNlbGYuX2V4cGxhaW5fZmFpbHVyZXNfZm9yX2J1aWxkZXIoYnVpbGRlciwgc3RhcnRf
cmV2aXNpb249c3RhcnRfcmV2aXNpb24pCisKIGNsYXNzIFRyZWVTdGF0dXMoQWJzdHJhY3REZWNs
YXJhdGl2ZUNvbW1hbmQpOgogICAgIG5hbWUgPSAidHJlZS1zdGF0dXMiCiAgICAgaGVscF90ZXh0
ID0gIlByaW50IHRoZSBzdGF0dXMgb2YgdGhlICVzIGJ1aWxkYm90cyIgJSBCdWlsZEJvdC5kZWZh
dWx0X2hvc3QK
</data>
<flag name="review"
          id="36248"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>