<?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>148148</bug_id>
          
          <creation_ts>2015-08-18 15:53:50 -0700</creation_ts>
          <short_desc>Function.prototype.toString is incorrect for ArrowFunction</short_desc>
          <delta_ts>2015-08-25 14:00:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>140855</blocked>
    
    <blocked>148445</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1118669</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-18 15:53:50 -0700</bug_when>
    <thetext>It should be possible to define an arrow function, call toString on it, and evaluate the result without a parse error.

TEST CASE:

1    let a = () =&gt; {};
2    a.toString(); // returns function () =&gt; {}


Evaluating line 2&apos;s result will cause a parse error.

(Relevant spec: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-function.prototype.tostring)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118878</commentid>
    <comment_count>1</comment_count>
      <attachid>259368</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-19 00:53:51 -0700</bug_when>
    <thetext>Created attachment 259368
Patch

Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118887</commentid>
    <comment_count>2</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-19 01:50:52 -0700</bug_when>
    <thetext>I&apos;ve uploaded small patch to fix this issue, but exists one more open issue 
https://bugs.webkit.org/show_bug.cgi?id=146507 that is related to toString method. I&apos;ll fix later</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118901</commentid>
    <comment_count>3</comment_count>
      <attachid>259368</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-19 08:20:58 -0700</bug_when>
    <thetext>Comment on attachment 259368
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        [ES6] Arrow function syntax. Arrow function specific features. Implement correct toString method

This bug title doesn&apos;t match the one in the link.

&gt; Source/JavaScriptCore/ChangeLog:6
&gt; +        Added correct support of toString() method for arrow function

Nit: trailing period.

&gt; Source/JavaScriptCore/tests/stress/arrowfunction-tostring.js:8
&gt; +var af2 = (a) =&gt; {a + 1};

This test is missing several syntax cases.

&gt; LayoutTests/ChangeLog:6
&gt; +        Added test of toString() method

Nit: trailing period.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119012</commentid>
    <comment_count>4</comment_count>
      <attachid>259403</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-19 14:05:27 -0700</bug_when>
    <thetext>Created attachment 259403
Patch

Fix review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119020</commentid>
    <comment_count>5</comment_count>
      <attachid>259404</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-19 14:24:44 -0700</bug_when>
    <thetext>Created attachment 259404
Patch

Fix review comments &amp; reupload</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119023</commentid>
    <comment_count>6</comment_count>
      <attachid>259368</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-19 14:26:55 -0700</bug_when>
    <thetext>Comment on attachment 259368
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:3
&gt;&gt; +        [ES6] Arrow function syntax. Arrow function specific features. Implement correct toString method
&gt; 
&gt; This bug title doesn&apos;t match the one in the link.

Done

&gt;&gt; Source/JavaScriptCore/tests/stress/arrowfunction-tostring.js:8
&gt;&gt; +var af2 = (a) =&gt; {a + 1};
&gt; 
&gt; This test is missing several syntax cases.

I&apos;ve added more tests, but I had to fix some issue in parser, so we need to review it as well</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120545</commentid>
    <comment_count>7</comment_count>
      <attachid>259404</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-25 00:18:34 -0700</bug_when>
    <thetext>Comment on attachment 259404
Patch

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

r=me
Please reupload with fixed Nit and added test cases for arrow function body expressions that don&apos;t end in &quot;;&quot; and I will r+/cq+

&gt; Source/JavaScriptCore/parser/ASTBuilder.h:375
&gt; +        SourceCode source = m_sourceCode-&gt;subExpression(functionInfo.startOffset, functionInfo.body-&gt;isArrowFunctionBodyExpression() ? functionInfo.endOffset -1 : functionInfo.endOffset, functionInfo.startLine, functionInfo.bodyStartColumn);

Nit: space between &quot;-&quot; and &quot;1&quot;

&gt; Source/JavaScriptCore/parser/ASTBuilder.h:376
&gt;          ArrowFuncExprNode* result = new (m_parserArena) ArrowFuncExprNode(location, *functionInfo.name, functionInfo.body, source);

