<?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>127849</bug_id>
          
          <creation_ts>2014-01-29 12:08:36 -0800</creation_ts>
          <short_desc>WebKit Bot Watcher&apos;s Dashboard: Access restricted queue should only prompt for HTTP credentials once per page load</short_desc>
          <delta_ts>2014-02-02 12:27:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>ap</cc>
    
    <cc>dfarler</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>973433</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-29 12:08:36 -0800</bug_when>
    <thetext>A queue, whose associated buildbot requires authentication, should only prompt for HTTP credentials at most once per page load to avoid inundating a person with HTTP authentication prompts (e.g. say, they aren&apos;t authorized to access the buildbot) whenever the queue is requested to update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973944</commentid>
    <comment_count>1</comment_count>
      <attachid>222720</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-30 13:13:22 -0800</bug_when>
    <thetext>Created attachment 222720
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973947</commentid>
    <comment_count>2</comment_count>
      <attachid>222721</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-30 13:15:37 -0800</bug_when>
    <thetext>Created attachment 222721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974005</commentid>
    <comment_count>3</comment_count>
      <attachid>222721</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-30 14:27:58 -0800</bug_when>
    <thetext>Comment on attachment 222721
Patch

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

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Buildbot.js:40
&gt; +    this.isAuthenticated = !this.needsAuthentication;

This is counter-intuitive. A host that doesn&apos;t even need authentication is marked as authenticated.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Buildbot.js:89
&gt; +        request.open(&quot;HEAD&quot;, this.baseURL);

I don&apos;t understand why this is needed. Is it working around a Safari/WebKit bug where we don&apos;t coalesce authentication dialogs?

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueue.js:164
&gt; +            // FIXME: We should consider defining an event, say UnauthorizedAccess, to notify listeners to update
&gt; +            // their state when an authorization error occurs instead of repurposing the event IterationsAdded.

I agree that sending a fake IterationsAdded is not great. Is doing the right thing complicated?

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueueView.js:72
&gt; +    _appendUnauthorizedLineView: function(queue)

Nice.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/StatusLineView.js:26
&gt; -StatusLineView = function(message, status, label, repeatCount, url)
&gt; +StatusLineView = function(message, status, label, repeatCount, urlOrFunction)

Would a javascript: URL work? If we can just pass such, that seems better to me than making the code more polymorphic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974398</commentid>
    <comment_count>4</comment_count>
      <attachid>222721</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-31 11:49:21 -0800</bug_when>
    <thetext>Comment on attachment 222721
Patch

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

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Buildbot.js:40
&gt;&gt; +    this.isAuthenticated = !this.needsAuthentication;
&gt; 
&gt; This is counter-intuitive. A host that doesn&apos;t even need authentication is marked as authenticated.

One idea to make this more intuitive is to rename isAuthenticated to authenticationStatus and define a set of values that this instance variable can take: Unauthenticated, Authenticated, and Invalid Credentials. Initially, authenticationStatus := Unauthenticated. So, a Buildbot that doesn&apos;t require authentication will have (needsAuthentication, authenticationStatus) = (false, Unauthenticated) and a Buildbot that requires authentication and hasn&apos;t prompted a person for credentials will have (needsAuthentication, authenticationStatus) = (true, Unauthenticated).

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Buildbot.js:89
&gt;&gt; +        request.open(&quot;HEAD&quot;, this.baseURL);
&gt; 
&gt; I don&apos;t understand why this is needed. Is it working around a Safari/WebKit bug where we don&apos;t coalesce authentication dialogs?

Yes, the primary reason for this function is to work around a bug where we don&apos;t coalesce authentication dialogs. I&apos;ll look to file a bug for this issue if one doesn&apos;t exist.

Although we only have two iOS Buildbot queues, this function may also prevent excessive network requests depending on how WebKit/Safari determines when to show an authentication. Specifically, this function ensures that we make exactly one HTTP request (per authentication attempt) before allowing all of the queues associated with an access-restricted Buildbot to independently update themselves.

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueue.js:164
&gt;&gt; +            // their state when an authorization error occurs instead of repurposing the event IterationsAdded.
&gt; 
&gt; I agree that sending a fake IterationsAdded is not great. Is doing the right thing complicated?

Will add event BuildbotQueue.Event.UnauthorizedAccess and dispatch it when an HTTP 401 error occurs.

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/StatusLineView.js:26
&gt;&gt; +StatusLineView = function(message, status, label, repeatCount, urlOrFunction)
&gt; 
&gt; Would a javascript: URL work? If we can just pass such, that seems better to me than making the code more polymorphic.

Yes, we can take advantage of the global array buildbots to tell the Buildbot we&apos;re interested in to update its queues. Will revert the changes to the StatusLineView constructor and remove the selector .status-line .bubble.can-be-clicked from file dashboard/Styles/StatusLineView.css (since we don&apos;t need to change the style of the cursor to give the appearance of a hyperlink as the status line will now be an actual hyperlink).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974404</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-31 12:02:59 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 222721 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=222721&amp;action=review
&gt; 
&gt; [...]
&gt; &gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Buildbot.js:89
&gt; &gt;&gt; +        request.open(&quot;HEAD&quot;, this.baseURL);
&gt; &gt; 
&gt; &gt; I don&apos;t understand why this is needed. Is it working around a Safari/WebKit bug where we don&apos;t coalesce authentication dialogs?
&gt; 
&gt; Yes, the primary reason for this function is to work around a bug where we don&apos;t coalesce authentication dialogs. I&apos;ll look to file a bug for this issue if one doesn&apos;t exist.

Filed bug #128006 to coalesce credential requests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974470</commentid>
    <comment_count>6</comment_count>
      <attachid>222848</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-31 14:26:38 -0800</bug_when>
    <thetext>Created attachment 222848
Patch

Updated patch based on Alexey Proskuryakov&apos;s remarks.

It seems sufficient to have the browser prompt exactly once for each access-restricted queue on page load and expose a way to trigger an authentication dialog from the dashboard. This allows a person who doesn&apos;t have permission to view the status of the queue to view the dashboard without the annoyance of being prompted for credentials each time the queue update timer fires (every 45 seconds as of the time of writing).

For now, I am removing the logic to work around bug #128006 as the effects of this bug can be seen as an annoyance. That is, the effects don&apos;t significantly impact the functionality of the dashboard. Ideally we should fix bug #128006 so that we we only present a single authentication dialog for all access-restricted queues associated with the same Buildbot. We can consider adding back the work around should it turn out that it&apos;s either non-trivial to fix bug #128006 or its effects are seen as a significant annoyance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974478</commentid>
    <comment_count>7</comment_count>
      <attachid>222852</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-31 14:31:46 -0800</bug_when>
    <thetext>Created attachment 222852
[Screenshot] Unauthorized status line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974496</commentid>
    <comment_count>8</comment_count>
      <attachid>222848</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-31 14:59:47 -0800</bug_when>
    <thetext>Comment on attachment 222848
Patch

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

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Buildbot.js:109
&gt; +        // FIXME: We may want to assert that the authentication status didn&apos;t change. When such an assertion fails
&gt; +        // it indirectly indicates that we made an synchronous HTTP request, which we should avoid to ensure app
&gt; +        // responsiveness.

Sounds easier to just add the assert, and not a FIXME :)

We definitely shouldn&apos;t be making sync requests.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueue.js:166
&gt; +                // FIXME: Safari/WebKit should coallesce authentication requests with the same origin and authentication realm.
&gt; +                // See &lt;https://bugs.webkit.org/show_bug.cgi?id=128006&gt;.

I usually use this format:

// FIXME (128006): Safari/WebKit should coallesce authentication requests with the same origin and authentication realm.

It would be helpful to add a comment about what the observable effect of this issue is in this particular case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974508</commentid>
    <comment_count>9</comment_count>
      <attachid>222848</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-31 15:25:25 -0800</bug_when>
    <thetext>Comment on attachment 222848
Patch

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

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Buildbot.js:109
&gt;&gt; +        // responsiveness.
&gt; 
&gt; Sounds easier to just add the assert, and not a FIXME :)
&gt; 
&gt; We definitely shouldn&apos;t be making sync requests.

Will add assert and remove the FIXME comment.

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueue.js:166
&gt;&gt; +                // See &lt;https://bugs.webkit.org/show_bug.cgi?id=128006&gt;.
&gt; 
&gt; I usually use this format:
&gt; 
&gt; // FIXME (128006): Safari/WebKit should coallesce authentication requests with the same origin and authentication realm.
&gt; 
&gt; It would be helpful to add a comment about what the observable effect of this issue is in this particular case.

Will update comment to read:

// FIXME (128006): Safari/WebKit should coallesce authentication requests with the same origin and authentication realm.
// In absence of the fix, Safari presents additional authentication dialogs regardless of whether an earlier authentication
// dialog was dismissed. As a way to ameliorate the user experience where a person authenticated successfully using an
// earlier authentication dialog and cancelled the authentication dialog associated with the load for this queue, we call
// ourself so that we can schedule another load, which should complete successfully now that we have credentials.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974509</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-01-31 15:26:23 -0800</bug_when>
    <thetext>Committed r163213: &lt;http://trac.webkit.org/changeset/163213&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974808</commentid>
    <comment_count>11</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-02-02 12:27:38 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Committed r163213: &lt;http://trac.webkit.org/changeset/163213&gt;

Changed equality operator to identity operator when comparing HTTP status code and committed this fix in &lt;http://trac.webkit.org/changeset/163268&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222720</attachid>
            <date>2014-01-30 13:13:22 -0800</date>
            <delta_ts>2014-01-30 13:15:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127849-20140130131321.patch</filename>
            <type>text/plain</type>
            <size>16154</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMDM5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTJlZWQ3ZjliNmRjZjg2ZjkwMTRlNzVkNzU0MDEwZDcw
