<?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>58259</bug_id>
          
          <creation_ts>2011-04-11 13:01:16 -0700</creation_ts>
          <short_desc>Web Inspector: Enable raw HTTP headers support</short_desc>
          <delta_ts>2011-04-15 00:08:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>58127</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>caseq</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>383404</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-04-11 13:01:16 -0700</bug_when>
    <thetext>Web Inspector should be able to show raw HTTP headers and report true headers size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383418</commentid>
    <comment_count>1</comment_count>
      <attachid>89064</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-04-11 13:14:03 -0700</bug_when>
    <thetext>Created attachment 89064
Patch

Some notes for this patch:
1) Only raw headers information is used if it is received by Inspector, except request/status lines parameters are not extracted from raw headers.
2) Double-click to toggle between raw/parsed headers.
3) Lazy headers size computation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383819</commentid>
    <comment_count>2</comment_count>
      <attachid>89064</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-04-11 22:33:02 -0700</bug_when>
    <thetext>Comment on attachment 89064
Patch

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

&gt; LayoutTests/inspector/http-headers-parser.html:9
&gt; +InspectorTest.createHeaders = function(lines)

just declare them as &quot;function createHeaders()&quot; in your &quot;function test()&quot;

&gt; Source/WebCore/inspector/Inspector.json:285
&gt; +                    &quot;rawHeaders&quot;: { &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Raw HTTP response headers.&quot; },

I&apos;d suggest renaming these to rawHttpRequest and rawHttpResponse since they contain not only headers. It might require you to rename it in multiple places.

&gt; Source/WebCore/inspector/front-end/Resource.js:387
&gt; +        if (!this._requestHeaders &amp;&amp; this._rawRequestHeaders)

So we only use this parser when there are no requestHeaders? But I think we do have them at all times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383968</commentid>
    <comment_count>3</comment_count>
      <attachid>89064</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-04-12 06:19:55 -0700</bug_when>
    <thetext>Comment on attachment 89064
Patch

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

&gt; Source/WebCore/inspector/front-end/HTTPHeadersParser.js:36
&gt; +        if (!this._initialize(requestHeaders))

When are we supposed to hit this check (and the one in _initialize())?

&gt; Source/WebCore/inspector/front-end/HTTPHeadersParser.js:40
&gt; +            return null;

So we return undefined in line 37, null here -- is this the intent?

&gt; Source/WebCore/inspector/front-end/HTTPHeadersParser.js:51
&gt; +            console.log(&quot;Failed parsing status line from: &quot; + this._input);

This seems to be the only line different from parseRequesHeaders(). I&apos;d rather not copy 10 lines because of a log message -- let&apos;s just have a generic error message instead?

&gt; Source/WebCore/inspector/front-end/Resource.js:409
&gt; +        this._requestHeaders = null;

Why not just delete this for consistency with the rest of the code?

&gt; Source/WebCore/inspector/front-end/ResourceHeadersView.js:327
&gt; +            this._refreshURL();

Shouldn&apos;t we also call this._refreshFormData() here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384292</commentid>
    <comment_count>4</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-04-12 13:21:12 -0700</bug_when>
    <thetext>As discussed raw headers are passed to inspector as well as parsed ones,
so there is no need in HTTPHeadersParser anymore.

&gt; &gt; Source/WebCore/inspector/Inspector.json:285
&gt; &gt; +                    &quot;rawHeaders&quot;: { &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Raw HTTP response headers.&quot; },
&gt; 
&gt; I&apos;d suggest renaming these to rawHttpRequest and rawHttpResponse since they contain not only headers. It might require you to rename it in multiple places.

As discussed current naming is fine and less confusing than rawHttpRequest and rawHttpResponse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384295</commentid>
    <comment_count>5</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-04-12 13:24:40 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/inspector/front-end/Resource.js:409
&gt; &gt; +        this._requestHeaders = null;
&gt; 
&gt; Why not just delete this for consistency with the rest of the code?
Done.
 
&gt; &gt; Source/WebCore/inspector/front-end/ResourceHeadersView.js:327
&gt; &gt; +            this._refreshURL();
&gt; 
&gt; Shouldn&apos;t we also call this._refreshFormData() here?
This piece of code is removed now, but I checked that we call this._refreshFormData() in each scenario.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384296</commentid>
    <comment_count>6</comment_count>
      <attachid>89258</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-04-12 13:26:09 -0700</bug_when>
    <thetext>Created attachment 89258
Patch with fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384789</commentid>
    <comment_count>7</comment_count>
      <attachid>89258</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-04-13 04:28:10 -0700</bug_when>
    <thetext>Comment on attachment 89258
Patch with fixes

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

&gt; Source/WebCore/inspector/Inspector.json:344
&gt; +                    &quot;timing&quot;: { &quot;$ref&quot;: &quot;ResourceTiming&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Timing information for the given request.&quot; },

you will need to merge this.

&gt; Source/WebCore/inspector/Inspector.json:345
&gt; +                    &quot;rawHeaders&quot;: { &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Raw HTTP response headers.&quot; },

rawHeadersText ?
rawRequestHeadersText ?

