<?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>153864</bug_id>
          
          <creation_ts>2016-02-04 03:45:25 -0800</creation_ts>
          <short_desc>Invoking super()/super inside of the eval should not lead to SyntaxError</short_desc>
          <delta_ts>2016-03-17 12:46:54 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>140491</blocked>
    
    <blocked>140855</blocked>
    
    <blocked>154027</blocked>
    
    <blocked>155491</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="GSkachkov">gskachkov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1161967</commentid>
    <comment_count>0</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-02-04 03:45:25 -0800</bug_when>
    <thetext>Following case should not lead to Syntax Error:
class A {
}
class B extends A {
  constructor() {
    eval(&quot;eval(&apos;super()&apos;)&quot;);
  }
}

new B();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162838</commentid>
    <comment_count>1</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-02-07 23:46:31 -0800</bug_when>
    <thetext>Following case should not lead to Syntax Error:

const defaultValue = &apos;default-value&apos;;

class A {
  setDefaultValue() {
      this.value = defaultValue;
  }
}

class B extends A {
  constructor() {
    eval(&quot;super()&quot;);
  }
  setValue () {
      eval(&quot;super.setDefaultValue()&quot;);
  }
}

let b = new B();
b.setValue();
b.id === defaultValue;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171450</commentid>
    <comment_count>2</comment_count>
      <attachid>273142</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-03-06 13:01:35 -0800</bug_when>
    <thetext>Created attachment 273142
Patch

Patch, more test will be later</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171896</commentid>
    <comment_count>3</comment_count>
      <attachid>273142</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-07 19:04:13 -0800</bug_when>
    <thetext>Comment on attachment 273142
Patch

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

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:307
&gt; +            return !(m_codeBlock-&gt;isArrowFunction() || m_codeType == EvalCode) || m_isNewTargetLoadedInArrowFunction
&gt;                  ? m_newTargetRegister : emitLoadNewTargetFromArrowFunctionLexicalEnvironment();

This function is getting hard to read. I vote for an if statement here.
Also, I found a bug in the logic of caching here:
https://bugs.webkit.org/show_bug.cgi?id=155153

&gt; Source/JavaScriptCore/parser/Parser.cpp:2068
&gt; +            ConstructorKind functionConstructorKind = functionBodyType == StandardFunctionBodyBlock &amp;&amp; !m_isEvalContext

Don&apos;t we already know if we&apos;re parsing an eval?
Why do we need m_isEvalContext?
Maybe I&apos;m mistaken.

&gt; Source/JavaScriptCore/parser/Parser.cpp:3820
&gt; +        semanticFailIfFalse(currentScope()-&gt;isFunction() || (m_isEvalContext &amp;&amp; closestParentOrdinaryFunctionNonLexicalScope()-&gt;expectedSuperBinding() == SuperBinding::Needed), &quot;super is only valid inside functions&quot;);

This error message should be updated.

&gt; Source/JavaScriptCore/runtime/CodeCache.cpp:104
&gt; +    bool isEvalConext = true;

This is definitely not true. This should probably be a parameter to this function.