YzZlMjA4YS4uYjY3NTI1ODA1NTc2ODM1MzRlOWFiY2YwNzgxMDlkZWM3YjZjMmIwMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1
IEBACisyMDE0LTAxLTMwICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWJLaXQgQm90IFdhdGNoZXIncyBEYXNoYm9hcmQ6IEJ1aWxkYm90IHNob3VsZCBvbmx5
IHByb21wdCBmb3IgSFRUUCBjcmVkZW50aWFscyBvbmNlIHBlciBwYWdlIGxvYWQKKyAgICAgICAg
KGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4NDkpCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IHdoZW5l
dmVyIHRoZSBkYXNoYm9hcmQgdXBkYXRlcyB0aGUgc3RhdHVzIG9mIGEgcXVldWUgd2hvc2UgQnVp
bGRib3QgcmVxdWlyZXMgYXV0aGVudGljYXRpb24KKyAgICAgICAgaXQgd2lsbCBjYXVzZSBhIGJy
b3dzZXIgdG8gcHJvbXB0IGZvciBjcmVkZW50aWFscyBvbmNlIHBlciB1cGRhdGUgdW50aWwgdmFs
aWQgY3JlZGVudGlhbHMgYXJlIHByb3ZpZGVkLgorICAgICAgICBJbnN0ZWFkIHdlIHNob3VsZCBr
ZWVwIHRyYWNrIG9mIEJ1aWxkYm90cyB0aGF0IHJlc3BvbmQgd2l0aCBhbiBIVFRQIDQwMSBVbmF1
dGhvcml6ZWQgc3RhdHVzIGNvZGUgdG8gYXZvaWQKKyAgICAgICAgc3Vic2VxdWVudGx5IHF1ZXJ5
aW5nIHRoZW0gYW5kIGhlbmNlIGNhdXNlIGEgYnJvd3NlciB0byBwcm9tcHQgZm9yIGNyZWRlbnRp
YWxzLiBUb2dldGhlciB3aXRoIGFuIG9wdGlvbmFsCisgICAgICAgIGhpbnQgcHJvdmlkZWQgd2hl
biBpbnN0YW50aWF0aW5nIGEgQnVpbGRib3Qgb2JqZWN0IGFzIHRvIHdoZXRoZXIgaXQgcmVxdWly
ZXMgYXV0aGVudGljYXRpb24sIHdlIGNhbiBtYWtlCisgICAgICAgIHRoZSBkYXNoYm9hcmQgcHJv
bXB0IGZvciBIVFRQIGNyZWRlbnRpYWxzIGV4YWN0bHkgb25jZSBwZXIgcGFnZSBsb2FkIGZvciBl
YWNoIEJ1aWxkYm90IHRoYXQgcmVxdWlyZXMgYXV0aGVudGljYXRpb24uCisKKyAgICAgICAgUXVl
dWVzIHdob3NlIEJ1aWxkYm90IHdhc24ndCBhdXRoZW50aWNhdGVkIHdpbGwgc2hvdyBpbiB0aGUg
ZGFzaGJvYXJkIGFzICJ1bmF1dGhvcml6ZWQiLiBDbGlja2luZyBvbgorICAgICAgICB0aGlzIHN0
YXR1cyBtZXNzYWdlIHdpbGwgY2F1c2UgdGhlIGJyb3dzZXIgdG8gcHJvbXB0IGZvciBjcmVkZW50
aWFscy4KKworICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90LmpzOgorICAgICAgICAo
QnVpbGRib3QpOiBJbml0aWFsaXplIGluc3RhbmNlIHZhcmlhYmxlIGlzQXV0aGVudGljYXRlZCBk
ZXBlbmRpbmcgb24gd2hldGhlciBCdWlsZGJvdCBoaW50ZWQgdGhhdCBpdAorICAgICAgICBuZWVk
cyBhdXRoZW50aWNhdGlvbi4KKyAgICAgICAgKEJ1aWxkYm90LnByb3RvdHlwZS5fdXBkYXRlUXVl
dWVzKTogQWRkZWQuCisgICAgICAgIChCdWlsZGJvdC5wcm90b3R5cGUuYXV0aGVudGljYXRlQW5k
VXBkYXRlUXVldWVzKTogQWRkZWQuIFBlcmZvcm1zIGEgSFRUUCBIRUFEIHJlcXVlc3QgZm9yIHRo
ZSBCdWlsZGJvdCBVUkwKKyAgICAgICAgYXMgYSB3YXkgdG8gaGF2ZSB0aGUgYnJvd3NlciBwcm9t
cHQgZm9yIGNyZWRlbnRpYWxzLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90QnVp
bGRlclF1ZXVlVmlldy5qczoKKyAgICAgICAgKEJ1aWxkYm90QnVpbGRlclF1ZXVlVmlldy5wcm90
b3R5cGUudXBkYXRlLmFwcGVuZEJ1aWxkZXJRdWV1ZVN0YXR1cyk6IE1vZGlmaWVkIHRvIGNhbGwK
KyAgICAgICAgQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlLl9hcHBlbmRVbmF1dGhvcml6ZWRM
aW5lVmlldygpIGlmIGEgcGVyc29uIGhhcyBub3QgYXV0aGVudGljYXRlZCB3aXRoIHRoZQorICAg
ICAgICBCdWlsZGJvdCBhc3NvY2lhdGVkIHdpdGggdGhlIHF1ZXVlLgorICAgICAgICAqIEJ1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL0J1aWxkYm90UXVldWUuanM6CisgICAgICAgIChCdWlsZGJvdFF1ZXVlKTogRG8g
bm90IHVwZGF0ZSB0aGUgc3RhdGUgb2YgdGhlIHF1ZXVlIG9uIGNvbnN0cnVjdGlvbiB0byBhdm9p
ZCBwcm9tcHRpbmcgZm9yIGNyZWRlbnRpYWxzIG9uIHBhZ2UgbG9hZAorICAgICAgICBpZiB0aGUg
YXNzb2NpYXRlZCBCdWlsZGJvdCByZXF1aXJlcyBhdXRoZW50aWNhdGlvbi4gSW5zdGVhZCBsZXQg
dGhlIGNhbGxlciAoZS5nLiBCdWlsZEJvdCgpKSBleHBsaWNpdGx5IHRlbGwgdGhlCisgICAgICAg
IHF1ZXVlIHRvIHVwZGF0ZS4KKyAgICAgICAgKEJ1aWxkYm90UXVldWUucHJvdG90eXBlLnVwZGF0
ZSk6IFJldHVybiBpbW1lZGlhdGVseSBpZiB0aGUgYXNzb2NpYXRlZCBCdWlsZGJvdCByZXF1aXJl
cyBhdXRoZW50aWNhdGlvbi4KKyAgICAgICAgQWRkaXRpb25hbGx5LCBpZiB0aGUgSlNPTiBsb2Fk
IGZhaWxzIHdpdGggYW4gSFRUUCA0MDEgVW5hdXRob3JpemVkIGFjY2VzcyBlcnJvciAoc2F5LCBj
cmVkZW50aWFscyB3ZXJlCisgICAgICAgIGludmFsaWRhdGVkKSB0aGVuIHNldCB0aGUgYXNzb2Np
YXRlZCBCdWlsZGJvdCdzIGlzQXV0aGVudGljYXRlZCBmbGFnIHRvIGZhbHNlIHRvIGF2b2lkIHN1
YnNlcXVlbnRseQorICAgICAgICBwcm9tcHRpbmcgYSBwZXJzb24gZm9yIGNyZWRlbnRpYWxzIHRo
ZSBuZXh0IHRpbWUgdGhlIHF1ZXVlIHVwZGF0ZSB0aW1lciBmaXJlcy4KKyAgICAgICAgKiBCdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlVmlldy5qczoKKyAgICAgICAgKEJ1aWxkYm90UXVldWVW
aWV3LnByb3RvdHlwZS5fYXBwZW5kVW5hdXRob3JpemVkTGluZVZpZXcpOiBBZGRlZC4KKyAgICAg
ICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5qczoKKyAgICAgICAg
KEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZS51cGRhdGUuYXBwZW5kQnVpbGRlclF1
ZXVlU3RhdHVzKTogTW9kaWZpZWQgdG8gY2FsbAorICAgICAgICBCdWlsZGJvdFF1ZXVlVmlldy5w
cm90b3R5cGUuX2FwcGVuZFVuYXV0aG9yaXplZExpbmVWaWV3KCkgaWYgYSBwZXJzb24gaGFzIG5v
dCBhdXRoZW50aWNhdGVkIHdpdGggdGhlCisgICAgICAgIEJ1aWxkYm90IGFzc29jaWF0ZWQgd2l0
aCB0aGUgcXVldWUuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvU3RhdHVzTGluZVZpZXcuanM6
CisgICAgICAgIChTdGF0dXNMaW5lVmlldyk6IE1vZGlmaWVkIHRvIHRha2UgZWl0aGVyIGEgVVJM
IG9yIGEgRnVuY3Rpb24gb2JqZWN0IHRvIGNhdXNlIGVpdGhlciBhIHBhZ2UKKyAgICAgICAgbmF2
aWdhdGlvbiBvciBiZSBpbnZva2VkIHdoZW4gYSBwZXJzb24gY2xpY2tzIHRoZSBzdGF0dXMgbGlu
ZSwgcmVzcGVjdGl2ZWx5LgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TdHlsZXMvU3RhdHVzTGluZVZpZXcu
Y3NzOgorICAgICAgICAoLnN0YXR1cy1saW5lIC5idWJibGUuY2FuLWJlLWNsaWNrZWQpOiBBZGRl
ZC4gV2UgYXBwbHkgdGhpcyBzdHlsZSB3aGVuIGEgU3RhdHVzTGluZVZpZXcgaXMKKyAgICAgICAg
Y3JlYXRlZCB3aXRoIGEgRnVuY3Rpb24gb2JqZWN0IHNvIHRoYXQgd2UgdXNlIHRoZSBwb2ludGVy
IGN1cnNvciAoYXMgc2hvd24gZm9yIGh5cGVybGlua3MpCisgICAgICAgIHRvIGFkdmVydGlzZSB0
aGF0IGEgc3RhdHVzIGxpbmUgY2FuIGJlIGNsaWNrZWQgd2hlbiB0aGUgY3Vyc29yIGlzIGhvdmVy
aW5nIG92ZXIgaXQuCisgICAgICAgICguc3RhdHVzLWxpbmUudW5hdXRob3JpemVkIC5idWJibGUp
OiBBZGRlZC4KKyAgICAgICAgKC5zdGF0dXMtbGluZS51bmF1dGhvcml6ZWQgLmJ1YmJsZS5waWN0
b2dyYW0pOiBBZGRlZC4KKyAgICAgICAgKC5zdGF0dXMtbGluZS51bmF1dGhvcml6ZWQgLm1lc3Nh
Z2UpOiBBZGRlZC4KKwogMjAxNC0wMS0yOSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IEpTT05QIHJlcXVlc3RzIG1hZGUgYnkgdGhlIFdlYktpdCBCb3Qg
V2F0Y2hlcidzIERhc2hib2FyZCBmb2xsb3dpbmcgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzE2MzAzND4KZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90
LmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3QuanMKaW5kZXggNWM4NDk5ZGQ2NTU4
Yzg2Y2NhNjk0YzgwNjNkMTg5MjI4YTZkZDNiNC4uNTNhNzExM2RhZTk2MTBlMGEzYTA0YzIxYjY2
OTBhODdjMzVkMzQyMyAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3Qu
anMKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3QuanMKQEAgLTMyLDEwICszMiwx
NyBAQCBCdWlsZGJvdCA9IGZ1bmN0aW9uKGJhc2VVUkwsIHF1ZXVlc0luZm8sIG9wdGlvbnMpCiAK
ICAgICB0aGlzLmJhc2VVUkwgPSBiYXNlVVJMOwogICAgIHRoaXMucXVldWVzID0ge307CisKKyAg
ICAvLyBXZSByZWdhcmQgbmVlZHNBdXRoZW50aWNhdGlvbiBhcyBhIGhpbnQgd2hldGhlciB0aGlz
IEJ1aWxkYm90IHJlcXVpcmVzIGF1dGhlbnRpY2F0aW9uIHNvIHRoYXQgd2UgY2FuIHNob3cKKyAg
ICAvLyBhbiBhcHByb3ByaWF0ZSBpbml0aWFsIHN0YXR1cyBtZXNzYWdlIChzYXksIGFuICJ1bmF1
dGhvcml6ZWQiIHN0YXR1cyBpZiB0aGUgQnVpbGRib3QgcmVxdWlyZXMgYXV0aGVudGljYXRpb24p
CisgICAgLy8gZm9yIGl0cyBhc3NvY2lhdGVkIHF1ZXVlcyBiZWZvcmUgd2UgbWFrZSB0aGUgYWN0
dWFsIEhUVFAgcmVxdWVzdCBmb3IgdGhlIHN0YXR1cyBvZiBlYWNoIHF1ZXVlLgogICAgIHRoaXMu
bmVlZHNBdXRoZW50aWNhdGlvbiA9IHR5cGVvZiBvcHRpb25zID09PSAib2JqZWN0IiAmJiBvcHRp
b25zLm5lZWRzQXV0aGVudGljYXRpb24gPT09IHRydWU7CisgICAgdGhpcy5pc0F1dGhlbnRpY2F0
ZWQgPSAhdGhpcy5uZWVkc0F1dGhlbnRpY2F0aW9uOwogCiAgICAgZm9yICh2YXIgaWQgaW4gcXVl
dWVzSW5mbykKICAgICAgICAgdGhpcy5xdWV1ZXNbaWRdID0gbmV3IEJ1aWxkYm90UXVldWUodGhp
cywgaWQsIHF1ZXVlc0luZm9baWRdKTsKKworICAgIHRoaXMuYXV0aGVudGljYXRlQW5kVXBkYXRl
UXVldWVzKCk7CiB9OwogCiBCYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKEJ1aWxk
Ym90KTsKQEAgLTU3LDYgKzY0LDMyIEBAIEJ1aWxkYm90LnByb3RvdHlwZSA9IHsKICAgICBjb25z
dHJ1Y3RvcjogQnVpbGRib3QsCiAgICAgX19wcm90b19fOiBCYXNlT2JqZWN0LnByb3RvdHlwZSwK
IAorICAgIF91cGRhdGVRdWV1ZXM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZvciAodmFy
IGlkIGluIHRoaXMucXVldWVzKQorICAgICAgICAgICAgdGhpcy5xdWV1ZXNbaWRdLnVwZGF0ZSgp
OworICAgIH0sCisKKyAgICBhdXRoZW50aWNhdGVBbmRVcGRhdGVRdWV1ZXM6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIGlmICh0aGlzLmlzQXV0aGVudGljYXRlZCkgeworICAgICAgICAgICAg
dGhpcy5fdXBkYXRlUXVldWVzKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0
dHBSZXF1ZXN0OworICAgICAgICByZXF1ZXN0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSAhPT0gNCB8fCB0aGlzLnN0YXR1
cyAhPT0gMjAwKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHNlbGYuaXNB
dXRoZW50aWNhdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHNlbGYuX3VwZGF0ZVF1ZXVlcygpOwor
ICAgICAgICB9CisKKyAgICAgICAgcmVxdWVzdC5vcGVuKCJIRUFEIiwgdGhpcy5iYXNlVVJMKTsK
KyAgICAgICAgcmVxdWVzdC5zZW5kKCk7CisgICAgfSwKKwogICAgIGJ1aWxkUGFnZVVSTEZvckl0
ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
YmFzZVVSTCArICJidWlsZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1
ZS5pZCkgKyAiL2J1aWxkcy8iICsgaXRlcmF0aW9uLmlkOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL1NjcmlwdHMvQnVpbGRib3RCdWlsZGVyUXVldWVWaWV3LmpzIGIvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Nj
cmlwdHMvQnVpbGRib3RCdWlsZGVyUXVldWVWaWV3LmpzCmluZGV4IGY2MDljYjY5MjQ0NzUxOTBl
NzYzZDM1YTJmZDIxZTNkMjE1YmE1OGMuLjVmZDRiNDdmOWEwYTNlNDIzOWY4MmIwMTI3Mjc4NDQ4
MjA2NDFlNzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90QnVpbGRl
clF1ZXVlVmlldy5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEJ1aWxkZXJR
dWV1ZVZpZXcuanMKQEAgLTYwLDYgKzYwLDExIEBAIEJ1aWxkYm90QnVpbGRlclF1ZXVlVmlldy5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgZnVuY3Rpb24gYXBwZW5kQnVpbGRlclF1ZXVlU3RhdHVz
KHF1ZXVlKQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXF1ZXVlLmJ1aWxkYm90LmlzQXV0
aGVudGljYXRlZCkgeworICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVuZFVuYXV0aG9yaXplZExp
bmVWaWV3KHF1ZXVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIHRoaXMuX2FwcGVuZFBlbmRpbmdSZXZpc2lvbkNvdW50KHF1ZXVlKTsKIAog
ICAgICAgICAgICAgdmFyIGZpcnN0UmVjZW50VW5zdWNjZXNzZnVsSXRlcmF0aW9uID0gcXVldWUu
Zmlyc3RSZWNlbnRVbnN1Y2Nlc3NmdWxJdGVyYXRpb247CmRpZmYgLS1naXQgYS9Ub29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRi
b3RRdWV1ZS5qcwppbmRleCBmYzNhNjMxYzY3YzFhZjZmNGE4MzM2NWUyODk1Zjc5ZjAwNGJiZTk1
Li4xMmE2M2UzYjU1MzQ0NzA0NDFkNTEyOGIxZjAxMjUzNzgwNWJkNzExIDEwMDY0NAotLS0gYS9U
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlLmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9T
Y3JpcHRzL0J1aWxkYm90UXVldWUuanMKQEAgLTQzLDggKzQzLDYgQEAgQnVpbGRib3RRdWV1ZSA9
IGZ1bmN0aW9uKGJ1aWxkYm90LCBpZCwgaW5mbykKIAogICAgIHRoaXMuaXRlcmF0aW9ucyA9IFtd
OwogICAgIHRoaXMuX2tub3duSXRlcmF0aW9ucyA9IHt9OwotCi0gICAgdGhpcy51cGRhdGUoKTsK
IH07CiAKIEJhc2VPYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoQnVpbGRib3RRdWV1ZSk7
CkBAIC0xMTksNiArMTE3LDkgQEAgQnVpbGRib3RRdWV1ZS5wcm90b3R5cGUgPSB7CiAKICAgICB1
cGRhdGU6IGZ1bmN0aW9uKGl0ZXJhdGlvbnNUb0xvYWQpCiAgICAgeworICAgICAgICBpZiAoIXRo
aXMuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVkKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAg
ICAgIEpTT04ubG9hZCh0aGlzLmJhc2VVUkwsIGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAgICAg
IGlmICghKGRhdGEuY2FjaGVkQnVpbGRzIGluc3RhbmNlb2YgQXJyYXkpKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTE1NCw2ICsxNTUsMTQgQEAgQnVpbGRib3RRdWV1ZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB0aGlzLnNvcnRJdGVyYXRpb25zKCk7CiAKICAgICAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKEJ1aWxkYm90UXVldWUuRXZlbnQuSXRlcmF0aW9u
c0FkZGVkLCB7YWRkZWRJdGVyYXRpb25zOiBuZXdJdGVyYXRpb25zfSk7CisgICAgICAgIH0uYmlu
ZCh0aGlzKSwKKyAgICAgICAgZnVuY3Rpb24oZGF0YSkgeworICAgICAgICAgICAgaWYgKGRhdGEu
ZXJyb3JUeXBlID09PSBKU09OLkxvYWRFcnJvciAmJiBkYXRhLmVycm9ySFRUUENvZGUgPT0gNDAx
KQorICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVkID0gZmFsc2U7
CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgZGVmaW5pbmcgYW4g
ZXZlbnQsIHNheSBVbmF1dGhvcml6ZWRBY2Nlc3MsIHRvIG5vdGlmeSBsaXN0ZW5lcnMgdG8gdXBk
YXRlCisgICAgICAgICAgICAvLyB0aGVpciBzdGF0ZSB3aGVuIGFuIGF1dGhvcml6YXRpb24gZXJy
b3Igb2NjdXJzIGluc3RlYWQgb2YgcmVwdXJwb3NpbmcgdGhlIGV2ZW50IEl0ZXJhdGlvbnNBZGRl
ZC4KKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKEJ1aWxkYm90UXVl
dWUuRXZlbnQuSXRlcmF0aW9uc0FkZGVkLCB7YWRkZWRJdGVyYXRpb25zOiBbXX0pOwogICAgICAg
ICB9LmJpbmQodGhpcyksIHt3aXRoQ3JlZGVudGlhbHM6IHRoaXMuYnVpbGRib3QubmVlZHNBdXRo
ZW50aWNhdGlvbn0pOwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRz
L0J1aWxkYm90UXVldWVWaWV3LmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RRdWV1
ZVZpZXcuanMKaW5kZXggMzJiYzllMjdiMGNkMGZlNzExNjZhZGFlYzRjZGZiMDg0MTUzN2MzYy4u
NDNlZGVlNzRiZjYxODU4OWUxNzRmYWU2YmQ2N2U4OGE0YTljOTM5YiAxMDA2NDQKLS0tIGEvVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RRdWV1ZVZpZXcuanMKKysrIGIvVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L1NjcmlwdHMvQnVpbGRib3RRdWV1ZVZpZXcuanMKQEAgLTY5LDYgKzY5LDEzIEBAIEJ1aWxkYm90
UXVldWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHF1ZXVlLml0ZXJhdGlvbnNb
MF0ucHJldmlvdXNQcm9kdWN0aXZlSXRlcmF0aW9uOwogICAgIH0sCiAKKyAgICBfYXBwZW5kVW5h
dXRob3JpemVkTGluZVZpZXc6IGZ1bmN0aW9uKHF1ZXVlKQorICAgIHsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQoIXF1ZXVlLmJ1aWxkYm90LmlzQXV0aGVudGljYXRlZCk7CisgICAgICAgIHZhciBz
dGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcoInVuYXV0aG9yaXplZCIsIFN0YXR1c0xpbmVWaWV3
LlN0YXR1cy5VbmF1dGhvcml6ZWQsICIiLCBudWxsLCBxdWV1ZS5idWlsZGJvdC5hdXRoZW50aWNh
dGVBbmRVcGRhdGVRdWV1ZXMuYmluZChxdWV1ZS5idWlsZGJvdCkpOworICAgICAgICB0aGlzLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzLmVsZW1lbnQpOworICAgIH0sCisKICAgICBfYXBwZW5k
UGVuZGluZ1JldmlzaW9uQ291bnQ6IGZ1bmN0aW9uKHF1ZXVlKQogICAgIHsKICAgICAgICAgdmFy
IGxhdGVzdFByb2R1Y3RpdmVJdGVyYXRpb24gPSB0aGlzLl9sYXRlc3RQcm9kdWN0aXZlSXRlcmF0
aW9uKHF1ZXVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVz
dGVyUXVldWVWaWV3LmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1
ZVZpZXcuanMKaW5kZXggZDYyYzg1YmFlOWYzMGVlYmNjZTc2Y2UyN2JhZGQ2ZWIwMDg2ZGFhYS4u
NWE1NmJmYWQzOTZmMTE5MTUxNGNiNjZmNTYyNGRhMTViZjEzYWRlOSAxMDA2NDQKLS0tIGEvVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanMKKysrIGIvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanMKQEAgLTQ0LDYgKzQ0LDEx
IEBAIEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBmdW5j
dGlvbiBhcHBlbmRCdWlsZGVyUXVldWVTdGF0dXMocXVldWUpCiAgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICghcXVldWUuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVkKSB7CisgICAgICAgICAgICAg
ICAgdGhpcy5fYXBwZW5kVW5hdXRob3JpemVkTGluZVZpZXcocXVldWUpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgdGhpcy5fYXBwZW5kUGVu
ZGluZ1JldmlzaW9uQ291bnQocXVldWUpOwogCiAgICAgICAgICAgICB2YXIgYXBwZW5kZWRTdGF0
dXMgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL1N0YXR1c0xpbmVW
aWV3LmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvU3RhdHVzTGluZVZpZXcuanMKaW5kZXggNjBi
NmM3YWJjNGU1ZjI2Nzk0OWU1YjFhNDEzYjdmZTg4YmIwNzQ3MS4uODFkMGU0ZTI5ODk4NDNjYzU4
ODllOGViN2JjNjU4Mjk4NTYwZTI1YiAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMv
U3RhdHVzTGluZVZpZXcuanMKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvU3RhdHVzTGluZVZp
ZXcuanMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1TdGF0dXNMaW5lVmlldyA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHN0YXR1cywgbGFi
ZWwsIHJlcGVhdENvdW50LCB1cmwpCitTdGF0dXNMaW5lVmlldyA9IGZ1bmN0aW9uKG1lc3NhZ2Us
IHN0YXR1cywgbGFiZWwsIHJlcGVhdENvdW50LCB1cmxPckZ1bmN0aW9uKQogewogICAgIEJhc2VP
YmplY3QuY2FsbCh0aGlzKTsKIApAQCAtMzMsMTIgKzMzLDE5IEBAIFN0YXR1c0xpbmVWaWV3ID0g
ZnVuY3Rpb24obWVzc2FnZSwgc3RhdHVzLCBsYWJlbCwgcmVwZWF0Q291bnQsIHVybCkKICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdHVzLWxpbmUiKTsKICAgICB0aGlzLmVsZW1l
bnQuX19zdGF0dXNMaW5lVmlldyA9IHRoaXM7CiAKLSAgICBpZiAodXJsKSB7CisgICAgdmFyIGlz
RnVuY3Rpb25DYWxsYmFjayA9IHR5cGVvZiB1cmxPckZ1bmN0aW9uID09PSAiZnVuY3Rpb24iOwor
ICAgIGlmICghdXJsT3JGdW5jdGlvbiB8fCBpc0Z1bmN0aW9uQ2FsbGJhY2spIHsKKyAgICAgICAg
dGhpcy5fc3RhdHVzQnViYmxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworICAgICAgICBpZiAoaXNGdW5jdGlvbkNhbGxiYWNrKSB7CisgICAgICAgICAgICB0aGlzLl9z
dGF0dXNCdWJibGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdXJsT3JGdW5jdGlv
biwgZmFsc2UpOworICAgICAgICAgICAgdGhpcy5fc3RhdHVzQnViYmxlRWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJjYW4tYmUtY2xpY2tlZCIpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKICAgICAg
ICAgdGhpcy5fc3RhdHVzQnViYmxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEi
KTsKLSAgICAgICAgdGhpcy5fc3RhdHVzQnViYmxlRWxlbWVudC5ocmVmID0gdXJsOworICAgICAg
ICB0aGlzLl9zdGF0dXNCdWJibGVFbGVtZW50LmhyZWYgPSB1cmxPckZ1bmN0aW9uOwogICAgICAg
ICB0aGlzLl9zdGF0dXNCdWJibGVFbGVtZW50LnRhcmdldCA9ICJfYmxhbmsiOwotICAgIH0gZWxz
ZQotICAgICAgICB0aGlzLl9zdGF0dXNCdWJibGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgfQorCiAgICAgdGhpcy5fc3RhdHVzQnViYmxlRWxlbWVudC5jbGFz
c0xpc3QuYWRkKCJidWJibGUiKTsKICAgICBpZiAoc3RhdHVzICE9IFN0YXR1c0xpbmVWaWV3LlN0
YXR1cy5Ob0J1YmJsZSkKICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3N0
YXR1c0J1YmJsZUVsZW1lbnQpOwpAQCAtNTQsNyArNjEsMTMgQEAgU3RhdHVzTGluZVZpZXcgPSBm
dW5jdGlvbihtZXNzYWdlLCBzdGF0dXMsIGxhYmVsLCByZXBlYXRDb3VudCwgdXJsKQogICAgIHRo
aXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgIiI7CiAgICAgdGhpcy5sYWJlbCA9IGxhYmVsIHx8ICIi
OwogICAgIHRoaXMucmVwZWF0Q291bnQgPSByZXBlYXRDb3VudCB8fCAwOwotICAgIHRoaXMudXJs
ID0gdXJsIHx8IG51bGw7CisgICAgaWYgKGlzRnVuY3Rpb25DYWxsYmFjaykgeworICAgICAgICB0
aGlzLnVybCA9IG51bGw7CisgICAgICAgIHRoaXMuY2FsbGJhY2sgPSB1cmxPckZ1bmN0aW9uOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHRoaXMudXJsID0gdXJsT3JGdW5jdGlvbjsKKyAgICAgICAg
dGhpcy5jYWxsYmFjayA9IG51bGw7CisgICAgfQogfTsKIAogU3RhdHVzTGluZVZpZXcuU3RhdHVz
ID0gewpAQCAtNjIsNyArNzUsOCBAQCBTdGF0dXNMaW5lVmlldy5TdGF0dXMgPSB7CiAgICAgTmV1
dHJhbDogIm5ldXRyYWwiLAogICAgIEdvb2Q6ICJnb29kIiwKICAgICBEYW5nZXI6ICJkYW5nZXIi
LAotICAgIEJhZDogImJhZCIKKyAgICBCYWQ6ICJiYWQiLAorICAgIFVuYXV0aG9yaXplZDogInVu
YXV0aG9yaXplZCIKIH07CiAKIEJhc2VPYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoU3Rh
dHVzTGluZVZpZXcpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1N0eWxlcy9TdGF0dXNMaW5l
Vmlldy5jc3MgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU3R5bGVzL1N0YXR1c0xpbmVWaWV3LmNzcwppbmRleCA4
NmNiNTk3ZDc5MGZiZTE0YmMyMDY3ZGJiZmUyMGZkYWRiZTA2MDcxLi41ZjZiODVkOTI4YTc2N2M2
MTViMjNhYzYzNjcwZGVjODU3MmFkZDM5IDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU3R5bGVz
L1N0YXR1c0xpbmVWaWV3LmNzcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU3R5bGVzL1N0YXR1c0xpbmVW
aWV3LmNzcwpAQCAtNDYsNiArNDYsMTAgQEAKICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiB9
CiAKKy5zdGF0dXMtbGluZSAuYnViYmxlLmNhbi1iZS1jbGlja2VkIHsKKyAgY3Vyc29yOiBwb2lu
dGVyOworfQorCiAuc3RhdHVzLWxpbmUubmV1dHJhbCAuYnViYmxlIHsKICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiByZ2IoMTgxLCAxNzQsIDE0OCk7CiB9CkBAIC01NCw2ICs1OCwxMCBAQAogICAgIGJh
Y2tncm91bmQtY29sb3I6IHJnYig3NiwgMTUxLCA2MSk7CiB9CiAKKy5zdGF0dXMtbGluZS51bmF1
dGhvcml6ZWQgLmJ1YmJsZSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE3MSwgNjEsIDE3
MSk7Cit9CisKIC5zdGF0dXMtbGluZSAuYnViYmxlLnBpY3RvZ3JhbSB7CiAgICAgcGFkZGluZzog
MDsKICAgICBtYXgtd2lkdGg6IDI0cHg7CkBAIC02Myw2ICs3MSwxMCBAQAogICAgIGJhY2tncm91
bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PGcgdHJhbnNmb3JtPSJ0cmFu
c2xhdGUoMjAgMzApIHJvdGF0ZSgtNDUgMzAgMTcpIiBzaGFwZS1yZW5kZXJpbmc9ImNyaXNwRWRn
ZXMiIGZpbGw9IndoaXRlIj48cmVjdCB5PSI1IiB3aWR0aD0iMTAiIGhlaWdodD0iMjUiLz48cmVj
dCB5PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjEwIi8+PC9nPjwvc3ZnPicpOwogfQogCisuc3Rh
dHVzLWxpbmUudW5hdXRob3JpemVkIC5idWJibGUucGljdG9ncmFtIHsKKyAgICBiYWNrZ3JvdW5k
LWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAxMDAiPjxjbGlwUGF0aCBpZD0idG9wLXNl
bWljaXJjbGUiPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMzciLz48L2Ns
aXBQYXRoPjxjaXJjbGUgY3g9IjUwIiBjeT0iMzMiIHI9IjEzIiBjbGlwLXBhdGg9InVybCgjdG9w
LXNlbWljaXJjbGUpIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEwIiBmaWxsPSJub25l
IiAvPjxyZWN0IHg9IjI0IiB5PSIzOCIgd2lkdGg9IjUyIiBoZWlnaHQ9IjM5IiBmaWxsPSJ3aGl0
ZSIvPjwvc3ZnPicpOworfQorCiAuc3RhdHVzLWxpbmUuZGFuZ2VyIC5idWJibGUgewogICAgIGJh
Y2tncm91bmQtY29sb3I6IHJnYigyMzAsIDE3NSwgNDQpOwogfQpAQCAtMTM2LDYgKzE0OCwxMSBA
QAogICAgIGNvbG9yOiByZ2IoMTkxLCA2NywgNDEpOwogfQogCisuc3RhdHVzLWxpbmUudW5hdXRo
b3JpemVkIC5sYWJlbCwKKy5zdGF0dXMtbGluZS51bmF1dGhvcml6ZWQgLm1lc3NhZ2UgeworICAg
IGNvbG9yOiByZ2IoMTcxLCA2MSwgMTcxKTsKK30KKwogLnN0YXR1cy1saW5lIC5idWJibGUucG9w
b3Zlci10cmFja2luZzpob3ZlciB7CiAgICAgdGV4dC1zaGFkb3c6IDBweCAwcHggNXB4IHJnYmEo
MjU1LCAyNTUsIDI1NSwgMC43KQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222721</attachid>
            <date>2014-01-30 13:15:37 -0800</date>
            <delta_ts>2014-01-31 14:26:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127849-20140130131536.patch</filename>
            <type>text/plain</type>
            <size>16152</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMDM5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTJlZWQ3ZjliNmRjZjg2ZjkwMTRlNzVkNzU0MDEwZDcw