The - 1 worries me. 
Does this work:
function foo(x) { print(x.toString() }
foo((y)=&gt;y)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120553</commentid>
    <comment_count>8</comment_count>
      <attachid>259831</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-25 02:04:15 -0700</bug_when>
    <thetext>Created attachment 259831
Patch

Fix review comments &amp; reupload</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120556</commentid>
    <comment_count>9</comment_count>
      <attachid>259833</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-25 02:43:16 -0700</bug_when>
    <thetext>Created attachment 259833
Patch

Add one more test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120571</commentid>
    <comment_count>10</comment_count>
      <attachid>259404</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-08-25 04:46:51 -0700</bug_when>
    <thetext>Comment on attachment 259404
Patch

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

&gt;&gt; Source/JavaScriptCore/parser/ASTBuilder.h:375
&gt;&gt; +        SourceCode source = m_sourceCode-&gt;subExpression(functionInfo.startOffset, functionInfo.body-&gt;isArrowFunctionBodyExpression() ? functionInfo.endOffset -1 : functionInfo.endOffset, functionInfo.startLine, functionInfo.bodyStartColumn);
&gt; 
&gt; Nit: space between &quot;-&quot; and &quot;1&quot;

Done

&gt;&gt; Source/JavaScriptCore/parser/ASTBuilder.h:376
&gt;&gt;          ArrowFuncExprNode* result = new (m_parserArena) ArrowFuncExprNode(location, *functionInfo.name, functionInfo.body, source);
&gt; 
&gt; The - 1 worries me. 
&gt; Does this work:
&gt; function foo(x) { print(x.toString() }
&gt; foo((y)=&gt;y)

I&apos;ve added more tests, check in LayoutTests/js/script-tests/arrowfunction-tostring.js is it enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120660</commentid>
    <comment_count>11</comment_count>
      <attachid>259833</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-25 11:24:52 -0700</bug_when>
    <thetext>Comment on attachment 259833
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120677</commentid>
    <comment_count>12</comment_count>
      <attachid>259833</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-25 12:10:44 -0700</bug_when>
    <thetext>Comment on attachment 259833
Patch

Clearing flags on attachment: 259833

Committed r188928: &lt;http://trac.webkit.org/changeset/188928&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120678</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-25 12:10:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259368</attachid>
            <date>2015-08-19 00:53:51 -0700</date>
            <delta_ts>2015-08-19 14:05:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148148-20150819105347.patch</filename>
            <type>text/plain</type>
            <size>5247</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
NTZhNzFjOTU4YTEwZGE5ZDQxNmQ3Y2IxYzhlODM2ODRkYTc0NDhkLi4zOTg3MjQ0ZGMzMDgzOTE3
YWE1MTI4YzQyNmE3MGM4MTAzYmM0ZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNS0wOC0xOSBBbGVrc2FuZHIgU2thY2hrb3YgICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93IGZ1
bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBJbXBsZW1lbnQgY29ycmVjdCB0b1N0cmluZyBtZXRo
b2QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODE0
OAorCisgICAgICAgIEFkZGVkIGNvcnJlY3Qgc3VwcG9ydCBvZiB0b1N0cmluZygpIG1ldGhvZCBm
b3IgYXJyb3cgZnVuY3Rpb24KKworICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAg
KiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi10b3N0cmluZy5qczogQWRkZWQuCisgICAgICAg
ICh0ZXN0Q2FzZSk6CisKIDIwMTUtMDgtMTggQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtv
dkBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0gQXJyb3cgZnVuY3Rpb24gc3ludGF4LiBBcnJv
dyBmdW5jdGlvbiBzcGVjaWZpYyBmZWF0dXJlcy4gTGV4aWNhbCBiaW5kICJhcmd1bWVudHMiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHAKaW5kZXggZDA4MmIxMmNmNWJiMzA4MzgzNDg0N2JiMDY0OWYwZDM4NTIwNTA4OC4uNmIzYTA5
NDI2NjM4NzFjOTZlZTJmNGY3ZmY4NWMyYjNjMzY2NjY3NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtODgsMTAgKzg4
LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0
cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1l
KGV4ZWMpLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSk7CiAKICAgICAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpOworICAg
ICAgICAKKyAgICAgICAgU3RyaW5nIGZ1bmN0aW9uSGVhZGVyID0gZXhlY3V0YWJsZS0+aXNBcnJv
d0Z1bmN0aW9uKCkgPyAiIiA6ICJmdW5jdGlvbiAiOworICAgICAgICAKICAgICAgICAgU3RyaW5n
IHNvdXJjZSA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdlKAogICAg
ICAgICAgICAgZXhlY3V0YWJsZS0+cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCksCiAgICAgICAgICAg
ICBleGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkgKyAxKTsgLy8gVHlwZSBwcm9m
aWxpbmcgZW5kIG9mZnNldCBpcyB0aGUgY2hhcmFjdGVyIGJlZm9yZSB0aGUgJ30nLgotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgImZ1
bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpLCBzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsIGZ1bmN0aW9uSGVh
ZGVyLCBmdW5jdGlvbi0+bmFtZShleGVjKSwgc291cmNlKSk7CiAgICAgfQogCiAgICAgaWYgKHRo
aXNWYWx1ZS5pbmhlcml0cyhJbnRlcm5hbEZ1bmN0aW9uOjppbmZvKCkpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdG9zdHJp
bmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
dG9zdHJpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWJiMzVmYjE5YTE4YTExODZiN2MxZmMyNjMyNzBkMDE1
ZGQxYjZiZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi10b3N0cmluZy5qcwpAQCAtMCwwICsxLDE2IEBACit2YXIgdGVz
dENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkgeworICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiAr
IGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgIH0KK307CisKK3Zh
ciBhZjEgPSAoKSA9PiB7fTsKK3ZhciBhZjIgPSAoYSkgPT4ge2EgKyAxfTsKKworbm9JbmxpbmUo
YWYxKTsKK25vSW5saW5lKGFmMik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkg
eworICB0ZXN0Q2FzZShhZjEudG9TdHJpbmcoKSwgJygpID0+IHt9JywgIkVycm9yOiBOb3QgY29y
cmVjdCB0b1N0cmluZyBpbiBhcnJvdyBmdW5jdGlvbiAjMSIpOworICB0ZXN0Q2FzZShhZjIudG9T
dHJpbmcoKSwgJyhhKSA9PiB7YSArIDF9JywgIkVycm9yOiBOb3QgY29ycmVjdCB0b1N0cmluZyBp
biBhcnJvdyBmdW5jdGlvbiAjMiIpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIyNDdhMTAwMWViODgxZDU3MjNjODJi
OTkzOTg2NGNlZDEwNDJiNjEuLjUyYWY3MzRkNDRhYmY3ZGQwODg2M2JiMGRkNzg5MGQ4NDEwNGNl
ZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wOC0xOSAgU2thY2hrb3YgT2xla3NhbmRy
ICA8Z3NrYWNoa292QGdtYWlsLmNvbT4KKworICAgICAgICBGdW5jdGlvbi5wcm90b3R5cGUudG9T
dHJpbmcgaXMgaW5jb3JyZWN0IGZvciBBcnJvd0Z1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgxNDgKKworICAgICAgICBBZGRlZCB0ZXN0
IG9mIHRvU3RyaW5nKCkgbWV0aG9kCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLW90aGVycy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzOgorCiAyMDE1
LTA4LTE4ICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgogCiAgICAg
ICAgIFtFUzZdIEFycm93IGZ1bmN0aW9uIHN5bnRheC4gQXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMg
ZmVhdHVyZXMuIExleGljYWwgYmluZCAiYXJndW1lbnRzIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvYXJyb3dmdW5jdGlvbi1vdGhlcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMv
YXJyb3dmdW5jdGlvbi1vdGhlcnMtZXhwZWN0ZWQudHh0CmluZGV4IDE5MTUyZTVlMzdjNjkxNWYz
ODIzZTI5YjIwYTk0ZGY1M2QwOGMwMDEuLmIwMzQ1Y2I5YjlmYjQ3NTgyNWMwZDY2ZmI4NTk2Njg3
MjJmNGU2YmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tb3RoZXJz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLW90aGVycy1l
eHBlY3RlZC50eHQKQEAgLTYsNiArNiw4IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiBQQVNT
IE9iamVjdC5nZXRQcm90b3R5cGVPZihzaW1wbGVBcnJvd0Z1bmN0aW9uKSBpcyBGdW5jdGlvbi5w
cm90b3R5cGUKIFBBU1Mgc2ltcGxlQXJyb3dGdW5jdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uIGlz
IHRydWUKIFBBU1Mgc2ltcGxlQXJyb3dGdW5jdGlvbi5jb25zdHJ1Y3RvciA9PSBGdW5jdGlvbiBp
cyB0cnVlCitQQVNTIHNpbXBsZUFycm93RnVuY3Rpb24udG9TdHJpbmcoKSBpcyAnKCkgPT4ge30n
CitQQVNTICgoeCkgPT4geyB4ICsgMSB9KS50b1N0cmluZygpIGlzICcoeCkgPT4geyB4ICsgMSB9
JwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhlcnMu
anMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1vdGhlcnMuanMK
aW5kZXggYTc5OTMxYzNkZWJjYjUwMjdhZDE0ZmQxNTQ3ZTVhYmEwMzhiNGIxMS4uZjVhOTEyYjAz
ZjVkM2Y2M2Q0MTRmZWI1MDk3ZjJiYTk5NTk4NDA0MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tb3RoZXJzLmpzCisrKyBiL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLW90aGVycy5qcwpAQCAtNiw1ICs2LDcgQEAg
dmFyIHNpbXBsZUFycm93RnVuY3Rpb24gPSAoKSA9PiB7fTsKIHNob3VsZEJlKCJPYmplY3QuZ2V0
UHJvdG90eXBlT2Yoc2ltcGxlQXJyb3dGdW5jdGlvbikiLCAiRnVuY3Rpb24ucHJvdG90eXBlIik7
CiBzaG91bGRCZSgic2ltcGxlQXJyb3dGdW5jdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uIiwgInRy
dWUiKTsKIHNob3VsZEJlKCJzaW1wbGVBcnJvd0Z1bmN0aW9uLmNvbnN0cnVjdG9yID09IEZ1bmN0
aW9uIiwgInRydWUiKTsKK3Nob3VsZEJlKCJzaW1wbGVBcnJvd0Z1bmN0aW9uLnRvU3RyaW5nKCki
LCAiJygpID0+IHt9JyIpOworc2hvdWxkQmUoIigoeCkgPT4geyB4ICsgMSB9KS50b1N0cmluZygp
IiwgIicoeCkgPT4geyB4ICsgMSB9JyIpOwogCiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259403</attachid>
            <date>2015-08-19 14:05:27 -0700</date>
            <delta_ts>2015-08-19 14:24:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148148-20150820000523.patch</filename>
            <type>text/plain</type>
            <size>16648</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MTc5NGZlMzkwYjFmNGRlMDM5NGQwYzZlNDZmNmRiMDA5ZjNhYTQ5Li5iMzdmNzdmYzg0ZDA1ZTdm
ZTM1YzZiYTk0NTNhNjZkNjdjNjkyM2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxNS0wOC0xOSBBbGVrc2FuZHIgU2thY2hrb3YgICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgaXMgaW5jb3Jy
ZWN0IGZvciBBcnJvd0Z1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDgxNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKyAgICAgICAgCisgICAgICAgIEFkZGVkIGNvcnJlY3Qgc3VwcG9ydCBvZiB0b1N0cmluZygp
IG1ldGhvZCBmb3IgYXJyb3cgZnVuY3Rpb24KKworICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVy
Lmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcik6CisgICAg
ICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25NZXRhZGF0YU5v
ZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAg
ICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAg
ICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZnVu
Y3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tdG9zdHJpbmcuanM6IEFkZGVkLgorCiAyMDE1LTA4LTE4IEFsZWtzYW5kciBTa2FjaGtv
diAgIDxnc2thY2hrb3ZAZ21haWwuY29tPgogCiAgICAgICAgIFtFUzZdIEFycm93IGZ1bmN0aW9u
IHN5bnRheC4gQXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZXMuIExleGljYWwgYmluZCAi
YXJndW1lbnRzIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRl
eCBiN2U0ZDY0MWI0NDEzNzE1MjUzZjliZDZhMDdkZmJjYWFjYTZhM2Q3Li5mNTljNTBiMjMzZTI5
OGY0ZjNhMjg3NjY2YTM3OGQ3MDVhY2ExMWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0FTVEJ1aWxkZXIuaApAQCAtMzYxLDE5ICszNjEsMTkgQEAgcHVibGljOgogICAgICAgICBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgZW5kTG9jYXRpb24sIAogICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQg
ZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICBpbnQgZnVuY3Rp
b25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCAK
LSAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1l
dGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbikKKyAg
ICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVy
Q291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcg
KG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAgICAgbV9wYXJz
ZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBlbmRDb2x1
bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0
LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1
Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24pOworICAgICAg
ICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBt
b2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAg
ICB9CiAKICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1
aWxkZXI+JiBmdW5jdGlvbkluZm8pCiAgICAgewogICAgICAgICB1c2VzVGhpcygpOwogICAgICAg
ICB1c2VzQXJndW1lbnRzKCk7Ci0gICAgICAgIFNvdXJjZUNvZGUgc291cmNlID0gbV9zb3VyY2VD
b2RlLT5zdWJFeHByZXNzaW9uKGZ1bmN0aW9uSW5mby5zdGFydE9mZnNldCwgZnVuY3Rpb25JbmZv
LmVuZE9mZnNldCwgZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLmJvZHlTdGFy
dENvbHVtbik7CisgICAgICAgIFNvdXJjZUNvZGUgc291cmNlID0gbV9zb3VyY2VDb2RlLT5zdWJF
eHByZXNzaW9uKGZ1bmN0aW9uSW5mby5zdGFydE9mZnNldCwgZnVuY3Rpb25JbmZvLmJvZHktPmlz
QXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKCkgPyBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0IC0x
IDogZnVuY3Rpb25JbmZvLmVuZE9mZnNldCwgZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rp
b25JbmZvLmJvZHlTdGFydENvbHVtbik7CiAgICAgICAgIEFycm93RnVuY0V4cHJOb2RlKiByZXN1
bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEFycm93RnVuY0V4cHJOb2RlKGxvY2F0aW9uLCAqZnVu
Y3Rpb25JbmZvLm5hbWUsIGZ1bmN0aW9uSW5mby5ib2R5LCBzb3VyY2UpOwogICAgICAgICBmdW5j
dGlvbkluZm8uYm9keS0+c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5m
by5lbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0
KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5jcHAKaW5kZXggMThmODQ1NTMzMDVjNGEwYzIxYzczMzg4MzljMjlmMjNjNzRkZTkyOC4uZWEz
NzYzOTNiNjQ2N2I1YWQ2M2U2MzJjOWY2ZDNkOTM5MzM4Y2U1MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBGdW5jdGlvbk1ldGFkYXRh
Tm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
ZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAog
ICAgIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQg
cGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICBDb25zdHJ1Y3Rv
cktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFy
c2VNb2RlIG1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQorICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUg
bW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24pCiAgICAgICAgIDogTm9kZShlbmRMb2NhdGlvbikKICAgICAgICAgLCBtX3N0YXJ0Q29s
dW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKQEAgLTE2
NCw2ICsxNjQsNyBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUo
CiAgICAgICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkKICAgICAg
ICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JL
aW5kKSkKICAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCisgICAg
ICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbikKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5oCmluZGV4IGVkNWZjMjcyNTM0YTI0NjQyZmQ2MmFlYjFhMWRmOTNlNjhjYWNjMjMu
LjQwODA2NGZmMGQzYzdjZWM2NmJjN2UzYTdiODNjMTBkOGY3ZTcyZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE4MTAsNyArMTgxMCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFy
dENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAog
ICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBi
b29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5z
aWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24pOworICAgICAgICAg
ICAgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJy
b3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAKICAgICAg
ICAgdm9pZCBmaW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVy
JiwgRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgCkBAIC0xODM3LDYgKzE4MzcsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNJblN0cmljdENvbnRleHQ7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1
Y3RvcktpbmQpOyB9CiAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KKyAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b247IH0KIAogICAgICAgICB2b2lkIHNldExvYyh1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVk
IGxhc3RMaW5lLCBpbnQgc3RhcnRPZmZzZXQsIGludCBsaW5lU3RhcnRPZmZzZXQpCiAgICAgICAg
IHsKQEAgLTE4NjMsNiArMTg2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25l
ZCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsKICAgICAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rv
cktpbmQgOiAyOwogICAgICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAg
ICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiAxOwogICAgIH07
CiAKICAgICBjbGFzcyBGdW5jdGlvbk5vZGUgZmluYWwgOiBwdWJsaWMgU2NvcGVOb2RlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAzMjZiZmQyOTViZDU2MjQ1
OTkxMGVhZTg0MmU4YjA4YzE0YjJlY2E3Li44YTkzNjE1N2IzZjY5NjBiNjNiYTgxZWI0Nzc2ODg2
ZmEwMzQ1OThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0x
NTQ3LDExICsxNTQ3LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0
aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvCiAgICAgQ29uc3RydWN0
b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwgdW5zaWdu
ZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgYm9v
bCBpc0Fycm93RnVuY3Rpb24gPSBGdW5jdGlvbkJvZHlUeXBlOjpTdGFuZGFyZEZ1bmN0aW9uQm9k
eUJsb2NrICE9IGJvZHlUeXBlOwotICAgIGlmIChib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9u
Qm9keUJsb2NrIHx8IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5QmxvY2spIHsKKyAgICBi
b29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gYm9keVR5cGUgPT0gQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uOworICAgIGlmICghaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24pIHsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpIHsK
ICAgICAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24s
IHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwg
Y29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rp
b24pOworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShz
dGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1
bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBz
dHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwg
aXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTE1NjMsNyArMTU2NCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJv
CiAgICAgZWxzZQogICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRh
eENoZWNrZXIsIENoZWNrRm9yU3RyaWN0TW9kZSksIGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rp
b25Cb2R5QmxvY2sgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIgOiAiQ2Fu
bm90IHBhcnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogICAgIHVuc2lnbmVkIGVu
ZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rp
b25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBl
bmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1l
dGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQs
IHBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVG
dW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1
bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBw
YXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJD
b3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShT
b3VyY2VQYXJzZU1vZGUgbW9kZSkKQEAgLTE3NjMsNyArMTc2NCw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8o
VHJlZUJ1aWxkCiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5j
dGlvbk1ldGFkYXRhKAogICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIGZ1
bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4sIAogICAgICAgICAgICAg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQs
IAotICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBj
YWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uKTsKKyAgICAg
ICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgY2FjaGVkSW5m
by0+cGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgIGZ1bmN0aW9uQm9keVR5
cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgCiAgICAgICAgIGZ1
bmN0aW9uU2NvcGUtPnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNoZWRJbmZvKTsK
ICAgICAgICAgcG9wU2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZh
cmlhYmxlSW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5
bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oCmluZGV4IDdhODVkZDJjZDNlNzU0M2VmMDljNmY3MzkyMWQ4NTY0MzY2NTNjNGIuLmQ0Njlh
YjhjOTVjNGIyOTBlYjE4Yzk4ZGRkNzk4MmY5OWNiZGQwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGlj
OgogICAgIENsYXNzRXhwcmVzc2lvbiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwg
UHJvcGVydHlMaXN0LCBQcm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQogI2VuZGlm
CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJu
IEZ1bmN0aW9uRXhwcjsgfQotICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBp
bnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUs
IGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQorICAgIGludCBjcmVhdGVGdW5j
dGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2ln
bmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJl
c3VsdDsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2Vy
PiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3Rh
cnQoaW50LCBpbnQpIHsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiBBcmd1
bWVudHNSZXN1bHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCBkMDgyYjEyY2Y1YmIzMDgzODM0ODQ3YmIwNjQ5ZjBk
Mzg1MjA1MDg4Li42YjNhMDk0MjY2Mzg3MWM5NmVlMmY0ZjdmZjg1YzJiM2MzNjY2Njc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwCkBAIC04OCwxMCArODgsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24g
IiwgZnVuY3Rpb24tPm5hbWUoZXhlYyksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsK
IAogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+anNF
eGVjdXRhYmxlKCk7CisgICAgICAgIAorICAgICAgICBTdHJpbmcgZnVuY3Rpb25IZWFkZXIgPSBl
eGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKSA/ICIiIDogImZ1bmN0aW9uICI7CisgICAgICAg
IAogICAgICAgICBTdHJpbmcgc291cmNlID0gZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIo
KS0+Z2V0UmFuZ2UoCiAgICAgICAgICAgICBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzU3RhcnRPZmZz
ZXQoKSwKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSAr
IDEpOyAvLyBUeXBlIHByb2ZpbGluZyBlbmQgb2Zmc2V0IGlzIHRoZSBjaGFyYWN0ZXIgYmVmb3Jl
IHRoZSAnfScuCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlh
bFN0cmluZyhleGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWUoZXhlYyksIHNvdXJjZSkp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmco
ZXhlYywgZnVuY3Rpb25IZWFkZXIsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpLCBzb3VyY2UpKTsKICAg
ICB9CiAKICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEludGVybmFsRnVuY3Rpb246OmluZm8o
KSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi10b3N0cmluZy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi10b3N0cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk0OTg0OGU2MTkwNGI2
MThkZmNiYTIyM2Q0NmEwNzU1N2EzZmNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRvc3RyaW5nLmpzCkBAIC0wLDAg
KzEsMjAgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNz
YWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSAr
ICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICIn
IjsKKyAgfQorfTsKKwordmFyIGFmMSA9ICgpID0+IHt9OwordmFyIGFmMiA9IChhKSA9PiB7IGEg
KyAxIH07Cit2YXIgYWYzID0geCA9PiB4ICsgMTsKK3ZhciBhZjQgPSAoeCwgeSkgPT4geCArIHk7
CisKK25vSW5saW5lKGFmMSk7Citub0lubGluZShhZjIpOworCitmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwOyArK2kpIHsKKyAgdGVzdENhc2UoYWYxLnRvU3RyaW5nKCksICcoKSA9PiB7fScsICJF
cnJvcjogTm90IGNvcnJlY3QgdG9TdHJpbmcgaW4gYXJyb3cgZnVuY3Rpb24gIzEiKTsKKyAgdGVz
dENhc2UoYWYyLnRvU3RyaW5nKCksICcoYSkgPT4geyBhICsgMSB9JywgIkVycm9yOiBOb3QgY29y
cmVjdCB0b1N0cmluZyBpbiBhcnJvdyBmdW5jdGlvbiAjMiIpOworICB0ZXN0Q2FzZShhZjMudG9T
dHJpbmcoKSwgJ3ggPT4geCArIDEnLCAiRXJyb3I6IE5vdCBjb3JyZWN0IHRvU3RyaW5nIGluIGFy
cm93IGZ1bmN0aW9uICMzIik7CisgIHRlc3RDYXNlKGFmNC50b1N0cmluZygpLCAnKHgsIHkpID0+
IHggKyB5JywgIkVycm9yOiBOb3QgY29ycmVjdCB0b1N0cmluZyBpbiBhcnJvdyBmdW5jdGlvbiAj
NCIpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDZhZDI4MTdkNDc2YjFjOGIzNTUwMWY2MTU1MjA3YmJmZDQ1MWRhZjEu
LmY1MjU5YjllZDU3YjQzYzdlMGEwYmRmNGI3NTY0ZWYzNjUzZWJmY2MgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxNS0wOC0xOSAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWls
LmNvbT4KKworICAgICAgICBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgaXMgaW5jb3JyZWN0
IGZvciBBcnJvd0Z1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDgxNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCB0ZXN0IG9mIHRvU3RyaW5nKCkgbWV0aG9kCisKKyAgICAgICAgKiBq
cy9hcnJvd2Z1bmN0aW9uLXRvc3RyaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
anMvYXJyb3dmdW5jdGlvbi10b3N0cmluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10b3N0cmluZy5qczogQWRkZWQuCisKIDIwMTUtMDgtMTgg
IFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CiAKICAgICAgICAgW0VT
Nl0gQXJyb3cgZnVuY3Rpb24gc3ludGF4LiBBcnJvdyBmdW5jdGlvbiBzcGVjaWZpYyBmZWF0dXJl
cy4gTGV4aWNhbCBiaW5kICJhcmd1bWVudHMiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLXRvc3RyaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93
ZnVuY3Rpb24tdG9zdHJpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1MjUwNzkzNmQ1OTNk
N2E5OTQ1NGZlYmU2MzQ2ZmE4NjJhOGQ1YjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9qcy9hcnJvd2Z1bmN0aW9uLXRvc3RyaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBA
CitUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uIHRvU3RyaW5nKCkgbWV0aG9kCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCit2YXIgc2ltcGxlQXJyb3dGdW5jdGlvbiA9ICgpID0+
IHt9CitQQVNTIHNpbXBsZUFycm93RnVuY3Rpb24udG9TdHJpbmcoKSBpcyAnKCkgPT4ge30nCitQ
QVNTICgoeCkgPT4geyB4ICsgMSB9KS50b1N0cmluZygpIGlzICcoeCkgPT4geyB4ICsgMSB9Jwor
UEFTUyAoeCA9PiB4ICsgMSkudG9TdHJpbmcoKSBpcyAneCA9PiB4ICsgMScKK3ZhciBmMCA9IHgg
PT4geAorUEFTUyBmMC50b1N0cmluZygpIGlzICd4ID0+IHgnCit2YXIgZjEgPSAoKSA9PiB0aGlz
CitQQVNTIGYxLnRvU3RyaW5nKCkgaXMgJygpID0+IHRoaXMnCit2YXIgZjIgPSB4ID0+IHsgcmV0
dXJuIHg7IH07CitQQVNTIGYyLnRvU3RyaW5nKCkgaXMgJyh4KSA9PiB7IHJldHVybiB4OyB9Jwor
dmFyIGYzID0gKHgsIHkpID0+IHsgcmV0dXJuIHggKyB5OyB9OworUEFTUyBmMy50b1N0cmluZygp
IGlzICcoeCwgeSkgPT4geyByZXR1cm4geCArIHk7IH0nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
YXJyb3dmdW5jdGlvbi10b3N0cmluZy5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlv
bi10b3N0cmluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5ZjhiMGMzY2ZhMzQzNDcyZWJjNDBlZGMyZTk4
ZGVkOGY5ODZiMzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0
aW9uLXRvc3RyaW5nLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdG9zdHJpbmcuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2Fycm93ZnVuY3Rpb24tdG9zdHJpbmcuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvYXJyb3dmdW5jdGlvbi10b3N0cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWRmMGE3YjRmZTY1MzFm
ZjE3MDZmODM2ZDMwZGFiYTg5NjZmMTA3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdG9zdHJpbmcuanMKQEAgLTAsMCArMSwyNiBA
QAorLy8gSW5zcGlyZWQgYnkgbW96aWxsYSB0ZXN0cworZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBF
UzYgYXJyb3cgZnVuY3Rpb24gdG9TdHJpbmcoKSBtZXRob2QnKTsKKworZGVidWcoJ3ZhciBzaW1w
bGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge30nKTsKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0g
KCkgPT4ge307CitzaG91bGRCZSgic2ltcGxlQXJyb3dGdW5jdGlvbi50b1N0cmluZygpIiwgIico
KSA9PiB7fSciKTsKK3Nob3VsZEJlKCIoKHgpID0+IHsgeCArIDEgfSkudG9TdHJpbmcoKSIsICIn
KHgpID0+IHsgeCArIDEgfSciKTsKK3Nob3VsZEJlKCIoeCA9PiB4ICsgMSkudG9TdHJpbmcoKSIs
ICIneCA9PiB4ICsgMSciKTsKKworZGVidWcoJ3ZhciBmMCA9IHggPT4geCcpOwordmFyIGYwID0g
eCA9PiB4Oworc2hvdWxkQmUoImYwLnRvU3RyaW5nKCkiLCAiJ3ggPT4geCciKTsKKworZGVidWco
J3ZhciBmMSA9ICgpID0+IHRoaXMnKTsKK3ZhciBmMSA9ICgpID0+IHRoaXM7CitzaG91bGRCZSgi
ZjEudG9TdHJpbmcoKSIsICInKCkgPT4gdGhpcyciKTsKKworZGVidWcoJ3ZhciBmMiA9IHggPT4g
eyByZXR1cm4geDsgfTsnKTsKK3ZhciBmMiA9ICh4KSA9PiB7IHJldHVybiB4OyB9Oworc2hvdWxk
QmUoImYyLnRvU3RyaW5nKCkiLCAiJyh4KSA9PiB7IHJldHVybiB4OyB9JyIpOworCitkZWJ1Zygn
dmFyIGYzID0gKHgsIHkpID0+IHsgcmV0dXJuIHggKyB5OyB9OycpOwordmFyIGYzID0gKHgsIHkp
ID0+IHsgcmV0dXJuIHggKyB5OyB9Oworc2hvdWxkQmUoImYzLnRvU3RyaW5nKCkiLCAiJyh4LCB5
KSA9PiB7IHJldHVybiB4ICsgeTsgfSciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259404</attachid>
            <date>2015-08-19 14:24:44 -0700</date>
            <delta_ts>2015-08-25 02:04:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148148-20150820002441.patch</filename>
            <type>text/plain</type>
            <size>16630</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZTc2MTQ5MWYyMjA4NWQ0NDI1ZjIwMDFhODFiZmYzYTgzODUyYjBjLi4zMDFiYmNkNzg4YjFlNWNj
ODQ2NTVmMTE4MGYyMDA5ZGRhMDBkZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxNS0wOC0xOSBBbGVrc2FuZHIgU2thY2hrb3YgICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgaXMgaW5jb3Jy
ZWN0IGZvciBBcnJvd0Z1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDgxNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKyAgICAgICAgCisgICAgICAgIEFkZGVkIGNvcnJlY3Qgc3VwcG9ydCBvZiB0b1N0cmluZygp
IG1ldGhvZCBmb3IgYXJyb3cgZnVuY3Rpb24uCisKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRl
ci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToK
KyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIpOgorICAg
ICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFO
b2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6Cisg
ICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoK
KyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25NZXRhZGF0YSk6Cisg
ICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZ1
bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLXRvc3RyaW5nLmpzOiBBZGRlZC4KKwogMjAxNS0wOC0xOCAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IExpbmtzIGZv
ciBydWxlcyBpbiA8c3R5bGU+IGFyZSBpbmNvcnJlY3QsIGRvIG5vdCBhY2NvdW50IGZvciA8c3R5
bGU+IG9mZnNldCBpbiB0aGUgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmgKaW5kZXggMzg1MzgzOTRmNmVmODRkZGMyOGVmN2FhMWI0NmNiOGQ5NWQ3Mzcx
Yi4uOGY5NDkyOTYyZmIyOTI5NTRkODc5OTY3N2JlZGM0ZDRhMWFjNjQxOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTM2MSwxOCArMzYxLDE4IEBAIHB1
YmxpYzoKICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAgICAgICAgdW5zaWduZWQgc3RhcnRD
b2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAg
ICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlu
U3RyaWN0Q29udGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQs
IHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fy
cm93RnVuY3Rpb24pCisgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVu
c2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93
RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAgICAgewogICAg
ICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAg
ICAgICAgICAgIG1fcGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFy
dENvbHVtbiwgZW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBm
dW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGluU3RyaWN0
Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1
bmN0aW9uKTsKKyAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBw
YXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbik7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycm93RnVu
Y3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1
bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogICAgIHsKICAgICAgICAgdXNl
c1RoaXMoKTsKLSAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4
cHJlc3Npb24oZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0
LCBmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uKTsK
KyAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24o
ZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbkluZm8uYm9keS0+aXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24oKSA/IGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQgLTEgOiBmdW5jdGlv
bkluZm8uZW5kT2Zmc2V0LCBmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uYm9k
eVN0YXJ0Q29sdW1uKTsKICAgICAgICAgQXJyb3dGdW5jRXhwck5vZGUqIHJlc3VsdCA9IG5ldyAo
bV9wYXJzZXJBcmVuYSkgQXJyb3dGdW5jRXhwck5vZGUobG9jYXRpb24sICpmdW5jdGlvbkluZm8u
bmFtZSwgZnVuY3Rpb25JbmZvLmJvZHksIHNvdXJjZSk7CiAgICAgICAgIGZ1bmN0aW9uSW5mby5i
b2R5LT5zZXRMb2MoZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLmVuZExpbmUs
IGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRl
eCAxOGY4NDU1MzMwNWM0YTBjMjFjNzMzODgzOWMyOWYyM2M3NGRlOTI4Li5lYTM3NjM5M2I2NDY3
YjVhZDYzZTYzMmM5ZjZkM2Q5MzkzMzhjZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5j
dGlvbk1ldGFkYXRhTm9kZSgKICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgc3RhcnRMb2NhdGlvbiwgCiAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlv
biwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCiAgICAgaW50IGZ1
bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJz
U3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9k
ZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCisgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9y
S2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBtb2RlLCBib29s
IGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAg
ICAgICAgOiBOb2RlKGVuZExvY2F0aW9uKQogICAgICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRD
b2x1bW4pCiAgICAgICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpAQCAtMTY0LDYgKzE2NCw3
IEBAIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAg
LCBtX2lzSW5TdHJpY3RDb250ZXh0KGlzSW5TdHJpY3RDb250ZXh0KQogICAgICAgICAsIG1fY29u
c3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQogICAg
ICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uKGlzQXJyb3dGdW5jdGlvbikKKyAgICAgICAgLCBtX2lz
QXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KQogewogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oY29uc3RydWN0b3JLaW5kKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
aW5kZXggZWQ1ZmMyNzI1MzRhMjQ2NDJmZDYyYWViMWExZGY5M2U2OGNhY2MyMy4uNDA4MDY0ZmYw
ZDNjN2NlYzY2YmM3ZTNhN2I4M2MxMGQ4ZjdlNzJmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaApAQCAtMTgxMCw3ICsxODEwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1
bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgICAg
ICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0
cmljdENvbnRleHQsIAotICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291
cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbik7CisgICAgICAgICAgICBDb25zdHJ1
Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
LCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKIAogICAgICAgICB2b2lkIGZp
bmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlv
bk1vZGUpOwogICAgICAgICAKQEAgLTE4MzcsNiArMTgzNyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3Ry
aWN0Q29udGV4dDsgfQogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7
IH0KICAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJy
b3dGdW5jdGlvbjsgfQorICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbjsgfQogCiAg
ICAgICAgIHZvaWQgc2V0TG9jKHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUs
IGludCBzdGFydE9mZnNldCwgaW50IGxpbmVTdGFydE9mZnNldCkKICAgICAgICAgewpAQCAtMTg2
Myw2ICsxODY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1faXNJblN0
cmljdENvbnRleHQgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7
CiAgICAgICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKKyAgICAgICAgdW5zaWdu
ZWQgbV9pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IDE7CiAgICAgfTsKIAogICAgIGNs
YXNzIEZ1bmN0aW9uTm9kZSBmaW5hbCA6IHB1YmxpYyBTY29wZU5vZGUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDMyNmJmZDI5NWJkNTYyNDU5OTEwZWFlODQy
ZThiMDhjMTRiMmVjYTcuLjhhOTM2MTU3YjNmNjk2MGI2M2JhODFlYjQ3NzY4ODZmYTAzNDU5OGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTE1NDcsMTEgKzE1
NDcsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm8KICAgICBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0
ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBib29sIGlzQXJyb3dG
dW5jdGlvbiA9IEZ1bmN0aW9uQm9keVR5cGU6OlN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgIT0g
Ym9keVR5cGU7Ci0gICAgaWYgKGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sg
fHwgYm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlCbG9jaykgeworICAgIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBib2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4
cHJlc3Npb247CisgICAgaWYgKCFpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikgewogICAg
ICAgICBuZXh0KCk7CiAgICAgICAgIGlmIChtYXRjaChDTE9TRUJSQUNFKSkgewogICAgICAgICAg
ICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICAgICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2Nh
dGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVu
Y3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3Rv
cktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbik7CisgICAg
ICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRp
b24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUo
KSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVu
Y3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtMTU2Myw3ICsxNTY0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RnVuY3Rpb25Cb2R5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm8KICAgICBlbHNl
CiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoc3ludGF4Q2hlY2tlciwg
Q2hlY2tGb3JTdHJpY3RNb2RlKSwgYm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9j
ayA/ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1bmN0aW9uIiA6ICJDYW5ub3QgcGFyc2Ug
Ym9keSBvZiB0aGlzIGFycm93IGZ1bmN0aW9uIik7CiAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0g
dG9rZW5Db2x1bW4oKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRh
KHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQs
IHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2Rl
LCBpc0Fycm93RnVuY3Rpb24pOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0
YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29s
dW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNT
dGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJz
ZU1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwog
fQogCiBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNl
TW9kZSBtb2RlKQpAQCAtMTc2Myw3ICsxNzY0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQK
ICAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRh
dGEoCiAgICAgICAgICAgICBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgZnVuY3Rpb25JbmZv
LmJvZHlTdGFydENvbHVtbiwgYm9keUVuZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAg
ICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8t
PnBhcmFtZXRlckNvdW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb24pOworICAgICAgICAgICAgY2Fj
aGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0
ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCAgZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwogICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29w
ZS0+cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAgICBw
b3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZv
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXgg
N2E4NWRkMmNkM2U3NTQzZWYwOWM2ZjczOTIxZDg1NjQzNjY1M2M0Yi4uZDQ2OWFiOGM5NWM0YjI5
MGViMThjOThkZGQ3OTgyZjk5Y2JkZDA5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgQ2xh
c3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxp
c3QsIFByb3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9CiAjZW5kaWYKICAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25F
eHByOyB9Ci0gICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBp
bnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCkgeyBy
ZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9uTWV0YWRh
dGEoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBp
bnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNvdXJj
ZVBhcnNlTW9kZSwgYm9vbCwgYm9vbCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAg
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1
cm4gRnVuY3Rpb25FeHByOyB9CiAgICAgdm9pZCBzZXRGdW5jdGlvbk5hbWVTdGFydChpbnQsIGlu
dCkgeyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3Vs
dDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Q
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuY3BwCmluZGV4IGQwODJiMTJjZjViYjMwODM4MzQ4NDdiYjA2NDlmMGQzODUyMDUwODgu
LjZiM2EwOTQyNjYzODcxYzk2ZWUyZjRmN2ZmODVjMmIzYzM2NjY2NzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTg4
LDEwICs4OCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9G
dW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBmdW5jdGlv
bi0+bmFtZShleGVjKSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IikpOwogCiAgICAgICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUo
KTsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyBmdW5jdGlvbkhlYWRlciA9IGV4ZWN1dGFibGUt
PmlzQXJyb3dGdW5jdGlvbigpID8gIiIgOiAiZnVuY3Rpb24gIjsKKyAgICAgICAgCiAgICAgICAg
IFN0cmluZyBzb3VyY2UgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLT5nZXRSYW5n
ZSgKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnNTdGFydE9mZnNldCgpLAogICAg
ICAgICAgICAgZXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpICsgMSk7IC8vIFR5
cGUgcHJvZmlsaW5nIGVuZCBvZmZzZXQgaXMgdGhlIGNoYXJhY3RlciBiZWZvcmUgdGhlICd9Jy4K
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4
ZWMsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZShleGVjKSwgc291cmNlKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCBmdW5j
dGlvbkhlYWRlciwgZnVuY3Rpb24tPm5hbWUoZXhlYyksIHNvdXJjZSkpOwogICAgIH0KIAogICAg
IGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoSW50ZXJuYWxGdW5jdGlvbjo6aW5mbygpKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LXRvc3RyaW5nLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLXRvc3RyaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlOTQ5ODQ4ZTYxOTA0YjYxOGRmY2JhMjIz
ZDQ2YTA3NTU3YTNmY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tdG9zdHJpbmcuanMKQEAgLTAsMCArMSwyMCBAQAor
dmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0
ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICB9Cit9
OworCit2YXIgYWYxID0gKCkgPT4ge307Cit2YXIgYWYyID0gKGEpID0+IHsgYSArIDEgfTsKK3Zh
ciBhZjMgPSB4ID0+IHggKyAxOwordmFyIGFmNCA9ICh4LCB5KSA9PiB4ICsgeTsKKworbm9Jbmxp
bmUoYWYxKTsKK25vSW5saW5lKGFmMik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsr
aSkgeworICB0ZXN0Q2FzZShhZjEudG9TdHJpbmcoKSwgJygpID0+IHt9JywgIkVycm9yOiBOb3Qg
Y29ycmVjdCB0b1N0cmluZyBpbiBhcnJvdyBmdW5jdGlvbiAjMSIpOworICB0ZXN0Q2FzZShhZjIu
dG9TdHJpbmcoKSwgJyhhKSA9PiB7IGEgKyAxIH0nLCAiRXJyb3I6IE5vdCBjb3JyZWN0IHRvU3Ry
aW5nIGluIGFycm93IGZ1bmN0aW9uICMyIik7CisgIHRlc3RDYXNlKGFmMy50b1N0cmluZygpLCAn
eCA9PiB4ICsgMScsICJFcnJvcjogTm90IGNvcnJlY3QgdG9TdHJpbmcgaW4gYXJyb3cgZnVuY3Rp
b24gIzMiKTsKKyAgdGVzdENhc2UoYWY0LnRvU3RyaW5nKCksICcoeCwgeSkgPT4geCArIHknLCAi
RXJyb3I6IE5vdCBjb3JyZWN0IHRvU3RyaW5nIGluIGFycm93IGZ1bmN0aW9uICM0Iik7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMTVkY2I4NzQ2MDAwZWZiMTUzMjQ3M2VkOTQ3MTMwYjIxMDg3YzA2Zi4uOTE2ZThlZWY0
MDVjMTRiZWY1NmEwNTY0ZDA5NjE0Y2U3NTU0MmZiNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDE1LTA4LTE5ICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgorCisg
ICAgICAgIEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyBpcyBpbmNvcnJlY3QgZm9yIEFycm93
RnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0ODE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIHRlc3Qgb2YgdG9TdHJpbmcoKSBtZXRob2QuCisKKyAgICAgICAgKiBqcy9hcnJvd2Z1
bmN0aW9uLXRvc3RyaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dm
dW5jdGlvbi10b3N0cmluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMv
YXJyb3dmdW5jdGlvbi10b3N0cmluZy5qczogQWRkZWQuCisKIDIwMTUtMDgtMTggIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFB1bmN0
dWF0aW9uIG5lYXIgSGluZGkgdGV4dCBpcyBnYXJibGVkIHdoZW4gc3R5bGVkIHdpdGggdGhlIHN5
c3RlbSBmb250CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRvc3Ry
aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tdG9zdHJpbmct
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1MjUwNzkzNmQ1OTNkN2E5OTQ1NGZlYmU2MzQ2ZmE4
NjJhOGQ1YjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LXRvc3RyaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACitUZXN0cyBmb3IgRVM2IGFy
cm93IGZ1bmN0aW9uIHRvU3RyaW5nKCkgbWV0aG9kCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCit2YXIgc2ltcGxlQXJyb3dGdW5jdGlvbiA9ICgpID0+IHt9CitQQVNTIHNpbXBsZUFy
cm93RnVuY3Rpb24udG9TdHJpbmcoKSBpcyAnKCkgPT4ge30nCitQQVNTICgoeCkgPT4geyB4ICsg
MSB9KS50b1N0cmluZygpIGlzICcoeCkgPT4geyB4ICsgMSB9JworUEFTUyAoeCA9PiB4ICsgMSku
dG9TdHJpbmcoKSBpcyAneCA9PiB4ICsgMScKK3ZhciBmMCA9IHggPT4geAorUEFTUyBmMC50b1N0
cmluZygpIGlzICd4ID0+IHgnCit2YXIgZjEgPSAoKSA9PiB0aGlzCitQQVNTIGYxLnRvU3RyaW5n
KCkgaXMgJygpID0+IHRoaXMnCit2YXIgZjIgPSB4ID0+IHsgcmV0dXJuIHg7IH07CitQQVNTIGYy
LnRvU3RyaW5nKCkgaXMgJyh4KSA9PiB7IHJldHVybiB4OyB9JwordmFyIGYzID0gKHgsIHkpID0+
IHsgcmV0dXJuIHggKyB5OyB9OworUEFTUyBmMy50b1N0cmluZygpIGlzICcoeCwgeSkgPT4geyBy
ZXR1cm4geCArIHk7IH0nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10b3N0
cmluZy5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10b3N0cmluZy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ5ZjhiMGMzY2ZhMzQzNDcyZWJjNDBlZGMyZTk4ZGVkOGY5ODZiMzcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRvc3RyaW5nLmh0bWwK
QEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0
LXRlc3RzL2Fycm93ZnVuY3Rpb24tdG9zdHJpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24t
dG9zdHJpbmcuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10
b3N0cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWRmMGE3YjRmZTY1MzFmZjE3MDZmODM2ZDMwZGFiYTg5
NjZmMTA3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fy
cm93ZnVuY3Rpb24tdG9zdHJpbmcuanMKQEAgLTAsMCArMSwyNiBAQAorLy8gSW5zcGlyZWQgYnkg
bW96aWxsYSB0ZXN0cworZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24g
dG9TdHJpbmcoKSBtZXRob2QnKTsKKworZGVidWcoJ3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0g
KCkgPT4ge30nKTsKK3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge307CitzaG91bGRC
ZSgic2ltcGxlQXJyb3dGdW5jdGlvbi50b1N0cmluZygpIiwgIicoKSA9PiB7fSciKTsKK3Nob3Vs
ZEJlKCIoKHgpID0+IHsgeCArIDEgfSkudG9TdHJpbmcoKSIsICInKHgpID0+IHsgeCArIDEgfSci
KTsKK3Nob3VsZEJlKCIoeCA9PiB4ICsgMSkudG9TdHJpbmcoKSIsICIneCA9PiB4ICsgMSciKTsK
KworZGVidWcoJ3ZhciBmMCA9IHggPT4geCcpOwordmFyIGYwID0geCA9PiB4Oworc2hvdWxkQmUo
ImYwLnRvU3RyaW5nKCkiLCAiJ3ggPT4geCciKTsKKworZGVidWcoJ3ZhciBmMSA9ICgpID0+IHRo
aXMnKTsKK3ZhciBmMSA9ICgpID0+IHRoaXM7CitzaG91bGRCZSgiZjEudG9TdHJpbmcoKSIsICIn
KCkgPT4gdGhpcyciKTsKKworZGVidWcoJ3ZhciBmMiA9IHggPT4geyByZXR1cm4geDsgfTsnKTsK
K3ZhciBmMiA9ICh4KSA9PiB7IHJldHVybiB4OyB9Oworc2hvdWxkQmUoImYyLnRvU3RyaW5nKCki
LCAiJyh4KSA9PiB7IHJldHVybiB4OyB9JyIpOworCitkZWJ1ZygndmFyIGYzID0gKHgsIHkpID0+
IHsgcmV0dXJuIHggKyB5OyB9OycpOwordmFyIGYzID0gKHgsIHkpID0+IHsgcmV0dXJuIHggKyB5
OyB9Oworc2hvdWxkQmUoImYzLnRvU3RyaW5nKCkiLCAiJyh4LCB5KSA9PiB7IHJldHVybiB4ICsg
eTsgfSciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259831</attachid>
            <date>2015-08-25 02:04:15 -0700</date>
            <delta_ts>2015-08-25 02:43:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148148-20150825120404.patch</filename>
            <type>text/plain</type>
            <size>17451</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZTc2MTQ5MWYyMjA4NWQ0NDI1ZjIwMDFhODFiZmYzYTgzODUyYjBjLi5iODE5ZDJiYjEzNmVhMTA3
OTc5YThhNDMzZGEyOTFmNjU3ZmQ5ZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxNS0wOC0yNSBBbGVrc2FuZHIgU2thY2hrb3YgICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgaXMgaW5jb3Jy
ZWN0IGZvciBBcnJvd0Z1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDgxNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKyAgICAgICAgCisgICAgICAgIEFkZGVkIGNvcnJlY3Qgc3VwcG9ydCBvZiB0b1N0cmluZygp
IG1ldGhvZCBmb3IgYXJyb3cgZnVuY3Rpb24uCisKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRl
ci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToK
KyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIpOgorICAg
ICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFO
b2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6Cisg
ICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoK
KyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25NZXRhZGF0YSk6Cisg
ICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZ1
bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLXRvc3RyaW5nLmpzOiBBZGRlZC4KKwogMjAxNS0wOC0xOCAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IExpbmtzIGZv
ciBydWxlcyBpbiA8c3R5bGU+IGFyZSBpbmNvcnJlY3QsIGRvIG5vdCBhY2NvdW50IGZvciA8c3R5
bGU+IG9mZnNldCBpbiB0aGUgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmgKaW5kZXggMzg1MzgzOTRmNmVmODRkZGMyOGVmN2FhMWI0NmNiOGQ5NWQ3Mzcx
Yi4uNWIwOTllYzVjYjRmODZjNmMyNzVmNTQyMTAxZjFhYzhhMTZlN2NmNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTM2MSwxOCArMzYxLDE4IEBAIHB1
YmxpYzoKICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAgICAgICAgdW5zaWduZWQgc3RhcnRD
b2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAg
ICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlu
U3RyaWN0Q29udGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQs
IHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fy
cm93RnVuY3Rpb24pCisgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVu
c2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93
RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAgICAgewogICAg
ICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAg
ICAgICAgICAgIG1fcGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFy
dENvbHVtbiwgZW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBm
dW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGluU3RyaWN0
Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1
bmN0aW9uKTsKKyAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBw
YXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbik7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycm93RnVu
Y3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1
bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogICAgIHsKICAgICAgICAgdXNl
c1RoaXMoKTsKLSAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4
cHJlc3Npb24oZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0
LCBmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uKTsK
KyAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24o
ZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbkluZm8uYm9keS0+aXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24oKSA/IGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQgLSAxIDogZnVuY3Rp
b25JbmZvLmVuZE9mZnNldCwgZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLmJv
ZHlTdGFydENvbHVtbik7CiAgICAgICAgIEFycm93RnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcg
KG1fcGFyc2VyQXJlbmEpIEFycm93RnVuY0V4cHJOb2RlKGxvY2F0aW9uLCAqZnVuY3Rpb25JbmZv
Lm5hbWUsIGZ1bmN0aW9uSW5mby5ib2R5LCBzb3VyY2UpOwogICAgICAgICBmdW5jdGlvbkluZm8u
Ym9keS0+c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5lbmRMaW5l
LCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5k
ZXggMThmODQ1NTMzMDVjNGEwYzIxYzczMzg4MzljMjlmMjNjNzRkZTkyOC4uZWEzNzYzOTNiNjQ2
N2I1YWQ2M2U2MzJjOWY2ZDNkOTM5MzM4Y2U1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVu
Y3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIHN0YXJ0TG9jYXRpb24sIAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRp
b24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAogICAgIGludCBm
dW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVy
c1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1v
ZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9v
bCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAg
ICAgICAgIDogTm9kZShlbmRMb2NhdGlvbikKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0
Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKQEAgLTE2NCw2ICsxNjQs
NyBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAg
ICwgbV9pc0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkKICAgICAgICAgLCBtX2Nv
bnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKICAg
ICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCisgICAgICAgICwgbV9p
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bikKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
CmluZGV4IGVkNWZjMjcyNTM0YTI0NjQyZmQ2MmFlYjFhMWRmOTNlNjhjYWNjMjMuLjQwODA2NGZm
MGQzYzdjZWM2NmJjN2UzYTdiODNjMTBkOGY3ZTcyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmgKQEAgLTE4MTAsNyArMTgxMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwg
dW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICAg
ICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5T
dHJpY3RDb250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNv
dXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24pOworICAgICAgICAgICAgQ29uc3Ry
dWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlv
biwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAKICAgICAgICAgdm9pZCBm
aW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rp
b25Nb2RlKTsKICAgICAgICAgCkBAIC0xODM3LDYgKzE4MzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0
cmljdENvbnRleHQ7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgp
IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQp
OyB9CiAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fy
cm93RnVuY3Rpb247IH0KKyAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb247IH0KIAog
ICAgICAgICB2b2lkIHNldExvYyh1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5l
LCBpbnQgc3RhcnRPZmZzZXQsIGludCBsaW5lU3RhcnRPZmZzZXQpCiAgICAgICAgIHsKQEAgLTE4
NjMsNiArMTg2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2lzSW5T
dHJpY3RDb250ZXh0IDogMTsKICAgICAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAy
OwogICAgICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAgICAgIHVuc2ln
bmVkIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiAxOwogICAgIH07CiAKICAgICBj
bGFzcyBGdW5jdGlvbk5vZGUgZmluYWwgOiBwdWJsaWMgU2NvcGVOb2RlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAzMjZiZmQyOTViZDU2MjQ1OTkxMGVhZTg0
MmU4YjA4YzE0YjJlY2E3Li44YTkzNjE1N2IzZjY5NjBiNjNiYTgxZWI0Nzc2ODg2ZmEwMzQ1OThh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xNTQ3LDExICsx
NTQ3LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvCiAgICAgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwgdW5zaWduZWQgcGFyYW1l
dGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgYm9vbCBpc0Fycm93
RnVuY3Rpb24gPSBGdW5jdGlvbkJvZHlUeXBlOjpTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrICE9
IGJvZHlUeXBlOwotICAgIGlmIChib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2Nr
IHx8IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5QmxvY2spIHsKKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gYm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uOworICAgIGlmICghaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pIHsKICAg
ICAgICAgbmV4dCgpOwogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAg
ICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9j
YXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1
bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0
b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24pOworICAg
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0
aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2Rl
KCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1
bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTE1NjMsNyArMTU2NCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvCiAgICAgZWxz
ZQogICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIs
IENoZWNrRm9yU3RyaWN0TW9kZSksIGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5Qmxv
Y2sgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIgOiAiQ2Fubm90IHBhcnNl
IGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9
IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0
YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4s
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0
LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9k
ZSwgaXNBcnJvd0Z1bmN0aW9uKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1l
dGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENv
bHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJz
U3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFy
c2VNb2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsK
IH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJz
ZU1vZGUgbW9kZSkKQEAgLTE3NjMsNyArMTc2NCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxk
CiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFk
YXRhKAogICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIGZ1bmN0aW9uSW5m
by5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAg
ICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZv
LT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uKTsKKyAgICAgICAgICAgIGNh
Y2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgY2FjaGVkSW5mby0+cGFyYW1l
dGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgIGZ1bmN0aW9uQm9keVR5cGUgPT0gQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uU2Nv
cGUtPnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNoZWRJbmZvKTsKICAgICAgICAg
cG9wU2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5m
byk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNr
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4
IDdhODVkZDJjZDNlNzU0M2VmMDljNmY3MzkyMWQ4NTY0MzY2NTNjNGIuLmQ0NjlhYjhjOTVjNGIy
OTBlYjE4Yzk4ZGRkNzk4MmY5OWNiZGQwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgIENs
YXNzRXhwcmVzc2lvbiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlM
aXN0LCBQcm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQogI2VuZGlmCiAgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNv
bnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9u
RXhwcjsgfQotICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwg
aW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wpIHsg
cmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQorICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFk
YXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwg
aW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3Vy
Y2VQYXJzZU1vZGUsIGJvb2wsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQog
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0
dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50LCBp
bnQpIHsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiBBcmd1bWVudHNSZXN1
bHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmNwcAppbmRleCBkMDgyYjEyY2Y1YmIzMDgzODM0ODQ3YmIwNjQ5ZjBkMzg1MjA1MDg4
Li42YjNhMDk0MjY2Mzg3MWM5NmVlMmY0ZjdmZjg1YzJiM2MzNjY2Njc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC04
OCwxMCArODgsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3Rv
RnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rp
b24tPm5hbWUoZXhlYyksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsKIAogICAgICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxl
KCk7CisgICAgICAgIAorICAgICAgICBTdHJpbmcgZnVuY3Rpb25IZWFkZXIgPSBleGVjdXRhYmxl
LT5pc0Fycm93RnVuY3Rpb24oKSA/ICIiIDogImZ1bmN0aW9uICI7CisgICAgICAgIAogICAgICAg
ICBTdHJpbmcgc291cmNlID0gZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFu
Z2UoCiAgICAgICAgICAgICBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzU3RhcnRPZmZzZXQoKSwKICAg
ICAgICAgICAgIGV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSArIDEpOyAvLyBU
eXBlIHByb2ZpbGluZyBlbmQgb2Zmc2V0IGlzIHRoZSBjaGFyYWN0ZXIgYmVmb3JlIHRoZSAnfScu
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhl
eGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWUoZXhlYyksIHNvdXJjZSkpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgZnVu
Y3Rpb25IZWFkZXIsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpLCBzb3VyY2UpKTsKICAgICB9CiAKICAg
ICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEludGVybmFsRnVuY3Rpb246OmluZm8oKSkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi10b3N0cmluZy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi10b3N0cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk0OTg0OGU2MTkwNGI2MThkZmNiYTIy
M2Q0NmEwNzU1N2EzZmNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRvc3RyaW5nLmpzCkBAIC0wLDAgKzEsMjAgQEAK
K3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7Cisg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVj
dGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQor
fTsKKwordmFyIGFmMSA9ICgpID0+IHt9OwordmFyIGFmMiA9IChhKSA9PiB7IGEgKyAxIH07Cit2
YXIgYWYzID0geCA9PiB4ICsgMTsKK3ZhciBhZjQgPSAoeCwgeSkgPT4geCArIHk7CisKK25vSW5s
aW5lKGFmMSk7Citub0lubGluZShhZjIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyAr
K2kpIHsKKyAgdGVzdENhc2UoYWYxLnRvU3RyaW5nKCksICcoKSA9PiB7fScsICJFcnJvcjogTm90
IGNvcnJlY3QgdG9TdHJpbmcgaW4gYXJyb3cgZnVuY3Rpb24gIzEiKTsKKyAgdGVzdENhc2UoYWYy
LnRvU3RyaW5nKCksICcoYSkgPT4geyBhICsgMSB9JywgIkVycm9yOiBOb3QgY29ycmVjdCB0b1N0
cmluZyBpbiBhcnJvdyBmdW5jdGlvbiAjMiIpOworICB0ZXN0Q2FzZShhZjMudG9TdHJpbmcoKSwg
J3ggPT4geCArIDEnLCAiRXJyb3I6IE5vdCBjb3JyZWN0IHRvU3RyaW5nIGluIGFycm93IGZ1bmN0
aW9uICMzIik7CisgIHRlc3RDYXNlKGFmNC50b1N0cmluZygpLCAnKHgsIHkpID0+IHggKyB5Jywg
IkVycm9yOiBOb3QgY29ycmVjdCB0b1N0cmluZyBpbiBhcnJvdyBmdW5jdGlvbiAjNCIpOworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDE1ZGNiODc0NjAwMGVmYjE1MzI0NzNlZDk0NzEzMGIyMTA4N2MwNmYuLjRkNjAwNWQx
ZTgzNGMzMTJlNmU3NTJhMTQxMWVmOTI1NWQ4NjJiOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAxNS0wOC0yNSAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNvbT4KKwor
ICAgICAgICBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgaXMgaW5jb3JyZWN0IGZvciBBcnJv
d0Z1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDgxNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCB0ZXN0IG9mIHRvU3RyaW5nKCkgbWV0aG9kLgorCisgICAgICAgICoganMvYXJyb3dm
dW5jdGlvbi10b3N0cmluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93
ZnVuY3Rpb24tdG9zdHJpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3Rz
L2Fycm93ZnVuY3Rpb24tdG9zdHJpbmcuanM6IEFkZGVkLgorCiAyMDE1LTA4LTE4ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBQdW5j
dHVhdGlvbiBuZWFyIEhpbmRpIHRleHQgaXMgZ2FyYmxlZCB3aGVuIHN0eWxlZCB3aXRoIHRoZSBz
eXN0ZW0gZm9udApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10b3N0
cmluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRvc3RyaW5n
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGU2MTJjZWIxMzA2MmZmZDJkZDAyMzRkYzkyYWE3
Mzc2ZjhmN2M2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlv
bi10b3N0cmluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyOSBAQAorVGVzdHMgZm9yIEVTNiBh
cnJvdyBmdW5jdGlvbiB0b1N0cmluZygpIG1ldGhvZAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKwordmFyIHNpbXBsZUFycm93RnVuY3Rpb24gPSAoKSA9PiB7fQorUEFTUyBzaW1wbGVB
cnJvd0Z1bmN0aW9uLnRvU3RyaW5nKCkgaXMgJygpID0+IHt9JworUEFTUyAoKHgpID0+IHsgeCAr
IDEgfSkudG9TdHJpbmcoKSBpcyAnKHgpID0+IHsgeCArIDEgfScKK1BBU1MgKHggPT4geCArIDEp
LnRvU3RyaW5nKCkgaXMgJ3ggPT4geCArIDEnCit2YXIgZjAgPSB4ID0+IHgKK1BBU1MgZjAudG9T
dHJpbmcoKSBpcyAneCA9PiB4JwordmFyIGYxID0gKCkgPT4gdGhpcworUEFTUyBmMS50b1N0cmlu
ZygpIGlzICcoKSA9PiB0aGlzJwordmFyIGYyID0geCA9PiB7IHJldHVybiB4OyB9OworUEFTUyBm
Mi50b1N0cmluZygpIGlzICcoeCkgPT4geyByZXR1cm4geDsgfScKK3ZhciBmMyA9ICh4LCB5KSA9
PiB7IHJldHVybiB4ICsgeTsgfTsKK1BBU1MgZjMudG9TdHJpbmcoKSBpcyAnKHgsIHkpID0+IHsg
cmV0dXJuIHggKyB5OyB9JworZnVuY3Rpb24gZm9vKHgpIHsgcmV0dXJuIHgudG9TdHJpbmcoKX07
CitQQVNTIGZvbygoeCk9PngpIGlzICcoeCk9PngnCit2YXIgYXJyRXhwciA9IFt5PT55ICsgMSwg
eD0+eF07CitQQVNTIGFyckV4cHJbMF0udG9TdHJpbmcoKSBpcyAneT0+eSArIDEnCitQQVNTIGFy
ckV4cHJbMV0udG9TdHJpbmcoKSBpcyAneD0+eCcKK3ZhciBhcnJCb2R5ICA9IFt5PT57IHkgKyAx
IH0sIHg9PnsgeCB9XTsKK1BBU1MgYXJyQm9keVswXS50b1N0cmluZygpIGlzICd5PT57IHkgKyAx
IH0nCitQQVNTIGFyckJvZHlbMV0udG9TdHJpbmcoKSBpcyAneD0+eyB4IH0nCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10b3N0cmluZy5odG1sIGIvTGF5b3V0VGVzdHMvanMv
YXJyb3dmdW5jdGlvbi10b3N0cmluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5ZjhiMGMzY2ZhMzQzNDcy
ZWJjNDBlZGMyZTk4ZGVkOGY5ODZiMzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9hcnJvd2Z1bmN0aW9uLXRvc3RyaW5nLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdG9zdHJp
bmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdG9zdHJpbmcuanMgYi9MYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi10b3N0cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mY2Nm
ZjM2NjE4NmU4ZTNlOTQ1OTgyZjM3ODMyNThmNWY4MjllNjIzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tdG9zdHJpbmcuanMKQEAg
LTAsMCArMSw0MCBAQAorLy8gSW5zcGlyZWQgYnkgbW96aWxsYSB0ZXN0cworZGVzY3JpcHRpb24o
J1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24gdG9TdHJpbmcoKSBtZXRob2QnKTsKKworZGVi
dWcoJ3ZhciBzaW1wbGVBcnJvd0Z1bmN0aW9uID0gKCkgPT4ge30nKTsKK3ZhciBzaW1wbGVBcnJv
d0Z1bmN0aW9uID0gKCkgPT4ge307CitzaG91bGRCZSgic2ltcGxlQXJyb3dGdW5jdGlvbi50b1N0
cmluZygpIiwgIicoKSA9PiB7fSciKTsKK3Nob3VsZEJlKCIoKHgpID0+IHsgeCArIDEgfSkudG9T
dHJpbmcoKSIsICInKHgpID0+IHsgeCArIDEgfSciKTsKK3Nob3VsZEJlKCIoeCA9PiB4ICsgMSku
dG9TdHJpbmcoKSIsICIneCA9PiB4ICsgMSciKTsKKworZGVidWcoJ3ZhciBmMCA9IHggPT4geCcp
OwordmFyIGYwID0geCA9PiB4Oworc2hvdWxkQmUoImYwLnRvU3RyaW5nKCkiLCAiJ3ggPT4geCci
KTsKKworZGVidWcoJ3ZhciBmMSA9ICgpID0+IHRoaXMnKTsKK3ZhciBmMSA9ICgpID0+IHRoaXM7
CitzaG91bGRCZSgiZjEudG9TdHJpbmcoKSIsICInKCkgPT4gdGhpcyciKTsKKworZGVidWcoJ3Zh
ciBmMiA9IHggPT4geyByZXR1cm4geDsgfTsnKTsKK3ZhciBmMiA9ICh4KSA9PiB7IHJldHVybiB4
OyB9Oworc2hvdWxkQmUoImYyLnRvU3RyaW5nKCkiLCAiJyh4KSA9PiB7IHJldHVybiB4OyB9JyIp
OworCitkZWJ1ZygndmFyIGYzID0gKHgsIHkpID0+IHsgcmV0dXJuIHggKyB5OyB9OycpOwordmFy
IGYzID0gKHgsIHkpID0+IHsgcmV0dXJuIHggKyB5OyB9Oworc2hvdWxkQmUoImYzLnRvU3RyaW5n
KCkiLCAiJyh4LCB5KSA9PiB7IHJldHVybiB4ICsgeTsgfSciKTsKKworZnVuY3Rpb24gZm9vKHgp
IHsgcmV0dXJuIHgudG9TdHJpbmcoKX07CitkZWJ1ZygnZnVuY3Rpb24gZm9vKHgpIHsgcmV0dXJu
IHgudG9TdHJpbmcoKX07Jyk7CitzaG91bGRCZSgiZm9vKCh4KT0+eCkiLCAiJyh4KT0+eCciKTsK
KwordmFyIGFyckV4cHIgPSBbeT0+eSArIDEsIHg9PnhdOworZGVidWcoJ3ZhciBhcnJFeHByID0g
W3k9PnkgKyAxLCB4PT54XTsnKTsKK3Nob3VsZEJlKCJhcnJFeHByWzBdLnRvU3RyaW5nKCkiLCAi
J3k9PnkgKyAxJyIpOworc2hvdWxkQmUoImFyckV4cHJbMV0udG9TdHJpbmcoKSIsICIneD0+eCci
KTsKKwordmFyIGFyckJvZHkgID0gW3k9PnsgeSArIDEgfSwgeD0+eyB4IH1dOworZGVidWcoJ3Zh
ciBhcnJCb2R5ICA9IFt5PT57IHkgKyAxIH0sIHg9PnsgeCB9XTsnKTsKK3Nob3VsZEJlKCJhcnJC
b2R5WzBdLnRvU3RyaW5nKCkiLCAiJ3k9PnsgeSArIDEgfSciKTsKK3Nob3VsZEJlKCJhcnJCb2R5
WzFdLnRvU3RyaW5nKCkiLCAiJ3g9PnsgeCB9JyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259833</attachid>
            <date>2015-08-25 02:43:16 -0700</date>
            <delta_ts>2015-08-25 12:10:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148148-20150825124305.patch</filename>
            <type>text/plain</type>
            <size>17720</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZTc2MTQ5MWYyMjA4NWQ0NDI1ZjIwMDFhODFiZmYzYTgzODUyYjBjLi5iODE5ZDJiYjEzNmVhMTA3
OTc5YThhNDMzZGEyOTFmNjU3ZmQ5ZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxNS0wOC0yNSBBbGVrc2FuZHIgU2thY2hrb3YgICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgaXMgaW5jb3Jy
ZWN0IGZvciBBcnJvd0Z1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDgxNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKyAgICAgICAgCisgICAgICAgIEFkZGVkIGNvcnJlY3Qgc3VwcG9ydCBvZiB0b1N0cmluZygp
IG1ldGhvZCBmb3IgYXJyb3cgZnVuY3Rpb24uCisKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRl
ci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToK
KyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIpOgorICAg
ICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFO
b2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6Cisg
ICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoK
KyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25NZXRhZGF0YSk6Cisg
ICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZ1
bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLXRvc3RyaW5nLmpzOiBBZGRlZC4KKwogMjAxNS0wOC0xOCAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IExpbmtzIGZv
ciBydWxlcyBpbiA8c3R5bGU+IGFyZSBpbmNvcnJlY3QsIGRvIG5vdCBhY2NvdW50IGZvciA8c3R5
bGU+IG9mZnNldCBpbiB0aGUgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmgKaW5kZXggMzg1MzgzOTRmNmVmODRkZGMyOGVmN2FhMWI0NmNiOGQ5NWQ3Mzcx
Yi4uNWIwOTllYzVjYjRmODZjNmMyNzVmNTQyMTAxZjFhYzhhMTZlN2NmNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTM2MSwxOCArMzYxLDE4IEBAIHB1
YmxpYzoKICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAgICAgICAgdW5zaWduZWQgc3RhcnRD
b2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAg
ICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlu
U3RyaWN0Q29udGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQs
IHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fy
cm93RnVuY3Rpb24pCisgICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVu
c2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93
RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAgICAgewogICAg
ICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAg
ICAgICAgICAgIG1fcGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFy
dENvbHVtbiwgZW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBm
dW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGluU3RyaWN0
Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1
bmN0aW9uKTsKKyAgICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBw
YXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbik7CiAgICAgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycm93RnVu
Y3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1
bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogICAgIHsKICAgICAgICAgdXNl
c1RoaXMoKTsKLSAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4
cHJlc3Npb24oZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0
LCBmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uKTsK
KyAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24o
ZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbkluZm8uYm9keS0+aXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24oKSA/IGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQgLSAxIDogZnVuY3Rp
b25JbmZvLmVuZE9mZnNldCwgZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLmJv
ZHlTdGFydENvbHVtbik7CiAgICAgICAgIEFycm93RnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcg
KG1fcGFyc2VyQXJlbmEpIEFycm93RnVuY0V4cHJOb2RlKGxvY2F0aW9uLCAqZnVuY3Rpb25JbmZv
Lm5hbWUsIGZ1bmN0aW9uSW5mby5ib2R5LCBzb3VyY2UpOwogICAgICAgICBmdW5jdGlvbkluZm8u
Ym9keS0+c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5lbmRMaW5l
LCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5k
ZXggMThmODQ1NTMzMDVjNGEwYzIxYzczMzg4MzljMjlmMjNjNzRkZTkyOC4uZWEzNzYzOTNiNjQ2
N2I1YWQ2M2U2MzJjOWY2ZDNkOTM5MzM4Y2U1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVu
Y3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIHN0YXJ0TG9jYXRpb24sIAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRp
b24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAogICAgIGludCBm
dW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVy
c1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1v
ZGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKQorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9v
bCBpc0Fycm93RnVuY3Rpb24sIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAg
ICAgICAgIDogTm9kZShlbmRMb2NhdGlvbikKICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0
Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKQEAgLTE2NCw2ICsxNjQs
NyBAQCBGdW5jdGlvbk1ldGFkYXRhTm9kZTo6RnVuY3Rpb25NZXRhZGF0YU5vZGUoCiAgICAgICAg
ICwgbV9pc0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0Q29udGV4dCkKICAgICAgICAgLCBtX2Nv
bnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKICAg
ICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihpc0Fycm93RnVuY3Rpb24pCisgICAgICAgICwgbV9p
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbihpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bikKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
CmluZGV4IGVkNWZjMjcyNTM0YTI0NjQyZmQ2MmFlYjFhMWRmOTNlNjhjYWNjMjMuLjQwODA2NGZm
MGQzYzdjZWM2NmJjN2UzYTdiODNjMTBkOGY3ZTcyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmgKQEAgLTE4MTAsNyArMTgxMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwg
dW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICAg
ICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5T
dHJpY3RDb250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIFNv
dXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24pOworICAgICAgICAgICAgQ29uc3Ry
dWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlv
biwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAKICAgICAgICAgdm9pZCBm
aW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rp
b25Nb2RlKTsKICAgICAgICAgCkBAIC0xODM3LDYgKzE4MzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0
cmljdENvbnRleHQ7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgp
IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQp
OyB9CiAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fy
cm93RnVuY3Rpb247IH0KKyAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb247IH0KIAog
ICAgICAgICB2b2lkIHNldExvYyh1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5l
LCBpbnQgc3RhcnRPZmZzZXQsIGludCBsaW5lU3RhcnRPZmZzZXQpCiAgICAgICAgIHsKQEAgLTE4
NjMsNiArMTg2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2lzSW5T
dHJpY3RDb250ZXh0IDogMTsKICAgICAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAy
OwogICAgICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7CisgICAgICAgIHVuc2ln
bmVkIG1faXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiAxOwogICAgIH07CiAKICAgICBj
bGFzcyBGdW5jdGlvbk5vZGUgZmluYWwgOiBwdWJsaWMgU2NvcGVOb2RlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAzMjZiZmQyOTViZDU2MjQ1OTkxMGVhZTg0
MmU4YjA4YzE0YjJlY2E3Li44YTkzNjE1N2IzZjY5NjBiNjNiYTgxZWI0Nzc2ODg2ZmEwMzQ1OThh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xNTQ3LDExICsx
NTQ3LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvCiAgICAgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwgdW5zaWduZWQgcGFyYW1l
dGVyQ291bnQsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgYm9vbCBpc0Fycm93
RnVuY3Rpb24gPSBGdW5jdGlvbkJvZHlUeXBlOjpTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrICE9
IGJvZHlUeXBlOwotICAgIGlmIChib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2Nr
IHx8IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5QmxvY2spIHsKKyAgICBib29sIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gYm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uOworICAgIGlmICghaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pIHsKICAg
ICAgICAgbmV4dCgpOwogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAg
ICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9j
YXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1
bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0
b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb24pOworICAg
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0
aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2Rl
KCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSwgaXNBcnJvd0Z1
bmN0aW9uLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTE1NjMsNyArMTU2NCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvCiAgICAgZWxz
ZQogICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIs
IENoZWNrRm9yU3RyaWN0TW9kZSksIGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5Qmxv
Y2sgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIgOiAiQ2Fubm90IHBhcnNl
IGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9
IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0
YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4s
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0
LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9k
ZSwgaXNBcnJvd0Z1bmN0aW9uKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1l
dGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENv
bHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJz
U3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFy
c2VNb2RlLCBpc0Fycm93RnVuY3Rpb24sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsK
IH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJz
ZU1vZGUgbW9kZSkKQEAgLTE3NjMsNyArMTc2NCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxk
CiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFk
YXRhKAogICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIGZ1bmN0aW9uSW5m
by5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAg
ICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZv
LT5wYXJhbWV0ZXJDb3VudCwgbW9kZSwgaXNBcnJvd0Z1bmN0aW9uKTsKKyAgICAgICAgICAgIGNh
Y2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwgY2FjaGVkSW5mby0+cGFyYW1l
dGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbiwgIGZ1bmN0aW9uQm9keVR5cGUgPT0gQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKICAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uU2Nv
cGUtPnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNoZWRJbmZvKTsKICAgICAgICAg
cG9wU2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5m
byk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNr
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4
IDdhODVkZDJjZDNlNzU0M2VmMDljNmY3MzkyMWQ4NTY0MzY2NTNjNGIuLmQ0NjlhYjhjOTVjNGIy
OTBlYjE4Yzk4ZGRkNzk4MmY5OWNiZGQwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgIENs
YXNzRXhwcmVzc2lvbiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlM
aXN0LCBQcm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQogI2VuZGlmCiAgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNv
bnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9u
RXhwcjsgfQotICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwg
aW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wpIHsg
cmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQorICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFk
YXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwg
aW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3Vy
Y2VQYXJzZU1vZGUsIGJvb2wsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQog
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0
dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50LCBp
bnQpIHsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiBBcmd1bWVudHNSZXN1
bHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmNwcAppbmRleCBkMDgyYjEyY2Y1YmIzMDgzODM0ODQ3YmIwNjQ5ZjBkMzg1MjA1MDg4
Li42YjNhMDk0MjY2Mzg3MWM5NmVlMmY0ZjdmZjg1YzJiM2MzNjY2Njc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC04
OCwxMCArODgsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3Rv
RnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rp
b24tPm5hbWUoZXhlYyksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsKIAogICAgICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxl
KCk7CisgICAgICAgIAorICAgICAgICBTdHJpbmcgZnVuY3Rpb25IZWFkZXIgPSBleGVjdXRhYmxl
LT5pc0Fycm93RnVuY3Rpb24oKSA/ICIiIDogImZ1bmN0aW9uICI7CisgICAgICAgIAogICAgICAg
ICBTdHJpbmcgc291cmNlID0gZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFu
Z2UoCiAgICAgICAgICAgICBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzU3RhcnRPZmZzZXQoKSwKICAg
ICAgICAgICAgIGV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSArIDEpOyAvLyBU
eXBlIHByb2ZpbGluZyBlbmQgb2Zmc2V0IGlzIHRoZSBjaGFyYWN0ZXIgYmVmb3JlIHRoZSAnfScu
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhl
eGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWUoZXhlYyksIHNvdXJjZSkpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgZnVu
Y3Rpb25IZWFkZXIsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpLCBzb3VyY2UpKTsKICAgICB9CiAKICAg
ICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEludGVybmFsRnVuY3Rpb246OmluZm8oKSkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi10b3N0cmluZy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dm
dW5jdGlvbi10b3N0cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTk0OTg0OGU2MTkwNGI2MThkZmNiYTIy
M2Q0NmEwNzU1N2EzZmNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLXRvc3RyaW5nLmpzCkBAIC0wLDAgKzEsMjAgQEAK
K3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7Cisg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVj
dGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQor
fTsKKwordmFyIGFmMSA9ICgpID0+IHt9OwordmFyIGFmMiA9IChhKSA9PiB7IGEgKyAxIH07Cit2
YXIgYWYzID0geCA9PiB4ICsgMTsKK3ZhciBhZjQgPSAoeCwgeSkgPT4geCArIHk7CisKK25vSW5s
aW5lKGFmMSk7Citub0lubGluZShhZjIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyAr
K2kpIHsKKyAgdGVzdENhc2UoYWYxLnRvU3RyaW5nKCksICcoKSA9PiB7fScsICJFcnJvcjogTm90
IGNvcnJlY3QgdG9TdHJpbmcgaW4gYXJyb3cgZnVuY3Rpb24gIzEiKTsKKyAgdGVzdENhc2UoYWYy
LnRvU3RyaW5nKCksICcoYSkgPT4geyBhICsgMSB9JywgIkVycm9yOiBOb3QgY29ycmVjdCB0b1N0
cmluZyBpbiBhcnJvdyBmdW5jdGlvbiAjMiIpOworICB0ZXN0Q2FzZShhZjMudG9TdHJpbmcoKSwg
J3ggPT4geCArIDEnLCAiRXJyb3I6IE5vdCBjb3JyZWN0IHRvU3RyaW5nIGluIGFycm93IGZ1bmN0
aW9uICMzIik7CisgIHRlc3RDYXNlKGFmNC50b1N0cmluZygpLCAnKHgsIHkpID0+IHggKyB5Jywg
IkVycm9yOiBOb3QgY29ycmVjdCB0b1N0cmluZyBpbiBhcnJvdyBmdW5jdGlvbiAjNCIpOworfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDE1ZGNiODc0NjAwMGVmYjE1MzI0NzNlZDk0NzEzMGIyMTA4N2MwNmYuLjRkNjAwNWQx
ZTgzNGMzMTJlNmU3NTJhMTQxMWVmOTI1NWQ4NjJiOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAxNS0wOC0yNSAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNvbT4KKwor
ICAgICAgICBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgaXMgaW5jb3JyZWN0IGZvciBBcnJv
d0Z1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDgxNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCB0ZXN0IG9mIHRvU3RyaW5nKCkgbWV0aG9kLgorCisgICAgICAgICoganMvYXJyb3dm
dW5jdGlvbi10b3N0cmluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93
ZnVuY3Rpb24tdG9zdHJpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3Rz
L2Fycm93ZnVuY3Rpb24tdG9zdHJpbmcuanM6IEFkZGVkLgorCiAyMDE1LTA4LTE4ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBQdW5j
dHVhdGlvbiBuZWFyIEhpbmRpIHRleHQgaXMgZ2FyYmxlZCB3aGVuIHN0eWxlZCB3aXRoIHRoZSBz
eXN0ZW0gZm9udApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi10b3N0
cmluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXRvc3RyaW5n
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTlhNGQ1OTFiZjFiZGQ4OTJmMDIwMDE4ZGQ3ZWQ5
ODc3NTRjMDZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlv
bi10b3N0cmluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMiBAQAorVGVzdHMgZm9yIEVTNiBh
cnJvdyBmdW5jdGlvbiB0b1N0cmluZygpIG1ldGhvZAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKwordmFyIHNpbXBsZUFycm93RnVuY3Rpb24gPSAoKSA9PiB7fQorUEFTUyBzaW1wbGVB
cnJvd0Z1bmN0aW9uLnRvU3RyaW5nKCkgaXMgJygpID0+IHt9JworUEFTUyAoKHgpID0+IHsgeCAr
IDEgfSkudG9TdHJpbmcoKSBpcyAnKHgpID0+IHsgeCArIDEgfScKK1BBU1MgKHggPT4geCArIDEp
LnRvU3RyaW5nKCkgaXMgJ3ggPT4geCArIDEnCit2YXIgZjAgPSB4ID0+IHgKK1BBU1MgZjAudG9T
dHJpbmcoKSBpcyAneCA9PiB4JwordmFyIGYxID0gKCkgPT4gdGhpcworUEFTUyBmMS50b1N0cmlu
ZygpIGlzICcoKSA9PiB0aGlzJwordmFyIGYyID0geCA9PiB7IHJldHVybiB4OyB9OworUEFTUyBm
Mi50b1N0cmluZygpIGlzICcoeCkgPT4geyByZXR1cm4geDsgfScKK3ZhciBmMyA9ICh4LCB5KSA9
PiB7IHJldHVybiB4ICsgeTsgfTsKK1BBU1MgZjMudG9TdHJpbmcoKSBpcyAnKHgsIHkpID0+IHsg
cmV0dXJuIHggKyB5OyB9JworZnVuY3Rpb24gZm9vKHgpIHsgcmV0dXJuIHgudG9TdHJpbmcoKX07
CitQQVNTIGZvbygoeCk9PngpIGlzICcoeCk9PngnCit2YXIgYSA9IHogPT4geioyLCBiID0gKCkg
PT4gKHt9KTsKK1BBU1MgYS50b1N0cmluZygpIGlzICd6ID0+IHoqMicKK1BBU1MgYi50b1N0cmlu
ZygpIGlzICcoKSA9PiAoe30pJwordmFyIGFyckV4cHIgPSBbeT0+eSArIDEsIHg9PnhdOworUEFT
UyBhcnJFeHByWzBdLnRvU3RyaW5nKCkgaXMgJ3k9PnkgKyAxJworUEFTUyBhcnJFeHByWzFdLnRv
U3RyaW5nKCkgaXMgJ3g9PngnCit2YXIgYXJyQm9keSAgPSBbeT0+eyB5ICsgMSB9LCB4PT57IHgg
fV07CitQQVNTIGFyckJvZHlbMF0udG9TdHJpbmcoKSBpcyAneT0+eyB5ICsgMSB9JworUEFTUyBh
cnJCb2R5WzFdLnRvU3RyaW5nKCkgaXMgJ3g9PnsgeCB9JworUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2Fycm93ZnVuY3Rpb24tdG9zdHJpbmcuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tdG9zdHJpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OWY4YjBjM2NmYTM0MzQ3MmViYzQwZWRjMmU5
OGRlZDhmOTg2YjM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5j
dGlvbi10b3N0cmluZy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRvc3RyaW5nLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9hcnJvd2Z1bmN0aW9uLXRvc3RyaW5nLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2Fycm93ZnVuY3Rpb24tdG9zdHJpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjg5Y2U0MDU2OGNlOWMy
NWVhMzIxNjdkYTk5MDZiMjIyOWMzNTQ3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXRvc3RyaW5nLmpzCkBAIC0wLDAgKzEsNDUg
QEAKKy8vIEluc3BpcmVkIGJ5IG1vemlsbGEgdGVzdHMKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3Ig
RVM2IGFycm93IGZ1bmN0aW9uIHRvU3RyaW5nKCkgbWV0aG9kJyk7CisKK2RlYnVnKCd2YXIgc2lt
cGxlQXJyb3dGdW5jdGlvbiA9ICgpID0+IHt9Jyk7Cit2YXIgc2ltcGxlQXJyb3dGdW5jdGlvbiA9
ICgpID0+IHt9Oworc2hvdWxkQmUoInNpbXBsZUFycm93RnVuY3Rpb24udG9TdHJpbmcoKSIsICIn
KCkgPT4ge30nIik7CitzaG91bGRCZSgiKCh4KSA9PiB7IHggKyAxIH0pLnRvU3RyaW5nKCkiLCAi
Jyh4KSA9PiB7IHggKyAxIH0nIik7CitzaG91bGRCZSgiKHggPT4geCArIDEpLnRvU3RyaW5nKCki
LCAiJ3ggPT4geCArIDEnIik7CisKK2RlYnVnKCd2YXIgZjAgPSB4ID0+IHgnKTsKK3ZhciBmMCA9
IHggPT4geDsKK3Nob3VsZEJlKCJmMC50b1N0cmluZygpIiwgIid4ID0+IHgnIik7CisKK2RlYnVn
KCd2YXIgZjEgPSAoKSA9PiB0aGlzJyk7Cit2YXIgZjEgPSAoKSA9PiB0aGlzOworc2hvdWxkQmUo
ImYxLnRvU3RyaW5nKCkiLCAiJygpID0+IHRoaXMnIik7CisKK2RlYnVnKCd2YXIgZjIgPSB4ID0+
IHsgcmV0dXJuIHg7IH07Jyk7Cit2YXIgZjIgPSAoeCkgPT4geyByZXR1cm4geDsgfTsKK3Nob3Vs
ZEJlKCJmMi50b1N0cmluZygpIiwgIicoeCkgPT4geyByZXR1cm4geDsgfSciKTsKKworZGVidWco
J3ZhciBmMyA9ICh4LCB5KSA9PiB7IHJldHVybiB4ICsgeTsgfTsnKTsKK3ZhciBmMyA9ICh4LCB5
KSA9PiB7IHJldHVybiB4ICsgeTsgfTsKK3Nob3VsZEJlKCJmMy50b1N0cmluZygpIiwgIicoeCwg
eSkgPT4geyByZXR1cm4geCArIHk7IH0nIik7CisKK2Z1bmN0aW9uIGZvbyh4KSB7IHJldHVybiB4
LnRvU3RyaW5nKCl9OworZGVidWcoJ2Z1bmN0aW9uIGZvbyh4KSB7IHJldHVybiB4LnRvU3RyaW5n
KCl9OycpOworc2hvdWxkQmUoImZvbygoeCk9PngpIiwgIicoeCk9PngnIik7CisKK3ZhciBhID0g
eiA9PiB6KjIsIGIgPSAoKSA9PiAoe30pOworZGVidWcoJ3ZhciBhID0geiA9PiB6KjIsIGIgPSAo
KSA9PiAoe30pOycpOworc2hvdWxkQmUoImEudG9TdHJpbmcoKSIsICIneiA9PiB6KjInIik7Citz
aG91bGRCZSgiYi50b1N0cmluZygpIiwgIicoKSA9PiAoe30pJyIpOworCit2YXIgYXJyRXhwciA9
IFt5PT55ICsgMSwgeD0+eF07CitkZWJ1ZygndmFyIGFyckV4cHIgPSBbeT0+eSArIDEsIHg9Pnhd
OycpOworc2hvdWxkQmUoImFyckV4cHJbMF0udG9TdHJpbmcoKSIsICIneT0+eSArIDEnIik7Citz
aG91bGRCZSgiYXJyRXhwclsxXS50b1N0cmluZygpIiwgIid4PT54JyIpOworCit2YXIgYXJyQm9k
eSAgPSBbeT0+eyB5ICsgMSB9LCB4PT57IHggfV07CitkZWJ1ZygndmFyIGFyckJvZHkgID0gW3k9
PnsgeSArIDEgfSwgeD0+eyB4IH1dOycpOworc2hvdWxkQmUoImFyckJvZHlbMF0udG9TdHJpbmco
KSIsICIneT0+eyB5ICsgMSB9JyIpOworc2hvdWxkQmUoImFyckJvZHlbMV0udG9TdHJpbmcoKSIs
ICIneD0+eyB4IH0nIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>