&gt; Source/WebCore/inspector/front-end/Resource.js:425
&gt; +        if (typeof(this._requestHeadersSize) === &apos;undefined&apos;) {

Please use double quotes.

&gt; Source/WebCore/inspector/front-end/ResourceHeadersView.js:219
&gt; +            this._refreshHeaders(WebInspector.UIString(&quot;Request Headers&quot;), this._resource.sortedRequestHeaders, additionalRow, this._requestHeadersTreeElement, rawHeadersToggleFunction);

Could you pass boolean flag instead of passing the function?

&gt; Source/WebCore/inspector/front-end/ResourceHeadersView.js:282
&gt; +    _refreshHeaders: function(title, headers, additionalRow, headersTreeElement, rawHeadersToggleFunction)

usually we don&apos;t pass functions other than callbacks. What is it needed for?

&gt; Source/WebKit/chromium/src/WebHTTPLoadInfo.cpp:120
&gt; +    m_private-&gt;rawRequestHeaders = rawHeaders;

Headers above are not less raw, should you rename this to setRawRequestHeadersText?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384924</commentid>
    <comment_count>8</comment_count>
      <attachid>89258</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-04-13 09:00:30 -0700</bug_when>
    <thetext>Comment on attachment 89258
Patch with fixes

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

&gt;&gt; Source/WebCore/inspector/Inspector.json:344
&gt;&gt; +                    &quot;timing&quot;: { &quot;$ref&quot;: &quot;ResourceTiming&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Timing information for the given request.&quot; },
&gt; 
&gt; you will need to merge this.

Merged.

&gt;&gt; Source/WebCore/inspector/Inspector.json:345
&gt;&gt; +                    &quot;rawHeaders&quot;: { &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Raw HTTP response headers.&quot; },
&gt; 
&gt; rawHeadersText ?
&gt; rawRequestHeadersText ?

Done.

&gt;&gt; Source/WebCore/inspector/front-end/Resource.js:425
&gt;&gt; +        if (typeof(this._requestHeadersSize) === &apos;undefined&apos;) {
&gt; 
&gt; Please use double quotes.

Done.

&gt;&gt; Source/WebCore/inspector/front-end/ResourceHeadersView.js:219

&gt; 
&gt; Could you pass boolean flag instead of passing the function?

Removed this logic from _refreshHeaders/_refreshRawHeaders functions.

&gt;&gt; Source/WebKit/chromium/src/WebHTTPLoadInfo.cpp:120
&gt;&gt; +    m_private-&gt;rawRequestHeaders = rawHeaders;
&gt; 
&gt; Headers above are not less raw, should you rename this to setRawRequestHeadersText?

Added text everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384926</commentid>
    <comment_count>9</comment_count>
      <attachid>89384</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-04-13 09:02:43 -0700</bug_when>
    <thetext>Created attachment 89384
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385626</commentid>
    <comment_count>10</comment_count>
      <attachid>89384</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-04-14 03:53:03 -0700</bug_when>
    <thetext>Comment on attachment 89384
Patch

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

Couple of nits, otherwise looks good.

&gt; Source/WebCore/inspector/front-end/ResourceHeadersView.js:226
&gt; +

nit: remove extra space

&gt; Source/WebCore/inspector/front-end/ResourceHeadersView.js:324
&gt; +        var title = &quot;&lt;span class=\&quot;header-value source-code\&quot;&gt;&quot; + String(rawHeadersText).trim().escapeHTML() + &quot;&lt;/span&gt;&quot;

You should fill this is programmatically (once item is appended, you can reference its listItemElement and fill it in).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385673</commentid>
    <comment_count>11</comment_count>
      <attachid>89562</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-04-14 05:35:56 -0700</bug_when>
    <thetext>Created attachment 89562
Patch

All done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385785</commentid>
    <comment_count>12</comment_count>
      <attachid>89562</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-14 08:47:52 -0700</bug_when>
    <thetext>Comment on attachment 89562
Patch

Rejecting attachment 89562 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-8&apos;, &apos;apply-...&quot; exit_code: 1

Last 500 characters of output:
ls/Scripts/webkitpy/common/system/executive.py&quot;, line 372, in run_command
    output = process.communicate(string_to_communicate)[0]
  File &quot;/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py&quot;, line 671, in communicate
    return self._communicate(input)
  File &quot;/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py&quot;, line 1177, in _communicate
    bytes_written = os.write(self.stdin.fileno(), chunk)
OSError: [Errno 32] Broken pipe

Full output: http://queues.webkit.org/results/8399663</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385941</commentid>
    <comment_count>13</comment_count>
      <attachid>89620</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-04-14 12:04:12 -0700</bug_when>
    <thetext>Created attachment 89620
patch with binary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386396</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-14 22:52:58 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 89620:

http/tests/xmlhttprequest/cross-origin-no-authorization.html bug 33357 (author: ap@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386397</commentid>
    <comment_count>15</comment_count>
      <attachid>89620</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-14 22:55:52 -0700</bug_when>
    <thetext>Comment on attachment 89620
patch with binary

Clearing flags on attachment: 89620

Committed r83950: &lt;http://trac.webkit.org/changeset/83950&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386398</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-14 22:55:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386425</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-15 00:08:46 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 89620:

http/tests/xmlhttprequest/basic-auth.html bug 51613 (author: ap@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89064</attachid>
            <date>2011-04-11 13:14:03 -0700</date>
            <delta_ts>2011-04-12 13:26:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>headers_webkit</filename>
            <type>text/plain</type>
            <size>32329</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZDRkNTE4Li4zZGZmYTc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDQt
MTEgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRW5hYmxl
IHJhdyBIVFRQIGhlYWRlcnMgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTgyNTkKKworICAgICAgICBBZGRlZCByYXcgaGVhZGVycyBzdXBw
b3J0IHRvIGluc3BlY3Rvci4KKworICAgICAgICAqIGluc3BlY3Rvci9odHRwLWhlYWRlcnMtcGFy
c2VyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2h0dHAtaGVhZGVy
cy1wYXJzZXIuaHRtbDogQWRkZWQuCisKIDIwMTEtMDQtMDcgIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHVuc2tpcCBhIGZhc3Qv
eG1saHR0cHJlcXVlc3QgdGVzdCBwYXNzaW5nIG9uIEdUSy4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9odHRwLWhlYWRlcnMtcGFyc2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9odHRwLWhlYWRlcnMtcGFyc2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGEzYzI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2h0dHAtaGVhZGVycy1wYXJzZXItZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNzkgQEAKK1Rlc3RzIGluc3BlY3RvciBIVFRQIGhlYWRlcnMgcGFyc2VyLgorCitzb3Vy
Y2U6IEdFVCAvaW5kZXguaHRtbCBIVFRQLzEuMQ0KK0hvc3Q6IHNpdGVzLmdvb2dsZS5jb20NCitV
c2VyLUFnZW50OiBNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCB4ODZfNjQ7IGVuLVVTOyBydjox
LjkuMi4xNikgR2Vja28vMjAxMTAzMjMgVWJ1bnR1LzEwLjA0IChsdWNpZCkgRmlyZWZveC8zLjYu
MTYgR1RCNy4xDQorQWNjZXB0OiB0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxp
Y2F0aW9uL3htbDtxPTAuOSwqLyo7cT0wLjgNCitBY2NlcHQtTGFuZ3VhZ2U6IGVuLXVzLGVuO3E9
MC43LHJ1O3E9MC4zDQorQWNjZXB0LUVuY29kaW5nOiBnemlwLGRlZmxhdGUNCitBY2NlcHQtQ2hh
cnNldDogSVNPLTg4NTktMSx1dGYtODtxPTAuNywqO3E9MC43DQorS2VlcC1BbGl2ZTogMTE1DQor
Q29ubmVjdGlvbjoga2VlcC1hbGl2ZQ0KKw0KKworeworICAgIEhvc3QgOiAic2l0ZXMuZ29vZ2xl
LmNvbSIKKyAgICBVc2VyLUFnZW50IDogIk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82
NDsgZW4tVVM7IHJ2OjEuOS4yLjE2KSBHZWNrby8yMDExMDMyMyBVYnVudHUvMTAuMDQgKGx1Y2lk
KSBGaXJlZm94LzMuNi4xNiBHVEI3LjEiCisgICAgQWNjZXB0IDogInRleHQvaHRtbCxhcHBsaWNh
dGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LCovKjtxPTAuOCIKKyAgICBBY2Nl
cHQtTGFuZ3VhZ2UgOiAiZW4tdXMsZW47cT0wLjcscnU7cT0wLjMiCisgICAgQWNjZXB0LUVuY29k
aW5nIDogImd6aXAsZGVmbGF0ZSIKKyAgICBBY2NlcHQtQ2hhcnNldCA6ICJJU08tODg1OS0xLHV0
Zi04O3E9MC43LCo7cT0wLjciCisgICAgS2VlcC1BbGl2ZSA6ICIxMTUiCisgICAgQ29ubmVjdGlv
biA6ICJrZWVwLWFsaXZlIgorfQorc291cmNlOiBHRVQgL2luZGV4Lmh0bWwgSFRUUC8xLjENCitI
b3N0OiAgICAgICBzaXRlcy5nb29nbGUuY29tDQorVXNlci1BZ2VudDogTW96aWxsYS81LjAgKFgx
MTsgVTsNCisJIExpbnV4DQorICB4ODZfNjQ7IGVuLVVTOyBydjoxLjkuMi4xNikgR2Vja28vMjAx
MTAzMjMgVWJ1bnR1LzEwLjA0IChsdWNpZCkgRmlyZWZveC8zLjYuMTYgR1RCNy4xDQorQWNjZXB0
OiB0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSwq
Lyo7cT0wLjgNCitBY2NlcHQtTGFuZ3VhZ2U6IGVuLXVzLGVuO3E9MC43LHJ1O3E9MC4zDQorQWNj
ZXB0LUVuY29kaW5nOiBnemlwLGRlZmxhdGUNCitBY2NlcHQtQ2hhcnNldDogSVNPLTg4NTktMSx1
dGYtODtxPTAuNywqO3E9MC43DQorS2VlcC1BbGl2ZTogMTE1DQorQ29ubmVjdGlvbjoga2VlcC1h
bGl2ZQ0KKw0KKworeworICAgIEhvc3QgOiAic2l0ZXMuZ29vZ2xlLmNvbSIKKyAgICBVc2VyLUFn
ZW50IDogIk1vemlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgZW4tVVM7IHJ2OjEuOS4y
LjE2KSBHZWNrby8yMDExMDMyMyBVYnVudHUvMTAuMDQgKGx1Y2lkKSBGaXJlZm94LzMuNi4xNiBH
VEI3LjEiCisgICAgQWNjZXB0IDogInRleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBw
bGljYXRpb24veG1sO3E9MC45LCovKjtxPTAuOCIKKyAgICBBY2NlcHQtTGFuZ3VhZ2UgOiAiZW4t
dXMsZW47cT0wLjcscnU7cT0wLjMiCisgICAgQWNjZXB0LUVuY29kaW5nIDogImd6aXAsZGVmbGF0
ZSIKKyAgICBBY2NlcHQtQ2hhcnNldCA6ICJJU08tODg1OS0xLHV0Zi04O3E9MC43LCo7cT0wLjci
CisgICAgS2VlcC1BbGl2ZSA6ICIxMTUiCisgICAgQ29ubmVjdGlvbiA6ICJrZWVwLWFsaXZlIgor
fQorc291cmNlOiBIVFRQLzEuMSAyMDAgT0sNCitDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hh
cnNldD11dGYtOA0KK0NvbnRlbnQtRW5jb2Rpbmc6IGd6aXANCitUcmFuc2Zlci1FbmNvZGluZzog
Y2h1bmtlZA0KK0RhdGU6IE1vbiwgMTEgQXByIDIwMTEgMTU6MTk6NDQgR01UDQorRXhwaXJlczog
TW9uLCAxMSBBcHIgMjAxMSAxNToxOTo0NCBHTVQNCisNCisKK3sKKyAgICBDb250ZW50LVR5cGUg
OiAidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IgorICAgIENvbnRlbnQtRW5jb2RpbmcgOiAiZ3pp
cCIKKyAgICBUcmFuc2Zlci1FbmNvZGluZyA6ICJjaHVua2VkIgorICAgIERhdGUgOiAiTW9uLCAx
MSBBcHIgMjAxMSAxNToxOTo0NCBHTVQiCisgICAgRXhwaXJlcyA6ICJNb24sIDExIEFwciAyMDEx
IDE1OjE5OjQ0IEdNVCIKK30KK3NvdXJjZTogSFRUUC8xLjEgMjAwIE9LDQorQ29udGVudC1UeXBl
OiB0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgNCitDb250ZW50LUVuY29kaW5nOiAgIA0KKwkgZ3pp
cA0KK1RyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkDQorRGF0ZTogTW9uLCAxMSBBcHIgMjAxMQ0K
KyAgIAkgICAgMTU6MTk6NDQgR01UDQorRXhwaXJlczogTW9uLCAxMSBBcHIgMjAxMSAxNToxOTo0
NCBHTVQNCisNCisKK3sKKyAgICBDb250ZW50LVR5cGUgOiAidGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04IgorICAgIENvbnRlbnQtRW5jb2RpbmcgOiAiZ3ppcCIKKyAgICBUcmFuc2Zlci1FbmNvZGlu
ZyA6ICJjaHVua2VkIgorICAgIERhdGUgOiAiTW9uLCAxMSBBcHIgMjAxMSAxNToxOTo0NCBHTVQi
CisgICAgRXhwaXJlcyA6ICJNb24sIDExIEFwciAyMDExIDE1OjE5OjQ0IEdNVCIKK30KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2h0dHAtaGVhZGVycy1wYXJzZXIuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9odHRwLWhlYWRlcnMtcGFyc2VyLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVmYzI2NgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9odHRwLWhlYWRlcnMtcGFyc2VyLmh0bWwKQEAgLTAsMCArMSw5
MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+CisKK2Z1bmN0aW9uIGluaXRpYWxpemVfSFRUUEhlYWRlcnNUZXN0cygpCit7CisKK0lu
c3BlY3RvclRlc3QuY3JlYXRlSGVhZGVycyA9IGZ1bmN0aW9uKGxpbmVzKQoreworICAgIHZhciBy
ZXN1bHQgPSAiIjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7
CisgICAgICAgIHJlc3VsdCArPSBsaW5lc1tpXTsKKyAgICAgICAgcmVzdWx0ICs9ICJcclxuIjsK
KyAgICB9CisgICAgcmVzdWx0ICs9ICJcclxuIjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitJ
bnNwZWN0b3JUZXN0LnBhcnNlQW5kRHVtcFJlc3BvbnNlSGVhZGVycyA9IGZ1bmN0aW9uKGhlYWRl
cnMpCit7CisgICAgdmFyIHBhcnNlciA9IG5ldyBXZWJJbnNwZWN0b3IuSFRUUEhlYWRlcnNQYXJz
ZXIoKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgic291cmNlOiAiICsgaGVhZGVycyk7
CisgICAgSW5zcGVjdG9yVGVzdC5hZGRPYmplY3QocGFyc2VyLnBhcnNlUmVzcG9uc2VIZWFkZXJz
KGhlYWRlcnMpKTsKK30KKworSW5zcGVjdG9yVGVzdC5wYXJzZUFuZER1bXBSZXF1ZXN0SGVhZGVy
cyA9IGZ1bmN0aW9uKGhlYWRlcnMpCit7CisgICAgdmFyIHBhcnNlciA9IG5ldyBXZWJJbnNwZWN0
b3IuSFRUUEhlYWRlcnNQYXJzZXIoKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgic291
cmNlOiAiICsgaGVhZGVycyk7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRPYmplY3QocGFyc2VyLnBh
cnNlUmVxdWVzdEhlYWRlcnMoaGVhZGVycykpOworfQorCit9CisKK3ZhciB0ZXN0ID0gZnVuY3Rp
b24oKQoreworICAgIC8vIFNpbXBsZSBoZWFkZXJzCisgICAgSW5zcGVjdG9yVGVzdC5wYXJzZUFu
ZER1bXBSZXF1ZXN0SGVhZGVycyhJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYWRlcnMoWworICAgICAg
ICAiR0VUIC9pbmRleC5odG1sIEhUVFAvMS4xIiwKKyAgICAgICAgIkhvc3Q6IHNpdGVzLmdvb2ds
ZS5jb20iLAorICAgICAgICAiVXNlci1BZ2VudDogTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXgg
eDg2XzY0OyBlbi1VUzsgcnY6MS45LjIuMTYpIEdlY2tvLzIwMTEwMzIzIFVidW50dS8xMC4wNCAo
bHVjaWQpIEZpcmVmb3gvMy42LjE2IEdUQjcuMSIsCisgICAgICAgICJBY2NlcHQ6IHRleHQvaHRt
bCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LCovKjtxPTAuOCIs
CisgICAgICAgICJBY2NlcHQtTGFuZ3VhZ2U6IGVuLXVzLGVuO3E9MC43LHJ1O3E9MC4zIiwKKyAg
ICAgICAgIkFjY2VwdC1FbmNvZGluZzogZ3ppcCxkZWZsYXRlIiwKKyAgICAgICAgIkFjY2VwdC1D
aGFyc2V0OiBJU08tODg1OS0xLHV0Zi04O3E9MC43LCo7cT0wLjciLAorICAgICAgICAiS2VlcC1B
bGl2ZTogMTE1IiwKKyAgICAgICAgIkNvbm5lY3Rpb246IGtlZXAtYWxpdmUiCisgICAgICAgIF0p
KTsKKworICAgIC8vIEhlYWRlcnMgd2l0aCBmb2xkaW5nIGFuZCBleHRyYSB3aGl0ZXNwYWNlCisg
ICAgSW5zcGVjdG9yVGVzdC5wYXJzZUFuZER1bXBSZXF1ZXN0SGVhZGVycyhJbnNwZWN0b3JUZXN0
LmNyZWF0ZUhlYWRlcnMoWworICAgICAgICAiR0VUIC9pbmRleC5odG1sIEhUVFAvMS4xIiwKKyAg
ICAgICAgIkhvc3Q6ICAgICAgIHNpdGVzLmdvb2dsZS5jb20iLAorICAgICAgICAiVXNlci1BZ2Vu
dDogTW96aWxsYS81LjAgKFgxMTsgVTtcclxuXHQgTGludXhcclxuICB4ODZfNjQ7IGVuLVVTOyBy
djoxLjkuMi4xNikgR2Vja28vMjAxMTAzMjMgVWJ1bnR1LzEwLjA0IChsdWNpZCkgRmlyZWZveC8z
LjYuMTYgR1RCNy4xIiwKKyAgICAgICAgIkFjY2VwdDogdGV4dC9odG1sLGFwcGxpY2F0aW9uL3ho
dG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksKi8qO3E9MC44IiwKKyAgICAgICAgIkFjY2Vw
dC1MYW5ndWFnZTogZW4tdXMsZW47cT0wLjcscnU7cT0wLjMiLAorICAgICAgICAiQWNjZXB0LUVu
Y29kaW5nOiBnemlwLGRlZmxhdGUiLAorICAgICAgICAiQWNjZXB0LUNoYXJzZXQ6IElTTy04ODU5
LTEsdXRmLTg7cT0wLjcsKjtxPTAuNyIsCisgICAgICAgICJLZWVwLUFsaXZlOiAxMTUiLAorICAg
ICAgICAiQ29ubmVjdGlvbjoga2VlcC1hbGl2ZSIKKyAgICAgICAgXSkpOworCisgICAgLy8gU2lt
cGxlIGhlYWRlcnMKKyAgICBJbnNwZWN0b3JUZXN0LnBhcnNlQW5kRHVtcFJlc3BvbnNlSGVhZGVy
cyhJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYWRlcnMoWworICAgICAgICAiSFRUUC8xLjEgMjAwIE9L
IiwKKyAgICAgICAgIkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiwKKyAg
ICAgICAgIkNvbnRlbnQtRW5jb2Rpbmc6IGd6aXAiLAorICAgICAgICAiVHJhbnNmZXItRW5jb2Rp
bmc6IGNodW5rZWQiLAorICAgICAgICAiRGF0ZTogTW9uLCAxMSBBcHIgMjAxMSAxNToxOTo0NCBH
TVQiLAorICAgICAgICAiRXhwaXJlczogTW9uLCAxMSBBcHIgMjAxMSAxNToxOTo0NCBHTVQiLAor
ICAgICAgICBdKSk7CisKKyAgICAvLyBIZWFkZXJzIHdpdGggZm9sZGluZyBhbmQgZXh0cmEgd2hp
dGVzcGFjZQorICAgIEluc3BlY3RvclRlc3QucGFyc2VBbmREdW1wUmVzcG9uc2VIZWFkZXJzKElu
c3BlY3RvclRlc3QuY3JlYXRlSGVhZGVycyhbCisgICAgICAgICJIVFRQLzEuMSAyMDAgT0siLAor
ICAgICAgICAiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiLAorICAgICAg
ICAiQ29udGVudC1FbmNvZGluZzogICBcclxuXHQgZ3ppcCIsCisgICAgICAgICJUcmFuc2Zlci1F
bmNvZGluZzogY2h1bmtlZCIsCisgICAgICAgICJEYXRlOiBNb24sIDExIEFwciAyMDExXHJcbiAg
IFx0ICAgIDE1OjE5OjQ0IEdNVCIsCisgICAgICAgICJFeHBpcmVzOiBNb24sIDExIEFwciAyMDEx
IDE1OjE5OjQ0IEdNVCIsCisgICAgICAgIF0pKTsKKworICAgIEluc3BlY3RvclRlc3QuY29tcGxl
dGVUZXN0KCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorPHA+VGVzdHMgaW5zcGVjdG9yIEhUVFAgaGVhZGVycyBwYXJzZXIuPC9wPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM4MjRjMDMuLjFhYjQ1Y2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNyBAQAorMjAxMS0wNC0xMSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBFbmFibGUgcmF3IEhUVFAgaGVhZGVycyBzdXBwb3J0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODI1OQorCisgICAgICAg
IEFkZGVkIHJhdyBoZWFkZXJzIHN1cHBvcnQgdG8gaW5zcGVjdG9yLgorCisgICAgICAgIFRlc3Q6
IGluc3BlY3Rvci9odHRwLWhlYWRlcnMtcGFyc2VyLmh0bWwKKworICAgICAgICAqIEVuZ2xpc2gu
bHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9y
UmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9IVFRQSGVh
ZGVyc1BhcnNlci5qczogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3
b3JrTWFuYWdlci5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpz
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VIZWFkZXJzVmlldy5qczoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlTG9hZEluZm8uaDoKKwogMjAxMS0wNC0wNiAgSWx5YSBUaWtob25vdnNreSAg
PGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hh
dHNreS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVk
U3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5n
cy5qcwppbmRleCAxNTkzOGQ5N2Q5ODY3NmY4MTA5MThkM2RiMGI4NTQwODUxZmVjNmRjLi40MjE2
MDQ2ODI4Njk2YWU2MjZlYWRkYTNiOWQ2MjliNDUwZGQ0OGM2IDEwMDY0NApHSVQgYmluYXJ5IHBh
dGNoCmRlbHRhIDk0CnpjbVoyNnBMeD9sPF8le29DKHBDNmt1UDlLV0dHQE5XPUxnN1ZOZHxGXlQy
Y3drV34pa1hHfWd7Q09LS2YodkcwSQpOLSh9e1RQZyZsWjNJTis/OGJrbTkKCmRlbHRhIDE0Cldj
bWRuQWthQCo/PF8le29IKCNeNUdaZz9lOzBLQlQKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZTlmN2Yy
YS4uZTJmNmY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjE4Nyw2ICs2MTg3LDcgQEAKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcycsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hlbHBTY3JlZW4uanMnLAorICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvSFRUUEhlYWRlcnNQYXJzZXIuanMnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvSW1hZ2VWaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL0luc3BlY3RvckZyb250ZW5kSG9zdFN0dWIuanMnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRGYWtlV29ya2VyLmpzJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA1ZWEyM2Y0Li5kMDc3ZjY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yODEsNyArMjgxLDkgQEAKICAgICAgICAg
ICAgICAgICAgICAgImNvbm5lY3Rpb25SZXVzZWQiOiB7ICJ0eXBlIjogImJvb2xlYW4iLCAiZGVz
Y3JpcHRpb24iOiAiU3BlY2lmaWVzIHdoZXRoZXIgcGh5c2ljYWwgY29ubmVjdGlvbiB3YXMgYWN0
dWFsbHkgcmV1c2VkIGZvciB0aGlzIHJlcXVlc3QuIiB9LAogICAgICAgICAgICAgICAgICAgICAi
Y29ubmVjdGlvbklEIjogeyAidHlwZSI6ICJudW1iZXIiLCAiZGVzY3JpcHRpb24iOiAiUGh5c2lj
YWwgY29ubmVjdGlvbiBpZCB0aGF0IHdhcyBhY3R1YWxseSB1c2VkIGZvciB0aGlzIHJlcXVlc3Qu
IiB9LAogICAgICAgICAgICAgICAgICAgICAiZnJvbURpc2tDYWNoZSI6IHsgInR5cGUiOiAiYm9v
bGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJTcGVjaWZpZXMgdGhhdCB0
aGUgcmVzb3VyY2Ugd2FzIGxvYWRlZCBmcm9tIHRoZSBkaXNrIGNhY2hlLiIgfSwKLSAgICAgICAg
ICAgICAgICAgICAgInRpbWluZyI6IHsgIiRyZWYiOiAiUmVzb3VyY2VUaW1pbmciLCAib3B0aW9u
YWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGltaW5nIGluZm9ybWF0aW9uIGZvciB0aGUgZ2l2
ZW4gcmVxdWVzdC4iIH0KKyAgICAgICAgICAgICAgICAgICAgInRpbWluZyI6IHsgIiRyZWYiOiAi
UmVzb3VyY2VUaW1pbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGltaW5n
IGluZm9ybWF0aW9uIGZvciB0aGUgZ2l2ZW4gcmVxdWVzdC4iIH0sCisgICAgICAgICAgICAgICAg
ICAgICJyYXdIZWFkZXJzIjogeyAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiUmF3IEhUVFAgcmVzcG9uc2UgaGVhZGVycy4iIH0sCisgICAgICAgICAg
ICAgICAgICAgICJyYXdSZXF1ZXN0SGVhZGVycyI6IHsgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlv
bmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlJhdyBIVFRQIHJlcXVlc3QgaGVhZGVycy4iIH0K
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmlu
ZGV4IGYyNzM3NGYuLjI0NDdmNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTIyMSw3ICsyMjEsNiBAQCBzdGF0aWMg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25z
ZShjb25zdCBSZXNvdXJjZQogCiAgICAgcmVzcG9uc2VPYmplY3QtPnNldE51bWJlcigic3RhdHVz
IiwgcmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpID8gcmVzcG9uc2UucmVzb3VyY2VMb2FkSW5m
bygpLT5odHRwU3RhdHVzQ29kZSA6IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogICAgIHJl
c3BvbnNlT2JqZWN0LT5zZXRTdHJpbmcoInN0YXR1c1RleHQiLCByZXNwb25zZS5yZXNvdXJjZUxv
YWRJbmZvKCkgPyByZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCktPmh0dHBTdGF0dXNUZXh0IDog
cmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSk7Ci0gICAgcmVzcG9uc2VPYmplY3QtPnNldE9iamVj
dCgiaGVhZGVycyIsIGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhyZXNwb25zZS5yZXNvdXJjZUxvYWRJ
bmZvKCkgPyByZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCktPnJlc3BvbnNlSGVhZGVycyA6IHJl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKSkpOwogCiAgICAgcmVzcG9uc2VPYmplY3QtPnNldFN0
cmluZygibWltZVR5cGUiLCByZXNwb25zZS5taW1lVHlwZSgpKTsKICAgICByZXNwb25zZU9iamVj
dC0+c2V0Qm9vbGVhbigiY29ubmVjdGlvblJldXNlZCIsIHJlc3BvbnNlLmNvbm5lY3Rpb25SZXVz
ZWQoKSk7CkBAIC0yMzAsOCArMjI5LDE4IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlCiAgICAg
aWYgKHJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpKQogICAgICAgICByZXNwb25zZU9iamVj
dC0+c2V0T2JqZWN0KCJ0aW1pbmciLCBidWlsZE9iamVjdEZvclRpbWluZygqcmVzcG9uc2UucmVz
b3VyY2VMb2FkVGltaW5nKCkpKTsKIAotICAgIGlmIChyZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZv
KCkpCi0gICAgICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRPYmplY3QoInJlcXVlc3RIZWFkZXJzIiwg
YnVpbGRPYmplY3RGb3JIZWFkZXJzKHJlc3BvbnNlLnJlc291cmNlTG9hZEluZm8oKS0+cmVxdWVz
dEhlYWRlcnMpKTsKKyAgICBpZiAocmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpKSB7CisgICAg
ICAgIGlmICghcmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpLT5yYXdSZXNwb25zZUhlYWRlcnMu
aXNFbXB0eSgpKQorICAgICAgICAgICAgcmVzcG9uc2VPYmplY3QtPnNldFN0cmluZygicmF3SGVh
ZGVycyIsIHJlc3BvbnNlLnJlc291cmNlTG9hZEluZm8oKS0+cmF3UmVzcG9uc2VIZWFkZXJzKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzcG9uc2VPYmplY3QtPnNldE9iamVjdCgiaGVh
ZGVycyIsIGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhyZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCkt
PnJlc3BvbnNlSGVhZGVycykpOworCisgICAgICAgIGlmICghcmVzcG9uc2UucmVzb3VyY2VMb2Fk
SW5mbygpLT5yYXdSZXF1ZXN0SGVhZGVycy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXNwb25z
ZU9iamVjdC0+c2V0U3RyaW5nKCJyYXdSZXF1ZXN0SGVhZGVycyIsIHJlc3BvbnNlLnJlc291cmNl
TG9hZEluZm8oKS0+cmF3UmVxdWVzdEhlYWRlcnMpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICByZXNwb25zZU9iamVjdC0+c2V0T2JqZWN0KCJyZXF1ZXN0SGVhZGVycyIsIGJ1aWxkT2JqZWN0
Rm9ySGVhZGVycyhyZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCktPnJlcXVlc3RIZWFkZXJzKSk7
CisgICAgfSBlbHNlCisgICAgICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRPYmplY3QoImhlYWRlcnMi
LCBidWlsZE9iamVjdEZvckhlYWRlcnMocmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpKSk7CiAK
ICAgICByZXR1cm4gcmVzcG9uc2VPYmplY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hUVFBIZWFkZXJzUGFyc2VyLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IVFRQSGVhZGVyc1BhcnNlci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGMzOTIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IVFRQSGVhZGVyc1BhcnNlci5qcwpAQCAtMCww
ICsxLDExNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgR09PR0xFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMKKyAqIOKAnEFTIElT4oCdIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgR09PR0xFIElOQy4KKyAqIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkhUVFBIZWFkZXJz
UGFyc2VyID0gZnVuY3Rpb24oKQoreworfQorCitXZWJJbnNwZWN0b3IuSFRUUEhlYWRlcnNQYXJz
ZXIucHJvdG90eXBlID0geworICAgIHBhcnNlUmVxdWVzdEhlYWRlcnM6IGZ1bmN0aW9uKHJlcXVl
c3RIZWFkZXJzKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9pbml0aWFsaXplKHJlcXVlc3RI
ZWFkZXJzKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCF0aGlzLl9lYXRMaW5l
KCkpIHsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJGYWlsZWQgcGFyc2luZyByZXF1ZXN0IGxp
bmUgZnJvbTogIiArIHRoaXMuX2lucHV0KTsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAg
ICAgICB9CisgICAgICAgIHRoaXMuX3BhcnNlS2V5VmFsdWVIZWFkZXJzKCk7CisgICAgICAgIHJl
dHVybiB0aGlzLl9oZWFkZXJzOworICAgIH0sCisKKyAgICBwYXJzZVJlc3BvbnNlSGVhZGVyczog
ZnVuY3Rpb24ocmVzcG9uc2VIZWFkZXJzKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9pbml0
aWFsaXplKHJlc3BvbnNlSGVhZGVycykpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlm
ICghdGhpcy5fZWF0TGluZSgpKSB7CisgICAgICAgICAgICBjb25zb2xlLmxvZygiRmFpbGVkIHBh
cnNpbmcgc3RhdHVzIGxpbmUgZnJvbTogIiArIHRoaXMuX2lucHV0KTsKKyAgICAgICAgICAgIHJl
dHVybiBudWxsOworICAgICAgICB9CisgICAgICAgIHRoaXMuX3BhcnNlS2V5VmFsdWVIZWFkZXJz
KCk7CisgICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJzOworICAgIH0sCisKKyAgICBfcGFyc2VL
ZXlWYWx1ZUhlYWRlcnM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2lucHV0ID0g
dGhpcy5faW5wdXQucmVwbGFjZSgvXHJcblsgXHRdKy9nLCAiICIpOyAvLyByZW1vdmUgZm9sZGlu
ZworICAgICAgICB0aGlzLl9pbnB1dCA9IHRoaXMuX2lucHV0LnJlcGxhY2UoL1sgXHRdKy9nLCAi
ICIpOyAvLyB0cmltIGFsbCB3aGl0ZXNwYWNlCisgICAgICAgIHZhciBsaW5lOworICAgICAgICB3
aGlsZSAobGluZSA9IHRoaXMuX2VhdExpbmUoKSkgeworICAgICAgICAgICAgdmFyIGt2ID0gdGhp
cy5fcGFyc2VIZWFkZXJMaW5lKGxpbmUpOworICAgICAgICAgICAgaWYgKGt2KQorICAgICAgICAg
ICAgICAgIHRoaXMuX2FkZEhlYWRlcihrdik7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX2lu
aXRpYWxpemU6IGZ1bmN0aW9uKGhlYWRlcnMpCisgICAgeworICAgICAgICB0aGlzLl9pbnB1dCA9
IGhlYWRlcnM7CisgICAgICAgIAorICAgICAgICBpZiAodHlwZW9mIGhlYWRlcnMgIT09ICJzdHJp
bmciKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB0aGlzLl9oZWFkZXJzID0g
e307CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisKKyAgICBfZWF0TGluZTogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdmFyIG1hdGNoID0gL14oLiopXHJcbi8uZXhlYyh0aGlzLl9p
bnB1dCk7CisgICAgICAgIGlmICghbWF0Y2gpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5faW5wdXQuc2xpY2UobWF0Y2hbMF0ubGVuZ3RoKTsK
KyAgICAgICAgcmV0dXJuIG1hdGNoWzFdOworICAgIH0sCisKKyAgICBfcGFyc2VIZWFkZXJMaW5l
OiBmdW5jdGlvbihsaW5lKQorICAgIHsKKyAgICAgICAgdmFyIG1hdGNoID0gL14oW146XSopOigu
KikkLy5leGVjKGxpbmUpOworICAgICAgICBpZiAoIW1hdGNoKSB7CisgICAgICAgICAgICBjb25z
b2xlLmxvZygiRmFpbGVkIHBhcnNpbmcgaGVhZGVyIGZyb206ICIgKyBsaW5lKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICB2YXIgcmVzdWx0ID0geworICAg
ICAgICAgICAga2V5OiBtYXRjaFsxXSwKKyAgICAgICAgICAgIHZhbHVlOiBtYXRjaFsyXS50cmlt
KCkKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCisgICAgX2Fk
ZEhlYWRlcjogZnVuY3Rpb24oa2V5VmFsdWUpCisgICAgeworICAgICAgICB0aGlzLl9oZWFkZXJz
W2tleVZhbHVlLmtleV0gPSBrZXlWYWx1ZS52YWx1ZTsKKyAgICB9Cit9OworCitXZWJJbnNwZWN0
b3IuSFRUUEhlYWRlcnNQYXJzZXIucGFyc2VSZXF1ZXN0SGVhZGVycyA9IGZ1bmN0aW9uKGhlYWRl
cnMpCit7CisgICAgcmV0dXJuIChuZXcgV2ViSW5zcGVjdG9yLkhUVFBIZWFkZXJzUGFyc2VyKCkp
LnBhcnNlUmVxdWVzdEhlYWRlcnMoaGVhZGVycyk7Cit9OworCitXZWJJbnNwZWN0b3IuSFRUUEhl
YWRlcnNQYXJzZXIucGFyc2VSZXNwb25zZUhlYWRlcnMgPSBmdW5jdGlvbihoZWFkZXJzKQorewor
ICAgIHJldHVybiAobmV3IFdlYkluc3BlY3Rvci5IVFRQSGVhZGVyc1BhcnNlcigpKS5wYXJzZVJl
c3BvbnNlSGVhZGVycyhoZWFkZXJzKTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcwppbmRleCA5OGFhMDYwLi4yYTVjZGI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtN
YW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29y
a01hbmFnZXIuanMKQEAgLTkxLDkgKzkxLDE1IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrRGlzcGF0
Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJlc291cmNlLm1pbWVUeXBlID0gcmVzcG9uc2Uu
bWltZVR5cGU7CiAgICAgICAgIHJlc291cmNlLnN0YXR1c0NvZGUgPSByZXNwb25zZS5zdGF0dXM7
CiAgICAgICAgIHJlc291cmNlLnN0YXR1c1RleHQgPSByZXNwb25zZS5zdGF0dXNUZXh0OwotICAg
ICAgICByZXNvdXJjZS5yZXNwb25zZUhlYWRlcnMgPSByZXNwb25zZS5oZWFkZXJzOwotICAgICAg
ICAvLyBSYXcgcmVxdWVzdCBoZWFkZXJzIGNhbiBiZSBhIHBhcnQgb2YgcmVzcG9uc2UgYXMgd2Vs
bC4KLSAgICAgICAgaWYgKHJlc3BvbnNlLnJlcXVlc3RIZWFkZXJzKQorCisgICAgICAgIGlmIChy
ZXNwb25zZS5yYXdIZWFkZXJzKQorICAgICAgICAgICAgcmVzb3VyY2UucmF3UmVzcG9uc2VIZWFk
ZXJzID0gcmVzcG9uc2UucmF3SGVhZGVyczsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVz
b3VyY2UucmVzcG9uc2VIZWFkZXJzID0gcmVzcG9uc2UuaGVhZGVyczsKKyAgICAgICAgCisgICAg
ICAgIGlmIChyZXNwb25zZS5yYXdSZXF1ZXN0SGVhZGVycykKKyAgICAgICAgICAgIHJlc291cmNl
LnJhd1JlcXVlc3RIZWFkZXJzID0gcmVzcG9uc2UucmF3UmVxdWVzdEhlYWRlcnM7CisgICAgICAg
IGVsc2UgaWYgKHJlc3BvbnNlLnJlcXVlc3RIZWFkZXJzKQogICAgICAgICAgICAgcmVzb3VyY2Uu
cmVxdWVzdEhlYWRlcnMgPSByZXNwb25zZS5yZXF1ZXN0SGVhZGVyczsKIAogICAgICAgICByZXNv
dXJjZS5jb25uZWN0aW9uUmV1c2VkID0gcmVzcG9uc2UuY29ubmVjdGlvblJldXNlZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCmluZGV4IDBmNjk0
NDEuLjZkNWMxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUmVzb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZS5qcwpAQCAtMzMsNyArMzMsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgPSBmdW5j
dGlvbihpZGVudGlmaWVyLCB1cmwpCiAgICAgdGhpcy5fZW5kVGltZSA9IC0xOwogICAgIHRoaXMu
X2NhdGVnb3J5ID0gV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5vdGhlcjsKICAgICB0
aGlzLl9wZW5kaW5nQ29udGVudENhbGxiYWNrcyA9IFtdOwotICAgIHRoaXMuX3Jlc3BvbnNlSGVh
ZGVyc1NpemUgPSAwOwogfQogCiAvLyBLZWVwIHRoZXNlIGluIHN5bmMgd2l0aCBXZWJDb3JlOjpJ
bnNwZWN0b3JSZXNvdXJjZTo6VHlwZQpAQCAtMjQwLDcgKzIzOSw3IEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLmNhY2hlZCkKICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICBpZiAodGhpcy5zdGF0dXNDb2RlID09PSAzMDQpIC8vIE5v
dCBtb2RpZmllZAotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1NpemU7
CisgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXNwb25zZUhlYWRlcnNTaXplOwogICAgICAgICBp
ZiAodGhpcy5fdHJhbnNmZXJTaXplICE9PSB1bmRlZmluZWQpCiAgICAgICAgICAgICByZXR1cm4g
dGhpcy5fdHJhbnNmZXJTaXplOwogICAgICAgICAvLyBJZiB3ZSBkaWQgbm90IHJlY2VpdmUgYWN0
dWFsIHRyYW5zZmVyIHNpemUgZnJvbSBuZXR3b3JrCkBAIC0yNTQsNyArMjUzLDcgQEAgV2ViSW5z
cGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gd29yayBmb3IgY2h1bmtz
IHdpdGggbm9uLXRyaXZpYWwgZW5jb2RpbmdzLiBXZSBuZWVkIGEgd2F5IHRvCiAgICAgICAgIC8v
IGdldCBhY3R1YWwgdHJhbnNmZXIgc2l6ZSBmcm9tIHRoZSBuZXR3b3JrIHN0YWNrLgogICAgICAg
ICB2YXIgYm9keVNpemUgPSBOdW1iZXIodGhpcy5yZXNwb25zZUhlYWRlcnNbIkNvbnRlbnQtTGVu
Z3RoIl0gfHwgdGhpcy5yZXNvdXJjZVNpemUpOwotICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9u
c2VIZWFkZXJzU2l6ZSArIGJvZHlTaXplOworICAgICAgICByZXR1cm4gdGhpcy5yZXNwb25zZUhl
YWRlcnNTaXplICsgYm9keVNpemU7CiAgICAgfSwKIAogICAgIGluY3JlYXNlVHJhbnNmZXJTaXpl
OiBmdW5jdGlvbih4KQpAQCAtMzg1LDYgKzM4NCw4IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5w
cm90b3R5cGUgPSB7CiAKICAgICBnZXQgcmVxdWVzdEhlYWRlcnMoKQogICAgIHsKKyAgICAgICAg
aWYgKCF0aGlzLl9yZXF1ZXN0SGVhZGVycyAmJiB0aGlzLl9yYXdSZXF1ZXN0SGVhZGVycykKKyAg
ICAgICAgICAgIHRoaXMuX3JlcXVlc3RIZWFkZXJzID0gV2ViSW5zcGVjdG9yLkhUVFBIZWFkZXJz
UGFyc2VyLnBhcnNlUmVxdWVzdEhlYWRlcnModGhpcy5fcmF3UmVxdWVzdEhlYWRlcnMpOwogICAg
ICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdEhlYWRlcnMgfHwge307CiAgICAgfSwKIApAQCAtMzk3
LDYgKzM5OCwzMiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygicmVxdWVzdEhlYWRlcnMgY2hhbmdlZCIp
OwogICAgIH0sCiAKKyAgICBnZXQgcmF3UmVxdWVzdEhlYWRlcnMoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX3Jhd1JlcXVlc3RIZWFkZXJzOworICAgIH0sCisKKyAgICBzZXQgcmF3UmVx
dWVzdEhlYWRlcnMoeCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jhd1JlcXVlc3RIZWFkZXJzID0g
eDsKKyAgICAgICAgdGhpcy5fcmVxdWVzdEhlYWRlcnMgPSBudWxsOworICAgICAgICBkZWxldGUg
dGhpcy5fc29ydGVkUmVxdWVzdEhlYWRlcnM7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9yZXF1ZXN0
Q29va2llczsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygicmVxdWVz
dEhlYWRlcnMgY2hhbmdlZCIpOworICAgIH0sCisKKyAgICBnZXQgcmVxdWVzdEhlYWRlcnNTaXpl
KCkKKyAgICB7CisgICAgICAgIGlmICh0eXBlb2YodGhpcy5fcmVxdWVzdEhlYWRlcnNTaXplKSA9
PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9yYXdSZXF1ZXN0SGVhZGVy
cykKKyAgICAgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0SGVhZGVyc1NpemUgPSB0aGlzLl9yYXdS
ZXF1ZXN0SGVhZGVycy5sZW5ndGg7CisgICAgICAgICAgICBlbHNlIAorICAgICAgICAgICAgICAg
IHRoaXMuX3JlcXVlc3RIZWFkZXJzU2l6ZSA9IHRoaXMuX2hlYWRlcnNTaXplKHRoaXMuX3JlcXVl
c3RIZWFkZXJzKQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0SGVhZGVy
c1NpemU7CisgICAgfSwKKwogICAgIGdldCBzb3J0ZWRSZXF1ZXN0SGVhZGVycygpCiAgICAgewog
ICAgICAgICBpZiAodGhpcy5fc29ydGVkUmVxdWVzdEhlYWRlcnMgIT09IHVuZGVmaW5lZCkKQEAg
LTQzNSwxOSArNDYyLDQ5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAK
ICAgICBnZXQgcmVzcG9uc2VIZWFkZXJzKCkKICAgICB7CisgICAgICAgIGlmICghdGhpcy5fcmVz
cG9uc2VIZWFkZXJzICYmIHRoaXMuX3Jhd1Jlc3BvbnNlSGVhZGVycykKKyAgICAgICAgICAgIHRo
aXMuX3Jlc3BvbnNlSGVhZGVycyA9IFdlYkluc3BlY3Rvci5IVFRQSGVhZGVyc1BhcnNlci5wYXJz
ZVJlc3BvbnNlSGVhZGVycyh0aGlzLl9yYXdSZXNwb25zZUhlYWRlcnMpOwogICAgICAgICByZXR1
cm4gdGhpcy5fcmVzcG9uc2VIZWFkZXJzIHx8IHt9OwogICAgIH0sCiAKICAgICBzZXQgcmVzcG9u
c2VIZWFkZXJzKHgpCiAgICAgewogICAgICAgICB0aGlzLl9yZXNwb25zZUhlYWRlcnMgPSB4Owot
ICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHRha2UgYWN0dWFsIGhlYWRlcnMgc2l6ZSBmcm9t
IG5ldHdvcmsgc3RhY2ssIHdoZW4gcG9zc2libGUuCi0gICAgICAgIHRoaXMuX3Jlc3BvbnNlSGVh
ZGVyc1NpemUgPSB0aGlzLl9oZWFkZXJzU2l6ZSh4KTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3Jl
c3BvbnNlSGVhZGVyc1NpemU7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9yYXdSZXNwb25zZUhlYWRl
cnM7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9zb3J0ZWRSZXNwb25zZUhlYWRlcnM7CiAgICAgICAg
IGRlbGV0ZSB0aGlzLl9yZXNwb25zZUNvb2tpZXM7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoInJlc3BvbnNlSGVhZGVycyBjaGFuZ2VkIik7CiAgICAgfSwKKyAgICAK
KyAgICBnZXQgcmF3UmVzcG9uc2VIZWFkZXJzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9yYXdSZXNwb25zZUhlYWRlcnM7CisgICAgfSwKKworICAgIHNldCByYXdSZXNwb25zZUhlYWRl
cnMoeCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jhd1Jlc3BvbnNlSGVhZGVycyA9IHg7CisgICAg
ICAgIGRlbGV0ZSB0aGlzLl9yZXNwb25zZUhlYWRlcnNTaXplOworICAgICAgICBkZWxldGUgdGhp
cy5fcmVzcG9uc2VIZWFkZXJzOworICAgICAgICBkZWxldGUgdGhpcy5fc29ydGVkUmVzcG9uc2VI
ZWFkZXJzOworICAgICAgICBkZWxldGUgdGhpcy5fcmVzcG9uc2VDb29raWVzOworCisgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJyZXNwb25zZUhlYWRlcnMgY2hhbmdlZCIp
OworICAgIH0sCisgICAgCisgICAgZ2V0IHJlc3BvbnNlSGVhZGVyc1NpemUoKQorICAgIHsKKyAg
ICAgICAgaWYgKHR5cGVvZih0aGlzLl9yZXNwb25zZUhlYWRlcnNTaXplKSA9PT0gJ3VuZGVmaW5l
ZCcpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9yYXdSZXNwb25zZUhlYWRlcnMpCisgICAgICAg
ICAgICAgICAgdGhpcy5fcmVzcG9uc2VIZWFkZXJzU2l6ZSA9IHRoaXMuX3Jhd1Jlc3BvbnNlSGVh
ZGVycy5sZW5ndGg7CisgICAgICAgICAgICBlbHNlIAorICAgICAgICAgICAgICAgIHRoaXMuX3Jl
c3BvbnNlSGVhZGVyc1NpemUgPSB0aGlzLl9oZWFkZXJzU2l6ZSh0aGlzLl9yZXNwb25zZUhlYWRl
cnMpCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1NpemU7
CisgICAgfSwKKyAgICAKIAogICAgIGdldCBzb3J0ZWRSZXNwb25zZUhlYWRlcnMoKQogICAgIHsK
QEAgLTUyNiw5ICs1ODMsMTAgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsK
IAogICAgIF9oZWFkZXJzU2l6ZTogZnVuY3Rpb24oaGVhZGVycykKICAgICB7CisgICAgICAgIC8v
IEZJWE1FOiB3ZSBzaG91bGQgdGFrZSBhY3R1YWwgaGVhZGVycyBzaXplIGZyb20gbmV0d29yayBz
dGFjaywgd2hlbiBwb3NzaWJsZS4KICAgICAgICAgdmFyIHNpemUgPSAwOwogICAgICAgICBmb3Ig
KHZhciBoZWFkZXIgaW4gaGVhZGVycykKLSAgICAgICAgICAgIHNpemUgKz0gaGVhZGVyLmxlbmd0
aCArIGhlYWRlcnNbaGVhZGVyXS5sZW5ndGggKyAzOyAvLyBfdHlwaWNhbF8gb3ZlcmhlYWQgcGVy
IGhlcmFkZXIgaXMgIjogIi5sZW5ndGggKyAiXG4iLmxlbmd0aC4KKyAgICAgICAgICAgIHNpemUg
Kz0gaGVhZGVyLmxlbmd0aCArIGhlYWRlcnNbaGVhZGVyXS5sZW5ndGggKyA0OyAvLyBfdHlwaWNh
bF8gb3ZlcmhlYWQgcGVyIGhlcmFkZXIgaXMgIjogIi5sZW5ndGggKyAiXHJcbiIubGVuZ3RoLgog
ICAgICAgICByZXR1cm4gc2l6ZTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlSGVhZGVyc1ZpZXcuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlSGVhZGVyc1ZpZXcuanMKaW5kZXggZTc5
MDc4YS4uMWI0ZGQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZUhlYWRlcnNWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VIZWFkZXJzVmlldy5qcwpAQCAtNjIsNiArNjIsOSBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQogICAgIHRo
aXMuX2RlY29kZUhvdmVyID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEb3VibGUtQ2xpY2sgdG8g
dG9nZ2xlIGJldHdlZW4gVVJMIGVuY29kZWQgYW5kIGRlY29kZWQgZm9ybWF0cyIpOwogICAgIHRo
aXMuX2RlY29kZVJlcXVlc3RQYXJhbWV0ZXJzID0gdHJ1ZTsKIAorICAgIHRoaXMuX3Jhd0hlYWRl
cnNIb3ZlciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRG91YmxlLUNsaWNrIHRvIHRvZ2dsZSBi
ZXR3ZWVuIHBhcnNlZCBhbmQgcmF3IGhlYWRlcnMiKTsKKyAgICB0aGlzLl9zaG93UmF3SGVhZGVy
cyA9IGZhbHNlOworCiAgICAgdGhpcy5fcXVlcnlTdHJpbmdUcmVlRWxlbWVudCA9IG5ldyBUcmVl
RWxlbWVudCgiIiwgbnVsbCwgdHJ1ZSk7CiAgICAgdGhpcy5fcXVlcnlTdHJpbmdUcmVlRWxlbWVu
dC5leHBhbmRlZCA9IHRydWU7CiAgICAgdGhpcy5fcXVlcnlTdHJpbmdUcmVlRWxlbWVudC5zZWxl
Y3RhYmxlID0gZmFsc2U7CkBAIC0yMDIsOCArMjA1LDEyIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZUhlYWRlcnNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGFkZGl0aW9uYWxSb3cgPSBu
dWxsOwogICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3Jlc291cmNlLndlYlNvY2tldFJlcXVlc3RL
ZXkzICE9PSAidW5kZWZpbmVkIikKICAgICAgICAgICAgIGFkZGl0aW9uYWxSb3cgPSB7aGVhZGVy
OiAiKEtleTMpIiwgdmFsdWU6IHRoaXMuX3Jlc291cmNlLndlYlNvY2tldFJlcXVlc3RLZXkzfTsK
LSAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnMoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXF1
ZXN0IEhlYWRlcnMiKSwgdGhpcy5fcmVzb3VyY2Uuc29ydGVkUmVxdWVzdEhlYWRlcnMsIGFkZGl0
aW9uYWxSb3csIHRoaXMuX3JlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQpOwotICAgICAgICB0aGlz
Ll9yZWZyZXNoRm9ybURhdGEoKTsKKyAgICAgICAgaWYgKHRoaXMuX3Nob3dSYXdIZWFkZXJzKQor
ICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFJhd0hlYWRlcnMoV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJSZXF1ZXN0IEhlYWRlcnMiKSwgdGhpcy5fcmVzb3VyY2UucmF3UmVxdWVzdEhlYWRlcnMsIHRo
aXMuX3JlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJzKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCBI
ZWFkZXJzIiksIHRoaXMuX3Jlc291cmNlLnNvcnRlZFJlcXVlc3RIZWFkZXJzLCBhZGRpdGlvbmFs
Um93LCB0aGlzLl9yZXF1ZXN0SGVhZGVyc1RyZWVFbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMu
X3JlZnJlc2hGb3JtRGF0YSgpOworICAgICAgICB9CiAgICAgfSwKIAogICAgIF9yZWZyZXNoUmVz
cG9uc2VIZWFkZXJzOiBmdW5jdGlvbigpCkBAIC0yMTEsNyArMjE4LDEwIEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZUhlYWRlcnNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGFkZGl0aW9u
YWxSb3cgPSBudWxsOwogICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3Jlc291cmNlLndlYlNvY2tl
dENoYWxsZW5nZVJlc3BvbnNlICE9PSAidW5kZWZpbmVkIikKICAgICAgICAgICAgIGFkZGl0aW9u
YWxSb3cgPSB7aGVhZGVyOiAiKENoYWxsZW5nZSBSZXNwb25zZSkiLCB2YWx1ZTogdGhpcy5fcmVz
b3VyY2Uud2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2V9OwotICAgICAgICB0aGlzLl9yZWZyZXNo
SGVhZGVycyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc3BvbnNlIEhlYWRlcnMiKSwgdGhpcy5f
cmVzb3VyY2Uuc29ydGVkUmVzcG9uc2VIZWFkZXJzLCBhZGRpdGlvbmFsUm93LCB0aGlzLl9yZXNw
b25zZUhlYWRlcnNUcmVlRWxlbWVudCk7CisgICAgICAgIGlmICh0aGlzLl9zaG93UmF3SGVhZGVy
cykKKyAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hSYXdIZWFkZXJzKFdlYkluc3BlY3Rvci5VSVN0
cmluZygiUmVzcG9uc2UgSGVhZGVycyIpLCB0aGlzLl9yZXNvdXJjZS5yYXdSZXNwb25zZUhlYWRl
cnMsIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1RyZWVFbGVtZW50KTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnMoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNw
b25zZSBIZWFkZXJzIiksIHRoaXMuX3Jlc291cmNlLnNvcnRlZFJlc3BvbnNlSGVhZGVycywgYWRk
aXRpb25hbFJvdywgdGhpcy5fcmVzcG9uc2VIZWFkZXJzVHJlZUVsZW1lbnQpOwogICAgIH0sCiAK
ICAgICBfcmVmcmVzaEhUVFBJbmZvcm1hdGlvbjogZnVuY3Rpb24oKQpAQCAtMjU5LDYgKzI2OSwx
MSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICBoZWFkZXJUcmVlRWxlbWVudC50aXRsZUhUTUwgPSB0aXRsZTsKICAgICAgICAgICAg
IGhlYWRlclRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKICAgICAgICAgICAgIGhlYWRl
cnNUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChoZWFkZXJUcmVlRWxlbWVudCk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGlmICh0aGlzLl9oYXNSYXdIZWFkZXJzKCkpIHsKKyAgICAgICAgICAg
ICAgICBoZWFkZXJUcmVlRWxlbWVudC50b29sdGlwID0gdGhpcy5fcmF3SGVhZGVyc0hvdmVyOwor
ICAgICAgICAgICAgICAgIGhlYWRlclRyZWVFbGVtZW50Lm9uZGJsY2xpY2sgPSB0aGlzLl90b2dn
bGVSYXdIZWFkZXJzLmJpbmQodGhpcyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoYWRkaXRpb25hbFJvdykgewpAQCAtMjY5LDcgKzI4NCw1MiBAQCBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VIZWFkZXJzVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBoZWFkZXJU
cmVlRWxlbWVudC50aXRsZUhUTUwgPSB0aXRsZTsKICAgICAgICAgICAgIGhlYWRlclRyZWVFbGVt
ZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKICAgICAgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC5h
cHBlbmRDaGlsZChoZWFkZXJUcmVlRWxlbWVudCk7CisKKyAgICAgICAgICAgIGlmICh0aGlzLl9o
YXNSYXdIZWFkZXJzKCkpIHsKKyAgICAgICAgICAgICAgICBoZWFkZXJUcmVlRWxlbWVudC50b29s
dGlwID0gdGhpcy5fcmF3SGVhZGVyc0hvdmVyOworICAgICAgICAgICAgICAgIGhlYWRlclRyZWVF
bGVtZW50Lm9uZGJsY2xpY2sgPSB0aGlzLl90b2dnbGVSYXdIZWFkZXJzLmJpbmQodGhpcyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9LAorICAgIAorICAgIF9oYXNSYXdIZWFkZXJz
OiBmdW5jdGlvbih0aXRsZSwgcmF3SGVhZGVycywgaGVhZGVyc1RyZWVFbGVtZW50KQorICAgIHsK
KyAgICAgICAgcmV0dXJuICh0aGlzLl9yZXNvdXJjZS5yYXdSZXF1ZXN0SGVhZGVycyB8fCB0aGlz
Ll9yZXNvdXJjZS5yYXdSZXNwb25zZUhlYWRlcnMpOworICAgIH0sCisgICAgCisgICAgX3JlZnJl
c2hSYXdIZWFkZXJzOiBmdW5jdGlvbih0aXRsZSwgcmF3SGVhZGVycywgaGVhZGVyc1RyZWVFbGVt
ZW50KQorICAgIHsKKyAgICAgICAgaGVhZGVyc1RyZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7
CisgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC5oaWRkZW4gPSAhcmF3SGVhZGVycy5sZW5ndGg7
CisgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC50aXRsZUhUTUwgPSB0aXRsZS5lc2NhcGVIVE1M
KCk7CisKKyAgICAgICAgdmFyIHRpdGxlID0gIjxkaXYgY2xhc3M9XCJoZWFkZXItdmFsdWUgc291
cmNlLWNvZGVcIj4iICsgU3RyaW5nKHJhd0hlYWRlcnMpLmVzY2FwZUhUTUwoKSArICI8L2Rpdj4i
CisgICAgICAgIHZhciBoZWFkZXJUcmVlRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudChudWxsLCBu
dWxsLCBmYWxzZSk7CisgICAgICAgIGhlYWRlclRyZWVFbGVtZW50LnRpdGxlSFRNTCA9IHRpdGxl
OworICAgICAgICBoZWFkZXJUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7CisgICAgICAg
IGhlYWRlcnNUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChoZWFkZXJUcmVlRWxlbWVudCk7CisgICAg
ICAgIGhlYWRlclRyZWVFbGVtZW50LnRvb2x0aXAgPSB0aGlzLl9yYXdIZWFkZXJzSG92ZXI7Cisg
ICAgICAgIGhlYWRlclRyZWVFbGVtZW50Lm9uZGJsY2xpY2sgPSB0aGlzLl90b2dnbGVSYXdIZWFk
ZXJzLmJpbmQodGhpcyk7CisgICAgfSwKKworICAgIF90b2dnbGVSYXdIZWFkZXJzOiBmdW5jdGlv
bihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Nob3dSYXdIZWFkZXJzID0gIXRoaXMuX3No
b3dSYXdIZWFkZXJzOworCisgICAgICAgIHRoaXMuX3VybFRyZWVFbGVtZW50LmhpZGRlbiA9IHRo
aXMuX3Nob3dSYXdIZWFkZXJzOworICAgICAgICB0aGlzLl9yZXF1ZXN0TWV0aG9kVHJlZUVsZW1l
bnQuaGlkZGVuID0gdGhpcy5fc2hvd1Jhd0hlYWRlcnM7CisgICAgICAgIHRoaXMuX3N0YXR1c0Nv
ZGVUcmVlRWxlbWVudC5oaWRkZW4gPSB0aGlzLl9zaG93UmF3SGVhZGVyczsKKyAgICAgICAgdGhp
cy5fcXVlcnlTdHJpbmdUcmVlRWxlbWVudC5oaWRkZW4gPSB0aGlzLl9zaG93UmF3SGVhZGVyczsK
KyAgICAgICAgdGhpcy5fZm9ybURhdGFUcmVlRWxlbWVudC5oaWRkZW4gPSB0aGlzLl9zaG93UmF3
SGVhZGVyczsKKyAgICAgICAgdGhpcy5fcmVxdWVzdFBheWxvYWRUcmVlRWxlbWVudC5oaWRkZW4g
PSB0aGlzLl9zaG93UmF3SGVhZGVyczsKKyAgICAgICAgCisgICAgICAgIGlmICghdGhpcy5fc2hv
d1Jhd0hlYWRlcnMpIHsKKyAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hVUkwoKTsKKyAgICAgICAg
ICAgIHRoaXMuX3JlZnJlc2hRdWVyeVN0cmluZygpOworICAgICAgICAgICAgdGhpcy5fcmVmcmVz
aEhUVFBJbmZvcm1hdGlvbigpOwogICAgICAgICB9CisgICAgICAgIHRoaXMuX3JlZnJlc2hSZXF1
ZXN0SGVhZGVycygpOworICAgICAgICB0aGlzLl9yZWZyZXNoUmVzcG9uc2VIZWFkZXJzKCk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5x
cmMKaW5kZXggMDA0MTEzOC4uNjlhYTZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtNTMsNiArNTMsNyBAQAogICAgIDxmaWxlPkhlYXBT
bmFwc2hvdC5qczwvZmlsZT4KICAgICA8ZmlsZT5IZWFwU25hcHNob3RWaWV3LmpzPC9maWxlPgog
ICAgIDxmaWxlPkhlbHBTY3JlZW4uanM8L2ZpbGU+CisgICAgPGZpbGU+SFRUUEhlYWRlcnNQYXJz
ZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPklu
amVjdGVkRmFrZVdvcmtlci5qczwvZmlsZT4KICAgICA8ZmlsZT5pbnNwZWN0b3IuanM8L2ZpbGU+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5odG1sIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRt
bAppbmRleCAzM2FkMzhhLi5hZmZmOWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKQEAgLTE1OSw2ICsxNTksNyBAQCBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkNvb2tpZVBhcnNlci5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iVG9v
bGJhci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iU2VhcmNoQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iSFRUUEhlYWRlcnNQYXJzZXIuanMiPjwvc2NyaXB0PgogPC9oZWFk
PgogPGJvZHkgY2xhc3M9ImRldGFjaGVkIj4KICAgICA8ZGl2IGlkPSJ0b29sYmFyIj4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkSW5mby5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRJbmZvLmgKaW5k
ZXggYTFiOTU4Yy4uZGJiZWYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUxvYWRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUxvYWRJbmZvLmgKQEAgLTM5LDYgKzM5LDggQEAgc3RydWN0IFJlc291
cmNlTG9hZEluZm8gOiBSZWZDb3VudGVkPFJlc291cmNlTG9hZEluZm8+IHsKICAgICBTdHJpbmcg
aHR0cFN0YXR1c1RleHQ7CiAgICAgSFRUUEhlYWRlck1hcCByZXF1ZXN0SGVhZGVyczsKICAgICBI
VFRQSGVhZGVyTWFwIHJlc3BvbnNlSGVhZGVyczsKKyAgICBTdHJpbmcgcmF3UmVxdWVzdEhlYWRl
cnM7CisgICAgU3RyaW5nIHJhd1Jlc3BvbnNlSGVhZGVyczsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggZWRjOGNmNC4uODJmMGE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMS0wNC0xMSAgVnNldm9sb2QgVmxhc292ICA8dnNl
dmlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBFbmFibGUgcmF3IEhUVFAgaGVhZGVycyBzdXBwb3J0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODI1OQor
CisgICAgICAgIEFkZGVkIHJhdyBoZWFkZXJzIHN1cHBvcnQgdG8gaW5zcGVjdG9yLgorCisgICAg
ICAgICogcHVibGljL1dlYkhUVFBMb2FkSW5mby5oOgorICAgICAgICAqIHNyYy9XZWJIVFRQTG9h
ZEluZm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJIVFRQTG9hZEluZm86OnJhd1JlcXVlc3RI
ZWFkZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSFRUUExvYWRJbmZvOjpzZXRSYXdSZXF1ZXN0
SGVhZGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYkhUVFBMb2FkSW5mbzo6cmF3UmVzcG9uc2VI
ZWFkZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSFRUUExvYWRJbmZvOjpzZXRSYXdSZXNwb25z
ZUhlYWRlcnMpOgorCiAyMDExLTA0LTA3ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xl
LmNvbT4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQ6IHJvbGxpbmcgY2hyb21pdW0gREVQUyA4MDQy
MTo4MDc2Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhU
VFBMb2FkSW5mby5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRUUExvYWRJ
bmZvLmgKaW5kZXggOWZmOTE1My4uYmU1OTM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSFRUUExvYWRJbmZvLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSFRUUExvYWRJbmZvLmgKQEAgLTY1LDYgKzY1LDEyIEBAIHB1YmxpYzoK
ICAgICBXRUJLSVRfQVBJIHZvaWQgYWRkUmVxdWVzdEhlYWRlcihjb25zdCBXZWJTdHJpbmcmIG5h
bWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpOwogICAgIFdFQktJVF9BUEkgdm9pZCBhZGRSZXNw
b25zZUhlYWRlcihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUp
OwogCisgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgcmF3UmVxdWVzdEhlYWRlcnMoKSBjb25zdDsK
KyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0UmF3UmVxdWVzdEhlYWRlcnMoY29uc3QgV2ViU3RyaW5n
Jik7CisKKyAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyByYXdSZXNwb25zZUhlYWRlcnMoKSBjb25z
dDsKKyAgICBXRUJLSVRfQVBJIHZvaWQgc2V0UmF3UmVzcG9uc2VIZWFkZXJzKGNvbnN0IFdlYlN0
cmluZyYpOworCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2ViSFRUUExvYWRJbmZv
KFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRJbmZvPik7CiAgICAgb3BlcmF0
b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZEluZm8+KCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJIVFRQTG9hZEluZm8uY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSFRUUExvYWRJbmZvLmNwcAppbmRleCA4
NzZhNDg5Li41Nzk3M2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJIVFRQTG9hZEluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkhU
VFBMb2FkSW5mby5jcHAKQEAgLTEwOCw0ICsxMDgsMjggQEAgdm9pZCBXZWJIVFRQTG9hZEluZm86
OmFkZFJlc3BvbnNlSGVhZGVyKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5n
JgogICAgIGFkZEhlYWRlcigmbV9wcml2YXRlLT5yZXNwb25zZUhlYWRlcnMsIG5hbWUsIHZhbHVl
KTsKIH0KIAorV2ViU3RyaW5nIFdlYkhUVFBMb2FkSW5mbzo6cmF3UmVxdWVzdEhlYWRlcnMoKSBj
b25zdAoreworICAgIEFTU0VSVCghbV9wcml2YXRlLmlzTnVsbCgpKTsKKyAgICByZXR1cm4gbV9w
cml2YXRlLT5yYXdSZXF1ZXN0SGVhZGVyczsKK30KKwordm9pZCBXZWJIVFRQTG9hZEluZm86OnNl
dFJhd1JlcXVlc3RIZWFkZXJzKGNvbnN0IFdlYlN0cmluZyYgcmF3SGVhZGVycykKK3sKKyAgICBB
U1NFUlQoIW1fcHJpdmF0ZS5pc051bGwoKSk7CisgICAgbV9wcml2YXRlLT5yYXdSZXF1ZXN0SGVh
ZGVycyA9IHJhd0hlYWRlcnM7Cit9CisKK1dlYlN0cmluZyBXZWJIVFRQTG9hZEluZm86OnJhd1Jl
c3BvbnNlSGVhZGVycygpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkp
OworICAgIHJldHVybiBtX3ByaXZhdGUtPnJhd1Jlc3BvbnNlSGVhZGVyczsKK30KKwordm9pZCBX
ZWJIVFRQTG9hZEluZm86OnNldFJhd1Jlc3BvbnNlSGVhZGVycyhjb25zdCBXZWJTdHJpbmcmIHJh
d0hlYWRlcnMpCit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOworICAgIG1fcHJp
dmF0ZS0+cmF3UmVzcG9uc2VIZWFkZXJzID0gcmF3SGVhZGVyczsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="81694"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89258</attachid>
            <date>2011-04-12 13:26:09 -0700</date>
            <delta_ts>2011-04-13 09:02:43 -0700</delta_ts>
            <desc>Patch with fixes</desc>
            <filename>headers_webkit</filename>
            <type>text/plain</type>
            <size>22390</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjNDE4ZTcyLi42YWU5NTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTEtMDQtMTIgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogRW5hYmxlIHJhdyBIVFRQIGhlYWRlcnMgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgyNTkKKworICAgICAgICBBZGRlZCByYXcg
aGVhZGVycyBzdXBwb3J0IHRvIGluc3BlY3Rvci4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ov
bG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2UuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZUhlYWRlcnNWaWV3LmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvbmV0
d29ya1BhbmVsLmNzczoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZElu
Zm8uaDoKKwogMjAxMS0wNC0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJDb3JlL0Vu
Z2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCBmMGI3OWM0YTk1ZjdjNjJhYWE0
NTU4OGVmNmQxNzNkNzc3YzgyM2U2Li5lZTZjZjYzMjM0OWJlZjJjMjQzOTI5MjY1YWQ1M2FiNzll
NmQ2NGFmIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDIzNQp6Y21jYUtwWlVsRjxfJHJY
bjtXZHVeNFFCNUc4c31DJHxyWVFOKHc3NiM0OyFfKmFFUTwxQ3NkVXdzPFhiQz82PTcKejAjdSpP
a1BvSSlmR1JRY0FnaF8mN19WPVAmfEFRZSRXWCprM15XMGtQTilocmVaQGZnTmBYMylmalk2PDJ2
c3E4ClI7fkQrUTJgaHkqP15xJEY0Z2xTdUg5UDxTCgpkZWx0YSAyMTUKemNtWEBJZmNlc1Y8XyRy
WC0xIVdwM2BxPCo0NTx2ZGxPR3hqT1A0VUBHbyU5e05KSWZCbGdkIVNQITEkaDhTKkNBCnpGUEMm
d1VgUy1oVkBMdFlyMnhmfWZ2UTA/aEBTPno3Y3R9bDx4M2NmOEklfWVmbnY1bXRpPDJ+bHApQyRS
aWJRfQpXdGpNUmtJbHhqUVoqdDVrcTBMJD1yUEtsWGU9JFk/CgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDQxZDU0NWIuLjc3MzY5OTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTM0MSw3ICszNDEsOSBAQAogICAgICAgICAg
ICAgICAgICAgICAiY29ubmVjdGlvblJldXNlZCI6IHsgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNj
cmlwdGlvbiI6ICJTcGVjaWZpZXMgd2hldGhlciBwaHlzaWNhbCBjb25uZWN0aW9uIHdhcyBhY3R1
YWxseSByZXVzZWQgZm9yIHRoaXMgcmVxdWVzdC4iIH0sCiAgICAgICAgICAgICAgICAgICAgICJj
b25uZWN0aW9uSUQiOiB7ICJ0eXBlIjogIm51bWJlciIsICJkZXNjcmlwdGlvbiI6ICJQaHlzaWNh
bCBjb25uZWN0aW9uIGlkIHRoYXQgd2FzIGFjdHVhbGx5IHVzZWQgZm9yIHRoaXMgcmVxdWVzdC4i
IH0sCiAgICAgICAgICAgICAgICAgICAgICJmcm9tRGlza0NhY2hlIjogeyAidHlwZSI6ICJib29s
ZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlNwZWNpZmllcyB0aGF0IHRo
ZSByZXNvdXJjZSB3YXMgbG9hZGVkIGZyb20gdGhlIGRpc2sgY2FjaGUuIiB9LAotICAgICAgICAg
ICAgICAgICAgICAidGltaW5nIjogeyAiJHJlZiI6ICJSZXNvdXJjZVRpbWluZyIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaW1pbmcgaW5mb3JtYXRpb24gZm9yIHRoZSBnaXZl
biByZXF1ZXN0LiIgfQorICAgICAgICAgICAgICAgICAgICAidGltaW5nIjogeyAiJHJlZiI6ICJS
ZXNvdXJjZVRpbWluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaW1pbmcg
aW5mb3JtYXRpb24gZm9yIHRoZSBnaXZlbiByZXF1ZXN0LiIgfSwKKyAgICAgICAgICAgICAgICAg
ICAgInJhd0hlYWRlcnMiOiB7ICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJk
ZXNjcmlwdGlvbiI6ICJSYXcgSFRUUCByZXNwb25zZSBoZWFkZXJzLiIgfSwKKyAgICAgICAgICAg
ICAgICAgICAgInJhd1JlcXVlc3RIZWFkZXJzIjogeyAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9u
YWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiUmF3IEhUVFAgcmVxdWVzdCBoZWFkZXJzLiIgfQog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5k
ZXggYmZlNjhmZi4uNGUxY2UyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtMjIxLDcgKzIyMSw2IEBAIHN0YXRpYyBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlCiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzcG9uc2VPYmpl
Y3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRO
dW1iZXIoInN0YXR1cyIsIHJlc3BvbnNlLnJlc291cmNlTG9hZEluZm8oKSA/IHJlc3BvbnNlLnJl
c291cmNlTG9hZEluZm8oKS0+aHR0cFN0YXR1c0NvZGUgOiByZXNwb25zZS5odHRwU3RhdHVzQ29k
ZSgpKTsKICAgICByZXNwb25zZU9iamVjdC0+c2V0U3RyaW5nKCJzdGF0dXNUZXh0IiwgcmVzcG9u
c2UucmVzb3VyY2VMb2FkSW5mbygpID8gcmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpLT5odHRw
U3RhdHVzVGV4dCA6IHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkpOwotICAgIHJlc3BvbnNlT2Jq
ZWN0LT5zZXRPYmplY3QoImhlYWRlcnMiLCBidWlsZE9iamVjdEZvckhlYWRlcnMocmVzcG9uc2Uu
cmVzb3VyY2VMb2FkSW5mbygpID8gcmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpLT5yZXNwb25z
ZUhlYWRlcnMgOiByZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkpKTsKIAogICAgIHJlc3BvbnNl
T2JqZWN0LT5zZXRTdHJpbmcoIm1pbWVUeXBlIiwgcmVzcG9uc2UubWltZVR5cGUoKSk7CiAgICAg
cmVzcG9uc2VPYmplY3QtPnNldEJvb2xlYW4oImNvbm5lY3Rpb25SZXVzZWQiLCByZXNwb25zZS5j
b25uZWN0aW9uUmV1c2VkKCkpOwpAQCAtMjMwLDggKzIyOSwxNiBAQCBzdGF0aWMgUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjb25zdCBS
ZXNvdXJjZQogICAgIGlmIChyZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKSkKICAgICAgICAg
cmVzcG9uc2VPYmplY3QtPnNldE9iamVjdCgidGltaW5nIiwgYnVpbGRPYmplY3RGb3JUaW1pbmco
KnJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpKSk7CiAKLSAgICBpZiAocmVzcG9uc2UucmVz
b3VyY2VMb2FkSW5mbygpKQorICAgIGlmIChyZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCkpIHsK
KyAgICAgICAgcmVzcG9uc2VPYmplY3QtPnNldE9iamVjdCgiaGVhZGVycyIsIGJ1aWxkT2JqZWN0
Rm9ySGVhZGVycyhyZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCktPnJlc3BvbnNlSGVhZGVycykp
OworICAgICAgICBpZiAoIXJlc3BvbnNlLnJlc291cmNlTG9hZEluZm8oKS0+cmF3UmVzcG9uc2VI
ZWFkZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRTdHJpbmco
InJhd0hlYWRlcnMiLCByZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCktPnJhd1Jlc3BvbnNlSGVh
ZGVycyk7CisKICAgICAgICAgcmVzcG9uc2VPYmplY3QtPnNldE9iamVjdCgicmVxdWVzdEhlYWRl
cnMiLCBidWlsZE9iamVjdEZvckhlYWRlcnMocmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpLT5y
ZXF1ZXN0SGVhZGVycykpOworICAgICAgICBpZiAoIXJlc3BvbnNlLnJlc291cmNlTG9hZEluZm8o
KS0+cmF3UmVxdWVzdEhlYWRlcnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmVzcG9uc2VPYmpl
Y3QtPnNldFN0cmluZygicmF3UmVxdWVzdEhlYWRlcnMiLCByZXNwb25zZS5yZXNvdXJjZUxvYWRJ
bmZvKCktPnJhd1JlcXVlc3RIZWFkZXJzKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzcG9uc2VP
YmplY3QtPnNldE9iamVjdCgiaGVhZGVycyIsIGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhyZXNwb25z
ZS5odHRwSGVhZGVyRmllbGRzKCkpKTsKIAogICAgIHJldHVybiByZXNwb25zZU9iamVjdDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01h
bmFnZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5h
Z2VyLmpzCmluZGV4IDAwYzExZTYuLjcyZDRmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcwpAQCAtOTIsOSArOTIsMTIg
QEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
cmVzb3VyY2Uuc3RhdHVzQ29kZSA9IHJlc3BvbnNlLnN0YXR1czsKICAgICAgICAgcmVzb3VyY2Uu
c3RhdHVzVGV4dCA9IHJlc3BvbnNlLnN0YXR1c1RleHQ7CiAgICAgICAgIHJlc291cmNlLnJlc3Bv
bnNlSGVhZGVycyA9IHJlc3BvbnNlLmhlYWRlcnM7Ci0gICAgICAgIC8vIFJhdyByZXF1ZXN0IGhl
YWRlcnMgY2FuIGJlIGEgcGFydCBvZiByZXNwb25zZSBhcyB3ZWxsLgorICAgICAgICBpZiAocmVz
cG9uc2UucmF3SGVhZGVycykKKyAgICAgICAgICAgIHJlc291cmNlLnJhd1Jlc3BvbnNlSGVhZGVy
cyA9IHJlc3BvbnNlLnJhd0hlYWRlcnM7CiAgICAgICAgIGlmIChyZXNwb25zZS5yZXF1ZXN0SGVh
ZGVycykKICAgICAgICAgICAgIHJlc291cmNlLnJlcXVlc3RIZWFkZXJzID0gcmVzcG9uc2UucmVx
dWVzdEhlYWRlcnM7CisgICAgICAgIGlmIChyZXNwb25zZS5yYXdSZXF1ZXN0SGVhZGVycykKKyAg
ICAgICAgICAgIHJlc291cmNlLnJhd1JlcXVlc3RIZWFkZXJzID0gcmVzcG9uc2UucmF3UmVxdWVz
dEhlYWRlcnM7CiAKICAgICAgICAgcmVzb3VyY2UuY29ubmVjdGlvblJldXNlZCA9IHJlc3BvbnNl
LmNvbm5lY3Rpb25SZXVzZWQ7CiAgICAgICAgIHJlc291cmNlLmNvbm5lY3Rpb25JRCA9IHJlc3Bv
bnNlLmNvbm5lY3Rpb25JRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlLmpzCmluZGV4IDAwZWI4ZGQuLjU4ZGY4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcwpAQCAtMzMsNyArMzMsNiBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UgPSBmdW5jdGlvbihpZGVudGlmaWVyLCB1cmwpCiAgICAgdGhpcy5f
ZW5kVGltZSA9IC0xOwogICAgIHRoaXMuX2NhdGVnb3J5ID0gV2ViSW5zcGVjdG9yLnJlc291cmNl
Q2F0ZWdvcmllcy5vdGhlcjsKICAgICB0aGlzLl9wZW5kaW5nQ29udGVudENhbGxiYWNrcyA9IFtd
OwotICAgIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1NpemUgPSAwOwogfQogCiAvLyBLZWVwIHRoZXNl
IGluIHN5bmMgd2l0aCBXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6VHlwZQpAQCAtMjQwLDcg
KzIzOSw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlm
ICh0aGlzLmNhY2hlZCkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAodGhpcy5z
dGF0dXNDb2RlID09PSAzMDQpIC8vIE5vdCBtb2RpZmllZAotICAgICAgICAgICAgcmV0dXJuIHRo
aXMuX3Jlc3BvbnNlSGVhZGVyc1NpemU7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXNwb25z
ZUhlYWRlcnNTaXplOwogICAgICAgICBpZiAodGhpcy5fdHJhbnNmZXJTaXplICE9PSB1bmRlZmlu
ZWQpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNmZXJTaXplOwogICAgICAgICAvLyBJ
ZiB3ZSBkaWQgbm90IHJlY2VpdmUgYWN0dWFsIHRyYW5zZmVyIHNpemUgZnJvbSBuZXR3b3JrCkBA
IC0yNTQsNyArMjUzLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgLy8gd29yayBmb3IgY2h1bmtzIHdpdGggbm9uLXRyaXZpYWwgZW5jb2RpbmdzLiBXZSBu
ZWVkIGEgd2F5IHRvCiAgICAgICAgIC8vIGdldCBhY3R1YWwgdHJhbnNmZXIgc2l6ZSBmcm9tIHRo
ZSBuZXR3b3JrIHN0YWNrLgogICAgICAgICB2YXIgYm9keVNpemUgPSBOdW1iZXIodGhpcy5yZXNw
b25zZUhlYWRlcnNbIkNvbnRlbnQtTGVuZ3RoIl0gfHwgdGhpcy5yZXNvdXJjZVNpemUpOwotICAg
ICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VIZWFkZXJzU2l6ZSArIGJvZHlTaXplOworICAgICAg
ICByZXR1cm4gdGhpcy5yZXNwb25zZUhlYWRlcnNTaXplICsgYm9keVNpemU7CiAgICAgfSwKIAog
ICAgIGluY3JlYXNlVHJhbnNmZXJTaXplOiBmdW5jdGlvbih4KQpAQCAtNDAzLDEwICs0MDIsMzUg
QEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVx
dWVzdEhlYWRlcnMgPSB4OwogICAgICAgICBkZWxldGUgdGhpcy5fc29ydGVkUmVxdWVzdEhlYWRl
cnM7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9yZXF1ZXN0Q29va2llczsKKyAgICAgICAgZGVsZXRl
IHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1NpemU7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoInJlcXVlc3RIZWFkZXJzIGNoYW5nZWQiKTsKICAgICB9LAogCisgICAgZ2V0
IHJhd1JlcXVlc3RIZWFkZXJzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yYXdSZXF1
ZXN0SGVhZGVyczsKKyAgICB9LAorCisgICAgc2V0IHJhd1JlcXVlc3RIZWFkZXJzKHgpCisgICAg
eworICAgICAgICB0aGlzLl9yYXdSZXF1ZXN0SGVhZGVycyA9IHg7CisgICAgICAgIGRlbGV0ZSB0
aGlzLl9yZXNwb25zZUhlYWRlcnNTaXplOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKCJyZXF1ZXN0SGVhZGVycyBjaGFuZ2VkIik7CisgICAgfSwKKworICAgIGdldCBy
ZXF1ZXN0SGVhZGVyc1NpemUoKQorICAgIHsKKyAgICAgICAgaWYgKHR5cGVvZih0aGlzLl9yZXF1
ZXN0SGVhZGVyc1NpemUpID09PSAndW5kZWZpbmVkJykgeworICAgICAgICAgICAgaWYgKHRoaXMu
X3Jhd1JlcXVlc3RIZWFkZXJzKQorICAgICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RIZWFkZXJz
U2l6ZSA9IHRoaXMuX3Jhd1JlcXVlc3RIZWFkZXJzLmxlbmd0aDsKKyAgICAgICAgICAgIGVsc2Ug
CisgICAgICAgICAgICAgICAgdGhpcy5fcmVxdWVzdEhlYWRlcnNTaXplID0gdGhpcy5faGVhZGVy
c1NpemUodGhpcy5fcmVxdWVzdEhlYWRlcnMpCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRo
aXMuX3JlcXVlc3RIZWFkZXJzU2l6ZTsKKyAgICB9LAorCiAgICAgZ2V0IHNvcnRlZFJlcXVlc3RI
ZWFkZXJzKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zb3J0ZWRSZXF1ZXN0SGVhZGVycyAh
PT0gdW5kZWZpbmVkKQpAQCAtNDUxLDEzICs0NzUsMzcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNl
LnByb3RvdHlwZSA9IHsKICAgICBzZXQgcmVzcG9uc2VIZWFkZXJzKHgpCiAgICAgewogICAgICAg
ICB0aGlzLl9yZXNwb25zZUhlYWRlcnMgPSB4OwotICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxk
IHRha2UgYWN0dWFsIGhlYWRlcnMgc2l6ZSBmcm9tIG5ldHdvcmsgc3RhY2ssIHdoZW4gcG9zc2li
bGUuCi0gICAgICAgIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1NpemUgPSB0aGlzLl9oZWFkZXJzU2l6
ZSh4KTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1NpemU7CiAgICAgICAg
IGRlbGV0ZSB0aGlzLl9zb3J0ZWRSZXNwb25zZUhlYWRlcnM7CiAgICAgICAgIGRlbGV0ZSB0aGlz
Ll9yZXNwb25zZUNvb2tpZXM7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoInJlc3BvbnNlSGVhZGVycyBjaGFuZ2VkIik7CiAgICAgfSwKKyAgICAKKyAgICBnZXQgcmF3
UmVzcG9uc2VIZWFkZXJzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yYXdSZXNwb25z
ZUhlYWRlcnM7CisgICAgfSwKKworICAgIHNldCByYXdSZXNwb25zZUhlYWRlcnMoeCkKKyAgICB7
CisgICAgICAgIHRoaXMuX3Jhd1Jlc3BvbnNlSGVhZGVycyA9IHg7CisgICAgICAgIGRlbGV0ZSB0
aGlzLl9yZXNwb25zZUhlYWRlcnNTaXplOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKCJyZXNwb25zZUhlYWRlcnMgY2hhbmdlZCIpOworICAgIH0sCisgICAgCisgICAg
Z2V0IHJlc3BvbnNlSGVhZGVyc1NpemUoKQorICAgIHsKKyAgICAgICAgaWYgKHR5cGVvZih0aGlz
Ll9yZXNwb25zZUhlYWRlcnNTaXplKSA9PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgICAgIGlm
ICh0aGlzLl9yYXdSZXNwb25zZUhlYWRlcnMpCisgICAgICAgICAgICAgICAgdGhpcy5fcmVzcG9u
c2VIZWFkZXJzU2l6ZSA9IHRoaXMuX3Jhd1Jlc3BvbnNlSGVhZGVycy5sZW5ndGg7CisgICAgICAg
ICAgICBlbHNlIAorICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1NpemUgPSB0
aGlzLl9oZWFkZXJzU2l6ZSh0aGlzLl9yZXNwb25zZUhlYWRlcnMpCisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1NpemU7CisgICAgfSwKKyAgICAKIAogICAg
IGdldCBzb3J0ZWRSZXNwb25zZUhlYWRlcnMoKQogICAgIHsKQEAgLTUzNiw5ICs1ODQsMTEgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKIAogICAgIF9oZWFkZXJzU2l6ZTog
ZnVuY3Rpb24oaGVhZGVycykKICAgICB7CisgICAgICAgIC8vIFdlIHNob3VsZCB0YWtlIGFjdHVh
bCBoZWFkZXJzIHNpemUgZnJvbSBuZXR3b3JrIHN0YWNrLCB3aGVuIHBvc3NpYmxlLCBidXQgZmFs
bCBiYWNrIHRvCisgICAgICAgIC8vIHRoaXMgbG91c3kgY29tcHV0YXRpb24gd2hlbiBubyByYXcg
aGVhZGVycyBhcmUgYXZhaWxhYmxlLgogICAgICAgICB2YXIgc2l6ZSA9IDA7CiAgICAgICAgIGZv
ciAodmFyIGhlYWRlciBpbiBoZWFkZXJzKQotICAgICAgICAgICAgc2l6ZSArPSBoZWFkZXIubGVu
Z3RoICsgaGVhZGVyc1toZWFkZXJdLmxlbmd0aCArIDM7IC8vIF90eXBpY2FsXyBvdmVyaGVhZCBw
ZXIgaGVyYWRlciBpcyAiOiAiLmxlbmd0aCArICJcbiIubGVuZ3RoLgorICAgICAgICAgICAgc2l6
ZSArPSBoZWFkZXIubGVuZ3RoICsgaGVhZGVyc1toZWFkZXJdLmxlbmd0aCArIDQ7IC8vIF90eXBp
Y2FsXyBvdmVyaGVhZCBwZXIgaGVhZGVyIGlzICI6ICIubGVuZ3RoICsgIlxyXG4iLmxlbmd0aC4K
ICAgICAgICAgcmV0dXJuIHNpemU7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZUhlYWRlcnNWaWV3LmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZUhlYWRlcnNWaWV3LmpzCmluZGV4IGU3
OTA3OGEuLmU2YTMxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VIZWFkZXJzVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlSGVhZGVyc1ZpZXcuanMKQEAgLTYyLDYgKzYyLDkgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcgPSBmdW5jdGlvbihyZXNvdXJjZSkKICAgICB0
aGlzLl9kZWNvZGVIb3ZlciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRG91YmxlLUNsaWNrIHRv
IHRvZ2dsZSBiZXR3ZWVuIFVSTCBlbmNvZGVkIGFuZCBkZWNvZGVkIGZvcm1hdHMiKTsKICAgICB0
aGlzLl9kZWNvZGVSZXF1ZXN0UGFyYW1ldGVycyA9IHRydWU7CiAKKyAgICB0aGlzLl9zaG93UmF3
UmVxdWVzdEhlYWRlcnMgPSBmYWxzZTsKKyAgICB0aGlzLl9zaG93UmF3UmVzcG9uc2VIZWFkZXJz
ID0gZmFsc2U7CisKICAgICB0aGlzLl9xdWVyeVN0cmluZ1RyZWVFbGVtZW50ID0gbmV3IFRyZWVF
bGVtZW50KCIiLCBudWxsLCB0cnVlKTsKICAgICB0aGlzLl9xdWVyeVN0cmluZ1RyZWVFbGVtZW50
LmV4cGFuZGVkID0gdHJ1ZTsKICAgICB0aGlzLl9xdWVyeVN0cmluZ1RyZWVFbGVtZW50LnNlbGVj
dGFibGUgPSBmYWxzZTsKQEAgLTE0Niw3ICsxNDksMTYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNl
SGVhZGVyc1ZpZXcucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgcGFybXNUcmVlRWxlbWVu
dC5yZW1vdmVDaGlsZHJlbigpOwogCi0gICAgICAgIHBhcm1zVHJlZUVsZW1lbnQudGl0bGVIVE1M
ID0gdGl0bGUgKyAiPHNwYW4gY2xhc3M9XCJoZWFkZXItY291bnRcIj4iICsgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCIgKCVkKSIsIHBhcm1zLmxlbmd0aCkgKyAiPC9zcGFuPiI7CisgICAgICAgIHBh
cm1zVHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAg
IHBhcm1zVHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKHRpdGxlKSk7CisgICAgICAgIAorICAgICAgICB2YXIgaGVhZGVyQ291bnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIGhlYWRlckNvdW50LmFk
ZFN0eWxlQ2xhc3MoImhlYWRlci1jb3VudCIpOworICAgICAgICBoZWFkZXJDb3VudC50ZXh0Q29u
dGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiICglZCkiLCBwYXJtcy5sZW5ndGgpOworICAg
ICAgICBwYXJtc1RyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5hcHBlbmRDaGlsZChoZWFkZXJD
b3VudCk7CisKKyAgICAgICAgdmFyIHRvZ2dsZVRpdGxlID0gdGhpcy5fZGVjb2RlUmVxdWVzdFBh
cmFtZXRlcnMgPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoInZpZXcgVVJMIGVuY29kZWQiKSA6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygidmlldyBkZWNvZGVkIik7CisgICAgICAgIHBhcm1zVHJlZUVs
ZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVRvZ2dsZUJ1dHRv
bih0b2dnbGVUaXRsZSwgdGhpcy5fdG9nZ2xlVVJMZGVjb2RpbmcuYmluZCh0aGlzKSkpOwogCiAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFybXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAg
ICAgIHZhciBuYW1lID0gcGFybXNbaV0ubmFtZTsKQEAgLTE3NSw4ICsxODcsNiBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIg
cGFybVRyZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVtZW50KG51bGwsIG51bGwsIGZhbHNlKTsKICAg
ICAgICAgICAgIHBhcm1UcmVlRWxlbWVudC50aXRsZUhUTUwgPSB0aXRsZTsKICAgICAgICAgICAg
IHBhcm1UcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7Ci0gICAgICAgICAgICBwYXJtVHJl
ZUVsZW1lbnQudG9vbHRpcCA9IHRoaXMuX2RlY29kZUhvdmVyOwotICAgICAgICAgICAgcGFybVRy
ZWVFbGVtZW50Lm9uZGJsY2xpY2sgPSB0aGlzLl90b2dnbGVVUkxkZWNvZGluZy5iaW5kKHRoaXMp
OwogICAgICAgICAgICAgcGFybXNUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChwYXJtVHJlZUVsZW1l
bnQpOwogICAgICAgICB9CiAgICAgfSwKQEAgLTIwMiw3ICsyMTIsMTIgQEAgV2ViSW5zcGVjdG9y
LlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICB2YXIgYWRkaXRpb25h
bFJvdyA9IG51bGw7CiAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fcmVzb3VyY2Uud2ViU29ja2V0
UmVxdWVzdEtleTMgIT09ICJ1bmRlZmluZWQiKQogICAgICAgICAgICAgYWRkaXRpb25hbFJvdyA9
IHtoZWFkZXI6ICIoS2V5MykiLCB2YWx1ZTogdGhpcy5fcmVzb3VyY2Uud2ViU29ja2V0UmVxdWVz
dEtleTN9OwotICAgICAgICB0aGlzLl9yZWZyZXNoSGVhZGVycyhXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlJlcXVlc3QgSGVhZGVycyIpLCB0aGlzLl9yZXNvdXJjZS5zb3J0ZWRSZXF1ZXN0SGVhZGVy
cywgYWRkaXRpb25hbFJvdywgdGhpcy5fcmVxdWVzdEhlYWRlcnNUcmVlRWxlbWVudCk7CisgICAg
ICAgIHZhciByYXdIZWFkZXJzVG9nZ2xlRnVuY3Rpb24gPSB0aGlzLl9yZXNvdXJjZS5yYXdSZXF1
ZXN0SGVhZGVycyA/IHRoaXMuX3RvZ2dsZVJhd1JlcXVlc3RIZWFkZXJzLmJpbmQodGhpcykgOiBu
dWxsOworICAgICAgICBpZiAodGhpcy5fc2hvd1Jhd1JlcXVlc3RIZWFkZXJzKQorICAgICAgICAg
ICAgdGhpcy5fcmVmcmVzaFJhd0hlYWRlcnMoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0
IEhlYWRlcnMiKSwgdGhpcy5fcmVzb3VyY2UucmF3UmVxdWVzdEhlYWRlcnMsIHRoaXMuX3JlcXVl
c3RIZWFkZXJzVHJlZUVsZW1lbnQsIHJhd0hlYWRlcnNUb2dnbGVGdW5jdGlvbik7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnMoV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJSZXF1ZXN0IEhlYWRlcnMiKSwgdGhpcy5fcmVzb3VyY2Uuc29ydGVkUmVxdWVzdEhl
YWRlcnMsIGFkZGl0aW9uYWxSb3csIHRoaXMuX3JlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQsIHJh
d0hlYWRlcnNUb2dnbGVGdW5jdGlvbik7CisgICAgICAgIH0KICAgICAgICAgdGhpcy5fcmVmcmVz
aEZvcm1EYXRhKCk7CiAgICAgfSwKIApAQCAtMjExLDcgKzIyNiwxMSBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VIZWFkZXJzVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBhZGRpdGlvbmFs
Um93ID0gbnVsbDsKICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9yZXNvdXJjZS53ZWJTb2NrZXRD
aGFsbGVuZ2VSZXNwb25zZSAhPT0gInVuZGVmaW5lZCIpCiAgICAgICAgICAgICBhZGRpdGlvbmFs
Um93ID0ge2hlYWRlcjogIihDaGFsbGVuZ2UgUmVzcG9uc2UpIiwgdmFsdWU6IHRoaXMuX3Jlc291
cmNlLndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNlfTsKLSAgICAgICAgdGhpcy5fcmVmcmVzaEhl
YWRlcnMoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNwb25zZSBIZWFkZXJzIiksIHRoaXMuX3Jl
c291cmNlLnNvcnRlZFJlc3BvbnNlSGVhZGVycywgYWRkaXRpb25hbFJvdywgdGhpcy5fcmVzcG9u
c2VIZWFkZXJzVHJlZUVsZW1lbnQpOworICAgICAgICB2YXIgcmF3SGVhZGVyc1RvZ2dsZUZ1bmN0
aW9uID0gdGhpcy5fcmVzb3VyY2UucmF3UmVzcG9uc2VIZWFkZXJzID8gdGhpcy5fdG9nZ2xlUmF3
UmVzcG9uc2VIZWFkZXJzLmJpbmQodGhpcykgOiBudWxsOworICAgICAgICBpZiAodGhpcy5fc2hv
d1Jhd1Jlc3BvbnNlSGVhZGVycykKKyAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hSYXdIZWFkZXJz
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzcG9uc2UgSGVhZGVycyIpLCB0aGlzLl9yZXNvdXJj
ZS5yYXdSZXNwb25zZUhlYWRlcnMsIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1RyZWVFbGVtZW50LCBy
YXdIZWFkZXJzVG9nZ2xlRnVuY3Rpb24pOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlz
Ll9yZWZyZXNoSGVhZGVycyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc3BvbnNlIEhlYWRlcnMi
KSwgdGhpcy5fcmVzb3VyY2Uuc29ydGVkUmVzcG9uc2VIZWFkZXJzLCBhZGRpdGlvbmFsUm93LCB0
aGlzLl9yZXNwb25zZUhlYWRlcnNUcmVlRWxlbWVudCwgcmF3SGVhZGVyc1RvZ2dsZUZ1bmN0aW9u
KTsKICAgICB9LAogCiAgICAgX3JlZnJlc2hIVFRQSW5mb3JtYXRpb246IGZ1bmN0aW9uKCkKQEAg
LTI0MiwxNSArMjYxLDMxIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAgICAgCi0gICAgX3JlZnJlc2hIZWFkZXJzOiBm
dW5jdGlvbih0aXRsZSwgaGVhZGVycywgYWRkaXRpb25hbFJvdywgaGVhZGVyc1RyZWVFbGVtZW50
KQorICAgIF9yZWZyZXNoSGVhZGVyc1RpdGxlOiBmdW5jdGlvbih0aXRsZSwgaGVhZGVyc1RyZWVF
bGVtZW50LCBhcmVSYXdIZWFkZXJzU2hvd24sIHJhd0hlYWRlcnNUb2dnbGVGdW5jdGlvbiwgaGVh
ZGVyc0xlbmd0aCkKICAgICB7Ci0gICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC5yZW1vdmVDaGls
ZHJlbigpOworICAgICAgICBoZWFkZXJzVHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LnJlbW92
ZUNoaWxkcmVuKCk7CisgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGl0bGUpKTsKKyAgICAgICAgCisg
ICAgICAgIGlmICghYXJlUmF3SGVhZGVyc1Nob3duKSB7CisgICAgICAgICAgICB2YXIgaGVhZGVy
Q291bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICBoZWFk
ZXJDb3VudC5hZGRTdHlsZUNsYXNzKCJoZWFkZXItY291bnQiKTsKKyAgICAgICAgICAgIGhlYWRl
ckNvdW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIgKCVkKSIsIGhlYWRl
cnNMZW5ndGgpOworICAgICAgICAgICAgaGVhZGVyc1RyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVu
dC5hcHBlbmRDaGlsZChoZWFkZXJDb3VudCk7CisgICAgICAgIH0KIAorICAgICAgICBpZiAodHlw
ZW9mKHJhd0hlYWRlcnNUb2dnbGVGdW5jdGlvbikgPT09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAg
ICAgIHZhciB0b2dnbGVUaXRsZSA9IGFyZVJhd0hlYWRlcnNTaG93biA/IFdlYkluc3BlY3Rvci5V
SVN0cmluZygidmlldyBwYXJzZWQiKSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygidmlldyBzb3Vy
Y2UiKTsKKyAgICAgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fY3JlYXRlVG9nZ2xlQnV0dG9uKHRvZ2dsZVRpdGxlLCByYXdIZWFkZXJz
VG9nZ2xlRnVuY3Rpb24pKTsKKyAgICAgICAgfQorICAgIH0sCisgICAgCisgICAgX3JlZnJlc2hI
ZWFkZXJzOiBmdW5jdGlvbih0aXRsZSwgaGVhZGVycywgYWRkaXRpb25hbFJvdywgaGVhZGVyc1Ry
ZWVFbGVtZW50LCByYXdIZWFkZXJzVG9nZ2xlRnVuY3Rpb24pCisgICAgeworICAgICAgICBoZWFk
ZXJzVHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgCiAgICAgICAgIHZhciBs
ZW5ndGggPSBoZWFkZXJzLmxlbmd0aDsKLSAgICAgICAgaGVhZGVyc1RyZWVFbGVtZW50LnRpdGxl
SFRNTCA9IHRpdGxlLmVzY2FwZUhUTUwoKSArICI8c3BhbiBjbGFzcz1cImhlYWRlci1jb3VudFwi
PiIgKyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiAoJWQpIiwgbGVuZ3RoKSArICI8L3NwYW4+IjsK
KyAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnNUaXRsZSh0aXRsZSwgaGVhZGVyc1RyZWVFbGVt
ZW50LCBmYWxzZSwgcmF3SGVhZGVyc1RvZ2dsZUZ1bmN0aW9uLCBsZW5ndGgpOwogICAgICAgICBo
ZWFkZXJzVHJlZUVsZW1lbnQuaGlkZGVuID0gIWxlbmd0aDsKLQotICAgICAgICB2YXIgbGVuZ3Ro
ID0gaGVhZGVycy5sZW5ndGg7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKICAgICAgICAgICAgIHZhciB0aXRsZSA9ICI8ZGl2IGNsYXNzPVwiaGVhZGVyLW5hbWVc
Ij4iICsgaGVhZGVyc1tpXS5oZWFkZXIuZXNjYXBlSFRNTCgpICsgIjo8L2Rpdj4iOwogICAgICAg
ICAgICAgdGl0bGUgKz0gIjxkaXYgY2xhc3M9XCJoZWFkZXItdmFsdWUgc291cmNlLWNvZGVcIj4i
ICsgaGVhZGVyc1tpXS52YWx1ZS5lc2NhcGVIVE1MKCkgKyAiPC9kaXY+IgpAQCAtMjcwLDYgKzMw
NSw0MCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICBoZWFkZXJUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7CiAgICAgICAg
ICAgICBoZWFkZXJzVHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQoaGVhZGVyVHJlZUVsZW1lbnQpOwog
ICAgICAgICB9CisgICAgfSwKKyAgICAKKyAgICBfcmVmcmVzaFJhd0hlYWRlcnM6IGZ1bmN0aW9u
KHRpdGxlLCByYXdIZWFkZXJzLCBoZWFkZXJzVHJlZUVsZW1lbnQsIHJhd0hlYWRlcnNUb2dnbGVG
dW5jdGlvbikKKyAgICB7CisgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC5yZW1vdmVDaGlsZHJl
bigpOworICAgICAgICAKKyAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnNUaXRsZSh0aXRsZSwg
aGVhZGVyc1RyZWVFbGVtZW50LCB0cnVlLCByYXdIZWFkZXJzVG9nZ2xlRnVuY3Rpb24pOworICAg
ICAgICB2YXIgaGVhZGVyVHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQobnVsbCwgbnVsbCwg
ZmFsc2UpOworICAgICAgICB2YXIgdGl0bGUgPSAiPHNwYW4gY2xhc3M9XCJoZWFkZXItdmFsdWUg
c291cmNlLWNvZGUgcmF3LWhlYWRlcnNcIj4iICsgU3RyaW5nKHJhd0hlYWRlcnMpLnRyaW0oKS5l
c2NhcGVIVE1MKCkgKyAiPC9zcGFuPiIKKyAgICAgICAgaGVhZGVyVHJlZUVsZW1lbnQudGl0bGVI
VE1MID0gdGl0bGU7CisgICAgICAgIGhlYWRlclRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxz
ZTsKKyAgICAgICAgaGVhZGVyc1RyZWVFbGVtZW50LmFwcGVuZENoaWxkKGhlYWRlclRyZWVFbGVt
ZW50KTsKKyAgICAgICAgaGVhZGVyVHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFkZFN0eWxl
Q2xhc3MoInJhdy1oZWFkZXJzIik7CisgICAgfSwKKworICAgIF90b2dnbGVSYXdSZXF1ZXN0SGVh
ZGVyczogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9zaG93UmF3UmVxdWVz
dEhlYWRlcnMgPSAhdGhpcy5fc2hvd1Jhd1JlcXVlc3RIZWFkZXJzOworICAgICAgICB0aGlzLl9y
ZWZyZXNoUmVxdWVzdEhlYWRlcnMoKTsKKyAgICB9LAorCisgICAgX3RvZ2dsZVJhd1Jlc3BvbnNl
SGVhZGVyczogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9zaG93UmF3UmVz
cG9uc2VIZWFkZXJzID0gIXRoaXMuX3Nob3dSYXdSZXNwb25zZUhlYWRlcnM7CisgICAgICAgIHRo
aXMuX3JlZnJlc2hSZXNwb25zZUhlYWRlcnMoKTsKKyAgICB9LAorCisgICAgX2NyZWF0ZVRvZ2ds
ZUJ1dHRvbjogZnVuY3Rpb24odGl0bGUsIHRvZ2dsZUZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAg
dmFyIGJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICAgICAgYnV0
dG9uLmFkZFN0eWxlQ2xhc3MoJ2hlYWRlci10b2dnbGUnKTsKKyAgICAgICAgYnV0dG9uLnRleHRD
b250ZW50ID0gdGl0bGU7CisgICAgICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IHRvZ2dsZUZ1bmN0aW9uKTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvbmV0d29ya1BhbmVs
LmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvbmV0d29ya1BhbmVsLmNz
cwppbmRleCAyNzExMzQ3Li41NDczY2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL25ldHdvcmtQYW5lbC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9uZXR3b3JrUGFuZWwuY3NzCkBAIC03MTQsNiArNzE0LDIyIEBACiAg
ICAgZGlzcGxheTogbm9uZTsKIH0KIAorLnJlc291cmNlLWhlYWRlcnMtdmlldyAub3V0bGluZS1k
aXNjbG9zdXJlIGxpIC5oZWFkZXItdG9nZ2xlIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisu
cmVzb3VyY2UtaGVhZGVycy12aWV3IC5vdXRsaW5lLWRpc2Nsb3N1cmUgbGkuZXhwYW5kZWQgLmhl
YWRlci10b2dnbGUgeworICAgIGRpc3BsYXk6IGlubGluZTsKKyAgICBtYXJnaW4tbGVmdDogMzBw
eDsKKyAgICBmb250LXdlaWdodDogbm9ybWFsOworICAgIGNvbG9yOiByZ2IoNDUlLCA0NSUsIDQ1
JSk7Cit9CisKKy5yZXNvdXJjZS1oZWFkZXJzLXZpZXcgLm91dGxpbmUtZGlzY2xvc3VyZSBsaSAu
aGVhZGVyLXRvZ2dsZTpob3ZlciB7CisgICAgY29sb3I6IHJnYigyMCUsIDIwJSwgNDUlKTsKKyAg
ICBjdXJzb3I6IHBvaW50ZXI7Cit9CisKIC5yZXNvdXJjZS1oZWFkZXJzLXZpZXcgLm91dGxpbmUt
ZGlzY2xvc3VyZSAuaGVhZGVyLW5hbWUgewogICAgIGNvbG9yOiByZ2IoMzMlLCAzMyUsIDMzJSk7
CiAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwpAQCAtNzMxLDYgKzc0NywxMSBAQAogICAgIG1h
cmdpbi10b3A6IDFweDsKIH0KIAorLnJlc291cmNlLWhlYWRlcnMtdmlldyAub3V0bGluZS1kaXNj
bG9zdXJlIGxpLnJhdy1oZWFkZXJzIHsKKyAgICB0ZXh0LWluZGVudDogMDsKKyAgICBtYXJnaW4t
bGVmdDogLTJweDsKK30KKwogLnJlc291cmNlLWhlYWRlcnMtdmlldyAub3V0bGluZS1kaXNjbG9z
dXJlIC5yYXctZm9ybS1kYXRhIHsKICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZEluZm8u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkSW5mby5oCmlu
ZGV4IGExYjk1OGMuLmRiYmVmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VMb2FkSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VMb2FkSW5mby5oCkBAIC0zOSw2ICszOSw4IEBAIHN0cnVjdCBSZXNv
dXJjZUxvYWRJbmZvIDogUmVmQ291bnRlZDxSZXNvdXJjZUxvYWRJbmZvPiB7CiAgICAgU3RyaW5n
IGh0dHBTdGF0dXNUZXh0OwogICAgIEhUVFBIZWFkZXJNYXAgcmVxdWVzdEhlYWRlcnM7CiAgICAg
SFRUUEhlYWRlck1hcCByZXNwb25zZUhlYWRlcnM7CisgICAgU3RyaW5nIHJhd1JlcXVlc3RIZWFk
ZXJzOworICAgIFN0cmluZyByYXdSZXNwb25zZUhlYWRlcnM7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IDZmYTU4ZWEuLmJhYmIwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDQtMTIgIFZzZXZvbG9kIFZsYXNvdiAgPHZz
ZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRW5hYmxlIHJhdyBIVFRQIGhlYWRlcnMgc3VwcG9y
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgyNTkK
KworICAgICAgICBBZGRlZCByYXcgaGVhZGVycyBzdXBwb3J0IHRvIGluc3BlY3Rvci4KKworICAg
ICAgICAqIHB1YmxpYy9XZWJIVFRQTG9hZEluZm8uaDoKKyAgICAgICAgKiBzcmMvV2ViSFRUUExv
YWRJbmZvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSFRUUExvYWRJbmZvOjpyYXdSZXF1ZXN0
SGVhZGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYkhUVFBMb2FkSW5mbzo6c2V0UmF3UmVxdWVz
dEhlYWRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJIVFRQTG9hZEluZm86OnJhd1Jlc3BvbnNl
SGVhZGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYkhUVFBMb2FkSW5mbzo6c2V0UmF3UmVzcG9u
c2VIZWFkZXJzKToKKwogMjAxMS0wNC0xMSAgSm9obiBBYmQtRWwtTWFsZWsgIDxqYW1AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhUVFBMb2FkSW5mby5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRUUExvYWRJbmZvLmgKaW5kZXggOWZmOTE1My4u
YmU1OTM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRU
UExvYWRJbmZvLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRUUExv
YWRJbmZvLmgKQEAgLTY1LDYgKzY1LDEyIEBAIHB1YmxpYzoKICAgICBXRUJLSVRfQVBJIHZvaWQg
YWRkUmVxdWVzdEhlYWRlcihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYg
dmFsdWUpOwogICAgIFdFQktJVF9BUEkgdm9pZCBhZGRSZXNwb25zZUhlYWRlcihjb25zdCBXZWJT
dHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpOwogCisgICAgV0VCS0lUX0FQSSBX
ZWJTdHJpbmcgcmF3UmVxdWVzdEhlYWRlcnMoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIHZvaWQg
c2V0UmF3UmVxdWVzdEhlYWRlcnMoY29uc3QgV2ViU3RyaW5nJik7CisKKyAgICBXRUJLSVRfQVBJ
IFdlYlN0cmluZyByYXdSZXNwb25zZUhlYWRlcnMoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIHZv
aWQgc2V0UmF3UmVzcG9uc2VIZWFkZXJzKGNvbnN0IFdlYlN0cmluZyYpOworCiAjaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCiAgICAgV2ViSFRUUExvYWRJbmZvKFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpSZXNvdXJjZUxvYWRJbmZvPik7CiAgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdl
YkNvcmU6OlJlc291cmNlTG9hZEluZm8+KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJIVFRQTG9hZEluZm8uY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSFRUUExvYWRJbmZvLmNwcAppbmRleCA4NzZhNDg5Li41Nzk3M2Q5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJIVFRQTG9hZEluZm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkhUVFBMb2FkSW5mby5jcHAKQEAgLTEw
OCw0ICsxMDgsMjggQEAgdm9pZCBXZWJIVFRQTG9hZEluZm86OmFkZFJlc3BvbnNlSGVhZGVyKGNv
bnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJgogICAgIGFkZEhlYWRlcigmbV9w
cml2YXRlLT5yZXNwb25zZUhlYWRlcnMsIG5hbWUsIHZhbHVlKTsKIH0KIAorV2ViU3RyaW5nIFdl
YkhUVFBMb2FkSW5mbzo6cmF3UmVxdWVzdEhlYWRlcnMoKSBjb25zdAoreworICAgIEFTU0VSVCgh
bV9wcml2YXRlLmlzTnVsbCgpKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5yYXdSZXF1ZXN0SGVh
ZGVyczsKK30KKwordm9pZCBXZWJIVFRQTG9hZEluZm86OnNldFJhd1JlcXVlc3RIZWFkZXJzKGNv
bnN0IFdlYlN0cmluZyYgcmF3SGVhZGVycykKK3sKKyAgICBBU1NFUlQoIW1fcHJpdmF0ZS5pc051
bGwoKSk7CisgICAgbV9wcml2YXRlLT5yYXdSZXF1ZXN0SGVhZGVycyA9IHJhd0hlYWRlcnM7Cit9
CisKK1dlYlN0cmluZyBXZWJIVFRQTG9hZEluZm86OnJhd1Jlc3BvbnNlSGVhZGVycygpIGNvbnN0
Cit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOworICAgIHJldHVybiBtX3ByaXZh
dGUtPnJhd1Jlc3BvbnNlSGVhZGVyczsKK30KKwordm9pZCBXZWJIVFRQTG9hZEluZm86OnNldFJh
d1Jlc3BvbnNlSGVhZGVycyhjb25zdCBXZWJTdHJpbmcmIHJhd0hlYWRlcnMpCit7CisgICAgQVNT
RVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOworICAgIG1fcHJpdmF0ZS0+cmF3UmVzcG9uc2VIZWFk
ZXJzID0gcmF3SGVhZGVyczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="81908"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89384</attachid>
            <date>2011-04-13 09:02:43 -0700</date>
            <delta_ts>2011-04-14 05:35:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>headers_webkit</filename>
            <type>text/plain</type>
            <size>24816</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZjM4YWZkLi5lOGQ3ZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkg
QEAKKzIwMTEtMDQtMTMgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogRW5hYmxlIHJhdyBIVFRQIGhlYWRlcnMgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgyNTkKKworICAgICAgICBBZGRlZCByYXcg
aGVhZGVycyB0ZXh0IHN1cHBvcnQgdG8gaW5zcGVjdG9yLgorCisgICAgICAgICogRW5nbGlzaC5s
cHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIucHJvdG90eXBlLl91cGRhdGVSZXNvdXJjZVdpdGhS
ZXNwb25zZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2UucHJvdG90eXBlLmdldCB0cmFuc2ZlclNpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJlc291cmNlLnByb3RvdHlwZS5zZXQgcmVxdWVzdEhlYWRlcnMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5nZXQgcmF3UmVxdWVzdEhlYWRlcnNUZXh0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuc2V0IHJhd1JlcXVlc3RIZWFk
ZXJzVGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLmdldCBy
ZXF1ZXN0SGVhZGVyc1NpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3Rv
dHlwZS5zZXQgcmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZS5wcm90b3R5cGUuZ2V0IHJhd1Jlc3BvbnNlSGVhZGVyc1RleHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5zZXQgcmF3UmVzcG9uc2VIZWFkZXJzVGV4dCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLmdldCByZXNwb25zZUhlYWRl
cnNTaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuX2hlYWRl
cnNTaXplKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlSGVhZGVyc1Zp
ZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldy5wcm90b3R5cGUuX3JlZnJlc2hQ
YXJtcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldy5wcm90b3R5
cGUuX3JlZnJlc2hSZXF1ZXN0SGVhZGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VIZWFkZXJzVmlldy5wcm90b3R5cGUuX3JlZnJlc2hSZXNwb25zZUhlYWRlcnMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBlLl9yZWZyZXNoSGVh
ZGVyc1RpdGxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnBy
b3RvdHlwZS5fcmVmcmVzaEhlYWRlcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
SGVhZGVyc1ZpZXcucHJvdG90eXBlLl9yZWZyZXNoUmF3SGVhZGVyc1RleHQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBlLl90b2dnbGVSYXdSZXF1
ZXN0SGVhZGVyc1RleHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1Zp
ZXcucHJvdG90eXBlLl90b2dnbGVSYXdSZXNwb25zZUhlYWRlcnNUZXh0KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnByb3RvdHlwZS5fY3JlYXRlVG9nZ2xlQnV0
dG9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnByb3RvdHlw
ZS5fY3JlYXRlSGVhZGVyc1RvZ2dsZUJ1dHRvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9uZXR3b3JrUGFuZWwuY3NzOgorICAgICAgICAoLnJlc291cmNlLWhlYWRlcnMtdmlldyAu
b3V0bGluZS1kaXNjbG9zdXJlIGxpIC5oZWFkZXItdG9nZ2xlKToKKyAgICAgICAgKC5yZXNvdXJj
ZS1oZWFkZXJzLXZpZXcgLm91dGxpbmUtZGlzY2xvc3VyZSBsaS5leHBhbmRlZCAuaGVhZGVyLXRv
Z2dsZSk6CisgICAgICAgICgucmVzb3VyY2UtaGVhZGVycy12aWV3IC5vdXRsaW5lLWRpc2Nsb3N1
cmUgbGkgLmhlYWRlci10b2dnbGU6aG92ZXIpOgorICAgICAgICAoLnJlc291cmNlLWhlYWRlcnMt
dmlldyAub3V0bGluZS1kaXNjbG9zdXJlIGxpLnJhdy1oZWFkZXJzLXRleHQpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkSW5mby5oOgorCiAyMDExLTA0LTEzICBCZW4g
VGF5bG9yICA8YmVudGF5bG9yLnNvbHg4NkBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9q
L2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2Fs
aXplZFN0cmluZ3MuanMKaW5kZXggYmYwZDQ3Yy4uNTNiZWEzNSAxMDA2NDQKQmluYXJ5IGZpbGVz
IGEvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGFuZCBi
L1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBkaWZmZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA0M2EwMzkzLi43ZWY3
YmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24K
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0zMzYsOCAr
MzM2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RhdHVzIiwgInR5cGUi
OiAibnVtYmVyIiwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ugc3RhdHVzIGNvZGUuIiB9
LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXR1c1RleHQiLCAidHlwZSI6ICJz
dHJpbmciLCAiZGVzY3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBzdGF0dXMgdGV4dC4iIH0sCiAg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVhZGVycyIsICJ0eXBlIjogIm9iamVjdCIs
ICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIGhlYWRlcnMuIiB9LAorICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInJhd0hlYWRlcnNUZXh0IiwgInR5cGUiOiAic3RyaW5nIiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlJhdyBIVFRQIHJlc3BvbnNlIGhlYWRlcnMg
dGV4dC4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWltZVR5cGUiLCAidHlw
ZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiUmVzb3VyY2UgbWltZVR5cGUgYXMgZGV0ZXJt
aW5lZCBieSB0aGUgYnJvd3Nlci4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
cmVxdWVzdEhlYWRlcnMiLCAidHlwZSI6ICJvYmplY3QiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiUmVmaW5lZCBIVFRQIHJlcXVlc3QgaGVhZGVycyB0aGF0IHdlcmUgYWN0dWFs
bHkgdHJhbnNtaXR0ZWQgb3ZlciB0aGUgbmV0d29yay4iIH0sCisgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAicmF3UmVxdWVzdEhlYWRlcnNUZXh0IiwgInR5cGUiOiAic3RyaW5nIiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlJhdyBIVFRQIHJlcXVlc3QgaGVhZGVycyB0
ZXh0LiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb25uZWN0aW9uUmV1c2Vk
IiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJTcGVjaWZpZXMgd2hldGhlciBw
aHlzaWNhbCBjb25uZWN0aW9uIHdhcyBhY3R1YWxseSByZXVzZWQgZm9yIHRoaXMgcmVxdWVzdC4i
IH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29ubmVjdGlvbklEIiwgInR5cGUi
OiAibnVtYmVyIiwgImRlc2NyaXB0aW9uIjogIlBoeXNpY2FsIGNvbm5lY3Rpb24gaWQgdGhhdCB3
YXMgYWN0dWFsbHkgdXNlZCBmb3IgdGhpcyByZXF1ZXN0LiIgfSwKICAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJmcm9tRGlza0NhY2hlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJTcGVjaWZpZXMgdGhhdCB0aGUgcmVzb3VyY2Ugd2Fz
IGxvYWRlZCBmcm9tIHRoZSBkaXNrIGNhY2hlLiIgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCA5NWNlYmNmLi4xNjk4
MDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwCkBAIC0yMjEsNyArMjIxLDYgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2UK
ICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXNwb25zZU9iamVjdCA9IEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgcmVzcG9uc2VPYmplY3QtPnNldE51bWJlcigic3RhdHVzIiwg
cmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpID8gcmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygp
LT5odHRwU3RhdHVzQ29kZSA6IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogICAgIHJlc3Bv
bnNlT2JqZWN0LT5zZXRTdHJpbmcoInN0YXR1c1RleHQiLCByZXNwb25zZS5yZXNvdXJjZUxvYWRJ
bmZvKCkgPyByZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCktPmh0dHBTdGF0dXNUZXh0IDogcmVz
cG9uc2UuaHR0cFN0YXR1c1RleHQoKSk7Ci0gICAgcmVzcG9uc2VPYmplY3QtPnNldE9iamVjdCgi
aGVhZGVycyIsIGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhyZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZv
KCkgPyByZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCktPnJlc3BvbnNlSGVhZGVycyA6IHJlc3Bv
bnNlLmh0dHBIZWFkZXJGaWVsZHMoKSkpOwogCiAgICAgcmVzcG9uc2VPYmplY3QtPnNldFN0cmlu
ZygibWltZVR5cGUiLCByZXNwb25zZS5taW1lVHlwZSgpKTsKICAgICByZXNwb25zZU9iamVjdC0+
c2V0Qm9vbGVhbigiY29ubmVjdGlvblJldXNlZCIsIHJlc3BvbnNlLmNvbm5lY3Rpb25SZXVzZWQo
KSk7CkBAIC0yMzAsOCArMjI5LDE2IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlCiAgICAgaWYg
KHJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpKQogICAgICAgICByZXNwb25zZU9iamVjdC0+
c2V0T2JqZWN0KCJ0aW1pbmciLCBidWlsZE9iamVjdEZvclRpbWluZygqcmVzcG9uc2UucmVzb3Vy
Y2VMb2FkVGltaW5nKCkpKTsKIAotICAgIGlmIChyZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCkp
CisgICAgaWYgKHJlc3BvbnNlLnJlc291cmNlTG9hZEluZm8oKSkgeworICAgICAgICByZXNwb25z
ZU9iamVjdC0+c2V0T2JqZWN0KCJoZWFkZXJzIiwgYnVpbGRPYmplY3RGb3JIZWFkZXJzKHJlc3Bv
bnNlLnJlc291cmNlTG9hZEluZm8oKS0+cmVzcG9uc2VIZWFkZXJzKSk7CisgICAgICAgIGlmICgh
cmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpLT5yYXdSZXNwb25zZUhlYWRlcnNUZXh0LmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRTdHJpbmcoInJhd0hlYWRlcnNU
ZXh0IiwgcmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpLT5yYXdSZXNwb25zZUhlYWRlcnNUZXh0
KTsKKwogICAgICAgICByZXNwb25zZU9iamVjdC0+c2V0T2JqZWN0KCJyZXF1ZXN0SGVhZGVycyIs
IGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhyZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCktPnJlcXVl
c3RIZWFkZXJzKSk7CisgICAgICAgIGlmICghcmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpLT5y
YXdSZXF1ZXN0SGVhZGVyc1RleHQuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmVzcG9uc2VPYmpl
Y3QtPnNldFN0cmluZygicmF3UmVxdWVzdEhlYWRlcnNUZXh0IiwgcmVzcG9uc2UucmVzb3VyY2VM
b2FkSW5mbygpLT5yYXdSZXF1ZXN0SGVhZGVyc1RleHQpOworICAgIH0gZWxzZQorICAgICAgICBy
ZXNwb25zZU9iamVjdC0+c2V0T2JqZWN0KCJoZWFkZXJzIiwgYnVpbGRPYmplY3RGb3JIZWFkZXJz
KHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKSkpOwogCiAgICAgcmV0dXJuIHJlc3BvbnNlT2Jq
ZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9O
ZXR3b3JrTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0
d29ya01hbmFnZXIuanMKaW5kZXggYTVhNTNjYi4uODQ4ODdkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzCkBAIC05Miw5
ICs5MiwxMiBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIucHJvdG90eXBlID0gewog
ICAgICAgICByZXNvdXJjZS5zdGF0dXNDb2RlID0gcmVzcG9uc2Uuc3RhdHVzOwogICAgICAgICBy
ZXNvdXJjZS5zdGF0dXNUZXh0ID0gcmVzcG9uc2Uuc3RhdHVzVGV4dDsKICAgICAgICAgcmVzb3Vy
Y2UucmVzcG9uc2VIZWFkZXJzID0gcmVzcG9uc2UuaGVhZGVyczsKLSAgICAgICAgLy8gUmF3IHJl
cXVlc3QgaGVhZGVycyBjYW4gYmUgYSBwYXJ0IG9mIHJlc3BvbnNlIGFzIHdlbGwuCisgICAgICAg
IGlmIChyZXNwb25zZS5yYXdIZWFkZXJzVGV4dCkKKyAgICAgICAgICAgIHJlc291cmNlLnJhd1Jl
c3BvbnNlSGVhZGVyc1RleHQgPSByZXNwb25zZS5yYXdIZWFkZXJzVGV4dDsKICAgICAgICAgaWYg
KHJlc3BvbnNlLnJlcXVlc3RIZWFkZXJzKQogICAgICAgICAgICAgcmVzb3VyY2UucmVxdWVzdEhl
YWRlcnMgPSByZXNwb25zZS5yZXF1ZXN0SGVhZGVyczsKKyAgICAgICAgaWYgKHJlc3BvbnNlLnJh
d1JlcXVlc3RIZWFkZXJzVGV4dCkKKyAgICAgICAgICAgIHJlc291cmNlLnJhd1JlcXVlc3RIZWFk
ZXJzVGV4dCA9IHJlc3BvbnNlLnJhd1JlcXVlc3RIZWFkZXJzVGV4dDsKIAogICAgICAgICByZXNv
dXJjZS5jb25uZWN0aW9uUmV1c2VkID0gcmVzcG9uc2UuY29ubmVjdGlvblJldXNlZDsKICAgICAg
ICAgcmVzb3VyY2UuY29ubmVjdGlvbklEID0gcmVzcG9uc2UuY29ubmVjdGlvbklEOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKaW5kZXggMDBlYjhk
ZC4uOTUwN2MzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jl
c291cmNlLmpzCkBAIC0zMyw3ICszMyw2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZSA9IGZ1bmN0
aW9uKGlkZW50aWZpZXIsIHVybCkKICAgICB0aGlzLl9lbmRUaW1lID0gLTE7CiAgICAgdGhpcy5f
Y2F0ZWdvcnkgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLm90aGVyOwogICAgIHRo
aXMuX3BlbmRpbmdDb250ZW50Q2FsbGJhY2tzID0gW107Ci0gICAgdGhpcy5fcmVzcG9uc2VIZWFk
ZXJzU2l6ZSA9IDA7CiB9CiAKIC8vIEtlZXAgdGhlc2UgaW4gc3luYyB3aXRoIFdlYkNvcmU6Oklu
c3BlY3RvclJlc291cmNlOjpUeXBlCkBAIC0yNDAsNyArMjM5LDcgQEAgV2ViSW5zcGVjdG9yLlJl
c291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMuY2FjaGVkKQogICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgICAgIGlmICh0aGlzLnN0YXR1c0NvZGUgPT09IDMwNCkgLy8gTm90
IG1vZGlmaWVkCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VIZWFkZXJzU2l6ZTsK
KyAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc3BvbnNlSGVhZGVyc1NpemU7CiAgICAgICAgIGlm
ICh0aGlzLl90cmFuc2ZlclNpemUgIT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgIHJldHVybiB0
aGlzLl90cmFuc2ZlclNpemU7CiAgICAgICAgIC8vIElmIHdlIGRpZCBub3QgcmVjZWl2ZSBhY3R1
YWwgdHJhbnNmZXIgc2l6ZSBmcm9tIG5ldHdvcmsKQEAgLTI1NCw3ICsyNTMsNyBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICAvLyB3b3JrIGZvciBjaHVua3Mg
d2l0aCBub24tdHJpdmlhbCBlbmNvZGluZ3MuIFdlIG5lZWQgYSB3YXkgdG8KICAgICAgICAgLy8g
Z2V0IGFjdHVhbCB0cmFuc2ZlciBzaXplIGZyb20gdGhlIG5ldHdvcmsgc3RhY2suCiAgICAgICAg
IHZhciBib2R5U2l6ZSA9IE51bWJlcih0aGlzLnJlc3BvbnNlSGVhZGVyc1siQ29udGVudC1MZW5n
dGgiXSB8fCB0aGlzLnJlc291cmNlU2l6ZSk7Ci0gICAgICAgIHJldHVybiB0aGlzLl9yZXNwb25z
ZUhlYWRlcnNTaXplICsgYm9keVNpemU7CisgICAgICAgIHJldHVybiB0aGlzLnJlc3BvbnNlSGVh
ZGVyc1NpemUgKyBib2R5U2l6ZTsKICAgICB9LAogCiAgICAgaW5jcmVhc2VUcmFuc2ZlclNpemU6
IGZ1bmN0aW9uKHgpCkBAIC00MDMsMTAgKzQwMiwzNSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2Uu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZXF1ZXN0SGVhZGVycyA9IHg7CiAgICAgICAg
IGRlbGV0ZSB0aGlzLl9zb3J0ZWRSZXF1ZXN0SGVhZGVyczsKICAgICAgICAgZGVsZXRlIHRoaXMu
X3JlcXVlc3RDb29raWVzOworICAgICAgICBkZWxldGUgdGhpcy5fcmVzcG9uc2VIZWFkZXJzU2l6
ZTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygicmVxdWVzdEhlYWRl
cnMgY2hhbmdlZCIpOwogICAgIH0sCiAKKyAgICBnZXQgcmF3UmVxdWVzdEhlYWRlcnNUZXh0KCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yYXdSZXF1ZXN0SGVhZGVyc1RleHQ7CisgICAg
fSwKKworICAgIHNldCByYXdSZXF1ZXN0SGVhZGVyc1RleHQoeCkKKyAgICB7CisgICAgICAgIHRo
aXMuX3Jhd1JlcXVlc3RIZWFkZXJzVGV4dCA9IHg7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9yZXNw
b25zZUhlYWRlcnNTaXplOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KCJyZXF1ZXN0SGVhZGVycyBjaGFuZ2VkIik7CisgICAgfSwKKworICAgIGdldCByZXF1ZXN0SGVh
ZGVyc1NpemUoKQorICAgIHsKKyAgICAgICAgaWYgKHR5cGVvZih0aGlzLl9yZXF1ZXN0SGVhZGVy
c1NpemUpID09PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAgaWYgKHRoaXMuX3Jhd1JlcXVl
c3RIZWFkZXJzVGV4dCkKKyAgICAgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0SGVhZGVyc1NpemUg
PSB0aGlzLl9yYXdSZXF1ZXN0SGVhZGVyc1RleHQubGVuZ3RoOworICAgICAgICAgICAgZWxzZSAK
KyAgICAgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0SGVhZGVyc1NpemUgPSB0aGlzLl9oZWFkZXJz
U2l6ZSh0aGlzLl9yZXF1ZXN0SGVhZGVycykKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhp
cy5fcmVxdWVzdEhlYWRlcnNTaXplOworICAgIH0sCisKICAgICBnZXQgc29ydGVkUmVxdWVzdEhl
YWRlcnMoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NvcnRlZFJlcXVlc3RIZWFkZXJzICE9
PSB1bmRlZmluZWQpCkBAIC00NTEsMTMgKzQ3NSwzNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2Uu
cHJvdG90eXBlID0gewogICAgIHNldCByZXNwb25zZUhlYWRlcnMoeCkKICAgICB7CiAgICAgICAg
IHRoaXMuX3Jlc3BvbnNlSGVhZGVycyA9IHg7Ci0gICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQg
dGFrZSBhY3R1YWwgaGVhZGVycyBzaXplIGZyb20gbmV0d29yayBzdGFjaywgd2hlbiBwb3NzaWJs
ZS4KLSAgICAgICAgdGhpcy5fcmVzcG9uc2VIZWFkZXJzU2l6ZSA9IHRoaXMuX2hlYWRlcnNTaXpl
KHgpOworICAgICAgICBkZWxldGUgdGhpcy5fcmVzcG9uc2VIZWFkZXJzU2l6ZTsKICAgICAgICAg
ZGVsZXRlIHRoaXMuX3NvcnRlZFJlc3BvbnNlSGVhZGVyczsKICAgICAgICAgZGVsZXRlIHRoaXMu
X3Jlc3BvbnNlQ29va2llczsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cygicmVzcG9uc2VIZWFkZXJzIGNoYW5nZWQiKTsKICAgICB9LAorICAgIAorICAgIGdldCByYXdS
ZXNwb25zZUhlYWRlcnNUZXh0KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yYXdSZXNw
b25zZUhlYWRlcnNUZXh0OworICAgIH0sCisKKyAgICBzZXQgcmF3UmVzcG9uc2VIZWFkZXJzVGV4
dCh4KQorICAgIHsKKyAgICAgICAgdGhpcy5fcmF3UmVzcG9uc2VIZWFkZXJzVGV4dCA9IHg7Cisg
ICAgICAgIGRlbGV0ZSB0aGlzLl9yZXNwb25zZUhlYWRlcnNTaXplOworCisgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJyZXNwb25zZUhlYWRlcnMgY2hhbmdlZCIpOworICAg
IH0sCisgICAgCisgICAgZ2V0IHJlc3BvbnNlSGVhZGVyc1NpemUoKQorICAgIHsKKyAgICAgICAg
aWYgKHR5cGVvZih0aGlzLl9yZXNwb25zZUhlYWRlcnNTaXplKSA9PT0gInVuZGVmaW5lZCIpIHsK
KyAgICAgICAgICAgIGlmICh0aGlzLl9yYXdSZXNwb25zZUhlYWRlcnNUZXh0KQorICAgICAgICAg
ICAgICAgIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1NpemUgPSB0aGlzLl9yYXdSZXNwb25zZUhlYWRl
cnNUZXh0Lmxlbmd0aDsKKyAgICAgICAgICAgIGVsc2UgCisgICAgICAgICAgICAgICAgdGhpcy5f
cmVzcG9uc2VIZWFkZXJzU2l6ZSA9IHRoaXMuX2hlYWRlcnNTaXplKHRoaXMuX3Jlc3BvbnNlSGVh
ZGVycykKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VIZWFkZXJzU2l6
ZTsKKyAgICB9LAorICAgIAogCiAgICAgZ2V0IHNvcnRlZFJlc3BvbnNlSGVhZGVycygpCiAgICAg
ewpAQCAtNTM2LDkgKzU4NCwxMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0g
ewogCiAgICAgX2hlYWRlcnNTaXplOiBmdW5jdGlvbihoZWFkZXJzKQogICAgIHsKKyAgICAgICAg
Ly8gV2Ugc2hvdWxkIHRha2UgYWN0dWFsIGhlYWRlcnMgc2l6ZSBmcm9tIG5ldHdvcmsgc3RhY2ss
IHdoZW4gcG9zc2libGUsIGJ1dCBmYWxsIGJhY2sgdG8KKyAgICAgICAgLy8gdGhpcyBsb3VzeSBj
b21wdXRhdGlvbiB3aGVuIG5vIHJhdyBoZWFkZXJzIGFyZSBhdmFpbGFibGUuCiAgICAgICAgIHZh
ciBzaXplID0gMDsKICAgICAgICAgZm9yICh2YXIgaGVhZGVyIGluIGhlYWRlcnMpCi0gICAgICAg
ICAgICBzaXplICs9IGhlYWRlci5sZW5ndGggKyBoZWFkZXJzW2hlYWRlcl0ubGVuZ3RoICsgMzsg
Ly8gX3R5cGljYWxfIG92ZXJoZWFkIHBlciBoZXJhZGVyIGlzICI6ICIubGVuZ3RoICsgIlxuIi5s
ZW5ndGguCisgICAgICAgICAgICBzaXplICs9IGhlYWRlci5sZW5ndGggKyBoZWFkZXJzW2hlYWRl
cl0ubGVuZ3RoICsgNDsgLy8gX3R5cGljYWxfIG92ZXJoZWFkIHBlciBoZWFkZXIgaXMgIjogIi5s
ZW5ndGggKyAiXHJcbiIubGVuZ3RoLgogICAgICAgICByZXR1cm4gc2l6ZTsKICAgICB9LAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlSGVh
ZGVyc1ZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNl
SGVhZGVyc1ZpZXcuanMKaW5kZXggZTc5MDc4YS4uNDM0Mzc5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZUhlYWRlcnNWaWV3LmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VIZWFkZXJzVmlldy5q
cwpAQCAtNTksOSArNTksMTEgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcgPSBm
dW5jdGlvbihyZXNvdXJjZSkKICAgICB0aGlzLl9yZXF1ZXN0SGVhZGVyc1RyZWVFbGVtZW50LnNl
bGVjdGFibGUgPSBmYWxzZTsKICAgICB0aGlzLl9oZWFkZXJzVHJlZU91dGxpbmUuYXBwZW5kQ2hp
bGQodGhpcy5fcmVxdWVzdEhlYWRlcnNUcmVlRWxlbWVudCk7CiAKLSAgICB0aGlzLl9kZWNvZGVI
b3ZlciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRG91YmxlLUNsaWNrIHRvIHRvZ2dsZSBiZXR3
ZWVuIFVSTCBlbmNvZGVkIGFuZCBkZWNvZGVkIGZvcm1hdHMiKTsKICAgICB0aGlzLl9kZWNvZGVS
ZXF1ZXN0UGFyYW1ldGVycyA9IHRydWU7CiAKKyAgICB0aGlzLl9zaG93UmF3UmVxdWVzdEhlYWRl
cnNUZXh0ID0gZmFsc2U7CisgICAgdGhpcy5fc2hvd1Jhd1Jlc3BvbnNlSGVhZGVyc1RleHQgPSBm
YWxzZTsKKwogICAgIHRoaXMuX3F1ZXJ5U3RyaW5nVHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1l
bnQoIiIsIG51bGwsIHRydWUpOwogICAgIHRoaXMuX3F1ZXJ5U3RyaW5nVHJlZUVsZW1lbnQuZXhw
YW5kZWQgPSB0cnVlOwogICAgIHRoaXMuX3F1ZXJ5U3RyaW5nVHJlZUVsZW1lbnQuc2VsZWN0YWJs
ZSA9IGZhbHNlOwpAQCAtMTQ2LDcgKzE0OCwxOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFk
ZXJzVmlldy5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBwYXJtc1RyZWVFbGVtZW50LnJl
bW92ZUNoaWxkcmVuKCk7CiAKLSAgICAgICAgcGFybXNUcmVlRWxlbWVudC50aXRsZUhUTUwgPSB0
aXRsZSArICI8c3BhbiBjbGFzcz1cImhlYWRlci1jb3VudFwiPiIgKyBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIiAoJWQpIiwgcGFybXMubGVuZ3RoKSArICI8L3NwYW4+IjsKKyAgICAgICAgcGFybXNU
cmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgcGFy
bXNUcmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUodGl0bGUpKTsKKyAgICAgICAgCisgICAgICAgIHZhciBoZWFkZXJDb3VudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgaGVhZGVyQ291bnQuYWRkU3R5
bGVDbGFzcygiaGVhZGVyLWNvdW50Iik7CisgICAgICAgIGhlYWRlckNvdW50LnRleHRDb250ZW50
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIgKCVkKSIsIHBhcm1zLmxlbmd0aCk7CisgICAgICAg
IHBhcm1zVHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKGhlYWRlckNvdW50
KTsKKworICAgICAgICB2YXIgdG9nZ2xlVGl0bGUgPSB0aGlzLl9kZWNvZGVSZXF1ZXN0UGFyYW1l
dGVycyA/IFdlYkluc3BlY3Rvci5VSVN0cmluZygidmlldyBVUkwgZW5jb2RlZCIpIDogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJ2aWV3IGRlY29kZWQiKTsKKyAgICAgICAgdmFyIHRvZ2dsZUJ1dHRv
biA9IHRoaXMuX2NyZWF0ZVRvZ2dsZUJ1dHRvbih0b2dnbGVUaXRsZSk7CisgICAgICAgIHRvZ2ds
ZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3RvZ2dsZVVSTGRlY29kaW5n
LmJpbmQodGhpcykpOworICAgICAgICBwYXJtc1RyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5h
cHBlbmRDaGlsZCh0b2dnbGVCdXR0b24pOworCiAKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBwYXJtcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIG5hbWUgPSBwYXJtc1tpXS5u
YW1lOwpAQCAtMTc1LDggKzE4OSw2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBwYXJtVHJlZUVsZW1lbnQgPSBuZXcgVHJl
ZUVsZW1lbnQobnVsbCwgbnVsbCwgZmFsc2UpOwogICAgICAgICAgICAgcGFybVRyZWVFbGVtZW50
LnRpdGxlSFRNTCA9IHRpdGxlOwogICAgICAgICAgICAgcGFybVRyZWVFbGVtZW50LnNlbGVjdGFi
bGUgPSBmYWxzZTsKLSAgICAgICAgICAgIHBhcm1UcmVlRWxlbWVudC50b29sdGlwID0gdGhpcy5f
ZGVjb2RlSG92ZXI7Ci0gICAgICAgICAgICBwYXJtVHJlZUVsZW1lbnQub25kYmxjbGljayA9IHRo
aXMuX3RvZ2dsZVVSTGRlY29kaW5nLmJpbmQodGhpcyk7CiAgICAgICAgICAgICBwYXJtc1RyZWVF
bGVtZW50LmFwcGVuZENoaWxkKHBhcm1UcmVlRWxlbWVudCk7CiAgICAgICAgIH0KICAgICB9LApA
QCAtMjAyLDcgKzIxNCwxOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHZhciBhZGRpdGlvbmFsUm93ID0gbnVsbDsKICAgICAgICAgaWYg
KHR5cGVvZiB0aGlzLl9yZXNvdXJjZS53ZWJTb2NrZXRSZXF1ZXN0S2V5MyAhPT0gInVuZGVmaW5l
ZCIpCiAgICAgICAgICAgICBhZGRpdGlvbmFsUm93ID0ge2hlYWRlcjogIihLZXkzKSIsIHZhbHVl
OiB0aGlzLl9yZXNvdXJjZS53ZWJTb2NrZXRSZXF1ZXN0S2V5M307Ci0gICAgICAgIHRoaXMuX3Jl
ZnJlc2hIZWFkZXJzKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCBIZWFkZXJzIiksIHRo
aXMuX3Jlc291cmNlLnNvcnRlZFJlcXVlc3RIZWFkZXJzLCBhZGRpdGlvbmFsUm93LCB0aGlzLl9y
ZXF1ZXN0SGVhZGVyc1RyZWVFbGVtZW50KTsKKyAgICAgICAgaWYgKHRoaXMuX3Nob3dSYXdSZXF1
ZXN0SGVhZGVyc1RleHQpCisgICAgICAgICAgICB0aGlzLl9yZWZyZXNoUmF3SGVhZGVyc1RleHQo
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0IEhlYWRlcnMiKSwgdGhpcy5fcmVzb3VyY2Uu
cmF3UmVxdWVzdEhlYWRlcnNUZXh0LCB0aGlzLl9yZXF1ZXN0SGVhZGVyc1RyZWVFbGVtZW50KTsK
KyAgICAgICAgZWxzZSAKKyAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJzKFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiUmVxdWVzdCBIZWFkZXJzIiksIHRoaXMuX3Jlc291cmNlLnNvcnRlZFJl
cXVlc3RIZWFkZXJzLCBhZGRpdGlvbmFsUm93LCB0aGlzLl9yZXF1ZXN0SGVhZGVyc1RyZWVFbGVt
ZW50KTsKKworICAgICAgICBpZiAodGhpcy5fcmVzb3VyY2UucmF3UmVxdWVzdEhlYWRlcnNUZXh0
KSB7IAorICAgICAgICAgICAgdmFyIHRvZ2dsZUJ1dHRvbiA9IHRoaXMuX2NyZWF0ZUhlYWRlcnNU
b2dnbGVCdXR0b24odGhpcy5fc2hvd1Jhd1JlcXVlc3RIZWFkZXJzVGV4dCk7CisgICAgICAgICAg
ICB0b2dnbGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl90b2dnbGVSYXdS
ZXF1ZXN0SGVhZGVyc1RleHQuYmluZCh0aGlzKSk7CisgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0
SGVhZGVyc1RyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5hcHBlbmRDaGlsZCh0b2dnbGVCdXR0
b24pOworCisgICAgICAgIH0KKwogICAgICAgICB0aGlzLl9yZWZyZXNoRm9ybURhdGEoKTsKICAg
ICB9LAogCkBAIC0yMTEsNyArMjM0LDE2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGFkZGl0aW9uYWxSb3cgPSBudWxsOwogICAg
ICAgICBpZiAodHlwZW9mIHRoaXMuX3Jlc291cmNlLndlYlNvY2tldENoYWxsZW5nZVJlc3BvbnNl
ICE9PSAidW5kZWZpbmVkIikKICAgICAgICAgICAgIGFkZGl0aW9uYWxSb3cgPSB7aGVhZGVyOiAi
KENoYWxsZW5nZSBSZXNwb25zZSkiLCB2YWx1ZTogdGhpcy5fcmVzb3VyY2Uud2ViU29ja2V0Q2hh
bGxlbmdlUmVzcG9uc2V9OwotICAgICAgICB0aGlzLl9yZWZyZXNoSGVhZGVycyhXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlJlc3BvbnNlIEhlYWRlcnMiKSwgdGhpcy5fcmVzb3VyY2Uuc29ydGVkUmVz
cG9uc2VIZWFkZXJzLCBhZGRpdGlvbmFsUm93LCB0aGlzLl9yZXNwb25zZUhlYWRlcnNUcmVlRWxl
bWVudCk7CisgICAgICAgIGlmICh0aGlzLl9zaG93UmF3UmVzcG9uc2VIZWFkZXJzVGV4dCkKKyAg
ICAgICAgICAgIHRoaXMuX3JlZnJlc2hSYXdIZWFkZXJzVGV4dChXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlJlc3BvbnNlIEhlYWRlcnMiKSwgdGhpcy5fcmVzb3VyY2UucmF3UmVzcG9uc2VIZWFkZXJz
VGV4dCwgdGhpcy5fcmVzcG9uc2VIZWFkZXJzVHJlZUVsZW1lbnQpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICB0aGlzLl9yZWZyZXNoSGVhZGVycyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJl
c3BvbnNlIEhlYWRlcnMiKSwgdGhpcy5fcmVzb3VyY2Uuc29ydGVkUmVzcG9uc2VIZWFkZXJzLCBh
ZGRpdGlvbmFsUm93LCB0aGlzLl9yZXNwb25zZUhlYWRlcnNUcmVlRWxlbWVudCk7CisgICAgICAg
IAorICAgICAgICBpZiAodGhpcy5fcmVzb3VyY2UucmF3UmVzcG9uc2VIZWFkZXJzVGV4dCkgewor
ICAgICAgICAgICAgdmFyIHRvZ2dsZUJ1dHRvbiA9IHRoaXMuX2NyZWF0ZUhlYWRlcnNUb2dnbGVC
dXR0b24odGhpcy5fc2hvd1Jhd1Jlc3BvbnNlSGVhZGVyc1RleHQpOworICAgICAgICAgICAgdG9n
Z2xlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fdG9nZ2xlUmF3UmVzcG9u
c2VIZWFkZXJzVGV4dC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHRoaXMuX3Jlc3BvbnNlSGVh
ZGVyc1RyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5hcHBlbmRDaGlsZCh0b2dnbGVCdXR0b24p
OworICAgICAgICB9CiAgICAgfSwKIAogICAgIF9yZWZyZXNoSFRUUEluZm9ybWF0aW9uOiBmdW5j
dGlvbigpCkBAIC0yNDIsMTUgKzI3NCwyNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJz
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogICAgIAorICAgIF9yZWZyZXNo
SGVhZGVyc1RpdGxlOiBmdW5jdGlvbih0aXRsZSwgaGVhZGVyc1RyZWVFbGVtZW50LCBpc1Jhd0hl
YWRlcnNUZXh0U2hvd24sIGhlYWRlcnNMZW5ndGgpCisgICAgeworICAgICAgICBoZWFkZXJzVHJl
ZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIGhlYWRl
cnNUcmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUodGl0bGUpKTsKKyAgICAgICAgCisgICAgICAgIGlmICghaXNSYXdIZWFkZXJzVGV4
dFNob3duKSB7CisgICAgICAgICAgICB2YXIgaGVhZGVyQ291bnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICBoZWFkZXJDb3VudC5hZGRTdHlsZUNsYXNzKCJo
ZWFkZXItY291bnQiKTsKKyAgICAgICAgICAgIGhlYWRlckNvdW50LnRleHRDb250ZW50ID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCIgKCVkKSIsIGhlYWRlcnNMZW5ndGgpOworICAgICAgICAgICAg
aGVhZGVyc1RyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5hcHBlbmRDaGlsZChoZWFkZXJDb3Vu
dCk7CisgICAgICAgIH0KKyAgICB9LAorICAgIAogICAgIF9yZWZyZXNoSGVhZGVyczogZnVuY3Rp
b24odGl0bGUsIGhlYWRlcnMsIGFkZGl0aW9uYWxSb3csIGhlYWRlcnNUcmVlRWxlbWVudCkKICAg
ICB7CiAgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotCisgICAg
ICAgIAogICAgICAgICB2YXIgbGVuZ3RoID0gaGVhZGVycy5sZW5ndGg7Ci0gICAgICAgIGhlYWRl
cnNUcmVlRWxlbWVudC50aXRsZUhUTUwgPSB0aXRsZS5lc2NhcGVIVE1MKCkgKyAiPHNwYW4gY2xh
c3M9XCJoZWFkZXItY291bnRcIj4iICsgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIgKCVkKSIsIGxl
bmd0aCkgKyAiPC9zcGFuPiI7CisgICAgICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJzVGl0bGUodGl0
bGUsIGhlYWRlcnNUcmVlRWxlbWVudCwgZmFsc2UsIGxlbmd0aCk7CiAgICAgICAgIGhlYWRlcnNU
cmVlRWxlbWVudC5oaWRkZW4gPSAhbGVuZ3RoOwotCi0gICAgICAgIHZhciBsZW5ndGggPSBoZWFk
ZXJzLmxlbmd0aDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewog
ICAgICAgICAgICAgdmFyIHRpdGxlID0gIjxkaXYgY2xhc3M9XCJoZWFkZXItbmFtZVwiPiIgKyBo
ZWFkZXJzW2ldLmhlYWRlci5lc2NhcGVIVE1MKCkgKyAiOjwvZGl2PiI7CiAgICAgICAgICAgICB0
aXRsZSArPSAiPGRpdiBjbGFzcz1cImhlYWRlci12YWx1ZSBzb3VyY2UtY29kZVwiPiIgKyBoZWFk
ZXJzW2ldLnZhbHVlLmVzY2FwZUhUTUwoKSArICI8L2Rpdj4iCkBAIC0yNzAsNiArMzEzLDQ1IEBA
IFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIGhlYWRlclRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKICAgICAgICAgICAgIGhl
YWRlcnNUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChoZWFkZXJUcmVlRWxlbWVudCk7CiAgICAgICAg
IH0KKyAgICB9LAorICAgIAorICAgIF9yZWZyZXNoUmF3SGVhZGVyc1RleHQ6IGZ1bmN0aW9uKHRp
dGxlLCByYXdIZWFkZXJzVGV4dCwgaGVhZGVyc1RyZWVFbGVtZW50KQorICAgIHsKKyAgICAgICAg
aGVhZGVyc1RyZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIAorICAgICAgICB0
aGlzLl9yZWZyZXNoSGVhZGVyc1RpdGxlKHRpdGxlLCBoZWFkZXJzVHJlZUVsZW1lbnQsIHRydWUp
OworICAgICAgICB2YXIgaGVhZGVyVHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQobnVsbCwg
bnVsbCwgZmFsc2UpOworICAgICAgICB2YXIgdGl0bGUgPSAiPHNwYW4gY2xhc3M9XCJoZWFkZXIt
dmFsdWUgc291cmNlLWNvZGVcIj4iICsgU3RyaW5nKHJhd0hlYWRlcnNUZXh0KS50cmltKCkuZXNj
YXBlSFRNTCgpICsgIjwvc3Bhbj4iCisgICAgICAgIGhlYWRlclRyZWVFbGVtZW50LnRpdGxlSFRN
TCA9IHRpdGxlOworICAgICAgICBoZWFkZXJUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7
CisgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChoZWFkZXJUcmVlRWxlbWVu
dCk7CisgICAgICAgIGhlYWRlclRyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5hZGRTdHlsZUNs
YXNzKCJyYXctaGVhZGVycy10ZXh0Iik7CisgICAgfSwKKworICAgIF90b2dnbGVSYXdSZXF1ZXN0
SGVhZGVyc1RleHQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fc2hvd1Jh
d1JlcXVlc3RIZWFkZXJzVGV4dCA9ICF0aGlzLl9zaG93UmF3UmVxdWVzdEhlYWRlcnNUZXh0Owor
ICAgICAgICB0aGlzLl9yZWZyZXNoUmVxdWVzdEhlYWRlcnMoKTsKKyAgICB9LAorCisgICAgX3Rv
Z2dsZVJhd1Jlc3BvbnNlSGVhZGVyc1RleHQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgdGhpcy5fc2hvd1Jhd1Jlc3BvbnNlSGVhZGVyc1RleHQgPSAhdGhpcy5fc2hvd1Jhd1Jlc3Bv
bnNlSGVhZGVyc1RleHQ7CisgICAgICAgIHRoaXMuX3JlZnJlc2hSZXNwb25zZUhlYWRlcnMoKTsK
KyAgICB9LAorCisgICAgX2NyZWF0ZVRvZ2dsZUJ1dHRvbjogZnVuY3Rpb24odGl0bGUpCisgICAg
eworICAgICAgICB2YXIgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwor
ICAgICAgICBidXR0b24uYWRkU3R5bGVDbGFzcygiaGVhZGVyLXRvZ2dsZSIpOworICAgICAgICBi
dXR0b24udGV4dENvbnRlbnQgPSB0aXRsZTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9
LAorICAgIAorICAgIF9jcmVhdGVIZWFkZXJzVG9nZ2xlQnV0dG9uOiBmdW5jdGlvbihpc1Jhd0hl
YWRlcnNUZXh0U2hvd24pCisgICAgeworICAgICAgICB2YXIgdG9nZ2xlVGl0bGUgPSBpc1Jhd0hl
YWRlcnNUZXh0U2hvd24gPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoInZpZXcgcGFyc2VkIikgOiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoInZpZXcgc291cmNlIik7CisgICAgICAgIHJldHVybiB0aGlz
Ll9jcmVhdGVUb2dnbGVCdXR0b24odG9nZ2xlVGl0bGUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9uZXR3b3JrUGFuZWwuY3NzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9uZXR3b3JrUGFuZWwuY3NzCmluZGV4
IDI3MTEzNDcuLjJjZjE5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvbmV0d29ya1BhbmVsLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL25ldHdvcmtQYW5lbC5jc3MKQEAgLTcxNCw2ICs3MTQsMjIgQEAKICAgICBkaXNw
bGF5OiBub25lOwogfQogCisucmVzb3VyY2UtaGVhZGVycy12aWV3IC5vdXRsaW5lLWRpc2Nsb3N1
cmUgbGkgLmhlYWRlci10b2dnbGUgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy5yZXNvdXJj
ZS1oZWFkZXJzLXZpZXcgLm91dGxpbmUtZGlzY2xvc3VyZSBsaS5leHBhbmRlZCAuaGVhZGVyLXRv
Z2dsZSB7CisgICAgZGlzcGxheTogaW5saW5lOworICAgIG1hcmdpbi1sZWZ0OiAzMHB4OworICAg
IGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgICAgY29sb3I6IHJnYig0NSUsIDQ1JSwgNDUlKTsKK30K
KworLnJlc291cmNlLWhlYWRlcnMtdmlldyAub3V0bGluZS1kaXNjbG9zdXJlIGxpIC5oZWFkZXIt
dG9nZ2xlOmhvdmVyIHsKKyAgICBjb2xvcjogcmdiKDIwJSwgMjAlLCA0NSUpOworICAgIGN1cnNv
cjogcG9pbnRlcjsKK30KKwogLnJlc291cmNlLWhlYWRlcnMtdmlldyAub3V0bGluZS1kaXNjbG9z
dXJlIC5oZWFkZXItbmFtZSB7CiAgICAgY29sb3I6IHJnYigzMyUsIDMzJSwgMzMlKTsKICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CkBAIC03MzEsNiArNzQ3LDExIEBACiAgICAgbWFyZ2luLXRv
cDogMXB4OwogfQogCisucmVzb3VyY2UtaGVhZGVycy12aWV3IC5vdXRsaW5lLWRpc2Nsb3N1cmUg
bGkucmF3LWhlYWRlcnMtdGV4dCB7CisgICAgdGV4dC1pbmRlbnQ6IDA7CisgICAgbWFyZ2luLWxl
ZnQ6IC0ycHg7Cit9CisKIC5yZXNvdXJjZS1oZWFkZXJzLXZpZXcgLm91dGxpbmUtZGlzY2xvc3Vy
ZSAucmF3LWZvcm0tZGF0YSB7CiAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRJbmZvLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZEluZm8uaAppbmRl
eCBhMWI5NThjLi40NjZlZjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlTG9hZEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlTG9hZEluZm8uaApAQCAtMzksNiArMzksOCBAQCBzdHJ1Y3QgUmVzb3Vy
Y2VMb2FkSW5mbyA6IFJlZkNvdW50ZWQ8UmVzb3VyY2VMb2FkSW5mbz4gewogICAgIFN0cmluZyBo
dHRwU3RhdHVzVGV4dDsKICAgICBIVFRQSGVhZGVyTWFwIHJlcXVlc3RIZWFkZXJzOwogICAgIEhU
VFBIZWFkZXJNYXAgcmVzcG9uc2VIZWFkZXJzOworICAgIFN0cmluZyByYXdSZXF1ZXN0SGVhZGVy
c1RleHQ7CisgICAgU3RyaW5nIHJhd1Jlc3BvbnNlSGVhZGVyc1RleHQ7CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGRkMjczNmQuLmZmNmY1NWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDQtMTMgIFZzZXZvbG9kIFZsYXNv
diAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRW5hYmxlIHJhdyBIVFRQIGhlYWRlcnMg
c3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTgyNTkKKworICAgICAgICBBZGRlZCByYXcgaGVhZGVycyB0ZXh0IHN1cHBvcnQgdG8gaW5zcGVj
dG9yLgorCisgICAgICAgICogcHVibGljL1dlYkhUVFBMb2FkSW5mby5oOgorICAgICAgICAqIHNy
Yy9XZWJIVFRQTG9hZEluZm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJIVFRQTG9hZEluZm86
OnJhd1JlcXVlc3RIZWFkZXJzVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkhUVFBMb2FkSW5m
bzo6c2V0UmF3UmVxdWVzdEhlYWRlcnNUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSFRUUExv
YWRJbmZvOjpyYXdSZXNwb25zZUhlYWRlcnNUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSFRU
UExvYWRJbmZvOjpzZXRSYXdSZXNwb25zZUhlYWRlcnNUZXh0KToKKwogMjAxMS0wNC0xMyAgS2lu
dWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGF2aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJIVFRQTG9hZEluZm8uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhUVFBM
b2FkSW5mby5oCmluZGV4IDlmZjkxNTMuLjEzOGMzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkhUVFBMb2FkSW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkhUVFBMb2FkSW5mby5oCkBAIC02NSw2ICs2NSwxMiBAQCBwdWJs
aWM6CiAgICAgV0VCS0lUX0FQSSB2b2lkIGFkZFJlcXVlc3RIZWFkZXIoY29uc3QgV2ViU3RyaW5n
JiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHZhbHVlKTsKICAgICBXRUJLSVRfQVBJIHZvaWQgYWRk
UmVzcG9uc2VIZWFkZXIoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHZh
bHVlKTsKIAorICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIHJhd1JlcXVlc3RIZWFkZXJzVGV4dCgp
IGNvbnN0OworICAgIFdFQktJVF9BUEkgdm9pZCBzZXRSYXdSZXF1ZXN0SGVhZGVyc1RleHQoY29u
c3QgV2ViU3RyaW5nJik7CisKKyAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyByYXdSZXNwb25zZUhl
YWRlcnNUZXh0KCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNldFJhd1Jlc3BvbnNlSGVh
ZGVyc1RleHQoY29uc3QgV2ViU3RyaW5nJik7CisKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
ICAgICBXZWJIVFRQTG9hZEluZm8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9h
ZEluZm8+KTsKICAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkSW5mbz4oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkhUVFBMb2FkSW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJIVFRQ
TG9hZEluZm8uY3BwCmluZGV4IDg3NmE0ODkuLmJiOTRlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkhUVFBMb2FkSW5mby5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSFRUUExvYWRJbmZvLmNwcApAQCAtMTA4LDQgKzEwOCwyOCBAQCB2
b2lkIFdlYkhUVFBMb2FkSW5mbzo6YWRkUmVzcG9uc2VIZWFkZXIoY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBjb25zdCBXZWJTdHJpbmcmCiAgICAgYWRkSGVhZGVyKCZtX3ByaXZhdGUtPnJlc3BvbnNl
SGVhZGVycywgbmFtZSwgdmFsdWUpOwogfQogCitXZWJTdHJpbmcgV2ViSFRUUExvYWRJbmZvOjpy
YXdSZXF1ZXN0SGVhZGVyc1RleHQoKSBjb25zdAoreworICAgIEFTU0VSVCghbV9wcml2YXRlLmlz
TnVsbCgpKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5yYXdSZXF1ZXN0SGVhZGVyc1RleHQ7Cit9
CisKK3ZvaWQgV2ViSFRUUExvYWRJbmZvOjpzZXRSYXdSZXF1ZXN0SGVhZGVyc1RleHQoY29uc3Qg
V2ViU3RyaW5nJiByYXdIZWFkZXJzVGV4dCkKK3sKKyAgICBBU1NFUlQoIW1fcHJpdmF0ZS5pc051
bGwoKSk7CisgICAgbV9wcml2YXRlLT5yYXdSZXF1ZXN0SGVhZGVyc1RleHQgPSByYXdIZWFkZXJz
VGV4dDsKK30KKworV2ViU3RyaW5nIFdlYkhUVFBMb2FkSW5mbzo6cmF3UmVzcG9uc2VIZWFkZXJz
VGV4dCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOworICAgIHJl
dHVybiBtX3ByaXZhdGUtPnJhd1Jlc3BvbnNlSGVhZGVyc1RleHQ7Cit9CisKK3ZvaWQgV2ViSFRU
UExvYWRJbmZvOjpzZXRSYXdSZXNwb25zZUhlYWRlcnNUZXh0KGNvbnN0IFdlYlN0cmluZyYgcmF3
SGVhZGVyc1RleHQpCit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOworICAgIG1f
cHJpdmF0ZS0+cmF3UmVzcG9uc2VIZWFkZXJzVGV4dCA9IHJhd0hlYWRlcnNUZXh0OworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="82048"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89562</attachid>
            <date>2011-04-14 05:35:56 -0700</date>
            <delta_ts>2011-04-14 12:04:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>headers_webkit</filename>
            <type>text/plain</type>
            <size>24996</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4ODIyYWJiLi41MmNhNDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkg
QEAKKzIwMTEtMDQtMTMgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogRW5hYmxlIHJhdyBIVFRQIGhlYWRlcnMgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgyNTkKKworICAgICAgICBBZGRlZCByYXcg
aGVhZGVycyB0ZXh0IHN1cHBvcnQgdG8gaW5zcGVjdG9yLgorCisgICAgICAgICogRW5nbGlzaC5s
cHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIucHJvdG90eXBlLl91cGRhdGVSZXNvdXJjZVdpdGhS
ZXNwb25zZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2UucHJvdG90eXBlLmdldCB0cmFuc2ZlclNpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJlc291cmNlLnByb3RvdHlwZS5zZXQgcmVxdWVzdEhlYWRlcnMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5nZXQgcmF3UmVxdWVzdEhlYWRlcnNUZXh0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuc2V0IHJhd1JlcXVlc3RIZWFk
ZXJzVGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLmdldCBy
ZXF1ZXN0SGVhZGVyc1NpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3Rv
dHlwZS5zZXQgcmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZS5wcm90b3R5cGUuZ2V0IHJhd1Jlc3BvbnNlSGVhZGVyc1RleHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5zZXQgcmF3UmVzcG9uc2VIZWFkZXJzVGV4dCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLmdldCByZXNwb25zZUhlYWRl
cnNTaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuX2hlYWRl
cnNTaXplKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlSGVhZGVyc1Zp
ZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldy5wcm90b3R5cGUuX3JlZnJlc2hQ
YXJtcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldy5wcm90b3R5
cGUuX3JlZnJlc2hSZXF1ZXN0SGVhZGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VIZWFkZXJzVmlldy5wcm90b3R5cGUuX3JlZnJlc2hSZXNwb25zZUhlYWRlcnMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBlLl9yZWZyZXNoSGVh
ZGVyc1RpdGxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnBy
b3RvdHlwZS5fcmVmcmVzaEhlYWRlcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
SGVhZGVyc1ZpZXcucHJvdG90eXBlLl9yZWZyZXNoUmF3SGVhZGVyc1RleHQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBlLl90b2dnbGVSYXdSZXF1
ZXN0SGVhZGVyc1RleHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1Zp
ZXcucHJvdG90eXBlLl90b2dnbGVSYXdSZXNwb25zZUhlYWRlcnNUZXh0KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnByb3RvdHlwZS5fY3JlYXRlVG9nZ2xlQnV0
dG9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnByb3RvdHlw
ZS5fY3JlYXRlSGVhZGVyc1RvZ2dsZUJ1dHRvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9uZXR3b3JrUGFuZWwuY3NzOgorICAgICAgICAoLnJlc291cmNlLWhlYWRlcnMtdmlldyAu
b3V0bGluZS1kaXNjbG9zdXJlIGxpIC5oZWFkZXItdG9nZ2xlKToKKyAgICAgICAgKC5yZXNvdXJj
ZS1oZWFkZXJzLXZpZXcgLm91dGxpbmUtZGlzY2xvc3VyZSBsaS5leHBhbmRlZCAuaGVhZGVyLXRv
Z2dsZSk6CisgICAgICAgICgucmVzb3VyY2UtaGVhZGVycy12aWV3IC5vdXRsaW5lLWRpc2Nsb3N1
cmUgbGkgLmhlYWRlci10b2dnbGU6aG92ZXIpOgorICAgICAgICAoLnJlc291cmNlLWhlYWRlcnMt
dmlldyAub3V0bGluZS1kaXNjbG9zdXJlIGxpLnJhdy1oZWFkZXJzLXRleHQpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkSW5mby5oOgorCiAyMDExLTA0LTE0ICBKb2hu
IEJhdGVzICA8amJhdGVzQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0
aCBSdXNzZWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2Nh
bGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRT
dHJpbmdzLmpzCmluZGV4IGJmMGQ0N2MuLjUzYmVhMzUgMTAwNjQ0CkJpbmFyeSBmaWxlcyBhL1Nv
dXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBhbmQgYi9Tb3Vy
Y2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgZGlmZmVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggNDNhMDM5My4uN2VmN2JhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMzM2LDggKzMzNiwx
MCBAQAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXR1cyIsICJ0eXBlIjogIm51
bWJlciIsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3BvbnNlIHN0YXR1cyBjb2RlLiIgfSwKICAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGF0dXNUZXh0IiwgInR5cGUiOiAic3RyaW5n
IiwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2Ugc3RhdHVzIHRleHQuIiB9LAogICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImhlYWRlcnMiLCAidHlwZSI6ICJvYmplY3QiLCAiZGVz
Y3JpcHRpb24iOiAiSFRUUCByZXNwb25zZSBoZWFkZXJzLiIgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJyYXdIZWFkZXJzVGV4dCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJSYXcgSFRUUCByZXNwb25zZSBoZWFkZXJzIHRleHQu
IiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1pbWVUeXBlIiwgInR5cGUiOiAi
c3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlJlc291cmNlIG1pbWVUeXBlIGFzIGRldGVybWluZWQg
YnkgdGhlIGJyb3dzZXIuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVl
c3RIZWFkZXJzIiwgInR5cGUiOiAib2JqZWN0IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0
aW9uIjogIlJlZmluZWQgSFRUUCByZXF1ZXN0IGhlYWRlcnMgdGhhdCB3ZXJlIGFjdHVhbGx5IHRy
YW5zbWl0dGVkIG92ZXIgdGhlIG5ldHdvcmsuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInJhd1JlcXVlc3RIZWFkZXJzVGV4dCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25h
bCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJSYXcgSFRUUCByZXF1ZXN0IGhlYWRlcnMgdGV4dC4i
IH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29ubmVjdGlvblJldXNlZCIsICJ0
eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiU3BlY2lmaWVzIHdoZXRoZXIgcGh5c2lj
YWwgY29ubmVjdGlvbiB3YXMgYWN0dWFsbHkgcmV1c2VkIGZvciB0aGlzIHJlcXVlc3QuIiB9LAog
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbm5lY3Rpb25JRCIsICJ0eXBlIjogIm51
bWJlciIsICJkZXNjcmlwdGlvbiI6ICJQaHlzaWNhbCBjb25uZWN0aW9uIGlkIHRoYXQgd2FzIGFj
dHVhbGx5IHVzZWQgZm9yIHRoaXMgcmVxdWVzdC4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiZnJvbURpc2tDYWNoZSIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiU3BlY2lmaWVzIHRoYXQgdGhlIHJlc291cmNlIHdhcyBsb2Fk
ZWQgZnJvbSB0aGUgZGlzayBjYWNoZS4iIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggOTVjZWJjZi4uMTY5ODA2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmNwcApAQCAtMjIxLDcgKzIyMSw2IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlCiAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzcG9uc2VPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6
OmNyZWF0ZSgpOwogICAgIHJlc3BvbnNlT2JqZWN0LT5zZXROdW1iZXIoInN0YXR1cyIsIHJlc3Bv
bnNlLnJlc291cmNlTG9hZEluZm8oKSA/IHJlc3BvbnNlLnJlc291cmNlTG9hZEluZm8oKS0+aHR0
cFN0YXR1c0NvZGUgOiByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKICAgICByZXNwb25zZU9i
amVjdC0+c2V0U3RyaW5nKCJzdGF0dXNUZXh0IiwgcmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygp
ID8gcmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpLT5odHRwU3RhdHVzVGV4dCA6IHJlc3BvbnNl
Lmh0dHBTdGF0dXNUZXh0KCkpOwotICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRPYmplY3QoImhlYWRl
cnMiLCBidWlsZE9iamVjdEZvckhlYWRlcnMocmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpID8g
cmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpLT5yZXNwb25zZUhlYWRlcnMgOiByZXNwb25zZS5o
dHRwSGVhZGVyRmllbGRzKCkpKTsKIAogICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRTdHJpbmcoIm1p
bWVUeXBlIiwgcmVzcG9uc2UubWltZVR5cGUoKSk7CiAgICAgcmVzcG9uc2VPYmplY3QtPnNldEJv
b2xlYW4oImNvbm5lY3Rpb25SZXVzZWQiLCByZXNwb25zZS5jb25uZWN0aW9uUmV1c2VkKCkpOwpA
QCAtMjMwLDggKzIyOSwxNiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1
aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjb25zdCBSZXNvdXJjZQogICAgIGlmIChyZXNw
b25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKSkKICAgICAgICAgcmVzcG9uc2VPYmplY3QtPnNldE9i
amVjdCgidGltaW5nIiwgYnVpbGRPYmplY3RGb3JUaW1pbmcoKnJlc3BvbnNlLnJlc291cmNlTG9h
ZFRpbWluZygpKSk7CiAKLSAgICBpZiAocmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpKQorICAg
IGlmIChyZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCkpIHsKKyAgICAgICAgcmVzcG9uc2VPYmpl
Y3QtPnNldE9iamVjdCgiaGVhZGVycyIsIGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhyZXNwb25zZS5y
ZXNvdXJjZUxvYWRJbmZvKCktPnJlc3BvbnNlSGVhZGVycykpOworICAgICAgICBpZiAoIXJlc3Bv
bnNlLnJlc291cmNlTG9hZEluZm8oKS0+cmF3UmVzcG9uc2VIZWFkZXJzVGV4dC5pc0VtcHR5KCkp
CisgICAgICAgICAgICByZXNwb25zZU9iamVjdC0+c2V0U3RyaW5nKCJyYXdIZWFkZXJzVGV4dCIs
IHJlc3BvbnNlLnJlc291cmNlTG9hZEluZm8oKS0+cmF3UmVzcG9uc2VIZWFkZXJzVGV4dCk7CisK
ICAgICAgICAgcmVzcG9uc2VPYmplY3QtPnNldE9iamVjdCgicmVxdWVzdEhlYWRlcnMiLCBidWls
ZE9iamVjdEZvckhlYWRlcnMocmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpLT5yZXF1ZXN0SGVh
ZGVycykpOworICAgICAgICBpZiAoIXJlc3BvbnNlLnJlc291cmNlTG9hZEluZm8oKS0+cmF3UmVx
dWVzdEhlYWRlcnNUZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJlc3BvbnNlT2JqZWN0LT5z
ZXRTdHJpbmcoInJhd1JlcXVlc3RIZWFkZXJzVGV4dCIsIHJlc3BvbnNlLnJlc291cmNlTG9hZElu
Zm8oKS0+cmF3UmVxdWVzdEhlYWRlcnNUZXh0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzcG9u
c2VPYmplY3QtPnNldE9iamVjdCgiaGVhZGVycyIsIGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhyZXNw
b25zZS5odHRwSGVhZGVyRmllbGRzKCkpKTsKIAogICAgIHJldHVybiByZXNwb25zZU9iamVjdDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29y
a01hbmFnZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtN
YW5hZ2VyLmpzCmluZGV4IGE1YTUzY2IuLjg0ODg3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcwpAQCAtOTIsOSArOTIs
MTIgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgcmVzb3VyY2Uuc3RhdHVzQ29kZSA9IHJlc3BvbnNlLnN0YXR1czsKICAgICAgICAgcmVzb3Vy
Y2Uuc3RhdHVzVGV4dCA9IHJlc3BvbnNlLnN0YXR1c1RleHQ7CiAgICAgICAgIHJlc291cmNlLnJl
c3BvbnNlSGVhZGVycyA9IHJlc3BvbnNlLmhlYWRlcnM7Ci0gICAgICAgIC8vIFJhdyByZXF1ZXN0
IGhlYWRlcnMgY2FuIGJlIGEgcGFydCBvZiByZXNwb25zZSBhcyB3ZWxsLgorICAgICAgICBpZiAo
cmVzcG9uc2UucmF3SGVhZGVyc1RleHQpCisgICAgICAgICAgICByZXNvdXJjZS5yYXdSZXNwb25z
ZUhlYWRlcnNUZXh0ID0gcmVzcG9uc2UucmF3SGVhZGVyc1RleHQ7CiAgICAgICAgIGlmIChyZXNw
b25zZS5yZXF1ZXN0SGVhZGVycykKICAgICAgICAgICAgIHJlc291cmNlLnJlcXVlc3RIZWFkZXJz
ID0gcmVzcG9uc2UucmVxdWVzdEhlYWRlcnM7CisgICAgICAgIGlmIChyZXNwb25zZS5yYXdSZXF1
ZXN0SGVhZGVyc1RleHQpCisgICAgICAgICAgICByZXNvdXJjZS5yYXdSZXF1ZXN0SGVhZGVyc1Rl
eHQgPSByZXNwb25zZS5yYXdSZXF1ZXN0SGVhZGVyc1RleHQ7CiAKICAgICAgICAgcmVzb3VyY2Uu
Y29ubmVjdGlvblJldXNlZCA9IHJlc3BvbnNlLmNvbm5lY3Rpb25SZXVzZWQ7CiAgICAgICAgIHJl
c291cmNlLmNvbm5lY3Rpb25JRCA9IHJlc3BvbnNlLmNvbm5lY3Rpb25JRDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCmluZGV4IDAwZWI4ZGQuLjk1
MDdjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZS5qcwpAQCAtMzMsNyArMzMsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgPSBmdW5jdGlvbihp
ZGVudGlmaWVyLCB1cmwpCiAgICAgdGhpcy5fZW5kVGltZSA9IC0xOwogICAgIHRoaXMuX2NhdGVn
b3J5ID0gV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5vdGhlcjsKICAgICB0aGlzLl9w
ZW5kaW5nQ29udGVudENhbGxiYWNrcyA9IFtdOwotICAgIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1Np
emUgPSAwOwogfQogCiAvLyBLZWVwIHRoZXNlIGluIHN5bmMgd2l0aCBXZWJDb3JlOjpJbnNwZWN0
b3JSZXNvdXJjZTo6VHlwZQpAQCAtMjQwLDcgKzIzOSw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLmNhY2hlZCkKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICBpZiAodGhpcy5zdGF0dXNDb2RlID09PSAzMDQpIC8vIE5vdCBtb2Rp
ZmllZAotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1NpemU7CisgICAg
ICAgICAgICByZXR1cm4gdGhpcy5yZXNwb25zZUhlYWRlcnNTaXplOwogICAgICAgICBpZiAodGhp
cy5fdHJhbnNmZXJTaXplICE9PSB1bmRlZmluZWQpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5f
dHJhbnNmZXJTaXplOwogICAgICAgICAvLyBJZiB3ZSBkaWQgbm90IHJlY2VpdmUgYWN0dWFsIHRy
YW5zZmVyIHNpemUgZnJvbSBuZXR3b3JrCkBAIC0yNTQsNyArMjUzLDcgQEAgV2ViSW5zcGVjdG9y
LlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gd29yayBmb3IgY2h1bmtzIHdpdGgg
bm9uLXRyaXZpYWwgZW5jb2RpbmdzLiBXZSBuZWVkIGEgd2F5IHRvCiAgICAgICAgIC8vIGdldCBh
Y3R1YWwgdHJhbnNmZXIgc2l6ZSBmcm9tIHRoZSBuZXR3b3JrIHN0YWNrLgogICAgICAgICB2YXIg
Ym9keVNpemUgPSBOdW1iZXIodGhpcy5yZXNwb25zZUhlYWRlcnNbIkNvbnRlbnQtTGVuZ3RoIl0g
fHwgdGhpcy5yZXNvdXJjZVNpemUpOwotICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VIZWFk
ZXJzU2l6ZSArIGJvZHlTaXplOworICAgICAgICByZXR1cm4gdGhpcy5yZXNwb25zZUhlYWRlcnNT
aXplICsgYm9keVNpemU7CiAgICAgfSwKIAogICAgIGluY3JlYXNlVHJhbnNmZXJTaXplOiBmdW5j
dGlvbih4KQpAQCAtNDAzLDEwICs0MDIsMzUgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVxdWVzdEhlYWRlcnMgPSB4OwogICAgICAgICBkZWxl
dGUgdGhpcy5fc29ydGVkUmVxdWVzdEhlYWRlcnM7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9yZXF1
ZXN0Q29va2llczsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1NpemU7CiAK
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInJlcXVlc3RIZWFkZXJzIGNo
YW5nZWQiKTsKICAgICB9LAogCisgICAgZ2V0IHJhd1JlcXVlc3RIZWFkZXJzVGV4dCgpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5fcmF3UmVxdWVzdEhlYWRlcnNUZXh0OworICAgIH0sCisK
KyAgICBzZXQgcmF3UmVxdWVzdEhlYWRlcnNUZXh0KHgpCisgICAgeworICAgICAgICB0aGlzLl9y
YXdSZXF1ZXN0SGVhZGVyc1RleHQgPSB4OworICAgICAgICBkZWxldGUgdGhpcy5fcmVzcG9uc2VI
ZWFkZXJzU2l6ZTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygicmVx
dWVzdEhlYWRlcnMgY2hhbmdlZCIpOworICAgIH0sCisKKyAgICBnZXQgcmVxdWVzdEhlYWRlcnNT
aXplKCkKKyAgICB7CisgICAgICAgIGlmICh0eXBlb2YodGhpcy5fcmVxdWVzdEhlYWRlcnNTaXpl
KSA9PT0gInVuZGVmaW5lZCIpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9yYXdSZXF1ZXN0SGVh
ZGVyc1RleHQpCisgICAgICAgICAgICAgICAgdGhpcy5fcmVxdWVzdEhlYWRlcnNTaXplID0gdGhp
cy5fcmF3UmVxdWVzdEhlYWRlcnNUZXh0Lmxlbmd0aDsKKyAgICAgICAgICAgIGVsc2UgCisgICAg
ICAgICAgICAgICAgdGhpcy5fcmVxdWVzdEhlYWRlcnNTaXplID0gdGhpcy5faGVhZGVyc1NpemUo
dGhpcy5fcmVxdWVzdEhlYWRlcnMpCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jl
cXVlc3RIZWFkZXJzU2l6ZTsKKyAgICB9LAorCiAgICAgZ2V0IHNvcnRlZFJlcXVlc3RIZWFkZXJz
KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zb3J0ZWRSZXF1ZXN0SGVhZGVycyAhPT0gdW5k
ZWZpbmVkKQpAQCAtNDUxLDEzICs0NzUsMzcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3Rv
dHlwZSA9IHsKICAgICBzZXQgcmVzcG9uc2VIZWFkZXJzKHgpCiAgICAgewogICAgICAgICB0aGlz
Ll9yZXNwb25zZUhlYWRlcnMgPSB4OwotICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHRha2Ug
YWN0dWFsIGhlYWRlcnMgc2l6ZSBmcm9tIG5ldHdvcmsgc3RhY2ssIHdoZW4gcG9zc2libGUuCi0g
ICAgICAgIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1NpemUgPSB0aGlzLl9oZWFkZXJzU2l6ZSh4KTsK
KyAgICAgICAgZGVsZXRlIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1NpemU7CiAgICAgICAgIGRlbGV0
ZSB0aGlzLl9zb3J0ZWRSZXNwb25zZUhlYWRlcnM7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9yZXNw
b25zZUNvb2tpZXM7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInJl
c3BvbnNlSGVhZGVycyBjaGFuZ2VkIik7CiAgICAgfSwKKyAgICAKKyAgICBnZXQgcmF3UmVzcG9u
c2VIZWFkZXJzVGV4dCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcmF3UmVzcG9uc2VI
ZWFkZXJzVGV4dDsKKyAgICB9LAorCisgICAgc2V0IHJhd1Jlc3BvbnNlSGVhZGVyc1RleHQoeCkK
KyAgICB7CisgICAgICAgIHRoaXMuX3Jhd1Jlc3BvbnNlSGVhZGVyc1RleHQgPSB4OworICAgICAg
ICBkZWxldGUgdGhpcy5fcmVzcG9uc2VIZWFkZXJzU2l6ZTsKKworICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycygicmVzcG9uc2VIZWFkZXJzIGNoYW5nZWQiKTsKKyAgICB9LAor
ICAgIAorICAgIGdldCByZXNwb25zZUhlYWRlcnNTaXplKCkKKyAgICB7CisgICAgICAgIGlmICh0
eXBlb2YodGhpcy5fcmVzcG9uc2VIZWFkZXJzU2l6ZSkgPT09ICJ1bmRlZmluZWQiKSB7CisgICAg
ICAgICAgICBpZiAodGhpcy5fcmF3UmVzcG9uc2VIZWFkZXJzVGV4dCkKKyAgICAgICAgICAgICAg
ICB0aGlzLl9yZXNwb25zZUhlYWRlcnNTaXplID0gdGhpcy5fcmF3UmVzcG9uc2VIZWFkZXJzVGV4
dC5sZW5ndGg7CisgICAgICAgICAgICBlbHNlIAorICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3Bv
bnNlSGVhZGVyc1NpemUgPSB0aGlzLl9oZWFkZXJzU2l6ZSh0aGlzLl9yZXNwb25zZUhlYWRlcnMp
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1NpemU7Cisg
ICAgfSwKKyAgICAKIAogICAgIGdldCBzb3J0ZWRSZXNwb25zZUhlYWRlcnMoKQogICAgIHsKQEAg
LTUzNiw5ICs1ODQsMTEgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKIAog
ICAgIF9oZWFkZXJzU2l6ZTogZnVuY3Rpb24oaGVhZGVycykKICAgICB7CisgICAgICAgIC8vIFdl
IHNob3VsZCB0YWtlIGFjdHVhbCBoZWFkZXJzIHNpemUgZnJvbSBuZXR3b3JrIHN0YWNrLCB3aGVu
IHBvc3NpYmxlLCBidXQgZmFsbCBiYWNrIHRvCisgICAgICAgIC8vIHRoaXMgbG91c3kgY29tcHV0
YXRpb24gd2hlbiBubyByYXcgaGVhZGVycyBhcmUgYXZhaWxhYmxlLgogICAgICAgICB2YXIgc2l6
ZSA9IDA7CiAgICAgICAgIGZvciAodmFyIGhlYWRlciBpbiBoZWFkZXJzKQotICAgICAgICAgICAg
c2l6ZSArPSBoZWFkZXIubGVuZ3RoICsgaGVhZGVyc1toZWFkZXJdLmxlbmd0aCArIDM7IC8vIF90
eXBpY2FsXyBvdmVyaGVhZCBwZXIgaGVyYWRlciBpcyAiOiAiLmxlbmd0aCArICJcbiIubGVuZ3Ro
LgorICAgICAgICAgICAgc2l6ZSArPSBoZWFkZXIubGVuZ3RoICsgaGVhZGVyc1toZWFkZXJdLmxl
bmd0aCArIDQ7IC8vIF90eXBpY2FsXyBvdmVyaGVhZCBwZXIgaGVhZGVyIGlzICI6ICIubGVuZ3Ro
ICsgIlxyXG4iLmxlbmd0aC4KICAgICAgICAgcmV0dXJuIHNpemU7CiAgICAgfSwKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZUhlYWRlcnNW
aWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZUhlYWRl
cnNWaWV3LmpzCmluZGV4IGU3OTA3OGEuLjFmNzQzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VIZWFkZXJzVmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlSGVhZGVyc1ZpZXcuanMKQEAg
LTU5LDkgKzU5LDExIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3ID0gZnVuY3Rp
b24ocmVzb3VyY2UpCiAgICAgdGhpcy5fcmVxdWVzdEhlYWRlcnNUcmVlRWxlbWVudC5zZWxlY3Rh
YmxlID0gZmFsc2U7CiAgICAgdGhpcy5faGVhZGVyc1RyZWVPdXRsaW5lLmFwcGVuZENoaWxkKHRo
aXMuX3JlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQpOwogCi0gICAgdGhpcy5fZGVjb2RlSG92ZXIg
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRvdWJsZS1DbGljayB0byB0b2dnbGUgYmV0d2VlbiBV
UkwgZW5jb2RlZCBhbmQgZGVjb2RlZCBmb3JtYXRzIik7CiAgICAgdGhpcy5fZGVjb2RlUmVxdWVz
dFBhcmFtZXRlcnMgPSB0cnVlOwogCisgICAgdGhpcy5fc2hvd1Jhd1JlcXVlc3RIZWFkZXJzVGV4
dCA9IGZhbHNlOworICAgIHRoaXMuX3Nob3dSYXdSZXNwb25zZUhlYWRlcnNUZXh0ID0gZmFsc2U7
CisKICAgICB0aGlzLl9xdWVyeVN0cmluZ1RyZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVtZW50KCIi
LCBudWxsLCB0cnVlKTsKICAgICB0aGlzLl9xdWVyeVN0cmluZ1RyZWVFbGVtZW50LmV4cGFuZGVk
ID0gdHJ1ZTsKICAgICB0aGlzLl9xdWVyeVN0cmluZ1RyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBm
YWxzZTsKQEAgLTE0Niw3ICsxNDgsMTkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1Zp
ZXcucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgcGFybXNUcmVlRWxlbWVudC5yZW1vdmVD
aGlsZHJlbigpOwogCi0gICAgICAgIHBhcm1zVHJlZUVsZW1lbnQudGl0bGVIVE1MID0gdGl0bGUg
KyAiPHNwYW4gY2xhc3M9XCJoZWFkZXItY291bnRcIj4iICsgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCIgKCVkKSIsIHBhcm1zLmxlbmd0aCkgKyAiPC9zcGFuPiI7CisgICAgICAgIHBhcm1zVHJlZUVs
ZW1lbnQubGlzdEl0ZW1FbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIHBhcm1zVHJl
ZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKHRpdGxlKSk7CisgICAgICAgIAorICAgICAgICB2YXIgaGVhZGVyQ291bnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIGhlYWRlckNvdW50LmFkZFN0eWxlQ2xh
c3MoImhlYWRlci1jb3VudCIpOworICAgICAgICBoZWFkZXJDb3VudC50ZXh0Q29udGVudCA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiICglZCkiLCBwYXJtcy5sZW5ndGgpOworICAgICAgICBwYXJt
c1RyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5hcHBlbmRDaGlsZChoZWFkZXJDb3VudCk7CisK
KyAgICAgICAgdmFyIHRvZ2dsZVRpdGxlID0gdGhpcy5fZGVjb2RlUmVxdWVzdFBhcmFtZXRlcnMg
PyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoInZpZXcgVVJMIGVuY29kZWQiKSA6IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygidmlldyBkZWNvZGVkIik7CisgICAgICAgIHZhciB0b2dnbGVCdXR0b24gPSB0
aGlzLl9jcmVhdGVUb2dnbGVCdXR0b24odG9nZ2xlVGl0bGUpOworICAgICAgICB0b2dnbGVCdXR0
b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl90b2dnbGVVUkxkZWNvZGluZy5iaW5k
KHRoaXMpKTsKKyAgICAgICAgcGFybXNUcmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQuYXBwZW5k
Q2hpbGQodG9nZ2xlQnV0dG9uKTsKKwogCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFy
bXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBuYW1lID0gcGFybXNbaV0ubmFtZTsK
QEAgLTE3NSw4ICsxODksNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgcGFybVRyZWVFbGVtZW50ID0gbmV3IFRyZWVFbGVt
ZW50KG51bGwsIG51bGwsIGZhbHNlKTsKICAgICAgICAgICAgIHBhcm1UcmVlRWxlbWVudC50aXRs
ZUhUTUwgPSB0aXRsZTsKICAgICAgICAgICAgIHBhcm1UcmVlRWxlbWVudC5zZWxlY3RhYmxlID0g
ZmFsc2U7Ci0gICAgICAgICAgICBwYXJtVHJlZUVsZW1lbnQudG9vbHRpcCA9IHRoaXMuX2RlY29k
ZUhvdmVyOwotICAgICAgICAgICAgcGFybVRyZWVFbGVtZW50Lm9uZGJsY2xpY2sgPSB0aGlzLl90
b2dnbGVVUkxkZWNvZGluZy5iaW5kKHRoaXMpOwogICAgICAgICAgICAgcGFybXNUcmVlRWxlbWVu
dC5hcHBlbmRDaGlsZChwYXJtVHJlZUVsZW1lbnQpOwogICAgICAgICB9CiAgICAgfSwKQEAgLTIw
Miw3ICsyMTQsMTcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICB2YXIgYWRkaXRpb25hbFJvdyA9IG51bGw7CiAgICAgICAgIGlmICh0eXBl
b2YgdGhpcy5fcmVzb3VyY2Uud2ViU29ja2V0UmVxdWVzdEtleTMgIT09ICJ1bmRlZmluZWQiKQog
ICAgICAgICAgICAgYWRkaXRpb25hbFJvdyA9IHtoZWFkZXI6ICIoS2V5MykiLCB2YWx1ZTogdGhp
cy5fcmVzb3VyY2Uud2ViU29ja2V0UmVxdWVzdEtleTN9OwotICAgICAgICB0aGlzLl9yZWZyZXNo
SGVhZGVycyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVlc3QgSGVhZGVycyIpLCB0aGlzLl9y
ZXNvdXJjZS5zb3J0ZWRSZXF1ZXN0SGVhZGVycywgYWRkaXRpb25hbFJvdywgdGhpcy5fcmVxdWVz
dEhlYWRlcnNUcmVlRWxlbWVudCk7CisgICAgICAgIGlmICh0aGlzLl9zaG93UmF3UmVxdWVzdEhl
YWRlcnNUZXh0KQorICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFJhd0hlYWRlcnNUZXh0KFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCBIZWFkZXJzIiksIHRoaXMuX3Jlc291cmNlLnJhd1Jl
cXVlc3RIZWFkZXJzVGV4dCwgdGhpcy5fcmVxdWVzdEhlYWRlcnNUcmVlRWxlbWVudCk7CisgICAg
ICAgIGVsc2UgCisgICAgICAgICAgICB0aGlzLl9yZWZyZXNoSGVhZGVycyhXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlJlcXVlc3QgSGVhZGVycyIpLCB0aGlzLl9yZXNvdXJjZS5zb3J0ZWRSZXF1ZXN0
SGVhZGVycywgYWRkaXRpb25hbFJvdywgdGhpcy5fcmVxdWVzdEhlYWRlcnNUcmVlRWxlbWVudCk7
CisKKyAgICAgICAgaWYgKHRoaXMuX3Jlc291cmNlLnJhd1JlcXVlc3RIZWFkZXJzVGV4dCkgeyAK
KyAgICAgICAgICAgIHZhciB0b2dnbGVCdXR0b24gPSB0aGlzLl9jcmVhdGVIZWFkZXJzVG9nZ2xl
QnV0dG9uKHRoaXMuX3Nob3dSYXdSZXF1ZXN0SGVhZGVyc1RleHQpOworICAgICAgICAgICAgdG9n
Z2xlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fdG9nZ2xlUmF3UmVxdWVz
dEhlYWRlcnNUZXh0LmJpbmQodGhpcykpOworICAgICAgICAgICAgdGhpcy5fcmVxdWVzdEhlYWRl
cnNUcmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQuYXBwZW5kQ2hpbGQodG9nZ2xlQnV0dG9uKTsK
KyAgICAgICAgfQorCiAgICAgICAgIHRoaXMuX3JlZnJlc2hGb3JtRGF0YSgpOwogICAgIH0sCiAK
QEAgLTIxMSw3ICsyMzMsMTYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJv
dG90eXBlID0gewogICAgICAgICB2YXIgYWRkaXRpb25hbFJvdyA9IG51bGw7CiAgICAgICAgIGlm
ICh0eXBlb2YgdGhpcy5fcmVzb3VyY2Uud2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2UgIT09ICJ1
bmRlZmluZWQiKQogICAgICAgICAgICAgYWRkaXRpb25hbFJvdyA9IHtoZWFkZXI6ICIoQ2hhbGxl
bmdlIFJlc3BvbnNlKSIsIHZhbHVlOiB0aGlzLl9yZXNvdXJjZS53ZWJTb2NrZXRDaGFsbGVuZ2VS
ZXNwb25zZX07Ci0gICAgICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJzKFdlYkluc3BlY3Rvci5VSVN0
cmluZygiUmVzcG9uc2UgSGVhZGVycyIpLCB0aGlzLl9yZXNvdXJjZS5zb3J0ZWRSZXNwb25zZUhl
YWRlcnMsIGFkZGl0aW9uYWxSb3csIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1RyZWVFbGVtZW50KTsK
KyAgICAgICAgaWYgKHRoaXMuX3Nob3dSYXdSZXNwb25zZUhlYWRlcnNUZXh0KQorICAgICAgICAg
ICAgdGhpcy5fcmVmcmVzaFJhd0hlYWRlcnNUZXh0KFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVz
cG9uc2UgSGVhZGVycyIpLCB0aGlzLl9yZXNvdXJjZS5yYXdSZXNwb25zZUhlYWRlcnNUZXh0LCB0
aGlzLl9yZXNwb25zZUhlYWRlcnNUcmVlRWxlbWVudCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJzKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzcG9uc2Ug
SGVhZGVycyIpLCB0aGlzLl9yZXNvdXJjZS5zb3J0ZWRSZXNwb25zZUhlYWRlcnMsIGFkZGl0aW9u
YWxSb3csIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1RyZWVFbGVtZW50KTsKKyAgICAgICAgCisgICAg
ICAgIGlmICh0aGlzLl9yZXNvdXJjZS5yYXdSZXNwb25zZUhlYWRlcnNUZXh0KSB7CisgICAgICAg
ICAgICB2YXIgdG9nZ2xlQnV0dG9uID0gdGhpcy5fY3JlYXRlSGVhZGVyc1RvZ2dsZUJ1dHRvbih0
aGlzLl9zaG93UmF3UmVzcG9uc2VIZWFkZXJzVGV4dCk7CisgICAgICAgICAgICB0b2dnbGVCdXR0
b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl90b2dnbGVSYXdSZXNwb25zZUhlYWRl
cnNUZXh0LmJpbmQodGhpcykpOworICAgICAgICAgICAgdGhpcy5fcmVzcG9uc2VIZWFkZXJzVHJl
ZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKHRvZ2dsZUJ1dHRvbik7CisgICAg
ICAgIH0KICAgICB9LAogCiAgICAgX3JlZnJlc2hIVFRQSW5mb3JtYXRpb246IGZ1bmN0aW9uKCkK
QEAgLTI0MiwxNSArMjczLDI2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAgICAgCisgICAgX3JlZnJlc2hIZWFkZXJz
VGl0bGU6IGZ1bmN0aW9uKHRpdGxlLCBoZWFkZXJzVHJlZUVsZW1lbnQsIGlzUmF3SGVhZGVyc1Rl
eHRTaG93biwgaGVhZGVyc0xlbmd0aCkKKyAgICB7CisgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVu
dC5saXN0SXRlbUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgaGVhZGVyc1RyZWVF
bGVtZW50Lmxpc3RJdGVtRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSh0aXRsZSkpOworICAgICAgICAKKyAgICAgICAgaWYgKCFpc1Jhd0hlYWRlcnNUZXh0U2hvd24p
IHsKKyAgICAgICAgICAgIHZhciBoZWFkZXJDb3VudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InNwYW4iKTsKKyAgICAgICAgICAgIGhlYWRlckNvdW50LmFkZFN0eWxlQ2xhc3MoImhlYWRlci1j
b3VudCIpOworICAgICAgICAgICAgaGVhZGVyQ291bnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIiAoJWQpIiwgaGVhZGVyc0xlbmd0aCk7CisgICAgICAgICAgICBoZWFkZXJz
VHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKGhlYWRlckNvdW50KTsKKyAg
ICAgICAgfQorICAgIH0sCisgICAgCiAgICAgX3JlZnJlc2hIZWFkZXJzOiBmdW5jdGlvbih0aXRs
ZSwgaGVhZGVycywgYWRkaXRpb25hbFJvdywgaGVhZGVyc1RyZWVFbGVtZW50KQogICAgIHsKICAg
ICAgICAgaGVhZGVyc1RyZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7Ci0KKyAgICAgICAgCiAg
ICAgICAgIHZhciBsZW5ndGggPSBoZWFkZXJzLmxlbmd0aDsKLSAgICAgICAgaGVhZGVyc1RyZWVF
bGVtZW50LnRpdGxlSFRNTCA9IHRpdGxlLmVzY2FwZUhUTUwoKSArICI8c3BhbiBjbGFzcz1cImhl
YWRlci1jb3VudFwiPiIgKyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiAoJWQpIiwgbGVuZ3RoKSAr
ICI8L3NwYW4+IjsKKyAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnNUaXRsZSh0aXRsZSwgaGVh
ZGVyc1RyZWVFbGVtZW50LCBmYWxzZSwgbGVuZ3RoKTsKICAgICAgICAgaGVhZGVyc1RyZWVFbGVt
ZW50LmhpZGRlbiA9ICFsZW5ndGg7Ci0KLSAgICAgICAgdmFyIGxlbmd0aCA9IGhlYWRlcnMubGVu
Z3RoOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAg
ICAgICB2YXIgdGl0bGUgPSAiPGRpdiBjbGFzcz1cImhlYWRlci1uYW1lXCI+IiArIGhlYWRlcnNb
aV0uaGVhZGVyLmVzY2FwZUhUTUwoKSArICI6PC9kaXY+IjsKICAgICAgICAgICAgIHRpdGxlICs9
ICI8ZGl2IGNsYXNzPVwiaGVhZGVyLXZhbHVlIHNvdXJjZS1jb2RlXCI+IiArIGhlYWRlcnNbaV0u
dmFsdWUuZXNjYXBlSFRNTCgpICsgIjwvZGl2PiIKQEAgLTI3MCw2ICszMTIsNDkgQEAgV2ViSW5z
cGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgaGVh
ZGVyVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9IGZhbHNlOwogICAgICAgICAgICAgaGVhZGVyc1Ry
ZWVFbGVtZW50LmFwcGVuZENoaWxkKGhlYWRlclRyZWVFbGVtZW50KTsKICAgICAgICAgfQorICAg
IH0sCisgICAgCisgICAgX3JlZnJlc2hSYXdIZWFkZXJzVGV4dDogZnVuY3Rpb24odGl0bGUsIHJh
d0hlYWRlcnNUZXh0LCBoZWFkZXJzVHJlZUVsZW1lbnQpCisgICAgeworICAgICAgICBoZWFkZXJz
VHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX3Jl
ZnJlc2hIZWFkZXJzVGl0bGUodGl0bGUsIGhlYWRlcnNUcmVlRWxlbWVudCwgdHJ1ZSk7CisgICAg
ICAgIHZhciBoZWFkZXJUcmVlRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudChudWxsLCBudWxsLCBm
YWxzZSk7CisgICAgICAgIGhlYWRlclRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKKyAg
ICAgICAgaGVhZGVyc1RyZWVFbGVtZW50LmFwcGVuZENoaWxkKGhlYWRlclRyZWVFbGVtZW50KTsK
KyAgICAgICAgaGVhZGVyVHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFkZFN0eWxlQ2xhc3Mo
InJhdy1oZWFkZXJzLXRleHQiKTsKKyAgICAgICAgCisgICAgICAgIHZhciByYXdIZWFkZXJzVGV4
dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHJhd0hl
YWRlcnNUZXh0RWxlbWVudC5hZGRTdHlsZUNsYXNzKCJoZWFkZXItdmFsdWUiKTsKKyAgICAgICAg
cmF3SGVhZGVyc1RleHRFbGVtZW50LmFkZFN0eWxlQ2xhc3MoInNvdXJjZS1jb2RlIik7CisgICAg
ICAgIHJhd0hlYWRlcnNUZXh0RWxlbWVudC50ZXh0Q29udGVudCA9IFN0cmluZyhyYXdIZWFkZXJz
VGV4dCkudHJpbSgpOworICAgICAgICBoZWFkZXJUcmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQu
YXBwZW5kQ2hpbGQocmF3SGVhZGVyc1RleHRFbGVtZW50KTsKKyAgICB9LAorCisgICAgX3RvZ2ds
ZVJhd1JlcXVlc3RIZWFkZXJzVGV4dDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0
aGlzLl9zaG93UmF3UmVxdWVzdEhlYWRlcnNUZXh0ID0gIXRoaXMuX3Nob3dSYXdSZXF1ZXN0SGVh
ZGVyc1RleHQ7CisgICAgICAgIHRoaXMuX3JlZnJlc2hSZXF1ZXN0SGVhZGVycygpOworICAgIH0s
CisKKyAgICBfdG9nZ2xlUmF3UmVzcG9uc2VIZWFkZXJzVGV4dDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgeworICAgICAgICB0aGlzLl9zaG93UmF3UmVzcG9uc2VIZWFkZXJzVGV4dCA9ICF0aGlzLl9z
aG93UmF3UmVzcG9uc2VIZWFkZXJzVGV4dDsKKyAgICAgICAgdGhpcy5fcmVmcmVzaFJlc3BvbnNl
SGVhZGVycygpOworICAgIH0sCisKKyAgICBfY3JlYXRlVG9nZ2xlQnV0dG9uOiBmdW5jdGlvbih0
aXRsZSkKKyAgICB7CisgICAgICAgIHZhciBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJzcGFuIik7CisgICAgICAgIGJ1dHRvbi5hZGRTdHlsZUNsYXNzKCJoZWFkZXItdG9nZ2xlIik7
CisgICAgICAgIGJ1dHRvbi50ZXh0Q29udGVudCA9IHRpdGxlOworICAgICAgICByZXR1cm4gYnV0
dG9uOworICAgIH0sCisgICAgCisgICAgX2NyZWF0ZUhlYWRlcnNUb2dnbGVCdXR0b246IGZ1bmN0
aW9uKGlzUmF3SGVhZGVyc1RleHRTaG93bikKKyAgICB7CisgICAgICAgIHZhciB0b2dnbGVUaXRs
ZSA9IGlzUmF3SGVhZGVyc1RleHRTaG93biA/IFdlYkluc3BlY3Rvci5VSVN0cmluZygidmlldyBw
YXJzZWQiKSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygidmlldyBzb3VyY2UiKTsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2NyZWF0ZVRvZ2dsZUJ1dHRvbih0b2dnbGVUaXRsZSk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL25ldHdvcmtQ
YW5lbC5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL25ldHdvcmtQYW5l
bC5jc3MKaW5kZXggMjcxMTM0Ny4uMmNmMTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9uZXR3b3JrUGFuZWwuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvbmV0d29ya1BhbmVsLmNzcwpAQCAtNzE0LDYgKzcxNCwyMiBA
QAogICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKKy5yZXNvdXJjZS1oZWFkZXJzLXZpZXcgLm91dGxp
bmUtZGlzY2xvc3VyZSBsaSAuaGVhZGVyLXRvZ2dsZSB7CisgICAgZGlzcGxheTogbm9uZTsKK30K
KworLnJlc291cmNlLWhlYWRlcnMtdmlldyAub3V0bGluZS1kaXNjbG9zdXJlIGxpLmV4cGFuZGVk
IC5oZWFkZXItdG9nZ2xlIHsKKyAgICBkaXNwbGF5OiBpbmxpbmU7CisgICAgbWFyZ2luLWxlZnQ6
IDMwcHg7CisgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgICBjb2xvcjogcmdiKDQ1JSwgNDUl
LCA0NSUpOworfQorCisucmVzb3VyY2UtaGVhZGVycy12aWV3IC5vdXRsaW5lLWRpc2Nsb3N1cmUg
bGkgLmhlYWRlci10b2dnbGU6aG92ZXIgeworICAgIGNvbG9yOiByZ2IoMjAlLCAyMCUsIDQ1JSk7
CisgICAgY3Vyc29yOiBwb2ludGVyOworfQorCiAucmVzb3VyY2UtaGVhZGVycy12aWV3IC5vdXRs
aW5lLWRpc2Nsb3N1cmUgLmhlYWRlci1uYW1lIHsKICAgICBjb2xvcjogcmdiKDMzJSwgMzMlLCAz
MyUpOwogICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKQEAgLTczMSw2ICs3NDcsMTEgQEAKICAg
ICBtYXJnaW4tdG9wOiAxcHg7CiB9CiAKKy5yZXNvdXJjZS1oZWFkZXJzLXZpZXcgLm91dGxpbmUt
ZGlzY2xvc3VyZSBsaS5yYXctaGVhZGVycy10ZXh0IHsKKyAgICB0ZXh0LWluZGVudDogMDsKKyAg
ICBtYXJnaW4tbGVmdDogLTJweDsKK30KKwogLnJlc291cmNlLWhlYWRlcnMtdmlldyAub3V0bGlu
ZS1kaXNjbG9zdXJlIC5yYXctZm9ybS1kYXRhIHsKICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
TG9hZEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2Fk
SW5mby5oCmluZGV4IGExYjk1OGMuLjQ2NmVmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkSW5mby5oCkBAIC0zOSw2ICszOSw4IEBAIHN0
cnVjdCBSZXNvdXJjZUxvYWRJbmZvIDogUmVmQ291bnRlZDxSZXNvdXJjZUxvYWRJbmZvPiB7CiAg
ICAgU3RyaW5nIGh0dHBTdGF0dXNUZXh0OwogICAgIEhUVFBIZWFkZXJNYXAgcmVxdWVzdEhlYWRl
cnM7CiAgICAgSFRUUEhlYWRlck1hcCByZXNwb25zZUhlYWRlcnM7CisgICAgU3RyaW5nIHJhd1Jl
cXVlc3RIZWFkZXJzVGV4dDsKKyAgICBTdHJpbmcgcmF3UmVzcG9uc2VIZWFkZXJzVGV4dDsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjJmNzE5NS4uZGM0NGQ0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMS0wNC0xMyAgVnNl
dm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBFbmFibGUgcmF3IEhU
VFAgaGVhZGVycyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01ODI1OQorCisgICAgICAgIEFkZGVkIHJhdyBoZWFkZXJzIHRleHQgc3VwcG9y
dCB0byBpbnNwZWN0b3IuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSFRUUExvYWRJbmZvLmg6Cisg
ICAgICAgICogc3JjL1dlYkhUVFBMb2FkSW5mby5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkhU
VFBMb2FkSW5mbzo6cmF3UmVxdWVzdEhlYWRlcnNUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SFRUUExvYWRJbmZvOjpzZXRSYXdSZXF1ZXN0SGVhZGVyc1RleHQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJIVFRQTG9hZEluZm86OnJhd1Jlc3BvbnNlSGVhZGVyc1RleHQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJIVFRQTG9hZEluZm86OnNldFJhd1Jlc3BvbnNlSGVhZGVyc1RleHQpOgorCiAyMDEx
LTA0LTE0ICBCaWxsIEJ1ZGdlICA8YmJ1ZGdlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJIVFRQTG9hZEluZm8uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkhUVFBMb2FkSW5mby5oCmluZGV4IDlmZjkxNTMuLjEzOGMzOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhUVFBMb2FkSW5mby5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhUVFBMb2FkSW5mby5oCkBAIC02NSw2ICs2NSwx
MiBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0FQSSB2b2lkIGFkZFJlcXVlc3RIZWFkZXIoY29uc3Qg
V2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHZhbHVlKTsKICAgICBXRUJLSVRfQVBJ
IHZvaWQgYWRkUmVzcG9uc2VIZWFkZXIoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJT
dHJpbmcmIHZhbHVlKTsKIAorICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIHJhd1JlcXVlc3RIZWFk
ZXJzVGV4dCgpIGNvbnN0OworICAgIFdFQktJVF9BUEkgdm9pZCBzZXRSYXdSZXF1ZXN0SGVhZGVy
c1RleHQoY29uc3QgV2ViU3RyaW5nJik7CisKKyAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyByYXdS
ZXNwb25zZUhlYWRlcnNUZXh0KCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNldFJhd1Jl
c3BvbnNlSGVhZGVyc1RleHQoY29uc3QgV2ViU3RyaW5nJik7CisKICNpZiBXRUJLSVRfSU1QTEVN
RU5UQVRJT04KICAgICBXZWJIVFRQTG9hZEluZm8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJl
c291cmNlTG9hZEluZm8+KTsKICAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
UmVzb3VyY2VMb2FkSW5mbz4oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkhUVFBMb2FkSW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJIVFRQTG9hZEluZm8uY3BwCmluZGV4IDg3NmE0ODkuLmJiOTRlNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkhUVFBMb2FkSW5mby5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSFRUUExvYWRJbmZvLmNwcApAQCAtMTA4LDQgKzEw
OCwyOCBAQCB2b2lkIFdlYkhUVFBMb2FkSW5mbzo6YWRkUmVzcG9uc2VIZWFkZXIoY29uc3QgV2Vi
U3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmCiAgICAgYWRkSGVhZGVyKCZtX3ByaXZhdGUt
PnJlc3BvbnNlSGVhZGVycywgbmFtZSwgdmFsdWUpOwogfQogCitXZWJTdHJpbmcgV2ViSFRUUExv
YWRJbmZvOjpyYXdSZXF1ZXN0SGVhZGVyc1RleHQoKSBjb25zdAoreworICAgIEFTU0VSVCghbV9w
cml2YXRlLmlzTnVsbCgpKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5yYXdSZXF1ZXN0SGVhZGVy
c1RleHQ7Cit9CisKK3ZvaWQgV2ViSFRUUExvYWRJbmZvOjpzZXRSYXdSZXF1ZXN0SGVhZGVyc1Rl
eHQoY29uc3QgV2ViU3RyaW5nJiByYXdIZWFkZXJzVGV4dCkKK3sKKyAgICBBU1NFUlQoIW1fcHJp
dmF0ZS5pc051bGwoKSk7CisgICAgbV9wcml2YXRlLT5yYXdSZXF1ZXN0SGVhZGVyc1RleHQgPSBy
YXdIZWFkZXJzVGV4dDsKK30KKworV2ViU3RyaW5nIFdlYkhUVFBMb2FkSW5mbzo6cmF3UmVzcG9u
c2VIZWFkZXJzVGV4dCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkp
OworICAgIHJldHVybiBtX3ByaXZhdGUtPnJhd1Jlc3BvbnNlSGVhZGVyc1RleHQ7Cit9CisKK3Zv
aWQgV2ViSFRUUExvYWRJbmZvOjpzZXRSYXdSZXNwb25zZUhlYWRlcnNUZXh0KGNvbnN0IFdlYlN0
cmluZyYgcmF3SGVhZGVyc1RleHQpCit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkp
OworICAgIG1fcHJpdmF0ZS0+cmF3UmVzcG9uc2VIZWFkZXJzVGV4dCA9IHJhd0hlYWRlcnNUZXh0
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="82260"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="82261"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89620</attachid>
            <date>2011-04-14 12:04:12 -0700</date>
            <delta_ts>2011-04-14 22:55:52 -0700</delta_ts>
            <desc>patch with binary</desc>
            <filename>headers_webkit</filename>
            <type>text/plain</type>
            <size>25309</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMjc4YWRmLi5kZDFjMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkg
QEAKKzIwMTEtMDQtMTMgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogRW5hYmxlIHJhdyBIVFRQIGhlYWRlcnMgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgyNTkKKworICAgICAgICBBZGRlZCByYXcg
aGVhZGVycyB0ZXh0IHN1cHBvcnQgdG8gaW5zcGVjdG9yLgorCisgICAgICAgICogRW5nbGlzaC5s
cHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIucHJvdG90eXBlLl91cGRhdGVSZXNvdXJjZVdpdGhS
ZXNwb25zZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2UucHJvdG90eXBlLmdldCB0cmFuc2ZlclNpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJlc291cmNlLnByb3RvdHlwZS5zZXQgcmVxdWVzdEhlYWRlcnMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5nZXQgcmF3UmVxdWVzdEhlYWRlcnNUZXh0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuc2V0IHJhd1JlcXVlc3RIZWFk
ZXJzVGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLmdldCBy
ZXF1ZXN0SGVhZGVyc1NpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3Rv
dHlwZS5zZXQgcmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZS5wcm90b3R5cGUuZ2V0IHJhd1Jlc3BvbnNlSGVhZGVyc1RleHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5zZXQgcmF3UmVzcG9uc2VIZWFkZXJzVGV4dCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLmdldCByZXNwb25zZUhlYWRl
cnNTaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuX2hlYWRl
cnNTaXplKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlSGVhZGVyc1Zp
ZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldy5wcm90b3R5cGUuX3JlZnJlc2hQ
YXJtcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldy5wcm90b3R5
cGUuX3JlZnJlc2hSZXF1ZXN0SGVhZGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VIZWFkZXJzVmlldy5wcm90b3R5cGUuX3JlZnJlc2hSZXNwb25zZUhlYWRlcnMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBlLl9yZWZyZXNoSGVh
ZGVyc1RpdGxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnBy
b3RvdHlwZS5fcmVmcmVzaEhlYWRlcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
SGVhZGVyc1ZpZXcucHJvdG90eXBlLl9yZWZyZXNoUmF3SGVhZGVyc1RleHQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBlLl90b2dnbGVSYXdSZXF1
ZXN0SGVhZGVyc1RleHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1Zp
ZXcucHJvdG90eXBlLl90b2dnbGVSYXdSZXNwb25zZUhlYWRlcnNUZXh0KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnByb3RvdHlwZS5fY3JlYXRlVG9nZ2xlQnV0
dG9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnByb3RvdHlw
ZS5fY3JlYXRlSGVhZGVyc1RvZ2dsZUJ1dHRvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9uZXR3b3JrUGFuZWwuY3NzOgorICAgICAgICAoLnJlc291cmNlLWhlYWRlcnMtdmlldyAu
b3V0bGluZS1kaXNjbG9zdXJlIGxpIC5oZWFkZXItdG9nZ2xlKToKKyAgICAgICAgKC5yZXNvdXJj
ZS1oZWFkZXJzLXZpZXcgLm91dGxpbmUtZGlzY2xvc3VyZSBsaS5leHBhbmRlZCAuaGVhZGVyLXRv
Z2dsZSk6CisgICAgICAgICgucmVzb3VyY2UtaGVhZGVycy12aWV3IC5vdXRsaW5lLWRpc2Nsb3N1
cmUgbGkgLmhlYWRlci10b2dnbGU6aG92ZXIpOgorICAgICAgICAoLnJlc291cmNlLWhlYWRlcnMt
dmlldyAub3V0bGluZS1kaXNjbG9zdXJlIGxpLnJhdy1oZWFkZXJzLXRleHQpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkSW5mby5oOgorCiAyMDExLTA0LTE0ICBLZW5u
ZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1p
dHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXpl
ZFN0cmluZ3MuanMKaW5kZXggYmYwZDQ3YzViNzQ4MmYyNWRmOTQ1ZDgxNzkwOGIyMDA2Y2U1MTU0
OC4uNTNiZWEzNTUyODY2ODhjMzYzMTFlNDFmOTliZTI5NGQ5OTdlYjExOSAxMDA2NDQKR0lUIGJp
bmFyeSBwYXRjaApkZWx0YSAyMTcKemNtY2J6ZmNlLSQ8XyRyWG47V2R1XjRRQjVHOHN9QyR8cllR
Tih3NzYjNDshXyphRVE8MUNzZFV3czxYYkM/Nj03CnowI3UqT2tQb0kpZkdSUWNBZ2hfJjdfVj1Q
JnxBUWUkV1gqazNeVzBrUE4paXlLNW00Kjs+bSYrIzA4UH5LPkpHPgpVaVk5TTdxZHolZXJPQFVi
RTlSJkowSS04SWB+VXl8CgpkZWx0YSAyMTUKemNtWEBNa29uMzI8XyRyWC0xIVdwM2BxPCo0NTx2
ZGxPR3hqT1A0VUBHbyU5e05KSWZCbGdkIVNQITEkaDhTKkNBCnpGUEMmd1VgUy1oVkBMdFlyMnhm
fWZ2UTA/aEBTPno3Y3R9bDx4M2NmOEklfWVmbnY1bXRpPDJ+bHApQyRSaWJRfQpYdGpNUmtJbHhq
UVoqdDVrcTBMJD09Y29lITBGZzF5CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uCmluZGV4IDQzYTAzOTMuLjdlZjdiYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb24KQEAgLTMzNiw4ICszMzYsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzdGF0dXMiLCAidHlwZSI6ICJudW1iZXIiLCAiZGVzY3JpcHRpb24iOiAiSFRUUCBy
ZXNwb25zZSBzdGF0dXMgY29kZS4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
c3RhdHVzVGV4dCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJIVFRQIHJlc3Bv
bnNlIHN0YXR1cyB0ZXh0LiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoZWFk
ZXJzIiwgInR5cGUiOiAib2JqZWN0IiwgImRlc2NyaXB0aW9uIjogIkhUVFAgcmVzcG9uc2UgaGVh
ZGVycy4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmF3SGVhZGVyc1RleHQi
LCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiUmF3
IEhUVFAgcmVzcG9uc2UgaGVhZGVycyB0ZXh0LiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJtaW1lVHlwZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJSZXNv
dXJjZSBtaW1lVHlwZSBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBicm93c2VyLiIgfSwKICAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SGVhZGVycyIsICJ0eXBlIjogIm9iamVjdCIs
ICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJSZWZpbmVkIEhUVFAgcmVxdWVzdCBo
ZWFkZXJzIHRoYXQgd2VyZSBhY3R1YWxseSB0cmFuc21pdHRlZCBvdmVyIHRoZSBuZXR3b3JrLiIg
fSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyYXdSZXF1ZXN0SGVhZGVyc1RleHQi
LCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiUmF3
IEhUVFAgcmVxdWVzdCBoZWFkZXJzIHRleHQuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImNvbm5lY3Rpb25SZXVzZWQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9u
IjogIlNwZWNpZmllcyB3aGV0aGVyIHBoeXNpY2FsIGNvbm5lY3Rpb24gd2FzIGFjdHVhbGx5IHJl
dXNlZCBmb3IgdGhpcyByZXF1ZXN0LiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJjb25uZWN0aW9uSUQiLCAidHlwZSI6ICJudW1iZXIiLCAiZGVzY3JpcHRpb24iOiAiUGh5c2lj
YWwgY29ubmVjdGlvbiBpZCB0aGF0IHdhcyBhY3R1YWxseSB1c2VkIGZvciB0aGlzIHJlcXVlc3Qu
IiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZyb21EaXNrQ2FjaGUiLCAidHlw
ZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlNwZWNpZmll
cyB0aGF0IHRoZSByZXNvdXJjZSB3YXMgbG9hZGVkIGZyb20gdGhlIGRpc2sgY2FjaGUuIiB9LApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQu
Y3BwCmluZGV4IDk1Y2ViY2YuLjE2OTgwNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTIyMSw3ICsyMjEsNiBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VS
ZXNwb25zZShjb25zdCBSZXNvdXJjZQogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3Bv
bnNlT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICByZXNwb25zZU9iamVj
dC0+c2V0TnVtYmVyKCJzdGF0dXMiLCByZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCkgPyByZXNw
b25zZS5yZXNvdXJjZUxvYWRJbmZvKCktPmh0dHBTdGF0dXNDb2RlIDogcmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSk7CiAgICAgcmVzcG9uc2VPYmplY3QtPnNldFN0cmluZygic3RhdHVzVGV4dCIs
IHJlc3BvbnNlLnJlc291cmNlTG9hZEluZm8oKSA/IHJlc3BvbnNlLnJlc291cmNlTG9hZEluZm8o
KS0+aHR0cFN0YXR1c1RleHQgOiByZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpKTsKLSAgICByZXNw
b25zZU9iamVjdC0+c2V0T2JqZWN0KCJoZWFkZXJzIiwgYnVpbGRPYmplY3RGb3JIZWFkZXJzKHJl
c3BvbnNlLnJlc291cmNlTG9hZEluZm8oKSA/IHJlc3BvbnNlLnJlc291cmNlTG9hZEluZm8oKS0+
cmVzcG9uc2VIZWFkZXJzIDogcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpKSk7CiAKICAgICBy
ZXNwb25zZU9iamVjdC0+c2V0U3RyaW5nKCJtaW1lVHlwZSIsIHJlc3BvbnNlLm1pbWVUeXBlKCkp
OwogICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRCb29sZWFuKCJjb25uZWN0aW9uUmV1c2VkIiwgcmVz
cG9uc2UuY29ubmVjdGlvblJldXNlZCgpKTsKQEAgLTIzMCw4ICsyMjksMTYgQEAgc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2UKICAgICBpZiAocmVzcG9uc2UucmVzb3VyY2VMb2FkVGltaW5nKCkpCiAg
ICAgICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRPYmplY3QoInRpbWluZyIsIGJ1aWxkT2JqZWN0Rm9y
VGltaW5nKCpyZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKSkpOwogCi0gICAgaWYgKHJlc3Bv
bnNlLnJlc291cmNlTG9hZEluZm8oKSkKKyAgICBpZiAocmVzcG9uc2UucmVzb3VyY2VMb2FkSW5m
bygpKSB7CisgICAgICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRPYmplY3QoImhlYWRlcnMiLCBidWls
ZE9iamVjdEZvckhlYWRlcnMocmVzcG9uc2UucmVzb3VyY2VMb2FkSW5mbygpLT5yZXNwb25zZUhl
YWRlcnMpKTsKKyAgICAgICAgaWYgKCFyZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCktPnJhd1Jl
c3BvbnNlSGVhZGVyc1RleHQuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmVzcG9uc2VPYmplY3Qt
PnNldFN0cmluZygicmF3SGVhZGVyc1RleHQiLCByZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCkt
PnJhd1Jlc3BvbnNlSGVhZGVyc1RleHQpOworCiAgICAgICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRP
YmplY3QoInJlcXVlc3RIZWFkZXJzIiwgYnVpbGRPYmplY3RGb3JIZWFkZXJzKHJlc3BvbnNlLnJl
c291cmNlTG9hZEluZm8oKS0+cmVxdWVzdEhlYWRlcnMpKTsKKyAgICAgICAgaWYgKCFyZXNwb25z
ZS5yZXNvdXJjZUxvYWRJbmZvKCktPnJhd1JlcXVlc3RIZWFkZXJzVGV4dC5pc0VtcHR5KCkpCisg
ICAgICAgICAgICByZXNwb25zZU9iamVjdC0+c2V0U3RyaW5nKCJyYXdSZXF1ZXN0SGVhZGVyc1Rl
eHQiLCByZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCktPnJhd1JlcXVlc3RIZWFkZXJzVGV4dCk7
CisgICAgfSBlbHNlCisgICAgICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRPYmplY3QoImhlYWRlcnMi
LCBidWlsZE9iamVjdEZvckhlYWRlcnMocmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpKSk7CiAK
ICAgICByZXR1cm4gcmVzcG9uc2VPYmplY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcwppbmRleCBhNWE1M2NiLi44NDg4
N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdv
cmtNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0
d29ya01hbmFnZXIuanMKQEAgLTkyLDkgKzkyLDEyIEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrRGlz
cGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJlc291cmNlLnN0YXR1c0NvZGUgPSByZXNw
b25zZS5zdGF0dXM7CiAgICAgICAgIHJlc291cmNlLnN0YXR1c1RleHQgPSByZXNwb25zZS5zdGF0
dXNUZXh0OwogICAgICAgICByZXNvdXJjZS5yZXNwb25zZUhlYWRlcnMgPSByZXNwb25zZS5oZWFk
ZXJzOwotICAgICAgICAvLyBSYXcgcmVxdWVzdCBoZWFkZXJzIGNhbiBiZSBhIHBhcnQgb2YgcmVz
cG9uc2UgYXMgd2VsbC4KKyAgICAgICAgaWYgKHJlc3BvbnNlLnJhd0hlYWRlcnNUZXh0KQorICAg
ICAgICAgICAgcmVzb3VyY2UucmF3UmVzcG9uc2VIZWFkZXJzVGV4dCA9IHJlc3BvbnNlLnJhd0hl
YWRlcnNUZXh0OwogICAgICAgICBpZiAocmVzcG9uc2UucmVxdWVzdEhlYWRlcnMpCiAgICAgICAg
ICAgICByZXNvdXJjZS5yZXF1ZXN0SGVhZGVycyA9IHJlc3BvbnNlLnJlcXVlc3RIZWFkZXJzOwor
ICAgICAgICBpZiAocmVzcG9uc2UucmF3UmVxdWVzdEhlYWRlcnNUZXh0KQorICAgICAgICAgICAg
cmVzb3VyY2UucmF3UmVxdWVzdEhlYWRlcnNUZXh0ID0gcmVzcG9uc2UucmF3UmVxdWVzdEhlYWRl
cnNUZXh0OwogCiAgICAgICAgIHJlc291cmNlLmNvbm5lY3Rpb25SZXVzZWQgPSByZXNwb25zZS5j
b25uZWN0aW9uUmV1c2VkOwogICAgICAgICByZXNvdXJjZS5jb25uZWN0aW9uSUQgPSByZXNwb25z
ZS5jb25uZWN0aW9uSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZS5qcwppbmRleCBjNjQ3NGMyLi5kYTk4OWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKQEAgLTMzLDcgKzMzLDYgQEAgV2ViSW5z
cGVjdG9yLlJlc291cmNlID0gZnVuY3Rpb24oaWRlbnRpZmllciwgdXJsKQogICAgIHRoaXMuX2Vu
ZFRpbWUgPSAtMTsKICAgICB0aGlzLl9jYXRlZ29yeSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZUNh
dGVnb3JpZXMub3RoZXI7CiAgICAgdGhpcy5fcGVuZGluZ0NvbnRlbnRDYWxsYmFja3MgPSBbXTsK
LSAgICB0aGlzLl9yZXNwb25zZUhlYWRlcnNTaXplID0gMDsKIH0KIAogLy8gS2VlcCB0aGVzZSBp
biBzeW5jIHdpdGggV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OlR5cGUKQEAgLTI0MCw3ICsy
MzksNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICBpZiAo
dGhpcy5jYWNoZWQpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgaWYgKHRoaXMuc3Rh
dHVzQ29kZSA9PT0gMzA0KSAvLyBOb3QgbW9kaWZpZWQKLSAgICAgICAgICAgIHJldHVybiB0aGlz
Ll9yZXNwb25zZUhlYWRlcnNTaXplOworICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2VI
ZWFkZXJzU2l6ZTsKICAgICAgICAgaWYgKHRoaXMuX3RyYW5zZmVyU2l6ZSAhPT0gdW5kZWZpbmVk
KQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZmVyU2l6ZTsKICAgICAgICAgLy8gSWYg
d2UgZGlkIG5vdCByZWNlaXZlIGFjdHVhbCB0cmFuc2ZlciBzaXplIGZyb20gbmV0d29yawpAQCAt
MjU0LDcgKzI1Myw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIC8vIHdvcmsgZm9yIGNodW5rcyB3aXRoIG5vbi10cml2aWFsIGVuY29kaW5ncy4gV2UgbmVl
ZCBhIHdheSB0bwogICAgICAgICAvLyBnZXQgYWN0dWFsIHRyYW5zZmVyIHNpemUgZnJvbSB0aGUg
bmV0d29yayBzdGFjay4KICAgICAgICAgdmFyIGJvZHlTaXplID0gTnVtYmVyKHRoaXMucmVzcG9u
c2VIZWFkZXJzWyJDb250ZW50LUxlbmd0aCJdIHx8IHRoaXMucmVzb3VyY2VTaXplKTsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1NpemUgKyBib2R5U2l6ZTsKKyAgICAgICAg
cmV0dXJuIHRoaXMucmVzcG9uc2VIZWFkZXJzU2l6ZSArIGJvZHlTaXplOwogICAgIH0sCiAKICAg
ICBpbmNyZWFzZVRyYW5zZmVyU2l6ZTogZnVuY3Rpb24oeCkKQEAgLTQwMywxMCArNDAyLDM1IEBA
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3JlcXVl
c3RIZWFkZXJzID0geDsKICAgICAgICAgZGVsZXRlIHRoaXMuX3NvcnRlZFJlcXVlc3RIZWFkZXJz
OwogICAgICAgICBkZWxldGUgdGhpcy5fcmVxdWVzdENvb2tpZXM7CisgICAgICAgIGRlbGV0ZSB0
aGlzLl9yZXNwb25zZUhlYWRlcnNTaXplOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKCJyZXF1ZXN0SGVhZGVycyBjaGFuZ2VkIik7CiAgICAgfSwKIAorICAgIGdldCBy
YXdSZXF1ZXN0SGVhZGVyc1RleHQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jhd1Jl
cXVlc3RIZWFkZXJzVGV4dDsKKyAgICB9LAorCisgICAgc2V0IHJhd1JlcXVlc3RIZWFkZXJzVGV4
dCh4KQorICAgIHsKKyAgICAgICAgdGhpcy5fcmF3UmVxdWVzdEhlYWRlcnNUZXh0ID0geDsKKyAg
ICAgICAgZGVsZXRlIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1NpemU7CisKKyAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInJlcXVlc3RIZWFkZXJzIGNoYW5nZWQiKTsKKyAgICB9
LAorCisgICAgZ2V0IHJlcXVlc3RIZWFkZXJzU2l6ZSgpCisgICAgeworICAgICAgICBpZiAodHlw
ZW9mKHRoaXMuX3JlcXVlc3RIZWFkZXJzU2l6ZSkgPT09ICJ1bmRlZmluZWQiKSB7CisgICAgICAg
ICAgICBpZiAodGhpcy5fcmF3UmVxdWVzdEhlYWRlcnNUZXh0KQorICAgICAgICAgICAgICAgIHRo
aXMuX3JlcXVlc3RIZWFkZXJzU2l6ZSA9IHRoaXMuX3Jhd1JlcXVlc3RIZWFkZXJzVGV4dC5sZW5n
dGg7CisgICAgICAgICAgICBlbHNlIAorICAgICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RIZWFk
ZXJzU2l6ZSA9IHRoaXMuX2hlYWRlcnNTaXplKHRoaXMuX3JlcXVlc3RIZWFkZXJzKQorICAgICAg
ICB9CisgICAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0SGVhZGVyc1NpemU7CisgICAgfSwKKwog
ICAgIGdldCBzb3J0ZWRSZXF1ZXN0SGVhZGVycygpCiAgICAgewogICAgICAgICBpZiAodGhpcy5f
c29ydGVkUmVxdWVzdEhlYWRlcnMgIT09IHVuZGVmaW5lZCkKQEAgLTQ1MSwxMyArNDc1LDM3IEBA
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgc2V0IHJlc3BvbnNlSGVh
ZGVycyh4KQogICAgIHsKICAgICAgICAgdGhpcy5fcmVzcG9uc2VIZWFkZXJzID0geDsKLSAgICAg
ICAgLy8gRklYTUU6IHdlIHNob3VsZCB0YWtlIGFjdHVhbCBoZWFkZXJzIHNpemUgZnJvbSBuZXR3
b3JrIHN0YWNrLCB3aGVuIHBvc3NpYmxlLgotICAgICAgICB0aGlzLl9yZXNwb25zZUhlYWRlcnNT
aXplID0gdGhpcy5faGVhZGVyc1NpemUoeCk7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9yZXNwb25z
ZUhlYWRlcnNTaXplOwogICAgICAgICBkZWxldGUgdGhpcy5fc29ydGVkUmVzcG9uc2VIZWFkZXJz
OwogICAgICAgICBkZWxldGUgdGhpcy5fcmVzcG9uc2VDb29raWVzOwogCiAgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJyZXNwb25zZUhlYWRlcnMgY2hhbmdlZCIpOwogICAg
IH0sCisgICAgCisgICAgZ2V0IHJhd1Jlc3BvbnNlSGVhZGVyc1RleHQoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3Jhd1Jlc3BvbnNlSGVhZGVyc1RleHQ7CisgICAgfSwKKworICAgIHNl
dCByYXdSZXNwb25zZUhlYWRlcnNUZXh0KHgpCisgICAgeworICAgICAgICB0aGlzLl9yYXdSZXNw
b25zZUhlYWRlcnNUZXh0ID0geDsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3Jlc3BvbnNlSGVhZGVy
c1NpemU7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInJlc3BvbnNl
SGVhZGVycyBjaGFuZ2VkIik7CisgICAgfSwKKyAgICAKKyAgICBnZXQgcmVzcG9uc2VIZWFkZXJz
U2l6ZSgpCisgICAgeworICAgICAgICBpZiAodHlwZW9mKHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1Np
emUpID09PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAgaWYgKHRoaXMuX3Jhd1Jlc3BvbnNl
SGVhZGVyc1RleHQpCisgICAgICAgICAgICAgICAgdGhpcy5fcmVzcG9uc2VIZWFkZXJzU2l6ZSA9
IHRoaXMuX3Jhd1Jlc3BvbnNlSGVhZGVyc1RleHQubGVuZ3RoOworICAgICAgICAgICAgZWxzZSAK
KyAgICAgICAgICAgICAgICB0aGlzLl9yZXNwb25zZUhlYWRlcnNTaXplID0gdGhpcy5faGVhZGVy
c1NpemUodGhpcy5fcmVzcG9uc2VIZWFkZXJzKQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0
aGlzLl9yZXNwb25zZUhlYWRlcnNTaXplOworICAgIH0sCisgICAgCiAKICAgICBnZXQgc29ydGVk
UmVzcG9uc2VIZWFkZXJzKCkKICAgICB7CkBAIC01MzYsOSArNTg0LDExIEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAKICAgICBfaGVhZGVyc1NpemU6IGZ1bmN0aW9uKGhl
YWRlcnMpCiAgICAgeworICAgICAgICAvLyBXZSBzaG91bGQgdGFrZSBhY3R1YWwgaGVhZGVycyBz
aXplIGZyb20gbmV0d29yayBzdGFjaywgd2hlbiBwb3NzaWJsZSwgYnV0IGZhbGwgYmFjayB0bwor
ICAgICAgICAvLyB0aGlzIGxvdXN5IGNvbXB1dGF0aW9uIHdoZW4gbm8gcmF3IGhlYWRlcnMgYXJl
IGF2YWlsYWJsZS4KICAgICAgICAgdmFyIHNpemUgPSAwOwogICAgICAgICBmb3IgKHZhciBoZWFk
ZXIgaW4gaGVhZGVycykKLSAgICAgICAgICAgIHNpemUgKz0gaGVhZGVyLmxlbmd0aCArIGhlYWRl
cnNbaGVhZGVyXS5sZW5ndGggKyAzOyAvLyBfdHlwaWNhbF8gb3ZlcmhlYWQgcGVyIGhlcmFkZXIg
aXMgIjogIi5sZW5ndGggKyAiXG4iLmxlbmd0aC4KKyAgICAgICAgICAgIHNpemUgKz0gaGVhZGVy
Lmxlbmd0aCArIGhlYWRlcnNbaGVhZGVyXS5sZW5ndGggKyA0OyAvLyBfdHlwaWNhbF8gb3Zlcmhl
YWQgcGVyIGhlYWRlciBpcyAiOiAiLmxlbmd0aCArICJcclxuIi5sZW5ndGguCiAgICAgICAgIHJl
dHVybiBzaXplOwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VIZWFkZXJzVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VIZWFkZXJzVmlldy5qcwppbmRleCBlNzkwNzhhLi4xZjc0
MzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlSGVhZGVyc1ZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZUhlYWRlcnNWaWV3LmpzCkBAIC01OSw5ICs1OSwxMSBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VIZWFkZXJzVmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQogICAgIHRoaXMuX3JlcXVl
c3RIZWFkZXJzVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9IGZhbHNlOwogICAgIHRoaXMuX2hlYWRl
cnNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZCh0aGlzLl9yZXF1ZXN0SGVhZGVyc1RyZWVFbGVtZW50
KTsKIAotICAgIHRoaXMuX2RlY29kZUhvdmVyID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEb3Vi
bGUtQ2xpY2sgdG8gdG9nZ2xlIGJldHdlZW4gVVJMIGVuY29kZWQgYW5kIGRlY29kZWQgZm9ybWF0
cyIpOwogICAgIHRoaXMuX2RlY29kZVJlcXVlc3RQYXJhbWV0ZXJzID0gdHJ1ZTsKIAorICAgIHRo
aXMuX3Nob3dSYXdSZXF1ZXN0SGVhZGVyc1RleHQgPSBmYWxzZTsKKyAgICB0aGlzLl9zaG93UmF3
UmVzcG9uc2VIZWFkZXJzVGV4dCA9IGZhbHNlOworCiAgICAgdGhpcy5fcXVlcnlTdHJpbmdUcmVl
RWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudCgiIiwgbnVsbCwgdHJ1ZSk7CiAgICAgdGhpcy5fcXVl
cnlTdHJpbmdUcmVlRWxlbWVudC5leHBhbmRlZCA9IHRydWU7CiAgICAgdGhpcy5fcXVlcnlTdHJp
bmdUcmVlRWxlbWVudC5zZWxlY3RhYmxlID0gZmFsc2U7CkBAIC0xNDYsNyArMTQ4LDE5IEBAIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAg
ICAgIHBhcm1zVHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIAotICAgICAgICBwYXJtc1Ry
ZWVFbGVtZW50LnRpdGxlSFRNTCA9IHRpdGxlICsgIjxzcGFuIGNsYXNzPVwiaGVhZGVyLWNvdW50
XCI+IiArIFdlYkluc3BlY3Rvci5VSVN0cmluZygiICglZCkiLCBwYXJtcy5sZW5ndGgpICsgIjwv
c3Bhbj4iOworICAgICAgICBwYXJtc1RyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5yZW1vdmVD
aGlsZHJlbigpOworICAgICAgICBwYXJtc1RyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aXRsZSkpOworICAgICAgICAKKyAgICAg
ICAgdmFyIGhlYWRlckNvdW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAg
ICAgICBoZWFkZXJDb3VudC5hZGRTdHlsZUNsYXNzKCJoZWFkZXItY291bnQiKTsKKyAgICAgICAg
aGVhZGVyQ291bnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiAoJWQpIiwg
cGFybXMubGVuZ3RoKTsKKyAgICAgICAgcGFybXNUcmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQu
YXBwZW5kQ2hpbGQoaGVhZGVyQ291bnQpOworCisgICAgICAgIHZhciB0b2dnbGVUaXRsZSA9IHRo
aXMuX2RlY29kZVJlcXVlc3RQYXJhbWV0ZXJzID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJ2aWV3
IFVSTCBlbmNvZGVkIikgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoInZpZXcgZGVjb2RlZCIpOwor
ICAgICAgICB2YXIgdG9nZ2xlQnV0dG9uID0gdGhpcy5fY3JlYXRlVG9nZ2xlQnV0dG9uKHRvZ2ds
ZVRpdGxlKTsKKyAgICAgICAgdG9nZ2xlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwg
dGhpcy5fdG9nZ2xlVVJMZGVjb2RpbmcuYmluZCh0aGlzKSk7CisgICAgICAgIHBhcm1zVHJlZUVs
ZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKHRvZ2dsZUJ1dHRvbik7CisKIAogICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcm1zLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAg
ICB2YXIgbmFtZSA9IHBhcm1zW2ldLm5hbWU7CkBAIC0xNzUsOCArMTg5LDYgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIHBh
cm1UcmVlRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudChudWxsLCBudWxsLCBmYWxzZSk7CiAgICAg
ICAgICAgICBwYXJtVHJlZUVsZW1lbnQudGl0bGVIVE1MID0gdGl0bGU7CiAgICAgICAgICAgICBw
YXJtVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9IGZhbHNlOwotICAgICAgICAgICAgcGFybVRyZWVF
bGVtZW50LnRvb2x0aXAgPSB0aGlzLl9kZWNvZGVIb3ZlcjsKLSAgICAgICAgICAgIHBhcm1UcmVl
RWxlbWVudC5vbmRibGNsaWNrID0gdGhpcy5fdG9nZ2xlVVJMZGVjb2RpbmcuYmluZCh0aGlzKTsK
ICAgICAgICAgICAgIHBhcm1zVHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQocGFybVRyZWVFbGVtZW50
KTsKICAgICAgICAgfQogICAgIH0sCkBAIC0yMDIsNyArMjE0LDE3IEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZUhlYWRlcnNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGFkZGl0aW9uYWxS
b3cgPSBudWxsOwogICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3Jlc291cmNlLndlYlNvY2tldFJl
cXVlc3RLZXkzICE9PSAidW5kZWZpbmVkIikKICAgICAgICAgICAgIGFkZGl0aW9uYWxSb3cgPSB7
aGVhZGVyOiAiKEtleTMpIiwgdmFsdWU6IHRoaXMuX3Jlc291cmNlLndlYlNvY2tldFJlcXVlc3RL
ZXkzfTsKLSAgICAgICAgdGhpcy5fcmVmcmVzaEhlYWRlcnMoV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJSZXF1ZXN0IEhlYWRlcnMiKSwgdGhpcy5fcmVzb3VyY2Uuc29ydGVkUmVxdWVzdEhlYWRlcnMs
IGFkZGl0aW9uYWxSb3csIHRoaXMuX3JlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQpOworICAgICAg
ICBpZiAodGhpcy5fc2hvd1Jhd1JlcXVlc3RIZWFkZXJzVGV4dCkKKyAgICAgICAgICAgIHRoaXMu
X3JlZnJlc2hSYXdIZWFkZXJzVGV4dChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVlc3QgSGVh
ZGVycyIpLCB0aGlzLl9yZXNvdXJjZS5yYXdSZXF1ZXN0SGVhZGVyc1RleHQsIHRoaXMuX3JlcXVl
c3RIZWFkZXJzVHJlZUVsZW1lbnQpOworICAgICAgICBlbHNlIAorICAgICAgICAgICAgdGhpcy5f
cmVmcmVzaEhlYWRlcnMoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0IEhlYWRlcnMiKSwg
dGhpcy5fcmVzb3VyY2Uuc29ydGVkUmVxdWVzdEhlYWRlcnMsIGFkZGl0aW9uYWxSb3csIHRoaXMu
X3JlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQpOworCisgICAgICAgIGlmICh0aGlzLl9yZXNvdXJj
ZS5yYXdSZXF1ZXN0SGVhZGVyc1RleHQpIHsgCisgICAgICAgICAgICB2YXIgdG9nZ2xlQnV0dG9u
ID0gdGhpcy5fY3JlYXRlSGVhZGVyc1RvZ2dsZUJ1dHRvbih0aGlzLl9zaG93UmF3UmVxdWVzdEhl
YWRlcnNUZXh0KTsKKyAgICAgICAgICAgIHRvZ2dsZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJj
bGljayIsIHRoaXMuX3RvZ2dsZVJhd1JlcXVlc3RIZWFkZXJzVGV4dC5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgICAgIHRoaXMuX3JlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50
LmFwcGVuZENoaWxkKHRvZ2dsZUJ1dHRvbik7CisgICAgICAgIH0KKwogICAgICAgICB0aGlzLl9y
ZWZyZXNoRm9ybURhdGEoKTsKICAgICB9LAogCkBAIC0yMTEsNyArMjMzLDE2IEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGFkZGl0
aW9uYWxSb3cgPSBudWxsOwogICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3Jlc291cmNlLndlYlNv
Y2tldENoYWxsZW5nZVJlc3BvbnNlICE9PSAidW5kZWZpbmVkIikKICAgICAgICAgICAgIGFkZGl0
aW9uYWxSb3cgPSB7aGVhZGVyOiAiKENoYWxsZW5nZSBSZXNwb25zZSkiLCB2YWx1ZTogdGhpcy5f
cmVzb3VyY2Uud2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2V9OwotICAgICAgICB0aGlzLl9yZWZy
ZXNoSGVhZGVycyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc3BvbnNlIEhlYWRlcnMiKSwgdGhp
cy5fcmVzb3VyY2Uuc29ydGVkUmVzcG9uc2VIZWFkZXJzLCBhZGRpdGlvbmFsUm93LCB0aGlzLl9y
ZXNwb25zZUhlYWRlcnNUcmVlRWxlbWVudCk7CisgICAgICAgIGlmICh0aGlzLl9zaG93UmF3UmVz
cG9uc2VIZWFkZXJzVGV4dCkKKyAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hSYXdIZWFkZXJzVGV4
dChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc3BvbnNlIEhlYWRlcnMiKSwgdGhpcy5fcmVzb3Vy
Y2UucmF3UmVzcG9uc2VIZWFkZXJzVGV4dCwgdGhpcy5fcmVzcG9uc2VIZWFkZXJzVHJlZUVsZW1l
bnQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9yZWZyZXNoSGVhZGVycyhXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlJlc3BvbnNlIEhlYWRlcnMiKSwgdGhpcy5fcmVzb3VyY2Uuc29y
dGVkUmVzcG9uc2VIZWFkZXJzLCBhZGRpdGlvbmFsUm93LCB0aGlzLl9yZXNwb25zZUhlYWRlcnNU
cmVlRWxlbWVudCk7CisgICAgICAgIAorICAgICAgICBpZiAodGhpcy5fcmVzb3VyY2UucmF3UmVz
cG9uc2VIZWFkZXJzVGV4dCkgeworICAgICAgICAgICAgdmFyIHRvZ2dsZUJ1dHRvbiA9IHRoaXMu
X2NyZWF0ZUhlYWRlcnNUb2dnbGVCdXR0b24odGhpcy5fc2hvd1Jhd1Jlc3BvbnNlSGVhZGVyc1Rl
eHQpOworICAgICAgICAgICAgdG9nZ2xlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwg
dGhpcy5fdG9nZ2xlUmF3UmVzcG9uc2VIZWFkZXJzVGV4dC5iaW5kKHRoaXMpKTsKKyAgICAgICAg
ICAgIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1RyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5hcHBl
bmRDaGlsZCh0b2dnbGVCdXR0b24pOworICAgICAgICB9CiAgICAgfSwKIAogICAgIF9yZWZyZXNo
SFRUUEluZm9ybWF0aW9uOiBmdW5jdGlvbigpCkBAIC0yNDIsMTUgKzI3MywyNiBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9
LAogICAgIAorICAgIF9yZWZyZXNoSGVhZGVyc1RpdGxlOiBmdW5jdGlvbih0aXRsZSwgaGVhZGVy
c1RyZWVFbGVtZW50LCBpc1Jhd0hlYWRlcnNUZXh0U2hvd24sIGhlYWRlcnNMZW5ndGgpCisgICAg
eworICAgICAgICBoZWFkZXJzVHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LnJlbW92ZUNoaWxk
cmVuKCk7CisgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGl0bGUpKTsKKyAgICAgICAgCisgICAgICAg
IGlmICghaXNSYXdIZWFkZXJzVGV4dFNob3duKSB7CisgICAgICAgICAgICB2YXIgaGVhZGVyQ291
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICBoZWFkZXJD
b3VudC5hZGRTdHlsZUNsYXNzKCJoZWFkZXItY291bnQiKTsKKyAgICAgICAgICAgIGhlYWRlckNv
dW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIgKCVkKSIsIGhlYWRlcnNM
ZW5ndGgpOworICAgICAgICAgICAgaGVhZGVyc1RyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5h
cHBlbmRDaGlsZChoZWFkZXJDb3VudCk7CisgICAgICAgIH0KKyAgICB9LAorICAgIAogICAgIF9y
ZWZyZXNoSGVhZGVyczogZnVuY3Rpb24odGl0bGUsIGhlYWRlcnMsIGFkZGl0aW9uYWxSb3csIGhl
YWRlcnNUcmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC5yZW1v
dmVDaGlsZHJlbigpOwotCisgICAgICAgIAogICAgICAgICB2YXIgbGVuZ3RoID0gaGVhZGVycy5s
ZW5ndGg7Ci0gICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC50aXRsZUhUTUwgPSB0aXRsZS5lc2Nh
cGVIVE1MKCkgKyAiPHNwYW4gY2xhc3M9XCJoZWFkZXItY291bnRcIj4iICsgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCIgKCVkKSIsIGxlbmd0aCkgKyAiPC9zcGFuPiI7CisgICAgICAgIHRoaXMuX3Jl
ZnJlc2hIZWFkZXJzVGl0bGUodGl0bGUsIGhlYWRlcnNUcmVlRWxlbWVudCwgZmFsc2UsIGxlbmd0
aCk7CiAgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC5oaWRkZW4gPSAhbGVuZ3RoOwotCi0gICAg
ICAgIHZhciBsZW5ndGggPSBoZWFkZXJzLmxlbmd0aDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIHRpdGxlID0gIjxkaXYgY2xhc3M9
XCJoZWFkZXItbmFtZVwiPiIgKyBoZWFkZXJzW2ldLmhlYWRlci5lc2NhcGVIVE1MKCkgKyAiOjwv
ZGl2PiI7CiAgICAgICAgICAgICB0aXRsZSArPSAiPGRpdiBjbGFzcz1cImhlYWRlci12YWx1ZSBz
b3VyY2UtY29kZVwiPiIgKyBoZWFkZXJzW2ldLnZhbHVlLmVzY2FwZUhUTUwoKSArICI8L2Rpdj4i
CkBAIC0yNzAsNiArMzEyLDQ5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIGhlYWRlclRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBm
YWxzZTsKICAgICAgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChoZWFkZXJU
cmVlRWxlbWVudCk7CiAgICAgICAgIH0KKyAgICB9LAorICAgIAorICAgIF9yZWZyZXNoUmF3SGVh
ZGVyc1RleHQ6IGZ1bmN0aW9uKHRpdGxlLCByYXdIZWFkZXJzVGV4dCwgaGVhZGVyc1RyZWVFbGVt
ZW50KQorICAgIHsKKyAgICAgICAgaGVhZGVyc1RyZWVFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7
CisgICAgICAgIAorICAgICAgICB0aGlzLl9yZWZyZXNoSGVhZGVyc1RpdGxlKHRpdGxlLCBoZWFk
ZXJzVHJlZUVsZW1lbnQsIHRydWUpOworICAgICAgICB2YXIgaGVhZGVyVHJlZUVsZW1lbnQgPSBu
ZXcgVHJlZUVsZW1lbnQobnVsbCwgbnVsbCwgZmFsc2UpOworICAgICAgICBoZWFkZXJUcmVlRWxl
bWVudC5zZWxlY3RhYmxlID0gZmFsc2U7CisgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVudC5hcHBl
bmRDaGlsZChoZWFkZXJUcmVlRWxlbWVudCk7CisgICAgICAgIGhlYWRlclRyZWVFbGVtZW50Lmxp
c3RJdGVtRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJyYXctaGVhZGVycy10ZXh0Iik7CisgICAgICAg
IAorICAgICAgICB2YXIgcmF3SGVhZGVyc1RleHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgic3BhbiIpOworICAgICAgICByYXdIZWFkZXJzVGV4dEVsZW1lbnQuYWRkU3R5bGVDbGFz
cygiaGVhZGVyLXZhbHVlIik7CisgICAgICAgIHJhd0hlYWRlcnNUZXh0RWxlbWVudC5hZGRTdHls
ZUNsYXNzKCJzb3VyY2UtY29kZSIpOworICAgICAgICByYXdIZWFkZXJzVGV4dEVsZW1lbnQudGV4
dENvbnRlbnQgPSBTdHJpbmcocmF3SGVhZGVyc1RleHQpLnRyaW0oKTsKKyAgICAgICAgaGVhZGVy
VHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKHJhd0hlYWRlcnNUZXh0RWxl
bWVudCk7CisgICAgfSwKKworICAgIF90b2dnbGVSYXdSZXF1ZXN0SGVhZGVyc1RleHQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fc2hvd1Jhd1JlcXVlc3RIZWFkZXJzVGV4
dCA9ICF0aGlzLl9zaG93UmF3UmVxdWVzdEhlYWRlcnNUZXh0OworICAgICAgICB0aGlzLl9yZWZy
ZXNoUmVxdWVzdEhlYWRlcnMoKTsKKyAgICB9LAorCisgICAgX3RvZ2dsZVJhd1Jlc3BvbnNlSGVh
ZGVyc1RleHQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fc2hvd1Jhd1Jl
c3BvbnNlSGVhZGVyc1RleHQgPSAhdGhpcy5fc2hvd1Jhd1Jlc3BvbnNlSGVhZGVyc1RleHQ7Cisg
ICAgICAgIHRoaXMuX3JlZnJlc2hSZXNwb25zZUhlYWRlcnMoKTsKKyAgICB9LAorCisgICAgX2Ny
ZWF0ZVRvZ2dsZUJ1dHRvbjogZnVuY3Rpb24odGl0bGUpCisgICAgeworICAgICAgICB2YXIgYnV0
dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICBidXR0b24uYWRk
U3R5bGVDbGFzcygiaGVhZGVyLXRvZ2dsZSIpOworICAgICAgICBidXR0b24udGV4dENvbnRlbnQg
PSB0aXRsZTsKKyAgICAgICAgcmV0dXJuIGJ1dHRvbjsKKyAgICB9LAorICAgIAorICAgIF9jcmVh
dGVIZWFkZXJzVG9nZ2xlQnV0dG9uOiBmdW5jdGlvbihpc1Jhd0hlYWRlcnNUZXh0U2hvd24pCisg
ICAgeworICAgICAgICB2YXIgdG9nZ2xlVGl0bGUgPSBpc1Jhd0hlYWRlcnNUZXh0U2hvd24gPyBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoInZpZXcgcGFyc2VkIikgOiBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoInZpZXcgc291cmNlIik7CisgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVUb2dnbGVCdXR0
b24odG9nZ2xlVGl0bGUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9uZXR3b3JrUGFuZWwuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9uZXR3b3JrUGFuZWwuY3NzCmluZGV4IDI3MTEzNDcuLjJjZjE5OTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvbmV0d29ya1Bh
bmVsLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL25ldHdvcmtQ
YW5lbC5jc3MKQEAgLTcxNCw2ICs3MTQsMjIgQEAKICAgICBkaXNwbGF5OiBub25lOwogfQogCisu
cmVzb3VyY2UtaGVhZGVycy12aWV3IC5vdXRsaW5lLWRpc2Nsb3N1cmUgbGkgLmhlYWRlci10b2dn
bGUgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy5yZXNvdXJjZS1oZWFkZXJzLXZpZXcgLm91
dGxpbmUtZGlzY2xvc3VyZSBsaS5leHBhbmRlZCAuaGVhZGVyLXRvZ2dsZSB7CisgICAgZGlzcGxh
eTogaW5saW5lOworICAgIG1hcmdpbi1sZWZ0OiAzMHB4OworICAgIGZvbnQtd2VpZ2h0OiBub3Jt
YWw7CisgICAgY29sb3I6IHJnYig0NSUsIDQ1JSwgNDUlKTsKK30KKworLnJlc291cmNlLWhlYWRl
cnMtdmlldyAub3V0bGluZS1kaXNjbG9zdXJlIGxpIC5oZWFkZXItdG9nZ2xlOmhvdmVyIHsKKyAg
ICBjb2xvcjogcmdiKDIwJSwgMjAlLCA0NSUpOworICAgIGN1cnNvcjogcG9pbnRlcjsKK30KKwog
LnJlc291cmNlLWhlYWRlcnMtdmlldyAub3V0bGluZS1kaXNjbG9zdXJlIC5oZWFkZXItbmFtZSB7
CiAgICAgY29sb3I6IHJnYigzMyUsIDMzJSwgMzMlKTsKICAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CkBAIC03MzEsNiArNzQ3LDExIEBACiAgICAgbWFyZ2luLXRvcDogMXB4OwogfQogCisucmVz
b3VyY2UtaGVhZGVycy12aWV3IC5vdXRsaW5lLWRpc2Nsb3N1cmUgbGkucmF3LWhlYWRlcnMtdGV4
dCB7CisgICAgdGV4dC1pbmRlbnQ6IDA7CisgICAgbWFyZ2luLWxlZnQ6IC0ycHg7Cit9CisKIC5y
ZXNvdXJjZS1oZWFkZXJzLXZpZXcgLm91dGxpbmUtZGlzY2xvc3VyZSAucmF3LWZvcm0tZGF0YSB7
CiAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZEluZm8uaAppbmRleCBhMWI5NThjLi40NjZlZjc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9h
ZEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9h
ZEluZm8uaApAQCAtMzksNiArMzksOCBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbyA6IFJlZkNv
dW50ZWQ8UmVzb3VyY2VMb2FkSW5mbz4gewogICAgIFN0cmluZyBodHRwU3RhdHVzVGV4dDsKICAg
ICBIVFRQSGVhZGVyTWFwIHJlcXVlc3RIZWFkZXJzOwogICAgIEhUVFBIZWFkZXJNYXAgcmVzcG9u
c2VIZWFkZXJzOworICAgIFN0cmluZyByYXdSZXF1ZXN0SGVhZGVyc1RleHQ7CisgICAgU3RyaW5n
IHJhd1Jlc3BvbnNlSGVhZGVyc1RleHQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IGYyZjcxOTUuLmRjNDRkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTEtMDQtMTMgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogRW5hYmxlIHJhdyBIVFRQIGhlYWRlcnMgc3VwcG9ydAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgyNTkKKworICAgICAgICBB
ZGRlZCByYXcgaGVhZGVycyB0ZXh0IHN1cHBvcnQgdG8gaW5zcGVjdG9yLgorCisgICAgICAgICog
cHVibGljL1dlYkhUVFBMb2FkSW5mby5oOgorICAgICAgICAqIHNyYy9XZWJIVFRQTG9hZEluZm8u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJIVFRQTG9hZEluZm86OnJhd1JlcXVlc3RIZWFkZXJz
VGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkhUVFBMb2FkSW5mbzo6c2V0UmF3UmVxdWVzdEhl
YWRlcnNUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSFRUUExvYWRJbmZvOjpyYXdSZXNwb25z
ZUhlYWRlcnNUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSFRUUExvYWRJbmZvOjpzZXRSYXdS
ZXNwb25zZUhlYWRlcnNUZXh0KToKKwogMjAxMS0wNC0xNCAgQmlsbCBCdWRnZSAgPGJidWRnZUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRUUExvYWRJbmZvLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJIVFRQTG9hZEluZm8uaAppbmRleCA5ZmY5
MTUzLi4xMzhjMzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJIVFRQTG9hZEluZm8uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJI
VFRQTG9hZEluZm8uaApAQCAtNjUsNiArNjUsMTIgQEAgcHVibGljOgogICAgIFdFQktJVF9BUEkg
dm9pZCBhZGRSZXF1ZXN0SGVhZGVyKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3Ry
aW5nJiB2YWx1ZSk7CiAgICAgV0VCS0lUX0FQSSB2b2lkIGFkZFJlc3BvbnNlSGVhZGVyKGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSk7CiAKKyAgICBXRUJLSVRf
QVBJIFdlYlN0cmluZyByYXdSZXF1ZXN0SGVhZGVyc1RleHQoKSBjb25zdDsKKyAgICBXRUJLSVRf
QVBJIHZvaWQgc2V0UmF3UmVxdWVzdEhlYWRlcnNUZXh0KGNvbnN0IFdlYlN0cmluZyYpOworCisg
ICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgcmF3UmVzcG9uc2VIZWFkZXJzVGV4dCgpIGNvbnN0Owor
ICAgIFdFQktJVF9BUEkgdm9pZCBzZXRSYXdSZXNwb25zZUhlYWRlcnNUZXh0KGNvbnN0IFdlYlN0
cmluZyYpOworCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2ViSFRUUExvYWRJbmZv
KFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRJbmZvPik7CiAgICAgb3BlcmF0
b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZEluZm8+KCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJIVFRQTG9hZEluZm8uY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSFRUUExvYWRJbmZvLmNwcAppbmRleCA4
NzZhNDg5Li5iYjk0ZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJIVFRQTG9hZEluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkhU
VFBMb2FkSW5mby5jcHAKQEAgLTEwOCw0ICsxMDgsMjggQEAgdm9pZCBXZWJIVFRQTG9hZEluZm86
OmFkZFJlc3BvbnNlSGVhZGVyKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5n
JgogICAgIGFkZEhlYWRlcigmbV9wcml2YXRlLT5yZXNwb25zZUhlYWRlcnMsIG5hbWUsIHZhbHVl
KTsKIH0KIAorV2ViU3RyaW5nIFdlYkhUVFBMb2FkSW5mbzo6cmF3UmVxdWVzdEhlYWRlcnNUZXh0
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1fcHJpdmF0ZS5pc051bGwoKSk7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+cmF3UmVxdWVzdEhlYWRlcnNUZXh0OworfQorCit2b2lkIFdlYkhUVFBMb2Fk
SW5mbzo6c2V0UmF3UmVxdWVzdEhlYWRlcnNUZXh0KGNvbnN0IFdlYlN0cmluZyYgcmF3SGVhZGVy
c1RleHQpCit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOworICAgIG1fcHJpdmF0
ZS0+cmF3UmVxdWVzdEhlYWRlcnNUZXh0ID0gcmF3SGVhZGVyc1RleHQ7Cit9CisKK1dlYlN0cmlu
ZyBXZWJIVFRQTG9hZEluZm86OnJhd1Jlc3BvbnNlSGVhZGVyc1RleHQoKSBjb25zdAoreworICAg
IEFTU0VSVCghbV9wcml2YXRlLmlzTnVsbCgpKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5yYXdS
ZXNwb25zZUhlYWRlcnNUZXh0OworfQorCit2b2lkIFdlYkhUVFBMb2FkSW5mbzo6c2V0UmF3UmVz
cG9uc2VIZWFkZXJzVGV4dChjb25zdCBXZWJTdHJpbmcmIHJhd0hlYWRlcnNUZXh0KQoreworICAg
IEFTU0VSVCghbV9wcml2YXRlLmlzTnVsbCgpKTsKKyAgICBtX3ByaXZhdGUtPnJhd1Jlc3BvbnNl
SGVhZGVyc1RleHQgPSByYXdIZWFkZXJzVGV4dDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>