<?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>30970</bug_id>
          
          <creation_ts>2009-10-30 17:13:05 -0700</creation_ts>
          <short_desc>Need a way to validate that committers.py includes all committers/reviewers</short_desc>
          <delta_ts>2009-11-29 19:12:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>31046</dependson>
    
    <dependson>31037</dependson>
    
    <dependson>31364</dependson>
    
    <dependson>31366</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>commit-queue</cc>
    
    <cc>vestbo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>159526</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-30 17:13:05 -0700</bug_when>
    <thetext>Need a way to validate that committers.py includes all committers/reviewers

Here is a first stab.  I&apos;m not sure we&apos;d ever commit this, but it&apos;s been useful so far.

I&apos;ve written a script to validate against the lists.webkit.org mailing lists.  I know of no way to validate against the svn.webkit.org list.

Looks like we have a bunch of out-of-date accounts on the lists.webkit.org lists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159954</commentid>
    <comment_count>1</comment_count>
      <attachid>42351</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-02 17:34:12 -0800</bug_when>
    <thetext>Created attachment 42351
First attempt, will need to be reviewed in pieces</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159955</commentid>
    <comment_count>2</comment_count>
      <attachid>42352</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-02 17:36:58 -0800</bug_when>
    <thetext>Created attachment 42352
Example output from the script

Someone at Apple who actually has access to the official committer and reviewer list will need to use the output of this tool to validate those lists against what SVN history shows, what the mailing lists show, and what committers.py shows.  At least the two externally visible lists will likely need modification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160044</commentid>
    <comment_count>3</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2009-11-03 06:31:16 -0800</bug_when>
    <thetext>Cool stuff :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162607</commentid>
    <comment_count>4</comment_count>
      <attachid>42989</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-11 12:17:35 -0800</bug_when>
    <thetext>Created attachment 42989
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163200</commentid>
    <comment_count>5</comment_count>
      <attachid>42989</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-12 20:53:08 -0800</bug_when>
    <thetext>Comment on attachment 42989
Patch

+ os.system(&quot;open \&quot;&quot; + user_lookup_url + email + &quot;\&quot;&quot;)

This is a giant security vulnerability!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163595</commentid>
    <comment_count>6</comment_count>
      <attachid>43214</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-13 16:52:39 -0800</bug_when>
    <thetext>Created attachment 43214
Remove the troublesome code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167152</commentid>
    <comment_count>7</comment_count>
      <attachid>43214</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-29 18:01:34 -0800</bug_when>
    <thetext>Comment on attachment 43214
Remove the troublesome code

I didn&apos;t follow all of the logic, but this looks great.  You&apos;re python regexp foo &gt;&gt; mine.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167158</commentid>
    <comment_count>8</comment_count>
      <attachid>43214</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-29 18:21:57 -0800</bug_when>
    <thetext>Comment on attachment 43214
Remove the troublesome code

I&apos;m happy to explain any of it of course.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167179</commentid>
    <comment_count>9</comment_count>
      <attachid>43214</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-29 19:12:20 -0800</bug_when>
    <thetext>Comment on attachment 43214
Remove the troublesome code

Clearing flags on attachment: 43214

Committed r51475: &lt;http://trac.webkit.org/changeset/51475&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167180</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-29 19:12:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42351</attachid>
            <date>2009-11-02 17:34:12 -0800</date>
            <delta_ts>2009-11-11 12:17:31 -0800</delta_ts>
            <desc>First attempt, will need to be reviewed in pieces</desc>
            <filename>bug-30970-20091102173411.patch</filename>
            <type>text/plain</type>
            <size>26713</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21taXR0ZXJzLnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1pdHRlcnMucHkKaW5kZXggMTFlNmIxNS4u
