<?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>66144</bug_id>
          
          <creation_ts>2011-08-12 09:41:55 -0700</creation_ts>
          <short_desc>garden-o-matic needs a summary view with actions for each problem.</short_desc>
          <delta_ts>2011-08-16 13:57:37 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>66096</dependson>
    
    <dependson>66245</dependson>
    
    <dependson>66252</dependson>
    
    <dependson>66318</dependson>
    
    <dependson>66324</dependson>
          <blocked>64188</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>abarth</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>450474</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-12 09:41:55 -0700</bug_when>
    <thetext>garden-o-matic needs a summary view with actions for each problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450475</commentid>
    <comment_count>1</comment_count>
      <attachid>103779</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-12 09:45:01 -0700</bug_when>
    <thetext>Created attachment 103779
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450515</commentid>
    <comment_count>2</comment_count>
      <attachid>103784</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-12 11:12:52 -0700</bug_when>
    <thetext>Created attachment 103784
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450556</commentid>
    <comment_count>3</comment_count>
      <attachid>103784</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-12 12:22:46 -0700</bug_when>
    <thetext>Comment on attachment 103784
Patch

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

This looks pretty cool.  It&apos;s hard to visualize what the resulting UI looks like, but I&apos;ll see that soon.  R- for CommitIndex and XSS.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary.js:47
&gt; +    findCommitByRevision: function(revision) {
&gt; +        return this._index[revision];
&gt; +    }

What if 92964  isn&apos;t in this._index ?  That&apos;s common for revisions that affect other branches.  A better API is probably to provide a range of revisions and having this object return a list of CommitData objects in that range.

There&apos;s no need for this to be an object.  It&apos;s better if it&apos;s just a free function in the model package.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary.js:50
&gt; +var g_commitIndex = new CommitIndex(model.state);

This is really part of the model, and should be in the model package.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary.js:61
&gt; +            console.info(&quot;Could not find commit data for revision&quot;, revision);

This isn&apos;t worth logging about.  It&apos;s a very common case.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:1
&gt; +var ui = ui || {};

