<?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>179283</bug_id>
          
          <creation_ts>2017-11-04 00:24:58 -0700</creation_ts>
          <short_desc>Web Inspector: support undo/redo of insertAdjacentHTML</short_desc>
          <delta_ts>2017-11-15 09:42:34 -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>
          <dependson>179042</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1368331</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-11-04 00:24:58 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368431</commentid>
    <comment_count>1</comment_count>
      <attachid>326060</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-11-05 02:45:34 -0800</bug_when>
    <thetext>Created attachment 326060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369743</commentid>
    <comment_count>2</comment_count>
      <attachid>326060</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-11-08 18:47:52 -0800</bug_when>
    <thetext>Comment on attachment 326060
Patch

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

Nice test! This looks good to me, but I will want to see a version that shares the Element algorithm. We should never duplicate core algorithms (even if this seems relative simple).

&gt; Source/JavaScriptCore/inspector/protocol/DOM.json:225
&gt; +            &quot;name&quot;: &quot;insertAdjacentHTML&quot;,

I think this would go better down by &quot;setOuterHTML&quot;.

&gt; Source/WebCore/dom/Element.cpp:3669
&gt; +ExceptionOr&lt;NodeVector&gt; Element::nodesForInsertedAdjacentHTML(const String&amp; position, const String&amp; html)

I feel like the algorithm should really be one place. That could be done with something like:

    ExceptionOr&lt;void&gt; Element::insertAdjacentHTML(const String&amp; where, const String&amp; markup, std::optional&lt;NodeVector&gt;&amp; nodes)
    {
        ... /* this will only collect nodes if (nodes) */
    }

    ExceptionOr&lt;void&gt; Element::insertAdjacentHTML(const String&amp; where, const String&amp; markup)
    {
        return insertAdjacentHTML(where, markup, std::nullopt);
    }

&gt; Source/WebCore/inspector/DOMEditor.cpp:280
&gt; +        : Action(&quot;InsertAdjacentHTML&quot;)

Is the name actually used for anything? I wonder if we should just remove it. Or we can move to ASCIILiteral(&quot;...&quot;) to save a copy.

&gt; Source/WebCore/inspector/DOMEditor.h:75
&gt;      class ReplaceWholeTextAction;
&gt; +    class InsertAdjacentHTMLAction;

Nit: `sort` these

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.h:125
&gt; +    void insertAdjacentHTML(ErrorString&amp;, int nodeId, const String&amp; position, const String&amp; html) override;

Nit: The order of these should match the JSON, so preferably after setOuterHTML.

&gt; Source/WebInspectorUI/UserInterface/Models/DOMNode.js:508
&gt; +        // COMPATIBILITY (iOS 11.1): DOM.insertAdjacentHTML did not exist.

Nit: Just say &quot;COMPATIBILITY (iOS 11.0)&quot;, since `11.0` is the last versioned protocol that was different.

&gt; LayoutTests/inspector/dom/insertAdjacentHTML-expected.txt:1
&gt; +Test for DOM.setOuterHTML on a page without a documentElement.

Fix this title.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369841</commentid>
    <comment_count>3</comment_count>
      <attachid>326439</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-11-09 03:59:17 -0800</bug_when>
    <thetext>Created attachment 326439
Patch

It took way too long to figure out that I needed to put &amp; after NodeVector in order to not copy a Ref...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369979</commentid>
    <comment_count>4</comment_count>
      <attachid>326439</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-11-09 11:23:18 -0800</bug_when>
    <thetext>Comment on attachment 326439
Patch

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

r=me

&gt; Source/WebCore/dom/Element.h:315
&gt; +    ExceptionOr&lt;void&gt; insertAdjacentHTML(const String&amp; where, const String&amp; html, std::optional&lt;NodeVector&amp;&gt; nodes);

I think the name `nodes` could be `addedNodes` and it would be clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370047</commentid>
    <comment_count>5</comment_count>
      <attachid>326485</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-11-09 14:10:19 -0800</bug_when>
    <thetext>Created attachment 326485
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370050</commentid>
    <comment_count>6</comment_count>
      <attachid>326486</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-11-09 14:13:35 -0800</bug_when>
    <thetext>Created attachment 326486
Patch

Whoops.  Forgot tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370067</commentid>
    <comment_count>7</comment_count>
      <attachid>326486</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-09 15:12:05 -0800</bug_when>
    <thetext>Comment on attachment 326486
Patch

Clearing flags on attachment: 326486

Committed r224648: &lt;https://trac.webkit.org/changeset/224648&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370068</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-09 15:12:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371970</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 09:42:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/35562282&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326060</attachid>
            <date>2017-11-05 02:45:34 -0800</date>
            <delta_ts>2017-11-09 03:59:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179283-20171105024534.patch</filename>
            <type>text/plain</type>
            <size>20639</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDdiNzlkZTA5ZGVjNzlkZWI3N2UwZmY1NmZlNjdi
OTIwMGQyOGM4ZjYuLmEyYzA2NGUwZmRmODEwNDgxMTAxMjliN2ZjMzc3MmUwNzQ4ODBkMjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTExLTA1ICBEZXZp
biBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHN1cHBvcnQgdW5kby9yZWRvIG9mIGluc2VydEFkamFjZW50SFRNTAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MjgzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wv
RE9NLmpzb246CisgICAgICAgIEFkZCBgaW5zZXJ0QWRqYWNlbnRIVE1MYCBjb21tYW5kIHRoYXQg
ZXhlY3V0ZXMgYW4gdW5kb2FibGUgdmVyc2lvbiBvZiBgaW5zZXJ0QWRqYWNlbnRIVE1MYAorICAg
ICAgICBvbiB0aGUgZ2l2ZW4gbm9kZS4KKwogMjAxNy0xMS0wMyAgTWljaGFlbCBTYWJvZmYgIDxt
c2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBUaGUgQWJzdHJhY3QgSW50ZXJwcmV0ZXIgbmVl
ZHMgdG8gY2hhbmdlIHNpbWlsYXIgdG8gY2xvYmJlcml6ZSgpIGluIHIyMjQzNjYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBmOGMyYmE1MzE5YWJiYzY1ZTlkNjI2NzFkMzZkZGRmMGE5ZWU1NDg1Li44YTFmNWVkZjFk
Y2E5NDkyYTdhNWU1YTcwODU4YzEzZDQ0YWVlZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTctMTEtMDUgIERldmluIFJvdXNzbyAgPHdlYmtpdEBkZXZpbnJvdXNzby5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9ydCB1bmRvL3JlZG8gb2YgaW5zZXJ0QWRqYWNl
bnRIVE1MCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzkyODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZXN0OiBpbnNwZWN0b3IvZG9tL2luc2VydEFkamFjZW50SFRNTC5odG1sCisKKyAgICAgICAgQ3Jl
YXRlIGFub3RoZXIgdmVyc2lvbiBvZiBFbGVtZW50OjppbnNlcnRBZGphY2VudEhUTUwgdGhhdCBr
ZWVwcyB0cmFjayBvZiB0aGUgbm9kZXMgdGhhdCBhcmUKKyAgICAgICAgYWRkZWQuIFRoaXMgaXMg
bmVjZXNzYXJ5IGJlY2F1c2UgdGhlIGNoaWxkcmVuIG9mIGEgRG9jdW1lbnRGcmFnbWVudCBhcmUg
cmVtb3ZlZCB3aGVuIGl0IGlzCisgICAgICAgIGFkZGVkIHRvIGEgQ29udGFpbmVyTm9kZS4gSW4g
dGhpcyB3YXksIGl0IGlzIHBvc3NpYmxlIHRvIHJlbW92ZSB0aG9zZSBub2RlcyBkdXJpbmcgYW4g
dW5kby4KKworICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6bm9kZXNGb3JJbnNlcnRlZEFkamFjZW50
SFRNTCk6CisKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NRWRpdG9yLmg6CisgICAgICAgICogaW5z
cGVjdG9yL0RPTUVkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6Omluc2Vy
dEFkamFjZW50SFRNTCk6CisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aW5zZXJ0QWRqYWNlbnRI
VE1MKToKKwogMjAxNy0xMS0wNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBNb3ZlIGNvZGUgdGhhdCBtYXBzIGEgQ29tcG9zaXRlT3BlcmF0b3IgYW5k
IEJsZW5kTW9kZSB0byBhIENHQmxlbmRNb2RlIGludG8gYSBoZWxwZXIgZnVuY3Rpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nCmluZGV4IGIxNzU3NDcyMWUyMTBiMWE5MGQxYjExYzU0ZDdhNTBkMzI2
Zjk1Y2QuLjcyZGQ1NDM0YjIwNzY3MWY4M2Q2MGQzMjlhZGQ4NDU5ZGE5ODAyMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTExLTA1ICBEZXZpbiBSb3Vz
c28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHN1
cHBvcnQgdW5kby9yZWRvIG9mIGluc2VydEFkamFjZW50SFRNTAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MjgzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9ET01O
b2RlLmpzOgorICAgICAgICAoV0kuRE9NTm9kZS5wcm90b3R5cGUuaW5zZXJ0QWRqYWNlbnRIVE1M
KToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanM6Cisg
ICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuX3N0YXJ0RWRpdGluZ0FzSFRNTCk6
CisgICAgICAgIERyaXZlLWJ5OiBvbmx5IGF0dGVtcHQgdG8gdXBkYXRlIHRoZSBjdXJzb3IgaWYg
YW4gaW5pdGlhbFZhbHVlIGlzIHN1cHBsaWVkLgorCiAyMDE3LTExLTA0ICBEZXZpbiBSb3Vzc28g
IDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBj
b250ZXh0bWVudSBpdGVtIHRvIGFyYml0cmFyaWx5IGFkZCBIVE1ML0NoaWxkIHRvIERPTVRyZWUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9N
Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTS5qc29u
CmluZGV4IDAzOGYzMDkwYjk3YzQ0NmUzYzk1OTlkNjE4YTc5YzM1YTkwNmJiNzYuLjFjMjkwZWFl
YzkyMTIxMWQ4MDI1OGJkZWRiNDJiMzU0ZWU2MjBmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbgpAQCAtMjIyLDYgKzIyMiwxNCBA
QAogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CisgICAgICAgICAgICAibmFt
ZSI6ICJpbnNlcnRBZGphY2VudEhUTUwiLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJOb2RlSWQiIH0sCisg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwb3NpdGlvbiIsICJ0eXBlIjogInN0cmluZyIgfSwK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImh0bWwiLCAidHlwZSI6ICJzdHJpbmciIH0KKyAg
ICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAi
cmVtb3ZlTm9kZSIsCiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVtb3ZlcyBub2RlIHdp
dGggZ2l2ZW4gaWQuIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCmluZGV4IDkwNGNmYjA1YmVmNzAwZTYyZjgzZTJhZWZjMGIxNWJiNDY1NGViY2QuLjAx
NjI5YWFhNTBhNDFjNzNkNjc0NWFiZjFlM2EwYjUyMWMyZWJiNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKQEAgLTM2NjYsNiArMzY2NiwyNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBFbGVtZW50Ojpp
bnNlcnRBZGphY2VudFRleHQoY29uc3QgU3RyaW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJgogICAg
IHJldHVybiB7IH07CiB9CiAKK0V4Y2VwdGlvbk9yPE5vZGVWZWN0b3I+IEVsZW1lbnQ6Om5vZGVz
Rm9ySW5zZXJ0ZWRBZGphY2VudEhUTUwoY29uc3QgU3RyaW5nJiBwb3NpdGlvbiwgY29uc3QgU3Ry
aW5nJiBodG1sKQoreworICAgIGF1dG8gY29udGV4dEVsZW1lbnQgPSBjb250ZXh0RWxlbWVudEZv
ckluc2VydGlvbihwb3NpdGlvbiwgKnRoaXMpOworICAgIGlmIChjb250ZXh0RWxlbWVudC5oYXNF
eGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGNvbnRleHRFbGVtZW50LnJlbGVhc2VFeGNlcHRp
b24oKTsKKworICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJI
VE1MKGNvbnRleHRFbGVtZW50LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBodG1sLCBBbGxvd1Njcmlw
dGluZ0NvbnRlbnQpOworICAgIGlmIChmcmFnbWVudC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAg
cmV0dXJuIGZyYWdtZW50LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIC8vIE11c3QgYmUgY2Fs
bGVkIGJlZm9yZSBpbnNlcnRBZGphY2VudCwgYXMgb3RoZXJ3aXNlIHRoZSBjaGlsZHJlbiBvZiBm
cmFnbWVudCB3aWxsIGJlIG1vdmVkCisgICAgLy8gdG8gdGhlaXIgbmV3IHBhcmVudCBhbmQgd2ls
bCBiZSBoYXJkZXIgdG8ga2VlcCB0cmFjayBvZi4KKyAgICBhdXRvIGFkZGVkTm9kZXMgPSBjb2xs
ZWN0Q2hpbGROb2RlcyhmcmFnbWVudC5yZXR1cm5WYWx1ZSgpKTsKKworICAgIGF1dG8gcmVzdWx0
ID0gaW5zZXJ0QWRqYWNlbnQocG9zaXRpb24sIGZyYWdtZW50LnJlbGVhc2VSZXR1cm5WYWx1ZSgp
KTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gcmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIHJldHVybiBXVEZNb3ZlKGFkZGVkTm9kZXMpOwor
fQorCiBFbGVtZW50KiBFbGVtZW50OjpmaW5kQW5jaG9yRWxlbWVudEZvckxpbmsoU3RyaW5nJiBv
dXRBbmNob3JOYW1lKQogewogICAgIGlmICghaXNMaW5rKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRl
eCA1M2E1MWNjNjQzYzc3YmUwMWNhMmE2YTgxMjYzNTUyYzI2ODc2MzdiLi45ZWE3YjgwYjdjMzZj
NWI1Zjk3NTUyZmU2Njk3ZTQzM2EzYjcxMTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTMxNiw2
ICszMTYsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4g
aW5zZXJ0QWRqYWNlbnRIVE1MKGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYgaHRt
bCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gaW5zZXJ0QWRqYWNlbnRU
ZXh0KGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYgdGV4dCk7CiAKKyAgICBXRUJD
T1JFX0VYUE9SVCBFeGNlcHRpb25PcjxOb2RlVmVjdG9yPiBub2Rlc0Zvckluc2VydGVkQWRqYWNl
bnRIVE1MKGNvbnN0IFN0cmluZyYgcG9zaXRpb24sIGNvbnN0IFN0cmluZyYgaHRtbCk7CisKICAg
ICBjb25zdCBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZShQc2V1ZG9JZCA9IE5PUFNFVURPKSBv
dmVycmlkZTsKIAogICAgIGJvb2wgbmVlZHNTdHlsZUludmFsaWRhdGlvbigpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAppbmRleCBkZmJlNGMzZjU0YmJjMWZlM2E0
MzNjMTM0OGVkMzI2YzQ0ZWM3MDhlLi5jNGVjZDNlYzFmMjg4YzY4ZWQ4ZjFhYmMyNWRmNjM4NzQ1
OTM1YWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcApAQCAtMjczLDYg
KzI3Myw0NyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX29sZFRleHQ7CiB9OwogCitjbGFzcyBE
T01FZGl0b3I6Okluc2VydEFkamFjZW50SFRNTEFjdGlvbiBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0
b3JIaXN0b3J5OjpBY3Rpb24geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc2VydEFkamFj
ZW50SFRNTEFjdGlvbik7CitwdWJsaWM6CisgICAgSW5zZXJ0QWRqYWNlbnRIVE1MQWN0aW9uKEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcG9zaXRpb24sIGNvbnN0IFN0cmluZyYgaHRt
bCkKKyAgICAgICAgOiBBY3Rpb24oIkluc2VydEFkamFjZW50SFRNTCIpCisgICAgICAgICwgbV9l
bGVtZW50KGVsZW1lbnQpCisgICAgICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKKyAgICAgICAg
LCBtX2h0bWwoaHRtbCkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHBlcmZvcm0oKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlZG8oKTsKKyAg
ICB9CisKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiB1bmRvKCkgZmluYWwKKyAgICB7CisgICAgICAg
IGZvciAoYXV0byYgYWRkZWROb2RlIDogbV9hZGRlZE5vZGVzKQorICAgICAgICAgICAgYWRkZWRO
b2RlLT5yZW1vdmUoKTsKKyAgICAgICAgbV9hZGRlZE5vZGVzLmNsZWFyKCk7CisgICAgICAgIHJl
dHVybiB7IH07CisgICAgfQorCisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVkbygpIGZpbmFsCisg
ICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fZWxlbWVudC0+bm9kZXNGb3JJbnNlcnRlZEFk
amFjZW50SFRNTChtX3Bvc2l0aW9uLCBtX2h0bWwpOworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7
CisKKyAgICAgICAgbV9hZGRlZE5vZGVzID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwor
ICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIFJlZjxFbGVtZW50PiBtX2VsZW1lbnQ7
CisgICAgTm9kZVZlY3RvciBtX2FkZGVkTm9kZXM7CisgICAgU3RyaW5nIG1fcG9zaXRpb247Cisg
ICAgU3RyaW5nIG1faHRtbDsKK307CisKIGNsYXNzIERPTUVkaXRvcjo6UmVwbGFjZUNoaWxkTm9k
ZUFjdGlvbiBmaW5hbDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUmVwbGFjZUNoaWxkTm9kZUFjdGlvbik7CiBwdWJsaWM6CkBAIC0z
NzksNiArNDIwLDExIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6cmVwbGFjZVdob2xl
VGV4dChUZXh0JiB0ZXh0Tm9kZSwgY29uc3QgU3RyaW5nJiB0ZXh0CiAgICAgcmV0dXJuIG1faGlz
dG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFjZVdob2xlVGV4dEFjdGlvbj4odGV4
dE5vZGUsIHRleHQpKTsKIH0KIAorRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjppbnNlcnRB
ZGphY2VudEhUTUwoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiB3aGVyZSwgY29uc3Qg
U3RyaW5nJiBodG1sKQoreworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2Vf
dW5pcXVlPEluc2VydEFkamFjZW50SFRNTEFjdGlvbj4oZWxlbWVudCwgd2hlcmUsIGh0bWwpKTsK
K30KKwogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpyZXBsYWNlQ2hpbGQoTm9kZSYgcGFy
ZW50Tm9kZSwgUmVmPE5vZGU+JiYgbmV3Tm9kZSwgTm9kZSYgb2xkTm9kZSkKIHsKICAgICByZXR1
cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZXBsYWNlQ2hpbGROb2RlQWN0
aW9uPihwYXJlbnROb2RlLCBXVEZNb3ZlKG5ld05vZGUpLCBvbGROb2RlKSk7CkBAIC00MjcsNCAr
NDczLDkgQEAgYm9vbCBET01FZGl0b3I6OnJlcGxhY2VXaG9sZVRleHQoVGV4dCYgdGV4dE5vZGUs
IGNvbnN0IFN0cmluZyYgdGV4dCwgRXJyb3JTdHJpbmcKICAgICByZXR1cm4gcG9wdWxhdGVFcnJv
clN0cmluZyhyZXBsYWNlV2hvbGVUZXh0KHRleHROb2RlLCB0ZXh0KSwgZXJyb3JTdHJpbmcpOwog
fQogCitib29sIERPTUVkaXRvcjo6aW5zZXJ0QWRqYWNlbnRIVE1MKEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYgaHRtbCwgRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nKQoreworICAgIHJldHVybiBwb3B1bGF0ZUVycm9yU3RyaW5nKGluc2VydEFkamFj
ZW50SFRNTChlbGVtZW50LCB3aGVyZSwgaHRtbCksIGVycm9yU3RyaW5nKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RP
TUVkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5oCmluZGV4IGU5
NWE5MzY4NzljMmM0YTUxMjMxZjgzMGQ4Zjk0ZTkyZWU3YmYzYjYuLmY4NGQ3ZjhkM2M4MTlmYTgz
MTVmZDIyZmQxODQ4YzllNWFkZDMzMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9ET01FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9y
LmgKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92
ZUF0dHJpYnV0ZShFbGVtZW50JiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBFeGNlcHRpb25P
cjx2b2lkPiBzZXRPdXRlckhUTUwoTm9kZSYsIGNvbnN0IFN0cmluZyYgaHRtbCwgTm9kZSomIG5l
d05vZGUpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VXaG9sZVRleHQoVGV4dCYsIGNv
bnN0IFN0cmluZyYgdGV4dCk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gaW5zZXJ0QWRqYWNlbnRI
VE1MKEVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25zdCBTdHJpbmcmIGh0bWwpOwog
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VDaGlsZChOb2RlJiBwYXJlbnROb2RlLCBSZWY8
Tm9kZT4mJiBuZXdOb2RlLCBOb2RlJiBvbGROb2RlKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBz
ZXROb2RlVmFsdWUoTm9kZSYgcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKQEAg
LTYyLDYgKzYzLDcgQEAgcHVibGljOgogICAgIGJvb2wgcmVtb3ZlQXR0cmlidXRlKEVsZW1lbnQm
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEVycm9yU3RyaW5nJik7CiAgICAgYm9vbCBzZXRPdXRlckhU
TUwoTm9kZSYsIGNvbnN0IFN0cmluZyYgaHRtbCwgTm9kZSomIG5ld05vZGUsIEVycm9yU3RyaW5n
Jik7CiAgICAgYm9vbCByZXBsYWNlV2hvbGVUZXh0KFRleHQmLCBjb25zdCBTdHJpbmcmIHRleHQs
IEVycm9yU3RyaW5nJik7CisgICAgYm9vbCBpbnNlcnRBZGphY2VudEhUTUwoRWxlbWVudCYsIGNv
bnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYgaHRtbCwgRXJyb3JTdHJpbmcmKTsKIAog
cHJpdmF0ZToKICAgICBjbGFzcyBET01BY3Rpb247CkBAIC03MCw2ICs3Miw3IEBAIHByaXZhdGU6
CiAgICAgY2xhc3MgUmVtb3ZlQ2hpbGRBY3Rpb247CiAgICAgY2xhc3MgUmVwbGFjZUNoaWxkTm9k
ZUFjdGlvbjsKICAgICBjbGFzcyBSZXBsYWNlV2hvbGVUZXh0QWN0aW9uOworICAgIGNsYXNzIElu
c2VydEFkamFjZW50SFRNTEFjdGlvbjsKICAgICBjbGFzcyBTZXRBdHRyaWJ1dGVBY3Rpb247CiAg
ICAgY2xhc3MgU2V0Tm9kZVZhbHVlQWN0aW9uOwogICAgIGNsYXNzIFNldE91dGVySFRNTEFjdGlv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKaW5kZXggZjlkN2RiZmVkODY5ZDk3MjJlZGE4ODk2MTFiMGQzYzAyODAwOTE3
MS4uNmE3M2E1OTBhYjgxMWI3M2I1YWZmMDgwNmYyYzIxMDJhODY3NTBlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAK
QEAgLTgyMiw2ICs4MjIsMjAgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0Tm9kZVZhbHVl
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QKICAgICBtX2RvbUVk
aXRvci0+cmVwbGFjZVdob2xlVGV4dChkb3duY2FzdDxUZXh0Pigqbm9kZSksIHZhbHVlLCBlcnJv
clN0cmluZyk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Omluc2VydEFkamFjZW50SFRN
TChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgcG9z
aXRpb24sIGNvbnN0IFN0cmluZyYgaHRtbCkKK3sKKyAgICBOb2RlKiBub2RlID0gYXNzZXJ0RWRp
dGFibGVOb2RlKGVycm9yU3RyaW5nLCBub2RlSWQpOworICAgIGlmICghbm9kZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKCFpczxFbGVtZW50Pihub2RlKSkgeworICAgICAgICBlcnJvclN0
cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ2FuIG9ubHkgY2FsbCBpbnNlcnRBZGphY2VudEhUTUwgb24g
RWxlbWVudHMuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2RvbUVkaXRvci0+
aW5zZXJ0QWRqYWNlbnRIVE1MKGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKSwgcG9zaXRpb24sIGh0
bWwsIGVycm9yU3RyaW5nKTsKK30KKwogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRM
aXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29u
c3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJh
eSkKIHsKICAgICBsaXN0ZW5lcnNBcnJheSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj46OmNyZWF0ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCmlu
ZGV4IGQ5NDJlZmY1NjA0Njc4MDE2NDI5NzNhMDE0NGQ0MmQwMTU0NWQ3MmUuLmM0MjkzY2MzNjI4
ZDNjYzA3ZGRmZWRlZTQzMTU4NjczZjgzMWQ2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTEyMiw2ICsxMjIsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBnZXRPdXRlckhUTUwoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlk
LCBXVEY6OlN0cmluZyogb3V0ZXJIVE1MKSBvdmVycmlkZTsKICAgICB2b2lkIHNldE91dGVySFRN
TChFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgb3V0ZXJIVE1MKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNldE5vZGVWYWx1ZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNv
bnN0IFN0cmluZyYgdmFsdWUpIG92ZXJyaWRlOworICAgIHZvaWQgaW5zZXJ0QWRqYWNlbnRIVE1M
KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBwb3NpdGlvbiwgY29uc3Qg
U3RyaW5nJiBodG1sKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9yTm9k
ZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFdURjo6U3RyaW5nKiBjb25zdCBvYmpl
Y3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZXRFdmVudExpc3RlbmVyRGlzYWJsZWQoRXJyb3JTdHJpbmcmLCBpbnQgZXZlbnRM
aXN0ZW5lcklkLCBib29sIGRpc2FibGVkKSBvdmVycmlkZTsKICAgICB2b2lkIGdldEFjY2Vzc2li
aWxpdHlQcm9wZXJ0aWVzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiYgYXhQcm9w
ZXJ0aWVzKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9ET01Ob2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanMKaW5kZXggOTRkZDIwODE5YTIxM2U1OGI3ZDVlMGZk
YzJkYzBmYmJlYTA4ZDk1MC4uMjJkODYyYWJiMDM1NDk5MzlkNTIyMGFmN2M4NTkxMjEwODA4OGQ0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0RPTU5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0RPTU5vZGUuanMKQEAgLTUwNSwxNiArNTA1LDIwIEBAIFdJLkRPTU5vZGUgPSBjbGFzcyBE
T01Ob2RlIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmICh0aGlzLm5vZGVUeXBlKCkgIT09
IE5vZGUuRUxFTUVOVF9OT0RFKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIC8vIEZJ
WE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTc5MjgzPiBXZWIgSW5zcGVjdG9yOiBzdXBwb3J0
IHVuZG8vcmVkbyBvZiBpbnNlcnRBZGphY2VudEhUTUwKKyAgICAgICAgLy8gQ09NUEFUSUJJTElU
WSAoaU9TIDExLjEpOiBET00uaW5zZXJ0QWRqYWNlbnRIVE1MIGRpZCBub3QgZXhpc3QuCisgICAg
ICAgIGlmICghRE9NQWdlbnQuaW5zZXJ0QWRqYWNlbnRIVE1MKSB7CisgICAgICAgICAgICBXSS5S
ZW1vdGVPYmplY3QucmVzb2x2ZU5vZGUodGhpcykudGhlbigob2JqZWN0KSA9PiB7CisgICAgICAg
ICAgICAgICAgZnVuY3Rpb24gaW5zcGVjdGVkUGFnZV9ub2RlX2luc2VydEFkamFjZW50SFRNTChw
b3NpdGlvbiwgaHRtbCkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydEFkamFjZW50
SFRNTChwb3NpdGlvbiwgaHRtbCk7CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAgIFdJLlJl
bW90ZU9iamVjdC5yZXNvbHZlTm9kZSh0aGlzKS50aGVuKChvYmplY3QpID0+IHsKLSAgICAgICAg
ICAgIGZ1bmN0aW9uIGluc3BlY3RlZFBhZ2Vfbm9kZV9pbnNlcnRBZGphY2VudEhUTUwocG9zaXRp
b24sIGh0bWwpIHsKLSAgICAgICAgICAgICAgICB0aGlzLmluc2VydEFkamFjZW50SFRNTChwb3Np
dGlvbiwgaHRtbCk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgb2JqZWN0LmNhbGxG
dW5jdGlvbihpbnNwZWN0ZWRQYWdlX25vZGVfaW5zZXJ0QWRqYWNlbnRIVE1MLCBbcG9zaXRpb24s
IGh0bWxdKTsKKyAgICAgICAgICAgICAgICBvYmplY3QucmVsZWFzZSgpOworICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgICAgICAgICAgb2JqZWN0
LmNhbGxGdW5jdGlvbihpbnNwZWN0ZWRQYWdlX25vZGVfaW5zZXJ0QWRqYWNlbnRIVE1MLCBbcG9z
aXRpb24sIGh0bWxdKTsKLSAgICAgICAgICAgIG9iamVjdC5yZWxlYXNlKCk7Ci0gICAgICAgIH0p
OworICAgICAgICBET01BZ2VudC5pbnNlcnRBZGphY2VudEhUTUwodGhpcy5pZCwgcG9zaXRpb24s
IGh0bWwsIHRoaXMuX21ha2VVbmRvYWJsZUNhbGxiYWNrKCkpOwogICAgIH0KIAogICAgIHJlbW92
ZU5vZGUoY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCmluZGV4IGMxNmVkN2RhZjExODBk
NzJhNjk3NzQ0NTk5YTc5MmU1NGIzMzU0N2IuLjY0MGMzOTRjMmU2Y2E0OTQyNDQ3MGJiZTE2ZGUy
ODRhZjJkNDFiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCkBAIC0xMDYzLDcgKzEwNjMsNyBA
QCBXSS5ET01UcmVlRWxlbWVudCA9IGNsYXNzIERPTVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJl
ZUVsZW1lbnQKICAgICAgICAgY29uZmlnLnNldE11bHRpbGluZSh0cnVlKTsKICAgICAgICAgdGhp
cy5fZWRpdGluZyA9IFdJLnN0YXJ0RWRpdGluZyh0aGlzLl9odG1sRWRpdEVsZW1lbnQsIGNvbmZp
Zyk7CiAKLSAgICAgICAgaWYgKCFpc05hTihvcHRpb25zLnN0YXJ0UG9zaXRpb24pKSB7CisgICAg
ICAgIGlmIChvcHRpb25zLmluaXRpYWxWYWx1ZSAmJiAhaXNOYU4ob3B0aW9ucy5zdGFydFBvc2l0
aW9uKSkgewogICAgICAgICAgICAgbGV0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
ICAgICAgICAgICAgIHJhbmdlLnNldFN0YXJ0KHRoaXMuX2h0bWxFZGl0RWxlbWVudC5maXJzdENo
aWxkLCBvcHRpb25zLnN0YXJ0UG9zaXRpb24pOwogICAgICAgICAgICAgcmFuZ2UuY29sbGFwc2Uo
dHJ1ZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggMWQ4MzAzNDk5YThhM2M2YTljYTQ2OWIzMDMzYTEzNmI4N2M5MDYxNS4u
MDJjYzUyMGM0NGVhYTNiZmZhZDRjYmQ5ODM2M2Y0MWM2M2MxMDlmOCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDE3LTExLTA1ICBEZXZpbiBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHN1cHBvcnQgdW5kby9yZWRvIG9mIGluc2VydEFk
amFjZW50SFRNTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc5MjgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZG9tL2luc2VydEFkamFjZW50SFRNTC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9kb20vaW5zZXJ0QWRqYWNlbnRIVE1MLmh0bWw6IEFkZGVk
LgorCiAyMDE3LTExLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgSW5kZXggcHJvcGVydGllcyBvbiBjcm9zcyBvcmlnaW4gV2luZG93IG9iamVjdHMgc2hvdWxk
IGJlIGVudW1lcmFibGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vaW5z
ZXJ0QWRqYWNlbnRIVE1MLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20v
aW5zZXJ0QWRqYWNlbnRIVE1MLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDUxZjRkNTA1YWQw
ZjcyZjc4MTQ5ZDliZWZhYjJlMGI3NjlmYzVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RvbS9pbnNlcnRBZGphY2VudEhUTUwtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMzIgQEAKK1Rlc3QgZm9yIERPTS5zZXRPdXRlckhUTUwgb24gYSBwYWdlIHdpdGhvdXQgYSBk
b2N1bWVudEVsZW1lbnQuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBET00uaW5zZXJ0QWRq
YWNlbnRIVE1MCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NLmluc2VydEFkamFjZW50SFRNTC5i
ZWZvcmViZWdpbgorUEFTUzogVGhlIGdpdmVuIEhUTUwgc2hvdWxkIGhhdmUgYmVlbiBhZGRlZCB0
byB0aGUgRE9NIHRyZWUuCitQQVNTOiBUaGUgZ2l2ZW4gSFRNTCBzaG91bGQgaGF2ZSBiZWVuIHJl
bW92ZWQgZnJvbSB0aGUgRE9NIHRyZWUuCitQQVNTOiBUaGUgZ2l2ZW4gSFRNTCBzaG91bGQgaGF2
ZSBiZWVuIGFkZGVkIGJhY2sgdG8gdGhlIERPTSB0cmVlLgorCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogRE9NLmluc2VydEFkamFjZW50SFRNTC5hZnRlcmJlZ2luCitQQVNTOiBUaGUgZ2l2ZW4gSFRN
TCBzaG91bGQgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBET00gdHJlZS4KK1BBU1M6IFRoZSBnaXZl
biBIVE1MIHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBET00gdHJlZS4KK1BBU1M6
IFRoZSBnaXZlbiBIVE1MIHNob3VsZCBoYXZlIGJlZW4gYWRkZWQgYmFjayB0byB0aGUgRE9NIHRy
ZWUuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET00uaW5zZXJ0QWRqYWNlbnRIVE1MLmJlZm9y
ZWVuZAorUEFTUzogVGhlIGdpdmVuIEhUTUwgc2hvdWxkIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUg
RE9NIHRyZWUuCitQQVNTOiBUaGUgZ2l2ZW4gSFRNTCBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQg
ZnJvbSB0aGUgRE9NIHRyZWUuCitQQVNTOiBUaGUgZ2l2ZW4gSFRNTCBzaG91bGQgaGF2ZSBiZWVu
IGFkZGVkIGJhY2sgdG8gdGhlIERPTSB0cmVlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9N
Lmluc2VydEFkamFjZW50SFRNTC5hZnRlcmVuZAorUEFTUzogVGhlIGdpdmVuIEhUTUwgc2hvdWxk
IGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgRE9NIHRyZWUuCitQQVNTOiBUaGUgZ2l2ZW4gSFRNTCBz
aG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgRE9NIHRyZWUuCitQQVNTOiBUaGUgZ2l2
ZW4gSFRNTCBzaG91bGQgaGF2ZSBiZWVuIGFkZGVkIGJhY2sgdG8gdGhlIERPTSB0cmVlLgorCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NLmluc2VydEFkamFjZW50SFRNTC5JbnZhbGlkTm9kZUlk
CitQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBlcnJvci4KK1BBU1M6IEVycm9yOiBDb3VsZCBub3Qg
ZmluZCBub2RlIHdpdGggZ2l2ZW4gaWQKKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTS5pbnNl
cnRBZGphY2VudEhUTUwuSW52YWxpZFBvc2l0aW9uCitQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBl
cnJvci4KK1BBU1M6IEVycm9yOiBTeW50YXhFcnJvcgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZG9tL2luc2VydEFkamFjZW50SFRNTC5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RvbS9pbnNlcnRBZGphY2VudEhUTUwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzZlMTg4NGQw
MDQyMGE0NTRjZjQ4YmU4ZWYxYmI5MmNkZDUxYzY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RvbS9pbnNlcnRBZGphY2VudEhUTUwuaHRtbApAQCAtMCwwICsxLDg2
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgZG9tTm9kZTsKKworICAg
IGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiRE9NLmluc2VydEFk
amFjZW50SFRNTCIpOworCisgICAgY29uc3QgcG9zaXRpb25zID0gWworICAgICAgICAiYmVmb3Jl
YmVnaW4iLAorICAgICAgICAiYWZ0ZXJiZWdpbiIsCisgICAgICAgICJiZWZvcmVlbmQiLAorICAg
ICAgICAiYWZ0ZXJlbmQiLAorICAgIF07CisKKyAgICBmb3IgKGxldCBwb3NpdGlvbiBvZiBwb3Np
dGlvbnMpIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFtZTog
YERPTS5pbnNlcnRBZGphY2VudEhUTUwuJHtwb3NpdGlvbn1gLAorICAgICAgICAgICAgYXN5bmMg
dGVzdCgpIHsKKyAgICAgICAgICAgICAgICBsZXQgaHRtbCA9IGA8ZGl2IGlkPSIke3Bvc2l0aW9u
fSI+PC9kaXY+YDsKKyAgICAgICAgICAgICAgICBhd2FpdCBET01BZ2VudC5pbnNlcnRBZGphY2Vu
dEhUTUwoZG9tTm9kZS5pZCwgcG9zaXRpb24sIGh0bWwpOworCisgICAgICAgICAgICAgICAgbGV0
IGluc2VydEFkamFjZW50SFRNTFJlc3VsdCA9IGF3YWl0IERPTUFnZW50LmdldE91dGVySFRNTChk
b21Ob2RlLnBhcmVudE5vZGUuaWQpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0VGhhdChpbnNlcnRBZGphY2VudEhUTUxSZXN1bHQub3V0ZXJIVE1MLmluY2x1ZGVzKGh0bWwp
LCAiVGhlIGdpdmVuIEhUTUwgc2hvdWxkIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgRE9NIHRyZWUu
IikKKworICAgICAgICAgICAgICAgIGF3YWl0IERPTUFnZW50LnVuZG8oKTsKKworICAgICAgICAg
ICAgICAgIGxldCB1bmRvUmVzdWx0ID0gYXdhaXQgRE9NQWdlbnQuZ2V0T3V0ZXJIVE1MKGRvbU5v
ZGUucGFyZW50Tm9kZS5pZCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KCF1bmRvUmVzdWx0Lm91dGVySFRNTC5pbmNsdWRlcyhodG1sKSwgIlRoZSBnaXZlbiBIVE1M
IHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBET00gdHJlZS4iKQorCisgICAgICAg
ICAgICAgICAgYXdhaXQgRE9NQWdlbnQucmVkbygpOworCisgICAgICAgICAgICAgICAgbGV0IHJl
ZG9SZXN1bHQgPSBhd2FpdCBET01BZ2VudC5nZXRPdXRlckhUTUwoZG9tTm9kZS5wYXJlbnROb2Rl
LmlkKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQocmVkb1Jlc3Vs
dC5vdXRlckhUTUwuaW5jbHVkZXMoaHRtbCksICJUaGUgZ2l2ZW4gSFRNTCBzaG91bGQgaGF2ZSBi
ZWVuIGFkZGVkIGJhY2sgdG8gdGhlIERPTSB0cmVlLiIpCisgICAgICAgICAgICB9CisgICAgICAg
IH0pOworICAgIH0KKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRP
TS5pbnNlcnRBZGphY2VudEhUTUwuSW52YWxpZE5vZGVJZCIsCisgICAgICAgIGFzeW5jIHRlc3Qo
KSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVJZCA9IDk5
OTk5OTk7CisgICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSAiYWZ0ZXJiZWdpbiI7Cisg
ICAgICAgICAgICAgICAgY29uc3QgaHRtbCA9ICIiOworICAgICAgICAgICAgICAgIGF3YWl0IERP
TUFnZW50Lmluc2VydEFkamFjZW50SFRNTChub2RlSWQsIHBvc2l0aW9uLCBodG1sKTsKKyAgICAg
ICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RUaGF0KGVycm9yLCAiU2hvdWxkIHByb2R1Y2UgYW4gZXJyb3IuIik7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJFcnJvcjogIiArIGVycm9yLm1lc3NhZ2UpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJET00uaW5zZXJ0QWRqYWNlbnRIVE1MLkludmFsaWRQb3NpdGlvbiIs
CisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAg
ICAgIGNvbnN0IHBvc2l0aW9uID0gIklOVkFMSURfUE9TSVRJT04iOworICAgICAgICAgICAgICAg
IGNvbnN0IGh0bWwgPSAiIjsKKyAgICAgICAgICAgICAgICBhd2FpdCBET01BZ2VudC5pbnNlcnRB
ZGphY2VudEhUTUwoZG9tTm9kZS5pZCwgcG9zaXRpb24sIGh0bWwpOworICAgICAgICAgICAgfSBj
YXRjaCAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQo
ZXJyb3IsICJTaG91bGQgcHJvZHVjZSBhbiBlcnJvci4iKTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LnBhc3MoIkVycm9yOiAiICsgZXJyb3IubWVzc2FnZSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlcXVlc3REb2N1
bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7CisgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5
U2VsZWN0b3IoZG9jdW1lbnROb2RlLmlkLCAiI3JlZmVyZW5jZSIsIChub2RlSWQpID0+IHsKKyAg
ICAgICAgICAgIGRvbU5vZGUgPSBXSS5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGRvbU5vZGUsIGBOb2RlIHdpdGggaWQg
InJlZmVyZW5jZSIgc2hvdWxkIGV4aXN0LmApOworCisgICAgICAgICAgICBzdWl0ZS5ydW5UZXN0
Q2FzZXNBbmRGaW5pc2goKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgZm9yIERPTS5zZXRPdXRl
ckhUTUwgb24gYSBwYWdlIHdpdGhvdXQgYSBkb2N1bWVudEVsZW1lbnQuPC9wPjwvYm9keT4KKwor
PGRpdiBpZD0iY29udGFpbmVyIj48ZGl2IGlkPSJyZWZlcmVuY2UiPjwvZGl2PjwvZGl2PgorPC9o
dG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326439</attachid>
            <date>2017-11-09 03:59:17 -0800</date>
            <delta_ts>2017-11-09 14:10:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179283-20171109035917.patch</filename>
            <type>text/plain</type>
            <size>27674</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDFhNDQ0M2QwODUxMDk3MGExNjllYWMyYWFlNTgx