ZWE0MTkxYiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1pdHRl
cnMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1pdHRlcnMucHkKQEAg
LTI5LDE3ICsyOSwyMyBAQAogIyBXZWJLaXQncyBQeXRob24gbW9kdWxlIGZvciBjb21taXR0ZXIg
YW5kIHJldmlld2VyIHZhbGlkYXRpb24KIAogY2xhc3MgQ29tbWl0dGVyOgotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBuYW1lLCBlbWFpbCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGJ1
Z3ppbGxhX2VtYWlsLCBvdGhlcl9lbWFpbHM9Tm9uZSk6CiAgICAgICAgIHNlbGYuZnVsbF9uYW1l
ID0gbmFtZQotICAgICAgICBzZWxmLmJ1Z3ppbGxhX2VtYWlsID0gZW1haWwKKyAgICAgICAgc2Vs
Zi5idWd6aWxsYV9lbWFpbCA9IGJ1Z3ppbGxhX2VtYWlsCisgICAgICAgIHNlbGYub3RoZXJfZW1h
aWxzID0gb3RoZXJfZW1haWxzCiAgICAgICAgIHNlbGYuY2FuX3JldmlldyA9IEZhbHNlCiAKKyAg
ICBkZWYgYWxsX2VtYWlscyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5vdGhlcl9lbWFpbHM6Cisg
ICAgICAgICAgICByZXR1cm4gW3NlbGYuYnVnemlsbGFfZW1haWxdICsgc2VsZi5vdGhlcl9lbWFp
bHMKKyAgICAgICAgcmV0dXJuIFtzZWxmLmJ1Z3ppbGxhX2VtYWlsXQorCiAgICAgZGVmIF9fc3Ry
X18oc2VsZik6CiAgICAgICAgIHJldHVybiAnIiVzIiA8JXM+JyAlIChzZWxmLmZ1bGxfbmFtZSwg
c2VsZi5idWd6aWxsYV9lbWFpbCkKIAogY2xhc3MgUmV2aWV3ZXIoQ29tbWl0dGVyKToKLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgbmFtZSwgZW1haWwpOgotICAgICAgICBDb21taXR0ZXIuX19pbml0
X18oc2VsZiwgbmFtZSwgZW1haWwpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGJ1Z3pp
bGxhX2VtYWlsLCBvdGhlcl9lbWFpbHM9Tm9uZSk6CisgICAgICAgIENvbW1pdHRlci5fX2luaXRf
XyhzZWxmLCBuYW1lLCBidWd6aWxsYV9lbWFpbCwgb3RoZXJfZW1haWxzPW90aGVyX2VtYWlscykK
ICAgICAgICAgc2VsZi5jYW5fcmV2aWV3ID0gVHJ1ZQogCiAjIFRoaXMgaXMgaW50ZW5kZWQgYXMg
YSBjYW5ub25pY2FsLCBtYWNoaW5lLXJlYWRhYmxlIGxpc3Qgb2YgYWxsIG5vbi1yZXZpZXdlciBj
b21taXR0ZXJzIGZvciBXZWJLaXQuCkBAIC00OSw0OSArNTUsODAgQEAgY29tbWl0dGVyc191bmFi
bGVfdG9fcmV2aWV3ID0gWwogICAgIENvbW1pdHRlcigiQWFyb24gQm9vZG1hbiIsICJhYUBjaHJv
bWl1bS5vcmciKSwKICAgICBDb21taXR0ZXIoIkFkYW0gTGFuZ2xleSIsICJhZ2xAY2hyb21pdW0u
b3JnIiksCiAgICAgQ29tbWl0dGVyKCJBbGJlcnQgSi4gV29uZyIsICJhandvbmdAY2hyb21pdW0u
b3JnIiksCisgICAgQ29tbWl0dGVyKCJBbGV4YW5kZXIgS2VsbGV0dCIsICJseXBhbm92QG1hYy5j
b20iLCBvdGhlcl9lbWFpbHM9WyJhLWxpc3RzMDAxQGx5cGFub3YubmV0IiwgImx5cGFub3ZAa2Rl
Lm9yZyJdKSwKKyAgICBDb21taXR0ZXIoIkFuZHJlIEJvdWxlIiwgImFib3VsZUBhcHBsZS5jb20i
KSwKKyAgICBDb21taXR0ZXIoIkFuZHJldyBXZWxsaW5ndG9uIiwgImFuZHJld0B3ZWJraXQub3Jn
Iiwgb3RoZXJfZW1haWxzPVsicHJvdG9uQHdpcmV0YXBwZWQubmV0Il0pLAogICAgIENvbW1pdHRl
cigiQW50b24gTXVoaW4iLCAiYW50b25tQGNocm9taXVtLm9yZyIpLAogICAgIENvbW1pdHRlcigi
QW50b25pbyBHb21lcyIsICJ0b25pa2l0b29Ad2Via2l0Lm9yZyIpLAogICAgIENvbW1pdHRlcigi
QW50aG9ueSBSaWNhdWQiLCAicmlrQHdlYmtpdC5vcmciKSwKKyAgICBDb21taXR0ZXIoIkJlbmph
bWluIEMgTWV5ZXIiLCAiYmVuQG1leWVyaG9tZS5uZXQiLCBvdGhlcl9lbWFpbHM9WyJiZW5Ad2Vi
a2l0Lm9yZyJdKSwKICAgICBDb21taXR0ZXIoIkJlbiBNdXJkb2NoIiwgImJlbm1AZ29vZ2xlLmNv
bSIpLAogICAgIENvbW1pdHRlcigiQ2hyaXMgRmxlaXphY2giLCAiY2ZsZWl6YWNoQGFwcGxlLmNv
bSIpLAorICAgIENvbW1pdHRlcigiQ2hyaXMgUGV0ZXJzZW4iLCAiY3BldGVyc2VuQGFwcGxlLmNv
bSIpLAorICAgIENvbW1pdHRlcigiQ2hyaXN0aWFuIER5d2FuIiwgImNocmlzdGlhbkB0d290b2Fz
dHMuZGUiLCBvdGhlcl9lbWFpbHM9WyJjaHJpc3RpYW5Ad2Via2l0Lm9yZyJdKSwKICAgICBDb21t
aXR0ZXIoIkJyZW50IEZ1bGdoYW0iLCAiYmZ1bGdoYW1Ad2Via2l0Lm9yZyIpLAorICAgIENvbW1p
dHRlcigiQnJldHQgV2lsc29uIiwgImJyZXR0d0BjaHJvbWl1bS5vcmciKSwKICAgICBDb21taXR0
ZXIoIkJyaWFuIFdlaW5zdGVpbiIsICJid2VpbnN0ZWluQGFwcGxlLmNvbSIpLAogICAgIENvbW1p
dHRlcigiQ2FtZXJvbiBNY0Nvcm1hY2siLCAiY2FtQHdlYmtpdC5vcmciKSwKKyAgICBDb21taXR0
ZXIoIkNocmlzIE1hcnJpbiIsICJjbWFycmluQGFwcGxlLmNvbSIpLAogICAgIENvbW1pdHRlcigi
Q29sbGluIEphY2tzb24iLCAiY29sbGluakB3ZWJraXQub3JnIiksCiAgICAgQ29tbWl0dGVyKCJD
c2FiYSBPc3p0cm9nb25hYyIsICJvc3N5QHdlYmtpdC5vcmciKSwKICAgICBDb21taXR0ZXIoIkRh
bmllbCBCYXRlcyIsICJkYmF0ZXNAd2Via2l0Lm9yZyIpLAorICAgIENvbW1pdHRlcigiRGF2aWQg
U21pdGgiLCAiY2F0ZmlzaC5tYW5AZ21haWwuY29tIiwgb3RoZXJfZW1haWxzPVsiZHNtaXRoQHdl
YmtpdC5vcmciXSksCisgICAgQ29tbWl0dGVyKCJEZWFuIEphY2tzb24iLCAiZGlub0BhcHBsZS5j
b20iKSwKICAgICBDb21taXR0ZXIoIkRyZXcgV2lsc29uIiwgImF0d2lsc29uQGNocm9taXVtLm9y
ZyIpLAogICAgIENvbW1pdHRlcigiRGlyayBTY2h1bHplIiwgImtyaXRAd2Via2l0Lm9yZyIpLAog
ICAgIENvbW1pdHRlcigiRG1pdHJ5IFRpdG92IiwgImRpbWljaEBjaHJvbWl1bS5vcmciKSwKICAg
ICBDb21taXR0ZXIoIkR1bWl0cnUgRGFuaWxpdWMiLCAiZHVtaUBjaHJvbWl1bS5vcmciKSwKICAg
ICBDb21taXR0ZXIoIkVsaSBGaWRsZXIiLCAiZWxpQHN0YWlrb3MubmV0IiksCiAgICAgQ29tbWl0
dGVyKCJFcmljIFJvbWFuIiwgImVyb21hbkBjaHJvbWl1bS5vcmciKSwKKyAgICBDb21taXR0ZXIo
IkZlbmcgUWlhbiIsICJmZW5nQGNocm9taXVtLm9yZyIpLAogICAgIENvbW1pdHRlcigiRnVtaXRv
c2hpIFVrYWkiLCAidWthaUBjaHJvbWl1bS5vcmciKSwKKyAgICBDb21taXR0ZXIoIkdyYWhhbSBE
ZW5uaXMiLCAiR3JhaGFtLkRlbm5pc0BnbWFpbC5jb20iLCBvdGhlcl9lbWFpbHM9WyJnZGVubmlz
QHdlYmtpdC5vcmciXSksCiAgICAgQ29tbWl0dGVyKCJHcmVnIEJvbHNpbmdhIiwgImJvbHNpbmdh
QGFwcGxlLmNvbSIpLAotICAgIENvbW1pdHRlcigiSmVyZW15IE1vc2tvdmljaCIsICJwbGF5bW9i
aWxAZ29vZ2xlLmNvbSIpLAorICAgIENvbW1pdHRlcigiSGluLUNodW5nIExhbSIsICJoY2xhbUBn
b29nbGUuY29tIiwgb3RoZXJfZW1haWxzPVsiaGNsYW1AY2hyb21pdW0ub3JnIl0pLAorICAgIENv
bW1pdHRlcigiSmVucyBBbGZrZSIsICJzbmVqQGNocm9taXVtLm9yZyIsIG90aGVyX2VtYWlscz1b
ImplbnNAYXBwbGUuY29tIl0pLAorICAgIENvbW1pdHRlcigiSmVyZW15IE1vc2tvdmljaCIsICJw
bGF5bW9iaWxAZ29vZ2xlLmNvbSIsIG90aGVyX2VtYWlscz1bImplcmVteUBjaHJvbWl1bS5vcmci
XSksCiAgICAgQ29tbWl0dGVyKCJKZXJlbXkgT3Jsb3ciLCAiam9ybG93QGNocm9taXVtLm9yZyIp
LAotICAgIENvbW1pdHRlcigiSmVzc2llIEJlcmxpbiIsICJqYmVybGluQHdlYmtpdC5vcmciKSwK
KyAgICBDb21taXR0ZXIoIkplc3NpZSBCZXJsaW4iLCAiamJlcmxpbkB3ZWJraXQub3JnIiwgb3Ro
ZXJfZW1haWxzPVsiamJlcmxpbkBhcHBsZS5jb20iXSksCiAgICAgQ29tbWl0dGVyKCJKaWFuIExp
IiwgImppYW5saUBjaHJvbWl1bS5vcmciKSwKICAgICBDb21taXR0ZXIoIkpvaG4gQWJkLUVsLU1h
bGVrIiwgImphbUBjaHJvbWl1bS5vcmciKSwKKyAgICBDb21taXR0ZXIoIkpvb3N0IGRlIFZhbGsi
LCAiam9vc3RAd2Via2l0Lm9yZyIsIG90aGVyX2VtYWlscz1bIndlYmtpdC1kZXZAam9vc3RkZXZh
bGsubmwiXSksCiAgICAgQ29tbWl0dGVyKCJKb3NlcGggUGVjb3Jhcm8iLCAiam9lcGVja0B3ZWJr
aXQub3JnIiksCi0gICAgQ29tbWl0dGVyKCJKdWxpZSBQYXJlbnQiLCAianBhcmVudEBnb29nbGUu
Y29tIiksCisgICAgQ29tbWl0dGVyKCJKdWxpZW4gQ2hhZmZyYWl4IiwgImpjaGFmZnJhaXhAd2Vi
a2l0Lm9yZyIsIG90aGVyX2VtYWlscz1bImp1bGllbi5jaGFmZnJhaXhAZ21haWwuY29tIl0pLAor
ICAgIENvbW1pdHRlcigiSnVsaWUgUGFyZW50IiwgImpwYXJlbnRAZ29vZ2xlLmNvbSIsIG90aGVy
X2VtYWlscz1bImpwYXJlbnRAY2hyb21pdW0ub3JnIl0pLAorICAgIENvbW1pdHRlcigiSnVuZ3No
aWsgU2hpbiIsICJqc2hpbkBjaHJvbWl1bS5vcmciKSwKICAgICBDb21taXR0ZXIoIktlbm5ldGgg
Um9oZGUgQ2hyaXN0aWFuc2VuIiwgImtlbm5ldGhAd2Via2l0Lm9yZyIpLAogICAgIENvbW1pdHRl
cigiS2VudCBUYW11cmEiLCAidGtlbnRAY2hyb21pdW0ub3JnIiksCisgICAgQ29tbWl0dGVyKCJL
cnp5c3p0b2YgS293YWxjenlrIiwgImtrb3dhbGN6eWtAZ21haWwuY29tIiksCiAgICAgQ29tbWl0
dGVyKCJMYXN6bG8gR29tYm9zIiwgImxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20iKSwKKyAgICBD
b21taXR0ZXIoIkxldmkgV2VpbnRyYXViIiwgImx3ZWludHJhdWJAYXBwbGUuY29tIiksCiAgICAg
Q29tbWl0dGVyKCJNYWRzIEFnZXIiLCAiYWdlckBjaHJvbWl1bS5vcmciKSwKKyAgICBDb21taXR0
ZXIoIk1hdHQgTGlsZWsiLCAid2Via2l0QG1hdHRsaWxlay5jb20iLCBvdGhlcl9lbWFpbHM9WyJw
ZXd0ZXJtb29zZUB3ZWJraXQub3JnIl0pLAorICAgIENvbW1pdHRlcigiTWF0dCBQZXJyeSIsICJt
cGNvbXBsZXRlQGNocm9taXVtLm9yZyIpLAorICAgIENvbW1pdHRlcigiTWF4aW1lIEJyaXR0byIs
ICJtYXhpbWUuYnJpdHRvQGdtYWlsLmNvbSIsIG90aGVyX2VtYWlscz1bImJyaXR0b0BhcHBsZS5j
b20iXSksCisgICAgQ29tbWl0dGVyKCJNYXhpbWUgU2ltb24iLCAic2ltb24ubWF4aW1lQGdtYWls
LmNvbSIsIG90aGVyX2VtYWlscz1bIm1heGltZS5zaW1vbkB3ZWJraXQub3JnIl0pLAogICAgIENv
bW1pdHRlcigiTWlrZSBCZWxzaGUiLCAibWlrZUBiZWxzaGUuY29tIiksCisgICAgQ29tbWl0dGVy
KCJNaWtlIEZlbnRvbiIsICJtaWtlLmZlbnRvbkB0b3JjaG1vYmlsZS5jb20iLCBvdGhlcl9lbWFp
bHM9WyJtaWZlbnRvbkByaW0uY29tIl0pLAorICAgIENvbW1pdHRlcigiTWlrZSBUaG9sZSIsICJt
dGhvbGVAbWlrZXRob2xlLmNvbSIsIG90aGVyX2VtYWlscz1bIm10aG9sZUBhcHBsZS5jb20iXSks
CiAgICAgQ29tbWl0dGVyKCJOYXRlIENoYXBpbiIsICJqYXBoZXRAY2hyb21pdW0ub3JnIiksCiAg
ICAgQ29tbWl0dGVyKCJPamFuIFZhZmFpIiwgIm9qYW5AY2hyb21pdW0ub3JnIiksCiAgICAgQ29t
bWl0dGVyKCJQYW0gR3JlZW5lIiwgInBhbUBjaHJvbWl1bS5vcmciKSwKLSAgICBDb21taXR0ZXIo
IlBldGVyIEthc3RpbmciLCAicGthc3RpbmdAZ29vZ2xlLmNvbSIpLAotICAgIENvbW1pdHRlcigi
UGllcnJlIGQnSGVyYmVtb250IiwgInBkaGVyYmVtb250QGZyZWUuZnIiKSwKKyAgICBDb21taXR0
ZXIoIlBldGVyIEthc3RpbmciLCAicGthc3RpbmdAZ29vZ2xlLmNvbSIsIG90aGVyX2VtYWlscz1b
InBrYXN0aW5nQGNocm9taXVtLm9yZyJdKSwKKyAgICBDb21taXR0ZXIoIlBpZXJyZSBkJ0hlcmJl
bW9udCIsICJwZGhlcmJlbW9udEBmcmVlLmZyIiwgb3RoZXJfZW1haWxzPVsicGRoZXJiZW1vbnRA
YXBwbGUuY29tIl0pLAorICAgIENvbW1pdHRlcigiUGllcnJlLU9saXZpZXIgTGF0b3VyIiwgInBv
bEBhcHBsZS5jb20iKSwKICAgICBDb21taXR0ZXIoIlJvbGFuZCBTdGVpbmVyIiwgInJvbGFuZHN0
ZWluZXJAY2hyb21pdW0ub3JnIiksCiAgICAgQ29tbWl0dGVyKCJSeW9zdWtlIE5pd2EiLCAicm5p
d2FAd2Via2l0Lm9yZyIpLAogICAgIENvbW1pdHRlcigiU2NvdHQgVmlvbGV0IiwgInNreUBjaHJv
bWl1bS5vcmciKSwKICAgICBDb21taXR0ZXIoIlNoaW5pY2hpcm8gSGFtYWppIiwgImhhbWFqaUBj
aHJvbWl1bS5vcmciKSwKICAgICBDb21taXR0ZXIoIlN0ZXZlIEJsb2NrIiwgInN0ZXZlYmxvY2tA
Z29vZ2xlLmNvbSIpLAorICAgIENvbW1pdHRlcigiU3RlcGhlbiBXaGl0ZSIsICJzZW5vcmJsYW5j
b0BjaHJvbWl1bS5vcmciKSwKICAgICBDb21taXR0ZXIoIlRvbnkgQ2hhbmciLCAidG9ueUBjaHJv
bWl1bS5vcmciKSwKKyAgICBDb21taXR0ZXIoIlRyZXkgTWF0dGVzb24iLCAidHJleUB1c2EubmV0
IiksCisgICAgQ29tbWl0dGVyKCJUcmlzdGFuIE8nVGllcm5leSIsICJ0cmlzdGFuQG90aWVybmV5
Lm5ldCIsIG90aGVyX2VtYWlscz1bInRyaXN0YW5AYXBwbGUuY29tIl0pLAorICAgIENvbW1pdHRl
cigiV2lsbGlhbSBTaWVncmlzdCIsICJ3c2llZ3Jpc3RAYXBwbGUuY29tIiksCiAgICAgQ29tbWl0
dGVyKCJZYWVsIEFoYXJvbiIsICJ5YWVsLmFoYXJvbkBub2tpYS5jb20iKSwKKyAgICBDb21taXR0
ZXIoIllvbmdqdW4gWmhhbmciLCAieW9uZ2p1bi56aGFuZ0Bub2tpYS5jb20iKSwKICAgICBDb21t
aXR0ZXIoIllvbmcgTGkiLCAieW9uZy5saUB0b3JjaG1vYmlsZS5jb20iKSwKICAgICBDb21taXR0
ZXIoIll1cnkgU2VtaWtoYXRza3kiLCAieXVyeXNAY2hyb21pdW0ub3JnIiksCiAgICAgQ29tbWl0
dGVyKCJab2x0YW4gSG9ydmF0aCIsICJ6b2x0YW5Ad2Via2l0Lm9yZyIpLApAQCAtMTAzLDIyICsx
NDAsMjQgQEAgcmV2aWV3ZXJzX2xpc3QgPSBbCiAgICAgUmV2aWV3ZXIoIkFkYW0gQmFydGgiLCAi
YWJhcnRoQHdlYmtpdC5vcmciKSwKICAgICBSZXZpZXdlcigiQWRhIENoYW4iLCAiYWRhY2hhbkBh
cHBsZS5jb20iKSwKICAgICBSZXZpZXdlcigiQWRhbSBSb2JlbiIsICJhcm9iZW5AYXBwbGUuY29t
IiksCi0gICAgUmV2aWV3ZXIoIkFkYW0gVHJlYXQiLCAidHJlYXRAa2RlLm9yZyIpLAorICAgIFJl
dmlld2VyKCJBZGFtIFRyZWF0IiwgInRyZWF0QGtkZS5vcmciLCBvdGhlcl9lbWFpbHM9WyJ0cmVh
dEB3ZWJraXQub3JnIl0pLAogICAgIFJldmlld2VyKCJBZGVsZSBQZXRlcnNvbiIsICJhZGVsZUBh
cHBsZS5jb20iKSwKLSAgICBSZXZpZXdlcigiQWxleGV5IFByb3NrdXJ5YWtvdiIsICJhcEB3ZWJr
aXQub3JnIiksCisgICAgUmV2aWV3ZXIoIkFsZXhleSBQcm9za3VyeWFrb3YiLCAiYXBAd2Via2l0
Lm9yZyIsIG90aGVyX2VtYWlscz1bImFwQGFwcGxlLmNvbSJdKSwKICAgICBSZXZpZXdlcigiQWxp
Y2UgTGl1IiwgImFsaWNlLmxpdUBhcHBsZS5jb20iKSwKLSAgICBSZXZpZXdlcigiQWxwIFRva2Vy
IiwgImFscEBudWFudGkuY29tIiksCi0gICAgUmV2aWV3ZXIoIkFuZGVycyBDYXJsc3NvbiIsICJh
bmRlcnNjYUBhcHBsZS5jb20iKSwKLSAgICBSZXZpZXdlcigiQW50dGkgS29pdmlzdG8iLCAia29p
dmlzdG9AaWtpLmZpIiksCi0gICAgUmV2aWV3ZXIoIkFyaXlhIEhpZGF5YXQiLCAiYXJpeWEuaGlk
YXlhdEB0cm9sbHRlY2guY29tIiksCisgICAgUmV2aWV3ZXIoIkFscCBUb2tlciIsICJhbHBAbnVh
bnRpLmNvbSIsIG90aGVyX2VtYWlscz1bImFscEBhdG9rZXIuY29tIiwgImFscEB3ZWJraXQub3Jn
Il0pLAorICAgIFJldmlld2VyKCJBbmRlcnMgQ2FybHNzb24iLCAiYW5kZXJzY2FAYXBwbGUuY29t
Iiwgb3RoZXJfZW1haWxzPVsiYWNhcmxzc29uQGFwcGxlLmNvbSJdKSwKKyAgICBSZXZpZXdlcigi
QW50dGkgS29pdmlzdG8iLCAia29pdmlzdG9AaWtpLmZpIiwgb3RoZXJfZW1haWxzPVsiYW50dGlA
YXBwbGUuY29tIl0pLAorICAgIFJldmlld2VyKCJBcml5YSBIaWRheWF0IiwgImFyaXlhLmhpZGF5
YXRAdHJvbGx0ZWNoLmNvbSIsIG90aGVyX2VtYWlscz1bImFyaXlhLmhpZGF5YXRAZ21haWwuY29t
IiwgImFyaXlhQHdlYmtpdC5vcmciXSksCisgICAgUmV2aWV3ZXIoIkJldGggRGFraW4iLCAiYmRh
a2luQGFwcGxlLmNvbSIpLAogICAgIFJldmlld2VyKCJCcmFkeSBFaWRzb24iLCAiYmVpZHNvbkBh
cHBsZS5jb20iKSwKLSAgICBSZXZpZXdlcigiQ2FtZXJvbiBad2FyaWNoIiwgInp3YXJpY2hAYXBw
bGUuY29tIiksCi0gICAgUmV2aWV3ZXIoIkRhbiBCZXJuc3RlaW4iLCAibWl0ekB3ZWJraXQub3Jn
IiksCisgICAgUmV2aWV3ZXIoIkNhbWVyb24gWndhcmljaCIsICJ6d2FyaWNoQGFwcGxlLmNvbSIs
IG90aGVyX2VtYWlscz1bImN3endhcmljaEBhcHBsZS5jb20iLCAiY3d6d2FyaWNoQHdlYmtpdC5v
cmciXSksCisgICAgUmV2aWV3ZXIoIkNocmlzIEJsdW1lbmJlcmciLCAiY2JsdUBhcHBsZS5jb20i
KSwKKyAgICBSZXZpZXdlcigiRGFuIEJlcm5zdGVpbiIsICJtaXR6QHdlYmtpdC5vcmciLCBvdGhl
cl9lbWFpbHM9WyJtaXR6QGFwcGxlLmNvbSJdKSwKICAgICBSZXZpZXdlcigiRGFyaW4gQWRsZXIi
LCAiZGFyaW5AYXBwbGUuY29tIiksCi0gICAgUmV2aWV3ZXIoIkRhcmluIEZpc2hlciIsICJmaXNo
ZEBjaHJvbWl1bS5vcmciKSwKKyAgICBSZXZpZXdlcigiRGFyaW4gRmlzaGVyIiwgImZpc2hkQGNo
cm9taXVtLm9yZyIsIG90aGVyX2VtYWlscz1bImRhcmluQGNocm9taXVtLm9yZyJdKSwKICAgICBS
ZXZpZXdlcigiRGF2aWQgSGFycmlzb24iLCAiaGFycmlzb25AYXBwbGUuY29tIiksCiAgICAgUmV2
aWV3ZXIoIkRhdmlkIEh5YXR0IiwgImh5YXR0QGFwcGxlLmNvbSIpLAotICAgIFJldmlld2VyKCJE
YXZpZCBLaWx6ZXIiLCAiZGRraWx6ZXJAd2Via2l0Lm9yZyIpLAorICAgIFJldmlld2VyKCJEYXZp
ZCBLaWx6ZXIiLCAiZGRraWx6ZXJAd2Via2l0Lm9yZyIsIG90aGVyX2VtYWlscz1bImRka2lsemVy
QGFwcGxlLmNvbSJdKSwKICAgICBSZXZpZXdlcigiRGF2aWQgTGV2aW4iLCAibGV2aW5AY2hyb21p
dW0ub3JnIiksCiAgICAgUmV2aWV3ZXIoIkRpbWl0cmkgR2xhemtvdiIsICJkZ2xhemtvdkBjaHJv
bWl1bS5vcmciKSwKICAgICBSZXZpZXdlcigiRG9uIE1lbHRvbiIsICJncmFtcHNAYXBwbGUuY29t
IiksCkBAIC0xMjcsMzEgKzE2NiwzNiBAQCByZXZpZXdlcnNfbGlzdCA9IFsKICAgICBSZXZpZXdl
cigiRXJpYyBTZWlkZWwiLCAiZXJpY0B3ZWJraXQub3JnIiksCiAgICAgUmV2aWV3ZXIoIkdhdmlu
IEJhcnJhY2xvdWdoIiwgImJhcnJhY2xvdWdoQGFwcGxlLmNvbSIpLAogICAgIFJldmlld2VyKCJH
ZW9mZnJleSBHYXJlbiIsICJnZ2FyZW5AYXBwbGUuY29tIiksCi0gICAgUmV2aWV3ZXIoIkdlb3Jn
ZSBTdGFpa29zIiwgInN0YWlrb3NAa2RlLm9yZyIpLAotICAgIFJldmlld2VyKCJHdXN0YXZvIE5v
cm9uaGEiLCAiZ25zQGdub21lLm9yZyIpLAotICAgIFJldmlld2VyKCJIb2xnZXIgRnJleXRoZXIi
LCAiemVja2VAc2VsZmlzaC5vcmciKSwKLSAgICBSZXZpZXdlcigiSmFuIEFsb256byIsICJqbWFs
b256b0BnbWFpbC5jb20iKSwKKyAgICBSZXZpZXdlcigiR2VvcmdlIFN0YWlrb3MiLCAic3RhaWtv
c0BrZGUub3JnIiwgb3RoZXJfZW1haWxzPVsic3RhaWtvc0B3ZWJraXQub3JnIl0pLAorICAgIFJl
dmlld2VyKCJHdXN0YXZvIE5vcm9uaGEgU2lsdmEiLCAiZ25zQGdub21lLm9yZyIsIG90aGVyX2Vt
YWlscz1bImtvdkB3ZWJraXQub3JnIl0pLAorICAgIFJldmlld2VyKCJIb2xnZXIgRnJleXRoZXIi
LCAiemVja2VAc2VsZmlzaC5vcmciLCBvdGhlcl9lbWFpbHM9WyJ6ZWNrZUB3ZWJraXQub3JnIl0p
LAorICAgIFJldmlld2VyKCJKYW4gQWxvbnpvIiwgImptYWxvbnpvQGdtYWlsLmNvbSIsIG90aGVy
X2VtYWlscz1bImptYWxvbnpvQHdlYmtpdC5vcmciXSksCiAgICAgUmV2aWV3ZXIoIkpvaG4gU3Vs
bGl2YW4iLCAic3VsbGl2YW5AYXBwbGUuY29tIiksCiAgICAgUmV2aWV3ZXIoIkpvbiBIb25leWN1
dHQiLCAiamhvbmV5Y3V0dEBhcHBsZS5jb20iKSwKICAgICBSZXZpZXdlcigiSnVzdGluIEdhcmNp
YSIsICJqdXN0aW4uZ2FyY2lhQGFwcGxlLmNvbSIpLAorICAgIFJldmlld2VyKCJLZW4gS29jaWVu
ZGEiLCAia29jaWVuZGFAYXBwbGUuY29tIiksCiAgICAgUmV2aWV3ZXIoIktldmluIERlY2tlciIs
ICJrZGVja2VyQGFwcGxlLmNvbSIpLAogICAgIFJldmlld2VyKCJLZXZpbiBNY0N1bGxvdWdoIiwg
ImttY2N1bGxvdWdoQGFwcGxlLmNvbSIpLAotICAgIFJldmlld2VyKCJLZXZpbiBPbGxpdmllciIs
ICJrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbSIpLAotICAgIFJldmlld2VyKCJMYXJzIEtub2xsIiwg
ImxhcnNAdHJvbGx0ZWNoLmNvbSIpLAorICAgIFJldmlld2VyKCJLZXZpbiBPbGxpdmllciIsICJr
ZXZpbm9AdGhlb2xsaXZpZXJzLmNvbSIsIG90aGVyX2VtYWlscz1bImtldmlub0B3ZWJraXQub3Jn
Il0pLAorICAgIFJldmlld2VyKCJMYXJzIEtub2xsIiwgImxhcnNAdHJvbGx0ZWNoLmNvbSIsIG90
aGVyX2VtYWlscz1bImxhcnNAa2RlLm9yZyJdKSwKICAgICBSZXZpZXdlcigiTWFjaWVqIFN0YWNo
b3dpYWsiLCAibWpzQGFwcGxlLmNvbSIpLAogICAgIFJldmlld2VyKCJNYXJrIFJvd2UiLCAibXJv
d2VAYXBwbGUuY29tIiksCi0gICAgUmV2aWV3ZXIoIk5pa29sYXMgWmltbWVybWFubiIsICJ6aW1t
ZXJtYW5uQGtkZS5vcmciKSwKKyAgICBSZXZpZXdlcigiTmlrb2xhcyBaaW1tZXJtYW5uIiwgInpp
bW1lcm1hbm5Aa2RlLm9yZyIsIG90aGVyX2VtYWlscz1bInppbW1lcm1hbm5AcGh5c2lrLnJ3dGgt
YWFjaGVuLmRlIiwgInppbW1lcm1hbm5Ad2Via2l0Lm9yZyJdKSwKICAgICBSZXZpZXdlcigiT2xp
dmVyIEh1bnQiLCAib2xpdmVyQGFwcGxlLmNvbSIpLAogICAgIFJldmlld2VyKCJQYXZlbCBGZWxk
bWFuIiwgInBmZWxkbWFuQGNocm9taXVtLm9yZyIpLAotICAgIFJldmlld2VyKCJSb2IgQnVpcyIs
ICJyd2xidWlzQGdtYWlsLmNvbSIpLAotICAgIFJldmlld2VyKCJTYW0gV2VpbmlnIiwgInNhbUB3
ZWJraXQub3JnIiksCisgICAgUmV2aWV3ZXIoIlJpY2hhcmQgV2lsbGlhbXNvbiIsICJyandAYXBw
bGUuY29tIiksCisgICAgUmV2aWV3ZXIoIlJvYiBCdWlzIiwgInJ3bGJ1aXNAZ21haWwuY29tIiwg
b3RoZXJfZW1haWxzPVsicndsYnVpc0B3ZWJraXQub3JnIl0pLAorICAgIFJldmlld2VyKCJTYW0g
V2VpbmlnIiwgInNhbUB3ZWJraXQub3JnIiwgb3RoZXJfZW1haWxzPVsid2VpbmlnQGFwcGxlLmNv
bSJdKSwKICAgICBSZXZpZXdlcigiU2ltb24gRnJhc2VyIiwgInNpbW9uLmZyYXNlckBhcHBsZS5j
b20iKSwKLSAgICBSZXZpZXdlcigiU2ltb24gSGF1c21hbm4iLCAiaGF1c21hbm5Ad2Via2l0Lm9y
ZyIpLAorICAgIFJldmlld2VyKCJTaW1vbiBIYXVzbWFubiIsICJoYXVzbWFubkB3ZWJraXQub3Jn
Iiwgb3RoZXJfZW1haWxzPVsiaGF1c21hbm5Aa2RlLm9yZyJdKSwKICAgICBSZXZpZXdlcigiU3Rl
cGhhbmllIExld2lzIiwgInNsZXdpc0BhcHBsZS5jb20iKSwKICAgICBSZXZpZXdlcigiU3RldmUg
RmFsa2VuYnVyZyIsICJzZmFsa2VuQGFwcGxlLmNvbSIpLAotICAgIFJldmlld2VyKCJUaW1vdGh5
IEhhdGNoZXIiLCAidGltb3RoeUBoYXRjaGVyLm5hbWUiKSwKKyAgICBSZXZpZXdlcigiVGltb3Ro
eSBIYXRjaGVyIiwgInRpbW90aHlAaGF0Y2hlci5uYW1lIiwgb3RoZXJfZW1haWxzPVsidGltb3Ro
eUBhcHBsZS5jb20iXSksCisgICAgUmV2aWV3ZXIoIlRpbSBPbWVybmljayIsICJ0aW1vQGFwcGxl
LmNvbSIpLAogICAgIFJldmlld2VyKHUnVG9yIEFybmUgVmVzdGJceGY4JywgInZlc3Rib0B3ZWJr
aXQub3JnIiksCi0gICAgUmV2aWV3ZXIoIlhhbiBMb3BleiIsICJ4YW4ubG9wZXpAZ21haWwuY29t
IiksCisgICAgUmV2aWV3ZXIoIlZpY2tpIE11cmxleSIsICJ2aWNraUBhcHBsZS5jb20iKSwKKyAg
ICBSZXZpZXdlcigiWGFuIExvcGV6IiwgInhhbi5sb3BlekBnbWFpbC5jb20iLCBvdGhlcl9lbWFp
bHM9WyJ4YW5AZ25vbWUub3JnIiwgInhhbkB3ZWJraXQub3JnIl0pLAorICAgIFJldmlld2VyKCJa
YWNrIFJ1c2luIiwgInphY2tAa2RlLm9yZyIpLAogXQogCiAKQEAgLTE2MSwxOCArMjA1LDMyIEBA
IGNsYXNzIENvbW1pdHRlckxpc3Q6CiAgICAgICAgIHNlbGYuX2NvbW1pdHRlcnMgPSBjb21taXR0
ZXJzICsgcmV2aWV3ZXJzCiAgICAgICAgIHNlbGYuX3Jldmlld2VycyA9IHJldmlld2VycwogICAg
ICAgICBzZWxmLl9jb21taXR0ZXJzX2J5X2VtYWlsID0ge30KKyAgICAgICAgc2VsZi5fY29tbWl0
dGVyc19ieV9idWd6aWxsYV9lbWFpbCA9IHt9CiAKICAgICBkZWYgY29tbWl0dGVycyhzZWxmKToK
ICAgICAgICAgcmV0dXJuIHNlbGYuX2NvbW1pdHRlcnMKIAorICAgIGRlZiByZXZpZXdlcnMoc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLl9yZXZpZXdlcnMKKwogICAgIGRlZiBfZW1haWxfdG9f
Y29tbWl0dGVyX21hcChzZWxmKToKICAgICAgICAgaWYgbm90IGxlbihzZWxmLl9jb21taXR0ZXJz
X2J5X2VtYWlsKToKICAgICAgICAgICAgIGZvciBjb21taXR0ZXIgaW4gc2VsZi5fY29tbWl0dGVy
czoKLSAgICAgICAgICAgICAgICBzZWxmLl9jb21taXR0ZXJzX2J5X2VtYWlsW2NvbW1pdHRlci5i
dWd6aWxsYV9lbWFpbF0gPSBjb21taXR0ZXIKKyAgICAgICAgICAgICAgICBmb3IgZW1haWwgaW4g
Y29tbWl0dGVyLmFsbF9lbWFpbHMoKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29tbWl0
dGVyc19ieV9lbWFpbFtlbWFpbF0gPSBjb21taXR0ZXIKICAgICAgICAgcmV0dXJuIHNlbGYuX2Nv
bW1pdHRlcnNfYnlfZW1haWwKIAorICAgIGRlZiBfYnVnemlsbGFfZW1haWxfdG9fY29tbWl0dGVy
X21hcChzZWxmKToKKyAgICAgICAgaWYgbm90IGxlbihzZWxmLl9jb21taXR0ZXJzX2J5X2J1Z3pp
bGxhX2VtYWlsKToKKyAgICAgICAgICAgIGZvciBjb21taXR0ZXIgaW4gc2VsZi5fY29tbWl0dGVy
czoKKyAgICAgICAgICAgICAgICBzZWxmLl9jb21taXR0ZXJzX2J5X2J1Z3ppbGxhX2VtYWlsW2Nv
bW1pdHRlci5idWd6aWxsYV9lbWFpbF0gPSBjb21taXR0ZXIKKyAgICAgICAgcmV0dXJuIHNlbGYu
X2NvbW1pdHRlcnNfYnlfYnVnemlsbGFfZW1haWwKKworICAgIGRlZiBjb21taXR0ZXJfYnlfZW1h
aWwoc2VsZiwgZW1haWwpOgorICAgICAgICByZXR1cm4gc2VsZi5fZW1haWxfdG9fY29tbWl0dGVy
X21hcCgpLmdldChlbWFpbCkKKwogICAgIGRlZiBjb21taXR0ZXJfYnlfYnVnemlsbGFfZW1haWwo
c2VsZiwgYnVnemlsbGFfZW1haWwpOgotICAgICAgICByZXR1cm4gc2VsZi5fZW1haWxfdG9fY29t
bWl0dGVyX21hcCgpLmdldChidWd6aWxsYV9lbWFpbCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1
Z3ppbGxhX2VtYWlsX3RvX2NvbW1pdHRlcl9tYXAoKS5nZXQoYnVnemlsbGFfZW1haWwpCiAKICAg
ICBkZWYgcmV2aWV3ZXJfYnlfYnVnemlsbGFfZW1haWwoc2VsZiwgYnVnemlsbGFfZW1haWwpOgog
ICAgICAgICBjb21taXR0ZXIgPSBzZWxmLmNvbW1pdHRlcl9ieV9idWd6aWxsYV9lbWFpbChidWd6
aWxsYV9lbWFpbCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvdmFsaWRhdGUtY29t
bWl0dGVyLWxpc3RzIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy92YWxpZGF0ZS1jb21taXR0ZXItbGlz
dHMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTdiNmI5OQotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvdmFsaWRhdGUtY29tbWl0dGVyLWxpc3RzCkBA
IC0wLDAgKzEsMjU3IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKGMp
IDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykg
MjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisjCisjIENoZWNrcyBQeXRob24ncyBrbm93biBsaXN0IG9mIGNvbW1pdHRlcnMgYWdhaW5zdCBs
aXN0cy53ZWJraXQub3JnLgorCisKK2ltcG9ydCBvcworaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9y
dCByZQoraW1wb3J0IHVybGxpYjIKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGUsIGRhdGV0aW1l
LCB0aW1lZGVsdGEKK2Zyb20gbW9kdWxlcy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0
Citmcm9tIG1vZHVsZXMubG9nZ2luZyBpbXBvcnQgbG9nLCBlcnJvcgorCisjIFdlYktpdCBpbmNs
dWRlcyBhIGJ1aWx0IGNvcHkgb2YgQmVhdXRpZnVsU291cCBpbiBTY3JpcHRzL21vZHVsZXMKKyMg
c28gdGhpcyBpbXBvcnQgc2hvdWxkIGFsd2F5cyBzdWNjZWVkLgorZnJvbSBtb2R1bGVzLkJlYXV0
aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAKKworZGVmIHByaW50X2xpc3RfaWZfbm9uX2Vt
cHR5KHRpdGxlLCBsaXN0X3RvX3ByaW50KToKKyAgICBpZiBub3QgbGlzdF90b19wcmludDoKKyAg
ICAgICAgcmV0dXJuCisgICAgcHJpbnQgIyBOZXdsaW5lIGJlZm9yZSB0aGUgbGlzdAorICAgIHBy
aW50IHRpdGxlCisgICAgZm9yIGl0ZW0gaW4gbGlzdF90b19wcmludDoKKyAgICAgICAgcHJpbnQg
aXRlbQorCitjbGFzcyBDb21taXR0ZXJMaXN0RnJvbU1haWxpbmdMaXN0OgorICAgIGNvbW1pdHRl
cnNfbGlzdF91cmwgPSAiaHR0cDovL2xpc3RzLndlYmtpdC5vcmcvbWFpbG1hbi9yb3N0ZXIuY2dp
L3dlYmtpdC1jb21taXR0ZXJzIgorICAgIHJldmlld2Vyc19saXN0X3VybCA9ICJodHRwOi8vbGlz
dHMud2Via2l0Lm9yZy9tYWlsbWFuL3Jvc3Rlci5jZ2kvd2Via2l0LXJldmlld2VycyIKKworICAg
IGRlZiBfZmV0Y2hfZW1haWxzX2Zyb21fcGFnZShzZWxmLCB1cmwpOgorICAgICAgICBwYWdlID0g
dXJsbGliMi51cmxvcGVuKHVybCkKKyAgICAgICAgc291cCA9IEJlYXV0aWZ1bFNvdXAocGFnZSkK
KworICAgICAgICBlbWFpbHMgPSBbXQorICAgICAgICAjIEdyYWIgdGhlIGNlbGxzIGluIHRoZSBm
aXJzdCBjb2x1bW4gKHdoaWNoIGhhcHBlbnMgdG8gYmUgdGhlIGJ1ZyBpZHMpCisgICAgICAgIGZv
ciBlbWFpbF9pdGVtIGluIHNvdXAoJ2xpJyk6CisgICAgICAgICAgICBlbWFpbF9saW5rID0gZW1h
aWxfaXRlbS5maW5kKCJhIikKKyAgICAgICAgICAgIGVtYWlsID0gZW1haWxfbGluay5zdHJpbmcu
cmVwbGFjZSgiIGF0ICIsICJAIikgIyBlbWFpbCBpcyBvYmZ1c2NhdGVkIHVzaW5nICIgYXQgIiBp
bnN0ZWFkIG9mICJAIgorICAgICAgICAgICAgZW1haWxzLmFwcGVuZChlbWFpbCkKKyAgICAgICAg
cmV0dXJuIGVtYWlscworCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBvcGVuX2J1Z3ppbGxh
X2VkaXRfcGFnZXNfZm9yX2VtYWlscyhlbWFpbHMpOgorICAgICAgICB1c2VyX2xvb2t1cF91cmwg
PSAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvZWRpdHVzZXJzLmNnaT9hY3Rpb249bGlzdCZtYXRj
aHZhbHVlPWxvZ2luX25hbWUmbWF0Y2h0eXBlPXN1YnN0ciZncm91cGlkPTcmbWF0Y2hzdHI9Igor
ICAgICAgICBmb3IgZW1haWwgaW4gZW1haWxzOgorICAgICAgICAgICAgb3Muc3lzdGVtKCJvcGVu
IFwiIiArIHVzZXJfbG9va3VwX3VybCArIGVtYWlsICsgIlwiIikKKworICAgIEBzdGF0aWNtZXRo
b2QKKyAgICBkZWYgY29tbWl0ZXJzX25vdF9mb3VuZF9pbl9lbWFpbF9saXN0KGNvbW1pdHRlcnMs
IGVtYWlscyk6CisgICAgICAgIG1pc3NpbmdfZnJvbV9tYWlsaW5nX2xpc3QgPSBbXQorICAgICAg
ICBmb3IgY29tbWl0dGVyIGluIGNvbW1pdHRlcnM6CisgICAgICAgICAgICBmb3IgZW1haWwgaW4g
Y29tbWl0dGVyLmFsbF9lbWFpbHMoKToKKyAgICAgICAgICAgICAgICBpZiBlbWFpbCBpbiBlbWFp
bHM6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgIG1pc3NpbmdfZnJvbV9tYWlsaW5nX2xpc3QuYXBwZW5kKGNvbW1pdHRlcikKKyAg
ICAgICAgcmV0dXJuIG1pc3NpbmdfZnJvbV9tYWlsaW5nX2xpc3QKKworICAgIEBzdGF0aWNtZXRo
b2QKKyAgICBkZWYgZW1haWxzX25vdF9mb3VuZF9pbl9jb21taXR0ZXJfbGlzdChjb21taXR0ZXJz
LCBlbWFpbHMpOgorICAgICAgICBlbWFpbF90b19jb21taXR0ZXJfbWFwID0ge30KKyAgICAgICAg
Zm9yIGNvbW1pdHRlciBpbiBjb21taXR0ZXJzOgorICAgICAgICAgICAgZm9yIGVtYWlsIGluIGNv
bW1pdHRlci5hbGxfZW1haWxzKCk6CisgICAgICAgICAgICAgICAgZW1haWxfdG9fY29tbWl0dGVy
X21hcFtlbWFpbF0gPSBjb21taXR0ZXIKKworICAgICAgICByZXR1cm4gZmlsdGVyKGxhbWJkYSBl
bWFpbDogbm90IGVtYWlsX3RvX2NvbW1pdHRlcl9tYXAuZ2V0KGVtYWlsKSwgZW1haWxzKQorCisg
ICAgZGVmIGNoZWNrX2Zvcl9lbWFpbHNfbWlzc2luZ19mcm9tX2xpc3Qoc2VsZiwgY29tbWl0dGVy
X2xpc3QpOgorICAgICAgICBjb21taXR0ZXJfZW1haWxzID0gc2VsZi5fZmV0Y2hfZW1haWxzX2Zy
b21fcGFnZShzZWxmLmNvbW1pdHRlcnNfbGlzdF91cmwpCisgICAgICAgIGxpc3RfbmFtZSA9ICJ3
ZWJraXQtY29tbWl0dGVyc0BsaXN0cy53ZWJraXQub3JnIgorCisgICAgICAgIG1pc3NpbmdfZnJv
bV9tYWlsaW5nX2xpc3QgPSBzZWxmLmNvbW1pdGVyc19ub3RfZm91bmRfaW5fZW1haWxfbGlzdChj
b21taXR0ZXJfbGlzdC5jb21taXR0ZXJzKCksIGNvbW1pdHRlcl9lbWFpbHMpCisgICAgICAgIHBy
aW50X2xpc3RfaWZfbm9uX2VtcHR5KCJDb21taXR0ZXJzIG1pc3NpbmcgZnJvbSAlczoiICUgbGlz
dF9uYW1lLCBtaXNzaW5nX2Zyb21fbWFpbGluZ19saXN0KQorCisgICAgICAgIHVzZXJzX21pc3Np
bmdfZnJvbV9jb21taXR0ZXJzID0gc2VsZi5lbWFpbHNfbm90X2ZvdW5kX2luX2NvbW1pdHRlcl9s
aXN0KGNvbW1pdHRlcl9saXN0LmNvbW1pdHRlcnMoKSwgY29tbWl0dGVyX2VtYWlscykKKyAgICAg
ICAgcHJpbnRfbGlzdF9pZl9ub25fZW1wdHkoIlN1YmNyaWJlcnMgdG8gJXMgbWlzc2luZyBmcm9t
IGNvbW1pdHRlci5weToiICUgbGlzdF9uYW1lLCB1c2Vyc19taXNzaW5nX2Zyb21fY29tbWl0dGVy
cykKKworCisgICAgICAgIHJldmlld2VyX2VtYWlscyA9IHNlbGYuX2ZldGNoX2VtYWlsc19mcm9t
X3BhZ2Uoc2VsZi5yZXZpZXdlcnNfbGlzdF91cmwpCisgICAgICAgIGxpc3RfbmFtZSA9ICJ3ZWJr
aXQtcmV2aWV3ZXJzQGxpc3RzLndlYmtpdC5vcmciCisKKyAgICAgICAgbWlzc2luZ19mcm9tX21h
aWxpbmdfbGlzdCA9IHNlbGYuY29tbWl0ZXJzX25vdF9mb3VuZF9pbl9lbWFpbF9saXN0KGNvbW1p
dHRlcl9saXN0LnJldmlld2VycygpLCByZXZpZXdlcl9lbWFpbHMpCisgICAgICAgIHByaW50X2xp
c3RfaWZfbm9uX2VtcHR5KCJSZXZpZXdlcnMgbWlzc2luZyBmcm9tICVzOiIgJSBsaXN0X25hbWUs
IG1pc3NpbmdfZnJvbV9tYWlsaW5nX2xpc3QpCisKKyAgICAgICAgbWlzc2luZ19mcm9tX3Jldmll
d2VycyA9IHNlbGYuZW1haWxzX25vdF9mb3VuZF9pbl9jb21taXR0ZXJfbGlzdChjb21taXR0ZXJf
bGlzdC5yZXZpZXdlcnMoKSwgcmV2aWV3ZXJfZW1haWxzKQorICAgICAgICBwcmludF9saXN0X2lm
X25vbl9lbXB0eSgiU3ViY3JpYmVycyB0byAlcyBtaXNzaW5nIGZyb20gcmV2aWV3ZXJzIGluIGNv
bW1pdHRlci5weToiICUgbGlzdF9uYW1lLCBtaXNzaW5nX2Zyb21fcmV2aWV3ZXJzKQorCisgICAg
ICAgIG1pc3NpbmdfZnJvbV9jb21taXR0ZXJzID0gc2VsZi5lbWFpbHNfbm90X2ZvdW5kX2luX2Nv
bW1pdHRlcl9saXN0KGNvbW1pdHRlcl9saXN0LmNvbW1pdHRlcnMoKSwgcmV2aWV3ZXJfZW1haWxz
KQorICAgICAgICBwcmludF9saXN0X2lmX25vbl9lbXB0eSgiU3ViY3JpYmVycyB0byAlcyBjb21w
bGV0ZWx5IG1pc3NpbmcgZnJvbSBjb21taXR0ZXJzLnB5IiAlIGxpc3RfbmFtZSwgbWlzc2luZ19m
cm9tX2NvbW1pdHRlcnMpCisKKworY2xhc3MgQ29tbWl0dGVyTGlzdEZyb21HaXQ6CisgICAgbG9n
aW5fdG9fZW1haWxfYWRkcmVzcyA9IHsKKyAgICAgICAgJ2FsaWNlbGkxJyA6ICdhbGljZS5saXVA
YXBwbGUuY29tJywKKyAgICAgICAgJ2JkYXNoJyA6ICdtcm93ZUBhcHBsZS5jb20nLAorICAgICAg
ICAnYmRpYmVsbG8nIDogJ2JkaWJlbGxvQGFwcGxlLmNvbScsICMgQnJ1Y2UgRGlCZWxsbywgb25s
eSA0IGNvbW1pdHM6IHIxMDAyMywgcjk1NDgsIHI5NTM4LCByOTUzNQorICAgICAgICAnY2JsdScg
OiAnY2JsdUBhcHBsZS5jb20nLAorICAgICAgICAnY3BldGVyc2UnIDogJ2NwZXRlcnNlbkBhcHBs
ZS5jb20nLAorICAgICAgICAnZXNlaWRlbCcgOiAnZXJpY0B3ZWJraXQub3JnJywKKyAgICAgICAg
J2dkZW5uaXMnIDogJ2dkZW5uaXNAd2Via2l0Lm9yZycsCisgICAgICAgICdnb2xkc21pdCcgOiAn
Z29sZHNtaXRAYXBwbGUuY29tJywgIyBEZWJiaWUgR29sZHNtaXRoLCBvbmx5IG9uZSBjb21taXQg
cjg4MzkKKyAgICAgICAgJ2dyYW1wcycgOiAnZ3JhbXBzQGFwcGxlLmNvbScsCisgICAgICAgICdo
b25leWN1dHQnIDogJ2pob25leWN1dHRAYXBwbGUuY29tJywKKyAgICAgICAgJ2pkZXZhbGsnIDog
J2pvb3N0QHdlYmtpdC5vcmcnLAorICAgICAgICAnamVucycgOiAnamVuc0BhcHBsZS5jb20nLAor
ICAgICAgICAnanVzdGluZycgOiAnanVzdGluLmdhcmNpYUBhcHBsZS5jb20nLAorICAgICAgICAn
a2FsaScgOiAna2FsaUBhcHBsZS5jb20nLCAjIENocmlzdHkgV2FycmVuLCBkaWQgQklESSB3b3Jr
LCA1IGNvbW1pdHM6IHI4ODE1LCByODgwMiwgcjg4MDEsIHI4NzkxLCByODc3Mywgcjg2MDMKKyAg
ICAgICAgJ2tqaycgOiAna2tvd2FsY3p5a0BnbWFpbC5jb20nLAorICAgICAgICAna21jY3VsbG8n
IDogJ2ttY2N1bGxvdWdoQGFwcGxlLmNvbScsCisgICAgICAgICdrb2NpZW5kYScgOiAna29jaWVu
ZGFAYXBwbGUuY29tJywKKyAgICAgICAgJ2xhbWFkaW8nIDogJ2xhbWFkaW9AYXBwbGUuY29tJywg
IyBMb3UgQW1hZGlvLCBvbmx5IDIgY29tbWl0czogcjE3OTQ5IGFuZCByMTc3ODMKKyAgICAgICAg
J2xhcnMnIDogJ2xhcnNAa2RlLm9yZycsCisgICAgICAgICdsd2VpbnRyYXViJyA6ICdsd2VpbnRy
YXViQGFwcGxlLmNvbScsCisgICAgICAgICdseXBhbm92JyA6ICdseXBhbm92QGtkZS5vcmcnLAor
ICAgICAgICAnbWhheScgOiAnbWhheUBhcHBsZS5jb20nLCAjIE1pa2UgSGF5LCAzIGNvbW1pdHM6
IHIzODEzLCByMjU1MiwgcjI1NDgKKyAgICAgICAgJ291Y2gnIDogJ291Y2hAYXBwbGUuY29tJywg
IyBKb2huIExvdWNoCisgICAgICAgICdweWVoJyA6ICdwYXR0aUBhcHBsZS5jb20nLCAjIFBhdHRp
IFllaCwgZGlkIFZvaWNlT3ZlciB3b3JrIGluIFdlYktpdAorICAgICAgICAncmp3JyA6ICdyandA
YXBwbGUuY29tJywKKyAgICAgICAgJ3NlYW5naWVzJyA6ICdzZWFuZ2llc0BhcHBsZS5jb20nLCAj
IFNlYW4gR2llcz8sIG9ubHkgNSBjb21taXRzOiByMTY2MDAsIHIxNjU5MiwgcjE2NTExLCByMTY0
ODksIHIxNjQ4NAorICAgICAgICAnc2hlcmlkYW4nIDogJ3NoZXJpZGFuQGFwcGxlLmNvbScsICMg
U2hlbGx5IFNoZXJpZGFuCisgICAgICAgICd0aGF0Y2hlcicgOiAndGltb3RoeUBhcHBsZS5jb20n
LAorICAgICAgICAndG9tZXJuaWMnIDogJ3RpbW9AYXBwbGUuY29tJywKKyAgICAgICAgJ3RyZXkn
IDogJ3RyZXlAdXNhLm5ldCcsCisgICAgICAgICd0cmlzdGFuJyA6ICd0cmlzdGFuQGFwcGxlLmNv
bScsCisgICAgICAgICd2aWNraScgOiAndmlja2lAYXBwbGUuY29tJywKKyAgICAgICAgJ3ZvYXMn
IDogJ3ZvYXNAYXBwbGUuY29tJywgIyBFZCBWb2FzLCBkaWQgc29tZSBDYXJib24gd29yayBpbiBX
ZWJLaXQKKyAgICAgICAgJ3phY2snIDogJ3phY2tAa2RlLm9yZycsCisgICAgICAgICd6aW1tZXJt
YW5uJyA6ICd6aW1tZXJtYW5uQHdlYmtpdC5vcmcnLAorICAgIH0KKworICAgIGRlZiBfX2luaXRf
XyhzZWxmKToKKyAgICAgICAgc2VsZi5fbGFzdF9jb21taXRfdGltZV9ieV9hdXRob3JfY2FjaGUg
PSB7fQorCisgICAgZGVmIF9mZXRjaF9hdXRob3JzX2FuZF9sYXN0X2NvbW1pdF90aW1lX2Zyb21f
Z2l0X2xvZyhzZWxmKToKKyAgICAgICAgbGFzdF9jb21taXRfZGF0ZXMgPSB7fQorICAgICAgICBn
aXRfbG9nX2FyZ3MgPSBbJ2dpdCcsICdsb2cnLCAnLS1yZXZlcnNlJywgJy0tcHJldHR5PWZvcm1h
dDolYWUgJWF0J10KKyAgICAgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oZ2l0X2xvZ19h
cmdzLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorCisgICAgICAgICMgZXJpY0B3ZWJraXQub3Jn
QDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYyAxMjU3MDkwODk5CisgICAgICAg
IGxpbmVfcmVnZXhwID0gcmUuY29tcGlsZSgiXig/UDxhdXRob3I+LispQFxTKyAoP1A8dGltZXN0
YW1wPlxkKykkIikKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIG91dHB1dF9saW5l
ID0gcHJvY2Vzcy5zdGRvdXQucmVhZGxpbmUoKQorICAgICAgICAgICAgaWYgb3V0cHV0X2xpbmUg
PT0gJycgYW5kIHByb2Nlc3MucG9sbCgpICE9IE5vbmU6CisgICAgICAgICAgICAgICAgcmV0dXJu
IGxhc3RfY29tbWl0X2RhdGVzCisKKyAgICAgICAgICAgIG1hdGNoX3Jlc3VsdCA9IGxpbmVfcmVn
ZXhwLm1hdGNoKG91dHB1dF9saW5lKQorICAgICAgICAgICAgaWYgbm90IG1hdGNoX3Jlc3VsdDoK
KyAgICAgICAgICAgICAgICBlcnJvcigiRmFpbGVkIHRvIG1hdGNoIGxpbmU6ICVzIiAlIG91dHB1
dF9saW5lKQorICAgICAgICAgICAgbGFzdF9jb21taXRfZGF0ZXNbbWF0Y2hfcmVzdWx0Lmdyb3Vw
KCdhdXRob3InKV0gPSBmbG9hdChtYXRjaF9yZXN1bHQuZ3JvdXAoJ3RpbWVzdGFtcCcpKQorCisg
ICAgZGVmIF9maWxsX2luX2VtYWlsc19mb3Jfb2xkX2xvZ2lucyhzZWxmKToKKyAgICAgICAgYXV0
aG9yc19taXNzaW5nX2VtYWlsID0gZmlsdGVyKGxhbWJkYSBhdXRob3I6IGF1dGhvci5maW5kKCdA
JykgPT0gLTEsIHNlbGYuX2xhc3RfY29tbWl0X3RpbWVfYnlfYXV0aG9yX2NhY2hlKQorICAgICAg
ICBhdXRob3JzX3dpdGhfZW1haWwgPSBmaWx0ZXIobGFtYmRhIGF1dGhvcjogYXV0aG9yLmZpbmQo
J0AnKSAhPSAtMSwgc2VsZi5fbGFzdF9jb21taXRfdGltZV9ieV9hdXRob3JfY2FjaGUpCisgICAg
ICAgIHByZWZpeGVzX29mX2F1dGhvcnNfd2l0aF9lbWFpbCA9IG1hcChsYW1iZGEgYXV0aG9yOiBh
dXRob3Iuc3BsaXQoJ0AnKVswXSwgYXV0aG9yc193aXRoX2VtYWlsKQorCisgICAgICAgIGZvciBh
dXRob3IgaW4gYXV0aG9yc19taXNzaW5nX2VtYWlsOgorICAgICAgICAgICAgIyBGaXJzdCBjaGVj
ayB0byBzZWUgaWYgd2UgaGF2ZSBhIG1hbnVhbCBtYXBwaW5nIGZyb20gbG9naW4gdG8gZW1haWwu
CisgICAgICAgICAgICBhdXRob3JfZW1haWwgPSBzZWxmLmxvZ2luX3RvX2VtYWlsX2FkZHJlc3Mu
Z2V0KGF1dGhvcikKKworICAgICAgICAgICAgIyBNb3N0IG9sZCBsb2dpbnMgbGlrZSAnZGFyaW4n
IGFyZSBub3cganVzdCAnZGFyaW5AYXBwbGUuY29tJywgc28gY2hlY2sgZm9yIGEgcHJlZml4IG1h
dGNoIGlmIGEgbWFudWFsIG1hcHBpbmcgd2FzIG5vdCBmb3VuZC4KKyAgICAgICAgICAgIGlmIG5v
dCBhdXRob3JfZW1haWwgYW5kIGF1dGhvciBpbiBwcmVmaXhlc19vZl9hdXRob3JzX3dpdGhfZW1h
aWw6CisgICAgICAgICAgICAgICAgYXV0aG9yX2VtYWlsX2luZGV4ID0gcHJlZml4ZXNfb2ZfYXV0
aG9yc193aXRoX2VtYWlsLmluZGV4KGF1dGhvcikKKyAgICAgICAgICAgICAgICBhdXRob3JfZW1h
aWwgPSBhdXRob3JzX3dpdGhfZW1haWxbYXV0aG9yX2VtYWlsX2luZGV4XQorCisgICAgICAgICAg
ICBpZiBub3QgYXV0aG9yX2VtYWlsOgorICAgICAgICAgICAgICAgICMgTm8ga25vd24gZW1haWwg
bWFwcGluZywgbGlrZWx5IG5vdCBhbiBhY3RpdmUgY29tbWl0dGVyLiAgV2UgY291bGQgbG9nIGhl
cmUuCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgIyBsb2coIiVzIC0+
ICVzIiAlIChhdXRob3IsIGF1dGhvcl9lbWFpbCkpICMgRm9yIHNhbml0eSBjaGVja2luZy4KKyAg
ICAgICAgICAgIG5vX2VtYWlsX2NvbW1pdF90aW1lID0gc2VsZi5fbGFzdF9jb21taXRfdGltZV9i
eV9hdXRob3JfY2FjaGUuZ2V0KGF1dGhvcikKKyAgICAgICAgICAgIGVtYWlsX2NvbW1pdF90aW1l
ID0gc2VsZi5fbGFzdF9jb21taXRfdGltZV9ieV9hdXRob3JfY2FjaGUuZ2V0KGF1dGhvcl9lbWFp
bCkKKyAgICAgICAgICAgICMgV2UgY29tcGFyZSB0aGUgdGltZXN0YW1wcyBmb3IgZXh0cmEgc2Fu
aXR5IGV2ZW4gdGhvdWdoIHdlIGNvdWxkIGFzc3VtZSBjb21taXRzIGJlZm9yZSBlbWFpbCBhZGRy
ZXNzIHdlcmUgdXNlZCBmb3IgbG9naW4gYXJlIGFsd2F5cyBnb2luZyB0byBiZSBvbGRlci4KKyAg
ICAgICAgICAgIGlmIG5vdCBlbWFpbF9jb21taXRfdGltZSBvciBlbWFpbF9jb21taXRfdGltZSA8
IG5vX2VtYWlsX2NvbW1pdF90aW1lOgorICAgICAgICAgICAgICAgIHNlbGYuX2xhc3RfY29tbWl0
X3RpbWVfYnlfYXV0aG9yX2NhY2hlW2F1dGhvcl9lbWFpbF0gPSBub19lbWFpbF9jb21taXRfdGlt
ZQorICAgICAgICAgICAgZGVsIHNlbGYuX2xhc3RfY29tbWl0X3RpbWVfYnlfYXV0aG9yX2NhY2hl
W2F1dGhvcl0KKworICAgIGRlZiBfbGFzdF9jb21taXRfYnlfYXV0aG9yKHNlbGYpOgorICAgICAg
ICBpZiBub3Qgc2VsZi5fbGFzdF9jb21taXRfdGltZV9ieV9hdXRob3JfY2FjaGU6CisgICAgICAg
ICAgICBzZWxmLl9sYXN0X2NvbW1pdF90aW1lX2J5X2F1dGhvcl9jYWNoZSA9IHNlbGYuX2ZldGNo
X2F1dGhvcnNfYW5kX2xhc3RfY29tbWl0X3RpbWVfZnJvbV9naXRfbG9nKCkKKyAgICAgICAgICAg
IHNlbGYuX2ZpbGxfaW5fZW1haWxzX2Zvcl9vbGRfbG9naW5zKCkKKyAgICAgICAgICAgIGRlbCBz
ZWxmLl9sYXN0X2NvbW1pdF90aW1lX2J5X2F1dGhvcl9jYWNoZVsnKG5vIGF1dGhvciknXSAjIFRo
ZSBpbml0aWFsIHN2biBpbXBvcnQgaXNuJ3QgdmVyeSB1c2VmdWwuCisgICAgICAgIHJldHVybiBz
ZWxmLl9sYXN0X2NvbW1pdF90aW1lX2J5X2F1dGhvcl9jYWNoZQorCisgICAgQHN0YXRpY21ldGhv
ZAorICAgIGRlZiBwcmludF90aHJlZV9jb2x1bW5fcm93KHdpZHRocywgdmFsdWVzKToKKyAgICAg
ICAgcHJpbnQgIiVzJXMlcyIgJSAodmFsdWVzWzBdLmxqdXN0KHdpZHRoc1swXSksIHZhbHVlc1sx
XS5sanVzdCh3aWR0aHNbMV0pLCB2YWx1ZXNbMl0pCisKKyAgICBkZWYgcHJpbnRfY29tbWl0dGVy
c19hbmRfbGFzdF9jb21taXRfdGltZShzZWxmLCBjb21taXR0ZXJfbGlzdCk6CisgICAgICAgIGF1
dGhvcnNfYW5kX2xhc3RfY29tbWl0cyA9IHNlbGYuX2xhc3RfY29tbWl0X2J5X2F1dGhvcigpLml0
ZW1zKCkKKyAgICAgICAgYXV0aG9yc19hbmRfbGFzdF9jb21taXRzLnNvcnQobGFtYmRhIGEsYjog
Y21wKGFbMV0sIGJbMV0pLCByZXZlcnNlPVRydWUpCisgICAgICAgIGNvbW1pdHRlcl9jdXR0b2Yg
PSBkYXRlLnRvZGF5KCkgLSB0aW1lZGVsdGEoZGF5cz0zNjUpCisgICAgICAgIGNvbHVtbl93aWR0
aHMgPSBbMTMsIDI1XQorICAgICAgICBwcmludAorICAgICAgICBwcmludCAiQ29tbWl0dGVycyB3
aG8gaGF2ZSBub3QgY29tbWl0dGVkIHdpdGhpbiBvbmUgeWVhcjoiCisgICAgICAgIHNlbGYucHJp
bnRfdGhyZWVfY29sdW1uX3Jvdyhjb2x1bW5fd2lkdGhzLCAoIkxhc3QgQ29tbWl0IiwgIkNvbW1p
dHRlciBFbWFpbCIsICJDb21taXR0ZXIgUmVjb3JkIikpCisgICAgICAgIGZvciAoYXV0aG9yLCBs
YXN0X2NvbW1pdCkgaW4gYXV0aG9yc19hbmRfbGFzdF9jb21taXRzOgorICAgICAgICAgICAgbGFz
dF9jb21taXRfZGF0ZSA9IGRhdGUuZnJvbXRpbWVzdGFtcChsYXN0X2NvbW1pdCkKKyAgICAgICAg
ICAgIGlmIGNvbW1pdHRlcl9jdXR0b2YgPiBsYXN0X2NvbW1pdF9kYXRlOgorICAgICAgICAgICAg
ICAgIGNvbW1pdHRlcl9yZWNvcmQgPSBjb21taXR0ZXJfbGlzdC5jb21taXR0ZXJfYnlfZW1haWwo
YXV0aG9yKQorICAgICAgICAgICAgICAgIHNlbGYucHJpbnRfdGhyZWVfY29sdW1uX3Jvdyhjb2x1
bW5fd2lkdGhzLCAoc3RyKGxhc3RfY29tbWl0X2RhdGUpLCBhdXRob3IsIGNvbW1pdHRlcl9yZWNv
cmQpKQorCisgICAgZGVmIHByaW50X2NvbW1pdHRlcnNfbWlzc2luZ19mcm9tX2NvbW1pdHRlcl9s
aXN0KHNlbGYsIGNvbW1pdHRlcl9saXN0KToKKyAgICAgICAgbWlzc2luZ19mcm9tX2NvbW1pdHRl
cnNfcHkgPSBbXQorICAgICAgICBsYXN0X2NvbW1pdF90aW1lX2J5X2F1dGhvciA9IHNlbGYuX2xh
c3RfY29tbWl0X2J5X2F1dGhvcigpCisgICAgICAgIGZvciBhdXRob3IgaW4gbGFzdF9jb21taXRf
dGltZV9ieV9hdXRob3I6CisgICAgICAgICAgICBpZiBub3QgY29tbWl0dGVyX2xpc3QuY29tbWl0
dGVyX2J5X2VtYWlsKGF1dGhvcik6CisgICAgICAgICAgICAgICAgbWlzc2luZ19mcm9tX2NvbW1p
dHRlcnNfcHkuYXBwZW5kKGF1dGhvcikKKworICAgICAgICBuZXZlcl9jb21taXR0ZWQgPSBbXQor
ICAgICAgICBmb3IgY29tbWl0dGVyIGluIGNvbW1pdHRlcl9saXN0LmNvbW1pdHRlcnMoKToKKyAg
ICAgICAgICAgIGZvciBlbWFpbCBpbiBjb21taXR0ZXIuYWxsX2VtYWlscygpOgorICAgICAgICAg
ICAgICAgIGlmIGxhc3RfY29tbWl0X3RpbWVfYnlfYXV0aG9yLmdldChlbWFpbCk6CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5l
dmVyX2NvbW1pdHRlZC5hcHBlbmQoY29tbWl0dGVyKQorCisgICAgICAgIHByaW50X2xpc3RfaWZf
bm9uX2VtcHR5KCJIaXN0b3JpY2FsIGNvbW1pdHRlcnMgbWlzc2luZyBmcm9tIGNvbW1pdHRlci5w
eToiLCBtaXNzaW5nX2Zyb21fY29tbWl0dGVyc19weSkKKyAgICAgICAgcHJpbnRfbGlzdF9pZl9u
b25fZW1wdHkoIkNvbW1pdHRlcnMgaW4gY29tbWl0dGVyLnB5IHdobyBoYXZlIG5ldmVyIGNvbW1p
dHRlZDoiLCBuZXZlcl9jb21taXR0ZWQpCisKKworZGVmIG1haW4oKToKKyAgICBjb21taXR0ZXJf
bGlzdCA9IENvbW1pdHRlckxpc3QoKQorICAgIENvbW1pdHRlckxpc3RGcm9tTWFpbGluZ0xpc3Qo
KS5jaGVja19mb3JfZW1haWxzX21pc3NpbmdfZnJvbV9saXN0KGNvbW1pdHRlcl9saXN0KQorICAg
IENvbW1pdHRlckxpc3RGcm9tR2l0KCkucHJpbnRfY29tbWl0dGVyc19hbmRfbGFzdF9jb21taXRf
dGltZShjb21taXR0ZXJfbGlzdCkKKyAgICBDb21taXR0ZXJMaXN0RnJvbUdpdCgpLnByaW50X2Nv
bW1pdHRlcnNfbWlzc2luZ19mcm9tX2NvbW1pdHRlcl9saXN0KGNvbW1pdHRlcl9saXN0KQorCitp
ZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIG1haW4oKQ==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>42352</attachid>
            <date>2009-11-02 17:36:58 -0800</date>
            <delta_ts>2009-11-02 17:36:58 -0800</delta_ts>
            <desc>Example output from the script</desc>
            <filename>:tmp:output.txt</filename>
            <type>text/plain</type>
            <size>4063</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">PiAuL3ZhbGlkYXRlLWNvbW1pdHRlci1saXN0cwoKQ29tbWl0dGVycyBtaXNzaW5nIGZyb20gd2Vi