Copyright block?

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:20
&gt; +var Base = base.extends(&apos;li&apos;, {

Base seems like a very general name.  Can use a more specific name?

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:23
&gt; +        this.id = &apos;n&apos; + g_notificationId++;

Yuck.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:32
&gt; +        $(this).fadeOut(function()
&gt; +        {

We&apos;ve been merging these lines.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:72
&gt; +        this._description.innerHTML = &apos;&lt;a href=&quot;&quot;&gt;&apos; + commitData.revision + &apos;&lt;/a&gt;&apos; + commitData.title + &apos; &apos; + commitData.author + &apos; (&apos; + commitData.reviewer + &apos;)&apos;;

This line of code contains XSS.  Please don&apos;t use innerHTML or string concatenation to create HTML.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450558</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-12 12:23:03 -0700</bug_when>
    <thetext>Also, the notification package lacks tests.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450840</commentid>
    <comment_count>5</comment_count>
      <attachid>103859</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-13 08:30:20 -0700</bug_when>
    <thetext>Created attachment 103859
WIP: Switching computers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450899</commentid>
    <comment_count>6</comment_count>
      <attachid>103859</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-13 16:57:56 -0700</bug_when>
    <thetext>Comment on attachment 103859
WIP: Switching computers.

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

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js:149
&gt; +        var keyPieces = [];
&gt; +        forEachRevision(function(revision) {
&gt; +            keyPieces.push(revision);
&gt; +        });
&gt; +        var key = keyPieces.join(&apos;+&apos;);

This is overkill, right?  All revision ranges are contiguous, which means they&apos;re characterized by newestPassingRevision and oldestFailingRevision.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js:150
&gt; +        var failure = g_failureObjects[key];

This g_failureObjects feels like an instance of a more general concept of some kind of live dictionary.  failureAnalysisByTest is another instance of the same concept.  Maybe it&apos;s best to abstract that out into base?

Basically, you want to present it with a dictionary of updated keys/values.  It should then initialize slots for the new keys (via a callback you provide) and destruct keys that are no longer present (again via a callback).  In your use case here, you probably want some sort of &quot;update&quot; step where we call some function with the updated keys/values to let them update.  That will move all this machination out of this layer, where it doesn&apos;t really belong.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js:157
&gt; +            g_failureObjects[key] = createObjectCallback();
&gt; +            forEachRevision(function(revision) {
&gt; +                var commitData = findCommitByRevision(revision);
&gt; +                if (commitData)
&gt; +                    failure.addCommitData(commitData);
&gt; +            });

Rather than calling addCommitData a bunch of times, why not just have this code pass in a commitDataList all-at-once?

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js:168
&gt; +        for(var key in Object.keys(g_failureObjects)) {
&gt; +            var failureObject = g_failureObjects[key];
&gt; +            if (!failureObjectMap[failureObject]) {
&gt; +                failureObject.dismiss();
&gt; +                delete g_failureObjects[key];
&gt; +            }
&gt; +        }

For example, all this code has nothing to do with &quot;failure&quot; anything.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:27
&gt; +        // FIXME: These fade in/out effects are lame.

You should feel to remove them if you think they&apos;re lame!

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:80
&gt; +        // FIXME: Set href.
&gt; +        linkToRevision.href = &apos;&apos;;

There&apos;s a function in the ui package that knows how to construct a hyperlink to a revision.  You&apos;ll also want it to target=&quot;_blank&quot;.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:82
&gt; +        this._description.appendChild(document.createTextNode(commitData.title + &apos; &apos; + commitData.author + &apos; (&apos; + commitData.reviewer + &apos;)&apos;));

What if there&apos;s no reviewer?  Also, the existing UI grays out the author/reviewer, which is something I&apos;d like to keep.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450901</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-13 17:12:22 -0700</bug_when>
    <thetext>(Sorry for jumping on your work-in-progress patch.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450957</commentid>
    <comment_count>8</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-14 16:19:20 -0700</bug_when>
    <thetext>I&apos;ll work on the live cache abstraction first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451715</commentid>
    <comment_count>9</comment_count>
      <attachid>104064</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-16 10:22:32 -0700</bug_when>
    <thetext>Created attachment 104064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451839</commentid>
    <comment_count>10</comment_count>
      <attachid>104064</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-16 13:46:06 -0700</bug_when>
    <thetext>Comment on attachment 104064
Patch

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

This looks like a great starting point.  There are a bunch if FIXMES, but we can iterate on those.  :)

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:58
&gt; +    equal(suspiciousCommit.innerHTML, &apos;&lt;div class=&quot;description&quot;&gt;&lt;a href=&quot;&quot;&gt;1&lt;/a&gt;title author (reviewer)&lt;/div&gt;&lt;ul class=&quot;actions&quot;&gt;&lt;li&gt;&lt;button&gt;Roll out&lt;/button&gt;&lt;/li&gt;&lt;/ul&gt;&apos;);

I usually try to formate these strings using + and line breaks to make them (and diffs) more readable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451850</commentid>
    <comment_count>11</comment_count>
      <attachid>104064</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-16 13:57:14 -0700</bug_when>
    <thetext>Comment on attachment 104064
Patch

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

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:58
&gt;&gt; +    equal(suspiciousCommit.innerHTML, &apos;&lt;div class=&quot;description&quot;&gt;&lt;a href=&quot;&quot;&gt;1&lt;/a&gt;title author (reviewer)&lt;/div&gt;&lt;ul class=&quot;actions&quot;&gt;&lt;li&gt;&lt;button&gt;Roll out&lt;/button&gt;&lt;/li&gt;&lt;/ul&gt;&apos;);
&gt; 
&gt; I usually try to formate these strings using + and line breaks to make them (and diffs) more readable.

Yeah, it&apos;s going to get pretty ghastly quick once I start filling these in. I&apos;ll think of a better method to test/represent these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451851</commentid>
    <comment_count>12</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-16 13:57:37 -0700</bug_when>
    <thetext>Committed r93152: &lt;http://trac.webkit.org/changeset/93152&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103779</attachid>
            <date>2011-08-12 09:45:01 -0700</date>
            <delta_ts>2011-08-12 11:12:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66144-20110812094500.patch</filename>
            <type>text/plain</type>
            <size>12191</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI4NjEKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL3N1bW1hcnkuanMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9zdW1tYXJ5LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdiNzU1ODc1NzM1OTBjNjNiODk2OTdhODQ0ZWQ1YzQ0NWU0ZGFmZjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9zdW1tYXJ5LmpzCkBAIC0wLDAg
KzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworKGZ1bmN0aW9uKCkgeworCit2YXIgZ19hY3Rpb25zID0g
bmV3IHVpLm5vdGlmaWNhdGlvbnMuU3RyZWFtKCk7Cit2YXIgZ19pbmZvID0gbmV3IHVpLm5vdGlm
aWNhdGlvbnMuU3RyZWFtKCk7CisKK3ZhciBnX3VwZGF0ZVRpbWVySWQgPSAwOworCitmdW5jdGlv
biBDb21taXRJbmRleChzdGF0ZSkKK3sKKyAgICB0aGlzLl9pbmRleCA9IHt9OworICAgIHRoaXMu
X3N0YXRlID0gc3RhdGU7Cit9CisKK0NvbW1pdEluZGV4LnByb3RvdHlwZSA9IHsKKyAgICB1cGRh
dGU6IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLl9zdGF0ZS5yZWNlbnRDb21taXRzLmZvckVh
Y2goZnVuY3Rpb24oY29tbWl0RGF0YSkgeworICAgICAgICAgICAgdGhpcy5faW5kZXhbY29tbWl0
RGF0YS5yZXZpc2lvbl0gPSBjb21taXREYXRhOworICAgICAgICB9LCB0aGlzKTsKKyAgICB9LAor
ICAgIGZpbmRDb21taXRCeVJldmlzaW9uOiBmdW5jdGlvbihyZXZpc2lvbikgeworICAgICAgICBy
ZXR1cm4gdGhpcy5faW5kZXhbcmV2aXNpb25dOworICAgIH0KK30KKwordmFyIGdfY29tbWl0SW5k
ZXggPSBuZXcgQ29tbWl0SW5kZXgobW9kZWwuc3RhdGUpOworCitmdW5jdGlvbiBzaG93VW5leHBl
Y3RlZEZhaWx1cmVzKGZhaWx1cmVBbmFseXNpcykKK3sKKyAgICB2YXIgZmFpbHVyZSA9IG5ldyB1
aS5ub3RpZmljYXRpb25zLlRlc3RGYWlsdXJlKCk7CisgICAgLy8gRklYTUU6IEFsc28gcHJvdmlk
ZSBpbmZvcm1hdGlvbiBvbiBib3QgZmFpbHVyZXMuCisgICAgZmFpbHVyZS5kZXNjcmlwdGlvbiA9
IGZhaWx1cmVBbmFseXNpcy50ZXN0TmFtZTsKKyAgICAvLyBGSVhNRTogUmV0cmlldmUgZGF0ZSBm
cm9tIGNvbW1pdERhdGEuCisgICAgZm9yICh2YXIgcmV2aXNpb24gPSBmYWlsdXJlQW5hbHlzaXMu
bmV3ZXN0UGFzc2luZ1JldmlzaW9uICsgMTsgcmV2aXNpb24gPD0gZmFpbHVyZUFuYWx5c2lzLm9s
ZGVzdEZhaWxpbmdSZXZpc2lvbjsgKytyZXZpc2lvbikgeworICAgICAgICAvLyBGSVhNRTogR3Jv
dXAgZmFpbHVyZUFuYWx5c2VzIGJ5IGNvbW1pdHMuCisgICAgICAgIHZhciBjb21taXREYXRhID0g
Z19jb21taXRJbmRleC5maW5kQ29tbWl0QnlSZXZpc2lvbihyZXZpc2lvbik7CisgICAgICAgIGlm
ICghY29tbWl0RGF0YSkgeworICAgICAgICAgICAgY29uc29sZS5lcnJvcigiQ291bGQgbm90IGZp
bmQgY29tbWl0IGRhdGEgZm9yIHJldmlzaW9uIiwgcmV2aXNpb24pOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIHZhciBjdWxwcml0ID0gZmFpbHVyZS5hZGRDYXVzZShu
ZXcgdWkubm90aWZpY2F0aW9ucy5TdXNwaWNpb3VzQ29tbWl0KCkpOworICAgICAgICAvLyBGSVhN
RTogU2hvdWxkIGp1c3QgdGFrZSBjb21taXREYXRhIGFzIGNvbnN0cnVjdG9yIGFyZ3VtZW50Lgor
ICAgICAgICBjdWxwcml0LmNvbW1pdERhdGEgPSBjb21taXREYXRhOworICAgICAgICBnX2FjdGlv
bnMucHVzaChmYWlsdXJlKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHVwZGF0ZSgpCit7CisgICAg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgYnV0dG9uIHdpdGggYSBwcm9ncmVzcyBlbGVtZW50
LgorICAgIHZhciB1cGRhdGluZyA9IG5ldyB1aS5ub3RpZmljYXRpb25zLkluZm8oKTsKKyAgICB1
cGRhdGluZy5tZXNzYWdlID0gIlVwZGF0aW5nIC4uLiI7CisgICAgZ19pbmZvLnB1c2godXBkYXRp
bmcpOworCisgICAgYmFzZS5jYWxsSW5QYXJhbGxlbChbbW9kZWwudXBkYXRlUmVjZW50Q29tbWl0
cywgbW9kZWwudXBkYXRlUmVzdWx0c0J5QnVpbGRlcl0sIGZ1bmN0aW9uKCkgeworICAgICAgICBn
X2NvbW1pdEluZGV4LnVwZGF0ZSgpOworICAgICAgICBtb2RlbC5hbmFseXplVW5leHBlY3RlZEZh
aWx1cmVzKHNob3dVbmV4cGVjdGVkRmFpbHVyZXMpOworICAgICAgICB1cGRhdGluZy5kaXNtaXNz
KCk7CisgICAgfSk7Cit9CisKKyQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworICAgIGdf
dXBkYXRlVGltZXJJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbCh1cGRhdGUsIGNvbmZpZy5rVXBkYXRl
RnJlcXVlbmN5KTsKKyAgICBkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShnX2FjdGlvbnMsIGRv
Y3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUo
Z19pbmZvLCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOworICAgIHVwZGF0ZSgpOworfSk7CisK
K30pKCk7CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9ub3RpZmljYXRp
b25zLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvbm90aWZpY2F0aW9ucy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40YTRiZjc3YmIxMWIyMmRiZWQ0ZGNmZDkyNDVjMDc2NzQxMjlkYjVhCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvbm90aWZpY2F0aW9ucy5qcwpA
QCAtMCwwICsxLDEwNCBAQAordmFyIHVpID0gdWkgfHwge307Cit1aS5ub3RpZmljYXRpb25zID0g
dWkubm90aWZpY2F0aW9ucyB8fCB7fTsKKworKGZ1bmN0aW9uKCl7CisKK3ZhciBnX25vdGlmaWNh
dGlvbklkID0gMDsKKwordWkubm90aWZpY2F0aW9ucy5TdHJlYW0gPSBiYXNlLmV4dGVuZHMoJ29s
JywgeworICAgIGluaXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuY2xhc3NOYW1l
ID0gJ25vdGlmaWNhdGlvbnMnOworICAgIH0sCisgICAgcHVzaDogZnVuY3Rpb24obm90aWZpY2F0
aW9uKQorICAgIHsKKyAgICAgICAgdGhpcy5pbnNlcnRCZWZvcmUobm90aWZpY2F0aW9uLCB0aGlz
LmZpcnN0Q2hpbGQpOworICAgICAgICByZXR1cm4gbm90aWZpY2F0aW9uOworICAgIH0KK30pOwor
Cit2YXIgQmFzZSA9IGJhc2UuZXh0ZW5kcygnbGknLCB7CisgICAgaW5pdDogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgdGhpcy5pZCA9ICduJyArIGdfbm90aWZpY2F0aW9uSWQrKzsKKyAgICAg
ICAgdGhpcy5fd2hhdCA9IHRoaXMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2JykpOworICAgICAgICB0aGlzLl93aGF0LmNsYXNzTmFtZSA9ICd3aGF0JzsKKyAgICAgICAg
JCh0aGlzKS5oaWRlKCkuZmFkZUluKCdmYXN0Jyk7CisgICAgfSwKKyAgICBkaXNtaXNzOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICAvLyBGSVhNRTogVGhlc2UgZmFkZSBpbi9vdXQgZWZmZWN0
cyBhcmUgbGFtZS4KKyAgICAgICAgJCh0aGlzKS5mYWRlT3V0KGZ1bmN0aW9uKCkKKyAgICAgICAg
eworICAgICAgICAgICAgdGhpcy5wYXJlbnROb2RlICYmIHRoaXMucGFyZW50Tm9kZS5yZW1vdmVD
aGlsZCh0aGlzKTsKKyAgICAgICAgfSk7CisgICAgfQorfSk7CisKK3VpLm5vdGlmaWNhdGlvbnMu
SW5mbyA9IGJhc2UuZXh0ZW5kcyhCYXNlLCB7CisgICAgLy8gRklYTUU6IE1ha2UgaW5pdCBvcHRp
b25hbC4KKyAgICBpbml0OiBmdW5jdGlvbigpCisgICAgeworICAgIH0sCisgICAgc2V0IG1lc3Nh
Z2UobWVzc2FnZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3doYXQudGV4dENvbnRlbnQgPSBtZXNz
YWdlOworICAgIH0KK30pOworCit2YXIgVGltZSA9IGJhc2UuZXh0ZW5kcygndGltZScsIHsKKyAg
ICBpbml0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLnVwZGF0ZVRpbWUoIkp1c3Qg
Tm93Iik7CisgICAgfSwKKyAgICB1cGRhdGVUaW1lOiBmdW5jdGlvbih0aW1lKQorICAgIHsKKyAg
ICAgICAgLy8gRklYTUU6IEltcGxlbWVudCByZWxhdGl2ZSB0aW1lLgorICAgICAgICB0aGlzLnRl
eHRDb250ZW50ID0gdGltZTsKKyAgICB9Cit9KTsKKwordmFyIENhdXNlID0gYmFzZS5leHRlbmRz
KCdsaScsIHsKKyAgICBpbml0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9kZXNj
cmlwdGlvbiA9IHRoaXMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykp
OworICAgICAgICB0aGlzLl9kZXNjcmlwdGlvbi5jbGFzc05hbWUgPSAnZGVzY3JpcHRpb24nOwor
ICAgICAgICB2YXIgYWN0aW9ucyA9IHRoaXMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgndWwnKSk7CisgICAgICAgIGFjdGlvbnMuY2xhc3NOYW1lID0gJ2FjdGlvbnMnOworICAg
ICAgICAvLyBGSVhNRTogQWN0aW9ucyBzaG91bGQgZG8gc29tZXRoaW5nLgorICAgICAgICBhY3Rp
b25zLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJykpLmlubmVySFRNTCA9
ICc8YnV0dG9uPlJvbGwgb3V0PC9idXR0b24+JzsKKyAgICB9LAorfSk7CisKK3VpLm5vdGlmaWNh
dGlvbnMuU3VzcGljaW91c0NvbW1pdCA9IGJhc2UuZXh0ZW5kcyhDYXVzZSwgeworICAgIGluaXQ6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgfSwKKyAgICBzZXQgY29tbWl0RGF0YShjb21taXREYXRh
KQorICAgIHsKKyAgICAgICAgdGhpcy5fZGVzY3JpcHRpb24uaW5uZXJIVE1MID0gJzxhIGhyZWY9
IiI+JyArIGNvbW1pdERhdGEucmV2aXNpb24gKyAnPC9hPicgKyBjb21taXREYXRhLnRpdGxlICsg
JyAnICsgY29tbWl0RGF0YS5hdXRob3IgKyAnICgnICsgY29tbWl0RGF0YS5yZXZpZXdlciArICcp
JzsKKyAgICB9Cit9KTsKKwordWkubm90aWZpY2F0aW9ucy5UZXN0RmFpbHVyZSA9IGJhc2UuZXh0
ZW5kcyhCYXNlLCB7CisgICAgaW5pdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5f
dGltZSA9IHRoaXMuaW5zZXJ0QmVmb3JlKG5ldyBUaW1lKCksIHRoaXMuZmlyc3RDaGlsZCk7Cisg
ICAgICAgIHZhciBwcm9ibGVtID0gdGhpcy5fd2hhdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKSk7CisgICAgICAgIHByb2JsZW0uY2xhc3NOYW1lID0gJ3Byb2JsZW0n
OworICAgICAgICB0aGlzLl9kZXNjcmlwdGlvbiA9IHByb2JsZW0uYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgncCcpKTsKKyAgICAgICAgdGhpcy5fY2F1c2VzID0gcHJvYmxlbS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpKTsKKyAgICAgICAgdGhpcy5f
Y2F1c2VzLmNsYXNzTmFtZSA9ICdjYXVzZXMnOworICAgIH0sCisgICAgc2V0IGRlc2NyaXB0aW9u
KGRlc2NyaXB0aW9uKQorICAgIHsKKyAgICAgICAgdGhpcy5fZGVzY3JpcHRpb24udGV4dENvbnRl
bnQgPSBkZXNjcmlwdGlvbjsKKyAgICB9LAorICAgIGFkZENhdXNlOiBmdW5jdGlvbihjYXVzZSkK
KyAgICB7CisgICAgICAgIHRoaXMuX2NhdXNlcy5hcHBlbmRDaGlsZChjYXVzZSk7CisgICAgICAg
IHJldHVybiBjYXVzZTsKKyAgICB9Cit9KTsKKworfSkoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9zdHlsZXMvc3VtbWFyeS5jc3MgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVzL3N1bW1h
cnkuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjAwNjIzNTJhMGJmMjU5MzQzNmIyZDMwYmRhMjQwNTdlMGQ4NWM3
NGYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVzL3N1bW1hcnkuY3Nz
CkBAIC0wLDAgKzEsNDMgQEAKK29sLm5vdGlmaWNhdGlvbnMgeworICAgIGxpc3Qtc3R5bGU6IG5v
bmU7CisgICAgcGFkZGluZzogMDsKK30KKworb2wubm90aWZpY2F0aW9ucyB1bCB7CisgICAgbGlz
dC1zdHlsZTogbm9uZTsKKyAgICBwYWRkaW5nOiAwOworfQorCitvbC5ub3RpZmljYXRpb25zPmxp
IHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBwYWRk
aW5nOiAxMHB4IDA7CisgICAgYm9yZGVyOiAxcHggc29saWQgTGlnaHRHcmF5OworfQorCitvbC5u
b3RpZmljYXRpb25zPmxpPnRpbWUgeworICAgIHBhZGRpbmc6IDAgMCAwIDEwcHg7CisgICAgdGV4
dC1hbGlnbjogcmlnaHQ7CisgICAgd2lkdGg6IDEwMHB4OworfQorCitvbC5ub3RpZmljYXRpb25z
PmxpPmRpdi53aGF0IHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0LWJv
eC1vcmllbnQ6IHZlcnRpY2FsOworICAgIHBhZGRpbmc6IDAgMTBweDsKKyAgICAtd2Via2l0LWJv
eC1mbGV4OiAxOworfQorCitvbC5ub3RpZmljYXRpb25zPmxpIHVsLmNhdXNlcz5saSB7CisgICAg
cGFkZGluZzogMTBweDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBSZWQ7Cit9CisKK29sLm5vdGlm
aWNhdGlvbnM+bGkgdWwuY2F1c2VzPmxpIHVsLmFjdGlvbnMgeworICAgIHRleHQtYWxpZ246IHJp
Z2h0OworfQorCitvbC5ub3RpZmljYXRpb25zPmxpIHVsLmNhdXNlcz5saSBsaSB7CisgICAgcGFk
ZGluZzogMTBweCAwIDAgMDsKKyAgICBkaXNwbGF5OiBpbmxpbmU7Cit9ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N1bW1hcnkuaHRtbCBi
L1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zdW1tYXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUyZTE4YjU2MTAzZjdl
NDM1ZTFlNWZkMjVjODkwYzY2N2ZiMDllYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9zdW1tYXJ5Lmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0t
CitDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKwor
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKK2FyZSBtZXQ6CisxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKK1RISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKK0FO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCitCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CitDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCitJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKK0FSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKK1RIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
VGhlIGZhdmljb25zIGFyZSBmcm9tIHRoZSBhd2Vzb21lIGZhbWZhbWZhbS5jb20sIHdoaWNoIGlz
IHRoZSB3ZWJzaXRlIG9mIE1hcmsKK0phbWVzLCBhIHdlYiBkZXZlbG9wZXIgZnJvbSBCaXJtaW5n
aGFtLCBVSy4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5HYXJkZW4tTy1NYXRpYyBTdW1t
YXJ5IFZpZXc8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZXMvc3Vt
bWFyeS5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iaHR0cHM6Ly9hamF4Lmdv
b2dsZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnkvMS42LjIvanF1ZXJ5Lm1pbi5qcyI+PC9zY3Jp
cHQ+IAorPHNjcmlwdCBzcmM9ImNvbmZpZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iYmFz
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ibmV0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJUcmFjLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJCdWd6aWxsYS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iYnVpbGRlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImNo
ZWNrb3V0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXN1bHRzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJ1aS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ibW9kZWwuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdHMvdWkvbm90aWZpY2F0aW9ucy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0cy9zdW1tYXJ5LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBlMzRiZGJmNzU2Mjk2YjkxMDNmNWExNDQ1OTkwOGEyMDA5MjlhZDk4Li4wMzJjNTk2YWJi
NzUwYWZiZjI2NzdkNmYxNzBkMzFiYjhmMTVmMDYzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDgtMTIgIERp
bWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBnYXJkZW4t
by1tYXRpYyBuZWVkcyBhIHN1bW1hcnkgdmlldyB3aXRoIGFjdGlvbnMgZm9yIGVhY2ggcHJvYmxl
bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MTQ0
CisKKyAgICAgICAgSW5pdGlhbCBpbXBsZW1lbnRhdGlvbiwgYmFyZWx5IGZ1bmN0aW9uYWwgYW5k
IGNlcnRhaW5seSBub3QgcmVhZHkgZm9yIGdlbmVyYWwgdXNlLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvc3VtbWFy
eS5qczogQWRkZWQuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvbm90aWZpY2F0aW9u
cy5qczogQWRkZWQuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N0eWxlcy9zdW1tYXJ5LmNzczogQWRk
ZWQuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N1bW1hcnkuaHRtbDogQWRkZWQuCisKIDIwMTEtMDgt
MTEgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBB
ZGQgYSB3YXkgdG8gZXh0ZW5kIERPTSBvYmplY3RzIGluIGdhcmRlbi1vLW1hdGljLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103784</attachid>
            <date>2011-08-12 11:12:52 -0700</date>
            <delta_ts>2011-08-13 08:30:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66144-20110812111251.patch</filename>
            <type>text/plain</type>
            <size>11840</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI5NzIKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL3N1bW1hcnkuanMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9zdW1tYXJ5LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY5NmQ3NTBkNDc2ZjEyZjlkNTEzMDBlZDIwZjQ3OWJmZGZiMGE5MjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9zdW1tYXJ5LmpzCkBAIC0wLDAg
KzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworKGZ1bmN0aW9uKCkgeworCit2YXIgZ19hY3Rpb25zID0g
bmV3IHVpLm5vdGlmaWNhdGlvbnMuU3RyZWFtKCk7Cit2YXIgZ19pbmZvID0gbmV3IHVpLm5vdGlm
aWNhdGlvbnMuU3RyZWFtKCk7CisKK3ZhciBnX3VwZGF0ZVRpbWVySWQgPSAwOworCitmdW5jdGlv
biBDb21taXRJbmRleChzdGF0ZSkKK3sKKyAgICB0aGlzLl9pbmRleCA9IHt9OworICAgIHRoaXMu
X3N0YXRlID0gc3RhdGU7Cit9CisKK0NvbW1pdEluZGV4LnByb3RvdHlwZSA9IHsKKyAgICB1cGRh
dGU6IGZ1bmN0aW9uKCkgeworICAgICAgICB0aGlzLl9zdGF0ZS5yZWNlbnRDb21taXRzLmZvckVh
Y2goZnVuY3Rpb24oY29tbWl0RGF0YSkgeworICAgICAgICAgICAgdGhpcy5faW5kZXhbY29tbWl0
RGF0YS5yZXZpc2lvbl0gPSBjb21taXREYXRhOworICAgICAgICB9LCB0aGlzKTsKKyAgICB9LAor
ICAgIGZpbmRDb21taXRCeVJldmlzaW9uOiBmdW5jdGlvbihyZXZpc2lvbikgeworICAgICAgICBy
ZXR1cm4gdGhpcy5faW5kZXhbcmV2aXNpb25dOworICAgIH0KK30KKwordmFyIGdfY29tbWl0SW5k
ZXggPSBuZXcgQ29tbWl0SW5kZXgobW9kZWwuc3RhdGUpOworCitmdW5jdGlvbiBzaG93VW5leHBl
Y3RlZEZhaWx1cmVzKGZhaWx1cmVBbmFseXNpcykKK3sKKyAgICAvLyBGSVhNRTogQWxzbyBwcm92
aWRlIGluZm9ybWF0aW9uIG9uIGJvdCBmYWlsdXJlcy4KKyAgICB2YXIgZmFpbHVyZSA9IG5ldyB1
aS5ub3RpZmljYXRpb25zLlRlc3RGYWlsdXJlKGZhaWx1cmVBbmFseXNpcy50ZXN0TmFtZSk7Cisg
ICAgLy8gRklYTUU6IFJldHJpZXZlIGRhdGUgZnJvbSBjb21taXREYXRhLgorICAgIGZvciAodmFy
IHJldmlzaW9uID0gZmFpbHVyZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdSZXZpc2lvbiArIDE7IHJl
dmlzaW9uIDw9IGZhaWx1cmVBbmFseXNpcy5vbGRlc3RGYWlsaW5nUmV2aXNpb247ICsrcmV2aXNp
b24pIHsKKyAgICAgICAgLy8gRklYTUU6IEdyb3VwIGZhaWx1cmVBbmFseXNlcyBieSBjb21taXRz
LgorICAgICAgICB2YXIgY29tbWl0RGF0YSA9IGdfY29tbWl0SW5kZXguZmluZENvbW1pdEJ5UmV2
aXNpb24ocmV2aXNpb24pOworICAgICAgICBpZiAoIWNvbW1pdERhdGEpIHsKKyAgICAgICAgICAg
IGNvbnNvbGUuaW5mbygiQ291bGQgbm90IGZpbmQgY29tbWl0IGRhdGEgZm9yIHJldmlzaW9uIiwg
cmV2aXNpb24pOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgdmFy
IGN1bHByaXQgPSBmYWlsdXJlLmFkZENhdXNlKG5ldyB1aS5ub3RpZmljYXRpb25zLlN1c3BpY2lv
dXNDb21taXQoY29tbWl0RGF0YSkpOworICAgICAgICBnX2FjdGlvbnMucHVzaChmYWlsdXJlKTsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIHVwZGF0ZSgpCit7CisgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGJlIGEgYnV0dG9uIHdpdGggYSBwcm9ncmVzcyBlbGVtZW50LgorICAgIHZhciB1cGRhdGlu
ZyA9IG5ldyB1aS5ub3RpZmljYXRpb25zLkluZm8oIlVwZGF0aW5nIC4uLiIpOworICAgIGdfaW5m
by5wdXNoKHVwZGF0aW5nKTsKKworICAgIGJhc2UuY2FsbEluUGFyYWxsZWwoW21vZGVsLnVwZGF0
ZVJlY2VudENvbW1pdHMsIG1vZGVsLnVwZGF0ZVJlc3VsdHNCeUJ1aWxkZXJdLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgZ19jb21taXRJbmRleC51cGRhdGUoKTsKKyAgICAgICAgbW9kZWwuYW5hbHl6
ZVVuZXhwZWN0ZWRGYWlsdXJlcyhzaG93VW5leHBlY3RlZEZhaWx1cmVzKTsKKyAgICAgICAgdXBk
YXRpbmcuZGlzbWlzcygpOworICAgIH0pOworfQorCiskKGRvY3VtZW50KS5yZWFkeShmdW5jdGlv
bigpIHsKKyAgICBnX3VwZGF0ZVRpbWVySWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwodXBkYXRlLCBj
b25maWcua1VwZGF0ZUZyZXF1ZW5jeSk7CisgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUo
Z19hY3Rpb25zLCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOworICAgIGRvY3VtZW50LmJvZHku
aW5zZXJ0QmVmb3JlKGdfaW5mbywgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKKyAgICB1cGRh
dGUoKTsKK30pOworCit9KSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMv
dWkvbm90aWZpY2F0aW9ucy5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpL25vdGlmaWNh
dGlvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjA5ZWViY2JhM2RkMmViNDJjMGI4MzY0MDVjZGI5NTEwZWNi
YThiYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpL25vdGlm
aWNhdGlvbnMuanMKQEAgLTAsMCArMSw5MyBAQAordmFyIHVpID0gdWkgfHwge307Cit1aS5ub3Rp
ZmljYXRpb25zID0gdWkubm90aWZpY2F0aW9ucyB8fCB7fTsKKworKGZ1bmN0aW9uKCl7CisKK3Zh
ciBnX25vdGlmaWNhdGlvbklkID0gMDsKKwordWkubm90aWZpY2F0aW9ucy5TdHJlYW0gPSBiYXNl
LmV4dGVuZHMoJ29sJywgeworICAgIGluaXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRo
aXMuY2xhc3NOYW1lID0gJ25vdGlmaWNhdGlvbnMnOworICAgIH0sCisgICAgcHVzaDogZnVuY3Rp
b24obm90aWZpY2F0aW9uKQorICAgIHsKKyAgICAgICAgdGhpcy5pbnNlcnRCZWZvcmUobm90aWZp
Y2F0aW9uLCB0aGlzLmZpcnN0Q2hpbGQpOworICAgICAgICByZXR1cm4gbm90aWZpY2F0aW9uOwor
ICAgIH0KK30pOworCit2YXIgQmFzZSA9IGJhc2UuZXh0ZW5kcygnbGknLCB7CisgICAgaW5pdDog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5pZCA9ICduJyArIGdfbm90aWZpY2F0aW9u
SWQrKzsKKyAgICAgICAgdGhpcy5fd2hhdCA9IHRoaXMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2JykpOworICAgICAgICB0aGlzLl93aGF0LmNsYXNzTmFtZSA9ICd3aGF0
JzsKKyAgICAgICAgJCh0aGlzKS5oaWRlKCkuZmFkZUluKCdmYXN0Jyk7CisgICAgfSwKKyAgICBk
aXNtaXNzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICAvLyBGSVhNRTogVGhlc2UgZmFkZSBp
bi9vdXQgZWZmZWN0cyBhcmUgbGFtZS4KKyAgICAgICAgJCh0aGlzKS5mYWRlT3V0KGZ1bmN0aW9u
KCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5wYXJlbnROb2RlICYmIHRoaXMucGFyZW50
Tm9kZS5yZW1vdmVDaGlsZCh0aGlzKTsKKyAgICAgICAgfSk7CisgICAgfQorfSk7CisKK3VpLm5v
dGlmaWNhdGlvbnMuSW5mbyA9IGJhc2UuZXh0ZW5kcyhCYXNlLCB7CisgICAgaW5pdDogZnVuY3Rp
b24obWVzc2FnZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3doYXQudGV4dENvbnRlbnQgPSBtZXNz
YWdlOworICAgIH0KK30pOworCit2YXIgVGltZSA9IGJhc2UuZXh0ZW5kcygndGltZScsIHsKKyAg
ICBpbml0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLnVwZGF0ZVRpbWUoIkp1c3Qg
Tm93Iik7CisgICAgfSwKKyAgICB1cGRhdGVUaW1lOiBmdW5jdGlvbih0aW1lKQorICAgIHsKKyAg
ICAgICAgLy8gRklYTUU6IEltcGxlbWVudCByZWxhdGl2ZSB0aW1lLgorICAgICAgICB0aGlzLnRl
eHRDb250ZW50ID0gdGltZTsKKyAgICB9Cit9KTsKKwordmFyIENhdXNlID0gYmFzZS5leHRlbmRz
KCdsaScsIHsKKyAgICBpbml0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9kZXNj
cmlwdGlvbiA9IHRoaXMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykp
OworICAgICAgICB0aGlzLl9kZXNjcmlwdGlvbi5jbGFzc05hbWUgPSAnZGVzY3JpcHRpb24nOwor
ICAgICAgICB2YXIgYWN0aW9ucyA9IHRoaXMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgndWwnKSk7CisgICAgICAgIGFjdGlvbnMuY2xhc3NOYW1lID0gJ2FjdGlvbnMnOworICAg
ICAgICAvLyBGSVhNRTogQWN0aW9ucyBzaG91bGQgZG8gc29tZXRoaW5nLgorICAgICAgICBhY3Rp
b25zLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJykpLmlubmVySFRNTCA9
ICc8YnV0dG9uPlJvbGwgb3V0PC9idXR0b24+JzsKKyAgICB9LAorfSk7CisKK3VpLm5vdGlmaWNh
dGlvbnMuU3VzcGljaW91c0NvbW1pdCA9IGJhc2UuZXh0ZW5kcyhDYXVzZSwgeworICAgIGluaXQ6
IGZ1bmN0aW9uKGNvbW1pdERhdGEpCisgICAgeworICAgICAgICB0aGlzLl9kZXNjcmlwdGlvbi5p
bm5lckhUTUwgPSAnPGEgaHJlZj0iIj4nICsgY29tbWl0RGF0YS5yZXZpc2lvbiArICc8L2E+JyAr
IGNvbW1pdERhdGEudGl0bGUgKyAnICcgKyBjb21taXREYXRhLmF1dGhvciArICcgKCcgKyBjb21t
aXREYXRhLnJldmlld2VyICsgJyknOworICAgIH0KK30pOworCit1aS5ub3RpZmljYXRpb25zLlRl
c3RGYWlsdXJlID0gYmFzZS5leHRlbmRzKEJhc2UsIHsKKyAgICBpbml0OiBmdW5jdGlvbihkZXNj
cmlwdGlvbikKKyAgICB7CisgICAgICAgIHRoaXMuX3RpbWUgPSB0aGlzLmluc2VydEJlZm9yZShu
ZXcgVGltZSgpLCB0aGlzLmZpcnN0Q2hpbGQpOworICAgICAgICB2YXIgcHJvYmxlbSA9IHRoaXMu
X3doYXQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOworICAgICAg
ICBwcm9ibGVtLmNsYXNzTmFtZSA9ICdwcm9ibGVtJzsKKyAgICAgICAgcHJvYmxlbS5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJykpLnRleHRDb250ZW50ID0gZGVzY3JpcHRp
b247CisgICAgICAgIHRoaXMuX2NhdXNlcyA9IHByb2JsZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgndWwnKSk7CisgICAgICAgIHRoaXMuX2NhdXNlcy5jbGFzc05hbWUgPSAn
Y2F1c2VzJzsKKyAgICB9LAorICAgIGFkZENhdXNlOiBmdW5jdGlvbihjYXVzZSkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2NhdXNlcy5hcHBlbmRDaGlsZChjYXVzZSk7CisgICAgICAgIHJldHVybiBj
YXVzZTsKKyAgICB9Cit9KTsKKworfSkoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
dHlsZXMvc3VtbWFyeS5jc3MgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVzL3N1bW1hcnkuY3NzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjAwNjIzNTJhMGJmMjU5MzQzNmIyZDMwYmRhMjQwNTdlMGQ4NWM3NGYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVzL3N1bW1hcnkuY3NzCkBAIC0wLDAg
KzEsNDMgQEAKK29sLm5vdGlmaWNhdGlvbnMgeworICAgIGxpc3Qtc3R5bGU6IG5vbmU7CisgICAg
cGFkZGluZzogMDsKK30KKworb2wubm90aWZpY2F0aW9ucyB1bCB7CisgICAgbGlzdC1zdHlsZTog
bm9uZTsKKyAgICBwYWRkaW5nOiAwOworfQorCitvbC5ub3RpZmljYXRpb25zPmxpIHsKKyAgICBk
aXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBwYWRkaW5nOiAxMHB4
IDA7CisgICAgYm9yZGVyOiAxcHggc29saWQgTGlnaHRHcmF5OworfQorCitvbC5ub3RpZmljYXRp
b25zPmxpPnRpbWUgeworICAgIHBhZGRpbmc6IDAgMCAwIDEwcHg7CisgICAgdGV4dC1hbGlnbjog
cmlnaHQ7CisgICAgd2lkdGg6IDEwMHB4OworfQorCitvbC5ub3RpZmljYXRpb25zPmxpPmRpdi53
aGF0IHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0LWJveC1vcmllbnQ6
IHZlcnRpY2FsOworICAgIHBhZGRpbmc6IDAgMTBweDsKKyAgICAtd2Via2l0LWJveC1mbGV4OiAx
OworfQorCitvbC5ub3RpZmljYXRpb25zPmxpIHVsLmNhdXNlcz5saSB7CisgICAgcGFkZGluZzog
MTBweDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBSZWQ7Cit9CisKK29sLm5vdGlmaWNhdGlvbnM+
bGkgdWwuY2F1c2VzPmxpIHVsLmFjdGlvbnMgeworICAgIHRleHQtYWxpZ246IHJpZ2h0OworfQor
CitvbC5ub3RpZmljYXRpb25zPmxpIHVsLmNhdXNlcz5saSBsaSB7CisgICAgcGFkZGluZzogMTBw
eCAwIDAgMDsKKyAgICBkaXNwbGF5OiBpbmxpbmU7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N1bW1hcnkuaHRtbCBiL1Rvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9zdW1tYXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUyZTE4YjU2MTAzZjdlNDM1ZTFlNWZk
MjVjODkwYzY2N2ZiMDllYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdW1t
YXJ5Lmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCitDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKK2FyZSBtZXQ6CisxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKK0FORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCitCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCitDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCitJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKK0FS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKK1RIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworVGhlIGZhdmlj
b25zIGFyZSBmcm9tIHRoZSBhd2Vzb21lIGZhbWZhbWZhbS5jb20sIHdoaWNoIGlzIHRoZSB3ZWJz
aXRlIG9mIE1hcmsKK0phbWVzLCBhIHdlYiBkZXZlbG9wZXIgZnJvbSBCaXJtaW5naGFtLCBVSy4K
Ky0tPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5HYXJkZW4tTy1NYXRpYyBTdW1tYXJ5IFZpZXc8
L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZXMvc3VtbWFyeS5jc3Mi
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iaHR0cHM6Ly9hamF4Lmdvb2dsZWFwaXMu
Y29tL2FqYXgvbGlicy9qcXVlcnkvMS42LjIvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+IAorPHNj
cmlwdCBzcmM9ImNvbmZpZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iYmFzZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0ibmV0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJUcmFj
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJCdWd6aWxsYS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iYnVpbGRlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImNoZWNrb3V0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXN1bHRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJ1aS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ibW9kZWwuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InNjcmlwdHMvdWkvbm90aWZpY2F0aW9ucy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0cy9zdW1tYXJ5LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmOWMz
MmIwNjc0YWJiNDBlZWE3ZjcyMmEwZmVmYTMwYjQ0NzU5MTlkLi5kMjhhMDY4YTQ4ZGQ2NDNlZmUz
ZDQ0NmYxNzcwZTdiNzY1YWM0ZTZhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDgtMTIgIERpbWl0cmkgR2xh
emtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBnYXJkZW4tby1tYXRpYyBu
ZWVkcyBhIHN1bW1hcnkgdmlldyB3aXRoIGFjdGlvbnMgZm9yIGVhY2ggcHJvYmxlbS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MTQ0CisKKyAgICAg
ICAgSW5pdGlhbCBpbXBsZW1lbnRhdGlvbiwgYmFyZWx5IGZ1bmN0aW9uYWwgYW5kIGNlcnRhaW5s
eSBub3QgcmVhZHkgZm9yIGdlbmVyYWwgdXNlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvc3VtbWFyeS5qczogQWRk
ZWQuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvbm90aWZpY2F0aW9ucy5qczogQWRk
ZWQuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N0eWxlcy9zdW1tYXJ5LmNzczogQWRkZWQuCisgICAg
ICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL3N1bW1hcnkuaHRtbDogQWRkZWQuCisKIDIwMTEtMDgtMTEgIERpbWl0
cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgYSB3YXkg
dG8gZXh0ZW5kIERPTSBvYmplY3RzIGluIGdhcmRlbi1vLW1hdGljLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103859</attachid>
            <date>2011-08-13 08:30:20 -0700</date>
            <delta_ts>2011-08-16 10:22:29 -0700</delta_ts>
            <desc>WIP: Switching computers.</desc>
            <filename>bug-66144-20110813083019.patch</filename>
            <type>text/plain</type>
            <size>14913</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMwMTUKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9t
b2RlbC5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tb2RlbC5qcwppbmRleCA3MzRlODI3Mzc4NzMyZTU0
NTdlNWMwMzNlMmJlMjQ2OWJhOGQ2YjEyLi4zNmJmYTkzODg4MGI2YmVmZmE0N2ZlY2I2YzQzMzlk
OGNhNTk2Nzg4IDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbW9kZWwuanMKKysrIGIvVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL21vZGVsLmpzCkBAIC0yOSwxMSArMjksMjAgQEAgdmFyIG1vZGVsID0gbW9k
ZWwgfHwge307CiAKIHZhciBrQ29tbWl0TG9nTGVuZ3RoID0gNTA7CiAKK3ZhciBnX2NvbW1pdElu
ZGV4ID0ge307Cit2YXIgZ19mYWlsdXJlT2JqZWN0cyA9IHt9OworCiBtb2RlbC5zdGF0ZSA9IHt9
OwogbW9kZWwuc3RhdGUuZmFpbHVyZUFuYWx5c2lzQnlUZXN0ID0ge307CiBtb2RlbC5zdGF0ZS5y
ZWJhc2VsaW5lUXVldWUgPSBbXTsKIG1vZGVsLnN0YXRlLmV4cGVjdGF0aW9uc1VwZGF0ZVF1ZXVl
ID0gW107CiAKK2Z1bmN0aW9uIHVwZGF0ZUNvbW1pdEluZGV4KCkgeworICAgIG1vZGVsLnN0YXRl
LnJlY2VudENvbW1pdHMuZm9yRWFjaChmdW5jdGlvbihjb21taXREYXRhKSB7CisgICAgICAgIGdf
Y29tbWl0SW5kZXhbY29tbWl0RGF0YS5yZXZpc2lvbl0gPSBjb21taXREYXRhOworICAgIH0pOwor
fQorCiBmdW5jdGlvbiBmaW5kQW5kTWFya1JldmVydGVkUmV2aXNpb25zKGNvbW1pdERhdGFMaXN0
KQogewogICAgIHZhciByZXZlcnRlZFJldmlzaW9ucyA9IHt9OwpAQCAtMTAyLDYgKzExMSw3IEBA
IG1vZGVsLnVwZGF0ZVJlY2VudENvbW1pdHMgPSBmdW5jdGlvbihjYWxsYmFjaykKICAgICB0cmFj
LnJlY2VudENvbW1pdERhdGEoJ3RydW5rJywga0NvbW1pdExvZ0xlbmd0aCwgZnVuY3Rpb24oY29t
bWl0RGF0YUxpc3QpIHsKICAgICAgICAgbW9kZWwuc3RhdGUucmVjZW50Q29tbWl0cyA9IGNvbW1p
dERhdGFMaXN0OwogICAgICAgICBmaW5kQW5kTWFya1JldmVydGVkUmV2aXNpb25zKG1vZGVsLnN0
YXRlLnJlY2VudENvbW1pdHMpOworICAgICAgICB1cGRhdGVDb21taXRJbmRleCgpOwogICAgICAg
ICBjYWxsYmFjaygpOwogICAgIH0pOwogfTsKQEAgLTExNCw2ICsxMjQsNTIgQEAgbW9kZWwudXBk
YXRlUmVzdWx0c0J5QnVpbGRlciA9IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIH0pOwogfTsKIAor
ZnVuY3Rpb24gZmluZENvbW1pdEJ5UmV2aXNpb24ocmV2aXNpb24pIHsKKyAgICByZXR1cm4gZ19j
b21taXRJbmRleFtyZXZpc2lvbl07Cit9CisKKy8vIGNyZWF0ZU9iamVjdENhbGxiYWNrIHNob3Vs
ZCByZXR1cm4gYSBmYWlsdXJlT2JqZWN0LCB3aGljaCBpcyBleHBlY3RlZCB0byBoYXZlIHRoZSBm
b2xsb3dpbmcgbWV0aG9kczoKKy8vICogYWRkQ29tbWl0RGF0YShjb21taXREYXRhKQorLy8gKiBh
ZGRGYWlsdXJlQW5hbHlzaXMoZmFpbHVyZUFuYWx5c2lzKQorLy8gKiBkaXNtaXNzKCkKK21vZGVs
LnVwZGF0ZVRlc3RGYWlsdXJlT2JqZWN0cyA9IGZ1bmN0aW9uKGNyZWF0ZU9iamVjdENhbGxiYWNr
LCBjb21wbGV0aW9uQ2FsbGJhY2spCit7CisgICAgdmFyIGZhaWx1cmVPYmplY3RNYXAgPSB7fTsK
KyAgICBtb2RlbC5hbmFseXplVW5leHBlY3RlZEZhaWx1cmVzKGZ1bmN0aW9uKGZhaWx1cmVBbmFs
eXNpcykgeworICAgICAgICB2YXIgZm9yRWFjaFJldmlzaW9uID0gZnVuY3Rpb24oYWN0aW9uKSB7
CisgICAgICAgICAgICBmb3IgKHZhciByZXZpc2lvbiA9IGZhaWx1cmVBbmFseXNpcy5uZXdlc3RQ
YXNzaW5nUmV2aXNpb24gKyAxOyByZXZpc2lvbiA8PSBmYWlsdXJlQW5hbHlzaXMub2xkZXN0RmFp
bGluZ1JldmlzaW9uOyArK3JldmlzaW9uKSB7CisgICAgICAgICAgICAgICAgYWN0aW9uKHJldmlz
aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZhciBrZXlQaWVjZXMg
PSBbXTsKKyAgICAgICAgZm9yRWFjaFJldmlzaW9uKGZ1bmN0aW9uKHJldmlzaW9uKSB7CisgICAg
ICAgICAgICBrZXlQaWVjZXMucHVzaChyZXZpc2lvbik7CisgICAgICAgIH0pOworICAgICAgICB2
YXIga2V5ID0ga2V5UGllY2VzLmpvaW4oJysnKTsKKyAgICAgICAgdmFyIGZhaWx1cmUgPSBnX2Zh
aWx1cmVPYmplY3RzW2tleV07CisgICAgICAgIGlmICghZmFpbHVyZSkgeworICAgICAgICAgICAg
Z19mYWlsdXJlT2JqZWN0c1trZXldID0gY3JlYXRlT2JqZWN0Q2FsbGJhY2soKTsKKyAgICAgICAg
ICAgIGZvckVhY2hSZXZpc2lvbihmdW5jdGlvbihyZXZpc2lvbikgeworICAgICAgICAgICAgICAg
IHZhciBjb21taXREYXRhID0gZmluZENvbW1pdEJ5UmV2aXNpb24ocmV2aXNpb24pOworICAgICAg
ICAgICAgICAgIGlmIChjb21taXREYXRhKQorICAgICAgICAgICAgICAgICAgICBmYWlsdXJlLmFk
ZENvbW1pdERhdGEoY29tbWl0RGF0YSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAg
ICAgICBmYWlsdXJlT2JqZWN0TWFwW2ZhaWx1cmVdID0gMTsKKyAgICAgICAgZmFpbHVyZS5hZGRG
YWlsdXJlQW5hbHlzaXMoZmFpbHVyZUFuYWx5c2lzKTsKKyAgICB9LCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgZm9yKHZhciBrZXkgaW4gT2JqZWN0LmtleXMoZ19mYWlsdXJlT2JqZWN0cykpIHsKKyAg
ICAgICAgICAgIHZhciBmYWlsdXJlT2JqZWN0ID0gZ19mYWlsdXJlT2JqZWN0c1trZXldOworICAg
ICAgICAgICAgaWYgKCFmYWlsdXJlT2JqZWN0TWFwW2ZhaWx1cmVPYmplY3RdKSB7CisgICAgICAg
ICAgICAgICAgZmFpbHVyZU9iamVjdC5kaXNtaXNzKCk7CisgICAgICAgICAgICAgICAgZGVsZXRl
IGdfZmFpbHVyZU9iamVjdHNba2V5XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBjb21wbGV0aW9uQ2FsbGJhY2soKTsKKyAgICB9KTsKK30KKwogbW9kZWwuYW5hbHl6ZVVuZXhw
ZWN0ZWRGYWlsdXJlcyA9IGZ1bmN0aW9uKGNhbGxiYWNrLCBjb21wbGV0aW9uQ2FsbGJhY2spCiB7
CiAgICAgdmFyIHVuZXhwZWN0ZWRGYWlsdXJlcyA9IHJlc3VsdHMudW5leHBlY3RlZEZhaWx1cmVz
QnlUZXN0KG1vZGVsLnN0YXRlLnJlc3VsdHNCeUJ1aWxkZXIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvc3VtbWFyeS5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3N1
bW1hcnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg4M2FhZTg1M2QyMjU5MDk4YTk2YWY4YmU0MTdlNmMzZWU1
ZTQxZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3N1bW1hcnku
anMKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisoZnVuY3Rpb24oKSB7CisKK3ZhciBn
X2FjdGlvbnMgPSBuZXcgdWkubm90aWZpY2F0aW9ucy5TdHJlYW0oKTsKK3ZhciBnX2luZm8gPSBu
ZXcgdWkubm90aWZpY2F0aW9ucy5TdHJlYW0oKTsKKwordmFyIGdfdXBkYXRlVGltZXJJZCA9IDA7
CisKK2Z1bmN0aW9uIHVwZGF0ZSgpCit7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEg
YnV0dG9uIHdpdGggYSBwcm9ncmVzcyBlbGVtZW50LgorICAgIHZhciB1cGRhdGluZyA9IG5ldyB1
aS5ub3RpZmljYXRpb25zLkluZm8oIlVwZGF0aW5nIC4uLiIpOworICAgIGdfaW5mby5wdXNoKHVw
ZGF0aW5nKTsKKworICAgIC8vIEZJWE1FOiBBbHNvIHByb3ZpZGUgaW5mb3JtYXRpb24gb24gYm90
IGZhaWx1cmVzLgorICAgIGJhc2UuY2FsbEluUGFyYWxsZWwoW21vZGVsLnVwZGF0ZVJlY2VudENv
bW1pdHMsIG1vZGVsLnVwZGF0ZVJlc3VsdHNCeUJ1aWxkZXJdLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgbW9kZWwudXBkYXRlVGVzdEZhaWx1cmVPYmplY3RzKGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgZmFpbHVyZXMgPSBuZXcgdWkubm90aWZpY2F0aW9ucy5UZXN0RmFpbHVyZXMoKTsKKyAgICAg
ICAgICAgIGdfYWN0aW9ucy5wdXNoKGZhaWx1cmVzKTsKKyAgICAgICAgICAgIHJldHVybiBmYWls
dXJlczsKKyAgICAgICAgfSwgdXBkYXRpbmcuZGlzbWlzcy5iaW5kKHVwZGF0aW5nKSk7CisgICAg
fSk7Cit9CisKKyQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworICAgIGdfdXBkYXRlVGlt
ZXJJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbCh1cGRhdGUsIGNvbmZpZy5rVXBkYXRlRnJlcXVlbmN5
KTsKKyAgICBkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShnX2FjdGlvbnMsIGRvY3VtZW50LmJv
ZHkuZmlyc3RDaGlsZCk7CisgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZ19pbmZvLCBk
b2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOworICAgIHVwZGF0ZSgpOworfSk7CisKK30pKCk7CmRp
ZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9ub3RpZmljYXRpb25zLmpzIGIv
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvbm90aWZpY2F0aW9ucy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
MjY0NWFlNmNjN2MxZDQxYzM0Y2IwNDE0YTkxODYxYTJiYjY0NzI3Ci0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvbm90aWZpY2F0aW9ucy5qcwpAQCAtMCwwICsx
LDExMCBAQAordmFyIHVpID0gdWkgfHwge307Cit1aS5ub3RpZmljYXRpb25zID0gdWkubm90aWZp
Y2F0aW9ucyB8fCB7fTsKKworKGZ1bmN0aW9uKCl7CisKK3VpLm5vdGlmaWNhdGlvbnMuU3RyZWFt
ID0gYmFzZS5leHRlbmRzKCdvbCcsIHsKKyAgICBpbml0OiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICB0aGlzLmNsYXNzTmFtZSA9ICdub3RpZmljYXRpb25zJzsKKyAgICB9LAorICAgIHB1c2g6
IGZ1bmN0aW9uKG5vdGlmaWNhdGlvbikKKyAgICB7CisgICAgICAgIHRoaXMuaW5zZXJ0QmVmb3Jl
KG5vdGlmaWNhdGlvbiwgdGhpcy5maXJzdENoaWxkKTsKKyAgICAgICAgcmV0dXJuIG5vdGlmaWNh
dGlvbjsKKyAgICB9Cit9KTsKKwordmFyIE5vdGlmaWNhdGlvbiA9IGJhc2UuZXh0ZW5kcygnbGkn
LCB7CisgICAgaW5pdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fd2hhdCA9IHRo
aXMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOworICAgICAgICB0
aGlzLl93aGF0LmNsYXNzTmFtZSA9ICd3aGF0JzsKKyAgICAgICAgJCh0aGlzKS5oaWRlKCkuZmFk
ZUluKCdmYXN0Jyk7CisgICAgfSwKKyAgICBkaXNtaXNzOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICAvLyBGSVhNRTogVGhlc2UgZmFkZSBpbi9vdXQgZWZmZWN0cyBhcmUgbGFtZS4KKyAgICAg
ICAgJCh0aGlzKS5mYWRlT3V0KGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhp
cy5wYXJlbnROb2RlICYmIHRoaXMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzKTsKKyAgICAg
ICAgfSk7CisgICAgfQorfSk7CisKK3VpLm5vdGlmaWNhdGlvbnMuSW5mbyA9IGJhc2UuZXh0ZW5k
cyhOb3RpZmljYXRpb24sIHsKKyAgICBpbml0OiBmdW5jdGlvbihtZXNzYWdlKQorICAgIHsKKyAg
ICAgICAgdGhpcy5fd2hhdC50ZXh0Q29udGVudCA9IG1lc3NhZ2U7CisgICAgfQorfSk7CisKK3Zh
ciBUaW1lID0gYmFzZS5leHRlbmRzKCd0aW1lJywgeworICAgIGluaXQ6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHRoaXMudXBkYXRlVGltZSgiSnVzdCBOb3ciKTsKKyAgICB9LAorICAgIHVw
ZGF0ZVRpbWU6IGZ1bmN0aW9uKHRpbWUpCisgICAgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGRpc3BsYXlpbmcgYWN0dWFsIHRpbWUuCisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
cmVsYXRpdmUgdGltZS4KKyAgICAgICAgdGhpcy50ZXh0Q29udGVudCA9IHRpbWU7CisgICAgfQor
fSk7CisKK3ZhciBDYXVzZSA9IGJhc2UuZXh0ZW5kcygnbGknLCB7CisgICAgaW5pdDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fZGVzY3JpcHRpb24gPSB0aGlzLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgdGhpcy5fZGVzY3JpcHRp
b24uY2xhc3NOYW1lID0gJ2Rlc2NyaXB0aW9uJzsKKyAgICAgICAgdmFyIGFjdGlvbnMgPSB0aGlz
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3VsJykpOworICAgICAgICBhY3Rp
b25zLmNsYXNzTmFtZSA9ICdhY3Rpb25zJzsKKyAgICAgICAgLy8gRklYTUU6IEFjdGlvbnMgc2hv
dWxkIGRvIHNvbWV0aGluZy4KKyAgICAgICAgYWN0aW9ucy5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdsaScpKS5pbm5lckhUTUwgPSAnPGJ1dHRvbj5Sb2xsIG91dDwvYnV0dG9u
Pic7CisgICAgfQorfSk7CisKK3VpLm5vdGlmaWNhdGlvbnMuRmFpbGluZ1Rlc3QgPSBiYXNlLmV4
dGVuZHMoJ2xpJywgeworICAgIGluaXQ6IGZ1bmN0aW9uKGZhaWx1cmVBbmFseXNpcykKKyAgICB7
CisgICAgICAgIC8vIEZJWE1FOiBTaG93IHR5cGUgb2YgZmFpbHVyZSBhbmQgd2hlcmUgaXQncyBm
YWlsaW5nLgorICAgICAgICB0aGlzLnRleHRDb250ZW50ID0gZmFpbHVyZUFuYWx5c2lzLnRlc3RO
YW1lOworICAgIH0KK30pCisKK3VpLm5vdGlmaWNhdGlvbnMuU3VzcGljaW91c0NvbW1pdCA9IGJh
c2UuZXh0ZW5kcyhDYXVzZSwgeworICAgIGluaXQ6IGZ1bmN0aW9uKGNvbW1pdERhdGEpCisgICAg
eworICAgICAgICB2YXIgbGlua1RvUmV2aXNpb24gPSB0aGlzLl9kZXNjcmlwdGlvbi5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJykpOworICAgICAgICAvLyBGSVhNRTogU2V0
IGhyZWYuCisgICAgICAgIGxpbmtUb1JldmlzaW9uLmhyZWYgPSAnJzsKKyAgICAgICAgbGlua1Rv
UmV2aXNpb24udGV4dENvbnRlbnQgPSBjb21taXREYXRhLnJldmlzaW9uOworICAgICAgICB0aGlz
Ll9kZXNjcmlwdGlvbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb21taXRE
YXRhLnRpdGxlICsgJyAnICsgY29tbWl0RGF0YS5hdXRob3IgKyAnICgnICsgY29tbWl0RGF0YS5y
ZXZpZXdlciArICcpJykpOworICAgIH0KK30pOworCit1aS5ub3RpZmljYXRpb25zLlRlc3RGYWls
dXJlcyA9IGJhc2UuZXh0ZW5kcyhOb3RpZmljYXRpb24sIHsKKyAgICBpbml0OiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB0aGlzLl90aW1lID0gdGhpcy5pbnNlcnRCZWZvcmUobmV3IFRpbWUo
KSwgdGhpcy5maXJzdENoaWxkKTsKKyAgICAgICAgdmFyIHByb2JsZW0gPSB0aGlzLl93aGF0LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgcHJvYmxl
bS5jbGFzc05hbWUgPSAncHJvYmxlbSc7CisgICAgICAgIHRoaXMuX3Rlc3RzID0gcHJvYmxlbS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpKTsKKyAgICAgICAgdGhpcy5f
dGVzdHMuY2xhc3NOYW1lID0gJ2VmZmVjdHMnOworICAgICAgICB0aGlzLl9jYXVzZXMgPSBwcm9i
bGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3VsJykpOworICAgICAgICB0
aGlzLl9jYXVzZXMuY2xhc3NOYW1lID0gJ2NhdXNlcyc7CisgICAgfSwKKyAgICBhZGRGYWlsdXJl
QW5hbHlzaXM6IGZ1bmN0aW9uKGZhaWx1cmVBbmFseXNpcykKKyAgICB7CisgICAgICAgIC8vIEZJ
WE1FOiBBZGQgaW4gb3JkZXIuCisgICAgICAgIC8vIEZJWE1FOiBEb24ndCBhZGQgbW9yZSB0aGFu
IG9uY2UuCisgICAgICAgIC8vIEZJWE1FOiBSZXRyaWV2ZSBkYXRlIGZyb20gZmFpbHVyZUFuYWx5
c2lzIGFuZCBzZXQgdGhpcy5fdGltZS4KKyAgICAgICAgcmV0dXJuIHRoaXMuX3Rlc3RzLmFwcGVu
ZENoaWxkKG5ldyB1aS5ub3RpZmljYXRpb25zLkZhaWxpbmdUZXN0KGZhaWx1cmVBbmFseXNpcykp
OworICAgIH0sCisgICAgYWRkQ29tbWl0RGF0YTogZnVuY3Rpb24oY29tbWl0RGF0YSkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9jYXVzZXMuYXBwZW5kQ2hpbGQobmV3IHVpLm5vdGlmaWNh
dGlvbnMuU3VzcGljaW91c0NvbW1pdChjb21taXREYXRhKSk7CisgICAgfQorfSk7CisKK30pKCk7
CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVzL3N1bW1hcnkuY3NzIGIvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3N0eWxlcy9zdW1tYXJ5LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDYyMzUyYTBiZjI1OTM0
MzZiMmQzMGJkYTI0MDU3ZTBkODVjNzRmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL3N0eWxlcy9zdW1tYXJ5LmNzcwpAQCAtMCwwICsxLDQzIEBACitvbC5ub3RpZmljYXRpb25z
IHsKKyAgICBsaXN0LXN0eWxlOiBub25lOworICAgIHBhZGRpbmc6IDA7Cit9CisKK29sLm5vdGlm
aWNhdGlvbnMgdWwgeworICAgIGxpc3Qtc3R5bGU6IG5vbmU7CisgICAgcGFkZGluZzogMDsKK30K
Kworb2wubm90aWZpY2F0aW9ucz5saSB7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAg
d2lkdGg6IDEwMCU7CisgICAgcGFkZGluZzogMTBweCAwOworICAgIGJvcmRlcjogMXB4IHNvbGlk
IExpZ2h0R3JheTsKK30KKworb2wubm90aWZpY2F0aW9ucz5saT50aW1lIHsKKyAgICBwYWRkaW5n
OiAwIDAgMCAxMHB4OworICAgIHRleHQtYWxpZ246IHJpZ2h0OworICAgIHdpZHRoOiAxMDBweDsK
K30KKworb2wubm90aWZpY2F0aW9ucz5saT5kaXYud2hhdCB7CisgICAgZGlzcGxheTogLXdlYmtp
dC1ib3g7CisgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKKyAgICBwYWRkaW5nOiAw
IDEwcHg7CisgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKK30KKworb2wubm90aWZpY2F0aW9ucz5s
aSB1bC5jYXVzZXM+bGkgeworICAgIHBhZGRpbmc6IDEwcHg7CisgICAgYm9yZGVyOiAxcHggc29s
aWQgUmVkOworfQorCitvbC5ub3RpZmljYXRpb25zPmxpIHVsLmNhdXNlcz5saSB1bC5hY3Rpb25z
IHsKKyAgICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworb2wubm90aWZpY2F0aW9ucz5saSB1bC5j
YXVzZXM+bGkgbGkgeworICAgIHBhZGRpbmc6IDEwcHggMCAwIDA7CisgICAgZGlzcGxheTogaW5s
aW5lOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9zdW1tYXJ5Lmh0bWwgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3VtbWFyeS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhlMmUxOGI1NjEwM2Y3ZTQzNWUxZTVmZDI1Yzg5MGM2NjdmYjA5ZWEKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3VtbWFyeS5odG1sCkBAIC0wLDAgKzEsNDkgQEAK
KzwhRE9DVFlQRSBodG1sPgorPCEtLQorQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCithcmUgbWV0OgorMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKzIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCitBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKK1RIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKK1BVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKK1NVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KK0NPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCitBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCitUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK1RoZSBmYXZpY29ucyBhcmUgZnJvbSB0aGUgYXdlc29tZSBm
YW1mYW1mYW0uY29tLCB3aGljaCBpcyB0aGUgd2Vic2l0ZSBvZiBNYXJrCitKYW1lcywgYSB3ZWIg
ZGV2ZWxvcGVyIGZyb20gQmlybWluZ2hhbSwgVUsuCistLT4KKzxodG1sPgorPGhlYWQ+Cis8dGl0
bGU+R2FyZGVuLU8tTWF0aWMgU3VtbWFyeSBWaWV3PC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0ic3R5bGVzL3N1bW1hcnkuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBzcmM9Imh0dHBzOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5LzEuNi4y
L2pxdWVyeS5taW4uanMiPjwvc2NyaXB0PiAKKzxzY3JpcHQgc3JjPSJjb25maWcuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9ImJhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Im5ldC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iVHJhYy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iQnVnemlsbGEuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImJ1aWxkZXJzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJjaGVja291dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzdWx0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0idWkuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Im1vZGVsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHRzL3VpL25v
dGlmaWNhdGlvbnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdHMvc3VtbWFyeS5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjJhZTNlOTMzYTY0ZTZlMGQ4ODg0NDI5ZTZlYjhj
NDM2OGEyNTAyOC4uOTYyODUyZTM0NTA0NDNmMjRlZmRiYzYyNmNmOWU2NjM1YTQ0NWFkYyAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDE5IEBACiAyMDExLTA4LTEyICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5v
cmc+CiAKKyAgICAgICAgZ2FyZGVuLW8tbWF0aWMgbmVlZHMgYSBzdW1tYXJ5IHZpZXcgd2l0aCBh
Y3Rpb25zIGZvciBlYWNoIHByb2JsZW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NjE0NAorCisgICAgICAgIEluaXRpYWwgaW1wbGVtZW50YXRpb24s
IGJhcmVseSBmdW5jdGlvbmFsIGFuZCBjZXJ0YWlubHkgbm90IHJlYWR5IGZvciBnZW5lcmFsIHVz
ZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEJ1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9zY3JpcHRzL3N1bW1hcnkuanM6IEFkZGVkLgorICAgICAgICAqIEJ1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL3VpL25vdGlmaWNhdGlvbnMuanM6IEFkZGVkLgorICAgICAgICAqIEJ1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
dHlsZXMvc3VtbWFyeS5jc3M6IEFkZGVkLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdW1tYXJ5Lmh0
bWw6IEFkZGVkLgorCisyMDExLTA4LTEyICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJv
bWl1bS5vcmc+CisKICAgICAgICAgZ2FyZGVuLW8tbWF0aWMncyBhbmFseXplVW5leHBlY3RlZEZh
aWx1cmVzIG5lZWRzIGEgY29tcGxldGlvbiBjYWxsYmFjay4KICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MTY2CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104064</attachid>
            <date>2011-08-16 10:22:32 -0700</date>
            <delta_ts>2011-08-16 13:57:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66144-20110816102231.patch</filename>
            <type>text/plain</type>
            <size>20521</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMwNjMKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9y
dW4tdW5pdHRlc3RzLmh0bWwgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcnVuLXVuaXR0ZXN0cy5odG1sCmlu
ZGV4IGJmZTY5YzVkZjU1YjdjODUyNWEwNWVkNzYwYWY3YmFkNThlNWNhYmIuLmVlYmFjNmNjMTkx
NThhNWQ1OTVlNjkxZDIxYTZhMzc2ZGExNDg2ZTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9ydW4tdW5pdHRlc3RzLmh0bWwKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3J1bi11bml0dGVzdHMu
aHRtbApAQCAtNTYsNiArNTYsOCBAQCBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiA8
c2NyaXB0IHNyYz0idWlfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJtb2Rl
bC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ibW9kZWxfdW5pdHRlc3RzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJzY3JpcHRzL3VpL25vdGlmaWNhdGlvbnMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InNjcmlwdHMvdWkvbm90aWZpY2F0aW9uc191bml0dGVzdHMuanMiPjwvc2Ny
aXB0PgogCiA8IS0tIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSB0ZXN0cyBmb3IgdGhlc2UgZmlsZXMh
IC0tPgogPHNjcmlwdCBzcmM9IkJ1Z3ppbGxhLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3N1bW1hcnkuanMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy9zdW1tYXJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3ZjlkYTIyOWU5MGNjYWRiNWViYzdkMjdiOTFhYTBi
MWU2OTliZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9zdW1t
YXJ5LmpzCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworKGZ1bmN0aW9uKCkgeworCit2
YXIgZ19hY3Rpb25zID0gbmV3IHVpLm5vdGlmaWNhdGlvbnMuU3RyZWFtKCk7Cit2YXIgZ19pbmZv
ID0gbmV3IHVpLm5vdGlmaWNhdGlvbnMuU3RyZWFtKCk7CisKK3ZhciBnX3VwZGF0ZVRpbWVySWQg
PSAwOwordmFyIGdfdGVzdEZhaWx1cmVzID0gbmV3IGJhc2UuVXBkYXRlVHJhY2tlcigpOworCitm
dW5jdGlvbiB1cGRhdGUoKQoreworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIGJ1dHRv
biB3aXRoIGEgcHJvZ3Jlc3MgZWxlbWVudC4KKyAgICB2YXIgdXBkYXRpbmcgPSBuZXcgdWkubm90
aWZpY2F0aW9ucy5JbmZvKCJVcGRhdGluZyAuLi4iKTsKKyAgICBnX2luZm8ucHVzaCh1cGRhdGlu
Zyk7CisKKyAgICAvLyBGSVhNRTogQWxzbyBwcm92aWRlIGluZm9ybWF0aW9uIG9uIGJvdCBmYWls
dXJlcy4KKyAgICBiYXNlLmNhbGxJblBhcmFsbGVsKFttb2RlbC51cGRhdGVSZWNlbnRDb21taXRz
LCBtb2RlbC51cGRhdGVSZXN1bHRzQnlCdWlsZGVyXSwgZnVuY3Rpb24oKSB7CisgICAgICAgIG1v
ZGVsLmFuYWx5emVVbmV4cGVjdGVkRmFpbHVyZXMoZnVuY3Rpb24oZmFpbHVyZUFuYWx5c2lzKSB7
CisgICAgICAgICAgICB2YXIga2V5ID0gZmFpbHVyZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdSZXZp
c2lvbiArICIrIiArIGZhaWx1cmVBbmFseXNpcy5vbGRlc3RGYWlsaW5nUmV2aXNpb247CisgICAg
ICAgICAgICB2YXIgZmFpbHVyZSA9IGdfdGVzdEZhaWx1cmVzLmdldChrZXkpOworICAgICAgICAg
ICAgaWYgKCFmYWlsdXJlKSB7CisgICAgICAgICAgICAgICAgZmFpbHVyZSA9IGdfYWN0aW9ucy5w
dXNoKG5ldyB1aS5ub3RpZmljYXRpb25zLlRlc3RGYWlsdXJlcygpKTsKKyAgICAgICAgICAgICAg
ICBtb2RlbC5jb21taXREYXRhTGlzdEZvclJldmlzaW9uUmFuZ2UoZmFpbHVyZUFuYWx5c2lzLm5l
d2VzdFBhc3NpbmdSZXZpc2lvbiArIDEsIGZhaWx1cmVBbmFseXNpcy5vbGRlc3RGYWlsaW5nUmV2
aXNpb24pLmZvckVhY2goZnVuY3Rpb24oY29tbWl0RGF0YSkgeworICAgICAgICAgICAgICAgICAg
ICBmYWlsdXJlLmFkZENvbW1pdERhdGEoY29tbWl0RGF0YSk7CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmYWlsdXJlLmFkZEZhaWx1cmVBbmFseXNpcyhm
YWlsdXJlQW5hbHlzaXMpOworICAgICAgICAgICAgZ190ZXN0RmFpbHVyZXMudXBkYXRlKGtleSwg
ZmFpbHVyZSk7CisgICAgICAgIH0sIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZ190ZXN0RmFp
bHVyZXMucHVyZ2UoZnVuY3Rpb24oZmFpbHVyZSkgeworICAgICAgICAgICAgICAgIGZhaWx1cmUu
ZGlzbWlzcygpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB1cGRhdGluZy5kaXNtaXNz
KCk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCiskKGRvY3VtZW50KS5yZWFkeShmdW5jdGlv
bigpIHsKKyAgICBnX3VwZGF0ZVRpbWVySWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwodXBkYXRlLCBj
b25maWcua1VwZGF0ZUZyZXF1ZW5jeSk7CisgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUo
Z19hY3Rpb25zLCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOworICAgIGRvY3VtZW50LmJvZHku
aW5zZXJ0QmVmb3JlKGdfaW5mbywgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKKyAgICB1cGRh
dGUoKTsKK30pOworCit9KSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMv
dWkvbm90aWZpY2F0aW9ucy5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpL25vdGlmaWNh
dGlvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjk5Mzc0ZmE3ZjRmNTk1YzcyYzk5ODIxYTllODE2NWVmN2Y4
ZmQxMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpL25vdGlm
aWNhdGlvbnMuanMKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwordmFyIHVpID0gdWkg
fHwge307Cit1aS5ub3RpZmljYXRpb25zID0gdWkubm90aWZpY2F0aW9ucyB8fCB7fTsKKworKGZ1
bmN0aW9uKCl7CisKK3VpLm5vdGlmaWNhdGlvbnMuU3RyZWFtID0gYmFzZS5leHRlbmRzKCdvbCcs
IHsKKyAgICBpbml0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmNsYXNzTmFtZSA9
ICdub3RpZmljYXRpb25zJzsKKyAgICB9LAorICAgIHB1c2g6IGZ1bmN0aW9uKG5vdGlmaWNhdGlv
bikKKyAgICB7CisgICAgICAgIHRoaXMuaW5zZXJ0QmVmb3JlKG5vdGlmaWNhdGlvbiwgdGhpcy5m
aXJzdENoaWxkKTsKKyAgICAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbjsKKyAgICB9Cit9KTsKKwor
dmFyIE5vdGlmaWNhdGlvbiA9IGJhc2UuZXh0ZW5kcygnbGknLCB7CisgICAgaW5pdDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fd2hhdCA9IHRoaXMuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOworICAgICAgICB0aGlzLl93aGF0LmNsYXNzTmFtZSA9
ICd3aGF0JzsKKyAgICAgICAgJCh0aGlzKS5oaWRlKCkuZmFkZUluKCdmYXN0Jyk7CisgICAgfSwK
KyAgICBkaXNtaXNzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICAvLyBGSVhNRTogVGhlc2Ug
ZmFkZSBpbi9vdXQgZWZmZWN0cyBhcmUgbGFtZS4KKyAgICAgICAgJCh0aGlzKS5mYWRlT3V0KGZ1
bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5wYXJlbnROb2RlICYmIHRoaXMu
cGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzKTsKKyAgICAgICAgfSk7CisgICAgfQorfSk7CisK
K3VpLm5vdGlmaWNhdGlvbnMuSW5mbyA9IGJhc2UuZXh0ZW5kcyhOb3RpZmljYXRpb24sIHsKKyAg
ICBpbml0OiBmdW5jdGlvbihtZXNzYWdlKQorICAgIHsKKyAgICAgICAgdGhpcy5fd2hhdC50ZXh0
Q29udGVudCA9IG1lc3NhZ2U7CisgICAgfQorfSk7CisKK3ZhciBUaW1lID0gYmFzZS5leHRlbmRz
KCd0aW1lJywgeworICAgIGluaXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMudXBk
YXRlVGltZSgiSnVzdCBOb3ciKTsKKyAgICB9LAorICAgIHVwZGF0ZVRpbWU6IGZ1bmN0aW9uKHRp
bWUpCisgICAgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGRpc3BsYXlpbmcgYWN0dWFs
IHRpbWUuCisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVsYXRpdmUgdGltZS4KKyAgICAg
ICAgdGhpcy50ZXh0Q29udGVudCA9IHRpbWU7CisgICAgfQorfSk7CisKK3VpLm5vdGlmaWNhdGlv
bnMuRmFpbGluZ1Rlc3QgPSBiYXNlLmV4dGVuZHMoJ2xpJywgeworICAgIGluaXQ6IGZ1bmN0aW9u
KGZhaWx1cmVBbmFseXNpcykKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBTaG93IHR5cGUgb2Yg
ZmFpbHVyZSBhbmQgd2hlcmUgaXQncyBmYWlsaW5nLgorICAgICAgICB0aGlzLnRleHRDb250ZW50
ID0gZmFpbHVyZUFuYWx5c2lzLnRlc3ROYW1lOworICAgIH0KK30pCisKK3ZhciBDYXVzZSA9IGJh
c2UuZXh0ZW5kcygnbGknLCB7CisgICAgaW5pdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
dGhpcy5fZGVzY3JpcHRpb24gPSB0aGlzLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpKTsKKyAgICAgICAgdGhpcy5fZGVzY3JpcHRpb24uY2xhc3NOYW1lID0gJ2Rlc2Ny
aXB0aW9uJzsKKyAgICAgICAgdmFyIGFjdGlvbnMgPSB0aGlzLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3VsJykpOworICAgICAgICBhY3Rpb25zLmNsYXNzTmFtZSA9ICdhY3Rp
b25zJzsKKyAgICAgICAgLy8gRklYTUU6IEFjdGlvbnMgc2hvdWxkIGRvIHNvbWV0aGluZy4KKyAg
ICAgICAgYWN0aW9ucy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpKS5p
bm5lckhUTUwgPSAnPGJ1dHRvbj5Sb2xsIG91dDwvYnV0dG9uPic7CisgICAgfQorfSk7CisKK3Vp
Lm5vdGlmaWNhdGlvbnMuU3VzcGljaW91c0NvbW1pdCA9IGJhc2UuZXh0ZW5kcyhDYXVzZSwgewor
ICAgIGluaXQ6IGZ1bmN0aW9uKGNvbW1pdERhdGEpCisgICAgeworICAgICAgICB2YXIgbGlua1Rv
UmV2aXNpb24gPSB0aGlzLl9kZXNjcmlwdGlvbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdhJykpOworICAgICAgICAvLyBGSVhNRTogU2V0IGhyZWYuCisgICAgICAgIGxpbmtU
b1JldmlzaW9uLmhyZWYgPSAnJzsKKyAgICAgICAgbGlua1RvUmV2aXNpb24udGV4dENvbnRlbnQg
PSBjb21taXREYXRhLnJldmlzaW9uOworICAgICAgICAvLyBGSVhNRTogUmV2aWV3ZXIgY291bGQg
YmUgdW5rbm93bi4KKyAgICAgICAgLy8gRklYTUU6IFByb3ZpZGUgb3Bwb3J0dW5pdGllcyB0byBz
dHlsZSB0aXRsZS9hdXRob3IvcmV2aWV3ZXIgc2VwYXJhdGVseS4KKyAgICAgICAgdGhpcy5fZGVz
Y3JpcHRpb24uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY29tbWl0RGF0YS50
aXRsZSArICcgJyArIGNvbW1pdERhdGEuYXV0aG9yICsgJyAoJyArIGNvbW1pdERhdGEucmV2aWV3
ZXIgKyAnKScpKTsKKyAgICB9Cit9KTsKKwordWkubm90aWZpY2F0aW9ucy5UZXN0RmFpbHVyZXMg
PSBiYXNlLmV4dGVuZHMoTm90aWZpY2F0aW9uLCB7CisgICAgaW5pdDogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgdGhpcy5fdGltZSA9IHRoaXMuaW5zZXJ0QmVmb3JlKG5ldyBUaW1lKCksIHRo
aXMuZmlyc3RDaGlsZCk7CisgICAgICAgIHZhciBwcm9ibGVtID0gdGhpcy5fd2hhdC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CisgICAgICAgIHByb2JsZW0uY2xh
c3NOYW1lID0gJ3Byb2JsZW0nOworICAgICAgICB0aGlzLl90ZXN0cyA9IHByb2JsZW0uYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndWwnKSk7CisgICAgICAgIHRoaXMuX3Rlc3Rz
LmNsYXNzTmFtZSA9ICdlZmZlY3RzJzsKKyAgICAgICAgdGhpcy5fY2F1c2VzID0gcHJvYmxlbS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpKTsKKyAgICAgICAgdGhpcy5f
Y2F1c2VzLmNsYXNzTmFtZSA9ICdjYXVzZXMnOworICAgIH0sCisgICAgYWRkRmFpbHVyZUFuYWx5
c2lzOiBmdW5jdGlvbihmYWlsdXJlQW5hbHlzaXMpCisgICAgeworICAgICAgICAvLyBGSVhNRTog
QWRkIGluIG9yZGVyLgorICAgICAgICAvLyBGSVhNRTogRG9uJ3QgYWRkIG1vcmUgdGhhbiBvbmNl
LgorICAgICAgICAvLyBGSVhNRTogUmV0cmlldmUgZGF0ZSBmcm9tIGZhaWx1cmVBbmFseXNpcyBh
bmQgc2V0IHRoaXMuX3RpbWUuCisgICAgICAgIHJldHVybiB0aGlzLl90ZXN0cy5hcHBlbmRDaGls
ZChuZXcgdWkubm90aWZpY2F0aW9ucy5GYWlsaW5nVGVzdChmYWlsdXJlQW5hbHlzaXMpKTsKKyAg
ICB9LAorICAgIGFkZENvbW1pdERhdGE6IGZ1bmN0aW9uKGNvbW1pdERhdGEpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5fY2F1c2VzLmFwcGVuZENoaWxkKG5ldyB1aS5ub3RpZmljYXRpb25z
LlN1c3BpY2lvdXNDb21taXQoY29tbWl0RGF0YSkpOworICAgIH0KK30pOworCit9KSgpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvbm90aWZpY2F0aW9uc191bml0dGVz
dHMuanMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9ub3RpZmljYXRpb25zX3VuaXR0ZXN0
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kYjY0NjZhMGE3OTA1NmQ2ZjI1YWNiMWVkMTk2NTg5ZDliNWUwYWUw
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvbm90aWZpY2F0
aW9uc191bml0dGVzdHMuanMKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisoZnVuY3Rp
b24gKCkgeworCittb2R1bGUoJ3VpLm5vdGlmaWNhdGlvbnMnKTsKKwordGVzdCgndWkubm90aWZp
Y2F0aW9ucy5TdHJlYW0nLCA1LCBmdW5jdGlvbigpIHsKKyAgICB2YXIgc3RyZWFtID0gbmV3IHVp
Lm5vdGlmaWNhdGlvbnMuU3RyZWFtKCk7CisgICAgZXF1YWwoc3RyZWFtLnRhZ05hbWUsICdPTCcp
OworICAgIGVxdWFsKHN0cmVhbS5jbGFzc05hbWUsICdub3RpZmljYXRpb25zJyk7CisgICAgc3Ry
ZWFtLnB1c2goZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKSkudGV4dENvbnRlbnQgPSAnby1t
YXRpYyc7CisgICAgZXF1YWwoc3RyZWFtLmNoaWxkRWxlbWVudENvdW50LCAxKTsKKyAgICBzdHJl
YW0ucHVzaChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpKS50ZXh0Q29udGVudCA9ICdnYXJk
ZW4tJzsKKyAgICBlcXVhbChzdHJlYW0uY2hpbGRFbGVtZW50Q291bnQsIDIpOworICAgIGVxdWFs
KHN0cmVhbS50ZXh0Q29udGVudCwgJ2dhcmRlbi1vLW1hdGljJyk7Cit9KTsKKwordGVzdCgndWku
bm90aWZpY2F0aW9ucy5JbmZvJywgMywgZnVuY3Rpb24oKSB7CisgICAgdmFyIGluZm8gPSBuZXcg
dWkubm90aWZpY2F0aW9ucy5JbmZvKCdpbmZvJyk7CisgICAgZXF1YWwoaW5mby50YWdOYW1lLCAn
TEknKTsKKyAgICBlcXVhbChpbmZvLmlubmVySFRNTCwgJzxkaXYgY2xhc3M9IndoYXQiPmluZm88
L2Rpdj4nKTsKKyAgICAvLyBGSVhNRTogUmVhbGx5IG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8g
bW9jay90ZXN0IGFuaW1hdGVkIHJlbW92YWwuCisgICAgb2soaW5mby5kaXNtaXNzKTsKK30pOwor
Cit0ZXN0KCd1aS5ub3RpZmljYXRpb25zLkZhaWxpbmdUZXN0JywgMiwgZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIGZhaWxpbmdUZXN0ID0gbmV3IHVpLm5vdGlmaWNhdGlvbnMuRmFpbGluZ1Rlc3Qoe3Rl
c3ROYW1lOiAndGVzdCd9KTsKKyAgICBlcXVhbChmYWlsaW5nVGVzdC50YWdOYW1lLCAnTEknKTsK
KyAgICBlcXVhbChmYWlsaW5nVGVzdC5pbm5lckhUTUwsICd0ZXN0Jyk7Cit9KTsKKwordGVzdCgn
dWkubm90aWZpY2F0aW9ucy5TdXNwaWNpb3VzQ29tbWl0JywgMiwgZnVuY3Rpb24oKSB7CisgICAg
dmFyIHN1c3BpY2lvdXNDb21taXQgPSBuZXcgdWkubm90aWZpY2F0aW9ucy5TdXNwaWNpb3VzQ29t
bWl0KHtyZXZpc2lvbjogMSwgdGl0bGU6ICJ0aXRsZSIsIGF1dGhvcjogImF1dGhvciIsIHJldmll
d2VyOiAicmV2aWV3ZXIifSk7CisgICAgZXF1YWwoc3VzcGljaW91c0NvbW1pdC50YWdOYW1lLCAn
TEknKTsKKyAgICBlcXVhbChzdXNwaWNpb3VzQ29tbWl0LmlubmVySFRNTCwgJzxkaXYgY2xhc3M9
ImRlc2NyaXB0aW9uIj48YSBocmVmPSIiPjE8L2E+dGl0bGUgYXV0aG9yIChyZXZpZXdlcik8L2Rp
dj48dWwgY2xhc3M9ImFjdGlvbnMiPjxsaT48YnV0dG9uPlJvbGwgb3V0PC9idXR0b24+PC9saT48
L3VsPicpOworfSk7CisKK3Rlc3QoJ3VpLm5vdGlmaWNhdGlvbnMuVGVzdEZhaWx1cmVzJywgNCwg
ZnVuY3Rpb24oKSB7CisgICAgdmFyIHRlc3RGYWlsdXJlcyA9IG5ldyB1aS5ub3RpZmljYXRpb25z
LlRlc3RGYWlsdXJlcygpOworICAgIGVxdWFsKHRlc3RGYWlsdXJlcy50YWdOYW1lLCAnTEknKTsK
KyAgICBlcXVhbCh0ZXN0RmFpbHVyZXMuaW5uZXJIVE1MLCAnPHRpbWU+SnVzdCBOb3c8L3RpbWU+
PGRpdiBjbGFzcz0id2hhdCI+PGRpdiBjbGFzcz0icHJvYmxlbSI+PHVsIGNsYXNzPSJlZmZlY3Rz
Ij48L3VsPjx1bCBjbGFzcz0iY2F1c2VzIj48L3VsPjwvZGl2PjwvZGl2PicpOworICAgIHRlc3RG
YWlsdXJlcy5hZGRGYWlsdXJlQW5hbHlzaXMoe3Rlc3ROYW1lOiAndGVzdCd9KTsKKyAgICBlcXVh
bCh0ZXN0RmFpbHVyZXMuaW5uZXJIVE1MLCAnPHRpbWU+SnVzdCBOb3c8L3RpbWU+PGRpdiBjbGFz
cz0id2hhdCI+PGRpdiBjbGFzcz0icHJvYmxlbSI+PHVsIGNsYXNzPSJlZmZlY3RzIj48bGk+dGVz
dDwvbGk+PC91bD48dWwgY2xhc3M9ImNhdXNlcyI+PC91bD48L2Rpdj48L2Rpdj4nKTsKKyAgICB0
ZXN0RmFpbHVyZXMuYWRkQ29tbWl0RGF0YSh7cmV2aXNpb246IDEsIHRpdGxlOiAidGl0bGUiLCBh
dXRob3I6ICJhdXRob3IiLCByZXZpZXdlcjogInJldmlld2VyIn0pOworICAgIGVxdWFsKHRlc3RG
YWlsdXJlcy5pbm5lckhUTUwsICc8dGltZT5KdXN0IE5vdzwvdGltZT48ZGl2IGNsYXNzPSJ3aGF0
Ij48ZGl2IGNsYXNzPSJwcm9ibGVtIj48dWwgY2xhc3M9ImVmZmVjdHMiPjxsaT50ZXN0PC9saT48
L3VsPjx1bCBjbGFzcz0iY2F1c2VzIj48bGk+PGRpdiBjbGFzcz0iZGVzY3JpcHRpb24iPjxhIGhy
ZWY9IiI+MTwvYT50aXRsZSBhdXRob3IgKHJldmlld2VyKTwvZGl2Pjx1bCBjbGFzcz0iYWN0aW9u
cyI+PGxpPjxidXR0b24+Um9sbCBvdXQ8L2J1dHRvbj48L2xpPjwvdWw+PC9saT48L3VsPjwvZGl2
PjwvZGl2PicpOworfSk7CisKK30oKSk7CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5
bGVzL3N1bW1hcnkuY3NzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N0eWxlcy9zdW1tYXJ5LmNzcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kYTFmMmYxOTdkZjY2ZDM0M2ExMmJiM2ZlNmVlYTZjNWEwMDUyNmQ5Ci0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N0eWxlcy9zdW1tYXJ5LmNzcwpAQCAtMCwwICsx
LDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK29sLm5vdGlmaWNhdGlvbnMgeworICAgIGxpc3Qtc3R5bGU6
IG5vbmU7CisgICAgcGFkZGluZzogMDsKK30KKworb2wubm90aWZpY2F0aW9ucyB1bCB7CisgICAg
bGlzdC1zdHlsZTogbm9uZTsKKyAgICBwYWRkaW5nOiAwOworfQorCitvbC5ub3RpZmljYXRpb25z
PmxpIHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBw
YWRkaW5nOiAxMHB4IDA7CisgICAgYm9yZGVyOiAxcHggc29saWQgTGlnaHRHcmF5OworfQorCitv
bC5ub3RpZmljYXRpb25zPmxpPnRpbWUgeworICAgIHBhZGRpbmc6IDAgMCAwIDEwcHg7CisgICAg
dGV4dC1hbGlnbjogcmlnaHQ7CisgICAgd2lkdGg6IDEwMHB4OworfQorCitvbC5ub3RpZmljYXRp
b25zPmxpPmRpdi53aGF0IHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0
LWJveC1vcmllbnQ6IHZlcnRpY2FsOworICAgIHBhZGRpbmc6IDAgMTBweDsKKyAgICAtd2Via2l0
LWJveC1mbGV4OiAxOworfQorCitvbC5ub3RpZmljYXRpb25zPmxpIHVsLmNhdXNlcz5saSB7Cisg
ICAgcGFkZGluZzogMTBweDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBSZWQ7Cit9CisKK29sLm5v
dGlmaWNhdGlvbnM+bGkgdWwuY2F1c2VzPmxpIHVsLmFjdGlvbnMgeworICAgIHRleHQtYWxpZ246
IHJpZ2h0OworfQorCitvbC5ub3RpZmljYXRpb25zPmxpIHVsLmNhdXNlcz5saSBsaSB7CisgICAg
cGFkZGluZzogMTBweCAwIDAgMDsKKyAgICBkaXNwbGF5OiBpbmxpbmU7Cit9ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N1bW1hcnkuaHRt
bCBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zdW1tYXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWIwMjU5OTVmMjFi
YTBlNWYwMjkyNDE5ZmVlMTUyYTYwYjgyYjNmNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9zdW1tYXJ5Lmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
IS0tCitDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKK2FyZSBtZXQ6CisxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKK1RISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
K0FORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCitCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCitDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCitJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKK0FSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKK1RIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworVGhlIGZhdmljb25zIGFyZSBmcm9tIHRoZSBhd2Vzb21lIGZhbWZhbWZhbS5jb20sIHdoaWNo
IGlzIHRoZSB3ZWJzaXRlIG9mIE1hcmsKK0phbWVzLCBhIHdlYiBkZXZlbG9wZXIgZnJvbSBCaXJt
aW5naGFtLCBVSy4KKy0tPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5HYXJkZW4tTy1NYXRpYyBT
dW1tYXJ5IFZpZXc8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZXMv
c3VtbWFyeS5jc3MiPgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iaHR0cHM6Ly9hamF4
Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnkvMS42LjIvanF1ZXJ5Lm1pbi5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iY29uZmlnLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJi
YXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJuZXQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9IlRyYWMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkJ1Z3ppbGxhLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJidWlsZGVycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Y2hlY2tvdXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc3VsdHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InVpLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJtb2RlbC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0cy91aS9ub3RpZmljYXRpb25zLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHRzL3N1bW1hcnkuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGJjYTc5MzQzZDYzMGJhZDg3ZDM2NDdiOTNmMjU4ZDZhNzliM2U0NzEuLmNlOWMxMmZk
YmNjZjdjNmYwYWZlYTExMGRhMTY5Yzk5Njg5MDhkNDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wOC0xNiAg
RGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGdhcmRl
bi1vLW1hdGljIG5lZWRzIGEgc3VtbWFyeSB2aWV3IHdpdGggYWN0aW9ucyBmb3IgZWFjaCBwcm9i
bGVtLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYx
NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEJ1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9ydW4tdW5pdHRlc3RzLmh0bWw6IEFkZGVkIG5vdGlmaWNhdGlvbnMgdGVzdHMuCisg
ICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvc3VtbWFyeS5qczogQWRkZWQuCisgICAgICAgICog
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvdWkvbm90aWZpY2F0aW9ucy5qczogQWRkZWQuCisgICAgICAgICog
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvdWkvbm90aWZpY2F0aW9uc191bml0dGVzdHMuanM6IEFkZGVkLgor
ICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvc3VtbWFyeS5jc3M6IEFkZGVkLgorICAgICAgICAq
IEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9zdW1tYXJ5Lmh0bWw6IEFkZGVkLgorCiAyMDExLTA4LTE1ICBEaW1pdHJpIEds
YXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgZ2FyZGVuLW8tbWF0aWMg
ZnJvbnRlbmQgbmVlZHMgbW9kZWwuY29tbWl0RGF0YUZvclJldmlzaW9uUmFuZ2UgZnVuY3Rpb24u
Cg==
</data>
<flag name="review"
          id="99792"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>