MGEwMjZiYTNhMTcuLjBmMDc1Mzc1ZjY3MzMyZjM1OWM1NjE5YzcwZmY0ZWQyYzFhM2M5ZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTExLTA5ICBEZXZp
biBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHN1cHBvcnQgdW5kby9yZWRvIG9mIGluc2VydEFkamFjZW50SFRNTAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MjgzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wv
RE9NLmpzb246CisgICAgICAgIEFkZCBgaW5zZXJ0QWRqYWNlbnRIVE1MYCBjb21tYW5kIHRoYXQg
ZXhlY3V0ZXMgYW4gdW5kb2FibGUgdmVyc2lvbiBvZiBgaW5zZXJ0QWRqYWNlbnRIVE1MYAorICAg
ICAgICBvbiB0aGUgZ2l2ZW4gbm9kZS4KKwogMjAxNy0xMS0wOSAgR3VpbGxhdW1lIEVtb250ICA8
Z3VpamVtb250QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ11bTUlQU10gVXNlIGZjc3IgdG8g
Y2hlY2sgdGhlIHZhbGlkaXR5IG9mIHRoZSByZXN1bHQgb2YgdHJ1bmMudy5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggN2U5Mjg0MWZmZDQwOTQ1MGQ3NWRlN2YxOTU1ZjJkMzQxNWVhNzVkNi4uNTVlM2VhMmFkZjRl
YmZhODJiZmVlZTc2NmZkOWM5NWUzNGU2NWFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBA
CisyMDE3LTExLTA5ICBEZXZpbiBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IHN1cHBvcnQgdW5kby9yZWRvIG9mIGluc2VydEFkamFjZW50
SFRNTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5
MjgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dDogaW5zcGVjdG9yL2RvbS9pbnNlcnRBZGphY2VudEhUTUwuaHRtbAorCisgICAgICAgIENyZWF0
ZSBhbm90aGVyIHZlcnNpb24gb2YgRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnRIVE1MIHRoYXQga2Vl
cHMgdHJhY2sgb2YgdGhlIG5vZGVzIHRoYXQgYXJlCisgICAgICAgIGFkZGVkLiBUaGlzIGlzIG5l
Y2Vzc2FyeSBiZWNhdXNlIHRoZSBjaGlsZHJlbiBvZiBhIERvY3VtZW50RnJhZ21lbnQgYXJlIHJl
bW92ZWQgd2hlbiBpdCBpcworICAgICAgICBhZGRlZCB0byBhIENvbnRhaW5lck5vZGUuIEluIHRo
aXMgd2F5LCBpdCBpcyBwb3NzaWJsZSB0byByZW1vdmUgdGhvc2Ugbm9kZXMgZHVyaW5nIGFuIHVu
ZG8uCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omluc2VydEFkamFjZW50SFRNTCk6CisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvRE9NRWRpdG9yLmg6CisgICAgICAgICogaW5zcGVjdG9yL0RPTUVk
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6Omluc2VydEFkamFjZW50SFRN
TCk6CisgICAgICAgIERyaXZlLWJ5IGZpeDogc29ydCBmdW5jdGlvbnMgYW5kIGNsYXNzIGRlY2xh
cmF0aW9ucy4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjppbnNlcnRBZGphY2VudEhUTUwpOgor
CiAyMDE3LTExLTA4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgQVZTYW1wbGVCdWZmZXJHZW5lcmF0b3IgbGVha3Mgc2VlbiBvbiBsZWFrcyBib3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDAzZjNkOWRlNDA1MDIyN2FkNjMzODc5MTY4MDExNTc2
ZGVkMDk2MTAuLjQwOWUyOTg4NGFlNzNhMTEyZGMxODJkZDI3OTEyNWJhYjNhMjNkN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTExLTA5ICBEZXZpbiBS
b3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IHN1cHBvcnQgdW5kby9yZWRvIG9mIGluc2VydEFkamFjZW50SFRNTAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MjgzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9E
T01Ob2RlLmpzOgorICAgICAgICAoV0kuRE9NTm9kZS5wcm90b3R5cGUuaW5zZXJ0QWRqYWNlbnRI
VE1MKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanM6
CisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuX3N0YXJ0RWRpdGluZ0FzSFRN
TCk6CisgICAgICAgIERyaXZlLWJ5OiBvbmx5IGF0dGVtcHQgdG8gdXBkYXRlIHRoZSBjdXJzb3Ig
aWYgYW4gaW5pdGlhbFZhbHVlIGlzIHN1cHBsaWVkLgorCiAyMDE3LTExLTA5ICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIy
MjQ1NjYpOiBbR1RLXVtXUEVdIE1hbnkgaW5zcGVjdG9yIHRlc3RzIGFyZSBmYWlsaW5nIGFmdGVy
IHIyMjQ1NjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJv
dG9jb2wvRE9NLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29s
L0RPTS5qc29uCmluZGV4IDAzOGYzMDkwYjk3YzQ0NmUzYzk1OTlkNjE4YTc5YzM1YTkwNmJiNzYu
LjkwMWIyMTNkYTlkZjlkZjQ1OGZlMDFkMjEzMzFhY2EwYTM3ZmVmN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbgpAQCAtMzAyLDYg
KzMwMiwxNCBAQAogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CisgICAgICAg
ICAgICAibmFtZSI6ICJpbnNlcnRBZGphY2VudEhUTUwiLAorICAgICAgICAgICAgInBhcmFtZXRl
cnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJOb2Rl
SWQiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwb3NpdGlvbiIsICJ0eXBlIjogInN0
cmluZyIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImh0bWwiLCAidHlwZSI6ICJzdHJp
bmciIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgewogICAgICAgICAgICAg
Im5hbWUiOiAicGVyZm9ybVNlYXJjaCIsCiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2Vh
cmNoZXMgZm9yIGEgZ2l2ZW4gc3RyaW5nIGluIHRoZSBET00gdHJlZS4gVXNlIDxjb2RlPmdldFNl
YXJjaFJlc3VsdHM8L2NvZGU+IHRvIGFjY2VzcyBzZWFyY2ggcmVzdWx0cyBvciA8Y29kZT5jYW5j
ZWxTZWFyY2g8L2NvZGU+IHRvIGVuZCB0aGlzIHNlYXJjaCBzZXNzaW9uLiIsCiAgICAgICAgICAg
ICAicGFyYW1ldGVycyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA5MDRjZmIwNWJlZjcw
MGU2MmY4M2UyYWVmYzBiMTViYjQ2NTRlYmNkLi41ODNlY2YzYjdhYmVhZmUyNjQ2MmYwMDk2NDQx
OWJmMGUyOGE5NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zNjQxLDcgKzM2NDEsNyBA
QCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEVsZW1lbnQ+PiBjb250ZXh0RWxlbWVudEZvckluc2Vy
dGlvbihjb25zdCBTdHJpbmcmIHdoZXJlLAogfQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8v
RE9NLVBhcnNpbmcvI2RvbS1lbGVtZW50LWluc2VydGFkamFjZW50aHRtbAotRXhjZXB0aW9uT3I8
dm9pZD4gRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnRIVE1MKGNvbnN0IFN0cmluZyYgd2hlcmUsIGNv
bnN0IFN0cmluZyYgbWFya3VwKQorRXhjZXB0aW9uT3I8dm9pZD4gRWxlbWVudDo6aW5zZXJ0QWRq
YWNlbnRIVE1MKGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYgbWFya3VwLCBzdGQ6
Om9wdGlvbmFsPE5vZGVWZWN0b3ImPiBub2RlcykKIHsKICAgICAvLyBTdGVwcyAxIGFuZCAyLgog
ICAgIGF1dG8gY29udGV4dEVsZW1lbnQgPSBjb250ZXh0RWxlbWVudEZvckluc2VydGlvbih3aGVy
ZSwgKnRoaXMpOwpAQCAtMzY1MSw2ICszNjUxLDEzIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEVsZW1l
bnQ6Omluc2VydEFkamFjZW50SFRNTChjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25zdCBTdHJpbmcm
CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoY29u
dGV4dEVsZW1lbnQucmVsZWFzZVJldHVyblZhbHVlKCksIG1hcmt1cCwgQWxsb3dTY3JpcHRpbmdD
b250ZW50KTsKICAgICBpZiAoZnJhZ21lbnQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBmcmFnbWVudC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICBpZiAoVU5MSUtFTFkobm9kZXMp
KSB7CisgICAgICAgIC8vIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBpbnNlcnRBZGphY2VudCwgYXMg
b3RoZXJ3aXNlIHRoZSBjaGlsZHJlbiBvZiBmcmFnbWVudCB3aWxsIGJlIG1vdmVkCisgICAgICAg
IC8vIHRvIHRoZWlyIG5ldyBwYXJlbnQgYW5kIHdpbGwgYmUgaGFyZGVyIHRvIGtlZXAgdHJhY2sg
b2YuCisgICAgICAgICpub2RlcyA9IGNvbGxlY3RDaGlsZE5vZGVzKGZyYWdtZW50LnJldHVyblZh
bHVlKCkpOworICAgIH0KKwogICAgIC8vIFN0ZXAgNC4KICAgICBhdXRvIHJlc3VsdCA9IGluc2Vy
dEFkamFjZW50KHdoZXJlLCBmcmFnbWVudC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAgICAgaWYg
KHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTM2NTgsNiArMzY2NSwxMSBAQCBFeGNlcHRpb25P
cjx2b2lkPiBFbGVtZW50OjppbnNlcnRBZGphY2VudEhUTUwoY29uc3QgU3RyaW5nJiB3aGVyZSwg
Y29uc3QgU3RyaW5nJgogICAgIHJldHVybiB7IH07CiB9CiAKK0V4Y2VwdGlvbk9yPHZvaWQ+IEVs
ZW1lbnQ6Omluc2VydEFkamFjZW50SFRNTChjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25zdCBTdHJp
bmcmIG1hcmt1cCkKK3sKKyAgICByZXR1cm4gaW5zZXJ0QWRqYWNlbnRIVE1MKHdoZXJlLCBtYXJr
dXAsIHN0ZDo6bnVsbG9wdCk7Cit9CisKIEV4Y2VwdGlvbk9yPHZvaWQ+IEVsZW1lbnQ6Omluc2Vy
dEFkamFjZW50VGV4dChjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25zdCBTdHJpbmcmIHRleHQpCiB7
CiAgICAgYXV0byByZXN1bHQgPSBpbnNlcnRBZGphY2VudCh3aGVyZSwgZG9jdW1lbnQoKS5jcmVh
dGVUZXh0Tm9kZSh0ZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA1M2E1MWNjNjQzYzc3YmUw
MWNhMmE2YTgxMjYzNTUyYzI2ODc2MzdiLi5kYzM2NWU2YTQ3YjVjMjYzYjFhNmM3ZDdlYjY1NWY1
ZDY4ZjE0MGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTMxMiw2ICszMTIsOCBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUYWJJbmRleChpbnQpOwogICAgIHZpcnR1YWwg
UmVmUHRyPEVsZW1lbnQ+IGZvY3VzRGVsZWdhdGUoKTsKIAorICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IGluc2VydEFkamFjZW50SFRNTChjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25zdCBTdHJpbmcmIGh0
bWwsIHN0ZDo6b3B0aW9uYWw8Tm9kZVZlY3RvciY+IG5vZGVzKTsKKwogICAgIFdFQkNPUkVfRVhQ
T1JUIEV4Y2VwdGlvbk9yPEVsZW1lbnQqPiBpbnNlcnRBZGphY2VudEVsZW1lbnQoY29uc3QgU3Ry
aW5nJiB3aGVyZSwgRWxlbWVudCYgbmV3Q2hpbGQpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2Vw
dGlvbk9yPHZvaWQ+IGluc2VydEFkamFjZW50SFRNTChjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25z
dCBTdHJpbmcmIGh0bWwpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IGlu
c2VydEFkamFjZW50VGV4dChjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25zdCBTdHJpbmcmIHRleHQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAppbmRleCBkZmJlNGMzZjU0YmJj
MWZlM2E0MzNjMTM0OGVkMzI2YzQ0ZWM3MDhlLi4zNDkzYjAxN2NhMDZiOWYyOTc2MjMyN2ZhMzEz
NTNkYjhmOTU4Njk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRp
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcApAQCAt
NDcsNyArNDcsNyBAQCBjbGFzcyBET01FZGl0b3I6OlJlbW92ZUNoaWxkQWN0aW9uIGZpbmFsIDog
cHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoUmVtb3ZlQ2hpbGRBY3Rpb24pOwogcHVibGljOgogICAgIFJlbW92ZUNoaWxkQWN0aW9uKE5v
ZGUmIHBhcmVudE5vZGUsIE5vZGUmIG5vZGUpCi0gICAgICAgIDogQWN0aW9uKCJSZW1vdmVDaGls
ZCIpCisgICAgICAgIDogSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uKCkKICAgICAgICAgLCBtX3Bh
cmVudE5vZGUocGFyZW50Tm9kZSkKICAgICAgICAgLCBtX25vZGUobm9kZSkKICAgICB7CkBAIC03
OCw3ICs3OCw3IEBAIHByaXZhdGU6CiBjbGFzcyBET01FZGl0b3I6Okluc2VydEJlZm9yZUFjdGlv
biBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewogcHVibGljOgogICAg
IEluc2VydEJlZm9yZUFjdGlvbihOb2RlJiBwYXJlbnROb2RlLCBSZWY8Tm9kZT4mJiBub2RlLCBO
b2RlKiBhbmNob3JOb2RlKQotICAgICAgICA6IEFjdGlvbigiSW5zZXJ0QmVmb3JlIikKKyAgICAg
ICAgOiBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24oKQogICAgICAgICAsIG1fcGFyZW50Tm9kZShw
YXJlbnROb2RlKQogICAgICAgICAsIG1fbm9kZShXVEZNb3ZlKG5vZGUpKQogICAgICAgICAsIG1f
YW5jaG9yTm9kZShhbmNob3JOb2RlKQpAQCAtMTI3LDcgKzEyNyw3IEBAIGNsYXNzIERPTUVkaXRv
cjo6UmVtb3ZlQXR0cmlidXRlQWN0aW9uIGZpbmFsIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6
OkFjdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVtb3ZlQXR0cmlidXRlQWN0aW9u
KTsKIHB1YmxpYzoKICAgICBSZW1vdmVBdHRyaWJ1dGVBY3Rpb24oRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgU3RyaW5nJiBuYW1lKQotICAgICAgICA6IEFjdGlvbigiUmVtb3ZlQXR0cmlidXRlIikK
KyAgICAgICAgOiBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24oKQogICAgICAgICAsIG1fZWxlbWVu
dChlbGVtZW50KQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgIHsKQEAgLTE2MCw3ICsxNjAs
NyBAQCBjbGFzcyBET01FZGl0b3I6OlNldEF0dHJpYnV0ZUFjdGlvbiBmaW5hbCA6IHB1YmxpYyBJ
bnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNldEF0
dHJpYnV0ZUFjdGlvbik7CiBwdWJsaWM6CiAgICAgU2V0QXR0cmlidXRlQWN0aW9uKEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSkKLSAgICAgICAgOiBBY3Rpb24oIlNldEF0dHJpYnV0ZSIpCisgICAgICAgIDogSW5zcGVj
dG9ySGlzdG9yeTo6QWN0aW9uKCkKICAgICAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAg
ICAgLCBtX25hbWUobmFtZSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQpAQCAtMTk3LDcgKzE5
Nyw3IEBAIHByaXZhdGU6CiBjbGFzcyBET01FZGl0b3I6OlNldE91dGVySFRNTEFjdGlvbiBmaW5h
bCA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewogcHVibGljOgogICAgIFNldE91
dGVySFRNTEFjdGlvbihOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIGh0bWwpCi0gICAgICAgIDog
QWN0aW9uKCJTZXRPdXRlckhUTUwiKQorICAgICAgICA6IEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlv
bigpCiAgICAgICAgICwgbV9ub2RlKG5vZGUpCiAgICAgICAgICwgbV9uZXh0U2libGluZyhub2Rl
Lm5leHRTaWJsaW5nKCkpCiAgICAgICAgICwgbV9odG1sKGh0bWwpCkBAIC0yMzksMTEgKzIzOSw1
MCBAQCBwcml2YXRlOgogICAgIERPTUVkaXRvciBtX2RvbUVkaXRvciB7IG1faGlzdG9yeSB9Owog
fTsKIAorY2xhc3MgRE9NRWRpdG9yOjpJbnNlcnRBZGphY2VudEhUTUxBY3Rpb24gZmluYWwgOiBw
dWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShJbnNlcnRBZGphY2VudEhUTUxBY3Rpb24pOworcHVibGljOgorICAgIEluc2VydEFkamFjZW50
SFRNTEFjdGlvbihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHBvc2l0aW9uLCBjb25z
dCBTdHJpbmcmIGh0bWwpCisgICAgICAgIDogSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uKCkKKyAg
ICAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKKyAgICAgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9u
KQorICAgICAgICAsIG1faHRtbChodG1sKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
RXhjZXB0aW9uT3I8dm9pZD4gcGVyZm9ybSgpIGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
cmVkbygpOworICAgIH0KKworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHVuZG8oKSBmaW5hbAorICAg
IHsKKyAgICAgICAgZm9yIChhdXRvJiBhZGRlZE5vZGUgOiBtX2FkZGVkTm9kZXMpCisgICAgICAg
ICAgICBhZGRlZE5vZGUtPnJlbW92ZSgpOworICAgICAgICBtX2FkZGVkTm9kZXMuY2xlYXIoKTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiByZWRv
KCkgZmluYWwKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9lbGVtZW50LT5pbnNlcnRB
ZGphY2VudEhUTUwobV9wb3NpdGlvbiwgbV9odG1sLCBtX2FkZGVkTm9kZXMpOworICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxl
YXNlRXhjZXB0aW9uKCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgUmVmPEVs
ZW1lbnQ+IG1fZWxlbWVudDsKKyAgICBOb2RlVmVjdG9yIG1fYWRkZWROb2RlczsKKyAgICBTdHJp
bmcgbV9wb3NpdGlvbjsKKyAgICBTdHJpbmcgbV9odG1sOworfTsKKwogY2xhc3MgRE9NRWRpdG9y
OjpSZXBsYWNlV2hvbGVUZXh0QWN0aW9uIGZpbmFsIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6
OkFjdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVwbGFjZVdob2xlVGV4dEFjdGlv
bik7CiBwdWJsaWM6CiAgICAgUmVwbGFjZVdob2xlVGV4dEFjdGlvbihUZXh0JiB0ZXh0Tm9kZSwg
Y29uc3QgU3RyaW5nJiB0ZXh0KQotICAgICAgICA6IEFjdGlvbigiUmVwbGFjZVdob2xlVGV4dCIp
CisgICAgICAgIDogSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uKCkKICAgICAgICAgLCBtX3RleHRO
b2RlKHRleHROb2RlKQogICAgICAgICAsIG1fdGV4dCh0ZXh0KQogICAgIHsKQEAgLTI3Nyw3ICsz
MTYsNyBAQCBjbGFzcyBET01FZGl0b3I6OlJlcGxhY2VDaGlsZE5vZGVBY3Rpb24gZmluYWw6IHB1
YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFJlcGxhY2VDaGlsZE5vZGVBY3Rpb24pOwogcHVibGljOgogICAgIFJlcGxhY2VDaGlsZE5vZGVB
Y3Rpb24oTm9kZSYgcGFyZW50Tm9kZSwgUmVmPE5vZGU+JiYgbmV3Tm9kZSwgTm9kZSYgb2xkTm9k
ZSkKLSAgICAgICAgOiBBY3Rpb24oIlJlcGxhY2VDaGlsZE5vZGUiKQorICAgICAgICA6IEluc3Bl
Y3Rvckhpc3Rvcnk6OkFjdGlvbigpCiAgICAgICAgICwgbV9wYXJlbnROb2RlKHBhcmVudE5vZGUp
CiAgICAgICAgICwgbV9uZXdOb2RlKFdURk1vdmUobmV3Tm9kZSkpCiAgICAgICAgICwgbV9vbGRO
b2RlKG9sZE5vZGUpCkBAIC0zMDksNyArMzQ4LDcgQEAgY2xhc3MgRE9NRWRpdG9yOjpTZXROb2Rl
VmFsdWVBY3Rpb24gZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShTZXROb2RlVmFsdWVBY3Rpb24pOwogcHVibGljOgogICAg
IFNldE5vZGVWYWx1ZUFjdGlvbihOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQotICAg
ICAgICA6IEFjdGlvbigiU2V0Tm9kZVZhbHVlIikKKyAgICAgICAgOiBJbnNwZWN0b3JIaXN0b3J5
OjpBY3Rpb24oKQogICAgICAgICAsIG1fbm9kZShub2RlKQogICAgICAgICAsIG1fdmFsdWUodmFs
dWUpCiAgICAgewpAQCAtMzc0LDYgKzQxMywxMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0
b3I6OnNldE91dGVySFRNTChOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIGh0bWwsIE5vZGUqJgog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0V4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6aW5z
ZXJ0QWRqYWNlbnRIVE1MKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgd2hlcmUsIGNv
bnN0IFN0cmluZyYgaHRtbCkKK3sKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjpt
YWtlX3VuaXF1ZTxJbnNlcnRBZGphY2VudEhUTUxBY3Rpb24+KGVsZW1lbnQsIHdoZXJlLCBodG1s
KSk7Cit9CisKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6cmVwbGFjZVdob2xlVGV4dChU
ZXh0JiB0ZXh0Tm9kZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIHJldHVybiBtX2hpc3Rv
cnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VXaG9sZVRleHRBY3Rpb24+KHRleHRO
b2RlLCB0ZXh0KSk7CkBAIC00MjIsNiArNDY2LDExIEBAIGJvb2wgRE9NRWRpdG9yOjpzZXRPdXRl
ckhUTUwoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBodG1sLCBOb2RlKiYgbmV3Tm9kZSwgRXJy
CiAgICAgcmV0dXJuIHBvcHVsYXRlRXJyb3JTdHJpbmcoc2V0T3V0ZXJIVE1MKG5vZGUsIGh0bWws
IG5ld05vZGUpLCBlcnJvclN0cmluZyk7CiB9CiAKK2Jvb2wgRE9NRWRpdG9yOjppbnNlcnRBZGph
Y2VudEhUTUwoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiB3aGVyZSwgY29uc3QgU3Ry
aW5nJiBodG1sLCBFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCit7CisgICAgcmV0dXJuIHBvcHVs
YXRlRXJyb3JTdHJpbmcoaW5zZXJ0QWRqYWNlbnRIVE1MKGVsZW1lbnQsIHdoZXJlLCBodG1sKSwg
ZXJyb3JTdHJpbmcpOworfQorCiBib29sIERPTUVkaXRvcjo6cmVwbGFjZVdob2xlVGV4dChUZXh0
JiB0ZXh0Tm9kZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcp
CiB7CiAgICAgcmV0dXJuIHBvcHVsYXRlRXJyb3JTdHJpbmcocmVwbGFjZVdob2xlVGV4dCh0ZXh0
Tm9kZSwgdGV4dCksIGVycm9yU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9ET01FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3Iu
aAppbmRleCBlOTVhOTM2ODc5YzJjNGE1MTIzMWY4MzBkOGY5NGU5MmVlN2JmM2I2Li44N2FiOTQz
ZWMxMjYzZTExOWJjMWUyNjA5ZjA4YmE4OTAxMmViMDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0RPTUVkaXRvci5oCkBAIC01NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2
b2lkPiByZXBsYWNlV2hvbGVUZXh0KFRleHQmLCBjb25zdCBTdHJpbmcmIHRleHQpOwogICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VDaGlsZChOb2RlJiBwYXJlbnROb2RlLCBSZWY8Tm9kZT4m
JiBuZXdOb2RlLCBOb2RlJiBvbGROb2RlKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXROb2Rl
VmFsdWUoTm9kZSYgcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgRXhjZXB0
aW9uT3I8dm9pZD4gaW5zZXJ0QWRqYWNlbnRIVE1MKEVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIHdo
ZXJlLCBjb25zdCBTdHJpbmcmIGh0bWwpOwogCiAgICAgYm9vbCBpbnNlcnRCZWZvcmUoTm9kZSYg
cGFyZW50Tm9kZSwgUmVmPE5vZGU+JiYsIE5vZGUqIGFuY2hvck5vZGUsIEVycm9yU3RyaW5nJik7
CiAgICAgYm9vbCByZW1vdmVDaGlsZChOb2RlJiBwYXJlbnROb2RlLCBOb2RlJiwgRXJyb3JTdHJp
bmcmKTsKQEAgLTYyLDkgKzYzLDExIEBAIHB1YmxpYzoKICAgICBib29sIHJlbW92ZUF0dHJpYnV0
ZShFbGVtZW50JiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFcnJvclN0cmluZyYpOwogICAgIGJvb2wg
c2V0T3V0ZXJIVE1MKE5vZGUmLCBjb25zdCBTdHJpbmcmIGh0bWwsIE5vZGUqJiBuZXdOb2RlLCBF
cnJvclN0cmluZyYpOwogICAgIGJvb2wgcmVwbGFjZVdob2xlVGV4dChUZXh0JiwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBFcnJvclN0cmluZyYpOworICAgIGJvb2wgaW5zZXJ0QWRqYWNlbnRIVE1MKEVs
ZW1lbnQmLCBjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25zdCBTdHJpbmcmIGh0bWwsIEVycm9yU3Ry
aW5nJik7CiAKIHByaXZhdGU6CiAgICAgY2xhc3MgRE9NQWN0aW9uOworICAgIGNsYXNzIEluc2Vy
dEFkamFjZW50SFRNTEFjdGlvbjsKICAgICBjbGFzcyBJbnNlcnRCZWZvcmVBY3Rpb247CiAgICAg
Y2xhc3MgUmVtb3ZlQXR0cmlidXRlQWN0aW9uOwogICAgIGNsYXNzIFJlbW92ZUNoaWxkQWN0aW9u
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3Rvcnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCmluZGV4
IDJjMDgxNmU4MTkwMThkYjE0YmRmYjg5ODA5YjZkMTJjN2Q1NmRiMzcuLjAwZDVmMTg1MmNlYmEy
NzBjM2FmODFjMTMyMDkwMDVkYTdiMTE4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAKQEAgLTM2LDEyICszNiw2IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFVuZG9hYmxlU3RhdGVNYXJrIDogcHVibGljIEluc3BlY3Rvckhpc3Rv
cnk6OkFjdGlvbiB7Ci1wdWJsaWM6Ci0gICAgVW5kb2FibGVTdGF0ZU1hcmsoKQotICAgICAgICA6
IEFjdGlvbigiW1VuZG9hYmxlU3RhdGVdIikKLSAgICB7Ci0gICAgfQotCiBwcml2YXRlOgogICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHBlcmZvcm0oKSBmaW5hbCB7IHJldHVybiB7IH07IH0KICAgICBF
eGNlcHRpb25Pcjx2b2lkPiB1bmRvKCkgZmluYWwgeyByZXR1cm4geyB9OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuaAppbmRleCAzMThmY2EzNzY2MThjZWVl
YjZiNDJjMTE4MTZmOTBmODFhNzE1ZmU3Li5iMWUxZmMyNDE3MDk1MDhlYTdkY2M4NTFhMzU1MzYz
ZjRjZDE0YzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SGlzdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5
LmgKQEAgLTQxLDEzICs0MSw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBBY3Rpb24gewogICAgICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0
IEFjdGlvbihjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgICAgICAgICA6IG1fbmFtZSB7IG5hbWUg
fQotICAgICAgICB7Ci0gICAgICAgIH0KLQogICAgICAgICB2aXJ0dWFsIH5BY3Rpb24oKSA9IGRl
ZmF1bHQ7Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgeyByZXR1cm4gbV9uYW1l
OyB9CiAKICAgICAgICAgdmlydHVhbCBTdHJpbmcgbWVyZ2VJZCgpIHsgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIG1lcmdlKHN0ZDo6dW5pcXVlX3B0cjxBY3Rp
b24+KSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IGFhOTM1YWIxM2RiMjAyZWJhNGNmYzUyMTQ1NTEwNzAz
ZjVlNTVlY2YuLjVjNDAxMzFiNjY3MDFlNjYwMjIxZDcwMDdiMTlhNmNmMmQzNzIzNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCkBAIC0xMDQsOCArMTA0LDggQEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVQc2V1ZG9D
bGFzc01hc2soY29uc3QgSW5zcGVjdG9yQXJyYXkmIHBzZXVkb0NsYXNzQXJyYXkpCiBjbGFzcyBJ
bnNwZWN0b3JDU1NBZ2VudDo6U3R5bGVTaGVldEFjdGlvbiA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0
b3J5OjpBY3Rpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0eWxlU2hlZXRBY3Rpb24p
OwogcHVibGljOgotICAgIFN0eWxlU2hlZXRBY3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lLCBJbnNw
ZWN0b3JTdHlsZVNoZWV0KiBzdHlsZVNoZWV0KQotICAgICAgICA6IEluc3BlY3Rvckhpc3Rvcnk6
OkFjdGlvbihuYW1lKQorICAgIFN0eWxlU2hlZXRBY3Rpb24oSW5zcGVjdG9yU3R5bGVTaGVldCog
c3R5bGVTaGVldCkKKyAgICAgICAgOiBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24oKQogICAgICAg
ICAsIG1fc3R5bGVTaGVldChzdHlsZVNoZWV0KQogICAgIHsKICAgICB9CkBAIC0xMTgsNyArMTE4
LDcgQEAgY2xhc3MgSW5zcGVjdG9yQ1NTQWdlbnQ6OlNldFN0eWxlU2hlZXRUZXh0QWN0aW9uIGZp
bmFsIDogcHVibGljIEluc3BlY3RvckNTU0FnZW4KICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
ZXRTdHlsZVNoZWV0VGV4dEFjdGlvbik7CiBwdWJsaWM6CiAgICAgU2V0U3R5bGVTaGVldFRleHRB
Y3Rpb24oSW5zcGVjdG9yU3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29uc3QgU3RyaW5nJiB0ZXh0
KQotICAgICAgICA6IEluc3BlY3RvckNTU0FnZW50OjpTdHlsZVNoZWV0QWN0aW9uKEFTQ0lJTGl0
ZXJhbCgiU2V0U3R5bGVTaGVldFRleHQiKSwgc3R5bGVTaGVldCkKKyAgICAgICAgOiBJbnNwZWN0
b3JDU1NBZ2VudDo6U3R5bGVTaGVldEFjdGlvbihzdHlsZVNoZWV0KQogICAgICAgICAsIG1fdGV4
dCh0ZXh0KQogICAgIHsKICAgICB9CkBAIC0xNzAsNyArMTcwLDcgQEAgY2xhc3MgSW5zcGVjdG9y
Q1NTQWdlbnQ6OlNldFN0eWxlVGV4dEFjdGlvbiBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JDU1NB
Z2VudDo6U3QKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTZXRTdHlsZVRleHRBY3Rpb24pOwog
cHVibGljOgogICAgIFNldFN0eWxlVGV4dEFjdGlvbihJbnNwZWN0b3JTdHlsZVNoZWV0KiBzdHls
ZVNoZWV0LCBjb25zdCBJbnNwZWN0b3JDU1NJZCYgY3NzSWQsIGNvbnN0IFN0cmluZyYgdGV4dCkK
LSAgICAgICAgOiBJbnNwZWN0b3JDU1NBZ2VudDo6U3R5bGVTaGVldEFjdGlvbihBU0NJSUxpdGVy
YWwoIlNldFN0eWxlVGV4dCIpLCBzdHlsZVNoZWV0KQorICAgICAgICA6IEluc3BlY3RvckNTU0Fn
ZW50OjpTdHlsZVNoZWV0QWN0aW9uKHN0eWxlU2hlZXQpCiAgICAgICAgICwgbV9jc3NJZChjc3NJ
ZCkKICAgICAgICAgLCBtX3RleHQodGV4dCkKICAgICB7CkBAIC0yMTUsNyArMjE1LDcgQEAgY2xh
c3MgSW5zcGVjdG9yQ1NTQWdlbnQ6OlNldFJ1bGVTZWxlY3RvckFjdGlvbiBmaW5hbCA6IHB1Ymxp
YyBJbnNwZWN0b3JDU1NBZ2VudDoKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTZXRSdWxlU2Vs
ZWN0b3JBY3Rpb24pOwogcHVibGljOgogICAgIFNldFJ1bGVTZWxlY3RvckFjdGlvbihJbnNwZWN0
b3JTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBJbnNwZWN0b3JDU1NJZCYgY3NzSWQsIGNv
bnN0IFN0cmluZyYgc2VsZWN0b3IpCi0gICAgICAgIDogSW5zcGVjdG9yQ1NTQWdlbnQ6OlN0eWxl
U2hlZXRBY3Rpb24oQVNDSUlMaXRlcmFsKCJTZXRSdWxlU2VsZWN0b3IiKSwgc3R5bGVTaGVldCkK
KyAgICAgICAgOiBJbnNwZWN0b3JDU1NBZ2VudDo6U3R5bGVTaGVldEFjdGlvbihzdHlsZVNoZWV0
KQogICAgICAgICAsIG1fY3NzSWQoY3NzSWQpCiAgICAgICAgICwgbV9zZWxlY3RvcihzZWxlY3Rv
cikKICAgICB7CkBAIC0yNTAsNyArMjUwLDcgQEAgY2xhc3MgSW5zcGVjdG9yQ1NTQWdlbnQ6OkFk
ZFJ1bGVBY3Rpb24gZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQ1NTQWdlbnQ6OlN0eWxlU2gKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShBZGRSdWxlQWN0aW9uKTsKIHB1YmxpYzoKICAgICBBZGRS
dWxlQWN0aW9uKEluc3BlY3RvclN0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IFN0cmluZyYg
c2VsZWN0b3IpCi0gICAgICAgIDogSW5zcGVjdG9yQ1NTQWdlbnQ6OlN0eWxlU2hlZXRBY3Rpb24o
QVNDSUlMaXRlcmFsKCJBZGRSdWxlIiksIHN0eWxlU2hlZXQpCisgICAgICAgIDogSW5zcGVjdG9y
Q1NTQWdlbnQ6OlN0eWxlU2hlZXRBY3Rpb24oc3R5bGVTaGVldCkKICAgICAgICAgLCBtX3NlbGVj
dG9yKHNlbGVjdG9yKQogICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGY5ZDdkYmZlZDg2OWQ5
NzIyZWRhODg5NjExYjBkM2MwMjgwMDkxNzEuLjE2N2ZkYTQzNDRjMTE3MDczODUwNmU4NDE0OWNk
NGJjYmEyMDRiZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC04MDgsNiArODA4LDIwIEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OnNldE91dGVySFRNTChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBu
b2RlSWQsIGNvbnN0CiAgICAgICAgIHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChuZXdJZCk7CiB9
CiAKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Omluc2VydEFkamFjZW50SFRNTChFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgcG9zaXRpb24sIGNvbnN0
IFN0cmluZyYgaHRtbCkKK3sKKyAgICBOb2RlKiBub2RlID0gYXNzZXJ0RWRpdGFibGVOb2RlKGVy
cm9yU3RyaW5nLCBub2RlSWQpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFpczxFbGVtZW50Pihub2RlKSkgeworICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJ
TGl0ZXJhbCgiQ2FuIG9ubHkgY2FsbCBpbnNlcnRBZGphY2VudEhUTUwgb24gRWxlbWVudHMuIik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2RvbUVkaXRvci0+aW5zZXJ0QWRqYWNl
bnRIVE1MKGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKSwgcG9zaXRpb24sIGh0bWwsIGVycm9yU3Ry
aW5nKTsKK30KKwogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0Tm9kZVZhbHVlKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAg
ICBOb2RlKiBub2RlID0gYXNzZXJ0RWRpdGFibGVOb2RlKGVycm9yU3RyaW5nLCBub2RlSWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01B
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5oCmluZGV4IGQ5NDJlZmY1NjA0Njc4MDE2NDI5NzNhMDE0NGQ0MmQwMTU0NWQ3MmUuLjVmYzU0
NDYwMGQxZGZjYTE5ODgzZTA5ZGE3MDJjODhhMWZmYjhiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTEyMSw2ICsx
MjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROb2RlTmFtZShFcnJvclN0cmluZyYsIGludCBu
b2RlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgaW50KiBuZXdJZCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRPdXRlckhUTUwoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBXVEY6OlN0cmluZyogb3V0
ZXJIVE1MKSBvdmVycmlkZTsKICAgICB2b2lkIHNldE91dGVySFRNTChFcnJvclN0cmluZyYsIGlu
dCBub2RlSWQsIGNvbnN0IFN0cmluZyYgb3V0ZXJIVE1MKSBvdmVycmlkZTsKKyAgICB2b2lkIGlu
c2VydEFkamFjZW50SFRNTChFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYg
cG9zaXRpb24sIGNvbnN0IFN0cmluZyYgaHRtbCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXROb2Rl
VmFsdWUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHZhbHVlKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyYsIGlu
dCBub2RlSWQsIGNvbnN0IFdURjo6U3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRM
aXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRFdmVudExp
c3RlbmVyRGlzYWJsZWQoRXJyb3JTdHJpbmcmLCBpbnQgZXZlbnRMaXN0ZW5lcklkLCBib29sIGRp
c2FibGVkKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9ET01Ob2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanMKaW5kZXggOTRkZDIwODE5YTIxM2U1OGI3ZDVlMGZk
YzJkYzBmYmJlYTA4ZDk1MC4uMWRlNjlmMTcwNTcxODEwY2ZiZTgwYmMyMTdkYzQyYWRlMTUzNWNm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0RPTU5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0RPTU5vZGUuanMKQEAgLTUwNSwxNiArNTA1LDIwIEBAIFdJLkRPTU5vZGUgPSBjbGFzcyBE
T01Ob2RlIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmICh0aGlzLm5vZGVUeXBlKCkgIT09
IE5vZGUuRUxFTUVOVF9OT0RFKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIC8vIEZJ
WE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTc5MjgzPiBXZWIgSW5zcGVjdG9yOiBzdXBwb3J0
IHVuZG8vcmVkbyBvZiBpbnNlcnRBZGphY2VudEhUTUwKKyAgICAgICAgLy8gQ09NUEFUSUJJTElU
WSAoaU9TIDExLjApOiBET00uaW5zZXJ0QWRqYWNlbnRIVE1MIGRpZCBub3QgZXhpc3QuCisgICAg
ICAgIGlmICghRE9NQWdlbnQuaW5zZXJ0QWRqYWNlbnRIVE1MKSB7CisgICAgICAgICAgICBXSS5S
ZW1vdGVPYmplY3QucmVzb2x2ZU5vZGUodGhpcykudGhlbigob2JqZWN0KSA9PiB7CisgICAgICAg
ICAgICAgICAgZnVuY3Rpb24gaW5zcGVjdGVkUGFnZV9ub2RlX2luc2VydEFkamFjZW50SFRNTChw
b3NpdGlvbiwgaHRtbCkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydEFkamFjZW50
SFRNTChwb3NpdGlvbiwgaHRtbCk7CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAgIFdJLlJl
bW90ZU9iamVjdC5yZXNvbHZlTm9kZSh0aGlzKS50aGVuKChvYmplY3QpID0+IHsKLSAgICAgICAg
ICAgIGZ1bmN0aW9uIGluc3BlY3RlZFBhZ2Vfbm9kZV9pbnNlcnRBZGphY2VudEhUTUwocG9zaXRp
b24sIGh0bWwpIHsKLSAgICAgICAgICAgICAgICB0aGlzLmluc2VydEFkamFjZW50SFRNTChwb3Np
dGlvbiwgaHRtbCk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgb2JqZWN0LmNhbGxG
dW5jdGlvbihpbnNwZWN0ZWRQYWdlX25vZGVfaW5zZXJ0QWRqYWNlbnRIVE1MLCBbcG9zaXRpb24s
IGh0bWxdKTsKKyAgICAgICAgICAgICAgICBvYmplY3QucmVsZWFzZSgpOworICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgICAgICAgICAgb2JqZWN0
LmNhbGxGdW5jdGlvbihpbnNwZWN0ZWRQYWdlX25vZGVfaW5zZXJ0QWRqYWNlbnRIVE1MLCBbcG9z
aXRpb24sIGh0bWxdKTsKLSAgICAgICAgICAgIG9iamVjdC5yZWxlYXNlKCk7Ci0gICAgICAgIH0p
OworICAgICAgICBET01BZ2VudC5pbnNlcnRBZGphY2VudEhUTUwodGhpcy5pZCwgcG9zaXRpb24s
IGh0bWwsIHRoaXMuX21ha2VVbmRvYWJsZUNhbGxiYWNrKCkpOwogICAgIH0KIAogICAgIHJlbW92
ZU5vZGUoY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCmluZGV4IGNhNzk5MDE4YmMxYjUz
NTZhMDlmOTkwMGFhOWEzZmZkNzQzNTYzM2MuLjJlMWZiM2FkNzdiOWU1ZGJiZTBmN2UwNWE0NmIz
MjNiNzVlNDY4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCkBAIC0xMDQ0LDcgKzEwNDQsNyBA
QCBXSS5ET01UcmVlRWxlbWVudCA9IGNsYXNzIERPTVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJl
ZUVsZW1lbnQKICAgICAgICAgY29uZmlnLnNldE11bHRpbGluZSh0cnVlKTsKICAgICAgICAgdGhp
cy5fZWRpdGluZyA9IFdJLnN0YXJ0RWRpdGluZyh0aGlzLl9odG1sRWRpdEVsZW1lbnQsIGNvbmZp
Zyk7CiAKLSAgICAgICAgaWYgKCFpc05hTihvcHRpb25zLnN0YXJ0UG9zaXRpb24pKSB7CisgICAg
ICAgIGlmIChvcHRpb25zLmluaXRpYWxWYWx1ZSAmJiAhaXNOYU4ob3B0aW9ucy5zdGFydFBvc2l0
aW9uKSkgewogICAgICAgICAgICAgbGV0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
ICAgICAgICAgICAgIHJhbmdlLnNldFN0YXJ0KHRoaXMuX2h0bWxFZGl0RWxlbWVudC5maXJzdENo
aWxkLCBvcHRpb25zLnN0YXJ0UG9zaXRpb24pOwogICAgICAgICAgICAgcmFuZ2UuY29sbGFwc2Uo
dHJ1ZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggN2I3YzYzNWQxMDVhMTcxOTk3OTcyOTAxNzhlN2ZmN2FhN2EzNjQ4My4u
ODA2NWUwZmYzNjI4ZDFlMWYxZTZmNTMwYzQ1YzM0Nzg2OWJlMDY1ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDE3LTExLTA5ICBEZXZpbiBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHN1cHBvcnQgdW5kby9yZWRvIG9mIGluc2VydEFk
amFjZW50SFRNTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc5MjgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZG9tL2luc2VydEFkamFjZW50SFRNTC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9kb20vaW5zZXJ0QWRqYWNlbnRIVE1MLmh0bWw6IEFkZGVk
LgorCiAyMDE3LTExLTA5ICBBbGljaWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLXSBUZXN0IGdhcmRlbmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS9pbnNlcnRBZGphY2VudEhUTUwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RvbS9pbnNlcnRBZGphY2VudEhUTUwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBmYTRjYTM0MDViMGZhYzk0ODMxYjE2ZDAyMDgxMzRkMTZjODdmMTkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2luc2VydEFkamFjZW50SFRNTC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzMiBAQAorVGVzdCBmb3IgRE9NLmluc2VydEFkamFjZW50SFRN
TC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IERPTS5pbnNlcnRBZGphY2VudEhUTUwKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBET00uaW5zZXJ0QWRqYWNlbnRIVE1MLmJlZm9yZWJlZ2luCitQ
QVNTOiBUaGUgZ2l2ZW4gSFRNTCBzaG91bGQgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBET00gdHJl
ZS4KK1BBU1M6IFRoZSBnaXZlbiBIVE1MIHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRo
ZSBET00gdHJlZS4KK1BBU1M6IFRoZSBnaXZlbiBIVE1MIHNob3VsZCBoYXZlIGJlZW4gYWRkZWQg
YmFjayB0byB0aGUgRE9NIHRyZWUuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET00uaW5zZXJ0
QWRqYWNlbnRIVE1MLmFmdGVyYmVnaW4KK1BBU1M6IFRoZSBnaXZlbiBIVE1MIHNob3VsZCBoYXZl
IGJlZW4gYWRkZWQgdG8gdGhlIERPTSB0cmVlLgorUEFTUzogVGhlIGdpdmVuIEhUTUwgc2hvdWxk
IGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIERPTSB0cmVlLgorUEFTUzogVGhlIGdpdmVuIEhU
TUwgc2hvdWxkIGhhdmUgYmVlbiBhZGRlZCBiYWNrIHRvIHRoZSBET00gdHJlZS4KKworLS0gUnVu
bmluZyB0ZXN0IGNhc2U6IERPTS5pbnNlcnRBZGphY2VudEhUTUwuYmVmb3JlZW5kCitQQVNTOiBU
aGUgZ2l2ZW4gSFRNTCBzaG91bGQgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBET00gdHJlZS4KK1BB
U1M6IFRoZSBnaXZlbiBIVE1MIHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBET00g
dHJlZS4KK1BBU1M6IFRoZSBnaXZlbiBIVE1MIHNob3VsZCBoYXZlIGJlZW4gYWRkZWQgYmFjayB0
byB0aGUgRE9NIHRyZWUuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET00uaW5zZXJ0QWRqYWNl
bnRIVE1MLmFmdGVyZW5kCitQQVNTOiBUaGUgZ2l2ZW4gSFRNTCBzaG91bGQgaGF2ZSBiZWVuIGFk
ZGVkIHRvIHRoZSBET00gdHJlZS4KK1BBU1M6IFRoZSBnaXZlbiBIVE1MIHNob3VsZCBoYXZlIGJl
ZW4gcmVtb3ZlZCBmcm9tIHRoZSBET00gdHJlZS4KK1BBU1M6IFRoZSBnaXZlbiBIVE1MIHNob3Vs
ZCBoYXZlIGJlZW4gYWRkZWQgYmFjayB0byB0aGUgRE9NIHRyZWUuCisKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBET00uaW5zZXJ0QWRqYWNlbnRIVE1MLkludmFsaWROb2RlSWQKK1BBU1M6IFNob3Vs
ZCBwcm9kdWNlIGFuIGVycm9yLgorUEFTUzogRXJyb3I6IENvdWxkIG5vdCBmaW5kIG5vZGUgd2l0
aCBnaXZlbiBpZAorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NLmluc2VydEFkamFjZW50SFRN
TC5JbnZhbGlkUG9zaXRpb24KK1BBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGVycm9yLgorUEFTUzog
RXJyb3I6IFN5bnRheEVycm9yCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
b20vaW5zZXJ0QWRqYWNlbnRIVE1MLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2lu
c2VydEFkamFjZW50SFRNTC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0YjY0OGM2MzQ3NzY4NDNiMWY4ODY3
MTUxMmQ5ZGEwNTlmZGY3YmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZG9tL2luc2VydEFkamFjZW50SFRNTC5odG1sCkBAIC0wLDAgKzEsODcgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBkb21Ob2RlOworCisgICAgbGV0IHN1aXRlID0g
SW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJET00uaW5zZXJ0QWRqYWNlbnRIVE1MIik7
CisKKyAgICBjb25zdCBwb3NpdGlvbnMgPSBbCisgICAgICAgICJiZWZvcmViZWdpbiIsCisgICAg
ICAgICJhZnRlcmJlZ2luIiwKKyAgICAgICAgImJlZm9yZWVuZCIsCisgICAgICAgICJhZnRlcmVu
ZCIsCisgICAgXTsKKworICAgIGZvciAobGV0IHBvc2l0aW9uIG9mIHBvc2l0aW9ucykgeworICAg
ICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lOiBgRE9NLmluc2VydEFk
amFjZW50SFRNTC4ke3Bvc2l0aW9ufWAsCisgICAgICAgICAgICBhc3luYyB0ZXN0KCkgeworICAg
ICAgICAgICAgICAgIGxldCBodG1sID0gYDxkaXYgaWQ9IiR7cG9zaXRpb259Ij48L2Rpdj5gOwor
ICAgICAgICAgICAgICAgIGF3YWl0IERPTUFnZW50Lmluc2VydEFkamFjZW50SFRNTChkb21Ob2Rl
LmlkLCBwb3NpdGlvbiwgaHRtbCk7CisKKyAgICAgICAgICAgICAgICBsZXQgaW5zZXJ0QWRqYWNl
bnRIVE1MUmVzdWx0ID0gYXdhaXQgRE9NQWdlbnQuZ2V0T3V0ZXJIVE1MKGRvbU5vZGUucGFyZW50
Tm9kZS5pZCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGluc2Vy
dEFkamFjZW50SFRNTFJlc3VsdC5vdXRlckhUTUwuaW5jbHVkZXMoaHRtbCksICJUaGUgZ2l2ZW4g
SFRNTCBzaG91bGQgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBET00gdHJlZS4iKQorCisgICAgICAg
ICAgICAgICAgYXdhaXQgRE9NQWdlbnQudW5kbygpOworCisgICAgICAgICAgICAgICAgbGV0IHVu
ZG9SZXN1bHQgPSBhd2FpdCBET01BZ2VudC5nZXRPdXRlckhUTUwoZG9tTm9kZS5wYXJlbnROb2Rl
LmlkKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoIXVuZG9SZXN1
bHQub3V0ZXJIVE1MLmluY2x1ZGVzKGh0bWwpLCAiVGhlIGdpdmVuIEhUTUwgc2hvdWxkIGhhdmUg
YmVlbiByZW1vdmVkIGZyb20gdGhlIERPTSB0cmVlLiIpCisKKyAgICAgICAgICAgICAgICBhd2Fp
dCBET01BZ2VudC5yZWRvKCk7CisKKyAgICAgICAgICAgICAgICBsZXQgcmVkb1Jlc3VsdCA9IGF3
YWl0IERPTUFnZW50LmdldE91dGVySFRNTChkb21Ob2RlLnBhcmVudE5vZGUuaWQpOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChyZWRvUmVzdWx0Lm91dGVySFRNTC5p
bmNsdWRlcyhodG1sKSwgIlRoZSBnaXZlbiBIVE1MIHNob3VsZCBoYXZlIGJlZW4gYWRkZWQgYmFj
ayB0byB0aGUgRE9NIHRyZWUuIikKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQor
CisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRE9NLmluc2VydEFkamFj
ZW50SFRNTC5JbnZhbGlkTm9kZUlkIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICAgICAgY29uc3Qgbm9kZUlkID0gOTk5OTk5OTsKKyAgICAg
ICAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9ICJhZnRlcmJlZ2luIjsKKyAgICAgICAgICAgICAg
ICBjb25zdCBodG1sID0gIiI7CisgICAgICAgICAgICAgICAgYXdhaXQgRE9NQWdlbnQuaW5zZXJ0
QWRqYWNlbnRIVE1MKG5vZGVJZCwgcG9zaXRpb24sIGh0bWwpOworICAgICAgICAgICAgfSBjYXRj
aCAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXJy
b3IsICJTaG91bGQgcHJvZHVjZSBhbiBlcnJvci4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LnBhc3MoIkVycm9yOiAiICsgZXJyb3IubWVzc2FnZSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIkRPTS5pbnNlcnRBZGphY2VudEhUTUwuSW52YWxpZFBvc2l0aW9uIiwKKyAgICAgICAgYXN5
bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgY29uc3QgcG9z
aXRpb24gPSAiSU5WQUxJRF9QT1NJVElPTiI7CisgICAgICAgICAgICAgICAgY29uc3QgaHRtbCA9
ICIiOworICAgICAgICAgICAgICAgIGF3YWl0IERPTUFnZW50Lmluc2VydEFkamFjZW50SFRNTChk
b21Ob2RlLmlkLCBwb3NpdGlvbiwgaHRtbCk7CisgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikg
eworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChlcnJvciwgIlNob3Vs
ZCBwcm9kdWNlIGFuIGVycm9yLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFz
cygiRXJyb3I6ICIgKyBlcnJvci5tZXNzYWdlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChkb2N1bWVu
dE5vZGUpID0+IHsKKyAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1
bWVudE5vZGUuaWQsICIjcmVmZXJlbmNlIiwgKG5vZGVJZCkgPT4geworICAgICAgICAgICAgZG9t
Tm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChub2RlSWQpOworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnQoZG9tTm9kZSwgYE5vZGUgd2l0aCBpZCAicmVmZXJlbmNlIiBz
aG91bGQgZXhpc3QuYCk7CisKKyAgICAgICAgICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlz
aCgpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxwPlRlc3QgZm9yIERPTS5pbnNlcnRBZGphY2VudEhU
TUwuPC9wPgorCisgICAgPGRpdiBpZD0iY29udGFpbmVyIj48ZGl2IGlkPSJyZWZlcmVuY2UiPjwv
ZGl2PjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326485</attachid>
            <date>2017-11-09 14:10:19 -0800</date>
            <delta_ts>2017-11-09 14:13:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179283-20171109141019.patch</filename>
            <type>text/plain</type>
            <size>22628</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDFhNDQ0M2QwODUxMDk3MGExNjllYWMyYWFlNTgx