a2l0LWNvbW1pdHRlcnNAbGlzdHMud2Via2l0Lm9yZzoKIkFudG9uaW8gR29tZXMiIDx0b25pa2l0
b29Ad2Via2l0Lm9yZz4KIkJlbmphbWluIEMgTWV5ZXIiIDxiZW5AbWV5ZXJob21lLm5ldD4KIkRh
dmlkIFNtaXRoIiA8Y2F0ZmlzaC5tYW5AZ21haWwuY29tPgoiRWxpIEZpZGxlciIgPGVsaUBzdGFp
a29zLm5ldD4KIkhpbi1DaHVuZyBMYW0iIDxoY2xhbUBnb29nbGUuY29tPgoiSmVucyBBbGZrZSIg
PHNuZWpAY2hyb21pdW0ub3JnPgoiSmVyZW15IE1vc2tvdmljaCIgPHBsYXltb2JpbEBnb29nbGUu
Y29tPgoiSm9obiBBYmQtRWwtTWFsZWsiIDxqYW1AY2hyb21pdW0ub3JnPgoiTGFzemxvIEdvbWJv
cyIgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiJMZXZpIFdlaW50cmF1YiIgPGx3ZWludHJh
dWJAYXBwbGUuY29tPgoiTWF4aW1lIEJyaXR0byIgPG1heGltZS5icml0dG9AZ21haWwuY29tPgoi
TWlrZSBCZWxzaGUiIDxtaWtlQGJlbHNoZS5jb20+CiJQaWVycmUgZCdIZXJiZW1vbnQiIDxwZGhl
cmJlbW9udEBmcmVlLmZyPgoiU2NvdHQgVmlvbGV0IiA8c2t5QGNocm9taXVtLm9yZz4KIllhZWwg
QWhhcm9uIiA8eWFlbC5haGFyb25Abm9raWEuY29tPgoiWW9uZyBMaSIgPHlvbmcubGlAdG9yY2ht
b2JpbGUuY29tPgoKU3ViY3JpYmVycyB0byB3ZWJraXQtY29tbWl0dGVyc0BsaXN0cy53ZWJraXQu
b3JnIG1pc3NpbmcgZnJvbSBjb21taXR0ZXIucHk6CmFnb2xkZW5AYXBwbGUuY29tCmJyYWRsZXku
bW9ycmlzb25Abm9raWEuY29tCmRhY2Fyc29uQGdtYWlsLmNvbQplbnJpY2FAYXBwbGUuY29tCmtj
YWxob3VuQGFwcGxlLmNvbQpraW1tb2tAaWtpLmZpCmt2dkBhcHBsZS5jb20KbGZpZ3Vyc2thQGFw
cGxlLmNvbQptYWxAY2hyb21pdW0ub3JnCnBhdHR5QGFwcGxlLmNvbQp0b2xtYXNreUBhcHBsZS5j
b20KdmxhZGluZWNrb0B3ZWJraXQub3JnCnphbGFuLmJ1anRhc0Bub2tpYS5jb20KClJldmlld2Vy
cyBtaXNzaW5nIGZyb20gd2Via2l0LXJldmlld2Vyc0BsaXN0cy53ZWJraXQub3JnOgoiQ2hyaXMg
Qmx1bWVuYmVyZyIgPGNibHVAYXBwbGUuY29tPgoiS2VuIEtvY2llbmRhIiA8a29jaWVuZGFAYXBw
bGUuY29tPgoiS2V2aW4gT2xsaXZpZXIiIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIlJpY2hh
cmQgV2lsbGlhbXNvbiIgPHJqd0BhcHBsZS5jb20+CiJUaW0gT21lcm5pY2siIDx0aW1vQGFwcGxl
LmNvbT4KIlZpY2tpIE11cmxleSIgPHZpY2tpQGFwcGxlLmNvbT4KIlphY2sgUnVzaW4iIDx6YWNr
QGtkZS5vcmc+CgpDb21taXR0ZXJzIHdobyBoYXZlIG5vdCBjb21taXR0ZWQgd2l0aGluIG9uZSB5
ZWFyOgpMYXN0IENvbW1pdCAgQ29tbWl0dGVyIEVtYWlsICAgICAgICAgIENvbW1pdHRlciBSZWNv
cmQKMjAwOC0wOS0yMCAgIGNvbGxpbmpAd2Via2l0Lm9yZyAgICAgICAiQ29sbGluIEphY2tzb24i
IDxjb2xsaW5qQHdlYmtpdC5vcmc+CjIwMDgtMDgtMjYgICBicml0dG9AYXBwbGUuY29tICAgICAg
ICAgIk1heGltZSBCcml0dG8iIDxtYXhpbWUuYnJpdHRvQGdtYWlsLmNvbT4KMjAwOC0wNy0zMCAg
IGplc3NAYXBwbGUuY29tICAgICAgICAgICBOb25lCjIwMDgtMDEtMDYgICBhbmRyZXdAd2Via2l0
Lm9yZyAgICAgICAgIkFuZHJldyBXZWxsaW5ndG9uIiA8YW5kcmV3QHdlYmtpdC5vcmc+CjIwMDct
MTItMTkgICBhYm91bGVAYXBwbGUuY29tICAgICAgICAgIkFuZHJlIEJvdWxlIiA8YWJvdWxlQGFw
cGxlLmNvbT4KMjAwNy0xMS0wOSAgIHRyaXN0YW5AYXBwbGUuY29tICAgICAgICAiVHJpc3RhbiBP
J1RpZXJuZXkiIDx0cmlzdGFuQG90aWVybmV5Lm5ldD4KMjAwNy0xMC0yNCAgIGxhcnNAa2RlLm9y
ZyAgICAgICAgICAgICAiTGFycyBLbm9sbCIgPGxhcnNAdHJvbGx0ZWNoLmNvbT4KMjAwNy0wNi0y
MCAgIHBhdHRpQGFwcGxlLmNvbSAgICAgICAgICBOb25lCjIwMDctMDYtMTEgICB6YWNrQGtkZS5v
cmcgICAgICAgICAgICAgIlphY2sgUnVzaW4iIDx6YWNrQGtkZS5vcmc+CjIwMDctMDQtMDYgICBr
a293YWxjenlrQGdtYWlsLmNvbSAgICAgIktyenlzenRvZiBLb3dhbGN6eWsiIDxra293YWxjenlr
QGdtYWlsLmNvbT4KMjAwNy0wMi0yMCAgIGdkZW5uaXNAd2Via2l0Lm9yZyAgICAgICAiR3JhaGFt
IERlbm5pcyIgPEdyYWhhbS5EZW5uaXNAZ21haWwuY29tPgoyMDA2LTExLTMwICAgbGFtYWRpb0Bh
cHBsZS5jb20gICAgICAgIE5vbmUKMjAwNi0wOS0yNyAgIHNlYW5naWVzQGFwcGxlLmNvbSAgICAg
ICBOb25lCjIwMDYtMDktMjcgICBncmFtcHNAYXBwbGUuY29tICAgICAgICAgIkRvbiBNZWx0b24i
IDxncmFtcHNAYXBwbGUuY29tPgoyMDA2LTA5LTIwICAgdGltb0BhcHBsZS5jb20gICAgICAgICAg
ICJUaW0gT21lcm5pY2siIDx0aW1vQGFwcGxlLmNvbT4KMjAwNi0wOC0yMiAgIHRyZXlAdXNhLm5l
dCAgICAgICAgICAgICAiVHJleSBNYXR0ZXNvbiIgPHRyZXlAdXNhLm5ldD4KMjAwNi0wNy0yNyAg
IGx5cGFub3ZAa2RlLm9yZyAgICAgICAgICAiQWxleGFuZGVyIEtlbGxldHQiIDxseXBhbm92QG1h
Yy5jb20+CjIwMDYtMDctMTMgICBsd2VpbnRyYXViQGFwcGxlLmNvbSAgICAgIkxldmkgV2VpbnRy
YXViIiA8bHdlaW50cmF1YkBhcHBsZS5jb20+CjIwMDYtMDctMDkgICBqb29zdEB3ZWJraXQub3Jn
ICAgICAgICAgIkpvb3N0IGRlIFZhbGsiIDxqb29zdEB3ZWJraXQub3JnPgoyMDA2LTAyLTI0ICAg
dmlja2lAYXBwbGUuY29tICAgICAgICAgICJWaWNraSBNdXJsZXkiIDx2aWNraUBhcHBsZS5jb20+
CjIwMDYtMDEtMjAgICBjcGV0ZXJzZW5AYXBwbGUuY29tICAgICAgIkNocmlzIFBldGVyc2VuIiA8
Y3BldGVyc2VuQGFwcGxlLmNvbT4KMjAwNS0wOC0wNyAgIGNibHVAYXBwbGUuY29tICAgICAgICAg
ICAiQ2hyaXMgQmx1bWVuYmVyZyIgPGNibHVAYXBwbGUuY29tPgoyMDA1LTA4LTAzICAgcmp3QGFw
cGxlLmNvbSAgICAgICAgICAgICJSaWNoYXJkIFdpbGxpYW1zb24iIDxyandAYXBwbGUuY29tPgoy
MDA1LTA4LTAyICAgYmRpYmVsbG9AYXBwbGUuY29tICAgICAgIE5vbmUKMjAwNS0wNy0xMiAgIGtv
Y2llbmRhQGFwcGxlLmNvbSAgICAgICAiS2VuIEtvY2llbmRhIiA8a29jaWVuZGFAYXBwbGUuY29t
PgoyMDA1LTAzLTE2ICAgamVuc0BhcHBsZS5jb20gICAgICAgICAgICJKZW5zIEFsZmtlIiA8c25l
akBjaHJvbWl1bS5vcmc+CjIwMDUtMDMtMDkgICBnb2xkc21pdEBhcHBsZS5jb20gICAgICAgTm9u
ZQoyMDA1LTAzLTA3ICAga2FsaUBhcHBsZS5jb20gICAgICAgICAgIE5vbmUKMjAwNC0wNS0yOCAg
IG91Y2hAYXBwbGUuY29tICAgICAgICAgICBOb25lCjIwMDMtMDgtMjIgICBzaGVyaWRhbkBhcHBs
ZS5jb20gICAgICAgTm9uZQoyMDAzLTA4LTEyICAgdm9hc0BhcHBsZS5jb20gICAgICAgICAgIE5v
bmUKMjAwMy0wMy0xMiAgIG1oYXlAYXBwbGUuY29tICAgICAgICAgICBOb25lCgpIaXN0b3JpY2Fs
IGNvbW1pdHRlcnMgbWlzc2luZyBmcm9tIGNvbW1pdHRlci5weToKamVzc0BhcHBsZS5jb20KYmRp
YmVsbG9AYXBwbGUuY29tCmVucmljYUBhcHBsZS5jb20Kdm9hc0BhcHBsZS5jb20Kb3VjaEBhcHBs
ZS5jb20KZ29sZHNtaXRAYXBwbGUuY29tCnNoZXJpZGFuQGFwcGxlLmNvbQpsYW1hZGlvQGFwcGxl
LmNvbQpzZWFuZ2llc0BhcHBsZS5jb20KbWhheUBhcHBsZS5jb20Ka2FsaUBhcHBsZS5jb20KcGF0
dGlAYXBwbGUuY29tCgpDb21taXR0ZXJzIGluIGNvbW1pdHRlci5weSB3aG8gaGF2ZSBuZXZlciBj
b21taXR0ZWQ6CiJBbnRvbiBNdWhpbiIgPGFudG9ubUBjaHJvbWl1bS5vcmc+CiJFbGkgRmlkbGVy
IiA8ZWxpQHN0YWlrb3MubmV0PgoiTWFkcyBBZ2VyIiA8YWdlckBjaHJvbWl1bS5vcmc+CiJNYXhp
bWUgU2ltb24iIDxzaW1vbi5tYXhpbWVAZ21haWwuY29tPgoiTWlrZSBCZWxzaGUiIDxtaWtlQGJl
bHNoZS5jb20+CiJNaWtlIEZlbnRvbiIgPG1pa2UuZmVudG9uQHRvcmNobW9iaWxlLmNvbT4KIlNj
b3R0IFZpb2xldCIgPHNreUBjaHJvbWl1bS5vcmc+CiJZb25nanVuIFpoYW5nIiA8eW9uZ2p1bi56
aGFuZ0Bub2tpYS5jb20+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42989</attachid>
            <date>2009-11-11 12:17:35 -0800</date>
            <delta_ts>2009-11-13 16:52:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-30970-20091111121733.patch</filename>
            <type>text/plain</type>
            <size>14929</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAzMjQ4ZjE0Li45YzFkODhmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzIgQEAKIDIwMDktMTEt
MTEgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQgYSB3YXkgdG8gdmFsaWRhdGUgdGhhdCBj
b21taXR0ZXJzLnB5IGluY2x1ZGVzIGFsbCBjb21taXR0ZXJzL3Jldmlld2VycworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA5NzAKKworICAgICAgICBB
ZGQgYSBzY3JpcHQgd2hpY2gga25vd3MgaG93IHRvIGNvbXBhcmUgb3VyIHB1YmxpYyBjb21taXR0
ZXIvcmV2aWV3ZXIKKyAgICAgICAgbGlzdHMgYW5kIHNob3cgZGlzY3JlcGFuY2llcyBiZXR3ZWVu
IHRoZW0uCisKKyAgICAgICAgVmFsaWRhdGVzIG1haWxpbmcgbGlzdHMgdnMuIGNvbW1pdHRlcnMu
cHk6CisgICAgICAgIC0gY29tbWl0dGVycy5weSBjb21taXR0ZXJzIG1pc3NpbmcgZnJvbSB3ZWJr
aXQtY29tbWl0dGVyc0BsaXN0cworICAgICAgICAtIHdlYmtpdC1jb21taXR0ZXJzQGxpc3RzIG1l
bWJlcnMgbWlzc2luZyBmcm9tIGNvbW1pdHRlcnMucHkKKyAgICAgICAgLSBjb21taXR0ZXJzLnB5
IHJldmlld2VycyBtaXNzaW5nIGZyb20gd2Via2l0LXJldmlld2Vyc0BsaXN0cworICAgICAgICAt
IHdlYmtpdC1yZXZpZXdlcnNAbGlzdHMgbWVtYmVycyBtaXNzaW5nIGZyb20gY29tbWl0dGVycy5w
eQorICAgICAgICAtIHdlYmtpdC1yZXZpZXdlcnNAbGlzdHMgbWVtYmVycyBtaXNzaW5nIGZyb20g
Y29tbWl0dGVycy5weSByZXZpZXdlciBsaXN0CisKKyAgICAgICAgVmFsaWRhdGVzIGNvbW1pdHRl
cnMucHkgdnMuIHRydW5rLyBTVk4gaGlzdG9yeToKKyAgICAgICAgLSBjb21taXR0ZXJzIHdobyBo
YXZlIG5vdCBjb21taXR0ZWQgaW4gb3ZlciBhIHllYXIKKyAgICAgICAgLSBTVk4gY29tbWl0dGVy
cyBtaXNzaW5nIGZyb20gY29tbWl0dGVycy5weQorICAgICAgICAtIGNvbW1pdHRlcnMucHkgbWVt
YmVycyB3aG8gaGF2ZSBubyByZWNvcmQgaW4gU1ZOLgorCisgICAgICAgIEFsbCBvZiB0aGVzZSBs
aXN0cyBzdGlsbCBzaG93ICJmYWxzZSBwb3NpdGl2ZXMiIHVudGlsIGEgZmV3IG1vcmUgY29tbWl0
dGVycy5weSB1cGRhdGVzIGFyZSBtYWRlLCBsaWtlOgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzEzNjYKKworICAgICAgICAqIFNjcmlwdHMvdmFsaWRh
dGUtY29tbWl0dGVyLWxpc3RzOiBBZGRlZC4KKworMjAwOS0xMS0xMSAgRXJpYyBTZWlkZWwgIDxl
cmljQHdlYmtpdC5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnlnIEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuLgogCiAgICAgICAgIFVwZGF0ZSBLZW5uZXRoJ3MgY29tbWl0dGVyIHJlY29yZCB0
byBpbmNsdWRlIHRoZSBlbWFpbCBoZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy92
YWxpZGF0ZS1jb21taXR0ZXItbGlzdHMgYi9XZWJLaXRUb29scy9TY3JpcHRzL3ZhbGlkYXRlLWNv
bW1pdHRlci1saXN0cwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41ZWIxZTZm
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy92YWxpZGF0ZS1jb21taXR0
ZXItbGlzdHMKQEAgLTAsMCArMSwyNjAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjIENv
cHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyMKKyMgQ2hlY2tzIFB5dGhvbidzIGtub3duIGxpc3Qgb2YgY29tbWl0
dGVycyBhZ2FpbnN0IGxpc3RzLndlYmtpdC5vcmcgYW5kIFNWTiBoaXN0b3J5LgorCisKK2ltcG9y
dCBvcworaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCByZQoraW1wb3J0IHVybGxpYjIKK2Zyb20g
ZGF0ZXRpbWUgaW1wb3J0IGRhdGUsIGRhdGV0aW1lLCB0aW1lZGVsdGEKK2Zyb20gbW9kdWxlcy5j
b21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0Citmcm9tIG1vZHVsZXMubG9nZ2luZyBpbXBv
cnQgbG9nLCBlcnJvcgorCisjIFdlYktpdCBpbmNsdWRlcyBhIGJ1aWx0IGNvcHkgb2YgQmVhdXRp
ZnVsU291cCBpbiBTY3JpcHRzL21vZHVsZXMKKyMgc28gdGhpcyBpbXBvcnQgc2hvdWxkIGFsd2F5
cyBzdWNjZWVkLgorZnJvbSBtb2R1bGVzLkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNv
dXAKKworZGVmIHByaW50X2xpc3RfaWZfbm9uX2VtcHR5KHRpdGxlLCBsaXN0X3RvX3ByaW50KToK
KyAgICBpZiBub3QgbGlzdF90b19wcmludDoKKyAgICAgICAgcmV0dXJuCisgICAgcHJpbnQgIyBO
ZXdsaW5lIGJlZm9yZSB0aGUgbGlzdAorICAgIHByaW50IHRpdGxlCisgICAgZm9yIGl0ZW0gaW4g
bGlzdF90b19wcmludDoKKyAgICAgICAgcHJpbnQgaXRlbQorCitjbGFzcyBDb21taXR0ZXJMaXN0
RnJvbU1haWxpbmdMaXN0OgorICAgIGNvbW1pdHRlcnNfbGlzdF91cmwgPSAiaHR0cDovL2xpc3Rz
LndlYmtpdC5vcmcvbWFpbG1hbi9yb3N0ZXIuY2dpL3dlYmtpdC1jb21taXR0ZXJzIgorICAgIHJl
dmlld2Vyc19saXN0X3VybCA9ICJodHRwOi8vbGlzdHMud2Via2l0Lm9yZy9tYWlsbWFuL3Jvc3Rl
ci5jZ2kvd2Via2l0LXJldmlld2VycyIKKworICAgIGRlZiBfZmV0Y2hfZW1haWxzX2Zyb21fcGFn
ZShzZWxmLCB1cmwpOgorICAgICAgICBwYWdlID0gdXJsbGliMi51cmxvcGVuKHVybCkKKyAgICAg
ICAgc291cCA9IEJlYXV0aWZ1bFNvdXAocGFnZSkKKworICAgICAgICBlbWFpbHMgPSBbXQorICAg
ICAgICAjIEdyYWIgdGhlIGNlbGxzIGluIHRoZSBmaXJzdCBjb2x1bW4gKHdoaWNoIGhhcHBlbnMg
dG8gYmUgdGhlIGJ1ZyBpZHMpLgorICAgICAgICBmb3IgZW1haWxfaXRlbSBpbiBzb3VwKCdsaScp
OgorICAgICAgICAgICAgZW1haWxfbGluayA9IGVtYWlsX2l0ZW0uZmluZCgiYSIpCisgICAgICAg
ICAgICBlbWFpbCA9IGVtYWlsX2xpbmsuc3RyaW5nLnJlcGxhY2UoIiBhdCAiLCAiQCIpICMgVGhl
IGVtYWlsIGlzIG9iZnVzY2F0ZWQgdXNpbmcgIiBhdCAiIGluc3RlYWQgb2YgIkAiLgorICAgICAg
ICAgICAgZW1haWxzLmFwcGVuZChlbWFpbCkKKyAgICAgICAgcmV0dXJuIGVtYWlscworCisgICAg
IyBVc2VkIGZvciBzZWVpbmcgd2hpY2ggZW1haWwgYWRkcmVzc2VzIGFjdHVhbGx5IG1hcCB0byBi
dWd6aWxsYSBhY2NvdW50cy4KKyAgICAjIEN1cnJlbnRseSByZXF1aXJlcyBodW1hbiB2YWxpZGF0
aW9uLCBidXQgd2UgY291bGQgZXZlbnR1YWxseSBhZGQgc29tZSBzbWFydGVyIHNjcmFwaW5nIGNv
ZGUuCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBvcGVuX2J1Z3ppbGxhX2VkaXRfcGFnZXNf
Zm9yX2VtYWlscyhlbWFpbHMpOgorICAgICAgICB1c2VyX2xvb2t1cF91cmwgPSAiaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvZWRpdHVzZXJzLmNnaT9hY3Rpb249bGlzdCZtYXRjaHZhbHVlPWxvZ2lu
X25hbWUmbWF0Y2h0eXBlPXN1YnN0ciZncm91cGlkPTcmbWF0Y2hzdHI9IgorICAgICAgICBmb3Ig
ZW1haWwgaW4gZW1haWxzOgorICAgICAgICAgICAgb3Muc3lzdGVtKCJvcGVuIFwiIiArIHVzZXJf
bG9va3VwX3VybCArIGVtYWlsICsgIlwiIikKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYg
X2NvbW1pdGVyc19ub3RfZm91bmRfaW5fZW1haWxfbGlzdChjb21taXR0ZXJzLCBlbWFpbHMpOgor
ICAgICAgICBtaXNzaW5nX2Zyb21fbWFpbGluZ19saXN0ID0gW10KKyAgICAgICAgZm9yIGNvbW1p
dHRlciBpbiBjb21taXR0ZXJzOgorICAgICAgICAgICAgZm9yIGVtYWlsIGluIGNvbW1pdHRlci5l
bWFpbHM6CisgICAgICAgICAgICAgICAgaWYgZW1haWwgaW4gZW1haWxzOgorICAgICAgICAgICAg
ICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtaXNzaW5n
X2Zyb21fbWFpbGluZ19saXN0LmFwcGVuZChjb21taXR0ZXIpCisgICAgICAgIHJldHVybiBtaXNz
aW5nX2Zyb21fbWFpbGluZ19saXN0CisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9lbWFp
bHNfbm90X2ZvdW5kX2luX2NvbW1pdHRlcl9saXN0KGNvbW1pdHRlcnMsIGVtYWlscyk6CisgICAg
ICAgIGVtYWlsX3RvX2NvbW1pdHRlcl9tYXAgPSB7fQorICAgICAgICBmb3IgY29tbWl0dGVyIGlu
IGNvbW1pdHRlcnM6CisgICAgICAgICAgICBmb3IgZW1haWwgaW4gY29tbWl0dGVyLmVtYWlsczoK
KyAgICAgICAgICAgICAgICBlbWFpbF90b19jb21taXR0ZXJfbWFwW2VtYWlsXSA9IGNvbW1pdHRl
cgorCisgICAgICAgIHJldHVybiBmaWx0ZXIobGFtYmRhIGVtYWlsOiBub3QgZW1haWxfdG9fY29t
bWl0dGVyX21hcC5nZXQoZW1haWwpLCBlbWFpbHMpCisKKyAgICBkZWYgY2hlY2tfZm9yX2VtYWls
c19taXNzaW5nX2Zyb21fbGlzdChzZWxmLCBjb21taXR0ZXJfbGlzdCk6CisgICAgICAgIGNvbW1p
dHRlcl9lbWFpbHMgPSBzZWxmLl9mZXRjaF9lbWFpbHNfZnJvbV9wYWdlKHNlbGYuY29tbWl0dGVy
c19saXN0X3VybCkKKyAgICAgICAgbGlzdF9uYW1lID0gIndlYmtpdC1jb21taXR0ZXJzQGxpc3Rz
LndlYmtpdC5vcmciCisKKyAgICAgICAgbWlzc2luZ19mcm9tX21haWxpbmdfbGlzdCA9IHNlbGYu
X2NvbW1pdGVyc19ub3RfZm91bmRfaW5fZW1haWxfbGlzdChjb21taXR0ZXJfbGlzdC5jb21taXR0
ZXJzKCksIGNvbW1pdHRlcl9lbWFpbHMpCisgICAgICAgIHByaW50X2xpc3RfaWZfbm9uX2VtcHR5
KCJDb21taXR0ZXJzIG1pc3NpbmcgZnJvbSAlczoiICUgbGlzdF9uYW1lLCBtaXNzaW5nX2Zyb21f
bWFpbGluZ19saXN0KQorCisgICAgICAgIHVzZXJzX21pc3NpbmdfZnJvbV9jb21taXR0ZXJzID0g
c2VsZi5fZW1haWxzX25vdF9mb3VuZF9pbl9jb21taXR0ZXJfbGlzdChjb21taXR0ZXJfbGlzdC5j
b21taXR0ZXJzKCksIGNvbW1pdHRlcl9lbWFpbHMpCisgICAgICAgIHByaW50X2xpc3RfaWZfbm9u
X2VtcHR5KCJTdWJjcmliZXJzIHRvICVzIG1pc3NpbmcgZnJvbSBjb21taXR0ZXIucHk6IiAlIGxp
c3RfbmFtZSwgdXNlcnNfbWlzc2luZ19mcm9tX2NvbW1pdHRlcnMpCisKKworICAgICAgICByZXZp
ZXdlcl9lbWFpbHMgPSBzZWxmLl9mZXRjaF9lbWFpbHNfZnJvbV9wYWdlKHNlbGYucmV2aWV3ZXJz
X2xpc3RfdXJsKQorICAgICAgICBsaXN0X25hbWUgPSAid2Via2l0LXJldmlld2Vyc0BsaXN0cy53
ZWJraXQub3JnIgorCisgICAgICAgIG1pc3NpbmdfZnJvbV9tYWlsaW5nX2xpc3QgPSBzZWxmLl9j
b21taXRlcnNfbm90X2ZvdW5kX2luX2VtYWlsX2xpc3QoY29tbWl0dGVyX2xpc3QucmV2aWV3ZXJz
KCksIHJldmlld2VyX2VtYWlscykKKyAgICAgICAgcHJpbnRfbGlzdF9pZl9ub25fZW1wdHkoIlJl
dmlld2VycyBtaXNzaW5nIGZyb20gJXM6IiAlIGxpc3RfbmFtZSwgbWlzc2luZ19mcm9tX21haWxp
bmdfbGlzdCkKKworICAgICAgICBtaXNzaW5nX2Zyb21fcmV2aWV3ZXJzID0gc2VsZi5fZW1haWxz
X25vdF9mb3VuZF9pbl9jb21taXR0ZXJfbGlzdChjb21taXR0ZXJfbGlzdC5yZXZpZXdlcnMoKSwg
cmV2aWV3ZXJfZW1haWxzKQorICAgICAgICBwcmludF9saXN0X2lmX25vbl9lbXB0eSgiU3ViY3Jp
YmVycyB0byAlcyBtaXNzaW5nIGZyb20gcmV2aWV3ZXJzIGluIGNvbW1pdHRlci5weToiICUgbGlz
dF9uYW1lLCBtaXNzaW5nX2Zyb21fcmV2aWV3ZXJzKQorCisgICAgICAgIG1pc3NpbmdfZnJvbV9j
b21taXR0ZXJzID0gc2VsZi5fZW1haWxzX25vdF9mb3VuZF9pbl9jb21taXR0ZXJfbGlzdChjb21t
aXR0ZXJfbGlzdC5jb21taXR0ZXJzKCksIHJldmlld2VyX2VtYWlscykKKyAgICAgICAgcHJpbnRf
bGlzdF9pZl9ub25fZW1wdHkoIlN1YmNyaWJlcnMgdG8gJXMgY29tcGxldGVseSBtaXNzaW5nIGZy
b20gY29tbWl0dGVycy5weSIgJSBsaXN0X25hbWUsIG1pc3NpbmdfZnJvbV9jb21taXR0ZXJzKQor
CisKK2NsYXNzIENvbW1pdHRlckxpc3RGcm9tR2l0OgorICAgIGxvZ2luX3RvX2VtYWlsX2FkZHJl
c3MgPSB7CisgICAgICAgICdhbGljZWxpMScgOiAnYWxpY2UubGl1QGFwcGxlLmNvbScsCisgICAg
ICAgICdiZGFzaCcgOiAnbXJvd2VAYXBwbGUuY29tJywKKyAgICAgICAgJ2JkaWJlbGxvJyA6ICdi
ZGliZWxsb0BhcHBsZS5jb20nLCAjIEJydWNlIERpQmVsbG8sIG9ubHkgNCBjb21taXRzOiByMTAw
MjMsIHI5NTQ4LCByOTUzOCwgcjk1MzUKKyAgICAgICAgJ2NibHUnIDogJ2NibHVAYXBwbGUuY29t
JywKKyAgICAgICAgJ2NwZXRlcnNlJyA6ICdjcGV0ZXJzZW5AYXBwbGUuY29tJywKKyAgICAgICAg
J2VzZWlkZWwnIDogJ2VyaWNAd2Via2l0Lm9yZycsCisgICAgICAgICdnZGVubmlzJyA6ICdnZGVu
bmlzQHdlYmtpdC5vcmcnLAorICAgICAgICAnZ29sZHNtaXQnIDogJ2dvbGRzbWl0QGFwcGxlLmNv
bScsICMgRGViYmllIEdvbGRzbWl0aCwgb25seSBvbmUgY29tbWl0IHI4ODM5CisgICAgICAgICdn
cmFtcHMnIDogJ2dyYW1wc0BhcHBsZS5jb20nLAorICAgICAgICAnaG9uZXljdXR0JyA6ICdqaG9u
ZXljdXR0QGFwcGxlLmNvbScsCisgICAgICAgICdqZGV2YWxrJyA6ICdqb29zdEB3ZWJraXQub3Jn
JywKKyAgICAgICAgJ2plbnMnIDogJ2plbnNAYXBwbGUuY29tJywKKyAgICAgICAgJ2p1c3Rpbmcn
IDogJ2p1c3Rpbi5nYXJjaWFAYXBwbGUuY29tJywKKyAgICAgICAgJ2thbGknIDogJ2thbGlAYXBw
bGUuY29tJywgIyBDaHJpc3R5IFdhcnJlbiwgZGlkIEJJREkgd29yaywgNSBjb21taXRzOiByODgx
NSwgcjg4MDIsIHI4ODAxLCByODc5MSwgcjg3NzMsIHI4NjAzCisgICAgICAgICdramsnIDogJ2tr
b3dhbGN6eWtAZ21haWwuY29tJywKKyAgICAgICAgJ2ttY2N1bGxvJyA6ICdrbWNjdWxsb3VnaEBh
cHBsZS5jb20nLAorICAgICAgICAna29jaWVuZGEnIDogJ2tvY2llbmRhQGFwcGxlLmNvbScsCisg
ICAgICAgICdsYW1hZGlvJyA6ICdsYW1hZGlvQGFwcGxlLmNvbScsICMgTG91IEFtYWRpbywgb25s
eSAyIGNvbW1pdHM6IHIxNzk0OSBhbmQgcjE3NzgzCisgICAgICAgICdsYXJzJyA6ICdsYXJzQGtk
ZS5vcmcnLAorICAgICAgICAnbHdlaW50cmF1YicgOiAnbHdlaW50cmF1YkBhcHBsZS5jb20nLAor
ICAgICAgICAnbHlwYW5vdicgOiAnbHlwYW5vdkBrZGUub3JnJywKKyAgICAgICAgJ21oYXknIDog
J21oYXlAYXBwbGUuY29tJywgIyBNaWtlIEhheSwgMyBjb21taXRzOiByMzgxMywgcjI1NTIsIHIy
NTQ4CisgICAgICAgICdvdWNoJyA6ICdvdWNoQGFwcGxlLmNvbScsICMgSm9obiBMb3VjaAorICAg
ICAgICAncHllaCcgOiAncGF0dGlAYXBwbGUuY29tJywgIyBQYXR0aSBZZWgsIGRpZCBWb2ljZU92
ZXIgd29yayBpbiBXZWJLaXQKKyAgICAgICAgJ3JqdycgOiAncmp3QGFwcGxlLmNvbScsCisgICAg
ICAgICdzZWFuZ2llcycgOiAnc2VhbmdpZXNAYXBwbGUuY29tJywgIyBTZWFuIEdpZXM/LCBvbmx5
IDUgY29tbWl0czogcjE2NjAwLCByMTY1OTIsIHIxNjUxMSwgcjE2NDg5LCByMTY0ODQKKyAgICAg
ICAgJ3NoZXJpZGFuJyA6ICdzaGVyaWRhbkBhcHBsZS5jb20nLCAjIFNoZWxseSBTaGVyaWRhbgor
ICAgICAgICAndGhhdGNoZXInIDogJ3RpbW90aHlAYXBwbGUuY29tJywKKyAgICAgICAgJ3RvbWVy
bmljJyA6ICd0aW1vQGFwcGxlLmNvbScsCisgICAgICAgICd0cmV5JyA6ICd0cmV5QHVzYS5uZXQn
LAorICAgICAgICAndHJpc3RhbicgOiAndHJpc3RhbkBhcHBsZS5jb20nLAorICAgICAgICAndmlj
a2knIDogJ3ZpY2tpQGFwcGxlLmNvbScsCisgICAgICAgICd2b2FzJyA6ICd2b2FzQGFwcGxlLmNv
bScsICMgRWQgVm9hcywgZGlkIHNvbWUgQ2FyYm9uIHdvcmsgaW4gV2ViS2l0CisgICAgICAgICd6
YWNrJyA6ICd6YWNrQGtkZS5vcmcnLAorICAgICAgICAnemltbWVybWFubicgOiAnemltbWVybWFu
bkB3ZWJraXQub3JnJywKKyAgICB9CisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAg
IHNlbGYuX2xhc3RfY29tbWl0X3RpbWVfYnlfYXV0aG9yX2NhY2hlID0ge30KKworICAgIGRlZiBf
ZmV0Y2hfYXV0aG9yc19hbmRfbGFzdF9jb21taXRfdGltZV9mcm9tX2dpdF9sb2coc2VsZik6Cisg
ICAgICAgIGxhc3RfY29tbWl0X2RhdGVzID0ge30KKyAgICAgICAgZ2l0X2xvZ19hcmdzID0gWydn
aXQnLCAnbG9nJywgJy0tcmV2ZXJzZScsICctLXByZXR0eT1mb3JtYXQ6JWFlICVhdCddCisgICAg
ICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGdpdF9sb2dfYXJncywgc3Rkb3V0PXN1YnBy
b2Nlc3MuUElQRSkKKworICAgICAgICAjIGVyaWNAd2Via2l0Lm9yZ0AyNjhmNDVjYy1jZDA5LTA0
MTAtYWIzYy1kNTI2OTFiNGRiZmMgMTI1NzA5MDg5OQorICAgICAgICBsaW5lX3JlZ2V4cCA9IHJl
LmNvbXBpbGUoIl4oP1A8YXV0aG9yPi4rKUBcUysgKD9QPHRpbWVzdGFtcD5cZCspJCIpCisgICAg
ICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBvdXRwdXRfbGluZSA9IHByb2Nlc3Muc3Rkb3V0
LnJlYWRsaW5lKCkKKyAgICAgICAgICAgIGlmIG91dHB1dF9saW5lID09ICcnIGFuZCBwcm9jZXNz
LnBvbGwoKSAhPSBOb25lOgorICAgICAgICAgICAgICAgIHJldHVybiBsYXN0X2NvbW1pdF9kYXRl
cworCisgICAgICAgICAgICBtYXRjaF9yZXN1bHQgPSBsaW5lX3JlZ2V4cC5tYXRjaChvdXRwdXRf
bGluZSkKKyAgICAgICAgICAgIGlmIG5vdCBtYXRjaF9yZXN1bHQ6CisgICAgICAgICAgICAgICAg
ZXJyb3IoIkZhaWxlZCB0byBtYXRjaCBsaW5lOiAlcyIgJSBvdXRwdXRfbGluZSkKKyAgICAgICAg
ICAgIGxhc3RfY29tbWl0X2RhdGVzW21hdGNoX3Jlc3VsdC5ncm91cCgnYXV0aG9yJyldID0gZmxv
YXQobWF0Y2hfcmVzdWx0Lmdyb3VwKCd0aW1lc3RhbXAnKSkKKworICAgIGRlZiBfZmlsbF9pbl9l
bWFpbHNfZm9yX29sZF9sb2dpbnMoc2VsZik6CisgICAgICAgIGF1dGhvcnNfbWlzc2luZ19lbWFp
bCA9IGZpbHRlcihsYW1iZGEgYXV0aG9yOiBhdXRob3IuZmluZCgnQCcpID09IC0xLCBzZWxmLl9s
YXN0X2NvbW1pdF90aW1lX2J5X2F1dGhvcl9jYWNoZSkKKyAgICAgICAgYXV0aG9yc193aXRoX2Vt
YWlsID0gZmlsdGVyKGxhbWJkYSBhdXRob3I6IGF1dGhvci5maW5kKCdAJykgIT0gLTEsIHNlbGYu
X2xhc3RfY29tbWl0X3RpbWVfYnlfYXV0aG9yX2NhY2hlKQorICAgICAgICBwcmVmaXhlc19vZl9h
dXRob3JzX3dpdGhfZW1haWwgPSBtYXAobGFtYmRhIGF1dGhvcjogYXV0aG9yLnNwbGl0KCdAJylb
MF0sIGF1dGhvcnNfd2l0aF9lbWFpbCkKKworICAgICAgICBmb3IgYXV0aG9yIGluIGF1dGhvcnNf
bWlzc2luZ19lbWFpbDoKKyAgICAgICAgICAgICMgRmlyc3QgY2hlY2sgdG8gc2VlIGlmIHdlIGhh
dmUgYSBtYW51YWwgbWFwcGluZyBmcm9tIGxvZ2luIHRvIGVtYWlsLgorICAgICAgICAgICAgYXV0
aG9yX2VtYWlsID0gc2VsZi5sb2dpbl90b19lbWFpbF9hZGRyZXNzLmdldChhdXRob3IpCisKKyAg
ICAgICAgICAgICMgTW9zdCBvbGQgbG9naW5zIGxpa2UgJ2RhcmluJyBhcmUgbm93IGp1c3QgJ2Rh
cmluQGFwcGxlLmNvbScsIHNvIGNoZWNrIGZvciBhIHByZWZpeCBtYXRjaCBpZiBhIG1hbnVhbCBt
YXBwaW5nIHdhcyBub3QgZm91bmQuCisgICAgICAgICAgICBpZiBub3QgYXV0aG9yX2VtYWlsIGFu
ZCBhdXRob3IgaW4gcHJlZml4ZXNfb2ZfYXV0aG9yc193aXRoX2VtYWlsOgorICAgICAgICAgICAg
ICAgIGF1dGhvcl9lbWFpbF9pbmRleCA9IHByZWZpeGVzX29mX2F1dGhvcnNfd2l0aF9lbWFpbC5p
bmRleChhdXRob3IpCisgICAgICAgICAgICAgICAgYXV0aG9yX2VtYWlsID0gYXV0aG9yc193aXRo
X2VtYWlsW2F1dGhvcl9lbWFpbF9pbmRleF0KKworICAgICAgICAgICAgaWYgbm90IGF1dGhvcl9l
bWFpbDoKKyAgICAgICAgICAgICAgICAjIE5vIGtub3duIGVtYWlsIG1hcHBpbmcsIGxpa2VseSBu
b3QgYW4gYWN0aXZlIGNvbW1pdHRlci4gIFdlIGNvdWxkIGxvZyBoZXJlLgorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgbG9nKCIlcyAtPiAlcyIgJSAoYXV0aG9yLCBh
dXRob3JfZW1haWwpKSAjIEZvciBzYW5pdHkgY2hlY2tpbmcuCisgICAgICAgICAgICBub19lbWFp
bF9jb21taXRfdGltZSA9IHNlbGYuX2xhc3RfY29tbWl0X3RpbWVfYnlfYXV0aG9yX2NhY2hlLmdl
dChhdXRob3IpCisgICAgICAgICAgICBlbWFpbF9jb21taXRfdGltZSA9IHNlbGYuX2xhc3RfY29t
bWl0X3RpbWVfYnlfYXV0aG9yX2NhY2hlLmdldChhdXRob3JfZW1haWwpCisgICAgICAgICAgICAj
IFdlIGNvbXBhcmUgdGhlIHRpbWVzdGFtcHMgZm9yIGV4dHJhIHNhbml0eSBldmVuIHRob3VnaCB3
ZSBjb3VsZCBhc3N1bWUgY29tbWl0cyBiZWZvcmUgZW1haWwgYWRkcmVzcyB3ZXJlIHVzZWQgZm9y
IGxvZ2luIGFyZSBhbHdheXMgZ29pbmcgdG8gYmUgb2xkZXIuCisgICAgICAgICAgICBpZiBub3Qg
ZW1haWxfY29tbWl0X3RpbWUgb3IgZW1haWxfY29tbWl0X3RpbWUgPCBub19lbWFpbF9jb21taXRf
dGltZToKKyAgICAgICAgICAgICAgICBzZWxmLl9sYXN0X2NvbW1pdF90aW1lX2J5X2F1dGhvcl9j
YWNoZVthdXRob3JfZW1haWxdID0gbm9fZW1haWxfY29tbWl0X3RpbWUKKyAgICAgICAgICAgIGRl
bCBzZWxmLl9sYXN0X2NvbW1pdF90aW1lX2J5X2F1dGhvcl9jYWNoZVthdXRob3JdCisKKyAgICBk
ZWYgX2xhc3RfY29tbWl0X2J5X2F1dGhvcihzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuX2xh
c3RfY29tbWl0X3RpbWVfYnlfYXV0aG9yX2NhY2hlOgorICAgICAgICAgICAgc2VsZi5fbGFzdF9j
b21taXRfdGltZV9ieV9hdXRob3JfY2FjaGUgPSBzZWxmLl9mZXRjaF9hdXRob3JzX2FuZF9sYXN0
X2NvbW1pdF90aW1lX2Zyb21fZ2l0X2xvZygpCisgICAgICAgICAgICBzZWxmLl9maWxsX2luX2Vt
YWlsc19mb3Jfb2xkX2xvZ2lucygpCisgICAgICAgICAgICBkZWwgc2VsZi5fbGFzdF9jb21taXRf
dGltZV9ieV9hdXRob3JfY2FjaGVbJyhubyBhdXRob3IpJ10gIyBUaGUgaW5pdGlhbCBzdm4gaW1w
b3J0IGlzbid0IHZlcnkgdXNlZnVsLgorICAgICAgICByZXR1cm4gc2VsZi5fbGFzdF9jb21taXRf
dGltZV9ieV9hdXRob3JfY2FjaGUKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX3ByaW50
X3RocmVlX2NvbHVtbl9yb3cod2lkdGhzLCB2YWx1ZXMpOgorICAgICAgICBwcmludCAiJXMlcyVz
IiAlICh2YWx1ZXNbMF0ubGp1c3Qod2lkdGhzWzBdKSwgdmFsdWVzWzFdLmxqdXN0KHdpZHRoc1sx
XSksIHZhbHVlc1syXSkKKworICAgIGRlZiBwcmludF9wb3NzaWJseV9leHBpcmVkX2NvbW1pdHRl
cnMoc2VsZiwgY29tbWl0dGVyX2xpc3QpOgorICAgICAgICBhdXRob3JzX2FuZF9sYXN0X2NvbW1p
dHMgPSBzZWxmLl9sYXN0X2NvbW1pdF9ieV9hdXRob3IoKS5pdGVtcygpCisgICAgICAgIGF1dGhv
cnNfYW5kX2xhc3RfY29tbWl0cy5zb3J0KGxhbWJkYSBhLGI6IGNtcChhWzFdLCBiWzFdKSwgcmV2
ZXJzZT1UcnVlKQorICAgICAgICBjb21taXR0ZXJfY3V0dG9mID0gZGF0ZS50b2RheSgpIC0gdGlt
ZWRlbHRhKGRheXM9MzY1KQorICAgICAgICBjb2x1bW5fd2lkdGhzID0gWzEzLCAyNV0KKyAgICAg
ICAgcHJpbnQKKyAgICAgICAgcHJpbnQgIkNvbW1pdHRlcnMgd2hvIGhhdmUgbm90IGNvbW1pdHRl
ZCB3aXRoaW4gb25lIHllYXI6IgorICAgICAgICBzZWxmLl9wcmludF90aHJlZV9jb2x1bW5fcm93
KGNvbHVtbl93aWR0aHMsICgiTGFzdCBDb21taXQiLCAiQ29tbWl0dGVyIEVtYWlsIiwgIkNvbW1p
dHRlciBSZWNvcmQiKSkKKyAgICAgICAgZm9yIChhdXRob3IsIGxhc3RfY29tbWl0KSBpbiBhdXRo
b3JzX2FuZF9sYXN0X2NvbW1pdHM6CisgICAgICAgICAgICBsYXN0X2NvbW1pdF9kYXRlID0gZGF0
ZS5mcm9tdGltZXN0YW1wKGxhc3RfY29tbWl0KQorICAgICAgICAgICAgaWYgY29tbWl0dGVyX2N1
dHRvZiA+IGxhc3RfY29tbWl0X2RhdGU6CisgICAgICAgICAgICAgICAgY29tbWl0dGVyX3JlY29y
ZCA9IGNvbW1pdHRlcl9saXN0LmNvbW1pdHRlcl9ieV9lbWFpbChhdXRob3IpCisgICAgICAgICAg
ICAgICAgc2VsZi5fcHJpbnRfdGhyZWVfY29sdW1uX3Jvdyhjb2x1bW5fd2lkdGhzLCAoc3RyKGxh
c3RfY29tbWl0X2RhdGUpLCBhdXRob3IsIGNvbW1pdHRlcl9yZWNvcmQpKQorCisgICAgZGVmIHBy
aW50X2NvbW1pdHRlcnNfbWlzc2luZ19mcm9tX2NvbW1pdHRlcl9saXN0KHNlbGYsIGNvbW1pdHRl
cl9saXN0KToKKyAgICAgICAgbWlzc2luZ19mcm9tX2NvbW1pdHRlcnNfcHkgPSBbXQorICAgICAg
ICBsYXN0X2NvbW1pdF90aW1lX2J5X2F1dGhvciA9IHNlbGYuX2xhc3RfY29tbWl0X2J5X2F1dGhv
cigpCisgICAgICAgIGZvciBhdXRob3IgaW4gbGFzdF9jb21taXRfdGltZV9ieV9hdXRob3I6Cisg
ICAgICAgICAgICBpZiBub3QgY29tbWl0dGVyX2xpc3QuY29tbWl0dGVyX2J5X2VtYWlsKGF1dGhv
cik6CisgICAgICAgICAgICAgICAgbWlzc2luZ19mcm9tX2NvbW1pdHRlcnNfcHkuYXBwZW5kKGF1
dGhvcikKKworICAgICAgICBuZXZlcl9jb21taXR0ZWQgPSBbXQorICAgICAgICBmb3IgY29tbWl0
dGVyIGluIGNvbW1pdHRlcl9saXN0LmNvbW1pdHRlcnMoKToKKyAgICAgICAgICAgIGZvciBlbWFp
bCBpbiBjb21taXR0ZXIuZW1haWxzOgorICAgICAgICAgICAgICAgIGlmIGxhc3RfY29tbWl0X3Rp
bWVfYnlfYXV0aG9yLmdldChlbWFpbCk6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5ldmVyX2NvbW1pdHRlZC5hcHBlbmQoY29t
bWl0dGVyKQorCisgICAgICAgIHByaW50X2xpc3RfaWZfbm9uX2VtcHR5KCJIaXN0b3JpY2FsIGNv
bW1pdHRlcnMgbWlzc2luZyBmcm9tIGNvbW1pdHRlci5weToiLCBtaXNzaW5nX2Zyb21fY29tbWl0
dGVyc19weSkKKyAgICAgICAgcHJpbnRfbGlzdF9pZl9ub25fZW1wdHkoIkNvbW1pdHRlcnMgaW4g
Y29tbWl0dGVyLnB5IHdobyBoYXZlIG5ldmVyIGNvbW1pdHRlZDoiLCBuZXZlcl9jb21taXR0ZWQp
CisKKworZGVmIG1haW4oKToKKyAgICBjb21taXR0ZXJfbGlzdCA9IENvbW1pdHRlckxpc3QoKQor
ICAgIENvbW1pdHRlckxpc3RGcm9tTWFpbGluZ0xpc3QoKS5jaGVja19mb3JfZW1haWxzX21pc3Np
bmdfZnJvbV9saXN0KGNvbW1pdHRlcl9saXN0KQorCisgICAgc3ZuX2NvbW1pdHRlcl9saXN0ID0g
Q29tbWl0dGVyTGlzdEZyb21HaXQoKQorICAgIHN2bl9jb21taXR0ZXJfbGlzdC5wcmludF9wb3Nz
aWJseV9leHBpcmVkX2NvbW1pdHRlcnMoY29tbWl0dGVyX2xpc3QpCisgICAgc3ZuX2NvbW1pdHRl
cl9saXN0LnByaW50X2NvbW1pdHRlcnNfbWlzc2luZ19mcm9tX2NvbW1pdHRlcl9saXN0KGNvbW1p
dHRlcl9saXN0KQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIG1haW4oKQ==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43214</attachid>
            <date>2009-11-13 16:52:39 -0800</date>
            <delta_ts>2009-11-29 19:12:20 -0800</delta_ts>
            <desc>Remove the troublesome code</desc>
            <filename>bug-30970-20091113165238.patch</filename>
            <type>text/plain</type>
            <size>14445</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBlMTZhNTFmLi4yMjE2Yzc0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0yODgsNiArMjg4LDMzIEBACiAKIDIw
MDktMTEtMTEgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQgYSB3YXkgdG8gdmFsaWRhdGUg
dGhhdCBjb21taXR0ZXJzLnB5IGluY2x1ZGVzIGFsbCBjb21taXR0ZXJzL3Jldmlld2VycworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA5NzAKKworICAg
ICAgICBBZGQgYSBzY3JpcHQgd2hpY2gga25vd3MgaG93IHRvIGNvbXBhcmUgb3VyIHB1YmxpYyBj
b21taXR0ZXIvcmV2aWV3ZXIKKyAgICAgICAgbGlzdHMgYW5kIHNob3cgZGlzY3JlcGFuY2llcyBi
ZXR3ZWVuIHRoZW0uCisKKyAgICAgICAgVmFsaWRhdGVzIG1haWxpbmcgbGlzdHMgdnMuIGNvbW1p
dHRlcnMucHk6CisgICAgICAgIC0gY29tbWl0dGVycy5weSBjb21taXR0ZXJzIG1pc3NpbmcgZnJv
bSB3ZWJraXQtY29tbWl0dGVyc0BsaXN0cworICAgICAgICAtIHdlYmtpdC1jb21taXR0ZXJzQGxp
c3RzIG1lbWJlcnMgbWlzc2luZyBmcm9tIGNvbW1pdHRlcnMucHkKKyAgICAgICAgLSBjb21taXR0
ZXJzLnB5IHJldmlld2VycyBtaXNzaW5nIGZyb20gd2Via2l0LXJldmlld2Vyc0BsaXN0cworICAg
ICAgICAtIHdlYmtpdC1yZXZpZXdlcnNAbGlzdHMgbWVtYmVycyBtaXNzaW5nIGZyb20gY29tbWl0
dGVycy5weQorICAgICAgICAtIHdlYmtpdC1yZXZpZXdlcnNAbGlzdHMgbWVtYmVycyBtaXNzaW5n
IGZyb20gY29tbWl0dGVycy5weSByZXZpZXdlciBsaXN0CisKKyAgICAgICAgVmFsaWRhdGVzIGNv
bW1pdHRlcnMucHkgdnMuIHRydW5rLyBTVk4gaGlzdG9yeToKKyAgICAgICAgLSBjb21taXR0ZXJz
IHdobyBoYXZlIG5vdCBjb21taXR0ZWQgaW4gb3ZlciBhIHllYXIKKyAgICAgICAgLSBTVk4gY29t
bWl0dGVycyBtaXNzaW5nIGZyb20gY29tbWl0dGVycy5weQorICAgICAgICAtIGNvbW1pdHRlcnMu
cHkgbWVtYmVycyB3aG8gaGF2ZSBubyByZWNvcmQgaW4gU1ZOLgorCisgICAgICAgIEFsbCBvZiB0
aGVzZSBsaXN0cyBzdGlsbCBzaG93ICJmYWxzZSBwb3NpdGl2ZXMiIHVudGlsIGEgZmV3IG1vcmUg
Y29tbWl0dGVycy5weSB1cGRhdGVzIGFyZSBtYWRlLCBsaWtlOgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzEzNjYKKworICAgICAgICAqIFNjcmlwdHMv
dmFsaWRhdGUtY29tbWl0dGVyLWxpc3RzOiBBZGRlZC4KKworMjAwOS0xMS0xMSAgRXJpYyBTZWlk
ZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnlnIEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuLgogCiAgICAgICAgIFVwZGF0ZSBLZW5uZXRoJ3MgY29tbWl0dGVyIHJl
Y29yZCB0byBpbmNsdWRlIHRoZSBlbWFpbCBoZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy92YWxpZGF0ZS1jb21taXR0ZXItbGlzdHMgYi9XZWJLaXRUb29scy9TY3JpcHRzL3ZhbGlk
YXRlLWNvbW1pdHRlci1saXN0cwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4w
NWYyYjM2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy92YWxpZGF0ZS1j
b21taXR0ZXItbGlzdHMKQEAgLTAsMCArMSwyNTIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgor
CisjIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKyMgQ2hlY2tzIFB5dGhvbidzIGtub3duIGxpc3Qgb2Yg
Y29tbWl0dGVycyBhZ2FpbnN0IGxpc3RzLndlYmtpdC5vcmcgYW5kIFNWTiBoaXN0b3J5LgorCisK
K2ltcG9ydCBvcworaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCByZQoraW1wb3J0IHVybGxpYjIK
K2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGUsIGRhdGV0aW1lLCB0aW1lZGVsdGEKK2Zyb20gbW9k
dWxlcy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0Citmcm9tIG1vZHVsZXMubG9nZ2lu
ZyBpbXBvcnQgbG9nLCBlcnJvcgorCisjIFdlYktpdCBpbmNsdWRlcyBhIGJ1aWx0IGNvcHkgb2Yg
QmVhdXRpZnVsU291cCBpbiBTY3JpcHRzL21vZHVsZXMKKyMgc28gdGhpcyBpbXBvcnQgc2hvdWxk
IGFsd2F5cyBzdWNjZWVkLgorZnJvbSBtb2R1bGVzLkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0
aWZ1bFNvdXAKKworZGVmIHByaW50X2xpc3RfaWZfbm9uX2VtcHR5KHRpdGxlLCBsaXN0X3RvX3By
aW50KToKKyAgICBpZiBub3QgbGlzdF90b19wcmludDoKKyAgICAgICAgcmV0dXJuCisgICAgcHJp
bnQgIyBOZXdsaW5lIGJlZm9yZSB0aGUgbGlzdAorICAgIHByaW50IHRpdGxlCisgICAgZm9yIGl0
ZW0gaW4gbGlzdF90b19wcmludDoKKyAgICAgICAgcHJpbnQgaXRlbQorCitjbGFzcyBDb21taXR0
ZXJMaXN0RnJvbU1haWxpbmdMaXN0OgorICAgIGNvbW1pdHRlcnNfbGlzdF91cmwgPSAiaHR0cDov
L2xpc3RzLndlYmtpdC5vcmcvbWFpbG1hbi9yb3N0ZXIuY2dpL3dlYmtpdC1jb21taXR0ZXJzIgor
ICAgIHJldmlld2Vyc19saXN0X3VybCA9ICJodHRwOi8vbGlzdHMud2Via2l0Lm9yZy9tYWlsbWFu
L3Jvc3Rlci5jZ2kvd2Via2l0LXJldmlld2VycyIKKworICAgIGRlZiBfZmV0Y2hfZW1haWxzX2Zy
b21fcGFnZShzZWxmLCB1cmwpOgorICAgICAgICBwYWdlID0gdXJsbGliMi51cmxvcGVuKHVybCkK
KyAgICAgICAgc291cCA9IEJlYXV0aWZ1bFNvdXAocGFnZSkKKworICAgICAgICBlbWFpbHMgPSBb
XQorICAgICAgICAjIEdyYWIgdGhlIGNlbGxzIGluIHRoZSBmaXJzdCBjb2x1bW4gKHdoaWNoIGhh
cHBlbnMgdG8gYmUgdGhlIGJ1ZyBpZHMpLgorICAgICAgICBmb3IgZW1haWxfaXRlbSBpbiBzb3Vw
KCdsaScpOgorICAgICAgICAgICAgZW1haWxfbGluayA9IGVtYWlsX2l0ZW0uZmluZCgiYSIpCisg
ICAgICAgICAgICBlbWFpbCA9IGVtYWlsX2xpbmsuc3RyaW5nLnJlcGxhY2UoIiBhdCAiLCAiQCIp
ICMgVGhlIGVtYWlsIGlzIG9iZnVzY2F0ZWQgdXNpbmcgIiBhdCAiIGluc3RlYWQgb2YgIkAiLgor
ICAgICAgICAgICAgZW1haWxzLmFwcGVuZChlbWFpbCkKKyAgICAgICAgcmV0dXJuIGVtYWlscwor
CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfY29tbWl0ZXJzX25vdF9mb3VuZF9pbl9lbWFp
bF9saXN0KGNvbW1pdHRlcnMsIGVtYWlscyk6CisgICAgICAgIG1pc3NpbmdfZnJvbV9tYWlsaW5n
X2xpc3QgPSBbXQorICAgICAgICBmb3IgY29tbWl0dGVyIGluIGNvbW1pdHRlcnM6CisgICAgICAg
ICAgICBmb3IgZW1haWwgaW4gY29tbWl0dGVyLmVtYWlsczoKKyAgICAgICAgICAgICAgICBpZiBl
bWFpbCBpbiBlbWFpbHM6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIG1pc3NpbmdfZnJvbV9tYWlsaW5nX2xpc3QuYXBwZW5kKGNv
bW1pdHRlcikKKyAgICAgICAgcmV0dXJuIG1pc3NpbmdfZnJvbV9tYWlsaW5nX2xpc3QKKworICAg
IEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2VtYWlsc19ub3RfZm91bmRfaW5fY29tbWl0dGVyX2xp
c3QoY29tbWl0dGVycywgZW1haWxzKToKKyAgICAgICAgZW1haWxfdG9fY29tbWl0dGVyX21hcCA9
IHt9CisgICAgICAgIGZvciBjb21taXR0ZXIgaW4gY29tbWl0dGVyczoKKyAgICAgICAgICAgIGZv
ciBlbWFpbCBpbiBjb21taXR0ZXIuZW1haWxzOgorICAgICAgICAgICAgICAgIGVtYWlsX3RvX2Nv
bW1pdHRlcl9tYXBbZW1haWxdID0gY29tbWl0dGVyCisKKyAgICAgICAgcmV0dXJuIGZpbHRlcihs
YW1iZGEgZW1haWw6IG5vdCBlbWFpbF90b19jb21taXR0ZXJfbWFwLmdldChlbWFpbCksIGVtYWls
cykKKworICAgIGRlZiBjaGVja19mb3JfZW1haWxzX21pc3NpbmdfZnJvbV9saXN0KHNlbGYsIGNv
bW1pdHRlcl9saXN0KToKKyAgICAgICAgY29tbWl0dGVyX2VtYWlscyA9IHNlbGYuX2ZldGNoX2Vt
YWlsc19mcm9tX3BhZ2Uoc2VsZi5jb21taXR0ZXJzX2xpc3RfdXJsKQorICAgICAgICBsaXN0X25h
bWUgPSAid2Via2l0LWNvbW1pdHRlcnNAbGlzdHMud2Via2l0Lm9yZyIKKworICAgICAgICBtaXNz
aW5nX2Zyb21fbWFpbGluZ19saXN0ID0gc2VsZi5fY29tbWl0ZXJzX25vdF9mb3VuZF9pbl9lbWFp
bF9saXN0KGNvbW1pdHRlcl9saXN0LmNvbW1pdHRlcnMoKSwgY29tbWl0dGVyX2VtYWlscykKKyAg
ICAgICAgcHJpbnRfbGlzdF9pZl9ub25fZW1wdHkoIkNvbW1pdHRlcnMgbWlzc2luZyBmcm9tICVz
OiIgJSBsaXN0X25hbWUsIG1pc3NpbmdfZnJvbV9tYWlsaW5nX2xpc3QpCisKKyAgICAgICAgdXNl
cnNfbWlzc2luZ19mcm9tX2NvbW1pdHRlcnMgPSBzZWxmLl9lbWFpbHNfbm90X2ZvdW5kX2luX2Nv
bW1pdHRlcl9saXN0KGNvbW1pdHRlcl9saXN0LmNvbW1pdHRlcnMoKSwgY29tbWl0dGVyX2VtYWls
cykKKyAgICAgICAgcHJpbnRfbGlzdF9pZl9ub25fZW1wdHkoIlN1YmNyaWJlcnMgdG8gJXMgbWlz
c2luZyBmcm9tIGNvbW1pdHRlci5weToiICUgbGlzdF9uYW1lLCB1c2Vyc19taXNzaW5nX2Zyb21f
Y29tbWl0dGVycykKKworCisgICAgICAgIHJldmlld2VyX2VtYWlscyA9IHNlbGYuX2ZldGNoX2Vt
YWlsc19mcm9tX3BhZ2Uoc2VsZi5yZXZpZXdlcnNfbGlzdF91cmwpCisgICAgICAgIGxpc3RfbmFt
ZSA9ICJ3ZWJraXQtcmV2aWV3ZXJzQGxpc3RzLndlYmtpdC5vcmciCisKKyAgICAgICAgbWlzc2lu
Z19mcm9tX21haWxpbmdfbGlzdCA9IHNlbGYuX2NvbW1pdGVyc19ub3RfZm91bmRfaW5fZW1haWxf
bGlzdChjb21taXR0ZXJfbGlzdC5yZXZpZXdlcnMoKSwgcmV2aWV3ZXJfZW1haWxzKQorICAgICAg
ICBwcmludF9saXN0X2lmX25vbl9lbXB0eSgiUmV2aWV3ZXJzIG1pc3NpbmcgZnJvbSAlczoiICUg
bGlzdF9uYW1lLCBtaXNzaW5nX2Zyb21fbWFpbGluZ19saXN0KQorCisgICAgICAgIG1pc3Npbmdf
ZnJvbV9yZXZpZXdlcnMgPSBzZWxmLl9lbWFpbHNfbm90X2ZvdW5kX2luX2NvbW1pdHRlcl9saXN0
KGNvbW1pdHRlcl9saXN0LnJldmlld2VycygpLCByZXZpZXdlcl9lbWFpbHMpCisgICAgICAgIHBy
aW50X2xpc3RfaWZfbm9uX2VtcHR5KCJTdWJjcmliZXJzIHRvICVzIG1pc3NpbmcgZnJvbSByZXZp
ZXdlcnMgaW4gY29tbWl0dGVyLnB5OiIgJSBsaXN0X25hbWUsIG1pc3NpbmdfZnJvbV9yZXZpZXdl
cnMpCisKKyAgICAgICAgbWlzc2luZ19mcm9tX2NvbW1pdHRlcnMgPSBzZWxmLl9lbWFpbHNfbm90
X2ZvdW5kX2luX2NvbW1pdHRlcl9saXN0KGNvbW1pdHRlcl9saXN0LmNvbW1pdHRlcnMoKSwgcmV2
aWV3ZXJfZW1haWxzKQorICAgICAgICBwcmludF9saXN0X2lmX25vbl9lbXB0eSgiU3ViY3JpYmVy
cyB0byAlcyBjb21wbGV0ZWx5IG1pc3NpbmcgZnJvbSBjb21taXR0ZXJzLnB5IiAlIGxpc3RfbmFt
ZSwgbWlzc2luZ19mcm9tX2NvbW1pdHRlcnMpCisKKworY2xhc3MgQ29tbWl0dGVyTGlzdEZyb21H
aXQ6CisgICAgbG9naW5fdG9fZW1haWxfYWRkcmVzcyA9IHsKKyAgICAgICAgJ2FsaWNlbGkxJyA6
ICdhbGljZS5saXVAYXBwbGUuY29tJywKKyAgICAgICAgJ2JkYXNoJyA6ICdtcm93ZUBhcHBsZS5j
b20nLAorICAgICAgICAnYmRpYmVsbG8nIDogJ2JkaWJlbGxvQGFwcGxlLmNvbScsICMgQnJ1Y2Ug
RGlCZWxsbywgb25seSA0IGNvbW1pdHM6IHIxMDAyMywgcjk1NDgsIHI5NTM4LCByOTUzNQorICAg
ICAgICAnY2JsdScgOiAnY2JsdUBhcHBsZS5jb20nLAorICAgICAgICAnY3BldGVyc2UnIDogJ2Nw
ZXRlcnNlbkBhcHBsZS5jb20nLAorICAgICAgICAnZXNlaWRlbCcgOiAnZXJpY0B3ZWJraXQub3Jn
JywKKyAgICAgICAgJ2dkZW5uaXMnIDogJ2dkZW5uaXNAd2Via2l0Lm9yZycsCisgICAgICAgICdn
b2xkc21pdCcgOiAnZ29sZHNtaXRAYXBwbGUuY29tJywgIyBEZWJiaWUgR29sZHNtaXRoLCBvbmx5
IG9uZSBjb21taXQgcjg4MzkKKyAgICAgICAgJ2dyYW1wcycgOiAnZ3JhbXBzQGFwcGxlLmNvbScs
CisgICAgICAgICdob25leWN1dHQnIDogJ2pob25leWN1dHRAYXBwbGUuY29tJywKKyAgICAgICAg
J2pkZXZhbGsnIDogJ2pvb3N0QHdlYmtpdC5vcmcnLAorICAgICAgICAnamVucycgOiAnamVuc0Bh
cHBsZS5jb20nLAorICAgICAgICAnanVzdGluZycgOiAnanVzdGluLmdhcmNpYUBhcHBsZS5jb20n
LAorICAgICAgICAna2FsaScgOiAna2FsaUBhcHBsZS5jb20nLCAjIENocmlzdHkgV2FycmVuLCBk
aWQgQklESSB3b3JrLCA1IGNvbW1pdHM6IHI4ODE1LCByODgwMiwgcjg4MDEsIHI4NzkxLCByODc3
Mywgcjg2MDMKKyAgICAgICAgJ2tqaycgOiAna2tvd2FsY3p5a0BnbWFpbC5jb20nLAorICAgICAg
ICAna21jY3VsbG8nIDogJ2ttY2N1bGxvdWdoQGFwcGxlLmNvbScsCisgICAgICAgICdrb2NpZW5k
YScgOiAna29jaWVuZGFAYXBwbGUuY29tJywKKyAgICAgICAgJ2xhbWFkaW8nIDogJ2xhbWFkaW9A
YXBwbGUuY29tJywgIyBMb3UgQW1hZGlvLCBvbmx5IDIgY29tbWl0czogcjE3OTQ5IGFuZCByMTc3
ODMKKyAgICAgICAgJ2xhcnMnIDogJ2xhcnNAa2RlLm9yZycsCisgICAgICAgICdsd2VpbnRyYXVi
JyA6ICdsd2VpbnRyYXViQGFwcGxlLmNvbScsCisgICAgICAgICdseXBhbm92JyA6ICdseXBhbm92
QGtkZS5vcmcnLAorICAgICAgICAnbWhheScgOiAnbWhheUBhcHBsZS5jb20nLCAjIE1pa2UgSGF5
LCAzIGNvbW1pdHM6IHIzODEzLCByMjU1MiwgcjI1NDgKKyAgICAgICAgJ291Y2gnIDogJ291Y2hA
YXBwbGUuY29tJywgIyBKb2huIExvdWNoCisgICAgICAgICdweWVoJyA6ICdwYXR0aUBhcHBsZS5j
b20nLCAjIFBhdHRpIFllaCwgZGlkIFZvaWNlT3ZlciB3b3JrIGluIFdlYktpdAorICAgICAgICAn
cmp3JyA6ICdyandAYXBwbGUuY29tJywKKyAgICAgICAgJ3NlYW5naWVzJyA6ICdzZWFuZ2llc0Bh
cHBsZS5jb20nLCAjIFNlYW4gR2llcz8sIG9ubHkgNSBjb21taXRzOiByMTY2MDAsIHIxNjU5Miwg
cjE2NTExLCByMTY0ODksIHIxNjQ4NAorICAgICAgICAnc2hlcmlkYW4nIDogJ3NoZXJpZGFuQGFw
cGxlLmNvbScsICMgU2hlbGx5IFNoZXJpZGFuCisgICAgICAgICd0aGF0Y2hlcicgOiAndGltb3Ro
eUBhcHBsZS5jb20nLAorICAgICAgICAndG9tZXJuaWMnIDogJ3RpbW9AYXBwbGUuY29tJywKKyAg
ICAgICAgJ3RyZXknIDogJ3RyZXlAdXNhLm5ldCcsCisgICAgICAgICd0cmlzdGFuJyA6ICd0cmlz
dGFuQGFwcGxlLmNvbScsCisgICAgICAgICd2aWNraScgOiAndmlja2lAYXBwbGUuY29tJywKKyAg
ICAgICAgJ3ZvYXMnIDogJ3ZvYXNAYXBwbGUuY29tJywgIyBFZCBWb2FzLCBkaWQgc29tZSBDYXJi
b24gd29yayBpbiBXZWJLaXQKKyAgICAgICAgJ3phY2snIDogJ3phY2tAa2RlLm9yZycsCisgICAg
ICAgICd6aW1tZXJtYW5uJyA6ICd6aW1tZXJtYW5uQHdlYmtpdC5vcmcnLAorICAgIH0KKworICAg
IGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fbGFzdF9jb21taXRfdGltZV9ieV9h
dXRob3JfY2FjaGUgPSB7fQorCisgICAgZGVmIF9mZXRjaF9hdXRob3JzX2FuZF9sYXN0X2NvbW1p
dF90aW1lX2Zyb21fZ2l0X2xvZyhzZWxmKToKKyAgICAgICAgbGFzdF9jb21taXRfZGF0ZXMgPSB7
fQorICAgICAgICBnaXRfbG9nX2FyZ3MgPSBbJ2dpdCcsICdsb2cnLCAnLS1yZXZlcnNlJywgJy0t
cHJldHR5PWZvcm1hdDolYWUgJWF0J10KKyAgICAgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9w
ZW4oZ2l0X2xvZ19hcmdzLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorCisgICAgICAgICMgZXJp
Y0B3ZWJraXQub3JnQDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYyAxMjU3MDkw
ODk5CisgICAgICAgIGxpbmVfcmVnZXhwID0gcmUuY29tcGlsZSgiXig/UDxhdXRob3I+LispQFxT
KyAoP1A8dGltZXN0YW1wPlxkKykkIikKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAg
IG91dHB1dF9saW5lID0gcHJvY2Vzcy5zdGRvdXQucmVhZGxpbmUoKQorICAgICAgICAgICAgaWYg
b3V0cHV0X2xpbmUgPT0gJycgYW5kIHByb2Nlc3MucG9sbCgpICE9IE5vbmU6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGxhc3RfY29tbWl0X2RhdGVzCisKKyAgICAgICAgICAgIG1hdGNoX3Jlc3Vs
dCA9IGxpbmVfcmVnZXhwLm1hdGNoKG91dHB1dF9saW5lKQorICAgICAgICAgICAgaWYgbm90IG1h
dGNoX3Jlc3VsdDoKKyAgICAgICAgICAgICAgICBlcnJvcigiRmFpbGVkIHRvIG1hdGNoIGxpbmU6
ICVzIiAlIG91dHB1dF9saW5lKQorICAgICAgICAgICAgbGFzdF9jb21taXRfZGF0ZXNbbWF0Y2hf
cmVzdWx0Lmdyb3VwKCdhdXRob3InKV0gPSBmbG9hdChtYXRjaF9yZXN1bHQuZ3JvdXAoJ3RpbWVz
dGFtcCcpKQorCisgICAgZGVmIF9maWxsX2luX2VtYWlsc19mb3Jfb2xkX2xvZ2lucyhzZWxmKToK
KyAgICAgICAgYXV0aG9yc19taXNzaW5nX2VtYWlsID0gZmlsdGVyKGxhbWJkYSBhdXRob3I6IGF1
dGhvci5maW5kKCdAJykgPT0gLTEsIHNlbGYuX2xhc3RfY29tbWl0X3RpbWVfYnlfYXV0aG9yX2Nh
Y2hlKQorICAgICAgICBhdXRob3JzX3dpdGhfZW1haWwgPSBmaWx0ZXIobGFtYmRhIGF1dGhvcjog
YXV0aG9yLmZpbmQoJ0AnKSAhPSAtMSwgc2VsZi5fbGFzdF9jb21taXRfdGltZV9ieV9hdXRob3Jf
Y2FjaGUpCisgICAgICAgIHByZWZpeGVzX29mX2F1dGhvcnNfd2l0aF9lbWFpbCA9IG1hcChsYW1i
ZGEgYXV0aG9yOiBhdXRob3Iuc3BsaXQoJ0AnKVswXSwgYXV0aG9yc193aXRoX2VtYWlsKQorCisg
ICAgICAgIGZvciBhdXRob3IgaW4gYXV0aG9yc19taXNzaW5nX2VtYWlsOgorICAgICAgICAgICAg
IyBGaXJzdCBjaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBhIG1hbnVhbCBtYXBwaW5nIGZyb20gbG9n
aW4gdG8gZW1haWwuCisgICAgICAgICAgICBhdXRob3JfZW1haWwgPSBzZWxmLmxvZ2luX3RvX2Vt
YWlsX2FkZHJlc3MuZ2V0KGF1dGhvcikKKworICAgICAgICAgICAgIyBNb3N0IG9sZCBsb2dpbnMg
bGlrZSAnZGFyaW4nIGFyZSBub3cganVzdCAnZGFyaW5AYXBwbGUuY29tJywgc28gY2hlY2sgZm9y
IGEgcHJlZml4IG1hdGNoIGlmIGEgbWFudWFsIG1hcHBpbmcgd2FzIG5vdCBmb3VuZC4KKyAgICAg
ICAgICAgIGlmIG5vdCBhdXRob3JfZW1haWwgYW5kIGF1dGhvciBpbiBwcmVmaXhlc19vZl9hdXRo
b3JzX3dpdGhfZW1haWw6CisgICAgICAgICAgICAgICAgYXV0aG9yX2VtYWlsX2luZGV4ID0gcHJl
Zml4ZXNfb2ZfYXV0aG9yc193aXRoX2VtYWlsLmluZGV4KGF1dGhvcikKKyAgICAgICAgICAgICAg
ICBhdXRob3JfZW1haWwgPSBhdXRob3JzX3dpdGhfZW1haWxbYXV0aG9yX2VtYWlsX2luZGV4XQor
CisgICAgICAgICAgICBpZiBub3QgYXV0aG9yX2VtYWlsOgorICAgICAgICAgICAgICAgICMgTm8g
a25vd24gZW1haWwgbWFwcGluZywgbGlrZWx5IG5vdCBhbiBhY3RpdmUgY29tbWl0dGVyLiAgV2Ug
Y291bGQgbG9nIGhlcmUuCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAg
IyBsb2coIiVzIC0+ICVzIiAlIChhdXRob3IsIGF1dGhvcl9lbWFpbCkpICMgRm9yIHNhbml0eSBj
aGVja2luZy4KKyAgICAgICAgICAgIG5vX2VtYWlsX2NvbW1pdF90aW1lID0gc2VsZi5fbGFzdF9j
b21taXRfdGltZV9ieV9hdXRob3JfY2FjaGUuZ2V0KGF1dGhvcikKKyAgICAgICAgICAgIGVtYWls
X2NvbW1pdF90aW1lID0gc2VsZi5fbGFzdF9jb21taXRfdGltZV9ieV9hdXRob3JfY2FjaGUuZ2V0
KGF1dGhvcl9lbWFpbCkKKyAgICAgICAgICAgICMgV2UgY29tcGFyZSB0aGUgdGltZXN0YW1wcyBm
b3IgZXh0cmEgc2FuaXR5IGV2ZW4gdGhvdWdoIHdlIGNvdWxkIGFzc3VtZSBjb21taXRzIGJlZm9y
ZSBlbWFpbCBhZGRyZXNzIHdlcmUgdXNlZCBmb3IgbG9naW4gYXJlIGFsd2F5cyBnb2luZyB0byBi
ZSBvbGRlci4KKyAgICAgICAgICAgIGlmIG5vdCBlbWFpbF9jb21taXRfdGltZSBvciBlbWFpbF9j
b21taXRfdGltZSA8IG5vX2VtYWlsX2NvbW1pdF90aW1lOgorICAgICAgICAgICAgICAgIHNlbGYu
X2xhc3RfY29tbWl0X3RpbWVfYnlfYXV0aG9yX2NhY2hlW2F1dGhvcl9lbWFpbF0gPSBub19lbWFp
bF9jb21taXRfdGltZQorICAgICAgICAgICAgZGVsIHNlbGYuX2xhc3RfY29tbWl0X3RpbWVfYnlf
YXV0aG9yX2NhY2hlW2F1dGhvcl0KKworICAgIGRlZiBfbGFzdF9jb21taXRfYnlfYXV0aG9yKHNl
bGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fbGFzdF9jb21taXRfdGltZV9ieV9hdXRob3JfY2Fj
aGU6CisgICAgICAgICAgICBzZWxmLl9sYXN0X2NvbW1pdF90aW1lX2J5X2F1dGhvcl9jYWNoZSA9
IHNlbGYuX2ZldGNoX2F1dGhvcnNfYW5kX2xhc3RfY29tbWl0X3RpbWVfZnJvbV9naXRfbG9nKCkK
KyAgICAgICAgICAgIHNlbGYuX2ZpbGxfaW5fZW1haWxzX2Zvcl9vbGRfbG9naW5zKCkKKyAgICAg
ICAgICAgIGRlbCBzZWxmLl9sYXN0X2NvbW1pdF90aW1lX2J5X2F1dGhvcl9jYWNoZVsnKG5vIGF1
dGhvciknXSAjIFRoZSBpbml0aWFsIHN2biBpbXBvcnQgaXNuJ3QgdmVyeSB1c2VmdWwuCisgICAg
ICAgIHJldHVybiBzZWxmLl9sYXN0X2NvbW1pdF90aW1lX2J5X2F1dGhvcl9jYWNoZQorCisgICAg
QHN0YXRpY21ldGhvZAorICAgIGRlZiBfcHJpbnRfdGhyZWVfY29sdW1uX3Jvdyh3aWR0aHMsIHZh
bHVlcyk6CisgICAgICAgIHByaW50ICIlcyVzJXMiICUgKHZhbHVlc1swXS5sanVzdCh3aWR0aHNb
MF0pLCB2YWx1ZXNbMV0ubGp1c3Qod2lkdGhzWzFdKSwgdmFsdWVzWzJdKQorCisgICAgZGVmIHBy
aW50X3Bvc3NpYmx5X2V4cGlyZWRfY29tbWl0dGVycyhzZWxmLCBjb21taXR0ZXJfbGlzdCk6Cisg
ICAgICAgIGF1dGhvcnNfYW5kX2xhc3RfY29tbWl0cyA9IHNlbGYuX2xhc3RfY29tbWl0X2J5X2F1
dGhvcigpLml0ZW1zKCkKKyAgICAgICAgYXV0aG9yc19hbmRfbGFzdF9jb21taXRzLnNvcnQobGFt
YmRhIGEsYjogY21wKGFbMV0sIGJbMV0pLCByZXZlcnNlPVRydWUpCisgICAgICAgIGNvbW1pdHRl
cl9jdXR0b2YgPSBkYXRlLnRvZGF5KCkgLSB0aW1lZGVsdGEoZGF5cz0zNjUpCisgICAgICAgIGNv
bHVtbl93aWR0aHMgPSBbMTMsIDI1XQorICAgICAgICBwcmludAorICAgICAgICBwcmludCAiQ29t
bWl0dGVycyB3aG8gaGF2ZSBub3QgY29tbWl0dGVkIHdpdGhpbiBvbmUgeWVhcjoiCisgICAgICAg
IHNlbGYuX3ByaW50X3RocmVlX2NvbHVtbl9yb3coY29sdW1uX3dpZHRocywgKCJMYXN0IENvbW1p
dCIsICJDb21taXR0ZXIgRW1haWwiLCAiQ29tbWl0dGVyIFJlY29yZCIpKQorICAgICAgICBmb3Ig
KGF1dGhvciwgbGFzdF9jb21taXQpIGluIGF1dGhvcnNfYW5kX2xhc3RfY29tbWl0czoKKyAgICAg
ICAgICAgIGxhc3RfY29tbWl0X2RhdGUgPSBkYXRlLmZyb210aW1lc3RhbXAobGFzdF9jb21taXQp
CisgICAgICAgICAgICBpZiBjb21taXR0ZXJfY3V0dG9mID4gbGFzdF9jb21taXRfZGF0ZToKKyAg
ICAgICAgICAgICAgICBjb21taXR0ZXJfcmVjb3JkID0gY29tbWl0dGVyX2xpc3QuY29tbWl0dGVy
X2J5X2VtYWlsKGF1dGhvcikKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmludF90aHJlZV9jb2x1
bW5fcm93KGNvbHVtbl93aWR0aHMsIChzdHIobGFzdF9jb21taXRfZGF0ZSksIGF1dGhvciwgY29t
bWl0dGVyX3JlY29yZCkpCisKKyAgICBkZWYgcHJpbnRfY29tbWl0dGVyc19taXNzaW5nX2Zyb21f
Y29tbWl0dGVyX2xpc3Qoc2VsZiwgY29tbWl0dGVyX2xpc3QpOgorICAgICAgICBtaXNzaW5nX2Zy
b21fY29tbWl0dGVyc19weSA9IFtdCisgICAgICAgIGxhc3RfY29tbWl0X3RpbWVfYnlfYXV0aG9y
ID0gc2VsZi5fbGFzdF9jb21taXRfYnlfYXV0aG9yKCkKKyAgICAgICAgZm9yIGF1dGhvciBpbiBs
YXN0X2NvbW1pdF90aW1lX2J5X2F1dGhvcjoKKyAgICAgICAgICAgIGlmIG5vdCBjb21taXR0ZXJf
bGlzdC5jb21taXR0ZXJfYnlfZW1haWwoYXV0aG9yKToKKyAgICAgICAgICAgICAgICBtaXNzaW5n
X2Zyb21fY29tbWl0dGVyc19weS5hcHBlbmQoYXV0aG9yKQorCisgICAgICAgIG5ldmVyX2NvbW1p
dHRlZCA9IFtdCisgICAgICAgIGZvciBjb21taXR0ZXIgaW4gY29tbWl0dGVyX2xpc3QuY29tbWl0
dGVycygpOgorICAgICAgICAgICAgZm9yIGVtYWlsIGluIGNvbW1pdHRlci5lbWFpbHM6CisgICAg
ICAgICAgICAgICAgaWYgbGFzdF9jb21taXRfdGltZV9ieV9hdXRob3IuZ2V0KGVtYWlsKToKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgbmV2ZXJfY29tbWl0dGVkLmFwcGVuZChjb21taXR0ZXIpCisKKyAgICAgICAgcHJpbnRfbGlz
dF9pZl9ub25fZW1wdHkoIkhpc3RvcmljYWwgY29tbWl0dGVycyBtaXNzaW5nIGZyb20gY29tbWl0
dGVyLnB5OiIsIG1pc3NpbmdfZnJvbV9jb21taXR0ZXJzX3B5KQorICAgICAgICBwcmludF9saXN0
X2lmX25vbl9lbXB0eSgiQ29tbWl0dGVycyBpbiBjb21taXR0ZXIucHkgd2hvIGhhdmUgbmV2ZXIg
Y29tbWl0dGVkOiIsIG5ldmVyX2NvbW1pdHRlZCkKKworCitkZWYgbWFpbigpOgorICAgIGNvbW1p
dHRlcl9saXN0ID0gQ29tbWl0dGVyTGlzdCgpCisgICAgQ29tbWl0dGVyTGlzdEZyb21NYWlsaW5n
TGlzdCgpLmNoZWNrX2Zvcl9lbWFpbHNfbWlzc2luZ19mcm9tX2xpc3QoY29tbWl0dGVyX2xpc3Qp
CisKKyAgICBzdm5fY29tbWl0dGVyX2xpc3QgPSBDb21taXR0ZXJMaXN0RnJvbUdpdCgpCisgICAg
c3ZuX2NvbW1pdHRlcl9saXN0LnByaW50X3Bvc3NpYmx5X2V4cGlyZWRfY29tbWl0dGVycyhjb21t
aXR0ZXJfbGlzdCkKKyAgICBzdm5fY29tbWl0dGVyX2xpc3QucHJpbnRfY29tbWl0dGVyc19taXNz
aW5nX2Zyb21fY29tbWl0dGVyX2xpc3QoY29tbWl0dGVyX2xpc3QpCisKK2lmIF9fbmFtZV9fID09
ICJfX21haW5fXyI6CisgICAgbWFpbigp
</data>

          </attachment>
      

    </bug>

</bugzilla>