YzZlMjA4YS4uYjY3NTI1ODA1NTc2ODM1MzRlOWFiY2YwNzgxMDlkZWM3YjZjMmIwMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1
IEBACisyMDE0LTAxLTMwICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWJLaXQgQm90IFdhdGNoZXIncyBEYXNoYm9hcmQ6IEJ1aWxkYm90IHNob3VsZCBvbmx5
IHByb21wdCBmb3IgSFRUUCBjcmVkZW50aWFscyBvbmNlIHBlciBwYWdlIGxvYWQKKyAgICAgICAg
KGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4NDkpCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IHdoZW5l
dmVyIHRoZSBkYXNoYm9hcmQgdXBkYXRlcyB0aGUgc3RhdHVzIG9mIGEgcXVldWUgd2hvc2UgQnVp
bGRib3QgcmVxdWlyZXMgYXV0aGVudGljYXRpb24KKyAgICAgICAgaXQgd2lsbCBjYXVzZSBhIGJy
b3dzZXIgdG8gcHJvbXB0IGZvciBjcmVkZW50aWFscyBvbmNlIHBlciB1cGRhdGUgdW50aWwgdmFs
aWQgY3JlZGVudGlhbHMgYXJlIHByb3ZpZGVkLgorICAgICAgICBJbnN0ZWFkIHdlIHNob3VsZCBr
ZWVwIHRyYWNrIG9mIEJ1aWxkYm90cyB0aGF0IHJlc3BvbmQgd2l0aCBhbiBIVFRQIDQwMSBVbmF1
dGhvcml6ZWQgc3RhdHVzIGNvZGUgdG8gYXZvaWQKKyAgICAgICAgc3Vic2VxdWVudGx5IHF1ZXJ5
aW5nIHRoZW0gYW5kIGhlbmNlIGNhdXNlIGEgYnJvd3NlciB0byBwcm9tcHQgZm9yIGNyZWRlbnRp
YWxzLiBUb2dldGhlciB3aXRoIGFuIG9wdGlvbmFsCisgICAgICAgIGhpbnQgcHJvdmlkZWQgd2hl
biBpbnN0YW50aWF0aW5nIGEgQnVpbGRib3Qgb2JqZWN0IGFzIHRvIHdoZXRoZXIgaXQgcmVxdWly
ZXMgYXV0aGVudGljYXRpb24sIHdlIGNhbiBtYWtlCisgICAgICAgIHRoZSBkYXNoYm9hcmQgcHJv
bXB0IGZvciBIVFRQIGNyZWRlbnRpYWxzIGV4YWN0bHkgb25jZSBwZXIgcGFnZSBsb2FkIGZvciBl
YWNoIEJ1aWxkYm90IHRoYXQgcmVxdWlyZXMgYXV0aGVudGljYXRpb24uCisKKyAgICAgICAgUXVl
dWVzIHdob3NlIEJ1aWxkYm90IHdhc24ndCBhdXRoZW50aWNhdGVkIHdpbGwgc2hvdyBpbiB0aGUg
ZGFzaGJvYXJkIGFzICJ1bmF1dGhvcml6ZWQiLiBDbGlja2luZyBvbgorICAgICAgICB0aGlzIHN0
YXR1cyBtZXNzYWdlIHdpbGwgY2F1c2UgdGhlIGJyb3dzZXIgdG8gcHJvbXB0IGZvciBjcmVkZW50
aWFscy4KKworICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90LmpzOgorICAgICAgICAo
QnVpbGRib3QpOiBJbml0aWFsaXplIGluc3RhbmNlIHZhcmlhYmxlIGlzQXV0aGVudGljYXRlZCBk
ZXBlbmRpbmcgb24gd2hldGhlciBCdWlsZGJvdCBoaW50ZWQgdGhhdCBpdAorICAgICAgICBuZWVk
cyBhdXRoZW50aWNhdGlvbi4KKyAgICAgICAgKEJ1aWxkYm90LnByb3RvdHlwZS5fdXBkYXRlUXVl
dWVzKTogQWRkZWQuCisgICAgICAgIChCdWlsZGJvdC5wcm90b3R5cGUuYXV0aGVudGljYXRlQW5k
VXBkYXRlUXVldWVzKTogQWRkZWQuIFBlcmZvcm1zIGEgSFRUUCBIRUFEIHJlcXVlc3QgZm9yIHRo
ZSBCdWlsZGJvdCBVUkwKKyAgICAgICAgYXMgYSB3YXkgdG8gaGF2ZSB0aGUgYnJvd3NlciBwcm9t
cHQgZm9yIGNyZWRlbnRpYWxzLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90QnVp
bGRlclF1ZXVlVmlldy5qczoKKyAgICAgICAgKEJ1aWxkYm90QnVpbGRlclF1ZXVlVmlldy5wcm90
b3R5cGUudXBkYXRlLmFwcGVuZEJ1aWxkZXJRdWV1ZVN0YXR1cyk6IE1vZGlmaWVkIHRvIGNhbGwK
KyAgICAgICAgQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlLl9hcHBlbmRVbmF1dGhvcml6ZWRM
aW5lVmlldygpIGlmIGEgcGVyc29uIGhhcyBub3QgYXV0aGVudGljYXRlZCB3aXRoIHRoZQorICAg
ICAgICBCdWlsZGJvdCBhc3NvY2lhdGVkIHdpdGggdGhlIHF1ZXVlLgorICAgICAgICAqIEJ1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL0J1aWxkYm90UXVldWUuanM6CisgICAgICAgIChCdWlsZGJvdFF1ZXVlKTogRG8g
bm90IHVwZGF0ZSB0aGUgc3RhdGUgb2YgdGhlIHF1ZXVlIG9uIGNvbnN0cnVjdGlvbiB0byBhdm9p
ZCBwcm9tcHRpbmcgZm9yIGNyZWRlbnRpYWxzIG9uIHBhZ2UgbG9hZAorICAgICAgICBpZiB0aGUg
YXNzb2NpYXRlZCBCdWlsZGJvdCByZXF1aXJlcyBhdXRoZW50aWNhdGlvbi4gSW5zdGVhZCBsZXQg
dGhlIGNhbGxlciAoZS5nLiBCdWlsZEJvdCgpKSBleHBsaWNpdGx5IHRlbGwgdGhlCisgICAgICAg
IHF1ZXVlIHRvIHVwZGF0ZS4KKyAgICAgICAgKEJ1aWxkYm90UXVldWUucHJvdG90eXBlLnVwZGF0
ZSk6IFJldHVybiBpbW1lZGlhdGVseSBpZiB0aGUgYXNzb2NpYXRlZCBCdWlsZGJvdCByZXF1aXJl
cyBhdXRoZW50aWNhdGlvbi4KKyAgICAgICAgQWRkaXRpb25hbGx5LCBpZiB0aGUgSlNPTiBsb2Fk
IGZhaWxzIHdpdGggYW4gSFRUUCA0MDEgVW5hdXRob3JpemVkIGFjY2VzcyBlcnJvciAoc2F5LCBj
cmVkZW50aWFscyB3ZXJlCisgICAgICAgIGludmFsaWRhdGVkKSB0aGVuIHNldCB0aGUgYXNzb2Np
YXRlZCBCdWlsZGJvdCdzIGlzQXV0aGVudGljYXRlZCBmbGFnIHRvIGZhbHNlIHRvIGF2b2lkIHN1
YnNlcXVlbnRseQorICAgICAgICBwcm9tcHRpbmcgYSBwZXJzb24gZm9yIGNyZWRlbnRpYWxzIHRo
ZSBuZXh0IHRpbWUgdGhlIHF1ZXVlIHVwZGF0ZSB0aW1lciBmaXJlcy4KKyAgICAgICAgKiBCdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlVmlldy5qczoKKyAgICAgICAgKEJ1aWxkYm90UXVldWVW
aWV3LnByb3RvdHlwZS5fYXBwZW5kVW5hdXRob3JpemVkTGluZVZpZXcpOiBBZGRlZC4KKyAgICAg
ICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5qczoKKyAgICAgICAg
KEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZS51cGRhdGUuYXBwZW5kQnVpbGRlclF1
ZXVlU3RhdHVzKTogTW9kaWZpZWQgdG8gY2FsbAorICAgICAgICBCdWlsZGJvdFF1ZXVlVmlldy5w
cm90b3R5cGUuX2FwcGVuZFVuYXV0aG9yaXplZExpbmVWaWV3KCkgaWYgYSBwZXJzb24gaGFzIG5v
dCBhdXRoZW50aWNhdGVkIHdpdGggdGhlCisgICAgICAgIEJ1aWxkYm90IGFzc29jaWF0ZWQgd2l0
aCB0aGUgcXVldWUuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvU3RhdHVzTGluZVZpZXcuanM6
CisgICAgICAgIChTdGF0dXNMaW5lVmlldyk6IE1vZGlmaWVkIHRvIHRha2UgZWl0aGVyIGEgVVJM
IG9yIGEgRnVuY3Rpb24gb2JqZWN0IHRvIGNhdXNlIGVpdGhlciBhIHBhZ2UKKyAgICAgICAgbmF2
aWdhdGlvbiBvciBiZSBpbnZva2VkIHdoZW4gYSBwZXJzb24gY2xpY2tzIHRoZSBzdGF0dXMgbGlu
ZSwgcmVzcGVjdGl2ZWx5LgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TdHlsZXMvU3RhdHVzTGluZVZpZXcu
Y3NzOgorICAgICAgICAoLnN0YXR1cy1saW5lIC5idWJibGUuY2FuLWJlLWNsaWNrZWQpOiBBZGRl
ZC4gV2UgYXBwbHkgdGhpcyBzdHlsZSB3aGVuIGEgU3RhdHVzTGluZVZpZXcgaXMKKyAgICAgICAg
Y3JlYXRlZCB3aXRoIGEgRnVuY3Rpb24gb2JqZWN0IHNvIHRoYXQgd2UgdXNlIHRoZSBwb2ludGVy
IGN1cnNvciAoYXMgc2hvd24gZm9yIGh5cGVybGlua3MpCisgICAgICAgIHRvIGFkdmVydGlzZSB0
aGF0IGEgc3RhdHVzIGxpbmUgY2FuIGJlIGNsaWNrZWQgd2hlbiB0aGUgY3Vyc29yIGlzIGhvdmVy
aW5nIG92ZXIgaXQuCisgICAgICAgICguc3RhdHVzLWxpbmUudW5hdXRob3JpemVkIC5idWJibGUp
OiBBZGRlZC4KKyAgICAgICAgKC5zdGF0dXMtbGluZS51bmF1dGhvcml6ZWQgLmJ1YmJsZS5waWN0
b2dyYW0pOiBBZGRlZC4KKyAgICAgICAgKC5zdGF0dXMtbGluZS51bmF1dGhvcml6ZWQgLm1lc3Nh
Z2UpOiBBZGRlZC4KKwogMjAxNC0wMS0yOSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IEpTT05QIHJlcXVlc3RzIG1hZGUgYnkgdGhlIFdlYktpdCBCb3Qg
V2F0Y2hlcidzIERhc2hib2FyZCBmb2xsb3dpbmcgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzE2MzAzND4KZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90
LmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3QuanMKaW5kZXggNWM4NDk5ZGQ2NTU4
Yzg2Y2NhNjk0YzgwNjNkMTg5MjI4YTZkZDNiNC4uNTNhNzExM2RhZTk2MTBlMGEzYTA0YzIxYjY2
OTBhODdjMzVkMzQyMyAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3Qu
anMKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3QuanMKQEAgLTMyLDEwICszMiwx
NyBAQCBCdWlsZGJvdCA9IGZ1bmN0aW9uKGJhc2VVUkwsIHF1ZXVlc0luZm8sIG9wdGlvbnMpCiAK
ICAgICB0aGlzLmJhc2VVUkwgPSBiYXNlVVJMOwogICAgIHRoaXMucXVldWVzID0ge307CisKKyAg
ICAvLyBXZSByZWdhcmQgbmVlZHNBdXRoZW50aWNhdGlvbiBhcyBhIGhpbnQgd2hldGhlciB0aGlz
IEJ1aWxkYm90IHJlcXVpcmVzIGF1dGhlbnRpY2F0aW9uIHNvIHRoYXQgd2UgY2FuIHNob3cKKyAg
ICAvLyBhbiBhcHByb3ByaWF0ZSBpbml0aWFsIHN0YXR1cyBtZXNzYWdlIChzYXksIGFuICJ1bmF1
dGhvcml6ZWQiIHN0YXR1cyBpZiB0aGUgQnVpbGRib3QgcmVxdWlyZXMgYXV0aGVudGljYXRpb24p
CisgICAgLy8gZm9yIGl0cyBhc3NvY2lhdGVkIHF1ZXVlcyBiZWZvcmUgd2UgbWFrZSB0aGUgYWN0
dWFsIEhUVFAgcmVxdWVzdCBmb3IgdGhlIHN0YXR1cyBvZiBlYWNoIHF1ZXVlLgogICAgIHRoaXMu
bmVlZHNBdXRoZW50aWNhdGlvbiA9IHR5cGVvZiBvcHRpb25zID09PSAib2JqZWN0IiAmJiBvcHRp
b25zLm5lZWRzQXV0aGVudGljYXRpb24gPT09IHRydWU7CisgICAgdGhpcy5pc0F1dGhlbnRpY2F0
ZWQgPSAhdGhpcy5uZWVkc0F1dGhlbnRpY2F0aW9uOwogCiAgICAgZm9yICh2YXIgaWQgaW4gcXVl
dWVzSW5mbykKICAgICAgICAgdGhpcy5xdWV1ZXNbaWRdID0gbmV3IEJ1aWxkYm90UXVldWUodGhp
cywgaWQsIHF1ZXVlc0luZm9baWRdKTsKKworICAgIHRoaXMuYXV0aGVudGljYXRlQW5kVXBkYXRl
UXVldWVzKCk7CiB9OwogCiBCYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKEJ1aWxk
Ym90KTsKQEAgLTU3LDYgKzY0LDMyIEBAIEJ1aWxkYm90LnByb3RvdHlwZSA9IHsKICAgICBjb25z
dHJ1Y3RvcjogQnVpbGRib3QsCiAgICAgX19wcm90b19fOiBCYXNlT2JqZWN0LnByb3RvdHlwZSwK
IAorICAgIF91cGRhdGVRdWV1ZXM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZvciAodmFy
IGlkIGluIHRoaXMucXVldWVzKQorICAgICAgICAgICAgdGhpcy5xdWV1ZXNbaWRdLnVwZGF0ZSgp
OworICAgIH0sCisKKyAgICBhdXRoZW50aWNhdGVBbmRVcGRhdGVRdWV1ZXM6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIGlmICh0aGlzLmlzQXV0aGVudGljYXRlZCkgeworICAgICAgICAgICAg
dGhpcy5fdXBkYXRlUXVldWVzKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0
dHBSZXF1ZXN0OworICAgICAgICByZXF1ZXN0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSAhPT0gNCB8fCB0aGlzLnN0YXR1
cyAhPT0gMjAwKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHNlbGYuaXNB
dXRoZW50aWNhdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHNlbGYuX3VwZGF0ZVF1ZXVlcygpOwor
ICAgICAgICB9CisKKyAgICAgICAgcmVxdWVzdC5vcGVuKCJIRUFEIiwgdGhpcy5iYXNlVVJMKTsK
KyAgICAgICAgcmVxdWVzdC5zZW5kKCk7CisgICAgfSwKKwogICAgIGJ1aWxkUGFnZVVSTEZvckl0
ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
YmFzZVVSTCArICJidWlsZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1
ZS5pZCkgKyAiL2J1aWxkcy8iICsgaXRlcmF0aW9uLmlkOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL1NjcmlwdHMvQnVpbGRib3RCdWlsZGVyUXVldWVWaWV3LmpzIGIvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Nj
cmlwdHMvQnVpbGRib3RCdWlsZGVyUXVldWVWaWV3LmpzCmluZGV4IGY2MDljYjY5MjQ0NzUxOTBl
NzYzZDM1YTJmZDIxZTNkMjE1YmE1OGMuLjVmZDRiNDdmOWEwYTNlNDIzOWY4MmIwMTI3Mjc4NDQ4
MjA2NDFlNzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90QnVpbGRl
clF1ZXVlVmlldy5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEJ1aWxkZXJR
dWV1ZVZpZXcuanMKQEAgLTYwLDYgKzYwLDExIEBAIEJ1aWxkYm90QnVpbGRlclF1ZXVlVmlldy5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgZnVuY3Rpb24gYXBwZW5kQnVpbGRlclF1ZXVlU3RhdHVz
KHF1ZXVlKQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXF1ZXVlLmJ1aWxkYm90LmlzQXV0
aGVudGljYXRlZCkgeworICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVuZFVuYXV0aG9yaXplZExp
bmVWaWV3KHF1ZXVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIHRoaXMuX2FwcGVuZFBlbmRpbmdSZXZpc2lvbkNvdW50KHF1ZXVlKTsKIAog
ICAgICAgICAgICAgdmFyIGZpcnN0UmVjZW50VW5zdWNjZXNzZnVsSXRlcmF0aW9uID0gcXVldWUu
Zmlyc3RSZWNlbnRVbnN1Y2Nlc3NmdWxJdGVyYXRpb247CmRpZmYgLS1naXQgYS9Ub29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRi
b3RRdWV1ZS5qcwppbmRleCBmYzNhNjMxYzY3YzFhZjZmNGE4MzM2NWUyODk1Zjc5ZjAwNGJiZTk1
Li4xMmE2M2UzYjU1MzQ0NzA0NDFkNTEyOGIxZjAxMjUzNzgwNWJkNzExIDEwMDY0NAotLS0gYS9U
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlLmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9T
Y3JpcHRzL0J1aWxkYm90UXVldWUuanMKQEAgLTQzLDggKzQzLDYgQEAgQnVpbGRib3RRdWV1ZSA9
IGZ1bmN0aW9uKGJ1aWxkYm90LCBpZCwgaW5mbykKIAogICAgIHRoaXMuaXRlcmF0aW9ucyA9IFtd
OwogICAgIHRoaXMuX2tub3duSXRlcmF0aW9ucyA9IHt9OwotCi0gICAgdGhpcy51cGRhdGUoKTsK
IH07CiAKIEJhc2VPYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoQnVpbGRib3RRdWV1ZSk7
CkBAIC0xMTksNiArMTE3LDkgQEAgQnVpbGRib3RRdWV1ZS5wcm90b3R5cGUgPSB7CiAKICAgICB1
cGRhdGU6IGZ1bmN0aW9uKGl0ZXJhdGlvbnNUb0xvYWQpCiAgICAgeworICAgICAgICBpZiAoIXRo
aXMuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVkKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAg
ICAgIEpTT04ubG9hZCh0aGlzLmJhc2VVUkwsIGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAgICAg
IGlmICghKGRhdGEuY2FjaGVkQnVpbGRzIGluc3RhbmNlb2YgQXJyYXkpKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTE1NCw2ICsxNTUsMTQgQEAgQnVpbGRib3RRdWV1ZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB0aGlzLnNvcnRJdGVyYXRpb25zKCk7CiAKICAgICAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKEJ1aWxkYm90UXVldWUuRXZlbnQuSXRlcmF0aW9u
c0FkZGVkLCB7YWRkZWRJdGVyYXRpb25zOiBuZXdJdGVyYXRpb25zfSk7CisgICAgICAgIH0uYmlu
ZCh0aGlzKSwKKyAgICAgICAgZnVuY3Rpb24oZGF0YSkgeworICAgICAgICAgICAgaWYgKGRhdGEu
ZXJyb3JUeXBlID09PSBKU09OLkxvYWRFcnJvciAmJiBkYXRhLmVycm9ySFRUUENvZGUgPT0gNDAx
KQorICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVkID0gZmFsc2U7
CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgZGVmaW5pbmcgYW4g
ZXZlbnQsIHNheSBVbmF1dGhvcml6ZWRBY2Nlc3MsIHRvIG5vdGlmeSBsaXN0ZW5lcnMgdG8gdXBk
YXRlCisgICAgICAgICAgICAvLyB0aGVpciBzdGF0ZSB3aGVuIGFuIGF1dGhvcml6YXRpb24gZXJy
b3Igb2NjdXJzIGluc3RlYWQgb2YgcmVwdXJwb3NpbmcgdGhlIGV2ZW50IEl0ZXJhdGlvbnNBZGRl
ZC4KKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKEJ1aWxkYm90UXVl
dWUuRXZlbnQuSXRlcmF0aW9uc0FkZGVkLCB7YWRkZWRJdGVyYXRpb25zOiBbXX0pOwogICAgICAg
ICB9LmJpbmQodGhpcyksIHt3aXRoQ3JlZGVudGlhbHM6IHRoaXMuYnVpbGRib3QubmVlZHNBdXRo
ZW50aWNhdGlvbn0pOwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRz
L0J1aWxkYm90UXVldWVWaWV3LmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RRdWV1
ZVZpZXcuanMKaW5kZXggMzJiYzllMjdiMGNkMGZlNzExNjZhZGFlYzRjZGZiMDg0MTUzN2MzYy4u
NDNlZGVlNzRiZjYxODU4OWUxNzRmYWU2YmQ2N2U4OGE0YTljOTM5YiAxMDA2NDQKLS0tIGEvVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RRdWV1ZVZpZXcuanMKKysrIGIvVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L1NjcmlwdHMvQnVpbGRib3RRdWV1ZVZpZXcuanMKQEAgLTY5LDYgKzY5LDEzIEBAIEJ1aWxkYm90
UXVldWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHF1ZXVlLml0ZXJhdGlvbnNb
MF0ucHJldmlvdXNQcm9kdWN0aXZlSXRlcmF0aW9uOwogICAgIH0sCiAKKyAgICBfYXBwZW5kVW5h
dXRob3JpemVkTGluZVZpZXc6IGZ1bmN0aW9uKHF1ZXVlKQorICAgIHsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQoIXF1ZXVlLmJ1aWxkYm90LmlzQXV0aGVudGljYXRlZCk7CisgICAgICAgIHZhciBz
dGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcoInVuYXV0aG9yaXplZCIsIFN0YXR1c0xpbmVWaWV3
LlN0YXR1cy5VbmF1dGhvcml6ZWQsICIiLCBudWxsLCBxdWV1ZS5idWlsZGJvdC5hdXRoZW50aWNh
dGVBbmRVcGRhdGVRdWV1ZXMuYmluZChxdWV1ZS5idWlsZGJvdCkpOworICAgICAgICB0aGlzLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzLmVsZW1lbnQpOworICAgIH0sCisKICAgICBfYXBwZW5k
UGVuZGluZ1JldmlzaW9uQ291bnQ6IGZ1bmN0aW9uKHF1ZXVlKQogICAgIHsKICAgICAgICAgdmFy
IGxhdGVzdFByb2R1Y3RpdmVJdGVyYXRpb24gPSB0aGlzLl9sYXRlc3RQcm9kdWN0aXZlSXRlcmF0
aW9uKHF1ZXVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVz
dGVyUXVldWVWaWV3LmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1
ZVZpZXcuanMKaW5kZXggZDYyYzg1YmFlOWYzMGVlYmNjZTc2Y2UyN2JhZGQ2ZWIwMDg2ZGFhYS4u
NWE1NmJmYWQzOTZmMTE5MTUxNGNiNjZmNTYyNGRhMTViZjEzYWRlOSAxMDA2NDQKLS0tIGEvVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanMKKysrIGIvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanMKQEAgLTQ0LDYgKzQ0LDEx
IEBAIEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBmdW5j
dGlvbiBhcHBlbmRCdWlsZGVyUXVldWVTdGF0dXMocXVldWUpCiAgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICghcXVldWUuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVkKSB7CisgICAgICAgICAgICAg
ICAgdGhpcy5fYXBwZW5kVW5hdXRob3JpemVkTGluZVZpZXcocXVldWUpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgdGhpcy5fYXBwZW5kUGVu
ZGluZ1JldmlzaW9uQ291bnQocXVldWUpOwogCiAgICAgICAgICAgICB2YXIgYXBwZW5kZWRTdGF0
dXMgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL1N0YXR1c0xpbmVW
aWV3LmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvU3RhdHVzTGluZVZpZXcuanMKaW5kZXggNjBi
NmM3YWJjNGU1ZjI2Nzk0OWU1YjFhNDEzYjdmZTg4YmIwNzQ3MS4uYjRlYjBmMDExMDJkMjE1ZWRm
NWEzNTdiNTgyOWY1ZjVkZmFmMWJiMCAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMv
U3RhdHVzTGluZVZpZXcuanMKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvU3RhdHVzTGluZVZp
ZXcuanMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1TdGF0dXNMaW5lVmlldyA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHN0YXR1cywgbGFi
ZWwsIHJlcGVhdENvdW50LCB1cmwpCitTdGF0dXNMaW5lVmlldyA9IGZ1bmN0aW9uKG1lc3NhZ2Us
IHN0YXR1cywgbGFiZWwsIHJlcGVhdENvdW50LCB1cmxPckZ1bmN0aW9uKQogewogICAgIEJhc2VP
YmplY3QuY2FsbCh0aGlzKTsKIApAQCAtMzMsMTIgKzMzLDE5IEBAIFN0YXR1c0xpbmVWaWV3ID0g
ZnVuY3Rpb24obWVzc2FnZSwgc3RhdHVzLCBsYWJlbCwgcmVwZWF0Q291bnQsIHVybCkKICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdHVzLWxpbmUiKTsKICAgICB0aGlzLmVsZW1l
bnQuX19zdGF0dXNMaW5lVmlldyA9IHRoaXM7CiAKLSAgICBpZiAodXJsKSB7CisgICAgdmFyIGlz
RnVuY3Rpb25DYWxsYmFjayA9IHVybE9yRnVuY3Rpb24gaW5zdGFuY2VvZiBGdW5jdGlvbjsKKyAg
ICBpZiAoIXVybE9yRnVuY3Rpb24gfHwgaXNGdW5jdGlvbkNhbGxiYWNrKSB7CisgICAgICAgIHRo
aXMuX3N0YXR1c0J1YmJsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICAgICAgaWYgKGlzRnVuY3Rpb25DYWxsYmFjaykgeworICAgICAgICAgICAgdGhpcy5fc3Rh
dHVzQnViYmxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHVybE9yRnVuY3Rpb24s
IGZhbHNlKTsKKyAgICAgICAgICAgIHRoaXMuX3N0YXR1c0J1YmJsZUVsZW1lbnQuY2xhc3NMaXN0
LmFkZCgiY2FuLWJlLWNsaWNrZWQiKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CiAgICAgICAg
IHRoaXMuX3N0YXR1c0J1YmJsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7
Ci0gICAgICAgIHRoaXMuX3N0YXR1c0J1YmJsZUVsZW1lbnQuaHJlZiA9IHVybDsKKyAgICAgICAg
dGhpcy5fc3RhdHVzQnViYmxlRWxlbWVudC5ocmVmID0gdXJsT3JGdW5jdGlvbjsKICAgICAgICAg
dGhpcy5fc3RhdHVzQnViYmxlRWxlbWVudC50YXJnZXQgPSAiX2JsYW5rIjsKLSAgICB9IGVsc2UK
LSAgICAgICAgdGhpcy5fc3RhdHVzQnViYmxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworICAgIH0KKwogICAgIHRoaXMuX3N0YXR1c0J1YmJsZUVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgiYnViYmxlIik7CiAgICAgaWYgKHN0YXR1cyAhPSBTdGF0dXNMaW5lVmlldy5TdGF0
dXMuTm9CdWJibGUpCiAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zdGF0
dXNCdWJibGVFbGVtZW50KTsKQEAgLTU0LDcgKzYxLDEzIEBAIFN0YXR1c0xpbmVWaWV3ID0gZnVu
Y3Rpb24obWVzc2FnZSwgc3RhdHVzLCBsYWJlbCwgcmVwZWF0Q291bnQsIHVybCkKICAgICB0aGlz
Lm1lc3NhZ2UgPSBtZXNzYWdlIHx8ICIiOwogICAgIHRoaXMubGFiZWwgPSBsYWJlbCB8fCAiIjsK
ICAgICB0aGlzLnJlcGVhdENvdW50ID0gcmVwZWF0Q291bnQgfHwgMDsKLSAgICB0aGlzLnVybCA9
IHVybCB8fCBudWxsOworICAgIGlmIChpc0Z1bmN0aW9uQ2FsbGJhY2spIHsKKyAgICAgICAgdGhp
cy51cmwgPSBudWxsOworICAgICAgICB0aGlzLmNhbGxiYWNrID0gdXJsT3JGdW5jdGlvbjsKKyAg
ICB9IGVsc2UgeworICAgICAgICB0aGlzLnVybCA9IHVybE9yRnVuY3Rpb247CisgICAgICAgIHRo
aXMuY2FsbGJhY2sgPSBudWxsOworICAgIH0KIH07CiAKIFN0YXR1c0xpbmVWaWV3LlN0YXR1cyA9
IHsKQEAgLTYyLDcgKzc1LDggQEAgU3RhdHVzTGluZVZpZXcuU3RhdHVzID0gewogICAgIE5ldXRy
YWw6ICJuZXV0cmFsIiwKICAgICBHb29kOiAiZ29vZCIsCiAgICAgRGFuZ2VyOiAiZGFuZ2VyIiwK
LSAgICBCYWQ6ICJiYWQiCisgICAgQmFkOiAiYmFkIiwKKyAgICBVbmF1dGhvcml6ZWQ6ICJ1bmF1
dGhvcml6ZWQiCiB9OwogCiBCYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFN0YXR1
c0xpbmVWaWV3KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TdHlsZXMvU3RhdHVzTGluZVZp
ZXcuY3NzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1N0eWxlcy9TdGF0dXNMaW5lVmlldy5jc3MKaW5kZXggODZj
YjU5N2Q3OTBmYmUxNGJjMjA2N2RiYmZlMjBmZGFkYmUwNjA3MS4uNWY2Yjg1ZDkyOGE3NjdjNjE1
YjIzYWM2MzY3MGRlYzg1NzJhZGQzOSAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1N0eWxlcy9T
dGF0dXNMaW5lVmlldy5jc3MKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1N0eWxlcy9TdGF0dXNMaW5lVmll
dy5jc3MKQEAgLTQ2LDYgKzQ2LDEwIEBACiAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogfQog
Cisuc3RhdHVzLWxpbmUgLmJ1YmJsZS5jYW4tYmUtY2xpY2tlZCB7CisgIGN1cnNvcjogcG9pbnRl
cjsKK30KKwogLnN0YXR1cy1saW5lLm5ldXRyYWwgLmJ1YmJsZSB7CiAgICAgYmFja2dyb3VuZC1j
b2xvcjogcmdiKDE4MSwgMTc0LCAxNDgpOwogfQpAQCAtNTQsNiArNTgsMTAgQEAKICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2IoNzYsIDE1MSwgNjEpOwogfQogCisuc3RhdHVzLWxpbmUudW5hdXRo
b3JpemVkIC5idWJibGUgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxNzEsIDYxLCAxNzEp
OworfQorCiAuc3RhdHVzLWxpbmUgLmJ1YmJsZS5waWN0b2dyYW0gewogICAgIHBhZGRpbmc6IDA7
CiAgICAgbWF4LXdpZHRoOiAyNHB4OwpAQCAtNjMsNiArNzEsMTAgQEAKICAgICBiYWNrZ3JvdW5k
LWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAxMDAiPjxnIHRyYW5zZm9ybT0idHJhbnNs
YXRlKDIwIDMwKSByb3RhdGUoLTQ1IDMwIDE3KSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2Vz
IiBmaWxsPSJ3aGl0ZSI+PHJlY3QgeT0iNSIgd2lkdGg9IjEwIiBoZWlnaHQ9IjI1Ii8+PHJlY3Qg
eT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSIxMCIvPjwvZz48L3N2Zz4nKTsKIH0KIAorLnN0YXR1
cy1saW5lLnVuYXV0aG9yaXplZCAuYnViYmxlLnBpY3RvZ3JhbSB7CisgICAgYmFja2dyb3VuZC1p
bWFnZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48Y2xpcFBhdGggaWQ9InRvcC1zZW1p
Y2lyY2xlIj48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjM3Ii8+PC9jbGlw
UGF0aD48Y2lyY2xlIGN4PSI1MCIgY3k9IjMzIiByPSIxMyIgY2xpcC1wYXRoPSJ1cmwoI3RvcC1z
ZW1pY2lyY2xlKSIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxMCIgZmlsbD0ibm9uZSIg
Lz48cmVjdCB4PSIyNCIgeT0iMzgiIHdpZHRoPSI1MiIgaGVpZ2h0PSIzOSIgZmlsbD0id2hpdGUi
Lz48L3N2Zz4nKTsKK30KKwogLnN0YXR1cy1saW5lLmRhbmdlciAuYnViYmxlIHsKICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2IoMjMwLCAxNzUsIDQ0KTsKIH0KQEAgLTEzNiw2ICsxNDgsMTEgQEAK
ICAgICBjb2xvcjogcmdiKDE5MSwgNjcsIDQxKTsKIH0KIAorLnN0YXR1cy1saW5lLnVuYXV0aG9y
aXplZCAubGFiZWwsCisuc3RhdHVzLWxpbmUudW5hdXRob3JpemVkIC5tZXNzYWdlIHsKKyAgICBj
b2xvcjogcmdiKDE3MSwgNjEsIDE3MSk7Cit9CisKIC5zdGF0dXMtbGluZSAuYnViYmxlLnBvcG92
ZXItdHJhY2tpbmc6aG92ZXIgewogICAgIHRleHQtc2hhZG93OiAwcHggMHB4IDVweCByZ2JhKDI1
NSwgMjU1LCAyNTUsIDAuNykKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222848</attachid>
            <date>2014-01-31 14:26:38 -0800</date>
            <delta_ts>2014-01-31 15:25:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>WK127849_013114_1.patch</filename>
            <type>text/plain</type>
            <size>19853</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSBiMWExYjYzZjNlZGVmZjE1MmE0MTQwYzFjY2ZhYjBlNGE2YjMxMjI2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRiYXRlc0B3ZWJraXQub3JnPgpEYXRl