&gt; Source/JavaScriptCore/tests/stress/arrowfunction-lexical-bind-superproperty.js:232
&gt; +class K extends A {

let&apos;s have some eval tests inside a constructor.
tests for TDZ, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174969</commentid>
    <comment_count>4</comment_count>
      <attachid>274093</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-03-15 07:14:20 -0700</bug_when>
    <thetext>Created attachment 274093
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174997</commentid>
    <comment_count>5</comment_count>
      <attachid>273142</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-03-15 09:49:56 -0700</bug_when>
    <thetext>Comment on attachment 273142
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:307
&gt;&gt;                  ? m_newTargetRegister : emitLoadNewTargetFromArrowFunctionLexicalEnvironment();
&gt; 
&gt; This function is getting hard to read. I vote for an if statement here.
&gt; Also, I found a bug in the logic of caching here:
&gt; https://bugs.webkit.org/show_bug.cgi?id=155153

OK. It will be overwritten in fix of the 155153

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:2068
&gt;&gt; +            ConstructorKind functionConstructorKind = functionBodyType == StandardFunctionBodyBlock &amp;&amp; !m_isEvalContext
&gt; 
&gt; Don&apos;t we already know if we&apos;re parsing an eval?
&gt; Why do we need m_isEvalContext?
&gt; Maybe I&apos;m mistaken.

In new patch,  I&apos;ve used isEvalNode template function that is deepest place where I can check EvalNode.

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:3820
&gt;&gt; +        semanticFailIfFalse(currentScope()-&gt;isFunction() || (m_isEvalContext &amp;&amp; closestParentOrdinaryFunctionNonLexicalScope()-&gt;expectedSuperBinding() == SuperBinding::Needed), &quot;super is only valid inside functions&quot;);
&gt; 
&gt; This error message should be updated.

Yeah, I&apos;ve created issue https://bugs.webkit.org/show_bug.cgi?id=155491. There is several tests that rely on this &apos;text&apos;, so I decided to separate this change is another patch.

&gt;&gt; Source/JavaScriptCore/runtime/CodeCache.cpp:104
&gt;&gt; +    bool isEvalConext = true;
&gt; 
&gt; This is definitely not true. This should probably be a parameter to this function.

Removed

&gt;&gt; Source/JavaScriptCore/tests/stress/arrowfunction-lexical-bind-superproperty.js:232
&gt;&gt; +class K extends A {
&gt; 
&gt; let&apos;s have some eval tests inside a constructor.
&gt; tests for TDZ, etc.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175257</commentid>
    <comment_count>6</comment_count>
      <attachid>274093</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-15 20:03:37 -0700</bug_when>
    <thetext>Comment on attachment 274093
Patch

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

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:643
&gt; +    if (needsToUpdateArrowFunctionContext() &amp;&amp; !codeBlock-&gt;isArrowFunctionContext() &amp;&amp; !isDerivedConstructorContext()) {

Why the &quot;!isDerivedConstructorContext()&quot; check?

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:4145
&gt; +    return m_scopeNode-&gt;doAnyInnerArrowFunctionsUseNewTarget() || m_scopeNode-&gt;doAnyInnerArrowFunctionsUseSuperCall() || m_scopeNode-&gt;doAnyInnerArrowFunctionsUseEval() || m_codeBlock-&gt;usesEval();

I believe m_codeBlock-&gt;usesEval() should always be true if m_scopeNode-&gt;doAnyInnerAroowFunctionsUseEval().
You should double check though.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:4150
&gt; +    return m_scopeNode-&gt;doAnyInnerArrowFunctionsUseSuperCall() || m_scopeNode-&gt;doAnyInnerArrowFunctionsUseSuperProperty() || m_scopeNode-&gt;doAnyInnerArrowFunctionsUseEval() || m_codeBlock-&gt;usesEval();

ditto

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:4155
&gt; +    return m_scopeNode-&gt;doAnyInnerArrowFunctionsUseSuperCall() || m_scopeNode-&gt;doAnyInnerArrowFunctionsUseEval() || m_codeBlock-&gt;usesEval();

ditto

&gt; Source/JavaScriptCore/parser/Parser.cpp:3848
&gt; +        // TODO: Change error message for more suitable. https://bugs.webkit.org/show_bug.cgi?id=155491 

Style: FIXME not TODO</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175320</commentid>
    <comment_count>7</comment_count>
      <attachid>274093</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-16 00:57:14 -0700</bug_when>
    <thetext>Comment on attachment 274093
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        Invoking super()/super inside of the eval should not lead to SyntaxError

Do we have a bug open for new.target inside eval?

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:643
&gt;&gt; +    if (needsToUpdateArrowFunctionContext() &amp;&amp; !codeBlock-&gt;isArrowFunctionContext() &amp;&amp; !isDerivedConstructorContext()) {
&gt; 
&gt; Why the &quot;!isDerivedConstructorContext()&quot; check?

Ah, I guess it&apos;s that way so we don&apos;t recreate a scope. I think I understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175405</commentid>
    <comment_count>8</comment_count>
      <attachid>274093</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-03-16 11:16:54 -0700</bug_when>
    <thetext>Comment on attachment 274093
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:3
&gt;&gt; +        Invoking super()/super inside of the eval should not lead to SyntaxError
&gt; 
&gt; Do we have a bug open for new.target inside eval?

Yes, I did this recently
 https://bugs.webkit.org/show_bug.cgi?id=155545

&gt;&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:643
&gt;&gt;&gt; +    if (needsToUpdateArrowFunctionContext() &amp;&amp; !codeBlock-&gt;isArrowFunctionContext() &amp;&amp; !isDerivedConstructorContext()) {
&gt;&gt; 
&gt;&gt; Why the &quot;!isDerivedConstructorContext()&quot; check?
&gt; 
&gt; Ah, I guess it&apos;s that way so we don&apos;t recreate a scope. I think I understand.

Yes, that is correct. It is for this case: 
class C {};
class D extends C {
  constructor() {
    eval(&quot;(()=&gt;super())()&quot;);//Error
  }
}
new D();
Otherwise we will have two context scope for &apos;this&apos;. I&apos;ve spend last three evenings to find out why mention simple test case did not work

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:4145
&gt;&gt; +    return m_scopeNode-&gt;doAnyInnerArrowFunctionsUseNewTarget() || m_scopeNode-&gt;doAnyInnerArrowFunctionsUseSuperCall() || m_scopeNode-&gt;doAnyInnerArrowFunctionsUseEval() || m_codeBlock-&gt;usesEval();
&gt; 
&gt; I believe m_codeBlock-&gt;usesEval() should always be true if m_scopeNode-&gt;doAnyInnerAroowFunctionsUseEval().
&gt; You should double check though.

It is true, but unfortunately this patch cover cases when we do not have arrow function, for instance from previous comments, so I need to check m_codeBlock-&gt;usesEval(). Possible we need to change name of the function isNewTargetUsedInInnerArrowFunction -&gt; isNewTargetUsedInInnerArrowFunctionOrEval

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:4150
&gt;&gt; +    return m_scopeNode-&gt;doAnyInnerArrowFunctionsUseSuperCall() || m_scopeNode-&gt;doAnyInnerArrowFunctionsUseSuperProperty() || m_scopeNode-&gt;doAnyInnerArrowFunctionsUseEval() || m_codeBlock-&gt;usesEval();
&gt; 
&gt; ditto

The same

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:4155
&gt;&gt; +    return m_scopeNode-&gt;doAnyInnerArrowFunctionsUseSuperCall() || m_scopeNode-&gt;doAnyInnerArrowFunctionsUseEval() || m_codeBlock-&gt;usesEval();
&gt; 
&gt; ditto

The same

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:3848
&gt;&gt; +        // TODO: Change error message for more suitable. https://bugs.webkit.org/show_bug.cgi?id=155491 
&gt; 
&gt; Style: FIXME not TODO

Will be updated in next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175423</commentid>
    <comment_count>9</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-16 11:46:18 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 274093 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=274093&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:3
&gt; &gt;&gt; +        Invoking super()/super inside of the eval should not lead to SyntaxError
&gt; &gt; 
&gt; &gt; Do we have a bug open for new.target inside eval?
&gt; 
&gt; Yes, I did this recently
&gt;  https://bugs.webkit.org/show_bug.cgi?id=155545
&gt; 
&gt; &gt;&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:643
&gt; &gt;&gt;&gt; +    if (needsToUpdateArrowFunctionContext() &amp;&amp; !codeBlock-&gt;isArrowFunctionContext() &amp;&amp; !isDerivedConstructorContext()) {
&gt; &gt;&gt; 
&gt; &gt;&gt; Why the &quot;!isDerivedConstructorContext()&quot; check?
&gt; &gt; 
&gt; &gt; Ah, I guess it&apos;s that way so we don&apos;t recreate a scope. I think I understand.
&gt; 
&gt; Yes, that is correct. It is for this case: 
&gt; class C {};
&gt; class D extends C {
&gt;   constructor() {
&gt;     eval(&quot;(()=&gt;super())()&quot;);//Error
&gt;   }
&gt; }
&gt; new D();
&gt; Otherwise we will have two context scope for &apos;this&apos;. I&apos;ve spend last three
&gt; evenings to find out why mention simple test case did not work
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:4145
&gt; &gt;&gt; +    return m_scopeNode-&gt;doAnyInnerArrowFunctionsUseNewTarget() || m_scopeNode-&gt;doAnyInnerArrowFunctionsUseSuperCall() || m_scopeNode-&gt;doAnyInnerArrowFunctionsUseEval() || m_codeBlock-&gt;usesEval();
&gt; &gt; 
&gt; &gt; I believe m_codeBlock-&gt;usesEval() should always be true if m_scopeNode-&gt;doAnyInnerAroowFunctionsUseEval().
&gt; &gt; You should double check though.
&gt; 
&gt; It is true, but unfortunately this patch cover cases when we do not have
&gt; arrow function, for instance from previous comments, so I need to check
&gt; m_codeBlock-&gt;usesEval(). Possible we need to change name of the function
&gt; isNewTargetUsedInInnerArrowFunction -&gt;
&gt; isNewTargetUsedInInnerArrowFunctionOrEval

What I mean is shouldn&apos;t it be sufficient to just check m_codeBlock-&gt;usesEval()?
It should never be the case that m_scopeNode-&gt;innerArrowEval() is true but m_codeBlock-&gt;usesEval() is false.
Therefore, m_codeBlock-&gt;usesEval() should cover everything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175463</commentid>
    <comment_count>10</comment_count>
      <attachid>274212</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-03-16 13:11:35 -0700</bug_when>
    <thetext>Created attachment 274212
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175476</commentid>
    <comment_count>11</comment_count>
      <attachid>274093</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-03-16 13:31:40 -0700</bug_when>
    <thetext>Comment on attachment 274093
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:3
&gt;&gt;&gt;&gt; +        Invoking super()/super inside of the eval should not lead to SyntaxError
&gt;&gt;&gt; 
&gt;&gt;&gt; Do we have a bug open for new.target inside eval?
&gt;&gt; 
&gt;&gt; Yes, I did this recently
&gt;&gt;  https://bugs.webkit.org/show_bug.cgi?id=155545
&gt; 
&gt; What I mean is shouldn&apos;t it be sufficient to just check m_codeBlock-&gt;usesEval()?
&gt; It should never be the case that m_scopeNode-&gt;innerArrowEval() is true but m_codeBlock-&gt;usesEval() is false.
&gt; Therefore, m_codeBlock-&gt;usesEval() should cover everything.

Hmm, before it was not, innerArrow... is set only for arrow functions and usesEval only if in current function/block we are using eval. So as for now:
  m_codeBlock-&gt;usesEval() is true but m_scopeNode-innerArrowEval() is false for this case -&gt; var f = function () { eval(&apos;debug(&quot;hello world&quot;)&apos;); }; f();
  m_codeBlock-&gt;usesEval() is false but m_scopeNode-&gt;innerArrowEval() true for case -&gt; var f = function () { var arr = () =&gt; () =&gt;  eval(&apos;debug(&quot;hello world&quot;)&apos;); }; f();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175820</commentid>
    <comment_count>12</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-03-17 12:46:09 -0700</bug_when>
    <thetext>Committed r198324: &lt;http://trac.webkit.org/changeset/198324&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175821</commentid>
    <comment_count>13</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-03-17 12:46:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273142</attachid>
            <date>2016-03-06 13:01:35 -0800</date>
            <delta_ts>2016-03-15 07:14:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153864-20160306230119.patch</filename>
            <type>text/plain</type>
            <size>25221</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NThiZDdjYjY4M2NmNzZjZGI5ZDNiZWIyZDc1Mjc4NmJkYjc0ZDc2Li4zOTllOGI4NTI4ZDg2MWRm
ZWI3NTAxMDEzNzFhM2QzNjljNmU2NDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxNi0wMy0wNiAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBJbnZva2luZyBzdXBlcigpL3N1cGVyIGluc2lkZSBvZiB0aGUg
ZXZhbCBzaG91bGQgbm90IGxlYWQgdG8gU3ludGF4RXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mzg2NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgb2YgdGhlIGludm9raW5n
IHN1cGVyL3N1cGVyKCkgaW5zaWRlIG9mIHRoZSBldmFsIHdpdGhpbiBjbGFzcy4KKyAgICAgICAg
QWxzbyBzdXBwb3J0IGNhc2VzIHdoZW4gZXZhbCBpcyBpbnZva2VkIGluIGNvbnN0cnVjdG9yLCBj
bGFzcyBtZXRob2QgZGlyZWN0bHkgCisgICAgICAgIG9yIHZpYSBhcnJvdyBmdW5jdGlvbgorCisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVu
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppc05ld1RhcmdldFVzZWRJbklu
bmVyQXJyb3dGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppc1N1
cGVyVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmlzU3VwZXJDYWxsVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRUaGlzVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNj
b3BlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om5ld1RhcmdldCk6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKiBw
YXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OlBhcnNl
cik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Npb24p
OgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6cGFyc2UpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRHbG9iYWxDb2RlQmxvY2spOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWxleGljYWwtYmluZC1zdXBlcmNhbGwtNC5qczoKKyAgICAgICAgKEMpOgorICAgICAgICAqIHRl
c3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcnByb3BlcnR5LmpzOgor
ICAgICAgICAoSy5wcm90b3R5cGUubmV3TWV0aG9kQXJyb3dFdmFsKToKKyAgICAgICAgKEsucHJv
dG90eXBlLm5ld01ldGhvZEFycm93RG91YmxlRXZhbCk6CisgICAgICAgIChLLnByb3RvdHlwZS5u
ZXdNZXRob2RBcnJvd0V2YWxFdmFsQXJyb3cpOgorICAgICAgICAoSy5wcm90b3R5cGUubmV3TWV0
aG9kQXJyb3dFdmFsRXZhbEFycm93RXZhbCk6CisgICAgICAgIChLLnByb3RvdHlwZS5uZXdNZXRo
b2RFdmFsKToKKyAgICAgICAgKEsucHJvdG90eXBlLm5ld01ldGhvZEV2YWxFdmFsKToKKyAgICAg
ICAgKEsucHJvdG90eXBlLm5ld01ldGhvZEV2YWxBcnJvdyk6CisgICAgICAgIChLLnByb3RvdHlw
ZS5uZXdNZXRob2RFdmFsRXZhbEFycm93KToKKyAgICAgICAgKEsucHJvdG90eXBlLm5ld01ldGhv
ZEV2YWxFdmFsQXJyb3dFdmFsKToKKyAgICAgICAgKEspOgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qczoKKwogMjAxNi0wMy0wNCAgU2thY2hrb3YgT2xla3Nh
bmRyICA8Z3NrYWNoa292QGdtYWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlv
biBzeW50YXguIExleGljYWwgYmluZCAic3VwZXIiIGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rp
b24gaW4gZ2VuZXJhdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA0MmYyYTdmOTdjYTlkODVjOTE0
NmJiN2ZkZGEzNDRmY2VmMTBjYjNmLi42N2NhYmI3ZjdjNjE0NjgxZTk3YzM1YzNmMzNiNWY0ZjI2
OTQ1Y2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNjIyLDEwICs2MjIsMTMgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBV
bmxpbmtlZEV2YWxDb2QKICAgICAgICAgdmFyaWFibGVzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9t
VWlkKG1fdm0sIGVudHJ5LmtleS5nZXQoKSkpOwogICAgIH0KICAgICBjb2RlQmxvY2stPmFkb3B0
VmFyaWFibGVzKHZhcmlhYmxlcyk7Ci0KKyAgICAKKyAgICBpZiAoZXZhbE5vZGUtPnVzZXNTdXBl
ckNhbGwoKSkKKyAgICAgICAgbV9uZXdUYXJnZXRSZWdpc3RlciA9IGFkZFZhcigpOworICAgIAog
ICAgIG1fVERaU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKCpwYXJlbnRTY29wZVREWlZhcmlh
YmxlcywgZmFsc2UpKTsKIAotICAgIGlmIChjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQoKSAmJiBldmFsTm9kZS0+dXNlc1RoaXMoKSkKKyAgICBpZiAoY29kZUJsb2NrLT5pc0Fycm93
RnVuY3Rpb25Db250ZXh0KCkgJiYgKGV2YWxOb2RlLT51c2VzVGhpcygpIHx8IGV2YWxOb2RlLT51
c2VzU3VwZXJQcm9wZXJ0eSgpKSkKICAgICAgICAgZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rp
b25MZXhpY2FsRW52aXJvbm1lbnQoKTsKIAogICAgIGlmIChuZWVkc1RvVXBkYXRlQXJyb3dGdW5j
dGlvbkNvbnRleHQoKSAmJiAhY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb25Db250ZXh0KCkpIHsK
QEAgLTQwMDksNyArNDAxMiw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnBvcEluZGV4ZWRG
b3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0ZXIpCiAKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0TG9hZEFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoY29u
c3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQobV9jb2RlQmxvY2stPmlz
QXJyb3dGdW5jdGlvbigpIHx8IG1fY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb25Db250ZXh0KCkg
fHwgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKTsKKyAgICBB
U1NFUlQobV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpIHx8IG1fY29kZUJsb2NrLT5pc0Fy
cm93RnVuY3Rpb25Db250ZXh0KCkgfHwgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JL
aW5kOjpEZXJpdmVkIHx8IG1fY29kZVR5cGUgPT0gRXZhbENvZGUpOwogCiAgICAgcmV0dXJuIGVt
aXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyaWFibGUoaWRlbnRpZmllciwgVGhpc1Jlc29sdXRp
b25UeXBlOjpTY29wZWQpKTsKIH0KQEAgLTQwNDcsMTcgKzQwNTAsMTcgQEAgYm9vbCBCeXRlY29k
ZUdlbmVyYXRvcjo6aXNBcmd1bWVudHNVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKQogCiBib29s
IEJ5dGVjb2RlR2VuZXJhdG9yOjppc05ld1RhcmdldFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigp
CiB7Ci0gICAgcmV0dXJuIG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VO
ZXdUYXJnZXQoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlU3Vw
ZXJDYWxsKCk7CisgICAgcmV0dXJuIG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlv
bnNVc2VOZXdUYXJnZXQoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25z
VXNlU3VwZXJDYWxsKCkgfHwgbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1Vz
ZUV2YWwoKSB8fCBtX2NvZGVCbG9jay0+dXNlc0V2YWwoKTsKIH0KIAogYm9vbCBCeXRlY29kZUdl
bmVyYXRvcjo6aXNTdXBlclVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpCiB7Ci0gICAgcmV0dXJu
IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VTdXBlckNhbGwoKSB8fCBt
X3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlU3VwZXJQcm9wZXJ0eSgpOwor
ICAgIHJldHVybiBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlU3VwZXJD
YWxsKCkgfHwgbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZVN1cGVyUHJv
cGVydHkoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlRXZhbCgp
IHx8IG1fY29kZUJsb2NrLT51c2VzRXZhbCgpOwogfQogCiBib29sIEJ5dGVjb2RlR2VuZXJhdG9y
Ojppc1N1cGVyQ2FsbFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpCiB7Ci0gICAgcmV0dXJuIG1f
c2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VTdXBlckNhbGwoKTsKKyAgICBy
ZXR1cm4gbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZVN1cGVyQ2FsbCgp
IHx8IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VFdmFsKCkgfHwgbV9j
b2RlQmxvY2stPnVzZXNFdmFsKCk7CiB9CiAgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHV0TmV3VGFyZ2V0VG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCkKQEAgLTQwODQsNyAr
NDA4Nyw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXREZXJpdmVkQ29uc3RydWN0
b3JUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUoKQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UHV0VGhpc1RvQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgpCiB7Ci0gICAgaWYgKGlz
VGhpc1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSB7CisgICAgaWYgKGlzVGhpc1VzZWRJbklu
bmVyQXJyb3dGdW5jdGlvbigpIHx8IChtX3Njb3BlTm9kZS0+dXNlc1N1cGVyQ2FsbCgpICYmIG1f
Y29kZVR5cGUgPT0gRXZhbENvZGUpKSB7CiAgICAgICAgIEFTU0VSVChpc0Rlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQoKSB8fCBtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNhbEVudmlyb25tZW50
UmVnaXN0ZXIgIT0gbnVsbHB0cik7CiAKICAgICAgICAgVmFyaWFibGUgdGhpc1ZhciA9IHZhcmlh
YmxlKHByb3BlcnR5TmFtZXMoKS50aGlzSWRlbnRpZmllciwgVGhpc1Jlc29sdXRpb25UeXBlOjpT
Y29wZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDgwZWVlN2NlYjJiZjVmYjJmNTM3Y2U1MjZjMDQxNzg0
NDU5OGVkOWYuLjNkZDc1NzJkY2UzOWVhY2E3MzAxZTA2NzYwNjk0NGU0NTY5NzQ1OTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKQEAgLTMwMyw3ICszMDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVn
aXN0ZXJJRCogYXJndW1lbnRzUmVnaXN0ZXIoKSB7IHJldHVybiBtX2FyZ3VtZW50c1JlZ2lzdGVy
OyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIG5ld1RhcmdldCgpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiAhbV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpIHx8IG1faXNOZXdUYXJn
ZXRMb2FkZWRJbkFycm93RnVuY3Rpb24KKyAgICAgICAgICAgIHJldHVybiAhKG1fY29kZUJsb2Nr
LT5pc0Fycm93RnVuY3Rpb24oKSB8fCBtX2NvZGVUeXBlID09IEV2YWxDb2RlKSB8fCBtX2lzTmV3
VGFyZ2V0TG9hZGVkSW5BcnJvd0Z1bmN0aW9uCiAgICAgICAgICAgICAgICAgPyBtX25ld1Rhcmdl
dFJlZ2lzdGVyIDogZW1pdExvYWROZXdUYXJnZXRGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZp
cm9ubWVudCgpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDJiZDk4OTM0NjFjZWUyZDdiMjM4N2ZiMTZh
YWVlYjdhYjk2ZTJmYTcuLjdjOWU5NTkwMWJhNDU1Yzg1OWU0N2EwOWVhZjJkZmYxYWU5M2U1ZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcApAQCAtMTgxLDggKzE4MSwxNyBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiAgICAgICAgIAogICAgICAgICAvLyBJZiB0aGUgbGl0ZXJhbCBwYXJzZXIgYmFpbGVkLCBp
dCBzaG91bGQgbm90IGhhdmUgdGhyb3duIGV4Y2VwdGlvbnMuCiAgICAgICAgIEFTU0VSVCghY2Fs
bEZyYW1lLT52bSgpLmV4Y2VwdGlvbigpKTsKKyAgICAgICAgYm9vbCBpc0luQXJyb3dGdW5jdGlv
bkNvbnRleHQgPSBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dG
dW5jdGlvbigpIHx8IGNhbGxlckNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCgpOwogCi0gICAgICAgIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2
YWxDb2RlQ2FjaGUoKS5nZXRTbG93KGNhbGxGcmFtZSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZXJD
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCB0aGlzVERaTW9kZSwgY2FsbGVyQ29kZUJsb2NrLT51
bmxpbmtlZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY2FsbGVyQ29kZUJsb2Nr
LT51bmxpbmtlZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgc291cmNlQ29kZSwgY2Fs
bGVyU2NvcGVDaGFpbik7CisgICAgICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4
dFR5cGUgPSBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRDb250
ZXh0VHlwZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFpc0luQXJyb3dGdW5jdGlvbkNvbnRl
eHQgJiYgY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5pc0NsYXNzQ29udGV4
dCgpKSB7CisgICAgICAgICAgICBkZXJpdmVkQ29udGV4dFR5cGUgPSBjYWxsZXJDb2RlQmxvY2st
PnVubGlua2VkQ29kZUJsb2NrKCktPmlzQ29uc3RydWN0b3IoKQorICAgICAgICAgICAgICAgID8g
RGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0CisgICAgICAgICAg
ICAgICAgOiBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRNZXRob2RDb250ZXh0OworICAgICAg
ICB9CisKKyAgICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdl
dFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlckNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCksIHRoaXNURFpNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzSW5BcnJvd0Z1bmN0
aW9uQ29udGV4dCwgc291cmNlQ29kZSwgY2FsbGVyU2NvcGVDaGFpbik7CiAKICAgICAgICAgaWYg
KCFldmFsKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggZGZmOWQwNWRkMDQ2NzZjYTkwZjk1NjcxZGNk
MDcwMDBmY2M4MTk2Ny4uYzZjZjNiNTQ1ZDkzMDI1NWFkZDYwNzY5ZmRlOTMyYmNmMTk5NGJkZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMTkyLDEwICsxOTIs
NyBAQCB2b2lkIFBhcnNlcjxMZXhlclR5cGU+Ojpsb2dFcnJvcihib29sIHNob3VsZFByaW50VG9r
ZW4sIGNvbnN0IEEmIHZhbHVlMSwgY29uc3QgQgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4
ZXJUeXBlPgotUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcigKLSAgICBWTSogdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwgCi0gICAg
SlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUs
IFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsCi0gICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRD
b25zdHJ1Y3RvcktpbmQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlKQorUGFyc2VyPExleGVyVHlw
ZT46OlBhcnNlcihWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWls
dGluTW9kZSBidWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIENvbnN0cnVj
dG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSwg
RGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0V2YWxDb250ZXh0
KQogICAgIDogbV92bSh2bSkKICAgICAsIG1fc291cmNlKCZzb3VyY2UpCiAgICAgLCBtX2hhc1N0
YWNrT3ZlcmZsb3coZmFsc2UpCkBAIC0yMDcsNiArMjA0LDcgQEAgUGFyc2VyPExleGVyVHlwZT46
OlBhcnNlcigKICAgICAsIG1fc3VwZXJCaW5kaW5nKHN1cGVyQmluZGluZykKICAgICAsIG1fZGVm
YXVsdENvbnN0cnVjdG9yS2luZChkZWZhdWx0Q29uc3RydWN0b3JLaW5kKQogICAgICwgbV90aGlz
VERaTW9kZSh0aGlzVERaTW9kZSkKKyAgICAsIG1faXNFdmFsQ29udGV4dChpc0V2YWxDb250ZXh0
KQogewogICAgIG1fbGV4ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExleGVyVHlwZT4odm0sIGJ1aWx0
aW5Nb2RlKTsKICAgICBtX2xleGVyLT5zZXRDb2RlKHNvdXJjZSwgJm1fcGFyc2VyQXJlbmEpOwpA
QCAtMjE5LDYgKzIxNywxNCBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKAogCiAgICAgU2Nv
cGVSZWYgc2NvcGUgPSBwdXNoU2NvcGUoKTsKICAgICBzY29wZS0+c2V0U291cmNlUGFyc2VNb2Rl
KHBhcnNlTW9kZSk7CisgICAgCisgICAgaWYgKGRlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVk
Q29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpIHsKKyAgICAgICAgc2NvcGUt
PnNldENvbnN0cnVjdG9yS2luZChDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpOworICAgICAgICBz
Y29wZS0+c2V0RXhwZWN0ZWRTdXBlckJpbmRpbmcoU3VwZXJCaW5kaW5nOjpOZWVkZWQpOworICAg
IH0KKyAgICAKKyAgICBpZiAoZGVyaXZlZENvbnRleHRUeXBlID09IERlcml2ZWRDb250ZXh0VHlw
ZTo6RGVyaXZlZE1ldGhvZENvbnRleHQpCisgICAgICAgIHNjb3BlLT5zZXRFeHBlY3RlZFN1cGVy
QmluZGluZyhTdXBlckJpbmRpbmc6Ok5lZWRlZCk7CiAKICAgICBpZiAoc3RyaWN0TW9kZSA9PSBK
U1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCkKICAgICAgICAgc2NvcGUtPnNldFN0cmljdE1vZGUo
KTsKQEAgLTIwNTksMTQgKzIwNjUsMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBi
b29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAv
LyBpbnNpZGUgb2YgdGhlIGNvbnN0cnVjdG9yIG9yIG1ldGhvZAogICAgIGlmICghbV9sZXhlci0+
aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIGlmIChmdW5jdGlvblNjb3BlLT5oYXNE
aXJlY3RTdXBlcigpKSB7Ci0gICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQgZnVuY3Rpb25Db25z
dHJ1Y3RvcktpbmQgPSBmdW5jdGlvbkJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5Qmxv
Y2sKKyAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCBmdW5jdGlvbkNvbnN0cnVjdG9yS2luZCA9
IGZ1bmN0aW9uQm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayAmJiAhbV9pc0V2
YWxDb250ZXh0CiAgICAgICAgICAgICAgICAgPyBjb25zdHJ1Y3RvcktpbmQKICAgICAgICAgICAg
ICAgICA6IGNsb3Nlc3RQYXJlbnRPcmRpbmFyeUZ1bmN0aW9uTm9uTGV4aWNhbFNjb3BlKCktPmNv
bnN0cnVjdG9yS2luZCgpOwogICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGZ1bmN0aW9u
Q29uc3RydWN0b3JLaW5kID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgIkNhbm5vdCBjYWxsIHN1
cGVyKCkgb3V0c2lkZSBvZiBhIGNsYXNzIGNvbnN0cnVjdG9yIik7CiAgICAgICAgICAgICBzZW1h
bnRpY0ZhaWxJZlRydWUoZnVuY3Rpb25Db25zdHJ1Y3RvcktpbmQgIT0gQ29uc3RydWN0b3JLaW5k
OjpEZXJpdmVkLCAiQ2Fubm90IGNhbGwgc3VwZXIoKSBpbiBhIGJhc2UgY2xhc3MgY29uc3RydWN0
b3IiKTsKICAgICAgICAgfQogICAgICAgICBpZiAoZnVuY3Rpb25TY29wZS0+bmVlZHNTdXBlckJp
bmRpbmcoKSkgewotICAgICAgICAgICAgU3VwZXJCaW5kaW5nIGZ1bmN0aW9uU3VwZXJCaW5kaW5n
ID0gZnVuY3Rpb25Cb2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrCisgICAgICAg
ICAgICBTdXBlckJpbmRpbmcgZnVuY3Rpb25TdXBlckJpbmRpbmcgPSBmdW5jdGlvbkJvZHlUeXBl
ID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgJiYgIW1faXNFdmFsQ29udGV4dAogICAgICAg
ICAgICAgICAgID8gZXhwZWN0ZWRTdXBlckJpbmRpbmcKICAgICAgICAgICAgICAgICA6IGNsb3Nl
c3RQYXJlbnRPcmRpbmFyeUZ1bmN0aW9uTm9uTGV4aWNhbFNjb3BlKCktPmV4cGVjdGVkU3VwZXJC
aW5kaW5nKCk7CiAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZnVuY3Rpb25TdXBlckJp
bmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsICJzdXBlciBjYW4gb25seSBiZSB1c2Vk
IGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcyIpOwpAQCAtMzgxMSw3ICszODE3LDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICB9CiAKICAgICBpZiAoYmFzZUlzU3VwZXIpIHsK
LSAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+aXNGdW5jdGlvbigp
LCAic3VwZXIgaXMgb25seSB2YWxpZCBpbnNpZGUgZnVuY3Rpb25zIik7CisgICAgICAgIHNlbWFu
dGljRmFpbElmRmFsc2UoY3VycmVudFNjb3BlKCktPmlzRnVuY3Rpb24oKSB8fCAobV9pc0V2YWxD
b250ZXh0ICYmIGNsb3Nlc3RQYXJlbnRPcmRpbmFyeUZ1bmN0aW9uTm9uTGV4aWNhbFNjb3BlKCkt
PmV4cGVjdGVkU3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQpLCAic3VwZXIg
aXMgb25seSB2YWxpZCBpbnNpZGUgZnVuY3Rpb25zIik7CiAgICAgICAgIGJhc2UgPSBjb250ZXh0
LmNyZWF0ZVN1cGVyRXhwcihsb2NhdGlvbik7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgY3Vy
cmVudEZ1bmN0aW9uU2NvcGUoKS0+c2V0TmVlZHNTdXBlckJpbmRpbmcoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGYyMGIzN2Q5MzJmNGQwZjdlMDdhNzlhMzdiYmU5
MTgzOWI5NWFiZGQuLjUwNzBmYjMzNWZkMGZjOTU1OWQ0YmZiMDg2ZDRmNzNiZTY0NWY0NDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtNzMxLDkgKzczMSw3IEBAIGNs
YXNzIFBhcnNlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAg
ICBQYXJzZXIoCi0gICAgICAgIFZNKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRp
bk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlLCBTdXBlckJpbmRpbmcs
Ci0gICAgICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBUaGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVk
KTsKKyAgICBQYXJzZXIoVk0qLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9k
ZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUsIFN1cGVyQmluZGluZywgQ29u
c3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUsIFRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQsIERlcml2ZWRDb250
ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgYm9vbCBpc0V2YWxDb250ZXh0ID0g
ZmFsc2UpOwogICAgIH5QYXJzZXIoKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2Rl
PgpAQCAtMTQ3Niw2ICsxNDc0LDcgQEAgcHJpdmF0ZToKICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0
dXJlczsKICAgICBpbnQgbV9udW1Db25zdGFudHM7CiAgICAgRXhwcmVzc2lvbkVycm9yQ2xhc3Np
ZmllciogbV9leHByZXNzaW9uRXJyb3JDbGFzc2lmaWVyOworICAgIGJvb2wgbV9pc0V2YWxDb250
ZXh0OwogICAgIAogICAgIHN0cnVjdCBEZXB0aE1hbmFnZXIgewogICAgICAgICBEZXB0aE1hbmFn
ZXIoaW50KiBkZXB0aCkKQEAgLTE1OTQsMTQgKzE1OTMsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPFBh
cnNlZE5vZGU+IHBhcnNlKAogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEpTUGFyc2VyQnVp
bHRpbk1vZGUgYnVpbHRpbk1vZGUsCiAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUs
IFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsCiAg
ICAgUGFyc2VyRXJyb3ImIGVycm9yLCBKU1RleHRQb3NpdGlvbiogcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSA9IG51bGxwdHIsCi0gICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3Rv
cktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsCi0gICAgVGhpc1REWk1vZGUgdGhpc1REWk1v
ZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCkKKyAgICBDb25zdHJ1Y3RvcktpbmQgZGVm
YXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgVGhpc1REWk1vZGUg
dGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCwKKyAgICBEZXJpdmVkQ29u
dGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBi
b29sIGlzRXZhbENvbmV4dCA9IGZhbHNlKQogewogICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5n
UmVnaW9uKCJQYXJzaW5nIik7CiAKICAgICBBU1NFUlQoIXNvdXJjZS5wcm92aWRlcigpLT5zb3Vy
Y2UoKS5pc051bGwoKSk7CiAgICAgaWYgKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pczhC
aXQoKSkgewotICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwg
YnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0
Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7CisgICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hh
cj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2Rl
LCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlLCBkZXJp
dmVkQ29udGV4dFR5cGUsIGlzRXZhbENvbmV4dCk7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
YXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUs
IHBhcnNlTW9kZSk7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAg
ICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZSgpOwpAQCAtMTYxMiw3ICsxNjExLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBh
cnNlZE5vZGU+IHBhcnNlKAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5k
OjpOb25lLCAiQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3Igc2hv
dWxkIGFsd2F5cyB1c2UgYSA4LWJpdCBzdHJpbmciKTsKLSAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+
PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHBhcnNlTW9kZSwg
c3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7CisgICAg
UGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJp
Y3RNb2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwg
dGhpc1REWk1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNFdmFsQ29uZXh0KTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+
KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUpOwogICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lKQogICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUNhY2hlLmNwcAppbmRleCBhMjYyYmI3MDg5ZWJiZWY0MzdjOTJiZmMzYWEwMmU5YTczNzdhODYz
Li44YmY0YzZjZTdmYjIxYmYxZDAzYjNlZjgwZDkwYmI2MTc1MzQ2YzJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTEwMCwxMSArMTAwLDExIEBA
IFVubGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZXRHbG9iYWxDb2RlQmxvY2soVk0m
IHZtLCBFeGVjdXRhYmxlVHlwZSogZXhlCiAgICAgICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNl
KHVubGlua2VkQ29kZUJsb2NrLT5jb2RlRmVhdHVyZXMoKSwgdW5saW5rZWRDb2RlQmxvY2stPmhh
c0NhcHR1cmVkVmFyaWFibGVzKCksIGZpcnN0TGluZSwgZmlyc3RMaW5lICsgbGluZUNvdW50LCBz
dGFydENvbHVtbiwgZW5kQ29sdW1uKTsKICAgICAgICAgcmV0dXJuIHVubGlua2VkQ29kZUJsb2Nr
OwogICAgIH0KLQogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVC
bG9ja1R5cGU+OjpSb290Tm9kZSBSb290Tm9kZTsKKyAgICBib29sIGlzRXZhbENvbmV4dCA9IHRy
dWU7CisgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSA9IGV4ZWN1dGFi
bGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4g
cm9vdE5vZGUgPSBwYXJzZTxSb290Tm9kZT4oCi0gICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlm
aWVyKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLAotICAgICAgICBDYWNoZVR5cGVzPFVubGlu
a2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVy
cm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKKyAgICAg
ICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIENh
Y2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBTdXBlckJpbmRpbmc6
Ok5vdE5lZWRlZCwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhpc1RE
Wk1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNFdmFsQ29uZXh0KTsKICAgICBpZiAoIXJvb3RO
b2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcmNh
bGwtNC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtc3VwZXJjYWxsLTQuanMKaW5kZXggZDkzYmUzODkxNTQyMTMxMDg1ZjBj
YjhhNmY0ZWEyMGM4MWMyZmFlZi4uOWM5MTVjOGYyMjJmMDU5NGUxZDIyY2Y2ZTZlZWZkYjNjMzRj
YjFiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJv
d2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcmNhbGwtNC5qcworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVyY2Fs
bC00LmpzCkBAIC0zMSw3ICszMSw5IEBAIHZhciBDID0gY2xhc3MgQyBleHRlbmRzIEEgewogICAg
IGNvbnN0cnVjdG9yICgpIHsKICAgICAgICAgdmFyIGFycm93ID0gKCkgPT4gZXZhbCgnKCgpID0+
IHN1cGVyKCkpKCknKTsKICAgICAgICAgYXJyb3coKTsKLSAgICAgICAgcmV0dXJuIHt9OworICAg
ICAgICByZXR1cm4geworICAgICAgICAgIHZhbHVlIDogJ2NvbnN0cnVjdG9yLXZhbHVlJworICAg
ICAgICB9OwogICAgIH0KIH07CiAKQEAgLTUxLDE5ICs1MywxOSBAQCB2YXIgRSA9IGNsYXNzIEUg
ZXh0ZW5kcyBBIHsKICAgICB9CiB9OwogCi0vLyBGSVhNRTogQXJyb3cgZnVuY3Rpb24gZG9lcyBu
b3Qgc3VwcG9ydCB1c2luZyBvZiBldmFsIHdpdGggc3VwZXIvc3VwZXIoKQotLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mzk3NwotLyoKKwogZm9yICh2YXIgaT0w
OyBpIDwgMTAwMDsgaSsrKSB7CiAgICAgbmV3IEIodHJ1ZSk7CiAgICAgdmFyIGMgPSBuZXcgQygp
OwotICAgIHRlc3RDYXNlKHR5cGVvZiBjLmlkLCAndW5kZWZpbmVkJywgJ0Vycm9yIGR1cmluZyBz
ZXQgdmFsdWUgaW4gZXZhbCAjMScpOworICAgIHRlc3RDYXNlKGMudmFsdWUsICdjb25zdHJ1Y3Rv
ci12YWx1ZScsICdFcnJvciBkdXJpbmcgc2V0IHZhbHVlIGluIGV2YWwgIzEuMCcpOworICAgIHRl
c3RDYXNlKHR5cGVvZiBjLmlkLCAndW5kZWZpbmVkJywgJ0Vycm9yIGR1cmluZyBzZXQgdmFsdWUg
aW4gZXZhbCAjMS4xJyk7CiAgICAgdmFyIGQgPSBuZXcgRCgpOwotICAgIHRlc3RDYXNlKGQuaWQs
ICduZXctdmFsdWUnLCAnRXJyb3IgZHVyaW5nIHNldCB2YWx1ZSBpbiBldmFsICMyJyk7CisgICAg
dGVzdENhc2UoZC5pZFZhbHVlLCB0ZXN0VmFsdWUsICdFcnJvciBkdXJpbmcgc2V0IHZhbHVlIGlu
IGV2YWwgIzIuMCcpOworICAgIHRlc3RDYXNlKGQuaWQsICduZXctdmFsdWUnLCAnRXJyb3IgZHVy
aW5nIHNldCB2YWx1ZSBpbiBldmFsICMyLjEnKTsKICAgICB2YXIgZSA9IG5ldyBFKCk7Ci0gICAg
dGVzdENhc2UoZS5pZCwgJ25ldy12YWx1ZScsICdFcnJvciBkdXJpbmcgc2V0IHZhbHVlIGluIGV2
YWwgIzMnKTsKKyAgICB0ZXN0Q2FzZShlLmlkVmFsdWUsIHRlc3RWYWx1ZSwgJ0Vycm9yIGR1cmlu
ZyBzZXQgdmFsdWUgaW4gZXZhbCAjMy4wJyk7CisgICAgdGVzdENhc2UoZS5pZCwgJ25ldy12YWx1
ZScsICdFcnJvciBkdXJpbmcgc2V0IHZhbHVlIGluIGV2YWwgIzMuMCcpOwogfQotKi8KIAogdmFy
IHRlc3RFeGNlcHRpb24gPSBmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7CiAgICAgdmFyIGV4Y2Vw
dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJwcm9wZXJ0eS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJwcm9w
ZXJ0eS5qcwppbmRleCBlOWY1NjIzMjE0NjU5N2ZlZjdmMWQwYWNmYzZlMzUyYjYxZjA4ZWI1Li5k
NzMxNzliZDMzMmFlNDE2MmM5MTU4MDg0MWFhYzMzNzlmYmMyMDAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5k
LXN1cGVycHJvcGVydHkuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcnByb3BlcnR5LmpzCkBAIC0yMjgsMyAr
MjI4LDYxIEBAIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogICAgIH0KICAgICB0
ZXN0Q2FzZShlcnJvciwgdHJ1ZSwgJ0Vycm9yOiB1c2luZyAic3VwZXIiIHByb3BlcnR5IGJlZm9y
ZSBzdXBlcigpIHNob3VsZCBsZWFkIHRvIGVycm9yJyk7CiB9CisKK2NsYXNzIEsgZXh0ZW5kcyBB
IHsKKyAgICBuZXdNZXRob2RBcnJvd0V2YWwoKSB7CisgICAgICAgIHZhciBhcnJvdyA9ICgpID0+
IGV2YWwoJ3N1cGVyLmdldFZhbHVlKCknKTsKKyAgICAgICAgdmFyIHIgPSBhcnJvdygpOworICAg
ICAgICByZXR1cm4gcjsKKyAgICB9CisgICAgbmV3TWV0aG9kQXJyb3dEb3VibGVFdmFsKCkgewor
ICAgICAgdmFyIGFycm93ID0gKCkgPT4gZXZhbCgiZXZhbCgnc3VwZXIuZ2V0VmFsdWUoKScpIik7
CisgICAgICB2YXIgciA9IGFycm93KCk7CisgICAgICByZXR1cm4gcjsKKyAgICB9CisgICAgbmV3
TWV0aG9kQXJyb3dFdmFsRXZhbEFycm93KCkgeworICAgICAgdmFyIGFycm93ID0gKCkgPT4gZXZh
bCgiZXZhbCgnKCgpID0+IHN1cGVyLmdldFZhbHVlKCkpKCknKSIpOworICAgICAgdmFyIHIgPSBh
cnJvdygpOworICAgICAgcmV0dXJuIHI7CisgICAgfQorICAgIG5ld01ldGhvZEFycm93RXZhbEV2
YWxBcnJvd0V2YWwoKSB7CisgICAgICB2YXIgYXJyb3cgID0gKCkgPT4gZXZhbCgiZXZhbCgnKCgp
ID0+IGV2YWwoXCJzdXBlci5nZXRWYWx1ZSgpXCIpKSgpJykiKTsKKyAgICAgIHZhciByID0gYXJy
b3coKTsKKyAgICAgIHJldHVybiByOworICAgIH0KKyAgICBuZXdNZXRob2RFdmFsKCkgeworICAg
ICAgICB2YXIgciA9IGV2YWwoInN1cGVyLmdldFZhbHVlKCkiKTsKKyAgICAgICAgcmV0dXJuIHI7
CisgICAgfQorICAgIG5ld01ldGhvZEV2YWxFdmFsKCkgeworICAgICAgICB2YXIgciA9IGV2YWwo
ImV2YWwoJ3N1cGVyLmdldFZhbHVlKCknKSIpOworICAgICAgICByZXR1cm4gcjsKKyAgICB9Cisg
ICAgbmV3TWV0aG9kRXZhbEFycm93KCkgeworICAgICAgICB2YXIgciA9IGV2YWwoIigoKSA9PiBz
dXBlci5nZXRWYWx1ZSgpKSgpIik7CisgICAgICAgIHJldHVybiByOworICAgIH0KKyAgICBuZXdN
ZXRob2RFdmFsRXZhbEFycm93KCkgeworICAgICAgICB2YXIgciA9IGV2YWwoImV2YWwoJygoKSA9
PiBzdXBlci5nZXRWYWx1ZSgpKSgpJykiKTsKKyAgICAgICAgcmV0dXJuIHI7CisgICAgfQorICAg
IG5ld01ldGhvZEV2YWxFdmFsQXJyb3dFdmFsKCkgeworICAgICAgICB2YXIgciA9IGV2YWwoImV2
YWwoJygoKSA9PiBldmFsKFwiKHN1cGVyLmdldFZhbHVlKCkpXCIpKSgpJykiKTsKKyAgICAgICAg
cmV0dXJuIHI7CisgICAgfQorfQorCit2YXIgayA9IG5ldyBLKCk7CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDsgaSsrKSB7CisgICAgdGVzdENhc2Uoay5uZXdNZXRob2RBcnJvd0V2YWwoKSAs
IHRlc3RWYWx1ZSwgJ0Vycm9yOiBFcnJvciBpbiBsZXhpY2FsIGJpbmQgd2l0aCBldmFsIGFuZCBh
cnJvdyBmdW5jdGlvbiAjMScpOworICAgIHRlc3RDYXNlKGsubmV3TWV0aG9kQXJyb3dEb3VibGVF
dmFsKCkgLCB0ZXN0VmFsdWUsICdFcnJvcjogRXJyb3IgaW4gbGV4aWNhbCBiaW5kIHdpdGggZXZh
bCBhbmQgYXJyb3cgZnVuY3Rpb24gIzInKTsKKyAgICB0ZXN0Q2FzZShrLm5ld01ldGhvZEFycm93
RXZhbEV2YWxBcnJvdygpICwgdGVzdFZhbHVlLCAnRXJyb3I6IEVycm9yIGluIGxleGljYWwgYmlu
ZCB3aXRoIGV2YWwgYW5kIGFycm93IGZ1bmN0aW9uICMzJyk7CisgICAgdGVzdENhc2Uoay5uZXdN
ZXRob2RBcnJvd0V2YWxFdmFsQXJyb3dFdmFsKCkgLCB0ZXN0VmFsdWUsICdFcnJvcjogRXJyb3Ig
aW4gbGV4aWNhbCBiaW5kIHdpdGggZXZhbCBhbmQgYXJyb3cgZnVuY3Rpb24gIzQnKTsKKworICAg
IHRlc3RDYXNlKGsubmV3TWV0aG9kRXZhbCgpICwgdGVzdFZhbHVlLCAnRXJyb3I6IEVycm9yIGlu
IGxleGljYWwgYmluZCB3aXRoIGV2YWwgYW5kIGFycm93IGZ1bmN0aW9uICM1Jyk7CisgICAgdGVz
dENhc2Uoay5uZXdNZXRob2RFdmFsRXZhbCgpICwgdGVzdFZhbHVlLCAnRXJyb3I6IEVycm9yIGlu
IGxleGljYWwgYmluZCB3aXRoIGV2YWwgYW5kIGFycm93IGZ1bmN0aW9uICM2Jyk7CisgICAgdGVz
dENhc2Uoay5uZXdNZXRob2RFdmFsQXJyb3coKSAsIHRlc3RWYWx1ZSwgJ0Vycm9yOiBFcnJvciBp
biBsZXhpY2FsIGJpbmQgd2l0aCBldmFsIGFuZCBhcnJvdyBmdW5jdGlvbiAjNycpOworICAgIHRl
c3RDYXNlKGsubmV3TWV0aG9kRXZhbEV2YWxBcnJvdygpICwgdGVzdFZhbHVlLCAnRXJyb3I6IEVy
cm9yIGluIGxleGljYWwgYmluZCB3aXRoIGV2YWwgYW5kIGFycm93IGZ1bmN0aW9uIDgnKTsKKyAg
ICB0ZXN0Q2FzZShrLm5ld01ldGhvZEV2YWxFdmFsQXJyb3dFdmFsKCkgLCB0ZXN0VmFsdWUsICdF
cnJvcjogRXJyb3IgaW4gbGV4aWNhbCBiaW5kIHdpdGggZXZhbCBhbmQgYXJyb3cgZnVuY3Rpb24g
IzknKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLXdpdGgtc3VwZXIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci13aXRoLXN1cGVyLmpzCmluZGV4IDllNTNjNzkxNzM4ZWNmOGI5ZDM0OTgz
NWVhODNiZjhkNmM4OTc3YmIuLmY0Njc3NDgwN2U2ODllZWZjM2VmZjg1NGJmMjU0YzBhZTQzNGQw
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLXdpdGgtc3VwZXIuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qcwpAQCAtNDAsOSArNDAsNyBAQCBmdW5jdGlvbiBzaG91
bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CiAgICAgfQogCiAgICAgbGV0IGEgPSBuZXcgQSgpOwot
ICAgIHNob3VsZFRocm93KCgpID0+IHsKLSAgICAgICAgYS5nZW4oKS5uZXh0KCk7Ci0gICAgfSwg
YFN5bnRheEVycm9yOiBzdXBlciBpcyBvbmx5IHZhbGlkIGluc2lkZSBmdW5jdGlvbnMuYCk7Cisg
ICAgc2hvdWxkQmUoYS5nZW4oKS5uZXh0KCkudmFsdWUsIDQyKTsKIH0oKSk7CiAKIChmdW5jdGlv
biAoKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggMGEyNjc5YzQzZTQxZmIxNDdmYzEzZTgzNDMxNjQyMmU5NDIzZTZjMy4u
NDIwODBkZmY3NzI3OTRmNTNkYjcyMTQxMjYzY2VhNTc2ZTRmNDgyNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDE2LTAzLTA2ICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwu
Y29tPgorCisgICAgICAgIEludm9raW5nIHN1cGVyKCkvc3VwZXIgaW5zaWRlIG9mIHRoZSBldmFs
IHNob3VsZCBub3QgbGVhZCB0byBTeW50YXhFcnJvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzODY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9jbGFzcy1zeW50YXgtc3VwZXItZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtc3VwZXIuanM6Cisg
ICAgICAgIChzaG91bGRCZVRydWUpOgorICAgICAgICAoc2hvdWxkQmVGYWxzZSk6CisKIDIwMTYt
MDMtMDQgIFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CiAKICAgICAg
ICAgW0VTNl0gQXJyb3cgZnVuY3Rpb24gc3ludGF4LiBMZXhpY2FsIGJpbmQgInN1cGVyIiBpbnNp
ZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uIGluIGdlbmVyYXRvci4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1zdXBlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9q
cy9jbGFzcy1zeW50YXgtc3VwZXItZXhwZWN0ZWQudHh0CmluZGV4IGE5YzU1NGZjMDRkYTdlMjll
N2QzMDkyMDdlYTU1ZTJjZGMxN2Q1MDIuLjk1ODkzOTkzZDg0YTYwNzBjMzkyMmRiNDk3NjRkZGQ4
Mjc1NWJlM2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1zdXBlci1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LXN1cGVyLWV4cGVj
dGVkLnR4dApAQCAtNDEsNiArNDEsOCBAQCBQQVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBPYmplY3Qg
eyBjb25zdHJ1Y3RvcigpIHsgZnVuY3Rpb24geCgpIHsgc3VwZXIoKSB9IH0gfSk6OgogUEFTUyBu
ZXcgKGNsYXNzIGV4dGVuZHMgT2JqZWN0IHsgY29uc3RydWN0b3IoKSB7IGZ1bmN0aW9uIHgoKSB7
IHN1cGVyLm1ldGhvZCB9IH0gfSk6OjpTeW50YXhFcnJvcjogc3VwZXIgY2FuIG9ubHkgYmUgdXNl
ZCBpbiBhIG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xhc3MuCiBQQVNTIGZ1bmN0aW9uIHgoKSB7IHN1
cGVyLm1ldGhvZCgpOyB9Ojo6U3ludGF4RXJyb3I6IHN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4g
YSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzLgogUEFTUyBmdW5jdGlvbiB4KCkgeyBzdXBlcigp
OyB9Ojo6U3ludGF4RXJyb3I6IENhbm5vdCBjYWxsIHN1cGVyKCkgb3V0c2lkZSBvZiBhIGNsYXNz
IGNvbnN0cnVjdG9yLgorUEFTUyBldmFsKCJzdXBlci5tZXRob2QoKSIpOjo6U3ludGF4RXJyb3I6
IHN1cGVyIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9ucy4KK1BBU1MgZXZhbCgic3VwZXIo
KSIpOjo6U3ludGF4RXJyb3I6IHN1cGVyIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9ucy4K
IFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtc3VwZXIuanMgYi9MYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LXN1cGVyLmpzCmluZGV4IGY4NjM3YzM4
OTBhNmJiNDI1NTE3Mjk1NmNhYzQyNWY3ZjU3Mzc5NmUuLjNmNmE5OTAzYjg1ODUwMDliZTNmM2Y1
OGUxMWQ0NDg0NWI5MjZmMjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9jbGFzcy1zeW50YXgtc3VwZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2NsYXNzLXN5bnRheC1zdXBlci5qcwpAQCAtMzksMTQgKzM5LDE0IEBAIGZ1bmN0aW9uIHNob3Vs
ZEJlKGEsIGIpIHsKIGZ1bmN0aW9uIHNob3VsZEJlVHJ1ZShzKSB7CiAgICAgaWYgKGV2YWwocykg
PT09IHRydWUpCiAgICAgICAgIHRlc3RQYXNzZWQocyk7Ci0gICAgZWxzZSAKKyAgICBlbHNlCiAg
ICAgICAgIHRlc3RGYWlsZWQocyk7CiB9CiAKIGZ1bmN0aW9uIHNob3VsZEJlRmFsc2Uocykgewog
ICAgIGlmIChldmFsKHMpID09PSBmYWxzZSkKICAgICAgICAgdGVzdFBhc3NlZChzKTsKLSAgICBl
bHNlIAorICAgIGVsc2UKICAgICAgICAgdGVzdEZhaWxlZChzKTsKIH0KIApAQCAtMTE1LDUgKzEx
NSw3IEBAIHNob3VsZFRocm93KCduZXcgKGNsYXNzIGV4dGVuZHMgT2JqZWN0IHsgY29uc3RydWN0
b3IoKSB7IGZ1bmN0aW9uIHgoKSB7IHN1cGVyKCkKIHNob3VsZFRocm93KCduZXcgKGNsYXNzIGV4
dGVuZHMgT2JqZWN0IHsgY29uc3RydWN0b3IoKSB7IGZ1bmN0aW9uIHgoKSB7IHN1cGVyLm1ldGhv
ZCB9IH0gfSknLCAnIlN5bnRheEVycm9yOiBzdXBlciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0
aG9kIG9mIGEgZGVyaXZlZCBjbGFzcy4iJyk7CiBzaG91bGRUaHJvdygnZnVuY3Rpb24geCgpIHsg
c3VwZXIubWV0aG9kKCk7IH0nLCAnIlN5bnRheEVycm9yOiBzdXBlciBjYW4gb25seSBiZSB1c2Vk
IGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcy4iJyk7CiBzaG91bGRUaHJvdygnZnVuY3Rp
b24geCgpIHsgc3VwZXIoKTsgfScsICciU3ludGF4RXJyb3I6IENhbm5vdCBjYWxsIHN1cGVyKCkg
b3V0c2lkZSBvZiBhIGNsYXNzIGNvbnN0cnVjdG9yLiInKTsKK3Nob3VsZFRocm93KCdldmFsKCJz
dXBlci5tZXRob2QoKSIpJywgJyJTeW50YXhFcnJvcjogc3VwZXIgaXMgb25seSB2YWxpZCBpbnNp
ZGUgZnVuY3Rpb25zLiInKTsKK3Nob3VsZFRocm93KCdldmFsKCJzdXBlcigpIiknLCAnIlN5bnRh
eEVycm9yOiBzdXBlciBpcyBvbmx5IHZhbGlkIGluc2lkZSBmdW5jdGlvbnMuIicpOwogCiB2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274093</attachid>
            <date>2016-03-15 07:14:20 -0700</date>
            <delta_ts>2016-03-16 13:11:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153864-20160315161405.patch</filename>
            <type>text/plain</type>
            <size>31531</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YjQ4Y2FlMGM4MjhlZWE5NThhMjA3OGQxZmIzNzI0N2E1MGY3ZWI3Li4wZDJiZWEzMTk4NmFkOGJi
ODhhZjBmYThlM2EyNzU2NTY1NjFkNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAxNi0wMy0xNSAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBJbnZva2luZyBzdXBlcigpL3N1cGVyIGluc2lkZSBvZiB0aGUg
ZXZhbCBzaG91bGQgbm90IGxlYWQgdG8gU3ludGF4RXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mzg2NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgb2YgdGhlIGludm9raW5n
IHN1cGVyL3N1cGVyKCkgaW5zaWRlIG9mIHRoZSBldmFsIHdpdGhpbiBjbGFzcy4KKyAgICAgICAg
QWxzbyBzdXBwb3J0IGNhc2VzIHdoZW4gZXZhbCBpcyBpbnZva2VkIGluIGNvbnN0cnVjdG9yLCBj
bGFzcyBtZXRob2QgZGlyZWN0bHkgCisgICAgICAgIG9yIHZpYSBhcnJvdyBmdW5jdGlvbgorCisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVu
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppc05ld1RhcmdldFVzZWRJbklu
bmVyQXJyb3dGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppc1N1
cGVyVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmlzU3VwZXJDYWxsVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRUaGlzVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNj
b3BlKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChK
U0M6OmV2YWwpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlTWVtYmVyRXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAg
ICAgICAoSlNDOjpTY29wZTo6U2NvcGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6aXNFdmFsQ29u
dGV4dCk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc0V2YWxDb250ZXh0KToKKyAgICAgICAg
KEpTQzo6cGFyc2UpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUNhY2hlOjpnZXRHbG9iYWxDb2RlQmxvY2spOgorICAgICAgICAqIHRlc3RzL3N0
cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcmNhbGwtNC5qczoKKyAgICAgICAg
KiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJwcm9wZXJ0eS5q
czoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvY2xhc3Mtc3ludGF4LXN1cGVyLWluLWV2YWwuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qczoK
KwogMjAxNi0wMy0xNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAog
ICAgICAgICBbSlNDXSBEb24ndCByZWZlcmVuY2UgdGhlIHByb3BlcnRpZXMgb2YgQFJlZmxlY3Qg
ZGlyZWN0bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNjRjN2ZhOTUyMDcwZDY2YWJmODFkMWQwMWJm
MmQ3OWQ3MjcxNGRjOC4uN2YxYmY1YWQwODdhMWI4ZjJmMmY4NmJmMzc4Zjk1ZTIxYmYzYzZiMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKQEAgLTYyOCwxMyArNjI4LDE5IEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRF
dmFsQ29kCiAgICAgICAgIHZhcmlhYmxlcy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVVpZChtX3Zt
LCBlbnRyeS5rZXkuZ2V0KCkpKTsKICAgICB9CiAgICAgY29kZUJsb2NrLT5hZG9wdFZhcmlhYmxl
cyh2YXJpYWJsZXMpOworICAgIAorICAgIGlmIChldmFsTm9kZS0+dXNlc1N1cGVyQ2FsbCgpIHx8
IGV2YWxOb2RlLT51c2VzTmV3VGFyZ2V0KCkpCisgICAgICAgIG1fbmV3VGFyZ2V0UmVnaXN0ZXIg
PSBhZGRWYXIoKTsKIAogICAgIHB1c2hURFpWYXJpYWJsZXMoKnBhcmVudFNjb3BlVERaVmFyaWFi
bGVzLCBURFpDaGVja09wdGltaXphdGlvbjo6RG9Ob3RPcHRpbWl6ZSk7Ci0KLSAgICBpZiAoY29k
ZUJsb2NrLT5pc0Fycm93RnVuY3Rpb25Db250ZXh0KCkgJiYgZXZhbE5vZGUtPnVzZXNUaGlzKCkp
CisgICAgCisgICAgaWYgKGNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpICYmIChl
dmFsTm9kZS0+dXNlc1RoaXMoKSB8fCBldmFsTm9kZS0+dXNlc1N1cGVyUHJvcGVydHkoKSkpCiAg
ICAgICAgIGVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7
CiAKLSAgICBpZiAobmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkgJiYgIWNvZGVC
bG9jay0+aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpKSB7CisgICAgaWYgKGV2YWxOb2RlLT51c2Vz
U3VwZXJDYWxsKCkgfHwgZXZhbE5vZGUtPnVzZXNOZXdUYXJnZXQoKSkKKyAgICAgICAgZW1pdExv
YWROZXdUYXJnZXRGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOworCisgICAg
aWYgKG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpICYmICFjb2RlQmxvY2stPmlz
QXJyb3dGdW5jdGlvbkNvbnRleHQoKSAmJiAhaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkp
IHsKICAgICAgICAgaW5pdGlhbGl6ZUFycm93RnVuY3Rpb25Db250ZXh0U2NvcGVJZk5lZWRlZCgp
OwogICAgICAgICBlbWl0UHV0VGhpc1RvQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgpOwogICAg
IH0KQEAgLTQxMDAsNyArNDEwNiw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnBvcEluZGV4
ZWRGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0ZXIpCiAKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZEFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQobV9jb2RlQmxvY2st
PmlzQXJyb3dGdW5jdGlvbigpIHx8IG1fY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb25Db250ZXh0
KCkgfHwgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKTsKKyAg
ICBBU1NFUlQobV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpIHx8IG1fY29kZUJsb2NrLT5p
c0Fycm93RnVuY3Rpb25Db250ZXh0KCkgfHwgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0
b3JLaW5kOjpEZXJpdmVkIHx8IG1fY29kZVR5cGUgPT0gRXZhbENvZGUpOwogCiAgICAgcmV0dXJu
IGVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyaWFibGUoaWRlbnRpZmllciwgVGhpc1Jlc29s
dXRpb25UeXBlOjpTY29wZWQpKTsKIH0KQEAgLTQxMzYsMTcgKzQxNDIsMTcgQEAgYm9vbCBCeXRl
Y29kZUdlbmVyYXRvcjo6aXNBcmd1bWVudHNVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKQogCiBi
b29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppc05ld1RhcmdldFVzZWRJbklubmVyQXJyb3dGdW5jdGlv
bigpCiB7Ci0gICAgcmV0dXJuIG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNV
c2VOZXdUYXJnZXQoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNl
U3VwZXJDYWxsKCk7CisgICAgcmV0dXJuIG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5j
dGlvbnNVc2VOZXdUYXJnZXQoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rp
b25zVXNlU3VwZXJDYWxsKCkgfHwgbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9u
c1VzZUV2YWwoKSB8fCBtX2NvZGVCbG9jay0+dXNlc0V2YWwoKTsKIH0KIAogYm9vbCBCeXRlY29k
ZUdlbmVyYXRvcjo6aXNTdXBlclVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpCiB7Ci0gICAgcmV0
dXJuIG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VTdXBlckNhbGwoKSB8
fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlU3VwZXJQcm9wZXJ0eSgp
OworICAgIHJldHVybiBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlU3Vw
ZXJDYWxsKCkgfHwgbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZVN1cGVy
UHJvcGVydHkoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlRXZh
bCgpIHx8IG1fY29kZUJsb2NrLT51c2VzRXZhbCgpOwogfQogCiBib29sIEJ5dGVjb2RlR2VuZXJh
dG9yOjppc1N1cGVyQ2FsbFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpCiB7Ci0gICAgcmV0dXJu
IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VTdXBlckNhbGwoKTsKKyAg
ICByZXR1cm4gbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZVN1cGVyQ2Fs
bCgpIHx8IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VFdmFsKCkgfHwg
bV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7CiB9CiAgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UHV0TmV3VGFyZ2V0VG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCkKQEAgLTQxNzMs
NyArNDE3OSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXREZXJpdmVkQ29uc3Ry
dWN0b3JUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUoKQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UHV0VGhpc1RvQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgpCiB7Ci0gICAgaWYg
KGlzVGhpc1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSB7CisgICAgaWYgKGlzVGhpc1VzZWRJ
bklubmVyQXJyb3dGdW5jdGlvbigpIHx8IChtX3Njb3BlTm9kZS0+dXNlc1N1cGVyQ2FsbCgpICYm
IG1fY29kZVR5cGUgPT0gRXZhbENvZGUpKSB7CiAgICAgICAgIEFTU0VSVChpc0Rlcml2ZWRDb25z
dHJ1Y3RvckNvbnRleHQoKSB8fCBtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNhbEVudmlyb25t
ZW50UmVnaXN0ZXIgIT0gbnVsbHB0cik7CiAKICAgICAgICAgVmFyaWFibGUgdGhpc1ZhciA9IHZh
cmlhYmxlKHByb3BlcnR5TmFtZXMoKS50aGlzSWRlbnRpZmllciwgVGhpc1Jlc29sdXRpb25UeXBl
OjpTY29wZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKaW5kZXggMjMzZmQxY2I2MmFiZDE5N2FlMjY3ZThiZTA2ZjhlYTliMGE0NTFj
Yi4uN2E1YmNhMTgyN2UxM2Y1OTdjYzAyMmViNTliNjU1M2E0Y2U0NTgwZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0xODAs
OCArMTgwLDE3IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAg
CiAgICAgICAgIC8vIElmIHRoZSBsaXRlcmFsIHBhcnNlciBiYWlsZWQsIGl0IHNob3VsZCBub3Qg
aGF2ZSB0aHJvd24gZXhjZXB0aW9ucy4KICAgICAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPnZtKCku
ZXhjZXB0aW9uKCkpOworICAgICAgICBib29sIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCA9IGNh
bGxlckNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNBcnJvd0Z1bmN0aW9uKCkgfHwg
Y2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb25Db250
ZXh0KCk7CiAKLSAgICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgp
LmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlckNvZGVCbG9jay0+aXNT
dHJpY3RNb2RlKCksIHRoaXNURFpNb2RlLCBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJs
b2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29k
ZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBzb3VyY2VDb2RlLCBjYWxsZXJTY29wZUNoYWlu
KTsKKyAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSA9IGNhbGxl
ckNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+ZGVyaXZlZENvbnRleHRUeXBlKCk7Cisg
ICAgICAgIAorICAgICAgICBpZiAoIWlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCAmJiBjYWxsZXJD
b2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzQ2xhc3NDb250ZXh0KCkpIHsKKyAgICAg
ICAgICAgIGRlcml2ZWRDb250ZXh0VHlwZSA9IGNhbGxlckNvZGVCbG9jay0+dW5saW5rZWRDb2Rl
QmxvY2soKS0+aXNDb25zdHJ1Y3RvcigpCisgICAgICAgICAgICAgICAgPyBEZXJpdmVkQ29udGV4
dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQKKyAgICAgICAgICAgICAgICA6IERlcml2
ZWRDb250ZXh0VHlwZTo6RGVyaXZlZE1ldGhvZENvbnRleHQ7CisgICAgICAgIH0KKworICAgICAg
ICBldmFsID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJh
bWUsIGNhbGxlckNvZGVCbG9jaywgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhp
c1REWk1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0LCBz
b3VyY2VDb2RlLCBjYWxsZXJTY29wZUNoYWluKTsKIAogICAgICAgICBpZiAoIWV2YWwpCiAgICAg
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcAppbmRleCA0MDczYjA3Zjk5Yjg1ZmQwYzNmNmZmYThiNzZhZGU0MjU0ZmEzMmUw
Li5kNGQ3ZGU0ZGEwYzA5OTZmNDk1Nzg5YjkyMGM2NDVmY2EyNTRmOGUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xOTIsMTAgKzE5Miw3IEBAIHZvaWQgUGFy
c2VyPExleGVyVHlwZT46OmxvZ0Vycm9yKGJvb2wgc2hvdWxkUHJpbnRUb2tlbiwgY29uc3QgQSYg
dmFsdWUxLCBjb25zdCBCCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci1QYXJz
ZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKAotICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCAKLSAgICBKU1BhcnNlclN0cmlj
dE1vZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgU3VwZXJCaW5kaW5n
IHN1cGVyQmluZGluZywKLSAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2lu
ZCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUpCitQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKFZN
KiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0
aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgQ29uc3RydWN0b3JLaW5kIGRlZmF1
bHRDb25zdHJ1Y3RvcktpbmQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBEZXJpdmVkQ29udGV4
dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzRXZhbENvbnRleHQpCiAgICAgOiBtX3Zt
KHZtKQogICAgICwgbV9zb3VyY2UoJnNvdXJjZSkKICAgICAsIG1faGFzU3RhY2tPdmVyZmxvdyhm
YWxzZSkKQEAgLTIxOSw2ICsyMTYsMTUgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcigKIAog
ICAgIFNjb3BlUmVmIHNjb3BlID0gcHVzaFNjb3BlKCk7CiAgICAgc2NvcGUtPnNldFNvdXJjZVBh
cnNlTW9kZShwYXJzZU1vZGUpOworICAgIHNjb3BlLT5zZXRJc0V2YWxDb250ZXh0KGlzRXZhbENv
bnRleHQpOworICAgIAorICAgIGlmIChkZXJpdmVkQ29udGV4dFR5cGUgPT0gRGVyaXZlZENvbnRl
eHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KSB7CisgICAgICAgIHNjb3BlLT5zZXRD
b25zdHJ1Y3RvcktpbmQoQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKTsKKyAgICAgICAgc2NvcGUt
PnNldEV4cGVjdGVkU3VwZXJCaW5kaW5nKFN1cGVyQmluZGluZzo6TmVlZGVkKTsKKyAgICB9Cisg
ICAgCisgICAgaWYgKGRlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRl
cml2ZWRNZXRob2RDb250ZXh0KQorICAgICAgICBzY29wZS0+c2V0RXhwZWN0ZWRTdXBlckJpbmRp
bmcoU3VwZXJCaW5kaW5nOjpOZWVkZWQpOwogCiAgICAgaWYgKHN0cmljdE1vZGUgPT0gSlNQYXJz
ZXJTdHJpY3RNb2RlOjpTdHJpY3QpCiAgICAgICAgIHNjb3BlLT5zZXRTdHJpY3RNb2RlKCk7CkBA
IC0yMDY2LDE2ICsyMDcyLDE4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgLy8gaW5z
aWRlIG9mIHRoZSBjb25zdHJ1Y3RvciBvciBtZXRob2QKICAgICBpZiAoIW1fbGV4ZXItPmlzUmVw
YXJzaW5nRnVuY3Rpb24oKSkgewogICAgICAgICBpZiAoZnVuY3Rpb25TY29wZS0+aGFzRGlyZWN0
U3VwZXIoKSkgewotICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGZ1bmN0aW9uQ29uc3RydWN0
b3JLaW5kID0gZnVuY3Rpb25Cb2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrCisg
ICAgICAgICAgICBTY29wZVJlZiBzY29wZVJlZiA9IGNsb3Nlc3RQYXJlbnRPcmRpbmFyeUZ1bmN0
aW9uTm9uTGV4aWNhbFNjb3BlKCk7CisgICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQgZnVuY3Rp
b25Db25zdHJ1Y3RvcktpbmQgPSBmdW5jdGlvbkJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25C
b2R5QmxvY2sgJiYgIXNjb3BlUmVmLT5pc0V2YWxDb250ZXh0KCkKICAgICAgICAgICAgICAgICA/
IGNvbnN0cnVjdG9yS2luZAotICAgICAgICAgICAgICAgIDogY2xvc2VzdFBhcmVudE9yZGluYXJ5
RnVuY3Rpb25Ob25MZXhpY2FsU2NvcGUoKS0+Y29uc3RydWN0b3JLaW5kKCk7CisgICAgICAgICAg
ICAgICAgOiBzY29wZVJlZi0+Y29uc3RydWN0b3JLaW5kKCk7CiAgICAgICAgICAgICBzZW1hbnRp
Y0ZhaWxJZlRydWUoZnVuY3Rpb25Db25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5kOjpO
b25lLCAiQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3Ii
KTsKICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShmdW5jdGlvbkNvbnN0cnVjdG9yS2lu
ZCAhPSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQsICJDYW5ub3QgY2FsbCBzdXBlcigpIGluIGEg
YmFzZSBjbGFzcyBjb25zdHJ1Y3RvciIpOwogICAgICAgICB9CiAgICAgICAgIGlmIChmdW5jdGlv
blNjb3BlLT5uZWVkc1N1cGVyQmluZGluZygpKSB7Ci0gICAgICAgICAgICBTdXBlckJpbmRpbmcg
ZnVuY3Rpb25TdXBlckJpbmRpbmcgPSBmdW5jdGlvbkJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rp
b25Cb2R5QmxvY2sKKyAgICAgICAgICAgIFNjb3BlUmVmIHNjb3BlUmVmID0gY2xvc2VzdFBhcmVu
dE9yZGluYXJ5RnVuY3Rpb25Ob25MZXhpY2FsU2NvcGUoKTsKKyAgICAgICAgICAgIFN1cGVyQmlu
ZGluZyBmdW5jdGlvblN1cGVyQmluZGluZyA9IGZ1bmN0aW9uQm9keVR5cGUgPT0gU3RhbmRhcmRG
dW5jdGlvbkJvZHlCbG9jayAmJiAhc2NvcGVSZWYtPmlzRXZhbENvbnRleHQoKQogICAgICAgICAg
ICAgICAgID8gZXhwZWN0ZWRTdXBlckJpbmRpbmcKLSAgICAgICAgICAgICAgICA6IGNsb3Nlc3RQ
YXJlbnRPcmRpbmFyeUZ1bmN0aW9uTm9uTGV4aWNhbFNjb3BlKCktPmV4cGVjdGVkU3VwZXJCaW5k
aW5nKCk7CisgICAgICAgICAgICAgICAgOiBzY29wZVJlZi0+ZXhwZWN0ZWRTdXBlckJpbmRpbmco
KTsKICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShmdW5jdGlvblN1cGVyQmluZGluZyA9
PSBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgInN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBt
ZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzIik7CiAgICAgICAgIH0KICAgICB9CkBAIC0zODM2LDcg
KzM4NDQsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgIH0KIAogICAgIGlmIChiYXNl
SXNTdXBlcikgewotICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5p
c0Z1bmN0aW9uKCksICJzdXBlciBpcyBvbmx5IHZhbGlkIGluc2lkZSBmdW5jdGlvbnMiKTsKKyAg
ICAgICAgU2NvcGVSZWYgc2NvcGVSZWYgPSBjbG9zZXN0UGFyZW50T3JkaW5hcnlGdW5jdGlvbk5v
bkxleGljYWxTY29wZSgpOworICAgICAgICAvLyBUT0RPOiBDaGFuZ2UgZXJyb3IgbWVzc2FnZSBm
b3IgbW9yZSBzdWl0YWJsZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTQ5MSAKKyAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+aXNG
dW5jdGlvbigpIHx8IChzY29wZVJlZi0+aXNFdmFsQ29udGV4dCgpICYmIHNjb3BlUmVmLT5leHBl
Y3RlZFN1cGVyQmluZGluZygpID09IFN1cGVyQmluZGluZzo6TmVlZGVkKSwgInN1cGVyIGlzIG9u
bHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9ucyIpOwogICAgICAgICBiYXNlID0gY29udGV4dC5jcmVh
dGVTdXBlckV4cHIobG9jYXRpb24pOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGN1cnJlbnRG
dW5jdGlvblNjb3BlKCktPnNldE5lZWRzU3VwZXJCaW5kaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAppbmRleCBmN2MwNWNhZjQ4YjBlNzI3YTE4NDJmOWNjYTU2YWJlNjZm
YjE3OTM5Li5lOGEwMTVmMjE4NjdlYmE0ZTk5YmIyOTRjN2Y5NDU3MTk0ZTI3YjkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTE3Nyw2ICsxNzcsNyBAQCBzdHJ1Y3Qg
U2NvcGUgewogICAgICAgICAsIG1faXNGdW5jdGlvbkJvdW5kYXJ5KGZhbHNlKQogICAgICAgICAs
IG1faXNWYWxpZFN0cmljdE1vZGUodHJ1ZSkKICAgICAgICAgLCBtX2hhc0FyZ3VtZW50cyhmYWxz
ZSkKKyAgICAgICAgLCBtX2lzRXZhbENvbnRleHQoZmFsc2UpCiAgICAgICAgICwgbV9jb25zdHJ1
Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENvbnN0cnVjdG9yS2luZDo6Tm9uZSkpCiAg
ICAgICAgICwgbV9leHBlY3RlZFN1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU3Vw
ZXJCaW5kaW5nOjpOb3ROZWVkZWQpKQogICAgICAgICAsIG1fbG9vcERlcHRoKDApCkBAIC0yMDQs
NiArMjA1LDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgLCBtX2lzRnVuY3Rpb25Cb3VuZGFy
eShyaHMubV9pc0Z1bmN0aW9uQm91bmRhcnkpCiAgICAgICAgICwgbV9pc1ZhbGlkU3RyaWN0TW9k
ZShyaHMubV9pc1ZhbGlkU3RyaWN0TW9kZSkKICAgICAgICAgLCBtX2hhc0FyZ3VtZW50cyhyaHMu
bV9oYXNBcmd1bWVudHMpCisgICAgICAgICwgbV9pc0V2YWxDb250ZXh0KHJocy5tX2lzRXZhbENv
bnRleHQpCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQocmhzLm1fY29uc3RydWN0b3JLaW5k
KQogICAgICAgICAsIG1fZXhwZWN0ZWRTdXBlckJpbmRpbmcocmhzLm1fZXhwZWN0ZWRTdXBlckJp
bmRpbmcpCiAgICAgICAgICwgbV9sb29wRGVwdGgocmhzLm1fbG9vcERlcHRoKQpAQCAtNTI1LDYg
KzUyNyw5IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgdm9pZCBzZXRJbm5lckFycm93RnVuY3Rpb25V
c2VzVGhpcygpIHsgbV9pbm5lckFycm93RnVuY3Rpb25GZWF0dXJlcyB8PSBUaGlzSW5uZXJBcnJv
d0Z1bmN0aW9uRmVhdHVyZTsgfQogICAgIHZvaWQgc2V0SW5uZXJBcnJvd0Z1bmN0aW9uVXNlc05l
d1RhcmdldCgpIHsgbV9pbm5lckFycm93RnVuY3Rpb25GZWF0dXJlcyB8PSBOZXdUYXJnZXRJbm5l
ckFycm93RnVuY3Rpb25GZWF0dXJlOyB9CiAgICAgdm9pZCBzZXRJbm5lckFycm93RnVuY3Rpb25V
c2VzQXJndW1lbnRzKCkgeyBtX2lubmVyQXJyb3dGdW5jdGlvbkZlYXR1cmVzIHw9IEFyZ3VtZW50
c0lubmVyQXJyb3dGdW5jdGlvbkZlYXR1cmU7IH0KKyAgICAKKyAgICBib29sIGlzRXZhbENvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBtX2lzRXZhbENvbnRleHQ7IH0KKyAgICB2b2lkIHNldElzRXZh
bENvbnRleHQoYm9vbCBpc0V2YWxDb250ZXh0KSB7IG1faXNFdmFsQ29udGV4dCA9IGlzRXZhbENv
bnRleHQ7IH0KIAogICAgIHZvaWQgc2V0SW5uZXJBcnJvd0Z1bmN0aW9uVXNlc0V2YWxBbmRVc2VB
cmd1bWVudHNJZk5lZWRlZCgpCiAgICAgewpAQCAtNzA3LDYgKzcxMiw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA6IDE7CiAgICAgYm9vbCBtX2lzVmFsaWRTdHJp
Y3RNb2RlIDogMTsKICAgICBib29sIG1faGFzQXJndW1lbnRzIDogMTsKKyAgICBib29sIG1faXNF
dmFsQ29udGV4dCA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAg
IHVuc2lnbmVkIG1fZXhwZWN0ZWRTdXBlckJpbmRpbmcgOiAyOwogICAgIGludCBtX2xvb3BEZXB0
aDsKQEAgLTc2Myw5ICs3NjksNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgUGFyc2VyKAotICAgICAgICBWTSosIGNvbnN0IFNv
dXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIFNvdXJj
ZVBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nLAotICAgICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVs
dENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgVGhpc1REWk1vZGUgPSBU
aGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCk7CisgICAgUGFyc2VyKFZNKiwgY29uc3QgU291cmNl
Q29kZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgU291cmNlUGFy
c2VNb2RlLCBTdXBlckJpbmRpbmcsIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JL
aW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCBUaGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpD
aGVja0lmTmVlZGVkLCBEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6Ok5v
bmUsIGJvb2wgaXNFdmFsQ29udGV4dCA9IGZhbHNlKTsKICAgICB+UGFyc2VyKCk7CiAKICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KQEAgLTE1MjgsNiArMTUzMiw3IEBAIHByaXZhdGU6
CiAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAgICAgaW50IG1fbnVtQ29uc3RhbnRzOwog
ICAgIEV4cHJlc3Npb25FcnJvckNsYXNzaWZpZXIqIG1fZXhwcmVzc2lvbkVycm9yQ2xhc3NpZmll
cjsKKyAgICBib29sIG1faXNFdmFsQ29udGV4dDsKICAgICAKICAgICBzdHJ1Y3QgRGVwdGhNYW5h
Z2VyIHsKICAgICAgICAgRGVwdGhNYW5hZ2VyKGludCogZGVwdGgpCkBAIC0xNjQ2LDE0ICsxNjUx
LDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLAogICAgIEpTUGFy
c2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBTdXBl
ckJpbmRpbmcgc3VwZXJCaW5kaW5nLAogICAgIFBhcnNlckVycm9yJiBlcnJvciwgSlNUZXh0UG9z
aXRpb24qIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBudWxscHRyLAotICAgIENvbnN0cnVj
dG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lLAot
ICAgIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQp
CisgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNr
SWZOZWVkZWQsCisgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSA9IERl
cml2ZWRDb250ZXh0VHlwZTo6Tm9uZSkKIHsKICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1Jl
Z2lvbigiUGFyc2luZyIpOwogCiAgICAgQVNTRVJUKCFzb3VyY2UucHJvdmlkZXIoKS0+c291cmNl
KCkuaXNOdWxsKCkpOwogICAgIGlmIChzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlKCkuaXM4Qml0
KCkpIHsKLSAgICAgICAgUGFyc2VyPExleGVyPExDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1
aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENv
bnN0cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOworICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+
PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHBhcnNlTW9kZSwg
c3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSwgZGVyaXZl
ZENvbnRleHRUeXBlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkpOwogICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVy
cm9yLCBuYW1lLCBwYXJzZU1vZGUpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKQEAgLTE2NjQsNyArMTY2OSw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkZWZhdWx0Q29uc3RydWN0b3JLaW5kID09IENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgIkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0
cnVjdG9yIHNob3VsZCBhbHdheXMgdXNlIGEgOC1iaXQgc3RyaW5nIik7Ci0gICAgUGFyc2VyPExl
eGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBw
YXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1v
ZGUpOworICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGlu
TW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1
Y3RvcktpbmQsIHRoaXNURFpNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZhbE5vZGU8UGFy
c2VkTm9kZT4oKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBh
cnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlKTsKICAgICBpZiAo
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggYTI2MmJiNzA4OWViYmVmNDM3
YzkyYmZjM2FhMDJlOWE3Mzc3YTg2My4uNjNkYzI0Zjk0MTk5MWEwZDBmNzQ5MjIyZGE4NTdjZDY0
NGVlODc1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3Bw
CkBAIC0xMDAsMTEgKzEwMCwxMCBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6
Z2V0R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZQogICAgICAgICBl
eGVjdXRhYmxlLT5yZWNvcmRQYXJzZSh1bmxpbmtlZENvZGVCbG9jay0+Y29kZUZlYXR1cmVzKCks
IHVubGlua2VkQ29kZUJsb2NrLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBmaXJzdExpbmUsIGZp
cnN0TGluZSArIGxpbmVDb3VudCwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbik7CiAgICAgICAgIHJl
dHVybiB1bmxpbmtlZENvZGVCbG9jazsKICAgICB9Ci0KICAgICB0eXBlZGVmIHR5cGVuYW1lIENh
Y2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Um9vdE5vZGUgUm9vdE5vZGU7CisgICAg
RGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSA9IGV4ZWN1dGFibGUtPmRlcml2
ZWRDb250ZXh0VHlwZSgpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUg
PSBwYXJzZTxSb290Tm9kZT4oCi0gICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1
aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLAotICAgICAgICBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJs
b2NrVHlwZT46OnBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yLCBudWxs
cHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgJnZtLCBz
b3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIENhY2hlVHlwZXM8
VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhpc1REWk1vZGUsIGRl
cml2ZWRDb250ZXh0VHlwZSk7CiAgICAgaWYgKCFyb290Tm9kZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJjYWxsLTQuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVyY2Fs
bC00LmpzCmluZGV4IGQ5M2JlMzg5MTU0MjEzMTA4NWYwY2I4YTZmNGVhMjBjODFjMmZhZWYuLjIx
ZDhmMTk4YTdiYTViOWQ0NmIxOTY3OTFkNGZkMjlkYzQ5ZTcyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQt
c3VwZXJjYWxsLTQuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcmNhbGwtNC5qcwpAQCAtMzEsNyArMzEsOSBA
QCB2YXIgQyA9IGNsYXNzIEMgZXh0ZW5kcyBBIHsKICAgICBjb25zdHJ1Y3RvciAoKSB7CiAgICAg
ICAgIHZhciBhcnJvdyA9ICgpID0+IGV2YWwoJygoKSA9PiBzdXBlcigpKSgpJyk7CiAgICAgICAg
IGFycm93KCk7Ci0gICAgICAgIHJldHVybiB7fTsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAg
ICB2YWx1ZSA6ICdjb25zdHJ1Y3Rvci12YWx1ZScKKyAgICAgICAgfTsKICAgICB9CiB9OwogCkBA
IC01MSwyNCArNTMsMjQgQEAgdmFyIEUgPSBjbGFzcyBFIGV4dGVuZHMgQSB7CiAgICAgfQogfTsK
IAotLy8gRklYTUU6IEFycm93IGZ1bmN0aW9uIGRvZXMgbm90IHN1cHBvcnQgdXNpbmcgb2YgZXZh
bCB3aXRoIHN1cGVyL3N1cGVyKCkKLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTM5NzcKLS8qCisKIGZvciAodmFyIGk9MDsgaSA8IDEwMDA7IGkrKykgewogICAg
IG5ldyBCKHRydWUpOwogICAgIHZhciBjID0gbmV3IEMoKTsKLSAgICB0ZXN0Q2FzZSh0eXBlb2Yg
Yy5pZCwgJ3VuZGVmaW5lZCcsICdFcnJvciBkdXJpbmcgc2V0IHZhbHVlIGluIGV2YWwgIzEnKTsK
KyAgICB0ZXN0Q2FzZShjLnZhbHVlLCAnY29uc3RydWN0b3ItdmFsdWUnLCAnRXJyb3IgZHVyaW5n
IHNldCB2YWx1ZSBpbiBldmFsICMxLjAnKTsKKyAgICB0ZXN0Q2FzZSh0eXBlb2YgYy5pZCwgJ3Vu
ZGVmaW5lZCcsICdFcnJvciBkdXJpbmcgc2V0IHZhbHVlIGluIGV2YWwgIzEuMScpOwogICAgIHZh
ciBkID0gbmV3IEQoKTsKLSAgICB0ZXN0Q2FzZShkLmlkLCAnbmV3LXZhbHVlJywgJ0Vycm9yIGR1
cmluZyBzZXQgdmFsdWUgaW4gZXZhbCAjMicpOworICAgIHRlc3RDYXNlKGQuaWRWYWx1ZSwgdGVz
dFZhbHVlLCAnRXJyb3IgZHVyaW5nIHNldCB2YWx1ZSBpbiBldmFsICMyLjAnKTsKKyAgICB0ZXN0
Q2FzZShkLmlkLCAnbmV3LXZhbHVlJywgJ0Vycm9yIGR1cmluZyBzZXQgdmFsdWUgaW4gZXZhbCAj
Mi4xJyk7CiAgICAgdmFyIGUgPSBuZXcgRSgpOwotICAgIHRlc3RDYXNlKGUuaWQsICduZXctdmFs
dWUnLCAnRXJyb3IgZHVyaW5nIHNldCB2YWx1ZSBpbiBldmFsICMzJyk7CisgICAgdGVzdENhc2Uo
ZS5pZFZhbHVlLCB0ZXN0VmFsdWUsICdFcnJvciBkdXJpbmcgc2V0IHZhbHVlIGluIGV2YWwgIzMu
MCcpOworICAgIHRlc3RDYXNlKGUuaWQsICduZXctdmFsdWUnLCAnRXJyb3IgZHVyaW5nIHNldCB2
YWx1ZSBpbiBldmFsICMzLjAnKTsKIH0KLSovCiAKLXZhciB0ZXN0RXhjZXB0aW9uID0gZnVuY3Rp
b24gKHZhbHVlLCBpbmRleCkgewordmFyIHRlc3RFeGNlcHRpb24gPSBmdW5jdGlvbiAoS2xhc3Ms
IHZhbHVlLCBpbmRleCkgewogICAgIHZhciBleGNlcHRpb247CiAgICAgdHJ5IHsKLSAgICAgICAg
bmV3IEIodmFsdWUpOworICAgICAgICBuZXcgS2xhc3ModmFsdWUpOwogICAgIH0gY2F0Y2ggKGUp
IHsKICAgICAgICAgZXhjZXB0aW9uID0gZTsKICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIFJl
ZmVyZW5jZUVycm9yKSkKQEAgLTgwLDcgKzgyLDcgQEAgdmFyIHRlc3RFeGNlcHRpb24gPSBmdW5j
dGlvbiAodmFsdWUsIGluZGV4KSB7CiB9CiAKIGZvciAodmFyIGk9MDsgaSA8IDEwMDA7IGkrKykg
ewotICAgIHRlc3RFeGNlcHRpb24oZmFsc2UsIGkpOworICAgIHRlc3RFeGNlcHRpb24oQiwgZmFs
c2UsIGkpOwogfQogCiBjbGFzcyBGIGV4dGVuZHMgQSB7CkBAIC0xMzksMyArMTQxLDIyIEBAIGNs
YXNzIEggZXh0ZW5kcyBBX3RoaXNfUHJvcCB7CiAKIGxldCBoID0gbmV3IEgoKTsKIHRlc3RDYXNl
KGguc29tZVZhbHVlLCB0ZXN0VmFsdWUsICdFcnJvcjogbm90IGNvcnJlY3QgYmluZGluZyBzdXBl
clByb3BlcnR5JnRoaXMgaW4gY29uc3RydWN0b3InKTsKKworY2xhc3MgSSBleHRlbmRzIEEgewor
ICBjb25zdHJ1Y3RvciAoYmVmb3JlU3VwZXIpIHsKKyAgICAgIGlmIChiZWZvcmVTdXBlcikgewor
ICAgICAgICAgIGV2YWwoJygoKSA9PiBzdXBlcigpKSgpJyk7CisgICAgICAgICAgdGVzdENhc2Uo
dGhpcy5pZFZhbHVlLCB0ZXN0VmFsdWUsICJFcnJvcjogc3VwZXIoKSBzaG91bGQgY3JlYXRlIHRo
aXMgYW5kIHB1dCB2YWx1ZSBpbnRvIGlkVmFsdWUgcHJvcGVydHkiKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgdGhpcy5pZFZhbHVlID0gJ3Rlc3RWYWx1ZSc7CisgICAgICAgICAgZXZhbCgn
KCgpID0+IHN1cGVyKCkpKCknKTsKKyAgICAgIH0KKyAgfQorfTsKKworbGV0IGljID0gbmV3IEko
dHJ1ZSk7Cit0ZXN0Q2FzZShpYy5pZFZhbHVlLCB0ZXN0VmFsdWUsICdFcnJvcjogbm90IGNvcnJl
Y3QgYmluZGluZyBzdXBlclByb3BlcnR5JnRoaXMgaW4gY29uc3RydWN0b3InKTsKKworZm9yICh2
YXIgaT0wOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgdGVzdEV4Y2VwdGlvbihJLCBmYWxzZSwgaSk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVycHJvcGVydHkuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVycHJvcGVy
dHkuanMKaW5kZXggZTlmNTYyMzIxNDY1OTdmZWY3ZjFkMGFjZmM2ZTM1MmI2MWYwOGViNS4uZDcz
MTc5YmQzMzJhZTQxNjJjOTE1ODA4NDFhYWMzMzc5ZmJjMjAwMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1z
dXBlcnByb3BlcnR5LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJwcm9wZXJ0eS5qcwpAQCAtMjI4LDMgKzIy
OCw2MSBAQCBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKICAgICB9CiAgICAgdGVz
dENhc2UoZXJyb3IsIHRydWUsICdFcnJvcjogdXNpbmcgInN1cGVyIiBwcm9wZXJ0eSBiZWZvcmUg
c3VwZXIoKSBzaG91bGQgbGVhZCB0byBlcnJvcicpOwogfQorCitjbGFzcyBLIGV4dGVuZHMgQSB7
CisgICAgbmV3TWV0aG9kQXJyb3dFdmFsKCkgeworICAgICAgICB2YXIgYXJyb3cgPSAoKSA9PiBl
dmFsKCdzdXBlci5nZXRWYWx1ZSgpJyk7CisgICAgICAgIHZhciByID0gYXJyb3coKTsKKyAgICAg
ICAgcmV0dXJuIHI7CisgICAgfQorICAgIG5ld01ldGhvZEFycm93RG91YmxlRXZhbCgpIHsKKyAg
ICAgIHZhciBhcnJvdyA9ICgpID0+IGV2YWwoImV2YWwoJ3N1cGVyLmdldFZhbHVlKCknKSIpOwor
ICAgICAgdmFyIHIgPSBhcnJvdygpOworICAgICAgcmV0dXJuIHI7CisgICAgfQorICAgIG5ld01l
dGhvZEFycm93RXZhbEV2YWxBcnJvdygpIHsKKyAgICAgIHZhciBhcnJvdyA9ICgpID0+IGV2YWwo
ImV2YWwoJygoKSA9PiBzdXBlci5nZXRWYWx1ZSgpKSgpJykiKTsKKyAgICAgIHZhciByID0gYXJy
b3coKTsKKyAgICAgIHJldHVybiByOworICAgIH0KKyAgICBuZXdNZXRob2RBcnJvd0V2YWxFdmFs
QXJyb3dFdmFsKCkgeworICAgICAgdmFyIGFycm93ICA9ICgpID0+IGV2YWwoImV2YWwoJygoKSA9
PiBldmFsKFwic3VwZXIuZ2V0VmFsdWUoKVwiKSkoKScpIik7CisgICAgICB2YXIgciA9IGFycm93
KCk7CisgICAgICByZXR1cm4gcjsKKyAgICB9CisgICAgbmV3TWV0aG9kRXZhbCgpIHsKKyAgICAg
ICAgdmFyIHIgPSBldmFsKCJzdXBlci5nZXRWYWx1ZSgpIik7CisgICAgICAgIHJldHVybiByOwor
ICAgIH0KKyAgICBuZXdNZXRob2RFdmFsRXZhbCgpIHsKKyAgICAgICAgdmFyIHIgPSBldmFsKCJl
dmFsKCdzdXBlci5nZXRWYWx1ZSgpJykiKTsKKyAgICAgICAgcmV0dXJuIHI7CisgICAgfQorICAg
IG5ld01ldGhvZEV2YWxBcnJvdygpIHsKKyAgICAgICAgdmFyIHIgPSBldmFsKCIoKCkgPT4gc3Vw
ZXIuZ2V0VmFsdWUoKSkoKSIpOworICAgICAgICByZXR1cm4gcjsKKyAgICB9CisgICAgbmV3TWV0
aG9kRXZhbEV2YWxBcnJvdygpIHsKKyAgICAgICAgdmFyIHIgPSBldmFsKCJldmFsKCcoKCkgPT4g
c3VwZXIuZ2V0VmFsdWUoKSkoKScpIik7CisgICAgICAgIHJldHVybiByOworICAgIH0KKyAgICBu
ZXdNZXRob2RFdmFsRXZhbEFycm93RXZhbCgpIHsKKyAgICAgICAgdmFyIHIgPSBldmFsKCJldmFs
KCcoKCkgPT4gZXZhbChcIihzdXBlci5nZXRWYWx1ZSgpKVwiKSkoKScpIik7CisgICAgICAgIHJl
dHVybiByOworICAgIH0KK30KKwordmFyIGsgPSBuZXcgSygpOworCitmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDA7IGkrKykgeworICAgIHRlc3RDYXNlKGsubmV3TWV0aG9kQXJyb3dFdmFsKCkgLCB0
ZXN0VmFsdWUsICdFcnJvcjogRXJyb3IgaW4gbGV4aWNhbCBiaW5kIHdpdGggZXZhbCBhbmQgYXJy
b3cgZnVuY3Rpb24gIzEnKTsKKyAgICB0ZXN0Q2FzZShrLm5ld01ldGhvZEFycm93RG91YmxlRXZh
bCgpICwgdGVzdFZhbHVlLCAnRXJyb3I6IEVycm9yIGluIGxleGljYWwgYmluZCB3aXRoIGV2YWwg
YW5kIGFycm93IGZ1bmN0aW9uICMyJyk7CisgICAgdGVzdENhc2Uoay5uZXdNZXRob2RBcnJvd0V2
YWxFdmFsQXJyb3coKSAsIHRlc3RWYWx1ZSwgJ0Vycm9yOiBFcnJvciBpbiBsZXhpY2FsIGJpbmQg
d2l0aCBldmFsIGFuZCBhcnJvdyBmdW5jdGlvbiAjMycpOworICAgIHRlc3RDYXNlKGsubmV3TWV0
aG9kQXJyb3dFdmFsRXZhbEFycm93RXZhbCgpICwgdGVzdFZhbHVlLCAnRXJyb3I6IEVycm9yIGlu
IGxleGljYWwgYmluZCB3aXRoIGV2YWwgYW5kIGFycm93IGZ1bmN0aW9uICM0Jyk7CisKKyAgICB0
ZXN0Q2FzZShrLm5ld01ldGhvZEV2YWwoKSAsIHRlc3RWYWx1ZSwgJ0Vycm9yOiBFcnJvciBpbiBs
ZXhpY2FsIGJpbmQgd2l0aCBldmFsIGFuZCBhcnJvdyBmdW5jdGlvbiAjNScpOworICAgIHRlc3RD
YXNlKGsubmV3TWV0aG9kRXZhbEV2YWwoKSAsIHRlc3RWYWx1ZSwgJ0Vycm9yOiBFcnJvciBpbiBs
ZXhpY2FsIGJpbmQgd2l0aCBldmFsIGFuZCBhcnJvdyBmdW5jdGlvbiAjNicpOworICAgIHRlc3RD
YXNlKGsubmV3TWV0aG9kRXZhbEFycm93KCkgLCB0ZXN0VmFsdWUsICdFcnJvcjogRXJyb3IgaW4g
bGV4aWNhbCBiaW5kIHdpdGggZXZhbCBhbmQgYXJyb3cgZnVuY3Rpb24gIzcnKTsKKyAgICB0ZXN0
Q2FzZShrLm5ld01ldGhvZEV2YWxFdmFsQXJyb3coKSAsIHRlc3RWYWx1ZSwgJ0Vycm9yOiBFcnJv
ciBpbiBsZXhpY2FsIGJpbmQgd2l0aCBldmFsIGFuZCBhcnJvdyBmdW5jdGlvbiA4Jyk7CisgICAg
dGVzdENhc2Uoay5uZXdNZXRob2RFdmFsRXZhbEFycm93RXZhbCgpICwgdGVzdFZhbHVlLCAnRXJy
b3I6IEVycm9yIGluIGxleGljYWwgYmluZCB3aXRoIGV2YWwgYW5kIGFycm93IGZ1bmN0aW9uICM5
Jyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Ns
YXNzLXN5bnRheC1zdXBlci1pbi1ldmFsLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9jbGFzcy1zeW50YXgtc3VwZXItaW4tZXZhbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzM1NTJl
ZjAwNzc5OWJiZTQzY2VmMzYzYjE0YmEwZmJlZTc3YzYzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9jbGFzcy1zeW50YXgtc3VwZXItaW4tZXZh
bC5qcwpAQCAtMCwwICsxLDkzIEBACit2YXIgdGVzdFZhbHVlID0gJ3Rlc3QtdmFsdWUnOworCitj
bGFzcyBBIHsKKyAgY29uc3RydWN0b3IoKSB7CisgICAgdGhpcy52YWx1ZSA9IHRlc3RWYWx1ZTsK
KyAgfQorfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7CisgIGNvbnN0cnVjdG9yKHRkeikgeworICAg
IGlmICh0ZHopCisgICAgICB0aGlzLmlkID0gJ2lkJzsKKyAgICBldmFsKCdzdXBlcigpJyk7Cisg
IH0KK30KKwordmFyIGIgPSBuZXcgQihmYWxzZSk7CitpZiAoYi52YWx1ZSAhPT0gdGVzdFZhbHVl
KQorICAgdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyB2YWx1ZSIpOworCitub0lubGluZShCKTsKKwor
bGV0IGNoZWNrVERaID0gZnVuY3Rpb24gKGtsYXNzLCBpKSB7CisgICAgdmFyIGV4Y2VwdGlvbjsK
KyAgICB0cnkgeworICAgICAgIG5ldyBrbGFzcyh0cnVlKTsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgIGV4Y2VwdGlvbiA9IGU7CisgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBSZWZlcmVu
Y2VFcnJvcikpCisgICAgICAgICAgICB0aHJvdyAiRXhjZXB0aW9uIHRocm93biBpbiBpdGVyYXRp
b24gIiArIGkgKyAiIHdhcyBub3QgYSByZWZlcmVuY2UgZXJyb3IiOworICAgIH0KKyAgICBpZiAo
IWV4Y2VwdGlvbikKKyAgICAgICAgdGhyb3cgIkV4Y2VwdGlvbiBub3QgdGhyb3duIGZvciBhbiB1
bml0aWFsaXplZCB0aGlzIGF0IGl0ZXJhdGlvbiAiICsgaTsKK30KKworZm9yICh2YXIgaSA9IDA7
IGkgPCAxZTQ7ICsraSkgeworICAgIGNoZWNrVERaKEIpOworfQorCitjbGFzcyBDIGV4dGVuZHMg
QSB7CisgIGNvbnN0cnVjdG9yKHRkeikgeworICAgIGlmICh0ZHopCisgICAgICB0aGlzLmlkID0g
J2lkJzsKKyAgICBldmFsKCJldmFsKCdzdXBlcigpJykiKTsKKyAgfQorfQorCit2YXIgYyA9IG5l
dyBDKGZhbHNlKTsKK2lmIChjLnZhbHVlICE9PSB0ZXN0VmFsdWUpCisgICB0aHJvdyBuZXcgRXJy
b3IoIndyb25nIHZhbHVlIik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAg
IGNoZWNrVERaKEMpOworfQorCitjbGFzcyBEIGV4dGVuZHMgQSB7CisgIGNvbnN0cnVjdG9yKHRk
eikgeworICAgIGlmICh0ZHopCisgICAgICB0aGlzLmlkID0gJ2lkJzsKKyAgICBldmFsKCJldmFs
KFwiZXZhbCgnc3VwZXIoKScpXCIpIik7CisgIH0KK30KKwordmFyIGQgPSBuZXcgRChmYWxzZSk7
CitpZiAoZC52YWx1ZSAhPT0gdGVzdFZhbHVlKQorICAgdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyB2
YWx1ZSIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICBjaGVja1REWihE
KTsKK30KKwordmFyIGdldEV2YWwgPSBmdW5jdGlvbiAoY291bnQpIHsKKyAgdmFyIG5ld0NvdW50
ID0gY291bnQgLSAxOworICByZXR1cm4gbmV3Q291bnQgPT09IDAKKyAgICAgID8gJ3N1cGVyKCkn
CisgICAgICA6ICdldmFsKGdldEV2YWwoJyArIG5ld0NvdW50ICsgJykpJzsKK307CisKK2NsYXNz
IEUgZXh0ZW5kcyBBIHsKKyAgY29uc3RydWN0b3IodGR6KSB7CisgICAgaWYgKHRkeikKKyAgICAg
IHRoaXMuaWQgPSAnaWQnOworICAgIGV2YWwoZ2V0RXZhbCgxMCkpOworICB9Cit9CisKK3ZhciBl
ID0gbmV3IEUoZmFsc2UpOworaWYgKGUudmFsdWUgIT09IHRlc3RWYWx1ZSkKKyAgIHRocm93IG5l
dyBFcnJvcigid3JvbmcgdmFsdWUiKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyArK2kp
IHsKKyAgIGNoZWNrVERaKEUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtc3VwZXIuanMKaW5kZXggOWU1M2M3OTE3
MzhlY2Y4YjlkMzQ5ODM1ZWE4M2JmOGQ2Yzg5NzdiYi4uZjQ2Nzc0ODA3ZTY4OWVlZmMzZWZmODU0
YmYyNTRjMGFlNDM0ZDAxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1zdXBlci5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLXN1cGVyLmpzCkBAIC00MCw5ICs0MCw3IEBA
IGZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKICAgICB9CiAKICAgICBsZXQg
YSA9IG5ldyBBKCk7Ci0gICAgc2hvdWxkVGhyb3coKCkgPT4gewotICAgICAgICBhLmdlbigpLm5l
eHQoKTsKLSAgICB9LCBgU3ludGF4RXJyb3I6IHN1cGVyIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1
bmN0aW9ucy5gKTsKKyAgICBzaG91bGRCZShhLmdlbigpLm5leHQoKS52YWx1ZSwgNDIpOwogfSgp
KTsKIAogKGZ1bmN0aW9uICgpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiZTVlYjJkMTYxYzQyOGI3MGRiMWQ2ZjE3OWE3
YjU3YTkzZDY2ODkyLi5lN2U1ZjI5MDg1MDlkYmEwZjZhYTYzNjdkYjYwNWVhMDgxMzkyN2E3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDMtMTUgIFNrYWNoa292IE9sZWtzYW5kciAgPGdz
a2FjaGtvdkBnbWFpbC5jb20+CisKKyAgICAgICAgSW52b2tpbmcgc3VwZXIoKS9zdXBlciBpbnNp
ZGUgb2YgdGhlIGV2YWwgc2hvdWxkIG5vdCBsZWFkIHRvIFN5bnRheEVycm9yCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM4NjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2NsYXNzLXN5bnRheC1z
dXBlci1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRh
eC1zdXBlci5qczoKKwogMjAxNi0wMy0xNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTk3MTE0KTogQ3Jhc2ggaW4gV2ViQ29yZTo6
TWVkaWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29tcGxldGVQZXJtaXNzaW9uQ2hlY2sKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1zdXBlci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtc3VwZXItZXhwZWN0ZWQudHh0CmluZGV4IGE5YzU1NGZj
MDRkYTdlMjllN2QzMDkyMDdlYTU1ZTJjZGMxN2Q1MDIuLmI3YTljNzBhYTY1NGQ3MzViMjllNmQy
ZjUwNGQzNTg0MTNhZmVhMzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRh
eC1zdXBlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LXN1
cGVyLWV4cGVjdGVkLnR4dApAQCAtNSw2ICs1LDggQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUK
IAogUEFTUyAobmV3IEJhc2UpIGluc3RhbmNlb2YgQmFzZQogUEFTUyAobmV3IERlcml2ZWQpIGlu
c3RhbmNlb2YgRGVyaXZlZAorUEFTUyAobmV3IERlcml2ZWRXaXRoRXZhbCkgaW5zdGFuY2VvZiBE
ZXJpdmVkV2l0aEV2YWwKK1BBU1MgKG5ldyBEZXJpdmVkV2l0aEV2YWwodHJ1ZSkpOjo6UmVmZXJl
bmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4KIFBBU1MgKG5l
dyBEZXJpdmVkKS5jYWxsQmFzZU1ldGhvZCgpOjo6YmFzZU1ldGhvZFZhbHVlCiBQQVNTIHggPSAo
bmV3IERlcml2ZWQpLmNhbGxCYXNlTWV0aG9kOyB4KCk6OjpiYXNlTWV0aG9kVmFsdWUKIFBBU1Mg
KG5ldyBEZXJpdmVkKS5jYWxsQmFzZU1ldGhvZEluR2V0dGVyOjo6YmFzZU1ldGhvZFZhbHVlCkBA
IC00MSw2ICs0MywxMiBAQCBQQVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBPYmplY3QgeyBjb25zdHJ1
Y3RvcigpIHsgZnVuY3Rpb24geCgpIHsgc3VwZXIoKSB9IH0gfSk6OgogUEFTUyBuZXcgKGNsYXNz
IGV4dGVuZHMgT2JqZWN0IHsgY29uc3RydWN0b3IoKSB7IGZ1bmN0aW9uIHgoKSB7IHN1cGVyLm1l
dGhvZCB9IH0gfSk6OjpTeW50YXhFcnJvcjogc3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIG1l
dGhvZCBvZiBhIGRlcml2ZWQgY2xhc3MuCiBQQVNTIGZ1bmN0aW9uIHgoKSB7IHN1cGVyLm1ldGhv
ZCgpOyB9Ojo6U3ludGF4RXJyb3I6IHN1cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qg
b2YgYSBkZXJpdmVkIGNsYXNzLgogUEFTUyBmdW5jdGlvbiB4KCkgeyBzdXBlcigpOyB9Ojo6U3lu
dGF4RXJyb3I6IENhbm5vdCBjYWxsIHN1cGVyKCkgb3V0c2lkZSBvZiBhIGNsYXNzIGNvbnN0cnVj
dG9yLgorUEFTUyBldmFsKCJzdXBlci5tZXRob2QoKSIpOjo6U3ludGF4RXJyb3I6IHN1cGVyIGlz
IG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9ucy4KK1BBU1MgZXZhbCgic3VwZXIoKSIpOjo6U3lu
dGF4RXJyb3I6IHN1cGVyIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9ucy4KK1BBU1MgKGZ1
bmN0aW9uICgpIHsgZXZhbCgic3VwZXIubWV0aG9kKCkiKTt9KSgpOjo6U3ludGF4RXJyb3I6IHN1
cGVyIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9ucy4KK1BBU1MgKGZ1bmN0aW9uICgpIHsg
ZXZhbCgic3VwZXIoKSIpO30pKCk6OjpTeW50YXhFcnJvcjogc3VwZXIgaXMgb25seSB2YWxpZCBp
bnNpZGUgZnVuY3Rpb25zLgorUEFTUyBuZXcgKGNsYXNzIHsgY29uc3RydWN0b3IoKSB7IChmdW5j
dGlvbiAoKSB7IGV2YWwoInN1cGVyKCkiKTt9KSgpOyB9IH0pOjo6U3ludGF4RXJyb3I6IHN1cGVy
IGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9ucy4KK1BBU1MgKG5ldyAoY2xhc3MgeyBtZXRo
b2QoKSB7IChmdW5jdGlvbiAoKSB7IGV2YWwoInN1cGVyLm1ldGhvZCgpIik7fSkoKTsgfX0pKS5t
ZXRob2QoKTo6OlN5bnRheEVycm9yOiBzdXBlciBpcyBvbmx5IHZhbGlkIGluc2lkZSBmdW5jdGlv
bnMuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZAogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LXN1cGVyLmpzIGIvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1zdXBlci5qcwppbmRleCBmODYz
N2MzODkwYTZiYjQyNTUxNzI5NTZjYWM0MjVmN2Y1NzM3OTZlLi4wNWRmYTE3YzdkNWZlMzcwZjJk
NzIzNWY4YjdkNjIyNmY3NmI2OTUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvY2xhc3Mtc3ludGF4LXN1cGVyLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9jbGFzcy1zeW50YXgtc3VwZXIuanMKQEAgLTM5LDE0ICszOSwxNCBAQCBmdW5jdGlvbiBz
aG91bGRCZShhLCBiKSB7CiBmdW5jdGlvbiBzaG91bGRCZVRydWUocykgewogICAgIGlmIChldmFs
KHMpID09PSB0cnVlKQogICAgICAgICB0ZXN0UGFzc2VkKHMpOwotICAgIGVsc2UgCisgICAgZWxz
ZQogICAgICAgICB0ZXN0RmFpbGVkKHMpOwogfQogCiBmdW5jdGlvbiBzaG91bGRCZUZhbHNlKHMp
IHsKICAgICBpZiAoZXZhbChzKSA9PT0gZmFsc2UpCiAgICAgICAgIHRlc3RQYXNzZWQocyk7Ci0g
ICAgZWxzZSAKKyAgICBlbHNlCiAgICAgICAgIHRlc3RGYWlsZWQocyk7CiB9CiAKQEAgLTc2LDgg
Kzc2LDE5IEBAIGNsYXNzIFNlY29uZERlcml2ZWQgZXh0ZW5kcyBEZXJpdmVkIHsKICAgICBjaGFp
bk1ldGhvZCgpIHsgcmV0dXJuIHN1cGVyLmNoYWluTWV0aG9kKCkuY29uY2F0KFsnc2Vjb25kRGVy
aXZlZCddKTsgfQogfQogCitjbGFzcyBEZXJpdmVkV2l0aEV2YWwgZXh0ZW5kcyBCYXNlIHsKKyAg
ICBjb25zdHJ1Y3Rvcih0aHJvd1REWikgeworICAgICAgaWYgKHRocm93VERaKQorICAgICAgICB0
aGlzLmlkID0gJyc7CisKKyAgICAgIGV2YWwoInN1cGVyKCkiKTsKKyAgICB9Cit9CisKIHNob3Vs
ZEJlVHJ1ZSgnKG5ldyBCYXNlKSBpbnN0YW5jZW9mIEJhc2UnKTsKIHNob3VsZEJlVHJ1ZSgnKG5l
dyBEZXJpdmVkKSBpbnN0YW5jZW9mIERlcml2ZWQnKTsKK3Nob3VsZEJlVHJ1ZSgnKG5ldyBEZXJp
dmVkV2l0aEV2YWwpIGluc3RhbmNlb2YgRGVyaXZlZFdpdGhFdmFsJyk7CitzaG91bGRUaHJvdygn
KG5ldyBEZXJpdmVkV2l0aEV2YWwodHJ1ZSkpJywgJyJSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFj
Y2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiInKTsKIHNob3VsZEJlKCcobmV3IERlcml2ZWQp
LmNhbGxCYXNlTWV0aG9kKCknLCAnYmFzZU1ldGhvZFZhbHVlJyk7CiBzaG91bGRCZSgneCA9IChu
ZXcgRGVyaXZlZCkuY2FsbEJhc2VNZXRob2Q7IHgoKScsICdiYXNlTWV0aG9kVmFsdWUnKTsKIHNo
b3VsZEJlKCcobmV3IERlcml2ZWQpLmNhbGxCYXNlTWV0aG9kSW5HZXR0ZXInLCAnYmFzZU1ldGhv
ZFZhbHVlJyk7CkBAIC0xMTUsNSArMTI2LDEzIEBAIHNob3VsZFRocm93KCduZXcgKGNsYXNzIGV4
dGVuZHMgT2JqZWN0IHsgY29uc3RydWN0b3IoKSB7IGZ1bmN0aW9uIHgoKSB7IHN1cGVyKCkKIHNo
b3VsZFRocm93KCduZXcgKGNsYXNzIGV4dGVuZHMgT2JqZWN0IHsgY29uc3RydWN0b3IoKSB7IGZ1
bmN0aW9uIHgoKSB7IHN1cGVyLm1ldGhvZCB9IH0gfSknLCAnIlN5bnRheEVycm9yOiBzdXBlciBj
YW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcy4iJyk7CiBzaG91
bGRUaHJvdygnZnVuY3Rpb24geCgpIHsgc3VwZXIubWV0aG9kKCk7IH0nLCAnIlN5bnRheEVycm9y
OiBzdXBlciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcy4i
Jyk7CiBzaG91bGRUaHJvdygnZnVuY3Rpb24geCgpIHsgc3VwZXIoKTsgfScsICciU3ludGF4RXJy
b3I6IENhbm5vdCBjYWxsIHN1cGVyKCkgb3V0c2lkZSBvZiBhIGNsYXNzIGNvbnN0cnVjdG9yLiIn
KTsKK3Nob3VsZFRocm93KCdldmFsKCJzdXBlci5tZXRob2QoKSIpJywgJyJTeW50YXhFcnJvcjog
c3VwZXIgaXMgb25seSB2YWxpZCBpbnNpZGUgZnVuY3Rpb25zLiInKTsKK3Nob3VsZFRocm93KCdl
dmFsKCJzdXBlcigpIiknLCAnIlN5bnRheEVycm9yOiBzdXBlciBpcyBvbmx5IHZhbGlkIGluc2lk
ZSBmdW5jdGlvbnMuIicpOworCitzaG91bGRUaHJvdygnKGZ1bmN0aW9uICgpIHsgZXZhbCgic3Vw
ZXIubWV0aG9kKCkiKTt9KSgpJywgJyJTeW50YXhFcnJvcjogc3VwZXIgaXMgb25seSB2YWxpZCBp
bnNpZGUgZnVuY3Rpb25zLiInKTsKK3Nob3VsZFRocm93KCcoZnVuY3Rpb24gKCkgeyBldmFsKCJz
dXBlcigpIik7fSkoKScsICciU3ludGF4RXJyb3I6IHN1cGVyIGlzIG9ubHkgdmFsaWQgaW5zaWRl
IGZ1bmN0aW9ucy4iJyk7CisKK3Nob3VsZFRocm93KCduZXcgKGNsYXNzIHsgY29uc3RydWN0b3Io
KSB7IChmdW5jdGlvbiAoKSB7IGV2YWwoInN1cGVyKCkiKTt9KSgpOyB9IH0pJywgJyJTeW50YXhF
cnJvcjogc3VwZXIgaXMgb25seSB2YWxpZCBpbnNpZGUgZnVuY3Rpb25zLiInKTsKK3Nob3VsZFRo
cm93KCcobmV3IChjbGFzcyB7IG1ldGhvZCgpIHsgKGZ1bmN0aW9uICgpIHsgZXZhbCgic3VwZXIu
bWV0aG9kKCkiKTt9KSgpOyB9fSkpLm1ldGhvZCgpJywgJyJTeW50YXhFcnJvcjogc3VwZXIgaXMg
b25seSB2YWxpZCBpbnNpZGUgZnVuY3Rpb25zLiInKTsKIAogdmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274212</attachid>
            <date>2016-03-16 13:11:35 -0700</date>
            <delta_ts>2016-03-17 12:46:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153864-20160316221122.patch</filename>
            <type>text/plain</type>
            <size>40736</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YjQ4Y2FlMGM4MjhlZWE5NThhMjA3OGQxZmIzNzI0N2E1MGY3ZWI3Li45MGM0NzYyNjlmMmE1ZDFl
MjI0OGQyNGQzYjcxODUzMGJkZmNjNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAxNi0wMy0xNiAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBJbnZva2luZyBzdXBlcigpL3N1cGVyIGluc2lkZSBvZiB0aGUg
ZXZhbCBzaG91bGQgbm90IGxlYWQgdG8gU3ludGF4RXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mzg2NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgb2YgdGhlIGludm9raW5n
IHN1cGVyL3N1cGVyKCkgaW5zaWRlIG9mIHRoZSBldmFsIHdpdGhpbiBjbGFzcy4KKyAgICAgICAg
QWxzbyBzdXBwb3J0IGNhc2VzIHdoZW4gZXZhbCBpcyBpbnZva2VkIGluIGNvbnN0cnVjdG9yLCBj
bGFzcyBtZXRob2QgZGlyZWN0bHkgCisgICAgICAgIG9yIHZpYSBhcnJvdyBmdW5jdGlvbi4gQWNj
ZXNzIHRvIHRoZSBuZXcudGFyZ2V0IGluIGV2YWwgaXMgbm90IHBhcnQgb2YgdGhpcyBwYXRjaAor
ICAgICAgICBhbmQgd2lsbCBiZSBpbXBsZW1lbnRlZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NTQ1CisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6
ZUFycm93RnVuY3Rpb25Db250ZXh0U2NvcGVJZk5lZWRlZCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0TG9hZEFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNUaGlzVXNlZEluSW5uZXJBcnJvd0Z1
bmN0aW9uT3JFdmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzTmV3VGFy
Z2V0VXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uT3JFdmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmlzU3VwZXJVc2VkSW5Jbm5lckFycm93RnVuY3Rpb25PckV2YWwpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNTdXBlckNhbGxVc2VkSW5Jbm5lckFycm93
RnVuY3Rpb25PckV2YWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
dE5ld1RhcmdldFRvQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0RGVyaXZlZENvbnN0cnVjdG9yVG9BcnJvd0Z1bmN0aW9u
Q29udGV4dFNjb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRU
aGlzVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcDoKKyAgICAgICAgKEpTQzo6VGhpc05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkV2YWxGdW5jdGlvbkNhbGxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OlBhcnNlcik6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Npb24pOgorICAgICAgICAq
IHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OlNjb3BlKToKKyAgICAgICAg
KEpTQzo6U2NvcGU6OmlzRXZhbENvbnRleHQpOgorICAgICAgICAoSlNDOjpTY29wZTo6c2V0SXNF
dmFsQ29udGV4dCk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0Nv
ZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2Nr
KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3Vw
ZXJjYWxsLTQuanM6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC1iaW5kLXN1cGVycHJvcGVydHkuanM6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2NsYXNzLXN5
bnRheC1zdXBlci1pbi1ldmFsLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLXdpdGgtc3VwZXIuanM6CisKIDIwMTYtMDMtMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gRG9uJ3QgcmVmZXJlbmNlIHRoZSBw
cm9wZXJ0aWVzIG9mIEBSZWZsZWN0IGRpcmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDY0Yzdm
YTk1MjA3MGQ2NmFiZjgxZDFkMDFiZjJkNzlkNzI3MTRkYzguLjk4YzRhZWI2Y2MxZTVjNmY2MmRj
NGY2YjM2M2QzMmM4MDQ4OTU0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC02MjgsMTMgKzYyOCwx
OSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9k
ZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZAogICAgICAgICB2YXJpYWJsZXMuYXBwZW5kKElk
ZW50aWZpZXI6OmZyb21VaWQobV92bSwgZW50cnkua2V5LmdldCgpKSk7CiAgICAgfQogICAgIGNv
ZGVCbG9jay0+YWRvcHRWYXJpYWJsZXModmFyaWFibGVzKTsKKyAgICAKKyAgICBpZiAoZXZhbE5v
ZGUtPnVzZXNTdXBlckNhbGwoKSB8fCBldmFsTm9kZS0+dXNlc05ld1RhcmdldCgpKQorICAgICAg
ICBtX25ld1RhcmdldFJlZ2lzdGVyID0gYWRkVmFyKCk7CiAKICAgICBwdXNoVERaVmFyaWFibGVz
KCpwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgVERaQ2hlY2tPcHRpbWl6YXRpb246OkRvTm90T3B0
aW1pemUpOwotCi0gICAgaWYgKGNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpICYm
IGV2YWxOb2RlLT51c2VzVGhpcygpKQorICAgIAorICAgIGlmIChjb2RlQmxvY2stPmlzQXJyb3dG
dW5jdGlvbkNvbnRleHQoKSAmJiAoZXZhbE5vZGUtPnVzZXNUaGlzKCkgfHwgZXZhbE5vZGUtPnVz
ZXNTdXBlclByb3BlcnR5KCkpKQogICAgICAgICBlbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlv
bkxleGljYWxFbnZpcm9ubWVudCgpOwogCi0gICAgaWYgKG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0
aW9uQ29udGV4dCgpICYmICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSkgewor
ICAgIGlmIChldmFsTm9kZS0+dXNlc1N1cGVyQ2FsbCgpIHx8IGV2YWxOb2RlLT51c2VzTmV3VGFy
Z2V0KCkpCisgICAgICAgIGVtaXRMb2FkTmV3VGFyZ2V0RnJvbUFycm93RnVuY3Rpb25MZXhpY2Fs
RW52aXJvbm1lbnQoKTsKKworICAgIGlmIChuZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRl
eHQoKSAmJiAhY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb25Db250ZXh0KCkgJiYgIWlzRGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dCgpKSB7CiAgICAgICAgIGluaXRpYWxpemVBcnJvd0Z1bmN0aW9u
Q29udGV4dFNjb3BlSWZOZWVkZWQoKTsKICAgICAgICAgZW1pdFB1dFRoaXNUb0Fycm93RnVuY3Rp
b25Db250ZXh0U2NvcGUoKTsKICAgICB9CkBAIC04OTcsMTcgKzkwMywxNyBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjppbml0aWFsaXplQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZUlmTmVlZGVk
KFN5bWJvbFRhYmxlKgogICAgICAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24o
KSkgewogICAgICAgICAgICAgU2NvcGVPZmZzZXQgb2Zmc2V0OwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBpZiAoaXNUaGlzVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpIHsKKyAgICAgICAg
ICAgIGlmIChpc1RoaXNVc2VkSW5Jbm5lckFycm93RnVuY3Rpb25PckV2YWwoKSkgewogICAgICAg
ICAgICAgICAgIG9mZnNldCA9IHN5bWJvbFRhYmxlLT50YWtlTmV4dFNjb3BlT2Zmc2V0KCk7CiAg
ICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPnNldChwcm9wZXJ0eU5hbWVzKCkudGhpc0lkZW50
aWZpZXIuaW1wbCgpLCBTeW1ib2xUYWJsZUVudHJ5KFZhck9mZnNldChvZmZzZXQpKSk7CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChtX2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSAm
JiBpc05ld1RhcmdldFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSB7CisgICAgICAgICAgICBp
ZiAobV9jb2RlVHlwZSA9PSBGdW5jdGlvbkNvZGUgJiYgaXNOZXdUYXJnZXRVc2VkSW5Jbm5lckFy
cm93RnVuY3Rpb25PckV2YWwoKSkgewogICAgICAgICAgICAgICAgIG9mZnNldCA9IHN5bWJvbFRh
YmxlLT50YWtlTmV4dFNjb3BlT2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUt
PnNldChwcm9wZXJ0eU5hbWVzKCkubmV3VGFyZ2V0TG9jYWxQcml2YXRlTmFtZS5pbXBsKCksIFN5
bWJvbFRhYmxlRW50cnkoVmFyT2Zmc2V0KG9mZnNldCkpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIAotICAgICAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3Rvcktp
bmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgJiYgaXNTdXBlclVzZWRJbklubmVyQXJy
b3dGdW5jdGlvbigpKSB7CisgICAgICAgICAgICBpZiAoaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0
cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCAmJiBpc1N1cGVyVXNlZElu
SW5uZXJBcnJvd0Z1bmN0aW9uT3JFdmFsKCkpIHsKICAgICAgICAgICAgICAgICBvZmZzZXQgPSBz
eW1ib2xUYWJsZS0+dGFrZU5leHRTY29wZU9mZnNldCgpOwogICAgICAgICAgICAgICAgIHN5bWJv
bFRhYmxlLT5zZXQocHJvcGVydHlOYW1lcygpLmRlcml2ZWRDb25zdHJ1Y3RvclByaXZhdGVOYW1l
LmltcGwoKSwgU3ltYm9sVGFibGVFbnRyeShWYXJPZmZzZXQob2Zmc2V0KSkpOwogICAgICAgICAg
ICAgfQpAQCAtOTE4LDE5ICs5MjQsMTkgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6aW5pdGlh
bGl6ZUFycm93RnVuY3Rpb25Db250ZXh0U2NvcGVJZk5lZWRlZChTeW1ib2xUYWJsZSoKIAogICAg
IFZhcmlhYmxlRW52aXJvbm1lbnQgZW52aXJvbm1lbnQ7CiAKLSAgICBpZiAoaXNUaGlzVXNlZElu
SW5uZXJBcnJvd0Z1bmN0aW9uKCkpIHsKKyAgICBpZiAoaXNUaGlzVXNlZEluSW5uZXJBcnJvd0Z1
bmN0aW9uT3JFdmFsKCkpIHsKICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBlbnZpcm9ubWVudC5h
ZGQocHJvcGVydHlOYW1lcygpLnRoaXNJZGVudGlmaWVyKTsKICAgICAgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS5zZXRJc0NhcHR1cmVkKCk7CiAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUuc2V0SXNDb25zdCgpOwogICAgIH0KICAgICAKLSAgICBpZiAobV9jb2RlVHlwZSA9
PSBGdW5jdGlvbkNvZGUgJiYgaXNOZXdUYXJnZXRVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkg
eworICAgIGlmIChtX2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSAmJiBpc05ld1RhcmdldFVzZWRJ
bklubmVyQXJyb3dGdW5jdGlvbk9yRXZhbCgpKSB7CiAgICAgICAgIGF1dG8gYWRkVGFyZ2V0ID0g
ZW52aXJvbm1lbnQuYWRkKHByb3BlcnR5TmFtZXMoKS5uZXdUYXJnZXRMb2NhbFByaXZhdGVOYW1l
KTsKICAgICAgICAgYWRkVGFyZ2V0Lml0ZXJhdG9yLT52YWx1ZS5zZXRJc0NhcHR1cmVkKCk7CiAg
ICAgICAgIGFkZFRhcmdldC5pdGVyYXRvci0+dmFsdWUuc2V0SXNMZXQoKTsKICAgICB9CiAKLSAg
ICBpZiAoaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9y
S2luZDo6RGVyaXZlZCAmJiBpc1N1cGVyVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpIHsKKyAg
ICBpZiAoaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9y
S2luZDo6RGVyaXZlZCAmJiBpc1N1cGVyVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uT3JFdmFsKCkp
IHsKICAgICAgICAgYXV0byBkZXJpdmVkQ29uc3RydWN0b3IgPSBlbnZpcm9ubWVudC5hZGQocHJv
cGVydHlOYW1lcygpLmRlcml2ZWRDb25zdHJ1Y3RvclByaXZhdGVOYW1lKTsKICAgICAgICAgZGVy
aXZlZENvbnN0cnVjdG9yLml0ZXJhdG9yLT52YWx1ZS5zZXRJc0NhcHR1cmVkKCk7CiAgICAgICAg
IGRlcml2ZWRDb25zdHJ1Y3Rvci5pdGVyYXRvci0+dmFsdWUuc2V0SXNMZXQoKTsKQEAgLTQxMDAs
NyArNDEwNiw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnBvcEluZGV4ZWRGb3JJblNjb3Bl
KFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0ZXIpCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0TG9hZEFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQobV9jb2RlQmxvY2stPmlzQXJyb3dGdW5j
dGlvbigpIHx8IG1fY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb25Db250ZXh0KCkgfHwgY29uc3Ry
dWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKTsKKyAgICBBU1NFUlQobV9j
b2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpIHx8IG1fY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rp
b25Db250ZXh0KCkgfHwgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJp
dmVkIHx8IG1fY29kZVR5cGUgPT0gRXZhbENvZGUpOwogCiAgICAgcmV0dXJuIGVtaXRSZXNvbHZl
U2NvcGUobnVsbHB0ciwgdmFyaWFibGUoaWRlbnRpZmllciwgVGhpc1Jlc29sdXRpb25UeXBlOjpT
Y29wZWQpKTsKIH0KQEAgLTQxMjQsNyArNDEzMCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0TG9hZERlcml2ZWRDb25zdHJ1Y3RvckZyb21BcnJvd0Z1bmN0aW9uTGV4aWNh
CiAgICAgcmV0dXJuIGVtaXRHZXRGcm9tU2NvcGUobmV3VGVtcG9yYXJ5KCksIGVtaXRMb2FkQXJy
b3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudChwcm9wZXJ0eU5hbWVzKCkuZGVyaXZlZENvbnN0
cnVjdG9yUHJpdmF0ZU5hbWUpLCBwcm90b1Njb3BlVmFyLCBUaHJvd0lmTm90Rm91bmQpOwogfQog
ICAgIAotYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aXNUaGlzVXNlZEluSW5uZXJBcnJvd0Z1bmN0
aW9uKCkgCitib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppc1RoaXNVc2VkSW5Jbm5lckFycm93RnVu
Y3Rpb25PckV2YWwoKSAKIHsKICAgICByZXR1cm4gbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJv
d0Z1bmN0aW9uc1VzZVRoaXMoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rp
b25zVXNlU3VwZXJQcm9wZXJ0eSgpIHx8IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5j
dGlvbnNVc2VTdXBlckNhbGwoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rp
b25zVXNlRXZhbCgpIHx8IG1fY29kZUJsb2NrLT51c2VzRXZhbCgpOwogfQpAQCAtNDEzNCwyNCAr
NDE0MCwyNCBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppc0FyZ3VtZW50c1VzZWRJbklubmVy
QXJyb3dGdW5jdGlvbigpCiAgICAgcmV0dXJuIG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dG
dW5jdGlvbnNVc2VBcmd1bWVudHMoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVu
Y3Rpb25zVXNlRXZhbCgpOwogfQogCi1ib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppc05ld1Rhcmdl
dFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpCitib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppc05l
d1RhcmdldFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbk9yRXZhbCgpCiB7Ci0gICAgcmV0dXJuIG1f
c2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VOZXdUYXJnZXQoKSB8fCBtX3Nj
b3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlU3VwZXJDYWxsKCk7CisgICAgcmV0
dXJuIG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VOZXdUYXJnZXQoKSB8
fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlU3VwZXJDYWxsKCkgfHwg
bV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZUV2YWwoKSB8fCBtX2NvZGVC
bG9jay0+dXNlc0V2YWwoKTsKIH0KIAotYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aXNTdXBlclVz
ZWRJbklubmVyQXJyb3dGdW5jdGlvbigpCitib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppc1N1cGVy
VXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uT3JFdmFsKCkKIHsKLSAgICByZXR1cm4gbV9zY29wZU5v
ZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZVN1cGVyQ2FsbCgpIHx8IG1fc2NvcGVOb2Rl
LT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VTdXBlclByb3BlcnR5KCk7CisgICAgcmV0dXJu
IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VTdXBlckNhbGwoKSB8fCBt
X3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlU3VwZXJQcm9wZXJ0eSgpIHx8
IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VFdmFsKCkgfHwgbV9jb2Rl
QmxvY2stPnVzZXNFdmFsKCk7CiB9CiAKLWJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmlzU3VwZXJD
YWxsVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkKK2Jvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omlz
U3VwZXJDYWxsVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uT3JFdmFsKCkKIHsKLSAgICByZXR1cm4g
bV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZVN1cGVyQ2FsbCgpOworICAg
IHJldHVybiBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlU3VwZXJDYWxs
KCkgfHwgbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZUV2YWwoKSB8fCBt
X2NvZGVCbG9jay0+dXNlc0V2YWwoKTsKIH0KICAgICAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQdXROZXdUYXJnZXRUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUoKQogewotICAgIGlm
IChpc05ld1RhcmdldFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSB7CisgICAgaWYgKGlzTmV3
VGFyZ2V0VXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uT3JFdmFsKCkpIHsKICAgICAgICAgQVNTRVJU
KG1fYXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7CiAgICAg
ICAgIAogICAgICAgICBWYXJpYWJsZSBuZXdUYXJnZXRWYXIgPSB2YXJpYWJsZShwcm9wZXJ0eU5h
bWVzKCkubmV3VGFyZ2V0TG9jYWxQcml2YXRlTmFtZSk7CkBAIC00MTYyLDcgKzQxNjgsNyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0TmV3VGFyZ2V0VG9BcnJvd0Z1bmN0aW9uQ29u
dGV4dFNjb3BlKCkKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXREZXJpdmVkQ29uc3Ry
dWN0b3JUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUoKQogewogICAgIGlmICgoaXNDb25zdHJ1
Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkg
fHwgbV9jb2RlQmxvY2stPmlzQ2xhc3NDb250ZXh0KCkpIHsKLSAgICAgICAgaWYgKGlzU3VwZXJV
c2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkgeworICAgICAgICBpZiAoaXNTdXBlclVzZWRJbklu
bmVyQXJyb3dGdW5jdGlvbk9yRXZhbCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQobV9hcnJvd0Z1
bmN0aW9uQ29udGV4dExleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgVmFyaWFibGUgcHJvdG9TY29wZSA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMo
KS5kZXJpdmVkQ29uc3RydWN0b3JQcml2YXRlTmFtZSk7CkBAIC00MTczLDcgKzQxNzksNyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0RGVyaXZlZENvbnN0cnVjdG9yVG9BcnJvd0Z1
bmN0aW9uQ29udGV4dFNjb3BlKCkKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFRo
aXNUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUoKQogewotICAgIGlmIChpc1RoaXNVc2VkSW5J
bm5lckFycm93RnVuY3Rpb24oKSkgeworICAgIGlmIChpc1RoaXNVc2VkSW5Jbm5lckFycm93RnVu
Y3Rpb25PckV2YWwoKSB8fCAobV9zY29wZU5vZGUtPnVzZXNTdXBlckNhbGwoKSAmJiBtX2NvZGVU
eXBlID09IEV2YWxDb2RlKSkgewogICAgICAgICBBU1NFUlQoaXNEZXJpdmVkQ29uc3RydWN0b3JD
b250ZXh0KCkgfHwgbV9hcnJvd0Z1bmN0aW9uQ29udGV4dExleGljYWxFbnZpcm9ubWVudFJlZ2lz
dGVyICE9IG51bGxwdHIpOwogCiAgICAgICAgIFZhcmlhYmxlIHRoaXNWYXIgPSB2YXJpYWJsZShw
cm9wZXJ0eU5hbWVzKCkudGhpc0lkZW50aWZpZXIsIFRoaXNSZXNvbHV0aW9uVHlwZTo6U2NvcGVk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAppbmRleCBkYmZkNzdjNTc3ZTJjMzZjMjFjZjNmNTRjOTJlZjU3MjhlMDIw
MmYwLi4xMTM2YTdkNzEwYzIyODE4MTNiYmI4OGVmYzJkZTJhMThjY2YxNTA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCkBAIC03MTgsMTMgKzcxOCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBl
bWl0UHVzaEZ1bmN0aW9uTmFtZVNjb3BlKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdp
c3RlcklEKiB2YWx1ZSwgYm9vbCBpc0NhcHR1cmVkKTsKICAgICAgICAgdm9pZCBlbWl0TmV3RnVu
Y3Rpb25FeHByZXNzaW9uQ29tbW9uKFJlZ2lzdGVySUQqLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSop
OwogICAgICAgICAKLSAgICAgICAgYm9vbCBpc05ld1RhcmdldFVzZWRJbklubmVyQXJyb3dGdW5j
dGlvbigpOwotICAgICAgICBib29sIGlzU3VwZXJVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKTsK
KyAgICAgICAgYm9vbCBpc05ld1RhcmdldFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbk9yRXZhbCgp
OworICAgICAgICBib29sIGlzU3VwZXJVc2VkSW5Jbm5lckFycm93RnVuY3Rpb25PckV2YWwoKTsK
ICAgICAgICAgYm9vbCBpc0FyZ3VtZW50c1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpOwogCiAg
ICAgcHVibGljOgotICAgICAgICBib29sIGlzU3VwZXJDYWxsVXNlZEluSW5uZXJBcnJvd0Z1bmN0
aW9uKCk7Ci0gICAgICAgIGJvb2wgaXNUaGlzVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCk7Cisg
ICAgICAgIGJvb2wgaXNTdXBlckNhbGxVc2VkSW5Jbm5lckFycm93RnVuY3Rpb25PckV2YWwoKTsK
KyAgICAgICAgYm9vbCBpc1RoaXNVc2VkSW5Jbm5lckFycm93RnVuY3Rpb25PckV2YWwoKTsKICAg
ICAgICAgdm9pZCBwdXNoTGV4aWNhbFNjb3BlKFZhcmlhYmxlRW52aXJvbm1lbnROb2RlKiwgVERa
Q2hlY2tPcHRpbWl6YXRpb24sIE5lc3RlZFNjb3BlVHlwZSA9IE5lc3RlZFNjb3BlVHlwZTo6SXNO
b3ROZXN0ZWQsIFJlZ2lzdGVySUQqKiBjb25zdGFudFN5bWJvbFRhYmxlUmVzdWx0ID0gbnVsbHB0
ciwgYm9vbCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMgPSB0cnVlKTsKICAg
ICAgICAgdm9pZCBwb3BMZXhpY2FsU2NvcGUoVmFyaWFibGVFbnZpcm9ubWVudE5vZGUqKTsKICAg
ICAgICAgdm9pZCBwcmVwYXJlTGV4aWNhbFNjb3BlRm9yTmV4dEZvckxvb3BJdGVyYXRpb24oVmFy
aWFibGVFbnZpcm9ubWVudE5vZGUqLCBSZWdpc3RlcklEKiBsb29wU3ltYm9sVGFibGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CmluZGV4IDY3OTY1MWEyMDNlZTNlZGVjOTg2YjVmOWU4NGVmZjIxYzE5OWI2NTYuLjE1YTlhZTRi
MDNkMjY3ZTA1ZDA0ZmE5ZjliYmE3MWVlZDY3MmEzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTE0Niw3ICsxNDYs
NyBAQCBSZWdpc3RlcklEKiBSZWdFeHBOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAogCiBSZWdpc3RlcklEKiBUaGlzTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
IHsKLSAgICBpZiAoZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2lu
ZDo6RGVyaXZlZCAmJiBnZW5lcmF0b3IubmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0
KCkgJiYgZ2VuZXJhdG9yLmlzU3VwZXJDYWxsVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpCisg
ICAgaWYgKGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRl
cml2ZWQgJiYgZ2VuZXJhdG9yLm5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpICYm
IGdlbmVyYXRvci5pc1N1cGVyQ2FsbFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbk9yRXZhbCgpKQog
ICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52
aXJvbm1lbnQoKTsKIAogICAgIGlmIChtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayB8fCBnZW5l
cmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIHx8IGdl
bmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKQEAgLTcyMyw3ICs3MjMsNyBA
QCBSZWdpc3RlcklEKiBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZwogICAgIC8vICAgICAgIGV2YWwoInRoaXMuaWQgPSAn
QiciKTsKICAgICAvLyAgICB9CiAgICAgLy8gfQotICAgIGlmIChnZW5lcmF0b3IuY29uc3RydWN0
b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkICYmIGdlbmVyYXRvci5uZWVkc1Rv
VXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoKSAmJiBnZW5lcmF0b3IuaXNUaGlzVXNlZEluSW5u
ZXJBcnJvd0Z1bmN0aW9uKCkpCisgICAgaWYgKGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9
PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgJiYgZ2VuZXJhdG9yLm5lZWRzVG9VcGRhdGVBcnJv
d0Z1bmN0aW9uQ29udGV4dCgpICYmIGdlbmVyYXRvci5pc1RoaXNVc2VkSW5Jbm5lckFycm93RnVu
Y3Rpb25PckV2YWwoKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1
bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAKICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0
b3IudmFyaWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ldmFsKTsKQEAgLTMxMzgsNyAr
MzEzOCw3IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8g
cmV0dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25lLgogICAgICAgICBpZiAoIXJl
dHVybk5vZGUpIHsKLSAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkg
PT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkICYmIGdlbmVyYXRvci5uZWVkc1RvVXBkYXRlQXJy
b3dGdW5jdGlvbkNvbnRleHQoKSAmJiBnZW5lcmF0b3IuaXNTdXBlckNhbGxVc2VkSW5Jbm5lckFy
cm93RnVuY3Rpb24oKSkKKyAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5k
KCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkICYmIGdlbmVyYXRvci5uZWVkc1RvVXBkYXRl
QXJyb3dGdW5jdGlvbkNvbnRleHQoKSAmJiBnZW5lcmF0b3IuaXNTdXBlckNhbGxVc2VkSW5Jbm5l
ckFycm93RnVuY3Rpb25PckV2YWwoKSkKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExv
YWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsgLy8gQXJyb3cgZnVu
Y3Rpb24gY2FuIGludm9rZSAnc3VwZXInIGluIGNvbnN0cnVjdG9yIGFuZCBiZWZvcmUgbGVhdmUg
Y29uc3RydWN0b3Igd2UgbmVlZCBsb2FkICd0aGlzJyBmcm9tIGxleGljYWwgYXJyb3cgZnVuY3Rp
b24gZW52aXJvbm1lbnQKICAgICAgICAgICAgIAogICAgICAgICAgICAgUmVnaXN0ZXJJRCogcjAg
PSBnZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpIDog
Z2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzVW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMjMzZmQxY2I2MmFi
ZDE5N2FlMjY3ZThiZTA2ZjhlYTliMGE0NTFjYi4uN2E1YmNhMTgyN2UxM2Y1OTdjYzAyMmViNTli
NjU1M2E0Y2U0NTgwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0xODAsOCArMTgwLDE3IEBAIEpTVmFsdWUgZXZhbChDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoZSBsaXRlcmFsIHBh
cnNlciBiYWlsZWQsIGl0IHNob3VsZCBub3QgaGF2ZSB0aHJvd24gZXhjZXB0aW9ucy4KICAgICAg
ICAgQVNTRVJUKCFjYWxsRnJhbWUtPnZtKCkuZXhjZXB0aW9uKCkpOworICAgICAgICBib29sIGlz
SW5BcnJvd0Z1bmN0aW9uQ29udGV4dCA9IGNhbGxlckNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxv
Y2soKS0+aXNBcnJvd0Z1bmN0aW9uKCkgfHwgY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVC
bG9jaygpLT5pc0Fycm93RnVuY3Rpb25Db250ZXh0KCk7CiAKLSAgICAgICAgZXZhbCA9IGNhbGxl
ckNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2Rl
QmxvY2ssIGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2RlLCBjYWxs
ZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBj
YWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBz
b3VyY2VDb2RlLCBjYWxsZXJTY29wZUNoYWluKTsKKyAgICAgICAgRGVyaXZlZENvbnRleHRUeXBl
IGRlcml2ZWRDb250ZXh0VHlwZSA9IGNhbGxlckNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2so
KS0+ZGVyaXZlZENvbnRleHRUeXBlKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIWlzSW5BcnJv
d0Z1bmN0aW9uQ29udGV4dCAmJiBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCkt
PmlzQ2xhc3NDb250ZXh0KCkpIHsKKyAgICAgICAgICAgIGRlcml2ZWRDb250ZXh0VHlwZSA9IGNh
bGxlckNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNDb25zdHJ1Y3RvcigpCisgICAg
ICAgICAgICAgICAgPyBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQKKyAgICAgICAgICAgICAgICA6IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZE1ldGhvZENv
bnRleHQ7CisgICAgICAgIH0KKworICAgICAgICBldmFsID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFs
Q29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJhbWUsIGNhbGxlckNvZGVCbG9jaywgY2FsbGVyQ29k
ZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwg
aXNJbkFycm93RnVuY3Rpb25Db250ZXh0LCBzb3VyY2VDb2RlLCBjYWxsZXJTY29wZUNoYWluKTsK
IAogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA0MDczYjA3Zjk5Yjg1
ZmQwYzNmNmZmYThiNzZhZGU0MjU0ZmEzMmUwLi4yNzEyYmZjYzJjNTI4MWRmYWE3ODU0N2Q3YjRh
YWE2YWU5MzZmYmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBA
IC0xOTIsMTAgKzE5Miw3IEBAIHZvaWQgUGFyc2VyPExleGVyVHlwZT46OmxvZ0Vycm9yKGJvb2wg
c2hvdWxkUHJpbnRUb2tlbiwgY29uc3QgQSYgdmFsdWUxLCBjb25zdCBCCiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+Ci1QYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKAotICAgIFZN
KiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0
aW5Nb2RlLCAKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291cmNlUGFyc2VN
b2RlIHBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywKLSAgICBDb25zdHJ1Y3Rv
cktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUpCitQ
YXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUgc3Ry
aWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmlu
ZGluZywgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIFRoaXNURFpNb2Rl
IHRoaXNURFpNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29s
IGlzRXZhbENvbnRleHQpCiAgICAgOiBtX3ZtKHZtKQogICAgICwgbV9zb3VyY2UoJnNvdXJjZSkK
ICAgICAsIG1faGFzU3RhY2tPdmVyZmxvdyhmYWxzZSkKQEAgLTIxOSw2ICsyMTYsMTUgQEAgUGFy
c2VyPExleGVyVHlwZT46OlBhcnNlcigKIAogICAgIFNjb3BlUmVmIHNjb3BlID0gcHVzaFNjb3Bl
KCk7CiAgICAgc2NvcGUtPnNldFNvdXJjZVBhcnNlTW9kZShwYXJzZU1vZGUpOworICAgIHNjb3Bl
LT5zZXRJc0V2YWxDb250ZXh0KGlzRXZhbENvbnRleHQpOworICAgIAorICAgIGlmIChkZXJpdmVk
Q29udGV4dFR5cGUgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250
ZXh0KSB7CisgICAgICAgIHNjb3BlLT5zZXRDb25zdHJ1Y3RvcktpbmQoQ29uc3RydWN0b3JLaW5k
OjpEZXJpdmVkKTsKKyAgICAgICAgc2NvcGUtPnNldEV4cGVjdGVkU3VwZXJCaW5kaW5nKFN1cGVy
QmluZGluZzo6TmVlZGVkKTsKKyAgICB9CisgICAgCisgICAgaWYgKGRlcml2ZWRDb250ZXh0VHlw
ZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRNZXRob2RDb250ZXh0KQorICAgICAgICBz
Y29wZS0+c2V0RXhwZWN0ZWRTdXBlckJpbmRpbmcoU3VwZXJCaW5kaW5nOjpOZWVkZWQpOwogCiAg
ICAgaWYgKHN0cmljdE1vZGUgPT0gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QpCiAgICAgICAg
IHNjb3BlLT5zZXRTdHJpY3RNb2RlKCk7CkBAIC0yMDY2LDE2ICsyMDcyLDE4IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkluZm8oVHJlZUJ1aWxkCiAgICAgLy8gaW5zaWRlIG9mIHRoZSBjb25zdHJ1Y3RvciBvciBtZXRo
b2QKICAgICBpZiAoIW1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkgewogICAgICAgICBp
ZiAoZnVuY3Rpb25TY29wZS0+aGFzRGlyZWN0U3VwZXIoKSkgewotICAgICAgICAgICAgQ29uc3Ry
dWN0b3JLaW5kIGZ1bmN0aW9uQ29uc3RydWN0b3JLaW5kID0gZnVuY3Rpb25Cb2R5VHlwZSA9PSBT
dGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrCisgICAgICAgICAgICBTY29wZVJlZiBzY29wZVJlZiA9
IGNsb3Nlc3RQYXJlbnRPcmRpbmFyeUZ1bmN0aW9uTm9uTGV4aWNhbFNjb3BlKCk7CisgICAgICAg
ICAgICBDb25zdHJ1Y3RvcktpbmQgZnVuY3Rpb25Db25zdHJ1Y3RvcktpbmQgPSBmdW5jdGlvbkJv
ZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgJiYgIXNjb3BlUmVmLT5pc0V2YWxD
b250ZXh0KCkKICAgICAgICAgICAgICAgICA/IGNvbnN0cnVjdG9yS2luZAotICAgICAgICAgICAg
ICAgIDogY2xvc2VzdFBhcmVudE9yZGluYXJ5RnVuY3Rpb25Ob25MZXhpY2FsU2NvcGUoKS0+Y29u
c3RydWN0b3JLaW5kKCk7CisgICAgICAgICAgICAgICAgOiBzY29wZVJlZi0+Y29uc3RydWN0b3JL
aW5kKCk7CiAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZnVuY3Rpb25Db25zdHJ1Y3Rv
cktpbmQgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCAiQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRz
aWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3IiKTsKICAgICAgICAgICAgIHNlbWFudGljRmFpbElm
VHJ1ZShmdW5jdGlvbkNvbnN0cnVjdG9yS2luZCAhPSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQs
ICJDYW5ub3QgY2FsbCBzdXBlcigpIGluIGEgYmFzZSBjbGFzcyBjb25zdHJ1Y3RvciIpOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChmdW5jdGlvblNjb3BlLT5uZWVkc1N1cGVyQmluZGluZygpKSB7
Ci0gICAgICAgICAgICBTdXBlckJpbmRpbmcgZnVuY3Rpb25TdXBlckJpbmRpbmcgPSBmdW5jdGlv
bkJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sKKyAgICAgICAgICAgIFNjb3Bl
UmVmIHNjb3BlUmVmID0gY2xvc2VzdFBhcmVudE9yZGluYXJ5RnVuY3Rpb25Ob25MZXhpY2FsU2Nv
cGUoKTsKKyAgICAgICAgICAgIFN1cGVyQmluZGluZyBmdW5jdGlvblN1cGVyQmluZGluZyA9IGZ1
bmN0aW9uQm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayAmJiAhc2NvcGVSZWYt
PmlzRXZhbENvbnRleHQoKQogICAgICAgICAgICAgICAgID8gZXhwZWN0ZWRTdXBlckJpbmRpbmcK
LSAgICAgICAgICAgICAgICA6IGNsb3Nlc3RQYXJlbnRPcmRpbmFyeUZ1bmN0aW9uTm9uTGV4aWNh
bFNjb3BlKCktPmV4cGVjdGVkU3VwZXJCaW5kaW5nKCk7CisgICAgICAgICAgICAgICAgOiBzY29w
ZVJlZi0+ZXhwZWN0ZWRTdXBlckJpbmRpbmcoKTsKICAgICAgICAgICAgIHNlbWFudGljRmFpbElm
VHJ1ZShmdW5jdGlvblN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgInN1
cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzIik7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0zODM2LDcgKzM4NDQsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4
cHJlcwogICAgIH0KIAogICAgIGlmIChiYXNlSXNTdXBlcikgewotICAgICAgICBzZW1hbnRpY0Zh
aWxJZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5pc0Z1bmN0aW9uKCksICJzdXBlciBpcyBvbmx5IHZh
bGlkIGluc2lkZSBmdW5jdGlvbnMiKTsKKyAgICAgICAgU2NvcGVSZWYgc2NvcGVSZWYgPSBjbG9z
ZXN0UGFyZW50T3JkaW5hcnlGdW5jdGlvbk5vbkxleGljYWxTY29wZSgpOworICAgICAgICAvLyBG
SVhNRTogQ2hhbmdlIGVycm9yIG1lc3NhZ2UgZm9yIG1vcmUgc3VpdGFibGUuIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0OTEgCisgICAgICAgIHNlbWFudGljRmFp
bElmRmFsc2UoY3VycmVudFNjb3BlKCktPmlzRnVuY3Rpb24oKSB8fCAoc2NvcGVSZWYtPmlzRXZh
bENvbnRleHQoKSAmJiBzY29wZVJlZi0+ZXhwZWN0ZWRTdXBlckJpbmRpbmcoKSA9PSBTdXBlckJp
bmRpbmc6Ok5lZWRlZCksICJzdXBlciBpcyBvbmx5IHZhbGlkIGluc2lkZSBmdW5jdGlvbnMiKTsK
ICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlU3VwZXJFeHByKGxvY2F0aW9uKTsKICAgICAg
ICAgbmV4dCgpOwogICAgICAgICBjdXJyZW50RnVuY3Rpb25TY29wZSgpLT5zZXROZWVkc1N1cGVy
QmluZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggZjdjMDVj
YWY0OGIwZTcyN2ExODQyZjljY2E1NmFiZTY2ZmIxNzkzOS4uZThhMDE1ZjIxODY3ZWJhNGU5OWJi
Mjk0YzdmOTQ1NzE5NGUyN2I5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
CkBAIC0xNzcsNiArMTc3LDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgLCBtX2lzRnVuY3Rp
b25Cb3VuZGFyeShmYWxzZSkKICAgICAgICAgLCBtX2lzVmFsaWRTdHJpY3RNb2RlKHRydWUpCiAg
ICAgICAgICwgbV9oYXNBcmd1bWVudHMoZmFsc2UpCisgICAgICAgICwgbV9pc0V2YWxDb250ZXh0
KGZhbHNlKQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpKQogICAgICAgICAsIG1fZXhwZWN0ZWRTdXBlckJpbmRp
bmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFN1cGVyQmluZGluZzo6Tm90TmVlZGVkKSkKICAgICAg
ICAgLCBtX2xvb3BEZXB0aCgwKQpAQCAtMjA0LDYgKzIwNSw3IEBAIHN0cnVjdCBTY29wZSB7CiAg
ICAgICAgICwgbV9pc0Z1bmN0aW9uQm91bmRhcnkocmhzLm1faXNGdW5jdGlvbkJvdW5kYXJ5KQog
ICAgICAgICAsIG1faXNWYWxpZFN0cmljdE1vZGUocmhzLm1faXNWYWxpZFN0cmljdE1vZGUpCiAg
ICAgICAgICwgbV9oYXNBcmd1bWVudHMocmhzLm1faGFzQXJndW1lbnRzKQorICAgICAgICAsIG1f
aXNFdmFsQ29udGV4dChyaHMubV9pc0V2YWxDb250ZXh0KQogICAgICAgICAsIG1fY29uc3RydWN0
b3JLaW5kKHJocy5tX2NvbnN0cnVjdG9yS2luZCkKICAgICAgICAgLCBtX2V4cGVjdGVkU3VwZXJC
aW5kaW5nKHJocy5tX2V4cGVjdGVkU3VwZXJCaW5kaW5nKQogICAgICAgICAsIG1fbG9vcERlcHRo
KHJocy5tX2xvb3BEZXB0aCkKQEAgLTUyNSw2ICs1MjcsOSBAQCBzdHJ1Y3QgU2NvcGUgewogICAg
IHZvaWQgc2V0SW5uZXJBcnJvd0Z1bmN0aW9uVXNlc1RoaXMoKSB7IG1faW5uZXJBcnJvd0Z1bmN0
aW9uRmVhdHVyZXMgfD0gVGhpc0lubmVyQXJyb3dGdW5jdGlvbkZlYXR1cmU7IH0KICAgICB2b2lk
IHNldElubmVyQXJyb3dGdW5jdGlvblVzZXNOZXdUYXJnZXQoKSB7IG1faW5uZXJBcnJvd0Z1bmN0
aW9uRmVhdHVyZXMgfD0gTmV3VGFyZ2V0SW5uZXJBcnJvd0Z1bmN0aW9uRmVhdHVyZTsgfQogICAg
IHZvaWQgc2V0SW5uZXJBcnJvd0Z1bmN0aW9uVXNlc0FyZ3VtZW50cygpIHsgbV9pbm5lckFycm93
RnVuY3Rpb25GZWF0dXJlcyB8PSBBcmd1bWVudHNJbm5lckFycm93RnVuY3Rpb25GZWF0dXJlOyB9
CisgICAgCisgICAgYm9vbCBpc0V2YWxDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0V2YWxD
b250ZXh0OyB9CisgICAgdm9pZCBzZXRJc0V2YWxDb250ZXh0KGJvb2wgaXNFdmFsQ29udGV4dCkg
eyBtX2lzRXZhbENvbnRleHQgPSBpc0V2YWxDb250ZXh0OyB9CiAKICAgICB2b2lkIHNldElubmVy
QXJyb3dGdW5jdGlvblVzZXNFdmFsQW5kVXNlQXJndW1lbnRzSWZOZWVkZWQoKQogICAgIHsKQEAg
LTcwNyw2ICs3MTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0Z1bmN0aW9uQm91bmRhcnkg
OiAxOwogICAgIGJvb2wgbV9pc1ZhbGlkU3RyaWN0TW9kZSA6IDE7CiAgICAgYm9vbCBtX2hhc0Fy
Z3VtZW50cyA6IDE7CisgICAgYm9vbCBtX2lzRXZhbENvbnRleHQgOiAxOwogICAgIHVuc2lnbmVk
IG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2V4cGVjdGVkU3VwZXJCaW5k
aW5nIDogMjsKICAgICBpbnQgbV9sb29wRGVwdGg7CkBAIC03NjMsOSArNzY5LDcgQEAgY2xhc3Mg
UGFyc2VyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgotICAgIFBh
cnNlcigKLSAgICAgICAgVk0qLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9k
ZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUsIFN1cGVyQmluZGluZywKLSAg
ICAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIFRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpOwor
ICAgIFBhcnNlcihWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBK
U1BhcnNlclN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nLCBDb25zdHJ1
Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
VGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCwgRGVyaXZlZENvbnRleHRU
eXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBib29sIGlzRXZhbENvbnRleHQgPSBmYWxz
ZSk7CiAgICAgflBhcnNlcigpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+CkBA
IC0xNTI4LDYgKzE1MzIsNyBAQCBwcml2YXRlOgogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVz
OwogICAgIGludCBtX251bUNvbnN0YW50czsKICAgICBFeHByZXNzaW9uRXJyb3JDbGFzc2lmaWVy
KiBtX2V4cHJlc3Npb25FcnJvckNsYXNzaWZpZXI7CisgICAgYm9vbCBtX2lzRXZhbENvbnRleHQ7
CiAgICAgCiAgICAgc3RydWN0IERlcHRoTWFuYWdlciB7CiAgICAgICAgIERlcHRoTWFuYWdlcihp
bnQqIGRlcHRoKQpAQCAtMTY0NiwxNCArMTY1MSwxNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2Vk
Tm9kZT4gcGFyc2UoCiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgSlNQYXJzZXJCdWlsdGlu
TW9kZSBidWlsdGluTW9kZSwKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgU291
cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywKICAgICBQ
YXJzZXJFcnJvciYgZXJyb3IsIEpTVGV4dFBvc2l0aW9uKiBwb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lID0gbnVsbHB0ciwKLSAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2lu
ZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwKLSAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9
IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQorICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0
Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCBUaGlzVERaTW9kZSB0aGlz
VERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkLAorICAgIERlcml2ZWRDb250ZXh0
VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUpCiB7CiAg
ICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIlBhcnNpbmciKTsKIAogICAgIEFTU0VS
VCghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzTnVsbCgpKTsKICAgICBpZiAoc291cmNl
LnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7Ci0gICAgICAgIFBhcnNlcjxMZXhlcjxM
Q2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VN
b2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsK
KyAgICAgICAgUGFyc2VyPExleGVyPExDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5N
b2RlLCBzdHJpY3RNb2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVj
dG9yS2luZCwgdGhpc1REWk1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNFdmFsTm9kZTxQYXJz
ZWROb2RlPigpKTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9
IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlKTsKICAgICAg
ICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25C
ZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CkBA
IC0xNjY0LDcgKzE2NjksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVm
YXVsdENvbnN0cnVjdG9yS2luZCA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsICJCdWlsdGluRXhl
Y3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvciBzaG91bGQgYWx3YXlzIHVzZSBhIDgt
Yml0IHN0cmluZyIpOwotICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNl
LCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1
bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKKyAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+
PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHBhcnNlTW9kZSwg
c3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSwgZGVyaXZl
ZENvbnRleHRUeXBlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkpOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3Is
IG5hbWUsIHBhcnNlTW9kZSk7CiAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAg
ICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUu
Y3BwCmluZGV4IGEyNjJiYjcwODllYmJlZjQzN2M5MmJmYzNhYTAyZTlhNzM3N2E4NjMuLjYzZGMy
NGY5NDE5OTFhMGQwZjc0OTIyMmRhODU3Y2Q2NDRlZTg3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtMTAwLDExICsxMDAsMTAgQEAgVW5saW5r
ZWRDb2RlQmxvY2tUeXBlKiBDb2RlQ2FjaGU6OmdldEdsb2JhbENvZGVCbG9jayhWTSYgdm0sIEV4
ZWN1dGFibGVUeXBlKiBleGUKICAgICAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UodW5saW5r
ZWRDb2RlQmxvY2stPmNvZGVGZWF0dXJlcygpLCB1bmxpbmtlZENvZGVCbG9jay0+aGFzQ2FwdHVy
ZWRWYXJpYWJsZXMoKSwgZmlyc3RMaW5lLCBmaXJzdExpbmUgKyBsaW5lQ291bnQsIHN0YXJ0Q29s
dW1uLCBlbmRDb2x1bW4pOwogICAgICAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2s7CiAgICAg
fQotCiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlw
ZT46OlJvb3ROb2RlIFJvb3ROb2RlOworICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29u
dGV4dFR5cGUgPSBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KAotICAgICAgICAm
dm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwKLSAgICAg
ICAgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0
aGlzVERaTW9kZSk7CisgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5N
b2RlLCBzdHJpY3RNb2RlLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNl
TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUpOwogICAgIGlmICgh
cm9vdE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1
cGVyY2FsbC00LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcmNhbGwtNC5qcwppbmRleCBkOTNiZTM4OTE1NDIxMzEw
ODVmMGNiOGE2ZjRlYTIwYzgxYzJmYWVmLi4yMWQ4ZjE5OGE3YmE1YjlkNDZiMTk2NzkxZDRmZDI5
ZGM0OWU3MjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVyY2FsbC00LmpzCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3Vw
ZXJjYWxsLTQuanMKQEAgLTMxLDcgKzMxLDkgQEAgdmFyIEMgPSBjbGFzcyBDIGV4dGVuZHMgQSB7
CiAgICAgY29uc3RydWN0b3IgKCkgewogICAgICAgICB2YXIgYXJyb3cgPSAoKSA9PiBldmFsKCco
KCkgPT4gc3VwZXIoKSkoKScpOwogICAgICAgICBhcnJvdygpOwotICAgICAgICByZXR1cm4ge307
CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgdmFsdWUgOiAnY29uc3RydWN0b3ItdmFsdWUn
CisgICAgICAgIH07CiAgICAgfQogfTsKIApAQCAtNTEsMjQgKzUzLDI0IEBAIHZhciBFID0gY2xh
c3MgRSBleHRlbmRzIEEgewogICAgIH0KIH07CiAKLS8vIEZJWE1FOiBBcnJvdyBmdW5jdGlvbiBk
b2VzIG5vdCBzdXBwb3J0IHVzaW5nIG9mIGV2YWwgd2l0aCBzdXBlci9zdXBlcigpCi0vLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzOTc3Ci0vKgorCiBmb3IgKHZh
ciBpPTA7IGkgPCAxMDAwOyBpKyspIHsKICAgICBuZXcgQih0cnVlKTsKICAgICB2YXIgYyA9IG5l
dyBDKCk7Ci0gICAgdGVzdENhc2UodHlwZW9mIGMuaWQsICd1bmRlZmluZWQnLCAnRXJyb3IgZHVy
aW5nIHNldCB2YWx1ZSBpbiBldmFsICMxJyk7CisgICAgdGVzdENhc2UoYy52YWx1ZSwgJ2NvbnN0
cnVjdG9yLXZhbHVlJywgJ0Vycm9yIGR1cmluZyBzZXQgdmFsdWUgaW4gZXZhbCAjMS4wJyk7Cisg
ICAgdGVzdENhc2UodHlwZW9mIGMuaWQsICd1bmRlZmluZWQnLCAnRXJyb3IgZHVyaW5nIHNldCB2
YWx1ZSBpbiBldmFsICMxLjEnKTsKICAgICB2YXIgZCA9IG5ldyBEKCk7Ci0gICAgdGVzdENhc2Uo
ZC5pZCwgJ25ldy12YWx1ZScsICdFcnJvciBkdXJpbmcgc2V0IHZhbHVlIGluIGV2YWwgIzInKTsK
KyAgICB0ZXN0Q2FzZShkLmlkVmFsdWUsIHRlc3RWYWx1ZSwgJ0Vycm9yIGR1cmluZyBzZXQgdmFs
dWUgaW4gZXZhbCAjMi4wJyk7CisgICAgdGVzdENhc2UoZC5pZCwgJ25ldy12YWx1ZScsICdFcnJv
ciBkdXJpbmcgc2V0IHZhbHVlIGluIGV2YWwgIzIuMScpOwogICAgIHZhciBlID0gbmV3IEUoKTsK
LSAgICB0ZXN0Q2FzZShlLmlkLCAnbmV3LXZhbHVlJywgJ0Vycm9yIGR1cmluZyBzZXQgdmFsdWUg
aW4gZXZhbCAjMycpOworICAgIHRlc3RDYXNlKGUuaWRWYWx1ZSwgdGVzdFZhbHVlLCAnRXJyb3Ig
ZHVyaW5nIHNldCB2YWx1ZSBpbiBldmFsICMzLjAnKTsKKyAgICB0ZXN0Q2FzZShlLmlkLCAnbmV3
LXZhbHVlJywgJ0Vycm9yIGR1cmluZyBzZXQgdmFsdWUgaW4gZXZhbCAjMy4wJyk7CiB9Ci0qLwog
Ci12YXIgdGVzdEV4Y2VwdGlvbiA9IGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgpIHsKK3ZhciB0ZXN0
RXhjZXB0aW9uID0gZnVuY3Rpb24gKEtsYXNzLCB2YWx1ZSwgaW5kZXgpIHsKICAgICB2YXIgZXhj
ZXB0aW9uOwogICAgIHRyeSB7Ci0gICAgICAgIG5ldyBCKHZhbHVlKTsKKyAgICAgICAgbmV3IEts
YXNzKHZhbHVlKTsKICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgIGV4Y2VwdGlvbiA9IGU7CiAg
ICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBSZWZlcmVuY2VFcnJvcikpCkBAIC04MCw3ICs4Miw3
IEBAIHZhciB0ZXN0RXhjZXB0aW9uID0gZnVuY3Rpb24gKHZhbHVlLCBpbmRleCkgewogfQogCiBm
b3IgKHZhciBpPTA7IGkgPCAxMDAwOyBpKyspIHsKLSAgICB0ZXN0RXhjZXB0aW9uKGZhbHNlLCBp
KTsKKyAgICB0ZXN0RXhjZXB0aW9uKEIsIGZhbHNlLCBpKTsKIH0KIAogY2xhc3MgRiBleHRlbmRz
IEEgewpAQCAtMTM5LDMgKzE0MSwyMiBAQCBjbGFzcyBIIGV4dGVuZHMgQV90aGlzX1Byb3Agewog
CiBsZXQgaCA9IG5ldyBIKCk7CiB0ZXN0Q2FzZShoLnNvbWVWYWx1ZSwgdGVzdFZhbHVlLCAnRXJy
b3I6IG5vdCBjb3JyZWN0IGJpbmRpbmcgc3VwZXJQcm9wZXJ0eSZ0aGlzIGluIGNvbnN0cnVjdG9y
Jyk7CisKK2NsYXNzIEkgZXh0ZW5kcyBBIHsKKyAgY29uc3RydWN0b3IgKGJlZm9yZVN1cGVyKSB7
CisgICAgICBpZiAoYmVmb3JlU3VwZXIpIHsKKyAgICAgICAgICBldmFsKCcoKCkgPT4gc3VwZXIo
KSkoKScpOworICAgICAgICAgIHRlc3RDYXNlKHRoaXMuaWRWYWx1ZSwgdGVzdFZhbHVlLCAiRXJy
b3I6IHN1cGVyKCkgc2hvdWxkIGNyZWF0ZSB0aGlzIGFuZCBwdXQgdmFsdWUgaW50byBpZFZhbHVl
IHByb3BlcnR5Iik7CisgICAgICB9IGVsc2UgeworICAgICAgICAgIHRoaXMuaWRWYWx1ZSA9ICd0
ZXN0VmFsdWUnOworICAgICAgICAgIGV2YWwoJygoKSA9PiBzdXBlcigpKSgpJyk7CisgICAgICB9
CisgIH0KK307CisKK2xldCBpYyA9IG5ldyBJKHRydWUpOwordGVzdENhc2UoaWMuaWRWYWx1ZSwg
dGVzdFZhbHVlLCAnRXJyb3I6IG5vdCBjb3JyZWN0IGJpbmRpbmcgc3VwZXJQcm9wZXJ0eSZ0aGlz
IGluIGNvbnN0cnVjdG9yJyk7CisKK2ZvciAodmFyIGk9MDsgaSA8IDEwMDA7IGkrKykgeworICAg
IHRlc3RFeGNlcHRpb24oSSwgZmFsc2UsIGkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcnBy
b3BlcnR5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtYmluZC1zdXBlcnByb3BlcnR5LmpzCmluZGV4IGU5ZjU2MjMyMTQ2NTk3ZmVm
N2YxZDBhY2ZjNmUzNTJiNjFmMDhlYjUuLmQ3MzE3OWJkMzMyYWU0MTYyYzkxNTgwODQxYWFjMzM3
OWZiYzIwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJwcm9wZXJ0eS5qcworKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1
cGVycHJvcGVydHkuanMKQEAgLTIyOCwzICsyMjgsNjEgQEAgZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwMDsgaSsrKSB7CiAgICAgfQogICAgIHRlc3RDYXNlKGVycm9yLCB0cnVlLCAnRXJyb3I6IHVz
aW5nICJzdXBlciIgcHJvcGVydHkgYmVmb3JlIHN1cGVyKCkgc2hvdWxkIGxlYWQgdG8gZXJyb3In
KTsKIH0KKworY2xhc3MgSyBleHRlbmRzIEEgeworICAgIG5ld01ldGhvZEFycm93RXZhbCgpIHsK
KyAgICAgICAgdmFyIGFycm93ID0gKCkgPT4gZXZhbCgnc3VwZXIuZ2V0VmFsdWUoKScpOworICAg
ICAgICB2YXIgciA9IGFycm93KCk7CisgICAgICAgIHJldHVybiByOworICAgIH0KKyAgICBuZXdN
ZXRob2RBcnJvd0RvdWJsZUV2YWwoKSB7CisgICAgICB2YXIgYXJyb3cgPSAoKSA9PiBldmFsKCJl
dmFsKCdzdXBlci5nZXRWYWx1ZSgpJykiKTsKKyAgICAgIHZhciByID0gYXJyb3coKTsKKyAgICAg
IHJldHVybiByOworICAgIH0KKyAgICBuZXdNZXRob2RBcnJvd0V2YWxFdmFsQXJyb3coKSB7Cisg
ICAgICB2YXIgYXJyb3cgPSAoKSA9PiBldmFsKCJldmFsKCcoKCkgPT4gc3VwZXIuZ2V0VmFsdWUo
KSkoKScpIik7CisgICAgICB2YXIgciA9IGFycm93KCk7CisgICAgICByZXR1cm4gcjsKKyAgICB9
CisgICAgbmV3TWV0aG9kQXJyb3dFdmFsRXZhbEFycm93RXZhbCgpIHsKKyAgICAgIHZhciBhcnJv
dyAgPSAoKSA9PiBldmFsKCJldmFsKCcoKCkgPT4gZXZhbChcInN1cGVyLmdldFZhbHVlKClcIikp
KCknKSIpOworICAgICAgdmFyIHIgPSBhcnJvdygpOworICAgICAgcmV0dXJuIHI7CisgICAgfQor
ICAgIG5ld01ldGhvZEV2YWwoKSB7CisgICAgICAgIHZhciByID0gZXZhbCgic3VwZXIuZ2V0VmFs
dWUoKSIpOworICAgICAgICByZXR1cm4gcjsKKyAgICB9CisgICAgbmV3TWV0aG9kRXZhbEV2YWwo
KSB7CisgICAgICAgIHZhciByID0gZXZhbCgiZXZhbCgnc3VwZXIuZ2V0VmFsdWUoKScpIik7Cisg
ICAgICAgIHJldHVybiByOworICAgIH0KKyAgICBuZXdNZXRob2RFdmFsQXJyb3coKSB7CisgICAg
ICAgIHZhciByID0gZXZhbCgiKCgpID0+IHN1cGVyLmdldFZhbHVlKCkpKCkiKTsKKyAgICAgICAg
cmV0dXJuIHI7CisgICAgfQorICAgIG5ld01ldGhvZEV2YWxFdmFsQXJyb3coKSB7CisgICAgICAg
IHZhciByID0gZXZhbCgiZXZhbCgnKCgpID0+IHN1cGVyLmdldFZhbHVlKCkpKCknKSIpOworICAg
ICAgICByZXR1cm4gcjsKKyAgICB9CisgICAgbmV3TWV0aG9kRXZhbEV2YWxBcnJvd0V2YWwoKSB7
CisgICAgICAgIHZhciByID0gZXZhbCgiZXZhbCgnKCgpID0+IGV2YWwoXCIoc3VwZXIuZ2V0VmFs
dWUoKSlcIikpKCknKSIpOworICAgICAgICByZXR1cm4gcjsKKyAgICB9Cit9CisKK3ZhciBrID0g
bmV3IEsoKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICB0ZXN0Q2Fz
ZShrLm5ld01ldGhvZEFycm93RXZhbCgpICwgdGVzdFZhbHVlLCAnRXJyb3I6IEVycm9yIGluIGxl
eGljYWwgYmluZCB3aXRoIGV2YWwgYW5kIGFycm93IGZ1bmN0aW9uICMxJyk7CisgICAgdGVzdENh
c2Uoay5uZXdNZXRob2RBcnJvd0RvdWJsZUV2YWwoKSAsIHRlc3RWYWx1ZSwgJ0Vycm9yOiBFcnJv
ciBpbiBsZXhpY2FsIGJpbmQgd2l0aCBldmFsIGFuZCBhcnJvdyBmdW5jdGlvbiAjMicpOworICAg
IHRlc3RDYXNlKGsubmV3TWV0aG9kQXJyb3dFdmFsRXZhbEFycm93KCkgLCB0ZXN0VmFsdWUsICdF
cnJvcjogRXJyb3IgaW4gbGV4aWNhbCBiaW5kIHdpdGggZXZhbCBhbmQgYXJyb3cgZnVuY3Rpb24g
IzMnKTsKKyAgICB0ZXN0Q2FzZShrLm5ld01ldGhvZEFycm93RXZhbEV2YWxBcnJvd0V2YWwoKSAs
IHRlc3RWYWx1ZSwgJ0Vycm9yOiBFcnJvciBpbiBsZXhpY2FsIGJpbmQgd2l0aCBldmFsIGFuZCBh
cnJvdyBmdW5jdGlvbiAjNCcpOworCisgICAgdGVzdENhc2Uoay5uZXdNZXRob2RFdmFsKCkgLCB0
ZXN0VmFsdWUsICdFcnJvcjogRXJyb3IgaW4gbGV4aWNhbCBiaW5kIHdpdGggZXZhbCBhbmQgYXJy
b3cgZnVuY3Rpb24gIzUnKTsKKyAgICB0ZXN0Q2FzZShrLm5ld01ldGhvZEV2YWxFdmFsKCkgLCB0
ZXN0VmFsdWUsICdFcnJvcjogRXJyb3IgaW4gbGV4aWNhbCBiaW5kIHdpdGggZXZhbCBhbmQgYXJy
b3cgZnVuY3Rpb24gIzYnKTsKKyAgICB0ZXN0Q2FzZShrLm5ld01ldGhvZEV2YWxBcnJvdygpICwg
dGVzdFZhbHVlLCAnRXJyb3I6IEVycm9yIGluIGxleGljYWwgYmluZCB3aXRoIGV2YWwgYW5kIGFy
cm93IGZ1bmN0aW9uICM3Jyk7CisgICAgdGVzdENhc2Uoay5uZXdNZXRob2RFdmFsRXZhbEFycm93
KCkgLCB0ZXN0VmFsdWUsICdFcnJvcjogRXJyb3IgaW4gbGV4aWNhbCBiaW5kIHdpdGggZXZhbCBh
bmQgYXJyb3cgZnVuY3Rpb24gOCcpOworICAgIHRlc3RDYXNlKGsubmV3TWV0aG9kRXZhbEV2YWxB
cnJvd0V2YWwoKSAsIHRlc3RWYWx1ZSwgJ0Vycm9yOiBFcnJvciBpbiBsZXhpY2FsIGJpbmQgd2l0
aCBldmFsIGFuZCBhcnJvdyBmdW5jdGlvbiAjOScpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9jbGFzcy1zeW50YXgtc3VwZXItaW4tZXZhbC5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvY2xhc3Mtc3ludGF4LXN1cGVyLWlu
LWV2YWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uM2MzNTUyZWYwMDc3OTliYmU0M2NlZjM2M2IxNGJhMGZiZWU3
N2M2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvY2xhc3Mtc3ludGF4LXN1cGVyLWluLWV2YWwuanMKQEAgLTAsMCArMSw5MyBAQAordmFyIHRl
c3RWYWx1ZSA9ICd0ZXN0LXZhbHVlJzsKKworY2xhc3MgQSB7CisgIGNvbnN0cnVjdG9yKCkgewor
ICAgIHRoaXMudmFsdWUgPSB0ZXN0VmFsdWU7CisgIH0KK30KKworY2xhc3MgQiBleHRlbmRzIEEg
eworICBjb25zdHJ1Y3Rvcih0ZHopIHsKKyAgICBpZiAodGR6KQorICAgICAgdGhpcy5pZCA9ICdp
ZCc7CisgICAgZXZhbCgnc3VwZXIoKScpOworICB9Cit9CisKK3ZhciBiID0gbmV3IEIoZmFsc2Up
OworaWYgKGIudmFsdWUgIT09IHRlc3RWYWx1ZSkKKyAgIHRocm93IG5ldyBFcnJvcigid3Jvbmcg
dmFsdWUiKTsKKworbm9JbmxpbmUoQik7CisKK2xldCBjaGVja1REWiA9IGZ1bmN0aW9uIChrbGFz
cywgaSkgeworICAgIHZhciBleGNlcHRpb247CisgICAgdHJ5IHsKKyAgICAgICBuZXcga2xhc3Mo
dHJ1ZSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBleGNlcHRpb24gPSBlOworICAgICAg
ICBpZiAoIShlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpKQorICAgICAgICAgICAgdGhyb3cg
IkV4Y2VwdGlvbiB0aHJvd24gaW4gaXRlcmF0aW9uICIgKyBpICsgIiB3YXMgbm90IGEgcmVmZXJl
bmNlIGVycm9yIjsKKyAgICB9CisgICAgaWYgKCFleGNlcHRpb24pCisgICAgICAgIHRocm93ICJF
eGNlcHRpb24gbm90IHRocm93biBmb3IgYW4gdW5pdGlhbGl6ZWQgdGhpcyBhdCBpdGVyYXRpb24g
IiArIGk7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICBjaGVja1RE
WihCKTsKK30KKworY2xhc3MgQyBleHRlbmRzIEEgeworICBjb25zdHJ1Y3Rvcih0ZHopIHsKKyAg
ICBpZiAodGR6KQorICAgICAgdGhpcy5pZCA9ICdpZCc7CisgICAgZXZhbCgiZXZhbCgnc3VwZXIo
KScpIik7CisgIH0KK30KKwordmFyIGMgPSBuZXcgQyhmYWxzZSk7CitpZiAoYy52YWx1ZSAhPT0g
dGVzdFZhbHVlKQorICAgdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyB2YWx1ZSIpOworCitmb3IgKHZh
ciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICBjaGVja1REWihDKTsKK30KKworY2xhc3MgRCBl
eHRlbmRzIEEgeworICBjb25zdHJ1Y3Rvcih0ZHopIHsKKyAgICBpZiAodGR6KQorICAgICAgdGhp
cy5pZCA9ICdpZCc7CisgICAgZXZhbCgiZXZhbChcImV2YWwoJ3N1cGVyKCknKVwiKSIpOworICB9
Cit9CisKK3ZhciBkID0gbmV3IEQoZmFsc2UpOworaWYgKGQudmFsdWUgIT09IHRlc3RWYWx1ZSkK
KyAgIHRocm93IG5ldyBFcnJvcigid3JvbmcgdmFsdWUiKTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCAxZTQ7ICsraSkgeworICAgY2hlY2tURFooRCk7Cit9CisKK3ZhciBnZXRFdmFsID0gZnVuY3Rp
b24gKGNvdW50KSB7CisgIHZhciBuZXdDb3VudCA9IGNvdW50IC0gMTsKKyAgcmV0dXJuIG5ld0Nv
dW50ID09PSAwCisgICAgICA/ICdzdXBlcigpJworICAgICAgOiAnZXZhbChnZXRFdmFsKCcgKyBu
ZXdDb3VudCArICcpKSc7Cit9OworCitjbGFzcyBFIGV4dGVuZHMgQSB7CisgIGNvbnN0cnVjdG9y
KHRkeikgeworICAgIGlmICh0ZHopCisgICAgICB0aGlzLmlkID0gJ2lkJzsKKyAgICBldmFsKGdl
dEV2YWwoMTApKTsKKyAgfQorfQorCit2YXIgZSA9IG5ldyBFKGZhbHNlKTsKK2lmIChlLnZhbHVl
ICE9PSB0ZXN0VmFsdWUpCisgICB0aHJvdyBuZXcgRXJyb3IoIndyb25nIHZhbHVlIik7CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICBjaGVja1REWihFKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgt
c3VwZXIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13
aXRoLXN1cGVyLmpzCmluZGV4IDllNTNjNzkxNzM4ZWNmOGI5ZDM0OTgzNWVhODNiZjhkNmM4OTc3
YmIuLmY0Njc3NDgwN2U2ODllZWZjM2VmZjg1NGJmMjU0YzBhZTQzNGQwMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtc3VwZXIu
anMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0
aC1zdXBlci5qcwpAQCAtNDAsOSArNDAsNyBAQCBmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKSB7CiAgICAgfQogCiAgICAgbGV0IGEgPSBuZXcgQSgpOwotICAgIHNob3VsZFRocm93
KCgpID0+IHsKLSAgICAgICAgYS5nZW4oKS5uZXh0KCk7Ci0gICAgfSwgYFN5bnRheEVycm9yOiBz
dXBlciBpcyBvbmx5IHZhbGlkIGluc2lkZSBmdW5jdGlvbnMuYCk7CisgICAgc2hvdWxkQmUoYS5n
ZW4oKS5uZXh0KCkudmFsdWUsIDQyKTsKIH0oKSk7CiAKIChmdW5jdGlvbiAoKSB7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YmU1ZWIyZDE2MWM0MjhiNzBkYjFkNmYxNzlhN2I1N2E5M2Q2Njg5Mi4uNzM2MDlmMWIxYTM0MDY0
OTNmOWE3M2U0OTE5OWE3YzUwNTY5YjBkZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTAz
LTE2ICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgorCisgICAgICAg
IEludm9raW5nIHN1cGVyKCkvc3VwZXIgaW5zaWRlIG9mIHRoZSBldmFsIHNob3VsZCBub3QgbGVh
ZCB0byBTeW50YXhFcnJvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUzODY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBqcy9jbGFzcy1zeW50YXgtc3VwZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGpzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtc3VwZXIuanM6CisKIDIwMTYtMDMtMTQgIEJy
ZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAo
cjE5NzExNCk6IENyYXNoIGluIFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1JlcXVlc3Q6OmRpZENvbXBs
ZXRlUGVybWlzc2lvbkNoZWNrCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50
YXgtc3VwZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LXN1cGVy
LWV4cGVjdGVkLnR4dAppbmRleCBhOWM1NTRmYzA0ZGE3ZTI5ZTdkMzA5MjA3ZWE1NWUyY2RjMTdk
NTAyLi5iN2E5YzcwYWE2NTRkNzM1YjI5ZTZkMmY1MDRkMzU4NDEzYWZlYTM1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtc3VwZXItZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1zdXBlci1leHBlY3RlZC50eHQKQEAgLTUsNiArNSw4
IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIFBBU1MgKG5ldyBCYXNlKSBpbnN0YW5jZW9m
IEJhc2UKIFBBU1MgKG5ldyBEZXJpdmVkKSBpbnN0YW5jZW9mIERlcml2ZWQKK1BBU1MgKG5ldyBE
ZXJpdmVkV2l0aEV2YWwpIGluc3RhbmNlb2YgRGVyaXZlZFdpdGhFdmFsCitQQVNTIChuZXcgRGVy
aXZlZFdpdGhFdmFsKHRydWUpKTo6OlJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5p
dGlhbGl6ZWQgdmFyaWFibGUuCiBQQVNTIChuZXcgRGVyaXZlZCkuY2FsbEJhc2VNZXRob2QoKTo6
OmJhc2VNZXRob2RWYWx1ZQogUEFTUyB4ID0gKG5ldyBEZXJpdmVkKS5jYWxsQmFzZU1ldGhvZDsg
eCgpOjo6YmFzZU1ldGhvZFZhbHVlCiBQQVNTIChuZXcgRGVyaXZlZCkuY2FsbEJhc2VNZXRob2RJ
bkdldHRlcjo6OmJhc2VNZXRob2RWYWx1ZQpAQCAtNDEsNiArNDMsMTIgQEAgUEFTUyBuZXcgKGNs
YXNzIGV4dGVuZHMgT2JqZWN0IHsgY29uc3RydWN0b3IoKSB7IGZ1bmN0aW9uIHgoKSB7IHN1cGVy
KCkgfSB9IH0pOjoKIFBBU1MgbmV3IChjbGFzcyBleHRlbmRzIE9iamVjdCB7IGNvbnN0cnVjdG9y
KCkgeyBmdW5jdGlvbiB4KCkgeyBzdXBlci5tZXRob2QgfSB9IH0pOjo6U3ludGF4RXJyb3I6IHN1
cGVyIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzLgogUEFT
UyBmdW5jdGlvbiB4KCkgeyBzdXBlci5tZXRob2QoKTsgfTo6OlN5bnRheEVycm9yOiBzdXBlciBj
YW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcy4KIFBBU1MgZnVu
Y3Rpb24geCgpIHsgc3VwZXIoKTsgfTo6OlN5bnRheEVycm9yOiBDYW5ub3QgY2FsbCBzdXBlcigp
IG91dHNpZGUgb2YgYSBjbGFzcyBjb25zdHJ1Y3Rvci4KK1BBU1MgZXZhbCgic3VwZXIubWV0aG9k
KCkiKTo6OlN5bnRheEVycm9yOiBzdXBlciBpcyBvbmx5IHZhbGlkIGluc2lkZSBmdW5jdGlvbnMu
CitQQVNTIGV2YWwoInN1cGVyKCkiKTo6OlN5bnRheEVycm9yOiBzdXBlciBpcyBvbmx5IHZhbGlk
IGluc2lkZSBmdW5jdGlvbnMuCitQQVNTIChmdW5jdGlvbiAoKSB7IGV2YWwoInN1cGVyLm1ldGhv
ZCgpIik7fSkoKTo6OlN5bnRheEVycm9yOiBzdXBlciBpcyBvbmx5IHZhbGlkIGluc2lkZSBmdW5j
dGlvbnMuCitQQVNTIChmdW5jdGlvbiAoKSB7IGV2YWwoInN1cGVyKCkiKTt9KSgpOjo6U3ludGF4
RXJyb3I6IHN1cGVyIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9ucy4KK1BBU1MgbmV3IChj
bGFzcyB7IGNvbnN0cnVjdG9yKCkgeyAoZnVuY3Rpb24gKCkgeyBldmFsKCJzdXBlcigpIik7fSko
KTsgfSB9KTo6OlN5bnRheEVycm9yOiBzdXBlciBpcyBvbmx5IHZhbGlkIGluc2lkZSBmdW5jdGlv
bnMuCitQQVNTIChuZXcgKGNsYXNzIHsgbWV0aG9kKCkgeyAoZnVuY3Rpb24gKCkgeyBldmFsKCJz
dXBlci5tZXRob2QoKSIpO30pKCk7IH19KSkubWV0aG9kKCk6OjpTeW50YXhFcnJvcjogc3VwZXIg
aXMgb25seSB2YWxpZCBpbnNpZGUgZnVuY3Rpb25zLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQK
IAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2NsYXNzLXN5bnRheC1zdXBlci5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFz
cy1zeW50YXgtc3VwZXIuanMKaW5kZXggZjg2MzdjMzg5MGE2YmI0MjU1MTcyOTU2Y2FjNDI1Zjdm
NTczNzk2ZS4uMDVkZmExN2M3ZDVmZTM3MGYyZDcyMzVmOGI3ZDYyMjZmNzZiNjk1MCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1zdXBlci5qcwor
KysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LXN1cGVyLmpzCkBA
IC0zOSwxNCArMzksMTQgQEAgZnVuY3Rpb24gc2hvdWxkQmUoYSwgYikgewogZnVuY3Rpb24gc2hv
dWxkQmVUcnVlKHMpIHsKICAgICBpZiAoZXZhbChzKSA9PT0gdHJ1ZSkKICAgICAgICAgdGVzdFBh
c3NlZChzKTsKLSAgICBlbHNlIAorICAgIGVsc2UKICAgICAgICAgdGVzdEZhaWxlZChzKTsKIH0K
IAogZnVuY3Rpb24gc2hvdWxkQmVGYWxzZShzKSB7CiAgICAgaWYgKGV2YWwocykgPT09IGZhbHNl
KQogICAgICAgICB0ZXN0UGFzc2VkKHMpOwotICAgIGVsc2UgCisgICAgZWxzZQogICAgICAgICB0
ZXN0RmFpbGVkKHMpOwogfQogCkBAIC03Niw4ICs3NiwxOSBAQCBjbGFzcyBTZWNvbmREZXJpdmVk
IGV4dGVuZHMgRGVyaXZlZCB7CiAgICAgY2hhaW5NZXRob2QoKSB7IHJldHVybiBzdXBlci5jaGFp
bk1ldGhvZCgpLmNvbmNhdChbJ3NlY29uZERlcml2ZWQnXSk7IH0KIH0KIAorY2xhc3MgRGVyaXZl
ZFdpdGhFdmFsIGV4dGVuZHMgQmFzZSB7CisgICAgY29uc3RydWN0b3IodGhyb3dURFopIHsKKyAg
ICAgIGlmICh0aHJvd1REWikKKyAgICAgICAgdGhpcy5pZCA9ICcnOworCisgICAgICBldmFsKCJz
dXBlcigpIik7CisgICAgfQorfQorCiBzaG91bGRCZVRydWUoJyhuZXcgQmFzZSkgaW5zdGFuY2Vv
ZiBCYXNlJyk7CiBzaG91bGRCZVRydWUoJyhuZXcgRGVyaXZlZCkgaW5zdGFuY2VvZiBEZXJpdmVk
Jyk7CitzaG91bGRCZVRydWUoJyhuZXcgRGVyaXZlZFdpdGhFdmFsKSBpbnN0YW5jZW9mIERlcml2
ZWRXaXRoRXZhbCcpOworc2hvdWxkVGhyb3coJyhuZXcgRGVyaXZlZFdpdGhFdmFsKHRydWUpKScs
ICciUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4i
Jyk7CiBzaG91bGRCZSgnKG5ldyBEZXJpdmVkKS5jYWxsQmFzZU1ldGhvZCgpJywgJ2Jhc2VNZXRo
b2RWYWx1ZScpOwogc2hvdWxkQmUoJ3ggPSAobmV3IERlcml2ZWQpLmNhbGxCYXNlTWV0aG9kOyB4
KCknLCAnYmFzZU1ldGhvZFZhbHVlJyk7CiBzaG91bGRCZSgnKG5ldyBEZXJpdmVkKS5jYWxsQmFz
ZU1ldGhvZEluR2V0dGVyJywgJ2Jhc2VNZXRob2RWYWx1ZScpOwpAQCAtMTE1LDUgKzEyNiwxMyBA
QCBzaG91bGRUaHJvdygnbmV3IChjbGFzcyBleHRlbmRzIE9iamVjdCB7IGNvbnN0cnVjdG9yKCkg
eyBmdW5jdGlvbiB4KCkgeyBzdXBlcigpCiBzaG91bGRUaHJvdygnbmV3IChjbGFzcyBleHRlbmRz
IE9iamVjdCB7IGNvbnN0cnVjdG9yKCkgeyBmdW5jdGlvbiB4KCkgeyBzdXBlci5tZXRob2QgfSB9
IH0pJywgJyJTeW50YXhFcnJvcjogc3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIG1ldGhvZCBv
ZiBhIGRlcml2ZWQgY2xhc3MuIicpOwogc2hvdWxkVGhyb3coJ2Z1bmN0aW9uIHgoKSB7IHN1cGVy
Lm1ldGhvZCgpOyB9JywgJyJTeW50YXhFcnJvcjogc3VwZXIgY2FuIG9ubHkgYmUgdXNlZCBpbiBh
IG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xhc3MuIicpOwogc2hvdWxkVGhyb3coJ2Z1bmN0aW9uIHgo
KSB7IHN1cGVyKCk7IH0nLCAnIlN5bnRheEVycm9yOiBDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNp
ZGUgb2YgYSBjbGFzcyBjb25zdHJ1Y3Rvci4iJyk7CitzaG91bGRUaHJvdygnZXZhbCgic3VwZXIu
bWV0aG9kKCkiKScsICciU3ludGF4RXJyb3I6IHN1cGVyIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1
bmN0aW9ucy4iJyk7CitzaG91bGRUaHJvdygnZXZhbCgic3VwZXIoKSIpJywgJyJTeW50YXhFcnJv
cjogc3VwZXIgaXMgb25seSB2YWxpZCBpbnNpZGUgZnVuY3Rpb25zLiInKTsKKworc2hvdWxkVGhy
b3coJyhmdW5jdGlvbiAoKSB7IGV2YWwoInN1cGVyLm1ldGhvZCgpIik7fSkoKScsICciU3ludGF4
RXJyb3I6IHN1cGVyIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9ucy4iJyk7CitzaG91bGRU
aHJvdygnKGZ1bmN0aW9uICgpIHsgZXZhbCgic3VwZXIoKSIpO30pKCknLCAnIlN5bnRheEVycm9y
OiBzdXBlciBpcyBvbmx5IHZhbGlkIGluc2lkZSBmdW5jdGlvbnMuIicpOworCitzaG91bGRUaHJv
dygnbmV3IChjbGFzcyB7IGNvbnN0cnVjdG9yKCkgeyAoZnVuY3Rpb24gKCkgeyBldmFsKCJzdXBl
cigpIik7fSkoKTsgfSB9KScsICciU3ludGF4RXJyb3I6IHN1cGVyIGlzIG9ubHkgdmFsaWQgaW5z
aWRlIGZ1bmN0aW9ucy4iJyk7CitzaG91bGRUaHJvdygnKG5ldyAoY2xhc3MgeyBtZXRob2QoKSB7
IChmdW5jdGlvbiAoKSB7IGV2YWwoInN1cGVyLm1ldGhvZCgpIik7fSkoKTsgfX0pKS5tZXRob2Qo
KScsICciU3ludGF4RXJyb3I6IHN1cGVyIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9ucy4i
Jyk7CiAKIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>