MGEwMjZiYTNhMTcuLjhhMGYwM2IwZDhhNjg3MTgzZjhjOWNkYWE3YmU5YjAyNzY3NjNlMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTExLTA5ICBEZXZp
biBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHN1cHBvcnQgdW5kby9yZWRvIG9mIGluc2VydEFkamFjZW50SFRNTAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MjgzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb3RvY29s
L0RPTS5qc29uOgorICAgICAgICBBZGQgYGluc2VydEFkamFjZW50SFRNTGAgY29tbWFuZCB0aGF0
IGV4ZWN1dGVzIGFuIHVuZG9hYmxlIHZlcnNpb24gb2YgYGluc2VydEFkamFjZW50SFRNTGAKKyAg
ICAgICAgb24gdGhlIGdpdmVuIG5vZGUuCisKIDIwMTctMTEtMDkgIEd1aWxsYXVtZSBFbW9udCAg
PGd1aWplbW9udEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdW01JUFNdIFVzZSBmY3NyIHRv
IGNoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGUgcmVzdWx0IG9mIHRydW5jLncuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDdlOTI4NDFmZmQ0MDk0NTBkNzVkZTdmMTk1NWYyZDM0MTVlYTc1ZDYuLjZkMDYxMDA4N2Yz
ODFkZDY0ZTQ5YTg1ODQwZWZjMGUxNTRhOGI4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBA
QAorMjAxNy0xMS0wOSAgRGV2aW4gUm91c3NvICA8d2Via2l0QGRldmlucm91c3NvLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBzdXBwb3J0IHVuZG8vcmVkbyBvZiBpbnNlcnRBZGphY2Vu
dEhUTUwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
OTI4MworCisgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4KKworICAgICAgICBU
ZXN0OiBpbnNwZWN0b3IvZG9tL2luc2VydEFkamFjZW50SFRNTC5odG1sCisKKyAgICAgICAgQ3Jl
YXRlIGFub3RoZXIgdmVyc2lvbiBvZiBFbGVtZW50OjppbnNlcnRBZGphY2VudEhUTUwgdGhhdCBr
ZWVwcyB0cmFjayBvZiB0aGUgbm9kZXMgdGhhdCBhcmUKKyAgICAgICAgYWRkZWQuIFRoaXMgaXMg
bmVjZXNzYXJ5IGJlY2F1c2UgdGhlIGNoaWxkcmVuIG9mIGEgRG9jdW1lbnRGcmFnbWVudCBhcmUg
cmVtb3ZlZCB3aGVuIGl0IGlzCisgICAgICAgIGFkZGVkIHRvIGEgQ29udGFpbmVyTm9kZS4gSW4g
dGhpcyB3YXksIGl0IGlzIHBvc3NpYmxlIHRvIHJlbW92ZSB0aG9zZSBub2RlcyBkdXJpbmcgYW4g
dW5kby4KKworICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW5zZXJ0QWRqYWNlbnRIVE1MKToKKwor
ICAgICAgICAqIGluc3BlY3Rvci9ET01FZGl0b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9N
RWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6aW5zZXJ0QWRqYWNlbnRI
VE1MKToKKyAgICAgICAgRHJpdmUtYnkgZml4OiBzb3J0IGZ1bmN0aW9ucyBhbmQgY2xhc3MgZGVj
bGFyYXRpb25zLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omluc2VydEFkamFjZW50SFRNTCk6
CisKIDIwMTctMTEtMDggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBVlNhbXBsZUJ1ZmZlckdlbmVyYXRvciBsZWFrcyBzZWVuIG9uIGxlYWtzIGJvdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggMDNmM2Q5ZGU0MDUwMjI3YWQ2MzM4NzkxNjgwMTE1
NzZkZWQwOTYxMC4uOGMwOTNmZmNjMDM0ZDE0YzY4ZGMzYzk2OWQyMjIxZmY2NDk5N2JhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMTEtMDkgIERldmlu
IFJvdXNzbyAgPHdlYmtpdEBkZXZpbnJvdXNzby5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogc3VwcG9ydCB1bmRvL3JlZG8gb2YgaW5zZXJ0QWRqYWNlbnRIVE1MCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkyODMKKworICAgICAgICBSZXZp
ZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVs
cy9ET01Ob2RlLmpzOgorICAgICAgICAoV0kuRE9NTm9kZS5wcm90b3R5cGUuaW5zZXJ0QWRqYWNl
bnRIVE1MKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQu
anM6CisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuX3N0YXJ0RWRpdGluZ0Fz
SFRNTCk6CisgICAgICAgIERyaXZlLWJ5OiBvbmx5IGF0dGVtcHQgdG8gdXBkYXRlIHRoZSBjdXJz
b3IgaWYgYW4gaW5pdGlhbFZhbHVlIGlzIHN1cHBsaWVkLgorCiAyMDE3LTExLTA5ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
KHIyMjQ1NjYpOiBbR1RLXVtXUEVdIE1hbnkgaW5zcGVjdG9yIHRlc3RzIGFyZSBmYWlsaW5nIGFm
dGVyIHIyMjQ1NjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cHJvdG9jb2wvRE9NLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3Rv
Y29sL0RPTS5qc29uCmluZGV4IDAzOGYzMDkwYjk3YzQ0NmUzYzk1OTlkNjE4YTc5YzM1YTkwNmJi
NzYuLjkwMWIyMTNkYTlkZjlkZjQ1OGZlMDFkMjEzMzFhY2EwYTM3ZmVmN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbgpAQCAtMzAy
LDYgKzMwMiwxNCBAQAogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CisgICAg
ICAgICAgICAibmFtZSI6ICJpbnNlcnRBZGphY2VudEhUTUwiLAorICAgICAgICAgICAgInBhcmFt
ZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJO
b2RlSWQiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwb3NpdGlvbiIsICJ0eXBlIjog
InN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImh0bWwiLCAidHlwZSI6ICJz
dHJpbmciIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgewogICAgICAgICAg
ICAgIm5hbWUiOiAicGVyZm9ybVNlYXJjaCIsCiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
U2VhcmNoZXMgZm9yIGEgZ2l2ZW4gc3RyaW5nIGluIHRoZSBET00gdHJlZS4gVXNlIDxjb2RlPmdl
dFNlYXJjaFJlc3VsdHM8L2NvZGU+IHRvIGFjY2VzcyBzZWFyY2ggcmVzdWx0cyBvciA8Y29kZT5j
YW5jZWxTZWFyY2g8L2NvZGU+IHRvIGVuZCB0aGlzIHNlYXJjaCBzZXNzaW9uLiIsCiAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA5MDRjZmIwNWJl
ZjcwMGU2MmY4M2UyYWVmYzBiMTViYjQ2NTRlYmNkLi5hNzFkODhlOWJmOTkzNDc0OGViZDFhYTQ3
ZjAzMDA1Yjg3ZDYzMjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zNjQxLDcgKzM2NDEs
NyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEVsZW1lbnQ+PiBjb250ZXh0RWxlbWVudEZvcklu
c2VydGlvbihjb25zdCBTdHJpbmcmIHdoZXJlLAogfQogCiAvLyBodHRwczovL3czYy5naXRodWIu
aW8vRE9NLVBhcnNpbmcvI2RvbS1lbGVtZW50LWluc2VydGFkamFjZW50aHRtbAotRXhjZXB0aW9u
T3I8dm9pZD4gRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnRIVE1MKGNvbnN0IFN0cmluZyYgd2hlcmUs
IGNvbnN0IFN0cmluZyYgbWFya3VwKQorRXhjZXB0aW9uT3I8dm9pZD4gRWxlbWVudDo6aW5zZXJ0
QWRqYWNlbnRIVE1MKGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYgbWFya3VwLCBz
dGQ6Om9wdGlvbmFsPE5vZGVWZWN0b3ImPiBhZGRlZE5vZGVzKQogewogICAgIC8vIFN0ZXBzIDEg
YW5kIDIuCiAgICAgYXV0byBjb250ZXh0RWxlbWVudCA9IGNvbnRleHRFbGVtZW50Rm9ySW5zZXJ0
aW9uKHdoZXJlLCAqdGhpcyk7CkBAIC0zNjUxLDYgKzM2NTEsMTMgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnRIVE1MKGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0
IFN0cmluZyYKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVy
SFRNTChjb250ZXh0RWxlbWVudC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgbWFya3VwLCBBbGxvd1Nj
cmlwdGluZ0NvbnRlbnQpOwogICAgIGlmIChmcmFnbWVudC5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIGZyYWdtZW50LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIGlmIChVTkxJS0VM
WShhZGRlZE5vZGVzKSkgeworICAgICAgICAvLyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgaW5zZXJ0
QWRqYWNlbnQsIGFzIG90aGVyd2lzZSB0aGUgY2hpbGRyZW4gb2YgZnJhZ21lbnQgd2lsbCBiZSBt
b3ZlZAorICAgICAgICAvLyB0byB0aGVpciBuZXcgcGFyZW50IGFuZCB3aWxsIGJlIGhhcmRlciB0
byBrZWVwIHRyYWNrIG9mLgorICAgICAgICAqYWRkZWROb2RlcyA9IGNvbGxlY3RDaGlsZE5vZGVz
KGZyYWdtZW50LnJldHVyblZhbHVlKCkpOworICAgIH0KKwogICAgIC8vIFN0ZXAgNC4KICAgICBh
dXRvIHJlc3VsdCA9IGluc2VydEFkamFjZW50KHdoZXJlLCBmcmFnbWVudC5yZWxlYXNlUmV0dXJu
VmFsdWUoKSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTM2NTgsNiArMzY2
NSwxMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBFbGVtZW50OjppbnNlcnRBZGphY2VudEhUTUwoY29u
c3QgU3RyaW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiB7IH07CiB9CiAKK0V4
Y2VwdGlvbk9yPHZvaWQ+IEVsZW1lbnQ6Omluc2VydEFkamFjZW50SFRNTChjb25zdCBTdHJpbmcm
IHdoZXJlLCBjb25zdCBTdHJpbmcmIG1hcmt1cCkKK3sKKyAgICByZXR1cm4gaW5zZXJ0QWRqYWNl
bnRIVE1MKHdoZXJlLCBtYXJrdXAsIHN0ZDo6bnVsbG9wdCk7Cit9CisKIEV4Y2VwdGlvbk9yPHZv
aWQ+IEVsZW1lbnQ6Omluc2VydEFkamFjZW50VGV4dChjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25z
dCBTdHJpbmcmIHRleHQpCiB7CiAgICAgYXV0byByZXN1bHQgPSBpbnNlcnRBZGphY2VudCh3aGVy
ZSwgZG9jdW1lbnQoKS5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRl
eCA1M2E1MWNjNjQzYzc3YmUwMWNhMmE2YTgxMjYzNTUyYzI2ODc2MzdiLi4zZjRjZjRkYjYwMWFk
YTVjMTNjZTY5YTE4NTg1YWQxZDA2MDVlNjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTMxMiw2
ICszMTIsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUYWJJbmRleChp
bnQpOwogICAgIHZpcnR1YWwgUmVmUHRyPEVsZW1lbnQ+IGZvY3VzRGVsZWdhdGUoKTsKIAorICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IGluc2VydEFkamFjZW50SFRNTChjb25zdCBTdHJpbmcmIHdoZXJl
LCBjb25zdCBTdHJpbmcmIGh0bWwsIHN0ZDo6b3B0aW9uYWw8Tm9kZVZlY3RvciY+IGFkZGVkTm9k
ZXMpOworCiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8RWxlbWVudCo+IGluc2VydEFk
amFjZW50RWxlbWVudChjb25zdCBTdHJpbmcmIHdoZXJlLCBFbGVtZW50JiBuZXdDaGlsZCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gaW5zZXJ0QWRqYWNlbnRIVE1MKGNv
bnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYgaHRtbCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgRXhjZXB0aW9uT3I8dm9pZD4gaW5zZXJ0QWRqYWNlbnRUZXh0KGNvbnN0IFN0cmluZyYgd2hl
cmUsIGNvbnN0IFN0cmluZyYgdGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3Iu
Y3BwCmluZGV4IGRmYmU0YzNmNTRiYmMxZmUzYTQzM2MxMzQ4ZWQzMjZjNDRlYzcwOGUuLjM0OTNi
MDE3Y2EwNmI5ZjI5NzYyMzI3ZmEzMTM1M2RiOGY5NTg2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9ET01FZGl0b3IuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIERPTUVkaXRvcjo6UmVt
b3ZlQ2hpbGRBY3Rpb24gZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdmVDaGlsZEFjdGlvbik7CiBwdWJsaWM6CiAg
ICAgUmVtb3ZlQ2hpbGRBY3Rpb24oTm9kZSYgcGFyZW50Tm9kZSwgTm9kZSYgbm9kZSkKLSAgICAg
ICAgOiBBY3Rpb24oIlJlbW92ZUNoaWxkIikKKyAgICAgICAgOiBJbnNwZWN0b3JIaXN0b3J5OjpB
Y3Rpb24oKQogICAgICAgICAsIG1fcGFyZW50Tm9kZShwYXJlbnROb2RlKQogICAgICAgICAsIG1f
bm9kZShub2RlKQogICAgIHsKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKIGNsYXNzIERPTUVk
aXRvcjo6SW5zZXJ0QmVmb3JlQWN0aW9uIGZpbmFsIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6
OkFjdGlvbiB7CiBwdWJsaWM6CiAgICAgSW5zZXJ0QmVmb3JlQWN0aW9uKE5vZGUmIHBhcmVudE5v
ZGUsIFJlZjxOb2RlPiYmIG5vZGUsIE5vZGUqIGFuY2hvck5vZGUpCi0gICAgICAgIDogQWN0aW9u
KCJJbnNlcnRCZWZvcmUiKQorICAgICAgICA6IEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbigpCiAg
ICAgICAgICwgbV9wYXJlbnROb2RlKHBhcmVudE5vZGUpCiAgICAgICAgICwgbV9ub2RlKFdURk1v
dmUobm9kZSkpCiAgICAgICAgICwgbV9hbmNob3JOb2RlKGFuY2hvck5vZGUpCkBAIC0xMjcsNyAr
MTI3LDcgQEAgY2xhc3MgRE9NRWRpdG9yOjpSZW1vdmVBdHRyaWJ1dGVBY3Rpb24gZmluYWwgOiBw
dWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShSZW1vdmVBdHRyaWJ1dGVBY3Rpb24pOwogcHVibGljOgogICAgIFJlbW92ZUF0dHJpYnV0ZUFj
dGlvbihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgICAgIDogQWN0
aW9uKCJSZW1vdmVBdHRyaWJ1dGUiKQorICAgICAgICA6IEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlv
bigpCiAgICAgICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCiAgICAgICAgICwgbV9uYW1lKG5hbWUp
CiAgICAgewpAQCAtMTYwLDcgKzE2MCw3IEBAIGNsYXNzIERPTUVkaXRvcjo6U2V0QXR0cmlidXRl
QWN0aW9uIGZpbmFsIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoU2V0QXR0cmlidXRlQWN0aW9uKTsKIHB1YmxpYzoKICAgICBTZXRB
dHRyaWJ1dGVBY3Rpb24oRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQotICAgICAgICA6IEFjdGlvbigiU2V0QXR0cmli
dXRlIikKKyAgICAgICAgOiBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24oKQogICAgICAgICAsIG1f
ZWxlbWVudChlbGVtZW50KQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgICAgICAsIG1fdmFs
dWUodmFsdWUpCkBAIC0xOTcsNyArMTk3LDcgQEAgcHJpdmF0ZToKIGNsYXNzIERPTUVkaXRvcjo6
U2V0T3V0ZXJIVE1MQWN0aW9uIGZpbmFsIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlv
biB7CiBwdWJsaWM6CiAgICAgU2V0T3V0ZXJIVE1MQWN0aW9uKE5vZGUmIG5vZGUsIGNvbnN0IFN0
cmluZyYgaHRtbCkKLSAgICAgICAgOiBBY3Rpb24oIlNldE91dGVySFRNTCIpCisgICAgICAgIDog
SW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uKCkKICAgICAgICAgLCBtX25vZGUobm9kZSkKICAgICAg
ICAgLCBtX25leHRTaWJsaW5nKG5vZGUubmV4dFNpYmxpbmcoKSkKICAgICAgICAgLCBtX2h0bWwo
aHRtbCkKQEAgLTIzOSwxMSArMjM5LDUwIEBAIHByaXZhdGU6CiAgICAgRE9NRWRpdG9yIG1fZG9t
RWRpdG9yIHsgbV9oaXN0b3J5IH07CiB9OwogCitjbGFzcyBET01FZGl0b3I6Okluc2VydEFkamFj
ZW50SFRNTEFjdGlvbiBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc2VydEFkamFjZW50SFRNTEFjdGlvbik7CitwdWJs
aWM6CisgICAgSW5zZXJ0QWRqYWNlbnRIVE1MQWN0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IFN0cmluZyYgcG9zaXRpb24sIGNvbnN0IFN0cmluZyYgaHRtbCkKKyAgICAgICAgOiBJbnNwZWN0
b3JIaXN0b3J5OjpBY3Rpb24oKQorICAgICAgICAsIG1fZWxlbWVudChlbGVtZW50KQorICAgICAg
ICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCisgICAgICAgICwgbV9odG1sKGh0bWwpCisgICAgewor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBwZXJmb3JtKCkgZmluYWwK
KyAgICB7CisgICAgICAgIHJldHVybiByZWRvKCk7CisgICAgfQorCisgICAgRXhjZXB0aW9uT3I8
dm9pZD4gdW5kbygpIGZpbmFsCisgICAgeworICAgICAgICBmb3IgKGF1dG8mIGFkZGVkTm9kZSA6
IG1fYWRkZWROb2RlcykKKyAgICAgICAgICAgIGFkZGVkTm9kZS0+cmVtb3ZlKCk7CisgICAgICAg
IG1fYWRkZWROb2Rlcy5jbGVhcigpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHJlZG8oKSBmaW5hbAorICAgIHsKKyAgICAgICAgYXV0byByZXN1
bHQgPSBtX2VsZW1lbnQtPmluc2VydEFkamFjZW50SFRNTChtX3Bvc2l0aW9uLCBtX2h0bWwsIG1f
YWRkZWROb2Rlcyk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICB9CisKKyAgICBSZWY8RWxlbWVudD4gbV9lbGVtZW50OworICAgIE5vZGVWZWN0b3Ig
bV9hZGRlZE5vZGVzOworICAgIFN0cmluZyBtX3Bvc2l0aW9uOworICAgIFN0cmluZyBtX2h0bWw7
Cit9OworCiBjbGFzcyBET01FZGl0b3I6OlJlcGxhY2VXaG9sZVRleHRBY3Rpb24gZmluYWwgOiBw
dWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShSZXBsYWNlV2hvbGVUZXh0QWN0aW9uKTsKIHB1YmxpYzoKICAgICBSZXBsYWNlV2hvbGVUZXh0
QWN0aW9uKFRleHQmIHRleHROb2RlLCBjb25zdCBTdHJpbmcmIHRleHQpCi0gICAgICAgIDogQWN0
aW9uKCJSZXBsYWNlV2hvbGVUZXh0IikKKyAgICAgICAgOiBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rp
b24oKQogICAgICAgICAsIG1fdGV4dE5vZGUodGV4dE5vZGUpCiAgICAgICAgICwgbV90ZXh0KHRl
eHQpCiAgICAgewpAQCAtMjc3LDcgKzMxNiw3IEBAIGNsYXNzIERPTUVkaXRvcjo6UmVwbGFjZUNo
aWxkTm9kZUFjdGlvbiBmaW5hbDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVwbGFjZUNoaWxkTm9kZUFjdGlvbik7CiBwdWJsaWM6
CiAgICAgUmVwbGFjZUNoaWxkTm9kZUFjdGlvbihOb2RlJiBwYXJlbnROb2RlLCBSZWY8Tm9kZT4m
JiBuZXdOb2RlLCBOb2RlJiBvbGROb2RlKQotICAgICAgICA6IEFjdGlvbigiUmVwbGFjZUNoaWxk
Tm9kZSIpCisgICAgICAgIDogSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uKCkKICAgICAgICAgLCBt
X3BhcmVudE5vZGUocGFyZW50Tm9kZSkKICAgICAgICAgLCBtX25ld05vZGUoV1RGTW92ZShuZXdO
b2RlKSkKICAgICAgICAgLCBtX29sZE5vZGUob2xkTm9kZSkKQEAgLTMwOSw3ICszNDgsNyBAQCBj
bGFzcyBET01FZGl0b3I6OlNldE5vZGVWYWx1ZUFjdGlvbiBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0
b3JIaXN0b3J5OjpBY3Rpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNldE5vZGVWYWx1
ZUFjdGlvbik7CiBwdWJsaWM6CiAgICAgU2V0Tm9kZVZhbHVlQWN0aW9uKE5vZGUmIG5vZGUsIGNv
bnN0IFN0cmluZyYgdmFsdWUpCi0gICAgICAgIDogQWN0aW9uKCJTZXROb2RlVmFsdWUiKQorICAg
ICAgICA6IEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbigpCiAgICAgICAgICwgbV9ub2RlKG5vZGUp
CiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CkBAIC0zNzQsNiArNDEzLDExIEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6c2V0T3V0ZXJIVE1MKE5vZGUmIG5vZGUsIGNvbnN0
IFN0cmluZyYgaHRtbCwgTm9kZSomCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorRXhjZXB0aW9u
T3I8dm9pZD4gRE9NRWRpdG9yOjppbnNlcnRBZGphY2VudEhUTUwoRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgU3RyaW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJiBodG1sKQoreworICAgIHJldHVybiBt
X2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPEluc2VydEFkamFjZW50SFRNTEFjdGlv
bj4oZWxlbWVudCwgd2hlcmUsIGh0bWwpKTsKK30KKwogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRp
dG9yOjpyZXBsYWNlV2hvbGVUZXh0KFRleHQmIHRleHROb2RlLCBjb25zdCBTdHJpbmcmIHRleHQp
CiB7CiAgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFj
ZVdob2xlVGV4dEFjdGlvbj4odGV4dE5vZGUsIHRleHQpKTsKQEAgLTQyMiw2ICs0NjYsMTEgQEAg
Ym9vbCBET01FZGl0b3I6OnNldE91dGVySFRNTChOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIGh0
bWwsIE5vZGUqJiBuZXdOb2RlLCBFcnIKICAgICByZXR1cm4gcG9wdWxhdGVFcnJvclN0cmluZyhz
ZXRPdXRlckhUTUwobm9kZSwgaHRtbCwgbmV3Tm9kZSksIGVycm9yU3RyaW5nKTsKIH0KIAorYm9v
bCBET01FZGl0b3I6Omluc2VydEFkamFjZW50SFRNTChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBT
dHJpbmcmIHdoZXJlLCBjb25zdCBTdHJpbmcmIGh0bWwsIEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZykKK3sKKyAgICByZXR1cm4gcG9wdWxhdGVFcnJvclN0cmluZyhpbnNlcnRBZGphY2VudEhUTUwo
ZWxlbWVudCwgd2hlcmUsIGh0bWwpLCBlcnJvclN0cmluZyk7Cit9CisKIGJvb2wgRE9NRWRpdG9y
OjpyZXBsYWNlV2hvbGVUZXh0KFRleHQmIHRleHROb2RlLCBjb25zdCBTdHJpbmcmIHRleHQsIEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHsKICAgICByZXR1cm4gcG9wdWxhdGVFcnJvclN0cmlu
ZyhyZXBsYWNlV2hvbGVUZXh0KHRleHROb2RlLCB0ZXh0KSwgZXJyb3JTdHJpbmcpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0RPTUVkaXRvci5oCmluZGV4IGU5NWE5MzY4NzljMmM0YTUxMjMxZjgzMGQ4
Zjk0ZTkyZWU3YmYzYjYuLjg3YWI5NDNlYzEyNjNlMTE5YmMxZTI2MDlmMDhiYTg5MDEyZWIwMWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmgKQEAgLTU1LDYgKzU1LDcgQEAgcHVi
bGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VXaG9sZVRleHQoVGV4dCYsIGNvbnN0
IFN0cmluZyYgdGV4dCk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVwbGFjZUNoaWxkKE5vZGUm
IHBhcmVudE5vZGUsIFJlZjxOb2RlPiYmIG5ld05vZGUsIE5vZGUmIG9sZE5vZGUpOwogICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHNldE5vZGVWYWx1ZShOb2RlJiBwYXJlbnROb2RlLCBjb25zdCBTdHJp
bmcmIHZhbHVlKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbnNlcnRBZGphY2VudEhUTUwoRWxl
bWVudCYsIGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYgaHRtbCk7CiAKICAgICBi
b29sIGluc2VydEJlZm9yZShOb2RlJiBwYXJlbnROb2RlLCBSZWY8Tm9kZT4mJiwgTm9kZSogYW5j
aG9yTm9kZSwgRXJyb3JTdHJpbmcmKTsKICAgICBib29sIHJlbW92ZUNoaWxkKE5vZGUmIHBhcmVu
dE5vZGUsIE5vZGUmLCBFcnJvclN0cmluZyYpOwpAQCAtNjIsOSArNjMsMTEgQEAgcHVibGljOgog
ICAgIGJvb2wgcmVtb3ZlQXR0cmlidXRlKEVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEVy
cm9yU3RyaW5nJik7CiAgICAgYm9vbCBzZXRPdXRlckhUTUwoTm9kZSYsIGNvbnN0IFN0cmluZyYg
aHRtbCwgTm9kZSomIG5ld05vZGUsIEVycm9yU3RyaW5nJik7CiAgICAgYm9vbCByZXBsYWNlV2hv
bGVUZXh0KFRleHQmLCBjb25zdCBTdHJpbmcmIHRleHQsIEVycm9yU3RyaW5nJik7CisgICAgYm9v
bCBpbnNlcnRBZGphY2VudEhUTUwoRWxlbWVudCYsIGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0
IFN0cmluZyYgaHRtbCwgRXJyb3JTdHJpbmcmKTsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBET01B
Y3Rpb247CisgICAgY2xhc3MgSW5zZXJ0QWRqYWNlbnRIVE1MQWN0aW9uOwogICAgIGNsYXNzIElu
c2VydEJlZm9yZUFjdGlvbjsKICAgICBjbGFzcyBSZW1vdmVBdHRyaWJ1dGVBY3Rpb247CiAgICAg
Y2xhc3MgUmVtb3ZlQ2hpbGRBY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySGlzdG9yeS5jcHAKaW5kZXggMmMwODE2ZTgxOTAxOGRiMTRiZGZiODk4MDliNmQxMmM3
ZDU2ZGIzNy4uMDBkNWYxODUyY2ViYTI3MGMzYWY4MWMxMzIwOTAwNWRhN2IxMThhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcApAQCAtMzYsMTIg
KzM2LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVW5kb2FibGVTdGF0ZU1hcmsg
OiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsKLXB1YmxpYzoKLSAgICBVbmRvYWJs
ZVN0YXRlTWFyaygpCi0gICAgICAgIDogQWN0aW9uKCJbVW5kb2FibGVTdGF0ZV0iKQotICAgIHsK
LSAgICB9Ci0KIHByaXZhdGU6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGVyZm9ybSgpIGZpbmFs
IHsgcmV0dXJuIHsgfTsgfQogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHVuZG8oKSBmaW5hbCB7IHJl
dHVybiB7IH07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JIaXN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5o
CmluZGV4IDMxOGZjYTM3NjYxOGNlZWViNmI0MmMxMTgxNmY5MGY4MWE3MTVmZTcuLmIxZTFmYzI0
MTcwOTUwOGVhN2RjYzg1MWEzNTUzNjNmNGNkMTRjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuaApAQCAtNDEsMTMgKzQxLDcgQEAgcHVibGljOgogICAg
IGNsYXNzIEFjdGlvbiB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1
YmxpYzoKLSAgICAgICAgZXhwbGljaXQgQWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICAg
ICAgICAgIDogbV9uYW1lIHsgbmFtZSB9Ci0gICAgICAgIHsKLSAgICAgICAgfQotCiAgICAgICAg
IHZpcnR1YWwgfkFjdGlvbigpID0gZGVmYXVsdDsKLSAgICAgICAgdmlydHVhbCBTdHJpbmcgdG9T
dHJpbmcoKSB7IHJldHVybiBtX25hbWU7IH0KIAogICAgICAgICB2aXJ0dWFsIFN0cmluZyBtZXJn
ZUlkKCkgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgbWVy
Z2Uoc3RkOjp1bmlxdWVfcHRyPEFjdGlvbj4pIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggYWE5MzVhYjEz
ZGIyMDJlYmE0Y2ZjNTIxNDU1MTA3MDNmNWU1NWVjZi4uNWM0MDEzMWI2NjcwMWU2NjAyMjFkNzAw
N2IxOWE2Y2YyZDM3MjM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTEwNCw4ICsxMDQsOCBAQCBzdGF0aWMg
dW5zaWduZWQgY29tcHV0ZVBzZXVkb0NsYXNzTWFzayhjb25zdCBJbnNwZWN0b3JBcnJheSYgcHNl
dWRvQ2xhc3NBcnJheSkKIGNsYXNzIEluc3BlY3RvckNTU0FnZW50OjpTdHlsZVNoZWV0QWN0aW9u
IDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU3R5bGVTaGVldEFjdGlvbik7CiBwdWJsaWM6Ci0gICAgU3R5bGVTaGVldEFjdGlvbihj
b25zdCBTdHJpbmcmIG5hbWUsIEluc3BlY3RvclN0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCi0gICAg
ICAgIDogSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uKG5hbWUpCisgICAgU3R5bGVTaGVldEFjdGlv
bihJbnNwZWN0b3JTdHlsZVNoZWV0KiBzdHlsZVNoZWV0KQorICAgICAgICA6IEluc3BlY3Rvckhp
c3Rvcnk6OkFjdGlvbigpCiAgICAgICAgICwgbV9zdHlsZVNoZWV0KHN0eWxlU2hlZXQpCiAgICAg
ewogICAgIH0KQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudDo6U2V0
U3R5bGVTaGVldFRleHRBY3Rpb24gZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQ1NTQWdlbgogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFNldFN0eWxlU2hlZXRUZXh0QWN0aW9uKTsKIHB1YmxpYzoK
ICAgICBTZXRTdHlsZVNoZWV0VGV4dEFjdGlvbihJbnNwZWN0b3JTdHlsZVNoZWV0KiBzdHlsZVNo
ZWV0LCBjb25zdCBTdHJpbmcmIHRleHQpCi0gICAgICAgIDogSW5zcGVjdG9yQ1NTQWdlbnQ6OlN0
eWxlU2hlZXRBY3Rpb24oQVNDSUlMaXRlcmFsKCJTZXRTdHlsZVNoZWV0VGV4dCIpLCBzdHlsZVNo
ZWV0KQorICAgICAgICA6IEluc3BlY3RvckNTU0FnZW50OjpTdHlsZVNoZWV0QWN0aW9uKHN0eWxl
U2hlZXQpCiAgICAgICAgICwgbV90ZXh0KHRleHQpCiAgICAgewogICAgIH0KQEAgLTE3MCw3ICsx
NzAsNyBAQCBjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudDo6U2V0U3R5bGVUZXh0QWN0aW9uIGZpbmFs
IDogcHVibGljIEluc3BlY3RvckNTU0FnZW50OjpTdAogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFNldFN0eWxlVGV4dEFjdGlvbik7CiBwdWJsaWM6CiAgICAgU2V0U3R5bGVUZXh0QWN0aW9uKElu
c3BlY3RvclN0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IEluc3BlY3RvckNTU0lkJiBjc3NJ
ZCwgY29uc3QgU3RyaW5nJiB0ZXh0KQotICAgICAgICA6IEluc3BlY3RvckNTU0FnZW50OjpTdHls
ZVNoZWV0QWN0aW9uKEFTQ0lJTGl0ZXJhbCgiU2V0U3R5bGVUZXh0IiksIHN0eWxlU2hlZXQpCisg
ICAgICAgIDogSW5zcGVjdG9yQ1NTQWdlbnQ6OlN0eWxlU2hlZXRBY3Rpb24oc3R5bGVTaGVldCkK
ICAgICAgICAgLCBtX2Nzc0lkKGNzc0lkKQogICAgICAgICAsIG1fdGV4dCh0ZXh0KQogICAgIHsK
QEAgLTIxNSw3ICsyMTUsNyBAQCBjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudDo6U2V0UnVsZVNlbGVj
dG9yQWN0aW9uIGZpbmFsIDogcHVibGljIEluc3BlY3RvckNTU0FnZW50OgogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFNldFJ1bGVTZWxlY3RvckFjdGlvbik7CiBwdWJsaWM6CiAgICAgU2V0UnVs
ZVNlbGVjdG9yQWN0aW9uKEluc3BlY3RvclN0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IElu
c3BlY3RvckNTU0lkJiBjc3NJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcikKLSAgICAgICAgOiBJ
bnNwZWN0b3JDU1NBZ2VudDo6U3R5bGVTaGVldEFjdGlvbihBU0NJSUxpdGVyYWwoIlNldFJ1bGVT
ZWxlY3RvciIpLCBzdHlsZVNoZWV0KQorICAgICAgICA6IEluc3BlY3RvckNTU0FnZW50OjpTdHls
ZVNoZWV0QWN0aW9uKHN0eWxlU2hlZXQpCiAgICAgICAgICwgbV9jc3NJZChjc3NJZCkKICAgICAg
ICAgLCBtX3NlbGVjdG9yKHNlbGVjdG9yKQogICAgIHsKQEAgLTI1MCw3ICsyNTAsNyBAQCBjbGFz
cyBJbnNwZWN0b3JDU1NBZ2VudDo6QWRkUnVsZUFjdGlvbiBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0
b3JDU1NBZ2VudDo6U3R5bGVTaAogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFkZFJ1bGVBY3Rp
b24pOwogcHVibGljOgogICAgIEFkZFJ1bGVBY3Rpb24oSW5zcGVjdG9yU3R5bGVTaGVldCogc3R5
bGVTaGVldCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcikKLSAgICAgICAgOiBJbnNwZWN0b3JDU1NB
Z2VudDo6U3R5bGVTaGVldEFjdGlvbihBU0NJSUxpdGVyYWwoIkFkZFJ1bGUiKSwgc3R5bGVTaGVl
dCkKKyAgICAgICAgOiBJbnNwZWN0b3JDU1NBZ2VudDo6U3R5bGVTaGVldEFjdGlvbihzdHlsZVNo
ZWV0KQogICAgICAgICAsIG1fc2VsZWN0b3Ioc2VsZWN0b3IpCiAgICAgewogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5j
cHAKaW5kZXggZjlkN2RiZmVkODY5ZDk3MjJlZGE4ODk2MTFiMGQzYzAyODAwOTE3MS4uMTY3ZmRh
NDM0NGMxMTcwNzM4NTA2ZTg0MTQ5Y2Q0YmNiYTIwNGJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTgwOCw2
ICs4MDgsMjAgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0T3V0ZXJIVE1MKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QKICAgICAgICAgcHVzaENoaWxkTm9k
ZXNUb0Zyb250ZW5kKG5ld0lkKTsKIH0KIAordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aW5zZXJ0
QWRqYWNlbnRIVE1MKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3Qg
U3RyaW5nJiBwb3NpdGlvbiwgY29uc3QgU3RyaW5nJiBodG1sKQoreworICAgIE5vZGUqIG5vZGUg
PSBhc3NlcnRFZGl0YWJsZU5vZGUoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CisgICAgaWYgKCFub2Rl
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpKSB7CisgICAg
ICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDYW4gb25seSBjYWxsIGluc2VydEFkamFj
ZW50SFRNTCBvbiBFbGVtZW50cy4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
ZG9tRWRpdG9yLT5pbnNlcnRBZGphY2VudEhUTUwoZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLCBw
b3NpdGlvbiwgaHRtbCwgZXJyb3JTdHJpbmcpOworfQorCiB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpzZXROb2RlVmFsdWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25z
dCBTdHJpbmcmIHZhbHVlKQogewogICAgIE5vZGUqIG5vZGUgPSBhc3NlcnRFZGl0YWJsZU5vZGUo
ZXJyb3JTdHJpbmcsIG5vZGVJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggZDk0MmVmZjU2MDQ2NzgwMTY0Mjk3M2Ew
MTQ0ZDQyZDAxNTQ1ZDcyZS4uNWZjNTQ0NjAwZDFkZmNhMTk4ODNlMDlkYTcwMmM4OGExZmZiOGI0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuaApAQCAtMTIxLDYgKzEyMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5vZGVO
YW1lKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQqIG5l
d0lkKSBvdmVycmlkZTsKICAgICB2b2lkIGdldE91dGVySFRNTChFcnJvclN0cmluZyYsIGludCBu
b2RlSWQsIFdURjo6U3RyaW5nKiBvdXRlckhUTUwpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0T3V0
ZXJIVE1MKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBvdXRlckhUTUwp
IG92ZXJyaWRlOworICAgIHZvaWQgaW5zZXJ0QWRqYWNlbnRIVE1MKEVycm9yU3RyaW5nJiwgaW50
IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBwb3NpdGlvbiwgY29uc3QgU3RyaW5nJiBodG1sKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNldE5vZGVWYWx1ZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNv
bnN0IFN0cmluZyYgdmFsdWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNG
b3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgV1RGOjpTdHJpbmcqIGNvbnN0
IG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPj4mIGxpc3RlbmVyc0FycmF5KSBvdmVycmlk
ZTsKICAgICB2b2lkIHNldEV2ZW50TGlzdGVuZXJEaXNhYmxlZChFcnJvclN0cmluZyYsIGludCBl
dmVudExpc3RlbmVySWQsIGJvb2wgZGlzYWJsZWQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZS5qcwppbmRleCA5
NGRkMjA4MTlhMjEzZTU4YjdkNWUwZmRjMmRjMGZiYmVhMDhkOTUwLi4xZGU2OWYxNzA1NzE4MTBj
ZmJlODBiYzIxN2RjNDJhZGUxNTM1Y2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZS5qcwpAQCAtNTA1LDE2ICs1MDUsMjAg
QEAgV0kuRE9NTm9kZSA9IGNsYXNzIERPTU5vZGUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAg
aWYgKHRoaXMubm9kZVR5cGUoKSAhPT0gTm9kZS5FTEVNRU5UX05PREUpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNzkyODM+
IFdlYiBJbnNwZWN0b3I6IHN1cHBvcnQgdW5kby9yZWRvIG9mIGluc2VydEFkamFjZW50SFRNTAor
ICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTEuMCk6IERPTS5pbnNlcnRBZGphY2VudEhU
TUwgZGlkIG5vdCBleGlzdC4KKyAgICAgICAgaWYgKCFET01BZ2VudC5pbnNlcnRBZGphY2VudEhU
TUwpIHsKKyAgICAgICAgICAgIFdJLlJlbW90ZU9iamVjdC5yZXNvbHZlTm9kZSh0aGlzKS50aGVu
KChvYmplY3QpID0+IHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBpbnNwZWN0ZWRQYWdlX25v
ZGVfaW5zZXJ0QWRqYWNlbnRIVE1MKHBvc2l0aW9uLCBodG1sKSB7CisgICAgICAgICAgICAgICAg
ICAgIHRoaXMuaW5zZXJ0QWRqYWNlbnRIVE1MKHBvc2l0aW9uLCBodG1sKTsKKyAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgV0kuUmVtb3RlT2JqZWN0LnJlc29sdmVOb2RlKHRoaXMpLnRoZW4o
KG9iamVjdCkgPT4gewotICAgICAgICAgICAgZnVuY3Rpb24gaW5zcGVjdGVkUGFnZV9ub2RlX2lu
c2VydEFkamFjZW50SFRNTChwb3NpdGlvbiwgaHRtbCkgewotICAgICAgICAgICAgICAgIHRoaXMu
aW5zZXJ0QWRqYWNlbnRIVE1MKHBvc2l0aW9uLCBodG1sKTsKLSAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBvYmplY3QuY2FsbEZ1bmN0aW9uKGluc3BlY3RlZFBhZ2Vfbm9kZV9pbnNlcnRB
ZGphY2VudEhUTUwsIFtwb3NpdGlvbiwgaHRtbF0pOworICAgICAgICAgICAgICAgIG9iamVjdC5y
ZWxlYXNlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQogCi0gICAgICAgICAgICBvYmplY3QuY2FsbEZ1bmN0aW9uKGluc3BlY3RlZFBhZ2Vfbm9kZV9p
bnNlcnRBZGphY2VudEhUTUwsIFtwb3NpdGlvbiwgaHRtbF0pOwotICAgICAgICAgICAgb2JqZWN0
LnJlbGVhc2UoKTsKLSAgICAgICAgfSk7CisgICAgICAgIERPTUFnZW50Lmluc2VydEFkamFjZW50
SFRNTCh0aGlzLmlkLCBwb3NpdGlvbiwgaHRtbCwgdGhpcy5fbWFrZVVuZG9hYmxlQ2FsbGJhY2so
KSk7CiAgICAgfQogCiAgICAgcmVtb3ZlTm9kZShjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQu
anMKaW5kZXggY2E3OTkwMThiYzFiNTM1NmEwOWY5OTAwYWE5YTNmZmQ3NDM1NjMzYy4uMmUxZmIz
YWQ3N2I5ZTVkYmJlMGY3ZTA1YTQ2YjMyM2I3NWU0Njg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQu
anMKQEAgLTEwNDQsNyArMTA0NCw3IEBAIFdJLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJl
ZUVsZW1lbnQgZXh0ZW5kcyBXSS5UcmVlRWxlbWVudAogICAgICAgICBjb25maWcuc2V0TXVsdGls
aW5lKHRydWUpOwogICAgICAgICB0aGlzLl9lZGl0aW5nID0gV0kuc3RhcnRFZGl0aW5nKHRoaXMu
X2h0bWxFZGl0RWxlbWVudCwgY29uZmlnKTsKIAotICAgICAgICBpZiAoIWlzTmFOKG9wdGlvbnMu
c3RhcnRQb3NpdGlvbikpIHsKKyAgICAgICAgaWYgKG9wdGlvbnMuaW5pdGlhbFZhbHVlICYmICFp
c05hTihvcHRpb25zLnN0YXJ0UG9zaXRpb24pKSB7CiAgICAgICAgICAgICBsZXQgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOwogICAgICAgICAgICAgcmFuZ2Uuc2V0U3RhcnQodGhpcy5f
aHRtbEVkaXRFbGVtZW50LmZpcnN0Q2hpbGQsIG9wdGlvbnMuc3RhcnRQb3NpdGlvbik7CiAgICAg
ICAgICAgICByYW5nZS5jb2xsYXBzZSh0cnVlKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3YjdjNjM1ZDEwNWExNzE5OTc5
NzI5MDE3OGU3ZmY3YWE3YTM2NDgzLi5hNzNkMGRlMGVlM2M1YWYyZjUwNTE5MjM4OWYwYzhjMzRm
OTFjMmRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMTEtMDkgIERldmluIFJvdXNzbyAg
PHdlYmtpdEBkZXZpbnJvdXNzby5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9y
dCB1bmRvL3JlZG8gb2YgaW5zZXJ0QWRqYWNlbnRIVE1MCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkyODMKKworICAgICAgICBSZXZpZXdlZCBieSBK
b3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2luc2VydEFkamFjZW50
SFRNTC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9kb20vaW5zZXJ0
QWRqYWNlbnRIVE1MLmh0bWw6IEFkZGVkLgorCiAyMDE3LTExLTA5ICBBbGljaWEgQm95YSBHYXJj
w61hICA8YWJveWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBUZXN0IGdhcmRlbmluZwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326486</attachid>
            <date>2017-11-09 14:13:35 -0800</date>
            <delta_ts>2017-11-09 15:12:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179283-20171109141334.patch</filename>
            <type>text/plain</type>
            <size>27698</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDFhNDQ0M2QwODUxMDk3MGExNjllYWMyYWFlNTgx