OiBGcmksIDMxIEphbiAyMDE0IDEzOjQ2OjQ4IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gV2ViS2l0
IEJvdCBXYXRjaGVyJ3MgRGFzaGJvYXJkOiBBY2Nlc3MgcmVzdHJpY3RlZCBxdWV1ZQogc2hvdWxk
IG9ubHkgcHJvbXB0IGZvciBIVFRQIGNyZWRlbnRpYWxzIG9uY2UgcGVyIHBhZ2UgbG9hZAogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzg0OQoKUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCgpDdXJyZW50bHkgd2hlbmV2ZXIgdGhlIGRhc2hib2FyZCB1cGRhdGVz
IHRoZSBzdGF0dXMgb2YgYSBxdWV1ZSB3aG9zZSBCdWlsZGJvdCByZXF1aXJlcyBhdXRoZW50aWNh
dGlvbgppdCB3aWxsIGNhdXNlIGEgYnJvd3NlciB0byBwcm9tcHQgZm9yIGNyZWRlbnRpYWxzIG9u
Y2UgcGVyIHVwZGF0ZSB1bnRpbCB2YWxpZCBjcmVkZW50aWFscyBhcmUgcHJvdmlkZWQuCkluc3Rl
YWQgd2Ugc2hvdWxkIGtlZXAgdHJhY2sgb2YgQnVpbGRib3RzIHRoYXQgcmVzcG9uZCB3aXRoIGFu
IEhUVFAgNDAxIFVuYXV0aG9yaXplZCBzdGF0dXMgY29kZSB0byBhdm9pZApzdWJzZXF1ZW50bHkg
cXVlcnlpbmcgdGhlbSBhbmQgaGVuY2UgY2F1c2UgYSBicm93c2VyIHRvIHByb21wdCBmb3IgY3Jl
ZGVudGlhbHMuIFRvZ2V0aGVyIHdpdGggYW4gb3B0aW9uYWwKaGludCBwcm92aWRlZCB3aGVuIGlu
c3RhbnRpYXRpbmcgYSBCdWlsZGJvdCBvYmplY3QgYXMgdG8gd2hldGhlciBpdCByZXF1aXJlcyBh
dXRoZW50aWNhdGlvbiwgd2UgY2FuIG1ha2UKdGhlIGRhc2hib2FyZCBwcm9tcHQgZm9yIEhUVFAg
Y3JlZGVudGlhbHMgZXhhY3RseSBvbmNlIHBlciBwYWdlIGxvYWQgZm9yIGVhY2ggcXVldWUgd2hv
c2UgYXNzb2NpYXRlZApCdWlsZGJvdCByZXF1aXJlcyBhdXRoZW50aWNhdGlvbi4KClF1ZXVlcyB3
aG9zZSBCdWlsZGJvdCB3YXNuJ3QgYXV0aGVudGljYXRlZCB3aWxsIHNob3cgaW4gdGhlIGRhc2hi
b2FyZCBhcyAidW5hdXRob3JpemVkIi4gQ2xpY2tpbmcgb24KdGhpcyBzdGF0dXMgbWVzc2FnZSB3
aWxsIGNhdXNlIHRoZSBicm93c2VyIHRvIHByb21wdCBmb3IgY3JlZGVudGlhbHMuCgoqIEJ1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL0J1aWxkYm90LmpzOgooQnVpbGRib3QpOiBJbml0aWFsaXplIGluc3RhbmNlIHZh
cmlhYmxlIGF1dGhlbnRpY2F0aW9uU3RhdHVzIHRvIEJ1aWxkYm90LkF1dGhlbnRpY2F0aW9uU3Rh
dHVzLlVuYXV0aGVudGljYXRlZC4KKEJ1aWxkYm90LnByb3RvdHlwZS5nZXQgbmVlZHNBdXRoZW50
aWNhdGlvbik6IEFkZGVkLgooQnVpbGRib3QucHJvdG90eXBlLmdldCBhdXRoZW50aWNhdGlvblN0
YXR1cyk6IEFkZGVkLgooQnVpbGRib3QucHJvdG90eXBlLmdldCBpc0F1dGhlbnRpY2F0ZWQpOiBB
ZGRlZC4KKEJ1aWxkYm90LnByb3RvdHlwZS5zZXQgaXNBdXRoZW50aWNhdGVkKTogQWRkZWQuCihC
dWlsZGJvdC5wcm90b3R5cGUudXBkYXRlUXVldWVzKTogQWRkZWQuCiogQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMv
QnVpbGRib3RCdWlsZGVyUXVldWVWaWV3LmpzOgooQnVpbGRib3RCdWlsZGVyUXVldWVWaWV3LnBy
b3RvdHlwZS51cGRhdGUuYXBwZW5kQnVpbGRlclF1ZXVlU3RhdHVzKTogTW9kaWZpZWQgdG8gY2Fs
bApCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUuX2FwcGVuZFVuYXV0aG9yaXplZExpbmVWaWV3
KCkgdG8gdXBkYXRlIHRoZSB2aWV3IGFuZCBzaG93IHN0YXR1cyBvZiB0aGUgcXVldWUgYXMKInVu
YXV0aG9yaXplZCIgaWYgdGhlIEJ1aWxkYm90IGFzc29jaWF0ZWQgd2l0aCB0aGUgcXVldWUgaXMg
ZWl0aGVyIHVuYXV0aGVudGljYXRlZCBvciB3YXMgZ2l2ZW4gaW52YWxpZCBjcmVkZW50aWFscy4K
KiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlLmpzOgooQnVpbGRib3RRdWV1ZS5wcm90b3R5
cGUudXBkYXRlKTogUmV0dXJuIGltbWVkaWF0ZWx5IGlmIHRoZSBhc3NvY2lhdGVkIEJ1aWxkYm90
IHJlcXVpcmVzIGF1dGhlbnRpY2F0aW9uLgpBZGRpdGlvbmFsbHksIGlmIHRoZSBKU09OIGxvYWQg
ZmFpbHMgd2l0aCBhbiBIVFRQIDQwMSBVbmF1dGhvcml6ZWQgYWNjZXNzIGVycm9yIChzYXksIGNy
ZWRlbnRpYWxzIHdlcmUKaW52YWxpZGF0ZWQpIHRoZW4gdXBkYXRlIHRoZSBhdXRoZW50aWNhdGlv
biBzdGF0dXMgb2YgdGhlIEJ1aWxkYm90IHRvIGF2b2lkIHN1YnNlcXVlbnRseSBwcm9tcHRpbmcg
YQpwZXJzb24gZm9yIGNyZWRlbnRpYWxzIHRoZSBuZXh0IHRpbWUgdGhlIHF1ZXVlIHVwZGF0ZSB0
aW1lciBmaXJlcy4KKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlVmlldy5qczoKKEJ1aWxk
Ym90UXVldWVWaWV3KTogUmVnaXN0ZXIgYXMgYSBsaXN0ZW5lciBmb3IgZXZlbnQgQnVpbGRib3RR
dWV1ZS5FdmVudC5VbmF1dGhvcml6ZWRBY2Nlc3Mgb24gZWFjaCBxdWV1ZQpzbyB0aGF0IHRoZSB2
aWV3IGNhbiBiZSB1cGRhdGVkIHRvIHNob3cgc3RhdHVzICJ1bmF1dGhvcml6ZWQiLgooQnVpbGRi
b3RRdWV1ZVZpZXcucHJvdG90eXBlLl9hcHBlbmRVbmF1dGhvcml6ZWRMaW5lVmlldyk6IEFkZGVk
LgoqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVzdGVyUXVldWVWaWV3LmpzOgooQnVpbGRib3RU
ZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlLnVwZGF0ZS5hcHBlbmRCdWlsZGVyUXVldWVTdGF0dXMp
OgoqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9TY3JpcHRzL1N0YXR1c0xpbmVWaWV3LmpzOiBBZGRlZCBuZXcgc3RhdHVzLCBT
dGF0dXNMaW5lVmlldy5TdGF0dXMuVW5hdXRob3JpemVkLgoqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TdHlsZXMvU3RhdHVz
TGluZVZpZXcuY3NzOgooLnN0YXR1cy1saW5lLnVuYXV0aG9yaXplZCAuYnViYmxlKTogQWRkZWQu
Ciguc3RhdHVzLWxpbmUudW5hdXRob3JpemVkIC5idWJibGUucGljdG9ncmFtKTogQWRkZWQuCigu
c3RhdHVzLWxpbmUudW5hdXRob3JpemVkIC5tZXNzYWdlKTogQWRkZWQuCi0tLQogLi4uL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90LmpzICAgICAgfCA1NiArKysrKysrKysr
KysrKysrKysrKystCiAuLi4vZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RCdWlsZGVyUXVldWVW
aWV3LmpzICB8ICA1ICsrCiAuLi4vcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRi
b3RRdWV1ZS5qcyB8IDE5ICsrKysrKystCiAuLi4vZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RR
dWV1ZVZpZXcuanMgICAgICAgICB8IDExICsrKysrCiAuLi4vZGFzaGJvYXJkL1NjcmlwdHMvQnVp
bGRib3RUZXN0ZXJRdWV1ZVZpZXcuanMgICB8ICA1ICsrCiAuLi4vZGFzaGJvYXJkL1NjcmlwdHMv
U3RhdHVzTGluZVZpZXcuanMgICAgICAgICAgICB8ICAzICstCiAuLi4vZGFzaGJvYXJkL1N0eWxl
cy9TdGF0dXNMaW5lVmlldy5jc3MgICAgICAgICAgICB8IDEzICsrKysrCiBUb29scy9DaGFuZ2VM
b2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQ2ICsrKysrKysrKysrKysr
KysrKwogOCBmaWxlcyBjaGFuZ2VkLCAxNTUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdC5qcyBiL1Rvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9TY3JpcHRzL0J1aWxkYm90LmpzCmluZGV4IDVjODQ5OWQuLjgyYmVmNWEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90LmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9T
Y3JpcHRzL0J1aWxkYm90LmpzCkBAIC0zMiw3ICszMiwxMiBAQCBCdWlsZGJvdCA9IGZ1bmN0aW9u
KGJhc2VVUkwsIHF1ZXVlc0luZm8sIG9wdGlvbnMpCiAKICAgICB0aGlzLmJhc2VVUkwgPSBiYXNl
VVJMOwogICAgIHRoaXMucXVldWVzID0ge307Ci0gICAgdGhpcy5uZWVkc0F1dGhlbnRpY2F0aW9u
ID0gdHlwZW9mIG9wdGlvbnMgPT09ICJvYmplY3QiICYmIG9wdGlvbnMubmVlZHNBdXRoZW50aWNh
dGlvbiA9PT0gdHJ1ZTsKKworICAgIC8vIFdlIHJlZ2FyZCBfbmVlZHNBdXRoZW50aWNhdGlvbiBh
cyBhIGhpbnQgd2hldGhlciB0aGlzIEJ1aWxkYm90IHJlcXVpcmVzIGF1dGhlbnRpY2F0aW9uIHNv
IHRoYXQgd2UgY2FuIHNob3cKKyAgICAvLyBhbiBhcHByb3ByaWF0ZSBpbml0aWFsIHN0YXR1cyBt
ZXNzYWdlIChzYXksIGFuICJ1bmF1dGhvcml6ZWQiIHN0YXR1cyBpZiB0aGUgQnVpbGRib3QgcmVx
dWlyZXMgYXV0aGVudGljYXRpb24pCisgICAgLy8gZm9yIGl0cyBhc3NvY2lhdGVkIHF1ZXVlcyBi
ZWZvcmUgd2UgbWFrZSB0aGUgYWN0dWFsIEhUVFAgcmVxdWVzdCBmb3IgdGhlIHN0YXR1cyBvZiBl
YWNoIHF1ZXVlLgorICAgIHRoaXMuX25lZWRzQXV0aGVudGljYXRpb24gPSB0eXBlb2Ygb3B0aW9u
cyA9PT0gIm9iamVjdCIgJiYgb3B0aW9ucy5uZWVkc0F1dGhlbnRpY2F0aW9uID09PSB0cnVlOwor
ICAgIHRoaXMuX2F1dGhlbnRpY2F0aW9uU3RhdHVzID0gQnVpbGRib3QuQXV0aGVudGljYXRpb25T
dGF0dXMuVW5hdXRoZW50aWNhdGVkOwogCiAgICAgZm9yICh2YXIgaWQgaW4gcXVldWVzSW5mbykK
ICAgICAgICAgdGhpcy5xdWV1ZXNbaWRdID0gbmV3IEJ1aWxkYm90UXVldWUodGhpcywgaWQsIHF1
ZXVlc0luZm9baWRdKTsKQEAgLTQwLDYgKzQ1LDE2IEBAIEJ1aWxkYm90ID0gZnVuY3Rpb24oYmFz
ZVVSTCwgcXVldWVzSW5mbywgb3B0aW9ucykKIAogQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1
bmN0aW9ucyhCdWlsZGJvdCk7CiAKK0J1aWxkYm90LkF1dGhlbnRpY2F0aW9uU3RhdHVzID0gewor
ICAgIFVuYXV0aGVudGljYXRlZDogInVuYXV0aGVudGljYXRlZCIsCisgICAgQXV0aGVudGljYXRl
ZDogImF1dGhlbnRpY2F0ZWQiLAorICAgIEludmFsaWRDcmVkZW50aWFsczogImludmFsaWQtY3Jl
ZGVudGlhbHMiCit9OworCitCdWlsZGJvdC5VcGRhdGVSZWFzb24gPSB7CisgICAgUmVhdXRoZW50
aWNhdGU6ICJyZWF1dGhlbnRpY2F0ZSIKK307CisKIC8vIE9yZGVyZWQgaW1wb3J0YW5jZS4KIEJ1
aWxkYm90LlRlc3RDYXRlZ29yeSA9IHsKICAgICBXZWJLaXQyOiAid2Via2l0LTIiLApAQCAtNTcs
NiArNzIsNDUgQEAgQnVpbGRib3QucHJvdG90eXBlID0gewogICAgIGNvbnN0cnVjdG9yOiBCdWls
ZGJvdCwKICAgICBfX3Byb3RvX186IEJhc2VPYmplY3QucHJvdG90eXBlLAogCisgICAgZ2V0IG5l
ZWRzQXV0aGVudGljYXRpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX25lZWRzQXV0
aGVudGljYXRpb247CisgICAgfSwKKworICAgIGdldCBhdXRoZW50aWNhdGlvblN0YXR1cygpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5fYXV0aGVudGljYXRpb25TdGF0dXM7CisgICAgfSwK
KworICAgIGdldCBpc0F1dGhlbnRpY2F0ZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X2F1dGhlbnRpY2F0aW9uU3RhdHVzID09PSBCdWlsZGJvdC5BdXRoZW50aWNhdGlvblN0YXR1cy5B
dXRoZW50aWNhdGVkOworICAgIH0sCisKKyAgICBzZXQgaXNBdXRoZW50aWNhdGVkKHZhbHVlKQor
ICAgIHsKKyAgICAgICAgdGhpcy5fYXV0aGVudGljYXRpb25TdGF0dXMgPSB2YWx1ZSA/IEJ1aWxk
Ym90LkF1dGhlbnRpY2F0aW9uU3RhdHVzLkF1dGhlbnRpY2F0ZWQgOiBCdWlsZGJvdC5BdXRoZW50
aWNhdGlvblN0YXR1cy5JbnZhbGlkQ3JlZGVudGlhbHM7CisgICAgfSwKKworICAgIHVwZGF0ZVF1
ZXVlczogZnVuY3Rpb24odXBkYXRlUmVhc29uKQorICAgIHsKKyAgICAgICAgdmFyIHNob3VsZFJl
YXV0aGVudGljYXRlID0gdXBkYXRlUmVhc29uID09PSBCdWlsZGJvdC5VcGRhdGVSZWFzb24uUmVh
dXRoZW50aWNhdGU7CisgICAgICAgIGlmIChzaG91bGRSZWF1dGhlbnRpY2F0ZSkgeworICAgICAg
ICAgICAgdmFyIHNhdmVkQXV0aGVudGljYXRpb25TdGF0dXMgPSB0aGlzLl9hdXRoZW50aWNhdGlv
blN0YXR1czsKKyAgICAgICAgICAgIHRoaXMuX2F1dGhlbnRpY2F0aW9uU3RhdHVzID0gQnVpbGRi
b3QuQXV0aGVudGljYXRpb25TdGF0dXMuVW5hdXRoZW50aWNhdGVkOworICAgICAgICB9CisKKyAg
ICAgICAgZm9yICh2YXIgaWQgaW4gdGhpcy5xdWV1ZXMpCisgICAgICAgICAgICB0aGlzLnF1ZXVl
c1tpZF0udXBkYXRlKCk7CisKKyAgICAgICAgLy8gT25seSByZXN0b3JlIHRoZSBhdXRoZW50aWNh
dGlvbiBzdGF0dXMgaWYgaXQgd2Fzbid0IGNoYW5nZWQuIE90aGVyd2lzZSwgd2Ugd291bGQgb3Zl
cnJpZGUgdGhlIG5ldyBzdGF0dXMuCisgICAgICAgIC8vIEZJWE1FOiBXZSBtYXkgd2FudCB0byBh
c3NlcnQgdGhhdCB0aGUgYXV0aGVudGljYXRpb24gc3RhdHVzIGRpZG4ndCBjaGFuZ2UuIFdoZW4g
c3VjaCBhbiBhc3NlcnRpb24gZmFpbHMKKyAgICAgICAgLy8gaXQgaW5kaXJlY3RseSBpbmRpY2F0
ZXMgdGhhdCB3ZSBtYWRlIGFuIHN5bmNocm9ub3VzIEhUVFAgcmVxdWVzdCwgd2hpY2ggd2Ugc2hv
dWxkIGF2b2lkIHRvIGVuc3VyZSBhcHAKKyAgICAgICAgLy8gcmVzcG9uc2l2ZW5lc3MuCisgICAg
ICAgIGlmIChzaG91bGRSZWF1dGhlbnRpY2F0ZSAmJiB0aGlzLl9hdXRoZW50aWNhdGlvblN0YXR1
cyA9PT0gQnVpbGRib3QuQXV0aGVudGljYXRpb25TdGF0dXMuVW5hdXRoZW50aWNhdGVkKQorICAg
ICAgICAgICAgdGhpcy5fYXV0aGVudGljYXRpb25TdGF0dXMgPSBzYXZlZEF1dGhlbnRpY2F0aW9u
U3RhdHVzOworICAgIH0sCisKICAgICBidWlsZFBhZ2VVUkxGb3JJdGVyYXRpb246IGZ1bmN0aW9u
KGl0ZXJhdGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAiYnVpbGRl
cnMvIiArIGVuY29kZVVSSUNvbXBvbmVudChpdGVyYXRpb24ucXVldWUuaWQpICsgIi9idWlsZHMv
IiArIGl0ZXJhdGlvbi5pZDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxk
Ym90QnVpbGRlclF1ZXVlVmlldy5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90QnVp
bGRlclF1ZXVlVmlldy5qcwppbmRleCBmNjA5Y2I2Li5hYWEzNWNiIDEwMDY0NAotLS0gYS9Ub29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEJ1aWxkZXJRdWV1ZVZpZXcuanMKKysrIGIvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL1NjcmlwdHMvQnVpbGRib3RCdWlsZGVyUXVldWVWaWV3LmpzCkBAIC02MCw2ICs2MCwx
MSBAQCBCdWlsZGJvdEJ1aWxkZXJRdWV1ZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIGZ1
bmN0aW9uIGFwcGVuZEJ1aWxkZXJRdWV1ZVN0YXR1cyhxdWV1ZSkKICAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRpb24gJiYgIXF1ZXVlLmJ1
aWxkYm90LmlzQXV0aGVudGljYXRlZCkgeworICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVuZFVu
YXV0aG9yaXplZExpbmVWaWV3KHF1ZXVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgIHRoaXMuX2FwcGVuZFBlbmRpbmdSZXZpc2lvbkNvdW50
KHF1ZXVlKTsKIAogICAgICAgICAgICAgdmFyIGZpcnN0UmVjZW50VW5zdWNjZXNzZnVsSXRlcmF0
aW9uID0gcXVldWUuZmlyc3RSZWNlbnRVbnN1Y2Nlc3NmdWxJdGVyYXRpb247CmRpZmYgLS1naXQg
YS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlLmpzIGIvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Nj
cmlwdHMvQnVpbGRib3RRdWV1ZS5qcwppbmRleCBmYzNhNjMxLi44Y2JiMTAxIDEwMDY0NAotLS0g
YS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlLmpzCisrKyBiL1Rvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL0J1aWxkYm90UXVldWUuanMKQEAgLTUyLDcgKzUyLDggQEAgQmFzZU9iamVjdC5h
ZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhCdWlsZGJvdFF1ZXVlKTsKIEJ1aWxkYm90UXVldWUuTWF4
aW11bVF1ZXVlc1RvTG9hZCA9IDEwOwogCiBCdWlsZGJvdFF1ZXVlLkV2ZW50ID0gewotICAgIEl0
ZXJhdGlvbnNBZGRlZDogIml0ZXJhdGlvbnMtYWRkZWQiCisgICAgSXRlcmF0aW9uc0FkZGVkOiAi
aXRlcmF0aW9ucy1hZGRlZCIsCisgICAgVW5hdXRob3JpemVkQWNjZXNzOiAidW5hdXRob3JpemVk
LWFjY2VzcyIKIH07CiAKIEJ1aWxkYm90UXVldWUucHJvdG90eXBlID0gewpAQCAtMTE5LDcgKzEy
MCwxMSBAQCBCdWlsZGJvdFF1ZXVlLnByb3RvdHlwZSA9IHsKIAogICAgIHVwZGF0ZTogZnVuY3Rp
b24oaXRlcmF0aW9uc1RvTG9hZCkKICAgICB7CisgICAgICAgIGlmICh0aGlzLmJ1aWxkYm90Lm5l
ZWRzQXV0aGVudGljYXRpb24gJiYgdGhpcy5idWlsZGJvdC5hdXRoZW50aWNhdGlvblN0YXR1cyA9
PT0gQnVpbGRib3QuQXV0aGVudGljYXRpb25TdGF0dXMuSW52YWxpZENyZWRlbnRpYWxzKQorICAg
ICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIEpTT04ubG9hZCh0aGlzLmJhc2VVUkwsIGZ1bmN0
aW9uKGRhdGEpIHsKKyAgICAgICAgICAgIHRoaXMuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVkID0g
dHJ1ZTsKICAgICAgICAgICAgIGlmICghKGRhdGEuY2FjaGVkQnVpbGRzIGluc3RhbmNlb2YgQXJy
YXkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTU0LDYgKzE1OSwxOCBAQCBCdWls
ZGJvdFF1ZXVlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuc29ydEl0ZXJhdGlvbnMo
KTsKIAogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoQnVpbGRib3RR
dWV1ZS5FdmVudC5JdGVyYXRpb25zQWRkZWQsIHthZGRlZEl0ZXJhdGlvbnM6IG5ld0l0ZXJhdGlv
bnN9KTsKKyAgICAgICAgfS5iaW5kKHRoaXMpLAorICAgICAgICBmdW5jdGlvbihkYXRhKSB7Cisg
ICAgICAgICAgICBpZiAodGhpcy5idWlsZGJvdC5pc0F1dGhlbnRpY2F0ZWQpIHsKKyAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogU2FmYXJpL1dlYktpdCBzaG91bGQgY29hbGxlc2NlIGF1dGhlbnRp
Y2F0aW9uIHJlcXVlc3RzIHdpdGggdGhlIHNhbWUgb3JpZ2luIGFuZCBhdXRoZW50aWNhdGlvbiBy
ZWFsbS4KKyAgICAgICAgICAgICAgICAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjgwMDY+LgorICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlKCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRh
dGEuZXJyb3JUeXBlID09PSBKU09OLkxvYWRFcnJvciAmJiBkYXRhLmVycm9ySFRUUENvZGUgPT0g
NDAxKSB7CisgICAgICAgICAgICAgICAgdGhpcy5idWlsZGJvdC5pc0F1dGhlbnRpY2F0ZWQgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhCdWls
ZGJvdFF1ZXVlLkV2ZW50LlVuYXV0aG9yaXplZEFjY2VzcywgeyB9KTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfS5iaW5kKHRoaXMpLCB7d2l0aENyZWRlbnRpYWxzOiB0aGlzLmJ1aWxkYm90Lm5l
ZWRzQXV0aGVudGljYXRpb259KTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQv
U2NyaXB0cy9CdWlsZGJvdFF1ZXVlVmlldy5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxk
Ym90UXVldWVWaWV3LmpzCmluZGV4IDMyYmM5ZTIuLjgwYjNhMGEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9TY3JpcHRzL0J1aWxkYm90UXVldWVWaWV3LmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9T
Y3JpcHRzL0J1aWxkYm90UXVldWVWaWV3LmpzCkBAIC0zNiw2ICszNiw3IEBAIEJ1aWxkYm90UXVl
dWVWaWV3ID0gZnVuY3Rpb24oZGVidWdRdWV1ZXMsIHJlbGVhc2VRdWV1ZXMpCiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHRoaXMucGxhdGZvcm0gPSBxdWV1ZS5wbGF0Zm9ybTsKICAgICAgICAg
cXVldWUuYWRkRXZlbnRMaXN0ZW5lcihCdWlsZGJvdFF1ZXVlLkV2ZW50Lkl0ZXJhdGlvbnNBZGRl
ZCwgdGhpcy5fcXVldWVJdGVyYXRpb25zQWRkZWQsIHRoaXMpOworICAgICAgICBxdWV1ZS5hZGRF
dmVudExpc3RlbmVyKEJ1aWxkYm90UXVldWUuRXZlbnQuVW5hdXRob3JpemVkQWNjZXNzLCB0aGlz
LnVwZGF0ZVNvb24sIHRoaXMpOwogICAgIH0uYmluZCh0aGlzKSk7CiAKICAgICB0aGlzLmRlYnVn
UXVldWVzLmZvckVhY2goZnVuY3Rpb24ocXVldWUpIHsKQEAgLTQ0LDYgKzQ1LDcgQEAgQnVpbGRi
b3RRdWV1ZVZpZXcgPSBmdW5jdGlvbihkZWJ1Z1F1ZXVlcywgcmVsZWFzZVF1ZXVlcykKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybSA9IHF1ZXVlLnBsYXRmb3JtOwogICAg
ICAgICBxdWV1ZS5hZGRFdmVudExpc3RlbmVyKEJ1aWxkYm90UXVldWUuRXZlbnQuSXRlcmF0aW9u
c0FkZGVkLCB0aGlzLl9xdWV1ZUl0ZXJhdGlvbnNBZGRlZCwgdGhpcyk7CisgICAgICAgIHF1ZXVl
LmFkZEV2ZW50TGlzdGVuZXIoQnVpbGRib3RRdWV1ZS5FdmVudC5VbmF1dGhvcml6ZWRBY2Nlc3Ms
IHRoaXMudXBkYXRlU29vbiwgdGhpcyk7CiAgICAgfS5iaW5kKHRoaXMpKTsKIAogICAgIHdlYmtp
dFRyYWMuYWRkRXZlbnRMaXN0ZW5lcihUcmFjLkV2ZW50Lk5ld0NvbW1pdHNSZWNvcmRlZCwgdGhp
cy5fbmV3Q29tbWl0c1JlY29yZGVkLCB0aGlzKTsKQEAgLTY5LDYgKzcxLDE1IEBAIEJ1aWxkYm90
UXVldWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHF1ZXVlLml0ZXJhdGlvbnNb
MF0ucHJldmlvdXNQcm9kdWN0aXZlSXRlcmF0aW9uOwogICAgIH0sCiAKKyAgICBfYXBwZW5kVW5h
dXRob3JpemVkTGluZVZpZXc6IGZ1bmN0aW9uKHF1ZXVlKQorICAgIHsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQocXVldWUuYnVpbGRib3QubmVlZHNBdXRoZW50aWNhdGlvbik7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KCFxdWV1ZS5idWlsZGJvdC5pc0F1dGhlbnRpY2F0ZWQpOworICAgICAgICB2
YXIgamF2YXNjcmlwdFVSTCA9ICJqYXZhc2NyaXB0OmJ1aWxkYm90c1siICsgYnVpbGRib3RzLmlu
ZGV4T2YocXVldWUuYnVpbGRib3QpICsgIl0udXBkYXRlUXVldWVzKEJ1aWxkYm90LlVwZGF0ZVJl
YXNvbi5SZWF1dGhlbnRpY2F0ZSkiOworICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xp
bmVWaWV3KCJ1bmF1dGhvcml6ZWQiLCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuVW5hdXRob3JpemVk
LCAiIiwgbnVsbCwgamF2YXNjcmlwdFVSTCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZChzdGF0dXMuZWxlbWVudCk7CisgICAgfSwKKwogICAgIF9hcHBlbmRQZW5kaW5nUmV2aXNp
b25Db3VudDogZnVuY3Rpb24ocXVldWUpCiAgICAgewogICAgICAgICB2YXIgbGF0ZXN0UHJvZHVj
dGl2ZUl0ZXJhdGlvbiA9IHRoaXMuX2xhdGVzdFByb2R1Y3RpdmVJdGVyYXRpb24ocXVldWUpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcu
anMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5qcwppbmRl
eCBkNjJjODViLi4wNDcyYzNlIDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWls
ZGJvdFRlc3RlclF1ZXVlVmlldy5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJv
dFRlc3RlclF1ZXVlVmlldy5qcwpAQCAtNDQsNiArNDQsMTEgQEAgQnVpbGRib3RUZXN0ZXJRdWV1
ZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIGZ1bmN0aW9uIGFwcGVuZEJ1aWxkZXJRdWV1
ZVN0YXR1cyhxdWV1ZSkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKHF1ZXVlLmJ1aWxkYm90
Lm5lZWRzQXV0aGVudGljYXRpb24gJiYgIXF1ZXVlLmJ1aWxkYm90LmlzQXV0aGVudGljYXRlZCkg
eworICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVuZFVuYXV0aG9yaXplZExpbmVWaWV3KHF1ZXVl
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKICAgICAgICAgICAg
IHRoaXMuX2FwcGVuZFBlbmRpbmdSZXZpc2lvbkNvdW50KHF1ZXVlKTsKIAogICAgICAgICAgICAg
dmFyIGFwcGVuZGVkU3RhdHVzID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2Ny
aXB0cy9TdGF0dXNMaW5lVmlldy5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL1N0YXR1c0xpbmVW
aWV3LmpzCmluZGV4IDYwYjZjN2EuLmI0ZDJmNWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9T
Y3JpcHRzL1N0YXR1c0xpbmVWaWV3LmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL1N0YXR1
c0xpbmVWaWV3LmpzCkBAIC02Miw3ICs2Miw4IEBAIFN0YXR1c0xpbmVWaWV3LlN0YXR1cyA9IHsK
ICAgICBOZXV0cmFsOiAibmV1dHJhbCIsCiAgICAgR29vZDogImdvb2QiLAogICAgIERhbmdlcjog
ImRhbmdlciIsCi0gICAgQmFkOiAiYmFkIgorICAgIEJhZDogImJhZCIsCisgICAgVW5hdXRob3Jp
emVkOiAidW5hdXRob3JpemVkIgogfTsKIAogQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0
aW9ucyhTdGF0dXNMaW5lVmlldyk7CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU3R5bGVzL1N0
YXR1c0xpbmVWaWV3LmNzcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TdHlsZXMvU3RhdHVzTGluZVZpZXcuY3Nz
CmluZGV4IDg2Y2I1OTcuLjg5Njg1YmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TdHlsZXMv
U3RhdHVzTGluZVZpZXcuY3NzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TdHlsZXMvU3RhdHVzTGluZVZp
ZXcuY3NzCkBAIC01NCw2ICs1NCwxMCBAQAogICAgIGJhY2tncm91bmQtY29sb3I6IHJnYig3Niwg
MTUxLCA2MSk7CiB9CiAKKy5zdGF0dXMtbGluZS51bmF1dGhvcml6ZWQgLmJ1YmJsZSB7CisgICAg
YmFja2dyb3VuZC1jb2xvcjogcmdiKDE3MSwgNjEsIDE3MSk7Cit9CisKIC5zdGF0dXMtbGluZSAu
YnViYmxlLnBpY3RvZ3JhbSB7CiAgICAgcGFkZGluZzogMDsKICAgICBtYXgtd2lkdGg6IDI0cHg7
CkBAIC02Myw2ICs2NywxMCBAQAogICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFn
ZS9zdmcreG1sLDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94
PSIwIDAgMTAwIDEwMCI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAgMzApIHJvdGF0ZSgtNDUg
MzAgMTcpIiBzaGFwZS1yZW5kZXJpbmc9ImNyaXNwRWRnZXMiIGZpbGw9IndoaXRlIj48cmVjdCB5
PSI1IiB3aWR0aD0iMTAiIGhlaWdodD0iMjUiLz48cmVjdCB5PSIyMCIgd2lkdGg9IjYwIiBoZWln
aHQ9IjEwIi8+PC9nPjwvc3ZnPicpOwogfQogCisuc3RhdHVzLWxpbmUudW5hdXRob3JpemVkIC5i
dWJibGUucGljdG9ncmFtIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uv
c3ZnK3htbCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0i
MCAwIDEwMCAxMDAiPjxjbGlwUGF0aCBpZD0idG9wLXNlbWljaXJjbGUiPjxyZWN0IHg9IjAiIHk9
IjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMzciLz48L2NsaXBQYXRoPjxjaXJjbGUgY3g9IjUwIiBj
eT0iMzMiIHI9IjEzIiBjbGlwLXBhdGg9InVybCgjdG9wLXNlbWljaXJjbGUpIiBzdHJva2U9Indo
aXRlIiBzdHJva2Utd2lkdGg9IjEwIiBmaWxsPSJub25lIiAvPjxyZWN0IHg9IjI0IiB5PSIzOCIg
d2lkdGg9IjUyIiBoZWlnaHQ9IjM5IiBmaWxsPSJ3aGl0ZSIvPjwvc3ZnPicpOworfQorCiAuc3Rh
dHVzLWxpbmUuZGFuZ2VyIC5idWJibGUgewogICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzAs
IDE3NSwgNDQpOwogfQpAQCAtMTM2LDYgKzE0NCwxMSBAQAogICAgIGNvbG9yOiByZ2IoMTkxLCA2
NywgNDEpOwogfQogCisuc3RhdHVzLWxpbmUudW5hdXRob3JpemVkIC5sYWJlbCwKKy5zdGF0dXMt
bGluZS51bmF1dGhvcml6ZWQgLm1lc3NhZ2UgeworICAgIGNvbG9yOiByZ2IoMTcxLCA2MSwgMTcx
KTsKK30KKwogLnN0YXR1cy1saW5lIC5idWJibGUucG9wb3Zlci10cmFja2luZzpob3ZlciB7CiAg
ICAgdGV4dC1zaGFkb3c6IDBweCAwcHggNXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KQogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFlZjQy
MDYuLjg3NjMwNDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxNC0wMS0zMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRl
c0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0IEJvdCBXYXRjaGVyJ3MgRGFzaGJvYXJkOiBB
Y2Nlc3MgcmVzdHJpY3RlZCBxdWV1ZSBzaG91bGQgb25seSBwcm9tcHQgZm9yIEhUVFAgY3JlZGVu
dGlhbHMgb25jZSBwZXIgcGFnZSBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjc4NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDdXJyZW50bHkgd2hlbmV2ZXIgdGhlIGRhc2hib2FyZCB1cGRhdGVz
IHRoZSBzdGF0dXMgb2YgYSBxdWV1ZSB3aG9zZSBCdWlsZGJvdCByZXF1aXJlcyBhdXRoZW50aWNh
dGlvbgorICAgICAgICBpdCB3aWxsIGNhdXNlIGEgYnJvd3NlciB0byBwcm9tcHQgZm9yIGNyZWRl
bnRpYWxzIG9uY2UgcGVyIHVwZGF0ZSB1bnRpbCB2YWxpZCBjcmVkZW50aWFscyBhcmUgcHJvdmlk
ZWQuCisgICAgICAgIEluc3RlYWQgd2Ugc2hvdWxkIGtlZXAgdHJhY2sgb2YgQnVpbGRib3RzIHRo
YXQgcmVzcG9uZCB3aXRoIGFuIEhUVFAgNDAxIFVuYXV0aG9yaXplZCBzdGF0dXMgY29kZSB0byBh
dm9pZAorICAgICAgICBzdWJzZXF1ZW50bHkgcXVlcnlpbmcgdGhlbSBhbmQgaGVuY2UgY2F1c2Ug
YSBicm93c2VyIHRvIHByb21wdCBmb3IgY3JlZGVudGlhbHMuIFRvZ2V0aGVyIHdpdGggYW4gb3B0
aW9uYWwKKyAgICAgICAgaGludCBwcm92aWRlZCB3aGVuIGluc3RhbnRpYXRpbmcgYSBCdWlsZGJv
dCBvYmplY3QgYXMgdG8gd2hldGhlciBpdCByZXF1aXJlcyBhdXRoZW50aWNhdGlvbiwgd2UgY2Fu
IG1ha2UKKyAgICAgICAgdGhlIGRhc2hib2FyZCBwcm9tcHQgZm9yIEhUVFAgY3JlZGVudGlhbHMg
ZXhhY3RseSBvbmNlIHBlciBwYWdlIGxvYWQgZm9yIGVhY2ggcXVldWUgd2hvc2UgYXNzb2NpYXRl
ZAorICAgICAgICBCdWlsZGJvdCByZXF1aXJlcyBhdXRoZW50aWNhdGlvbi4KKworICAgICAgICBR
dWV1ZXMgd2hvc2UgQnVpbGRib3Qgd2Fzbid0IGF1dGhlbnRpY2F0ZWQgd2lsbCBzaG93IGluIHRo
ZSBkYXNoYm9hcmQgYXMgInVuYXV0aG9yaXplZCIuIENsaWNraW5nIG9uCisgICAgICAgIHRoaXMg
c3RhdHVzIG1lc3NhZ2Ugd2lsbCBjYXVzZSB0aGUgYnJvd3NlciB0byBwcm9tcHQgZm9yIGNyZWRl
bnRpYWxzLgorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3QuanM6CisgICAgICAg
IChCdWlsZGJvdCk6IEluaXRpYWxpemUgaW5zdGFuY2UgdmFyaWFibGUgYXV0aGVudGljYXRpb25T
dGF0dXMgdG8gQnVpbGRib3QuQXV0aGVudGljYXRpb25TdGF0dXMuVW5hdXRoZW50aWNhdGVkLgor
ICAgICAgICAoQnVpbGRib3QucHJvdG90eXBlLmdldCBuZWVkc0F1dGhlbnRpY2F0aW9uKTogQWRk
ZWQuCisgICAgICAgIChCdWlsZGJvdC5wcm90b3R5cGUuZ2V0IGF1dGhlbnRpY2F0aW9uU3RhdHVz
KTogQWRkZWQuCisgICAgICAgIChCdWlsZGJvdC5wcm90b3R5cGUuZ2V0IGlzQXV0aGVudGljYXRl
ZCk6IEFkZGVkLgorICAgICAgICAoQnVpbGRib3QucHJvdG90eXBlLnNldCBpc0F1dGhlbnRpY2F0
ZWQpOiBBZGRlZC4KKyAgICAgICAgKEJ1aWxkYm90LnByb3RvdHlwZS51cGRhdGVRdWV1ZXMpOiBB
ZGRlZC4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEJ1aWxkZXJRdWV1ZVZpZXcu
anM6CisgICAgICAgIChCdWlsZGJvdEJ1aWxkZXJRdWV1ZVZpZXcucHJvdG90eXBlLnVwZGF0ZS5h
cHBlbmRCdWlsZGVyUXVldWVTdGF0dXMpOiBNb2RpZmllZCB0byBjYWxsCisgICAgICAgIEJ1aWxk
Ym90UXVldWVWaWV3LnByb3RvdHlwZS5fYXBwZW5kVW5hdXRob3JpemVkTGluZVZpZXcoKSB0byB1
cGRhdGUgdGhlIHZpZXcgYW5kIHNob3cgc3RhdHVzIG9mIHRoZSBxdWV1ZSBhcworICAgICAgICAi
dW5hdXRob3JpemVkIiBpZiB0aGUgQnVpbGRib3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBxdWV1ZSBp
cyBlaXRoZXIgdW5hdXRoZW50aWNhdGVkIG9yIHdhcyBnaXZlbiBpbnZhbGlkIGNyZWRlbnRpYWxz
LgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90UXVldWUuanM6CisgICAgICAgIChC
dWlsZGJvdFF1ZXVlLnByb3RvdHlwZS51cGRhdGUpOiBSZXR1cm4gaW1tZWRpYXRlbHkgaWYgdGhl
IGFzc29jaWF0ZWQgQnVpbGRib3QgcmVxdWlyZXMgYXV0aGVudGljYXRpb24uCisgICAgICAgIEFk
ZGl0aW9uYWxseSwgaWYgdGhlIEpTT04gbG9hZCBmYWlscyB3aXRoIGFuIEhUVFAgNDAxIFVuYXV0
aG9yaXplZCBhY2Nlc3MgZXJyb3IgKHNheSwgY3JlZGVudGlhbHMgd2VyZQorICAgICAgICBpbnZh
bGlkYXRlZCkgdGhlbiB1cGRhdGUgdGhlIGF1dGhlbnRpY2F0aW9uIHN0YXR1cyBvZiB0aGUgQnVp
bGRib3QgdG8gYXZvaWQgc3Vic2VxdWVudGx5IHByb21wdGluZyBhCisgICAgICAgIHBlcnNvbiBm
b3IgY3JlZGVudGlhbHMgdGhlIG5leHQgdGltZSB0aGUgcXVldWUgdXBkYXRlIHRpbWVyIGZpcmVz
LgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90UXVldWVWaWV3LmpzOgorICAgICAg
ICAoQnVpbGRib3RRdWV1ZVZpZXcpOiBSZWdpc3RlciBhcyBhIGxpc3RlbmVyIGZvciBldmVudCBC
dWlsZGJvdFF1ZXVlLkV2ZW50LlVuYXV0aG9yaXplZEFjY2VzcyBvbiBlYWNoIHF1ZXVlCisgICAg
ICAgIHNvIHRoYXQgdGhlIHZpZXcgY2FuIGJlIHVwZGF0ZWQgdG8gc2hvdyBzdGF0dXMgInVuYXV0
aG9yaXplZCIuCisgICAgICAgIChCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUuX2FwcGVuZFVu
YXV0aG9yaXplZExpbmVWaWV3KTogQWRkZWQuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVp
bGRib3RUZXN0ZXJRdWV1ZVZpZXcuanM6CisgICAgICAgIChCdWlsZGJvdFRlc3RlclF1ZXVlVmll
dy5wcm90b3R5cGUudXBkYXRlLmFwcGVuZEJ1aWxkZXJRdWV1ZVN0YXR1cyk6CisgICAgICAgICog
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL1NjcmlwdHMvU3RhdHVzTGluZVZpZXcuanM6IEFkZGVkIG5ldyBzdGF0dXMsIFN0YXR1
c0xpbmVWaWV3LlN0YXR1cy5VbmF1dGhvcml6ZWQuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1N0eWxlcy9T
dGF0dXNMaW5lVmlldy5jc3M6CisgICAgICAgICguc3RhdHVzLWxpbmUudW5hdXRob3JpemVkIC5i
dWJibGUpOiBBZGRlZC4KKyAgICAgICAgKC5zdGF0dXMtbGluZS51bmF1dGhvcml6ZWQgLmJ1YmJs
ZS5waWN0b2dyYW0pOiBBZGRlZC4KKyAgICAgICAgKC5zdGF0dXMtbGluZS51bmF1dGhvcml6ZWQg
Lm1lc3NhZ2UpOiBBZGRlZC4KKwogMjAxNC0wMS0zMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIEhhdmluZyBhIGN1c3RvbSBMTFZNIGNoZWNrb3V0IHNob3VsZCBh
bHdheXMgb3ZlcnJpZGUgYWxsIG90aGVyIHdheXMgb2YgZ2V0dGluZyBMTFZNCi0tIAoxLjguMy40
IChBcHBsZSBHaXQtNDcpCgo=
</data>
<flag name="review"
          id="246875"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>222852</attachid>
            <date>2014-01-31 14:31:46 -0800</date>
            <delta_ts>2014-01-31 14:31:46 -0800</delta_ts>
            <desc>[Screenshot] Unauthorized status line</desc>
            <filename>unauthorized.png</filename>
            <type>image/png</type>
            <size>5311</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAJkAAAAoCAIAAABiqM89AAAK2WlDQ1BJQ0MgUHJvZmlsZQAASA2t
