<?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>153004</bug_id>
          
          <creation_ts>2016-01-11 21:27:08 -0800</creation_ts>
          <short_desc>Web Inspector: Add support for the existing GradientEditor in the CSS Rules sidebar</short_desc>
          <delta_ts>2016-01-14 12:25:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1154620</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2016-01-11 21:27:08 -0800</bug_when>
    <thetext>Gradients are supported in the Visual sidebar and on Resource views, but not in the Rules sidebar.  This should be added there seeing as it is where most users will interact with gradients.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154641</commentid>
    <comment_count>1</comment_count>
      <attachid>268749</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2016-01-12 00:35:35 -0800</bug_when>
    <thetext>Created attachment 268749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154769</commentid>
    <comment_count>2</comment_count>
      <attachid>268749</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-01-12 10:58:53 -0800</bug_when>
    <thetext>Comment on attachment 268749
Patch

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

Looking pretty good overall (with some naming suggestions). I would like a second look from Joe, Tim, or Matt.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:877
&gt; +            let swatch = new WebInspector.ColorSwatch(color, this._codeMirror.getOption(&quot;readOnly&quot;));

(Applies throughout) The code quickly gets confusing because a &quot;color&quot; could actually be a gradient, and clicking the swatch could show different things. What about renaming it to WebInspector.InlineSwatch(value, readonly)? Then value could be a color or gradient.

&gt; Source/WebInspectorUI/UserInterface/Views/CodeMirrorTextMarkers.js:95
&gt; +        let closedParenthesis = 0;

It would be easier to make sense of this code if it tracked the count of unmatched opening parenthesis. Maybe a comment above the if (closedParenthesis &lt; 0) would make its purpose more obvious.

&gt; Source/WebInspectorUI/UserInterface/Views/ColorSwatch.js:29
&gt; +    constructor(color, readOnly, isGradient)

:( I think it would be better to take a &apos;value&apos; into this._value and make isGradient a getter that does an instanceof test. The parameter is redundant.

&gt; Source/WebInspectorUI/UserInterface/Views/ColorSwatch.js:39
&gt; +            this._swatchElement.title = WebInspector.UIString(&quot;Click to select a gradient&quot;);

Nit: needs trailing period to match other tooltip.

&gt; Source/WebInspectorUI/UserInterface/Views/ColorSwatch.js:66
&gt; +        this._color = this._addFallbackValueIfNeeded(color);

Try this:

this._value = value || this._fallbackValue()

&gt; Source/WebInspectorUI/UserInterface/Views/ColorSwatch.js:117
&gt; +        colorPicker[this._isGradient ? &quot;gradient&quot; : &quot;color&quot;] = this._color;

Nit: we generally tend to avoid computed properties with ternary expression, as it&apos;s harder to read (and grep).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155017</commentid>
    <comment_count>3</comment_count>
      <attachid>268851</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2016-01-12 20:07:15 -0800</bug_when>
    <thetext>Created attachment 268851
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155103</commentid>
    <comment_count>4</comment_count>
      <attachid>268851</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-01-13 09:57:15 -0800</bug_when>
    <thetext>Comment on attachment 268851
Patch

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

Awesome clean up!

&gt; Source/WebInspectorUI/UserInterface/Views/InlineSwatch.js:43
&gt; +        else
&gt; +            this._swatchElement.title = WebInspector.UIString(&quot;Click to select a color. Shift-click to switch color formats.&quot;);

assert Type.Color</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155104</commentid>
    <comment_count>5</comment_count>
      <attachid>268851</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-01-13 09:57:54 -0800</bug_when>
    <thetext>Comment on attachment 268851
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/InlineSwatch.js:43
&gt;&gt; +            this._swatchElement.title = WebInspector.UIString(&quot;Click to select a color. Shift-click to switch color formats.&quot;);
&gt; 
&gt; assert Type.Color

Could use a switch here and assert for the default case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155162</commentid>
    <comment_count>6</comment_count>
      <attachid>268851</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2016-01-13 12:13:12 -0800</bug_when>
    <thetext>Comment on attachment 268851
Patch

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/InlineSwatch.js:43
&gt;&gt;&gt; +            this._swatchElement.title = WebInspector.UIString(&quot;Click to select a color. Shift-click to switch color formats.&quot;);
&gt;&gt; 
&gt;&gt; assert Type.Color
&gt; 
&gt; Could use a switch here and assert for the default case.

I made the change, but I am just wondering if there is a good indicator of when to use a switch instead of an if?  I know that there is some performance improvements on semi-large (3 to 10 options) possibility sets, but I wasn&apos;t sure how it effected JS.  Is there a rule-of-thumb that WebInspector uses?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155163</commentid>
    <comment_count>7</comment_count>
      <attachid>268887</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2016-01-13 12:14:41 -0800</bug_when>
    <thetext>Created attachment 268887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155175</commentid>
    <comment_count>8</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-01-13 12:36:05 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 268851 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=268851&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/InlineSwatch.js:43
&gt; &gt;&gt;&gt; +            this._swatchElement.title = WebInspector.UIString(&quot;Click to select a color. Shift-click to switch color formats.&quot;);
&gt; &gt;&gt; 
&gt; &gt;&gt; assert Type.Color
&gt; &gt; 
&gt; &gt; Could use a switch here and assert for the default case.
&gt; 
&gt; I made the change, but I am just wondering if there is a good indicator of
&gt; when to use a switch instead of an if?  I know that there is some
&gt; performance improvements on semi-large (3 to 10 options) possibility sets,
&gt; but I wasn&apos;t sure how it effected JS.  Is there a rule-of-thumb that
&gt; WebInspector uses?

It&apos;s mostly about readability and whether the switch will catch new unhandled values in the future. Don&apos;t worry about the performance impact, it&apos;s probably negligible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155197</commentid>
    <comment_count>9</comment_count>
      <attachid>268887</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-13 13:14:59 -0800</bug_when>
    <thetext>Comment on attachment 268887
Patch

Clearing flags on attachment: 268887

Committed r194977: &lt;http://trac.webkit.org/changeset/194977&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155198</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-13 13:15:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155524</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-01-14 12:25:52 -0800</bug_when>
    <thetext>&lt;rdar://problem/24192983&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268749</attachid>
            <date>2016-01-12 00:35:35 -0800</date>
            <delta_ts>2016-01-12 20:07:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153004-20160112003504.patch</filename>
            <type>text/plain</type>
            <size>30623</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDQ1NjU1YTI0YTA1ZWI0ZTZlYWM5N2E0MGU3NTNi
ZjFjMWI5ZTcwNzcuLjllMzQyZDJkNTY3Y2ZhNTMwMTI4MDRjZWM5ZWQ1N2U1MWFiZjk5ZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDE2LTAxLTEyICBEZXZp
biBSb3Vzc28gIDxkY3JvdXNzbyt3ZWJraXRAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IEFkZCBzdXBwb3J0IGZvciB0aGUgZXhpc3RpbmcgR3JhZGllbnRFZGl0b3IgaW4gdGhl
IENTUyBSdWxlcyBzaWRlYmFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTMwMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBCb3RoIHRoZSBWaXN1YWwgc2lkZWJhciBhbmQgUmVzb3VyY2UgdmlldyBoYXZl
IGVkaXRvcnMgZm9yIENTUyBncmFkaWVudAorICAgICAgICB2YWx1ZXMsIGJ1dCB0aGUgUnVsZXMg
c2lkZWJhciBpbnN0ZWFkIG9ubHkgYWRkcyBlZGl0b3JzIGZvciBiYXNpYyBjb2xvcgorICAgICAg
ICB2YWx1ZXMuIEluc3RlYWQgb2YgZHVwbGljYXRpbmcgdGhlIGNvZGUgZm9yIGdyYWRpZW50IHN3
YXRjaGVzLCBleGlzdGluZworICAgICAgICBjb2RlIHdpbGwgYmUgdXNlZCB0byBnaXZlIHRoaXMg
c2FtZSBmdW5jdGlvbmFsaXR5IHRvIHRoZSBSdWxlcyBzaWRlYmFyLgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9Nb2RlbHMvR3JhZGllbnQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuR3Jh
ZGllbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkdyYWRpZW50LmZyb21TdHJpbmcpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkdyYWRpZW50LnN0b3BzV2l0aENvbXBvbmVudHMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkdyYWRpZW50LnByb3RvdHlwZS5jb3B5KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5HcmFkaWVudC5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICBSZWZhY3RvcmVk
IFdlYkluc3BlY3Rvci5HcmFkaWVudCBpbnRvIGl0cyBvd24gY2xhc3MuCisKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5MaW5lYXJHcmFkaWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTGluZWFy
R3JhZGllbnQucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgTm93IHVzZXMgV2ViSW5zcGVj
dG9yLkdyYWRpZW50IGluaGVyaXRhbmNlIGFuZCBtZXRob2RzLgorCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUmFkaWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJhZGlhbEdyYWRp
ZW50LnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIE5vdyB1c2VzIFdlYkluc3BlY3Rvci5H
cmFkaWVudCBpbmhlcml0YW5jZSBhbmQgbWV0aG9kcy4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLl9jcmVhdGVD
b2xvclN3YXRjaGVzLmNyZWF0ZVN3YXRjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVEZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLl9jcmVhdGVDb2xvclN3YXRjaGVzLnVw
ZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0
b3IucHJvdG90eXBlLl9jcmVhdGVDb2xvclN3YXRjaGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuX2NvbG9yU3dhdGNoQ29s
b3JDaGFuZ2VkLnVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJh
dGlvblRleHRFZGl0b3IucHJvdG90eXBlLl9jb2xvclN3YXRjaENvbG9yQ2hhbmdlZCk6CisgICAg
ICAgIFJlbmFtZWQgdmFyaWFibGVzIGZvciBtb3JlIGNvbnNpc3RlbnQgbmFtaW5nIGFuZCBhbGxv
d2VkIHRoZSBjb2xvciBvYmplY3QKKyAgICAgICAgdG8gYmUgZWl0aGVyIGEgQ29sb3Igb3IgR3Jh
ZGllbnQsIHNpbmNlIHRoZXkgYm90aCBoYXZlIHNpbWlsYXIgbWV0aG9kcyBhbmQKKyAgICAgICAg
ZnVuY3Rpb25zLgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRl
eHRFZGl0b3IucHJvdG90eXBlLmRpZERpc21pc3NQb3BvdmVyKTogRGVsZXRlZC4KKyAgICAgICAg
UmVtb3ZlZCB1bnVzZWQgcG9wb3ZlciBtZW1iZXIgdmFyaWFibGUuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JUZXh0TWFya2Vycy5qczoKKyAgICAgICAgKGNyZWF0
ZUNvZGVNaXJyb3JDb2xvclRleHRNYXJrZXJzLm1hdGNoRnVuY3Rpb24pOgorICAgICAgICBBZGRl
ZCBsb2dpYyBzbyB0aGF0IGlmIHRoZSBtYXRjaGVkIGNvbG9yIHN0cmluZyBpcyBmb3VuZCBpbnNp
ZGUgYSBncmFkaWVudCwKKyAgICAgICAgaXQgd2lsbCBub3QgaGF2ZSBhIG1hcmtlciBjcmVhdGVk
IGZvciBpdC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29sb3JTd2F0Y2guY3Nz
OgorICAgICAgICAoLmNvbG9yLXN3YXRjaCA+IHNwYW4pOgorICAgICAgICBFbnN1cmVkIHRoYXQg
dGhlIGlubmVyIHN3YXRjaCBlbGVtZW50IGNhbiBub3QgYmUgc2VsZWN0ZWQgc28gdGhhdCB0aGUg
ImNsaWNrIgorICAgICAgICBsaXN0ZW5lciBvbiBpdHMgcGFyZW50IGFsd2F5cyBmaXJlcy4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29sb3JTd2F0Y2guanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ29sb3JTd2F0Y2gpOgorICAgICAgICBBZGRlZCBhbm90aGVyIHBhcmFtdGVy
IHRvIHNwZWNpZnkgaWYgdGhlIENvbG9yU3dhdGNoIGlzIGZvciBhIGdyYWRpZW50CisgICAgICAg
IGNvbG9yIGluc3RlYWQgb2YgYSBiYXNpYyBjb2xvciAoYWxzbyBpbnRlcnByZXRlZCBmcm9tIHRo
ZSBmaXJzdCBvYmplY3QKKyAgICAgICAgaWYgaXQgaXMgYW4gaW5zdGFuY2Ugb2YgV2ViSW5zcGVj
dG9yLkdyYWRpZW50KS4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbG9yU3dhdGNoLnByb3Rv
dHlwZS5zZXQgY29sb3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbG9yU3dhdGNoLnByb3Rv
dHlwZS5fYWRkRmFsbGJhY2tWYWx1ZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b2xvclN3YXRjaC5wcm90b3R5cGUuX2NvbG9yU3dhdGNoQ2xpY2tlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29sb3JTd2F0Y2gucHJvdG90eXBlLl9jb2xvclBpY2tlckNvbG9yRGlkQ2hhbmdl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2xvclN3YXRjaC5wcm90b3R5cGUuX3VwZGF0ZVN3
YXRjaCk6CisgICAgICAgIEFkZGVkIGxvZ2ljIHRvIGFsbG93IHRoZSBDb2xvclN3YXRjaCB0byBz
ZXJ2ZSBncmFkaWVudCB2YWx1ZXMgaW4gYWRkaXRpb24KKyAgICAgICAgdG8gYmFzaWMgY29sb3Jz
IHNpbmNlIHRoZXkgYXJlIGZ1bmN0aW9uYWxseSBzbyBzaW1pbGFyLgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIuY3NzOgorICAgICAg
ICBSZW5hbWVkIGFsbCBpbnN0YW5jZXMgb2YgIi5jb2xvci1ncmFkaWVudC1zd2F0Y2giIHRvICIu
Y29sb3Itc3dhdGNoIiB0byBtYXRjaAorICAgICAgICB0aGUgY2xhc3Mgb2YgQ29sb3JTd2F0Y2gn
cyBlbGVtZW50LgorCisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5i
YWNrZ3JvdW5kLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVy
ID4gLmNvbG9yLXN3YXRjaCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRh
aW5lci5iYWNrZ3JvdW5kLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29u
dGFpbmVyOm5vdCguZ3JhZGllbnQtdmFsdWUpID4gLmNvbG9yLXN3YXRjaCk6CisgICAgICAgICgu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5kLXBpY2tlciA+IC52aXN1
YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmNvbG9yLXN3YXRjaDpob3Zlcik6
CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5kLXBp
Y2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmNvbG9yLXN3
YXRjaDphY3RpdmUpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIu
YmFja2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5l
ciA+IC5jb2xvci1zd2F0Y2ggPiBzcGFuKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVy
dHktY29udGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12
YWx1ZS1jb250YWluZXIuZ3JhZGllbnQtdmFsdWUgPiAuY29sb3Itc3dhdGNoICsgLnZhbHVlLWlu
cHV0KToKKyAgICAgICAgCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHls
ZUJhY2tncm91bmRQaWNrZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVC
YWNrZ3JvdW5kUGlja2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUJhY2tn
cm91bmRQaWNrZXIucHJvdG90eXBlLnNldCB2YWx1ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLnByb3RvdHlwZS5fdXBkYXRlR3JhZGllbnQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlci5wcm90b3R5
cGUuX2dyYWRpZW50U3dhdGNoQ29sb3JDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIucHJvdG90eXBlLl92YWx1ZUlucHV0VmFsdWVDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIu
cHJvdG90eXBlLl9oYW5kbGVLZXl3b3JkQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLnByb3RvdHlwZS5fdXBkYXRlR3JhZGllbnRTd2F0
Y2gpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQmFja2dyb3Vu
ZFBpY2tlci5wcm90b3R5cGUuX2dyYWRpZW50U3dhdGNoQ2xpY2tlZC5oYW5kbGVDb2xvclBpY2tl
clRvZ2dsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQmFj
a2dyb3VuZFBpY2tlci5wcm90b3R5cGUuX2dyYWRpZW50U3dhdGNoQ2xpY2tlZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLnByb3Rv
dHlwZS5fZ3JhZGllbnRFZGl0b3JHcmFkaWVudENoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICBS
ZW1vdmVkIHRoZSBzcGVjaWZpYyBjb2RlIGZvciB0aGUgZ3JhZGllbnQgc3dhdGNoIGFuZCBtb3Zl
ZCB0byB1c2luZyBhCisgICAgICAgIENvbG9yU3dhdGNoIGZvciBncmFkaWVudCB2YWx1ZXMgaW5z
dGVhZC4KKwogMjAxNi0wMS0xMSAgRGV2aW4gUm91c3NvICA8ZGNyb3Vzc28rd2Via2l0QGdtYWls
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBTdG9yYWdlIHRhYiBuYXZpZ2F0aW9uIGJh
ciBzaG91bGQgZml0IG9uIGEgc2luZ2xlIGxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9HcmFkaWVudC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9HcmFkaWVudC5qcwppbmRleCBhMDk0ZjNiMTBj
M2RkNDhmZTFiY2UzNDI4YzExOWM2NWY2YjhhYzg3Li5hZTIzY2I1NzgxYjc1YzgzNWM4ZDZhMmZj
ZjkwMTU1ZTM1OTYzNGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvR3JhZGllbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0dyYWRpZW50LmpzCkBAIC0yMywxNCArMjMsMTcgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBGSVhNRTogQ29udmVydCB0
byBjbGFzcz8KLVdlYkluc3BlY3Rvci5HcmFkaWVudCA9IHsKLSAgICBUeXBlczogewotICAgICAg
ICBMaW5lYXI6ICJsaW5lYXItZ3JhZGllbnQiLAotICAgICAgICBSYWRpYWw6ICJyYWRpYWwtZ3Jh
ZGllbnQiCi0gICAgfSwKLQotICAgIGZyb21TdHJpbmcoY3NzU3RyaW5nKQorV2ViSW5zcGVjdG9y
LkdyYWRpZW50ID0gY2xhc3MgR3JhZGllbnQKK3sKKyAgICBjb25zdHJ1Y3Rvcih0eXBlLCBzdG9w
cykKKyAgICB7CisgICAgICAgIHRoaXMudHlwZSA9IHR5cGU7CisgICAgICAgIHRoaXMuc3RvcHMg
PSBzdG9wczsKKyAgICB9CisKKyAgICAvLyBTdGF0aWMKKworICAgIHN0YXRpYyBmcm9tU3RyaW5n
KGNzc1N0cmluZykKICAgICB7CiAgICAgICAgIHZhciB0eXBlOwogICAgICAgICB2YXIgb3Blbmlu
Z1BhcmVudGhlc2lzSW5kZXggPSBjc3NTdHJpbmcuaW5kZXhPZigiKCIpOwpAQCAtODQsMTcgKzg3
LDE3IEBAIFdlYkluc3BlY3Rvci5HcmFkaWVudCA9IHsKIAogICAgICAgICB2YXIgZ3JhZGllbnQ7
CiAgICAgICAgIGlmICh0eXBlID09PSBXZWJJbnNwZWN0b3IuR3JhZGllbnQuVHlwZXMuTGluZWFy
KQotICAgICAgICAgICAgZ3JhZGllbnQgPSBXZWJJbnNwZWN0b3IuTGluZWFyR3JhZGllbnQubGlu
ZWFyR3JhZGllbnRXaXRoQ29tcG9uZW50cyhjb21wb25lbnRzKTsKKyAgICAgICAgICAgIGdyYWRp
ZW50ID0gV2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50LmZyb21Db21wb25lbnRzKGNvbXBvbmVu
dHMpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBncmFkaWVudCA9IFdlYkluc3BlY3Rvci5S
YWRpYWxHcmFkaWVudC5yYWRpYWxHcmFkaWVudFdpdGhDb21wb25lbnRzKGNvbXBvbmVudHMpOwor
ICAgICAgICAgICAgZ3JhZGllbnQgPSBXZWJJbnNwZWN0b3IuUmFkaWFsR3JhZGllbnQuZnJvbUNv
bXBvbmVudHMoY29tcG9uZW50cyk7CiAKICAgICAgICAgaWYgKGdyYWRpZW50KQogICAgICAgICAg
ICAgZ3JhZGllbnQucmVwZWF0cyA9IHR5cGVTdHJpbmcuc3RhcnRzV2l0aCgicmVwZWF0aW5nIik7
CiAKICAgICAgICAgcmV0dXJuIGdyYWRpZW50OwotICAgIH0sCisgICAgfQogCi0gICAgc3RvcHNX
aXRoQ29tcG9uZW50cyhjb21wb25lbnRzKQorICAgIHN0YXRpYyBzdG9wc1dpdGhDb21wb25lbnRz
KGNvbXBvbmVudHMpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogaGFuZGxlIGxlbmd0aHMuCiAg
ICAgICAgIHZhciBzdG9wcyA9IGNvbXBvbmVudHMubWFwKGZ1bmN0aW9uKGNvbXBvbmVudCkgewpA
QCAtMTI2LDcgKzEyOSw5IEBAIFdlYkluc3BlY3Rvci5HcmFkaWVudCA9IHsKICAgICAgICAgfQog
CiAgICAgICAgIHJldHVybiBzdG9wczsKLSAgICB9LAorICAgIH0KKworICAgIC8vIFB1YmxpYwog
CiAgICAgc3RyaW5nRnJvbVN0b3BzKHN0b3BzKQogICAgIHsKQEAgLTEzOCwyMCArMTQzLDM2IEBA
IFdlYkluc3BlY3Rvci5HcmFkaWVudCA9IHsKICAgICAgICAgICAgIHJldHVybiBzdHI7CiAgICAg
ICAgIH0pLmpvaW4oIiwgIik7CiAgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBjb3B5KCkK
KyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCisgICAgfQorCisg
ICAgdG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nl
cy4KKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuR3JhZGllbnQuVHlwZXMgPSB7CisgICAgTGlu
ZWFyOiAibGluZWFyLWdyYWRpZW50IiwKKyAgICBSYWRpYWw6ICJyYWRpYWwtZ3JhZGllbnQiCiB9
OwogCi1XZWJJbnNwZWN0b3IuTGluZWFyR3JhZGllbnQgPSBjbGFzcyBMaW5lYXJHcmFkaWVudAor
V2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50ID0gY2xhc3MgTGluZWFyR3JhZGllbnQgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuR3JhZGllbnQKIHsKICAgICBjb25zdHJ1Y3RvcihhbmdsZSwgc3RvcHMp
CiAgICAgewotICAgICAgICB0aGlzLnR5cGUgPSBXZWJJbnNwZWN0b3IuR3JhZGllbnQuVHlwZXMu
TGluZWFyOworICAgICAgICBzdXBlcihXZWJJbnNwZWN0b3IuR3JhZGllbnQuVHlwZXMuTGluZWFy
LCBzdG9wcyk7CiAgICAgICAgIHRoaXMuYW5nbGUgPSBhbmdsZTsKLSAgICAgICAgdGhpcy5zdG9w
cyA9IHN0b3BzOwogICAgIH0KIAogICAgIC8vIFN0YXRpYwogCi0gICAgc3RhdGljIGxpbmVhckdy
YWRpZW50V2l0aENvbXBvbmVudHMoY29tcG9uZW50cykKKyAgICBzdGF0aWMgZnJvbUNvbXBvbmVu
dHMoY29tcG9uZW50cykKICAgICB7CiAgICAgICAgIHZhciBhbmdsZSA9IDE4MDsKIApAQCAtMjMz
LDI0ICsyNTQsMjMgQEAgV2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50ID0gY2xhc3MgTGluZWFy
R3JhZGllbnQKICAgICAgICAgaWYgKHN0ciAhPT0gIiIpCiAgICAgICAgICAgICBzdHIgKz0gIiwg
IjsKIAotICAgICAgICBzdHIgKz0gV2ViSW5zcGVjdG9yLkdyYWRpZW50LnN0cmluZ0Zyb21TdG9w
cyh0aGlzLnN0b3BzKTsKKyAgICAgICAgc3RyICs9IHRoaXMuc3RyaW5nRnJvbVN0b3BzKHRoaXMu
c3RvcHMpOwogCiAgICAgICAgIHJldHVybiAodGhpcy5yZXBlYXRzID8gInJlcGVhdGluZy0iIDog
IiIpICsgdGhpcy50eXBlICsgIigiICsgc3RyICsgIikiOwogICAgIH0KIH07CiAKLVdlYkluc3Bl
Y3Rvci5SYWRpYWxHcmFkaWVudCA9IGNsYXNzIFJhZGlhbEdyYWRpZW50CitXZWJJbnNwZWN0b3Iu
UmFkaWFsR3JhZGllbnQgPSBjbGFzcyBSYWRpYWxHcmFkaWVudCBleHRlbmRzIFdlYkluc3BlY3Rv
ci5HcmFkaWVudAogewogICAgIGNvbnN0cnVjdG9yKHNpemluZywgc3RvcHMpCiAgICAgewotICAg
ICAgICB0aGlzLnR5cGUgPSBXZWJJbnNwZWN0b3IuR3JhZGllbnQuVHlwZXMuUmFkaWFsOworICAg
ICAgICBzdXBlcihXZWJJbnNwZWN0b3IuR3JhZGllbnQuVHlwZXMuUmFkaWFsLCBzdG9wcyk7CiAg
ICAgICAgIHRoaXMuc2l6aW5nID0gc2l6aW5nOwotICAgICAgICB0aGlzLnN0b3BzID0gc3RvcHM7
CiAgICAgfQogCiAgICAgLy8gU3RhdGljCiAKLSAgICBzdGF0aWMgcmFkaWFsR3JhZGllbnRXaXRo
Q29tcG9uZW50cyhjb21wb25lbnRzKQorICAgIHN0YXRpYyBmcm9tQ29tcG9uZW50cyhjb21wb25l
bnRzKQogICAgIHsKICAgICAgICAgdmFyIHNpemluZyA9ICFXZWJJbnNwZWN0b3IuQ29sb3IuZnJv
bVN0cmluZyhjb21wb25lbnRzWzBdLmpvaW4oIiAiKSkgPyBjb21wb25lbnRzLnNoaWZ0KCkuam9p
bigiICIpIDogIiI7CiAKQEAgLTI3NSw3ICsyOTUsNyBAQCBXZWJJbnNwZWN0b3IuUmFkaWFsR3Jh
ZGllbnQgPSBjbGFzcyBSYWRpYWxHcmFkaWVudAogICAgICAgICBpZiAoc3RyICE9PSAiIikKICAg
ICAgICAgICAgIHN0ciArPSAiLCAiOwogCi0gICAgICAgIHN0ciArPSBXZWJJbnNwZWN0b3IuR3Jh
ZGllbnQuc3RyaW5nRnJvbVN0b3BzKHRoaXMuc3RvcHMpOworICAgICAgICBzdHIgKz0gdGhpcy5z
dHJpbmdGcm9tU3RvcHModGhpcy5zdG9wcyk7CiAKICAgICAgICAgcmV0dXJuICh0aGlzLnJlcGVh
dHMgPyAicmVwZWF0aW5nLSIgOiAiIikgKyB0aGlzLnR5cGUgKyAiKCIgKyBzdHIgKyAiKSI7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcwpp
bmRleCBlOGU5Njc1YjNlNTllNjRlZWJmYTEyNGE5NzhjZWM2ZmNjYTNjMGI1Li41Y2I3Njk2MGVj
MTRkNjBiMWU5MjE5MDhhOTM3MmJmN2EyZTdkYmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRv
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NT
dHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcwpAQCAtMzg4LDggKzM4OCw2IEBAIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFy
YXRpb25UZXh0RWRpdG9yCiAKICAgICBkaWREaXNtaXNzUG9wb3Zlcihwb3BvdmVyKQogICAgIHsK
LSAgICAgICAgaWYgKHBvcG92ZXIgPT09IHRoaXMuX2NvbG9yUGlja2VyUG9wb3ZlcikKLSAgICAg
ICAgICAgIHRoaXMuX2NvbG9yUGlja2VyUG9wb3ZlciA9IG51bGw7CiAgICAgICAgIGlmIChwb3Bv
dmVyID09PSB0aGlzLl9jdWJpY0JlemllckVkaXRvclBvcG92ZXIpCiAgICAgICAgICAgICB0aGlz
Ll9jdWJpY0JlemllckVkaXRvclBvcG92ZXIgPSBudWxsOwogICAgIH0KQEAgLTg3NCwyMiArODcy
LDI4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvciA9IGNsYXNz
IENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yCiAKICAgICBfY3JlYXRlQ29sb3JTd2F0Y2hl
cyhub25hdG9taWMsIGxpbmVOdW1iZXIpCiAgICAgeworICAgICAgICBmdW5jdGlvbiBjcmVhdGVT
d2F0Y2gobWFya2VyLCBjb2xvciwgY29sb3JTdHJpbmcpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGxldCBzd2F0Y2ggPSBuZXcgV2ViSW5zcGVjdG9yLkNvbG9yU3dhdGNoKGNvbG9yLCB0aGlzLl9j
b2RlTWlycm9yLmdldE9wdGlvbigicmVhZE9ubHkiKSk7CisgICAgICAgICAgICBzd2F0Y2guYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29sb3JTd2F0Y2guRXZlbnQuQ29sb3JDaGFuZ2Vk
LCB0aGlzLl9jb2xvclN3YXRjaENvbG9yQ2hhbmdlZCwgdGhpcyk7CisKKyAgICAgICAgICAgIGxl
dCBjb2RlTWlycm9yVGV4dE1hcmtlciA9IG1hcmtlci5jb2RlTWlycm9yVGV4dE1hcmtlcjsKKyAg
ICAgICAgICAgIGxldCBjb2RlTWlycm9yVGV4dE1hcmtlclJhbmdlID0gY29kZU1pcnJvclRleHRN
YXJrZXIuZmluZCgpOworICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5zZXRVbmlxdWVCb29r
bWFyayhjb2RlTWlycm9yVGV4dE1hcmtlclJhbmdlLmZyb20sIHN3YXRjaC5lbGVtZW50KTsKKwor
ICAgICAgICAgICAgc3dhdGNoLl9fdGV4dE1hcmtlciA9IGNvZGVNaXJyb3JUZXh0TWFya2VyOwor
ICAgICAgICAgICAgc3dhdGNoLl9fdGV4dE1hcmtlclJhbmdlID0gY29kZU1pcnJvclRleHRNYXJr
ZXJSYW5nZTsKKyAgICAgICAgfQorCiAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZSgpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGxldCByYW5nZSA9IHR5cGVvZiBsaW5lTnVtYmVyID09PSAibnVtYmVy
IiA/IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKGxpbmVOdW1iZXIsIDAsIGxpbmVOdW1iZXIg
KyAxLCAwKSA6IG51bGw7CiAKICAgICAgICAgICAgIC8vIExvb2sgZm9yIGNvbG9yIHN0cmluZ3Mg
YW5kIGFkZCBzd2F0Y2hlcyBpbiBmcm9udCBvZiB0aGVtLgotICAgICAgICAgICAgY3JlYXRlQ29k
ZU1pcnJvckNvbG9yVGV4dE1hcmtlcnModGhpcy5fY29kZU1pcnJvciwgcmFuZ2UsIGZ1bmN0aW9u
KG1hcmtlciwgY29sb3IsIGNvbG9yU3RyaW5nKSB7Ci0gICAgICAgICAgICAgICAgbGV0IHN3YXRj
aCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29sb3JTd2F0Y2goY29sb3IsIHRoaXMuX2NvZGVNaXJyb3Iu
Z2V0T3B0aW9uKCJyZWFkT25seSIpKTsKLSAgICAgICAgICAgICAgICBzd2F0Y2guYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29sb3JTd2F0Y2guRXZlbnQuQ29sb3JDaGFuZ2VkLCB0aGlz
Ll9jb2xvclN3YXRjaENvbG9yQ2hhbmdlZCwgdGhpcyk7Ci0KLSAgICAgICAgICAgICAgICBsZXQg
Y29kZU1pcnJvclRleHRNYXJrZXIgPSBtYXJrZXIuY29kZU1pcnJvclRleHRNYXJrZXI7Ci0gICAg
ICAgICAgICAgICAgbGV0IGNvZGVNaXJyb3JUZXh0TWFya2VyUmFuZ2UgPSBjb2RlTWlycm9yVGV4
dE1hcmtlci5maW5kKCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5zZXRVbmlx
dWVCb29rbWFyayhjb2RlTWlycm9yVGV4dE1hcmtlclJhbmdlLmZyb20sIHN3YXRjaC5lbGVtZW50
KTsKKyAgICAgICAgICAgIGNyZWF0ZUNvZGVNaXJyb3JDb2xvclRleHRNYXJrZXJzKHRoaXMuX2Nv
ZGVNaXJyb3IsIHJhbmdlLCBjcmVhdGVTd2F0Y2guYmluZCh0aGlzKSk7CiAKLSAgICAgICAgICAg
ICAgICBzd2F0Y2guX19jb2xvclRleHRNYXJrZXIgPSBjb2RlTWlycm9yVGV4dE1hcmtlcjsKLSAg
ICAgICAgICAgICAgICBzd2F0Y2guX19jb2xvclRleHRNYXJrZXJSYW5nZSA9IGNvZGVNaXJyb3JU
ZXh0TWFya2VyUmFuZ2U7Ci0gICAgICAgICAgICB9LmJpbmQodGhpcykpOworICAgICAgICAgICAg
Ly8gTG9vayBmb3IgZ3JhZGllbnQgc3RyaW5ncyBhbmQgYWRkIHN3YXRjaGVzIGluIGZyb250IG9m
IHRoZW0uCisgICAgICAgICAgICBjcmVhdGVDb2RlTWlycm9yR3JhZGllbnRUZXh0TWFya2Vycyh0
aGlzLl9jb2RlTWlycm9yLCByYW5nZSwgY3JlYXRlU3dhdGNoLmJpbmQodGhpcykpOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKG5vbmF0b21pYykKQEAgLTEzMjYsMTMgKzEzMzAsMTQgQEAgV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yID0gY2xhc3MgQ1NTU3R5bGVE
ZWNsYXJhdGlvblRleHRFZGl0b3IKICAgICAgICAgaWYgKCFzd2F0Y2gpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgbGV0IGNvbG9yU3RyaW5nID0gZXZlbnQgJiYgZXZlbnQuZGF0YSAm
JiBldmVudC5kYXRhLmNvbG9yICYmIGV2ZW50LmRhdGEuY29sb3IudG9TdHJpbmcoKTsKKyAgICAg
ICAgbGV0IGNvbG9yT2JqZWN0ID0gZXZlbnQuZGF0YSAmJiAoZXZlbnQuZGF0YS5jb2xvciB8fCBl
dmVudC5kYXRhLmdyYWRpZW50KTsKKyAgICAgICAgbGV0IGNvbG9yU3RyaW5nID0gY29sb3JPYmpl
Y3QgJiYgY29sb3JPYmplY3QudG9TdHJpbmcoKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY29s
b3JTdHJpbmcpOwogICAgICAgICBpZiAoIWNvbG9yU3RyaW5nKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGxldCBjb2xvclRleHRNYXJrZXIgPSBzd2F0Y2guX19jb2xvclRleHRNYXJr
ZXI7Ci0gICAgICAgIGxldCByYW5nZSA9IHN3YXRjaC5fX2NvbG9yVGV4dE1hcmtlclJhbmdlOwor
ICAgICAgICBsZXQgdGV4dE1hcmtlciA9IHN3YXRjaC5fX3RleHRNYXJrZXI7CisgICAgICAgIGxl
dCByYW5nZSA9IHN3YXRjaC5fX3RleHRNYXJrZXJSYW5nZTsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQocmFuZ2UpOwogICAgICAgICBpZiAoIXJhbmdlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MTM0MiwzMiArMTM0NywzMSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRF
ZGl0b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogICAgICAgICAgICAg
Ly8gVGhlIG9yaWdpbmFsIHRleHQgbWFya2VyIG1pZ2h0IGhhdmUgYmVlbiBjbGVhcmVkIGJ5IGEg
c3R5bGUgdXBkYXRlLAogICAgICAgICAgICAgLy8gaW4gdGhpcyBjYXNlIHdlIG5lZWQgdG8gZmlu
ZCB0aGUgbmV3IGNvbG9yIHRleHQgbWFya2VyIHNvIHdlIGtub3cKICAgICAgICAgICAgIC8vIHRo
ZSByaWdodCByYW5nZSBmb3IgdGhlIG5ldyBzdHlsZSBjb2xvciB0ZXh0LgotICAgICAgICAgICAg
aWYgKCFjb2xvclRleHRNYXJrZXIgfHwgIWNvbG9yVGV4dE1hcmtlci5maW5kKCkpIHsKLSAgICAg
ICAgICAgICAgICBjb2xvclRleHRNYXJrZXIgPSBudWxsOworICAgICAgICAgICAgaWYgKCF0ZXh0
TWFya2VyIHx8ICF0ZXh0TWFya2VyLmZpbmQoKSkgeworICAgICAgICAgICAgICAgIHRleHRNYXJr
ZXIgPSBudWxsOwogCiAgICAgICAgICAgICAgICAgbGV0IG1hcmtzID0gdGhpcy5fY29kZU1pcnJv
ci5maW5kTWFya3NBdChyYW5nZS5mcm9tKTsKICAgICAgICAgICAgICAgICBpZiAoIW1hcmtzLmxl
bmd0aCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAgICAgZm9y
IChsZXQgbWFyayBvZiBtYXJrcykgewotICAgICAgICAgICAgICAgICAgICBpZiAoV2ViSW5zcGVj
dG9yLlRleHRNYXJrZXIudGV4dE1hcmtlckZvckNvZGVNaXJyb3JUZXh0TWFya2VyKG1hcmspLnR5
cGUgIT09IFdlYkluc3BlY3Rvci5UZXh0TWFya2VyLlR5cGUuQ29sb3IpCisgICAgICAgICAgICAg
ICAgICAgIGxldCB0eXBlID0gV2ViSW5zcGVjdG9yLlRleHRNYXJrZXIudGV4dE1hcmtlckZvckNv
ZGVNaXJyb3JUZXh0TWFya2VyKG1hcmspLnR5cGU7CisgICAgICAgICAgICAgICAgICAgIGlmICh0
eXBlICE9PSBXZWJJbnNwZWN0b3IuVGV4dE1hcmtlci5UeXBlLkNvbG9yICYmIHR5cGUgIT09IFdl
Ykluc3BlY3Rvci5UZXh0TWFya2VyLlR5cGUuR3JhZGllbnQpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgY29sb3JUZXh0TWFya2VyID0gbWFy
azsKKyAgICAgICAgICAgICAgICAgICAgdGV4dE1hcmtlciA9IG1hcms7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgaWYgKCFjb2xvclRleHRNYXJrZXIpCisgICAgICAgICAgICBpZiAoIXRleHRNYXJrZXIp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAvLyBTb21ldGltZXMgd2Ug
c3RpbGwgbWlnaHQgZmluZCBhIHN0YWxlIHRleHQgbWFya2VyIHdpdGggZmluZE1hcmtzQXQuCi0g
ICAgICAgICAgICBsZXQgbmV3UmFuZ2UgPSBjb2xvclRleHRNYXJrZXIuZmluZCgpOwotICAgICAg
ICAgICAgaWYgKCFuZXdSYW5nZSkKKyAgICAgICAgICAgIHJhbmdlID0gdGV4dE1hcmtlci5maW5k
KCk7CisgICAgICAgICAgICBpZiAoIXJhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICAgICAgcmFuZ2UgPSBuZXdSYW5nZTsKLQotICAgICAgICAgICAgY29sb3JUZXh0TWFy
a2VyLmNsZWFyKCk7CisgICAgICAgICAgICB0ZXh0TWFya2VyLmNsZWFyKCk7CiAKICAgICAgICAg
ICAgIHRoaXMuX2NvZGVNaXJyb3IucmVwbGFjZVJhbmdlKGNvbG9yU3RyaW5nLCByYW5nZS5mcm9t
LCByYW5nZS50byk7CiAKQEAgLTEzNzUsOSArMTM3OSw5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHls
ZURlY2xhcmF0aW9uVGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRp
dG9yCiAgICAgICAgICAgICAvLyB2YXJpYWJsZSB0byBhbnRpY2lwYXRlIGEgZGlmZmVyZW50ICJy
YW5nZS50byIgcHJvcGVydHkuCiAgICAgICAgICAgICByYW5nZS50by5jaCA9IHJhbmdlLmZyb20u
Y2ggKyBjb2xvclN0cmluZy5sZW5ndGg7CiAKLSAgICAgICAgICAgIGNvbG9yVGV4dE1hcmtlciA9
IHRoaXMuX2NvZGVNaXJyb3IubWFya1RleHQocmFuZ2UuZnJvbSwgcmFuZ2UudG8pOworICAgICAg
ICAgICAgdGV4dE1hcmtlciA9IHRoaXMuX2NvZGVNaXJyb3IubWFya1RleHQocmFuZ2UuZnJvbSwg
cmFuZ2UudG8pOwogCi0gICAgICAgICAgICBzd2F0Y2guX19jb2xvclRleHRNYXJrZXIgPSBjb2xv
clRleHRNYXJrZXI7CisgICAgICAgICAgICBzd2F0Y2guX190ZXh0TWFya2VyID0gdGV4dE1hcmtl
cjsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iub3BlcmF0aW9uKHVwZGF0
ZS5iaW5kKHRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JUZXh0TWFya2Vycy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JUZXh0TWFya2Vycy5qcwppbmRleCA4
MjIyZGZhNGQxNjUxOTZjN2IzMzZmYTIzMjIxOGMzODUwN2Y5NGY2Li40MTYxYTFhYmJmZDJlZDVi
NWU5NmE1MWNmYmFkZmZiZWIwZjMzZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2RlTWlycm9yVGV4dE1hcmtlcnMuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29kZU1pcnJvclRleHRNYXJr
ZXJzLmpzCkBAIC04NCw5ICs4NCwzMiBAQCBmdW5jdGlvbiBjcmVhdGVDb2RlTWlycm9yVGV4dE1h
cmtlcnModHlwZSwgcGF0dGVybiwgbWF0Y2hGdW5jdGlvbiwgY29kZU1pcnJvciwgcgogCiBmdW5j
dGlvbiBjcmVhdGVDb2RlTWlycm9yQ29sb3JUZXh0TWFya2Vycyhjb2RlTWlycm9yLCByYW5nZSwg
Y2FsbGJhY2spCiB7Ci0gICAgLy8gTWF0Y2hlcyByZ2JhKDAsIDAsIDAsIDAuNSksIHJnYigwLCAw
LCAwKSwgaHNsKCksIGhzbGEoKSwgI2ZmZiwgI2ZmZmZmZiwgd2hpdGUKLSAgICB2YXIgY29sb3JS
ZWdleCA9IC8oKD86cmdifGhzbClhP1woW14pXStcKXwjWzAtOWEtZkEtRl17OH18I1swLTlhLWZB
LUZdezZ9fCNbMC05YS1mQS1GXXszLDR9fFxiXHcrXGIoPyFbLS5dKSkvZzsKKyAgICAvLyBNYXRj
aGVzIHJnYmEoMCwgMCwgMCwgMC41KSwgcmdiKDAsIDAsIDApLCBoc2woKSwgaHNsYSgpLCAjZmZm
LCAjZmZmZiwgI2ZmZmZmZiwgI2ZmZmZmZmZmLCB3aGl0ZQorICAgIGxldCBjb2xvclJlZ2V4ID0g
LygoPzpyZ2J8aHNsKWE/XChbXildK1wpfCNbMC05YS1mQS1GXXs4fXwjWzAtOWEtZkEtRl17Nn18
I1swLTlhLWZBLUZdezMsNH18XGJcdytcYig/IVstLl0pKS9nOwogICAgIGZ1bmN0aW9uIG1hdGNo
RnVuY3Rpb24obGluZUNvbnRlbnQsIG1hdGNoKSB7CisgICAgICAgIGlmICghbGluZUNvbnRlbnQg
fHwgIWxpbmVDb250ZW50Lmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICBsZXQgaW5kZXggPSBtYXRjaC5pbmRleDsKKyAgICAgICAgbGV0IGMgPSBudWxsOworICAg
ICAgICBsZXQgY2xvc2VkUGFyZW50aGVzaXMgPSAwOworICAgICAgICB3aGlsZSAoYyA9IGxpbmVD
b250ZW50W2luZGV4XSkgeworICAgICAgICAgICAgaWYgKGMgPT09ICIoIikKKyAgICAgICAgICAg
ICAgICAtLWNsb3NlZFBhcmVudGhlc2lzOworICAgICAgICAgICAgaWYgKGMgPT09ICIpIikKKyAg
ICAgICAgICAgICAgICArK2Nsb3NlZFBhcmVudGhlc2lzOworCisgICAgICAgICAgICBpZiAoY2xv
c2VkUGFyZW50aGVzaXMgPCAwKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAtLWluZGV4OworICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgvKHJlcGVhdGluZy0pPyhsaW5lYXJ8cmFk
aWFsKS1ncmFkaWVudCQvLnRlc3QobGluZUNvbnRlbnQuc3Vic3RyaW5nKDAsIGluZGV4KSkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAgICAgLy8gQWN0IGFzIGEgbmVnYXRpdmUg
bG9vay1iZWhpbmQgYW5kIGRpc2FsbG93IHRoZSBjb2xvciBmcm9tIGJlaW5nIHByZWZpeGluZyB3
aXRoIGNlcnRhaW4gY2hhcmFjdGVycy4KICAgICAgICAgcmV0dXJuICEobWF0Y2guaW5kZXggPiAw
ICYmIC9bLS5cIlwnXS8udGVzdChsaW5lQ29udGVudFttYXRjaC5pbmRleCAtIDFdKSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29sb3JTd2F0Y2guY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ29sb3JTd2F0Y2guY3NzCmluZGV4IGFlNmQwNzhjMzhhZWY1MTVjZTcwMWViNzYyY2EyZGY4
MjRmYTMyYjAuLjgxNmZlMjkyMDhlOTAzYjI1MzEwNzViOGRmYjhjNzI5M2NmZWU4ZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbG9yU3dh
dGNoLmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b2xvclN3YXRjaC5jc3MKQEAgLTU4LDYgKzU4LDcgQEAKICAgICBib3R0b206IDA7CiAgICAgbGVm
dDogMDsKICAgICBib3JkZXI6IDFweCBzb2xpZCBoc2xhKDAsIDAlLCAyNSUsIDAuNCk7CisgICAg
cG9pbnRlci1ldmVudHM6IG5vbmU7CiB9CiAKIC5jb2xvci1zd2F0Y2g6aG92ZXIgPiBzcGFuIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bG9yU3dhdGNoLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29sb3JTd2F0Y2guanMKaW5kZXggNmRiZjM2Y2U4NDdiNzUyZjczNjRhMjhjNjM2OGY0NTg3NGMx
YWU4ZC4uZmU5MzBiNzk3NDFkZWFlMzViMGI4NmIwN2NjZTRmOWNhMjYyZWZiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29sb3JTd2F0Y2gu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29sb3JT
d2F0Y2guanMKQEAgLTI2LDIyICsyNiwzMCBAQAogCiBXZWJJbnNwZWN0b3IuQ29sb3JTd2F0Y2gg
PSBjbGFzcyBDb2xvclN3YXRjaCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBj
b25zdHJ1Y3Rvcihjb2xvciwgcmVhZE9ubHkpCisgICAgY29uc3RydWN0b3IoY29sb3IsIHJlYWRP
bmx5LCBpc0dyYWRpZW50KQogICAgIHsKICAgICAgICAgc3VwZXIoKTsKIAorICAgICAgICB0aGlz
Ll9pc0dyYWRpZW50ID0gISFpc0dyYWRpZW50IHx8IChjb2xvciAmJiBjb2xvciBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5HcmFkaWVudCk7CisKICAgICAgICAgdGhpcy5fc3dhdGNoRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgdGhpcy5fc3dhdGNoRWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJjb2xvci1zd2F0Y2giKTsKLSAgICAgICAgdGhpcy5fc3dhdGNo
RWxlbWVudC50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xpY2sgdG8gc2VsZWN0IGEg
Y29sb3IuIFNoaWZ0LWNsaWNrIHRvIHN3aXRjaCBjb2xvciBmb3JtYXRzLiIpOworCisgICAgICAg
IGlmICh0aGlzLl9pc0dyYWRpZW50KQorICAgICAgICAgICAgdGhpcy5fc3dhdGNoRWxlbWVudC50
aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xpY2sgdG8gc2VsZWN0IGEgZ3JhZGllbnQi
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fc3dhdGNoRWxlbWVudC50aXRsZSA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xpY2sgdG8gc2VsZWN0IGEgY29sb3IuIFNoaWZ0LWNs
aWNrIHRvIHN3aXRjaCBjb2xvciBmb3JtYXRzLiIpOworCiAgICAgICAgIGlmICghcmVhZE9ubHkp
IHsKICAgICAgICAgICAgIHRoaXMuX3N3YXRjaEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCB0aGlzLl9jb2xvclN3YXRjaENsaWNrZWQuYmluZCh0aGlzKSk7Ci0gICAgICAgICAgICB0
aGlzLl9zd2F0Y2hFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5f
aGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIGlmICghdGhp
cy5faXNHcmFkaWVudCkKKyAgICAgICAgICAgICAgICB0aGlzLl9zd2F0Y2hFbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxlQ29udGV4dE1lbnVFdmVudC5i
aW5kKHRoaXMpKTsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3N3YXRjaElubmVyRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgdGhpcy5fc3dhdGNo
RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zd2F0Y2hJbm5lckVsZW1lbnQpOwogCi0gICAgICAg
IHRoaXMuX2NvbG9yID0gY29sb3IgfHwgV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21TdHJpbmcoInRy
YW5zcGFyZW50Iik7CisgICAgICAgIHRoaXMuX2NvbG9yID0gdGhpcy5fYWRkRmFsbGJhY2tWYWx1
ZUlmTmVlZGVkKGNvbG9yKTsKIAogICAgICAgICB0aGlzLl91cGRhdGVTd2F0Y2goKTsKICAgICB9
CkBAIC01NSw3ICs2Myw3IEBAIFdlYkluc3BlY3Rvci5Db2xvclN3YXRjaCA9IGNsYXNzIENvbG9y
U3dhdGNoIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgc2V0IGNvbG9yKGNvbG9y
KQogICAgIHsKLSAgICAgICAgdGhpcy5fY29sb3IgPSBjb2xvciB8fCBXZWJJbnNwZWN0b3IuQ29s
b3IuZnJvbVN0cmluZygidHJhbnNwYXJlbnQiKTsKKyAgICAgICAgdGhpcy5fY29sb3IgPSB0aGlz
Ll9hZGRGYWxsYmFja1ZhbHVlSWZOZWVkZWQoY29sb3IpOwogICAgICAgICB0aGlzLl91cGRhdGVT
d2F0Y2godHJ1ZSk7CiAgICAgfQogCkBAIC02Niw5ICs3NCwyMCBAQCBXZWJJbnNwZWN0b3IuQ29s
b3JTd2F0Y2ggPSBjbGFzcyBDb2xvclN3YXRjaCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QK
IAogICAgIC8vIFByaXZhdGUKIAorICAgIF9hZGRGYWxsYmFja1ZhbHVlSWZOZWVkZWQoY29sb3Ip
CisgICAgeworICAgICAgICBpZiAoY29sb3IpCisgICAgICAgICAgICByZXR1cm4gY29sb3I7CisK
KyAgICAgICAgaWYgKHRoaXMuX2lzR3JhZGllbnQpCisgICAgICAgICAgICByZXR1cm4gV2ViSW5z
cGVjdG9yLkdyYWRpZW50LmZyb21TdHJpbmcoImxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCwg
dHJhbnNwYXJlbnQpIik7CisKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Db2xvci5mcm9t
U3RyaW5nKCJ0cmFuc3BhcmVudCIpOworICAgIH0KKwogICAgIF9jb2xvclN3YXRjaENsaWNrZWQo
ZXZlbnQpCiAgICAgewotICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHsKKyAgICAgICAgaWYg
KCF0aGlzLl9pc0dyYWRpZW50ICYmIGV2ZW50LnNoaWZ0S2V5KSB7CiAgICAgICAgICAgICBsZXQg
bmV4dEZvcm1hdCA9IHRoaXMuX2NvbG9yLm5leHRGb3JtYXQoKTsKICAgICAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KG5leHRGb3JtYXQpOwogICAgICAgICAgICAgaWYgKCFuZXh0Rm9ybWF0KQpAQCAt
ODAsMjAgKzk5LDI3IEBAIFdlYkluc3BlY3Rvci5Db2xvclN3YXRjaCA9IGNsYXNzIENvbG9yU3dh
dGNoIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB9CiAKICAgICAgICAgbGV0
IGJvdW5kcyA9IFdlYkluc3BlY3Rvci5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdCh0aGlzLl9zd2F0
Y2hFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsKKyAgICAgICAgbGV0IHBvcG92ZXIg
PSBuZXcgV2ViSW5zcGVjdG9yLlBvcG92ZXIodGhpcyk7CiAKLSAgICAgICAgbGV0IGNvbG9yUGlj
a2VyID0gbmV3IFdlYkluc3BlY3Rvci5Db2xvclBpY2tlcjsKLSAgICAgICAgY29sb3JQaWNrZXIu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXIuRXZlbnQuQ29sb3JDaGFu
Z2VkLCB0aGlzLl9jb2xvclBpY2tlckNvbG9yRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgbGV0
IGNvbG9yUGlja2VyID0gbnVsbDsKKyAgICAgICAgaWYgKHRoaXMuX2lzR3JhZGllbnQpIHsKKyAg
ICAgICAgICAgIGNvbG9yUGlja2VyID0gbmV3IFdlYkluc3BlY3Rvci5HcmFkaWVudEVkaXRvcjsK
KyAgICAgICAgICAgIGNvbG9yUGlja2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkdy
YWRpZW50RWRpdG9yLkV2ZW50LkdyYWRpZW50Q2hhbmdlZCwgdGhpcy5fY29sb3JQaWNrZXJDb2xv
ckRpZENoYW5nZSwgdGhpcyk7CisgICAgICAgICAgICBjb2xvclBpY2tlci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5HcmFkaWVudEVkaXRvci5FdmVudC5Db2xvclBpY2tlclRvZ2dsZWQs
IChldmVudCkgPT4gcG9wb3Zlci51cGRhdGUoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBjb2xvclBpY2tlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXI7CisgICAgICAg
ICAgICBjb2xvclBpY2tlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db2xvclBpY2tl
ci5FdmVudC5Db2xvckNoYW5nZWQsIHRoaXMuX2NvbG9yUGlja2VyQ29sb3JEaWRDaGFuZ2UsIHRo
aXMpOworICAgICAgICB9CiAKLSAgICAgICAgbGV0IHBvcG92ZXIgPSBuZXcgV2ViSW5zcGVjdG9y
LlBvcG92ZXIodGhpcyk7CiAgICAgICAgIHBvcG92ZXIuY29udGVudCA9IGNvbG9yUGlja2VyLmVs
ZW1lbnQ7CiAgICAgICAgIHBvcG92ZXIucHJlc2VudChib3VuZHMucGFkKDIpLCBbV2ViSW5zcGVj
dG9yLlJlY3RFZGdlLk1JTl9YXSk7CiAKLSAgICAgICAgY29sb3JQaWNrZXIuY29sb3IgPSB0aGlz
Ll9jb2xvcjsKKyAgICAgICAgY29sb3JQaWNrZXJbdGhpcy5faXNHcmFkaWVudCA/ICJncmFkaWVu
dCIgOiAiY29sb3IiXSA9IHRoaXMuX2NvbG9yOwogICAgIH0KIAogICAgIF9jb2xvclBpY2tlckNv
bG9yRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy5fY29sb3IgPSBldmVudC5k
YXRhLmNvbG9yOworICAgICAgICB0aGlzLl9jb2xvciA9IGV2ZW50LmRhdGFbdGhpcy5faXNHcmFk
aWVudCA/ICJncmFkaWVudCIgOiAiY29sb3IiXTsKICAgICAgICAgdGhpcy5fdXBkYXRlU3dhdGNo
KCk7CiAgICAgfQogCkBAIC0xOTUsNyArMjIxLDggQEAgV2ViSW5zcGVjdG9yLkNvbG9yU3dhdGNo
ID0gY2xhc3MgQ29sb3JTd2F0Y2ggZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICBf
dXBkYXRlU3dhdGNoKGRvbnRGaXJlRXZlbnRzKQogICAgIHsKLSAgICAgICAgdGhpcy5fc3dhdGNo
SW5uZXJFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuX2NvbG9yLnRvU3RyaW5n
KCkgfHwgbnVsbDsKKworICAgICAgICB0aGlzLl9zd2F0Y2hJbm5lckVsZW1lbnQuc3R5bGUuYmFj
a2dyb3VuZCA9IHRoaXMuX2NvbG9yLnRvU3RyaW5nKCk7CiAgICAgICAgIGlmICghZG9udEZpcmVF
dmVudHMpCiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuQ29sb3JTd2F0Y2guRXZlbnQuQ29sb3JDaGFuZ2VkLCB7Y29sb3I6IHRoaXMuX2NvbG9y
fSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLmNzcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlci5j
c3MKaW5kZXggNWZiZTQzOTc2YmNjMTVkMGYyN2Y0M2JmNmNjNzRkN2MwZGM5YjZmYi4uZmMxODgy
MTY3NjcwOGFkYzgwZTJlNjA5MzRkMzA2ODYyNTYyODA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlj
a2VyLmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9W
aXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIuY3NzCkBAIC0yNyw0NiArMjcsMzEgQEAKICAgICBk
aXNwbGF5OiBmbGV4OwogfQogCi0udmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNr
Z3JvdW5kLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4g
LmNvbG9yLWdyYWRpZW50LXN3YXRjaCB7Ci0gICAgZGlzcGxheTogbm9uZTsKLSAgICBwb3NpdGlv
bjogcmVsYXRpdmU7CisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5k
LXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmNvbG9y
LXN3YXRjaCB7CiAgICAgd2lkdGg6IDM4cHg7CiAgICAgaGVpZ2h0OiAxOHB4OwotICAgIG1hcmdp
bi10b3A6IDFweDsKLSAgICAvKiBNYWtlIGEgY2hlY2tlcmVkIGJhY2tncm91bmQgZm9yIHRyYW5z
cGFyZW50IGNvbG9ycyB0byBzaG93IGFnYWluc3QuICovCi0gICAgYmFja2dyb3VuZC1pbWFnZTog
bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAlLCA4MCUpLCBoc2woMCwgMCUsIDgw
JSkpLAotICAgICAgICAgICAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhz
bCgwLCAwJSwgODAlKSwgaHNsKDAsIDAlLCA4MCUpKTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3
aGl0ZTsKLSAgICBiYWNrZ3JvdW5kLXNpemU6IDUwJTsKLSAgICBiYWNrZ3JvdW5kLXBvc2l0aW9u
OiB0b3AgbGVmdCwgYm90dG9tIHJpZ2h0OwotICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBl
YXQ7CisgICAgbWFyZ2luOiAxcHggMCAwOwogICAgIGJvcmRlcjogMXB4IHNvbGlkIGhzbGEoMCwg
MCUsIDI1JSwgMC40KTsKICAgICBib3JkZXItcmFkaXVzOiA0cHg7Ci0gICAgb3ZlcmZsb3c6IGhp
ZGRlbjsKLSAgICBjdXJzb3I6IGRlZmF1bHQ7CiB9CiAKLS52aXN1YWwtc3R5bGUtcHJvcGVydHkt
Y29udGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1
ZS1jb250YWluZXIgPiAuY29sb3ItZ3JhZGllbnQtc3dhdGNoOmhvdmVyIHsKLSAgICBib3JkZXIt
Y29sb3I6IGhzbGEoMCwgMCUsIDI1JSwgMC44KTsKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1j
b250YWluZXI6bm90KC5ncmFkaWVudC12YWx1ZSkgPiAuY29sb3Itc3dhdGNoIHsKKyAgICBkaXNw
bGF5OiBub25lOwogfQogCi0udmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3Jv
dW5kLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmNv
bG9yLWdyYWRpZW50LXN3YXRjaDphY3RpdmUgewotICAgIGJvcmRlci1jb2xvcjogaHNsKDAsIDAl
LCAyNSUpOworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFja2dyb3VuZC1waWNr
ZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5jb2xvci1zd2F0
Y2g6aG92ZXIgeworICAgIGJvcmRlci1jb2xvcjogaHNsYSgwLCAwJSwgMjUlLCAwLjgpOwogfQog
Ci0udmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5kLXBpY2tlciA+IC52
aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmNvbG9yLWdyYWRpZW50LXN3
YXRjaCA+IHNwYW4gewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDA7Ci0gICAg
cmlnaHQ6IDA7Ci0gICAgYm90dG9tOiAwOwotICAgIGxlZnQ6IDA7CisudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5kLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVy
dHktdmFsdWUtY29udGFpbmVyID4gLmNvbG9yLXN3YXRjaDphY3RpdmUgeworICAgIGJvcmRlci1j
b2xvcjogaHNsKDAsIDAlLCAyNSUpOwogfQogCi0udmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRh
aW5lci5iYWNrZ3JvdW5kLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29u
dGFpbmVyLmdyYWRpZW50LXZhbHVlID4gLmNvbG9yLWdyYWRpZW50LXN3YXRjaCB7Ci0gICAgZGlz
cGxheTogYmxvY2s7CisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5k
LXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmNvbG9y
LXN3YXRjaCA+IHNwYW4geworICAgIGJvcmRlcjogbm9uZTsKIH0KIAotLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS1jb250YWluZXIuYmFja2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LXZhbHVlLWNvbnRhaW5lci5ncmFkaWVudC12YWx1ZSA+IC5jb2xvci1ncmFkaWVudC1zd2F0
Y2ggKyAudmFsdWUtaW5wdXQgeworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFj
a2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lci5n
cmFkaWVudC12YWx1ZSA+IC5jb2xvci1zd2F0Y2ggKyAudmFsdWUtaW5wdXQgewogICAgIG1hcmdp
bi1sZWZ0OiAtM3B4OwogICAgIHBhZGRpbmctbGVmdDogNXB4OwogICAgIGJvcmRlci10b3AtbGVm
dC1yYWRpdXM6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIu
anMKaW5kZXggMTA1ZGUyYWY2OTQ4NmE5YzdkMzc3MTg2NTU5OTFiNmIzZTBkYTExZC4uYTVlZTAw
MmE1OWFmZmNlNWRiMjg0MjRhMThlYjQ5Y2RmNzBiNzljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlj
a2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zp
c3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlci5qcwpAQCAtMjksMTUgKzI5LDkgQEAgV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlciA9IGNsYXNzIFZpc3VhbFN0eWxlQmFja2dy
b3VuZFBpY2tlciBleHQKICAgICB7CiAgICAgICAgIHN1cGVyKHByb3BlcnR5TmFtZXMsIHRleHQs
IHBvc3NpYmxlVmFsdWVzLCBudWxsLCAiYmFja2dyb3VuZC1waWNrZXIiLCBsYXlvdXRSZXZlcnNl
ZCk7CiAKLSAgICAgICAgdGhpcy5fZ3JhZGllbnRTd2F0Y2hFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICB0aGlzLl9ncmFkaWVudFN3YXRjaEVsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgiY29sb3ItZ3JhZGllbnQtc3dhdGNoIik7Ci0gICAgICAgIHRoaXMuX2dy
YWRpZW50U3dhdGNoRWxlbWVudC50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xpY2sg
dG8gc2VsZWN0IGEgZ3JhZGllbnQiKTsKLSAgICAgICAgdGhpcy5fZ3JhZGllbnRTd2F0Y2hFbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fZ3JhZGllbnRTd2F0Y2hDbGlja2Vk
LmJpbmQodGhpcykpOwotCi0gICAgICAgIGxldCBncmFkaWVudFN3YXRjaElubmVyRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgdGhpcy5fZ3JhZGllbnRT
d2F0Y2hFbGVtZW50LmFwcGVuZENoaWxkKGdyYWRpZW50U3dhdGNoSW5uZXJFbGVtZW50KTsKLQot
ICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2dyYWRpZW50U3dh
dGNoRWxlbWVudCk7CisgICAgICAgIHRoaXMuX2dyYWRpZW50U3dhdGNoID0gbmV3IFdlYkluc3Bl
Y3Rvci5Db2xvclN3YXRjaChudWxsLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHRoaXMuX2dyYWRp
ZW50U3dhdGNoLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbG9yU3dhdGNoLkV2ZW50
LkNvbG9yQ2hhbmdlZCwgdGhpcy5fZ3JhZGllbnRTd2F0Y2hDb2xvckNoYW5nZWQsIHRoaXMpOwor
ICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2dyYWRpZW50U3dh
dGNoLmVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX3ZhbHVlSW5wdXRFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICAgdGhpcy5fdmFsdWVJbnB1dEVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgidmFsdWUtaW5wdXQiKTsKQEAgLTg2LDkgKzgwLDYgQEAgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlciA9IGNsYXNzIFZpc3VhbFN0eWxlQmFj
a2dyb3VuZFBpY2tlciBleHQKICAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl92YWx1ZVR5cGVQaWNrZXJFbGVtZW50KTsKIAogICAgICAgICB0aGlzLl9jdXJyZW50
VHlwZSA9ICJ1cmwiOwotICAgICAgICB0aGlzLl9ncmFkaWVudCA9IG51bGw7Ci0KLSAgICAgICAg
dGhpcy5fdXBkYXRlR3JhZGllbnRTd2F0Y2goKTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAg
LTExNCwxMSArMTA1LDcgQEAgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tl
ciA9IGNsYXNzIFZpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlciBleHQKICAgICAgICAgaWYgKCF0
aGlzLl9jdXJyZW50VHlwZS5pbmNsdWRlcygiZ3JhZGllbnQiKSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICB0aGlzLl9ncmFkaWVudCA9IFdlYkluc3BlY3Rvci5HcmFkaWVudC5mcm9t
U3RyaW5nKHZhbHVlKTsKLSAgICAgICAgaWYgKCF0aGlzLl9ncmFkaWVudCkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICB0aGlzLl91cGRhdGVHcmFkaWVudFN3YXRjaCgpOworICAgICAg
ICB0aGlzLl91cGRhdGVHcmFkaWVudCgpOwogICAgIH0KIAogICAgIGdldCBzeW50aGVzaXplZFZh
bHVlKCkKQEAgLTE1OSw0NiArMTQ2LDI0IEBAIFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUJhY2tn
cm91bmRQaWNrZXIgPSBjbGFzcyBWaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIgZXh0CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBfdXBkYXRlR3JhZGllbnRTd2F0Y2goKQorICAgIF91cGRhdGVH
cmFkaWVudCgpCiAgICAgewotICAgICAgICB0aGlzLl9ncmFkaWVudFN3YXRjaEVsZW1lbnQuZmly
c3RDaGlsZC5zdHlsZS5iYWNrZ3JvdW5kID0gIiI7CiAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhp
cy5zeW50aGVzaXplZFZhbHVlOwogICAgICAgICBpZiAoIXZhbHVlIHx8IHZhbHVlID09PSB0aGlz
Ll9jdXJyZW50VHlwZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl9ncmFk
aWVudCA9IFdlYkluc3BlY3Rvci5HcmFkaWVudC5mcm9tU3RyaW5nKHZhbHVlKTsKLSAgICAgICAg
dGhpcy5fZ3JhZGllbnRTd2F0Y2hFbGVtZW50LmZpcnN0Q2hpbGQuc3R5bGUuYmFja2dyb3VuZCA9
IHRoaXMuX2dyYWRpZW50ID8gdmFsdWUgOiBudWxsOwotICAgIH0KLQotICAgIF9ncmFkaWVudFN3
YXRjaENsaWNrZWQoZXZlbnQpCi0gICAgewotICAgICAgICBsZXQgYm91bmRzID0gV2ViSW5zcGVj
dG9yLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KHRoaXMuX2dyYWRpZW50U3dhdGNoRWxlbWVudC5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7Ci0gICAgICAgIGxldCBwb3BvdmVyID0gbmV3IFdlYklu
c3BlY3Rvci5Qb3BvdmVyKHRoaXMpOwotCi0gICAgICAgIGZ1bmN0aW9uIGhhbmRsZUNvbG9yUGlj
a2VyVG9nZ2xlZChldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgcG9wb3Zlci51cGRhdGUo
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGxldCBncmFkaWVudEVkaXRvciA9IG5ldyBXZWJJbnNw
ZWN0b3IuR3JhZGllbnRFZGl0b3I7Ci0gICAgICAgIGdyYWRpZW50RWRpdG9yLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkdyYWRpZW50RWRpdG9yLkV2ZW50LkdyYWRpZW50Q2hhbmdlZCwg
dGhpcy5fZ3JhZGllbnRFZGl0b3JHcmFkaWVudENoYW5nZWQsIHRoaXMpOwotICAgICAgICBncmFk
aWVudEVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5HcmFkaWVudEVkaXRvci5F
dmVudC5Db2xvclBpY2tlclRvZ2dsZWQsIGhhbmRsZUNvbG9yUGlja2VyVG9nZ2xlZCwgdGhpcyk7
Ci0KLSAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gZ3JhZGllbnRFZGl0b3IuZWxlbWVudDsKLSAg
ICAgICAgcG9wb3Zlci5wcmVzZW50KGJvdW5kcy5wYWQoMiksIFtXZWJJbnNwZWN0b3IuUmVjdEVk
Z2UuTUlOX1hdKTsKLQotICAgICAgICBncmFkaWVudEVkaXRvci5ncmFkaWVudCA9IHRoaXMuX2dy
YWRpZW50OworICAgICAgICB0aGlzLl9ncmFkaWVudFN3YXRjaC5jb2xvciA9IFdlYkluc3BlY3Rv
ci5HcmFkaWVudC5mcm9tU3RyaW5nKHZhbHVlKTsKICAgICB9CiAKLSAgICBfZ3JhZGllbnRFZGl0
b3JHcmFkaWVudENoYW5nZWQoZXZlbnQpCisgICAgX2dyYWRpZW50U3dhdGNoQ29sb3JDaGFuZ2Vk
KGV2ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy52YWx1ZSA9IGV2ZW50LmRhdGEuZ3JhZGllbnQu
dG9TdHJpbmcoKTsKKyAgICAgICAgdGhpcy52YWx1ZSA9IGV2ZW50LmRhdGEuY29sb3IudG9TdHJp
bmcoKTsKICAgICAgICAgdGhpcy5fdmFsdWVEaWRDaGFuZ2UoKTsKICAgICB9CiAKICAgICBfdmFs
dWVJbnB1dFZhbHVlQ2hhbmdlZChldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUdy
YWRpZW50U3dhdGNoKCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZUdyYWRpZW50KCk7CiAgICAgICAg
IHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CiAgICAgfQogCkBAIC0yMTQsNyArMTc5LDcgQEAgV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlciA9IGNsYXNzIFZpc3VhbFN0eWxl
QmFja2dyb3VuZFBpY2tlciBleHQKICAgICB7CiAgICAgICAgIHRoaXMuX2N1cnJlbnRUeXBlID0g
dGhpcy5fdmFsdWVUeXBlUGlja2VyRWxlbWVudC52YWx1ZTsKICAgICAgICAgdGhpcy5fdXBkYXRl
VmFsdWVJbnB1dCgpOwotICAgICAgICB0aGlzLl91cGRhdGVHcmFkaWVudFN3YXRjaCgpOworICAg
ICAgICB0aGlzLl91cGRhdGVHcmFkaWVudCgpOwogICAgICAgICB0aGlzLl92YWx1ZURpZENoYW5n
ZSgpOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268851</attachid>
            <date>2016-01-12 20:07:15 -0800</date>
            <delta_ts>2016-01-13 12:14:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153004-20160112200644.patch</filename>
            <type>text/plain</type>
            <size>82062</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGY4Mzk0MTVkZWNjZmRhMmVkYTc2ZTc2ZDVmZjZl
Y2VhNDFiN2QzOGYuLjRkZjJlZTAyY2YxZTIzNDRiNjg0YjNhOTExYzMyMmRmOTYwY2IzMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MiBAQAorMjAxNi0wMS0xMiAgRGV2
aW4gUm91c3NvICA8ZGNyb3Vzc28rd2Via2l0QGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBBZGQgc3VwcG9ydCBmb3IgdGhlIGV4aXN0aW5nIEdyYWRpZW50RWRpdG9yIGluIHRo
ZSBDU1MgUnVsZXMgc2lkZWJhcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUzMDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQm90aCB0aGUgVmlzdWFsIHNpZGViYXIgYW5kIFJlc291cmNlIHZpZXcgaGF2
ZSBlZGl0b3JzIGZvciBDU1MgZ3JhZGllbnQKKyAgICAgICAgdmFsdWVzLCBidXQgdGhlIFJ1bGVz
IHNpZGViYXIgaW5zdGVhZCBvbmx5IGFkZHMgZWRpdG9ycyBmb3IgYmFzaWMgY29sb3IKKyAgICAg
ICAgdmFsdWVzLiBJbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRoZSBjb2RlIGZvciBncmFkaWVudCBz
d2F0Y2hlcywgZXhpc3RpbmcKKyAgICAgICAgY29kZSB3aWxsIGJlIHVzZWQgdG8gZ2l2ZSB0aGlz
IHNhbWUgZnVuY3Rpb25hbGl0eSB0byB0aGUgUnVsZXMgc2lkZWJhci4KKworICAgICAgICAqIExv
Y2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL01haW4uaHRtbDoKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0dy
YWRpZW50LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkdyYWRpZW50KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5HcmFkaWVudC5mcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5H
cmFkaWVudC5zdG9wc1dpdGhDb21wb25lbnRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HcmFk
aWVudC5wcm90b3R5cGUuY29weSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuR3JhZGllbnQucHJv
dG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgUmVmYWN0b3JlZCBXZWJJbnNwZWN0b3IuR3JhZGll
bnQgaW50byBpdHMgb3duIGNsYXNzLgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuTGluZWFyR3Jh
ZGllbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50LnByb3RvdHlwZS50
b1N0cmluZyk6CisgICAgICAgIE5vdyB1c2VzIFdlYkluc3BlY3Rvci5HcmFkaWVudCBpbmhlcml0
YW5jZSBhbmQgbWV0aG9kcy4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLlJhZGlhbEdyYWRpZW50
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYWRpYWxHcmFkaWVudC5wcm90b3R5cGUudG9TdHJp
bmcpOgorICAgICAgICBOb3cgdXNlcyBXZWJJbnNwZWN0b3IuR3JhZGllbnQgaW5oZXJpdGFuY2Ug
YW5kIG1ldGhvZHMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVj
bGFyYXRpb25UZXh0RWRpdG9yLmNzczoKKyAgICAgICAgVXNlIElubGluZVN3YXRjaC5jc3MgdmFs
dWVzIGluc3RlYWQuCisKKyAgICAgICAgKC5jc3Mtc3R5bGUtdGV4dC1lZGl0b3IgPiAuQ29kZU1p
cnJvciAuQ29kZU1pcnJvci1saW5lcyAuY3ViaWMtYmV6aWVyLW1hcmtlcik6IERlbGV0ZWQuCisg
ICAgICAgIChAbWVkaWEgKC13ZWJraXQtbWF4LWRldmljZS1waXhlbC1yYXRpbzogMSkpOiBEZWxl
dGVkLgorICAgICAgICAoLmNzcy1zdHlsZS10ZXh0LWVkaXRvciA+IC5Db2RlTWlycm9yIC5Db2Rl
TWlycm9yLWxpbmVzIC5jdWJpYy1iZXppZXItbWFya2VyOmhvdmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKC5jc3Mtc3R5bGUtdGV4dC1lZGl0b3IgPiAuQ29kZU1pcnJvciAuQ29kZU1pcnJvci1saW5l
cyAuY3ViaWMtYmV6aWVyLW1hcmtlcjphY3RpdmUpOiBEZWxldGVkLgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUu
ZGlkRGlzbWlzc1BvcG92ZXIpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmVkIHVudXNlZCBwb3Bv
dmVyIG1lbWJlciB2YXJpYWJsZS4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVj
bGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS5fY29udGVudENoYW5nZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS5fdXBk
YXRlVGV4dE1hcmtlcnMudXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuX2NyZWF0ZUlubGluZVN3YXRjaGVzLmNyZWF0
ZVN3YXRjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRF
ZGl0b3IucHJvdG90eXBlLl9jcmVhdGVJbmxpbmVTd2F0Y2hlcy51cGRhdGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS5fY3Jl
YXRlSW5saW5lU3dhdGNoZXMpOgorICAgICAgICBSZW5hbWVkIHZhcmlhYmxlcyBmb3IgbW9yZSBj
b25zaXN0ZW50IG5hbWluZyBhbmQgcmVpbXBsZW1lbnRlZCB0aGUgbG9naWMKKyAgICAgICAgdG8g
dXNlIHRoZSBuZXcgV2ViSW5zcGVjdG9yLklubGluZVN3YXRjaCBtZXRob2RzLiAgQXMgYSByZXN1
bHQsIGl0IHdhcworICAgICAgICBwb3NzaWJsZSB0byBjb25zb2xpZGF0ZSB0aGUgMyBkaWZmZXJl
bnQgdHlwZSBvZiBzd2F0Y2ggZnVuY3Rpb25zIGludG8gYQorICAgICAgICBzaW5nbGUgZnVuY3Rp
b24uCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRv
ci5wcm90b3R5cGUuX2NvbW1lbnRQcm9wZXJ0eS51cGRhdGUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS5fdW5jb21tZW50UmFu
Z2UudXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4
dEVkaXRvci5wcm90b3R5cGUuX2lubGluZVN3YXRjaFZhbHVlQ2hhbmdlZC51cGRhdGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlw
ZS5faW5saW5lU3dhdGNoVmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NT
dHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuX3Jlc2V0Q29udGVudC51cGRhdGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnBy
b3RvdHlwZS5fY3JlYXRlQ29sb3JTd2F0Y2hlcy5jcmVhdGVTd2F0Y2gpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlw
ZS5fY3JlYXRlQ29sb3JTd2F0Y2hlcy51cGRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS5fY3JlYXRlQ29s
b3JTd2F0Y2hlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNs
YXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLl9jcmVhdGVCZXppZXJFZGl0b3JzLnVwZGF0ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRF
ZGl0b3IucHJvdG90eXBlLl9jcmVhdGVCZXppZXJFZGl0b3JzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuX2Nv
bG9yU3dhdGNoQ29sb3JDaGFuZ2VkLnVwZGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLl9jb2xvclN3YXRj
aENvbG9yQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLl9jdWJpY0Jlemllck1hcmtlckNsaWNrZWQu
dXBkYXRlQ29kZU1pcnJvci51cGRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS5fY3ViaWNCZXppZXJNYXJr
ZXJDbGlja2VkLnVwZGF0ZUNvZGVNaXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS5fY3ViaWNCZXppZXJN
YXJrZXJDbGlja2VkKTogRGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
Q29kZU1pcnJvclRleHRNYXJrZXJzLmpzOgorICAgICAgICAoY3JlYXRlQ29kZU1pcnJvckNvbG9y
VGV4dE1hcmtlcnMubWF0Y2hGdW5jdGlvbik6CisgICAgICAgIEFkZGVkIGxvZ2ljIHNvIHRoYXQg
aWYgdGhlIG1hdGNoZWQgY29sb3Igc3RyaW5nIGlzIGZvdW5kIGluc2lkZSBhIGdyYWRpZW50LAor
ICAgICAgICBpdCB3aWxsIG5vdCBoYXZlIGEgbWFya2VyIGNyZWF0ZWQgZm9yIGl0LgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9JbmxpbmVTd2F0Y2guY3NzOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29sb3JTd2F0Y2guY3Nz
LgorICAgICAgICBDb25zb2xpZGF0ZWQgdGhlIHZhcmlvdXMgc3dhdGNoIENTUyBjbGFzc2VzIGlu
dG8gb25lIGZpbGUuCisKKyAgICAgICAgKC5pbmxpbmUtc3dhdGNoKToKKyAgICAgICAgKC5pbmxp
bmUtc3dhdGNoLmJlemllcik6CisgICAgICAgICguaW5saW5lLXN3YXRjaC5iZXppZXI6aG92ZXIp
OgorICAgICAgICAoLmlubGluZS1zd2F0Y2guYmV6aWVyOmFjdGl2ZSk6CisgICAgICAgIChAbWVk
aWEgKC13ZWJraXQtbWF4LWRldmljZS1waXhlbC1yYXRpbzogMSkpOgorICAgICAgICAoLmlubGlu
ZS1zd2F0Y2ggPiBzcGFuKToKKyAgICAgICAgRW5zdXJlZCB0aGF0IHRoZSBpbm5lciBzd2F0Y2gg
ZWxlbWVudCBjYW4gbm90IGJlIHNlbGVjdGVkIHNvIHRoYXQgdGhlICJjbGljayIKKyAgICAgICAg
bGlzdGVuZXIgb24gaXRzIHBhcmVudCBhbHdheXMgZmlyZXMuCisKKyAgICAgICAgKC5pbmxpbmUt
c3dhdGNoOmhvdmVyID4gc3Bhbik6CisgICAgICAgICguaW5saW5lLXN3YXRjaDphY3RpdmUgPiBz
cGFuKToKKyAgICAgICAgKC5pbmxpbmUtc3dhdGNoLmJlemllciA+IHNwYW4pOgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9JbmxpbmVTd2F0Y2guanM6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xvclN3YXRjaC5qcy4KKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2gpOgorICAgICAgICBOb3cgYWNjZXB0cyBh
IG5ldyBmaXJzdCBhcmd1bWVudCB0byBpbmRpY2F0ZSB3aGF0IHR5cGUgb2YgY29sb3Igc3dhdGNo
CisgICAgICAgIHRvIGNyZWF0ZSBhbmQgd2hhdCBmdW5jdGlvbmFsaXR5IGl0IHdpbGwgaGF2ZS4g
IEN1cnJlbnRseSBoYXMgb3B0aW9ucworICAgICAgICBmb3IgV2ViSW5zcGVjdG9yLkNvbG9yLCBX
ZWJJbnNwZWN0b3IuR3JhZGllbnQsIGFuZCBXZWJJbnNwZWN0b3IuQ3ViaWNCZXppZXIuCisKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2gucHJvdG90eXBlLmdldCBlbGVtZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2gucHJvdG90eXBlLmdldCB2YWx1ZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoLnByb3RvdHlwZS5zZXQgdmFsdWUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLklubGluZVN3YXRjaC5wcm90b3R5cGUuX2ZhbGxiYWNr
VmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLklubGluZVN3YXRjaC5wcm90b3R5cGUuX3Vw
ZGF0ZVN3YXRjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoLnByb3RvdHlw
ZS5fc3dhdGNoRWxlbWVudENsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLklubGluZVN3
YXRjaC5wcm90b3R5cGUuX3ZhbHVlRWRpdG9yVmFsdWVEaWRDaGFuZ2UpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLklubGluZVN3YXRjaC5wcm90b3R5cGUuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLklubGluZVN3YXRjaC5wcm90b3R5cGUuX2dldE5leHRW
YWxpZEhFWEZvcm1hdC5oZXhNYXRjaGVzQ3VycmVudENvbG9yKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5JbmxpbmVTd2F0Y2gucHJvdG90eXBlLl9nZXROZXh0VmFsaWRIRVhGb3JtYXQpOgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIu
Y3NzOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFja2dyb3Vu
ZC1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5pbmxp
bmUtc3dhdGNoLmdyYWRpZW50KToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1j
b250YWluZXI6bm90KC5ncmFkaWVudC12YWx1ZSkgPiAuaW5saW5lLXN3YXRjaC5ncmFkaWVudCk6
CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5kLXBp
Y2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmlubGluZS1z
d2F0Y2guZ3JhZGllbnQ6aG92ZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1j
b250YWluZXIuYmFja2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVl
LWNvbnRhaW5lciA+IC5pbmxpbmUtc3dhdGNoLmdyYWRpZW50OmFjdGl2ZSk6CisgICAgICAgICgu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5kLXBpY2tlciA+IC52aXN1
YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmlubGluZS1zd2F0Y2guZ3JhZGll
bnQgPiBzcGFuKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmJh
Y2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIu
Z3JhZGllbnQtdmFsdWUgPiAuaW5saW5lLXN3YXRjaC5ncmFkaWVudCArIC52YWx1ZS1pbnB1dCk6
CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5kLXBp
Y2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmNvbG9yLXN3
YXRjaCk6IERlbGV0ZWQuCisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5l
ci5iYWNrZ3JvdW5kLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFp
bmVyOm5vdCguZ3JhZGllbnQtdmFsdWUpID4gLmNvbG9yLXN3YXRjaCk6IERlbGV0ZWQuCisgICAg
ICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5kLXBpY2tlciA+
IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmNvbG9yLXN3YXRjaDpo
b3Zlcik6IERlbGV0ZWQuCisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5l
ci5iYWNrZ3JvdW5kLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFp
bmVyID4gLmNvbG9yLXN3YXRjaDphY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAoLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFja2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxl
LXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5jb2xvci1zd2F0Y2ggPiBzcGFuKTogRGVsZXRl
ZC4KKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmJhY2tncm91bmQt
cGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIuZ3JhZGllbnQt
dmFsdWUgPiAuY29sb3Itc3dhdGNoICsgLnZhbHVlLWlucHV0KTogRGVsZXRlZC4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLmpzOgor
ICAgICAgICBSZW1vdmVkIHRoZSBzcGVjaWZpYyBjb2RlIGZvciB0aGUgZ3JhZGllbnQgc3dhdGNo
IGFuZCBtb3ZlZCB0byB1c2luZyBhCisgICAgICAgIGdyYWRpZW50LXR5cGUgSW5saW5lU3dhdGNo
IGZvciBncmFkaWVudCB2YWx1ZXMgaW5zdGVhZC4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVCYWNrZ3JvdW5kUGlja2VyLnByb3RvdHlwZS5zZXQgdmFsdWUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlci5wcm90b3R5cGUuX3VwZGF0ZUdy
YWRpZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNr
ZXIucHJvdG90eXBlLl9ncmFkaWVudFN3YXRjaENvbG9yQ2hhbmdlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLnByb3RvdHlwZS5fdmFsdWVJbnB1
dFZhbHVlQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVCYWNrZ3Jv
dW5kUGlja2VyLnByb3RvdHlwZS5faGFuZGxlS2V5d29yZENoYW5nZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlci5wcm90b3R5cGUuX3VwZGF0ZUdy
YWRpZW50U3dhdGNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZUJhY2tncm91bmRQaWNrZXIucHJvdG90eXBlLl9ncmFkaWVudFN3YXRjaENsaWNrZWQuaGFuZGxl
Q29sb3JQaWNrZXJUb2dnbGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZUJhY2tncm91bmRQaWNrZXIucHJvdG90eXBlLl9ncmFkaWVudFN3YXRjaENsaWNrZWQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQmFja2dyb3VuZFBp
Y2tlci5wcm90b3R5cGUuX2dyYWRpZW50RWRpdG9yR3JhZGllbnRDaGFuZ2VkKTogRGVsZXRlZC4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVDb2xvclBpY2tlci5j
c3M6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5pbnB1dC1jb2xv
ci1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5pbmxp
bmUtc3dhdGNoLmNvbG9yKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFp
bmVyLmlucHV0LWNvbG9yLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29u
dGFpbmVyID4gLmlubGluZS1zd2F0Y2guY29sb3I6aG92ZXIpOgorICAgICAgICAoLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1jb250YWluZXIuaW5wdXQtY29sb3ItcGlja2VyID4gLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAuaW5saW5lLXN3YXRjaC5jb2xvcjphY3RpdmUp
OgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuaW5wdXQtY29sb3It
cGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAuaW5saW5l
LXN3YXRjaC5jb2xvciA+IHNwYW4pOgorICAgICAgICBBZGQgb3ZlcnJpZGUgQ1NTIHRvIGVuc3Vy
ZSB0aGF0IHRoZSBjb2xvci10eXBlIElubGluZVN3YXRjaCBkaXNwbGF5cyBuaWNlbHkKKyAgICAg
ICAgbmV4dCB0byB0aGUgZmxleGJveCBzdHlsZSBWaXN1YWwgc2lkZWJhci4KKworICAgICAgICAo
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuaW5wdXQtY29sb3ItcGlja2VyID4gLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAuY29sb3Itc3dhdGNoKTogRGVs
ZXRlZC4KKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmlucHV0LWNv
bG9yLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmNv
bG9yLXN3YXRjaDpob3Zlcik6IERlbGV0ZWQuCisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWNvbnRhaW5lci5pbnB1dC1jb2xvci1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5
LXZhbHVlLWNvbnRhaW5lciA+IC5jb2xvci1zd2F0Y2g6YWN0aXZlKTogRGVsZXRlZC4KKyAgICAg
ICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmlucHV0LWNvbG9yLXBpY2tlciA+
IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmNvbG9yLXN3YXRjaCA+
IHNwYW4pOiBEZWxldGVkLgorICAgICAgICBSZWZhY3RvcmVkIHRvIG9ubHkgdXNlIG92ZXJyaWRp
bmcgcHJvcGVydGllcyBvZiB0aGUgYmFzaWMgLmlubGluZS1zd2F0Y2ggdmFsdWVzLgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbG9yUGlja2VyLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIucHJvdG90eXBlLl9jb2xvclN3YXRjaENv
bG9yQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tl
ci5wcm90b3R5cGUuX3VwZGF0ZUNvbG9yU3dhdGNoKToKKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvVmlzdWFsU3R5bGVUaW1pbmdFZGl0b3IuY3NzOgorICAgICAgICAoLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1jb250YWluZXIudGltaW5nLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktdmFsdWUtY29udGFpbmVyID4gLmlubGluZS1zd2F0Y2guYmV6aWVyKToKKyAgICAgICAg
KC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLnRpbWluZy1lZGl0b3IgPiAudmlzdWFs
LXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lcjpub3QoLmJlemllci12YWx1ZSkgPiAuaW5s
aW5lLXN3YXRjaC5iZXppZXIpOgorICAgICAgICAoQG1lZGlhICgtd2Via2l0LW1pbi1kZXZpY2Ut
cGl4ZWwtcmF0aW86IDIpKToKKyAgICAgICAgQWRkIG92ZXJyaWRlIENTUyB0byBlbnN1cmUgdGhh
dCB0aGUgY29sb3ItdHlwZSBJbmxpbmVTd2F0Y2ggZGlzcGxheXMgbmljZWx5CisgICAgICAgIG5l
eHQgdG8gdGhlIGZsZXhib3ggc3R5bGUgVmlzdWFsIHNpZGViYXIuCisKKyAgICAgICAgKC52aXN1
YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLnRpbWluZy1lZGl0b3IgPiAudmlzdWFsLXN0eWxl
LXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5iZXppZXItZWRpdG9yKTogRGVsZXRlZC4KKyAg
ICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLnRpbWluZy1lZGl0b3IgPiAu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5iZXppZXItZWRpdG9yOmhv
dmVyKTogRGVsZXRlZC4KKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVy
LnRpbWluZy1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+
IC5iZXppZXItZWRpdG9yOmFjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIFJlZmFjdG9yZWQgdG8g
b25seSB1c2Ugb3ZlcnJpZGluZyBwcm9wZXJ0aWVzIG9mIHRoZSBiYXNpYyAuaW5saW5lLXN3YXRj
aCB2YWx1ZXMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGlt
aW5nRWRpdG9yLmpzOgorICAgICAgICBSZW1vdmVkIHRoZSBzcGVjaWZpYyBjb2RlIGZvciB0aGUg
Y3ViaWMtYmV6aWVyIHN3YXRjaCBhbmQgbW92ZWQgdG8gdXNpbmcgYQorICAgICAgICBjdWJpYy1i
ZXppZXItdHlwZSBJbmxpbmVTd2F0Y2ggZm9yIGdyYWRpZW50IHZhbHVlcyBpbnN0ZWFkLgorCisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVUaW1pbmdFZGl0b3IpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVGltaW5nRWRpdG9yLnByb3RvdHlwZS5nZXQgYmV6aWVy
VmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVGltaW5nRWRpdG9yLnBy
b3RvdHlwZS5zZXQgYmV6aWVyVmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlVGltaW5nRWRpdG9yLnByb3RvdHlwZS5fc2V0VmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlVGltaW5nRWRpdG9yLnByb3RvdHlwZS5faGFuZGxlS2V5d29yZENoYW5n
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVGltaW5nRWRpdG9yLnByb3Rv
dHlwZS5fYmV6aWVyU3dhdGNoVmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVRpbWluZ0VkaXRvci5wcm90b3R5cGUuX2Jlemllck1hcmtlckNsaWNrZWQpOiBE
ZWxldGVkLgorCiAyMDE2LTAxLTEyICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IGZpeCBzb21lIGNvbW1vbiBtaXNzcGVsbGluZ3MgaW4gbG9j
YWxpemVkIHN0cmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6
YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDE5MDNj
NTFiZTY4YjliZGQxOWQ0NTE1ZDAyM2FhMzExNGFlOGI0ZGUuLmY5ZWExMGYxODYyNzhhMjEzOTEx
ZWJjYjAyMDk4MjEyODk1NDhhMzAgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNzkKemNt
Vi1WMEk+aElnYXk4WTErY0xpbE1mc3dsZyU1SmxZYmlhbE5sVyV2eE9ZQTlzdz9zJl5hSElTMzVN
OU08TXwlCmxsUnIyVGxUQURodigtQj0xQ3QqPEdMIVdfNVI9aDBIaUxPVHd8UEdTeSNsRz85Un5t
YQoKZGVsdGEgODUKemNtVi1iMElMN0tnYXgqUTErY0xpbGI7KkpsWWJpU2xObFcldnhPWUE5K1N+
STkrITxLMFN1RjZKMUNQU0xAYm00CnJKUVRDZkozMGZDJnhqMEAtOG1BSXkqKDA+SjNrUFVVJU0p
a0ZFdDgtZmpfcl9LTE5jMCt2T297CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTWFpbi5odG1sCmluZGV4IGU3N2Y3Njg4NTAwNDI1N2QwYjFmOTEwY2EwMmRiZGIzYTUz
MmI1NzEuLjUxNTZjMDI1ODNkMTIyM2RkMDBlY2U4YzI1MzM5YjljMTMzOTBhODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTQ4LDcgKzQ4
LDYgQEAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0NsdXN0ZXJDb250
ZW50Vmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQ29k
ZU1pcnJvck92ZXJyaWRlcy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Vmlld3MvQ29sb3JQaWNrZXIuY3NzIj4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
IlZpZXdzL0NvbG9yU3dhdGNoLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJWaWV3cy9Db2xvcldoZWVsLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJWaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJWaWV3cy9Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmNzcyI+CkBA
IC05NSw2ICs5NCw3IEBACiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9J
bWFnZVJlc291cmNlQ29udGVudFZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9IlZpZXdzL0luZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIuY3NzIj4KICAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3Jl
Q29udGVudFZpZXcuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdz
L0lubGluZVN3YXRjaC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmll
d3MvSXNzdWVUcmVlRWxlbWVudC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iVmlld3MvTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5jc3MiPgogICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvTGF5b3V0VGltZWxpbmVPdmVydmlld0dyYXBoLmNz
cyI+CkBAIC00MzYsNyArNDM2LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29kZU1pcnJv
ckZvcm1hdHRlcnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db2RlTWly
cm9yVGV4dE1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db2xv
clBpY2tlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvbG9yU3dhdGNo
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29sb3JXaGVlbC5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db21wdXRlZFN0eWxlRGV0YWls
c1BhbmVsLmpzIj48L3NjcmlwdD4KQEAgLTQ5OCw2ICs0OTcsNyBAQAogICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4VHJlZUVsZW1lbnQuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9y
ZVRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvSW5kZXhl
ZERhdGFiYXNlVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9JbmxpbmVTd2F0Y2guanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Jc3N1
ZVRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvTGF5ZXJU
cmVlRGF0YUdyaWROb2RlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvTGF5
ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvR3JhZGllbnQuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvR3JhZGllbnQuanMKaW5kZXgg
YTA5NGYzYjEwYzNkZDQ4ZmUxYmNlMzQyOGMxMTljNjVmNmI4YWM4Ny4uYWUyM2NiNTc4MWI3NWM4
MzVjOGQ2YTJmY2Y5MDE1NWUzNTk2MzRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0dyYWRpZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9HcmFkaWVudC5qcwpAQCAtMjMsMTQgKzIzLDE3
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8gRklYTUU6
IENvbnZlcnQgdG8gY2xhc3M/Ci1XZWJJbnNwZWN0b3IuR3JhZGllbnQgPSB7Ci0gICAgVHlwZXM6
IHsKLSAgICAgICAgTGluZWFyOiAibGluZWFyLWdyYWRpZW50IiwKLSAgICAgICAgUmFkaWFsOiAi
cmFkaWFsLWdyYWRpZW50IgotICAgIH0sCi0KLSAgICBmcm9tU3RyaW5nKGNzc1N0cmluZykKK1dl
Ykluc3BlY3Rvci5HcmFkaWVudCA9IGNsYXNzIEdyYWRpZW50Cit7CisgICAgY29uc3RydWN0b3Io
dHlwZSwgc3RvcHMpCisgICAgeworICAgICAgICB0aGlzLnR5cGUgPSB0eXBlOworICAgICAgICB0
aGlzLnN0b3BzID0gc3RvcHM7CisgICAgfQorCisgICAgLy8gU3RhdGljCisKKyAgICBzdGF0aWMg
ZnJvbVN0cmluZyhjc3NTdHJpbmcpCiAgICAgewogICAgICAgICB2YXIgdHlwZTsKICAgICAgICAg
dmFyIG9wZW5pbmdQYXJlbnRoZXNpc0luZGV4ID0gY3NzU3RyaW5nLmluZGV4T2YoIigiKTsKQEAg
LTg0LDE3ICs4NywxNyBAQCBXZWJJbnNwZWN0b3IuR3JhZGllbnQgPSB7CiAKICAgICAgICAgdmFy
IGdyYWRpZW50OwogICAgICAgICBpZiAodHlwZSA9PT0gV2ViSW5zcGVjdG9yLkdyYWRpZW50LlR5
cGVzLkxpbmVhcikKLSAgICAgICAgICAgIGdyYWRpZW50ID0gV2ViSW5zcGVjdG9yLkxpbmVhckdy
YWRpZW50LmxpbmVhckdyYWRpZW50V2l0aENvbXBvbmVudHMoY29tcG9uZW50cyk7CisgICAgICAg
ICAgICBncmFkaWVudCA9IFdlYkluc3BlY3Rvci5MaW5lYXJHcmFkaWVudC5mcm9tQ29tcG9uZW50
cyhjb21wb25lbnRzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZ3JhZGllbnQgPSBXZWJJ
bnNwZWN0b3IuUmFkaWFsR3JhZGllbnQucmFkaWFsR3JhZGllbnRXaXRoQ29tcG9uZW50cyhjb21w
b25lbnRzKTsKKyAgICAgICAgICAgIGdyYWRpZW50ID0gV2ViSW5zcGVjdG9yLlJhZGlhbEdyYWRp
ZW50LmZyb21Db21wb25lbnRzKGNvbXBvbmVudHMpOwogCiAgICAgICAgIGlmIChncmFkaWVudCkK
ICAgICAgICAgICAgIGdyYWRpZW50LnJlcGVhdHMgPSB0eXBlU3RyaW5nLnN0YXJ0c1dpdGgoInJl
cGVhdGluZyIpOwogCiAgICAgICAgIHJldHVybiBncmFkaWVudDsKLSAgICB9LAorICAgIH0KIAot
ICAgIHN0b3BzV2l0aENvbXBvbmVudHMoY29tcG9uZW50cykKKyAgICBzdGF0aWMgc3RvcHNXaXRo
Q29tcG9uZW50cyhjb21wb25lbnRzKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IGhhbmRsZSBs
ZW5ndGhzLgogICAgICAgICB2YXIgc3RvcHMgPSBjb21wb25lbnRzLm1hcChmdW5jdGlvbihjb21w
b25lbnQpIHsKQEAgLTEyNiw3ICsxMjksOSBAQCBXZWJJbnNwZWN0b3IuR3JhZGllbnQgPSB7CiAg
ICAgICAgIH0KIAogICAgICAgICByZXR1cm4gc3RvcHM7Ci0gICAgfSwKKyAgICB9CisKKyAgICAv
LyBQdWJsaWMKIAogICAgIHN0cmluZ0Zyb21TdG9wcyhzdG9wcykKICAgICB7CkBAIC0xMzgsMjAg
KzE0MywzNiBAQCBXZWJJbnNwZWN0b3IuR3JhZGllbnQgPSB7CiAgICAgICAgICAgICByZXR1cm4g
c3RyOwogICAgICAgICB9KS5qb2luKCIsICIpOwogICAgIH0KKworICAgIC8vIFB1YmxpYworCisg
ICAgY29weSgpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgor
ICAgIH0KKworICAgIHRvU3RyaW5nKCkKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5
IHN1YmNsYXNzZXMuCisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLkdyYWRpZW50LlR5cGVzID0g
eworICAgIExpbmVhcjogImxpbmVhci1ncmFkaWVudCIsCisgICAgUmFkaWFsOiAicmFkaWFsLWdy
YWRpZW50IgogfTsKIAotV2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50ID0gY2xhc3MgTGluZWFy
R3JhZGllbnQKK1dlYkluc3BlY3Rvci5MaW5lYXJHcmFkaWVudCA9IGNsYXNzIExpbmVhckdyYWRp
ZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkdyYWRpZW50CiB7CiAgICAgY29uc3RydWN0b3IoYW5n
bGUsIHN0b3BzKQogICAgIHsKLSAgICAgICAgdGhpcy50eXBlID0gV2ViSW5zcGVjdG9yLkdyYWRp
ZW50LlR5cGVzLkxpbmVhcjsKKyAgICAgICAgc3VwZXIoV2ViSW5zcGVjdG9yLkdyYWRpZW50LlR5
cGVzLkxpbmVhciwgc3RvcHMpOwogICAgICAgICB0aGlzLmFuZ2xlID0gYW5nbGU7Ci0gICAgICAg
IHRoaXMuc3RvcHMgPSBzdG9wczsKICAgICB9CiAKICAgICAvLyBTdGF0aWMKIAotICAgIHN0YXRp
YyBsaW5lYXJHcmFkaWVudFdpdGhDb21wb25lbnRzKGNvbXBvbmVudHMpCisgICAgc3RhdGljIGZy
b21Db21wb25lbnRzKGNvbXBvbmVudHMpCiAgICAgewogICAgICAgICB2YXIgYW5nbGUgPSAxODA7
CiAKQEAgLTIzMywyNCArMjU0LDIzIEBAIFdlYkluc3BlY3Rvci5MaW5lYXJHcmFkaWVudCA9IGNs
YXNzIExpbmVhckdyYWRpZW50CiAgICAgICAgIGlmIChzdHIgIT09ICIiKQogICAgICAgICAgICAg
c3RyICs9ICIsICI7CiAKLSAgICAgICAgc3RyICs9IFdlYkluc3BlY3Rvci5HcmFkaWVudC5zdHJp
bmdGcm9tU3RvcHModGhpcy5zdG9wcyk7CisgICAgICAgIHN0ciArPSB0aGlzLnN0cmluZ0Zyb21T
dG9wcyh0aGlzLnN0b3BzKTsKIAogICAgICAgICByZXR1cm4gKHRoaXMucmVwZWF0cyA/ICJyZXBl
YXRpbmctIiA6ICIiKSArIHRoaXMudHlwZSArICIoIiArIHN0ciArICIpIjsKICAgICB9CiB9Owog
Ci1XZWJJbnNwZWN0b3IuUmFkaWFsR3JhZGllbnQgPSBjbGFzcyBSYWRpYWxHcmFkaWVudAorV2Vi
SW5zcGVjdG9yLlJhZGlhbEdyYWRpZW50ID0gY2xhc3MgUmFkaWFsR3JhZGllbnQgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuR3JhZGllbnQKIHsKICAgICBjb25zdHJ1Y3RvcihzaXppbmcsIHN0b3BzKQog
ICAgIHsKLSAgICAgICAgdGhpcy50eXBlID0gV2ViSW5zcGVjdG9yLkdyYWRpZW50LlR5cGVzLlJh
ZGlhbDsKKyAgICAgICAgc3VwZXIoV2ViSW5zcGVjdG9yLkdyYWRpZW50LlR5cGVzLlJhZGlhbCwg
c3RvcHMpOwogICAgICAgICB0aGlzLnNpemluZyA9IHNpemluZzsKLSAgICAgICAgdGhpcy5zdG9w
cyA9IHN0b3BzOwogICAgIH0KIAogICAgIC8vIFN0YXRpYwogCi0gICAgc3RhdGljIHJhZGlhbEdy
YWRpZW50V2l0aENvbXBvbmVudHMoY29tcG9uZW50cykKKyAgICBzdGF0aWMgZnJvbUNvbXBvbmVu
dHMoY29tcG9uZW50cykKICAgICB7CiAgICAgICAgIHZhciBzaXppbmcgPSAhV2ViSW5zcGVjdG9y
LkNvbG9yLmZyb21TdHJpbmcoY29tcG9uZW50c1swXS5qb2luKCIgIikpID8gY29tcG9uZW50cy5z
aGlmdCgpLmpvaW4oIiAiKSA6ICIiOwogCkBAIC0yNzUsNyArMjk1LDcgQEAgV2ViSW5zcGVjdG9y
LlJhZGlhbEdyYWRpZW50ID0gY2xhc3MgUmFkaWFsR3JhZGllbnQKICAgICAgICAgaWYgKHN0ciAh
PT0gIiIpCiAgICAgICAgICAgICBzdHIgKz0gIiwgIjsKIAotICAgICAgICBzdHIgKz0gV2ViSW5z
cGVjdG9yLkdyYWRpZW50LnN0cmluZ0Zyb21TdG9wcyh0aGlzLnN0b3BzKTsKKyAgICAgICAgc3Ry
ICs9IHRoaXMuc3RyaW5nRnJvbVN0b3BzKHRoaXMuc3RvcHMpOwogCiAgICAgICAgIHJldHVybiAo
dGhpcy5yZXBlYXRzID8gInJlcGVhdGluZy0iIDogIiIpICsgdGhpcy50eXBlICsgIigiICsgc3Ry
ICsgIikiOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmNzcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0
RWRpdG9yLmNzcwppbmRleCBmYzEyOWFiZWUxNjZkNDlhOGEzZTlhOTJlMzZkZWRlM2U3ZTU3NDQ1
Li5hMzhiYjgwOGVkZjFhMWQ3MDZhYzMwM2E3ZWJjYWZlOWE3OWExMjZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0
aW9uVGV4dEVkaXRvci5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuY3NzCkBAIC05MSwzMiArOTEs
NiBAQAogICAgIGZpbHRlcjogYnJpZ2h0bmVzcygwLjkpOwogfQogCi0uY3NzLXN0eWxlLXRleHQt
ZWRpdG9yID4gLkNvZGVNaXJyb3IgLkNvZGVNaXJyb3ItbGluZXMgLmN1YmljLWJlemllci1tYXJr
ZXIgewotICAgIHdpZHRoOiAxMXB4OwotICAgIGhlaWdodDogMTFweDsKLSAgICBtYXJnaW4tcmln
aHQ6IDJweDsKLSAgICB2ZXJ0aWNhbC1hbGlnbjogLTJweDsKLSAgICBjb250ZW50OiB1cmwoLi4v
SW1hZ2VzL0N1YmljQmV6aWVyLnN2Zyk7Ci0gICAgY3Vyc29yOiBkZWZhdWx0OwotfQotCi1AbWVk
aWEgKC13ZWJraXQtbWF4LWRldmljZS1waXhlbC1yYXRpbzogMSkgewotICAgIC8qIEVuc3VyZSB0
aGUgYmV6aWVyIG1hcmtlciBpcyBldmVuIGJ5IGV2ZW4gc28gaXQgbG9va3MgYSBiaXQgbGVzcyBi
bHVycnkuICovCi0gICAgLmNzcy1zdHlsZS10ZXh0LWVkaXRvciA+IC5Db2RlTWlycm9yIC5Db2Rl
TWlycm9yLWxpbmVzIC5jdWJpYy1iZXppZXItbWFya2VyIHsKLSAgICAgICAgdmVydGljYWwtYWxp
Z246IC0xcHg7Ci0gICAgICAgIHdpZHRoOiAxMHB4OwotICAgICAgICBoZWlnaHQ6IDEwcHg7Ci0g
ICAgfQotfQotCi0uY3NzLXN0eWxlLXRleHQtZWRpdG9yID4gLkNvZGVNaXJyb3IgLkNvZGVNaXJy
b3ItbGluZXMgLmN1YmljLWJlemllci1tYXJrZXI6aG92ZXIgewotICAgIGZpbHRlcjogYnJpZ2h0
bmVzcygwLjkpOwotfQotCi0uY3NzLXN0eWxlLXRleHQtZWRpdG9yID4gLkNvZGVNaXJyb3IgLkNv
ZGVNaXJyb3ItbGluZXMgLmN1YmljLWJlemllci1tYXJrZXI6YWN0aXZlIHsKLSAgICBmaWx0ZXI6
IGJyaWdodG5lc3MoMC44KTsKLX0KLQogLmNvbXB1dGVkIC5jc3Mtc3R5bGUtdGV4dC1lZGl0b3Ig
PiAuQ29kZU1pcnJvciAuQ29kZU1pcnJvci1saW5lcyAuY3NzLXN0eWxlLWRlY2xhcmF0aW9uLXBy
b3BlcnR5LmltcGxpY2l0LAogLmNzcy1zdHlsZS10ZXh0LWVkaXRvciA+IC5Db2RlTWlycm9yIC5D
b2RlTWlycm9yLWxpbmVzIC5jc3Mtc3R5bGUtZGVjbGFyYXRpb24tcHJvcGVydHkubm90LWluaGVy
aXRlZCB7CiAgICAgb3BhY2l0eTogMC41OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xh
cmF0aW9uVGV4dEVkaXRvci5qcwppbmRleCBlOGU5Njc1YjNlNTllNjRlZWJmYTEyNGE5NzhjZWM2
ZmNjYTNjMGI1Li5lMTAyNjk1YWVhZTZlMjM5YzA4ZTYwMTRiMDNlMTg5OGIwNmVhYzVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHls
ZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcwpAQCAtMzg4
LDggKzM4OCw2IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvciA9
IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yCiAKICAgICBkaWREaXNtaXNzUG9w
b3Zlcihwb3BvdmVyKQogICAgIHsKLSAgICAgICAgaWYgKHBvcG92ZXIgPT09IHRoaXMuX2NvbG9y
UGlja2VyUG9wb3ZlcikKLSAgICAgICAgICAgIHRoaXMuX2NvbG9yUGlja2VyUG9wb3ZlciA9IG51
bGw7CiAgICAgICAgIGlmIChwb3BvdmVyID09PSB0aGlzLl9jdWJpY0JlemllckVkaXRvclBvcG92
ZXIpCiAgICAgICAgICAgICB0aGlzLl9jdWJpY0JlemllckVkaXRvclBvcG92ZXIgPSBudWxsOwog
ICAgIH0KQEAgLTc3MSwxMCArNzY5LDggQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRp
b25UZXh0RWRpdG9yID0gY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IKICAgICAg
ICAgLy8gV2hlbiB0aGUgY2hhbmdlIGlzIGEgY29tcGxldGlvbiBjaGFuZ2UsIGNyZWF0ZSBjb2xv
ciBzd2F0Y2hlcyBub3cgc2luY2UgdGhlIGNoYW5nZXMKICAgICAgICAgLy8gd2lsbCBub3QgZ28g
dGhyb3VnaCBfcHJvcGVydGllc0NoYW5nZWQgdW50aWwgY29tcGxldGlvbkNvbnRyb2xsZXJDb21w
bGV0aW9uc0hpZGRlbiBoYXBwZW5zLgogICAgICAgICAvLyBUaGlzIHdheSBhbnkgYXV0byBjb21w
bGV0ZWQgY29sb3JzIGdldCBzd2F0Y2hlcyByaWdodCBhd2F5LgotICAgICAgICBpZiAodGhpcy5f
Y29tcGxldGlvbkNvbnRyb2xsZXIuaXNDb21wbGV0aW9uQ2hhbmdlKGNoYW5nZSkpIHsKLSAgICAg
ICAgICAgIHRoaXMuX2NyZWF0ZUNvbG9yU3dhdGNoZXMoZmFsc2UsIGNoYW5nZS5mcm9tLmxpbmUp
OwotICAgICAgICAgICAgdGhpcy5fY3JlYXRlQmV6aWVyRWRpdG9ycyhmYWxzZSwgY2hhbmdlLmZy
b20ubGluZSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMuX2NvbXBsZXRpb25Db250cm9s
bGVyLmlzQ29tcGxldGlvbkNoYW5nZShjaGFuZ2UpKQorICAgICAgICAgICAgdGhpcy5fY3JlYXRl
SW5saW5lU3dhdGNoZXMoZmFsc2UsIGNoYW5nZS5mcm9tLmxpbmUpOwogCiAgICAgICAgIC8vIFVz
ZSBhIHNob3J0IGRlbGF5IGZvciB1c2VyIGlucHV0IHRvIGNvYWxlc2NlIG1vcmUgY2hhbmdlcyBi
ZWZvcmUgY29tbWl0dGluZy4gT3RoZXIgYWN0aW9ucyBsaWtlCiAgICAgICAgIC8vIHVuZG8sIHJl
ZG8gYW5kIHBhc3RlIGFyZSBhdG9taWMgYW5kIHdvcmsgYmV0dGVyIHdpdGggYSB6ZXJvIGRlbGF5
LiBDb2RlTWlycm9yIGlkZW50aWZpZXMgY2hhbmdlcyB0aGF0CkBAIC04MjQsOSArODIwLDggQEAg
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yID0gY2xhc3MgQ1NTU3R5
bGVEZWNsYXJhdGlvblRleHRFZGl0b3IKICAgICAgICAgICAgICAgICB9LmJpbmQodGhpcykpOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBMb29rIGZvciBjb2xvcnMgYW5kIG1ha2Ug
c3dhdGNoZXMuCi0gICAgICAgICAgICB0aGlzLl9jcmVhdGVDb2xvclN3YXRjaGVzKHRydWUpOwot
ICAgICAgICAgICAgdGhpcy5fY3JlYXRlQmV6aWVyRWRpdG9ycyh0cnVlKTsKKyAgICAgICAgICAg
IC8vIExvb2sgZm9yIHN3YXRjaGFibGUgdmFsdWVzIGFuZCBtYWtlIGlubGluZSBzd2F0Y2hlcy4K
KyAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUlubGluZVN3YXRjaGVzKHRydWUpOwogCiAgICAgICAg
ICAgICB0aGlzLl9tYXJrTGluZXNXaXRoQ2hlY2tib3hQbGFjZWhvbGRlcigpOwogICAgICAgICB9
CkBAIC04NzIsNTEgKzg2Nyw0MSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRl
eHRFZGl0b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogICAgICAgICB9
CiAgICAgfQogCi0gICAgX2NyZWF0ZUNvbG9yU3dhdGNoZXMobm9uYXRvbWljLCBsaW5lTnVtYmVy
KQorICAgIF9jcmVhdGVJbmxpbmVTd2F0Y2hlcyhub25hdG9taWMsIGxpbmVOdW1iZXIpCiAgICAg
ewotICAgICAgICBmdW5jdGlvbiB1cGRhdGUoKQorICAgICAgICBmdW5jdGlvbiBjcmVhdGVTd2F0
Y2goc3dhdGNoLCBtYXJrZXIsIHZhbHVlT2JqZWN0LCB2YWx1ZVN0cmluZykKICAgICAgICAgewot
ICAgICAgICAgICAgbGV0IHJhbmdlID0gdHlwZW9mIGxpbmVOdW1iZXIgPT09ICJudW1iZXIiID8g
bmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UobGluZU51bWJlciwgMCwgbGluZU51bWJlciArIDEs
IDApIDogbnVsbDsKLQotICAgICAgICAgICAgLy8gTG9vayBmb3IgY29sb3Igc3RyaW5ncyBhbmQg
YWRkIHN3YXRjaGVzIGluIGZyb250IG9mIHRoZW0uCi0gICAgICAgICAgICBjcmVhdGVDb2RlTWly
cm9yQ29sb3JUZXh0TWFya2Vycyh0aGlzLl9jb2RlTWlycm9yLCByYW5nZSwgZnVuY3Rpb24obWFy
a2VyLCBjb2xvciwgY29sb3JTdHJpbmcpIHsKLSAgICAgICAgICAgICAgICBsZXQgc3dhdGNoID0g
bmV3IFdlYkluc3BlY3Rvci5Db2xvclN3YXRjaChjb2xvciwgdGhpcy5fY29kZU1pcnJvci5nZXRP
cHRpb24oInJlYWRPbmx5IikpOwotICAgICAgICAgICAgICAgIHN3YXRjaC5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5Db2xvclN3YXRjaC5FdmVudC5Db2xvckNoYW5nZWQsIHRoaXMuX2Nv
bG9yU3dhdGNoQ29sb3JDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgICAgIHN3YXRjaC5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2guRXZlbnQuVmFsdWVDaGFuZ2VkLCB0
aGlzLl9pbmxpbmVTd2F0Y2hWYWx1ZUNoYW5nZWQsIHRoaXMpOwogCi0gICAgICAgICAgICAgICAg
bGV0IGNvZGVNaXJyb3JUZXh0TWFya2VyID0gbWFya2VyLmNvZGVNaXJyb3JUZXh0TWFya2VyOwot
ICAgICAgICAgICAgICAgIGxldCBjb2RlTWlycm9yVGV4dE1hcmtlclJhbmdlID0gY29kZU1pcnJv
clRleHRNYXJrZXIuZmluZCgpOwotICAgICAgICAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iuc2V0
VW5pcXVlQm9va21hcmsoY29kZU1pcnJvclRleHRNYXJrZXJSYW5nZS5mcm9tLCBzd2F0Y2guZWxl
bWVudCk7CisgICAgICAgICAgICBsZXQgY29kZU1pcnJvclRleHRNYXJrZXIgPSBtYXJrZXIuY29k
ZU1pcnJvclRleHRNYXJrZXI7CisgICAgICAgICAgICBsZXQgY29kZU1pcnJvclRleHRNYXJrZXJS
YW5nZSA9IGNvZGVNaXJyb3JUZXh0TWFya2VyLmZpbmQoKTsKKyAgICAgICAgICAgIHRoaXMuX2Nv
ZGVNaXJyb3Iuc2V0VW5pcXVlQm9va21hcmsoY29kZU1pcnJvclRleHRNYXJrZXJSYW5nZS5mcm9t
LCBzd2F0Y2guZWxlbWVudCk7CiAKLSAgICAgICAgICAgICAgICBzd2F0Y2guX19jb2xvclRleHRN
YXJrZXIgPSBjb2RlTWlycm9yVGV4dE1hcmtlcjsKLSAgICAgICAgICAgICAgICBzd2F0Y2guX19j
b2xvclRleHRNYXJrZXJSYW5nZSA9IGNvZGVNaXJyb3JUZXh0TWFya2VyUmFuZ2U7Ci0gICAgICAg
ICAgICB9LmJpbmQodGhpcykpOworICAgICAgICAgICAgc3dhdGNoLl9fdGV4dE1hcmtlciA9IGNv
ZGVNaXJyb3JUZXh0TWFya2VyOworICAgICAgICAgICAgc3dhdGNoLl9fdGV4dE1hcmtlclJhbmdl
ID0gY29kZU1pcnJvclRleHRNYXJrZXJSYW5nZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChu
b25hdG9taWMpCi0gICAgICAgICAgICB1cGRhdGUuY2FsbCh0aGlzKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5vcGVyYXRpb24odXBkYXRlLmJpbmQodGhpcykp
OwotICAgIH0KLQotICAgIF9jcmVhdGVCZXppZXJFZGl0b3JzKG5vbmF0b21pYywgbGluZU51bWJl
cikKLSAgICB7CiAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZSgpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHZhciByYW5nZSA9IHR5cGVvZiBsaW5lTnVtYmVyID09PSAibnVtYmVyIiA/IG5ldyBXZWJJ
bnNwZWN0b3IuVGV4dFJhbmdlKGxpbmVOdW1iZXIsIDAsIGxpbmVOdW1iZXIgKyAxLCAwKSA6IG51
bGw7CisgICAgICAgICAgICBsZXQgcmFuZ2UgPSB0eXBlb2YgbGluZU51bWJlciA9PT0gIm51bWJl
ciIgPyBuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZShsaW5lTnVtYmVyLCAwLCBsaW5lTnVtYmVy
ICsgMSwgMCkgOiBudWxsOwogCi0gICAgICAgICAgICAvLyBMb29rIGZvciBjdWJpYy1iZXppZXIg
YW5kIHRpbWluZyBmdW5jdGlvbnMgYW5kIGFkZCBjdWJpYy1iZXppZXIgaWNvbnMgaW4gZnJvbnQg
b2YgdGhlbS4KLSAgICAgICAgICAgIGNyZWF0ZUNvZGVNaXJyb3JDdWJpY0JlemllclRleHRNYXJr
ZXJzKHRoaXMuX2NvZGVNaXJyb3IsIHJhbmdlLCBmdW5jdGlvbihtYXJrZXIsIGN1YmljQmV6aWVy
KSB7Ci0gICAgICAgICAgICAgICAgdmFyIGJlemllck1hcmtlciA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNwYW4iKTsKLSAgICAgICAgICAgICAgICBiZXppZXJNYXJrZXIudGl0bGUgPSBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkNsaWNrIHRvIG9wZW4gYSBjdWJpYy1iZXppZXIgZWRpdG9yIik7
Ci0gICAgICAgICAgICAgICAgYmV6aWVyTWFya2VyLmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5D
U1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5CZXppZXJFZGl0b3JDbGFzc05hbWU7Ci0gICAg
ICAgICAgICAgICAgYmV6aWVyTWFya2VyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5f
Y3ViaWNCZXppZXJNYXJrZXJDbGlja2VkLmJpbmQodGhpcykpOworICAgICAgICAgICAgLy8gTG9v
ayBmb3IgY29sb3Igc3RyaW5ncyBhbmQgYWRkIHN3YXRjaGVzIGluIGZyb250IG9mIHRoZW0uCisg
ICAgICAgICAgICBjcmVhdGVDb2RlTWlycm9yQ29sb3JUZXh0TWFya2Vycyh0aGlzLl9jb2RlTWly
cm9yLCByYW5nZSwgKG1hcmtlciwgY29sb3IsIGNvbG9yU3RyaW5nKSA9PiB7CisgICAgICAgICAg
ICAgICAgbGV0IHN3YXRjaCA9IG5ldyBXZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoKFdlYkluc3Bl
Y3Rvci5JbmxpbmVTd2F0Y2guVHlwZS5Db2xvciwgY29sb3IsIHRoaXMuX2NvZGVNaXJyb3IuZ2V0
T3B0aW9uKCJyZWFkT25seSIpKTsKKyAgICAgICAgICAgICAgICBjcmVhdGVTd2F0Y2guY2FsbCh0
aGlzLCBzd2F0Y2gsIG1hcmtlciwgY29sb3IsIGNvbG9yU3RyaW5nKTsKKyAgICAgICAgICAgIH0p
OwogCi0gICAgICAgICAgICAgICAgdmFyIGNvZGVNaXJyb3JUZXh0TWFya2VyID0gbWFya2VyLmNv
ZGVNaXJyb3JUZXh0TWFya2VyOwotICAgICAgICAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iuc2V0
VW5pcXVlQm9va21hcmsoY29kZU1pcnJvclRleHRNYXJrZXIuZmluZCgpLmZyb20sIGJlemllck1h
cmtlcik7CisgICAgICAgICAgICAvLyBMb29rIGZvciBncmFkaWVudCBzdHJpbmdzIGFuZCBhZGQg
c3dhdGNoZXMgaW4gZnJvbnQgb2YgdGhlbS4KKyAgICAgICAgICAgIGNyZWF0ZUNvZGVNaXJyb3JH
cmFkaWVudFRleHRNYXJrZXJzKHRoaXMuX2NvZGVNaXJyb3IsIHJhbmdlLCAobWFya2VyLCBncmFk
aWVudCwgZ3JhZGllbnRTdHJpbmcpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgc3dhdGNoID0g
bmV3IFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2goV2ViSW5zcGVjdG9yLklubGluZVN3YXRjaC5U
eXBlLkdyYWRpZW50LCBncmFkaWVudCwgdGhpcy5fY29kZU1pcnJvci5nZXRPcHRpb24oInJlYWRP
bmx5IikpOworICAgICAgICAgICAgICAgIGNyZWF0ZVN3YXRjaC5jYWxsKHRoaXMsIHN3YXRjaCwg
bWFya2VyLCBncmFkaWVudCwgZ3JhZGllbnRTdHJpbmcpOworICAgICAgICAgICAgfSk7CiAKLSAg
ICAgICAgICAgICAgICBiZXppZXJNYXJrZXIuX190ZXh0TWFya2VyID0gY29kZU1pcnJvclRleHRN
YXJrZXI7Ci0gICAgICAgICAgICAgICAgYmV6aWVyTWFya2VyLl9fYmV6aWVyID0gY3ViaWNCZXpp
ZXI7Ci0gICAgICAgICAgICB9LmJpbmQodGhpcykpOworICAgICAgICAgICAgLy8gTG9vayBmb3Ig
Y3ViaWMtYmV6aWVyIHN0cmluZ3MgYW5kIGFkZCBzd2F0Y2hlcyBpbiBmcm9udCBvZiB0aGVtLgor
ICAgICAgICAgICAgY3JlYXRlQ29kZU1pcnJvckN1YmljQmV6aWVyVGV4dE1hcmtlcnModGhpcy5f
Y29kZU1pcnJvciwgcmFuZ2UsIChtYXJrZXIsIGJlemllciwgYmV6aWVyU3RyaW5nKSA9PiB7Cisg
ICAgICAgICAgICAgICAgbGV0IHN3YXRjaCA9IG5ldyBXZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNo
KFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2guVHlwZS5CZXppZXIsIGJlemllciwgdGhpcy5fY29k
ZU1pcnJvci5nZXRPcHRpb24oInJlYWRPbmx5IikpOworICAgICAgICAgICAgICAgIGNyZWF0ZVN3
YXRjaC5jYWxsKHRoaXMsIHN3YXRjaCwgbWFya2VyLCBiZXppZXIsIGJlemllclN0cmluZyk7Cisg
ICAgICAgICAgICB9KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChub25hdG9taWMpCkBAIC0x
MjcxLDkgKzEyNTYsOCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0
b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogICAgICAgICAgICAgLy8g
UmVwbGFjZSB0aGUgdGV4dCB3aXRoIGEgY29tbWVudGVkIHZlcnNpb24uCiAgICAgICAgICAgICB0
aGlzLl9jb2RlTWlycm9yLnJlcGxhY2VSYW5nZSgiLyogIiArIHRleHQgKyAiICovIiwgcmFuZ2Uu
ZnJvbSwgcmFuZ2UudG8pOwogCi0gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGxpbmUgZm9yIGFu
eSBjb2xvciBzd2F0Y2hlcyBvciBjdWJpYy1iZXppZXJzIHRoYXQgZ290IHJlbW92ZWQuCi0gICAg
ICAgICAgICB0aGlzLl9jcmVhdGVDb2xvclN3YXRjaGVzKHRydWUsIHJhbmdlLmZyb20ubGluZSk7
Ci0gICAgICAgICAgICB0aGlzLl9jcmVhdGVCZXppZXJFZGl0b3JzKHRydWUsIHJhbmdlLmZyb20u
bGluZSk7CisgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGxpbmUgZm9yIGFueSBpbmxpbmUgc3dh
dGNoZXMgdGhhdCBnb3QgcmVtb3ZlZC4KKyAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUlubGluZVN3
YXRjaGVzKHRydWUsIHJhbmdlLmZyb20ubGluZSk7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlz
Ll9jb2RlTWlycm9yLm9wZXJhdGlvbih1cGRhdGUuYmluZCh0aGlzKSk7CkBAIC0xMzExLDI4ICsx
Mjk1LDI3IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvciA9IGNs
YXNzIENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yCiAgICAgICAgICAgICB0aGlzLl9jb2Rl
TWlycm9yLmFkZExpbmVDbGFzcyhyYW5nZS5mcm9tLmxpbmUsICJ3cmFwIiwgV2ViSW5zcGVjdG9y
LkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLkVkaXRpbmdMaW5lU3R5bGVDbGFzc05hbWUp
OwogICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5yZXBsYWNlUmFuZ2UodGV4dCwgcmFuZ2Uu
ZnJvbSwgcmFuZ2UudG8pOwogCi0gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGxpbmUgZm9yIGFu
eSBjb2xvciBzd2F0Y2hlcyBvciBjdWJpYy1iZXppZXJzIHRoYXQgZ290IHJlbW92ZWQuCi0gICAg
ICAgICAgICB0aGlzLl9jcmVhdGVDb2xvclN3YXRjaGVzKHRydWUsIHJhbmdlLmZyb20ubGluZSk7
Ci0gICAgICAgICAgICB0aGlzLl9jcmVhdGVCZXppZXJFZGl0b3JzKHRydWUsIHJhbmdlLmZyb20u
bGluZSk7CisgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGxpbmUgZm9yIGFueSBpbmxpbmUgc3dh
dGNoZXMgdGhhdCBnb3QgcmVtb3ZlZC4KKyAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUlubGluZVN3
YXRjaGVzKHRydWUsIHJhbmdlLmZyb20ubGluZSk7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlz
Ll9jb2RlTWlycm9yLm9wZXJhdGlvbih1cGRhdGUuYmluZCh0aGlzKSk7CiAgICAgfQogCi0gICAg
X2NvbG9yU3dhdGNoQ29sb3JDaGFuZ2VkKGV2ZW50KQorICAgIF9pbmxpbmVTd2F0Y2hWYWx1ZUNo
YW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICBsZXQgc3dhdGNoID0gZXZlbnQgJiYgZXZlbnQu
dGFyZ2V0OwogICAgICAgICBjb25zb2xlLmFzc2VydChzd2F0Y2gpOwogICAgICAgICBpZiAoIXN3
YXRjaCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBsZXQgY29sb3JTdHJpbmcgPSBl
dmVudCAmJiBldmVudC5kYXRhICYmIGV2ZW50LmRhdGEuY29sb3IgJiYgZXZlbnQuZGF0YS5jb2xv
ci50b1N0cmluZygpOwotICAgICAgICBjb25zb2xlLmFzc2VydChjb2xvclN0cmluZyk7Ci0gICAg
ICAgIGlmICghY29sb3JTdHJpbmcpCisgICAgICAgIGxldCB2YWx1ZSA9IGV2ZW50LmRhdGEgJiYg
ZXZlbnQuZGF0YS52YWx1ZSAmJiBldmVudC5kYXRhLnZhbHVlLnRvU3RyaW5nKCk7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHZhbHVlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBsZXQgY29sb3JUZXh0TWFya2VyID0gc3dhdGNoLl9fY29sb3JU
ZXh0TWFya2VyOwotICAgICAgICBsZXQgcmFuZ2UgPSBzd2F0Y2guX19jb2xvclRleHRNYXJrZXJS
YW5nZTsKKyAgICAgICAgbGV0IHRleHRNYXJrZXIgPSBzd2F0Y2guX190ZXh0TWFya2VyOworICAg
ICAgICBsZXQgcmFuZ2UgPSBzd2F0Y2guX190ZXh0TWFya2VyUmFuZ2U7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHJhbmdlKTsKICAgICAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTEzNDAsMTM2ICsxMzIzLDQ4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0
aW9uVGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yCiAgICAg
ICAgIGZ1bmN0aW9uIHVwZGF0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFRoZSBvcmln
aW5hbCB0ZXh0IG1hcmtlciBtaWdodCBoYXZlIGJlZW4gY2xlYXJlZCBieSBhIHN0eWxlIHVwZGF0
ZSwKLSAgICAgICAgICAgIC8vIGluIHRoaXMgY2FzZSB3ZSBuZWVkIHRvIGZpbmQgdGhlIG5ldyBj
b2xvciB0ZXh0IG1hcmtlciBzbyB3ZSBrbm93Ci0gICAgICAgICAgICAvLyB0aGUgcmlnaHQgcmFu
Z2UgZm9yIHRoZSBuZXcgc3R5bGUgY29sb3IgdGV4dC4KLSAgICAgICAgICAgIGlmICghY29sb3JU
ZXh0TWFya2VyIHx8ICFjb2xvclRleHRNYXJrZXIuZmluZCgpKSB7Ci0gICAgICAgICAgICAgICAg
Y29sb3JUZXh0TWFya2VyID0gbnVsbDsKKyAgICAgICAgICAgIC8vIGluIHRoaXMgY2FzZSB3ZSBu
ZWVkIHRvIGZpbmQgdGhlIG5ldyB0ZXh0IG1hcmtlciBzbyB3ZSBrbm93IHRoZQorICAgICAgICAg
ICAgLy8gcmlnaHQgcmFuZ2UgZm9yIHRoZSBuZXcgc3R5bGUgdGV4dC4KKyAgICAgICAgICAgIGlm
ICghdGV4dE1hcmtlciB8fCAhdGV4dE1hcmtlci5maW5kKCkpIHsKKyAgICAgICAgICAgICAgICB0
ZXh0TWFya2VyID0gbnVsbDsKIAogICAgICAgICAgICAgICAgIGxldCBtYXJrcyA9IHRoaXMuX2Nv
ZGVNaXJyb3IuZmluZE1hcmtzQXQocmFuZ2UuZnJvbSk7CiAgICAgICAgICAgICAgICAgaWYgKCFt
YXJrcy5sZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAg
ICAgIGZvciAobGV0IG1hcmsgb2YgbWFya3MpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFdl
Ykluc3BlY3Rvci5UZXh0TWFya2VyLnRleHRNYXJrZXJGb3JDb2RlTWlycm9yVGV4dE1hcmtlciht
YXJrKS50eXBlICE9PSBXZWJJbnNwZWN0b3IuVGV4dE1hcmtlci5UeXBlLkNvbG9yKQorICAgICAg
ICAgICAgICAgICAgICBsZXQgdHlwZSA9IFdlYkluc3BlY3Rvci5UZXh0TWFya2VyLnRleHRNYXJr
ZXJGb3JDb2RlTWlycm9yVGV4dE1hcmtlcihtYXJrKS50eXBlOworICAgICAgICAgICAgICAgICAg
ICBpZiAodHlwZSAhPT0gV2ViSW5zcGVjdG9yLlRleHRNYXJrZXIuVHlwZS5Db2xvciAmJiB0eXBl
ICE9PSBXZWJJbnNwZWN0b3IuVGV4dE1hcmtlci5UeXBlLkdyYWRpZW50ICYmIHR5cGUgIT09IFdl
Ykluc3BlY3Rvci5UZXh0TWFya2VyLlR5cGUuQ3ViaWNCZXppZXIpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgY29sb3JUZXh0TWFya2VyID0g
bWFyazsKKyAgICAgICAgICAgICAgICAgICAgdGV4dE1hcmtlciA9IG1hcms7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgaWYgKCFjb2xvclRleHRNYXJrZXIpCisgICAgICAgICAgICBpZiAoIXRleHRNYXJr
ZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAvLyBTb21ldGltZXMg
d2Ugc3RpbGwgbWlnaHQgZmluZCBhIHN0YWxlIHRleHQgbWFya2VyIHdpdGggZmluZE1hcmtzQXQu
Ci0gICAgICAgICAgICBsZXQgbmV3UmFuZ2UgPSBjb2xvclRleHRNYXJrZXIuZmluZCgpOwotICAg
ICAgICAgICAgaWYgKCFuZXdSYW5nZSkKKyAgICAgICAgICAgIHJhbmdlID0gdGV4dE1hcmtlci5m
aW5kKCk7CisgICAgICAgICAgICBpZiAoIXJhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICAgICAgcmFuZ2UgPSBuZXdSYW5nZTsKKyAgICAgICAgICAgIHRleHRNYXJrZXIu
Y2xlYXIoKTsKIAotICAgICAgICAgICAgY29sb3JUZXh0TWFya2VyLmNsZWFyKCk7CisgICAgICAg
ICAgICB0aGlzLl9jb2RlTWlycm9yLnJlcGxhY2VSYW5nZSh2YWx1ZSwgcmFuZ2UuZnJvbSwgcmFu
Z2UudG8pOwogCi0gICAgICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnJlcGxhY2VSYW5nZShjb2xv
clN0cmluZywgcmFuZ2UuZnJvbSwgcmFuZ2UudG8pOwotCi0gICAgICAgICAgICAvLyBUaGUgY29s
b3IncyB0ZXh0IGZvcm1hdCBjb3VsZCBoYXZlIGNoYW5nZWQsIHNvIHdlIG5lZWQgdG8gdXBkYXRl
IHRoZSAicmFuZ2UiCisgICAgICAgICAgICAvLyBUaGUgdmFsdWUncyB0ZXh0IGNvdWxkIGhhdmUg
Y2hhbmdlZCwgc28gd2UgbmVlZCB0byB1cGRhdGUgdGhlICJyYW5nZSIKICAgICAgICAgICAgIC8v
IHZhcmlhYmxlIHRvIGFudGljaXBhdGUgYSBkaWZmZXJlbnQgInJhbmdlLnRvIiBwcm9wZXJ0eS4K
LSAgICAgICAgICAgIHJhbmdlLnRvLmNoID0gcmFuZ2UuZnJvbS5jaCArIGNvbG9yU3RyaW5nLmxl
bmd0aDsKKyAgICAgICAgICAgIHJhbmdlLnRvLmNoID0gcmFuZ2UuZnJvbS5jaCArIHZhbHVlLmxl
bmd0aDsKIAotICAgICAgICAgICAgY29sb3JUZXh0TWFya2VyID0gdGhpcy5fY29kZU1pcnJvci5t
YXJrVGV4dChyYW5nZS5mcm9tLCByYW5nZS50byk7CisgICAgICAgICAgICB0ZXh0TWFya2VyID0g
dGhpcy5fY29kZU1pcnJvci5tYXJrVGV4dChyYW5nZS5mcm9tLCByYW5nZS50byk7CiAKLSAgICAg
ICAgICAgIHN3YXRjaC5fX2NvbG9yVGV4dE1hcmtlciA9IGNvbG9yVGV4dE1hcmtlcjsKKyAgICAg
ICAgICAgIHN3YXRjaC5fX3RleHRNYXJrZXIgPSB0ZXh0TWFya2VyOwogICAgICAgICB9CiAKICAg
ICAgICAgdGhpcy5fY29kZU1pcnJvci5vcGVyYXRpb24odXBkYXRlLmJpbmQodGhpcykpOwogICAg
IH0KIAotICAgIF9jdWJpY0Jlemllck1hcmtlckNsaWNrZWQoZXZlbnQpCi0gICAgewotICAgICAg
ICBpZiAodGhpcy5fY3ViaWNCZXppZXJFZGl0b3JQb3BvdmVyKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIHZhciBiZXppZXJNYXJrZXIgPSBldmVudC50YXJnZXQ7Ci0KLSAgICAgICAg
dmFyIGJlemllciA9IGJlemllck1hcmtlci5fX2JlemllcjsKLSAgICAgICAgY29uc29sZS5hc3Nl
cnQoYmV6aWVyKTsKLSAgICAgICAgaWYgKCFiZXppZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgdmFyIGJlemllclRleHRNYXJrZXIgPSBiZXppZXJNYXJrZXIuX190ZXh0TWFya2Vy
OwotICAgICAgICBjb25zb2xlLmFzc2VydChiZXppZXJUZXh0TWFya2VyKTsKLSAgICAgICAgaWYg
KCFiZXppZXJUZXh0TWFya2VyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciBy
YW5nZSA9IGJlemllclRleHRNYXJrZXIuZmluZCgpOwotICAgICAgICBjb25zb2xlLmFzc2VydChy
YW5nZSk7Ci0gICAgICAgIGlmICghcmFuZ2UpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgZnVuY3Rpb24gdXBkYXRlQ29kZU1pcnJvcihuZXdDdWJpY0JlemllclRleHQpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZSgpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgLy8gVGhlIG9yaWdpbmFsIHRleHQgbWFya2VyIG1pZ2h0IGhhdmUgYmVlbiBjbGVh
cmVkIGJ5IGEgc3R5bGUgdXBkYXRlLAotICAgICAgICAgICAgICAgIC8vIGluIHRoaXMgY2FzZSB3
ZSBuZWVkIHRvIGZpbmQgdGhlIG5ldyBiZXppZXIgdGV4dCBtYXJrZXIgc28gd2Uga25vdwotICAg
ICAgICAgICAgICAgIC8vIHRoZSByaWdodCByYW5nZSBmb3IgdGhlIG5ldyBzdHlsZSBiZXppZXIg
dGV4dC4KLSAgICAgICAgICAgICAgICBpZiAoIWJlemllclRleHRNYXJrZXIgfHwgIWJlemllclRl
eHRNYXJrZXIuZmluZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJlemllclRleHRNYXJrZXIg
PSBudWxsOwotCi0gICAgICAgICAgICAgICAgICAgIHZhciBtYXJrcyA9IHRoaXMuX2NvZGVNaXJy
b3IuZmluZE1hcmtzQXQocmFuZ2UuZnJvbSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghbWFy
a3MubGVuZ3RoKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWFya3MubGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBtYXJrID0gbWFya3NbaV07Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLlRleHRNYXJrZXIudGV4dE1hcmtlckZvckNvZGVNaXJy
b3JUZXh0TWFya2VyKG1hcmspLnR5cGUgIT09IFdlYkluc3BlY3Rvci5UZXh0TWFya2VyLlR5cGUu
Q3ViaWNCZXppZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBiZXppZXJUZXh0TWFya2VyID0gbWFyazsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKCFiZXppZXJUZXh0TWFya2VyKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICAvLyBTb21ldGltZXMgd2Ugc3Rp
bGwgbWlnaHQgZmluZCBhIHN0YWxlIHRleHQgbWFya2VyIHdpdGggZmluZE1hcmtzQXQuCi0gICAg
ICAgICAgICAgICAgdmFyIG5ld1JhbmdlID0gYmV6aWVyVGV4dE1hcmtlci5maW5kKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFuZXdSYW5nZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgICAgICAgICAgcmFuZ2UgPSBuZXdSYW5nZTsKLQotICAgICAgICAgICAgICAgIGJl
emllclRleHRNYXJrZXIuY2xlYXIoKTsKLQotICAgICAgICAgICAgICAgIHRoaXMuX2NvZGVNaXJy
b3IucmVwbGFjZVJhbmdlKG5ld0N1YmljQmV6aWVyVGV4dCwgcmFuZ2UuZnJvbSwgcmFuZ2UudG8p
OwotCi0gICAgICAgICAgICAgICAgLy8gVGhlIGJlemllcidzIHRleHQgZm9ybWF0IGNvdWxkIGhh
dmUgY2hhbmdlZCwgc28gd2UgbmVlZCB0byB1cGRhdGUgdGhlICJyYW5nZSIKLSAgICAgICAgICAg
ICAgICAvLyB2YXJpYWJsZSB0byBhbnRpY2lwYXRlIGEgZGlmZmVyZW50ICJyYW5nZS50byIgcHJv
cGVydHkuCi0gICAgICAgICAgICAgICAgcmFuZ2UudG8uY2ggPSByYW5nZS5mcm9tLmNoICsgbmV3
Q3ViaWNCZXppZXJUZXh0Lmxlbmd0aDsKLQotICAgICAgICAgICAgICAgIGJlemllclRleHRNYXJr
ZXIgPSB0aGlzLl9jb2RlTWlycm9yLm1hcmtUZXh0KHJhbmdlLmZyb20sIHJhbmdlLnRvKTsKLQot
ICAgICAgICAgICAgICAgIGJlemllck1hcmtlci5fX3RleHRNYXJrZXIgPSBiZXppZXJUZXh0TWFy
a2VyOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0aGlzLl9jb2RlTWlycm9yLm9wZXJh
dGlvbih1cGRhdGUuYmluZCh0aGlzKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9jdWJp
Y0JlemllckVkaXRvclBvcG92ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlBvcG92ZXIodGhpcyk7Ci0K
LSAgICAgICAgdmFyIGJlemllckVkaXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuQmV6aWVyRWRpdG9y
OwotCi0gICAgICAgIGJlemllckVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5C
ZXppZXJFZGl0b3IuRXZlbnQuQmV6aWVyQ2hhbmdlZCwgZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAg
ICAgICAgIHVwZGF0ZUNvZGVNaXJyb3IuY2FsbCh0aGlzLCBldmVudC5kYXRhLmJlemllci50b1N0
cmluZygpKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLQotICAgICAgICB2YXIgYm91bmRzID0g
V2ViSW5zcGVjdG9yLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KGJlemllck1hcmtlci5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKSk7Ci0KLSAgICAgICAgdGhpcy5fY3ViaWNCZXppZXJFZGl0b3JQb3Bv
dmVyLmNvbnRlbnQgPSBiZXppZXJFZGl0b3IuZWxlbWVudDsKLSAgICAgICAgdGhpcy5fY3ViaWNC
ZXppZXJFZGl0b3JQb3BvdmVyLnByZXNlbnQoYm91bmRzLnBhZCgyKSwgW1dlYkluc3BlY3Rvci5S
ZWN0RWRnZS5NSU5fWF0pOwotCi0gICAgICAgIGJlemllckVkaXRvci5iZXppZXIgPSBiZXppZXI7
Ci0gICAgfQotCiAgICAgX3Byb3BlcnR5T3ZlcnJpZGRlblN0YXR1c0NoYW5nZWQoZXZlbnQpCiAg
ICAgewogICAgICAgICB0aGlzLl91cGRhdGVUZXh0TWFya2VyRm9yUHJvcGVydHlJZk5lZWRlZChl
dmVudC50YXJnZXQpOwpAQCAtMTY4MSw5ICsxNTc2LDggQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxl
RGVjbGFyYXRpb25UZXh0RWRpdG9yID0gY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0
b3IKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9LmJpbmQodGhpcykpOwogCi0gICAg
ICAgICAgICAvLyBMb29rIGZvciBjb2xvcnMgYW5kIG1ha2Ugc3dhdGNoZXMuCi0gICAgICAgICAg
ICB0aGlzLl9jcmVhdGVDb2xvclN3YXRjaGVzKHRydWUpOwotICAgICAgICAgICAgdGhpcy5fY3Jl
YXRlQmV6aWVyRWRpdG9ycyh0cnVlKTsKKyAgICAgICAgICAgIC8vIExvb2sgZm9yIHN3YXRjaGFi
bGUgdmFsdWVzIGFuZCBtYWtlIGlubGluZSBzd2F0Y2hlcy4KKyAgICAgICAgICAgIHRoaXMuX2Ny
ZWF0ZUlubGluZVN3YXRjaGVzKHRydWUpOwogCiAgICAgICAgICAgICAvLyBSZXN0b3JlIHRoZSBj
dXJzb3IgcG9zaXRpb24vc2VsZWN0aW9uLgogICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5z
ZXRTZWxlY3Rpb24oc2VsZWN0aW9uQW5jaG9yLCBzZWxlY3Rpb25IZWFkKTsKQEAgLTE3NzEsNyAr
MTY2NSw2IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5FdmVu
dCA9IHsKIAogV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLlN0eWxl
Q2xhc3NOYW1lID0gImNzcy1zdHlsZS10ZXh0LWVkaXRvciI7CiBXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuUmVhZE9ubHlTdHlsZUNsYXNzTmFtZSA9ICJyZWFkLW9u
bHkiOwotV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLkJlemllckVk
aXRvckNsYXNzTmFtZSA9ICJjdWJpYy1iZXppZXItbWFya2VyIjsKIFdlYkluc3BlY3Rvci5DU1NT
dHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5DaGVja2JveFBsYWNlaG9sZGVyRWxlbWVudFN0eWxl
Q2xhc3NOYW1lID0gImNoZWNrYm94LXBsYWNlaG9sZGVyIjsKIFdlYkluc3BlY3Rvci5DU1NTdHls
ZURlY2xhcmF0aW9uVGV4dEVkaXRvci5FZGl0aW5nTGluZVN0eWxlQ2xhc3NOYW1lID0gImVkaXRp
bmctbGluZSI7CiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuQ29t
bWl0Q29hbGVzY2VEZWxheSA9IDI1MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JUZXh0TWFya2Vycy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JUZXh0TWFya2Vycy5q
cwppbmRleCA4MjIyZGZhNGQxNjUxOTZjN2IzMzZmYTIzMjIxOGMzODUwN2Y5NGY2Li5jMzFjODY2
ZTRiOThjNjdhOWE4ZTU3ZDBkMjRkZDc1ZmNhYTliZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2RlTWlycm9yVGV4dE1hcmtlcnMuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29kZU1pcnJv
clRleHRNYXJrZXJzLmpzCkBAIC04NCw5ICs4NCwzNiBAQCBmdW5jdGlvbiBjcmVhdGVDb2RlTWly
cm9yVGV4dE1hcmtlcnModHlwZSwgcGF0dGVybiwgbWF0Y2hGdW5jdGlvbiwgY29kZU1pcnJvciwg
cgogCiBmdW5jdGlvbiBjcmVhdGVDb2RlTWlycm9yQ29sb3JUZXh0TWFya2Vycyhjb2RlTWlycm9y
LCByYW5nZSwgY2FsbGJhY2spCiB7Ci0gICAgLy8gTWF0Y2hlcyByZ2JhKDAsIDAsIDAsIDAuNSks
IHJnYigwLCAwLCAwKSwgaHNsKCksIGhzbGEoKSwgI2ZmZiwgI2ZmZmZmZiwgd2hpdGUKLSAgICB2
YXIgY29sb3JSZWdleCA9IC8oKD86cmdifGhzbClhP1woW14pXStcKXwjWzAtOWEtZkEtRl17OH18
I1swLTlhLWZBLUZdezZ9fCNbMC05YS1mQS1GXXszLDR9fFxiXHcrXGIoPyFbLS5dKSkvZzsKKyAg
ICAvLyBNYXRjaGVzIHJnYmEoMCwgMCwgMCwgMC41KSwgcmdiKDAsIDAsIDApLCBoc2woKSwgaHNs
YSgpLCAjZmZmLCAjZmZmZiwgI2ZmZmZmZiwgI2ZmZmZmZmZmLCB3aGl0ZQorICAgIGxldCBjb2xv
clJlZ2V4ID0gLygoPzpyZ2J8aHNsKWE/XChbXildK1wpfCNbMC05YS1mQS1GXXs4fXwjWzAtOWEt
ZkEtRl17Nn18I1swLTlhLWZBLUZdezMsNH18XGJcdytcYig/IVstLl0pKS9nOwogICAgIGZ1bmN0
aW9uIG1hdGNoRnVuY3Rpb24obGluZUNvbnRlbnQsIG1hdGNoKSB7CisgICAgICAgIGlmICghbGlu
ZUNvbnRlbnQgfHwgIWxpbmVDb250ZW50Lmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICAvLyBJbiBvcmRlciBkZXRlcm1pbmUgaWYgdGhlIG1hdGNoZWQgY29sb3Ig
aXMgaW5zaWRlIGEgZ3JhZGllbnQsIGZpcnN0CisgICAgICAgIC8vIGxvb2sgYmVmb3JlIHRoZSB0
ZXh0IHRvIGZpbmQgdGhlIGZpcnN0IHVubWF0Y2hlZCBvcGVuIHBhcmVudGhlc2lzLgorICAgICAg
ICAvLyBUaGlzIHBhcmVudGhlc2lzLCBpZiBpdCBleGlzdHMsIHdpbGwgYmUgaW1tZWRpYXRlbHkg
YWZ0ZXIgdGhlIENTUworICAgICAgICAvLyBmdW5jaXRvbiB3aG9zZSBuYW1lIGNhbiBiZSBjaGVj
a2VkIHRvIHNlZSBpZiBpdCBtYXRjaGVzIGEgZ3JhZGllbnQuCisgICAgICAgIGxldCBvcGVuUGFy
ZW50aGVzaXMgPSAwOworICAgICAgICBsZXQgaW5kZXggPSBtYXRjaC5pbmRleDsKKyAgICAgICAg
bGV0IGMgPSBudWxsOworICAgICAgICB3aGlsZSAoYyA9IGxpbmVDb250ZW50W2luZGV4XSkgewor
ICAgICAgICAgICAgaWYgKGMgPT09ICIoIikKKyAgICAgICAgICAgICAgICArK29wZW5QYXJlbnRo
ZXNpczsKKyAgICAgICAgICAgIGlmIChjID09PSAiKSIpCisgICAgICAgICAgICAgICAgLS1vcGVu
UGFyZW50aGVzaXM7CisKKyAgICAgICAgICAgIGlmIChvcGVuUGFyZW50aGVzaXMgPiAwKQorICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAtLWluZGV4OworICAgICAgICAgICAg
aWYgKGluZGV4IDwgMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICgvKHJlcGVhdGluZy0pPyhsaW5lYXJ8cmFkaWFsKS1ncmFkaWVudCQvLnRlc3QobGlu
ZUNvbnRlbnQuc3Vic3RyaW5nKDAsIGluZGV4KSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKICAgICAgICAgLy8gQWN0IGFzIGEgbmVnYXRpdmUgbG9vay1iZWhpbmQgYW5kIGRpc2FsbG93
IHRoZSBjb2xvciBmcm9tIGJlaW5nIHByZWZpeGluZyB3aXRoIGNlcnRhaW4gY2hhcmFjdGVycy4K
ICAgICAgICAgcmV0dXJuICEobWF0Y2guaW5kZXggPiAwICYmIC9bLS5cIlwnXS8udGVzdChsaW5l
Q29udGVudFttYXRjaC5pbmRleCAtIDFdKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29sb3JTd2F0Y2guY3NzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29sb3JTd2F0Y2guY3NzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTZkMDc4YzM4YWVmNTE1Y2U3MDFlYjc2MmNhMmRm
ODI0ZmEzMmIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbG9yU3dhdGNoLmNz
cworKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1
IERldmluIFJvdXNzbyA8ZGNyb3Vzc28rd2Via2l0QGdtYWlsLmNvbT4uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLS5jb2xvci1zd2F0Y2ggewotICAgIGRpc3BsYXk6IGlubGluZS1i
bG9jazsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgd2lkdGg6IDFlbTsKLSAgICBoZWln
aHQ6IDFlbTsKLSAgICBtYXJnaW4tcmlnaHQ6IDNweDsKLSAgICB2ZXJ0aWNhbC1hbGlnbjogLTJw
eDsKLSAgICAvKiBNYWtlIGEgY2hlY2tlcmVkIGJhY2tncm91bmQgZm9yIHRyYW5zcGFyZW50IGNv
bG9ycyB0byBzaG93IGFnYWluc3QuICovCi0gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdy
YWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAlLCA4MCUpLCBoc2woMCwgMCUsIDgwJSkpLAotICAg
ICAgICAgICAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgwLCAwJSwg
ODAlKSwgaHNsKDAsIDAlLCA4MCUpKTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKLSAg
ICBiYWNrZ3JvdW5kLXNpemU6IDUwJTsKLSAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3AgbGVm
dCwgYm90dG9tIHJpZ2h0OwotICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7Ci0gICAg
Y3Vyc29yOiBkZWZhdWx0OwotICAgIG92ZXJmbG93OiBoaWRkZW47Ci19Ci0KLUBtZWRpYSAoLXdl
YmtpdC1tYXgtZGV2aWNlLXBpeGVsLXJhdGlvOiAxKSB7Ci0gICAgLyogRW5zdXJlIHRoZSBjb2xv
ciBzd2F0Y2ggaXMgZXZlbiBieSBldmVuIHNvIHRoYXQgaXQgbG9va3Mgb2theSBjaGVja2VyZWQu
ICovCi0gICAgLmNvbG9yLXN3YXRjaCB7Ci0gICAgICAgIHZlcnRpY2FsLWFsaWduOiAtMXB4Owot
ICAgICAgICB3aWR0aDogMTBweDsKLSAgICAgICAgaGVpZ2h0OiAxMHB4OwotICAgIH0KLX0KLQot
LmNvbG9yLXN3YXRjaCA+IHNwYW4gewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6
IDA7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgYm90dG9tOiAwOwotICAgIGxlZnQ6IDA7Ci0gICAgYm9y
ZGVyOiAxcHggc29saWQgaHNsYSgwLCAwJSwgMjUlLCAwLjQpOwotfQotCi0uY29sb3Itc3dhdGNo
OmhvdmVyID4gc3BhbiB7Ci0gICAgYm9yZGVyLWNvbG9yOiBoc2xhKDAsIDAlLCAyNSUsIDAuOCk7
Ci19Ci0KLS5jb2xvci1zd2F0Y2g6YWN0aXZlID4gc3BhbiB7Ci0gICAgYm9yZGVyLWNvbG9yOiBo
c2woMCwgMCUsIDI1JSk7Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbG9yU3dhdGNoLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29sb3JTd2F0Y2guanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDZkYmYzNmNlODQ3Yjc1MmY3MzY0YTI4YzYzNjhmNDU4NzRjMWFlOGQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29sb3JTd2F0Y2guanMKKysrIC9kZXYvbnVsbApA
QCAtMSwyMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgRGV2aW4gUm91c3NvIDxk
Y3JvdXNzbyt3ZWJraXRAZ21haWwuY29tPi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotV2ViSW5zcGVjdG9yLkNvbG9yU3dhdGNoID0gY2xhc3MgQ29sb3JTd2F0Y2ggZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0Ci17Ci0gICAgY29uc3RydWN0b3IoY29sb3IsIHJlYWRPbmx5KQot
ICAgIHsKLSAgICAgICAgc3VwZXIoKTsKLQotICAgICAgICB0aGlzLl9zd2F0Y2hFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICB0aGlzLl9zd2F0Y2hFbGVt
ZW50LmNsYXNzTGlzdC5hZGQoImNvbG9yLXN3YXRjaCIpOwotICAgICAgICB0aGlzLl9zd2F0Y2hF
bGVtZW50LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDbGljayB0byBzZWxlY3QgYSBj
b2xvci4gU2hpZnQtY2xpY2sgdG8gc3dpdGNoIGNvbG9yIGZvcm1hdHMuIik7Ci0gICAgICAgIGlm
ICghcmVhZE9ubHkpIHsKLSAgICAgICAgICAgIHRoaXMuX3N3YXRjaEVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiY2xpY2siLCB0aGlzLl9jb2xvclN3YXRjaENsaWNrZWQuYmluZCh0aGlzKSk7Ci0g
ICAgICAgICAgICB0aGlzLl9zd2F0Y2hFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRt
ZW51IiwgdGhpcy5faGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMuX3N3YXRjaElubmVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNwYW4iKTsKLSAgICAgICAgdGhpcy5fc3dhdGNoRWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9zd2F0Y2hJbm5lckVsZW1lbnQpOwotCi0gICAgICAgIHRoaXMuX2NvbG9yID0gY29sb3Ig
fHwgV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21TdHJpbmcoInRyYW5zcGFyZW50Iik7Ci0KLSAgICAg
ICAgdGhpcy5fdXBkYXRlU3dhdGNoKCk7Ci0gICAgfQotCi0gICAgLy8gUHVibGljCi0KLSAgICBn
ZXQgZWxlbWVudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fc3dhdGNoRWxlbWVudDsK
LSAgICB9Ci0KLSAgICBzZXQgY29sb3IoY29sb3IpCi0gICAgewotICAgICAgICB0aGlzLl9jb2xv
ciA9IGNvbG9yIHx8IFdlYkluc3BlY3Rvci5Db2xvci5mcm9tU3RyaW5nKCJ0cmFuc3BhcmVudCIp
OwotICAgICAgICB0aGlzLl91cGRhdGVTd2F0Y2godHJ1ZSk7Ci0gICAgfQotCi0gICAgZ2V0IGNv
bG9yKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9jb2xvcjsKLSAgICB9Ci0KLSAgICAv
LyBQcml2YXRlCi0KLSAgICBfY29sb3JTd2F0Y2hDbGlja2VkKGV2ZW50KQotICAgIHsKLSAgICAg
ICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7Ci0gICAgICAgICAgICBsZXQgbmV4dEZvcm1hdCA9IHRo
aXMuX2NvbG9yLm5leHRGb3JtYXQoKTsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5leHRG
b3JtYXQpOwotICAgICAgICAgICAgaWYgKCFuZXh0Rm9ybWF0KQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICAgICAgdGhpcy5fY29sb3IuZm9ybWF0ID0gbmV4dEZvcm1hdDsKLSAg
ICAgICAgICAgIHRoaXMuX3VwZGF0ZVN3YXRjaCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgbGV0IGJvdW5kcyA9IFdlYkluc3BlY3Rvci5SZWN0LnJlY3RGcm9t
Q2xpZW50UmVjdCh0aGlzLl9zd2F0Y2hFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsK
LQotICAgICAgICBsZXQgY29sb3JQaWNrZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbG9yUGlja2Vy
OwotICAgICAgICBjb2xvclBpY2tlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db2xv
clBpY2tlci5FdmVudC5Db2xvckNoYW5nZWQsIHRoaXMuX2NvbG9yUGlja2VyQ29sb3JEaWRDaGFu
Z2UsIHRoaXMpOwotCi0gICAgICAgIGxldCBwb3BvdmVyID0gbmV3IFdlYkluc3BlY3Rvci5Qb3Bv
dmVyKHRoaXMpOwotICAgICAgICBwb3BvdmVyLmNvbnRlbnQgPSBjb2xvclBpY2tlci5lbGVtZW50
OwotICAgICAgICBwb3BvdmVyLnByZXNlbnQoYm91bmRzLnBhZCgyKSwgW1dlYkluc3BlY3Rvci5S
ZWN0RWRnZS5NSU5fWF0pOwotCi0gICAgICAgIGNvbG9yUGlja2VyLmNvbG9yID0gdGhpcy5fY29s
b3I7Ci0gICAgfQotCi0gICAgX2NvbG9yUGlja2VyQ29sb3JEaWRDaGFuZ2UoZXZlbnQpCi0gICAg
ewotICAgICAgICB0aGlzLl9jb2xvciA9IGV2ZW50LmRhdGEuY29sb3I7Ci0gICAgICAgIHRoaXMu
X3VwZGF0ZVN3YXRjaCgpOwotICAgIH0KLQotICAgIF9oYW5kbGVDb250ZXh0TWVudUV2ZW50KGV2
ZW50KQotICAgIHsKLSAgICAgICAgbGV0IGNvbnRleHRNZW51ID0gV2ViSW5zcGVjdG9yLkNvbnRl
eHRNZW51LmNyZWF0ZUZyb21FdmVudChldmVudCk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2NvbG9y
LmlzS2V5d29yZCgpICYmIHRoaXMuX2NvbG9yLmZvcm1hdCAhPT0gV2ViSW5zcGVjdG9yLkNvbG9y
LkZvcm1hdC5LZXl3b3JkKSB7Ci0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiRm9ybWF0OiBLZXl3b3JkIiksICgpID0+IHsKLSAgICAgICAg
ICAgICAgICB0aGlzLl9jb2xvci5mb3JtYXQgPSBXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0Lktl
eXdvcmQ7Ci0gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlU3dhdGNoKCk7Ci0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIGxldCBoZXhJbmZvID0gdGhpcy5fZ2V0TmV4dFZh
bGlkSEVYRm9ybWF0KCk7Ci0gICAgICAgIGlmIChoZXhJbmZvKSB7Ci0gICAgICAgICAgICBjb250
ZXh0TWVudS5hcHBlbmRJdGVtKGhleEluZm8udGl0bGUsICgpID0+IHsKLSAgICAgICAgICAgICAg
ICB0aGlzLl9jb2xvci5mb3JtYXQgPSBoZXhJbmZvLmZvcm1hdDsKLSAgICAgICAgICAgICAgICB0
aGlzLl91cGRhdGVTd2F0Y2goKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKHRoaXMuX2NvbG9yLnNpbXBsZSAmJiB0aGlzLl9jb2xvci5mb3JtYXQgIT09IFdlYklu
c3BlY3Rvci5Db2xvci5Gb3JtYXQuSFNMKSB7Ci0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBl
bmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRm9ybWF0OiBIU0wiKSwgKCkgPT4gewotICAg
ICAgICAgICAgICAgIHRoaXMuX2NvbG9yLmZvcm1hdCA9IFdlYkluc3BlY3Rvci5Db2xvci5Gb3Jt
YXQuSFNMOwotICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVN3YXRjaCgpOwotICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fY29sb3IuZm9ybWF0ICE9PSBXZWJJbnNw
ZWN0b3IuQ29sb3IuRm9ybWF0LkhTTEEpIHsKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVu
ZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGb3JtYXQ6IEhTTEEiKSwgKCkgPT4gewotICAg
ICAgICAgICAgICAgIHRoaXMuX2NvbG9yLmZvcm1hdCA9IFdlYkluc3BlY3Rvci5Db2xvci5Gb3Jt
YXQuSFNMQTsKLSAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVTd2F0Y2goKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRoaXMuX2NvbG9yLnNpbXBsZSAmJiB0
aGlzLl9jb2xvci5mb3JtYXQgIT09IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuUkdCKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
Rm9ybWF0OiBSR0IiKSwgKCkgPT4gewotICAgICAgICAgICAgICAgIHRoaXMuX2NvbG9yLmZvcm1h
dCA9IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuUkdCOwotICAgICAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZVN3YXRjaCgpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0gZWxzZSBpZiAodGhp
cy5fY29sb3IuZm9ybWF0ICE9PSBXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LlJHQkEpIHsKLSAg
ICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJG
b3JtYXQ6IFJHQkEiKSwgKCkgPT4gewotICAgICAgICAgICAgICAgIHRoaXMuX2NvbG9yLmZvcm1h
dCA9IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuUkdCQTsKLSAgICAgICAgICAgICAgICB0aGlz
Ll91cGRhdGVTd2F0Y2goKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgX2dldE5leHRWYWxpZEhFWEZvcm1hdCgpCi0gICAgewotICAgICAgICBmdW5jdGlvbiBoZXhN
YXRjaGVzQ3VycmVudENvbG9yKGhleEluZm8pIHsKLSAgICAgICAgICAgIGxldCBuZXh0SXNTaW1w
bGUgPSBoZXhJbmZvLmZvcm1hdCA9PT0gV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5TaG9ydEhF
WCB8fCBoZXhJbmZvLmZvcm1hdCA9PT0gV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5IRVg7Ci0g
ICAgICAgICAgICBpZiAobmV4dElzU2ltcGxlICYmICF0aGlzLl9jb2xvci5zaW1wbGUpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBsZXQgbmV4dElzU2hvcnQg
PSBoZXhJbmZvLmZvcm1hdCA9PT0gV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5TaG9ydEhFWCB8
fCBoZXhJbmZvLmZvcm1hdCA9PT0gV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5TaG9ydEhFWEFs
cGhhOwotICAgICAgICAgICAgaWYgKG5leHRJc1Nob3J0ICYmICF0aGlzLl9jb2xvci5jYW5CZVNl
cmlhbGl6ZWRBc1Nob3J0SEVYKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IGhleEZv
cm1hdHMgPSBbCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZm9ybWF0OiBXZWJJbnNw
ZWN0b3IuQ29sb3IuRm9ybWF0LlNob3J0SEVYLAotICAgICAgICAgICAgICAgIHRpdGxlOiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkZvcm1hdDogU2hvcnQgSGV4IikKLSAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZm9ybWF0OiBXZWJJbnNwZWN0b3IuQ29sb3Iu
Rm9ybWF0LlNob3J0SEVYQWxwaGEsCi0gICAgICAgICAgICAgICAgdGl0bGU6IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiRm9ybWF0OiBTaG9ydCBIZXggd2l0aCBBbHBoYSIpCi0gICAgICAgICAgICB9
LAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZvcm1hdDogV2ViSW5zcGVjdG9yLkNv
bG9yLkZvcm1hdC5IRVgsCi0gICAgICAgICAgICAgICAgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiRm9ybWF0OiBIZXgiKQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBmb3JtYXQ6IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuSEVYQWxwaGEsCi0g
ICAgICAgICAgICAgICAgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRm9ybWF0OiBIZXgg
d2l0aCBBbHBoYSIpCi0gICAgICAgICAgICB9Ci0gICAgICAgIF07Ci0KLSAgICAgICAgLy8gRklY
TUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTI0OTc+IEFycm93IGZ1bmN0aW9uczogInRoaXMi
IGlzbid0IGxleGljYWxseSBib3VuZAotICAgICAgICBsZXQgY3VycmVudENvbG9ySXNIRVggPSBo
ZXhGb3JtYXRzLnNvbWUoZnVuY3Rpb24oaW5mbykgewotICAgICAgICAgICAgcmV0dXJuIGluZm8u
Zm9ybWF0ID09PSB0aGlzLl9jb2xvci5mb3JtYXQ7Ci0gICAgICAgIH0uYmluZCh0aGlzKSk7Ci0K
LSAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZXhGb3JtYXRzLmxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgICAgICBpZiAoY3VycmVudENvbG9ySXNIRVggJiYgdGhpcy5fY29sb3IuZm9ybWF0ICE9
PSBoZXhGb3JtYXRzW2ldLmZvcm1hdCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAg
ICAgICAgICAgZm9yIChsZXQgaiA9IH5+Y3VycmVudENvbG9ySXNIRVg7IGogPCBoZXhGb3JtYXRz
Lmxlbmd0aDsgKytqKSB7Ci0gICAgICAgICAgICAgICAgbGV0IG5leHRJbmRleCA9IChpICsgaikg
JSBoZXhGb3JtYXRzLmxlbmd0aDsKLSAgICAgICAgICAgICAgICBpZiAoaGV4TWF0Y2hlc0N1cnJl
bnRDb2xvci5jYWxsKHRoaXMsIGhleEZvcm1hdHNbbmV4dEluZGV4XSkpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBoZXhGb3JtYXRzW25leHRJbmRleF07Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gaGV4Rm9ybWF0
c1swXTsKLSAgICB9Ci0KLSAgICBfdXBkYXRlU3dhdGNoKGRvbnRGaXJlRXZlbnRzKQotICAgIHsK
LSAgICAgICAgdGhpcy5fc3dhdGNoSW5uZXJFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9
IHRoaXMuX2NvbG9yLnRvU3RyaW5nKCkgfHwgbnVsbDsKLSAgICAgICAgaWYgKCFkb250RmlyZUV2
ZW50cykKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5Db2xvclN3YXRjaC5FdmVudC5Db2xvckNoYW5nZWQsIHtjb2xvcjogdGhpcy5fY29sb3J9
KTsKLSAgICB9Ci19OwotCi1XZWJJbnNwZWN0b3IuQ29sb3JTd2F0Y2guRXZlbnQgPSB7Ci0gICAg
Q29sb3JDaGFuZ2VkOiAiY29sb3Itc3dhdGNoLWNvbG9yLWNoYW5nZWQiCi19OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5saW5lU3dhdGNo
LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0lubGluZVN3
YXRjaC5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTVlMWQxOGVkODlkYTRiODA4YWUyNDQyNGQ2ZDg3NzNiNWQy
MmRhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0lubGluZVN3YXRjaC5jc3MKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgRGV2aW4gUm91c3NvIDxkY3JvdXNzbyt3ZWJraXRAZ21haWwuY29tPi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLmlubGluZS1zd2F0Y2ggeworICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgd2lkdGg6IDFl
bTsKKyAgICBoZWlnaHQ6IDFlbTsKKyAgICBtYXJnaW4tcmlnaHQ6IDNweDsKKyAgICB2ZXJ0aWNh
bC1hbGlnbjogLTJweDsKKyAgICAvKiBNYWtlIGEgY2hlY2tlcmVkIGJhY2tncm91bmQgZm9yIHRy
YW5zcGFyZW50IGNvbG9ycyB0byBzaG93IGFnYWluc3QuICovCisgICAgYmFja2dyb3VuZC1pbWFn
ZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAlLCA4MCUpLCBoc2woMCwgMCUs
IDgwJSkpLAorICAgICAgICAgICAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCh0byBib3R0b20s
IGhzbCgwLCAwJSwgODAlKSwgaHNsKDAsIDAlLCA4MCUpKTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiB3aGl0ZTsKKyAgICBiYWNrZ3JvdW5kLXNpemU6IDUwJTsKKyAgICBiYWNrZ3JvdW5kLXBvc2l0
aW9uOiB0b3AgbGVmdCwgYm90dG9tIHJpZ2h0OworICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1y
ZXBlYXQ7CisgICAgY3Vyc29yOiBkZWZhdWx0OworICAgIG92ZXJmbG93OiBoaWRkZW47Cit9CisK
Ky5pbmxpbmUtc3dhdGNoLmJlemllciB7CisgICAgbWFyZ2luLXJpZ2h0OiAycHg7CisgICAgY29u
dGVudDogdXJsKC4uL0ltYWdlcy9DdWJpY0Jlemllci5zdmcpOworICAgIGJhY2tncm91bmQ6IG5v
bmU7Cit9CisKKy5pbmxpbmUtc3dhdGNoLmJlemllcjpob3ZlciB7CisgICAgZmlsdGVyOiBicmln
aHRuZXNzKDAuOSk7Cit9CisKKy5pbmxpbmUtc3dhdGNoLmJlemllcjphY3RpdmUgeworICAgIGZp
bHRlcjogYnJpZ2h0bmVzcygwLjgpOworfQorCitAbWVkaWEgKC13ZWJraXQtbWF4LWRldmljZS1w
aXhlbC1yYXRpbzogMSkgeworICAgIC8qIEVuc3VyZSB0aGUgY29sb3Igc3dhdGNoIGlzIGV2ZW4g
YnkgZXZlbiBzbyB0aGF0IGl0IGxvb2tzIG9rYXkgY2hlY2tlcmVkLiAqLworICAgIC5pbmxpbmUt
c3dhdGNoIHsKKyAgICAgICAgdmVydGljYWwtYWxpZ246IC0xcHg7CisgICAgICAgIHdpZHRoOiAx
MHB4OworICAgICAgICBoZWlnaHQ6IDEwcHg7CisgICAgfQorfQorCisuaW5saW5lLXN3YXRjaCA+
IHNwYW4geworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgcmlnaHQ6
IDA7CisgICAgYm90dG9tOiAwOworICAgIGxlZnQ6IDA7CisgICAgYm9yZGVyOiAxcHggc29saWQg
aHNsYSgwLCAwJSwgMjUlLCAwLjQpOworICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworfQorCisu
aW5saW5lLXN3YXRjaDpob3ZlciA+IHNwYW4geworICAgIGJvcmRlci1jb2xvcjogaHNsYSgwLCAw
JSwgMjUlLCAwLjgpOworfQorCisuaW5saW5lLXN3YXRjaDphY3RpdmUgPiBzcGFuIHsKKyAgICBi
b3JkZXItY29sb3I6IGhzbCgwLCAwJSwgMjUlKTsKK30KKworLmlubGluZS1zd2F0Y2guYmV6aWVy
ID4gc3BhbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5saW5lU3dhdGNoLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5saW5lU3dhdGNoLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjkyOTMzN2YyZGQ2ODg5YzAxZmVmNWM2OTk0NGVjYTE0MWJlYzE0MDkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Jbmxp
bmVTd2F0Y2guanMKQEAgLTAsMCArMSwyNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2IERl
dmluIFJvdXNzbyA8ZGNyb3Vzc28rd2Via2l0QGdtYWlsLmNvbT4uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2ggPSBjbGFzcyBJbmxpbmVT
d2F0Y2ggZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IodHlw
ZSwgdmFsdWUsIHJlYWRPbmx5KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0
aGlzLl90eXBlID0gdHlwZTsKKworICAgICAgICB0aGlzLl9zd2F0Y2hFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICB0aGlzLl9zd2F0Y2hFbGVtZW50LmNs
YXNzTGlzdC5hZGQoImlubGluZS1zd2F0Y2giLCB0aGlzLl90eXBlLnNwbGl0KCItIikubGFzdFZh
bHVlKTsKKworICAgICAgICBpZiAodGhpcy5fdHlwZSA9PT0gV2ViSW5zcGVjdG9yLklubGluZVN3
YXRjaC5UeXBlLkJlemllcikKKyAgICAgICAgICAgIHRoaXMuX3N3YXRjaEVsZW1lbnQudGl0bGUg
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsaWNrIHRvIG9wZW4gYSBjdWJpYy1iZXppZXIgZWRp
dG9yLiIpOworICAgICAgICBlbHNlIGlmICh0aGlzLl90eXBlID09PSBXZWJJbnNwZWN0b3IuSW5s
aW5lU3dhdGNoLlR5cGUuR3JhZGllbnQpCisgICAgICAgICAgICB0aGlzLl9zd2F0Y2hFbGVtZW50
LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDbGljayB0byBzZWxlY3QgYSBncmFkaWVu
dC4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fc3dhdGNoRWxlbWVudC50aXRs
ZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xpY2sgdG8gc2VsZWN0IGEgY29sb3IuIFNoaWZ0
LWNsaWNrIHRvIHN3aXRjaCBjb2xvciBmb3JtYXRzLiIpOworCisgICAgICAgIGlmICghcmVhZE9u
bHkpIHsKKyAgICAgICAgICAgIHRoaXMuX3N3YXRjaEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCB0aGlzLl9zd2F0Y2hFbGVtZW50Q2xpY2tlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAg
ICAgIGlmICh0aGlzLl90eXBlID09PSBXZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoLlR5cGUuQ29s
b3IpCisgICAgICAgICAgICAgICAgdGhpcy5fc3dhdGNoRWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSk7
CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9zd2F0Y2hJbm5lckVsZW1lbnQgPSB0aGlzLl9z
d2F0Y2hFbGVtZW50LmNyZWF0ZUNoaWxkKCJzcGFuIik7CisKKyAgICAgICAgdGhpcy5fdmFsdWUg
PSB2YWx1ZSB8fCB0aGlzLl9mYWxsYmFja1ZhbHVlKCk7CisKKyAgICAgICAgdGhpcy5fdXBkYXRl
U3dhdGNoKCk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgZWxlbWVudCgpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc3dhdGNoRWxlbWVudDsKKyAgICB9CisKKyAgICBn
ZXQgdmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlOworICAgIH0KKwor
ICAgIHNldCB2YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7
CisgICAgICAgIHRoaXMuX3VwZGF0ZVN3YXRjaCh0cnVlKTsKKyAgICB9CisKKyAgICAvLyBQcml2
YXRlCisKKyAgICBfZmFsbGJhY2tWYWx1ZSgpCisgICAgeworICAgICAgICBpZiAodGhpcy5fdHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLklubGluZVN3YXRjaC5UeXBlLkJlemllcikKKyAgICAgICAgICAg
IHJldHVybiBXZWJJbnNwZWN0b3IuQ3ViaWNCZXppZXIuZnJvbVN0cmluZygibGluZWFyIik7CisK
KyAgICAgICAgaWYgKHRoaXMuX3R5cGUgPT09IFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2guVHlw
ZS5HcmFkaWVudCkKKyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuR3JhZGllbnQuZnJv
bVN0cmluZygibGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50LCB0cmFuc3BhcmVudCkiKTsKKwor
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21TdHJpbmcoInRyYW5zcGFyZW50
Iik7CisgICAgfQorCisgICAgX3VwZGF0ZVN3YXRjaChkb250RmlyZUV2ZW50cykKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzLl90eXBlID09PSBXZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoLlR5cGUu
Q29sb3IgfHwgdGhpcy5fdHlwZSA9PT0gV2ViSW5zcGVjdG9yLklubGluZVN3YXRjaC5UeXBlLkdy
YWRpZW50KQorICAgICAgICAgICAgdGhpcy5fc3dhdGNoSW5uZXJFbGVtZW50LnN0eWxlLmJhY2tn
cm91bmQgPSB0aGlzLl92YWx1ZSA/IHRoaXMuX3ZhbHVlLnRvU3RyaW5nKCkgOiBudWxsOworCisg
ICAgICAgIGlmICghZG9udEZpcmVFdmVudHMpCisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoLkV2ZW50LlZhbHVlQ2hhbmdl
ZCwge3ZhbHVlOiB0aGlzLl92YWx1ZX0pOworICAgIH0KKworICAgIF9zd2F0Y2hFbGVtZW50Q2xp
Y2tlZChldmVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl90eXBlID09PSBXZWJJbnNwZWN0
b3IuSW5saW5lU3dhdGNoLlR5cGUuQ29sb3IgJiYgZXZlbnQuc2hpZnRLZXkgJiYgdGhpcy5fdmFs
dWUpIHsKKyAgICAgICAgICAgIGxldCBuZXh0Rm9ybWF0ID0gdGhpcy5fdmFsdWUubmV4dEZvcm1h
dCgpOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQobmV4dEZvcm1hdCk7CisgICAgICAgICAg
ICBpZiAoIW5leHRGb3JtYXQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICB0aGlzLl92YWx1ZS5mb3JtYXQgPSBuZXh0Rm9ybWF0OworICAgICAgICAgICAgdGhpcy5fdXBk
YXRlU3dhdGNoKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBs
ZXQgYm91bmRzID0gV2ViSW5zcGVjdG9yLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KHRoaXMuX3N3
YXRjaEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOworICAgICAgICBsZXQgcG9wb3Zl
ciA9IG5ldyBXZWJJbnNwZWN0b3IuUG9wb3Zlcih0aGlzKTsKKworICAgICAgICBsZXQgdmFsdWVF
ZGl0b3IgPSBudWxsOworICAgICAgICBpZiAodGhpcy5fdHlwZSA9PT0gV2ViSW5zcGVjdG9yLklu
bGluZVN3YXRjaC5UeXBlLkJlemllcikgeworICAgICAgICAgICAgdmFsdWVFZGl0b3IgPSBuZXcg
V2ViSW5zcGVjdG9yLkJlemllckVkaXRvcjsKKyAgICAgICAgICAgIHZhbHVlRWRpdG9yLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJlemllckVkaXRvci5FdmVudC5CZXppZXJDaGFuZ2Vk
LCB0aGlzLl92YWx1ZUVkaXRvclZhbHVlRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgfSBlbHNl
IGlmICh0aGlzLl90eXBlID09PSBXZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoLlR5cGUuR3JhZGll
bnQpIHsKKyAgICAgICAgICAgIHZhbHVlRWRpdG9yID0gbmV3IFdlYkluc3BlY3Rvci5HcmFkaWVu
dEVkaXRvcjsKKyAgICAgICAgICAgIHZhbHVlRWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkdyYWRpZW50RWRpdG9yLkV2ZW50LkdyYWRpZW50Q2hhbmdlZCwgdGhpcy5fdmFsdWVF
ZGl0b3JWYWx1ZURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgICAgICB2YWx1ZUVkaXRvci5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5HcmFkaWVudEVkaXRvci5FdmVudC5Db2xvclBpY2tl
clRvZ2dsZWQsIChldmVudCkgPT4gcG9wb3Zlci51cGRhdGUoKSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICB2YWx1ZUVkaXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXI7
CisgICAgICAgICAgICB2YWx1ZUVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5D
b2xvclBpY2tlci5FdmVudC5Db2xvckNoYW5nZWQsIHRoaXMuX3ZhbHVlRWRpdG9yVmFsdWVEaWRD
aGFuZ2UsIHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gdmFs
dWVFZGl0b3IuZWxlbWVudDsKKyAgICAgICAgcG9wb3Zlci5wcmVzZW50KGJvdW5kcy5wYWQoMiks
IFtXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUlOX1hdKTsKKworICAgICAgICBsZXQgdmFsdWUgPSB0
aGlzLl92YWx1ZSB8fCB0aGlzLl9mYWxsYmFja1ZhbHVlKCk7CisgICAgICAgIGlmICh0aGlzLl90
eXBlID09PSBXZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoLlR5cGUuQmV6aWVyKQorICAgICAgICAg
ICAgdmFsdWVFZGl0b3IuYmV6aWVyID0gdmFsdWU7CisgICAgICAgIGVsc2UgaWYgKHRoaXMuX3R5
cGUgPT09IFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2guVHlwZS5HcmFkaWVudCkKKyAgICAgICAg
ICAgIHZhbHVlRWRpdG9yLmdyYWRpZW50ID0gdmFsdWU7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHZhbHVlRWRpdG9yLmNvbG9yID0gdmFsdWU7CisgICAgfQorCisgICAgX3ZhbHVlRWRpdG9y
VmFsdWVEaWRDaGFuZ2UoZXZlbnQpCisgICAgeworICAgICAgICBpZiAodGhpcy5fdHlwZSA9PT0g
V2ViSW5zcGVjdG9yLklubGluZVN3YXRjaC5UeXBlLkJlemllcikKKyAgICAgICAgICAgIHRoaXMu
X3ZhbHVlID0gZXZlbnQuZGF0YS5iZXppZXI7CisgICAgICAgIGVsc2UgaWYgKHRoaXMuX3R5cGUg
PT09IFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2guVHlwZS5HcmFkaWVudCkKKyAgICAgICAgICAg
IHRoaXMuX3ZhbHVlID0gZXZlbnQuZGF0YS5ncmFkaWVudDsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgdGhpcy5fdmFsdWUgPSBldmVudC5kYXRhLmNvbG9yOworCisgICAgICAgIHRoaXMuX3Vw
ZGF0ZVN3YXRjaCgpOworICAgIH0KKworICAgIF9oYW5kbGVDb250ZXh0TWVudUV2ZW50KGV2ZW50
KQorICAgIHsKKyAgICAgICAgbGV0IGNvbnRleHRNZW51ID0gV2ViSW5zcGVjdG9yLkNvbnRleHRN
ZW51LmNyZWF0ZUZyb21FdmVudChldmVudCk7CisKKyAgICAgICAgaWYgKHRoaXMuX3ZhbHVlLmlz
S2V5d29yZCgpICYmIHRoaXMuX3ZhbHVlLmZvcm1hdCAhPT0gV2ViSW5zcGVjdG9yLkNvbG9yLkZv
cm1hdC5LZXl3b3JkKSB7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRm9ybWF0OiBLZXl3b3JkIiksICgpID0+IHsKKyAgICAgICAgICAg
ICAgICB0aGlzLl92YWx1ZS5mb3JtYXQgPSBXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LktleXdv
cmQ7CisgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlU3dhdGNoKCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBoZXhJbmZvID0gdGhpcy5fZ2V0TmV4dFZhbGlk
SEVYRm9ybWF0KCk7CisgICAgICAgIGlmIChoZXhJbmZvKSB7CisgICAgICAgICAgICBjb250ZXh0
TWVudS5hcHBlbmRJdGVtKGhleEluZm8udGl0bGUsICgpID0+IHsKKyAgICAgICAgICAgICAgICB0
aGlzLl92YWx1ZS5mb3JtYXQgPSBoZXhJbmZvLmZvcm1hdDsKKyAgICAgICAgICAgICAgICB0aGlz
Ll91cGRhdGVTd2F0Y2goKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKHRoaXMuX3ZhbHVlLnNpbXBsZSAmJiB0aGlzLl92YWx1ZS5mb3JtYXQgIT09IFdlYkluc3Bl
Y3Rvci5Db2xvci5Gb3JtYXQuSFNMKSB7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJ
dGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRm9ybWF0OiBIU0wiKSwgKCkgPT4geworICAgICAg
ICAgICAgICAgIHRoaXMuX3ZhbHVlLmZvcm1hdCA9IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQu
SFNMOworICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVN3YXRjaCgpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fdmFsdWUuZm9ybWF0ICE9PSBXZWJJbnNwZWN0
b3IuQ29sb3IuRm9ybWF0LkhTTEEpIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0
ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGb3JtYXQ6IEhTTEEiKSwgKCkgPT4geworICAgICAg
ICAgICAgICAgIHRoaXMuX3ZhbHVlLmZvcm1hdCA9IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQu
SFNMQTsKKyAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVTd2F0Y2goKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX3ZhbHVlLnNpbXBsZSAmJiB0aGlz
Ll92YWx1ZS5mb3JtYXQgIT09IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuUkdCKSB7CisgICAg
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRm9y
bWF0OiBSR0IiKSwgKCkgPT4geworICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlLmZvcm1hdCA9
IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuUkdCOworICAgICAgICAgICAgICAgIHRoaXMuX3Vw
ZGF0ZVN3YXRjaCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5f
dmFsdWUuZm9ybWF0ICE9PSBXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LlJHQkEpIHsKKyAgICAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGb3Jt
YXQ6IFJHQkEiKSwgKCkgPT4geworICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlLmZvcm1hdCA9
IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuUkdCQTsKKyAgICAgICAgICAgICAgICB0aGlzLl91
cGRhdGVTd2F0Y2goKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorCisgICAg
X2dldE5leHRWYWxpZEhFWEZvcm1hdCgpCisgICAgeworICAgICAgICBpZiAodGhpcy5fdHlwZSAh
PT0gV2ViSW5zcGVjdG9yLklubGluZVN3YXRjaC5UeXBlLkNvbG9yKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIGZ1bmN0aW9uIGhleE1hdGNoZXNDdXJyZW50Q29sb3IoaGV4
SW5mbykgeworICAgICAgICAgICAgbGV0IG5leHRJc1NpbXBsZSA9IGhleEluZm8uZm9ybWF0ID09
PSBXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LlNob3J0SEVYIHx8IGhleEluZm8uZm9ybWF0ID09
PSBXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LkhFWDsKKyAgICAgICAgICAgIGlmIChuZXh0SXNT
aW1wbGUgJiYgIXRoaXMuX3ZhbHVlLnNpbXBsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgICAgIGxldCBuZXh0SXNTaG9ydCA9IGhleEluZm8uZm9ybWF0ID09PSBX
ZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LlNob3J0SEVYIHx8IGhleEluZm8uZm9ybWF0ID09PSBX
ZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LlNob3J0SEVYQWxwaGE7CisgICAgICAgICAgICBpZiAo
bmV4dElzU2hvcnQgJiYgIXRoaXMuX3ZhbHVlLmNhbkJlU2VyaWFsaXplZEFzU2hvcnRIRVgoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgaGV4Rm9ybWF0cyA9IFsKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBmb3JtYXQ6IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuU2hv
cnRIRVgsCisgICAgICAgICAgICAgICAgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRm9y
bWF0OiBTaG9ydCBIZXgiKQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBmb3JtYXQ6IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuU2hvcnRIRVhBbHBoYSwK
KyAgICAgICAgICAgICAgICB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGb3JtYXQ6IFNo
b3J0IEhleCB3aXRoIEFscGhhIikKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZm9ybWF0OiBXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LkhFWCwKKyAgICAg
ICAgICAgICAgICB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGb3JtYXQ6IEhleCIpCisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZvcm1hdDogV2Vi
SW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5IRVhBbHBoYSwKKyAgICAgICAgICAgICAgICB0aXRsZTog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGb3JtYXQ6IEhleCB3aXRoIEFscGhhIikKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgXTsKKworICAgICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzE1MjQ5Nz4gQXJyb3cgZnVuY3Rpb25zOiAidGhpcyIgaXNuJ3QgbGV4aWNhbGx5IGJvdW5k
CisgICAgICAgIGxldCBjdXJyZW50Q29sb3JJc0hFWCA9IGhleEZvcm1hdHMuc29tZShmdW5jdGlv
bihpbmZvKSB7CisgICAgICAgICAgICByZXR1cm4gaW5mby5mb3JtYXQgPT09IHRoaXMuX3ZhbHVl
LmZvcm1hdDsKKyAgICAgICAgfS5iaW5kKHRoaXMpKTsKKworICAgICAgICBmb3IgKGxldCBpID0g
MDsgaSA8IGhleEZvcm1hdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChjdXJyZW50
Q29sb3JJc0hFWCAmJiB0aGlzLl92YWx1ZS5mb3JtYXQgIT09IGhleEZvcm1hdHNbaV0uZm9ybWF0
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBmb3IgKGxldCBqID0g
fn5jdXJyZW50Q29sb3JJc0hFWDsgaiA8IGhleEZvcm1hdHMubGVuZ3RoOyArK2opIHsKKyAgICAg
ICAgICAgICAgICBsZXQgbmV4dEluZGV4ID0gKGkgKyBqKSAlIGhleEZvcm1hdHMubGVuZ3RoOwor
ICAgICAgICAgICAgICAgIGlmIChoZXhNYXRjaGVzQ3VycmVudENvbG9yLmNhbGwodGhpcywgaGV4
Rm9ybWF0c1tuZXh0SW5kZXhdKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhleEZvcm1h
dHNbbmV4dEluZGV4XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBudWxsOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBoZXhGb3JtYXRzWzBdOworICAgIH0KK307CisKK1dl
Ykluc3BlY3Rvci5JbmxpbmVTd2F0Y2guVHlwZSA9IHsKKyAgICBDb2xvcjogImlubGluZS1zd2F0
Y2gtdHlwZS1jb2xvciIsCisgICAgR3JhZGllbnQ6ICJpbmxpbmUtc3dhdGNoLXR5cGUtZ3JhZGll
bnQiLAorICAgIEJlemllcjogImlubGluZS1zd2F0Y2gtdHlwZS1iZXppZXIiCit9OworCitXZWJJ
bnNwZWN0b3IuSW5saW5lU3dhdGNoLkV2ZW50ID0geworICAgIFZhbHVlQ2hhbmdlZDogImlubGlu
ZS1zd2F0Y2gtdmFsdWUtY2hhbmdlZCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIuY3Nz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVC
YWNrZ3JvdW5kUGlja2VyLmNzcwppbmRleCA1ZmJlNDM5NzZiY2MxNWQwZjI3ZjQzYmY2Y2M3NGQ3
YzBkYzliNmZiLi5mYzQ1ZDg4M2JhNWFmNTg0MGFlMmM0NmU2MjBhZTk5YmUyNWIyZmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxT
dHlsZUJhY2tncm91bmRQaWNrZXIuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlci5jc3MKQEAgLTI3LDQ2
ICsyNywzMSBAQAogICAgIGRpc3BsYXk6IGZsZXg7CiB9CiAKLS52aXN1YWwtc3R5bGUtcHJvcGVy
dHktY29udGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12
YWx1ZS1jb250YWluZXIgPiAuY29sb3ItZ3JhZGllbnQtc3dhdGNoIHsKLSAgICBkaXNwbGF5OiBu
b25lOwotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1j
b250YWluZXIgPiAuaW5saW5lLXN3YXRjaC5ncmFkaWVudCB7CiAgICAgd2lkdGg6IDM4cHg7CiAg
ICAgaGVpZ2h0OiAxOHB4OwotICAgIG1hcmdpbi10b3A6IDFweDsKLSAgICAvKiBNYWtlIGEgY2hl
Y2tlcmVkIGJhY2tncm91bmQgZm9yIHRyYW5zcGFyZW50IGNvbG9ycyB0byBzaG93IGFnYWluc3Qu
ICovCi0gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNs
KDAsIDAlLCA4MCUpLCBoc2woMCwgMCUsIDgwJSkpLAotICAgICAgICAgICAgICAgICAgICAgIGxp
bmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgwLCAwJSwgODAlKSwgaHNsKDAsIDAlLCA4MCUp
KTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKLSAgICBiYWNrZ3JvdW5kLXNpemU6IDUw
JTsKLSAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3AgbGVmdCwgYm90dG9tIHJpZ2h0OwotICAg
IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgbWFyZ2luOiAxcHggMCAwOwogICAg
IGJvcmRlcjogMXB4IHNvbGlkIGhzbGEoMCwgMCUsIDI1JSwgMC40KTsKICAgICBib3JkZXItcmFk
aXVzOiA0cHg7Ci0gICAgb3ZlcmZsb3c6IGhpZGRlbjsKLSAgICBjdXJzb3I6IGRlZmF1bHQ7CiB9
CiAKLS52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAuY29sb3ItZ3JhZGllbnQt
c3dhdGNoOmhvdmVyIHsKLSAgICBib3JkZXItY29sb3I6IGhzbGEoMCwgMCUsIDI1JSwgMC44KTsK
Ky52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXI6bm90KC5ncmFkaWVudC12YWx1ZSkg
PiAuaW5saW5lLXN3YXRjaC5ncmFkaWVudCB7CisgICAgZGlzcGxheTogbm9uZTsKIH0KIAotLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFja2dyb3VuZC1waWNrZXIgPiAudmlzdWFs
LXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5jb2xvci1ncmFkaWVudC1zd2F0Y2g6
YWN0aXZlIHsKLSAgICBib3JkZXItY29sb3I6IGhzbCgwLCAwJSwgMjUlKTsKKy52aXN1YWwtc3R5
bGUtcHJvcGVydHktY29udGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAuaW5saW5lLXN3YXRjaC5ncmFkaWVudDpob3ZlciB7
CisgICAgYm9yZGVyLWNvbG9yOiBoc2xhKDAsIDAlLCAyNSUsIDAuOCk7CiB9CiAKLS52aXN1YWwt
c3R5bGUtcHJvcGVydHktY29udGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAuY29sb3ItZ3JhZGllbnQtc3dhdGNoID4gc3Bh
biB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICByaWdodDogMDsK
LSAgICBib3R0b206IDA7Ci0gICAgbGVmdDogMDsKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1j
b250YWluZXIgPiAuaW5saW5lLXN3YXRjaC5ncmFkaWVudDphY3RpdmUgeworICAgIGJvcmRlci1j
b2xvcjogaHNsKDAsIDAlLCAyNSUpOwogfQogCi0udmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRh
aW5lci5iYWNrZ3JvdW5kLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29u
dGFpbmVyLmdyYWRpZW50LXZhbHVlID4gLmNvbG9yLWdyYWRpZW50LXN3YXRjaCB7Ci0gICAgZGlz
cGxheTogYmxvY2s7CisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5k
LXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmlubGlu
ZS1zd2F0Y2guZ3JhZGllbnQgPiBzcGFuIHsKKyAgICBib3JkZXI6IG5vbmU7CiB9CiAKLS52aXN1
YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIuZ3JhZGllbnQtdmFsdWUgPiAuY29sb3ItZ3Jh
ZGllbnQtc3dhdGNoICsgLnZhbHVlLWlucHV0IHsKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1j
b250YWluZXIuZ3JhZGllbnQtdmFsdWUgPiAuaW5saW5lLXN3YXRjaC5ncmFkaWVudCArIC52YWx1
ZS1pbnB1dCB7CiAgICAgbWFyZ2luLWxlZnQ6IC0zcHg7CiAgICAgcGFkZGluZy1sZWZ0OiA1cHg7
CiAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tl
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0
eWxlQmFja2dyb3VuZFBpY2tlci5qcwppbmRleCA0MmRkZjdjNzA3ZGFjNmEwZTU0NGEwZWY3ZjA2
OGRiYTlkMGEwYjYwLi5hNTE2ZmI3NmQyYTE4NTRiMTk0ZjRhM2VkMjZiMTllOTEzYjYwNGIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1
YWxTdHlsZUJhY2tncm91bmRQaWNrZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLmpzCkBAIC0yOSwx
NSArMjksOSBAQCBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyID0gY2xh
c3MgVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyIGV4dAogICAgIHsKICAgICAgICAgc3VwZXIo
cHJvcGVydHlOYW1lcywgdGV4dCwgcG9zc2libGVWYWx1ZXMsIG51bGwsICJiYWNrZ3JvdW5kLXBp
Y2tlciIsIGxheW91dFJldmVyc2VkKTsKIAotICAgICAgICB0aGlzLl9ncmFkaWVudFN3YXRjaEVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgIHRoaXMuX2dy
YWRpZW50U3dhdGNoRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb2xvci1ncmFkaWVudC1zd2F0Y2gi
KTsKLSAgICAgICAgdGhpcy5fZ3JhZGllbnRTd2F0Y2hFbGVtZW50LnRpdGxlID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJDbGljayB0byBzZWxlY3QgYSBncmFkaWVudCIpOwotICAgICAgICB0aGlz
Ll9ncmFkaWVudFN3YXRjaEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9n
cmFkaWVudFN3YXRjaENsaWNrZWQuYmluZCh0aGlzKSk7Ci0KLSAgICAgICAgbGV0IGdyYWRpZW50
U3dhdGNoSW5uZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAg
ICAgICB0aGlzLl9ncmFkaWVudFN3YXRjaEVsZW1lbnQuYXBwZW5kQ2hpbGQoZ3JhZGllbnRTd2F0
Y2hJbm5lckVsZW1lbnQpOwotCi0gICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5fZ3JhZGllbnRTd2F0Y2hFbGVtZW50KTsKKyAgICAgICAgdGhpcy5fZ3JhZGllbnRT
d2F0Y2ggPSBuZXcgV2ViSW5zcGVjdG9yLklubGluZVN3YXRjaChXZWJJbnNwZWN0b3IuSW5saW5l
U3dhdGNoLlR5cGUuR3JhZGllbnQpOworICAgICAgICB0aGlzLl9ncmFkaWVudFN3YXRjaC5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2guRXZlbnQuVmFsdWVDaGFuZ2Vk
LCB0aGlzLl9ncmFkaWVudFN3YXRjaENvbG9yQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgIHRoaXMu
Y29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZ3JhZGllbnRTd2F0Y2guZWxlbWVudCk7
CiAKICAgICAgICAgdGhpcy5fdmFsdWVJbnB1dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpbnB1dCIpOwogICAgICAgICB0aGlzLl92YWx1ZUlucHV0RWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJ2YWx1ZS1pbnB1dCIpOwpAQCAtODYsOSArODAsNiBAQCBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVCYWNrZ3JvdW5kUGlja2VyID0gY2xhc3MgVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2Vy
IGV4dAogICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3ZhbHVl
VHlwZVBpY2tlckVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX2N1cnJlbnRUeXBlID0gInVybCI7
Ci0gICAgICAgIHRoaXMuX2dyYWRpZW50ID0gbnVsbDsKLQotICAgICAgICB0aGlzLl91cGRhdGVH
cmFkaWVudFN3YXRjaCgpOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwpAQCAtMTE0LDExICsxMDUs
NyBAQCBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyID0gY2xhc3MgVmlz
dWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyIGV4dAogICAgICAgICBpZiAoIXRoaXMuX2N1cnJlbnRU
eXBlLmluY2x1ZGVzKCJncmFkaWVudCIpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IHRoaXMuX2dyYWRpZW50ID0gV2ViSW5zcGVjdG9yLkdyYWRpZW50LmZyb21TdHJpbmcodmFsdWUp
OwotICAgICAgICBpZiAoIXRoaXMuX2dyYWRpZW50KQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIHRoaXMuX3VwZGF0ZUdyYWRpZW50U3dhdGNoKCk7CisgICAgICAgIHRoaXMuX3VwZGF0
ZUdyYWRpZW50KCk7CiAgICAgfQogCiAgICAgZ2V0IHN5bnRoZXNpemVkVmFsdWUoKQpAQCAtMTU5
LDQ5ICsxNDYsMjQgQEAgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlciA9
IGNsYXNzIFZpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlciBleHQKICAgICAgICAgfQogICAgIH0K
IAotICAgIF91cGRhdGVHcmFkaWVudFN3YXRjaCgpCisgICAgX3VwZGF0ZUdyYWRpZW50KCkKICAg
ICB7Ci0gICAgICAgIHRoaXMuX2dyYWRpZW50U3dhdGNoRWxlbWVudC5maXJzdENoaWxkLnN0eWxl
LmJhY2tncm91bmQgPSAiIjsKICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnN5bnRoZXNpemVk
VmFsdWU7CiAgICAgICAgIGlmICghdmFsdWUgfHwgdmFsdWUgPT09IHRoaXMuX2N1cnJlbnRUeXBl
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX2dyYWRpZW50ID0gV2ViSW5z
cGVjdG9yLkdyYWRpZW50LmZyb21TdHJpbmcodmFsdWUpOwotICAgICAgICB0aGlzLl9ncmFkaWVu
dFN3YXRjaEVsZW1lbnQuZmlyc3RDaGlsZC5zdHlsZS5iYWNrZ3JvdW5kID0gdGhpcy5fZ3JhZGll
bnQgPyB2YWx1ZSA6IG51bGw7Ci0gICAgfQotCi0gICAgX2dyYWRpZW50U3dhdGNoQ2xpY2tlZChl
dmVudCkKLSAgICB7Ci0gICAgICAgIGxldCBib3VuZHMgPSBXZWJJbnNwZWN0b3IuUmVjdC5yZWN0
RnJvbUNsaWVudFJlY3QodGhpcy5fZ3JhZGllbnRTd2F0Y2hFbGVtZW50LmdldEJvdW5kaW5nQ2xp
ZW50UmVjdCgpKTsKLSAgICAgICAgbGV0IHBvcG92ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlBvcG92
ZXIodGhpcyk7Ci0KLSAgICAgICAgZnVuY3Rpb24gaGFuZGxlQ29sb3JQaWNrZXJUb2dnbGVkKGV2
ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBwb3BvdmVyLnVwZGF0ZSgpOwotICAgICAgICB9
Ci0KLSAgICAgICAgbGV0IGdyYWRpZW50RWRpdG9yID0gbmV3IFdlYkluc3BlY3Rvci5HcmFkaWVu
dEVkaXRvcjsKLSAgICAgICAgZ3JhZGllbnRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuR3JhZGllbnRFZGl0b3IuRXZlbnQuR3JhZGllbnRDaGFuZ2VkLCB0aGlzLl9ncmFkaWVu
dEVkaXRvckdyYWRpZW50Q2hhbmdlZCwgdGhpcyk7Ci0gICAgICAgIGdyYWRpZW50RWRpdG9yLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkdyYWRpZW50RWRpdG9yLkV2ZW50LkNvbG9yUGlj
a2VyVG9nZ2xlZCwgaGFuZGxlQ29sb3JQaWNrZXJUb2dnbGVkLCB0aGlzKTsKLQotICAgICAgICBw
b3BvdmVyLmNvbnRlbnQgPSBncmFkaWVudEVkaXRvci5lbGVtZW50OwotICAgICAgICBwb3BvdmVy
LnByZXNlbnQoYm91bmRzLnBhZCgyKSwgW1dlYkluc3BlY3Rvci5SZWN0RWRnZS5NSU5fWF0pOwot
Ci0gICAgICAgIGlmICghdGhpcy5fZ3JhZGllbnQpCi0gICAgICAgICAgICB0aGlzLl9ncmFkaWVu
dCA9IFdlYkluc3BlY3Rvci5HcmFkaWVudC5mcm9tU3RyaW5nKGAke3RoaXMuX2N1cnJlbnRUeXBl
fSh0cmFuc3BhcmVudCwgdHJhbnNwYXJlbnQpYCk7Ci0KLSAgICAgICAgZ3JhZGllbnRFZGl0b3Iu
Z3JhZGllbnQgPSB0aGlzLl9ncmFkaWVudDsKKyAgICAgICAgdGhpcy5fZ3JhZGllbnRTd2F0Y2gu
dmFsdWUgPSBXZWJJbnNwZWN0b3IuR3JhZGllbnQuZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgfQog
Ci0gICAgX2dyYWRpZW50RWRpdG9yR3JhZGllbnRDaGFuZ2VkKGV2ZW50KQorICAgIF9ncmFkaWVu
dFN3YXRjaENvbG9yQ2hhbmdlZChldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMudmFsdWUgPSBl
dmVudC5kYXRhLmdyYWRpZW50LnRvU3RyaW5nKCk7CisgICAgICAgIHRoaXMudmFsdWUgPSBldmVu
dC5kYXRhLnZhbHVlLnRvU3RyaW5nKCk7CiAgICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7
CiAgICAgfQogCiAgICAgX3ZhbHVlSW5wdXRWYWx1ZUNoYW5nZWQoZXZlbnQpCiAgICAgewotICAg
ICAgICB0aGlzLl91cGRhdGVHcmFkaWVudFN3YXRjaCgpOworICAgICAgICB0aGlzLl91cGRhdGVH
cmFkaWVudCgpOwogICAgICAgICB0aGlzLl92YWx1ZURpZENoYW5nZSgpOwogICAgIH0KIApAQCAt
MjE3LDcgKzE3OSw3IEBAIFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIg
PSBjbGFzcyBWaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIgZXh0CiAgICAgewogICAgICAgICB0
aGlzLl9jdXJyZW50VHlwZSA9IHRoaXMuX3ZhbHVlVHlwZVBpY2tlckVsZW1lbnQudmFsdWU7CiAg
ICAgICAgIHRoaXMuX3VwZGF0ZVZhbHVlSW5wdXQoKTsKLSAgICAgICAgdGhpcy5fdXBkYXRlR3Jh
ZGllbnRTd2F0Y2goKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlR3JhZGllbnQoKTsKICAgICAgICAg
dGhpcy5fdmFsdWVEaWRDaGFuZ2UoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQ29sb3JQaWNrZXIuY3Nz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVD
b2xvclBpY2tlci5jc3MKaW5kZXggMDEyMDA0NmNhNzE3YWY2YTI0NDRlMzIwMjdhYWI3ODZkMjZi
NDdlNC4uMTU3ZGVhNWM4Nzg5YTRiOTQxNTFmM2ZjMzAyZWIzMDhjZmIwYTZjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVD
b2xvclBpY2tlci5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVmlzdWFsU3R5bGVDb2xvclBpY2tlci5jc3MKQEAgLTMxLDcgKzMxLDcgQEAKICAgICBk
aXNwbGF5OiBub25lOwogfQogCi0udmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5pbnB1
dC1jb2xvci1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+
IC5jb2xvci1zd2F0Y2ggeworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuaW5wdXQt
Y29sb3ItcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAu
aW5saW5lLXN3YXRjaC5jb2xvciB7CiAgICAgd2lkdGg6IDIycHg7CiAgICAgaGVpZ2h0OiAxOHB4
OwogICAgIG1hcmdpbi10b3A6IDFweDsKQEAgLTQwLDE1ICs0MCwxNSBAQAogICAgIGJvcmRlci1y
YWRpdXM6IDRweDsKIH0KIAotLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuaW5wdXQt
Y29sb3ItcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAu
Y29sb3Itc3dhdGNoOmhvdmVyIHsKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmlu
cHV0LWNvbG9yLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVy
ID4gLmlubGluZS1zd2F0Y2guY29sb3I6aG92ZXIgewogICAgIGJvcmRlci1jb2xvcjogaHNsYSgw
LCAwJSwgMjUlLCAwLjgpOwogfQogCi0udmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5p
bnB1dC1jb2xvci1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5l
ciA+IC5jb2xvci1zd2F0Y2g6YWN0aXZlIHsKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFp
bmVyLmlucHV0LWNvbG9yLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29u
dGFpbmVyID4gLmlubGluZS1zd2F0Y2guY29sb3I6YWN0aXZlIHsKICAgICBib3JkZXItY29sb3I6
IGhzbCgwLCAwJSwgMjUlKTsKIH0KIAotLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIu
aW5wdXQtY29sb3ItcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWlu
ZXIgPiAuY29sb3Itc3dhdGNoID4gc3BhbiB7CisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRh
aW5lci5pbnB1dC1jb2xvci1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNv
bnRhaW5lciA+IC5pbmxpbmUtc3dhdGNoLmNvbG9yID4gc3BhbiB7CiAgICAgYm9yZGVyOiBub25l
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9WaXN1YWxTdHlsZUNvbG9yUGlja2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVDb2xvclBpY2tlci5qcwppbmRleCAyMjQ0ZWU2
Y2MyNjUyMjVkYjUzY2VjODhlMmU2MWEwMTYxZTg0MDgwLi5lZWYyZjc1M2ZkN2YxNjU2MmMzYjZl
ZTU1ZTg3NDlkNmM1NTNiOGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbG9yUGlja2VyLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQ29sb3JQaWNrZXIu
anMKQEAgLTI5LDggKzI5LDggQEAgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIg
PSBjbGFzcyBWaXN1YWxTdHlsZUNvbG9yUGlja2VyIGV4dGVuZHMgV2ViSW4KICAgICB7CiAgICAg
ICAgIHN1cGVyKHByb3BlcnR5TmFtZXMsIHRleHQsIG51bGwsIG51bGwsICJpbnB1dC1jb2xvci1w
aWNrZXIiLCBsYXlvdXRSZXZlcnNlZCk7CiAKLSAgICAgICAgdGhpcy5fY29sb3JTd2F0Y2ggPSBu
ZXcgV2ViSW5zcGVjdG9yLkNvbG9yU3dhdGNoOwotICAgICAgICB0aGlzLl9jb2xvclN3YXRjaC5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db2xvclN3YXRjaC5FdmVudC5Db2xvckNoYW5n
ZWQsIHRoaXMuX2NvbG9yU3dhdGNoQ29sb3JDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5f
Y29sb3JTd2F0Y2ggPSBuZXcgV2ViSW5zcGVjdG9yLklubGluZVN3YXRjaChXZWJJbnNwZWN0b3Iu
SW5saW5lU3dhdGNoLlR5cGUuQ29sb3IpOworICAgICAgICB0aGlzLl9jb2xvclN3YXRjaC5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2guRXZlbnQuVmFsdWVDaGFuZ2Vk
LCB0aGlzLl9jb2xvclN3YXRjaENvbG9yQ2hhbmdlZCwgdGhpcyk7CiAgICAgICAgIHRoaXMuY29u
dGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29sb3JTd2F0Y2guZWxlbWVudCk7CiAKICAg
ICAgICAgdGhpcy5fdGV4dElucHV0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlu
cHV0Iik7CkBAIC05OSw3ICs5OSw3IEBAIFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbG9yUGlj
a2VyID0gY2xhc3MgVmlzdWFsU3R5bGVDb2xvclBpY2tlciBleHRlbmRzIFdlYkluCiAKICAgICBf
Y29sb3JTd2F0Y2hDb2xvckNoYW5nZWQoZXZlbnQpCiAgICAgewotICAgICAgICBsZXQgY29sb3JT
dHJpbmcgPSBldmVudCAmJiBldmVudC5kYXRhICYmIGV2ZW50LmRhdGEuY29sb3IgJiYgZXZlbnQu
ZGF0YS5jb2xvci50b1N0cmluZygpOworICAgICAgICBsZXQgY29sb3JTdHJpbmcgPSBldmVudCAm
JiBldmVudC5kYXRhICYmIGV2ZW50LmRhdGEudmFsdWUgJiYgZXZlbnQuZGF0YS52YWx1ZS50b1N0
cmluZygpOwogICAgICAgICBpZiAoIWNvbG9yU3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuOwog
CkBAIC0xMTAsNyArMTEwLDcgQEAgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIg
PSBjbGFzcyBWaXN1YWxTdHlsZUNvbG9yUGlja2VyIGV4dGVuZHMgV2ViSW4KICAgICBfdXBkYXRl
Q29sb3JTd2F0Y2goKQogICAgIHsKICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5fdGV4dElucHV0
RWxlbWVudC52YWx1ZTsKLSAgICAgICAgdGhpcy5fY29sb3JTd2F0Y2guY29sb3IgPSBXZWJJbnNw
ZWN0b3IuQ29sb3IuZnJvbVN0cmluZyh2YWx1ZSB8fCAidHJhbnNwYXJlbnQiKTsKKyAgICAgICAg
dGhpcy5fY29sb3JTd2F0Y2gudmFsdWUgPSBXZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVN0cmluZyh2
YWx1ZSk7CiAgICAgfQogCiAgICAgX2NvbXBsZXRpb25DbGlja2VkKGV2ZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVU
aW1pbmdFZGl0b3IuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVmlzdWFsU3R5bGVUaW1pbmdFZGl0b3IuY3NzCmluZGV4IGM4MGViMTVjYzRhMDVhYTMwYzc2
NTE2YmRjYTI1ZWFiZDkxMGFmNTAuLmM3MWFkYmM1ZGMyNjNlZTM3NzNlMDkwYjVlZDZiYmU0ZDgx
NDJhOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Zpc3VhbFN0eWxlVGltaW5nRWRpdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVRpbWluZ0VkaXRvci5jc3MKQEAgLTMx
LDI0ICszMSwxNyBAQAogICAgIG9yZGVyOiAxOwogfQogCi0udmlzdWFsLXN0eWxlLXByb3BlcnR5
LWNvbnRhaW5lci50aW1pbmctZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1j
b250YWluZXIgPiAuYmV6aWVyLWVkaXRvciB7CisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRh
aW5lci50aW1pbmctZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWlu
ZXIgPiAuaW5saW5lLXN3YXRjaC5iZXppZXIgewogICAgIHdpZHRoOiAyM3B4OwogICAgIGhlaWdo
dDogMjBweDsKLSAgICBtYXJnaW4tcmlnaHQ6IDJweDsKLSAgICBjb250ZW50OiB1cmwoLi4vSW1h
Z2VzL0N1YmljQmV6aWVyLnN2Zyk7Ci0gICAgY3Vyc29yOiBkZWZhdWx0OworfQorCisudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci50aW1pbmctZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS12YWx1ZS1jb250YWluZXI6bm90KC5iZXppZXItdmFsdWUpID4gLmlubGluZS1zd2F0
Y2guYmV6aWVyIHsKKyAgICBkaXNwbGF5OiBub25lOwogfQogCiBAbWVkaWEgKC13ZWJraXQtbWlu
LWRldmljZS1waXhlbC1yYXRpbzogMikgewotICAgIC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyLnRpbWluZy1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRh
aW5lciA+IC5iZXppZXItZWRpdG9yIHsKKyAgICAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRh
aW5lci50aW1pbmctZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWlu
ZXIgPiAuaW5saW5lLXN3YXRjaC5iZXppZXIgewogICAgICAgICBtYXJnaW4tbGVmdDogMC41cHg7
CiAgICAgfQogfQotCi0udmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci50aW1pbmctZWRp
dG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAuYmV6aWVyLWVk
aXRvcjpob3ZlciB7Ci0gICAgZmlsdGVyOiBicmlnaHRuZXNzKDAuOSk7Ci19Ci0KLS52aXN1YWwt
c3R5bGUtcHJvcGVydHktY29udGFpbmVyLnRpbWluZy1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5iZXppZXItZWRpdG9yOmFjdGl2ZSB7Ci0gICAgZmls
dGVyOiBicmlnaHRuZXNzKDAuOCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVRpbWluZ0VkaXRvci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGltaW5nRWRp
dG9yLmpzCmluZGV4IDQzMzFmOWIwYTc1NjdiNDlmMThjNmZjNmI4ZjJjYjIyMGJlOGI2YTguLjli
MmFjZjNhOTNjZGRiMzE4NWJkOTk1MzdhNzRlZTQ2ODE4NjU0M2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGltaW5nRWRp
dG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zp
c3VhbFN0eWxlVGltaW5nRWRpdG9yLmpzCkBAIC0zNiwxNiArMzYsOSBAQCBXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVUaW1pbmdFZGl0b3IgPSBjbGFzcyBWaXN1YWxTdHlsZVRpbWluZ0VkaXRvciBl
eHRlbmRzIFdlYgogICAgICAgICB0aGlzLl9jdXN0b21WYWx1ZU9wdGlvbkVsZW1lbnQudGV4dCA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ3VzdG9tIik7CiAgICAgICAgIHRoaXMuX2tleXdvcmRT
ZWxlY3RFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2N1c3RvbVZhbHVlT3B0aW9uRWxlbWVudCk7
CiAKLSAgICAgICAgdGhpcy5fYmV6aWVyTWFya2VyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNwYW4iKTsKLSAgICAgICAgdGhpcy5fYmV6aWVyTWFya2VyRWxlbWVudC50aXRsZSA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xpY2sgdG8gb3BlbiBhIGN1YmljLWJlemllciBlZGl0
b3IiKTsKLSAgICAgICAgdGhpcy5fYmV6aWVyTWFya2VyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJi
ZXppZXItZWRpdG9yIik7Ci0gICAgICAgIHRoaXMuX2Jlemllck1hcmtlckVsZW1lbnQuaGlkZGVu
ID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5fYmV6aWVyTWFya2VyRWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIHRoaXMuX2Jlemllck1hcmtlckNsaWNrZWQuYmluZCh0aGlzKSk7Ci0gICAg
ICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fYmV6aWVyTWFya2VyRWxl
bWVudCk7Ci0KLSAgICAgICAgdGhpcy5fYmV6aWVyRWRpdG9yID0gbmV3IFdlYkluc3BlY3Rvci5C
ZXppZXJFZGl0b3I7Ci0gICAgICAgIHRoaXMuX2JlemllckVkaXRvci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5CZXppZXJFZGl0b3IuRXZlbnQuQmV6aWVyQ2hhbmdlZCwgdGhpcy5fdmFs
dWVEaWRDaGFuZ2UuYmluZCh0aGlzKSk7Ci0gICAgICAgIHRoaXMuX2JlemllckVkaXRvci5iZXpp
ZXIgPSBXZWJJbnNwZWN0b3IuQ3ViaWNCZXppZXIuZnJvbVN0cmluZygibGluZWFyIik7CisgICAg
ICAgIHRoaXMuX2JlemllclN3YXRjaCA9IG5ldyBXZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoKFdl
Ykluc3BlY3Rvci5JbmxpbmVTd2F0Y2guVHlwZS5CZXppZXIpOworICAgICAgICB0aGlzLl9iZXpp
ZXJTd2F0Y2guYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoLkV2ZW50
LlZhbHVlQ2hhbmdlZCwgdGhpcy5fYmV6aWVyU3dhdGNoVmFsdWVDaGFuZ2VkLCB0aGlzKTsKKyAg
ICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9iZXppZXJTd2F0Y2gu
ZWxlbWVudCk7CiAgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCkBAIC01Nyw3ICs1MCw3IEBAIFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZVRpbWluZ0VkaXRvciA9IGNsYXNzIFZpc3VhbFN0eWxlVGlt
aW5nRWRpdG9yIGV4dGVuZHMgV2ViCiAKICAgICBnZXQgYmV6aWVyVmFsdWUoKQogICAgIHsKLSAg
ICAgICAgbGV0IGJlemllciA9IHRoaXMuX2JlemllckVkaXRvci5iZXppZXI7CisgICAgICAgIGxl
dCBiZXppZXIgPSB0aGlzLl9iZXppZXJTd2F0Y2gudmFsdWU7CiAgICAgICAgIGlmICghYmV6aWVy
KQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKQEAgLTY3LDcgKzYwLDcgQEAgV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlVGltaW5nRWRpdG9yID0gY2xhc3MgVmlzdWFsU3R5bGVUaW1pbmdFZGl0
b3IgZXh0ZW5kcyBXZWIKICAgICBzZXQgYmV6aWVyVmFsdWUodGV4dCkKICAgICB7CiAgICAgICAg
IGxldCBiZXppZXIgPSBXZWJJbnNwZWN0b3IuQ3ViaWNCZXppZXIuZnJvbVN0cmluZyh0ZXh0KTsK
LSAgICAgICAgdGhpcy5fYmV6aWVyRWRpdG9yLmJlemllciA9IGJlemllcjsKKyAgICAgICAgdGhp
cy5fYmV6aWVyU3dhdGNoLnZhbHVlID0gYmV6aWVyOwogICAgIH0KIAogICAgIC8vIFByaXZhdGUK
QEAgLTgyLDEzICs3NSwxMyBAQCBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVUaW1pbmdFZGl0b3Ig
PSBjbGFzcyBWaXN1YWxTdHlsZVRpbWluZ0VkaXRvciBleHRlbmRzIFdlYgogICAgICAgICB0aGlz
LmJlemllclZhbHVlID0gdmFsdWU7CiAgICAgICAgIGlmICh0aGlzLnZhbHVlSXNTdXBwb3J0ZWRL
ZXl3b3JkKHZhbHVlKSkgewogICAgICAgICAgICAgc3VwZXIuX3NldFZhbHVlKHZhbHVlKTsKLSAg
ICAgICAgICAgIHRoaXMuX2Jlemllck1hcmtlckVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsKKyAgICAg
ICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiYmV6aWVyLXZhbHVl
Iik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBsZXQgYmV6aWVy
ID0gdGhpcy5iZXppZXJWYWx1ZTsKICAgICAgICAgdGhpcy5fY3VzdG9tVmFsdWVPcHRpb25FbGVt
ZW50LnNlbGVjdGVkID0gISFiZXppZXI7Ci0gICAgICAgIHRoaXMuX2Jlemllck1hcmtlckVsZW1l
bnQuaGlkZGVuID0gIWJlemllcjsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5jbGFzc0xp
c3QudG9nZ2xlKCJiZXppZXItdmFsdWUiLCAhIWJlemllcik7CiAgICAgICAgIHRoaXMuc3BlY2lh
bFByb3BlcnR5UGxhY2Vob2xkZXJFbGVtZW50LmhpZGRlbiA9ICEhYmV6aWVyOwogICAgICAgICBp
ZiAoIWJlemllcikKICAgICAgICAgICAgIHN1cGVyLl9zZXRWYWx1ZSh2YWx1ZSk7CkBAIC05OSwy
MSArOTIsMTggQEAgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVGltaW5nRWRpdG9yID0gY2xhc3Mg
VmlzdWFsU3R5bGVUaW1pbmdFZGl0b3IgZXh0ZW5kcyBXZWIKICAgICAgICAgcmV0dXJuIHRoaXMu
X2N1c3RvbVZhbHVlT3B0aW9uRWxlbWVudC5zZWxlY3RlZCA/IHRoaXMuYmV6aWVyVmFsdWUgOiBz
dXBlci5fZ2VuZXJhdGVTeW50aGVzaXplZFZhbHVlKCk7CiAgICAgfQogCi0gICAgX2Jlemllck1h
cmtlckNsaWNrZWQoKQotICAgIHsKLSAgICAgICAgbGV0IGJvdW5kcyA9IFdlYkluc3BlY3Rvci5S
ZWN0LnJlY3RGcm9tQ2xpZW50UmVjdCh0aGlzLl9iZXppZXJNYXJrZXJFbGVtZW50LmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpKTsKLSAgICAgICAgdGhpcy5fY3ViaWNCZXppZXJFZGl0b3JQb3BvdmVy
ID0gbmV3IFdlYkluc3BlY3Rvci5Qb3BvdmVyKHRoaXMpOwotICAgICAgICB0aGlzLl9jdWJpY0Jl
emllckVkaXRvclBvcG92ZXIuY29udGVudCA9IHRoaXMuX2JlemllckVkaXRvci5lbGVtZW50Owot
ICAgICAgICB0aGlzLl9jdWJpY0JlemllckVkaXRvclBvcG92ZXIucHJlc2VudChib3VuZHMucGFk
KDIpLCBbV2ViSW5zcGVjdG9yLlJlY3RFZGdlLk1JTl9YXSk7Ci0gICAgfQotCiAgICAgX2hhbmRs
ZUtleXdvcmRDaGFuZ2VkKCkKICAgICB7CiAgICAgICAgIHN1cGVyLl9oYW5kbGVLZXl3b3JkQ2hh
bmdlZCgpOwogICAgICAgICBsZXQgY3VzdG9tT3B0aW9uU2VsZWN0ZWQgPSB0aGlzLl9jdXN0b21W
YWx1ZU9wdGlvbkVsZW1lbnQuc2VsZWN0ZWQ7Ci0gICAgICAgIHRoaXMuX2Jlemllck1hcmtlckVs
ZW1lbnQuaGlkZGVuID0gIWN1c3RvbU9wdGlvblNlbGVjdGVkOworICAgICAgICB0aGlzLmNvbnRl
bnRFbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImJlemllci12YWx1ZSIsICEhY3VzdG9tT3B0aW9u
U2VsZWN0ZWQpOwogICAgICAgICB0aGlzLnNwZWNpYWxQcm9wZXJ0eVBsYWNlaG9sZGVyRWxlbWVu
dC5oaWRkZW4gPSAhIWN1c3RvbU9wdGlvblNlbGVjdGVkOwogICAgICAgICBpZiAoY3VzdG9tT3B0
aW9uU2VsZWN0ZWQpCiAgICAgICAgICAgICB0aGlzLmJlemllclZhbHVlID0gImxpbmVhciI7CiAg
ICAgfQorCisgICAgX2JlemllclN3YXRjaFZhbHVlQ2hhbmdlZChldmVudCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgfQogfTsK
</data>
<flag name="review"
          id="293822"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268887</attachid>
            <date>2016-01-13 12:14:41 -0800</date>
            <delta_ts>2016-01-13 13:14:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>153004.diff</filename>
            <type>text/plain</type>
            <size>81209</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDQzYWU4MDQuLmM2YWJmY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MiBAQAorMjAxNi0wMS0xMyAgRGV2aW4gUm91c3Nv
ICA8ZGNyb3Vzc28rd2Via2l0QGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgc3VwcG9ydCBmb3IgdGhlIGV4aXN0aW5nIEdyYWRpZW50RWRpdG9yIGluIHRoZSBDU1MgUnVs
ZXMgc2lkZWJhcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUzMDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAg
ICAgIEJvdGggdGhlIFZpc3VhbCBzaWRlYmFyIGFuZCBSZXNvdXJjZSB2aWV3IGhhdmUgZWRpdG9y
cyBmb3IgQ1NTIGdyYWRpZW50CisgICAgICAgIHZhbHVlcywgYnV0IHRoZSBSdWxlcyBzaWRlYmFy
IGluc3RlYWQgb25seSBhZGRzIGVkaXRvcnMgZm9yIGJhc2ljIGNvbG9yCisgICAgICAgIHZhbHVl
cy4gSW5zdGVhZCBvZiBkdXBsaWNhdGluZyB0aGUgY29kZSBmb3IgZ3JhZGllbnQgc3dhdGNoZXMs
IGV4aXN0aW5nCisgICAgICAgIGNvZGUgd2lsbCBiZSB1c2VkIHRvIGdpdmUgdGhpcyBzYW1lIGZ1
bmN0aW9uYWxpdHkgdG8gdGhlIFJ1bGVzIHNpZGViYXIuCisKKyAgICAgICAgKiBMb2NhbGl6YXRp
b25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9NYWluLmh0bWw6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9HcmFkaWVudC5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HcmFkaWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuR3JhZGllbnQuZnJvbVN0cmluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuR3JhZGllbnQu
c3RvcHNXaXRoQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuR3JhZGllbnQucHJv
dG90eXBlLmNvcHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkdyYWRpZW50LnByb3RvdHlwZS50
b1N0cmluZyk6CisgICAgICAgIFJlZmFjdG9yZWQgV2ViSW5zcGVjdG9yLkdyYWRpZW50IGludG8g
aXRzIG93biBjbGFzcy4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLkxpbmVhckdyYWRpZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5MaW5lYXJHcmFkaWVudC5wcm90b3R5cGUudG9TdHJpbmcp
OgorICAgICAgICBOb3cgdXNlcyBXZWJJbnNwZWN0b3IuR3JhZGllbnQgaW5oZXJpdGFuY2UgYW5k
IG1ldGhvZHMuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYWRpYWxHcmFkaWVudCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmFkaWFsR3JhZGllbnQucHJvdG90eXBlLnRvU3RyaW5nKToKKyAg
ICAgICAgTm93IHVzZXMgV2ViSW5zcGVjdG9yLkdyYWRpZW50IGluaGVyaXRhbmNlIGFuZCBtZXRo
b2RzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9u
VGV4dEVkaXRvci5jc3M6CisgICAgICAgIFVzZSBJbmxpbmVTd2F0Y2guY3NzIHZhbHVlcyBpbnN0
ZWFkLgorCisgICAgICAgICguY3NzLXN0eWxlLXRleHQtZWRpdG9yID4gLkNvZGVNaXJyb3IgLkNv
ZGVNaXJyb3ItbGluZXMgLmN1YmljLWJlemllci1tYXJrZXIpOiBEZWxldGVkLgorICAgICAgICAo
QG1lZGlhICgtd2Via2l0LW1heC1kZXZpY2UtcGl4ZWwtcmF0aW86IDEpKTogRGVsZXRlZC4KKyAg
ICAgICAgKC5jc3Mtc3R5bGUtdGV4dC1lZGl0b3IgPiAuQ29kZU1pcnJvciAuQ29kZU1pcnJvci1s
aW5lcyAuY3ViaWMtYmV6aWVyLW1hcmtlcjpob3Zlcik6IERlbGV0ZWQuCisgICAgICAgICguY3Nz
LXN0eWxlLXRleHQtZWRpdG9yID4gLkNvZGVNaXJyb3IgLkNvZGVNaXJyb3ItbGluZXMgLmN1Ymlj
LWJlemllci1tYXJrZXI6YWN0aXZlKTogRGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLmRpZERpc21p
c3NQb3BvdmVyKTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlZCB1bnVzZWQgcG9wb3ZlciBtZW1i
ZXIgdmFyaWFibGUuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9u
VGV4dEVkaXRvci5wcm90b3R5cGUuX2NvbnRlbnRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuX3VwZGF0ZVRleHRN
YXJrZXJzLnVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlv
blRleHRFZGl0b3IucHJvdG90eXBlLl9jcmVhdGVJbmxpbmVTd2F0Y2hlcy5jcmVhdGVTd2F0Y2gp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnBy
b3RvdHlwZS5fY3JlYXRlSW5saW5lU3dhdGNoZXMudXBkYXRlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuX2NyZWF0ZUlubGlu
ZVN3YXRjaGVzKToKKyAgICAgICAgUmVuYW1lZCB2YXJpYWJsZXMgZm9yIG1vcmUgY29uc2lzdGVu
dCBuYW1pbmcgYW5kIHJlaW1wbGVtZW50ZWQgdGhlIGxvZ2ljCisgICAgICAgIHRvIHVzZSB0aGUg
bmV3IFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2ggbWV0aG9kcy4gIEFzIGEgcmVzdWx0LCBpdCB3
YXMKKyAgICAgICAgcG9zc2libGUgdG8gY29uc29saWRhdGUgdGhlIDMgZGlmZmVyZW50IHR5cGUg
b2Ygc3dhdGNoIGZ1bmN0aW9ucyBpbnRvIGEKKyAgICAgICAgc2luZ2xlIGZ1bmN0aW9uLgorCisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90
eXBlLl9jb21tZW50UHJvcGVydHkudXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NT
dHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuX3VuY29tbWVudFJhbmdlLnVwZGF0
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3Iu
cHJvdG90eXBlLl9pbmxpbmVTd2F0Y2hWYWx1ZUNoYW5nZWQudXBkYXRlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuX2lubGlu
ZVN3YXRjaFZhbHVlQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNs
YXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLl9yZXNldENvbnRlbnQudXBkYXRlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUu
X2NyZWF0ZUNvbG9yU3dhdGNoZXMuY3JlYXRlU3dhdGNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuX2NyZWF0
ZUNvbG9yU3dhdGNoZXMudXBkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
U1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuX2NyZWF0ZUNvbG9yU3dhdGNo
ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25U
ZXh0RWRpdG9yLnByb3RvdHlwZS5fY3JlYXRlQmV6aWVyRWRpdG9ycy51cGRhdGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnBy
b3RvdHlwZS5fY3JlYXRlQmV6aWVyRWRpdG9ycyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLl9jb2xvclN3YXRj
aENvbG9yQ2hhbmdlZC51cGRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNT
U1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS5fY29sb3JTd2F0Y2hDb2xvckNo
YW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRp
b25UZXh0RWRpdG9yLnByb3RvdHlwZS5fY3ViaWNCZXppZXJNYXJrZXJDbGlja2VkLnVwZGF0ZUNv
ZGVNaXJyb3IudXBkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHls
ZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuX2N1YmljQmV6aWVyTWFya2VyQ2xpY2tl
ZC51cGRhdGVDb2RlTWlycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NT
dHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuX2N1YmljQmV6aWVyTWFya2VyQ2xp
Y2tlZCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJy
b3JUZXh0TWFya2Vycy5qczoKKyAgICAgICAgKGNyZWF0ZUNvZGVNaXJyb3JDb2xvclRleHRNYXJr
ZXJzLm1hdGNoRnVuY3Rpb24pOgorICAgICAgICBBZGRlZCBsb2dpYyBzbyB0aGF0IGlmIHRoZSBt
YXRjaGVkIGNvbG9yIHN0cmluZyBpcyBmb3VuZCBpbnNpZGUgYSBncmFkaWVudCwKKyAgICAgICAg
aXQgd2lsbCBub3QgaGF2ZSBhIG1hcmtlciBjcmVhdGVkIGZvciBpdC4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvSW5saW5lU3dhdGNoLmNzczogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbG9yU3dhdGNoLmNzcy4KKyAgICAg
ICAgQ29uc29saWRhdGVkIHRoZSB2YXJpb3VzIHN3YXRjaCBDU1MgY2xhc3NlcyBpbnRvIG9uZSBm
aWxlLgorCisgICAgICAgICguaW5saW5lLXN3YXRjaCk6CisgICAgICAgICguaW5saW5lLXN3YXRj
aC5iZXppZXIpOgorICAgICAgICAoLmlubGluZS1zd2F0Y2guYmV6aWVyOmhvdmVyKToKKyAgICAg
ICAgKC5pbmxpbmUtc3dhdGNoLmJlemllcjphY3RpdmUpOgorICAgICAgICAoQG1lZGlhICgtd2Vi
a2l0LW1heC1kZXZpY2UtcGl4ZWwtcmF0aW86IDEpKToKKyAgICAgICAgKC5pbmxpbmUtc3dhdGNo
ID4gc3Bhbik6CisgICAgICAgIEVuc3VyZWQgdGhhdCB0aGUgaW5uZXIgc3dhdGNoIGVsZW1lbnQg
Y2FuIG5vdCBiZSBzZWxlY3RlZCBzbyB0aGF0IHRoZSAiY2xpY2siCisgICAgICAgIGxpc3RlbmVy
IG9uIGl0cyBwYXJlbnQgYWx3YXlzIGZpcmVzLgorCisgICAgICAgICguaW5saW5lLXN3YXRjaDpo
b3ZlciA+IHNwYW4pOgorICAgICAgICAoLmlubGluZS1zd2F0Y2g6YWN0aXZlID4gc3Bhbik6Cisg
ICAgICAgICguaW5saW5lLXN3YXRjaC5iZXppZXIgPiBzcGFuKToKKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvSW5saW5lU3dhdGNoLmpzOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29sb3JTd2F0Y2guanMuCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoKToKKyAgICAgICAgTm93IGFjY2VwdHMgYSBuZXcgZmly
c3QgYXJndW1lbnQgdG8gaW5kaWNhdGUgd2hhdCB0eXBlIG9mIGNvbG9yIHN3YXRjaAorICAgICAg
ICB0byBjcmVhdGUgYW5kIHdoYXQgZnVuY3Rpb25hbGl0eSBpdCB3aWxsIGhhdmUuICBDdXJyZW50
bHkgaGFzIG9wdGlvbnMKKyAgICAgICAgZm9yIFdlYkluc3BlY3Rvci5Db2xvciwgV2ViSW5zcGVj
dG9yLkdyYWRpZW50LCBhbmQgV2ViSW5zcGVjdG9yLkN1YmljQmV6aWVyLgorCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoLnByb3RvdHlwZS5nZXQgZWxlbWVudCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoLnByb3RvdHlwZS5nZXQgdmFsdWUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLklubGluZVN3YXRjaC5wcm90b3R5cGUuc2V0IHZhbHVlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2gucHJvdG90eXBlLl9mYWxsYmFja1ZhbHVlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2gucHJvdG90eXBlLl91cGRhdGVTd2F0
Y2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLklubGluZVN3YXRjaC5wcm90b3R5cGUuX3N3YXRj
aEVsZW1lbnRDbGlja2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2gucHJv
dG90eXBlLl92YWx1ZUVkaXRvclZhbHVlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5JbmxpbmVTd2F0Y2gucHJvdG90eXBlLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2gucHJvdG90eXBlLl9nZXROZXh0VmFsaWRIRVhG
b3JtYXQuaGV4TWF0Y2hlc0N1cnJlbnRDb2xvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5s
aW5lU3dhdGNoLnByb3RvdHlwZS5fZ2V0TmV4dFZhbGlkSEVYRm9ybWF0KToKKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLmNzczoKKyAg
ICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmJhY2tncm91bmQtcGlja2Vy
ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAuaW5saW5lLXN3YXRj
aC5ncmFkaWVudCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5i
YWNrZ3JvdW5kLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVy
Om5vdCguZ3JhZGllbnQtdmFsdWUpID4gLmlubGluZS1zd2F0Y2guZ3JhZGllbnQpOgorICAgICAg
ICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFja2dyb3VuZC1waWNrZXIgPiAu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5pbmxpbmUtc3dhdGNoLmdy
YWRpZW50OmhvdmVyKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVy
LmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWlu
ZXIgPiAuaW5saW5lLXN3YXRjaC5ncmFkaWVudDphY3RpdmUpOgorICAgICAgICAoLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFja2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxl
LXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5pbmxpbmUtc3dhdGNoLmdyYWRpZW50ID4gc3Bh
bik6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5k
LXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyLmdyYWRpZW50
LXZhbHVlID4gLmlubGluZS1zd2F0Y2guZ3JhZGllbnQgKyAudmFsdWUtaW5wdXQpOgorICAgICAg
ICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFja2dyb3VuZC1waWNrZXIgPiAu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5jb2xvci1zd2F0Y2gpOiBE
ZWxldGVkLgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFja2dy
b3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lcjpub3Qo
LmdyYWRpZW50LXZhbHVlKSA+IC5jb2xvci1zd2F0Y2gpOiBEZWxldGVkLgorICAgICAgICAoLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFja2dyb3VuZC1waWNrZXIgPiAudmlzdWFs
LXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5jb2xvci1zd2F0Y2g6aG92ZXIpOiBE
ZWxldGVkLgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFja2dy
b3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5j
b2xvci1zd2F0Y2g6YWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS12YWx1ZS1jb250YWluZXIgPiAuY29sb3Itc3dhdGNoID4gc3Bhbik6IERlbGV0ZWQuCisgICAg
ICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5kLXBpY2tlciA+
IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyLmdyYWRpZW50LXZhbHVlID4g
LmNvbG9yLXN3YXRjaCArIC52YWx1ZS1pbnB1dCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlci5qczoKKyAgICAgICAg
UmVtb3ZlZCB0aGUgc3BlY2lmaWMgY29kZSBmb3IgdGhlIGdyYWRpZW50IHN3YXRjaCBhbmQgbW92
ZWQgdG8gdXNpbmcgYQorICAgICAgICBncmFkaWVudC10eXBlIElubGluZVN3YXRjaCBmb3IgZ3Jh
ZGllbnQgdmFsdWVzIGluc3RlYWQuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZUJhY2tncm91bmRQaWNrZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQmFj
a2dyb3VuZFBpY2tlci5wcm90b3R5cGUuc2V0IHZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIucHJvdG90eXBlLl91cGRhdGVHcmFkaWVudCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLnByb3Rv
dHlwZS5fZ3JhZGllbnRTd2F0Y2hDb2xvckNoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlci5wcm90b3R5cGUuX3ZhbHVlSW5wdXRWYWx1ZUNo
YW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tl
ci5wcm90b3R5cGUuX2hhbmRsZUtleXdvcmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIucHJvdG90eXBlLl91cGRhdGVHcmFkaWVudFN3
YXRjaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVCYWNrZ3Jv
dW5kUGlja2VyLnByb3RvdHlwZS5fZ3JhZGllbnRTd2F0Y2hDbGlja2VkLmhhbmRsZUNvbG9yUGlj
a2VyVG9nZ2xlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVC
YWNrZ3JvdW5kUGlja2VyLnByb3RvdHlwZS5fZ3JhZGllbnRTd2F0Y2hDbGlja2VkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIucHJv
dG90eXBlLl9ncmFkaWVudEVkaXRvckdyYWRpZW50Q2hhbmdlZCk6IERlbGV0ZWQuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQ29sb3JQaWNrZXIuY3NzOgorICAg
ICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuaW5wdXQtY29sb3ItcGlja2Vy
ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAuaW5saW5lLXN3YXRj
aC5jb2xvcik6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5pbnB1
dC1jb2xvci1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+
IC5pbmxpbmUtc3dhdGNoLmNvbG9yOmhvdmVyKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyLmlucHV0LWNvbG9yLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVy
dHktdmFsdWUtY29udGFpbmVyID4gLmlubGluZS1zd2F0Y2guY29sb3I6YWN0aXZlKToKKyAgICAg
ICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmlucHV0LWNvbG9yLXBpY2tlciA+
IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmlubGluZS1zd2F0Y2gu
Y29sb3IgPiBzcGFuKToKKyAgICAgICAgQWRkIG92ZXJyaWRlIENTUyB0byBlbnN1cmUgdGhhdCB0
aGUgY29sb3ItdHlwZSBJbmxpbmVTd2F0Y2ggZGlzcGxheXMgbmljZWx5CisgICAgICAgIG5leHQg
dG8gdGhlIGZsZXhib3ggc3R5bGUgVmlzdWFsIHNpZGViYXIuCisKKyAgICAgICAgKC52aXN1YWwt
c3R5bGUtcHJvcGVydHktY29udGFpbmVyLmlucHV0LWNvbG9yLXBpY2tlciA+IC52aXN1YWwtc3R5
bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmNvbG9yLXN3YXRjaCk6IERlbGV0ZWQuCisg
ICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5pbnB1dC1jb2xvci1waWNr
ZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5jb2xvci1zd2F0
Y2g6aG92ZXIpOiBEZWxldGVkLgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250
YWluZXIuaW5wdXQtY29sb3ItcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1j
b250YWluZXIgPiAuY29sb3Itc3dhdGNoOmFjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgICgudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5pbnB1dC1jb2xvci1waWNrZXIgPiAudmlzdWFs
LXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5jb2xvci1zd2F0Y2ggPiBzcGFuKTog
RGVsZXRlZC4KKyAgICAgICAgUmVmYWN0b3JlZCB0byBvbmx5IHVzZSBvdmVycmlkaW5nIHByb3Bl
cnRpZXMgb2YgdGhlIGJhc2ljIC5pbmxpbmUtc3dhdGNoIHZhbHVlcy4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVDb2xvclBpY2tlci5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbG9yUGlja2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUNvbG9yUGlja2VyLnByb3RvdHlwZS5fY29sb3JTd2F0Y2hDb2xvckNoYW5n
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIucHJvdG90
eXBlLl91cGRhdGVDb2xvclN3YXRjaCk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1Zpc3VhbFN0eWxlVGltaW5nRWRpdG9yLmNzczoKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyLnRpbWluZy1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZh
bHVlLWNvbnRhaW5lciA+IC5pbmxpbmUtc3dhdGNoLmJlemllcik6CisgICAgICAgICgudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci50aW1pbmctZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS12YWx1ZS1jb250YWluZXI6bm90KC5iZXppZXItdmFsdWUpID4gLmlubGluZS1zd2F0
Y2guYmV6aWVyKToKKyAgICAgICAgKEBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJh
dGlvOiAyKSk6CisgICAgICAgIEFkZCBvdmVycmlkZSBDU1MgdG8gZW5zdXJlIHRoYXQgdGhlIGNv
bG9yLXR5cGUgSW5saW5lU3dhdGNoIGRpc3BsYXlzIG5pY2VseQorICAgICAgICBuZXh0IHRvIHRo
ZSBmbGV4Ym94IHN0eWxlIFZpc3VhbCBzaWRlYmFyLgorCisgICAgICAgICgudmlzdWFsLXN0eWxl
LXByb3BlcnR5LWNvbnRhaW5lci50aW1pbmctZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS12YWx1ZS1jb250YWluZXIgPiAuYmV6aWVyLWVkaXRvcik6IERlbGV0ZWQuCisgICAgICAgICgu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci50aW1pbmctZWRpdG9yID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAuYmV6aWVyLWVkaXRvcjpob3Zlcik6IERl
bGV0ZWQuCisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci50aW1pbmct
ZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAuYmV6aWVy
LWVkaXRvcjphY3RpdmUpOiBEZWxldGVkLgorICAgICAgICBSZWZhY3RvcmVkIHRvIG9ubHkgdXNl
IG92ZXJyaWRpbmcgcHJvcGVydGllcyBvZiB0aGUgYmFzaWMgLmlubGluZS1zd2F0Y2ggdmFsdWVz
LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVRpbWluZ0VkaXRv
ci5qczoKKyAgICAgICAgUmVtb3ZlZCB0aGUgc3BlY2lmaWMgY29kZSBmb3IgdGhlIGN1YmljLWJl
emllciBzd2F0Y2ggYW5kIG1vdmVkIHRvIHVzaW5nIGEKKyAgICAgICAgY3ViaWMtYmV6aWVyLXR5
cGUgSW5saW5lU3dhdGNoIGZvciBncmFkaWVudCB2YWx1ZXMgaW5zdGVhZC4KKworICAgICAgICAo
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVGltaW5nRWRpdG9yKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVRpbWluZ0VkaXRvci5wcm90b3R5cGUuZ2V0IGJlemllclZhbHVlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVRpbWluZ0VkaXRvci5wcm90b3R5cGUu
c2V0IGJlemllclZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVRpbWlu
Z0VkaXRvci5wcm90b3R5cGUuX3NldFZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZVRpbWluZ0VkaXRvci5wcm90b3R5cGUuX2hhbmRsZUtleXdvcmRDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVRpbWluZ0VkaXRvci5wcm90b3R5cGUuX2Jl
emllclN3YXRjaFZhbHVlQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVUaW1pbmdFZGl0b3IucHJvdG90eXBlLl9iZXppZXJNYXJrZXJDbGlja2VkKTogRGVsZXRlZC4K
KwogMjAxNi0wMS0xMiAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogVGltZWxpbmUgcmVjb3JkaW5nIGNvbnRyb2xzIHNob3VsZCB1c2Ug
TmF2aWdhdGlvbkJhcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXph
dGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggZDNlNGU0
ZmZmZTI1YWY2N2FlNjI4ODhmMGMyNmZiMGY4ZTliZGQxOS4uZGI0NDMzMzJkNDA5NjUzNmIwNTkz
MWM0MTU4YWUxZGYwMWZjMWRhZCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA1Ngp6Y21h
RlklPSlkRmJ3alA/PGJ6ZlUoezBybGNfdUhuKVItKTI/WDtRUyU4RDV6SXtCfSkmfTIobjBpZDgr
XklxSFMKSmR1PHNGU3BafUM2ZTBpcwoKZGVsdGEgNTkKemNtZXk/JT0pZ0did2pQPzxjKCU+bGpt
QlJPeTBnaFlxR3duJn1NIXNKTGJ2ZnBZdSVLWWJHPX4qSCZxPWVMRn5rCk90TkV6eV9NXjZwaEFh
VD14KShrRwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRt
bAppbmRleCBlNzdmNzY4Li41MTU2YzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC00OCw3ICs0OCw2IEBACiAgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJWaWV3cy9DbHVzdGVyQ29udGVudFZpZXcuY3NzIj4KICAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0NvZGVNaXJyb3JPdmVycmlkZXMuY3NzIj4K
ICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0NvbG9yUGlja2VyLmNzcyI+
Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9Db2xvclN3YXRjaC5jc3Mi
PgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQ29sb3JXaGVlbC5jc3Mi
PgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQ29tcGxldGlvblN1Z2dl
c3Rpb25zVmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3Mv
Q29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5jc3MiPgpAQCAtOTUsNiArOTQsNyBAQAogICAgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3
LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9JbmRldGVybWlu
YXRlUHJvZ3Jlc3NTcGlubmVyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJWaWV3cy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUNvbnRlbnRWaWV3LmNzcyI+CisgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9JbmxpbmVTd2F0Y2guY3NzIj4KICAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0lzc3VlVHJlZUVsZW1lbnQuY3Nz
Ij4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0xheWVyVHJlZURldGFp
bHNTaWRlYmFyUGFuZWwuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZp
ZXdzL0xheW91dFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5jc3MiPgpAQCAtNDM2LDcgKzQzNiw2IEBA
CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvZGVNaXJyb3JGb3JtYXR0ZXJzLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29kZU1pcnJvclRleHRNYXJrZXJzLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29sb3JQaWNrZXIuanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db2xvclN3YXRjaC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IlZpZXdzL0NvbG9yV2hlZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5qcyI+PC9zY3JpcHQ+CkBA
IC00OTgsNiArNDk3LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvSW5kZXhlZERhdGFiYXNl
T2JqZWN0U3RvcmVJbmRleFRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVlRWxlbWVudC5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0luZGV4ZWREYXRhYmFzZVRyZWVFbGVtZW50Lmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvSW5saW5lU3dhdGNoLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvSXNzdWVUcmVlRWxlbWVudC5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0xheWVyVHJlZURhdGFHcmlkTm9kZS5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0xheWVyVHJlZURldGFpbHNTaWRlYmFyUGFu
ZWwuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0dyYWRpZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0dyYWRpZW50LmpzCmluZGV4IGEwOTRmM2IuLmFlMjNjYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9HcmFkaWVu
dC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvR3Jh
ZGllbnQuanMKQEAgLTIzLDE0ICsyMywxNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLS8vIEZJWE1FOiBDb252ZXJ0IHRvIGNsYXNzPwotV2ViSW5zcGVjdG9y
LkdyYWRpZW50ID0gewotICAgIFR5cGVzOiB7Ci0gICAgICAgIExpbmVhcjogImxpbmVhci1ncmFk
aWVudCIsCi0gICAgICAgIFJhZGlhbDogInJhZGlhbC1ncmFkaWVudCIKLSAgICB9LAotCi0gICAg
ZnJvbVN0cmluZyhjc3NTdHJpbmcpCitXZWJJbnNwZWN0b3IuR3JhZGllbnQgPSBjbGFzcyBHcmFk
aWVudAoreworICAgIGNvbnN0cnVjdG9yKHR5cGUsIHN0b3BzKQorICAgIHsKKyAgICAgICAgdGhp
cy50eXBlID0gdHlwZTsKKyAgICAgICAgdGhpcy5zdG9wcyA9IHN0b3BzOworICAgIH0KKworICAg
IC8vIFN0YXRpYworCisgICAgc3RhdGljIGZyb21TdHJpbmcoY3NzU3RyaW5nKQogICAgIHsKICAg
ICAgICAgdmFyIHR5cGU7CiAgICAgICAgIHZhciBvcGVuaW5nUGFyZW50aGVzaXNJbmRleCA9IGNz
c1N0cmluZy5pbmRleE9mKCIoIik7CkBAIC04NCwxNyArODcsMTcgQEAgV2ViSW5zcGVjdG9yLkdy
YWRpZW50ID0gewogCiAgICAgICAgIHZhciBncmFkaWVudDsKICAgICAgICAgaWYgKHR5cGUgPT09
IFdlYkluc3BlY3Rvci5HcmFkaWVudC5UeXBlcy5MaW5lYXIpCi0gICAgICAgICAgICBncmFkaWVu
dCA9IFdlYkluc3BlY3Rvci5MaW5lYXJHcmFkaWVudC5saW5lYXJHcmFkaWVudFdpdGhDb21wb25l
bnRzKGNvbXBvbmVudHMpOworICAgICAgICAgICAgZ3JhZGllbnQgPSBXZWJJbnNwZWN0b3IuTGlu
ZWFyR3JhZGllbnQuZnJvbUNvbXBvbmVudHMoY29tcG9uZW50cyk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGdyYWRpZW50ID0gV2ViSW5zcGVjdG9yLlJhZGlhbEdyYWRpZW50LnJhZGlhbEdy
YWRpZW50V2l0aENvbXBvbmVudHMoY29tcG9uZW50cyk7CisgICAgICAgICAgICBncmFkaWVudCA9
IFdlYkluc3BlY3Rvci5SYWRpYWxHcmFkaWVudC5mcm9tQ29tcG9uZW50cyhjb21wb25lbnRzKTsK
IAogICAgICAgICBpZiAoZ3JhZGllbnQpCiAgICAgICAgICAgICBncmFkaWVudC5yZXBlYXRzID0g
dHlwZVN0cmluZy5zdGFydHNXaXRoKCJyZXBlYXRpbmciKTsKIAogICAgICAgICByZXR1cm4gZ3Jh
ZGllbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzdG9wc1dpdGhDb21wb25lbnRzKGNvbXBvbmVu
dHMpCisgICAgc3RhdGljIHN0b3BzV2l0aENvbXBvbmVudHMoY29tcG9uZW50cykKICAgICB7CiAg
ICAgICAgIC8vIEZJWE1FOiBoYW5kbGUgbGVuZ3Rocy4KICAgICAgICAgdmFyIHN0b3BzID0gY29t
cG9uZW50cy5tYXAoZnVuY3Rpb24oY29tcG9uZW50KSB7CkBAIC0xMjYsNyArMTI5LDkgQEAgV2Vi
SW5zcGVjdG9yLkdyYWRpZW50ID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHN0b3Bz
OwotICAgIH0sCisgICAgfQorCisgICAgLy8gUHVibGljCiAKICAgICBzdHJpbmdGcm9tU3RvcHMo
c3RvcHMpCiAgICAgewpAQCAtMTM4LDIwICsxNDMsMzYgQEAgV2ViSW5zcGVjdG9yLkdyYWRpZW50
ID0gewogICAgICAgICAgICAgcmV0dXJuIHN0cjsKICAgICAgICAgfSkuam9pbigiLCAiKTsKICAg
ICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGNvcHkoKQorICAgIHsKKyAgICAgICAgLy8gSW1w
bGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICB9CisKKyAgICB0b1N0cmluZygpCisgICAgewor
ICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgorICAgIH0KK307CisKK1dlYklu
c3BlY3Rvci5HcmFkaWVudC5UeXBlcyA9IHsKKyAgICBMaW5lYXI6ICJsaW5lYXItZ3JhZGllbnQi
LAorICAgIFJhZGlhbDogInJhZGlhbC1ncmFkaWVudCIKIH07CiAKLVdlYkluc3BlY3Rvci5MaW5l
YXJHcmFkaWVudCA9IGNsYXNzIExpbmVhckdyYWRpZW50CitXZWJJbnNwZWN0b3IuTGluZWFyR3Jh
ZGllbnQgPSBjbGFzcyBMaW5lYXJHcmFkaWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5HcmFkaWVu
dAogewogICAgIGNvbnN0cnVjdG9yKGFuZ2xlLCBzdG9wcykKICAgICB7Ci0gICAgICAgIHRoaXMu
dHlwZSA9IFdlYkluc3BlY3Rvci5HcmFkaWVudC5UeXBlcy5MaW5lYXI7CisgICAgICAgIHN1cGVy
KFdlYkluc3BlY3Rvci5HcmFkaWVudC5UeXBlcy5MaW5lYXIsIHN0b3BzKTsKICAgICAgICAgdGhp
cy5hbmdsZSA9IGFuZ2xlOwotICAgICAgICB0aGlzLnN0b3BzID0gc3RvcHM7CiAgICAgfQogCiAg
ICAgLy8gU3RhdGljCiAKLSAgICBzdGF0aWMgbGluZWFyR3JhZGllbnRXaXRoQ29tcG9uZW50cyhj
b21wb25lbnRzKQorICAgIHN0YXRpYyBmcm9tQ29tcG9uZW50cyhjb21wb25lbnRzKQogICAgIHsK
ICAgICAgICAgdmFyIGFuZ2xlID0gMTgwOwogCkBAIC0yMzMsMjQgKzI1NCwyMyBAQCBXZWJJbnNw
ZWN0b3IuTGluZWFyR3JhZGllbnQgPSBjbGFzcyBMaW5lYXJHcmFkaWVudAogICAgICAgICBpZiAo
c3RyICE9PSAiIikKICAgICAgICAgICAgIHN0ciArPSAiLCAiOwogCi0gICAgICAgIHN0ciArPSBX
ZWJJbnNwZWN0b3IuR3JhZGllbnQuc3RyaW5nRnJvbVN0b3BzKHRoaXMuc3RvcHMpOworICAgICAg
ICBzdHIgKz0gdGhpcy5zdHJpbmdGcm9tU3RvcHModGhpcy5zdG9wcyk7CiAKICAgICAgICAgcmV0
dXJuICh0aGlzLnJlcGVhdHMgPyAicmVwZWF0aW5nLSIgOiAiIikgKyB0aGlzLnR5cGUgKyAiKCIg
KyBzdHIgKyAiKSI7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlJhZGlhbEdyYWRpZW50ID0g
Y2xhc3MgUmFkaWFsR3JhZGllbnQKK1dlYkluc3BlY3Rvci5SYWRpYWxHcmFkaWVudCA9IGNsYXNz
IFJhZGlhbEdyYWRpZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkdyYWRpZW50CiB7CiAgICAgY29u
c3RydWN0b3Ioc2l6aW5nLCBzdG9wcykKICAgICB7Ci0gICAgICAgIHRoaXMudHlwZSA9IFdlYklu
c3BlY3Rvci5HcmFkaWVudC5UeXBlcy5SYWRpYWw7CisgICAgICAgIHN1cGVyKFdlYkluc3BlY3Rv
ci5HcmFkaWVudC5UeXBlcy5SYWRpYWwsIHN0b3BzKTsKICAgICAgICAgdGhpcy5zaXppbmcgPSBz
aXppbmc7Ci0gICAgICAgIHRoaXMuc3RvcHMgPSBzdG9wczsKICAgICB9CiAKICAgICAvLyBTdGF0
aWMKIAotICAgIHN0YXRpYyByYWRpYWxHcmFkaWVudFdpdGhDb21wb25lbnRzKGNvbXBvbmVudHMp
CisgICAgc3RhdGljIGZyb21Db21wb25lbnRzKGNvbXBvbmVudHMpCiAgICAgewogICAgICAgICB2
YXIgc2l6aW5nID0gIVdlYkluc3BlY3Rvci5Db2xvci5mcm9tU3RyaW5nKGNvbXBvbmVudHNbMF0u
am9pbigiICIpKSA/IGNvbXBvbmVudHMuc2hpZnQoKS5qb2luKCIgIikgOiAiIjsKIApAQCAtMjc1
LDcgKzI5NSw3IEBAIFdlYkluc3BlY3Rvci5SYWRpYWxHcmFkaWVudCA9IGNsYXNzIFJhZGlhbEdy
YWRpZW50CiAgICAgICAgIGlmIChzdHIgIT09ICIiKQogICAgICAgICAgICAgc3RyICs9ICIsICI7
CiAKLSAgICAgICAgc3RyICs9IFdlYkluc3BlY3Rvci5HcmFkaWVudC5zdHJpbmdGcm9tU3RvcHMo
dGhpcy5zdG9wcyk7CisgICAgICAgIHN0ciArPSB0aGlzLnN0cmluZ0Zyb21TdG9wcyh0aGlzLnN0
b3BzKTsKIAogICAgICAgICByZXR1cm4gKHRoaXMucmVwZWF0cyA/ICJyZXBlYXRpbmctIiA6ICIi
KSArIHRoaXMudHlwZSArICIoIiArIHN0ciArICIpIjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9u
VGV4dEVkaXRvci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5jc3MKaW5kZXggZmMxMjlhYi4uYTM4YmI4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmNz
cwpAQCAtOTEsMzIgKzkxLDYgQEAKICAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMC45KTsKIH0KIAot
LmNzcy1zdHlsZS10ZXh0LWVkaXRvciA+IC5Db2RlTWlycm9yIC5Db2RlTWlycm9yLWxpbmVzIC5j
dWJpYy1iZXppZXItbWFya2VyIHsKLSAgICB3aWR0aDogMTFweDsKLSAgICBoZWlnaHQ6IDExcHg7
Ci0gICAgbWFyZ2luLXJpZ2h0OiAycHg7Ci0gICAgdmVydGljYWwtYWxpZ246IC0ycHg7Ci0gICAg
Y29udGVudDogdXJsKC4uL0ltYWdlcy9DdWJpY0Jlemllci5zdmcpOwotICAgIGN1cnNvcjogZGVm
YXVsdDsKLX0KLQotQG1lZGlhICgtd2Via2l0LW1heC1kZXZpY2UtcGl4ZWwtcmF0aW86IDEpIHsK
LSAgICAvKiBFbnN1cmUgdGhlIGJlemllciBtYXJrZXIgaXMgZXZlbiBieSBldmVuIHNvIGl0IGxv
b2tzIGEgYml0IGxlc3MgYmx1cnJ5LiAqLwotICAgIC5jc3Mtc3R5bGUtdGV4dC1lZGl0b3IgPiAu
Q29kZU1pcnJvciAuQ29kZU1pcnJvci1saW5lcyAuY3ViaWMtYmV6aWVyLW1hcmtlciB7Ci0gICAg
ICAgIHZlcnRpY2FsLWFsaWduOiAtMXB4OwotICAgICAgICB3aWR0aDogMTBweDsKLSAgICAgICAg
aGVpZ2h0OiAxMHB4OwotICAgIH0KLX0KLQotLmNzcy1zdHlsZS10ZXh0LWVkaXRvciA+IC5Db2Rl
TWlycm9yIC5Db2RlTWlycm9yLWxpbmVzIC5jdWJpYy1iZXppZXItbWFya2VyOmhvdmVyIHsKLSAg
ICBmaWx0ZXI6IGJyaWdodG5lc3MoMC45KTsKLX0KLQotLmNzcy1zdHlsZS10ZXh0LWVkaXRvciA+
IC5Db2RlTWlycm9yIC5Db2RlTWlycm9yLWxpbmVzIC5jdWJpYy1iZXppZXItbWFya2VyOmFjdGl2
ZSB7Ci0gICAgZmlsdGVyOiBicmlnaHRuZXNzKDAuOCk7Ci19Ci0KIC5jb21wdXRlZCAuY3NzLXN0
eWxlLXRleHQtZWRpdG9yID4gLkNvZGVNaXJyb3IgLkNvZGVNaXJyb3ItbGluZXMgLmNzcy1zdHls
ZS1kZWNsYXJhdGlvbi1wcm9wZXJ0eS5pbXBsaWNpdCwKIC5jc3Mtc3R5bGUtdGV4dC1lZGl0b3Ig
PiAuQ29kZU1pcnJvciAuQ29kZU1pcnJvci1saW5lcyAuY3NzLXN0eWxlLWRlY2xhcmF0aW9uLXBy
b3BlcnR5Lm5vdC1pbmhlcml0ZWQgewogICAgIG9wYWNpdHk6IDAuNTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRp
b25UZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMKaW5kZXggZThlOTY3NS4uZTEwMjY5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMK
QEAgLTM4OCw4ICszODgsNiBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRF
ZGl0b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogCiAgICAgZGlkRGlz
bWlzc1BvcG92ZXIocG9wb3ZlcikKICAgICB7Ci0gICAgICAgIGlmIChwb3BvdmVyID09PSB0aGlz
Ll9jb2xvclBpY2tlclBvcG92ZXIpCi0gICAgICAgICAgICB0aGlzLl9jb2xvclBpY2tlclBvcG92
ZXIgPSBudWxsOwogICAgICAgICBpZiAocG9wb3ZlciA9PT0gdGhpcy5fY3ViaWNCZXppZXJFZGl0
b3JQb3BvdmVyKQogICAgICAgICAgICAgdGhpcy5fY3ViaWNCZXppZXJFZGl0b3JQb3BvdmVyID0g
bnVsbDsKICAgICB9CkBAIC03NzEsMTAgKzc2OSw4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9y
CiAgICAgICAgIC8vIFdoZW4gdGhlIGNoYW5nZSBpcyBhIGNvbXBsZXRpb24gY2hhbmdlLCBjcmVh
dGUgY29sb3Igc3dhdGNoZXMgbm93IHNpbmNlIHRoZSBjaGFuZ2VzCiAgICAgICAgIC8vIHdpbGwg
bm90IGdvIHRocm91Z2ggX3Byb3BlcnRpZXNDaGFuZ2VkIHVudGlsIGNvbXBsZXRpb25Db250cm9s
bGVyQ29tcGxldGlvbnNIaWRkZW4gaGFwcGVucy4KICAgICAgICAgLy8gVGhpcyB3YXkgYW55IGF1
dG8gY29tcGxldGVkIGNvbG9ycyBnZXQgc3dhdGNoZXMgcmlnaHQgYXdheS4KLSAgICAgICAgaWYg
KHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLmlzQ29tcGxldGlvbkNoYW5nZShjaGFuZ2UpKSB7
Ci0gICAgICAgICAgICB0aGlzLl9jcmVhdGVDb2xvclN3YXRjaGVzKGZhbHNlLCBjaGFuZ2UuZnJv
bS5saW5lKTsKLSAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUJlemllckVkaXRvcnMoZmFsc2UsIGNo
YW5nZS5mcm9tLmxpbmUpOwotICAgICAgICB9CisgICAgICAgIGlmICh0aGlzLl9jb21wbGV0aW9u
Q29udHJvbGxlci5pc0NvbXBsZXRpb25DaGFuZ2UoY2hhbmdlKSkKKyAgICAgICAgICAgIHRoaXMu
X2NyZWF0ZUlubGluZVN3YXRjaGVzKGZhbHNlLCBjaGFuZ2UuZnJvbS5saW5lKTsKIAogICAgICAg
ICAvLyBVc2UgYSBzaG9ydCBkZWxheSBmb3IgdXNlciBpbnB1dCB0byBjb2FsZXNjZSBtb3JlIGNo
YW5nZXMgYmVmb3JlIGNvbW1pdHRpbmcuIE90aGVyIGFjdGlvbnMgbGlrZQogICAgICAgICAvLyB1
bmRvLCByZWRvIGFuZCBwYXN0ZSBhcmUgYXRvbWljIGFuZCB3b3JrIGJldHRlciB3aXRoIGEgemVy
byBkZWxheS4gQ29kZU1pcnJvciBpZGVudGlmaWVzIGNoYW5nZXMgdGhhdApAQCAtODI0LDkgKzgy
MCw4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvciA9IGNsYXNz
IENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yCiAgICAgICAgICAgICAgICAgfS5iaW5kKHRo
aXMpKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gTG9vayBmb3IgY29sb3JzIGFu
ZCBtYWtlIHN3YXRjaGVzLgotICAgICAgICAgICAgdGhpcy5fY3JlYXRlQ29sb3JTd2F0Y2hlcyh0
cnVlKTsKLSAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUJlemllckVkaXRvcnModHJ1ZSk7CisgICAg
ICAgICAgICAvLyBMb29rIGZvciBzd2F0Y2hhYmxlIHZhbHVlcyBhbmQgbWFrZSBpbmxpbmUgc3dh
dGNoZXMuCisgICAgICAgICAgICB0aGlzLl9jcmVhdGVJbmxpbmVTd2F0Y2hlcyh0cnVlKTsKIAog
ICAgICAgICAgICAgdGhpcy5fbWFya0xpbmVzV2l0aENoZWNrYm94UGxhY2Vob2xkZXIoKTsKICAg
ICAgICAgfQpAQCAtODcyLDUxICs4NjcsNDEgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFy
YXRpb25UZXh0RWRpdG9yID0gY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IKICAg
ICAgICAgfQogICAgIH0KIAotICAgIF9jcmVhdGVDb2xvclN3YXRjaGVzKG5vbmF0b21pYywgbGlu
ZU51bWJlcikKKyAgICBfY3JlYXRlSW5saW5lU3dhdGNoZXMobm9uYXRvbWljLCBsaW5lTnVtYmVy
KQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gdXBkYXRlKCkKKyAgICAgICAgZnVuY3Rpb24gY3Jl
YXRlU3dhdGNoKHN3YXRjaCwgbWFya2VyLCB2YWx1ZU9iamVjdCwgdmFsdWVTdHJpbmcpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGxldCByYW5nZSA9IHR5cGVvZiBsaW5lTnVtYmVyID09PSAibnVt
YmVyIiA/IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKGxpbmVOdW1iZXIsIDAsIGxpbmVOdW1i
ZXIgKyAxLCAwKSA6IG51bGw7Ci0KLSAgICAgICAgICAgIC8vIExvb2sgZm9yIGNvbG9yIHN0cmlu
Z3MgYW5kIGFkZCBzd2F0Y2hlcyBpbiBmcm9udCBvZiB0aGVtLgotICAgICAgICAgICAgY3JlYXRl
Q29kZU1pcnJvckNvbG9yVGV4dE1hcmtlcnModGhpcy5fY29kZU1pcnJvciwgcmFuZ2UsIGZ1bmN0
aW9uKG1hcmtlciwgY29sb3IsIGNvbG9yU3RyaW5nKSB7Ci0gICAgICAgICAgICAgICAgbGV0IHN3
YXRjaCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29sb3JTd2F0Y2goY29sb3IsIHRoaXMuX2NvZGVNaXJy
b3IuZ2V0T3B0aW9uKCJyZWFkT25seSIpKTsKLSAgICAgICAgICAgICAgICBzd2F0Y2guYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29sb3JTd2F0Y2guRXZlbnQuQ29sb3JDaGFuZ2VkLCB0
aGlzLl9jb2xvclN3YXRjaENvbG9yQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgICAgICBzd2F0Y2gu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoLkV2ZW50LlZhbHVlQ2hh
bmdlZCwgdGhpcy5faW5saW5lU3dhdGNoVmFsdWVDaGFuZ2VkLCB0aGlzKTsKIAotICAgICAgICAg
ICAgICAgIGxldCBjb2RlTWlycm9yVGV4dE1hcmtlciA9IG1hcmtlci5jb2RlTWlycm9yVGV4dE1h
cmtlcjsKLSAgICAgICAgICAgICAgICBsZXQgY29kZU1pcnJvclRleHRNYXJrZXJSYW5nZSA9IGNv
ZGVNaXJyb3JUZXh0TWFya2VyLmZpbmQoKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9jb2RlTWly
cm9yLnNldFVuaXF1ZUJvb2ttYXJrKGNvZGVNaXJyb3JUZXh0TWFya2VyUmFuZ2UuZnJvbSwgc3dh
dGNoLmVsZW1lbnQpOworICAgICAgICAgICAgbGV0IGNvZGVNaXJyb3JUZXh0TWFya2VyID0gbWFy
a2VyLmNvZGVNaXJyb3JUZXh0TWFya2VyOworICAgICAgICAgICAgbGV0IGNvZGVNaXJyb3JUZXh0
TWFya2VyUmFuZ2UgPSBjb2RlTWlycm9yVGV4dE1hcmtlci5maW5kKCk7CisgICAgICAgICAgICB0
aGlzLl9jb2RlTWlycm9yLnNldFVuaXF1ZUJvb2ttYXJrKGNvZGVNaXJyb3JUZXh0TWFya2VyUmFu
Z2UuZnJvbSwgc3dhdGNoLmVsZW1lbnQpOwogCi0gICAgICAgICAgICAgICAgc3dhdGNoLl9fY29s
b3JUZXh0TWFya2VyID0gY29kZU1pcnJvclRleHRNYXJrZXI7Ci0gICAgICAgICAgICAgICAgc3dh
dGNoLl9fY29sb3JUZXh0TWFya2VyUmFuZ2UgPSBjb2RlTWlycm9yVGV4dE1hcmtlclJhbmdlOwot
ICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHN3YXRjaC5fX3RleHRNYXJr
ZXIgPSBjb2RlTWlycm9yVGV4dE1hcmtlcjsKKyAgICAgICAgICAgIHN3YXRjaC5fX3RleHRNYXJr
ZXJSYW5nZSA9IGNvZGVNaXJyb3JUZXh0TWFya2VyUmFuZ2U7CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAobm9uYXRvbWljKQotICAgICAgICAgICAgdXBkYXRlLmNhbGwodGhpcyk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iub3BlcmF0aW9uKHVwZGF0ZS5iaW5k
KHRoaXMpKTsKLSAgICB9Ci0KLSAgICBfY3JlYXRlQmV6aWVyRWRpdG9ycyhub25hdG9taWMsIGxp
bmVOdW1iZXIpCi0gICAgewogICAgICAgICBmdW5jdGlvbiB1cGRhdGUoKQogICAgICAgICB7Ci0g
ICAgICAgICAgICB2YXIgcmFuZ2UgPSB0eXBlb2YgbGluZU51bWJlciA9PT0gIm51bWJlciIgPyBu
ZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZShsaW5lTnVtYmVyLCAwLCBsaW5lTnVtYmVyICsgMSwg
MCkgOiBudWxsOworICAgICAgICAgICAgbGV0IHJhbmdlID0gdHlwZW9mIGxpbmVOdW1iZXIgPT09
ICJudW1iZXIiID8gbmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UobGluZU51bWJlciwgMCwgbGlu
ZU51bWJlciArIDEsIDApIDogbnVsbDsKIAotICAgICAgICAgICAgLy8gTG9vayBmb3IgY3ViaWMt
YmV6aWVyIGFuZCB0aW1pbmcgZnVuY3Rpb25zIGFuZCBhZGQgY3ViaWMtYmV6aWVyIGljb25zIGlu
IGZyb250IG9mIHRoZW0uCi0gICAgICAgICAgICBjcmVhdGVDb2RlTWlycm9yQ3ViaWNCZXppZXJU
ZXh0TWFya2Vycyh0aGlzLl9jb2RlTWlycm9yLCByYW5nZSwgZnVuY3Rpb24obWFya2VyLCBjdWJp
Y0JlemllcikgewotICAgICAgICAgICAgICAgIHZhciBiZXppZXJNYXJrZXIgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgICAgICAgICAgYmV6aWVyTWFya2VyLnRpdGxl
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDbGljayB0byBvcGVuIGEgY3ViaWMtYmV6aWVyIGVk
aXRvciIpOwotICAgICAgICAgICAgICAgIGJlemllck1hcmtlci5jbGFzc05hbWUgPSBXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuQmV6aWVyRWRpdG9yQ2xhc3NOYW1l
OwotICAgICAgICAgICAgICAgIGJlemllck1hcmtlci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IHRoaXMuX2N1YmljQmV6aWVyTWFya2VyQ2xpY2tlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAg
IC8vIExvb2sgZm9yIGNvbG9yIHN0cmluZ3MgYW5kIGFkZCBzd2F0Y2hlcyBpbiBmcm9udCBvZiB0
aGVtLgorICAgICAgICAgICAgY3JlYXRlQ29kZU1pcnJvckNvbG9yVGV4dE1hcmtlcnModGhpcy5f
Y29kZU1pcnJvciwgcmFuZ2UsIChtYXJrZXIsIGNvbG9yLCBjb2xvclN0cmluZykgPT4geworICAg
ICAgICAgICAgICAgIGxldCBzd2F0Y2ggPSBuZXcgV2ViSW5zcGVjdG9yLklubGluZVN3YXRjaChX
ZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoLlR5cGUuQ29sb3IsIGNvbG9yLCB0aGlzLl9jb2RlTWly
cm9yLmdldE9wdGlvbigicmVhZE9ubHkiKSk7CisgICAgICAgICAgICAgICAgY3JlYXRlU3dhdGNo
LmNhbGwodGhpcywgc3dhdGNoLCBtYXJrZXIsIGNvbG9yLCBjb2xvclN0cmluZyk7CisgICAgICAg
ICAgICB9KTsKIAotICAgICAgICAgICAgICAgIHZhciBjb2RlTWlycm9yVGV4dE1hcmtlciA9IG1h
cmtlci5jb2RlTWlycm9yVGV4dE1hcmtlcjsKLSAgICAgICAgICAgICAgICB0aGlzLl9jb2RlTWly
cm9yLnNldFVuaXF1ZUJvb2ttYXJrKGNvZGVNaXJyb3JUZXh0TWFya2VyLmZpbmQoKS5mcm9tLCBi
ZXppZXJNYXJrZXIpOworICAgICAgICAgICAgLy8gTG9vayBmb3IgZ3JhZGllbnQgc3RyaW5ncyBh
bmQgYWRkIHN3YXRjaGVzIGluIGZyb250IG9mIHRoZW0uCisgICAgICAgICAgICBjcmVhdGVDb2Rl
TWlycm9yR3JhZGllbnRUZXh0TWFya2Vycyh0aGlzLl9jb2RlTWlycm9yLCByYW5nZSwgKG1hcmtl
ciwgZ3JhZGllbnQsIGdyYWRpZW50U3RyaW5nKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHN3
YXRjaCA9IG5ldyBXZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoKFdlYkluc3BlY3Rvci5JbmxpbmVT
d2F0Y2guVHlwZS5HcmFkaWVudCwgZ3JhZGllbnQsIHRoaXMuX2NvZGVNaXJyb3IuZ2V0T3B0aW9u
KCJyZWFkT25seSIpKTsKKyAgICAgICAgICAgICAgICBjcmVhdGVTd2F0Y2guY2FsbCh0aGlzLCBz
d2F0Y2gsIG1hcmtlciwgZ3JhZGllbnQsIGdyYWRpZW50U3RyaW5nKTsKKyAgICAgICAgICAgIH0p
OwogCi0gICAgICAgICAgICAgICAgYmV6aWVyTWFya2VyLl9fdGV4dE1hcmtlciA9IGNvZGVNaXJy
b3JUZXh0TWFya2VyOwotICAgICAgICAgICAgICAgIGJlemllck1hcmtlci5fX2JlemllciA9IGN1
YmljQmV6aWVyOwotICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIC8vIExv
b2sgZm9yIGN1YmljLWJlemllciBzdHJpbmdzIGFuZCBhZGQgc3dhdGNoZXMgaW4gZnJvbnQgb2Yg
dGhlbS4KKyAgICAgICAgICAgIGNyZWF0ZUNvZGVNaXJyb3JDdWJpY0JlemllclRleHRNYXJrZXJz
KHRoaXMuX2NvZGVNaXJyb3IsIHJhbmdlLCAobWFya2VyLCBiZXppZXIsIGJlemllclN0cmluZykg
PT4geworICAgICAgICAgICAgICAgIGxldCBzd2F0Y2ggPSBuZXcgV2ViSW5zcGVjdG9yLklubGlu
ZVN3YXRjaChXZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoLlR5cGUuQmV6aWVyLCBiZXppZXIsIHRo
aXMuX2NvZGVNaXJyb3IuZ2V0T3B0aW9uKCJyZWFkT25seSIpKTsKKyAgICAgICAgICAgICAgICBj
cmVhdGVTd2F0Y2guY2FsbCh0aGlzLCBzd2F0Y2gsIG1hcmtlciwgYmV6aWVyLCBiZXppZXJTdHJp
bmcpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobm9uYXRvbWlj
KQpAQCAtMTI3MSw5ICsxMjU2LDggQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25U
ZXh0RWRpdG9yID0gY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IKICAgICAgICAg
ICAgIC8vIFJlcGxhY2UgdGhlIHRleHQgd2l0aCBhIGNvbW1lbnRlZCB2ZXJzaW9uLgogICAgICAg
ICAgICAgdGhpcy5fY29kZU1pcnJvci5yZXBsYWNlUmFuZ2UoIi8qICIgKyB0ZXh0ICsgIiAqLyIs
IHJhbmdlLmZyb20sIHJhbmdlLnRvKTsKIAotICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBsaW5l
IGZvciBhbnkgY29sb3Igc3dhdGNoZXMgb3IgY3ViaWMtYmV6aWVycyB0aGF0IGdvdCByZW1vdmVk
LgotICAgICAgICAgICAgdGhpcy5fY3JlYXRlQ29sb3JTd2F0Y2hlcyh0cnVlLCByYW5nZS5mcm9t
LmxpbmUpOwotICAgICAgICAgICAgdGhpcy5fY3JlYXRlQmV6aWVyRWRpdG9ycyh0cnVlLCByYW5n
ZS5mcm9tLmxpbmUpOworICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBsaW5lIGZvciBhbnkgaW5s
aW5lIHN3YXRjaGVzIHRoYXQgZ290IHJlbW92ZWQuCisgICAgICAgICAgICB0aGlzLl9jcmVhdGVJ
bmxpbmVTd2F0Y2hlcyh0cnVlLCByYW5nZS5mcm9tLmxpbmUpOwogICAgICAgICB9CiAKICAgICAg
ICAgdGhpcy5fY29kZU1pcnJvci5vcGVyYXRpb24odXBkYXRlLmJpbmQodGhpcykpOwpAQCAtMTMx
MSwyOCArMTI5NSwyNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0
b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogICAgICAgICAgICAgdGhp
cy5fY29kZU1pcnJvci5hZGRMaW5lQ2xhc3MocmFuZ2UuZnJvbS5saW5lLCAid3JhcCIsIFdlYklu
c3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5FZGl0aW5nTGluZVN0eWxlQ2xh
c3NOYW1lKTsKICAgICAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IucmVwbGFjZVJhbmdlKHRleHQs
IHJhbmdlLmZyb20sIHJhbmdlLnRvKTsKIAotICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBsaW5l
IGZvciBhbnkgY29sb3Igc3dhdGNoZXMgb3IgY3ViaWMtYmV6aWVycyB0aGF0IGdvdCByZW1vdmVk
LgotICAgICAgICAgICAgdGhpcy5fY3JlYXRlQ29sb3JTd2F0Y2hlcyh0cnVlLCByYW5nZS5mcm9t
LmxpbmUpOwotICAgICAgICAgICAgdGhpcy5fY3JlYXRlQmV6aWVyRWRpdG9ycyh0cnVlLCByYW5n
ZS5mcm9tLmxpbmUpOworICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBsaW5lIGZvciBhbnkgaW5s
aW5lIHN3YXRjaGVzIHRoYXQgZ290IHJlbW92ZWQuCisgICAgICAgICAgICB0aGlzLl9jcmVhdGVJ
bmxpbmVTd2F0Y2hlcyh0cnVlLCByYW5nZS5mcm9tLmxpbmUpOwogICAgICAgICB9CiAKICAgICAg
ICAgdGhpcy5fY29kZU1pcnJvci5vcGVyYXRpb24odXBkYXRlLmJpbmQodGhpcykpOwogICAgIH0K
IAotICAgIF9jb2xvclN3YXRjaENvbG9yQ2hhbmdlZChldmVudCkKKyAgICBfaW5saW5lU3dhdGNo
VmFsdWVDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgbGV0IHN3YXRjaCA9IGV2ZW50ICYm
IGV2ZW50LnRhcmdldDsKICAgICAgICAgY29uc29sZS5hc3NlcnQoc3dhdGNoKTsKICAgICAgICAg
aWYgKCFzd2F0Y2gpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbGV0IGNvbG9yU3Ry
aW5nID0gZXZlbnQgJiYgZXZlbnQuZGF0YSAmJiBldmVudC5kYXRhLmNvbG9yICYmIGV2ZW50LmRh
dGEuY29sb3IudG9TdHJpbmcoKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoY29sb3JTdHJpbmcp
OwotICAgICAgICBpZiAoIWNvbG9yU3RyaW5nKQorICAgICAgICBsZXQgdmFsdWUgPSBldmVudC5k
YXRhICYmIGV2ZW50LmRhdGEudmFsdWUgJiYgZXZlbnQuZGF0YS52YWx1ZS50b1N0cmluZygpOwor
ICAgICAgICBjb25zb2xlLmFzc2VydCh2YWx1ZSk7CisgICAgICAgIGlmICghdmFsdWUpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbGV0IGNvbG9yVGV4dE1hcmtlciA9IHN3YXRjaC5f
X2NvbG9yVGV4dE1hcmtlcjsKLSAgICAgICAgbGV0IHJhbmdlID0gc3dhdGNoLl9fY29sb3JUZXh0
TWFya2VyUmFuZ2U7CisgICAgICAgIGxldCB0ZXh0TWFya2VyID0gc3dhdGNoLl9fdGV4dE1hcmtl
cjsKKyAgICAgICAgbGV0IHJhbmdlID0gc3dhdGNoLl9fdGV4dE1hcmtlclJhbmdlOwogICAgICAg
ICBjb25zb2xlLmFzc2VydChyYW5nZSk7CiAgICAgICAgIGlmICghcmFuZ2UpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xMzQwLDEzNiArMTMyMyw0OCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZWNsYXJhdGlvblRleHRFZGl0b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRv
cgogICAgICAgICBmdW5jdGlvbiB1cGRhdGUoKQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBU
aGUgb3JpZ2luYWwgdGV4dCBtYXJrZXIgbWlnaHQgaGF2ZSBiZWVuIGNsZWFyZWQgYnkgYSBzdHls
ZSB1cGRhdGUsCi0gICAgICAgICAgICAvLyBpbiB0aGlzIGNhc2Ugd2UgbmVlZCB0byBmaW5kIHRo
ZSBuZXcgY29sb3IgdGV4dCBtYXJrZXIgc28gd2Uga25vdwotICAgICAgICAgICAgLy8gdGhlIHJp
Z2h0IHJhbmdlIGZvciB0aGUgbmV3IHN0eWxlIGNvbG9yIHRleHQuCi0gICAgICAgICAgICBpZiAo
IWNvbG9yVGV4dE1hcmtlciB8fCAhY29sb3JUZXh0TWFya2VyLmZpbmQoKSkgewotICAgICAgICAg
ICAgICAgIGNvbG9yVGV4dE1hcmtlciA9IG51bGw7CisgICAgICAgICAgICAvLyBpbiB0aGlzIGNh
c2Ugd2UgbmVlZCB0byBmaW5kIHRoZSBuZXcgdGV4dCBtYXJrZXIgc28gd2Uga25vdyB0aGUKKyAg
ICAgICAgICAgIC8vIHJpZ2h0IHJhbmdlIGZvciB0aGUgbmV3IHN0eWxlIHRleHQuCisgICAgICAg
ICAgICBpZiAoIXRleHRNYXJrZXIgfHwgIXRleHRNYXJrZXIuZmluZCgpKSB7CisgICAgICAgICAg
ICAgICAgdGV4dE1hcmtlciA9IG51bGw7CiAKICAgICAgICAgICAgICAgICBsZXQgbWFya3MgPSB0
aGlzLl9jb2RlTWlycm9yLmZpbmRNYXJrc0F0KHJhbmdlLmZyb20pOwogICAgICAgICAgICAgICAg
IGlmICghbWFya3MubGVuZ3RoKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgICAgICAgICBmb3IgKGxldCBtYXJrIG9mIG1hcmtzKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChXZWJJbnNwZWN0b3IuVGV4dE1hcmtlci50ZXh0TWFya2VyRm9yQ29kZU1pcnJvclRleHRN
YXJrZXIobWFyaykudHlwZSAhPT0gV2ViSW5zcGVjdG9yLlRleHRNYXJrZXIuVHlwZS5Db2xvcikK
KyAgICAgICAgICAgICAgICAgICAgbGV0IHR5cGUgPSBXZWJJbnNwZWN0b3IuVGV4dE1hcmtlci50
ZXh0TWFya2VyRm9yQ29kZU1pcnJvclRleHRNYXJrZXIobWFyaykudHlwZTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHR5cGUgIT09IFdlYkluc3BlY3Rvci5UZXh0TWFya2VyLlR5cGUuQ29sb3Ig
JiYgdHlwZSAhPT0gV2ViSW5zcGVjdG9yLlRleHRNYXJrZXIuVHlwZS5HcmFkaWVudCAmJiB0eXBl
ICE9PSBXZWJJbnNwZWN0b3IuVGV4dE1hcmtlci5UeXBlLkN1YmljQmV6aWVyKQogICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgIGNvbG9yVGV4dE1h
cmtlciA9IG1hcms7CisgICAgICAgICAgICAgICAgICAgIHRleHRNYXJrZXIgPSBtYXJrOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGlmICghY29sb3JUZXh0TWFya2VyKQorICAgICAgICAgICAgaWYgKCF0
ZXh0TWFya2VyKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgLy8gU29t
ZXRpbWVzIHdlIHN0aWxsIG1pZ2h0IGZpbmQgYSBzdGFsZSB0ZXh0IG1hcmtlciB3aXRoIGZpbmRN
YXJrc0F0LgotICAgICAgICAgICAgbGV0IG5ld1JhbmdlID0gY29sb3JUZXh0TWFya2VyLmZpbmQo
KTsKLSAgICAgICAgICAgIGlmICghbmV3UmFuZ2UpCisgICAgICAgICAgICByYW5nZSA9IHRleHRN
YXJrZXIuZmluZCgpOworICAgICAgICAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgICAgIHJhbmdlID0gbmV3UmFuZ2U7CisgICAgICAgICAgICB0ZXh0
TWFya2VyLmNsZWFyKCk7CiAKLSAgICAgICAgICAgIGNvbG9yVGV4dE1hcmtlci5jbGVhcigpOwor
ICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5yZXBsYWNlUmFuZ2UodmFsdWUsIHJhbmdlLmZy
b20sIHJhbmdlLnRvKTsKIAotICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5yZXBsYWNlUmFu
Z2UoY29sb3JTdHJpbmcsIHJhbmdlLmZyb20sIHJhbmdlLnRvKTsKLQotICAgICAgICAgICAgLy8g
VGhlIGNvbG9yJ3MgdGV4dCBmb3JtYXQgY291bGQgaGF2ZSBjaGFuZ2VkLCBzbyB3ZSBuZWVkIHRv
IHVwZGF0ZSB0aGUgInJhbmdlIgorICAgICAgICAgICAgLy8gVGhlIHZhbHVlJ3MgdGV4dCBjb3Vs
ZCBoYXZlIGNoYW5nZWQsIHNvIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSAicmFuZ2UiCiAgICAgICAg
ICAgICAvLyB2YXJpYWJsZSB0byBhbnRpY2lwYXRlIGEgZGlmZmVyZW50ICJyYW5nZS50byIgcHJv
cGVydHkuCi0gICAgICAgICAgICByYW5nZS50by5jaCA9IHJhbmdlLmZyb20uY2ggKyBjb2xvclN0
cmluZy5sZW5ndGg7CisgICAgICAgICAgICByYW5nZS50by5jaCA9IHJhbmdlLmZyb20uY2ggKyB2
YWx1ZS5sZW5ndGg7CiAKLSAgICAgICAgICAgIGNvbG9yVGV4dE1hcmtlciA9IHRoaXMuX2NvZGVN
aXJyb3IubWFya1RleHQocmFuZ2UuZnJvbSwgcmFuZ2UudG8pOworICAgICAgICAgICAgdGV4dE1h
cmtlciA9IHRoaXMuX2NvZGVNaXJyb3IubWFya1RleHQocmFuZ2UuZnJvbSwgcmFuZ2UudG8pOwog
Ci0gICAgICAgICAgICBzd2F0Y2guX19jb2xvclRleHRNYXJrZXIgPSBjb2xvclRleHRNYXJrZXI7
CisgICAgICAgICAgICBzd2F0Y2guX190ZXh0TWFya2VyID0gdGV4dE1hcmtlcjsKICAgICAgICAg
fQogCiAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iub3BlcmF0aW9uKHVwZGF0ZS5iaW5kKHRoaXMp
KTsKICAgICB9CiAKLSAgICBfY3ViaWNCZXppZXJNYXJrZXJDbGlja2VkKGV2ZW50KQotICAgIHsK
LSAgICAgICAgaWYgKHRoaXMuX2N1YmljQmV6aWVyRWRpdG9yUG9wb3ZlcikKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICB2YXIgYmV6aWVyTWFya2VyID0gZXZlbnQudGFyZ2V0OwotCi0g
ICAgICAgIHZhciBiZXppZXIgPSBiZXppZXJNYXJrZXIuX19iZXppZXI7Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGJlemllcik7Ci0gICAgICAgIGlmICghYmV6aWVyKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIHZhciBiZXppZXJUZXh0TWFya2VyID0gYmV6aWVyTWFya2VyLl9fdGV4
dE1hcmtlcjsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYmV6aWVyVGV4dE1hcmtlcik7Ci0gICAg
ICAgIGlmICghYmV6aWVyVGV4dE1hcmtlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICB2YXIgcmFuZ2UgPSBiZXppZXJUZXh0TWFya2VyLmZpbmQoKTsKLSAgICAgICAgY29uc29sZS5h
c3NlcnQocmFuZ2UpOwotICAgICAgICBpZiAoIXJhbmdlKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUNvZGVNaXJyb3IobmV3Q3ViaWNCZXppZXJUZXh0KQot
ICAgICAgICB7Ci0gICAgICAgICAgICBmdW5jdGlvbiB1cGRhdGUoKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIC8vIFRoZSBvcmlnaW5hbCB0ZXh0IG1hcmtlciBtaWdodCBoYXZlIGJl
ZW4gY2xlYXJlZCBieSBhIHN0eWxlIHVwZGF0ZSwKLSAgICAgICAgICAgICAgICAvLyBpbiB0aGlz
IGNhc2Ugd2UgbmVlZCB0byBmaW5kIHRoZSBuZXcgYmV6aWVyIHRleHQgbWFya2VyIHNvIHdlIGtu
b3cKLSAgICAgICAgICAgICAgICAvLyB0aGUgcmlnaHQgcmFuZ2UgZm9yIHRoZSBuZXcgc3R5bGUg
YmV6aWVyIHRleHQuCi0gICAgICAgICAgICAgICAgaWYgKCFiZXppZXJUZXh0TWFya2VyIHx8ICFi
ZXppZXJUZXh0TWFya2VyLmZpbmQoKSkgewotICAgICAgICAgICAgICAgICAgICBiZXppZXJUZXh0
TWFya2VyID0gbnVsbDsKLQotICAgICAgICAgICAgICAgICAgICB2YXIgbWFya3MgPSB0aGlzLl9j
b2RlTWlycm9yLmZpbmRNYXJrc0F0KHJhbmdlLmZyb20pOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoIW1hcmtzLmxlbmd0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hcmtzLmxlbmd0aDsgKytpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWFyayA9IG1hcmtzW2ldOwotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5UZXh0TWFya2VyLnRleHRNYXJrZXJGb3JD
b2RlTWlycm9yVGV4dE1hcmtlcihtYXJrKS50eXBlICE9PSBXZWJJbnNwZWN0b3IuVGV4dE1hcmtl
ci5UeXBlLkN1YmljQmV6aWVyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgICAgICAgICAgICAgYmV6aWVyVGV4dE1hcmtlciA9IG1hcms7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICghYmV6aWVyVGV4dE1hcmtlcikKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgLy8gU29tZXRpbWVz
IHdlIHN0aWxsIG1pZ2h0IGZpbmQgYSBzdGFsZSB0ZXh0IG1hcmtlciB3aXRoIGZpbmRNYXJrc0F0
LgotICAgICAgICAgICAgICAgIHZhciBuZXdSYW5nZSA9IGJlemllclRleHRNYXJrZXIuZmluZCgp
OwotICAgICAgICAgICAgICAgIGlmICghbmV3UmFuZ2UpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICAgICAgICAgIHJhbmdlID0gbmV3UmFuZ2U7Ci0KLSAgICAgICAgICAg
ICAgICBiZXppZXJUZXh0TWFya2VyLmNsZWFyKCk7Ci0KLSAgICAgICAgICAgICAgICB0aGlzLl9j
b2RlTWlycm9yLnJlcGxhY2VSYW5nZShuZXdDdWJpY0JlemllclRleHQsIHJhbmdlLmZyb20sIHJh
bmdlLnRvKTsKLQotICAgICAgICAgICAgICAgIC8vIFRoZSBiZXppZXIncyB0ZXh0IGZvcm1hdCBj
b3VsZCBoYXZlIGNoYW5nZWQsIHNvIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSAicmFuZ2UiCi0gICAg
ICAgICAgICAgICAgLy8gdmFyaWFibGUgdG8gYW50aWNpcGF0ZSBhIGRpZmZlcmVudCAicmFuZ2Uu
dG8iIHByb3BlcnR5LgotICAgICAgICAgICAgICAgIHJhbmdlLnRvLmNoID0gcmFuZ2UuZnJvbS5j
aCArIG5ld0N1YmljQmV6aWVyVGV4dC5sZW5ndGg7Ci0KLSAgICAgICAgICAgICAgICBiZXppZXJU
ZXh0TWFya2VyID0gdGhpcy5fY29kZU1pcnJvci5tYXJrVGV4dChyYW5nZS5mcm9tLCByYW5nZS50
byk7Ci0KLSAgICAgICAgICAgICAgICBiZXppZXJNYXJrZXIuX190ZXh0TWFya2VyID0gYmV6aWVy
VGV4dE1hcmtlcjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJv
ci5vcGVyYXRpb24odXBkYXRlLmJpbmQodGhpcykpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhp
cy5fY3ViaWNCZXppZXJFZGl0b3JQb3BvdmVyID0gbmV3IFdlYkluc3BlY3Rvci5Qb3BvdmVyKHRo
aXMpOwotCi0gICAgICAgIHZhciBiZXppZXJFZGl0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLkJlemll
ckVkaXRvcjsKLQotICAgICAgICBiZXppZXJFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuQmV6aWVyRWRpdG9yLkV2ZW50LkJlemllckNoYW5nZWQsIGZ1bmN0aW9uKGV2ZW50KSB7
Ci0gICAgICAgICAgICB1cGRhdGVDb2RlTWlycm9yLmNhbGwodGhpcywgZXZlbnQuZGF0YS5iZXpp
ZXIudG9TdHJpbmcoKSk7Ci0gICAgICAgIH0uYmluZCh0aGlzKSk7Ci0KLSAgICAgICAgdmFyIGJv
dW5kcyA9IFdlYkluc3BlY3Rvci5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChiZXppZXJNYXJrZXIu
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOwotCi0gICAgICAgIHRoaXMuX2N1YmljQmV6aWVyRWRp
dG9yUG9wb3Zlci5jb250ZW50ID0gYmV6aWVyRWRpdG9yLmVsZW1lbnQ7Ci0gICAgICAgIHRoaXMu
X2N1YmljQmV6aWVyRWRpdG9yUG9wb3Zlci5wcmVzZW50KGJvdW5kcy5wYWQoMiksIFtXZWJJbnNw
ZWN0b3IuUmVjdEVkZ2UuTUlOX1hdKTsKLQotICAgICAgICBiZXppZXJFZGl0b3IuYmV6aWVyID0g
YmV6aWVyOwotICAgIH0KLQogICAgIF9wcm9wZXJ0eU92ZXJyaWRkZW5TdGF0dXNDaGFuZ2VkKGV2
ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlVGV4dE1hcmtlckZvclByb3BlcnR5SWZO
ZWVkZWQoZXZlbnQudGFyZ2V0KTsKQEAgLTE2ODEsOSArMTU3Niw4IEBAIFdlYkluc3BlY3Rvci5D
U1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25U
ZXh0RWRpdG9yCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsK
IAotICAgICAgICAgICAgLy8gTG9vayBmb3IgY29sb3JzIGFuZCBtYWtlIHN3YXRjaGVzLgotICAg
ICAgICAgICAgdGhpcy5fY3JlYXRlQ29sb3JTd2F0Y2hlcyh0cnVlKTsKLSAgICAgICAgICAgIHRo
aXMuX2NyZWF0ZUJlemllckVkaXRvcnModHJ1ZSk7CisgICAgICAgICAgICAvLyBMb29rIGZvciBz
d2F0Y2hhYmxlIHZhbHVlcyBhbmQgbWFrZSBpbmxpbmUgc3dhdGNoZXMuCisgICAgICAgICAgICB0
aGlzLl9jcmVhdGVJbmxpbmVTd2F0Y2hlcyh0cnVlKTsKIAogICAgICAgICAgICAgLy8gUmVzdG9y
ZSB0aGUgY3Vyc29yIHBvc2l0aW9uL3NlbGVjdGlvbi4KICAgICAgICAgICAgIHRoaXMuX2NvZGVN
aXJyb3Iuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbkFuY2hvciwgc2VsZWN0aW9uSGVhZCk7CkBAIC0x
NzcxLDcgKzE2NjUsNiBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0
b3IuRXZlbnQgPSB7CiAKIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRv
ci5TdHlsZUNsYXNzTmFtZSA9ICJjc3Mtc3R5bGUtdGV4dC1lZGl0b3IiOwogV2ViSW5zcGVjdG9y
LkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLlJlYWRPbmx5U3R5bGVDbGFzc05hbWUgPSAi
cmVhZC1vbmx5IjsKLVdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5C
ZXppZXJFZGl0b3JDbGFzc05hbWUgPSAiY3ViaWMtYmV6aWVyLW1hcmtlciI7CiBXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuQ2hlY2tib3hQbGFjZWhvbGRlckVsZW1l
bnRTdHlsZUNsYXNzTmFtZSA9ICJjaGVja2JveC1wbGFjZWhvbGRlciI7CiBXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuRWRpdGluZ0xpbmVTdHlsZUNsYXNzTmFtZSA9
ICJlZGl0aW5nLWxpbmUiOwogV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRp
dG9yLkNvbW1pdENvYWxlc2NlRGVsYXkgPSAyNTA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2RlTWlycm9yVGV4dE1hcmtlcnMuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2RlTWlycm9yVGV4dE1h
cmtlcnMuanMKaW5kZXggODIyMmRmYS4uYzMxYzg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29kZU1pcnJvclRleHRNYXJrZXJzLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JU
ZXh0TWFya2Vycy5qcwpAQCAtODQsOSArODQsMzYgQEAgZnVuY3Rpb24gY3JlYXRlQ29kZU1pcnJv
clRleHRNYXJrZXJzKHR5cGUsIHBhdHRlcm4sIG1hdGNoRnVuY3Rpb24sIGNvZGVNaXJyb3IsIHIK
IAogZnVuY3Rpb24gY3JlYXRlQ29kZU1pcnJvckNvbG9yVGV4dE1hcmtlcnMoY29kZU1pcnJvciwg
cmFuZ2UsIGNhbGxiYWNrKQogewotICAgIC8vIE1hdGNoZXMgcmdiYSgwLCAwLCAwLCAwLjUpLCBy
Z2IoMCwgMCwgMCksIGhzbCgpLCBoc2xhKCksICNmZmYsICNmZmZmZmYsIHdoaXRlCi0gICAgdmFy
IGNvbG9yUmVnZXggPSAvKCg/OnJnYnxoc2wpYT9cKFteKV0rXCl8I1swLTlhLWZBLUZdezh9fCNb
MC05YS1mQS1GXXs2fXwjWzAtOWEtZkEtRl17Myw0fXxcYlx3K1xiKD8hWy0uXSkpL2c7CisgICAg
Ly8gTWF0Y2hlcyByZ2JhKDAsIDAsIDAsIDAuNSksIHJnYigwLCAwLCAwKSwgaHNsKCksIGhzbGEo
KSwgI2ZmZiwgI2ZmZmYsICNmZmZmZmYsICNmZmZmZmZmZiwgd2hpdGUKKyAgICBsZXQgY29sb3JS
ZWdleCA9IC8oKD86cmdifGhzbClhP1woW14pXStcKXwjWzAtOWEtZkEtRl17OH18I1swLTlhLWZB
LUZdezZ9fCNbMC05YS1mQS1GXXszLDR9fFxiXHcrXGIoPyFbLS5dKSkvZzsKICAgICBmdW5jdGlv
biBtYXRjaEZ1bmN0aW9uKGxpbmVDb250ZW50LCBtYXRjaCkgeworICAgICAgICBpZiAoIWxpbmVD
b250ZW50IHx8ICFsaW5lQ29udGVudC5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgLy8gSW4gb3JkZXIgZGV0ZXJtaW5lIGlmIHRoZSBtYXRjaGVkIGNvbG9yIGlz
IGluc2lkZSBhIGdyYWRpZW50LCBmaXJzdAorICAgICAgICAvLyBsb29rIGJlZm9yZSB0aGUgdGV4
dCB0byBmaW5kIHRoZSBmaXJzdCB1bm1hdGNoZWQgb3BlbiBwYXJlbnRoZXNpcy4KKyAgICAgICAg
Ly8gVGhpcyBwYXJlbnRoZXNpcywgaWYgaXQgZXhpc3RzLCB3aWxsIGJlIGltbWVkaWF0ZWx5IGFm
dGVyIHRoZSBDU1MKKyAgICAgICAgLy8gZnVuY2l0b24gd2hvc2UgbmFtZSBjYW4gYmUgY2hlY2tl
ZCB0byBzZWUgaWYgaXQgbWF0Y2hlcyBhIGdyYWRpZW50LgorICAgICAgICBsZXQgb3BlblBhcmVu
dGhlc2lzID0gMDsKKyAgICAgICAgbGV0IGluZGV4ID0gbWF0Y2guaW5kZXg7CisgICAgICAgIGxl
dCBjID0gbnVsbDsKKyAgICAgICAgd2hpbGUgKGMgPSBsaW5lQ29udGVudFtpbmRleF0pIHsKKyAg
ICAgICAgICAgIGlmIChjID09PSAiKCIpCisgICAgICAgICAgICAgICAgKytvcGVuUGFyZW50aGVz
aXM7CisgICAgICAgICAgICBpZiAoYyA9PT0gIikiKQorICAgICAgICAgICAgICAgIC0tb3BlblBh
cmVudGhlc2lzOworCisgICAgICAgICAgICBpZiAob3BlblBhcmVudGhlc2lzID4gMCkKKyAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgLS1pbmRleDsKKyAgICAgICAgICAgIGlm
IChpbmRleCA8IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoLyhyZXBlYXRpbmctKT8obGluZWFyfHJhZGlhbCktZ3JhZGllbnQkLy50ZXN0KGxpbmVD
b250ZW50LnN1YnN0cmluZygwLCBpbmRleCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CiAgICAgICAgIC8vIEFjdCBhcyBhIG5lZ2F0aXZlIGxvb2stYmVoaW5kIGFuZCBkaXNhbGxvdyB0
aGUgY29sb3IgZnJvbSBiZWluZyBwcmVmaXhpbmcgd2l0aCBjZXJ0YWluIGNoYXJhY3RlcnMuCiAg
ICAgICAgIHJldHVybiAhKG1hdGNoLmluZGV4ID4gMCAmJiAvWy0uXCJcJ10vLnRlc3QobGluZUNv
bnRlbnRbbWF0Y2guaW5kZXggLSAxXSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbG9yU3dhdGNoLmNzcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbG9yU3dhdGNoLmNzcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWU2ZDA3OC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xvclN3YXRjaC5jc3MKKysrIC9kZXYv
bnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBEZXZpbiBSb3Vz
c28gPGRjcm91c3NvK3dlYmtpdEBnbWFpbC5jb20+LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0uY29sb3Itc3dhdGNoIHsKLSAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ci0gICAg
cG9zaXRpb246IHJlbGF0aXZlOwotICAgIHdpZHRoOiAxZW07Ci0gICAgaGVpZ2h0OiAxZW07Ci0g
ICAgbWFyZ2luLXJpZ2h0OiAzcHg7Ci0gICAgdmVydGljYWwtYWxpZ246IC0ycHg7Ci0gICAgLyog
TWFrZSBhIGNoZWNrZXJlZCBiYWNrZ3JvdW5kIGZvciB0cmFuc3BhcmVudCBjb2xvcnMgdG8gc2hv
dyBhZ2FpbnN0LiAqLwotICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBi
b3R0b20sIGhzbCgwLCAwJSwgODAlKSwgaHNsKDAsIDAlLCA4MCUpKSwKLSAgICAgICAgICAgICAg
ICAgICAgICBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCUsIDgwJSksIGhzbCgw
LCAwJSwgODAlKSk7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Ci0gICAgYmFja2dyb3Vu
ZC1zaXplOiA1MCU7Ci0gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wIGxlZnQsIGJvdHRvbSBy
aWdodDsKLSAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwotICAgIGN1cnNvcjogZGVm
YXVsdDsKLSAgICBvdmVyZmxvdzogaGlkZGVuOwotfQotCi1AbWVkaWEgKC13ZWJraXQtbWF4LWRl
dmljZS1waXhlbC1yYXRpbzogMSkgewotICAgIC8qIEVuc3VyZSB0aGUgY29sb3Igc3dhdGNoIGlz
IGV2ZW4gYnkgZXZlbiBzbyB0aGF0IGl0IGxvb2tzIG9rYXkgY2hlY2tlcmVkLiAqLwotICAgIC5j
b2xvci1zd2F0Y2ggewotICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogLTFweDsKLSAgICAgICAgd2lk
dGg6IDEwcHg7Ci0gICAgICAgIGhlaWdodDogMTBweDsKLSAgICB9Ci19Ci0KLS5jb2xvci1zd2F0
Y2ggPiBzcGFuIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIHJp
Z2h0OiAwOwotICAgIGJvdHRvbTogMDsKLSAgICBsZWZ0OiAwOwotICAgIGJvcmRlcjogMXB4IHNv
bGlkIGhzbGEoMCwgMCUsIDI1JSwgMC40KTsKLX0KLQotLmNvbG9yLXN3YXRjaDpob3ZlciA+IHNw
YW4gewotICAgIGJvcmRlci1jb2xvcjogaHNsYSgwLCAwJSwgMjUlLCAwLjgpOwotfQotCi0uY29s
b3Itc3dhdGNoOmFjdGl2ZSA+IHNwYW4gewotICAgIGJvcmRlci1jb2xvcjogaHNsKDAsIDAlLCAy
NSUpOwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Db2xvclN3YXRjaC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbG9yU3dhdGNoLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
ZGJmMzZjLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbG9yU3dhdGNoLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjA2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDE2IERldmluIFJvdXNzbyA8ZGNyb3Vzc28rd2Via2l0QGdtYWls
LmNvbT4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVdlYkluc3BlY3Rvci5Db2xv
clN3YXRjaCA9IGNsYXNzIENvbG9yU3dhdGNoIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAot
ewotICAgIGNvbnN0cnVjdG9yKGNvbG9yLCByZWFkT25seSkKLSAgICB7Ci0gICAgICAgIHN1cGVy
KCk7Ci0KLSAgICAgICAgdGhpcy5fc3dhdGNoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInNwYW4iKTsKLSAgICAgICAgdGhpcy5fc3dhdGNoRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJj
b2xvci1zd2F0Y2giKTsKLSAgICAgICAgdGhpcy5fc3dhdGNoRWxlbWVudC50aXRsZSA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ2xpY2sgdG8gc2VsZWN0IGEgY29sb3IuIFNoaWZ0LWNsaWNrIHRv
IHN3aXRjaCBjb2xvciBmb3JtYXRzLiIpOwotICAgICAgICBpZiAoIXJlYWRPbmx5KSB7Ci0gICAg
ICAgICAgICB0aGlzLl9zd2F0Y2hFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhp
cy5fY29sb3JTd2F0Y2hDbGlja2VkLmJpbmQodGhpcykpOwotICAgICAgICAgICAgdGhpcy5fc3dh
dGNoRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNv
bnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9z
d2F0Y2hJbm5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAg
ICAgIHRoaXMuX3N3YXRjaEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc3dhdGNoSW5uZXJFbGVt
ZW50KTsKLQotICAgICAgICB0aGlzLl9jb2xvciA9IGNvbG9yIHx8IFdlYkluc3BlY3Rvci5Db2xv
ci5mcm9tU3RyaW5nKCJ0cmFuc3BhcmVudCIpOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVN3YXRj
aCgpOwotICAgIH0KLQotICAgIC8vIFB1YmxpYwotCi0gICAgZ2V0IGVsZW1lbnQoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX3N3YXRjaEVsZW1lbnQ7Ci0gICAgfQotCi0gICAgc2V0IGNv
bG9yKGNvbG9yKQotICAgIHsKLSAgICAgICAgdGhpcy5fY29sb3IgPSBjb2xvciB8fCBXZWJJbnNw
ZWN0b3IuQ29sb3IuZnJvbVN0cmluZygidHJhbnNwYXJlbnQiKTsKLSAgICAgICAgdGhpcy5fdXBk
YXRlU3dhdGNoKHRydWUpOwotICAgIH0KLQotICAgIGdldCBjb2xvcigpCi0gICAgewotICAgICAg
ICByZXR1cm4gdGhpcy5fY29sb3I7Ci0gICAgfQotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX2Nv
bG9yU3dhdGNoQ2xpY2tlZChldmVudCkKLSAgICB7Ci0gICAgICAgIGlmIChldmVudC5zaGlmdEtl
eSkgewotICAgICAgICAgICAgbGV0IG5leHRGb3JtYXQgPSB0aGlzLl9jb2xvci5uZXh0Rm9ybWF0
KCk7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChuZXh0Rm9ybWF0KTsKLSAgICAgICAgICAg
IGlmICghbmV4dEZvcm1hdCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAg
IHRoaXMuX2NvbG9yLmZvcm1hdCA9IG5leHRGb3JtYXQ7Ci0gICAgICAgICAgICB0aGlzLl91cGRh
dGVTd2F0Y2goKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGxl
dCBib3VuZHMgPSBXZWJJbnNwZWN0b3IuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3QodGhpcy5fc3dh
dGNoRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7Ci0KLSAgICAgICAgbGV0IGNvbG9y
UGlja2VyID0gbmV3IFdlYkluc3BlY3Rvci5Db2xvclBpY2tlcjsKLSAgICAgICAgY29sb3JQaWNr
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXIuRXZlbnQuQ29sb3JD
aGFuZ2VkLCB0aGlzLl9jb2xvclBpY2tlckNvbG9yRGlkQ2hhbmdlLCB0aGlzKTsKLQotICAgICAg
ICBsZXQgcG9wb3ZlciA9IG5ldyBXZWJJbnNwZWN0b3IuUG9wb3Zlcih0aGlzKTsKLSAgICAgICAg
cG9wb3Zlci5jb250ZW50ID0gY29sb3JQaWNrZXIuZWxlbWVudDsKLSAgICAgICAgcG9wb3Zlci5w
cmVzZW50KGJvdW5kcy5wYWQoMiksIFtXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUlOX1hdKTsKLQot
ICAgICAgICBjb2xvclBpY2tlci5jb2xvciA9IHRoaXMuX2NvbG9yOwotICAgIH0KLQotICAgIF9j
b2xvclBpY2tlckNvbG9yRGlkQ2hhbmdlKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5fY29s
b3IgPSBldmVudC5kYXRhLmNvbG9yOwotICAgICAgICB0aGlzLl91cGRhdGVTd2F0Y2goKTsKLSAg
ICB9Ci0KLSAgICBfaGFuZGxlQ29udGV4dE1lbnVFdmVudChldmVudCkKLSAgICB7Ci0gICAgICAg
IGxldCBjb250ZXh0TWVudSA9IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudS5jcmVhdGVGcm9tRXZl
bnQoZXZlbnQpOwotCi0gICAgICAgIGlmICh0aGlzLl9jb2xvci5pc0tleXdvcmQoKSAmJiB0aGlz
Ll9jb2xvci5mb3JtYXQgIT09IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuS2V5d29yZCkgewot
ICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkZvcm1hdDogS2V5d29yZCIpLCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fY29sb3Iu
Zm9ybWF0ID0gV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5LZXl3b3JkOwotICAgICAgICAgICAg
ICAgIHRoaXMuX3VwZGF0ZVN3YXRjaCgpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBsZXQgaGV4SW5mbyA9IHRoaXMuX2dldE5leHRWYWxpZEhFWEZvcm1hdCgpOwotICAg
ICAgICBpZiAoaGV4SW5mbykgewotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbSho
ZXhJbmZvLnRpdGxlLCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fY29sb3IuZm9ybWF0
ID0gaGV4SW5mby5mb3JtYXQ7Ci0gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlU3dhdGNoKCk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0aGlzLl9jb2xvci5z
aW1wbGUgJiYgdGhpcy5fY29sb3IuZm9ybWF0ICE9PSBXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0
LkhTTCkgewotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkZvcm1hdDogSFNMIiksICgpID0+IHsKLSAgICAgICAgICAgICAgICB0aGlzLl9j
b2xvci5mb3JtYXQgPSBXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LkhTTDsKLSAgICAgICAgICAg
ICAgICB0aGlzLl91cGRhdGVTd2F0Y2goKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9IGVs
c2UgaWYgKHRoaXMuX2NvbG9yLmZvcm1hdCAhPT0gV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5I
U0xBKSB7Ci0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiRm9ybWF0OiBIU0xBIiksICgpID0+IHsKLSAgICAgICAgICAgICAgICB0aGlzLl9j
b2xvci5mb3JtYXQgPSBXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LkhTTEE7Ci0gICAgICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlU3dhdGNoKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmICh0aGlzLl9jb2xvci5zaW1wbGUgJiYgdGhpcy5fY29sb3IuZm9ybWF0ICE9
PSBXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LlJHQikgewotICAgICAgICAgICAgY29udGV4dE1l
bnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvcm1hdDogUkdCIiksICgpID0+
IHsKLSAgICAgICAgICAgICAgICB0aGlzLl9jb2xvci5mb3JtYXQgPSBXZWJJbnNwZWN0b3IuQ29s
b3IuRm9ybWF0LlJHQjsKLSAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVTd2F0Y2goKTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2NvbG9yLmZvcm1hdCAhPT0g
V2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5SR0JBKSB7Ci0gICAgICAgICAgICBjb250ZXh0TWVu
dS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRm9ybWF0OiBSR0JBIiksICgpID0+
IHsKLSAgICAgICAgICAgICAgICB0aGlzLl9jb2xvci5mb3JtYXQgPSBXZWJJbnNwZWN0b3IuQ29s
b3IuRm9ybWF0LlJHQkE7Ci0gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlU3dhdGNoKCk7Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIF9nZXROZXh0VmFsaWRIRVhG
b3JtYXQoKQotICAgIHsKLSAgICAgICAgZnVuY3Rpb24gaGV4TWF0Y2hlc0N1cnJlbnRDb2xvciho
ZXhJbmZvKSB7Ci0gICAgICAgICAgICBsZXQgbmV4dElzU2ltcGxlID0gaGV4SW5mby5mb3JtYXQg
PT09IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuU2hvcnRIRVggfHwgaGV4SW5mby5mb3JtYXQg
PT09IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuSEVYOwotICAgICAgICAgICAgaWYgKG5leHRJ
c1NpbXBsZSAmJiAhdGhpcy5fY29sb3Iuc2ltcGxlKQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgICAgICAgICAgbGV0IG5leHRJc1Nob3J0ID0gaGV4SW5mby5mb3JtYXQgPT09
IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuU2hvcnRIRVggfHwgaGV4SW5mby5mb3JtYXQgPT09
IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuU2hvcnRIRVhBbHBoYTsKLSAgICAgICAgICAgIGlm
IChuZXh0SXNTaG9ydCAmJiAhdGhpcy5fY29sb3IuY2FuQmVTZXJpYWxpemVkQXNTaG9ydEhFWCgp
KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBoZXhGb3JtYXRzID0gWwotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGZvcm1hdDogV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5T
aG9ydEhFWCwKLSAgICAgICAgICAgICAgICB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJG
b3JtYXQ6IFNob3J0IEhleCIpCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGZvcm1hdDogV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5TaG9ydEhFWEFscGhh
LAotICAgICAgICAgICAgICAgIHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvcm1hdDog
U2hvcnQgSGV4IHdpdGggQWxwaGEiKQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBmb3JtYXQ6IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuSEVYLAotICAg
ICAgICAgICAgICAgIHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvcm1hdDogSGV4IikK
LSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZm9ybWF0OiBX
ZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LkhFWEFscGhhLAotICAgICAgICAgICAgICAgIHRpdGxl
OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvcm1hdDogSGV4IHdpdGggQWxwaGEiKQotICAgICAg
ICAgICAgfQotICAgICAgICBdOwotCi0gICAgICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQu
b3JnL2IvMTUyNDk3PiBBcnJvdyBmdW5jdGlvbnM6ICJ0aGlzIiBpc24ndCBsZXhpY2FsbHkgYm91
bmQKLSAgICAgICAgbGV0IGN1cnJlbnRDb2xvcklzSEVYID0gaGV4Rm9ybWF0cy5zb21lKGZ1bmN0
aW9uKGluZm8pIHsKLSAgICAgICAgICAgIHJldHVybiBpbmZvLmZvcm1hdCA9PT0gdGhpcy5fY29s
b3IuZm9ybWF0OwotICAgICAgICB9LmJpbmQodGhpcykpOwotCi0gICAgICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgaGV4Rm9ybWF0cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKGN1cnJl
bnRDb2xvcklzSEVYICYmIHRoaXMuX2NvbG9yLmZvcm1hdCAhPT0gaGV4Rm9ybWF0c1tpXS5mb3Jt
YXQpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGZvciAobGV0IGog
PSB+fmN1cnJlbnRDb2xvcklzSEVYOyBqIDwgaGV4Rm9ybWF0cy5sZW5ndGg7ICsraikgewotICAg
ICAgICAgICAgICAgIGxldCBuZXh0SW5kZXggPSAoaSArIGopICUgaGV4Rm9ybWF0cy5sZW5ndGg7
Ci0gICAgICAgICAgICAgICAgaWYgKGhleE1hdGNoZXNDdXJyZW50Q29sb3IuY2FsbCh0aGlzLCBo
ZXhGb3JtYXRzW25leHRJbmRleF0pKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGV4Rm9y
bWF0c1tuZXh0SW5kZXhdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG51bGw7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGhleEZvcm1hdHNbMF07Ci0gICAgfQotCi0gICAg
X3VwZGF0ZVN3YXRjaChkb250RmlyZUV2ZW50cykKLSAgICB7Ci0gICAgICAgIHRoaXMuX3N3YXRj
aElubmVyRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLl9jb2xvci50b1N0cmlu
ZygpIHx8IG51bGw7Ci0gICAgICAgIGlmICghZG9udEZpcmVFdmVudHMpCi0gICAgICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29sb3JTd2F0Y2guRXZl
bnQuQ29sb3JDaGFuZ2VkLCB7Y29sb3I6IHRoaXMuX2NvbG9yfSk7Ci0gICAgfQotfTsKLQotV2Vi
SW5zcGVjdG9yLkNvbG9yU3dhdGNoLkV2ZW50ID0gewotICAgIENvbG9yQ2hhbmdlZDogImNvbG9y
LXN3YXRjaC1jb2xvci1jaGFuZ2VkIgotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0lubGluZVN3YXRjaC5jc3MgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmxpbmVTd2F0Y2guY3NzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZTFkMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmxpbmVTd2F0Y2guY3NzCkBA
IC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IERldmluIFJvdXNzbyA8ZGNy
b3Vzc28rd2Via2l0QGdtYWlsLmNvbT4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
Ky5pbmxpbmUtc3dhdGNoIHsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgcG9zaXRp
b246IHJlbGF0aXZlOworICAgIHdpZHRoOiAxZW07CisgICAgaGVpZ2h0OiAxZW07CisgICAgbWFy
Z2luLXJpZ2h0OiAzcHg7CisgICAgdmVydGljYWwtYWxpZ246IC0ycHg7CisgICAgLyogTWFrZSBh
IGNoZWNrZXJlZCBiYWNrZ3JvdW5kIGZvciB0cmFuc3BhcmVudCBjb2xvcnMgdG8gc2hvdyBhZ2Fp
bnN0LiAqLworICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20s
IGhzbCgwLCAwJSwgODAlKSwgaHNsKDAsIDAlLCA4MCUpKSwKKyAgICAgICAgICAgICAgICAgICAg
ICBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCUsIDgwJSksIGhzbCgwLCAwJSwg
ODAlKSk7CisgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CisgICAgYmFja2dyb3VuZC1zaXpl
OiA1MCU7CisgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wIGxlZnQsIGJvdHRvbSByaWdodDsK
KyAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgIGN1cnNvcjogZGVmYXVsdDsK
KyAgICBvdmVyZmxvdzogaGlkZGVuOworfQorCisuaW5saW5lLXN3YXRjaC5iZXppZXIgeworICAg
IG1hcmdpbi1yaWdodDogMnB4OworICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvQ3ViaWNCZXpp
ZXIuc3ZnKTsKKyAgICBiYWNrZ3JvdW5kOiBub25lOworfQorCisuaW5saW5lLXN3YXRjaC5iZXpp
ZXI6aG92ZXIgeworICAgIGZpbHRlcjogYnJpZ2h0bmVzcygwLjkpOworfQorCisuaW5saW5lLXN3
YXRjaC5iZXppZXI6YWN0aXZlIHsKKyAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMC44KTsKK30KKwor
QG1lZGlhICgtd2Via2l0LW1heC1kZXZpY2UtcGl4ZWwtcmF0aW86IDEpIHsKKyAgICAvKiBFbnN1
cmUgdGhlIGNvbG9yIHN3YXRjaCBpcyBldmVuIGJ5IGV2ZW4gc28gdGhhdCBpdCBsb29rcyBva2F5
IGNoZWNrZXJlZC4gKi8KKyAgICAuaW5saW5lLXN3YXRjaCB7CisgICAgICAgIHZlcnRpY2FsLWFs
aWduOiAtMXB4OworICAgICAgICB3aWR0aDogMTBweDsKKyAgICAgICAgaGVpZ2h0OiAxMHB4Owor
ICAgIH0KK30KKworLmlubGluZS1zd2F0Y2ggPiBzcGFuIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgdG9wOiAwOworICAgIHJpZ2h0OiAwOworICAgIGJvdHRvbTogMDsKKyAgICBsZWZ0
OiAwOworICAgIGJvcmRlcjogMXB4IHNvbGlkIGhzbGEoMCwgMCUsIDI1JSwgMC40KTsKKyAgICBw
b2ludGVyLWV2ZW50czogbm9uZTsKK30KKworLmlubGluZS1zd2F0Y2g6aG92ZXIgPiBzcGFuIHsK
KyAgICBib3JkZXItY29sb3I6IGhzbGEoMCwgMCUsIDI1JSwgMC44KTsKK30KKworLmlubGluZS1z
d2F0Y2g6YWN0aXZlID4gc3BhbiB7CisgICAgYm9yZGVyLWNvbG9yOiBoc2woMCwgMCUsIDI1JSk7
Cit9CisKKy5pbmxpbmUtc3dhdGNoLmJlemllciA+IHNwYW4geworICAgIGRpc3BsYXk6IG5vbmU7
Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0lubGluZVN3YXRjaC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0lubGluZVN3YXRjaC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5lMjhiNTUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvSW5saW5lU3dhdGNoLmpzCkBAIC0wLDAgKzEsMjY4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNiBEZXZpbiBSb3Vzc28gPGRjcm91c3NvK3dlYmtpdEBnbWFpbC5jb20+
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuSW5saW5lU3dh
dGNoID0gY2xhc3MgSW5saW5lU3dhdGNoIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAorewor
ICAgIGNvbnN0cnVjdG9yKHR5cGUsIHZhbHVlLCByZWFkT25seSkKKyAgICB7CisgICAgICAgIHN1
cGVyKCk7CisKKyAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7CisKKyAgICAgICAgdGhpcy5fc3dh
dGNoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgdGhp
cy5fc3dhdGNoRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJpbmxpbmUtc3dhdGNoIiwgdGhpcy5fdHlw
ZS5zcGxpdCgiLSIpLmxhc3RWYWx1ZSk7CisKKyAgICAgICAgc3dpdGNoICh0aGlzLl90eXBlKSB7
CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLklubGluZVN3YXRjaC5UeXBlLkJlemllcjoKKyAg
ICAgICAgICAgIHRoaXMuX3N3YXRjaEVsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkNsaWNrIHRvIG9wZW4gYSBjdWJpYy1iZXppZXIgZWRpdG9yLiIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLklubGluZVN3YXRjaC5UeXBlLkdyYWRp
ZW50OgorICAgICAgICAgICAgdGhpcy5fc3dhdGNoRWxlbWVudC50aXRsZSA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiQ2xpY2sgdG8gc2VsZWN0IGEgZ3JhZGllbnQuIik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
X3R5cGUgPT09IFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2guVHlwZS5Db2xvcik7CisgICAgICAg
ICAgICB0aGlzLl9zd2F0Y2hFbGVtZW50LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJD
bGljayB0byBzZWxlY3QgYSBjb2xvci4gU2hpZnQtY2xpY2sgdG8gc3dpdGNoIGNvbG9yIGZvcm1h
dHMuIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghcmVh
ZE9ubHkpIHsKKyAgICAgICAgICAgIHRoaXMuX3N3YXRjaEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCB0aGlzLl9zd2F0Y2hFbGVtZW50Q2xpY2tlZC5iaW5kKHRoaXMpKTsKKyAgICAg
ICAgICAgIGlmICh0aGlzLl90eXBlID09PSBXZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoLlR5cGUu
Q29sb3IpCisgICAgICAgICAgICAgICAgdGhpcy5fc3dhdGNoRWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlz
KSk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9zd2F0Y2hJbm5lckVsZW1lbnQgPSB0aGlz
Ll9zd2F0Y2hFbGVtZW50LmNyZWF0ZUNoaWxkKCJzcGFuIik7CisKKyAgICAgICAgdGhpcy5fdmFs
dWUgPSB2YWx1ZSB8fCB0aGlzLl9mYWxsYmFja1ZhbHVlKCk7CisKKyAgICAgICAgdGhpcy5fdXBk
YXRlU3dhdGNoKCk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgZWxlbWVudCgp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc3dhdGNoRWxlbWVudDsKKyAgICB9CisKKyAg
ICBnZXQgdmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlOworICAgIH0K
KworICAgIHNldCB2YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3ZhbHVlID0gdmFs
dWU7CisgICAgICAgIHRoaXMuX3VwZGF0ZVN3YXRjaCh0cnVlKTsKKyAgICB9CisKKyAgICAvLyBQ
cml2YXRlCisKKyAgICBfZmFsbGJhY2tWYWx1ZSgpCisgICAgeworICAgICAgICBzd2l0Y2ggKHRo
aXMuX3R5cGUpIHsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoLlR5cGUu
QmV6aWVyOgorICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5DdWJpY0Jlemllci5mcm9t
U3RyaW5nKCJsaW5lYXIiKTsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNo
LlR5cGUuR3JhZGllbnQ6CisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkdyYWRpZW50
LmZyb21TdHJpbmcoImxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCwgdHJhbnNwYXJlbnQpIik7
CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLklubGluZVN3YXRjaC5UeXBlLkNvbG9yOgorICAg
ICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Db2xvci5mcm9tU3RyaW5nKCJ0cmFuc3BhcmVu
dCIpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBfdXBkYXRlU3dhdGNoKGRvbnRGaXJlRXZlbnRzKQorICAgIHsKKyAg
ICAgICAgaWYgKHRoaXMuX3R5cGUgPT09IFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2guVHlwZS5D
b2xvciB8fCB0aGlzLl90eXBlID09PSBXZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoLlR5cGUuR3Jh
ZGllbnQpCisgICAgICAgICAgICB0aGlzLl9zd2F0Y2hJbm5lckVsZW1lbnQuc3R5bGUuYmFja2dy
b3VuZCA9IHRoaXMuX3ZhbHVlID8gdGhpcy5fdmFsdWUudG9TdHJpbmcoKSA6IG51bGw7CisKKyAg
ICAgICAgaWYgKCFkb250RmlyZUV2ZW50cykKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2guRXZlbnQuVmFsdWVDaGFuZ2Vk
LCB7dmFsdWU6IHRoaXMuX3ZhbHVlfSk7CisgICAgfQorCisgICAgX3N3YXRjaEVsZW1lbnRDbGlj
a2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3R5cGUgPT09IFdlYkluc3BlY3Rv
ci5JbmxpbmVTd2F0Y2guVHlwZS5Db2xvciAmJiBldmVudC5zaGlmdEtleSAmJiB0aGlzLl92YWx1
ZSkgeworICAgICAgICAgICAgbGV0IG5leHRGb3JtYXQgPSB0aGlzLl92YWx1ZS5uZXh0Rm9ybWF0
KCk7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChuZXh0Rm9ybWF0KTsKKyAgICAgICAgICAg
IGlmICghbmV4dEZvcm1hdCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IHRoaXMuX3ZhbHVlLmZvcm1hdCA9IG5leHRGb3JtYXQ7CisgICAgICAgICAgICB0aGlzLl91cGRh
dGVTd2F0Y2goKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGxl
dCBib3VuZHMgPSBXZWJJbnNwZWN0b3IuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3QodGhpcy5fc3dh
dGNoRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7CisgICAgICAgIGxldCBwb3BvdmVy
ID0gbmV3IFdlYkluc3BlY3Rvci5Qb3BvdmVyKHRoaXMpOworCisgICAgICAgIGxldCB2YWx1ZUVk
aXRvciA9IG51bGw7CisgICAgICAgIGlmICh0aGlzLl90eXBlID09PSBXZWJJbnNwZWN0b3IuSW5s
aW5lU3dhdGNoLlR5cGUuQmV6aWVyKSB7CisgICAgICAgICAgICB2YWx1ZUVkaXRvciA9IG5ldyBX
ZWJJbnNwZWN0b3IuQmV6aWVyRWRpdG9yOworICAgICAgICAgICAgdmFsdWVFZGl0b3IuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQmV6aWVyRWRpdG9yLkV2ZW50LkJlemllckNoYW5nZWQs
IHRoaXMuX3ZhbHVlRWRpdG9yVmFsdWVEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB9IGVsc2Ug
aWYgKHRoaXMuX3R5cGUgPT09IFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2guVHlwZS5HcmFkaWVu
dCkgeworICAgICAgICAgICAgdmFsdWVFZGl0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLkdyYWRpZW50
RWRpdG9yOworICAgICAgICAgICAgdmFsdWVFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuR3JhZGllbnRFZGl0b3IuRXZlbnQuR3JhZGllbnRDaGFuZ2VkLCB0aGlzLl92YWx1ZUVk
aXRvclZhbHVlRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgICAgIHZhbHVlRWRpdG9yLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkdyYWRpZW50RWRpdG9yLkV2ZW50LkNvbG9yUGlja2Vy
VG9nZ2xlZCwgKGV2ZW50KSA9PiBwb3BvdmVyLnVwZGF0ZSgpKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHZhbHVlRWRpdG9yID0gbmV3IFdlYkluc3BlY3Rvci5Db2xvclBpY2tlcjsK
KyAgICAgICAgICAgIHZhbHVlRWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNv
bG9yUGlja2VyLkV2ZW50LkNvbG9yQ2hhbmdlZCwgdGhpcy5fdmFsdWVFZGl0b3JWYWx1ZURpZENo
YW5nZSwgdGhpcyk7CisgICAgICAgIH0KKworICAgICAgICBwb3BvdmVyLmNvbnRlbnQgPSB2YWx1
ZUVkaXRvci5lbGVtZW50OworICAgICAgICBwb3BvdmVyLnByZXNlbnQoYm91bmRzLnBhZCgyKSwg
W1dlYkluc3BlY3Rvci5SZWN0RWRnZS5NSU5fWF0pOworCisgICAgICAgIGxldCB2YWx1ZSA9IHRo
aXMuX3ZhbHVlIHx8IHRoaXMuX2ZhbGxiYWNrVmFsdWUoKTsKKyAgICAgICAgaWYgKHRoaXMuX3R5
cGUgPT09IFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2guVHlwZS5CZXppZXIpCisgICAgICAgICAg
ICB2YWx1ZUVkaXRvci5iZXppZXIgPSB2YWx1ZTsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5fdHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLklubGluZVN3YXRjaC5UeXBlLkdyYWRpZW50KQorICAgICAgICAg
ICAgdmFsdWVFZGl0b3IuZ3JhZGllbnQgPSB2YWx1ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgdmFsdWVFZGl0b3IuY29sb3IgPSB2YWx1ZTsKKyAgICB9CisKKyAgICBfdmFsdWVFZGl0b3JW
YWx1ZURpZENoYW5nZShldmVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl90eXBlID09PSBX
ZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoLlR5cGUuQmV6aWVyKQorICAgICAgICAgICAgdGhpcy5f
dmFsdWUgPSBldmVudC5kYXRhLmJlemllcjsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5fdHlwZSA9
PT0gV2ViSW5zcGVjdG9yLklubGluZVN3YXRjaC5UeXBlLkdyYWRpZW50KQorICAgICAgICAgICAg
dGhpcy5fdmFsdWUgPSBldmVudC5kYXRhLmdyYWRpZW50OworICAgICAgICBlbHNlCisgICAgICAg
ICAgICB0aGlzLl92YWx1ZSA9IGV2ZW50LmRhdGEuY29sb3I7CisKKyAgICAgICAgdGhpcy5fdXBk
YXRlU3dhdGNoKCk7CisgICAgfQorCisgICAgX2hhbmRsZUNvbnRleHRNZW51RXZlbnQoZXZlbnQp
CisgICAgeworICAgICAgICBsZXQgY29udGV4dE1lbnUgPSBXZWJJbnNwZWN0b3IuQ29udGV4dE1l
bnUuY3JlYXRlRnJvbUV2ZW50KGV2ZW50KTsKKworICAgICAgICBpZiAodGhpcy5fdmFsdWUuaXNL
ZXl3b3JkKCkgJiYgdGhpcy5fdmFsdWUuZm9ybWF0ICE9PSBXZWJJbnNwZWN0b3IuQ29sb3IuRm9y
bWF0LktleXdvcmQpIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJGb3JtYXQ6IEtleXdvcmQiKSwgKCkgPT4geworICAgICAgICAgICAg
ICAgIHRoaXMuX3ZhbHVlLmZvcm1hdCA9IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuS2V5d29y
ZDsKKyAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVTd2F0Y2goKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9CisKKyAgICAgICAgbGV0IGhleEluZm8gPSB0aGlzLl9nZXROZXh0VmFsaWRI
RVhGb3JtYXQoKTsKKyAgICAgICAgaWYgKGhleEluZm8pIHsKKyAgICAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZEl0ZW0oaGV4SW5mby50aXRsZSwgKCkgPT4geworICAgICAgICAgICAgICAgIHRo
aXMuX3ZhbHVlLmZvcm1hdCA9IGhleEluZm8uZm9ybWF0OworICAgICAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZVN3YXRjaCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAodGhpcy5fdmFsdWUuc2ltcGxlICYmIHRoaXMuX3ZhbHVlLmZvcm1hdCAhPT0gV2ViSW5zcGVj
dG9yLkNvbG9yLkZvcm1hdC5IU0wpIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0
ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGb3JtYXQ6IEhTTCIpLCAoKSA9PiB7CisgICAgICAg
ICAgICAgICAgdGhpcy5fdmFsdWUuZm9ybWF0ID0gV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5I
U0w7CisgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlU3dhdGNoKCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLl92YWx1ZS5mb3JtYXQgIT09IFdlYkluc3BlY3Rv
ci5Db2xvci5Gb3JtYXQuSFNMQSkgeworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRl
bShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvcm1hdDogSFNMQSIpLCAoKSA9PiB7CisgICAgICAg
ICAgICAgICAgdGhpcy5fdmFsdWUuZm9ybWF0ID0gV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5I
U0xBOworICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVN3YXRjaCgpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5fdmFsdWUuc2ltcGxlICYmIHRoaXMu
X3ZhbHVlLmZvcm1hdCAhPT0gV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5SR0IpIHsKKyAgICAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGb3Jt
YXQ6IFJHQiIpLCAoKSA9PiB7CisgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWUuZm9ybWF0ID0g
V2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5SR0I7CisgICAgICAgICAgICAgICAgdGhpcy5fdXBk
YXRlU3dhdGNoKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLl92
YWx1ZS5mb3JtYXQgIT09IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuUkdCQSkgeworICAgICAg
ICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvcm1h
dDogUkdCQSIpLCAoKSA9PiB7CisgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWUuZm9ybWF0ID0g
V2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5SR0JBOworICAgICAgICAgICAgICAgIHRoaXMuX3Vw
ZGF0ZVN3YXRjaCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBf
Z2V0TmV4dFZhbGlkSEVYRm9ybWF0KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl90eXBlICE9
PSBXZWJJbnNwZWN0b3IuSW5saW5lU3dhdGNoLlR5cGUuQ29sb3IpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgZnVuY3Rpb24gaGV4TWF0Y2hlc0N1cnJlbnRDb2xvcihoZXhJ
bmZvKSB7CisgICAgICAgICAgICBsZXQgbmV4dElzU2ltcGxlID0gaGV4SW5mby5mb3JtYXQgPT09
IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuU2hvcnRIRVggfHwgaGV4SW5mby5mb3JtYXQgPT09
IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuSEVYOworICAgICAgICAgICAgaWYgKG5leHRJc1Np
bXBsZSAmJiAhdGhpcy5fdmFsdWUuc2ltcGxlKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICAgICAgbGV0IG5leHRJc1Nob3J0ID0gaGV4SW5mby5mb3JtYXQgPT09IFdl
Ykluc3BlY3Rvci5Db2xvci5Gb3JtYXQuU2hvcnRIRVggfHwgaGV4SW5mby5mb3JtYXQgPT09IFdl
Ykluc3BlY3Rvci5Db2xvci5Gb3JtYXQuU2hvcnRIRVhBbHBoYTsKKyAgICAgICAgICAgIGlmIChu
ZXh0SXNTaG9ydCAmJiAhdGhpcy5fdmFsdWUuY2FuQmVTZXJpYWxpemVkQXNTaG9ydEhFWCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBoZXhGb3JtYXRzID0gWworICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGZvcm1hdDogV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5TaG9y
dEhFWCwKKyAgICAgICAgICAgICAgICB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGb3Jt
YXQ6IFNob3J0IEhleCIpCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGZvcm1hdDogV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5TaG9ydEhFWEFscGhhLAor
ICAgICAgICAgICAgICAgIHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvcm1hdDogU2hv
cnQgSGV4IHdpdGggQWxwaGEiKQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBmb3JtYXQ6IFdlYkluc3BlY3Rvci5Db2xvci5Gb3JtYXQuSEVYLAorICAgICAg
ICAgICAgICAgIHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvcm1hdDogSGV4IikKKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZm9ybWF0OiBXZWJJ
bnNwZWN0b3IuQ29sb3IuRm9ybWF0LkhFWEFscGhhLAorICAgICAgICAgICAgICAgIHRpdGxlOiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvcm1hdDogSGV4IHdpdGggQWxwaGEiKQorICAgICAgICAg
ICAgfQorICAgICAgICBdOworCisgICAgICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3Jn
L2IvMTUyNDk3PiBBcnJvdyBmdW5jdGlvbnM6ICJ0aGlzIiBpc24ndCBsZXhpY2FsbHkgYm91bmQK
KyAgICAgICAgbGV0IGN1cnJlbnRDb2xvcklzSEVYID0gaGV4Rm9ybWF0cy5zb21lKGZ1bmN0aW9u
KGluZm8pIHsKKyAgICAgICAgICAgIHJldHVybiBpbmZvLmZvcm1hdCA9PT0gdGhpcy5fdmFsdWUu
Zm9ybWF0OworICAgICAgICB9LmJpbmQodGhpcykpOworCisgICAgICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgaGV4Rm9ybWF0cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKGN1cnJlbnRD
b2xvcklzSEVYICYmIHRoaXMuX3ZhbHVlLmZvcm1hdCAhPT0gaGV4Rm9ybWF0c1tpXS5mb3JtYXQp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGZvciAobGV0IGogPSB+
fmN1cnJlbnRDb2xvcklzSEVYOyBqIDwgaGV4Rm9ybWF0cy5sZW5ndGg7ICsraikgeworICAgICAg
ICAgICAgICAgIGxldCBuZXh0SW5kZXggPSAoaSArIGopICUgaGV4Rm9ybWF0cy5sZW5ndGg7Cisg
ICAgICAgICAgICAgICAgaWYgKGhleE1hdGNoZXNDdXJyZW50Q29sb3IuY2FsbCh0aGlzLCBoZXhG
b3JtYXRzW25leHRJbmRleF0pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGV4Rm9ybWF0
c1tuZXh0SW5kZXhdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bGw7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGhleEZvcm1hdHNbMF07CisgICAgfQorfTsKKworV2Vi
SW5zcGVjdG9yLklubGluZVN3YXRjaC5UeXBlID0geworICAgIENvbG9yOiAiaW5saW5lLXN3YXRj
aC10eXBlLWNvbG9yIiwKKyAgICBHcmFkaWVudDogImlubGluZS1zd2F0Y2gtdHlwZS1ncmFkaWVu
dCIsCisgICAgQmV6aWVyOiAiaW5saW5lLXN3YXRjaC10eXBlLWJlemllciIKK307CisKK1dlYklu
c3BlY3Rvci5JbmxpbmVTd2F0Y2guRXZlbnQgPSB7CisgICAgVmFsdWVDaGFuZ2VkOiAiaW5saW5l
LXN3YXRjaC12YWx1ZS1jaGFuZ2VkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlci5jc3Mg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUJh
Y2tncm91bmRQaWNrZXIuY3NzCmluZGV4IDVmYmU0MzkuLmZjNDVkODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQmFja2dy
b3VuZFBpY2tlci5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLmNzcwpAQCAtMjcsNDYgKzI3LDMxIEBA
CiAgICAgZGlzcGxheTogZmxleDsKIH0KIAotLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWlu
ZXIuYmFja2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRh
aW5lciA+IC5jb2xvci1ncmFkaWVudC1zd2F0Y2ggewotICAgIGRpc3BsYXk6IG5vbmU7Ci0gICAg
cG9zaXRpb246IHJlbGF0aXZlOworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFj
a2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+
IC5pbmxpbmUtc3dhdGNoLmdyYWRpZW50IHsKICAgICB3aWR0aDogMzhweDsKICAgICBoZWlnaHQ6
IDE4cHg7Ci0gICAgbWFyZ2luLXRvcDogMXB4OwotICAgIC8qIE1ha2UgYSBjaGVja2VyZWQgYmFj
a2dyb3VuZCBmb3IgdHJhbnNwYXJlbnQgY29sb3JzIHRvIHNob3cgYWdhaW5zdC4gKi8KLSAgICBi
YWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCUsIDgw
JSksIGhzbCgwLCAwJSwgODAlKSksCi0gICAgICAgICAgICAgICAgICAgICAgbGluZWFyLWdyYWRp
ZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAlLCA4MCUpLCBoc2woMCwgMCUsIDgwJSkpOwotICAgIGJh
Y2tncm91bmQtY29sb3I6IHdoaXRlOwotICAgIGJhY2tncm91bmQtc2l6ZTogNTAlOwotICAgIGJh
Y2tncm91bmQtcG9zaXRpb246IHRvcCBsZWZ0LCBib3R0b20gcmlnaHQ7Ci0gICAgYmFja2dyb3Vu
ZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICBtYXJnaW46IDFweCAwIDA7CiAgICAgYm9yZGVyOiAx
cHggc29saWQgaHNsYSgwLCAwJSwgMjUlLCAwLjQpOwogICAgIGJvcmRlci1yYWRpdXM6IDRweDsK
LSAgICBvdmVyZmxvdzogaGlkZGVuOwotICAgIGN1cnNvcjogZGVmYXVsdDsKIH0KIAotLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFja2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5jb2xvci1ncmFkaWVudC1zd2F0Y2g6aG92
ZXIgewotICAgIGJvcmRlci1jb2xvcjogaHNsYSgwLCAwJSwgMjUlLCAwLjgpOworLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFja2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxl
LXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lcjpub3QoLmdyYWRpZW50LXZhbHVlKSA+IC5pbmxpbmUt
c3dhdGNoLmdyYWRpZW50IHsKKyAgICBkaXNwbGF5OiBub25lOwogfQogCi0udmlzdWFsLXN0eWxl
LXByb3BlcnR5LWNvbnRhaW5lci5iYWNrZ3JvdW5kLXBpY2tlciA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktdmFsdWUtY29udGFpbmVyID4gLmNvbG9yLWdyYWRpZW50LXN3YXRjaDphY3RpdmUgewot
ICAgIGJvcmRlci1jb2xvcjogaHNsKDAsIDAlLCAyNSUpOworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1jb250YWluZXIuYmFja2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZh
bHVlLWNvbnRhaW5lciA+IC5pbmxpbmUtc3dhdGNoLmdyYWRpZW50OmhvdmVyIHsKKyAgICBib3Jk
ZXItY29sb3I6IGhzbGEoMCwgMCUsIDI1JSwgMC44KTsKIH0KIAotLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS1jb250YWluZXIuYmFja2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5
LXZhbHVlLWNvbnRhaW5lciA+IC5jb2xvci1ncmFkaWVudC1zd2F0Y2ggPiBzcGFuIHsKLSAgICBw
b3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIHJpZ2h0OiAwOwotICAgIGJvdHRv
bTogMDsKLSAgICBsZWZ0OiAwOworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFj
a2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+
IC5pbmxpbmUtc3dhdGNoLmdyYWRpZW50OmFjdGl2ZSB7CisgICAgYm9yZGVyLWNvbG9yOiBoc2wo
MCwgMCUsIDI1JSk7CiB9CiAKLS52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmJhY2tn
cm91bmQtcGlja2VyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIuZ3Jh
ZGllbnQtdmFsdWUgPiAuY29sb3ItZ3JhZGllbnQtc3dhdGNoIHsKLSAgICBkaXNwbGF5OiBibG9j
azsKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmJhY2tncm91bmQtcGlja2VyID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAuaW5saW5lLXN3YXRjaC5n
cmFkaWVudCA+IHNwYW4geworICAgIGJvcmRlcjogbm9uZTsKIH0KIAotLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS1jb250YWluZXIuYmFja2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LXZhbHVlLWNvbnRhaW5lci5ncmFkaWVudC12YWx1ZSA+IC5jb2xvci1ncmFkaWVudC1zd2F0
Y2ggKyAudmFsdWUtaW5wdXQgeworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuYmFj
a2dyb3VuZC1waWNrZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lci5n
cmFkaWVudC12YWx1ZSA+IC5pbmxpbmUtc3dhdGNoLmdyYWRpZW50ICsgLnZhbHVlLWlucHV0IHsK
ICAgICBtYXJnaW4tbGVmdDogLTNweDsKICAgICBwYWRkaW5nLWxlZnQ6IDVweDsKICAgICBib3Jk
ZXItdG9wLWxlZnQtcmFkaXVzOiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVCYWNrZ3Jv
dW5kUGlja2VyLmpzCmluZGV4IDQyZGRmN2MuLmE1MTZmYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQmFja2dyb3VuZFBp
Y2tlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9W
aXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIuanMKQEAgLTI5LDE1ICsyOSw5IEBAIFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIgPSBjbGFzcyBWaXN1YWxTdHlsZUJhY2tn
cm91bmRQaWNrZXIgZXh0CiAgICAgewogICAgICAgICBzdXBlcihwcm9wZXJ0eU5hbWVzLCB0ZXh0
LCBwb3NzaWJsZVZhbHVlcywgbnVsbCwgImJhY2tncm91bmQtcGlja2VyIiwgbGF5b3V0UmV2ZXJz
ZWQpOwogCi0gICAgICAgIHRoaXMuX2dyYWRpZW50U3dhdGNoRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgdGhpcy5fZ3JhZGllbnRTd2F0Y2hFbGVtZW50
LmNsYXNzTGlzdC5hZGQoImNvbG9yLWdyYWRpZW50LXN3YXRjaCIpOwotICAgICAgICB0aGlzLl9n
cmFkaWVudFN3YXRjaEVsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsaWNr
IHRvIHNlbGVjdCBhIGdyYWRpZW50Iik7Ci0gICAgICAgIHRoaXMuX2dyYWRpZW50U3dhdGNoRWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2dyYWRpZW50U3dhdGNoQ2xpY2tl
ZC5iaW5kKHRoaXMpKTsKLQotICAgICAgICBsZXQgZ3JhZGllbnRTd2F0Y2hJbm5lckVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgIHRoaXMuX2dyYWRpZW50
U3dhdGNoRWxlbWVudC5hcHBlbmRDaGlsZChncmFkaWVudFN3YXRjaElubmVyRWxlbWVudCk7Ci0K
LSAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9ncmFkaWVudFN3
YXRjaEVsZW1lbnQpOworICAgICAgICB0aGlzLl9ncmFkaWVudFN3YXRjaCA9IG5ldyBXZWJJbnNw
ZWN0b3IuSW5saW5lU3dhdGNoKFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2guVHlwZS5HcmFkaWVu
dCk7CisgICAgICAgIHRoaXMuX2dyYWRpZW50U3dhdGNoLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLklubGluZVN3YXRjaC5FdmVudC5WYWx1ZUNoYW5nZWQsIHRoaXMuX2dyYWRpZW50U3dh
dGNoQ29sb3JDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9ncmFkaWVudFN3YXRjaC5lbGVtZW50KTsKIAogICAgICAgICB0aGlzLl92
YWx1ZUlucHV0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CiAgICAg
ICAgIHRoaXMuX3ZhbHVlSW5wdXRFbGVtZW50LmNsYXNzTGlzdC5hZGQoInZhbHVlLWlucHV0Iik7
CkBAIC04Niw5ICs4MCw2IEBAIFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUJhY2tncm91bmRQaWNr
ZXIgPSBjbGFzcyBWaXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIgZXh0CiAgICAgICAgIHRoaXMu
Y29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdmFsdWVUeXBlUGlja2VyRWxlbWVudCk7
CiAKICAgICAgICAgdGhpcy5fY3VycmVudFR5cGUgPSAidXJsIjsKLSAgICAgICAgdGhpcy5fZ3Jh
ZGllbnQgPSBudWxsOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZUdyYWRpZW50U3dhdGNoKCk7CiAg
ICAgfQogCiAgICAgLy8gUHVibGljCkBAIC0xMTQsMTEgKzEwNSw3IEBAIFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZUJhY2tncm91bmRQaWNrZXIgPSBjbGFzcyBWaXN1YWxTdHlsZUJhY2tncm91bmRQ
aWNrZXIgZXh0CiAgICAgICAgIGlmICghdGhpcy5fY3VycmVudFR5cGUuaW5jbHVkZXMoImdyYWRp
ZW50IikpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5fZ3JhZGllbnQgPSBX
ZWJJbnNwZWN0b3IuR3JhZGllbnQuZnJvbVN0cmluZyh2YWx1ZSk7Ci0gICAgICAgIGlmICghdGhp
cy5fZ3JhZGllbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRl
R3JhZGllbnRTd2F0Y2goKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlR3JhZGllbnQoKTsKICAgICB9
CiAKICAgICBnZXQgc3ludGhlc2l6ZWRWYWx1ZSgpCkBAIC0xNTksNDkgKzE0NiwyNCBAQCBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVCYWNrZ3JvdW5kUGlja2VyID0gY2xhc3MgVmlzdWFsU3R5bGVC
YWNrZ3JvdW5kUGlja2VyIGV4dAogICAgICAgICB9CiAgICAgfQogCi0gICAgX3VwZGF0ZUdyYWRp
ZW50U3dhdGNoKCkKKyAgICBfdXBkYXRlR3JhZGllbnQoKQogICAgIHsKLSAgICAgICAgdGhpcy5f
Z3JhZGllbnRTd2F0Y2hFbGVtZW50LmZpcnN0Q2hpbGQuc3R5bGUuYmFja2dyb3VuZCA9ICIiOwog
ICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuc3ludGhlc2l6ZWRWYWx1ZTsKICAgICAgICAgaWYg
KCF2YWx1ZSB8fCB2YWx1ZSA9PT0gdGhpcy5fY3VycmVudFR5cGUpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgdGhpcy5fZ3JhZGllbnQgPSBXZWJJbnNwZWN0b3IuR3JhZGllbnQuZnJv
bVN0cmluZyh2YWx1ZSk7Ci0gICAgICAgIHRoaXMuX2dyYWRpZW50U3dhdGNoRWxlbWVudC5maXJz
dENoaWxkLnN0eWxlLmJhY2tncm91bmQgPSB0aGlzLl9ncmFkaWVudCA/IHZhbHVlIDogbnVsbDsK
LSAgICB9Ci0KLSAgICBfZ3JhZGllbnRTd2F0Y2hDbGlja2VkKGV2ZW50KQotICAgIHsKLSAgICAg
ICAgbGV0IGJvdW5kcyA9IFdlYkluc3BlY3Rvci5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdCh0aGlz
Ll9ncmFkaWVudFN3YXRjaEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOwotICAgICAg
ICBsZXQgcG9wb3ZlciA9IG5ldyBXZWJJbnNwZWN0b3IuUG9wb3Zlcih0aGlzKTsKLQotICAgICAg
ICBmdW5jdGlvbiBoYW5kbGVDb2xvclBpY2tlclRvZ2dsZWQoZXZlbnQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHBvcG92ZXIudXBkYXRlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBsZXQgZ3Jh
ZGllbnRFZGl0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLkdyYWRpZW50RWRpdG9yOwotICAgICAgICBn
cmFkaWVudEVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5HcmFkaWVudEVkaXRv
ci5FdmVudC5HcmFkaWVudENoYW5nZWQsIHRoaXMuX2dyYWRpZW50RWRpdG9yR3JhZGllbnRDaGFu
Z2VkLCB0aGlzKTsKLSAgICAgICAgZ3JhZGllbnRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuR3JhZGllbnRFZGl0b3IuRXZlbnQuQ29sb3JQaWNrZXJUb2dnbGVkLCBoYW5kbGVD
b2xvclBpY2tlclRvZ2dsZWQsIHRoaXMpOwotCi0gICAgICAgIHBvcG92ZXIuY29udGVudCA9IGdy
YWRpZW50RWRpdG9yLmVsZW1lbnQ7Ci0gICAgICAgIHBvcG92ZXIucHJlc2VudChib3VuZHMucGFk
KDIpLCBbV2ViSW5zcGVjdG9yLlJlY3RFZGdlLk1JTl9YXSk7Ci0KLSAgICAgICAgaWYgKCF0aGlz
Ll9ncmFkaWVudCkKLSAgICAgICAgICAgIHRoaXMuX2dyYWRpZW50ID0gV2ViSW5zcGVjdG9yLkdy
YWRpZW50LmZyb21TdHJpbmcoYCR7dGhpcy5fY3VycmVudFR5cGV9KHRyYW5zcGFyZW50LCB0cmFu
c3BhcmVudClgKTsKLQotICAgICAgICBncmFkaWVudEVkaXRvci5ncmFkaWVudCA9IHRoaXMuX2dy
YWRpZW50OworICAgICAgICB0aGlzLl9ncmFkaWVudFN3YXRjaC52YWx1ZSA9IFdlYkluc3BlY3Rv
ci5HcmFkaWVudC5mcm9tU3RyaW5nKHZhbHVlKTsKICAgICB9CiAKLSAgICBfZ3JhZGllbnRFZGl0
b3JHcmFkaWVudENoYW5nZWQoZXZlbnQpCisgICAgX2dyYWRpZW50U3dhdGNoQ29sb3JDaGFuZ2Vk
KGV2ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy52YWx1ZSA9IGV2ZW50LmRhdGEuZ3JhZGllbnQu
dG9TdHJpbmcoKTsKKyAgICAgICAgdGhpcy52YWx1ZSA9IGV2ZW50LmRhdGEudmFsdWUudG9TdHJp
bmcoKTsKICAgICAgICAgdGhpcy5fdmFsdWVEaWRDaGFuZ2UoKTsKICAgICB9CiAKICAgICBfdmFs
dWVJbnB1dFZhbHVlQ2hhbmdlZChldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUdy
YWRpZW50U3dhdGNoKCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZUdyYWRpZW50KCk7CiAgICAgICAg
IHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CiAgICAgfQogCkBAIC0yMTcsNyArMTc5LDcgQEAgV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlQmFja2dyb3VuZFBpY2tlciA9IGNsYXNzIFZpc3VhbFN0eWxl
QmFja2dyb3VuZFBpY2tlciBleHQKICAgICB7CiAgICAgICAgIHRoaXMuX2N1cnJlbnRUeXBlID0g
dGhpcy5fdmFsdWVUeXBlUGlja2VyRWxlbWVudC52YWx1ZTsKICAgICAgICAgdGhpcy5fdXBkYXRl
VmFsdWVJbnB1dCgpOwotICAgICAgICB0aGlzLl91cGRhdGVHcmFkaWVudFN3YXRjaCgpOworICAg
ICAgICB0aGlzLl91cGRhdGVHcmFkaWVudCgpOwogICAgICAgICB0aGlzLl92YWx1ZURpZENoYW5n
ZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVmlzdWFsU3R5bGVDb2xvclBpY2tlci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbG9yUGlja2VyLmNzcwppbmRl
eCAwMTIwMDQ2Li4xNTdkZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbG9yUGlja2VyLmNzcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbG9yUGlja2Vy
LmNzcwpAQCAtMzEsNyArMzEsNyBAQAogICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKLS52aXN1YWwt
c3R5bGUtcHJvcGVydHktY29udGFpbmVyLmlucHV0LWNvbG9yLXBpY2tlciA+IC52aXN1YWwtc3R5
bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmNvbG9yLXN3YXRjaCB7CisudmlzdWFsLXN0
eWxlLXByb3BlcnR5LWNvbnRhaW5lci5pbnB1dC1jb2xvci1waWNrZXIgPiAudmlzdWFsLXN0eWxl
LXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5pbmxpbmUtc3dhdGNoLmNvbG9yIHsKICAgICB3
aWR0aDogMjJweDsKICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgbWFyZ2luLXRvcDogMXB4OwpAQCAt
NDAsMTUgKzQwLDE1IEBACiAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogfQogCi0udmlzdWFsLXN0
eWxlLXByb3BlcnR5LWNvbnRhaW5lci5pbnB1dC1jb2xvci1waWNrZXIgPiAudmlzdWFsLXN0eWxl
LXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5jb2xvci1zd2F0Y2g6aG92ZXIgeworLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuaW5wdXQtY29sb3ItcGlja2VyID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAuaW5saW5lLXN3YXRjaC5jb2xvcjpob3Zl
ciB7CiAgICAgYm9yZGVyLWNvbG9yOiBoc2xhKDAsIDAlLCAyNSUsIDAuOCk7CiB9CiAKLS52aXN1
YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmlucHV0LWNvbG9yLXBpY2tlciA+IC52aXN1YWwt
c3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmNvbG9yLXN3YXRjaDphY3RpdmUgewor
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuaW5wdXQtY29sb3ItcGlja2VyID4gLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAuaW5saW5lLXN3YXRjaC5jb2xv
cjphY3RpdmUgewogICAgIGJvcmRlci1jb2xvcjogaHNsKDAsIDAlLCAyNSUpOwogfQogCi0udmlz
dWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5pbnB1dC1jb2xvci1waWNrZXIgPiAudmlzdWFs
LXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5jb2xvci1zd2F0Y2ggPiBzcGFuIHsK
Ky52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmlucHV0LWNvbG9yLXBpY2tlciA+IC52
aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmlubGluZS1zd2F0Y2guY29s
b3IgPiBzcGFuIHsKICAgICBib3JkZXI6IG5vbmU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQ29sb3JQaWNrZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHls
ZUNvbG9yUGlja2VyLmpzCmluZGV4IDIyNDRlZTYuLmVlZjJmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQ29sb3JQaWNr
ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlz
dWFsU3R5bGVDb2xvclBpY2tlci5qcwpAQCAtMjksOCArMjksOCBAQCBXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVDb2xvclBpY2tlciA9IGNsYXNzIFZpc3VhbFN0eWxlQ29sb3JQaWNrZXIgZXh0ZW5k
cyBXZWJJbgogICAgIHsKICAgICAgICAgc3VwZXIocHJvcGVydHlOYW1lcywgdGV4dCwgbnVsbCwg
bnVsbCwgImlucHV0LWNvbG9yLXBpY2tlciIsIGxheW91dFJldmVyc2VkKTsKIAotICAgICAgICB0
aGlzLl9jb2xvclN3YXRjaCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29sb3JTd2F0Y2g7Ci0gICAgICAg
IHRoaXMuX2NvbG9yU3dhdGNoLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbG9yU3dh
dGNoLkV2ZW50LkNvbG9yQ2hhbmdlZCwgdGhpcy5fY29sb3JTd2F0Y2hDb2xvckNoYW5nZWQsIHRo
aXMpOworICAgICAgICB0aGlzLl9jb2xvclN3YXRjaCA9IG5ldyBXZWJJbnNwZWN0b3IuSW5saW5l
U3dhdGNoKFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2guVHlwZS5Db2xvcik7CisgICAgICAgIHRo
aXMuX2NvbG9yU3dhdGNoLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLklubGluZVN3YXRj
aC5FdmVudC5WYWx1ZUNoYW5nZWQsIHRoaXMuX2NvbG9yU3dhdGNoQ29sb3JDaGFuZ2VkLCB0aGlz
KTsKICAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb2xvclN3
YXRjaC5lbGVtZW50KTsKIAogICAgICAgICB0aGlzLl90ZXh0SW5wdXRFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKQEAgLTk5LDcgKzk5LDcgQEAgV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIgPSBjbGFzcyBWaXN1YWxTdHlsZUNvbG9yUGlja2VyIGV4
dGVuZHMgV2ViSW4KIAogICAgIF9jb2xvclN3YXRjaENvbG9yQ2hhbmdlZChldmVudCkKICAgICB7
Ci0gICAgICAgIGxldCBjb2xvclN0cmluZyA9IGV2ZW50ICYmIGV2ZW50LmRhdGEgJiYgZXZlbnQu
ZGF0YS5jb2xvciAmJiBldmVudC5kYXRhLmNvbG9yLnRvU3RyaW5nKCk7CisgICAgICAgIGxldCBj
b2xvclN0cmluZyA9IGV2ZW50ICYmIGV2ZW50LmRhdGEgJiYgZXZlbnQuZGF0YS52YWx1ZSAmJiBl
dmVudC5kYXRhLnZhbHVlLnRvU3RyaW5nKCk7CiAgICAgICAgIGlmICghY29sb3JTdHJpbmcpCiAg
ICAgICAgICAgICByZXR1cm47CiAKQEAgLTExMCw3ICsxMTAsNyBAQCBXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVDb2xvclBpY2tlciA9IGNsYXNzIFZpc3VhbFN0eWxlQ29sb3JQaWNrZXIgZXh0ZW5k
cyBXZWJJbgogICAgIF91cGRhdGVDb2xvclN3YXRjaCgpCiAgICAgewogICAgICAgICBsZXQgdmFs
dWUgPSB0aGlzLl90ZXh0SW5wdXRFbGVtZW50LnZhbHVlOwotICAgICAgICB0aGlzLl9jb2xvclN3
YXRjaC5jb2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5mcm9tU3RyaW5nKHZhbHVlIHx8ICJ0cmFu
c3BhcmVudCIpOworICAgICAgICB0aGlzLl9jb2xvclN3YXRjaC52YWx1ZSA9IFdlYkluc3BlY3Rv
ci5Db2xvci5mcm9tU3RyaW5nKHZhbHVlKTsKICAgICB9CiAKICAgICBfY29tcGxldGlvbkNsaWNr
ZWQoZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9WaXN1YWxTdHlsZVRpbWluZ0VkaXRvci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVRpbWluZ0VkaXRvci5jc3MKaW5kZXgg
YzgwZWIxNS4uYzcxYWRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUaW1pbmdFZGl0b3IuY3NzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGltaW5nRWRpdG9y
LmNzcwpAQCAtMzEsMjQgKzMxLDE3IEBACiAgICAgb3JkZXI6IDE7CiB9CiAKLS52aXN1YWwtc3R5
bGUtcHJvcGVydHktY29udGFpbmVyLnRpbWluZy1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LXZhbHVlLWNvbnRhaW5lciA+IC5iZXppZXItZWRpdG9yIHsKKy52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyLnRpbWluZy1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZh
bHVlLWNvbnRhaW5lciA+IC5pbmxpbmUtc3dhdGNoLmJlemllciB7CiAgICAgd2lkdGg6IDIzcHg7
CiAgICAgaGVpZ2h0OiAyMHB4OwotICAgIG1hcmdpbi1yaWdodDogMnB4OwotICAgIGNvbnRlbnQ6
IHVybCguLi9JbWFnZXMvQ3ViaWNCZXppZXIuc3ZnKTsKLSAgICBjdXJzb3I6IGRlZmF1bHQ7Cit9
CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLnRpbWluZy1lZGl0b3IgPiAudmlz
dWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lcjpub3QoLmJlemllci12YWx1ZSkgPiAu
aW5saW5lLXN3YXRjaC5iZXppZXIgeworICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKIEBtZWRpYSAo
LXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSB7Ci0gICAgLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS1jb250YWluZXIudGltaW5nLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
dmFsdWUtY29udGFpbmVyID4gLmJlemllci1lZGl0b3IgeworICAgIC52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyLnRpbWluZy1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZh
bHVlLWNvbnRhaW5lciA+IC5pbmxpbmUtc3dhdGNoLmJlemllciB7CiAgICAgICAgIG1hcmdpbi1s
ZWZ0OiAwLjVweDsKICAgICB9CiB9Ci0KLS52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVy
LnRpbWluZy1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+
IC5iZXppZXItZWRpdG9yOmhvdmVyIHsKLSAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMC45KTsKLX0K
LQotLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIudGltaW5nLWVkaXRvciA+IC52aXN1
YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLmJlemllci1lZGl0b3I6YWN0aXZl
IHsKLSAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMC44KTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlVGltaW5nRWRpdG9y
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5
bGVUaW1pbmdFZGl0b3IuanMKaW5kZXggNDMzMWY5Yi4uOWIyYWNmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVUaW1pbmdF
ZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VmlzdWFsU3R5bGVUaW1pbmdFZGl0b3IuanMKQEAgLTM2LDE2ICszNiw5IEBAIFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVRpbWluZ0VkaXRvciA9IGNsYXNzIFZpc3VhbFN0eWxlVGltaW5nRWRpdG9y
IGV4dGVuZHMgV2ViCiAgICAgICAgIHRoaXMuX2N1c3RvbVZhbHVlT3B0aW9uRWxlbWVudC50ZXh0
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDdXN0b20iKTsKICAgICAgICAgdGhpcy5fa2V5d29y
ZFNlbGVjdEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY3VzdG9tVmFsdWVPcHRpb25FbGVtZW50
KTsKIAotICAgICAgICB0aGlzLl9iZXppZXJNYXJrZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgic3BhbiIpOwotICAgICAgICB0aGlzLl9iZXppZXJNYXJrZXJFbGVtZW50LnRpdGxl
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDbGljayB0byBvcGVuIGEgY3ViaWMtYmV6aWVyIGVk
aXRvciIpOwotICAgICAgICB0aGlzLl9iZXppZXJNYXJrZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQo
ImJlemllci1lZGl0b3IiKTsKLSAgICAgICAgdGhpcy5fYmV6aWVyTWFya2VyRWxlbWVudC5oaWRk
ZW4gPSB0cnVlOwotICAgICAgICB0aGlzLl9iZXppZXJNYXJrZXJFbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoImNsaWNrIiwgdGhpcy5fYmV6aWVyTWFya2VyQ2xpY2tlZC5iaW5kKHRoaXMpKTsKLSAg
ICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9iZXppZXJNYXJrZXJF
bGVtZW50KTsKLQotICAgICAgICB0aGlzLl9iZXppZXJFZGl0b3IgPSBuZXcgV2ViSW5zcGVjdG9y
LkJlemllckVkaXRvcjsKLSAgICAgICAgdGhpcy5fYmV6aWVyRWRpdG9yLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkJlemllckVkaXRvci5FdmVudC5CZXppZXJDaGFuZ2VkLCB0aGlzLl92
YWx1ZURpZENoYW5nZS5iaW5kKHRoaXMpKTsKLSAgICAgICAgdGhpcy5fYmV6aWVyRWRpdG9yLmJl
emllciA9IFdlYkluc3BlY3Rvci5DdWJpY0Jlemllci5mcm9tU3RyaW5nKCJsaW5lYXIiKTsKKyAg
ICAgICAgdGhpcy5fYmV6aWVyU3dhdGNoID0gbmV3IFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2go
V2ViSW5zcGVjdG9yLklubGluZVN3YXRjaC5UeXBlLkJlemllcik7CisgICAgICAgIHRoaXMuX2Jl
emllclN3YXRjaC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5JbmxpbmVTd2F0Y2guRXZl
bnQuVmFsdWVDaGFuZ2VkLCB0aGlzLl9iZXppZXJTd2F0Y2hWYWx1ZUNoYW5nZWQsIHRoaXMpOwor
ICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2JlemllclN3YXRj
aC5lbGVtZW50KTsKICAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKQEAgLTU3LDcgKzUwLDcgQEAg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVGltaW5nRWRpdG9yID0gY2xhc3MgVmlzdWFsU3R5bGVU
aW1pbmdFZGl0b3IgZXh0ZW5kcyBXZWIKIAogICAgIGdldCBiZXppZXJWYWx1ZSgpCiAgICAgewot
ICAgICAgICBsZXQgYmV6aWVyID0gdGhpcy5fYmV6aWVyRWRpdG9yLmJlemllcjsKKyAgICAgICAg
bGV0IGJlemllciA9IHRoaXMuX2JlemllclN3YXRjaC52YWx1ZTsKICAgICAgICAgaWYgKCFiZXpp
ZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIApAQCAtNjcsNyArNjAsNyBAQCBXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVUaW1pbmdFZGl0b3IgPSBjbGFzcyBWaXN1YWxTdHlsZVRpbWluZ0Vk
aXRvciBleHRlbmRzIFdlYgogICAgIHNldCBiZXppZXJWYWx1ZSh0ZXh0KQogICAgIHsKICAgICAg
ICAgbGV0IGJlemllciA9IFdlYkluc3BlY3Rvci5DdWJpY0Jlemllci5mcm9tU3RyaW5nKHRleHQp
OwotICAgICAgICB0aGlzLl9iZXppZXJFZGl0b3IuYmV6aWVyID0gYmV6aWVyOworICAgICAgICB0
aGlzLl9iZXppZXJTd2F0Y2gudmFsdWUgPSBiZXppZXI7CiAgICAgfQogCiAgICAgLy8gUHJpdmF0
ZQpAQCAtODIsMTMgKzc1LDEzIEBAIFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVRpbWluZ0VkaXRv
ciA9IGNsYXNzIFZpc3VhbFN0eWxlVGltaW5nRWRpdG9yIGV4dGVuZHMgV2ViCiAgICAgICAgIHRo
aXMuYmV6aWVyVmFsdWUgPSB2YWx1ZTsKICAgICAgICAgaWYgKHRoaXMudmFsdWVJc1N1cHBvcnRl
ZEtleXdvcmQodmFsdWUpKSB7CiAgICAgICAgICAgICBzdXBlci5fc2V0VmFsdWUodmFsdWUpOwot
ICAgICAgICAgICAgdGhpcy5fYmV6aWVyTWFya2VyRWxlbWVudC5oaWRkZW4gPSB0cnVlOworICAg
ICAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJiZXppZXItdmFs
dWUiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGxldCBiZXpp
ZXIgPSB0aGlzLmJlemllclZhbHVlOwogICAgICAgICB0aGlzLl9jdXN0b21WYWx1ZU9wdGlvbkVs
ZW1lbnQuc2VsZWN0ZWQgPSAhIWJlemllcjsKLSAgICAgICAgdGhpcy5fYmV6aWVyTWFya2VyRWxl
bWVudC5oaWRkZW4gPSAhYmV6aWVyOworICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNz
TGlzdC50b2dnbGUoImJlemllci12YWx1ZSIsICEhYmV6aWVyKTsKICAgICAgICAgdGhpcy5zcGVj
aWFsUHJvcGVydHlQbGFjZWhvbGRlckVsZW1lbnQuaGlkZGVuID0gISFiZXppZXI7CiAgICAgICAg
IGlmICghYmV6aWVyKQogICAgICAgICAgICAgc3VwZXIuX3NldFZhbHVlKHZhbHVlKTsKQEAgLTk5
LDIxICs5MiwxOCBAQCBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVUaW1pbmdFZGl0b3IgPSBjbGFz
cyBWaXN1YWxTdHlsZVRpbWluZ0VkaXRvciBleHRlbmRzIFdlYgogICAgICAgICByZXR1cm4gdGhp
cy5fY3VzdG9tVmFsdWVPcHRpb25FbGVtZW50LnNlbGVjdGVkID8gdGhpcy5iZXppZXJWYWx1ZSA6
IHN1cGVyLl9nZW5lcmF0ZVN5bnRoZXNpemVkVmFsdWUoKTsKICAgICB9CiAKLSAgICBfYmV6aWVy
TWFya2VyQ2xpY2tlZCgpCi0gICAgewotICAgICAgICBsZXQgYm91bmRzID0gV2ViSW5zcGVjdG9y
LlJlY3QucmVjdEZyb21DbGllbnRSZWN0KHRoaXMuX2Jlemllck1hcmtlckVsZW1lbnQuZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCkpOwotICAgICAgICB0aGlzLl9jdWJpY0JlemllckVkaXRvclBvcG92
ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlBvcG92ZXIodGhpcyk7Ci0gICAgICAgIHRoaXMuX2N1Ymlj
QmV6aWVyRWRpdG9yUG9wb3Zlci5jb250ZW50ID0gdGhpcy5fYmV6aWVyRWRpdG9yLmVsZW1lbnQ7
Ci0gICAgICAgIHRoaXMuX2N1YmljQmV6aWVyRWRpdG9yUG9wb3Zlci5wcmVzZW50KGJvdW5kcy5w
YWQoMiksIFtXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUlOX1hdKTsKLSAgICB9Ci0KICAgICBfaGFu
ZGxlS2V5d29yZENoYW5nZWQoKQogICAgIHsKICAgICAgICAgc3VwZXIuX2hhbmRsZUtleXdvcmRD
aGFuZ2VkKCk7CiAgICAgICAgIGxldCBjdXN0b21PcHRpb25TZWxlY3RlZCA9IHRoaXMuX2N1c3Rv
bVZhbHVlT3B0aW9uRWxlbWVudC5zZWxlY3RlZDsKLSAgICAgICAgdGhpcy5fYmV6aWVyTWFya2Vy
RWxlbWVudC5oaWRkZW4gPSAhY3VzdG9tT3B0aW9uU2VsZWN0ZWQ7CisgICAgICAgIHRoaXMuY29u
dGVudEVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiYmV6aWVyLXZhbHVlIiwgISFjdXN0b21PcHRp
b25TZWxlY3RlZCk7CiAgICAgICAgIHRoaXMuc3BlY2lhbFByb3BlcnR5UGxhY2Vob2xkZXJFbGVt
ZW50LmhpZGRlbiA9ICEhY3VzdG9tT3B0aW9uU2VsZWN0ZWQ7CiAgICAgICAgIGlmIChjdXN0b21P
cHRpb25TZWxlY3RlZCkKICAgICAgICAgICAgIHRoaXMuYmV6aWVyVmFsdWUgPSAibGluZWFyIjsK
ICAgICB9CisKKyAgICBfYmV6aWVyU3dhdGNoVmFsdWVDaGFuZ2VkKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgdGhpcy5fdmFsdWVEaWRDaGFuZ2UoKTsKKyAgICB9CiB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>