MGEwMjZiYTNhMTcuLjhhMGYwM2IwZDhhNjg3MTgzZjhjOWNkYWE3YmU5YjAyNzY3NjNlMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTExLTA5ICBEZXZp
biBSb3Vzc28gIDx3ZWJraXRAZGV2aW5yb3Vzc28uY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHN1cHBvcnQgdW5kby9yZWRvIG9mIGluc2VydEFkamFjZW50SFRNTAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MjgzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb3RvY29s
L0RPTS5qc29uOgorICAgICAgICBBZGQgYGluc2VydEFkamFjZW50SFRNTGAgY29tbWFuZCB0aGF0
IGV4ZWN1dGVzIGFuIHVuZG9hYmxlIHZlcnNpb24gb2YgYGluc2VydEFkamFjZW50SFRNTGAKKyAg
ICAgICAgb24gdGhlIGdpdmVuIG5vZGUuCisKIDIwMTctMTEtMDkgIEd1aWxsYXVtZSBFbW9udCAg
PGd1aWplbW9udEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdW01JUFNdIFVzZSBmY3NyIHRv
IGNoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGUgcmVzdWx0IG9mIHRydW5jLncuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDdlOTI4NDFmZmQ0MDk0NTBkNzVkZTdmMTk1NWYyZDM0MTVlYTc1ZDYuLjZkMDYxMDA4N2Yz
ODFkZDY0ZTQ5YTg1ODQwZWZjMGUxNTRhOGI4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBA
QAorMjAxNy0xMS0wOSAgRGV2aW4gUm91c3NvICA8d2Via2l0QGRldmlucm91c3NvLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBzdXBwb3J0IHVuZG8vcmVkbyBvZiBpbnNlcnRBZGphY2Vu
dEhUTUwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
OTI4MworCisgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4KKworICAgICAgICBU
ZXN0OiBpbnNwZWN0b3IvZG9tL2luc2VydEFkamFjZW50SFRNTC5odG1sCisKKyAgICAgICAgQ3Jl
YXRlIGFub3RoZXIgdmVyc2lvbiBvZiBFbGVtZW50OjppbnNlcnRBZGphY2VudEhUTUwgdGhhdCBr
ZWVwcyB0cmFjayBvZiB0aGUgbm9kZXMgdGhhdCBhcmUKKyAgICAgICAgYWRkZWQuIFRoaXMgaXMg
bmVjZXNzYXJ5IGJlY2F1c2UgdGhlIGNoaWxkcmVuIG9mIGEgRG9jdW1lbnRGcmFnbWVudCBhcmUg
cmVtb3ZlZCB3aGVuIGl0IGlzCisgICAgICAgIGFkZGVkIHRvIGEgQ29udGFpbmVyTm9kZS4gSW4g
dGhpcyB3YXksIGl0IGlzIHBvc3NpYmxlIHRvIHJlbW92ZSB0aG9zZSBub2RlcyBkdXJpbmcgYW4g
dW5kby4KKworICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW5zZXJ0QWRqYWNlbnRIVE1MKToKKwor
ICAgICAgICAqIGluc3BlY3Rvci9ET01FZGl0b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9N
RWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6aW5zZXJ0QWRqYWNlbnRI
VE1MKToKKyAgICAgICAgRHJpdmUtYnkgZml4OiBzb3J0IGZ1bmN0aW9ucyBhbmQgY2xhc3MgZGVj
bGFyYXRpb25zLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omluc2VydEFkamFjZW50SFRNTCk6
CisKIDIwMTctMTEtMDggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBVlNhbXBsZUJ1ZmZlckdlbmVyYXRvciBsZWFrcyBzZWVuIG9uIGxlYWtzIGJvdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggMDNmM2Q5ZGU0MDUwMjI3YWQ2MzM4NzkxNjgwMTE1
NzZkZWQwOTYxMC4uOGMwOTNmZmNjMDM0ZDE0YzY4ZGMzYzk2OWQyMjIxZmY2NDk5N2JhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMTEtMDkgIERldmlu
IFJvdXNzbyAgPHdlYmtpdEBkZXZpbnJvdXNzby5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogc3VwcG9ydCB1bmRvL3JlZG8gb2YgaW5zZXJ0QWRqYWNlbnRIVE1MCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkyODMKKworICAgICAgICBSZXZp
ZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVs
cy9ET01Ob2RlLmpzOgorICAgICAgICAoV0kuRE9NTm9kZS5wcm90b3R5cGUuaW5zZXJ0QWRqYWNl
bnRIVE1MKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQu
anM6CisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuX3N0YXJ0RWRpdGluZ0Fz
SFRNTCk6CisgICAgICAgIERyaXZlLWJ5OiBvbmx5IGF0dGVtcHQgdG8gdXBkYXRlIHRoZSBjdXJz
b3IgaWYgYW4gaW5pdGlhbFZhbHVlIGlzIHN1cHBsaWVkLgorCiAyMDE3LTExLTA5ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
KHIyMjQ1NjYpOiBbR1RLXVtXUEVdIE1hbnkgaW5zcGVjdG9yIHRlc3RzIGFyZSBmYWlsaW5nIGFm
dGVyIHIyMjQ1NjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cHJvdG9jb2wvRE9NLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3Rv
Y29sL0RPTS5qc29uCmluZGV4IDAzOGYzMDkwYjk3YzQ0NmUzYzk1OTlkNjE4YTc5YzM1YTkwNmJi
NzYuLjkwMWIyMTNkYTlkZjlkZjQ1OGZlMDFkMjEzMzFhY2EwYTM3ZmVmN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbgpAQCAtMzAy
LDYgKzMwMiwxNCBAQAogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CisgICAg
ICAgICAgICAibmFtZSI6ICJpbnNlcnRBZGphY2VudEhUTUwiLAorICAgICAgICAgICAgInBhcmFt
ZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJO
b2RlSWQiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwb3NpdGlvbiIsICJ0eXBlIjog
InN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImh0bWwiLCAidHlwZSI6ICJz
dHJpbmciIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgewogICAgICAgICAg
ICAgIm5hbWUiOiAicGVyZm9ybVNlYXJjaCIsCiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
U2VhcmNoZXMgZm9yIGEgZ2l2ZW4gc3RyaW5nIGluIHRoZSBET00gdHJlZS4gVXNlIDxjb2RlPmdl
dFNlYXJjaFJlc3VsdHM8L2NvZGU+IHRvIGFjY2VzcyBzZWFyY2ggcmVzdWx0cyBvciA8Y29kZT5j
YW5jZWxTZWFyY2g8L2NvZGU+IHRvIGVuZCB0aGlzIHNlYXJjaCBzZXNzaW9uLiIsCiAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA5MDRjZmIwNWJl
ZjcwMGU2MmY4M2UyYWVmYzBiMTViYjQ2NTRlYmNkLi5hNzFkODhlOWJmOTkzNDc0OGViZDFhYTQ3
ZjAzMDA1Yjg3ZDYzMjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zNjQxLDcgKzM2NDEs
NyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEVsZW1lbnQ+PiBjb250ZXh0RWxlbWVudEZvcklu
c2VydGlvbihjb25zdCBTdHJpbmcmIHdoZXJlLAogfQogCiAvLyBodHRwczovL3czYy5naXRodWIu
aW8vRE9NLVBhcnNpbmcvI2RvbS1lbGVtZW50LWluc2VydGFkamFjZW50aHRtbAotRXhjZXB0aW9u
T3I8dm9pZD4gRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnRIVE1MKGNvbnN0IFN0cmluZyYgd2hlcmUs
IGNvbnN0IFN0cmluZyYgbWFya3VwKQorRXhjZXB0aW9uT3I8dm9pZD4gRWxlbWVudDo6aW5zZXJ0
QWRqYWNlbnRIVE1MKGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYgbWFya3VwLCBz
dGQ6Om9wdGlvbmFsPE5vZGVWZWN0b3ImPiBhZGRlZE5vZGVzKQogewogICAgIC8vIFN0ZXBzIDEg
YW5kIDIuCiAgICAgYXV0byBjb250ZXh0RWxlbWVudCA9IGNvbnRleHRFbGVtZW50Rm9ySW5zZXJ0
aW9uKHdoZXJlLCAqdGhpcyk7CkBAIC0zNjUxLDYgKzM2NTEsMTMgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnRIVE1MKGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0
IFN0cmluZyYKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVy
SFRNTChjb250ZXh0RWxlbWVudC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgbWFya3VwLCBBbGxvd1Nj
cmlwdGluZ0NvbnRlbnQpOwogICAgIGlmIChmcmFnbWVudC5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIGZyYWdtZW50LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIGlmIChVTkxJS0VM
WShhZGRlZE5vZGVzKSkgeworICAgICAgICAvLyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgaW5zZXJ0
QWRqYWNlbnQsIGFzIG90aGVyd2lzZSB0aGUgY2hpbGRyZW4gb2YgZnJhZ21lbnQgd2lsbCBiZSBt
b3ZlZAorICAgICAgICAvLyB0byB0aGVpciBuZXcgcGFyZW50IGFuZCB3aWxsIGJlIGhhcmRlciB0
byBrZWVwIHRyYWNrIG9mLgorICAgICAgICAqYWRkZWROb2RlcyA9IGNvbGxlY3RDaGlsZE5vZGVz
KGZyYWdtZW50LnJldHVyblZhbHVlKCkpOworICAgIH0KKwogICAgIC8vIFN0ZXAgNC4KICAgICBh
dXRvIHJlc3VsdCA9IGluc2VydEFkamFjZW50KHdoZXJlLCBmcmFnbWVudC5yZWxlYXNlUmV0dXJu
VmFsdWUoKSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTM2NTgsNiArMzY2
NSwxMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBFbGVtZW50OjppbnNlcnRBZGphY2VudEhUTUwoY29u
c3QgU3RyaW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiB7IH07CiB9CiAKK0V4
Y2VwdGlvbk9yPHZvaWQ+IEVsZW1lbnQ6Omluc2VydEFkamFjZW50SFRNTChjb25zdCBTdHJpbmcm
IHdoZXJlLCBjb25zdCBTdHJpbmcmIG1hcmt1cCkKK3sKKyAgICByZXR1cm4gaW5zZXJ0QWRqYWNl
bnRIVE1MKHdoZXJlLCBtYXJrdXAsIHN0ZDo6bnVsbG9wdCk7Cit9CisKIEV4Y2VwdGlvbk9yPHZv
aWQ+IEVsZW1lbnQ6Omluc2VydEFkamFjZW50VGV4dChjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25z
dCBTdHJpbmcmIHRleHQpCiB7CiAgICAgYXV0byByZXN1bHQgPSBpbnNlcnRBZGphY2VudCh3aGVy
ZSwgZG9jdW1lbnQoKS5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRl
eCA1M2E1MWNjNjQzYzc3YmUwMWNhMmE2YTgxMjYzNTUyYzI2ODc2MzdiLi4zZjRjZjRkYjYwMWFk
YTVjMTNjZTY5YTE4NTg1YWQxZDA2MDVlNjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTMxMiw2
ICszMTIsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUYWJJbmRleChp
bnQpOwogICAgIHZpcnR1YWwgUmVmUHRyPEVsZW1lbnQ+IGZvY3VzRGVsZWdhdGUoKTsKIAorICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IGluc2VydEFkamFjZW50SFRNTChjb25zdCBTdHJpbmcmIHdoZXJl
LCBjb25zdCBTdHJpbmcmIGh0bWwsIHN0ZDo6b3B0aW9uYWw8Tm9kZVZlY3RvciY+IGFkZGVkTm9k
ZXMpOworCiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8RWxlbWVudCo+IGluc2VydEFk
amFjZW50RWxlbWVudChjb25zdCBTdHJpbmcmIHdoZXJlLCBFbGVtZW50JiBuZXdDaGlsZCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gaW5zZXJ0QWRqYWNlbnRIVE1MKGNv
bnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYgaHRtbCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgRXhjZXB0aW9uT3I8dm9pZD4gaW5zZXJ0QWRqYWNlbnRUZXh0KGNvbnN0IFN0cmluZyYgd2hl
cmUsIGNvbnN0IFN0cmluZyYgdGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3Iu
Y3BwCmluZGV4IGRmYmU0YzNmNTRiYmMxZmUzYTQzM2MxMzQ4ZWQzMjZjNDRlYzcwOGUuLjM0OTNi
MDE3Y2EwNmI5ZjI5NzYyMzI3ZmEzMTM1M2RiOGY5NTg2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9ET01FZGl0b3IuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIERPTUVkaXRvcjo6UmVt
b3ZlQ2hpbGRBY3Rpb24gZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdmVDaGlsZEFjdGlvbik7CiBwdWJsaWM6CiAg
ICAgUmVtb3ZlQ2hpbGRBY3Rpb24oTm9kZSYgcGFyZW50Tm9kZSwgTm9kZSYgbm9kZSkKLSAgICAg
ICAgOiBBY3Rpb24oIlJlbW92ZUNoaWxkIikKKyAgICAgICAgOiBJbnNwZWN0b3JIaXN0b3J5OjpB
Y3Rpb24oKQogICAgICAgICAsIG1fcGFyZW50Tm9kZShwYXJlbnROb2RlKQogICAgICAgICAsIG1f
bm9kZShub2RlKQogICAgIHsKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKIGNsYXNzIERPTUVk
aXRvcjo6SW5zZXJ0QmVmb3JlQWN0aW9uIGZpbmFsIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6
OkFjdGlvbiB7CiBwdWJsaWM6CiAgICAgSW5zZXJ0QmVmb3JlQWN0aW9uKE5vZGUmIHBhcmVudE5v
ZGUsIFJlZjxOb2RlPiYmIG5vZGUsIE5vZGUqIGFuY2hvck5vZGUpCi0gICAgICAgIDogQWN0aW9u
KCJJbnNlcnRCZWZvcmUiKQorICAgICAgICA6IEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbigpCiAg
ICAgICAgICwgbV9wYXJlbnROb2RlKHBhcmVudE5vZGUpCiAgICAgICAgICwgbV9ub2RlKFdURk1v
dmUobm9kZSkpCiAgICAgICAgICwgbV9hbmNob3JOb2RlKGFuY2hvck5vZGUpCkBAIC0xMjcsNyAr
MTI3LDcgQEAgY2xhc3MgRE9NRWRpdG9yOjpSZW1vdmVBdHRyaWJ1dGVBY3Rpb24gZmluYWwgOiBw
dWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShSZW1vdmVBdHRyaWJ1dGVBY3Rpb24pOwogcHVibGljOgogICAgIFJlbW92ZUF0dHJpYnV0ZUFj
dGlvbihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgICAgIDogQWN0
aW9uKCJSZW1vdmVBdHRyaWJ1dGUiKQorICAgICAgICA6IEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlv
bigpCiAgICAgICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCiAgICAgICAgICwgbV9uYW1lKG5hbWUp
CiAgICAgewpAQCAtMTYwLDcgKzE2MCw3IEBAIGNsYXNzIERPTUVkaXRvcjo6U2V0QXR0cmlidXRl
QWN0aW9uIGZpbmFsIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoU2V0QXR0cmlidXRlQWN0aW9uKTsKIHB1YmxpYzoKICAgICBTZXRB
dHRyaWJ1dGVBY3Rpb24oRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQotICAgICAgICA6IEFjdGlvbigiU2V0QXR0cmli
dXRlIikKKyAgICAgICAgOiBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24oKQogICAgICAgICAsIG1f
ZWxlbWVudChlbGVtZW50KQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgICAgICAsIG1fdmFs
dWUodmFsdWUpCkBAIC0xOTcsNyArMTk3LDcgQEAgcHJpdmF0ZToKIGNsYXNzIERPTUVkaXRvcjo6
U2V0T3V0ZXJIVE1MQWN0aW9uIGZpbmFsIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlv
biB7CiBwdWJsaWM6CiAgICAgU2V0T3V0ZXJIVE1MQWN0aW9uKE5vZGUmIG5vZGUsIGNvbnN0IFN0
cmluZyYgaHRtbCkKLSAgICAgICAgOiBBY3Rpb24oIlNldE91dGVySFRNTCIpCisgICAgICAgIDog
SW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uKCkKICAgICAgICAgLCBtX25vZGUobm9kZSkKICAgICAg
ICAgLCBtX25leHRTaWJsaW5nKG5vZGUubmV4dFNpYmxpbmcoKSkKICAgICAgICAgLCBtX2h0bWwo
aHRtbCkKQEAgLTIzOSwxMSArMjM5LDUwIEBAIHByaXZhdGU6CiAgICAgRE9NRWRpdG9yIG1fZG9t
RWRpdG9yIHsgbV9oaXN0b3J5IH07CiB9OwogCitjbGFzcyBET01FZGl0b3I6Okluc2VydEFkamFj
ZW50SFRNTEFjdGlvbiBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc2VydEFkamFjZW50SFRNTEFjdGlvbik7CitwdWJs
aWM6CisgICAgSW5zZXJ0QWRqYWNlbnRIVE1MQWN0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IFN0cmluZyYgcG9zaXRpb24sIGNvbnN0IFN0cmluZyYgaHRtbCkKKyAgICAgICAgOiBJbnNwZWN0
b3JIaXN0b3J5OjpBY3Rpb24oKQorICAgICAgICAsIG1fZWxlbWVudChlbGVtZW50KQorICAgICAg
ICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCisgICAgICAgICwgbV9odG1sKGh0bWwpCisgICAgewor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBwZXJmb3JtKCkgZmluYWwK
KyAgICB7CisgICAgICAgIHJldHVybiByZWRvKCk7CisgICAgfQorCisgICAgRXhjZXB0aW9uT3I8
dm9pZD4gdW5kbygpIGZpbmFsCisgICAgeworICAgICAgICBmb3IgKGF1dG8mIGFkZGVkTm9kZSA6
IG1fYWRkZWROb2RlcykKKyAgICAgICAgICAgIGFkZGVkTm9kZS0+cmVtb3ZlKCk7CisgICAgICAg
IG1fYWRkZWROb2Rlcy5jbGVhcigpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHJlZG8oKSBmaW5hbAorICAgIHsKKyAgICAgICAgYXV0byByZXN1
bHQgPSBtX2VsZW1lbnQtPmluc2VydEFkamFjZW50SFRNTChtX3Bvc2l0aW9uLCBtX2h0bWwsIG1f
YWRkZWROb2Rlcyk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICB9CisKKyAgICBSZWY8RWxlbWVudD4gbV9lbGVtZW50OworICAgIE5vZGVWZWN0b3Ig
bV9hZGRlZE5vZGVzOworICAgIFN0cmluZyBtX3Bvc2l0aW9uOworICAgIFN0cmluZyBtX2h0bWw7
Cit9OworCiBjbGFzcyBET01FZGl0b3I6OlJlcGxhY2VXaG9sZVRleHRBY3Rpb24gZmluYWwgOiBw
dWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShSZXBsYWNlV2hvbGVUZXh0QWN0aW9uKTsKIHB1YmxpYzoKICAgICBSZXBsYWNlV2hvbGVUZXh0
QWN0aW9uKFRleHQmIHRleHROb2RlLCBjb25zdCBTdHJpbmcmIHRleHQpCi0gICAgICAgIDogQWN0
aW9uKCJSZXBsYWNlV2hvbGVUZXh0IikKKyAgICAgICAgOiBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rp
b24oKQogICAgICAgICAsIG1fdGV4dE5vZGUodGV4dE5vZGUpCiAgICAgICAgICwgbV90ZXh0KHRl
eHQpCiAgICAgewpAQCAtMjc3LDcgKzMxNiw3IEBAIGNsYXNzIERPTUVkaXRvcjo6UmVwbGFjZUNo
aWxkTm9kZUFjdGlvbiBmaW5hbDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVwbGFjZUNoaWxkTm9kZUFjdGlvbik7CiBwdWJsaWM6
CiAgICAgUmVwbGFjZUNoaWxkTm9kZUFjdGlvbihOb2RlJiBwYXJlbnROb2RlLCBSZWY8Tm9kZT4m
JiBuZXdOb2RlLCBOb2RlJiBvbGROb2RlKQotICAgICAgICA6IEFjdGlvbigiUmVwbGFjZUNoaWxk
Tm9kZSIpCisgICAgICAgIDogSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uKCkKICAgICAgICAgLCBt
X3BhcmVudE5vZGUocGFyZW50Tm9kZSkKICAgICAgICAgLCBtX25ld05vZGUoV1RGTW92ZShuZXdO
b2RlKSkKICAgICAgICAgLCBtX29sZE5vZGUob2xkTm9kZSkKQEAgLTMwOSw3ICszNDgsNyBAQCBj
bGFzcyBET01FZGl0b3I6OlNldE5vZGVWYWx1ZUFjdGlvbiBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0
b3JIaXN0b3J5OjpBY3Rpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNldE5vZGVWYWx1
ZUFjdGlvbik7CiBwdWJsaWM6CiAgICAgU2V0Tm9kZVZhbHVlQWN0aW9uKE5vZGUmIG5vZGUsIGNv
bnN0IFN0cmluZyYgdmFsdWUpCi0gICAgICAgIDogQWN0aW9uKCJTZXROb2RlVmFsdWUiKQorICAg
ICAgICA6IEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbigpCiAgICAgICAgICwgbV9ub2RlKG5vZGUp
CiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CkBAIC0zNzQsNiArNDEzLDExIEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6c2V0T3V0ZXJIVE1MKE5vZGUmIG5vZGUsIGNvbnN0
IFN0cmluZyYgaHRtbCwgTm9kZSomCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorRXhjZXB0aW9u
T3I8dm9pZD4gRE9NRWRpdG9yOjppbnNlcnRBZGphY2VudEhUTUwoRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgU3RyaW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJiBodG1sKQoreworICAgIHJldHVybiBt
X2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPEluc2VydEFkamFjZW50SFRNTEFjdGlv
bj4oZWxlbWVudCwgd2hlcmUsIGh0bWwpKTsKK30KKwogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRp
dG9yOjpyZXBsYWNlV2hvbGVUZXh0KFRleHQmIHRleHROb2RlLCBjb25zdCBTdHJpbmcmIHRleHQp
CiB7CiAgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFj
ZVdob2xlVGV4dEFjdGlvbj4odGV4dE5vZGUsIHRleHQpKTsKQEAgLTQyMiw2ICs0NjYsMTEgQEAg
Ym9vbCBET01FZGl0b3I6OnNldE91dGVySFRNTChOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIGh0
bWwsIE5vZGUqJiBuZXdOb2RlLCBFcnIKICAgICByZXR1cm4gcG9wdWxhdGVFcnJvclN0cmluZyhz
ZXRPdXRlckhUTUwobm9kZSwgaHRtbCwgbmV3Tm9kZSksIGVycm9yU3RyaW5nKTsKIH0KIAorYm9v
bCBET01FZGl0b3I6Omluc2VydEFkamFjZW50SFRNTChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBT
dHJpbmcmIHdoZXJlLCBjb25zdCBTdHJpbmcmIGh0bWwsIEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZykKK3sKKyAgICByZXR1cm4gcG9wdWxhdGVFcnJvclN0cmluZyhpbnNlcnRBZGphY2VudEhUTUwo
ZWxlbWVudCwgd2hlcmUsIGh0bWwpLCBlcnJvclN0cmluZyk7Cit9CisKIGJvb2wgRE9NRWRpdG9y
OjpyZXBsYWNlV2hvbGVUZXh0KFRleHQmIHRleHROb2RlLCBjb25zdCBTdHJpbmcmIHRleHQsIEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHsKICAgICByZXR1cm4gcG9wdWxhdGVFcnJvclN0cmlu
ZyhyZXBsYWNlV2hvbGVUZXh0KHRleHROb2RlLCB0ZXh0KSwgZXJyb3JTdHJpbmcpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0RPTUVkaXRvci5oCmluZGV4IGU5NWE5MzY4NzljMmM0YTUxMjMxZjgzMGQ4
Zjk0ZTkyZWU3YmYzYjYuLjg3YWI5NDNlYzEyNjNlMTE5YmMxZTI2MDlmMDhiYTg5MDEyZWIwMWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmgKQEAgLTU1LDYgKzU1LDcgQEAgcHVi
bGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VXaG9sZVRleHQoVGV4dCYsIGNvbnN0
IFN0cmluZyYgdGV4dCk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVwbGFjZUNoaWxkKE5vZGUm
IHBhcmVudE5vZGUsIFJlZjxOb2RlPiYmIG5ld05vZGUsIE5vZGUmIG9sZE5vZGUpOwogICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHNldE5vZGVWYWx1ZShOb2RlJiBwYXJlbnROb2RlLCBjb25zdCBTdHJp
bmcmIHZhbHVlKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbnNlcnRBZGphY2VudEhUTUwoRWxl
bWVudCYsIGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYgaHRtbCk7CiAKICAgICBi
b29sIGluc2VydEJlZm9yZShOb2RlJiBwYXJlbnROb2RlLCBSZWY8Tm9kZT4mJiwgTm9kZSogYW5j
aG9yTm9kZSwgRXJyb3JTdHJpbmcmKTsKICAgICBib29sIHJlbW92ZUNoaWxkKE5vZGUmIHBhcmVu
dE5vZGUsIE5vZGUmLCBFcnJvclN0cmluZyYpOwpAQCAtNjIsOSArNjMsMTEgQEAgcHVibGljOgog
ICAgIGJvb2wgcmVtb3ZlQXR0cmlidXRlKEVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEVy
cm9yU3RyaW5nJik7CiAgICAgYm9vbCBzZXRPdXRlckhUTUwoTm9kZSYsIGNvbnN0IFN0cmluZyYg
aHRtbCwgTm9kZSomIG5ld05vZGUsIEVycm9yU3RyaW5nJik7CiAgICAgYm9vbCByZXBsYWNlV2hv
bGVUZXh0KFRleHQmLCBjb25zdCBTdHJpbmcmIHRleHQsIEVycm9yU3RyaW5nJik7CisgICAgYm9v
bCBpbnNlcnRBZGphY2VudEhUTUwoRWxlbWVudCYsIGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0
IFN0cmluZyYgaHRtbCwgRXJyb3JTdHJpbmcmKTsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBET01B
Y3Rpb247CisgICAgY2xhc3MgSW5zZXJ0QWRqYWNlbnRIVE1MQWN0aW9uOwogICAgIGNsYXNzIElu
c2VydEJlZm9yZUFjdGlvbjsKICAgICBjbGFzcyBSZW1vdmVBdHRyaWJ1dGVBY3Rpb247CiAgICAg
Y2xhc3MgUmVtb3ZlQ2hpbGRBY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySGlzdG9yeS5jcHAKaW5kZXggMmMwODE2ZTgxOTAxOGRiMTRiZGZiODk4MDliNmQxMmM3
ZDU2ZGIzNy4uMDBkNWYxODUyY2ViYTI3MGMzYWY4MWMxMzIwOTAwNWRhN2IxMThhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcApAQCAtMzYsMTIg
KzM2LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVW5kb2FibGVTdGF0ZU1hcmsg
OiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsKLXB1YmxpYzoKLSAgICBVbmRvYWJs
ZVN0YXRlTWFyaygpCi0gICAgICAgIDogQWN0aW9uKCJbVW5kb2FibGVTdGF0ZV0iKQotICAgIHsK
LSAgICB9Ci0KIHByaXZhdGU6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGVyZm9ybSgpIGZpbmFs
IHsgcmV0dXJuIHsgfTsgfQogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHVuZG8oKSBmaW5hbCB7IHJl
dHVybiB7IH07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JIaXN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5o
CmluZGV4IDMxOGZjYTM3NjYxOGNlZWViNmI0MmMxMTgxNmY5MGY4MWE3MTVmZTcuLmIxZTFmYzI0
MTcwOTUwOGVhN2RjYzg1MWEzNTUzNjNmNGNkMTRjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuaApAQCAtNDEsMTMgKzQxLDcgQEAgcHVibGljOgogICAg
IGNsYXNzIEFjdGlvbiB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1
YmxpYzoKLSAgICAgICAgZXhwbGljaXQgQWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICAg
ICAgICAgIDogbV9uYW1lIHsgbmFtZSB9Ci0gICAgICAgIHsKLSAgICAgICAgfQotCiAgICAgICAg
IHZpcnR1YWwgfkFjdGlvbigpID0gZGVmYXVsdDsKLSAgICAgICAgdmlydHVhbCBTdHJpbmcgdG9T
dHJpbmcoKSB7IHJldHVybiBtX25hbWU7IH0KIAogICAgICAgICB2aXJ0dWFsIFN0cmluZyBtZXJn
ZUlkKCkgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgbWVy
Z2Uoc3RkOjp1bmlxdWVfcHRyPEFjdGlvbj4pIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggYWE5MzVhYjEz
ZGIyMDJlYmE0Y2ZjNTIxNDU1MTA3MDNmNWU1NWVjZi4uNWM0MDEzMWI2NjcwMWU2NjAyMjFkNzAw
N2IxOWE2Y2YyZDM3MjM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTEwNCw4ICsxMDQsOCBAQCBzdGF0aWMg
dW5zaWduZWQgY29tcHV0ZVBzZXVkb0NsYXNzTWFzayhjb25zdCBJbnNwZWN0b3JBcnJheSYgcHNl
dWRvQ2xhc3NBcnJheSkKIGNsYXNzIEluc3BlY3RvckNTU0FnZW50OjpTdHlsZVNoZWV0QWN0aW9u
IDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU3R5bGVTaGVldEFjdGlvbik7CiBwdWJsaWM6Ci0gICAgU3R5bGVTaGVldEFjdGlvbihj
b25zdCBTdHJpbmcmIG5hbWUsIEluc3BlY3RvclN0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCi0gICAg
ICAgIDogSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uKG5hbWUpCisgICAgU3R5bGVTaGVldEFjdGlv
bihJbnNwZWN0b3JTdHlsZVNoZWV0KiBzdHlsZVNoZWV0KQorICAgICAgICA6IEluc3BlY3Rvckhp
c3Rvcnk6OkFjdGlvbigpCiAgICAgICAgICwgbV9zdHlsZVNoZWV0KHN0eWxlU2hlZXQpCiAgICAg
ewogICAgIH0KQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudDo6U2V0
U3R5bGVTaGVldFRleHRBY3Rpb24gZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQ1NTQWdlbgogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFNldFN0eWxlU2hlZXRUZXh0QWN0aW9uKTsKIHB1YmxpYzoK
ICAgICBTZXRTdHlsZVNoZWV0VGV4dEFjdGlvbihJbnNwZWN0b3JTdHlsZVNoZWV0KiBzdHlsZVNo
ZWV0LCBjb25zdCBTdHJpbmcmIHRleHQpCi0gICAgICAgIDogSW5zcGVjdG9yQ1NTQWdlbnQ6OlN0
eWxlU2hlZXRBY3Rpb24oQVNDSUlMaXRlcmFsKCJTZXRTdHlsZVNoZWV0VGV4dCIpLCBzdHlsZVNo
ZWV0KQorICAgICAgICA6IEluc3BlY3RvckNTU0FnZW50OjpTdHlsZVNoZWV0QWN0aW9uKHN0eWxl
U2hlZXQpCiAgICAgICAgICwgbV90ZXh0KHRleHQpCiAgICAgewogICAgIH0KQEAgLTE3MCw3ICsx
NzAsNyBAQCBjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudDo6U2V0U3R5bGVUZXh0QWN0aW9uIGZpbmFs
IDogcHVibGljIEluc3BlY3RvckNTU0FnZW50OjpTdAogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFNldFN0eWxlVGV4dEFjdGlvbik7CiBwdWJsaWM6CiAgICAgU2V0U3R5bGVUZXh0QWN0aW9uKElu
c3BlY3RvclN0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IEluc3BlY3RvckNTU0lkJiBjc3NJ
ZCwgY29uc3QgU3RyaW5nJiB0ZXh0KQotICAgICAgICA6IEluc3BlY3RvckNTU0FnZW50OjpTdHls
ZVNoZWV0QWN0aW9uKEFTQ0lJTGl0ZXJhbCgiU2V0U3R5bGVUZXh0IiksIHN0eWxlU2hlZXQpCisg
ICAgICAgIDogSW5zcGVjdG9yQ1NTQWdlbnQ6OlN0eWxlU2hlZXRBY3Rpb24oc3R5bGVTaGVldCkK
ICAgICAgICAgLCBtX2Nzc0lkKGNzc0lkKQogICAgICAgICAsIG1fdGV4dCh0ZXh0KQogICAgIHsK
QEAgLTIxNSw3ICsyMTUsNyBAQCBjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudDo6U2V0UnVsZVNlbGVj
dG9yQWN0aW9uIGZpbmFsIDogcHVibGljIEluc3BlY3RvckNTU0FnZW50OgogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFNldFJ1bGVTZWxlY3RvckFjdGlvbik7CiBwdWJsaWM6CiAgICAgU2V0UnVs
ZVNlbGVjdG9yQWN0aW9uKEluc3BlY3RvclN0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IElu
c3BlY3RvckNTU0lkJiBjc3NJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcikKLSAgICAgICAgOiBJ
bnNwZWN0b3JDU1NBZ2VudDo6U3R5bGVTaGVldEFjdGlvbihBU0NJSUxpdGVyYWwoIlNldFJ1bGVT
ZWxlY3RvciIpLCBzdHlsZVNoZWV0KQorICAgICAgICA6IEluc3BlY3RvckNTU0FnZW50OjpTdHls
ZVNoZWV0QWN0aW9uKHN0eWxlU2hlZXQpCiAgICAgICAgICwgbV9jc3NJZChjc3NJZCkKICAgICAg
ICAgLCBtX3NlbGVjdG9yKHNlbGVjdG9yKQogICAgIHsKQEAgLTI1MCw3ICsyNTAsNyBAQCBjbGFz
cyBJbnNwZWN0b3JDU1NBZ2VudDo6QWRkUnVsZUFjdGlvbiBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0
b3JDU1NBZ2VudDo6U3R5bGVTaAogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFkZFJ1bGVBY3Rp
b24pOwogcHVibGljOgogICAgIEFkZFJ1bGVBY3Rpb24oSW5zcGVjdG9yU3R5bGVTaGVldCogc3R5
bGVTaGVldCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcikKLSAgICAgICAgOiBJbnNwZWN0b3JDU1NB
Z2VudDo6U3R5bGVTaGVldEFjdGlvbihBU0NJSUxpdGVyYWwoIkFkZFJ1bGUiKSwgc3R5bGVTaGVl
dCkKKyAgICAgICAgOiBJbnNwZWN0b3JDU1NBZ2VudDo6U3R5bGVTaGVldEFjdGlvbihzdHlsZVNo
ZWV0KQogICAgICAgICAsIG1fc2VsZWN0b3Ioc2VsZWN0b3IpCiAgICAgewogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5j
cHAKaW5kZXggZjlkN2RiZmVkODY5ZDk3MjJlZGE4ODk2MTFiMGQzYzAyODAwOTE3MS4uMTY3ZmRh
NDM0NGMxMTcwNzM4NTA2ZTg0MTQ5Y2Q0YmNiYTIwNGJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTgwOCw2
ICs4MDgsMjAgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0T3V0ZXJIVE1MKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QKICAgICAgICAgcHVzaENoaWxkTm9k
ZXNUb0Zyb250ZW5kKG5ld0lkKTsKIH0KIAordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aW5zZXJ0
QWRqYWNlbnRIVE1MKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3Qg
U3RyaW5nJiBwb3NpdGlvbiwgY29uc3QgU3RyaW5nJiBodG1sKQoreworICAgIE5vZGUqIG5vZGUg
PSBhc3NlcnRFZGl0YWJsZU5vZGUoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CisgICAgaWYgKCFub2Rl
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpKSB7CisgICAg
ICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJDYW4gb25seSBjYWxsIGluc2VydEFkamFj
ZW50SFRNTCBvbiBFbGVtZW50cy4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
ZG9tRWRpdG9yLT5pbnNlcnRBZGphY2VudEhUTUwoZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLCBw
b3NpdGlvbiwgaHRtbCwgZXJyb3JTdHJpbmcpOworfQorCiB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpzZXROb2RlVmFsdWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25z
dCBTdHJpbmcmIHZhbHVlKQogewogICAgIE5vZGUqIG5vZGUgPSBhc3NlcnRFZGl0YWJsZU5vZGUo
ZXJyb3JTdHJpbmcsIG5vZGVJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggZDk0MmVmZjU2MDQ2NzgwMTY0Mjk3M2Ew
MTQ0ZDQyZDAxNTQ1ZDcyZS4uNWZjNTQ0NjAwZDFkZmNhMTk4ODNlMDlkYTcwMmM4OGExZmZiOGI0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuaApAQCAtMTIxLDYgKzEyMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5vZGVO
YW1lKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQqIG5l
d0lkKSBvdmVycmlkZTsKICAgICB2b2lkIGdldE91dGVySFRNTChFcnJvclN0cmluZyYsIGludCBu
b2RlSWQsIFdURjo6U3RyaW5nKiBvdXRlckhUTUwpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0T3V0
ZXJIVE1MKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBvdXRlckhUTUwp
IG92ZXJyaWRlOworICAgIHZvaWQgaW5zZXJ0QWRqYWNlbnRIVE1MKEVycm9yU3RyaW5nJiwgaW50
IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBwb3NpdGlvbiwgY29uc3QgU3RyaW5nJiBodG1sKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNldE5vZGVWYWx1ZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNv
bnN0IFN0cmluZyYgdmFsdWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNG
b3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgV1RGOjpTdHJpbmcqIGNvbnN0
IG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPj4mIGxpc3RlbmVyc0FycmF5KSBvdmVycmlk
ZTsKICAgICB2b2lkIHNldEV2ZW50TGlzdGVuZXJEaXNhYmxlZChFcnJvclN0cmluZyYsIGludCBl
dmVudExpc3RlbmVySWQsIGJvb2wgZGlzYWJsZWQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZS5qcwppbmRleCA5
NGRkMjA4MTlhMjEzZTU4YjdkNWUwZmRjMmRjMGZiYmVhMDhkOTUwLi4xZGU2OWYxNzA1NzE4MTBj
ZmJlODBiYzIxN2RjNDJhZGUxNTM1Y2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZS5qcwpAQCAtNTA1LDE2ICs1MDUsMjAg
QEAgV0kuRE9NTm9kZSA9IGNsYXNzIERPTU5vZGUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAg
aWYgKHRoaXMubm9kZVR5cGUoKSAhPT0gTm9kZS5FTEVNRU5UX05PREUpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNzkyODM+
IFdlYiBJbnNwZWN0b3I6IHN1cHBvcnQgdW5kby9yZWRvIG9mIGluc2VydEFkamFjZW50SFRNTAor
ICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTEuMCk6IERPTS5pbnNlcnRBZGphY2VudEhU
TUwgZGlkIG5vdCBleGlzdC4KKyAgICAgICAgaWYgKCFET01BZ2VudC5pbnNlcnRBZGphY2VudEhU
TUwpIHsKKyAgICAgICAgICAgIFdJLlJlbW90ZU9iamVjdC5yZXNvbHZlTm9kZSh0aGlzKS50aGVu
KChvYmplY3QpID0+IHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBpbnNwZWN0ZWRQYWdlX25v
ZGVfaW5zZXJ0QWRqYWNlbnRIVE1MKHBvc2l0aW9uLCBodG1sKSB7CisgICAgICAgICAgICAgICAg
ICAgIHRoaXMuaW5zZXJ0QWRqYWNlbnRIVE1MKHBvc2l0aW9uLCBodG1sKTsKKyAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgV0kuUmVtb3RlT2JqZWN0LnJlc29sdmVOb2RlKHRoaXMpLnRoZW4o
KG9iamVjdCkgPT4gewotICAgICAgICAgICAgZnVuY3Rpb24gaW5zcGVjdGVkUGFnZV9ub2RlX2lu
c2VydEFkamFjZW50SFRNTChwb3NpdGlvbiwgaHRtbCkgewotICAgICAgICAgICAgICAgIHRoaXMu
aW5zZXJ0QWRqYWNlbnRIVE1MKHBvc2l0aW9uLCBodG1sKTsKLSAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBvYmplY3QuY2FsbEZ1bmN0aW9uKGluc3BlY3RlZFBhZ2Vfbm9kZV9pbnNlcnRB
ZGphY2VudEhUTUwsIFtwb3NpdGlvbiwgaHRtbF0pOworICAgICAgICAgICAgICAgIG9iamVjdC5y
ZWxlYXNlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQogCi0gICAgICAgICAgICBvYmplY3QuY2FsbEZ1bmN0aW9uKGluc3BlY3RlZFBhZ2Vfbm9kZV9p
bnNlcnRBZGphY2VudEhUTUwsIFtwb3NpdGlvbiwgaHRtbF0pOwotICAgICAgICAgICAgb2JqZWN0
LnJlbGVhc2UoKTsKLSAgICAgICAgfSk7CisgICAgICAgIERPTUFnZW50Lmluc2VydEFkamFjZW50
SFRNTCh0aGlzLmlkLCBwb3NpdGlvbiwgaHRtbCwgdGhpcy5fbWFrZVVuZG9hYmxlQ2FsbGJhY2so
KSk7CiAgICAgfQogCiAgICAgcmVtb3ZlTm9kZShjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQu
anMKaW5kZXggY2E3OTkwMThiYzFiNTM1NmEwOWY5OTAwYWE5YTNmZmQ3NDM1NjMzYy4uMmUxZmIz
YWQ3N2I5ZTVkYmJlMGY3ZTA1YTQ2YjMyM2I3NWU0Njg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQu
anMKQEAgLTEwNDQsNyArMTA0NCw3IEBAIFdJLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJl
ZUVsZW1lbnQgZXh0ZW5kcyBXSS5UcmVlRWxlbWVudAogICAgICAgICBjb25maWcuc2V0TXVsdGls
aW5lKHRydWUpOwogICAgICAgICB0aGlzLl9lZGl0aW5nID0gV0kuc3RhcnRFZGl0aW5nKHRoaXMu
X2h0bWxFZGl0RWxlbWVudCwgY29uZmlnKTsKIAotICAgICAgICBpZiAoIWlzTmFOKG9wdGlvbnMu
c3RhcnRQb3NpdGlvbikpIHsKKyAgICAgICAgaWYgKG9wdGlvbnMuaW5pdGlhbFZhbHVlICYmICFp
c05hTihvcHRpb25zLnN0YXJ0UG9zaXRpb24pKSB7CiAgICAgICAgICAgICBsZXQgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOwogICAgICAgICAgICAgcmFuZ2Uuc2V0U3RhcnQodGhpcy5f
aHRtbEVkaXRFbGVtZW50LmZpcnN0Q2hpbGQsIG9wdGlvbnMuc3RhcnRQb3NpdGlvbik7CiAgICAg
ICAgICAgICByYW5nZS5jb2xsYXBzZSh0cnVlKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3YjdjNjM1ZDEwNWExNzE5OTc5
NzI5MDE3OGU3ZmY3YWE3YTM2NDgzLi5hNzNkMGRlMGVlM2M1YWYyZjUwNTE5MjM4OWYwYzhjMzRm
OTFjMmRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMTEtMDkgIERldmluIFJvdXNzbyAg
PHdlYmtpdEBkZXZpbnJvdXNzby5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9y
dCB1bmRvL3JlZG8gb2YgaW5zZXJ0QWRqYWNlbnRIVE1MCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkyODMKKworICAgICAgICBSZXZpZXdlZCBieSBK
b3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2luc2VydEFkamFjZW50
SFRNTC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9kb20vaW5zZXJ0
QWRqYWNlbnRIVE1MLmh0bWw6IEFkZGVkLgorCiAyMDE3LTExLTA5ICBBbGljaWEgQm95YSBHYXJj
w61hICA8YWJveWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBUZXN0IGdhcmRlbmluZwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9pbnNlcnRBZGphY2VudEhUTUwt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9pbnNlcnRBZGphY2VudEhU
TUwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmYTRjYTM0MDViMGZhYzk0ODMxYjE2ZDAyMDgx
MzRkMTZjODdmMTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9t
L2luc2VydEFkamFjZW50SFRNTC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMiBAQAorVGVzdCBm
b3IgRE9NLmluc2VydEFkamFjZW50SFRNTC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IERP
TS5pbnNlcnRBZGphY2VudEhUTUwKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET00uaW5zZXJ0QWRq
YWNlbnRIVE1MLmJlZm9yZWJlZ2luCitQQVNTOiBUaGUgZ2l2ZW4gSFRNTCBzaG91bGQgaGF2ZSBi
ZWVuIGFkZGVkIHRvIHRoZSBET00gdHJlZS4KK1BBU1M6IFRoZSBnaXZlbiBIVE1MIHNob3VsZCBo
YXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBET00gdHJlZS4KK1BBU1M6IFRoZSBnaXZlbiBIVE1M
IHNob3VsZCBoYXZlIGJlZW4gYWRkZWQgYmFjayB0byB0aGUgRE9NIHRyZWUuCisKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBET00uaW5zZXJ0QWRqYWNlbnRIVE1MLmFmdGVyYmVnaW4KK1BBU1M6IFRo
ZSBnaXZlbiBIVE1MIHNob3VsZCBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIERPTSB0cmVlLgorUEFT
UzogVGhlIGdpdmVuIEhUTUwgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIERPTSB0
cmVlLgorUEFTUzogVGhlIGdpdmVuIEhUTUwgc2hvdWxkIGhhdmUgYmVlbiBhZGRlZCBiYWNrIHRv
IHRoZSBET00gdHJlZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTS5pbnNlcnRBZGphY2Vu
dEhUTUwuYmVmb3JlZW5kCitQQVNTOiBUaGUgZ2l2ZW4gSFRNTCBzaG91bGQgaGF2ZSBiZWVuIGFk
ZGVkIHRvIHRoZSBET00gdHJlZS4KK1BBU1M6IFRoZSBnaXZlbiBIVE1MIHNob3VsZCBoYXZlIGJl
ZW4gcmVtb3ZlZCBmcm9tIHRoZSBET00gdHJlZS4KK1BBU1M6IFRoZSBnaXZlbiBIVE1MIHNob3Vs
ZCBoYXZlIGJlZW4gYWRkZWQgYmFjayB0byB0aGUgRE9NIHRyZWUuCisKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBET00uaW5zZXJ0QWRqYWNlbnRIVE1MLmFmdGVyZW5kCitQQVNTOiBUaGUgZ2l2ZW4g
SFRNTCBzaG91bGQgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBET00gdHJlZS4KK1BBU1M6IFRoZSBn
aXZlbiBIVE1MIHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBET00gdHJlZS4KK1BB
U1M6IFRoZSBnaXZlbiBIVE1MIHNob3VsZCBoYXZlIGJlZW4gYWRkZWQgYmFjayB0byB0aGUgRE9N
IHRyZWUuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET00uaW5zZXJ0QWRqYWNlbnRIVE1MLklu
dmFsaWROb2RlSWQKK1BBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGVycm9yLgorUEFTUzogRXJyb3I6
IENvdWxkIG5vdCBmaW5kIG5vZGUgd2l0aCBnaXZlbiBpZAorCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogRE9NLmluc2VydEFkamFjZW50SFRNTC5JbnZhbGlkUG9zaXRpb24KK1BBU1M6IFNob3VsZCBw
cm9kdWNlIGFuIGVycm9yLgorUEFTUzogRXJyb3I6IFN5bnRheEVycm9yCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vaW5zZXJ0QWRqYWNlbnRIVE1MLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZG9tL2luc2VydEFkamFjZW50SFRNTC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY0YjY0OGM2MzQ3NzY4NDNiMWY4ODY3MTUxMmQ5ZGEwNTlmZGY3YmQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2luc2VydEFkamFjZW50SFRNTC5odG1sCkBA
IC0wLDAgKzEsODcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBkb21O
b2RlOworCisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJE
T00uaW5zZXJ0QWRqYWNlbnRIVE1MIik7CisKKyAgICBjb25zdCBwb3NpdGlvbnMgPSBbCisgICAg
ICAgICJiZWZvcmViZWdpbiIsCisgICAgICAgICJhZnRlcmJlZ2luIiwKKyAgICAgICAgImJlZm9y
ZWVuZCIsCisgICAgICAgICJhZnRlcmVuZCIsCisgICAgXTsKKworICAgIGZvciAobGV0IHBvc2l0
aW9uIG9mIHBvc2l0aW9ucykgeworICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAg
ICAgICBuYW1lOiBgRE9NLmluc2VydEFkamFjZW50SFRNTC4ke3Bvc2l0aW9ufWAsCisgICAgICAg
ICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgICAgIGxldCBodG1sID0gYDxkaXYgaWQ9
IiR7cG9zaXRpb259Ij48L2Rpdj5gOworICAgICAgICAgICAgICAgIGF3YWl0IERPTUFnZW50Lmlu
c2VydEFkamFjZW50SFRNTChkb21Ob2RlLmlkLCBwb3NpdGlvbiwgaHRtbCk7CisKKyAgICAgICAg
ICAgICAgICBsZXQgaW5zZXJ0QWRqYWNlbnRIVE1MUmVzdWx0ID0gYXdhaXQgRE9NQWdlbnQuZ2V0
T3V0ZXJIVE1MKGRvbU5vZGUucGFyZW50Tm9kZS5pZCk7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RUaGF0KGluc2VydEFkamFjZW50SFRNTFJlc3VsdC5vdXRlckhUTUwuaW5j
bHVkZXMoaHRtbCksICJUaGUgZ2l2ZW4gSFRNTCBzaG91bGQgaGF2ZSBiZWVuIGFkZGVkIHRvIHRo
ZSBET00gdHJlZS4iKQorCisgICAgICAgICAgICAgICAgYXdhaXQgRE9NQWdlbnQudW5kbygpOwor
CisgICAgICAgICAgICAgICAgbGV0IHVuZG9SZXN1bHQgPSBhd2FpdCBET01BZ2VudC5nZXRPdXRl
ckhUTUwoZG9tTm9kZS5wYXJlbnROb2RlLmlkKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdFRoYXQoIXVuZG9SZXN1bHQub3V0ZXJIVE1MLmluY2x1ZGVzKGh0bWwpLCAiVGhl
IGdpdmVuIEhUTUwgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIERPTSB0cmVlLiIp
CisKKyAgICAgICAgICAgICAgICBhd2FpdCBET01BZ2VudC5yZWRvKCk7CisKKyAgICAgICAgICAg
ICAgICBsZXQgcmVkb1Jlc3VsdCA9IGF3YWl0IERPTUFnZW50LmdldE91dGVySFRNTChkb21Ob2Rl
LnBhcmVudE5vZGUuaWQpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhh
dChyZWRvUmVzdWx0Lm91dGVySFRNTC5pbmNsdWRlcyhodG1sKSwgIlRoZSBnaXZlbiBIVE1MIHNo
b3VsZCBoYXZlIGJlZW4gYWRkZWQgYmFjayB0byB0aGUgRE9NIHRyZWUuIikKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAg
ICBuYW1lOiAiRE9NLmluc2VydEFkamFjZW50SFRNTC5JbnZhbGlkTm9kZUlkIiwKKyAgICAgICAg
YXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgY29uc3Qg
bm9kZUlkID0gOTk5OTk5OTsKKyAgICAgICAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9ICJhZnRl
cmJlZ2luIjsKKyAgICAgICAgICAgICAgICBjb25zdCBodG1sID0gIiI7CisgICAgICAgICAgICAg
ICAgYXdhaXQgRE9NQWdlbnQuaW5zZXJ0QWRqYWNlbnRIVE1MKG5vZGVJZCwgcG9zaXRpb24sIGh0
bWwpOworICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXJyb3IsICJTaG91bGQgcHJvZHVjZSBhbiBlcnJvci4iKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoIkVycm9yOiAiICsgZXJyb3IubWVz
c2FnZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFk
ZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRPTS5pbnNlcnRBZGphY2VudEhUTUwuSW52YWxp
ZFBvc2l0aW9uIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSAiSU5WQUxJRF9QT1NJVElPTiI7CisgICAg
ICAgICAgICAgICAgY29uc3QgaHRtbCA9ICIiOworICAgICAgICAgICAgICAgIGF3YWl0IERPTUFn
ZW50Lmluc2VydEFkamFjZW50SFRNTChkb21Ob2RlLmlkLCBwb3NpdGlvbiwgaHRtbCk7CisgICAg
ICAgICAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0VGhhdChlcnJvciwgIlNob3VsZCBwcm9kdWNlIGFuIGVycm9yLiIpOworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QucGFzcygiRXJyb3I6ICIgKyBlcnJvci5tZXNzYWdlKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOworCisgICAgV0kuZG9tVHJlZU1hbmFnZXIu
cmVxdWVzdERvY3VtZW50KChkb2N1bWVudE5vZGUpID0+IHsKKyAgICAgICAgV0kuZG9tVHJlZU1h
bmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIjcmVmZXJlbmNlIiwgKG5vZGVJ
ZCkgPT4geworICAgICAgICAgICAgZG9tTm9kZSA9IFdJLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJ
ZChub2RlSWQpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoZG9tTm9kZSwgYE5v
ZGUgd2l0aCBpZCAicmVmZXJlbmNlIiBzaG91bGQgZXhpc3QuYCk7CisKKyAgICAgICAgICAgIHN1
aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxwPlRlc3Qg
Zm9yIERPTS5pbnNlcnRBZGphY2VudEhUTUwuPC9wPgorCisgICAgPGRpdiBpZD0iY29udGFpbmVy
Ij48ZGl2IGlkPSJyZWZlcmVuY2UiPjwvZGl2PjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>