lndUU0kXwO976SGhBUKREnoTpFfpNYCCVMFGSAIJJYRAELEjiwquBRURUFd0RUTBtQCyFkQUK4K9
L8iHirIuFmyofC+wZPfs+fa/b86Zmd+7c+fOvfPunHMBaI84YnEGqgyQKcqVRAX7sWYnJLJITwAB
daCABqhyuDli38jIcPjX9uEOpo21m9YyW/+q9r8XVHj8HC4AEoktJ/NyuJkYH8N6O1csyQXA5WNy
o4W5YhlXY6wmwRzE+LCMUye4Q8bJE3xvXCcmyh/TGQIg0zgcSSqAwidMzsrjpmJ2aJoY24p4QhHG
IRh7cQUcHsZrMJ6amZklY8wHME/+m53UvzGHkyy3yeGkynkiFmwndnCAMEecwVk0/vH/HDIzpNh9
jTcDbKQJJCFR2GyK3Vl1elaYnEXJMyMm5UIsokkWSENiJ5mb44/d5cReHicgbJKl6bG+k8yRYPSn
jjCXHTPJkqwouX1RxkxZfoz7IOCz5czPCYyelKcIg9iTXCCIiZ/kPGHczEnOSY+W+1Ag8JfLJdIo
uc8pkiB5jJk52M4/z+Vy/jorVxAj+6/j/vD4AYGTzBfFyv0R5/rJ7YgzxvN7XJ+fESyX5+RFy/fm
SmLk8jROqCxfx/XFuZHyO4EYEIAURMADPkggGbIgA3KBBQEghBwQY18cwFIil5+P5SGAf5Z4kUSY
Kshl+WIvh89ii7g2U1n2tnaOALJ3KNMBeMccf18I8/Jfsuw2ALcS7J/LngBLpgXAMQI48QyA8eEv
mdFbLEU2Apzq5koleRN6eNlEACoogRpogR4YgTlYgz04gwf4QCCEQgQWSQLMBy4WTyYWyUJYAiuh
GEphI2yFStgFe2A/HIIj0Awn4SxcgCvQDbfhIfTCALyCYfgAowiCkBA6wkC0EH3EBLFC7BFXxAsJ
RMKRKCQBSUJSEREiRZYgq5BSpAypRHYjdcgvyAnkLHIJ6UHuI33IIPIW+YLiUBqqhuqipug01BX1
RcPQGHQemopmowVoEboerUBr0INoE3oWvYLeRnvRV+gIDnAKOCbOAGeNc8X54yJwibgUnAS3DFeC
K8fV4BpwrbhO3E1cL24I9xlPxDPwLLw13gMfgo/Fc/HZ+GX4dfhK/H58E74DfxPfhx/GfyfQCToE
K4I7gU2YTUglLCQUE8oJ+wjHCecJtwkDhA9EIpFJNCO6EEOICcQ04mLiOuIOYiOxjdhD7CeOkEgk
LZIVyZMUQeKQcknFpO2kg6QzpBukAdInsgJZn2xPDiInkkXkQnI5+QD5NPkG+Tl5lKJMMaG4UyIo
PMoiygbKXkor5TplgDJKVaGaUT2pMdQ06kpqBbWBep76iPpOQUHBUMFNYZaCUGGFQoXCYYWLCn0K
n2mqNEuaP20uTUpbT6ultdHu097R6XRTug89kZ5LX0+vo5+jP6F/UmQo2iiyFXmKyxWrFJsUbyi+
VqIomSj5Ks1XKlAqVzqqdF1pSJmibKrsr8xRXqZcpXxC+a7yiApDxU4lQiVTZZ3KAZVLKi9USaqm
qoGqPNUi1T2q51T7GTiGEcOfwWWsYuxlnGcMqBHVzNTYamlqpWqH1LrUhtVV1R3V49Tz1avUT6n3
MnFMUyabmcHcwDzCvMP8oqGr4avB11ir0aBxQ+Oj5hRNH02+Zolmo+ZtzS9aLK1ArXStTVrNWo+1
8dqW2rO0F2rv1D6vPTRFbYrHFO6UkilHpjzQQXUsdaJ0Fuvs0bmqM6KrpxusK9bdrntOd0iPqeej
l6a3Re+03qA+Q99LX6i/Rf+M/kuWOsuXlcGqYHWwhg10DEIMpAa7DboMRg3NDGMNCw0bDR8bUY1c
jVKMthi1Gw0b6xvPMF5iXG/8wIRi4moiMNlm0mny0dTMNN50tWmz6QszTTO2WYFZvdkjc7q5t3m2
eY35LQuihatFusUOi25L1NLJUmBZZXndCrVythJa7bDqmUqY6jZVNLVm6l1rmrWvdZ51vXWfDdMm
3KbQptnm9TTjaYnTNk3rnPbd1sk2w3av7UM7VbtQu0K7Vru39pb2XPsq+1sOdIcgh+UOLQ5vHK0c
+Y47He85MZxmOK12anf65uziLHFucB50MXZJcql2ueuq5hrpus71ohvBzc9tudtJt8/uzu657kfc
//Cw9kj3OODxYrrZdP70vdP7PQ09OZ67PXu9WF5JXj959XobeHO8a7yf+hj58Hz2+Tz3tfBN8z3o
+9rP1k/id9zvo7+7/1L/tgBcQHBASUBXoGpgbGBl4JMgw6DUoPqg4WCn4MXBbSGEkLCQTSF32bps
LruOPRzqEro0tCOMFhYdVhn2NNwyXBLeOgOdETpj84xHM01mimY2R0AEO2JzxONIs8jsyF9nEWdF
zqqa9SzKLmpJVGc0I3pB9IHoDzF+MRtiHsaax0pj2+OU4ubG1cV9jA+IL4vvnT1t9tLZVxK0E4QJ
LYmkxLjEfYkjcwLnbJ0zMNdpbvHcO/PM5uXPuzRfe37G/FMLlBZwFhxNIiTFJx1I+sqJ4NRwRpLZ
ydXJw1x/7jbuK54PbwtvkO/JL+M/T/FMKUt5keqZujl1UOAtKBcMCf2FlcI3aSFpu9I+pkek16aP
ZcRnNGaSM5MyT4hURemijiy9rPysHrGVuFjcm+2evTV7WBIm2ZeD5MzLaclVwwqeq1Jz6Q/Svjyv
vKq8TwvjFh7NV8kX5V9dZLlo7aLnBUEFPy/GL+Yubl9isGTlkr6lvkt3L0OWJS9rX260vGj5wIrg
FftXUlemr7xWaFtYVvh+Vfyq1iLdohVF/T8E/1BfrFgsKb672mP1rjX4NcI1XWsd1m5f+72EV3K5
1La0vPTrOu66yz/a/Vjx49j6lPVdG5w37NxI3CjaeGeT96b9ZSplBWX9m2dsbtrC2lKy5f3WBVsv
lTuW79pG3Sbd1lsRXtGy3Xj7xu1fKwWVt6v8qhqrdarXVn/cwdtxY6fPzoZdurtKd335SfjTvd3B
u5tqTGvK9xD35O15tjdub+fPrj/X7dPeV7rvW62otnd/1P6OOpe6ugM6BzbUo/XS+sGDcw92Hwo4
1NJg3bC7kdlYehgOSw+//CXplztHwo60H3U92nDM5Fj1ccbxkiakaVHTcLOgubcloaXnROiJ9laP
1uO/2vxae9LgZNUp9VMbTlNPF50eO1NwZqRN3DZ0NvVsf/uC9ofnZp+71TGro+t82PmLF4IunOv0
7Txz0fPiyUvul05cdr3cfMX5StNVp6vHrzldO97l3NV03eV6S7dbd2vP9J7TN7xvnL0ZcPPCLfat
K7dn3u65E3vn3t25d3vv8e69uJ9x/82DvAejD1c8Ijwqeaz8uPyJzpOa3yx+a+x17j3VF9B39Wn0
04f93P5X/8n5z9eBomf0Z+XP9Z/XvbB/cXIwaLD75ZyXA6/Er0aHin9X+b36tfnrY3/4/HF1ePbw
wBvJm7G3695pvat97/i+fSRy5MmHzA+jH0s+aX3a/9n1c+eX+C/PRxd+JX2t+GbxrfV72PdHY5lj
Y2KOhDNeC+CwEU1JAXhbC0BPwGqHbgCq4kSdPK6BTNT2GCN/dpn4HzxRS8sWsBoCan0AYlcAhLcB
7MS6CcY0bJaVTDE+gDo4yDsmkbWcFAf7cUBoEqw0+TQ29k4XgNQK8E0yNja6Y2zs216snr8P0JY9
UZ/LtInKAGVmGkzl369dwpb/0f4LHRcJjjSv3x4AAAGcaVRYdFhNTDpjb20uYWRvYmUueG1wAAAA
AAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA1
LjQuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8y
Mi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAg
ICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAg
ICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjE1MzwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAg
ICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj40MDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAg
ICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgo/9Ym4AAAH
+UlEQVR4Ae1abUwTZxx/uF5b2kK1FCxgoeIsBQQ3xZcM/SDZPhmn2TTzw5ItOuXLsrlMzUxGFmJY
XLIl6ub8MDczk33ZssS4kZgYN5nJ2CCiU97EA2sLFGrpC8Ur7V177H+9chyUl14F6cg9adr/Pc//
7f6/5/+8Ns05aEVSWRYRwJbFW0gvwUZAwnL59AMJSwnL5ROB5fMmUl4uHyzxpF8lMBgcbvF4O/3k
wBg9EgY98hW4ZrVKV6bN3pqlzktPWrMkmFwE0pLYkwCKj68MPPnLPYfJVdv1a15fLSE6R4gWvEk0
loM3XQ8vPR5nxud1JQ1LKz60Jq86Z15OiWFBIiBujLVfdTz6uX+a4Uxjpr5MD5XuTvdo/yjfCnh3
f2el/XTh3ny+UiIWLwIisISMjAdy0web1u1dx/vXc7Xn7jd3xyOTWQsicq1cyk4+RItHJLqOhTkS
htZpfmx8b6MQSGiFx/J3yqexgSCIT6uUHhc8AoliCYudaXOkSq8yv2EGh+y/26/uuwofIODRcsCi
0CqEjoIgiAtrJHoxIpAQlpBV8atWXbGOc6j9h/aQLwQfIKAGw7EsS9Y0X0H8+aTmGAELcwqsU0Rv
Y00vS4kpw5dvN16ca30+m7KRG+2NR6OGZ+NY/PqEsIR9ZLwnTJjhKnF1bNLlCeF8yQvOqIRvXSgi
0GTrvkGy2tgdL5bQ6wlsqzbmm7apBRWJkowvjMYSZV4kvoTWPnAgIDSfVZJV9WkV1AScAfjecWoH
38rVbDm+BWqaTjV5Hkx2AlASv6ANW+3Nl9GWukIYlBmX8/Yn7hfOlGG3OolHSlW/221HWOGK9bUW
vQaFCMe98/2BYVCM5RwpXr9TO3Kjkwjkb96zEqq81zp76Xyz2tF2HZ6IW+7cyn0IkSRxud15HZzE
V39cZt4Axxe045fenit+6IbKKkP5YVOmEmQf2JBW1eUYtOnLXwuN0BlMtrf5hIPJhp6AyXUokp5V
ebIw0mVvOzMUIJHcrCv5yKzXIsbj7vjK6iYYzJyh9lJIBaaXsiTUceFkR+ijTC5TG9TzfoBNKDVN
CdfEBGmaoDk6PPw0QAYhnRiSCjS5Q5WFFbWFavvIg2s+FPHfqesPFudWfF5StFvhutjjJBHtCgS8
EU424mPpdEuOoQJDZt3aXStx9goo4HygLK0rLqhiBs4PhGDX9GvXwyt+3cGi8mO5qMnZetoOgzBD
Bn0/9g+61KZ3VyHXU/8TGqWrC44YTW8VmF7BAwSF1mlw11Bz/RCqNlbUmjQOb9tpG4XGOt7vdTsy
LPUl6zYxT6GTJZPPwgg9K51QXnJHdM9oamYlQvs427FY/GkGVRg3789lLe52dJDjSJZuOmjMrM7P
lEWwQiXEn21i0eL7IksrC/S5pj4XyjFu0FIETHt4ea05W4NycH1fk9dHBod/CioPFFe8yqaytjbS
VD/sJQtZFzS6bafNkFfDHaweLGulcSfU0kSdFZkNlfv13l/ugIRljwF4LCeCzXUuT68MDBR9VpIH
ZyFF5Uzf7Z6HILKURRjLpfRDaBs2p1hebMCa2KjiKtXY/bdbYimMFFNSHqG0CXk2TylOiEGaFVoN
2xBm504ko4IwVWSsiaWPolinRC6fg9bTDLY9O36AHLzcNkCoX7xkii7KIVD+uzWtrKJocT+EsQpT
TOSiKgv7f8yXcGhOeSfCOPEyYn9ByQwi0Shz9Vgs22biImz3LrgNR0vNWzNx0tVY0weYsXAqYiCG
nzKI3wfxRHQNNKlOoQTAaA+8SJTDEwghTGuQTzIIKLKlu/t6uOiLlwBwKON0GFXkV500YiEGQyHn
7UCGgXRBQ2yMR2EqthIU6HjeJD9GzWUYbj/mak6sbUYlsIGBWayPCIb9/u7zMGjN7A+3ZlbkKNnl
zNdWMBgJsbFj/nGNkBGyy97VyMgnIGRso6MsYPFFZdiJ+S8SNmuQ8vg66vsRWqHVxrOhsMPRem5E
udu0KoMadZCjLkq7WYfaHETLKMLHPX/0dl/oo4p0sPrpvmAbjTrQfZ1B7DnmUpaZciXOH7jG8rZP
WcrGscxfAUrimXDzalOl21Z3vw+WDlUZaBjWIpMDJkvLMUQhxdpcg9ndV/svsCkr1RgK9Pzm3bGr
QN1gjY57mDI6lgK/xqJDDUOtJ+nNJ+BBaJDtJXmHSv3uLmvtfbY7aNSWs2uBRXgixaW5788n0FNC
DbbmhqgGjf7lb4tKD4x1neticxFmgGOlepkmsz6/tdbRWuOMMi39V0L3JLDNbzl+n3c2pyKn+mw1
/zgbcfPDm6626LtHObZ+uWG2K7AwSTO4TKGcOSl5/ZNsITqMy3F2kGUoMoKlczTPOA/BgHgYU2hY
eXElEqGCDKaRCzIg6sCUGnEqF5B7nvBxlgADuI98FqsgPhuQoBbXyOcFcgqbkgcPIOHpRB3ElPJk
gAT1MhlrboqdqANTapbsYapjs7sBF8uuvz3ckSw5RLZ93zY7b6wF2DgKLjJBfF5+ieEZI5DQGMvZ
gDsvuI9Mwp7lcJF055VE3MSKJDTGckoBj7VvGsUaABEJSLFBS44/0TGW0w4HqnCxLP1HJLlYL7aU
iDGWdwWWtdJ/t/hopA6RDJac94Co9J/K1AESPEkey5R6DckZiICItY8UrxSPgIRligMkwj0JSxHB
SnFWCcsUB0iEexKWIoKV4qwSlikOkAj3JCxFBCvFWSUsUxwgEe5JWIoIVoqz/gdFZRhQTuTYDwAA
AABJRU5ErkJggg==
</data>

          </attachment>
      

    </bug>

</bugzilla>