<?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>157250</bug_id>
          
          <creation_ts>2016-05-01 14:51:04 -0700</creation_ts>
          <short_desc>Pass reference instead of pointer to IDL attribute setters if not nullable</short_desc>
          <delta_ts>2016-05-01 21:20:50 -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>Bindings</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1189242</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-01 14:51:04 -0700</bug_when>
    <thetext>Pass reference instead of pointer to IDL attribute setters if not nullable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189270</commentid>
    <comment_count>1</comment_count>
      <attachid>277874</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-01 16:56:34 -0700</bug_when>
    <thetext>Created attachment 277874
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189275</commentid>
    <comment_count>2</comment_count>
      <attachid>277877</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-01 17:09:02 -0700</bug_when>
    <thetext>Created attachment 277877
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189277</commentid>
    <comment_count>3</comment_count>
      <attachid>277878</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-01 17:19:18 -0700</bug_when>
    <thetext>Created attachment 277878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189278</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-01 17:19:38 -0700</bug_when>
    <thetext>Another attempt to make the GObject bindings happy :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189288</commentid>
    <comment_count>5</comment_count>
      <attachid>277878</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-01 17:36:30 -0700</bug_when>
    <thetext>Comment on attachment 277878
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        There is not intended Web-exposed behavior change.

should be &quot;no intended&quot;

&gt; Source/WebCore/ChangeLog:38
&gt; +        (WebCore::setJSTestObjTestObjAttr):
&gt; +        (WebCore::setJSTestObjLenientTestObjAttr):
&gt; +        (WebCore::setJSTestObjXMLObjAttr):
&gt; +        (WebCore::setJSTestObjTypedArrayAttr):
&gt; +        (WebCore::setJSTestObjStrictTypeCheckingAttribute):
&gt; +        (WebCore::setJSTestObjWithScriptExecutionContextAttribute):
&gt; +        (WebCore::setJSTestObjWithScriptStateAttributeRaises):
&gt; +        (WebCore::setJSTestObjWithScriptExecutionContextAttributeRaises):
&gt; +        (WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateAttribute):
&gt; +        (WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises):
&gt; +        (WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute):
&gt; +        (WebCore::setJSTestObjWithScriptArgumentsAndCallStackAttribute):
&gt; +        (WebCore::setJSTestObjWithCallWithAndSetterCallWithAttribute): Deleted.

I suggest removing the lists of function names for the regenerated test output.

&gt; Source/WebCore/bindings/js/JSDataCueCustom.cpp:92
&gt;              return JSValue::encode(JSValue());

So random to use this value here unlike other similar call sites. I think we need a more standard thing to return when we have exceptions. JSValue::encode(jsUndefined()) is so long and it shouldn’t matter what we return.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm:1113
&gt; +            $paramName = &quot;*$paramName&quot; if ($codeGenerator-&gt;ShouldPassWrapperByReference($param, $parentNode));

perl coding style omits the parentheses after if when doing it like this, and I like that

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2867
&gt; +                    push(@implContent, &quot;        return false;\n&quot;);

Maybe we should return { } in all these places where there is an exception and it doesn’t matter what we return.

&gt; Source/WebCore/dom/NodeIterator.h:63
&gt; +            NodePointer() = default;
&gt; +            NodePointer(Node&amp;, bool);

Do we really need these constructors at all? Could we just use aggregate initialization syntax instead and write { &amp;node, false }. Where are the call sites that this makes better?

&gt; Source/WebCore/dom/TreeWalker.h:45
&gt; +        Node&amp; currentNode() { return m_current.get(); }
&gt; +        const Node&amp; currentNode() const { return m_current.get(); }

This need to overload irritates me a bit. It seems fine to me to get a Node&amp; out of a const TreeWalker; just seems this is a sort of “bug” in Ref; would not be an issue if it was an actual reference. I’d prefer not to have these two overloads. Maybe we can use const_cast or something.

&gt; Source/WebCore/dom/TreeWalker.h:62
&gt; +        Node* setCurrent(Ref&lt;Node&gt;&amp;&amp;);

The return value for this could be Node&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189290</commentid>
    <comment_count>6</comment_count>
      <attachid>277878</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-01 17:48:51 -0700</bug_when>
    <thetext>Comment on attachment 277878
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:12
&gt;&gt; +        There is not intended Web-exposed behavior change.
&gt; 
&gt; should be &quot;no intended&quot;

OK

&gt;&gt; Source/WebCore/ChangeLog:38
&gt;&gt; +        (WebCore::setJSTestObjWithCallWithAndSetterCallWithAttribute): Deleted.
&gt; 
&gt; I suggest removing the lists of function names for the regenerated test output.

OK

&gt;&gt; Source/WebCore/bindings/js/JSDataCueCustom.cpp:92
&gt;&gt;              return JSValue::encode(JSValue());
&gt; 
&gt; So random to use this value here unlike other similar call sites. I think we need a more standard thing to return when we have exceptions. JSValue::encode(jsUndefined()) is so long and it shouldn’t matter what we return.

Ok, I think I&apos;ll return JSValue::encode(jsUndefined()) for now, for consistency.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm:1113
&gt;&gt; +            $paramName = &quot;*$paramName&quot; if ($codeGenerator-&gt;ShouldPassWrapperByReference($param, $parentNode));
&gt; 
&gt; perl coding style omits the parentheses after if when doing it like this, and I like that

OK.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2867
&gt;&gt; +                    push(@implContent, &quot;        return false;\n&quot;);
&gt; 
&gt; Maybe we should return { } in all these places where there is an exception and it doesn’t matter what we return.

Everything else in this function already returns false in case of error. The setters return a boolean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189291</commentid>
    <comment_count>7</comment_count>
      <attachid>277881</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-01 17:49:20 -0700</bug_when>
    <thetext>Created attachment 277881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189312</commentid>
    <comment_count>8</comment_count>
      <attachid>277881</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-01 21:04:26 -0700</bug_when>
    <thetext>Comment on attachment 277881
Patch

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

&gt; Source/WebCore/bindings/js/JSDataCueCustom.cpp:90
&gt; +        if (!data) {

UNLIKELY, I think</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189314</commentid>
    <comment_count>9</comment_count>
      <attachid>277889</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-01 21:18:50 -0700</bug_when>
    <thetext>Created attachment 277889
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189316</commentid>
    <comment_count>10</comment_count>
      <attachid>277889</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-01 21:20:45 -0700</bug_when>
    <thetext>Comment on attachment 277889
Patch

Clearing flags on attachment: 277889

Committed r200316: &lt;http://trac.webkit.org/changeset/200316&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189317</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-01 21:20:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277874</attachid>
            <date>2016-05-01 16:56:34 -0700</date>
            <delta_ts>2016-05-01 17:08:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157250-20160501165710.patch</filename>
            <type>text/plain</type>
            <size>50984</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJlMDJhNGM1MTYyOWQ3
NDk2NDVlM2YyYmE4OTRhNzdiMjBiZGVjYS4uNDdiMjAxYmI2NTI2OTE4MzM4ZTFkOGU3ZjZhOGEx
MzRjNTNhYWJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwNiBAQAogMjAxNi0wNS0wMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIFBhc3MgcmVmZXJlbmNlIGlu
c3RlYWQgb2YgcG9pbnRlciB0byBJREwgYXR0cmlidXRlIHNldHRlcnMgaWYgbm90IG51bGxhYmxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcyNTAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUg
dGhlIGJpbmRpbmdzIGdlbmVyYXRvciBzbyB0aGF0IHdlIHBhc3Mgd3JhcHBlciB0eXBlcyBieSBy
ZWZlcmVuY2UKKyAgICAgICAgdG8gYXR0cmlidXRlIHNldHRlcnMgaW5zdGVhZCBvZiBieSByYXcg
cG9pbnRlciB3aGVuIHRoZSBhdHRyaWJ1dGUgaXMgbm90CisgICAgICAgIG1hcmtlZCBhcyBudWxs
YWJsZSBpbiB0aGUgSURMLgorCisgICAgICAgIFRoZXJlIGlzIG5vdCBpbnRlbmRlZCBXZWItZXhw
b3NlZCBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQ29udm9s
dmVyTm9kZS5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTRGF0YUN1ZSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBt
OgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9i
alRlc3RPYmpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakxlbmllbnRUZXN0
T2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVu
dHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
V2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOiBEZWxldGVkLgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW06CisgICAg
ICAgICgtW0RPTVRlc3RJbnRlcmZhY2Ugc2V0SW1wbGVtZW50c05vZGU6XSk6CisgICAgICAgICgt
W0RPTVRlc3RJbnRlcmZhY2Ugc2V0U3VwcGxlbWVudGFsTm9kZTpdKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tOgorICAgICAgICAoLVtET01UZXN0
T2JqIHNldFRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nOl0pOgorICAgICAgICAoLVtET01UZXN0
T2JqIHNldFRlc3RPYmpBdHRyOl0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHNldExlbmllbnRU
ZXN0T2JqQXR0cjpdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiBzZXRYTUxPYmpBdHRyOl0pOgor
ICAgICAgICAoLVtET01UZXN0T2JqIHNldFN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZTpdKToK
KyAgICAgICAgKC1bRE9NVGVzdE9iaiBzZXRKc0J1aWx0aW5BdHRyaWJ1dGU6XSk6CisgICAgICAg
ICgtW0RPTVRlc3RPYmogc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGU6XSk6
CisgICAgICAgICgtW0RPTVRlc3RPYmogc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
Ol0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlUmFpc2VzOl0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHNldFdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGU6XSk6CisgICAgICAgICgtW0RP
TVRlc3RPYmogc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlczpdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiBzZXRXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZTpdKToKKyAgICAgICAg
KC1bRE9NVGVzdE9iaiBzZXRXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRl
Ol0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHNldENvbmRpdGlvbmFsQXR0cjQ6XSk6CisgICAg
ICAgICgtW0RPTVRlc3RPYmogc2V0Q29uZGl0aW9uYWxBdHRyNTpdKToKKyAgICAgICAgKC1bRE9N
VGVzdE9iaiBzZXRDb25kaXRpb25hbEF0dHI2Ol0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHN0
cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZV0pOiBEZWxldGVkLgorICAgICAgICAoLVtET01UZXN0
T2JqIGpzQnVpbHRpbkF0dHJpYnV0ZV0pOiBEZWxldGVkLgorICAgICAgICAoLVtET01UZXN0T2Jq
IHdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc10pOiBEZWxldGVkLgorICAgICAgICAoLVtE
T01UZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3Bh
Y2VzQXR0cmlidXRlXSk6IERlbGV0ZWQuCisgICAgICAgICgtW0RPTVRlc3RPYmogY29uZGl0aW9u
YWxBdHRyNF0pOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50KToKKyAg
ICAgICAgKiBkb20vTm9kZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVJdGVy
YXRvcjo6Tm9kZVBvaW50ZXI6Ok5vZGVQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVJ
dGVyYXRvcjo6Tm9kZVBvaW50ZXI6Om1vdmVUb05leHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZUl0ZXJhdG9yOjpOb2RlUG9pbnRlcjo6bW92ZVRvUHJldmlvdXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZUl0ZXJhdG9yOjpOb2RlSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0
ZXJhdG9yOjp+Tm9kZUl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVJdGVyYXRvcjo6
dXBkYXRlRm9yTm9kZVJlbW92YWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJhdG9yOjpO
b2RlUG9pbnRlcjo6Y2xlYXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJh
dG9yOjpuZXh0Tm9kZSk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL05vZGVJdGVyYXRvci5oOgor
ICAgICAgICAqIGRvbS9UcmF2ZXJzYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJh
dG9yQmFzZTo6Tm9kZUl0ZXJhdG9yQmFzZSk6CisgICAgICAgICogZG9tL1RyYXZlcnNhbC5oOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJhdG9yQmFzZTo6cm9vdCk6CisgICAgICAgICogZG9t
L1RyZWVXYWxrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtlcjo6c2V0Q3VycmVu
dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtlcjo6c2V0Q3VycmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmVlV2Fsa2VyOjpwYXJlbnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRyZWVXYWxrZXI6OmZpcnN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtlcjo6
bGFzdENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVXYWxrZXI6OnRyYXZlcnNlU2libGlu
Z3MpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtlcjo6cHJldmlvdXNOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRyZWVXYWxrZXI6Om5leHROb2RlKToKKyAgICAgICAgKiBkb20vVHJlZVdh
bGtlci5oOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtlcjo6Y3VycmVudE5vZGUpOgorICAg
ICAgICAqIGRvbS9UcmVlV2Fsa2VyLmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50
RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbDoKKyAgICAg
ICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvdHJhY2svRGF0
YUN1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhQ3VlOjpEYXRhQ3VlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFDdWU6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6dG9EYXRhQ3Vl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL0RhdGFDdWUuaDoKKyAgICAgICAgKiBo
dG1sL3RyYWNrL0RhdGFDdWUuaWRsOgorCisyMDE2LTA1LTAxICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKICAgICAgICAgVW5yZXZpZXdlZCBhdHRlbXB0IHRvIGZpeCBXaW5kb3dz
IGJ1aWxkIGFmdGVyIHIyMDAyODguCiAKICAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaWRsCmluZGV4IGMzNGM3ZmI3NmI1ZTg1Nzg4
MDc0NDI1ZWQ1NDZjMWIzMGFiYzhiOWYuLmU3ODFmNTI0NDQ3Zjk0MTgwODhjOGEyN2E2Y2VkMzA2
MzM3NTI0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmlkbApAQCAtMzAsNyArMzAsNyBAQAogXSBpbnRl
cmZhY2UgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIDogRXZlbnRUYXJnZXQgewogICAgIGF0dHJp
YnV0ZSBET01TdHJpbmcgdGV4dDsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhbmc7Ci0gICAg
YXR0cmlidXRlIFNwZWVjaFN5bnRoZXNpc1ZvaWNlIHZvaWNlOworICAgIGF0dHJpYnV0ZSBTcGVl
Y2hTeW50aGVzaXNWb2ljZT8gdm9pY2U7IC8vIEZJWE1FOiBzaG91bGQgbm90IGJlIG51bGxhYmxl
LgogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgdm9sdW1lOwogICAgIGF0dHJpYnV0
ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgcmF0ZTsKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZs
b2F0IHBpdGNoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9s
dmVyTm9kZS5pZGwKaW5kZXggZGJkYzEyNmU0M2JiMWMwNTdlZjUyZWJkZGNhYmUzN2NlNGViOWE0
Yi4uZjBkM2Y3NGQ2Nzg0OTYyZDU2MzU5Mjk2MzM5MGQ3ZTRjMjJlMDNhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaWRsCkBAIC0yNyw2
ICsyNyw2IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAogICAgIEpTR2VuZXJhdGVUb0pT
T2JqZWN0CiBdIGludGVyZmFjZSBDb252b2x2ZXJOb2RlIDogQXVkaW9Ob2RlIHsKLSAgICBbU2V0
dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgQXVkaW9CdWZmZXIgYnVmZmVyOworICAgIFtT
ZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBBdWRpb0J1ZmZlcj8gYnVmZmVyOwogICAg
IGF0dHJpYnV0ZSBib29sZWFuIG5vcm1hbGl6ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcAppbmRleCBiZTUzZWJlZDk1MTQxYmY2ODU2MTk3
NWM0MTY3YWU1MmMwMWUyZWJkLi5mZTRkMzZkZTc0ZDFjMmY2Zjc2MzA0OWExMzM4Nzk4MWVkMWYz
ZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5j
cHAKQEAgLTUzLDcgKzUzLDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RKU0RhdGFDdWUoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50
KCkgPCAzKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IGRvdWJsZSBzdGFydFRpbWUoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpOwogICAg
IGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC04NCwxNiArODMsMTcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0RhdGFDdWUoRXhlY1N0YXRlKiBleGVjKQog
ICAgIFJlZlB0cjxEYXRhQ3VlPiBvYmplY3Q7CiAgICAgaWYgKHZhbHVlQXJndW1lbnQuaXNDZWxs
KCkgJiYgdmFsdWVBcmd1bWVudC5hc0NlbGwoKS0+aW5oZXJpdHMoc3RkOjpyZW1vdmVfcG9pbnRl
cjxKU0FycmF5QnVmZmVyKj46OnR5cGU6OmluZm8oKSkpIHsKIAotICAgICAgICBBcnJheUJ1ZmZl
ciogZGF0YSh0b0FycmF5QnVmZmVyKHZhbHVlQXJndW1lbnQpKTsKKyAgICAgICAgQXJyYXlCdWZm
ZXIqIGRhdGEgPSB0b0FycmF5QnVmZmVyKHZhbHVlQXJndW1lbnQpOwogICAgICAgICBpZiAoVU5M
SUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgICAgICBvYmplY3QgPSBEYXRhQ3VlOjpjcmVh
dGUoKmNvbnRleHQsIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydFRpbWUpLCBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kVGltZSksIGRhdGEsIHR5cGUsIGVjKTsKLSAgICAg
ICAgaWYgKGVjKSB7Ci0gICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAg
ICAgICBpZiAoIWRhdGEpIHsKKyAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUeXBl
RXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwog
ICAgICAgICB9CiAKKyAgICAgICAgb2JqZWN0ID0gRGF0YUN1ZTo6Y3JlYXRlKCpjb250ZXh0LCBN
ZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoc3RhcnRUaW1lKSwgTWVkaWFUaW1lOjpjcmVhdGVX
aXRoRG91YmxlKGVuZFRpbWUpLCAqZGF0YSwgdHlwZSk7CisKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBvYmplY3QuZ2V0KCkpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGQwY2JhMzM3YWZkN2E4ZTllNmRl
MzljNmU3MGZmYWVlNTBlYzBjZWEuLjJmNGRjOWRiYThlM2M2YWM1MzhmZmVmOGVjNzViM2EzOTE1
MTlmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCkBAIC0yODYwLDYgKzI4NjAsMTQgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVzaCAoQGltcGxDb250ZW50LCAiICAgICAgICBy
ZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICBt
eSAkc2hvdWxkUGFzc0J5UmVmZXJlbmNlID0gU2hvdWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZSgk
YXR0cmlidXRlLT5zaWduYXR1cmUsICRpbnRlcmZhY2UpOworICAgICAgICAgICAgICAgIGlmICgk
c2hvdWxkUGFzc0J5UmVmZXJlbmNlKSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7XG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICByZXR1cm4gZmFsc2U7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgfVxuIik7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAg
aWYgKCR0eXBlIGVxICJkb3VibGUiIG9yICR0eXBlIGVxICJmbG9hdCIpIHsKICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFzdGQ6OmlzZmlu
aXRlKG5hdGl2ZVZhbHVlKSkpIHtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7XG4iKTsKQEAgLTI5MDMs
NyArMjkxMSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCR0eXBlKSBhbmQgbm90ICRj
b2RlR2VuZXJhdG9yLT5Jc1N0cmluZ0Jhc2VkRW51bVR5cGUoJHR5cGUpKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJuYXRpdmVWYWx1ZS52YWx1ZSgpIik7CiAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBhcmd1bWVudHMsICJuYXRpdmVWYWx1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAYXJndW1lbnRzLCAkc2hvdWxkUGFzc0J5UmVmZXJlbmNlID8gIipuYXRpdmVWYWx1ZSIgOiAi
bmF0aXZlVmFsdWUiKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVt
ZW50ZWRCeSJ9KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVk
QnkifTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvck9iakMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JPYmpDLnBtCmluZGV4IDYxYTFkMGEzZDUxMmE0NzgyYjI2YTk5NmM4YjBmNjViMmExYzVm
MTguLjgxYzQ1ZTA1MTlhZWU1YWM4MWVkN2U0YmVhMjRkNTllOTEzMmFlODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQpA
QCAtMTQxNyw2ICsxNDE3LDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgICAgICRhcmcgPSAiY29yZSgiIC4gJGFyZyAuICIpIjsKICAgICAgICAgICAgICAg
ICB9CiAKKyAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPlNob3VsZFBhc3NXcmFw
cGVyQnlSZWZlcmVuY2UoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAkaW50ZXJmYWNlKSkgeworICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoISRhcmcpXG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIFdlYkNvcmU6
OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgJGFy
ZyA9ICIqJGFyZyI7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgbXkgKCRm
dW5jdGlvbk5hbWUsIEBhcmd1bWVudHMpID0gJGNvZGVHZW5lcmF0b3ItPlNldHRlckV4cHJlc3Np
b24oXCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAg
ICAgICAgICBwdXNoKEBhcmd1bWVudHMsICRhcmcpOwogICAgICAgICAgICAgICAgIHB1c2goQGFy
Z3VtZW50cywgImVjIikgaWYgJGhhc1NldHRlckV4Y2VwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5j
cHAKaW5kZXggOTcxY2NhNDgwNDU3NzgzYjY2YmRhNGYwN2JmYzhjNGQ2YWEwYmFmNS4uZmE3MjNh
NzI5YWM1ZDc3MDc0ZTQ0OTE5YTY3MzM0NjY0ZWFlNDU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5j
cHAKQEAgLTY4Niw3ICs2ODYsMTEgQEAgYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRz
Tm9kZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUKICAgICBOb2Rl
KiBuYXRpdmVWYWx1ZSA9IEpTTm9kZTo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlt
cGwuc2V0SW1wbGVtZW50c05vZGUobmF0aXZlVmFsdWUpOworICAgIGlmIChVTkxJS0VMWSghbmF0
aXZlVmFsdWUpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGltcGwuc2V0SW1wbGVtZW50c05vZGUoKm5hdGl2ZVZh
bHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNzUyLDcgKzc1NiwxMSBAQCBib29sIHNl
dEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbAogICAgIE5vZGUqIG5hdGl2ZVZhbHVlID0gSlNOb2RlOjp0b1dyYXBw
ZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3Vw
cGxlbWVudGFsTm9kZShpbXBsLCBuYXRpdmVWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFuYXRp
dmVWYWx1ZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3Vw
cGxlbWVudGFsTm9kZShpbXBsLCAqbmF0aXZlVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCmluZGV4IDc4ZDViZWJkYzRlMzc1MDI0Y2E1MjlhYjcxOTI0MjMxMThhYTI4NGIu
LjM2YmZhY2RhMWI0NTY4YzNiZDM3NTRhNTViYzBiYmNmMTIyMjY3MTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBA
IC0yNTcyLDcgKzI1NzIsMTEgQEAgYm9vbCBzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWQKICAgICBUZXN0T2Jq
KiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGltcGwuc2V0VGVzdE9iakF0dHIobmF0aXZlVmFsdWUpOworICAgIGlmIChVTkxJS0VMWSghbmF0
aXZlVmFsdWUpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGltcGwuc2V0VGVzdE9iakF0dHIoKm5hdGl2ZVZhbHVl
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjU4OSw3ICsyNTkzLDExIEBAIGJvb2wgc2V0
SlNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9X
cmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGltcGwuc2V0TGVuaWVudFRlc3RPYmpBdHRyKG5h
dGl2ZVZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgeworICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICBpbXBsLnNldExlbmllbnRUZXN0T2JqQXR0cigqbmF0aXZlVmFsdWUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0yNjIzLDcgKzI2MzEsMTEgQEAgYm9vbCBzZXRKU1Rlc3RPYmpYTUxPYmpB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEoK
ICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGltcGwuc2V0WE1MT2JqQXR0cihuYXRpdmVWYWx1ZSk7CisgICAgaWYgKFVO
TElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaW1wbC5zZXRYTUxPYmpBdHRyKCpu
YXRpdmVWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI4MjksNiArMjg0MSwxMCBA
QCBib29sIHNldEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jbwogICAgIFJlZlB0cjxGbG9hdDMyQXJyYXk+IG5hdGl2
ZVZhbHVlID0gdG9GbG9hdDMyQXJyYXkodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKFVOTElLRUxZ
KCFuYXRpdmVWYWx1ZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgaW1wbC5zZXRUeXBlZEFycmF5QXR0cihuYXRp
dmVWYWx1ZS5nZXQoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yOTU4LDcgKzI5NzQsMTEg
QEAgYm9vbCBzZXRKU1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGgKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpT
VGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGltcGwuc2V0U3RyaWN0VHlw
ZUNoZWNraW5nQXR0cmlidXRlKG5hdGl2ZVZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIW5hdGl2
ZVZhbHVlKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICBpbXBsLnNldFN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0
ZSgqbmF0aXZlVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMDQ4LDEwICszMDY4
LDE0IEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTCiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUg
PSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoVU5MSUtFTFko
IW5hdGl2ZVZhbHVlKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKCpjb250ZXh0
LCBuYXRpdmVWYWx1ZSk7CisgICAgaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZSgqY29udGV4dCwgKm5hdGl2ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtMzA2OCw3ICszMDkyLDExIEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlCiAgICAgVGVzdE9i
aiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpbXBsLnNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygqc3RhdGUsIG5hdGl2ZVZh
bHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgeworICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpbXBs
LnNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygqc3RhdGUsICpuYXRpdmVWYWx1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMwODUsMTAgKzMxMTMsMTQgQEAgYm9vbCBzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhFeGVjU3Rh
dGUqIHN0YXRlLCBFbmMKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9X
cmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7
CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihz
dGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
ICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGltcGwuc2V0V2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoKmNvbnRleHQsIG5hdGl2ZVZh
bHVlKTsKKyAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFp
c2VzKCpjb250ZXh0LCAqbmF0aXZlVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0z
MTA1LDEwICszMTM3LDE0IEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0CiAgICAgVGVzdE9iaiog
bmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICBhdXRvKiBjb250ZXh0ID0g
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVBdHRyaWJ1dGUoKnN0YXRlLCAqY29udGV4dCwgbmF0aXZlVmFsdWUpOworICAgIGlt
cGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgq
c3RhdGUsICpjb250ZXh0LCAqbmF0aXZlVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0zMTI1LDEwICszMTYxLDE0IEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhCiAgICAgVGVzdE9i
aiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICBhdXRvKiBjb250ZXh0
ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoKnN0YXRlLCAqY29udGV4dCwgbmF0aXZlVmFsdWUp
OworICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlcygqc3RhdGUsICpjb250ZXh0LCAqbmF0aXZlVmFsdWUpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0zMTQ1LDEwICszMTg1LDE0IEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUo
RXhlCiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgeworICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAg
ICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNv
bnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKCpzdGF0ZSwgKmNv
bnRleHQsIG5hdGl2ZVZhbHVlKTsKKyAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKCpzdGF0ZSwgKmNvbnRleHQsICpu
YXRpdmVWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMxNjUsNyArMzIwOSwxMSBA
QCBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jbwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNU
ZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW1wbC5zZXRXaXRoU2NyaXB0
QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKG5hdGl2ZVZhbHVlKTsKKyAgICBpZiAoVU5M
SUtFTFkoIW5hdGl2ZVZhbHVlKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpbXBsLnNldFdpdGhTY3JpcHRBcmd1
bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoKm5hdGl2ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW0KaW5kZXggMDk4YTExZDllNTc0OWUxYWY4
ZDcyZWEyNzNlZTcxNjRmNjE0YTk4ZC4uN2JkMjQ3MTQxMWJlMTE0NmIyOTg5ZDYyNDYzODkyZTQx
OTk4NWQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tCkBAIC0xMDksNyArMTA5LDkgQEAg
LSAodm9pZClzZXRJbXBsZW1lbnRzTm9kZTooRE9NTm9kZSAqKW5ld0ltcGxlbWVudHNOb2RlCiAg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIEFTU0VSVChuZXdJ
bXBsZW1lbnRzTm9kZSk7CiAKLSAgICBJTVBMLT5zZXRJbXBsZW1lbnRzTm9kZShjb3JlKG5ld0lt
cGxlbWVudHNOb2RlKSk7CisgICAgaWYgKCFjb3JlKG5ld0ltcGxlbWVudHNOb2RlKSkKKyAgICAg
ICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBJTVBMLT5zZXRJbXBs
ZW1lbnRzTm9kZSgqY29yZShuZXdJbXBsZW1lbnRzTm9kZSkpOwogfQogI2VuZGlmCiAKQEAgLTE2
MSw3ICsxNjMsOSBAQCAtICh2b2lkKXNldFN1cHBsZW1lbnRhbE5vZGU6KERPTU5vZGUgKiluZXdT
dXBwbGVtZW50YWxOb2RlCiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwogICAgIEFTU0VSVChuZXdTdXBwbGVtZW50YWxOb2RlKTsKIAotICAgIFdlYkNvcmU6OlRlc3RT
dXBwbGVtZW50YWw6OnNldFN1cHBsZW1lbnRhbE5vZGUoKklNUEwsIGNvcmUobmV3U3VwcGxlbWVu
dGFsTm9kZSkpOworICAgIGlmICghY29yZShuZXdTdXBwbGVtZW50YWxOb2RlKSkKKyAgICAgICAg
V2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBXZWJDb3JlOjpUZXN0U3Vw
cGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxOb2RlKCpJTVBMLCAqY29yZShuZXdTdXBwbGVtZW50
YWxOb2RlKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KaW5kZXggMzk3YzNmZTc0MjRiMzc5
OTMxMzQzNTdmNTIwNmM5ZmY4M2Y3YTg4Zi4uZWRiZWU2YThkOGNjOThjMjZkYjcxN2E5Y2M3NjVl
Y2UzYWU5YjM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L09iakMvRE9NVGVzdE9iai5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCkBAIC0xMTIsNyArMTEyLDkgQEAgLSAodm9pZClz
ZXRUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZzooRE9NVGVzdFN1Yk9iakNvbnN0cnVjdG9yICop
bmV3VGVzdFN1Yk9iakUKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CiAgICAgQVNTRVJUKG5ld1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nKTsKIAotICAgIElNUEwt
PnNldFRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nKGNvcmUobmV3VGVzdFN1Yk9iakVuYWJsZWRC
eVNldHRpbmcpKTsKKyAgICBpZiAoIWNvcmUobmV3VGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmcp
KQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIElNUEwt
PnNldFRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nKCpjb3JlKG5ld1Rlc3RTdWJPYmpFbmFibGVk
QnlTZXR0aW5nKSk7CiB9CiAKIC0gKGNoYXIpYnl0ZUF0dHIKQEAgLTI0Niw3ICsyNDgsOSBAQCAt
ICh2b2lkKXNldFRlc3RPYmpBdHRyOihET01UZXN0T2JqICopbmV3VGVzdE9iakF0dHIKICAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgQVNTRVJUKG5ld1Rlc3RP
YmpBdHRyKTsKIAotICAgIElNUEwtPnNldFRlc3RPYmpBdHRyKGNvcmUobmV3VGVzdE9iakF0dHIp
KTsKKyAgICBpZiAoIWNvcmUobmV3VGVzdE9iakF0dHIpKQorICAgICAgICBXZWJDb3JlOjpyYWlz
ZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIElNUEwtPnNldFRlc3RPYmpBdHRyKCpjb3JlKG5l
d1Rlc3RPYmpBdHRyKSk7CiB9CiAKIC0gKERPTVRlc3RPYmogKilsZW5pZW50VGVzdE9iakF0dHIK
QEAgLTI2MCw3ICsyNjQsOSBAQCAtICh2b2lkKXNldExlbmllbnRUZXN0T2JqQXR0cjooRE9NVGVz
dE9iaiAqKW5ld0xlbmllbnRUZXN0T2JqQXR0cgogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NFUlQobmV3TGVuaWVudFRlc3RPYmpBdHRyKTsKIAotICAg
IElNUEwtPnNldExlbmllbnRUZXN0T2JqQXR0cihjb3JlKG5ld0xlbmllbnRUZXN0T2JqQXR0cikp
OworICAgIGlmICghY29yZShuZXdMZW5pZW50VGVzdE9iakF0dHIpKQorICAgICAgICBXZWJDb3Jl
OjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIElNUEwtPnNldExlbmllbnRUZXN0T2Jq
QXR0cigqY29yZShuZXdMZW5pZW50VGVzdE9iakF0dHIpKTsKIH0KIAogLSAoTlNTdHJpbmcgKil1
bmZvcmdlYWJsZUF0dHIKQEAgLTI5Miw3ICsyOTgsOSBAQCAtICh2b2lkKXNldFhNTE9iakF0dHI6
KERPTVRlc3RPYmogKiluZXdYTUxPYmpBdHRyCiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwogICAgIEFTU0VSVChuZXdYTUxPYmpBdHRyKTsKIAotICAgIElNUEwtPnNl
dFhNTE9iakF0dHIoY29yZShuZXdYTUxPYmpBdHRyKSk7CisgICAgaWYgKCFjb3JlKG5ld1hNTE9i
akF0dHIpKQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAg
IElNUEwtPnNldFhNTE9iakF0dHIoKmNvcmUobmV3WE1MT2JqQXR0cikpOwogfQogCiAtIChCT09M
KWNyZWF0ZQpAQCAtNTIyLDcgKzUzMCw5IEBAIC0gKHZvaWQpc2V0U3RyaWN0VHlwZUNoZWNraW5n
QXR0cmlidXRlOihET01UZXN0T2JqICopbmV3U3RyaWN0VHlwZUNoZWNraW5nQXR0cmliCiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIEFTU0VSVChuZXdTdHJp
Y3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUpOwogCi0gICAgSU1QTC0+c2V0U3RyaWN0VHlwZUNoZWNr
aW5nQXR0cmlidXRlKGNvcmUobmV3U3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKSk7CisgICAg
aWYgKCFjb3JlKG5ld1N0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSkpCisgICAgICAgIFdlYkNv
cmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgSU1QTC0+c2V0U3RyaWN0VHlwZUNo
ZWNraW5nQXR0cmlidXRlKCpjb3JlKG5ld1N0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSkpOwog
fQogCiAtIChpbnQpY3VzdG9tQXR0cgpAQCAtNTQ5LDcgKzU1OSw5IEBAIC0gKHZvaWQpc2V0SnNC
dWlsdGluQXR0cmlidXRlOihET01UZXN0T2JqICopbmV3SnNCdWlsdGluQXR0cmlidXRlCiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIEFTU0VSVChuZXdKc0J1
aWx0aW5BdHRyaWJ1dGUpOwogCi0gICAgSU1QTC0+c2V0SnNCdWlsdGluQXR0cmlidXRlKGNvcmUo
bmV3SnNCdWlsdGluQXR0cmlidXRlKSk7CisgICAgaWYgKCFjb3JlKG5ld0pzQnVpbHRpbkF0dHJp
YnV0ZSkpCisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAg
SU1QTC0+c2V0SnNCdWlsdGluQXR0cmlidXRlKCpjb3JlKG5ld0pzQnVpbHRpbkF0dHJpYnV0ZSkp
OwogfQogI2VuZGlmCiAKQEAgLTU5Niw3ICs2MDgsOSBAQCAtICh2b2lkKXNldFdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QXR0cmlidXRlOihET01UZXN0T2JqICopbmV3V2l0aFNjcmlwdEV4ZWN1
dAogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NFUlQo
bmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpOwogCi0gICAgSU1QTC0+c2V0
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoY29yZShuZXdXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZSkpOworICAgIGlmICghY29yZShuZXdXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZSkpCisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9y
RXhjZXB0aW9uKCk7CisgICAgSU1QTC0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGUoKmNvcmUobmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpKTsKIH0K
IAogLSAoRE9NVGVzdE9iaiAqKXdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcwpAQCAtNjEz
LDcgKzYyNyw5IEBAIC0gKHZvaWQpc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzOihE
T01UZXN0T2JqICopbmV3V2l0aFNjcmlwdFN0YXRlQXR0cmliCiAgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIEFTU0VSVChuZXdXaXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGVSYWlzZXMpOwogCi0gICAgSU1QTC0+c2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFp
c2VzKGNvcmUobmV3V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKSk7CisgICAgaWYgKCFj
b3JlKG5ld1dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcykpCisgICAgICAgIFdlYkNvcmU6
OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgSU1QTC0+c2V0V2l0aFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzKCpjb3JlKG5ld1dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcykp
OwogfQogCiAtIChET01UZXN0T2JqICopd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1
dGVSYWlzZXMKQEAgLTYzMCw3ICs2NDYsOSBAQCAtICh2b2lkKXNldFdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlUmFpc2VzOihET01UZXN0T2JqICopbmV3V2l0aFNjcmlwdAogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NFUlQobmV3V2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMpOwogCi0gICAgSU1QTC0+c2V0
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoY29yZShuZXdXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcykpOworICAgIGlmICghY29yZShuZXdX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcykpCisgICAgICAgIFdlYkNv
cmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgSU1QTC0+c2V0V2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoKmNvcmUobmV3V2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMpKTsKIH0KIAogLSAoRE9NVGVzdE9iaiAqKXdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUKQEAgLTY0NCw3ICs2NjIs
OSBAQCAtICh2b2lkKXNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGU6KERPTVRlc3RPYmogKiluZXdXaQogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NFUlQobmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSk7CiAKLSAgICBJTVBMLT5zZXRXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKGNvcmUobmV3V2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSkpOworICAgIGlmICghY29yZShuZXdX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKSkKKyAgICAg
ICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBJTVBMLT5zZXRXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKCpjb3JlKG5ld1dp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUpKTsKIH0KIAog
LSAoRE9NVGVzdE9iaiAqKXdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGVSYWlzZXMKQEAgLTY2MSw3ICs2ODEsOSBAQCAtICh2b2lkKXNldFdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXM6KERPTVRlc3RPYmog
KgogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NFUlQo
bmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNl
cyk7CiAKLSAgICBJTVBMLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzKGNvcmUobmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcykpOworICAgIGlmICghY29yZShuZXdXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKSkKKyAgICAgICAg
V2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBJTVBMLT5zZXRXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKCpjb3JlKG5l
d1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMp
KTsKIH0KIAogLSAoRE9NVGVzdE9iaiAqKXdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlCkBAIC02NzUsNyArNjk3LDkgQEAgLSAodm9pZClz
ZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJp
YnV0ZTooRE9NVGVzdE8KICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CiAgICAgQVNTRVJUKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVX
aXRoU3BhY2VzQXR0cmlidXRlKTsKIAotICAgIElNUEwtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKGNvcmUobmV3V2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpKTsKKyAg
ICBpZiAoIWNvcmUobmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdp
dGhTcGFjZXNBdHRyaWJ1dGUpKQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2Vw
dGlvbigpOworICAgIElNUEwtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKCpjb3JlKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKSk7CiB9CiAKIC0gKERPTVRlc3RP
YmogKil3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlCkBAIC02ODksNyAr
NzEzLDkgQEAgLSAodm9pZClzZXRXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmli
dXRlOihET01UZXN0T2JqICopbmV3V2l0aFNjcmlwdEEKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CiAgICAgQVNTRVJUKG5ld1dpdGhTY3JpcHRBcmd1bWVudHNBbmRD
YWxsU3RhY2tBdHRyaWJ1dGUpOwogCi0gICAgSU1QTC0+c2V0V2l0aFNjcmlwdEFyZ3VtZW50c0Fu
ZENhbGxTdGFja0F0dHJpYnV0ZShjb3JlKG5ld1dpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3Rh
Y2tBdHRyaWJ1dGUpKTsKKyAgICBpZiAoIWNvcmUobmV3V2l0aFNjcmlwdEFyZ3VtZW50c0FuZENh
bGxTdGFja0F0dHJpYnV0ZSkpCisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0
aW9uKCk7CisgICAgSU1QTC0+c2V0V2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJp
YnV0ZSgqY29yZShuZXdXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKSk7
CiB9CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKQEAgLTc0Niw3ICs3NzIsOSBAQCAtICh2b2lk
KXNldENvbmRpdGlvbmFsQXR0cjQ6KERPTVRlc3RPYmplY3RBQ29uc3RydWN0b3IgKiluZXdDb25k
aXRpb25hbEF0dHI0CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwog
ICAgIEFTU0VSVChuZXdDb25kaXRpb25hbEF0dHI0KTsKIAotICAgIElNUEwtPnNldENvbmRpdGlv
bmFsQXR0cjQoY29yZShuZXdDb25kaXRpb25hbEF0dHI0KSk7CisgICAgaWYgKCFjb3JlKG5ld0Nv
bmRpdGlvbmFsQXR0cjQpKQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlv
bigpOworICAgIElNUEwtPnNldENvbmRpdGlvbmFsQXR0cjQoKmNvcmUobmV3Q29uZGl0aW9uYWxB
dHRyNCkpOwogfQogI2VuZGlmCiAKQEAgLTc2Miw3ICs3OTAsOSBAQCAtICh2b2lkKXNldENvbmRp
dGlvbmFsQXR0cjU6KERPTVRlc3RPYmplY3RCQ29uc3RydWN0b3IgKiluZXdDb25kaXRpb25hbEF0
dHI1CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIEFTU0VS
VChuZXdDb25kaXRpb25hbEF0dHI1KTsKIAotICAgIElNUEwtPnNldENvbmRpdGlvbmFsQXR0cjUo
Y29yZShuZXdDb25kaXRpb25hbEF0dHI1KSk7CisgICAgaWYgKCFjb3JlKG5ld0NvbmRpdGlvbmFs
QXR0cjUpKQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAg
IElNUEwtPnNldENvbmRpdGlvbmFsQXR0cjUoKmNvcmUobmV3Q29uZGl0aW9uYWxBdHRyNSkpOwog
fQogI2VuZGlmCiAKQEAgLTc3OCw3ICs4MDgsOSBAQCAtICh2b2lkKXNldENvbmRpdGlvbmFsQXR0
cjY6KERPTVRlc3RPYmplY3RDQ29uc3RydWN0b3IgKiluZXdDb25kaXRpb25hbEF0dHI2CiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIEFTU0VSVChuZXdDb25k
aXRpb25hbEF0dHI2KTsKIAotICAgIElNUEwtPnNldENvbmRpdGlvbmFsQXR0cjYoY29yZShuZXdD
b25kaXRpb25hbEF0dHI2KSk7CisgICAgaWYgKCFjb3JlKG5ld0NvbmRpdGlvbmFsQXR0cjYpKQor
ICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIElNUEwtPnNl
dENvbmRpdGlvbmFsQXR0cjYoKmNvcmUobmV3Q29uZGl0aW9uYWxBdHRyNikpOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDQyMTEwZDY4Y2UyNjlmZWE5MjQ4MDkxNGVh
OWQ3MmJjZWFiNzhmYTMuLjIxNzhkYWY3ZDY2ZDcwNWM0Y2QyY2MzZjA4NzczYjJkYjMyMTRhMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzk2NCw3ICszOTY0LDcgQEAgdm9pZCBEb2N1
bWVudDo6bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50KE5vZGUqIG5vZGUsIERvY3VtZW50
KiBuZXdEb2N1bWVudCkKICAgICBWZWN0b3I8Tm9kZUl0ZXJhdG9yKj4gbm9kZUl0ZXJhdG9yczsK
ICAgICBjb3B5VG9WZWN0b3IobV9ub2RlSXRlcmF0b3JzLCBub2RlSXRlcmF0b3JzKTsKICAgICBm
b3IgKGF1dG8qIGl0IDogbm9kZUl0ZXJhdG9ycykgewotICAgICAgICBpZiAoaXQtPnJvb3QoKSA9
PSBub2RlKSB7CisgICAgICAgIGlmICgmaXQtPnJvb3QoKSA9PSBub2RlKSB7CiAgICAgICAgICAg
ICBkZXRhY2hOb2RlSXRlcmF0b3IoaXQpOwogICAgICAgICAgICAgbmV3RG9jdW1lbnQtPmF0dGFj
aE5vZGVJdGVyYXRvcihpdCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5j
cHAKaW5kZXggNzQyOTBhOTUxNDYzODQ3MDdmYWE1NGQ1MWQwNDk1Mjk0YjU2ZjA0Zi4uYjU5ZTBm
OWE1Mzg3NDI3ZTY1YzliMTNkMTI1NGY5ZWE1M2YwYjRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJ
dGVyYXRvci5jcHAKQEAgLTMzLDEzICszMyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Tm9kZUl0ZXJhdG9yOjpOb2RlUG9pbnRlcjo6Tm9kZVBvaW50ZXIoKQotewotfQotCi1Ob2RlSXRl
cmF0b3I6Ok5vZGVQb2ludGVyOjpOb2RlUG9pbnRlcihOb2RlKiBuLCBib29sIGIpCi0gICAgOiBu
b2RlKG4pCi0gICAgLCBpc1BvaW50ZXJCZWZvcmVOb2RlKGIpCitOb2RlSXRlcmF0b3I6Ok5vZGVQ
b2ludGVyOjpOb2RlUG9pbnRlcihOb2RlJiBub2RlLCBib29sIGlzUG9pbnRlckJlZm9yZU5vZGUp
CisgICAgOiBub2RlKCZub2RlKQorICAgICwgaXNQb2ludGVyQmVmb3JlTm9kZShpc1BvaW50ZXJC
ZWZvcmVOb2RlKQogewogfQogCkBAIC00OCw3ICs0NCw3IEBAIHZvaWQgTm9kZUl0ZXJhdG9yOjpO
b2RlUG9pbnRlcjo6Y2xlYXIoKQogICAgIG5vZGUgPSBudWxscHRyOwogfQogCi1ib29sIE5vZGVJ
dGVyYXRvcjo6Tm9kZVBvaW50ZXI6Om1vdmVUb05leHQoTm9kZSogcm9vdCkKK2Jvb2wgTm9kZUl0
ZXJhdG9yOjpOb2RlUG9pbnRlcjo6bW92ZVRvTmV4dChOb2RlJiByb290KQogewogICAgIGlmICgh
bm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTYsMTEgKzUyLDExIEBAIGJvb2wgTm9k
ZUl0ZXJhdG9yOjpOb2RlUG9pbnRlcjo6bW92ZVRvTmV4dChOb2RlKiByb290KQogICAgICAgICBp
c1BvaW50ZXJCZWZvcmVOb2RlID0gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
LSAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSwgcm9vdCk7CisgICAgbm9kZSA9
IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUsICZyb290KTsKICAgICByZXR1cm4gbm9kZTsKIH0K
IAotYm9vbCBOb2RlSXRlcmF0b3I6Ok5vZGVQb2ludGVyOjptb3ZlVG9QcmV2aW91cyhOb2RlKiBy
b290KQorYm9vbCBOb2RlSXRlcmF0b3I6Ok5vZGVQb2ludGVyOjptb3ZlVG9QcmV2aW91cyhOb2Rl
JiByb290KQogewogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjgs
NyArNjQsNyBAQCBib29sIE5vZGVJdGVyYXRvcjo6Tm9kZVBvaW50ZXI6Om1vdmVUb1ByZXZpb3Vz
KE5vZGUqIHJvb3QpCiAgICAgICAgIGlzUG9pbnRlckJlZm9yZU5vZGUgPSB0cnVlOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKG5vZGUgPT0gcm9vdCkgeworICAgIGlmIChu
b2RlID09ICZyb290KSB7CiAgICAgICAgIG5vZGUgPSBudWxscHRyOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQpAQCAtODAsMTIgKzc2LDEyIEBAIE5vZGVJdGVyYXRvcjo6Tm9kZUl0ZXJh
dG9yKE5vZGUmIHJvb3ROb2RlLCB1bnNpZ25lZCBsb25nIHdoYXRUb1Nob3csIFJlZlB0cjxOb2Rl
CiAgICAgOiBOb2RlSXRlcmF0b3JCYXNlKHJvb3ROb2RlLCB3aGF0VG9TaG93LCBXVEZNb3ZlKGZp
bHRlcikpCiAgICAgLCBtX3JlZmVyZW5jZU5vZGUocm9vdCgpLCB0cnVlKQogewotICAgIHJvb3Qo
KS0+ZG9jdW1lbnQoKS5hdHRhY2hOb2RlSXRlcmF0b3IodGhpcyk7CisgICAgcm9vdCgpLmRvY3Vt
ZW50KCkuYXR0YWNoTm9kZUl0ZXJhdG9yKHRoaXMpOwogfQogCiBOb2RlSXRlcmF0b3I6On5Ob2Rl
SXRlcmF0b3IoKQogewotICAgIHJvb3QoKS0+ZG9jdW1lbnQoKS5kZXRhY2hOb2RlSXRlcmF0b3Io
dGhpcyk7CisgICAgcm9vdCgpLmRvY3VtZW50KCkuZGV0YWNoTm9kZUl0ZXJhdG9yKHRoaXMpOwog
fQogCiBSZWZQdHI8Tm9kZT4gTm9kZUl0ZXJhdG9yOjpuZXh0Tm9kZSgpCkBAIC0xNDUsMTEgKzE0
MSwxMSBAQCB2b2lkIE5vZGVJdGVyYXRvcjo6bm9kZVdpbGxCZVJlbW92ZWQoTm9kZSYgcmVtb3Zl
ZE5vZGUpCiAKIHZvaWQgTm9kZUl0ZXJhdG9yOjp1cGRhdGVGb3JOb2RlUmVtb3ZhbChOb2RlJiBy
ZW1vdmVkTm9kZSwgTm9kZVBvaW50ZXImIHJlZmVyZW5jZU5vZGUpIGNvbnN0CiB7Ci0gICAgQVNT
RVJUKCZyb290KCktPmRvY3VtZW50KCkgPT0gJnJlbW92ZWROb2RlLmRvY3VtZW50KCkpOworICAg
IEFTU0VSVCgmcm9vdCgpLmRvY3VtZW50KCkgPT0gJnJlbW92ZWROb2RlLmRvY3VtZW50KCkpOwog
CiAgICAgLy8gSXRlcmF0b3IgaXMgbm90IGFmZmVjdGVkIGlmIHRoZSByZW1vdmVkIG5vZGUgaXMg
dGhlIHJlZmVyZW5jZSBub2RlIGFuZCBpcyB0aGUgcm9vdC4KICAgICAvLyBvciBpZiByZW1vdmVk
IG5vZGUgaXMgbm90IHRoZSByZWZlcmVuY2Ugbm9kZSwgb3IgdGhlIGFuY2VzdG9yIG9mIHRoZSBy
ZWZlcmVuY2Ugbm9kZS4KLSAgICBpZiAoIXJlbW92ZWROb2RlLmlzRGVzY2VuZGFudE9mKHJvb3Qo
KSkpCisgICAgaWYgKCFyZW1vdmVkTm9kZS5pc0Rlc2NlbmRhbnRPZigmcm9vdCgpKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIGJvb2wgd2lsbFJlbW92ZVJlZmVyZW5jZU5vZGUgPSAmcmVtb3ZlZE5v
ZGUgPT0gcmVmZXJlbmNlTm9kZS5ub2RlOwogICAgIGJvb2wgd2lsbFJlbW92ZVJlZmVyZW5jZU5v
ZGVBbmNlc3RvciA9IHJlZmVyZW5jZU5vZGUubm9kZSAmJiByZWZlcmVuY2VOb2RlLm5vZGUtPmlz
RGVzY2VuZGFudE9mKCZyZW1vdmVkTm9kZSk7CkBAIC0xNTcsMTIgKzE1MywxMiBAQCB2b2lkIE5v
ZGVJdGVyYXRvcjo6dXBkYXRlRm9yTm9kZVJlbW92YWwoTm9kZSYgcmVtb3ZlZE5vZGUsIE5vZGVQ
b2ludGVyJiByZWZlcmVuYwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocmVmZXJlbmNlTm9k
ZS5pc1BvaW50ZXJCZWZvcmVOb2RlKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVy
c2FsOjpuZXh0KHJlbW92ZWROb2RlLCByb290KCkpOworICAgICAgICBOb2RlKiBub2RlID0gTm9k
ZVRyYXZlcnNhbDo6bmV4dChyZW1vdmVkTm9kZSwgJnJvb3QoKSk7CiAgICAgICAgIGlmIChub2Rl
KSB7CiAgICAgICAgICAgICAvLyBNb3ZlIG91dCBmcm9tIHVuZGVyIHRoZSBub2RlIGJlaW5nIHJl
bW92ZWQgaWYgdGhlIG5ldyByZWZlcmVuY2UKICAgICAgICAgICAgIC8vIG5vZGUgaXMgYSBkZXNj
ZW5kYW50IG9mIHRoZSBub2RlIGJlaW5nIHJlbW92ZWQuCiAgICAgICAgICAgICB3aGlsZSAobm9k
ZSAmJiBub2RlLT5pc0Rlc2NlbmRhbnRPZigmcmVtb3ZlZE5vZGUpKQotICAgICAgICAgICAgICAg
IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlLCByb290KCkpOworICAgICAgICAgICAg
ICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlLCAmcm9vdCgpKTsKICAgICAgICAg
ICAgIGlmIChub2RlKQogICAgICAgICAgICAgICAgIHJlZmVyZW5jZU5vZGUubm9kZSA9IG5vZGU7
CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xOTYsNyArMTkyLDcgQEAgdm9pZCBOb2RlSXRlcmF0b3I6
OnVwZGF0ZUZvck5vZGVSZW1vdmFsKE5vZGUmIHJlbW92ZWROb2RlLCBOb2RlUG9pbnRlciYgcmVm
ZXJlbmMKICAgICAgICAgICAgICAgICByZWZlcmVuY2VOb2RlLm5vZGUgPSBub2RlOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgYnJhbmNoIGRvZXNuJ3QgYXBw
ZWFyIHRvIGhhdmUgYW55IExheW91dFRlc3RzLgotICAgICAgICAgICAgbm9kZSA9IE5vZGVUcmF2
ZXJzYWw6Om5leHQocmVtb3ZlZE5vZGUsIHJvb3QoKSk7CisgICAgICAgICAgICBub2RlID0gTm9k
ZVRyYXZlcnNhbDo6bmV4dChyZW1vdmVkTm9kZSwgJnJvb3QoKSk7CiAgICAgICAgICAgICAvLyBN
b3ZlIG91dCBmcm9tIHVuZGVyIHRoZSBub2RlIGJlaW5nIHJlbW92ZWQgaWYgdGhlIHJlZmVyZW5j
ZSBub2RlIGlzCiAgICAgICAgICAgICAvLyBhIGRlc2NlbmRhbnQgb2YgdGhlIG5vZGUgYmVpbmcg
cmVtb3ZlZC4KICAgICAgICAgICAgIGlmICh3aWxsUmVtb3ZlUmVmZXJlbmNlTm9kZUFuY2VzdG9y
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmgKaW5kZXggZjZiYmEzMjM1MzgwYTM4NGFkMTEy
ZTM2OTdiNWZkZGY5M2EzNWQ5Mi4uY2E4ZThkNGM0MGFhZTRhZDUwYjQ3YzkxOGE5NzY2ODk4NmVk
MzU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3IuaApAQCAtNTcsMTIgKzU3LDE0IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBzdHJ1Y3QgTm9kZVBvaW50ZXIgewogICAgICAg
ICAgICAgUmVmUHRyPE5vZGU+IG5vZGU7Ci0gICAgICAgICAgICBib29sIGlzUG9pbnRlckJlZm9y
ZU5vZGU7Ci0gICAgICAgICAgICBOb2RlUG9pbnRlcigpOwotICAgICAgICAgICAgTm9kZVBvaW50
ZXIoTm9kZSosIGJvb2wpOworICAgICAgICAgICAgYm9vbCBpc1BvaW50ZXJCZWZvcmVOb2RlIHsg
dHJ1ZSB9OworCisgICAgICAgICAgICBOb2RlUG9pbnRlcigpID0gZGVmYXVsdDsKKyAgICAgICAg
ICAgIE5vZGVQb2ludGVyKE5vZGUmLCBib29sKTsKKwogICAgICAgICAgICAgdm9pZCBjbGVhcigp
OwotICAgICAgICAgICAgYm9vbCBtb3ZlVG9OZXh0KE5vZGUqIHJvb3QpOwotICAgICAgICAgICAg
Ym9vbCBtb3ZlVG9QcmV2aW91cyhOb2RlKiByb290KTsKKyAgICAgICAgICAgIGJvb2wgbW92ZVRv
TmV4dChOb2RlJiByb290KTsKKyAgICAgICAgICAgIGJvb2wgbW92ZVRvUHJldmlvdXMoTm9kZSYg
cm9vdCk7CiAgICAgICAgIH07CiAKICAgICAgICAgdm9pZCB1cGRhdGVGb3JOb2RlUmVtb3ZhbChO
b2RlJiBub2RlVG9CZVJlbW92ZWQsIE5vZGVQb2ludGVyJikgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmF2
ZXJzYWwuY3BwCmluZGV4IDBmZGY4NTg2ZjZjY2I3YjU2ZWRkODc5NmQxNmQyM2JjNmRjZmU5MmIu
LjNjODJhNzY2ZWEwNTU3ZjVlODVkYWZlYWIzNjYxZGMwOGI4NTYyNWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmF2ZXJzYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmF2ZXJzYWwuY3BwCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE5v
ZGVJdGVyYXRvckJhc2U6Ok5vZGVJdGVyYXRvckJhc2UoTm9kZSYgcm9vdE5vZGUsIHVuc2lnbmVk
IHdoYXRUb1Nob3csIFJlZlB0cjxOb2RlRmlsdGVyPiYmIG5vZGVGaWx0ZXIpCi0gICAgOiBtX3Jv
b3QoJnJvb3ROb2RlKQorICAgIDogbV9yb290KHJvb3ROb2RlKQogICAgICwgbV93aGF0VG9TaG93
KHdoYXRUb1Nob3cpCiAgICAgLCBtX2ZpbHRlcihXVEZNb3ZlKG5vZGVGaWx0ZXIpKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RyYXZlcnNhbC5oCmluZGV4IGI4YjllYzRhNmMxYjM0NmJlMzY2ZDlmM2I1NTk4YmRmYjQ2
ZjlhMDQuLmExZTBmZmM1MWI3OGQ1ZDBmZWFmMWUzZDZlN2FkN2Y1M2Y4NDc4ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmF2ZXJzYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJhdmVyc2FsLmgKQEAgLTMzLDcgKzMzLDkgQEAgY2xhc3MgTm9kZUZpbHRlcjsKIAogY2xh
c3MgTm9kZUl0ZXJhdG9yQmFzZSB7CiBwdWJsaWM6Ci0gICAgTm9kZSogcm9vdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcm9vdC5nZXQoKTsgfQorICAgIE5vZGUmIHJvb3QoKSB7IHJldHVybiBtX3Jvb3Qu
Z2V0KCk7IH0KKyAgICBjb25zdCBOb2RlJiByb290KCkgY29uc3QgeyByZXR1cm4gbV9yb290Lmdl
dCgpOyB9CisKICAgICB1bnNpZ25lZCB3aGF0VG9TaG93KCkgY29uc3QgeyByZXR1cm4gbV93aGF0
VG9TaG93OyB9CiAgICAgTm9kZUZpbHRlciogZmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV9maWx0
ZXIuZ2V0KCk7IH0KICAgICBib29sIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQpAQCAtNDMsNyArNDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc2hvcnQgYWNj
ZXB0Tm9kZShOb2RlKikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPE5vZGU+IG1fcm9v
dDsKKyAgICBSZWY8Tm9kZT4gbV9yb290OwogICAgIHVuc2lnbmVkIG1fd2hhdFRvU2hvdzsKICAg
ICBSZWZQdHI8Tm9kZUZpbHRlcj4gbV9maWx0ZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVXYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIu
Y3BwCmluZGV4IGFiODZkNTkzYjI5MGE5ZTA3YTkzMzNlN2MyN2NhN2ZmMjdmZWZkNTQuLmEwYzA5
ZjllZWUxNTc0ZDdiZWIwMmJlMjY3NDM2Nzc2NzhjNTkyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdh
bGtlci5jcHAKQEAgLTM5LDMxICszOSwyNyBAQCBUcmVlV2Fsa2VyOjpUcmVlV2Fsa2VyKE5vZGUm
IHJvb3ROb2RlLCB1bnNpZ25lZCBsb25nIHdoYXRUb1Nob3csIFJlZlB0cjxOb2RlRmlsdAogewog
fQogCi12b2lkIFRyZWVXYWxrZXI6OnNldEN1cnJlbnROb2RlKE5vZGUqIG5vZGUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQordm9pZCBUcmVlV2Fsa2VyOjpzZXRDdXJyZW50Tm9kZShOb2RlJiBub2RlKQog
ewotICAgIGlmICghbm9kZSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQogICAgIG1fY3VycmVudCA9IG5vZGU7CiB9CiAKLWlubGluZSBO
b2RlKiBUcmVlV2Fsa2VyOjpzZXRDdXJyZW50KFJlZlB0cjxOb2RlPiYmIG5vZGUpCitpbmxpbmUg
Tm9kZSogVHJlZVdhbGtlcjo6c2V0Q3VycmVudChSZWY8Tm9kZT4mJiBub2RlKQogewotICAgIG1f
Y3VycmVudCA9IG5vZGU7Ci0gICAgcmV0dXJuIG1fY3VycmVudC5nZXQoKTsKKyAgICBtX2N1cnJl
bnQgPSBXVEZNb3ZlKG5vZGUpOworICAgIHJldHVybiBtX2N1cnJlbnQucHRyKCk7CiB9CiAKIE5v
ZGUqIFRyZWVXYWxrZXI6OnBhcmVudE5vZGUoKQogewotICAgIFJlZlB0cjxOb2RlPiBub2RlID0g
bV9jdXJyZW50OwotICAgIHdoaWxlIChub2RlICE9IHJvb3QoKSkgeworICAgIFJlZlB0cjxOb2Rl
PiBub2RlID0gbV9jdXJyZW50LnB0cigpOworICAgIHdoaWxlIChub2RlICE9ICZyb290KCkpIHsK
ICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKICAgICAgICAgaWYgKCFub2RlKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHNob3J0IGFjY2VwdE5vZGVSZXN1
bHQgPSBhY2NlcHROb2RlKG5vZGUuZ2V0KCkpOwogICAgICAgICBpZiAoYWNjZXB0Tm9kZVJlc3Vs
dCA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKQotICAgICAgICAgICAgcmV0dXJuIHNldEN1
cnJlbnQoV1RGTW92ZShub2RlKSk7CisgICAgICAgICAgICByZXR1cm4gc2V0Q3VycmVudChub2Rl
LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTc0
LDggKzcwLDggQEAgTm9kZSogVHJlZVdhbGtlcjo6Zmlyc3RDaGlsZCgpCiAgICAgICAgIHNob3J0
IGFjY2VwdE5vZGVSZXN1bHQgPSBhY2NlcHROb2RlKG5vZGUuZ2V0KCkpOwogICAgICAgICBzd2l0
Y2ggKGFjY2VwdE5vZGVSZXN1bHQpIHsKICAgICAgICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6RklM
VEVSX0FDQ0VQVDoKLSAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBub2RlLnJlbGVhc2UoKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gbV9jdXJyZW50LmdldCgpOworICAgICAgICAgICAgICAg
IG1fY3VycmVudCA9IG5vZGUucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gbV9jdXJyZW50LnB0cigpOwogICAgICAgICAgICAgY2FzZSBOb2RlRmlsdGVyOjpGSUxURVJf
U0tJUDoKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Zmlyc3RDaGlsZCgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIG5vZGUgPSBub2RlLT5maXJzdENoaWxkKCk7CkBAIC05MSw3ICs4Nyw3IEBA
IE5vZGUqIFRyZWVXYWxrZXI6OmZpcnN0Q2hpbGQoKQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbm9kZS0+
cGFyZW50Tm9kZSgpOwotICAgICAgICAgICAgaWYgKCFwYXJlbnQgfHwgcGFyZW50ID09IHJvb3Qo
KSB8fCBwYXJlbnQgPT0gbV9jdXJyZW50KQorICAgICAgICAgICAgaWYgKCFwYXJlbnQgfHwgcGFy
ZW50ID09ICZyb290KCkgfHwgcGFyZW50ID09IG1fY3VycmVudC5wdHIoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIG5vZGUgPSBwYXJlbnQ7CiAgICAgICAg
IH0gd2hpbGUgKG5vZGUpOwpAQCAtMTA1LDggKzEwMSw4IEBAIE5vZGUqIFRyZWVXYWxrZXI6Omxh
c3RDaGlsZCgpCiAgICAgICAgIHNob3J0IGFjY2VwdE5vZGVSZXN1bHQgPSBhY2NlcHROb2RlKG5v
ZGUuZ2V0KCkpOwogICAgICAgICBzd2l0Y2ggKGFjY2VwdE5vZGVSZXN1bHQpIHsKICAgICAgICAg
ICAgIGNhc2UgTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVDoKLSAgICAgICAgICAgICAgICBtX2N1
cnJlbnQgPSBub2RlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9jdXJyZW50
LmdldCgpOworICAgICAgICAgICAgICAgIG1fY3VycmVudCA9IG5vZGUucmVsZWFzZU5vbk51bGwo
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9jdXJyZW50LnB0cigpOwogICAgICAgICAgICAg
Y2FzZSBOb2RlRmlsdGVyOjpGSUxURVJfU0tJUDoKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+
bGFzdENoaWxkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmxhc3RDaGls
ZCgpOwpAQCAtMTIyLDcgKzExOCw3IEBAIE5vZGUqIFRyZWVXYWxrZXI6Omxhc3RDaGlsZCgpCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBDb250YWlu
ZXJOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7Ci0gICAgICAgICAgICBpZiAoIXBh
cmVudCB8fCBwYXJlbnQgPT0gcm9vdCgpIHx8IHBhcmVudCA9PSBtX2N1cnJlbnQpCisgICAgICAg
ICAgICBpZiAoIXBhcmVudCB8fCBwYXJlbnQgPT0gJnJvb3QoKSB8fCBwYXJlbnQgPT0gbV9jdXJy
ZW50LnB0cigpKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAg
bm9kZSA9IHBhcmVudDsKICAgICAgICAgfSB3aGlsZSAobm9kZSk7CkBAIC0xMzIsOCArMTI4LDgg
QEAgTm9kZSogVHJlZVdhbGtlcjo6bGFzdENoaWxkKCkKIAogdGVtcGxhdGU8VHJlZVdhbGtlcjo6
U2libGluZ1RyYXZlcnNhbFR5cGUgdHlwZT4gTm9kZSogVHJlZVdhbGtlcjo6dHJhdmVyc2VTaWJs
aW5ncygpCiB7Ci0gICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBtX2N1cnJlbnQ7Ci0gICAgaWYgKG5v
ZGUgPT0gcm9vdCgpKQorICAgIFJlZlB0cjxOb2RlPiBub2RlID0gbV9jdXJyZW50LnB0cigpOwor
ICAgIGlmIChub2RlID09ICZyb290KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
YXV0byBpc05leHQgPSB0eXBlID09IFNpYmxpbmdUcmF2ZXJzYWxUeXBlOjpOZXh0OwpAQCAtMTQx
LDggKzEzNyw4IEBAIHRlbXBsYXRlPFRyZWVXYWxrZXI6OlNpYmxpbmdUcmF2ZXJzYWxUeXBlIHR5
cGU+IE5vZGUqIFRyZWVXYWxrZXI6OnRyYXZlcnNlU2libGluCiAgICAgICAgIGZvciAoUmVmUHRy
PE5vZGU+IHNpYmxpbmcgPSBpc05leHQgPyBub2RlLT5uZXh0U2libGluZygpIDogbm9kZS0+cHJl
dmlvdXNTaWJsaW5nKCk7IHNpYmxpbmc7ICkgewogICAgICAgICAgICAgc2hvcnQgYWNjZXB0Tm9k
ZVJlc3VsdCA9IGFjY2VwdE5vZGUoc2libGluZy5nZXQoKSk7CiAgICAgICAgICAgICBpZiAoYWNj
ZXB0Tm9kZVJlc3VsdCA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKSB7Ci0gICAgICAgICAg
ICAgICAgbV9jdXJyZW50ID0gV1RGTW92ZShzaWJsaW5nKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gbV9jdXJyZW50LmdldCgpOworICAgICAgICAgICAgICAgIG1fY3VycmVudCA9IHNpYmxpbmcu
cmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9jdXJyZW50LnB0cigp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbm9kZSA9IHNpYmxpbmc7CiAgICAgICAgICAg
ICBzaWJsaW5nID0gaXNOZXh0ID8gc2libGluZy0+Zmlyc3RDaGlsZCgpIDogc2libGluZy0+bGFz
dENoaWxkKCk7CkBAIC0xNTAsNyArMTQ2LDcgQEAgdGVtcGxhdGU8VHJlZVdhbGtlcjo6U2libGlu
Z1RyYXZlcnNhbFR5cGUgdHlwZT4gTm9kZSogVHJlZVdhbGtlcjo6dHJhdmVyc2VTaWJsaW4KICAg
ICAgICAgICAgICAgICBzaWJsaW5nID0gaXNOZXh0ID8gbm9kZS0+bmV4dFNpYmxpbmcoKSA6IG5v
ZGUtPnByZXZpb3VzU2libGluZygpOwogICAgICAgICB9CiAgICAgICAgIG5vZGUgPSBub2RlLT5w
YXJlbnROb2RlKCk7Ci0gICAgICAgIGlmICghbm9kZSB8fCBub2RlID09IHJvb3QoKSkKKyAgICAg
ICAgaWYgKCFub2RlIHx8IG5vZGUgPT0gJnJvb3QoKSkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICBzaG9ydCBhY2NlcHROb2RlUmVzdWx0ID0gYWNjZXB0Tm9kZShub2RlLmdl
dCgpKTsKICAgICAgICAgaWYgKGFjY2VwdE5vZGVSZXN1bHQgPT0gTm9kZUZpbHRlcjo6RklMVEVS
X0FDQ0VQVCkKQEAgLTE3MCw4ICsxNjYsOCBAQCBOb2RlKiBUcmVlV2Fsa2VyOjpuZXh0U2libGlu
ZygpCiAKIE5vZGUqIFRyZWVXYWxrZXI6OnByZXZpb3VzTm9kZSgpCiB7Ci0gICAgUmVmUHRyPE5v
ZGU+IG5vZGUgPSBtX2N1cnJlbnQ7Ci0gICAgd2hpbGUgKG5vZGUgIT0gcm9vdCgpKSB7CisgICAg
UmVmUHRyPE5vZGU+IG5vZGUgPSBtX2N1cnJlbnQucHRyKCk7CisgICAgd2hpbGUgKG5vZGUgIT0g
JnJvb3QoKSkgewogICAgICAgICB3aGlsZSAoTm9kZSogcHJldmlvdXNTaWJsaW5nID0gbm9kZS0+
cHJldmlvdXNTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIG5vZGUgPSBwcmV2aW91c1NpYmxpbmc7
CiAgICAgICAgICAgICBzaG9ydCBhY2NlcHROb2RlUmVzdWx0ID0gYWNjZXB0Tm9kZShub2RlLmdl
dCgpKTsKQEAgLTE4NCwxMSArMTgwLDExIEBAIE5vZGUqIFRyZWVXYWxrZXI6OnByZXZpb3VzTm9k
ZSgpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKGFjY2VwdE5vZGVSZXN1bHQgPT0gTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVCkgewot
ICAgICAgICAgICAgICAgIG1fY3VycmVudCA9IG5vZGUucmVsZWFzZSgpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBtX2N1cnJlbnQuZ2V0KCk7CisgICAgICAgICAgICAgICAgbV9jdXJyZW50ID0g
bm9kZS5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgICAgIHJldHVybiBtX2N1cnJlbnQu
cHRyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUgPT0gcm9v
dCgpKQorICAgICAgICBpZiAobm9kZSA9PSAmcm9vdCgpKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE5vZGUo
KTsKICAgICAgICAgaWYgKCFwYXJlbnQpCkBAIC0xOTYsMjggKzE5MiwyOCBAQCBOb2RlKiBUcmVl
V2Fsa2VyOjpwcmV2aW91c05vZGUoKQogICAgICAgICBub2RlID0gcGFyZW50OwogICAgICAgICBz
aG9ydCBhY2NlcHROb2RlUmVzdWx0ID0gYWNjZXB0Tm9kZShub2RlLmdldCgpKTsKICAgICAgICAg
aWYgKGFjY2VwdE5vZGVSZXN1bHQgPT0gTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVCkKLSAgICAg
ICAgICAgIHJldHVybiBzZXRDdXJyZW50KFdURk1vdmUobm9kZSkpOworICAgICAgICAgICAgcmV0
dXJuIHNldEN1cnJlbnQobm9kZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKIE5vZGUqIFRyZWVXYWxrZXI6Om5leHROb2RlKCkKIHsKLSAgICBSZWZQ
dHI8Tm9kZT4gbm9kZSA9IG1fY3VycmVudDsKKyAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IG1fY3Vy
cmVudC5wdHIoKTsKIENoaWxkcmVuOgogICAgIHdoaWxlIChOb2RlKiBmaXJzdENoaWxkID0gbm9k
ZS0+Zmlyc3RDaGlsZCgpKSB7CiAgICAgICAgIG5vZGUgPSBmaXJzdENoaWxkOwogICAgICAgICBz
aG9ydCBhY2NlcHROb2RlUmVzdWx0ID0gYWNjZXB0Tm9kZShub2RlLmdldCgpKTsKICAgICAgICAg
aWYgKGFjY2VwdE5vZGVSZXN1bHQgPT0gTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVCkKLSAgICAg
ICAgICAgIHJldHVybiBzZXRDdXJyZW50KFdURk1vdmUobm9kZSkpOworICAgICAgICAgICAgcmV0
dXJuIHNldEN1cnJlbnQobm9kZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgaWYgKGFjY2Vw
dE5vZGVSZXN1bHQgPT0gTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVDVCkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICB3aGlsZSAoTm9kZSogbmV4dFNpYmxpbmcgPSBOb2RlVHJhdmVyc2Fs
OjpuZXh0U2tpcHBpbmdDaGlsZHJlbigqbm9kZSwgcm9vdCgpKSkgeworICAgIHdoaWxlIChOb2Rl
KiBuZXh0U2libGluZyA9IE5vZGVUcmF2ZXJzYWw6Om5leHRTa2lwcGluZ0NoaWxkcmVuKCpub2Rl
LCAmcm9vdCgpKSkgewogICAgICAgICBub2RlID0gbmV4dFNpYmxpbmc7CiAgICAgICAgIHNob3J0
IGFjY2VwdE5vZGVSZXN1bHQgPSBhY2NlcHROb2RlKG5vZGUuZ2V0KCkpOwogICAgICAgICBpZiAo
YWNjZXB0Tm9kZVJlc3VsdCA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKQotICAgICAgICAg
ICAgcmV0dXJuIHNldEN1cnJlbnQoV1RGTW92ZShub2RlKSk7CisgICAgICAgICAgICByZXR1cm4g
c2V0Q3VycmVudChub2RlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICBpZiAoYWNjZXB0Tm9k
ZVJlc3VsdCA9PSBOb2RlRmlsdGVyOjpGSUxURVJfU0tJUCkKICAgICAgICAgICAgIGdvdG8gQ2hp
bGRyZW47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmgKaW5kZXggMWI1YmUxYzE0MjM0MzNm
NmViYzZkOTE4MmIzZDYzMWVlZDIzNmNlOC4uNDU0MDA3NDhhNTE4MzkwNWE2NThjODc0YTE2ZWUw
MGU2MjllNGVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5oCkBAIC00MSw4ICs0MSwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmVl
V2Fsa2VyKHJvb3ROb2RlLCB3aGF0VG9TaG93LCBXVEZNb3ZlKGZpbHRlcikpKTsKICAgICAgICAg
fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIAotICAgICAgICBOb2RlKiBjdXJyZW50Tm9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudC5nZXQoKTsgfQotICAgICAgICB2b2lkIHNldEN1
cnJlbnROb2RlKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIE5vZGUmIGN1cnJlbnRO
b2RlKCkgeyByZXR1cm4gbV9jdXJyZW50LmdldCgpOyB9CisgICAgICAgIGNvbnN0IE5vZGUmIGN1
cnJlbnROb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50LmdldCgpOyB9CisKKyAgICAgICAg
dm9pZCBzZXRDdXJyZW50Tm9kZShOb2RlJik7CiAKICAgICAgICAgTm9kZSogcGFyZW50Tm9kZSgp
OwogICAgICAgICBOb2RlKiBmaXJzdENoaWxkKCk7CkBAIC01Nyw5ICs1OSw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgZW51bSBjbGFzcyBTaWJsaW5nVHJhdmVyc2FsVHlwZSB7IFBy
ZXZpb3VzLCBOZXh0IH07CiAgICAgICAgIHRlbXBsYXRlPFNpYmxpbmdUcmF2ZXJzYWxUeXBlPiBO
b2RlKiB0cmF2ZXJzZVNpYmxpbmdzKCk7CiAgICAgICAgIAotICAgICAgICBOb2RlKiBzZXRDdXJy
ZW50KFJlZlB0cjxOb2RlPiYmKTsKKyAgICAgICAgTm9kZSogc2V0Q3VycmVudChSZWY8Tm9kZT4m
Jik7CiAKLSAgICAgICAgUmVmUHRyPE5vZGU+IG1fY3VycmVudDsKKyAgICAgICAgUmVmPE5vZGU+
IG1fY3VycmVudDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVdhbGtlci5pZGwKaW5kZXggYWQ1Y2I1ZDY0MDMxMGY4YzAzODk2MWY1MTMyZDViZGRkMjM2
NmM3ZS4uYmU5Mjc3NmEzZDVkOGEyMTQ0MGRiZDNjNzBjYjE1MTU1MTYxZTE3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlV2Fsa2VyLmlkbApAQCAtMjksNyArMjksNyBAQAogI2lmIGRlZmluZWQoTEFOR1VB
R0VfT0JKRUNUSVZFX0MpICYmIExBTkdVQUdFX09CSkVDVElWRV9DCiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGJvb2xlYW4gZXhwYW5kRW50aXR5UmVmZXJlbmNlczsKICNlbmRpZgotICAgIFtTZXR0
ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBOb2RlIGN1cnJlbnROb2RlOworICAgIGF0dHJp
YnV0ZSBOb2RlIGN1cnJlbnROb2RlOwogCiAgICAgTm9kZSBwYXJlbnROb2RlKCk7CiAgICAgTm9k
ZSBmaXJzdENoaWxkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxl
bWVudC5pZGwKaW5kZXggODViZDQ3OGM5YTkyNDYxYTNhNmJlNDNlOTZlZDQwZjA1ZWMxNWUyNS4u
ZDY5YTE1NzgwYTM0YzNjNGUxODc2YTdkZWQwNjc3ZTNjMmQwYzhjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmlkbApAQCAtMjYsNSArMjYsNSBAQAog
WwogICAgIENvbmRpdGlvbmFsPUFUVEFDSE1FTlRfRUxFTUVOVAogXSBpbnRlcmZhY2UgSFRNTEF0
dGFjaG1lbnRFbGVtZW50IDogSFRNTEVsZW1lbnQgewotICAgIGF0dHJpYnV0ZSBGaWxlIGZpbGU7
CisgICAgYXR0cmlidXRlIEZpbGU/IGZpbGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5pZGwKaW5kZXggZTNkMGY5ZmMyNjA2NDkxYTdkMGZmMzk2ZWE2ODZlZmRhNjU0
Mzc3My4uNjIyNzRlYTdlODdlODU3NmM2MDJmY2U1ZWVmZjNkOWZkZGU2Y2RmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCkBAIC0zMiw3ICszMiw3IEBACiAgICAg
W1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgZGlyTmFtZTsKICAgICBbUmVmbGVjdF0gYXR0
cmlidXRlIGJvb2xlYW4gZGlzYWJsZWQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxGb3Jt
RWxlbWVudCBmb3JtOwotICAgIGF0dHJpYnV0ZSBGaWxlTGlzdCBmaWxlczsKKyAgICBhdHRyaWJ1
dGUgRmlsZUxpc3Q/IGZpbGVzOwogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgZm9ybUFjdGlvbjsK
IAogICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgbm90IHVzZSBbVHJlYXROdWxsQXM9TGVnYWN5
TnVsbFN0cmluZ10uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVs
ZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmlkbAppbmRl
eCBiYjM3YmNkYzkzZDdmNGYyYzFmZGM5MGYyZjAwMTY0YmRkYzUwNzUxLi5hOGU3OTJlN2EzNDg4
MDZjMWE3YjUwYWUxN2I2MDc3ZGNiMGYyMzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlRWxlbWVudC5pZGwKQEAgLTE5LDkgKzE5LDkgQEAKICAqLwogCiBpbnRlcmZhY2UgSFRNTFRh
YmxlRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKLSAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBT
dHJpY3RUeXBlQ2hlY2tpbmddIGF0dHJpYnV0ZSBIVE1MVGFibGVDYXB0aW9uRWxlbWVudCBjYXB0
aW9uOwotICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb24sIFN0cmljdFR5cGVDaGVja2luZ10gYXR0
cmlidXRlIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50IHRIZWFkOwotICAgIFtTZXR0ZXJSYWlzZXNF
eGNlcHRpb24sIFN0cmljdFR5cGVDaGVja2luZ10gYXR0cmlidXRlIEhUTUxUYWJsZVNlY3Rpb25F
bGVtZW50IHRGb290OworICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb24sIFN0cmljdFR5cGVDaGVj
a2luZ10gYXR0cmlidXRlIEhUTUxUYWJsZUNhcHRpb25FbGVtZW50PyBjYXB0aW9uOworICAgIFtT
ZXR0ZXJSYWlzZXNFeGNlcHRpb24sIFN0cmljdFR5cGVDaGVja2luZ10gYXR0cmlidXRlIEhUTUxU
YWJsZVNlY3Rpb25FbGVtZW50PyB0SGVhZDsKKyAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBT
dHJpY3RUeXBlQ2hlY2tpbmddIGF0dHJpYnV0ZSBIVE1MVGFibGVTZWN0aW9uRWxlbWVudD8gdEZv
b3Q7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24gcm93czsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24gdEJvZGllczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0RhdGFDdWUuY3BwCmluZGV4IDM5YTc4YWRlZTkyZWE0NWJkZDU3ZWZjM2FmOTY0NGJj
YjgzNWQ1OTUuLjVkOWUwNGU4Yjc3ZTM4N2MzZjEzZDg4YmUzN2ZhYmYzMTJlZjZhMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9EYXRhQ3VlLmNwcApAQCAtMzYsMTEgKzM2LDExIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotRGF0YUN1ZTo6RGF0YUN1ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCwgQXJyYXlCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitEYXRhQ3VlOjpEYXRhQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNv
bnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBBcnJheUJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIDogVGV4dFRyYWNrQ3VlKGNvbnRleHQsIHN0
YXJ0LCBlbmQpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKLSAgICBzZXREYXRhKGRhdGEsIGVjKTsK
KyAgICBzZXREYXRhKGRhdGEpOwogfQogCiBEYXRhQ3VlOjpEYXRhQ3VlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGlt
ZSYgZW5kLCBjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCkBAIC04OCwxMyArODgs
OCBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IERhdGFDdWU6OmRhdGEoKSBjb25zdAogICAgIHJldHVy
biBBcnJheUJ1ZmZlcjo6Y3JlYXRlKCptX2RhdGEpOwogfQogCi12b2lkIERhdGFDdWU6OnNldERh
dGEoQXJyYXlCdWZmZXIqIGRhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBEYXRhQ3VlOjpz
ZXREYXRhKEFycmF5QnVmZmVyJiBkYXRhKQogewotICAgIGlmICghZGF0YSkgewotICAgICAgICBl
YyA9IFR5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogI2lmIEVOQUJMRShEQVRB
Q1VFX1ZBTFVFKQogICAgIG1fcGxhdGZvcm1WYWx1ZSA9IG51bGxwdHI7CiAgICAgaWYgKG1fdmFs
dWUpCkBAIC0xMDIsNyArOTcsNyBAQCB2b2lkIERhdGFDdWU6OnNldERhdGEoQXJyYXlCdWZmZXIq
IGRhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIG1fdmFsdWUgPSBKU0M6OkpTVmFsdWUoKTsK
ICNlbmRpZgogCi0gICAgbV9kYXRhID0gQXJyYXlCdWZmZXI6OmNyZWF0ZSgqZGF0YSk7CisgICAg
bV9kYXRhID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShkYXRhKTsKIH0KIAogRGF0YUN1ZSogdG9EYXRh
Q3VlKFRleHRUcmFja0N1ZSogY3VlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9EYXRhQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0RhdGFDdWUuaAppbmRl
eCBkNzFmYjgxMTcxOGI5MTQxNjk4MWI1NTllZGUzNTgyZGM0MzIwN2Y0Li42MjMyNzc0Zjc0YmM4
ZThmZjM3M2ZhOGZhNGY3MDY0OWZhNzMzM2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0RhdGFDdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0RhdGFD
dWUuaApAQCAtNDUsOSArNDUsOSBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBj
bGFzcyBEYXRhQ3VlIGZpbmFsIDogcHVibGljIFRleHRUcmFja0N1ZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxEYXRhQ3VlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIEFycmF5QnVm
ZmVyKiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKKyAgICBzdGF0aWMgUmVmPERhdGFDdWU+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0
YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgQXJyYXlCdWZmZXImIGRhdGEpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhQ3VlKGNvbnRleHQsIHN0YXJ0LCBlbmQsIGRh
dGEsIGVtcHR5U3RyaW5nKCksIGVjKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFDdWUoY29udGV4dCwgc3RhcnQsIGVuZCwgZGF0YSwgZW1wdHlTdHJpbmcoKSkpOwogICAgIH0K
IAogICAgIHN0YXRpYyBSZWY8RGF0YUN1ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBj
b25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCkBAIC01NSw5ICs1NSw5IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YUN1ZShjb250ZXh0LCBzdGFydCwg
ZW5kLCBkYXRhLCBsZW5ndGgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPERhdGFDdWU+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0
YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgQXJyYXlCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgc3RhdGljIFJlZjxEYXRhQ3VlPiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgTWVkaWFUaW1lJiBzdGFy
dCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIEFycmF5QnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IHR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhQ3VlKGNvbnRl
eHQsIHN0YXJ0LCBlbmQsIGRhdGEsIHR5cGUsIGVjKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFDdWUoY29udGV4dCwgc3RhcnQsIGVuZCwgZGF0YSwgdHlwZSkpOwogICAgIH0K
IAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAg
ICAgQ3VlVHlwZSBjdWVUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRGF0YTsgfQogCiAg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBkYXRhKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXREYXRhKEFy
cmF5QnVmZmVyKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0RGF0YShBcnJheUJ1ZmZl
ciYpOwogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCiAgICAgY29uc3QgU2VyaWFsaXplZFBs
YXRmb3JtUmVwcmVzZW50YXRpb24qIHBsYXRmb3JtVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Bs
YXRmb3JtVmFsdWUuZ2V0KCk7IH0KQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgIGJvb2wg
ZG9lc0V4dGVuZEN1ZShjb25zdCBUZXh0VHJhY2tDdWUmKSBjb25zdCBvdmVycmlkZTsKIAogcHJv
dGVjdGVkOgotICAgIERhdGFDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlh
VGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBBcnJheUJ1ZmZlciosIGNvbnN0IFN0
cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBEYXRhQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgQXJyYXlC
dWZmZXImLCBjb25zdCBTdHJpbmcmKTsKICAgICBEYXRhQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgY29uc3Qg
dm9pZCosIHVuc2lnbmVkKTsKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKICAgICBEYXRhQ3Vl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBN
ZWRpYVRpbWUmIGVuZCwgUmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYm
LCBjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
RGF0YUN1ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0RhdGFDdWUuaWRsCmluZGV4
IGZhNWUyNWVkNDdjNjYzZWU0MjU5YjE3MzJjMGU3Y2FmZWY0NGMwODQuLjU5MjM0ODlmY2Q1Zjhj
NjVlOWE1MjA3NGFkMzI5NGE3YTE3MzJmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svRGF0YUN1ZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9EYXRh
Q3VlLmlkbApAQCAtMzQsNyArMzQsNyBAQAogI2VuZGlmCiAgICAgQ29uc3RydWN0b3JSYWlzZXNF
eGNlcHRpb24sCiBdIGludGVyZmFjZSBEYXRhQ3VlIDogVGV4dFRyYWNrQ3VlIHsKLSAgICBbU2V0
dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgQXJyYXlCdWZmZXIgZGF0YTsKKyAgICBhdHRy
aWJ1dGUgQXJyYXlCdWZmZXIgZGF0YTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0RBVEFDVUVfVkFM
VUUpICYmIEVOQUJMRV9EQVRBQ1VFX1ZBTFVFCiAgICAgW0N1c3RvbUdldHRlciwgQ3VzdG9tU2V0
dGVyXSBhdHRyaWJ1dGUgYW55IHZhbHVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277877</attachid>
            <date>2016-05-01 17:09:02 -0700</date>
            <delta_ts>2016-05-01 17:19:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157250-20160501170937.patch</filename>
            <type>text/plain</type>
            <size>55453</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJlMDJhNGM1MTYyOWQ3
NDk2NDVlM2YyYmE4OTRhNzdiMjBiZGVjYS4uNDdiMjAxYmI2NTI2OTE4MzM4ZTFkOGU3ZjZhOGEx
MzRjNTNhYWJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwNiBAQAogMjAxNi0wNS0wMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIFBhc3MgcmVmZXJlbmNlIGlu
c3RlYWQgb2YgcG9pbnRlciB0byBJREwgYXR0cmlidXRlIHNldHRlcnMgaWYgbm90IG51bGxhYmxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcyNTAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUg
dGhlIGJpbmRpbmdzIGdlbmVyYXRvciBzbyB0aGF0IHdlIHBhc3Mgd3JhcHBlciB0eXBlcyBieSBy
ZWZlcmVuY2UKKyAgICAgICAgdG8gYXR0cmlidXRlIHNldHRlcnMgaW5zdGVhZCBvZiBieSByYXcg
cG9pbnRlciB3aGVuIHRoZSBhdHRyaWJ1dGUgaXMgbm90CisgICAgICAgIG1hcmtlZCBhcyBudWxs
YWJsZSBpbiB0aGUgSURMLgorCisgICAgICAgIFRoZXJlIGlzIG5vdCBpbnRlbmRlZCBXZWItZXhw
b3NlZCBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQ29udm9s
dmVyTm9kZS5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTRGF0YUN1ZSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBt
OgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9i
alRlc3RPYmpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakxlbmllbnRUZXN0
T2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVu
dHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
V2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOiBEZWxldGVkLgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW06CisgICAg
ICAgICgtW0RPTVRlc3RJbnRlcmZhY2Ugc2V0SW1wbGVtZW50c05vZGU6XSk6CisgICAgICAgICgt
W0RPTVRlc3RJbnRlcmZhY2Ugc2V0U3VwcGxlbWVudGFsTm9kZTpdKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tOgorICAgICAgICAoLVtET01UZXN0
T2JqIHNldFRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nOl0pOgorICAgICAgICAoLVtET01UZXN0
T2JqIHNldFRlc3RPYmpBdHRyOl0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHNldExlbmllbnRU
ZXN0T2JqQXR0cjpdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiBzZXRYTUxPYmpBdHRyOl0pOgor
ICAgICAgICAoLVtET01UZXN0T2JqIHNldFN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZTpdKToK
KyAgICAgICAgKC1bRE9NVGVzdE9iaiBzZXRKc0J1aWx0aW5BdHRyaWJ1dGU6XSk6CisgICAgICAg
ICgtW0RPTVRlc3RPYmogc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGU6XSk6
CisgICAgICAgICgtW0RPTVRlc3RPYmogc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
Ol0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlUmFpc2VzOl0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHNldFdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGU6XSk6CisgICAgICAgICgtW0RP
TVRlc3RPYmogc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlczpdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiBzZXRXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZTpdKToKKyAgICAgICAg
KC1bRE9NVGVzdE9iaiBzZXRXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRl
Ol0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHNldENvbmRpdGlvbmFsQXR0cjQ6XSk6CisgICAg
ICAgICgtW0RPTVRlc3RPYmogc2V0Q29uZGl0aW9uYWxBdHRyNTpdKToKKyAgICAgICAgKC1bRE9N
VGVzdE9iaiBzZXRDb25kaXRpb25hbEF0dHI2Ol0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHN0
cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZV0pOiBEZWxldGVkLgorICAgICAgICAoLVtET01UZXN0
T2JqIGpzQnVpbHRpbkF0dHJpYnV0ZV0pOiBEZWxldGVkLgorICAgICAgICAoLVtET01UZXN0T2Jq
IHdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc10pOiBEZWxldGVkLgorICAgICAgICAoLVtE
T01UZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3Bh
Y2VzQXR0cmlidXRlXSk6IERlbGV0ZWQuCisgICAgICAgICgtW0RPTVRlc3RPYmogY29uZGl0aW9u
YWxBdHRyNF0pOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50KToKKyAg
ICAgICAgKiBkb20vTm9kZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVJdGVy
YXRvcjo6Tm9kZVBvaW50ZXI6Ok5vZGVQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVJ
dGVyYXRvcjo6Tm9kZVBvaW50ZXI6Om1vdmVUb05leHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZUl0ZXJhdG9yOjpOb2RlUG9pbnRlcjo6bW92ZVRvUHJldmlvdXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZUl0ZXJhdG9yOjpOb2RlSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0
ZXJhdG9yOjp+Tm9kZUl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVJdGVyYXRvcjo6
dXBkYXRlRm9yTm9kZVJlbW92YWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJhdG9yOjpO
b2RlUG9pbnRlcjo6Y2xlYXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJh
dG9yOjpuZXh0Tm9kZSk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL05vZGVJdGVyYXRvci5oOgor
ICAgICAgICAqIGRvbS9UcmF2ZXJzYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJh
dG9yQmFzZTo6Tm9kZUl0ZXJhdG9yQmFzZSk6CisgICAgICAgICogZG9tL1RyYXZlcnNhbC5oOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJhdG9yQmFzZTo6cm9vdCk6CisgICAgICAgICogZG9t
L1RyZWVXYWxrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtlcjo6c2V0Q3VycmVu
dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtlcjo6c2V0Q3VycmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmVlV2Fsa2VyOjpwYXJlbnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRyZWVXYWxrZXI6OmZpcnN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtlcjo6
bGFzdENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVXYWxrZXI6OnRyYXZlcnNlU2libGlu
Z3MpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtlcjo6cHJldmlvdXNOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRyZWVXYWxrZXI6Om5leHROb2RlKToKKyAgICAgICAgKiBkb20vVHJlZVdh
bGtlci5oOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtlcjo6Y3VycmVudE5vZGUpOgorICAg
ICAgICAqIGRvbS9UcmVlV2Fsa2VyLmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50
RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbDoKKyAgICAg
ICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvdHJhY2svRGF0
YUN1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhQ3VlOjpEYXRhQ3VlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFDdWU6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6dG9EYXRhQ3Vl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL0RhdGFDdWUuaDoKKyAgICAgICAgKiBo
dG1sL3RyYWNrL0RhdGFDdWUuaWRsOgorCisyMDE2LTA1LTAxICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKICAgICAgICAgVW5yZXZpZXdlZCBhdHRlbXB0IHRvIGZpeCBXaW5kb3dz
IGJ1aWxkIGFmdGVyIHIyMDAyODguCiAKICAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaWRsCmluZGV4IGMzNGM3ZmI3NmI1ZTg1Nzg4
MDc0NDI1ZWQ1NDZjMWIzMGFiYzhiOWYuLmU3ODFmNTI0NDQ3Zjk0MTgwODhjOGEyN2E2Y2VkMzA2
MzM3NTI0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmlkbApAQCAtMzAsNyArMzAsNyBAQAogXSBpbnRl
cmZhY2UgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIDogRXZlbnRUYXJnZXQgewogICAgIGF0dHJp
YnV0ZSBET01TdHJpbmcgdGV4dDsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhbmc7Ci0gICAg
YXR0cmlidXRlIFNwZWVjaFN5bnRoZXNpc1ZvaWNlIHZvaWNlOworICAgIGF0dHJpYnV0ZSBTcGVl
Y2hTeW50aGVzaXNWb2ljZT8gdm9pY2U7IC8vIEZJWE1FOiBzaG91bGQgbm90IGJlIG51bGxhYmxl
LgogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgdm9sdW1lOwogICAgIGF0dHJpYnV0
ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgcmF0ZTsKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZs
b2F0IHBpdGNoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9s
dmVyTm9kZS5pZGwKaW5kZXggZGJkYzEyNmU0M2JiMWMwNTdlZjUyZWJkZGNhYmUzN2NlNGViOWE0
Yi4uZjBkM2Y3NGQ2Nzg0OTYyZDU2MzU5Mjk2MzM5MGQ3ZTRjMjJlMDNhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaWRsCkBAIC0yNyw2
ICsyNyw2IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAogICAgIEpTR2VuZXJhdGVUb0pT
T2JqZWN0CiBdIGludGVyZmFjZSBDb252b2x2ZXJOb2RlIDogQXVkaW9Ob2RlIHsKLSAgICBbU2V0
dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgQXVkaW9CdWZmZXIgYnVmZmVyOworICAgIFtT
ZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBBdWRpb0J1ZmZlcj8gYnVmZmVyOwogICAg
IGF0dHJpYnV0ZSBib29sZWFuIG5vcm1hbGl6ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcAppbmRleCBiZTUzZWJlZDk1MTQxYmY2ODU2MTk3
NWM0MTY3YWU1MmMwMWUyZWJkLi5mZTRkMzZkZTc0ZDFjMmY2Zjc2MzA0OWExMzM4Nzk4MWVkMWYz
ZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5j
cHAKQEAgLTUzLDcgKzUzLDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RKU0RhdGFDdWUoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50
KCkgPCAzKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IGRvdWJsZSBzdGFydFRpbWUoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpOwogICAg
IGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC04NCwxNiArODMsMTcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0RhdGFDdWUoRXhlY1N0YXRlKiBleGVjKQog
ICAgIFJlZlB0cjxEYXRhQ3VlPiBvYmplY3Q7CiAgICAgaWYgKHZhbHVlQXJndW1lbnQuaXNDZWxs
KCkgJiYgdmFsdWVBcmd1bWVudC5hc0NlbGwoKS0+aW5oZXJpdHMoc3RkOjpyZW1vdmVfcG9pbnRl
cjxKU0FycmF5QnVmZmVyKj46OnR5cGU6OmluZm8oKSkpIHsKIAotICAgICAgICBBcnJheUJ1ZmZl
ciogZGF0YSh0b0FycmF5QnVmZmVyKHZhbHVlQXJndW1lbnQpKTsKKyAgICAgICAgQXJyYXlCdWZm
ZXIqIGRhdGEgPSB0b0FycmF5QnVmZmVyKHZhbHVlQXJndW1lbnQpOwogICAgICAgICBpZiAoVU5M
SUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgICAgICBvYmplY3QgPSBEYXRhQ3VlOjpjcmVh
dGUoKmNvbnRleHQsIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydFRpbWUpLCBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kVGltZSksIGRhdGEsIHR5cGUsIGVjKTsKLSAgICAg
ICAgaWYgKGVjKSB7Ci0gICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAg
ICAgICBpZiAoIWRhdGEpIHsKKyAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUeXBl
RXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwog
ICAgICAgICB9CiAKKyAgICAgICAgb2JqZWN0ID0gRGF0YUN1ZTo6Y3JlYXRlKCpjb250ZXh0LCBN
ZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoc3RhcnRUaW1lKSwgTWVkaWFUaW1lOjpjcmVhdGVX
aXRoRG91YmxlKGVuZFRpbWUpLCAqZGF0YSwgdHlwZSk7CisKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBvYmplY3QuZ2V0KCkpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQppbmRleCBhZGVjNzliZWNi
YTY3NmZmMWQ1NTNiZDZjMTMxNzNiMThkYTU4N2EwLi5lOTJiNmFlOWY0OWIzYTc1ZDk2OGEyYzI5
OGE1ODAyMjA5MmU0ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0KQEAgLTExMTAsOSArMTExMCw3IEBAIHN1
YiBHZW5lcmF0ZUZ1bmN0aW9uIHsKICAgICAgICAgfQogICAgICAgICBpZiAoJHBhcmFtSXNHRE9N
VHlwZSB8fCAoJHBhcmFtSURMVHlwZSBlcSAiRE9NU3RyaW5nIikpIHsKICAgICAgICAgICAgICRw
YXJhbU5hbWUgPSAiY29udmVydGVkIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRwYXJh
bU5hbWUpOwotICAgICAgICAgICAgaWYgKCRwcmVmaXggbmUgInNldF8iICYmICRjb2RlR2VuZXJh
dG9yLT5TaG91bGRQYXNzV3JhcHBlckJ5UmVmZXJlbmNlKCRwYXJhbSwgJHBhcmVudE5vZGUpKSB7
Ci0gICAgICAgICAgICAgICAgJHBhcmFtTmFtZSA9ICIqJHBhcmFtTmFtZSI7Ci0gICAgICAgICAg
ICB9CisgICAgICAgICAgICAkcGFyYW1OYW1lID0gIiokcGFyYW1OYW1lIiBpZiAoJGNvZGVHZW5l
cmF0b3ItPlNob3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2UoJHBhcmFtLCAkcGFyZW50Tm9kZSkp
OwogICAgICAgICB9CiAgICAgICAgIGlmICgkcGFyYW1JRExUeXBlIGVxICJOb2RlRmlsdGVyIiB8
fCAkcGFyYW1JRExUeXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7CiAgICAgICAgICAgICAkcGFy
YW1OYW1lID0gIldURjo6Z2V0UHRyKCIgLiAkcGFyYW1OYW1lIC4gIikiOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBkMGNi
YTMzN2FmZDdhOGU5ZTZkZTM5YzZlNzBmZmFlZTUwZWMwY2VhLi4yZjRkYzlkYmE4ZTNjNmFjNTM4
ZmZlZjhlYzc1YjNhMzkxNTE5ZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjg2MCw2ICsyODYwLDE0IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIHB1c2ggKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgICAgICAgICAgfQogCisg
ICAgICAgICAgICAgICAgbXkgJHNob3VsZFBhc3NCeVJlZmVyZW5jZSA9IFNob3VsZFBhc3NXcmFw
cGVyQnlSZWZlcmVuY2UoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAkaW50ZXJmYWNlKTsKKyAgICAg
ICAgICAgICAgICBpZiAoJHNob3VsZFBhc3NCeVJlZmVyZW5jZSkgeworICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkg
e1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOworICAgICAgICAgICAgICAgIH0KKwog
ICAgICAgICAgICAgICAgIGlmICgkdHlwZSBlcSAiZG91YmxlIiBvciAkdHlwZSBlcSAiZmxvYXQi
KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJ
S0VMWSghc3RkOjppc2Zpbml0ZShuYXRpdmVWYWx1ZSkpKSB7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUp
O1xuIik7CkBAIC0yOTAzLDcgKzI5MTEsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNFbnVtVHlwZSgk
dHlwZSkgYW5kIG5vdCAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdCYXNlZEVudW1UeXBlKCR0eXBl
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAibmF0aXZlVmFs
dWUudmFsdWUoKSIpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAibmF0aXZlVmFsdWUiKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgJHNob3VsZFBhc3NCeVJlZmVyZW5jZSA/ICIq
bmF0aXZlVmFsdWUiIDogIm5hdGl2ZVZhbHVlIik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgewogICAgICAgICAgICAgICAgICAgICAgICAgbXkg
JGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJJbXBsZW1lbnRlZEJ5In07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQppbmRleCA2MWExZDBhM2Q1MTJhNDc4MmIyNmE5
OTZjOGIwZjY1YjJhMWM1ZjE4Li44MWM0NWUwNTE5YWVlNWFjODFlZDdlNGJlYTI0ZDU5ZTkxMzJh
ZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JPYmpDLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvck9iakMucG0KQEAgLTE0MTcsNiArMTQxNywxMiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAkYXJnID0gImNvcmUoIiAuICRhcmcgLiAiKSI7
CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9y
LT5TaG91bGRQYXNzV3JhcHBlckJ5UmVmZXJlbmNlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgJGlu
dGVyZmFjZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCEkYXJnKVxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpO1xuIik7CisgICAgICAg
ICAgICAgICAgICAgICRhcmcgPSAiKiRhcmciOworICAgICAgICAgICAgICAgIH0KKwogICAgICAg
ICAgICAgICAgIG15ICgkZnVuY3Rpb25OYW1lLCBAYXJndW1lbnRzKSA9ICRjb2RlR2VuZXJhdG9y
LT5TZXR0ZXJFeHByZXNzaW9uKFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJp
YnV0ZSk7CiAgICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAkYXJnKTsKICAgICAgICAg
ICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJlYyIpIGlmICRoYXNTZXR0ZXJFeGNlcHRpb247CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDg4NjdlZDYy
YTQ5YTJmZjQ5NWRkNWYyY2MxZDY2OGQ2MDNiZWI2YzIuLmI2MzE3ZTEzNzA2NWEyNzQ4NmU3YjYy
MmY5MTI3NDllZjM3MTY5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRl
cmZhY2UuY3BwCkBAIC00NTAsNyArNDUwLDcgQEAgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJm
YWNlX3NldF9pbXBsZW1lbnRzX25vZGUoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZiwKICAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfTk9ERSh2YWx1ZSkpOwogICAgIFdlYkNv
cmU6OlRlc3RJbnRlcmZhY2UqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV2ViQ29y
ZTo6Tm9kZSogY29udmVydGVkVmFsdWUgPSBXZWJLaXQ6OmNvcmUodmFsdWUpOwotICAgIGl0ZW0t
PnNldEltcGxlbWVudHNOb2RlKGNvbnZlcnRlZFZhbHVlKTsKKyAgICBpdGVtLT5zZXRJbXBsZW1l
bnRzTm9kZSgqY29udmVydGVkVmFsdWUpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc2VsZik7
CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKQEAgLTU2Nyw3ICs1NjcsNyBAQCB2b2lkIHdlYmtp
dF9kb21fdGVzdF9pbnRlcmZhY2Vfc2V0X3N1cHBsZW1lbnRhbF9ub2RlKFdlYktpdERPTVRlc3RJ
bnRlcmZhY2UqIHNlbAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19OT0RFKHZh
bHVlKSk7CiAgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKICAgICBXZWJDb3JlOjpOb2RlKiBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2
YWx1ZSk7Ci0gICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsTm9k
ZSgqaXRlbSwgY29udmVydGVkVmFsdWUpOworICAgIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6
OnNldFN1cHBsZW1lbnRhbE5vZGUoKml0ZW0sICpjb252ZXJ0ZWRWYWx1ZSk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShzZWxmKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0T2JqLmNwcAppbmRleCA3ZjRkMzM2ZmQyNWNjM2EzYWJkOWY3MTE3YzMz
NjgwNmNmYTk4Mzg2Li5hZmFlNmRlYzcyNGFiOGRhNzc1NWY1M2ZkMjU4YWI2ZDVjMDY2ZGNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcApAQCAtMjIwMiw3ICsyMjAyLDcgQEAg
dm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF90ZXN0X29ial9hdHRyKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYsIFdlYktpdERPTVRlc3QKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01f
SVNfVEVTVF9PQkoodmFsdWUpKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZlcnRlZFZhbHVlID0gV2Vi
S2l0Ojpjb3JlKHZhbHVlKTsKLSAgICBpdGVtLT5zZXRUZXN0T2JqQXR0cihjb252ZXJ0ZWRWYWx1
ZSk7CisgICAgaXRlbS0+c2V0VGVzdE9iakF0dHIoKmNvbnZlcnRlZFZhbHVlKTsKIH0KIAogV2Vi
S2l0RE9NVGVzdE9iaiogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfbGVuaWVudF90ZXN0X29ial9h
dHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCkBAIC0yMjIxLDcgKzIyMjEsNyBAQCB2b2lkIHdl
YmtpdF9kb21fdGVzdF9vYmpfc2V0X2xlbmllbnRfdGVzdF9vYmpfYXR0cihXZWJLaXRET01UZXN0
T2JqKiBzZWxmLCBXZWJLaQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNU
X09CSih2YWx1ZSkpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkVmFsdWUgPSBXZWJLaXQ6OmNv
cmUodmFsdWUpOwotICAgIGl0ZW0tPnNldExlbmllbnRUZXN0T2JqQXR0cihjb252ZXJ0ZWRWYWx1
ZSk7CisgICAgaXRlbS0+c2V0TGVuaWVudFRlc3RPYmpBdHRyKCpjb252ZXJ0ZWRWYWx1ZSk7CiB9
CiAKIGdjaGFyKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF91bmZvcmdlYWJsZV9hdHRyKFdlYktp
dERPTVRlc3RPYmoqIHNlbGYpCkBAIC0yMjY4LDcgKzIyNjgsNyBAQCB2b2lkIHdlYmtpdF9kb21f
dGVzdF9vYmpfc2V0X3htbF9vYmpfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRE
T01UZXN0TwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSih2YWx1
ZSkpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAg
ICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkVmFsdWUgPSBXZWJLaXQ6OmNvcmUodmFsdWUp
OwotICAgIGl0ZW0tPnNldFhNTE9iakF0dHIoY29udmVydGVkVmFsdWUpOworICAgIGl0ZW0tPnNl
dFhNTE9iakF0dHIoKmNvbnZlcnRlZFZhbHVlKTsKIH0KIAogZ2Jvb2xlYW4gd2Via2l0X2RvbV90
ZXN0X29ial9nZXRfY3JlYXRlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCkBAIC0yNjIyLDcgKzI2
MjIsNyBAQCB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3N0cmljdF90eXBlX2NoZWNraW5n
X2F0dHJpYnV0ZShXZWJLaXRET01UZXN0T2JqKiBzZQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0RPTV9JU19URVNUX09CSih2YWx1ZSkpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkVmFs
dWUgPSBXZWJLaXQ6OmNvcmUodmFsdWUpOwotICAgIGl0ZW0tPnNldFN0cmljdFR5cGVDaGVja2lu
Z0F0dHJpYnV0ZShjb252ZXJ0ZWRWYWx1ZSk7CisgICAgaXRlbS0+c2V0U3RyaWN0VHlwZUNoZWNr
aW5nQXR0cmlidXRlKCpjb252ZXJ0ZWRWYWx1ZSk7CiB9CiAKIGdsb25nIHdlYmtpdF9kb21fdGVz
dF9vYmpfZ2V0X3dpdGhfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZShXZWJLaXRET01UZXN0T2JqKiBz
ZWxmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCA5NzFjY2E0ODA0NTc3ODNiNjZiZGE0ZjA3
YmZjOGM0ZDZhYTBiYWY1Li5mYTcyM2E3MjlhYzVkNzcwNzRlNDQ5MTlhNjczMzQ2NjRlYWU0NTk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtNjg2LDcgKzY4NiwxMSBAQCBib29sIHNldEpT
VGVzdEludGVyZmFjZUltcGxlbWVudHNOb2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZQogICAgIE5vZGUqIG5hdGl2ZVZhbHVlID0gSlNOb2RlOjp0b1dyYXBwZWQo
dmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaW1wbC5zZXRJbXBsZW1lbnRzTm9kZShuYXRpdmVWYWx1ZSk7
CisgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaW1wbC5zZXRJ
bXBsZW1lbnRzTm9kZSgqbmF0aXZlVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC03
NTIsNyArNzU2LDExIEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZShF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsCiAgICAgTm9kZSogbmF0aXZl
VmFsdWUgPSBKU05vZGU6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBXZWJDb3JlOjpU
ZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxOb2RlKGltcGwsIG5hdGl2ZVZhbHVlKTsK
KyAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBXZWJDb3JlOjpU
ZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxOb2RlKGltcGwsICpuYXRpdmVWYWx1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggNzhkNWJlYmRjNGUzNzUwMjRj
YTUyOWFiNzE5MjQyMzExOGFhMjg0Yi4uMzZiZmFjZGExYjQ1NjhjM2JkMzc1NGE1NWJjMGJiY2Yx
MjIyNjcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTI1NzIsNyArMjU3MiwxMSBAQCBib29sIHNldEpTVGVz
dE9ialRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZAogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBw
ZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW1wbC5zZXRUZXN0T2JqQXR0cihuYXRpdmVWYWx1ZSk7
CisgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaW1wbC5zZXRU
ZXN0T2JqQXR0cigqbmF0aXZlVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNTg5
LDcgKzI1OTMsMTEgQEAgYm9vbCBzZXRKU1Rlc3RPYmpMZW5pZW50VGVzdE9iakF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLAogICAgIFRlc3RPYmoqIG5hdGl2
ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW1wbC5z
ZXRMZW5pZW50VGVzdE9iakF0dHIobmF0aXZlVmFsdWUpOworICAgIGlmIChVTkxJS0VMWSghbmF0
aXZlVmFsdWUpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGltcGwuc2V0TGVuaWVudFRlc3RPYmpBdHRyKCpuYXRp
dmVWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI2MjMsNyArMjYzMSwxMSBAQCBi
b29sIHNldEpTVGVzdE9ialhNTE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSgogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0
T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW1wbC5zZXRYTUxPYmpBdHRyKG5h
dGl2ZVZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgeworICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICBpbXBsLnNldFhNTE9iakF0dHIoKm5hdGl2ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtMjgyOSw2ICsyODQxLDEwIEBAIGJvb2wgc2V0SlNUZXN0T2JqVHlwZWRBcnJheUF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvCiAgICAgUmVm
UHRyPEZsb2F0MzJBcnJheT4gbmF0aXZlVmFsdWUgPSB0b0Zsb2F0MzJBcnJheSh2YWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgeworICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICBpbXBs
LnNldFR5cGVkQXJyYXlBdHRyKG5hdGl2ZVZhbHVlLmdldCgpKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTI5NTgsNyArMjk3NCwxMSBAQCBib29sIHNldEpTVGVzdE9ialN0cmljdFR5cGVDaGVj
a2luZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aAogICAgIFRl
c3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaW1wbC5zZXRTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUobmF0aXZlVmFsdWUpOwor
ICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGltcGwuc2V0U3Ry
aWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKCpuYXRpdmVWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTMwNDgsMTAgKzMwNjgsMTQgQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlMKICAg
ICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7CisgICAgICAgIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIGF1dG8q
IGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGUoKmNvbnRleHQsIG5hdGl2ZVZhbHVlKTsKKyAgICBpbXBsLnNldFdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKCpjb250ZXh0LCAqbmF0aXZlVmFsdWUpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMDY4LDcgKzMwOTIsMTEgQEAgYm9vbCBzZXRKU1Rl
c3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFw
cGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGltcGwuc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzKCpzdGF0ZSwgbmF0aXZlVmFsdWUpOworICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFs
dWUpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIGltcGwuc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
KCpzdGF0ZSwgKm5hdGl2ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzA4NSwx
MCArMzExMywxNCBAQCBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuYwogICAgIFRlc3RPYmoqIG5hdGl2
ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKFVO
TElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgYXV0byogY29udGV4dCA9IGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJh
aXNlcygqY29udGV4dCwgbmF0aXZlVmFsdWUpOworICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoKmNvbnRleHQsICpuYXRpdmVWYWx1ZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTMxMDUsMTAgKzMxMzcsMTQgQEAgYm9vbCBzZXRKU1Rlc3RP
YmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNT
dGF0ZSogc3QKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVk
KHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7CisgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlm
ICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGltcGwuc2V0V2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgqc3RhdGUsICpjb250ZXh0
LCBuYXRpdmVWYWx1ZSk7CisgICAgaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlKCpzdGF0ZSwgKmNvbnRleHQsICpuYXRpdmVWYWx1ZSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMxMjUsMTAgKzMxNjEsMTQgQEAgYm9vbCBzZXRKU1Rl
c3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFp
c2VzKEV4ZWNTdGEKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFw
cGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7Cisg
ICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGltcGwuc2V0V2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygqc3RhdGUs
ICpjb250ZXh0LCBuYXRpdmVWYWx1ZSk7CisgICAgaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKCpzdGF0ZSwgKmNvbnRleHQsICpu
YXRpdmVWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMxNDUsMTAgKzMxODUsMTQg
QEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShFeGUKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpT
VGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChVTkxJS0VMWSghbmF0
aXZlVmFsdWUpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFj
ZXNBdHRyaWJ1dGUoKnN0YXRlLCAqY29udGV4dCwgbmF0aXZlVmFsdWUpOworICAgIGltcGwuc2V0
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1
dGUoKnN0YXRlLCAqY29udGV4dCwgKm5hdGl2ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtMzE2NSw3ICszMjA5LDExIEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3Vt
ZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvCiAgICAgVGVz
dE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpbXBsLnNldFdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUobmF0
aXZlVmFsdWUpOworICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7CisgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IGltcGwuc2V0V2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSgqbmF0aXZl
VmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5tbQpp
bmRleCAwOThhMTFkOWU1NzQ5ZTFhZjhkNzJlYTI3M2VlNzE2NGY2MTRhOThkLi43YmQyNDcxNDEx
YmUxMTQ2YjI5ODlkNjI0NjM4OTJlNDE5OTg1ZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2Uu
bW0KQEAgLTEwOSw3ICsxMDksOSBAQCAtICh2b2lkKXNldEltcGxlbWVudHNOb2RlOihET01Ob2Rl
ICopbmV3SW1wbGVtZW50c05vZGUKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7CiAgICAgQVNTRVJUKG5ld0ltcGxlbWVudHNOb2RlKTsKIAotICAgIElNUEwtPnNldElt
cGxlbWVudHNOb2RlKGNvcmUobmV3SW1wbGVtZW50c05vZGUpKTsKKyAgICBpZiAoIWNvcmUobmV3
SW1wbGVtZW50c05vZGUpKQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlv
bigpOworICAgIElNUEwtPnNldEltcGxlbWVudHNOb2RlKCpjb3JlKG5ld0ltcGxlbWVudHNOb2Rl
KSk7CiB9CiAjZW5kaWYKIApAQCAtMTYxLDcgKzE2Myw5IEBAIC0gKHZvaWQpc2V0U3VwcGxlbWVu
dGFsTm9kZTooRE9NTm9kZSAqKW5ld1N1cHBsZW1lbnRhbE5vZGUKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgQVNTRVJUKG5ld1N1cHBsZW1lbnRhbE5vZGUp
OwogCi0gICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsTm9kZSgq
SU1QTCwgY29yZShuZXdTdXBwbGVtZW50YWxOb2RlKSk7CisgICAgaWYgKCFjb3JlKG5ld1N1cHBs
ZW1lbnRhbE5vZGUpKQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigp
OworICAgIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnNldFN1cHBsZW1lbnRhbE5vZGUoKklN
UEwsICpjb3JlKG5ld1N1cHBsZW1lbnRhbE5vZGUpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1t
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5t
bQppbmRleCAzOTdjM2ZlNzQyNGIzNzk5MzEzNDM1N2Y1MjA2YzlmZjgzZjdhODhmLi5lZGJlZTZh
OGQ4Y2M5OGMyNmRiNzE3YTljYzc2NWVjZTNhZTliMzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KQEAgLTEx
Miw3ICsxMTIsOSBAQCAtICh2b2lkKXNldFRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nOihET01U
ZXN0U3ViT2JqQ29uc3RydWN0b3IgKiluZXdUZXN0U3ViT2JqRQogICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NFUlQobmV3VGVzdFN1Yk9iakVuYWJsZWRC
eVNldHRpbmcpOwogCi0gICAgSU1QTC0+c2V0VGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmcoY29y
ZShuZXdUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZykpOworICAgIGlmICghY29yZShuZXdUZXN0
U3ViT2JqRW5hYmxlZEJ5U2V0dGluZykpCisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9y
RXhjZXB0aW9uKCk7CisgICAgSU1QTC0+c2V0VGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmcoKmNv
cmUobmV3VGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmcpKTsKIH0KIAogLSAoY2hhcilieXRlQXR0
cgpAQCAtMjQ2LDcgKzI0OCw5IEBAIC0gKHZvaWQpc2V0VGVzdE9iakF0dHI6KERPTVRlc3RPYmog
KiluZXdUZXN0T2JqQXR0cgogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKICAgICBBU1NFUlQobmV3VGVzdE9iakF0dHIpOwogCi0gICAgSU1QTC0+c2V0VGVzdE9iakF0
dHIoY29yZShuZXdUZXN0T2JqQXR0cikpOworICAgIGlmICghY29yZShuZXdUZXN0T2JqQXR0cikp
CisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgSU1QTC0+
c2V0VGVzdE9iakF0dHIoKmNvcmUobmV3VGVzdE9iakF0dHIpKTsKIH0KIAogLSAoRE9NVGVzdE9i
aiAqKWxlbmllbnRUZXN0T2JqQXR0cgpAQCAtMjYwLDcgKzI2NCw5IEBAIC0gKHZvaWQpc2V0TGVu
aWVudFRlc3RPYmpBdHRyOihET01UZXN0T2JqICopbmV3TGVuaWVudFRlc3RPYmpBdHRyCiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIEFTU0VSVChuZXdMZW5p
ZW50VGVzdE9iakF0dHIpOwogCi0gICAgSU1QTC0+c2V0TGVuaWVudFRlc3RPYmpBdHRyKGNvcmUo
bmV3TGVuaWVudFRlc3RPYmpBdHRyKSk7CisgICAgaWYgKCFjb3JlKG5ld0xlbmllbnRUZXN0T2Jq
QXR0cikpCisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAg
SU1QTC0+c2V0TGVuaWVudFRlc3RPYmpBdHRyKCpjb3JlKG5ld0xlbmllbnRUZXN0T2JqQXR0cikp
OwogfQogCiAtIChOU1N0cmluZyAqKXVuZm9yZ2VhYmxlQXR0cgpAQCAtMjkyLDcgKzI5OCw5IEBA
IC0gKHZvaWQpc2V0WE1MT2JqQXR0cjooRE9NVGVzdE9iaiAqKW5ld1hNTE9iakF0dHIKICAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgQVNTRVJUKG5ld1hNTE9i
akF0dHIpOwogCi0gICAgSU1QTC0+c2V0WE1MT2JqQXR0cihjb3JlKG5ld1hNTE9iakF0dHIpKTsK
KyAgICBpZiAoIWNvcmUobmV3WE1MT2JqQXR0cikpCisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlw
ZUVycm9yRXhjZXB0aW9uKCk7CisgICAgSU1QTC0+c2V0WE1MT2JqQXR0cigqY29yZShuZXdYTUxP
YmpBdHRyKSk7CiB9CiAKIC0gKEJPT0wpY3JlYXRlCkBAIC01MjIsNyArNTMwLDkgQEAgLSAodm9p
ZClzZXRTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGU6KERPTVRlc3RPYmogKiluZXdTdHJpY3RU
eXBlQ2hlY2tpbmdBdHRyaWIKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7CiAgICAgQVNTRVJUKG5ld1N0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSk7CiAKLSAgICBJ
TVBMLT5zZXRTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoY29yZShuZXdTdHJpY3RUeXBlQ2hl
Y2tpbmdBdHRyaWJ1dGUpKTsKKyAgICBpZiAoIWNvcmUobmV3U3RyaWN0VHlwZUNoZWNraW5nQXR0
cmlidXRlKSkKKyAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAg
ICBJTVBMLT5zZXRTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoKmNvcmUobmV3U3RyaWN0VHlw
ZUNoZWNraW5nQXR0cmlidXRlKSk7CiB9CiAKIC0gKGludCljdXN0b21BdHRyCkBAIC01NDksNyAr
NTU5LDkgQEAgLSAodm9pZClzZXRKc0J1aWx0aW5BdHRyaWJ1dGU6KERPTVRlc3RPYmogKiluZXdK
c0J1aWx0aW5BdHRyaWJ1dGUKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7CiAgICAgQVNTRVJUKG5ld0pzQnVpbHRpbkF0dHJpYnV0ZSk7CiAKLSAgICBJTVBMLT5zZXRK
c0J1aWx0aW5BdHRyaWJ1dGUoY29yZShuZXdKc0J1aWx0aW5BdHRyaWJ1dGUpKTsKKyAgICBpZiAo
IWNvcmUobmV3SnNCdWlsdGluQXR0cmlidXRlKSkKKyAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBl
RXJyb3JFeGNlcHRpb24oKTsKKyAgICBJTVBMLT5zZXRKc0J1aWx0aW5BdHRyaWJ1dGUoKmNvcmUo
bmV3SnNCdWlsdGluQXR0cmlidXRlKSk7CiB9CiAjZW5kaWYKIApAQCAtNTk2LDcgKzYwOCw5IEBA
IC0gKHZvaWQpc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGU6KERPTVRlc3RP
YmogKiluZXdXaXRoU2NyaXB0RXhlY3V0CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwogICAgIEFTU0VSVChuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZSk7CiAKLSAgICBJTVBMLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZShjb3JlKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKSk7CisgICAgaWYg
KCFjb3JlKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKSkKKyAgICAgICAg
V2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBJTVBMLT5zZXRXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSgqY29yZShuZXdXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZSkpOwogfQogCiAtIChET01UZXN0T2JqICopd2l0aFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzCkBAIC02MTMsNyArNjI3LDkgQEAgLSAodm9pZClzZXRXaXRoU2NyaXB0
U3RhdGVBdHRyaWJ1dGVSYWlzZXM6KERPTVRlc3RPYmogKiluZXdXaXRoU2NyaXB0U3RhdGVBdHRy
aWIKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgQVNTRVJU
KG5ld1dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk7CiAKLSAgICBJTVBMLT5zZXRXaXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoY29yZShuZXdXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMpKTsKKyAgICBpZiAoIWNvcmUobmV3V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFp
c2VzKSkKKyAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBJ
TVBMLT5zZXRXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoKmNvcmUobmV3V2l0aFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzKSk7CiB9CiAKIC0gKERPTVRlc3RPYmogKil3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcwpAQCAtNjMwLDcgKzY0Niw5IEBAIC0gKHZv
aWQpc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXM6KERPTVRlc3RP
YmogKiluZXdXaXRoU2NyaXB0CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwogICAgIEFTU0VSVChuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJh
aXNlcyk7CiAKLSAgICBJTVBMLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZVJhaXNlcyhjb3JlKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2Vz
KSk7CisgICAgaWYgKCFjb3JlKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
UmFpc2VzKSkKKyAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAg
ICBJTVBMLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcygqY29y
ZShuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcykpOwogfQogCiAt
IChET01UZXN0T2JqICopd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZQpAQCAtNjQ0LDcgKzY2Miw5IEBAIC0gKHZvaWQpc2V0V2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZTooRE9NVGVzdE9iaiAqKW5ld1dpCiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIEFTU0VSVChuZXdXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKTsKIAotICAgIElN
UEwtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUo
Y29yZShuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRl
KSk7CisgICAgaWYgKCFjb3JlKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVBdHRyaWJ1dGUpKQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlv
bigpOworICAgIElNUEwtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGUoKmNvcmUobmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZSkpOwogfQogCiAtIChET01UZXN0T2JqICopd2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcwpAQCAtNjYxLDcgKzY4MSw5IEBA
IC0gKHZvaWQpc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlczooRE9NVGVzdE9iaiAqCiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwogICAgIEFTU0VSVChuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKTsKIAotICAgIElNUEwtPnNldFdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoY29yZShuZXdXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKSk7CisgICAg
aWYgKCFjb3JlKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGVSYWlzZXMpKQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigp
OworICAgIElNUEwtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGVSYWlzZXMoKmNvcmUobmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcykpOwogfQogCiAtIChET01UZXN0T2JqICopd2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUKQEAgLTY3
NSw3ICs2OTcsOSBAQCAtICh2b2lkKXNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlOihET01UZXN0TwogICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NFUlQobmV3V2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpOwogCi0gICAgSU1QTC0+
c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRy
aWJ1dGUoY29yZShuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0
aFNwYWNlc0F0dHJpYnV0ZSkpOworICAgIGlmICghY29yZShuZXdXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSkpCisgICAgICAgIFdlYkNv
cmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgSU1QTC0+c2V0V2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoKmNvcmUobmV3
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1
dGUpKTsKIH0KIAogLSAoRE9NVGVzdE9iaiAqKXdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3Rh
Y2tBdHRyaWJ1dGUKQEAgLTY4OSw3ICs3MTMsOSBAQCAtICh2b2lkKXNldFdpdGhTY3JpcHRBcmd1
bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGU6KERPTVRlc3RPYmogKiluZXdXaXRoU2NyaXB0QQog
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NFUlQobmV3
V2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSk7CiAKLSAgICBJTVBMLT5z
ZXRXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKGNvcmUobmV3V2l0aFNj
cmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSkpOworICAgIGlmICghY29yZShuZXdX
aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKSkKKyAgICAgICAgV2ViQ29y
ZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBJTVBMLT5zZXRXaXRoU2NyaXB0QXJn
dW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKCpjb3JlKG5ld1dpdGhTY3JpcHRBcmd1bWVudHNB
bmRDYWxsU3RhY2tBdHRyaWJ1dGUpKTsKIH0KIAogI2lmIEVOQUJMRShDb25kaXRpb24xKQpAQCAt
NzQ2LDcgKzc3Miw5IEBAIC0gKHZvaWQpc2V0Q29uZGl0aW9uYWxBdHRyNDooRE9NVGVzdE9iamVj
dEFDb25zdHJ1Y3RvciAqKW5ld0NvbmRpdGlvbmFsQXR0cjQKICAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgQVNTRVJUKG5ld0NvbmRpdGlvbmFsQXR0cjQpOwog
Ci0gICAgSU1QTC0+c2V0Q29uZGl0aW9uYWxBdHRyNChjb3JlKG5ld0NvbmRpdGlvbmFsQXR0cjQp
KTsKKyAgICBpZiAoIWNvcmUobmV3Q29uZGl0aW9uYWxBdHRyNCkpCisgICAgICAgIFdlYkNvcmU6
OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgSU1QTC0+c2V0Q29uZGl0aW9uYWxBdHRy
NCgqY29yZShuZXdDb25kaXRpb25hbEF0dHI0KSk7CiB9CiAjZW5kaWYKIApAQCAtNzYyLDcgKzc5
MCw5IEBAIC0gKHZvaWQpc2V0Q29uZGl0aW9uYWxBdHRyNTooRE9NVGVzdE9iamVjdEJDb25zdHJ1
Y3RvciAqKW5ld0NvbmRpdGlvbmFsQXR0cjUKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CiAgICAgQVNTRVJUKG5ld0NvbmRpdGlvbmFsQXR0cjUpOwogCi0gICAgSU1Q
TC0+c2V0Q29uZGl0aW9uYWxBdHRyNShjb3JlKG5ld0NvbmRpdGlvbmFsQXR0cjUpKTsKKyAgICBp
ZiAoIWNvcmUobmV3Q29uZGl0aW9uYWxBdHRyNSkpCisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlw
ZUVycm9yRXhjZXB0aW9uKCk7CisgICAgSU1QTC0+c2V0Q29uZGl0aW9uYWxBdHRyNSgqY29yZShu
ZXdDb25kaXRpb25hbEF0dHI1KSk7CiB9CiAjZW5kaWYKIApAQCAtNzc4LDcgKzgwOCw5IEBAIC0g
KHZvaWQpc2V0Q29uZGl0aW9uYWxBdHRyNjooRE9NVGVzdE9iamVjdENDb25zdHJ1Y3RvciAqKW5l
d0NvbmRpdGlvbmFsQXR0cjYKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7CiAgICAgQVNTRVJUKG5ld0NvbmRpdGlvbmFsQXR0cjYpOwogCi0gICAgSU1QTC0+c2V0Q29u
ZGl0aW9uYWxBdHRyNihjb3JlKG5ld0NvbmRpdGlvbmFsQXR0cjYpKTsKKyAgICBpZiAoIWNvcmUo
bmV3Q29uZGl0aW9uYWxBdHRyNikpCisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhj
ZXB0aW9uKCk7CisgICAgSU1QTC0+c2V0Q29uZGl0aW9uYWxBdHRyNigqY29yZShuZXdDb25kaXRp
b25hbEF0dHI2KSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNDIx
MTBkNjhjZTI2OWZlYTkyNDgwOTE0ZWE5ZDcyYmNlYWI3OGZhMy4uMjE3OGRhZjdkNjZkNzA1YzRj
ZDJjYzNmMDg3NzNiMmRiMzIxNGEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zOTY0
LDcgKzM5NjQsNyBAQCB2b2lkIERvY3VtZW50Ojptb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1l
bnQoTm9kZSogbm9kZSwgRG9jdW1lbnQqIG5ld0RvY3VtZW50KQogICAgIFZlY3RvcjxOb2RlSXRl
cmF0b3IqPiBub2RlSXRlcmF0b3JzOwogICAgIGNvcHlUb1ZlY3RvcihtX25vZGVJdGVyYXRvcnMs
IG5vZGVJdGVyYXRvcnMpOwogICAgIGZvciAoYXV0byogaXQgOiBub2RlSXRlcmF0b3JzKSB7Ci0g
ICAgICAgIGlmIChpdC0+cm9vdCgpID09IG5vZGUpIHsKKyAgICAgICAgaWYgKCZpdC0+cm9vdCgp
ID09IG5vZGUpIHsKICAgICAgICAgICAgIGRldGFjaE5vZGVJdGVyYXRvcihpdCk7CiAgICAgICAg
ICAgICBuZXdEb2N1bWVudC0+YXR0YWNoTm9kZUl0ZXJhdG9yKGl0KTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZUl0ZXJhdG9yLmNwcAppbmRleCA3NDI5MGE5NTE0NjM4NDcwN2ZhYTU0ZDUx
ZDA0OTUyOTRiNTZmMDRmLi5iNTllMGY5YTUzODc0MjdlNjVjOWIxM2QxMjU0ZjllYTUzZjBiNGZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmNwcApAQCAtMzMsMTMgKzMzLDkgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1Ob2RlSXRlcmF0b3I6Ok5vZGVQb2ludGVyOjpOb2RlUG9p
bnRlcigpCi17Ci19Ci0KLU5vZGVJdGVyYXRvcjo6Tm9kZVBvaW50ZXI6Ok5vZGVQb2ludGVyKE5v
ZGUqIG4sIGJvb2wgYikKLSAgICA6IG5vZGUobikKLSAgICAsIGlzUG9pbnRlckJlZm9yZU5vZGUo
YikKK05vZGVJdGVyYXRvcjo6Tm9kZVBvaW50ZXI6Ok5vZGVQb2ludGVyKE5vZGUmIG5vZGUsIGJv
b2wgaXNQb2ludGVyQmVmb3JlTm9kZSkKKyAgICA6IG5vZGUoJm5vZGUpCisgICAgLCBpc1BvaW50
ZXJCZWZvcmVOb2RlKGlzUG9pbnRlckJlZm9yZU5vZGUpCiB7CiB9CiAKQEAgLTQ4LDcgKzQ0LDcg
QEAgdm9pZCBOb2RlSXRlcmF0b3I6Ok5vZGVQb2ludGVyOjpjbGVhcigpCiAgICAgbm9kZSA9IG51
bGxwdHI7CiB9CiAKLWJvb2wgTm9kZUl0ZXJhdG9yOjpOb2RlUG9pbnRlcjo6bW92ZVRvTmV4dChO
b2RlKiByb290KQorYm9vbCBOb2RlSXRlcmF0b3I6Ok5vZGVQb2ludGVyOjptb3ZlVG9OZXh0KE5v
ZGUmIHJvb3QpCiB7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01
NiwxMSArNTIsMTEgQEAgYm9vbCBOb2RlSXRlcmF0b3I6Ok5vZGVQb2ludGVyOjptb3ZlVG9OZXh0
KE5vZGUqIHJvb3QpCiAgICAgICAgIGlzUG9pbnRlckJlZm9yZU5vZGUgPSBmYWxzZTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpu
b2RlLCByb290KTsKKyAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSwgJnJvb3Qp
OwogICAgIHJldHVybiBub2RlOwogfQogCi1ib29sIE5vZGVJdGVyYXRvcjo6Tm9kZVBvaW50ZXI6
Om1vdmVUb1ByZXZpb3VzKE5vZGUqIHJvb3QpCitib29sIE5vZGVJdGVyYXRvcjo6Tm9kZVBvaW50
ZXI6Om1vdmVUb1ByZXZpb3VzKE5vZGUmIHJvb3QpCiB7CiAgICAgaWYgKCFub2RlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC02OCw3ICs2NCw3IEBAIGJvb2wgTm9kZUl0ZXJhdG9yOjpOb2Rl
UG9pbnRlcjo6bW92ZVRvUHJldmlvdXMoTm9kZSogcm9vdCkKICAgICAgICAgaXNQb2ludGVyQmVm
b3JlTm9kZSA9IHRydWU7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBpZiAobm9k
ZSA9PSByb290KSB7CisgICAgaWYgKG5vZGUgPT0gJnJvb3QpIHsKICAgICAgICAgbm9kZSA9IG51
bGxwdHI7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC04MCwxMiArNzYsMTIgQEAg
Tm9kZUl0ZXJhdG9yOjpOb2RlSXRlcmF0b3IoTm9kZSYgcm9vdE5vZGUsIHVuc2lnbmVkIGxvbmcg
d2hhdFRvU2hvdywgUmVmUHRyPE5vZGUKICAgICA6IE5vZGVJdGVyYXRvckJhc2Uocm9vdE5vZGUs
IHdoYXRUb1Nob3csIFdURk1vdmUoZmlsdGVyKSkKICAgICAsIG1fcmVmZXJlbmNlTm9kZShyb290
KCksIHRydWUpCiB7Ci0gICAgcm9vdCgpLT5kb2N1bWVudCgpLmF0dGFjaE5vZGVJdGVyYXRvcih0
aGlzKTsKKyAgICByb290KCkuZG9jdW1lbnQoKS5hdHRhY2hOb2RlSXRlcmF0b3IodGhpcyk7CiB9
CiAKIE5vZGVJdGVyYXRvcjo6fk5vZGVJdGVyYXRvcigpCiB7Ci0gICAgcm9vdCgpLT5kb2N1bWVu
dCgpLmRldGFjaE5vZGVJdGVyYXRvcih0aGlzKTsKKyAgICByb290KCkuZG9jdW1lbnQoKS5kZXRh
Y2hOb2RlSXRlcmF0b3IodGhpcyk7CiB9CiAKIFJlZlB0cjxOb2RlPiBOb2RlSXRlcmF0b3I6Om5l
eHROb2RlKCkKQEAgLTE0NSwxMSArMTQxLDExIEBAIHZvaWQgTm9kZUl0ZXJhdG9yOjpub2RlV2ls
bEJlUmVtb3ZlZChOb2RlJiByZW1vdmVkTm9kZSkKIAogdm9pZCBOb2RlSXRlcmF0b3I6OnVwZGF0
ZUZvck5vZGVSZW1vdmFsKE5vZGUmIHJlbW92ZWROb2RlLCBOb2RlUG9pbnRlciYgcmVmZXJlbmNl
Tm9kZSkgY29uc3QKIHsKLSAgICBBU1NFUlQoJnJvb3QoKS0+ZG9jdW1lbnQoKSA9PSAmcmVtb3Zl
ZE5vZGUuZG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKCZyb290KCkuZG9jdW1lbnQoKSA9PSAmcmVt
b3ZlZE5vZGUuZG9jdW1lbnQoKSk7CiAKICAgICAvLyBJdGVyYXRvciBpcyBub3QgYWZmZWN0ZWQg
aWYgdGhlIHJlbW92ZWQgbm9kZSBpcyB0aGUgcmVmZXJlbmNlIG5vZGUgYW5kIGlzIHRoZSByb290
LgogICAgIC8vIG9yIGlmIHJlbW92ZWQgbm9kZSBpcyBub3QgdGhlIHJlZmVyZW5jZSBub2RlLCBv
ciB0aGUgYW5jZXN0b3Igb2YgdGhlIHJlZmVyZW5jZSBub2RlLgotICAgIGlmICghcmVtb3ZlZE5v
ZGUuaXNEZXNjZW5kYW50T2Yocm9vdCgpKSkKKyAgICBpZiAoIXJlbW92ZWROb2RlLmlzRGVzY2Vu
ZGFudE9mKCZyb290KCkpKQogICAgICAgICByZXR1cm47CiAgICAgYm9vbCB3aWxsUmVtb3ZlUmVm
ZXJlbmNlTm9kZSA9ICZyZW1vdmVkTm9kZSA9PSByZWZlcmVuY2VOb2RlLm5vZGU7CiAgICAgYm9v
bCB3aWxsUmVtb3ZlUmVmZXJlbmNlTm9kZUFuY2VzdG9yID0gcmVmZXJlbmNlTm9kZS5ub2RlICYm
IHJlZmVyZW5jZU5vZGUubm9kZS0+aXNEZXNjZW5kYW50T2YoJnJlbW92ZWROb2RlKTsKQEAgLTE1
NywxMiArMTUzLDEyIEBAIHZvaWQgTm9kZUl0ZXJhdG9yOjp1cGRhdGVGb3JOb2RlUmVtb3ZhbChO
b2RlJiByZW1vdmVkTm9kZSwgTm9kZVBvaW50ZXImIHJlZmVyZW5jCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChyZWZlcmVuY2VOb2RlLmlzUG9pbnRlckJlZm9yZU5vZGUpIHsKLSAgICAgICAg
Tm9kZSogbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQocmVtb3ZlZE5vZGUsIHJvb3QoKSk7Cisg
ICAgICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KHJlbW92ZWROb2RlLCAmcm9v
dCgpKTsKICAgICAgICAgaWYgKG5vZGUpIHsKICAgICAgICAgICAgIC8vIE1vdmUgb3V0IGZyb20g
dW5kZXIgdGhlIG5vZGUgYmVpbmcgcmVtb3ZlZCBpZiB0aGUgbmV3IHJlZmVyZW5jZQogICAgICAg
ICAgICAgLy8gbm9kZSBpcyBhIGRlc2NlbmRhbnQgb2YgdGhlIG5vZGUgYmVpbmcgcmVtb3ZlZC4K
ICAgICAgICAgICAgIHdoaWxlIChub2RlICYmIG5vZGUtPmlzRGVzY2VuZGFudE9mKCZyZW1vdmVk
Tm9kZSkpCi0gICAgICAgICAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUs
IHJvb3QoKSk7CisgICAgICAgICAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5v
ZGUsICZyb290KCkpOwogICAgICAgICAgICAgaWYgKG5vZGUpCiAgICAgICAgICAgICAgICAgcmVm
ZXJlbmNlTm9kZS5ub2RlID0gbm9kZTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTE5Niw3ICsxOTIs
NyBAQCB2b2lkIE5vZGVJdGVyYXRvcjo6dXBkYXRlRm9yTm9kZVJlbW92YWwoTm9kZSYgcmVtb3Zl
ZE5vZGUsIE5vZGVQb2ludGVyJiByZWZlcmVuYwogICAgICAgICAgICAgICAgIHJlZmVyZW5jZU5v
ZGUubm9kZSA9IG5vZGU7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBGSVhNRTog
VGhpcyBicmFuY2ggZG9lc24ndCBhcHBlYXIgdG8gaGF2ZSBhbnkgTGF5b3V0VGVzdHMuCi0gICAg
ICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChyZW1vdmVkTm9kZSwgcm9vdCgpKTsK
KyAgICAgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KHJlbW92ZWROb2RlLCAmcm9v
dCgpKTsKICAgICAgICAgICAgIC8vIE1vdmUgb3V0IGZyb20gdW5kZXIgdGhlIG5vZGUgYmVpbmcg
cmVtb3ZlZCBpZiB0aGUgcmVmZXJlbmNlIG5vZGUgaXMKICAgICAgICAgICAgIC8vIGEgZGVzY2Vu
ZGFudCBvZiB0aGUgbm9kZSBiZWluZyByZW1vdmVkLgogICAgICAgICAgICAgaWYgKHdpbGxSZW1v
dmVSZWZlcmVuY2VOb2RlQW5jZXN0b3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3IuaAppbmRl
eCBmNmJiYTMyMzUzODBhMzg0YWQxMTJlMzY5N2I1ZmRkZjkzYTM1ZDkyLi5jYThlOGQ0YzQwYWFl
NGFkNTBiNDdjOTE4YTk3NjY4OTg2ZWQzNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5o
CkBAIC01NywxMiArNTcsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHN0cnVj
dCBOb2RlUG9pbnRlciB7CiAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbm9kZTsKLSAgICAgICAg
ICAgIGJvb2wgaXNQb2ludGVyQmVmb3JlTm9kZTsKLSAgICAgICAgICAgIE5vZGVQb2ludGVyKCk7
Ci0gICAgICAgICAgICBOb2RlUG9pbnRlcihOb2RlKiwgYm9vbCk7CisgICAgICAgICAgICBib29s
IGlzUG9pbnRlckJlZm9yZU5vZGUgeyB0cnVlIH07CisKKyAgICAgICAgICAgIE5vZGVQb2ludGVy
KCkgPSBkZWZhdWx0OworICAgICAgICAgICAgTm9kZVBvaW50ZXIoTm9kZSYsIGJvb2wpOworCiAg
ICAgICAgICAgICB2b2lkIGNsZWFyKCk7Ci0gICAgICAgICAgICBib29sIG1vdmVUb05leHQoTm9k
ZSogcm9vdCk7Ci0gICAgICAgICAgICBib29sIG1vdmVUb1ByZXZpb3VzKE5vZGUqIHJvb3QpOwor
ICAgICAgICAgICAgYm9vbCBtb3ZlVG9OZXh0KE5vZGUmIHJvb3QpOworICAgICAgICAgICAgYm9v
bCBtb3ZlVG9QcmV2aW91cyhOb2RlJiByb290KTsKICAgICAgICAgfTsKIAogICAgICAgICB2b2lk
IHVwZGF0ZUZvck5vZGVSZW1vdmFsKE5vZGUmIG5vZGVUb0JlUmVtb3ZlZCwgTm9kZVBvaW50ZXIm
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmF2ZXJzYWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RyYXZlcnNhbC5jcHAKaW5kZXggMGZkZjg1ODZmNmNjYjdiNTZl
ZGQ4Nzk2ZDE2ZDIzYmM2ZGNmZTkyYi4uM2M4MmE3NjZlYTA1NTdmNWU4NWRhZmVhYjM2NjFkYzA4
Yjg1NjI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyYXZlcnNhbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RyYXZlcnNhbC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogTm9kZUl0ZXJhdG9yQmFzZTo6Tm9kZUl0ZXJhdG9yQmFzZShO
b2RlJiByb290Tm9kZSwgdW5zaWduZWQgd2hhdFRvU2hvdywgUmVmUHRyPE5vZGVGaWx0ZXI+JiYg
bm9kZUZpbHRlcikKLSAgICA6IG1fcm9vdCgmcm9vdE5vZGUpCisgICAgOiBtX3Jvb3Qocm9vdE5v
ZGUpCiAgICAgLCBtX3doYXRUb1Nob3cod2hhdFRvU2hvdykKICAgICAsIG1fZmlsdGVyKFdURk1v
dmUobm9kZUZpbHRlcikpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhdmVy
c2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhdmVyc2FsLmgKaW5kZXggYjhiOWVjNGE2YzFi
MzQ2YmUzNjZkOWYzYjU1OThiZGZiNDZmOWEwNC4uYTFlMGZmYzUxYjc4ZDVkMGZlYWYxZTNkNmU3
YWQ3ZjUzZjg0NzhlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyYXZlcnNhbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmF2ZXJzYWwuaApAQCAtMzMsNyArMzMsOSBAQCBj
bGFzcyBOb2RlRmlsdGVyOwogCiBjbGFzcyBOb2RlSXRlcmF0b3JCYXNlIHsKIHB1YmxpYzoKLSAg
ICBOb2RlKiByb290KCkgY29uc3QgeyByZXR1cm4gbV9yb290LmdldCgpOyB9CisgICAgTm9kZSYg
cm9vdCgpIHsgcmV0dXJuIG1fcm9vdC5nZXQoKTsgfQorICAgIGNvbnN0IE5vZGUmIHJvb3QoKSBj
b25zdCB7IHJldHVybiBtX3Jvb3QuZ2V0KCk7IH0KKwogICAgIHVuc2lnbmVkIHdoYXRUb1Nob3co
KSBjb25zdCB7IHJldHVybiBtX3doYXRUb1Nob3c7IH0KICAgICBOb2RlRmlsdGVyKiBmaWx0ZXIo
KSBjb25zdCB7IHJldHVybiBtX2ZpbHRlci5nZXQoKTsgfQogICAgIGJvb2wgZXhwYW5kRW50aXR5
UmVmZXJlbmNlcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC00Myw3ICs0NSw3IEBAIHBy
b3RlY3RlZDoKICAgICBzaG9ydCBhY2NlcHROb2RlKE5vZGUqKSBjb25zdDsKIAogcHJpdmF0ZToK
LSAgICBSZWZQdHI8Tm9kZT4gbV9yb290OworICAgIFJlZjxOb2RlPiBtX3Jvb3Q7CiAgICAgdW5z
aWduZWQgbV93aGF0VG9TaG93OwogICAgIFJlZlB0cjxOb2RlRmlsdGVyPiBtX2ZpbHRlcjsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVHJlZVdhbGtlci5jcHAKaW5kZXggYWI4NmQ1OTNiMjkwYTllMDdhOTMzM2U3
YzI3Y2E3ZmYyN2ZlZmQ1NC4uYTBjMDlmOWVlZTE1NzRkN2JlYjAyYmUyNjc0MzY3NzY3OGM1OTI1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmNwcApAQCAtMzksMzEgKzM5LDI3IEBAIFRyZWVX
YWxrZXI6OlRyZWVXYWxrZXIoTm9kZSYgcm9vdE5vZGUsIHVuc2lnbmVkIGxvbmcgd2hhdFRvU2hv
dywgUmVmUHRyPE5vZGVGaWx0CiB7CiB9CiAKLXZvaWQgVHJlZVdhbGtlcjo6c2V0Q3VycmVudE5v
ZGUoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFRyZWVXYWxrZXI6OnNldEN1
cnJlbnROb2RlKE5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKCFub2RlKSB7Ci0gICAgICAgIGVjID0g
Tk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgbV9jdXJyZW50
ID0gbm9kZTsKIH0KIAotaW5saW5lIE5vZGUqIFRyZWVXYWxrZXI6OnNldEN1cnJlbnQoUmVmUHRy
PE5vZGU+JiYgbm9kZSkKK2lubGluZSBOb2RlKiBUcmVlV2Fsa2VyOjpzZXRDdXJyZW50KFJlZjxO
b2RlPiYmIG5vZGUpCiB7Ci0gICAgbV9jdXJyZW50ID0gbm9kZTsKLSAgICByZXR1cm4gbV9jdXJy
ZW50LmdldCgpOworICAgIG1fY3VycmVudCA9IFdURk1vdmUobm9kZSk7CisgICAgcmV0dXJuIG1f
Y3VycmVudC5wdHIoKTsKIH0KIAogTm9kZSogVHJlZVdhbGtlcjo6cGFyZW50Tm9kZSgpCiB7Ci0g
ICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBtX2N1cnJlbnQ7Ci0gICAgd2hpbGUgKG5vZGUgIT0gcm9v
dCgpKSB7CisgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBtX2N1cnJlbnQucHRyKCk7CisgICAgd2hp
bGUgKG5vZGUgIT0gJnJvb3QoKSkgewogICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgp
OwogICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgc2hvcnQgYWNjZXB0Tm9kZVJlc3VsdCA9IGFjY2VwdE5vZGUobm9kZS5nZXQoKSk7CiAgICAg
ICAgIGlmIChhY2NlcHROb2RlUmVzdWx0ID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQpCi0g
ICAgICAgICAgICByZXR1cm4gc2V0Q3VycmVudChXVEZNb3ZlKG5vZGUpKTsKKyAgICAgICAgICAg
IHJldHVybiBzZXRDdXJyZW50KG5vZGUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJl
dHVybiBudWxscHRyOwogfQpAQCAtNzQsOCArNzAsOCBAQCBOb2RlKiBUcmVlV2Fsa2VyOjpmaXJz
dENoaWxkKCkKICAgICAgICAgc2hvcnQgYWNjZXB0Tm9kZVJlc3VsdCA9IGFjY2VwdE5vZGUobm9k
ZS5nZXQoKSk7CiAgICAgICAgIHN3aXRjaCAoYWNjZXB0Tm9kZVJlc3VsdCkgewogICAgICAgICAg
ICAgY2FzZSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUOgotICAgICAgICAgICAgICAgIG1fY3Vy
cmVudCA9IG5vZGUucmVsZWFzZSgpOwotICAgICAgICAgICAgICAgIHJldHVybiBtX2N1cnJlbnQu
Z2V0KCk7CisgICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gbm9kZS5yZWxlYXNlTm9uTnVsbCgp
OworICAgICAgICAgICAgICAgIHJldHVybiBtX2N1cnJlbnQucHRyKCk7CiAgICAgICAgICAgICBj
YXNlIE5vZGVGaWx0ZXI6OkZJTFRFUl9TS0lQOgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5m
aXJzdENoaWxkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmZpcnN0Q2hp
bGQoKTsKQEAgLTkxLDcgKzg3LDcgQEAgTm9kZSogVHJlZVdhbGtlcjo6Zmlyc3RDaGlsZCgpCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBDb250YWlu
ZXJOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7Ci0gICAgICAgICAgICBpZiAoIXBh
cmVudCB8fCBwYXJlbnQgPT0gcm9vdCgpIHx8IHBhcmVudCA9PSBtX2N1cnJlbnQpCisgICAgICAg
ICAgICBpZiAoIXBhcmVudCB8fCBwYXJlbnQgPT0gJnJvb3QoKSB8fCBwYXJlbnQgPT0gbV9jdXJy
ZW50LnB0cigpKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAg
bm9kZSA9IHBhcmVudDsKICAgICAgICAgfSB3aGlsZSAobm9kZSk7CkBAIC0xMDUsOCArMTAxLDgg
QEAgTm9kZSogVHJlZVdhbGtlcjo6bGFzdENoaWxkKCkKICAgICAgICAgc2hvcnQgYWNjZXB0Tm9k
ZVJlc3VsdCA9IGFjY2VwdE5vZGUobm9kZS5nZXQoKSk7CiAgICAgICAgIHN3aXRjaCAoYWNjZXB0
Tm9kZVJlc3VsdCkgewogICAgICAgICAgICAgY2FzZSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBU
OgotICAgICAgICAgICAgICAgIG1fY3VycmVudCA9IG5vZGUucmVsZWFzZSgpOwotICAgICAgICAg
ICAgICAgIHJldHVybiBtX2N1cnJlbnQuZ2V0KCk7CisgICAgICAgICAgICAgICAgbV9jdXJyZW50
ID0gbm9kZS5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgICAgIHJldHVybiBtX2N1cnJl
bnQucHRyKCk7CiAgICAgICAgICAgICBjYXNlIE5vZGVGaWx0ZXI6OkZJTFRFUl9TS0lQOgogICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5sYXN0Q2hpbGQoKSkgewogICAgICAgICAgICAgICAgICAg
ICBub2RlID0gbm9kZS0+bGFzdENoaWxkKCk7CkBAIC0xMjIsNyArMTE4LDcgQEAgTm9kZSogVHJl
ZVdhbGtlcjo6bGFzdENoaWxkKCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE5vZGUo
KTsKLSAgICAgICAgICAgIGlmICghcGFyZW50IHx8IHBhcmVudCA9PSByb290KCkgfHwgcGFyZW50
ID09IG1fY3VycmVudCkKKyAgICAgICAgICAgIGlmICghcGFyZW50IHx8IHBhcmVudCA9PSAmcm9v
dCgpIHx8IHBhcmVudCA9PSBtX2N1cnJlbnQucHRyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgICAgICBub2RlID0gcGFyZW50OwogICAgICAgICB9IHdoaWxlIChu
b2RlKTsKQEAgLTEzMiw4ICsxMjgsOCBAQCBOb2RlKiBUcmVlV2Fsa2VyOjpsYXN0Q2hpbGQoKQog
CiB0ZW1wbGF0ZTxUcmVlV2Fsa2VyOjpTaWJsaW5nVHJhdmVyc2FsVHlwZSB0eXBlPiBOb2RlKiBU
cmVlV2Fsa2VyOjp0cmF2ZXJzZVNpYmxpbmdzKCkKIHsKLSAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9
IG1fY3VycmVudDsKLSAgICBpZiAobm9kZSA9PSByb290KCkpCisgICAgUmVmUHRyPE5vZGU+IG5v
ZGUgPSBtX2N1cnJlbnQucHRyKCk7CisgICAgaWYgKG5vZGUgPT0gJnJvb3QoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGlzTmV4dCA9IHR5cGUgPT0gU2libGluZ1RyYXZl
cnNhbFR5cGU6Ok5leHQ7CkBAIC0xNDEsOCArMTM3LDggQEAgdGVtcGxhdGU8VHJlZVdhbGtlcjo6
U2libGluZ1RyYXZlcnNhbFR5cGUgdHlwZT4gTm9kZSogVHJlZVdhbGtlcjo6dHJhdmVyc2VTaWJs
aW4KICAgICAgICAgZm9yIChSZWZQdHI8Tm9kZT4gc2libGluZyA9IGlzTmV4dCA/IG5vZGUtPm5l
eHRTaWJsaW5nKCkgOiBub2RlLT5wcmV2aW91c1NpYmxpbmcoKTsgc2libGluZzsgKSB7CiAgICAg
ICAgICAgICBzaG9ydCBhY2NlcHROb2RlUmVzdWx0ID0gYWNjZXB0Tm9kZShzaWJsaW5nLmdldCgp
KTsKICAgICAgICAgICAgIGlmIChhY2NlcHROb2RlUmVzdWx0ID09IE5vZGVGaWx0ZXI6OkZJTFRF
Ul9BQ0NFUFQpIHsKLSAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBXVEZNb3ZlKHNpYmxpbmcp
OwotICAgICAgICAgICAgICAgIHJldHVybiBtX2N1cnJlbnQuZ2V0KCk7CisgICAgICAgICAgICAg
ICAgbV9jdXJyZW50ID0gc2libGluZy5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgICAg
IHJldHVybiBtX2N1cnJlbnQucHRyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBub2Rl
ID0gc2libGluZzsKICAgICAgICAgICAgIHNpYmxpbmcgPSBpc05leHQgPyBzaWJsaW5nLT5maXJz
dENoaWxkKCkgOiBzaWJsaW5nLT5sYXN0Q2hpbGQoKTsKQEAgLTE1MCw3ICsxNDYsNyBAQCB0ZW1w
bGF0ZTxUcmVlV2Fsa2VyOjpTaWJsaW5nVHJhdmVyc2FsVHlwZSB0eXBlPiBOb2RlKiBUcmVlV2Fs
a2VyOjp0cmF2ZXJzZVNpYmxpbgogICAgICAgICAgICAgICAgIHNpYmxpbmcgPSBpc05leHQgPyBu
b2RlLT5uZXh0U2libGluZygpIDogbm9kZS0+cHJldmlvdXNTaWJsaW5nKCk7CiAgICAgICAgIH0K
ICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgaWYgKCFub2RlIHx8
IG5vZGUgPT0gcm9vdCgpKQorICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZSA9PSAmcm9vdCgpKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHNob3J0IGFjY2VwdE5vZGVSZXN1
bHQgPSBhY2NlcHROb2RlKG5vZGUuZ2V0KCkpOwogICAgICAgICBpZiAoYWNjZXB0Tm9kZVJlc3Vs
dCA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKQpAQCAtMTcwLDggKzE2Niw4IEBAIE5vZGUq
IFRyZWVXYWxrZXI6Om5leHRTaWJsaW5nKCkKIAogTm9kZSogVHJlZVdhbGtlcjo6cHJldmlvdXNO
b2RlKCkKIHsKLSAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IG1fY3VycmVudDsKLSAgICB3aGlsZSAo
bm9kZSAhPSByb290KCkpIHsKKyAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IG1fY3VycmVudC5wdHIo
KTsKKyAgICB3aGlsZSAobm9kZSAhPSAmcm9vdCgpKSB7CiAgICAgICAgIHdoaWxlIChOb2RlKiBw
cmV2aW91c1NpYmxpbmcgPSBub2RlLT5wcmV2aW91c1NpYmxpbmcoKSkgewogICAgICAgICAgICAg
bm9kZSA9IHByZXZpb3VzU2libGluZzsKICAgICAgICAgICAgIHNob3J0IGFjY2VwdE5vZGVSZXN1
bHQgPSBhY2NlcHROb2RlKG5vZGUuZ2V0KCkpOwpAQCAtMTg0LDExICsxODAsMTEgQEAgTm9kZSog
VHJlZVdhbGtlcjo6cHJldmlvdXNOb2RlKCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoYWNjZXB0Tm9kZVJlc3VsdCA9PSBOb2RlRmls
dGVyOjpGSUxURVJfQUNDRVBUKSB7Ci0gICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gbm9kZS5y
ZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fY3VycmVudC5nZXQoKTsKKyAgICAg
ICAgICAgICAgICBtX2N1cnJlbnQgPSBub2RlLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG1fY3VycmVudC5wdHIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQot
ICAgICAgICBpZiAobm9kZSA9PSByb290KCkpCisgICAgICAgIGlmIChub2RlID09ICZyb290KCkp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgQ29udGFpbmVyTm9kZSogcGFy
ZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAgICAgICBpZiAoIXBhcmVudCkKQEAgLTE5Niwy
OCArMTkyLDI4IEBAIE5vZGUqIFRyZWVXYWxrZXI6OnByZXZpb3VzTm9kZSgpCiAgICAgICAgIG5v
ZGUgPSBwYXJlbnQ7CiAgICAgICAgIHNob3J0IGFjY2VwdE5vZGVSZXN1bHQgPSBhY2NlcHROb2Rl
KG5vZGUuZ2V0KCkpOwogICAgICAgICBpZiAoYWNjZXB0Tm9kZVJlc3VsdCA9PSBOb2RlRmlsdGVy
OjpGSUxURVJfQUNDRVBUKQotICAgICAgICAgICAgcmV0dXJuIHNldEN1cnJlbnQoV1RGTW92ZShu
b2RlKSk7CisgICAgICAgICAgICByZXR1cm4gc2V0Q3VycmVudChub2RlLnJlbGVhc2VOb25OdWxs
KCkpOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogTm9kZSogVHJlZVdhbGtlcjo6
bmV4dE5vZGUoKQogewotICAgIFJlZlB0cjxOb2RlPiBub2RlID0gbV9jdXJyZW50OworICAgIFJl
ZlB0cjxOb2RlPiBub2RlID0gbV9jdXJyZW50LnB0cigpOwogQ2hpbGRyZW46CiAgICAgd2hpbGUg
KE5vZGUqIGZpcnN0Q2hpbGQgPSBub2RlLT5maXJzdENoaWxkKCkpIHsKICAgICAgICAgbm9kZSA9
IGZpcnN0Q2hpbGQ7CiAgICAgICAgIHNob3J0IGFjY2VwdE5vZGVSZXN1bHQgPSBhY2NlcHROb2Rl
KG5vZGUuZ2V0KCkpOwogICAgICAgICBpZiAoYWNjZXB0Tm9kZVJlc3VsdCA9PSBOb2RlRmlsdGVy
OjpGSUxURVJfQUNDRVBUKQotICAgICAgICAgICAgcmV0dXJuIHNldEN1cnJlbnQoV1RGTW92ZShu
b2RlKSk7CisgICAgICAgICAgICByZXR1cm4gc2V0Q3VycmVudChub2RlLnJlbGVhc2VOb25OdWxs
KCkpOwogICAgICAgICBpZiAoYWNjZXB0Tm9kZVJlc3VsdCA9PSBOb2RlRmlsdGVyOjpGSUxURVJf
UkVKRUNUKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHdoaWxlIChOb2RlKiBuZXh0
U2libGluZyA9IE5vZGVUcmF2ZXJzYWw6Om5leHRTa2lwcGluZ0NoaWxkcmVuKCpub2RlLCByb290
KCkpKSB7CisgICAgd2hpbGUgKE5vZGUqIG5leHRTaWJsaW5nID0gTm9kZVRyYXZlcnNhbDo6bmV4
dFNraXBwaW5nQ2hpbGRyZW4oKm5vZGUsICZyb290KCkpKSB7CiAgICAgICAgIG5vZGUgPSBuZXh0
U2libGluZzsKICAgICAgICAgc2hvcnQgYWNjZXB0Tm9kZVJlc3VsdCA9IGFjY2VwdE5vZGUobm9k
ZS5nZXQoKSk7CiAgICAgICAgIGlmIChhY2NlcHROb2RlUmVzdWx0ID09IE5vZGVGaWx0ZXI6OkZJ
TFRFUl9BQ0NFUFQpCi0gICAgICAgICAgICByZXR1cm4gc2V0Q3VycmVudChXVEZNb3ZlKG5vZGUp
KTsKKyAgICAgICAgICAgIHJldHVybiBzZXRDdXJyZW50KG5vZGUucmVsZWFzZU5vbk51bGwoKSk7
CiAgICAgICAgIGlmIChhY2NlcHROb2RlUmVzdWx0ID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9TS0lQ
KQogICAgICAgICAgICAgZ290byBDaGlsZHJlbjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVHJlZVdhbGtlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIu
aAppbmRleCAxYjViZTFjMTQyMzQzM2Y2ZWJjNmQ5MTgyYjNkNjMxZWVkMjM2Y2U4Li40NTQwMDc0
OGE1MTgzOTA1YTY1OGM4NzRhMTZlZTAwZTYyOWU0ZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVHJlZVdhbGtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2Vy
LmgKQEAgLTQxLDggKzQxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFRyZWVXYWxrZXIocm9vdE5vZGUsIHdoYXRUb1Nob3csIFdURk1v
dmUoZmlsdGVyKSkpOwogICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogCi0g
ICAgICAgIE5vZGUqIGN1cnJlbnROb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50LmdldCgp
OyB9Ci0gICAgICAgIHZvaWQgc2V0Q3VycmVudE5vZGUoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICAgICAgTm9kZSYgY3VycmVudE5vZGUoKSB7IHJldHVybiBtX2N1cnJlbnQuZ2V0KCk7IH0K
KyAgICAgICAgY29uc3QgTm9kZSYgY3VycmVudE5vZGUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJl
bnQuZ2V0KCk7IH0KKworICAgICAgICB2b2lkIHNldEN1cnJlbnROb2RlKE5vZGUmKTsKIAogICAg
ICAgICBOb2RlKiBwYXJlbnROb2RlKCk7CiAgICAgICAgIE5vZGUqIGZpcnN0Q2hpbGQoKTsKQEAg
LTU3LDkgKzU5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBlbnVtIGNsYXNzIFNp
YmxpbmdUcmF2ZXJzYWxUeXBlIHsgUHJldmlvdXMsIE5leHQgfTsKICAgICAgICAgdGVtcGxhdGU8
U2libGluZ1RyYXZlcnNhbFR5cGU+IE5vZGUqIHRyYXZlcnNlU2libGluZ3MoKTsKICAgICAgICAg
Ci0gICAgICAgIE5vZGUqIHNldEN1cnJlbnQoUmVmUHRyPE5vZGU+JiYpOworICAgICAgICBOb2Rl
KiBzZXRDdXJyZW50KFJlZjxOb2RlPiYmKTsKIAotICAgICAgICBSZWZQdHI8Tm9kZT4gbV9jdXJy
ZW50OworICAgICAgICBSZWY8Tm9kZT4gbV9jdXJyZW50OwogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmlkbAppbmRleCBhZDVjYjVkNjQwMzEw
ZjhjMDM4OTYxZjUxMzJkNWJkZGQyMzY2YzdlLi5iZTkyNzc2YTNkNWQ4YTIxNDQwZGJkM2M3MGNi
MTUxNTUxNjFlMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaWRsCkBAIC0yOSw3ICsyOSw3
IEBACiAjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgJiYgTEFOR1VBR0VfT0JKRUNU
SVZFX0MKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBleHBhbmRFbnRpdHlSZWZlcmVu
Y2VzOwogI2VuZGlmCi0gICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIE5vZGUg
Y3VycmVudE5vZGU7CisgICAgYXR0cmlidXRlIE5vZGUgY3VycmVudE5vZGU7CiAKICAgICBOb2Rl
IHBhcmVudE5vZGUoKTsKICAgICBOb2RlIGZpcnN0Q2hpbGQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmlkbAppbmRleCA4NWJkNDc4YzlhOTI0NjFhM2E2
YmU0M2U5NmVkNDBmMDVlYzE1ZTI1Li5kNjlhMTU3ODBhMzRjM2M0ZTE4NzZhN2RlZDA2NzdlM2My
ZDBjOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxl
bWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
aWRsCkBAIC0yNiw1ICsyNiw1IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9QVRUQUNITUVOVF9FTEVN
RU5UCiBdIGludGVyZmFjZSBIVE1MQXR0YWNobWVudEVsZW1lbnQgOiBIVE1MRWxlbWVudCB7Ci0g
ICAgYXR0cmlidXRlIEZpbGUgZmlsZTsKKyAgICBhdHRyaWJ1dGUgRmlsZT8gZmlsZTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAppbmRleCBlM2QwZjlmYzI2MDY0
OTFhN2QwZmYzOTZlYTY4NmVmZGE2NTQzNzczLi42MjI3NGVhN2U4N2U4NTc2YzYwMmZjZTVlZWZm
M2Q5ZmRkZTZjZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwK
QEAgLTMyLDcgKzMyLDcgQEAKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBkaXJO
YW1lOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgYm9vbGVhbiBkaXNhYmxlZDsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgSFRNTEZvcm1FbGVtZW50IGZvcm07Ci0gICAgYXR0cmlidXRlIEZpbGVM
aXN0IGZpbGVzOworICAgIGF0dHJpYnV0ZSBGaWxlTGlzdD8gZmlsZXM7CiAgICAgYXR0cmlidXRl
IERPTVN0cmluZyBmb3JtQWN0aW9uOwogCiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBub3Qg
dXNlIFtUcmVhdE51bGxBcz1MZWdhY3lOdWxsU3RyaW5nXS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUVsZW1lbnQuaWRsCmluZGV4IGJiMzdiY2RjOTNkN2Y0ZjJjMWZkYzkwZjJmMDAxNjRi
ZGRjNTA3NTEuLmE4ZTc5MmU3YTM0ODgwNmMxYTdiNTBhZTE3YjYwNzdkY2IwZjIzOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmlkbApAQCAtMTksOSArMTksOSBAQAog
ICovCiAKIGludGVyZmFjZSBIVE1MVGFibGVFbGVtZW50IDogSFRNTEVsZW1lbnQgewotICAgIFtT
ZXR0ZXJSYWlzZXNFeGNlcHRpb24sIFN0cmljdFR5cGVDaGVja2luZ10gYXR0cmlidXRlIEhUTUxU
YWJsZUNhcHRpb25FbGVtZW50IGNhcHRpb247Ci0gICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbiwg
U3RyaWN0VHlwZUNoZWNraW5nXSBhdHRyaWJ1dGUgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgdEhl
YWQ7Ci0gICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbiwgU3RyaWN0VHlwZUNoZWNraW5nXSBhdHRy
aWJ1dGUgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgdEZvb3Q7CisgICAgW1NldHRlclJhaXNlc0V4
Y2VwdGlvbiwgU3RyaWN0VHlwZUNoZWNraW5nXSBhdHRyaWJ1dGUgSFRNTFRhYmxlQ2FwdGlvbkVs
ZW1lbnQ/IGNhcHRpb247CisgICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbiwgU3RyaWN0VHlwZUNo
ZWNraW5nXSBhdHRyaWJ1dGUgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ/IHRIZWFkOworICAgIFtT
ZXR0ZXJSYWlzZXNFeGNlcHRpb24sIFN0cmljdFR5cGVDaGVja2luZ10gYXR0cmlidXRlIEhUTUxU
YWJsZVNlY3Rpb25FbGVtZW50PyB0Rm9vdDsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1M
Q29sbGVjdGlvbiByb3dzOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MQ29sbGVjdGlvbiB0
Qm9kaWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9EYXRhQ3VlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5jcHAKaW5kZXggMzlhNzhhZGVl
OTJlYTQ1YmRkNTdlZmMzYWY5NjQ0YmNiODM1ZDU5NS4uNWQ5ZTA0ZThiNzdlMzg3YzNmMTNkODhi
ZTM3ZmFiZjMxMmVmNmEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9E
YXRhQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0RhdGFDdWUuY3BwCkBA
IC0zNiwxMSArMzYsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EYXRhQ3VlOjpEYXRh
Q3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IE1lZGlhVGltZSYgc3Rh
cnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBBcnJheUJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5n
JiB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKK0RhdGFDdWU6OkRhdGFDdWUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFU
aW1lJiBlbmQsIEFycmF5QnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgOiBU
ZXh0VHJhY2tDdWUoY29udGV4dCwgc3RhcnQsIGVuZCkKICAgICAsIG1fdHlwZSh0eXBlKQogewot
ICAgIHNldERhdGEoZGF0YSwgZWMpOworICAgIHNldERhdGEoZGF0YSk7CiB9CiAKIERhdGFDdWU6
OkRhdGFDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgTWVkaWFUaW1l
JiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCkKQEAgLTg4LDEzICs4OCw4IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gRGF0YUN1ZTo6
ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUoKm1fZGF0YSk7CiB9
CiAKLXZvaWQgRGF0YUN1ZTo6c2V0RGF0YShBcnJheUJ1ZmZlciogZGF0YSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit2b2lkIERhdGFDdWU6OnNldERhdGEoQXJyYXlCdWZmZXImIGRhdGEpCiB7Ci0gICAg
aWYgKCFkYXRhKSB7Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCiAgICAgbV9wbGF0Zm9ybVZhbHVlID0g
bnVsbHB0cjsKICAgICBpZiAobV92YWx1ZSkKQEAgLTEwMiw3ICs5Nyw3IEBAIHZvaWQgRGF0YUN1
ZTo6c2V0RGF0YShBcnJheUJ1ZmZlciogZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgbV92
YWx1ZSA9IEpTQzo6SlNWYWx1ZSgpOwogI2VuZGlmCiAKLSAgICBtX2RhdGEgPSBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKCpkYXRhKTsKKyAgICBtX2RhdGEgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGRhdGEp
OwogfQogCiBEYXRhQ3VlKiB0b0RhdGFDdWUoVGV4dFRyYWNrQ3VlKiBjdWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0RhdGFDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svRGF0YUN1ZS5oCmluZGV4IGQ3MWZiODExNzE4YjkxNDE2OTgxYjU1OWVkZTM1ODJk
YzQzMjA3ZjQuLjYyMzI3NzRmNzRiYzhlOGZmMzczZmE4ZmE0ZjcwNjQ5ZmE3MzMzYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5oCkBAIC00NSw5ICs0NSw5IEBAIGNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIERhdGFDdWUgZmluYWwgOiBwdWJsaWMgVGV4dFRy
YWNrQ3VlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERhdGFDdWU+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBN
ZWRpYVRpbWUmIGVuZCwgQXJyYXlCdWZmZXIqIGRhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQorICAg
IHN0YXRpYyBSZWY8RGF0YUN1ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBBcnJheUJ1
ZmZlciYgZGF0YSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFDdWUo
Y29udGV4dCwgc3RhcnQsIGVuZCwgZGF0YSwgZW1wdHlTdHJpbmcoKSwgZWMpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YUN1ZShjb250ZXh0LCBzdGFydCwgZW5kLCBkYXRhLCBl
bXB0eVN0cmluZygpKSk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZjxEYXRhQ3VlPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwg
Y29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkK
QEAgLTU1LDkgKzU1LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
YXRhQ3VlKGNvbnRleHQsIHN0YXJ0LCBlbmQsIGRhdGEsIGxlbmd0aCkpOwogICAgIH0KIAotICAg
IHN0YXRpYyBSZWY8RGF0YUN1ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBBcnJheUJ1
ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKKyAgICBz
dGF0aWMgUmVmPERhdGFDdWU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgQXJyYXlCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERhdGFDdWUoY29udGV4dCwgc3RhcnQsIGVuZCwgZGF0YSwgdHlwZSwgZWMpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YUN1ZShjb250ZXh0LCBzdGFydCwgZW5k
LCBkYXRhLCB0eXBlKSk7CiAgICAgfQogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCkBAIC03
Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBDdWVUeXBlIGN1ZVR5cGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBEYXRhOyB9CiAKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGRhdGEoKSBjb25z
dDsKLSAgICB2b2lkIHNldERhdGEoQXJyYXlCdWZmZXIqLCBFeGNlcHRpb25Db2RlJik7CisgICAg
dm9pZCBzZXREYXRhKEFycmF5QnVmZmVyJik7CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkK
ICAgICBjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiogcGxhdGZvcm1WYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1WYWx1ZS5nZXQoKTsgfQpAQCAtOTMsNyArOTMs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkb2VzRXh0ZW5kQ3VlKGNvbnN0IFRleHRUcmFja0N1ZSYp
IGNvbnN0IG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAgRGF0YUN1ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQs
IEFycmF5QnVmZmVyKiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIERhdGFD
dWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0
IE1lZGlhVGltZSYgZW5kLCBBcnJheUJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogICAgIERhdGFD
dWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0
IE1lZGlhVGltZSYgZW5kLCBjb25zdCB2b2lkKiwgdW5zaWduZWQpOwogI2lmIEVOQUJMRShEQVRB
Q1VFX1ZBTFVFKQogICAgIERhdGFDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1l
ZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBSZWZQdHI8U2VyaWFsaXplZFBs
YXRmb3JtUmVwcmVzZW50YXRpb24+JiYsIGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9EYXRhQ3VlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svRGF0YUN1ZS5pZGwKaW5kZXggZmE1ZTI1ZWQ0N2M2NjNlZTQyNTliMTczMmMwZTdjYWZl
ZjQ0YzA4NC4uNTkyMzQ4OWZjZDVmOGM2NWU5YTUyMDc0YWQzMjk0YTdhMTczMmZiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9EYXRhQ3VlLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0RhdGFDdWUuaWRsCkBAIC0zNCw3ICszNCw3IEBACiAjZW5kaWYK
ICAgICBDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiwKIF0gaW50ZXJmYWNlIERhdGFDdWUgOiBU
ZXh0VHJhY2tDdWUgewotICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBBcnJh
eUJ1ZmZlciBkYXRhOworICAgIGF0dHJpYnV0ZSBBcnJheUJ1ZmZlciBkYXRhOwogCiAjaWYgZGVm
aW5lZChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJiYgRU5BQkxFX0RBVEFDVUVfVkFMVUUKICAgICBb
Q3VzdG9tR2V0dGVyLCBDdXN0b21TZXR0ZXJdIGF0dHJpYnV0ZSBhbnkgdmFsdWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277878</attachid>
            <date>2016-05-01 17:19:18 -0700</date>
            <delta_ts>2016-05-01 17:49:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157250-20160501171953.patch</filename>
            <type>text/plain</type>
            <size>65244</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJlMDJhNGM1MTYyOWQ3
NDk2NDVlM2YyYmE4OTRhNzdiMjBiZGVjYS4uNDdiMjAxYmI2NTI2OTE4MzM4ZTFkOGU3ZjZhOGEx
MzRjNTNhYWJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwNiBAQAogMjAxNi0wNS0wMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIFBhc3MgcmVmZXJlbmNlIGlu
c3RlYWQgb2YgcG9pbnRlciB0byBJREwgYXR0cmlidXRlIHNldHRlcnMgaWYgbm90IG51bGxhYmxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcyNTAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUg
dGhlIGJpbmRpbmdzIGdlbmVyYXRvciBzbyB0aGF0IHdlIHBhc3Mgd3JhcHBlciB0eXBlcyBieSBy
ZWZlcmVuY2UKKyAgICAgICAgdG8gYXR0cmlidXRlIHNldHRlcnMgaW5zdGVhZCBvZiBieSByYXcg
cG9pbnRlciB3aGVuIHRoZSBhdHRyaWJ1dGUgaXMgbm90CisgICAgICAgIG1hcmtlZCBhcyBudWxs
YWJsZSBpbiB0aGUgSURMLgorCisgICAgICAgIFRoZXJlIGlzIG5vdCBpbnRlbmRlZCBXZWItZXhw
b3NlZCBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQ29udm9s
dmVyTm9kZS5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTRGF0YUN1ZSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBt
OgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9i
alRlc3RPYmpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakxlbmllbnRUZXN0
T2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVu
dHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
V2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOiBEZWxldGVkLgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW06CisgICAg
ICAgICgtW0RPTVRlc3RJbnRlcmZhY2Ugc2V0SW1wbGVtZW50c05vZGU6XSk6CisgICAgICAgICgt
W0RPTVRlc3RJbnRlcmZhY2Ugc2V0U3VwcGxlbWVudGFsTm9kZTpdKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tOgorICAgICAgICAoLVtET01UZXN0
T2JqIHNldFRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nOl0pOgorICAgICAgICAoLVtET01UZXN0
T2JqIHNldFRlc3RPYmpBdHRyOl0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHNldExlbmllbnRU
ZXN0T2JqQXR0cjpdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiBzZXRYTUxPYmpBdHRyOl0pOgor
ICAgICAgICAoLVtET01UZXN0T2JqIHNldFN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZTpdKToK
KyAgICAgICAgKC1bRE9NVGVzdE9iaiBzZXRKc0J1aWx0aW5BdHRyaWJ1dGU6XSk6CisgICAgICAg
ICgtW0RPTVRlc3RPYmogc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGU6XSk6
CisgICAgICAgICgtW0RPTVRlc3RPYmogc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
Ol0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlUmFpc2VzOl0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHNldFdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGU6XSk6CisgICAgICAgICgtW0RP
TVRlc3RPYmogc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlczpdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiBzZXRXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZTpdKToKKyAgICAgICAg
KC1bRE9NVGVzdE9iaiBzZXRXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRl
Ol0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHNldENvbmRpdGlvbmFsQXR0cjQ6XSk6CisgICAg
ICAgICgtW0RPTVRlc3RPYmogc2V0Q29uZGl0aW9uYWxBdHRyNTpdKToKKyAgICAgICAgKC1bRE9N
VGVzdE9iaiBzZXRDb25kaXRpb25hbEF0dHI2Ol0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHN0
cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZV0pOiBEZWxldGVkLgorICAgICAgICAoLVtET01UZXN0
T2JqIGpzQnVpbHRpbkF0dHJpYnV0ZV0pOiBEZWxldGVkLgorICAgICAgICAoLVtET01UZXN0T2Jq
IHdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc10pOiBEZWxldGVkLgorICAgICAgICAoLVtE
T01UZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3Bh
Y2VzQXR0cmlidXRlXSk6IERlbGV0ZWQuCisgICAgICAgICgtW0RPTVRlc3RPYmogY29uZGl0aW9u
YWxBdHRyNF0pOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50KToKKyAg
ICAgICAgKiBkb20vTm9kZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVJdGVy
YXRvcjo6Tm9kZVBvaW50ZXI6Ok5vZGVQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVJ
dGVyYXRvcjo6Tm9kZVBvaW50ZXI6Om1vdmVUb05leHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZUl0ZXJhdG9yOjpOb2RlUG9pbnRlcjo6bW92ZVRvUHJldmlvdXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZUl0ZXJhdG9yOjpOb2RlSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0
ZXJhdG9yOjp+Tm9kZUl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVJdGVyYXRvcjo6
dXBkYXRlRm9yTm9kZVJlbW92YWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJhdG9yOjpO
b2RlUG9pbnRlcjo6Y2xlYXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJh
dG9yOjpuZXh0Tm9kZSk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL05vZGVJdGVyYXRvci5oOgor
ICAgICAgICAqIGRvbS9UcmF2ZXJzYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJh
dG9yQmFzZTo6Tm9kZUl0ZXJhdG9yQmFzZSk6CisgICAgICAgICogZG9tL1RyYXZlcnNhbC5oOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJhdG9yQmFzZTo6cm9vdCk6CisgICAgICAgICogZG9t
L1RyZWVXYWxrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtlcjo6c2V0Q3VycmVu
dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtlcjo6c2V0Q3VycmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmVlV2Fsa2VyOjpwYXJlbnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRyZWVXYWxrZXI6OmZpcnN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtlcjo6
bGFzdENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVXYWxrZXI6OnRyYXZlcnNlU2libGlu
Z3MpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtlcjo6cHJldmlvdXNOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRyZWVXYWxrZXI6Om5leHROb2RlKToKKyAgICAgICAgKiBkb20vVHJlZVdh
bGtlci5oOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtlcjo6Y3VycmVudE5vZGUpOgorICAg
ICAgICAqIGRvbS9UcmVlV2Fsa2VyLmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50
RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbDoKKyAgICAg
ICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvdHJhY2svRGF0
YUN1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhQ3VlOjpEYXRhQ3VlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFDdWU6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6dG9EYXRhQ3Vl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL0RhdGFDdWUuaDoKKyAgICAgICAgKiBo
dG1sL3RyYWNrL0RhdGFDdWUuaWRsOgorCisyMDE2LTA1LTAxICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKICAgICAgICAgVW5yZXZpZXdlZCBhdHRlbXB0IHRvIGZpeCBXaW5kb3dz
IGJ1aWxkIGFmdGVyIHIyMDAyODguCiAKICAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaWRsCmluZGV4IGMzNGM3ZmI3NmI1ZTg1Nzg4
MDc0NDI1ZWQ1NDZjMWIzMGFiYzhiOWYuLmU3ODFmNTI0NDQ3Zjk0MTgwODhjOGEyN2E2Y2VkMzA2
MzM3NTI0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmlkbApAQCAtMzAsNyArMzAsNyBAQAogXSBpbnRl
cmZhY2UgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIDogRXZlbnRUYXJnZXQgewogICAgIGF0dHJp
YnV0ZSBET01TdHJpbmcgdGV4dDsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhbmc7Ci0gICAg
YXR0cmlidXRlIFNwZWVjaFN5bnRoZXNpc1ZvaWNlIHZvaWNlOworICAgIGF0dHJpYnV0ZSBTcGVl
Y2hTeW50aGVzaXNWb2ljZT8gdm9pY2U7IC8vIEZJWE1FOiBzaG91bGQgbm90IGJlIG51bGxhYmxl
LgogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgdm9sdW1lOwogICAgIGF0dHJpYnV0
ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgcmF0ZTsKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZs
b2F0IHBpdGNoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9s
dmVyTm9kZS5pZGwKaW5kZXggZGJkYzEyNmU0M2JiMWMwNTdlZjUyZWJkZGNhYmUzN2NlNGViOWE0
Yi4uZjBkM2Y3NGQ2Nzg0OTYyZDU2MzU5Mjk2MzM5MGQ3ZTRjMjJlMDNhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaWRsCkBAIC0yNyw2
ICsyNyw2IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAogICAgIEpTR2VuZXJhdGVUb0pT
T2JqZWN0CiBdIGludGVyZmFjZSBDb252b2x2ZXJOb2RlIDogQXVkaW9Ob2RlIHsKLSAgICBbU2V0
dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgQXVkaW9CdWZmZXIgYnVmZmVyOworICAgIFtT
ZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBBdWRpb0J1ZmZlcj8gYnVmZmVyOwogICAg
IGF0dHJpYnV0ZSBib29sZWFuIG5vcm1hbGl6ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcAppbmRleCBiZTUzZWJlZDk1MTQxYmY2ODU2MTk3
NWM0MTY3YWU1MmMwMWUyZWJkLi5mZTRkMzZkZTc0ZDFjMmY2Zjc2MzA0OWExMzM4Nzk4MWVkMWYz
ZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5j
cHAKQEAgLTUzLDcgKzUzLDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RKU0RhdGFDdWUoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50
KCkgPCAzKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IGRvdWJsZSBzdGFydFRpbWUoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpOwogICAg
IGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC04NCwxNiArODMsMTcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0RhdGFDdWUoRXhlY1N0YXRlKiBleGVjKQog
ICAgIFJlZlB0cjxEYXRhQ3VlPiBvYmplY3Q7CiAgICAgaWYgKHZhbHVlQXJndW1lbnQuaXNDZWxs
KCkgJiYgdmFsdWVBcmd1bWVudC5hc0NlbGwoKS0+aW5oZXJpdHMoc3RkOjpyZW1vdmVfcG9pbnRl
cjxKU0FycmF5QnVmZmVyKj46OnR5cGU6OmluZm8oKSkpIHsKIAotICAgICAgICBBcnJheUJ1ZmZl
ciogZGF0YSh0b0FycmF5QnVmZmVyKHZhbHVlQXJndW1lbnQpKTsKKyAgICAgICAgQXJyYXlCdWZm
ZXIqIGRhdGEgPSB0b0FycmF5QnVmZmVyKHZhbHVlQXJndW1lbnQpOwogICAgICAgICBpZiAoVU5M
SUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgICAgICBvYmplY3QgPSBEYXRhQ3VlOjpjcmVh
dGUoKmNvbnRleHQsIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydFRpbWUpLCBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kVGltZSksIGRhdGEsIHR5cGUsIGVjKTsKLSAgICAg
ICAgaWYgKGVjKSB7Ci0gICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAg
ICAgICBpZiAoIWRhdGEpIHsKKyAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUeXBl
RXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwog
ICAgICAgICB9CiAKKyAgICAgICAgb2JqZWN0ID0gRGF0YUN1ZTo6Y3JlYXRlKCpjb250ZXh0LCBN
ZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoc3RhcnRUaW1lKSwgTWVkaWFUaW1lOjpjcmVhdGVX
aXRoRG91YmxlKGVuZFRpbWUpLCAqZGF0YSwgdHlwZSk7CisKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBvYmplY3QuZ2V0KCkpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQppbmRleCBhZGVjNzliZWNi
YTY3NmZmMWQ1NTNiZDZjMTMxNzNiMThkYTU4N2EwLi44MzEzMDcxNDIwYjk0ZGI4NjhmNmJhZDY0
MGQ2Y2Y4YzY1MGU5YzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0KQEAgLTExMTAsOSArMTExMCw3IEBAIHN1
YiBHZW5lcmF0ZUZ1bmN0aW9uIHsKICAgICAgICAgfQogICAgICAgICBpZiAoJHBhcmFtSXNHRE9N
VHlwZSB8fCAoJHBhcmFtSURMVHlwZSBlcSAiRE9NU3RyaW5nIikpIHsKICAgICAgICAgICAgICRw
YXJhbU5hbWUgPSAiY29udmVydGVkIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRwYXJh
bU5hbWUpOwotICAgICAgICAgICAgaWYgKCRwcmVmaXggbmUgInNldF8iICYmICRjb2RlR2VuZXJh
dG9yLT5TaG91bGRQYXNzV3JhcHBlckJ5UmVmZXJlbmNlKCRwYXJhbSwgJHBhcmVudE5vZGUpKSB7
Ci0gICAgICAgICAgICAgICAgJHBhcmFtTmFtZSA9ICIqJHBhcmFtTmFtZSI7Ci0gICAgICAgICAg
ICB9CisgICAgICAgICAgICAkcGFyYW1OYW1lID0gIiokcGFyYW1OYW1lIiBpZiAoJGNvZGVHZW5l
cmF0b3ItPlNob3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2UoJHBhcmFtLCAkcGFyZW50Tm9kZSkp
OwogICAgICAgICB9CiAgICAgICAgIGlmICgkcGFyYW1JRExUeXBlIGVxICJOb2RlRmlsdGVyIiB8
fCAkcGFyYW1JRExUeXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7CiAgICAgICAgICAgICAkcGFy
YW1OYW1lID0gIldURjo6Z2V0UHRyKCIgLiAkcGFyYW1OYW1lIC4gIikiOwpAQCAtMTQ5Nyw2ICsx
NDk1LDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25zIHsKICAgICAgICAgbXkgJHBhcmFtID0gbmV3
IGRvbVNpZ25hdHVyZSgpOwogICAgICAgICAkcGFyYW0tPm5hbWUoInZhbHVlIik7CiAgICAgICAg
ICRwYXJhbS0+dHlwZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOworICAgICAgICAkcGFy
YW0tPmlzTnVsbGFibGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlKTsKICAgICAg
ICAgbXkgJWF0dHJpYnV0ZXMgPSAoKTsKICAgICAgICAgJHBhcmFtLT5leHRlbmRlZEF0dHJpYnV0
ZXMoXCVhdHRyaWJ1dGVzKTsKICAgICAgICAgbXkgJGFycmF5UmVmID0gJGZ1bmN0aW9uLT5wYXJh
bWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQppbmRleCBkMGNiYTMzN2FmZDdhOGU5ZTZkZTM5YzZlNzBmZmFlZTUwZWMwY2Vh
Li4yZjRkYzlkYmE4ZTNjNmFjNTM4ZmZlZjhlYzc1YjNhMzkxNTE5ZmY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjg2
MCw2ICsyODYwLDE0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAg
ICAgICAgIHB1c2ggKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAg
ICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgbXkgJHNob3VsZFBhc3NCeVJlZmVy
ZW5jZSA9IFNob3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2UoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LCAkaW50ZXJmYWNlKTsKKyAgICAgICAgICAgICAgICBpZiAoJHNob3VsZFBhc3NCeVJlZmVyZW5j
ZSkgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5M
SUtFTFkoIW5hdGl2ZVZhbHVlKSkge1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTtcbiIpOworICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xu
Iik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwor
ICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmICgkdHlwZSBlcSAiZG91Ymxl
IiBvciAkdHlwZSBlcSAiZmxvYXQiKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghc3RkOjppc2Zpbml0ZShuYXRpdmVWYWx1ZSkpKSB7
XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUpO1xuIik7CkBAIC0yOTAzLDcgKzI5MTEsNyBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkY29kZUdl
bmVyYXRvci0+SXNFbnVtVHlwZSgkdHlwZSkgYW5kIG5vdCAkY29kZUdlbmVyYXRvci0+SXNTdHJp
bmdCYXNlZEVudW1UeXBlKCR0eXBlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
YXJndW1lbnRzLCAibmF0aXZlVmFsdWUudmFsdWUoKSIpOwogICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAibmF0aXZl
VmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgJHNob3Vs
ZFBhc3NCeVJlZmVyZW5jZSA/ICIqbmF0aXZlVmFsdWUiIDogIm5hdGl2ZVZhbHVlIik7CiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQppbmRleCA2
MWExZDBhM2Q1MTJhNDc4MmIyNmE5OTZjOGIwZjY1YjJhMWM1ZjE4Li44MWM0NWUwNTE5YWVlNWFj
ODFlZDdlNGJlYTI0ZDU5ZTkxMzJhZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KQEAgLTE0MTcsNiArMTQxNywxMiBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAkYXJnID0g
ImNvcmUoIiAuICRhcmcgLiAiKSI7CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5TaG91bGRQYXNzV3JhcHBlckJ5UmVmZXJlbmNlKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZSwgJGludGVyZmFjZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKCEkYXJnKVxuIik7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2Vw
dGlvbigpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICRhcmcgPSAiKiRhcmciOworICAgICAg
ICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25OYW1lLCBAYXJndW1l
bnRzKSA9ICRjb2RlR2VuZXJhdG9yLT5TZXR0ZXJFeHByZXNzaW9uKFwlaW1wbEluY2x1ZGVzLCAk
aW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAgcHVzaChAYXJndW1l
bnRzLCAkYXJnKTsKICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJlYyIpIGlmICRo
YXNTZXR0ZXJFeGNlcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZh
Y2UuY3BwCmluZGV4IDg4NjdlZDYyYTQ5YTJmZjQ5NWRkNWYyY2MxZDY2OGQ2MDNiZWI2YzIuLmI2
MzE3ZTEzNzA2NWEyNzQ4NmU3YjYyMmY5MTI3NDllZjM3MTY5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRl
cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwCkBAIC00NTAsNyArNDUwLDcgQEAgdm9pZCB3
ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX3NldF9pbXBsZW1lbnRzX25vZGUoV2ViS2l0RE9NVGVz
dEludGVyZmFjZSogc2VsZiwKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfTk9E
RSh2YWx1ZSkpOwogICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7CiAgICAgV2ViQ29yZTo6Tm9kZSogY29udmVydGVkVmFsdWUgPSBXZWJLaXQ6OmNv
cmUodmFsdWUpOwotICAgIGl0ZW0tPnNldEltcGxlbWVudHNOb2RlKGNvbnZlcnRlZFZhbHVlKTsK
KyAgICBpdGVtLT5zZXRJbXBsZW1lbnRzTm9kZSgqY29udmVydGVkVmFsdWUpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oc2VsZik7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKQEAgLTU2Nyw3
ICs1NjcsNyBAQCB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc2V0X3N1cHBsZW1lbnRh
bF9ub2RlKFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbAogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0RPTV9JU19OT0RFKHZhbHVlKSk7CiAgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpOb2RlKiBjb252ZXJ0ZWRW
YWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRh
bDo6c2V0U3VwcGxlbWVudGFsTm9kZSgqaXRlbSwgY29udmVydGVkVmFsdWUpOworICAgIFdlYkNv
cmU6OlRlc3RTdXBwbGVtZW50YWw6OnNldFN1cHBsZW1lbnRhbE5vZGUoKml0ZW0sICpjb252ZXJ0
ZWRWYWx1ZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKICAgICBVTlVTRURfUEFS
QU0odmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAppbmRleCA3ZjRkMzM2
ZmQyNWNjM2EzYWJkOWY3MTE3YzMzNjgwNmNmYTk4Mzg2Li5lMTRhNjNmNzVmZTQwMWNhYTI5MTgx
MWQ2OTNjMjI3N2RjN2M5Mjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcApA
QCAtOTIsNiArOTIsNyBAQCBlbnVtIHsKICAgICBQUk9QX1VOU0lHTkVEX0xPTkdfTE9OR19BVFRS
LAogICAgIFBST1BfU1RSSU5HX0FUVFIsCiAgICAgUFJPUF9URVNUX09CSl9BVFRSLAorICAgIFBS
T1BfVEVTVF9OVUxMQUJMRV9PQkpfQVRUUiwKICAgICBQUk9QX0xFTklFTlRfVEVTVF9PQkpfQVRU
UiwKICAgICBQUk9QX1VORk9SR0VBQkxFX0FUVFIsCiAgICAgUFJPUF9TVFJJTkdfQVRUUl9UUkVB
VElOR19OVUxMX0FTX0VNUFRZX1NUUklORywKQEAgLTMyNyw2ICszMjgsOSBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50
IHByb3BlcnR5SWQsCiAgICAgY2FzZSBQUk9QX1RFU1RfT0JKX0FUVFI6CiAgICAgICAgIGdfdmFs
dWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfdGVzdF9vYmpfYXR0
cihzZWxmKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9URVNUX05VTExBQkxFX09C
Sl9BVFRSOgorICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIHdlYmtpdF9kb21fdGVz
dF9vYmpfZ2V0X3Rlc3RfbnVsbGFibGVfb2JqX2F0dHIoc2VsZikpOworICAgICAgICBicmVhazsK
ICAgICBjYXNlIFBST1BfTEVOSUVOVF9URVNUX09CSl9BVFRSOgogICAgICAgICBnX3ZhbHVlX3Nl
dF9vYmplY3QodmFsdWUsIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2xlbmllbnRfdGVzdF9vYmpf
YXR0cihzZWxmKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNjU3LDYgKzY2MSwxNiBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2NsYXNzX2luaXQoV2ViS2l0RE9NVGVzdE9iakNsYXNz
KiByZXF1ZXN0Q2xhc3MpCiAKICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAog
ICAgICAgICBnb2JqZWN0Q2xhc3MsCisgICAgICAgIFBST1BfVEVTVF9OVUxMQUJMRV9PQkpfQVRU
UiwKKyAgICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgKKyAgICAgICAgICAgICJ0ZXN0LW51bGxh
YmxlLW9iai1hdHRyIiwKKyAgICAgICAgICAgICJUZXN0T2JqOnRlc3QtbnVsbGFibGUtb2JqLWF0
dHIiLAorICAgICAgICAgICAgInJlYWQtb25seSBXZWJLaXRET01UZXN0T2JqKiBUZXN0T2JqOnRl
c3QtbnVsbGFibGUtb2JqLWF0dHIiLAorICAgICAgICAgICAgV0VCS0lUX0RPTV9UWVBFX1RFU1Rf
T0JKLAorICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7CisKKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBnb2JqZWN0Q2xhc3MsCiAgICAgICAg
IFBST1BfTEVOSUVOVF9URVNUX09CSl9BVFRSLAogICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0
KAogICAgICAgICAgICAgImxlbmllbnQtdGVzdC1vYmotYXR0ciIsCkBAIC0yMjAyLDcgKzIyMTYs
MjYgQEAgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF90ZXN0X29ial9hdHRyKFdlYktpdERP
TVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTVRlc3QKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfVEVTVF9PQkoodmFsdWUpKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZlcnRlZFZhbHVl
ID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKLSAgICBpdGVtLT5zZXRUZXN0T2JqQXR0cihjb252ZXJ0
ZWRWYWx1ZSk7CisgICAgaXRlbS0+c2V0VGVzdE9iakF0dHIoKmNvbnZlcnRlZFZhbHVlKTsKK30K
KworV2ViS2l0RE9NVGVzdE9iaiogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfdGVzdF9udWxsYWJs
ZV9vYmpfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQoreworICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
RE9NX0lTX1RFU1RfT0JKKHNlbGYpLCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBnb2JqZWN0
UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+dGVzdE51bGxhYmxlT2JqQXR0cigpKTsKKyAgICBy
ZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Cit9CisKK3ZvaWQgd2Via2l0
X2RvbV90ZXN0X29ial9zZXRfdGVzdF9udWxsYWJsZV9vYmpfYXR0cihXZWJLaXRET01UZXN0T2Jq
KiBzZWxmLCBXZWJLaXRET01UZXN0T2JqKiB2YWx1ZSkKK3sKKyAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lT
X1RFU1RfT0JKKHNlbGYpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVT
VF9PQkoodmFsdWUpKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3Jl
KHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZlcnRlZFZhbHVlID0gV2ViS2l0Ojpj
b3JlKHZhbHVlKTsKKyAgICBpdGVtLT5zZXRUZXN0TnVsbGFibGVPYmpBdHRyKGNvbnZlcnRlZFZh
bHVlKTsKIH0KIAogV2ViS2l0RE9NVGVzdE9iaiogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfbGVu
aWVudF90ZXN0X29ial9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCkBAIC0yMjIxLDcgKzIy
NTQsNyBAQCB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2xlbmllbnRfdGVzdF9vYmpfYXR0
cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0RPTV9JU19URVNUX09CSih2YWx1ZSkpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkVmFs
dWUgPSBXZWJLaXQ6OmNvcmUodmFsdWUpOwotICAgIGl0ZW0tPnNldExlbmllbnRUZXN0T2JqQXR0
cihjb252ZXJ0ZWRWYWx1ZSk7CisgICAgaXRlbS0+c2V0TGVuaWVudFRlc3RPYmpBdHRyKCpjb252
ZXJ0ZWRWYWx1ZSk7CiB9CiAKIGdjaGFyKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF91bmZvcmdl
YWJsZV9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCkBAIC0yMjY4LDcgKzIzMDEsNyBAQCB2
b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3htbF9vYmpfYXR0cihXZWJLaXRET01UZXN0T2Jq
KiBzZWxmLCBXZWJLaXRET01UZXN0TwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19URVNUX09CSih2YWx1ZSkpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6
OmNvcmUoc2VsZik7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkVmFsdWUgPSBXZWJL
aXQ6OmNvcmUodmFsdWUpOwotICAgIGl0ZW0tPnNldFhNTE9iakF0dHIoY29udmVydGVkVmFsdWUp
OworICAgIGl0ZW0tPnNldFhNTE9iakF0dHIoKmNvbnZlcnRlZFZhbHVlKTsKIH0KIAogZ2Jvb2xl
YW4gd2Via2l0X2RvbV90ZXN0X29ial9nZXRfY3JlYXRlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYp
CkBAIC0yNjIyLDcgKzI2NTUsNyBAQCB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3N0cmlj
dF90eXBlX2NoZWNraW5nX2F0dHJpYnV0ZShXZWJLaXRET01UZXN0T2JqKiBzZQogICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSih2YWx1ZSkpOwogICAgIFdlYkNvcmU6
OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV2ViQ29yZTo6VGVzdE9i
aiogY29udmVydGVkVmFsdWUgPSBXZWJLaXQ6OmNvcmUodmFsdWUpOwotICAgIGl0ZW0tPnNldFN0
cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZShjb252ZXJ0ZWRWYWx1ZSk7CisgICAgaXRlbS0+c2V0
U3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKCpjb252ZXJ0ZWRWYWx1ZSk7CiB9CiAKIGdsb25n
IHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3dpdGhfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZShXZWJL
aXRET01UZXN0T2JqKiBzZWxmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCmluZGV4IDBj
MzFiMjRlZTU1ZTA5YWM5YWQ5ZGMxNGE2ZDQyOTE3OGU2ZmU0YzMuLjEwYmE0NDFhYTRiNzkxMzBh
ZTQwZjgyN2E2NWIyMWE4ZDIzNTRhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgK
QEAgLTExNzcsNiArMTE3NywyNyBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9v
Ympfc2V0X3Rlc3Rfb2JqX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NVGVz
dE9iaiogdmFsdWUpOwogCiAvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Rlc3RfbnVs
bGFibGVfb2JqX2F0dHI6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJl
dHVybnM6ICh0cmFuc2ZlciBub25lKTogQSAjV2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFN0YWJp
bGl0eTogVW5zdGFibGUKKyoqLworV0VCS0lUX0FQSSBXZWJLaXRET01UZXN0T2JqKgord2Via2l0
X2RvbV90ZXN0X29ial9nZXRfdGVzdF9udWxsYWJsZV9vYmpfYXR0cihXZWJLaXRET01UZXN0T2Jq
KiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF90ZXN0X251bGxhYmxl
X29ial9hdHRyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEB2YWx1ZTogQSAj
V2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFN0YWJpbGl0eTogVW5zdGFibGUKKyoqLworV0VCS0lU
X0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF90ZXN0X251bGxhYmxlX29ial9hdHRy
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTVRlc3RPYmoqIHZhbHVlKTsKKworLyoq
CiAgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9sZW5pZW50X3Rlc3Rfb2JqX2F0dHI6CiAgKiBA
c2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXgg
OTcxY2NhNDgwNDU3NzgzYjY2YmRhNGYwN2JmYzhjNGQ2YWEwYmFmNS4uZmE3MjNhNzI5YWM1ZDc3
MDc0ZTQ0OTE5YTY3MzM0NjY0ZWFlNDU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAgLTY4
Niw3ICs2ODYsMTEgQEAgYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZShFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUKICAgICBOb2RlKiBuYXRpdmVW
YWx1ZSA9IEpTTm9kZTo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGltcGwuc2V0SW1w
bGVtZW50c05vZGUobmF0aXZlVmFsdWUpOworICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUp
KSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIGltcGwuc2V0SW1wbGVtZW50c05vZGUoKm5hdGl2ZVZhbHVlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNzUyLDcgKzc1NiwxMSBAQCBib29sIHNldEpTVGVzdElu
dGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbAogICAgIE5vZGUqIG5hdGl2ZVZhbHVlID0gSlNOb2RlOjp0b1dyYXBwZWQodmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFs
Tm9kZShpbXBsLCBuYXRpdmVWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkp
IHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFs
Tm9kZShpbXBsLCAqbmF0aXZlVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CmluZGV4IDc4ZDViZWJkYzRlMzc1MDI0Y2E1MjlhYjcxOTI0MjMxMThhYTI4NGIuLmNjZDEzYmE2
Yjg1ZjhmYWZhNGEzNGM1M2I4MmE5OTUxY2Y4ZTY0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC00MzAsNiAr
NDMwLDggQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlMKIGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5n
QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0T2JqQXR0cihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wg
c2V0SlNUZXN0T2JqVGVzdE9iakF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
VGVzdE51bGxhYmxlT2JqQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0T2JqVGVzdE51bGxhYmxlT2JqQXR0
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMZW5pZW50VGVzdE9iakF0dHIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBi
b29sIHNldEpTVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpVbmZvcmdlYWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CkBAIC03NDMsNiArNzQ1LDcgQEAgc3RhdGljIGNv
bnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogICAg
IHsgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIiwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cikg
fSB9LAogICAgIHsgInN0cmluZ0F0dHIiLCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RP
YmpTdHJpbmdBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqU3RyaW5nQXR0cikgfSB9LAogICAgIHsgInRlc3RPYmpB
dHRyIiwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqVGVzdE9iakF0dHIpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RPYmpUZXN0T2JqQXR0cikgfSB9LAorICAgIHsgInRlc3ROdWxsYWJsZU9iakF0dHIiLCBDdXN0
b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpUZXN0TnVsbGFibGVPYmpBdHRyKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
T2JqVGVzdE51bGxhYmxlT2JqQXR0cikgfSB9LAogICAgIHsgImxlbmllbnRUZXN0T2JqQXR0ciIs
IEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0ciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdE9iakxlbmllbnRUZXN0T2JqQXR0cikgfSB9LAogICAgIHsgInN0cmluZ0F0dHJUcmVhdGlu
Z051bGxBc0VtcHR5U3RyaW5nIiwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqU3Ry
aW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyVHJl
YXRpbmdOdWxsQXNFbXB0eVN0cmluZykgfSB9LAogICAgIHsgIlhNTE9iakF0dHIiLCBDdXN0b21B
Y2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpYTUxPYmpBdHRyKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqWE1MT2JqQXR0
cikgfSB9LApAQCAtMTMyOSw2ICsxMzMyLDIxIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialRl
c3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwKIH0K
IAogCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0TnVsbGFibGVPYmpBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CisgICAg
SlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7Cisg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRo
aXNWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgeworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ0ZXN0TnVsbGFibGVP
YmpBdHRyIik7CisgICAgfQorICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgV1RGOjpnZXRQdHIoaW1wbC50ZXN0TnVsbGFibGVPYmpBdHRyKCkpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKKwogRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqTGVuaWVudFRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CkBAIC0y
NTcyLDcgKzI1OTAsMjggQEAgYm9vbCBzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWQKICAgICBUZXN0T2JqKiBu
YXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlt
cGwuc2V0VGVzdE9iakF0dHIobmF0aXZlVmFsdWUpOworICAgIGlmIChVTkxJS0VMWSghbmF0aXZl
VmFsdWUpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIGltcGwuc2V0VGVzdE9iakF0dHIoKm5hdGl2ZVZhbHVlKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworCitib29sIHNldEpTVGVzdE9ialRlc3ROdWxsYWJsZU9i
akF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOworICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOworICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKKyAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVz
dE51bGxhYmxlT2JqQXR0ciIpOworICAgIH0KKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOworICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBw
ZWQodmFsdWUpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaW1wbC5zZXRUZXN0TnVsbGFibGVPYmpBdHRyKG5hdGl2
ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjU4OSw3ICsyNjI4LDExIEBAIGJv
b2wgc2V0SlNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9i
ajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGltcGwuc2V0TGVuaWVudFRlc3RPYmpB
dHRyKG5hdGl2ZVZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgeworICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICBpbXBsLnNldExlbmllbnRUZXN0T2JqQXR0cigqbmF0aXZlVmFsdWUpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC0yNjIzLDcgKzI2NjYsMTEgQEAgYm9vbCBzZXRKU1Rlc3RPYmpY
TUxPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEoKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGltcGwuc2V0WE1MT2JqQXR0cihuYXRpdmVWYWx1ZSk7CisgICAg
aWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaW1wbC5zZXRYTUxPYmpB
dHRyKCpuYXRpdmVWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI4MjksNiArMjg3
NiwxMCBAQCBib29sIHNldEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jbwogICAgIFJlZlB0cjxGbG9hdDMyQXJyYXk+
IG5hdGl2ZVZhbHVlID0gdG9GbG9hdDMyQXJyYXkodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKFVO
TElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgaW1wbC5zZXRUeXBlZEFycmF5QXR0
cihuYXRpdmVWYWx1ZS5nZXQoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yOTU4LDcgKzMw
MDksMTEgQEAgYm9vbCBzZXRKU1Rlc3RPYmpTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGgKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1
ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGltcGwuc2V0U3Ry
aWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKG5hdGl2ZVZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFko
IW5hdGl2ZVZhbHVlKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpbXBsLnNldFN0cmljdFR5cGVDaGVja2luZ0F0
dHJpYnV0ZSgqbmF0aXZlVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMDQ4LDEw
ICszMTAzLDE0IEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTCiAgICAgVGVzdE9iaiogbmF0aXZl
VmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoVU5M
SUtFTFkoIW5hdGl2ZVZhbHVlKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKCpj
b250ZXh0LCBuYXRpdmVWYWx1ZSk7CisgICAgaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEF0dHJpYnV0ZSgqY29udGV4dCwgKm5hdGl2ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtMzA2OCw3ICszMTI3LDExIEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlCiAgICAg
VGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpbXBsLnNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygqc3RhdGUsIG5h
dGl2ZVZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgeworICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICBpbXBsLnNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygqc3RhdGUsICpuYXRpdmVW
YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMwODUsMTAgKzMxNDgsMTQgQEAgYm9v
bCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhF
eGVjU3RhdGUqIHN0YXRlLCBFbmMKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9i
ajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFs
dWUpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGltcGwu
c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoKmNvbnRleHQsIG5h
dGl2ZVZhbHVlKTsKKyAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlUmFpc2VzKCpjb250ZXh0LCAqbmF0aXZlVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC0zMTA1LDEwICszMTcyLDE0IEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0CiAgICAgVGVz
dE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICBhdXRvKiBjb250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKnN0YXRlLCAqY29udGV4dCwgbmF0aXZlVmFsdWUpOwor
ICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJp
YnV0ZSgqc3RhdGUsICpjb250ZXh0LCAqbmF0aXZlVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC0zMTI1LDEwICszMTk2LDE0IEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhCiAgICAg
VGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgeworICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICBhdXRvKiBj
b250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoKnN0YXRlLCAqY29udGV4dCwgbmF0aXZl
VmFsdWUpOworICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZVJhaXNlcygqc3RhdGUsICpjb250ZXh0LCAqbmF0aXZlVmFsdWUpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0zMTQ1LDEwICszMjIwLDE0IEBAIGJvb2wgc2V0SlNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRy
aWJ1dGUoRXhlCiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBl
ZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgeworICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUt
PmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBp
ZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbXBsLnNldFdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKCpzdGF0
ZSwgKmNvbnRleHQsIG5hdGl2ZVZhbHVlKTsKKyAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKCpzdGF0ZSwgKmNvbnRl
eHQsICpuYXRpdmVWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMxNjUsNyArMzI0
NCwxMSBAQCBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jbwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVl
ID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW1wbC5zZXRXaXRo
U2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKG5hdGl2ZVZhbHVlKTsKKyAgICBp
ZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpbXBsLnNldFdpdGhTY3Jp
cHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoKm5hdGl2ZVZhbHVlKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW0KaW5kZXggMDk4YTExZDllNTc0
OWUxYWY4ZDcyZWEyNzNlZTcxNjRmNjE0YTk4ZC4uN2JkMjQ3MTQxMWJlMTE0NmIyOTg5ZDYyNDYz
ODkyZTQxOTk4NWQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tCkBAIC0xMDksNyArMTA5
LDkgQEAgLSAodm9pZClzZXRJbXBsZW1lbnRzTm9kZTooRE9NTm9kZSAqKW5ld0ltcGxlbWVudHNO
b2RlCiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIEFTU0VS
VChuZXdJbXBsZW1lbnRzTm9kZSk7CiAKLSAgICBJTVBMLT5zZXRJbXBsZW1lbnRzTm9kZShjb3Jl
KG5ld0ltcGxlbWVudHNOb2RlKSk7CisgICAgaWYgKCFjb3JlKG5ld0ltcGxlbWVudHNOb2RlKSkK
KyAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBJTVBMLT5z
ZXRJbXBsZW1lbnRzTm9kZSgqY29yZShuZXdJbXBsZW1lbnRzTm9kZSkpOwogfQogI2VuZGlmCiAK
QEAgLTE2MSw3ICsxNjMsOSBAQCAtICh2b2lkKXNldFN1cHBsZW1lbnRhbE5vZGU6KERPTU5vZGUg
KiluZXdTdXBwbGVtZW50YWxOb2RlCiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwogICAgIEFTU0VSVChuZXdTdXBwbGVtZW50YWxOb2RlKTsKIAotICAgIFdlYkNvcmU6
OlRlc3RTdXBwbGVtZW50YWw6OnNldFN1cHBsZW1lbnRhbE5vZGUoKklNUEwsIGNvcmUobmV3U3Vw
cGxlbWVudGFsTm9kZSkpOworICAgIGlmICghY29yZShuZXdTdXBwbGVtZW50YWxOb2RlKSkKKyAg
ICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBXZWJDb3JlOjpU
ZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxOb2RlKCpJTVBMLCAqY29yZShuZXdTdXBw
bGVtZW50YWxOb2RlKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCmluZGV4IGRlYTNkMjZhNGQx
NWE1OGFiOTA5NWZjOTBhZjA5ZGNjNTEwZTMyMjUuLmIzOGIzZDkwOTlhYTVlOTRkNGU3YjFhMDE3
MWZkNjJiYWE2MWI5N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKQEAgLTc1LDYgKzc1LDcgQEAgV0VCQ09SRV9F
WFBPUlQgQGludGVyZmFjZSBET01UZXN0T2JqIDogRE9NT2JqZWN0CiBAcHJvcGVydHkgdW5zaWdu
ZWQgbG9uZyBsb25nIHVuc2lnbmVkTG9uZ0xvbmdBdHRyOwogQHByb3BlcnR5IChjb3B5KSBOU1N0
cmluZyAqc3RyaW5nQXR0cjsKIEBwcm9wZXJ0eSAoc3Ryb25nKSBET01UZXN0T2JqICp0ZXN0T2Jq
QXR0cjsKK0Bwcm9wZXJ0eSAoc3Ryb25nKSBET01UZXN0T2JqICp0ZXN0TnVsbGFibGVPYmpBdHRy
OwogQHByb3BlcnR5IChzdHJvbmcpIERPTVRlc3RPYmogKmxlbmllbnRUZXN0T2JqQXR0cjsKIEBw
cm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICp1bmZvcmdlYWJsZUF0dHI7CiBAcHJv
cGVydHkgKGNvcHkpIE5TU3RyaW5nICpzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmlu
ZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RPYmoubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T2JqLm1tCmluZGV4IDM5N2MzZmU3NDI0YjM3OTkzMTM0MzU3ZjUyMDZjOWZmODNm
N2E4OGYuLjIwZTExYzRkODVhN2RiZDU3YjQ1YmViY2I3Zjc0ZWFlZDEyOTFjNGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmou
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dE9iai5tbQpAQCAtMTEyLDcgKzExMiw5IEBAIC0gKHZvaWQpc2V0VGVzdFN1Yk9iakVuYWJsZWRC
eVNldHRpbmc6KERPTVRlc3RTdWJPYmpDb25zdHJ1Y3RvciAqKW5ld1Rlc3RTdWJPYmpFCiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIEFTU0VSVChuZXdUZXN0
U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyk7CiAKLSAgICBJTVBMLT5zZXRUZXN0U3ViT2JqRW5hYmxl
ZEJ5U2V0dGluZyhjb3JlKG5ld1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nKSk7CisgICAgaWYg
KCFjb3JlKG5ld1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nKSkKKyAgICAgICAgV2ViQ29yZTo6
cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBJTVBMLT5zZXRUZXN0U3ViT2JqRW5hYmxl
ZEJ5U2V0dGluZygqY29yZShuZXdUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZykpOwogfQogCiAt
IChjaGFyKWJ5dGVBdHRyCkBAIC0yNDYsNyArMjQ4LDIzIEBAIC0gKHZvaWQpc2V0VGVzdE9iakF0
dHI6KERPTVRlc3RPYmogKiluZXdUZXN0T2JqQXR0cgogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NFUlQobmV3VGVzdE9iakF0dHIpOwogCi0gICAgSU1Q
TC0+c2V0VGVzdE9iakF0dHIoY29yZShuZXdUZXN0T2JqQXR0cikpOworICAgIGlmICghY29yZShu
ZXdUZXN0T2JqQXR0cikpCisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9u
KCk7CisgICAgSU1QTC0+c2V0VGVzdE9iakF0dHIoKmNvcmUobmV3VGVzdE9iakF0dHIpKTsKK30K
KworLSAoRE9NVGVzdE9iaiAqKXRlc3ROdWxsYWJsZU9iakF0dHIKK3sKKyAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJ
TVBMLT50ZXN0TnVsbGFibGVPYmpBdHRyKCkpKTsKK30KKworLSAodm9pZClzZXRUZXN0TnVsbGFi
bGVPYmpBdHRyOihET01UZXN0T2JqICopbmV3VGVzdE51bGxhYmxlT2JqQXR0cgoreworICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBBU1NFUlQobmV3VGVzdE51
bGxhYmxlT2JqQXR0cik7CisKKyAgICBJTVBMLT5zZXRUZXN0TnVsbGFibGVPYmpBdHRyKGNvcmUo
bmV3VGVzdE51bGxhYmxlT2JqQXR0cikpOwogfQogCiAtIChET01UZXN0T2JqICopbGVuaWVudFRl
c3RPYmpBdHRyCkBAIC0yNjAsNyArMjc4LDkgQEAgLSAodm9pZClzZXRMZW5pZW50VGVzdE9iakF0
dHI6KERPTVRlc3RPYmogKiluZXdMZW5pZW50VGVzdE9iakF0dHIKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgQVNTRVJUKG5ld0xlbmllbnRUZXN0T2JqQXR0
cik7CiAKLSAgICBJTVBMLT5zZXRMZW5pZW50VGVzdE9iakF0dHIoY29yZShuZXdMZW5pZW50VGVz
dE9iakF0dHIpKTsKKyAgICBpZiAoIWNvcmUobmV3TGVuaWVudFRlc3RPYmpBdHRyKSkKKyAgICAg
ICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBJTVBMLT5zZXRMZW5p
ZW50VGVzdE9iakF0dHIoKmNvcmUobmV3TGVuaWVudFRlc3RPYmpBdHRyKSk7CiB9CiAKIC0gKE5T
U3RyaW5nICopdW5mb3JnZWFibGVBdHRyCkBAIC0yOTIsNyArMzEyLDkgQEAgLSAodm9pZClzZXRY
TUxPYmpBdHRyOihET01UZXN0T2JqICopbmV3WE1MT2JqQXR0cgogICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NFUlQobmV3WE1MT2JqQXR0cik7CiAKLSAg
ICBJTVBMLT5zZXRYTUxPYmpBdHRyKGNvcmUobmV3WE1MT2JqQXR0cikpOworICAgIGlmICghY29y
ZShuZXdYTUxPYmpBdHRyKSkKKyAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRp
b24oKTsKKyAgICBJTVBMLT5zZXRYTUxPYmpBdHRyKCpjb3JlKG5ld1hNTE9iakF0dHIpKTsKIH0K
IAogLSAoQk9PTCljcmVhdGUKQEAgLTUyMiw3ICs1NDQsOSBAQCAtICh2b2lkKXNldFN0cmljdFR5
cGVDaGVja2luZ0F0dHJpYnV0ZTooRE9NVGVzdE9iaiAqKW5ld1N0cmljdFR5cGVDaGVja2luZ0F0
dHJpYgogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NF
UlQobmV3U3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKTsKIAotICAgIElNUEwtPnNldFN0cmlj
dFR5cGVDaGVja2luZ0F0dHJpYnV0ZShjb3JlKG5ld1N0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0
ZSkpOworICAgIGlmICghY29yZShuZXdTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUpKQorICAg
ICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIElNUEwtPnNldFN0
cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSgqY29yZShuZXdTdHJpY3RUeXBlQ2hlY2tpbmdBdHRy
aWJ1dGUpKTsKIH0KIAogLSAoaW50KWN1c3RvbUF0dHIKQEAgLTU0OSw3ICs1NzMsOSBAQCAtICh2
b2lkKXNldEpzQnVpbHRpbkF0dHJpYnV0ZTooRE9NVGVzdE9iaiAqKW5ld0pzQnVpbHRpbkF0dHJp
YnV0ZQogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NF
UlQobmV3SnNCdWlsdGluQXR0cmlidXRlKTsKIAotICAgIElNUEwtPnNldEpzQnVpbHRpbkF0dHJp
YnV0ZShjb3JlKG5ld0pzQnVpbHRpbkF0dHJpYnV0ZSkpOworICAgIGlmICghY29yZShuZXdKc0J1
aWx0aW5BdHRyaWJ1dGUpKQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlv
bigpOworICAgIElNUEwtPnNldEpzQnVpbHRpbkF0dHJpYnV0ZSgqY29yZShuZXdKc0J1aWx0aW5B
dHRyaWJ1dGUpKTsKIH0KICNlbmRpZgogCkBAIC01OTYsNyArNjIyLDkgQEAgLSAodm9pZClzZXRX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZTooRE9NVGVzdE9iaiAqKW5ld1dpdGhT
Y3JpcHRFeGVjdXQKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAg
ICAgQVNTRVJUKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKTsKIAotICAg
IElNUEwtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKGNvcmUobmV3V2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpKTsKKyAgICBpZiAoIWNvcmUobmV3V2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpKQorICAgICAgICBXZWJDb3JlOjpyYWlz
ZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIElNUEwtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlKCpjb3JlKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlKSk7CiB9CiAKIC0gKERPTVRlc3RPYmogKil3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXMKQEAgLTYxMyw3ICs2NDEsOSBAQCAtICh2b2lkKXNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0
ZVJhaXNlczooRE9NVGVzdE9iaiAqKW5ld1dpdGhTY3JpcHRTdGF0ZUF0dHJpYgogICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NFUlQobmV3V2l0aFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzKTsKIAotICAgIElNUEwtPnNldFdpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlcyhjb3JlKG5ld1dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcykpOwor
ICAgIGlmICghY29yZShuZXdXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpKQorICAgICAg
ICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIElNUEwtPnNldFdpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygqY29yZShuZXdXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMpKTsKIH0KIAogLSAoRE9NVGVzdE9iaiAqKXdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlUmFpc2VzCkBAIC02MzAsNyArNjYwLDkgQEAgLSAodm9pZClzZXRXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlczooRE9NVGVzdE9iaiAqKW5ld1dpdGhT
Y3JpcHQKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgQVNT
RVJUKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKTsKIAotICAg
IElNUEwtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKGNvcmUo
bmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMpKTsKKyAgICBpZiAo
IWNvcmUobmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMpKQorICAg
ICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIElNUEwtPnNldFdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKCpjb3JlKG5ld1dpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKSk7CiB9CiAKIC0gKERPTVRlc3RPYmog
Kil3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlCkBAIC02
NDQsNyArNjc2LDkgQEAgLSAodm9pZClzZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlOihET01UZXN0T2JqICopbmV3V2kKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgQVNTRVJUKG5ld1dpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUpOwogCi0gICAgSU1QTC0+c2V0V2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShjb3JlKG5ld1dpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUpKTsKKyAgICBpZiAo
IWNvcmUobmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZSkpCisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgSU1Q
TC0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgq
Y29yZShuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRl
KSk7CiB9CiAKIC0gKERPTVRlc3RPYmogKil3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzCkBAIC02NjEsNyArNjk1LDkgQEAgLSAodm9pZClzZXRX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzOihE
T01UZXN0T2JqICoKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAg
ICAgQVNTRVJUKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGVSYWlzZXMpOwogCi0gICAgSU1QTC0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhjb3JlKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpKTsKKyAgICBpZiAoIWNvcmUobmV3
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcykp
CisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgSU1QTC0+
c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNl
cygqY29yZShuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmli
dXRlUmFpc2VzKSk7CiB9CiAKIC0gKERPTVRlc3RPYmogKil3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZQpAQCAtNjc1LDcgKzcxMSw5IEBA
IC0gKHZvaWQpc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhT
cGFjZXNBdHRyaWJ1dGU6KERPTVRlc3RPCiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwogICAgIEFTU0VSVChuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk7CiAKLSAgICBJTVBMLT5zZXRXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShjb3JlKG5l
d1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmli
dXRlKSk7CisgICAgaWYgKCFjb3JlKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKSkKKyAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBl
RXJyb3JFeGNlcHRpb24oKTsKKyAgICBJTVBMLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSgqY29yZShuZXdXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSkpOwogfQogCiAt
IChET01UZXN0T2JqICopd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZQpA
QCAtNjg5LDcgKzcyNyw5IEBAIC0gKHZvaWQpc2V0V2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxT
dGFja0F0dHJpYnV0ZTooRE9NVGVzdE9iaiAqKW5ld1dpdGhTY3JpcHRBCiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIEFTU0VSVChuZXdXaXRoU2NyaXB0QXJn
dW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKTsKIAotICAgIElNUEwtPnNldFdpdGhTY3JpcHRB
cmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoY29yZShuZXdXaXRoU2NyaXB0QXJndW1lbnRz
QW5kQ2FsbFN0YWNrQXR0cmlidXRlKSk7CisgICAgaWYgKCFjb3JlKG5ld1dpdGhTY3JpcHRBcmd1
bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUpKQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVF
cnJvckV4Y2VwdGlvbigpOworICAgIElNUEwtPnNldFdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxs
U3RhY2tBdHRyaWJ1dGUoKmNvcmUobmV3V2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0
dHJpYnV0ZSkpOwogfQogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCkBAIC03NDYsNyArNzg2LDkg
QEAgLSAodm9pZClzZXRDb25kaXRpb25hbEF0dHI0OihET01UZXN0T2JqZWN0QUNvbnN0cnVjdG9y
ICopbmV3Q29uZGl0aW9uYWxBdHRyNAogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKICAgICBBU1NFUlQobmV3Q29uZGl0aW9uYWxBdHRyNCk7CiAKLSAgICBJTVBMLT5z
ZXRDb25kaXRpb25hbEF0dHI0KGNvcmUobmV3Q29uZGl0aW9uYWxBdHRyNCkpOworICAgIGlmICgh
Y29yZShuZXdDb25kaXRpb25hbEF0dHI0KSkKKyAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJy
b3JFeGNlcHRpb24oKTsKKyAgICBJTVBMLT5zZXRDb25kaXRpb25hbEF0dHI0KCpjb3JlKG5ld0Nv
bmRpdGlvbmFsQXR0cjQpKTsKIH0KICNlbmRpZgogCkBAIC03NjIsNyArODA0LDkgQEAgLSAodm9p
ZClzZXRDb25kaXRpb25hbEF0dHI1OihET01UZXN0T2JqZWN0QkNvbnN0cnVjdG9yICopbmV3Q29u
ZGl0aW9uYWxBdHRyNQogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
ICAgICBBU1NFUlQobmV3Q29uZGl0aW9uYWxBdHRyNSk7CiAKLSAgICBJTVBMLT5zZXRDb25kaXRp
b25hbEF0dHI1KGNvcmUobmV3Q29uZGl0aW9uYWxBdHRyNSkpOworICAgIGlmICghY29yZShuZXdD
b25kaXRpb25hbEF0dHI1KSkKKyAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRp
b24oKTsKKyAgICBJTVBMLT5zZXRDb25kaXRpb25hbEF0dHI1KCpjb3JlKG5ld0NvbmRpdGlvbmFs
QXR0cjUpKTsKIH0KICNlbmRpZgogCkBAIC03NzgsNyArODIyLDkgQEAgLSAodm9pZClzZXRDb25k
aXRpb25hbEF0dHI2OihET01UZXN0T2JqZWN0Q0NvbnN0cnVjdG9yICopbmV3Q29uZGl0aW9uYWxB
dHRyNgogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NF
UlQobmV3Q29uZGl0aW9uYWxBdHRyNik7CiAKLSAgICBJTVBMLT5zZXRDb25kaXRpb25hbEF0dHI2
KGNvcmUobmV3Q29uZGl0aW9uYWxBdHRyNikpOworICAgIGlmICghY29yZShuZXdDb25kaXRpb25h
bEF0dHI2KSkKKyAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAg
ICBJTVBMLT5zZXRDb25kaXRpb25hbEF0dHI2KCpjb3JlKG5ld0NvbmRpdGlvbmFsQXR0cjYpKTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdE9iai5pZGwKaW5kZXggOThhN2I0ZDYwZWIzZDg3ZDM2OTAwNGY1MTY1YTIzYjRlNWRhYTUz
MC4uZmUxM2NlNzllN2QwZjUzZGMyOWQ0NDcwZmUzNTU2ZjU3MDU2YTNhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtNjMsNiAr
NjMsNyBAQCBlbnVtIF9vcHRpb25hbCB7ICIiLCAiT3B0aW9uYWxWYWx1ZTEiLCAiT3B0aW9uYWxW
YWx1ZTIiLCAiT3B0aW9uYWxWYWx1ZTMiIH07CiAgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcg
bG9uZyAgICAgICB1bnNpZ25lZExvbmdMb25nQXR0cjsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5n
ICAgICAgICAgICAgICAgIHN0cmluZ0F0dHI7CiAgICAgYXR0cmlidXRlIFRlc3RPYmogICAgICAg
ICAgICAgICAgICB0ZXN0T2JqQXR0cjsKKyAgICBhdHRyaWJ1dGUgVGVzdE9iaj8gICAgICAgICAg
ICAgICAgIHRlc3ROdWxsYWJsZU9iakF0dHI7CiAgICAgW0xlbmllbnRUaGlzXSBhdHRyaWJ1dGUg
VGVzdE9iaiAgICBsZW5pZW50VGVzdE9iakF0dHI7CiAgICAgW1VuZm9yZ2VhYmxlXSByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVuZm9yZ2VhYmxlQXR0cjsKICAgICBbVHJlYXROdWxsQXM9
RW1wdHlTdHJpbmddIGF0dHJpYnV0ZSBET01TdHJpbmcgc3RyaW5nQXR0clRyZWF0aW5nTnVsbEFz
RW1wdHlTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA0MjExMGQ2OGNlMjY5ZmVh
OTI0ODA5MTRlYTlkNzJiY2VhYjc4ZmEzLi4yMTc4ZGFmN2Q2NmQ3MDVjNGNkMmNjM2YwODc3M2Iy
ZGIzMjE0YTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTM5NjQsNyArMzk2NCw3IEBA
IHZvaWQgRG9jdW1lbnQ6Om1vdmVOb2RlSXRlcmF0b3JzVG9OZXdEb2N1bWVudChOb2RlKiBub2Rl
LCBEb2N1bWVudCogbmV3RG9jdW1lbnQpCiAgICAgVmVjdG9yPE5vZGVJdGVyYXRvcio+IG5vZGVJ
dGVyYXRvcnM7CiAgICAgY29weVRvVmVjdG9yKG1fbm9kZUl0ZXJhdG9ycywgbm9kZUl0ZXJhdG9y
cyk7CiAgICAgZm9yIChhdXRvKiBpdCA6IG5vZGVJdGVyYXRvcnMpIHsKLSAgICAgICAgaWYgKGl0
LT5yb290KCkgPT0gbm9kZSkgeworICAgICAgICBpZiAoJml0LT5yb290KCkgPT0gbm9kZSkgewog
ICAgICAgICAgICAgZGV0YWNoTm9kZUl0ZXJhdG9yKGl0KTsKICAgICAgICAgICAgIG5ld0RvY3Vt
ZW50LT5hdHRhY2hOb2RlSXRlcmF0b3IoaXQpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
SXRlcmF0b3IuY3BwCmluZGV4IDc0MjkwYTk1MTQ2Mzg0NzA3ZmFhNTRkNTFkMDQ5NTI5NGI1NmYw
NGYuLmI1OWUwZjlhNTM4NzQyN2U2NWM5YjEzZDEyNTRmOWVhNTNmMGI0ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlSXRlcmF0b3IuY3BwCkBAIC0zMywxMyArMzMsOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLU5vZGVJdGVyYXRvcjo6Tm9kZVBvaW50ZXI6Ok5vZGVQb2ludGVyKCkKLXsKLX0K
LQotTm9kZUl0ZXJhdG9yOjpOb2RlUG9pbnRlcjo6Tm9kZVBvaW50ZXIoTm9kZSogbiwgYm9vbCBi
KQotICAgIDogbm9kZShuKQotICAgICwgaXNQb2ludGVyQmVmb3JlTm9kZShiKQorTm9kZUl0ZXJh
dG9yOjpOb2RlUG9pbnRlcjo6Tm9kZVBvaW50ZXIoTm9kZSYgbm9kZSwgYm9vbCBpc1BvaW50ZXJC
ZWZvcmVOb2RlKQorICAgIDogbm9kZSgmbm9kZSkKKyAgICAsIGlzUG9pbnRlckJlZm9yZU5vZGUo
aXNQb2ludGVyQmVmb3JlTm9kZSkKIHsKIH0KIApAQCAtNDgsNyArNDQsNyBAQCB2b2lkIE5vZGVJ
dGVyYXRvcjo6Tm9kZVBvaW50ZXI6OmNsZWFyKCkKICAgICBub2RlID0gbnVsbHB0cjsKIH0KIAot
Ym9vbCBOb2RlSXRlcmF0b3I6Ok5vZGVQb2ludGVyOjptb3ZlVG9OZXh0KE5vZGUqIHJvb3QpCiti
b29sIE5vZGVJdGVyYXRvcjo6Tm9kZVBvaW50ZXI6Om1vdmVUb05leHQoTm9kZSYgcm9vdCkKIHsK
ICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU2LDExICs1MiwxMSBA
QCBib29sIE5vZGVJdGVyYXRvcjo6Tm9kZVBvaW50ZXI6Om1vdmVUb05leHQoTm9kZSogcm9vdCkK
ICAgICAgICAgaXNQb2ludGVyQmVmb3JlTm9kZSA9IGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9Ci0gICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUsIHJvb3QpOwor
ICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlLCAmcm9vdCk7CiAgICAgcmV0dXJu
IG5vZGU7CiB9CiAKLWJvb2wgTm9kZUl0ZXJhdG9yOjpOb2RlUG9pbnRlcjo6bW92ZVRvUHJldmlv
dXMoTm9kZSogcm9vdCkKK2Jvb2wgTm9kZUl0ZXJhdG9yOjpOb2RlUG9pbnRlcjo6bW92ZVRvUHJl
dmlvdXMoTm9kZSYgcm9vdCkKIHsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTY4LDcgKzY0LDcgQEAgYm9vbCBOb2RlSXRlcmF0b3I6Ok5vZGVQb2ludGVyOjptb3Zl
VG9QcmV2aW91cyhOb2RlKiByb290KQogICAgICAgICBpc1BvaW50ZXJCZWZvcmVOb2RlID0gdHJ1
ZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGlmIChub2RlID09IHJvb3QpIHsK
KyAgICBpZiAobm9kZSA9PSAmcm9vdCkgewogICAgICAgICBub2RlID0gbnVsbHB0cjsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTgwLDEyICs3NiwxMiBAQCBOb2RlSXRlcmF0b3I6
Ok5vZGVJdGVyYXRvcihOb2RlJiByb290Tm9kZSwgdW5zaWduZWQgbG9uZyB3aGF0VG9TaG93LCBS
ZWZQdHI8Tm9kZQogICAgIDogTm9kZUl0ZXJhdG9yQmFzZShyb290Tm9kZSwgd2hhdFRvU2hvdywg
V1RGTW92ZShmaWx0ZXIpKQogICAgICwgbV9yZWZlcmVuY2VOb2RlKHJvb3QoKSwgdHJ1ZSkKIHsK
LSAgICByb290KCktPmRvY3VtZW50KCkuYXR0YWNoTm9kZUl0ZXJhdG9yKHRoaXMpOworICAgIHJv
b3QoKS5kb2N1bWVudCgpLmF0dGFjaE5vZGVJdGVyYXRvcih0aGlzKTsKIH0KIAogTm9kZUl0ZXJh
dG9yOjp+Tm9kZUl0ZXJhdG9yKCkKIHsKLSAgICByb290KCktPmRvY3VtZW50KCkuZGV0YWNoTm9k
ZUl0ZXJhdG9yKHRoaXMpOworICAgIHJvb3QoKS5kb2N1bWVudCgpLmRldGFjaE5vZGVJdGVyYXRv
cih0aGlzKTsKIH0KIAogUmVmUHRyPE5vZGU+IE5vZGVJdGVyYXRvcjo6bmV4dE5vZGUoKQpAQCAt
MTQ1LDExICsxNDEsMTEgQEAgdm9pZCBOb2RlSXRlcmF0b3I6Om5vZGVXaWxsQmVSZW1vdmVkKE5v
ZGUmIHJlbW92ZWROb2RlKQogCiB2b2lkIE5vZGVJdGVyYXRvcjo6dXBkYXRlRm9yTm9kZVJlbW92
YWwoTm9kZSYgcmVtb3ZlZE5vZGUsIE5vZGVQb2ludGVyJiByZWZlcmVuY2VOb2RlKSBjb25zdAog
ewotICAgIEFTU0VSVCgmcm9vdCgpLT5kb2N1bWVudCgpID09ICZyZW1vdmVkTm9kZS5kb2N1bWVu
dCgpKTsKKyAgICBBU1NFUlQoJnJvb3QoKS5kb2N1bWVudCgpID09ICZyZW1vdmVkTm9kZS5kb2N1
bWVudCgpKTsKIAogICAgIC8vIEl0ZXJhdG9yIGlzIG5vdCBhZmZlY3RlZCBpZiB0aGUgcmVtb3Zl
ZCBub2RlIGlzIHRoZSByZWZlcmVuY2Ugbm9kZSBhbmQgaXMgdGhlIHJvb3QuCiAgICAgLy8gb3Ig
aWYgcmVtb3ZlZCBub2RlIGlzIG5vdCB0aGUgcmVmZXJlbmNlIG5vZGUsIG9yIHRoZSBhbmNlc3Rv
ciBvZiB0aGUgcmVmZXJlbmNlIG5vZGUuCi0gICAgaWYgKCFyZW1vdmVkTm9kZS5pc0Rlc2NlbmRh
bnRPZihyb290KCkpKQorICAgIGlmICghcmVtb3ZlZE5vZGUuaXNEZXNjZW5kYW50T2YoJnJvb3Qo
KSkpCiAgICAgICAgIHJldHVybjsKICAgICBib29sIHdpbGxSZW1vdmVSZWZlcmVuY2VOb2RlID0g
JnJlbW92ZWROb2RlID09IHJlZmVyZW5jZU5vZGUubm9kZTsKICAgICBib29sIHdpbGxSZW1vdmVS
ZWZlcmVuY2VOb2RlQW5jZXN0b3IgPSByZWZlcmVuY2VOb2RlLm5vZGUgJiYgcmVmZXJlbmNlTm9k
ZS5ub2RlLT5pc0Rlc2NlbmRhbnRPZigmcmVtb3ZlZE5vZGUpOwpAQCAtMTU3LDEyICsxNTMsMTIg
QEAgdm9pZCBOb2RlSXRlcmF0b3I6OnVwZGF0ZUZvck5vZGVSZW1vdmFsKE5vZGUmIHJlbW92ZWRO
b2RlLCBOb2RlUG9pbnRlciYgcmVmZXJlbmMKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHJl
ZmVyZW5jZU5vZGUuaXNQb2ludGVyQmVmb3JlTm9kZSkgewotICAgICAgICBOb2RlKiBub2RlID0g
Tm9kZVRyYXZlcnNhbDo6bmV4dChyZW1vdmVkTm9kZSwgcm9vdCgpKTsKKyAgICAgICAgTm9kZSog
bm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQocmVtb3ZlZE5vZGUsICZyb290KCkpOwogICAgICAg
ICBpZiAobm9kZSkgewogICAgICAgICAgICAgLy8gTW92ZSBvdXQgZnJvbSB1bmRlciB0aGUgbm9k
ZSBiZWluZyByZW1vdmVkIGlmIHRoZSBuZXcgcmVmZXJlbmNlCiAgICAgICAgICAgICAvLyBub2Rl
IGlzIGEgZGVzY2VuZGFudCBvZiB0aGUgbm9kZSBiZWluZyByZW1vdmVkLgogICAgICAgICAgICAg
d2hpbGUgKG5vZGUgJiYgbm9kZS0+aXNEZXNjZW5kYW50T2YoJnJlbW92ZWROb2RlKSkKLSAgICAg
ICAgICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSwgcm9vdCgpKTsKKyAg
ICAgICAgICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSwgJnJvb3QoKSk7
CiAgICAgICAgICAgICBpZiAobm9kZSkKICAgICAgICAgICAgICAgICByZWZlcmVuY2VOb2RlLm5v
ZGUgPSBub2RlOwogICAgICAgICB9IGVsc2UgewpAQCAtMTk2LDcgKzE5Miw3IEBAIHZvaWQgTm9k
ZUl0ZXJhdG9yOjp1cGRhdGVGb3JOb2RlUmVtb3ZhbChOb2RlJiByZW1vdmVkTm9kZSwgTm9kZVBv
aW50ZXImIHJlZmVyZW5jCiAgICAgICAgICAgICAgICAgcmVmZXJlbmNlTm9kZS5ub2RlID0gbm9k
ZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGJyYW5jaCBk
b2Vzbid0IGFwcGVhciB0byBoYXZlIGFueSBMYXlvdXRUZXN0cy4KLSAgICAgICAgICAgIG5vZGUg
PSBOb2RlVHJhdmVyc2FsOjpuZXh0KHJlbW92ZWROb2RlLCByb290KCkpOworICAgICAgICAgICAg
bm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQocmVtb3ZlZE5vZGUsICZyb290KCkpOwogICAgICAg
ICAgICAgLy8gTW92ZSBvdXQgZnJvbSB1bmRlciB0aGUgbm9kZSBiZWluZyByZW1vdmVkIGlmIHRo
ZSByZWZlcmVuY2Ugbm9kZSBpcwogICAgICAgICAgICAgLy8gYSBkZXNjZW5kYW50IG9mIHRoZSBu
b2RlIGJlaW5nIHJlbW92ZWQuCiAgICAgICAgICAgICBpZiAod2lsbFJlbW92ZVJlZmVyZW5jZU5v
ZGVBbmNlc3RvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5oCmluZGV4IGY2YmJhMzIzNTM4
MGEzODRhZDExMmUzNjk3YjVmZGRmOTNhMzVkOTIuLmNhOGU4ZDRjNDBhYWU0YWQ1MGI0N2M5MThh
OTc2Njg5ODZlZDM1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmgKQEAgLTU3LDEyICs1
NywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgc3RydWN0IE5vZGVQb2ludGVy
IHsKICAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBub2RlOwotICAgICAgICAgICAgYm9vbCBpc1Bv
aW50ZXJCZWZvcmVOb2RlOwotICAgICAgICAgICAgTm9kZVBvaW50ZXIoKTsKLSAgICAgICAgICAg
IE5vZGVQb2ludGVyKE5vZGUqLCBib29sKTsKKyAgICAgICAgICAgIGJvb2wgaXNQb2ludGVyQmVm
b3JlTm9kZSB7IHRydWUgfTsKKworICAgICAgICAgICAgTm9kZVBvaW50ZXIoKSA9IGRlZmF1bHQ7
CisgICAgICAgICAgICBOb2RlUG9pbnRlcihOb2RlJiwgYm9vbCk7CisKICAgICAgICAgICAgIHZv
aWQgY2xlYXIoKTsKLSAgICAgICAgICAgIGJvb2wgbW92ZVRvTmV4dChOb2RlKiByb290KTsKLSAg
ICAgICAgICAgIGJvb2wgbW92ZVRvUHJldmlvdXMoTm9kZSogcm9vdCk7CisgICAgICAgICAgICBi
b29sIG1vdmVUb05leHQoTm9kZSYgcm9vdCk7CisgICAgICAgICAgICBib29sIG1vdmVUb1ByZXZp
b3VzKE5vZGUmIHJvb3QpOwogICAgICAgICB9OwogCiAgICAgICAgIHZvaWQgdXBkYXRlRm9yTm9k
ZVJlbW92YWwoTm9kZSYgbm9kZVRvQmVSZW1vdmVkLCBOb2RlUG9pbnRlciYpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyYXZlcnNhbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVHJhdmVyc2FsLmNwcAppbmRleCAwZmRmODU4NmY2Y2NiN2I1NmVkZDg3OTZkMTZkMjNi
YzZkY2ZlOTJiLi4zYzgyYTc2NmVhMDU1N2Y1ZTg1ZGFmZWFiMzY2MWRjMDhiODU2MjVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhdmVyc2FsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVHJhdmVyc2FsLmNwcApAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBOb2RlSXRlcmF0b3JCYXNlOjpOb2RlSXRlcmF0b3JCYXNlKE5vZGUmIHJvb3ROb2Rl
LCB1bnNpZ25lZCB3aGF0VG9TaG93LCBSZWZQdHI8Tm9kZUZpbHRlcj4mJiBub2RlRmlsdGVyKQot
ICAgIDogbV9yb290KCZyb290Tm9kZSkKKyAgICA6IG1fcm9vdChyb290Tm9kZSkKICAgICAsIG1f
d2hhdFRvU2hvdyh3aGF0VG9TaG93KQogICAgICwgbV9maWx0ZXIoV1RGTW92ZShub2RlRmlsdGVy
KSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmF2ZXJzYWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UcmF2ZXJzYWwuaAppbmRleCBiOGI5ZWM0YTZjMWIzNDZiZTM2NmQ5ZjNi
NTU5OGJkZmI0NmY5YTA0Li5hMWUwZmZjNTFiNzhkNWQwZmVhZjFlM2Q2ZTdhZDdmNTNmODQ3OGVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhdmVyc2FsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1RyYXZlcnNhbC5oCkBAIC0zMyw3ICszMyw5IEBAIGNsYXNzIE5vZGVGaWx0
ZXI7CiAKIGNsYXNzIE5vZGVJdGVyYXRvckJhc2UgewogcHVibGljOgotICAgIE5vZGUqIHJvb3Qo
KSBjb25zdCB7IHJldHVybiBtX3Jvb3QuZ2V0KCk7IH0KKyAgICBOb2RlJiByb290KCkgeyByZXR1
cm4gbV9yb290LmdldCgpOyB9CisgICAgY29uc3QgTm9kZSYgcm9vdCgpIGNvbnN0IHsgcmV0dXJu
IG1fcm9vdC5nZXQoKTsgfQorCiAgICAgdW5zaWduZWQgd2hhdFRvU2hvdygpIGNvbnN0IHsgcmV0
dXJuIG1fd2hhdFRvU2hvdzsgfQogICAgIE5vZGVGaWx0ZXIqIGZpbHRlcigpIGNvbnN0IHsgcmV0
dXJuIG1fZmlsdGVyLmdldCgpOyB9CiAgICAgYm9vbCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTQzLDcgKzQ1LDcgQEAgcHJvdGVjdGVkOgogICAg
IHNob3J0IGFjY2VwdE5vZGUoTm9kZSopIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxO
b2RlPiBtX3Jvb3Q7CisgICAgUmVmPE5vZGU+IG1fcm9vdDsKICAgICB1bnNpZ25lZCBtX3doYXRU
b1Nob3c7CiAgICAgUmVmUHRyPE5vZGVGaWx0ZXI+IG1fZmlsdGVyOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlV2Fsa2VyLmNwcAppbmRleCBhYjg2ZDU5M2IyOTBhOWUwN2E5MzMzZTdjMjdjYTdmZjI3ZmVm
ZDU0Li5hMGMwOWY5ZWVlMTU3NGQ3YmViMDJiZTI2NzQzNjc3Njc4YzU5MjVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVXYWxrZXIuY3BwCkBAIC0zOSwzMSArMzksMjcgQEAgVHJlZVdhbGtlcjo6VHJlZVdh
bGtlcihOb2RlJiByb290Tm9kZSwgdW5zaWduZWQgbG9uZyB3aGF0VG9TaG93LCBSZWZQdHI8Tm9k
ZUZpbHQKIHsKIH0KIAotdm9pZCBUcmVlV2Fsa2VyOjpzZXRDdXJyZW50Tm9kZShOb2RlKiBub2Rl
LCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgVHJlZVdhbGtlcjo6c2V0Q3VycmVudE5vZGUoTm9k
ZSYgbm9kZSkKIHsKLSAgICBpZiAoIW5vZGUpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVE
X0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBtX2N1cnJlbnQgPSBub2RlOwogfQog
Ci1pbmxpbmUgTm9kZSogVHJlZVdhbGtlcjo6c2V0Q3VycmVudChSZWZQdHI8Tm9kZT4mJiBub2Rl
KQoraW5saW5lIE5vZGUqIFRyZWVXYWxrZXI6OnNldEN1cnJlbnQoUmVmPE5vZGU+JiYgbm9kZSkK
IHsKLSAgICBtX2N1cnJlbnQgPSBub2RlOwotICAgIHJldHVybiBtX2N1cnJlbnQuZ2V0KCk7Cisg
ICAgbV9jdXJyZW50ID0gV1RGTW92ZShub2RlKTsKKyAgICByZXR1cm4gbV9jdXJyZW50LnB0cigp
OwogfQogCiBOb2RlKiBUcmVlV2Fsa2VyOjpwYXJlbnROb2RlKCkKIHsKLSAgICBSZWZQdHI8Tm9k
ZT4gbm9kZSA9IG1fY3VycmVudDsKLSAgICB3aGlsZSAobm9kZSAhPSByb290KCkpIHsKKyAgICBS
ZWZQdHI8Tm9kZT4gbm9kZSA9IG1fY3VycmVudC5wdHIoKTsKKyAgICB3aGlsZSAobm9kZSAhPSAm
cm9vdCgpKSB7CiAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAgICAgIGlm
ICghbm9kZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBzaG9ydCBhY2Nl
cHROb2RlUmVzdWx0ID0gYWNjZXB0Tm9kZShub2RlLmdldCgpKTsKICAgICAgICAgaWYgKGFjY2Vw
dE5vZGVSZXN1bHQgPT0gTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVCkKLSAgICAgICAgICAgIHJl
dHVybiBzZXRDdXJyZW50KFdURk1vdmUobm9kZSkpOworICAgICAgICAgICAgcmV0dXJuIHNldEN1
cnJlbnQobm9kZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CkBAIC03NCw4ICs3MCw4IEBAIE5vZGUqIFRyZWVXYWxrZXI6OmZpcnN0Q2hpbGQoKQogICAg
ICAgICBzaG9ydCBhY2NlcHROb2RlUmVzdWx0ID0gYWNjZXB0Tm9kZShub2RlLmdldCgpKTsKICAg
ICAgICAgc3dpdGNoIChhY2NlcHROb2RlUmVzdWx0KSB7CiAgICAgICAgICAgICBjYXNlIE5vZGVG
aWx0ZXI6OkZJTFRFUl9BQ0NFUFQ6Ci0gICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gbm9kZS5y
ZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fY3VycmVudC5nZXQoKTsKKyAgICAg
ICAgICAgICAgICBtX2N1cnJlbnQgPSBub2RlLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG1fY3VycmVudC5wdHIoKTsKICAgICAgICAgICAgIGNhc2UgTm9kZUZpbHRl
cjo6RklMVEVSX1NLSVA6CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmZpcnN0Q2hpbGQoKSkg
ewogICAgICAgICAgICAgICAgICAgICBub2RlID0gbm9kZS0+Zmlyc3RDaGlsZCgpOwpAQCAtOTEs
NyArODcsNyBAQCBOb2RlKiBUcmVlV2Fsa2VyOjpmaXJzdENoaWxkKCkKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIENvbnRhaW5lck5vZGUqIHBhcmVu
dCA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgICAgIGlmICghcGFyZW50IHx8IHBhcmVu
dCA9PSByb290KCkgfHwgcGFyZW50ID09IG1fY3VycmVudCkKKyAgICAgICAgICAgIGlmICghcGFy
ZW50IHx8IHBhcmVudCA9PSAmcm9vdCgpIHx8IHBhcmVudCA9PSBtX2N1cnJlbnQucHRyKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBub2RlID0gcGFyZW50
OwogICAgICAgICB9IHdoaWxlIChub2RlKTsKQEAgLTEwNSw4ICsxMDEsOCBAQCBOb2RlKiBUcmVl
V2Fsa2VyOjpsYXN0Q2hpbGQoKQogICAgICAgICBzaG9ydCBhY2NlcHROb2RlUmVzdWx0ID0gYWNj
ZXB0Tm9kZShub2RlLmdldCgpKTsKICAgICAgICAgc3dpdGNoIChhY2NlcHROb2RlUmVzdWx0KSB7
CiAgICAgICAgICAgICBjYXNlIE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQ6Ci0gICAgICAgICAg
ICAgICAgbV9jdXJyZW50ID0gbm9kZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG1fY3VycmVudC5nZXQoKTsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBub2RlLnJlbGVh
c2VOb25OdWxsKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fY3VycmVudC5wdHIoKTsKICAg
ICAgICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6RklMVEVSX1NLSVA6CiAgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmxhc3RDaGlsZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBub2Rl
LT5sYXN0Q2hpbGQoKTsKQEAgLTEyMiw3ICsxMTgsNyBAQCBOb2RlKiBUcmVlV2Fsa2VyOjpsYXN0
Q2hpbGQoKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwotICAgICAgICAg
ICAgaWYgKCFwYXJlbnQgfHwgcGFyZW50ID09IHJvb3QoKSB8fCBwYXJlbnQgPT0gbV9jdXJyZW50
KQorICAgICAgICAgICAgaWYgKCFwYXJlbnQgfHwgcGFyZW50ID09ICZyb290KCkgfHwgcGFyZW50
ID09IG1fY3VycmVudC5wdHIoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgICAgIG5vZGUgPSBwYXJlbnQ7CiAgICAgICAgIH0gd2hpbGUgKG5vZGUpOwpAQCAtMTMy
LDggKzEyOCw4IEBAIE5vZGUqIFRyZWVXYWxrZXI6Omxhc3RDaGlsZCgpCiAKIHRlbXBsYXRlPFRy
ZWVXYWxrZXI6OlNpYmxpbmdUcmF2ZXJzYWxUeXBlIHR5cGU+IE5vZGUqIFRyZWVXYWxrZXI6OnRy
YXZlcnNlU2libGluZ3MoKQogewotICAgIFJlZlB0cjxOb2RlPiBub2RlID0gbV9jdXJyZW50Owot
ICAgIGlmIChub2RlID09IHJvb3QoKSkKKyAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IG1fY3VycmVu
dC5wdHIoKTsKKyAgICBpZiAobm9kZSA9PSAmcm9vdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGF1dG8gaXNOZXh0ID0gdHlwZSA9PSBTaWJsaW5nVHJhdmVyc2FsVHlwZTo6TmV4
dDsKQEAgLTE0MSw4ICsxMzcsOCBAQCB0ZW1wbGF0ZTxUcmVlV2Fsa2VyOjpTaWJsaW5nVHJhdmVy
c2FsVHlwZSB0eXBlPiBOb2RlKiBUcmVlV2Fsa2VyOjp0cmF2ZXJzZVNpYmxpbgogICAgICAgICBm
b3IgKFJlZlB0cjxOb2RlPiBzaWJsaW5nID0gaXNOZXh0ID8gbm9kZS0+bmV4dFNpYmxpbmcoKSA6
IG5vZGUtPnByZXZpb3VzU2libGluZygpOyBzaWJsaW5nOyApIHsKICAgICAgICAgICAgIHNob3J0
IGFjY2VwdE5vZGVSZXN1bHQgPSBhY2NlcHROb2RlKHNpYmxpbmcuZ2V0KCkpOwogICAgICAgICAg
ICAgaWYgKGFjY2VwdE5vZGVSZXN1bHQgPT0gTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVCkgewot
ICAgICAgICAgICAgICAgIG1fY3VycmVudCA9IFdURk1vdmUoc2libGluZyk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIG1fY3VycmVudC5nZXQoKTsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnQg
PSBzaWJsaW5nLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fY3Vy
cmVudC5wdHIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG5vZGUgPSBzaWJsaW5nOwog
ICAgICAgICAgICAgc2libGluZyA9IGlzTmV4dCA/IHNpYmxpbmctPmZpcnN0Q2hpbGQoKSA6IHNp
YmxpbmctPmxhc3RDaGlsZCgpOwpAQCAtMTUwLDcgKzE0Niw3IEBAIHRlbXBsYXRlPFRyZWVXYWxr
ZXI6OlNpYmxpbmdUcmF2ZXJzYWxUeXBlIHR5cGU+IE5vZGUqIFRyZWVXYWxrZXI6OnRyYXZlcnNl
U2libGluCiAgICAgICAgICAgICAgICAgc2libGluZyA9IGlzTmV4dCA/IG5vZGUtPm5leHRTaWJs
aW5nKCkgOiBub2RlLT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgfQogICAgICAgICBub2Rl
ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwotICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZSA9PSByb290
KCkpCisgICAgICAgIGlmICghbm9kZSB8fCBub2RlID09ICZyb290KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgc2hvcnQgYWNjZXB0Tm9kZVJlc3VsdCA9IGFjY2VwdE5v
ZGUobm9kZS5nZXQoKSk7CiAgICAgICAgIGlmIChhY2NlcHROb2RlUmVzdWx0ID09IE5vZGVGaWx0
ZXI6OkZJTFRFUl9BQ0NFUFQpCkBAIC0xNzAsOCArMTY2LDggQEAgTm9kZSogVHJlZVdhbGtlcjo6
bmV4dFNpYmxpbmcoKQogCiBOb2RlKiBUcmVlV2Fsa2VyOjpwcmV2aW91c05vZGUoKQogewotICAg
IFJlZlB0cjxOb2RlPiBub2RlID0gbV9jdXJyZW50OwotICAgIHdoaWxlIChub2RlICE9IHJvb3Qo
KSkgeworICAgIFJlZlB0cjxOb2RlPiBub2RlID0gbV9jdXJyZW50LnB0cigpOworICAgIHdoaWxl
IChub2RlICE9ICZyb290KCkpIHsKICAgICAgICAgd2hpbGUgKE5vZGUqIHByZXZpb3VzU2libGlu
ZyA9IG5vZGUtPnByZXZpb3VzU2libGluZygpKSB7CiAgICAgICAgICAgICBub2RlID0gcHJldmlv
dXNTaWJsaW5nOwogICAgICAgICAgICAgc2hvcnQgYWNjZXB0Tm9kZVJlc3VsdCA9IGFjY2VwdE5v
ZGUobm9kZS5nZXQoKSk7CkBAIC0xODQsMTEgKzE4MCwxMSBAQCBOb2RlKiBUcmVlV2Fsa2VyOjpw
cmV2aW91c05vZGUoKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChhY2NlcHROb2RlUmVzdWx0ID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9B
Q0NFUFQpIHsKLSAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBub2RlLnJlbGVhc2UoKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbV9jdXJyZW50LmdldCgpOworICAgICAgICAgICAgICAgIG1f
Y3VycmVudCA9IG5vZGUucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bV9jdXJyZW50LnB0cigpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmIChu
b2RlID09IHJvb3QoKSkKKyAgICAgICAgaWYgKG5vZGUgPT0gJnJvb3QoKSkKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBub2RlLT5w
YXJlbnROb2RlKCk7CiAgICAgICAgIGlmICghcGFyZW50KQpAQCAtMTk2LDI4ICsxOTIsMjggQEAg
Tm9kZSogVHJlZVdhbGtlcjo6cHJldmlvdXNOb2RlKCkKICAgICAgICAgbm9kZSA9IHBhcmVudDsK
ICAgICAgICAgc2hvcnQgYWNjZXB0Tm9kZVJlc3VsdCA9IGFjY2VwdE5vZGUobm9kZS5nZXQoKSk7
CiAgICAgICAgIGlmIChhY2NlcHROb2RlUmVzdWx0ID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NF
UFQpCi0gICAgICAgICAgICByZXR1cm4gc2V0Q3VycmVudChXVEZNb3ZlKG5vZGUpKTsKKyAgICAg
ICAgICAgIHJldHVybiBzZXRDdXJyZW50KG5vZGUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQog
ICAgIHJldHVybiBudWxscHRyOwogfQogCiBOb2RlKiBUcmVlV2Fsa2VyOjpuZXh0Tm9kZSgpCiB7
Ci0gICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBtX2N1cnJlbnQ7CisgICAgUmVmUHRyPE5vZGU+IG5v
ZGUgPSBtX2N1cnJlbnQucHRyKCk7CiBDaGlsZHJlbjoKICAgICB3aGlsZSAoTm9kZSogZmlyc3RD
aGlsZCA9IG5vZGUtPmZpcnN0Q2hpbGQoKSkgewogICAgICAgICBub2RlID0gZmlyc3RDaGlsZDsK
ICAgICAgICAgc2hvcnQgYWNjZXB0Tm9kZVJlc3VsdCA9IGFjY2VwdE5vZGUobm9kZS5nZXQoKSk7
CiAgICAgICAgIGlmIChhY2NlcHROb2RlUmVzdWx0ID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NF
UFQpCi0gICAgICAgICAgICByZXR1cm4gc2V0Q3VycmVudChXVEZNb3ZlKG5vZGUpKTsKKyAgICAg
ICAgICAgIHJldHVybiBzZXRDdXJyZW50KG5vZGUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAg
IGlmIChhY2NlcHROb2RlUmVzdWx0ID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9SRUpFQ1QpCiAgICAg
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgd2hpbGUgKE5vZGUqIG5leHRTaWJsaW5nID0gTm9k
ZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4oKm5vZGUsIHJvb3QoKSkpIHsKKyAgICB3
aGlsZSAoTm9kZSogbmV4dFNpYmxpbmcgPSBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGls
ZHJlbigqbm9kZSwgJnJvb3QoKSkpIHsKICAgICAgICAgbm9kZSA9IG5leHRTaWJsaW5nOwogICAg
ICAgICBzaG9ydCBhY2NlcHROb2RlUmVzdWx0ID0gYWNjZXB0Tm9kZShub2RlLmdldCgpKTsKICAg
ICAgICAgaWYgKGFjY2VwdE5vZGVSZXN1bHQgPT0gTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVCkK
LSAgICAgICAgICAgIHJldHVybiBzZXRDdXJyZW50KFdURk1vdmUobm9kZSkpOworICAgICAgICAg
ICAgcmV0dXJuIHNldEN1cnJlbnQobm9kZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgaWYg
KGFjY2VwdE5vZGVSZXN1bHQgPT0gTm9kZUZpbHRlcjo6RklMVEVSX1NLSVApCiAgICAgICAgICAg
ICBnb3RvIENoaWxkcmVuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlV2Fsa2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5oCmluZGV4IDFiNWJl
MWMxNDIzNDMzZjZlYmM2ZDkxODJiM2Q2MzFlZWQyMzZjZTguLjQ1NDAwNzQ4YTUxODM5MDVhNjU4
Yzg3NGExNmVlMDBlNjI5ZTRlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
V2Fsa2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaApAQCAtNDEsOCAr
NDEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVHJlZVdhbGtlcihyb290Tm9kZSwgd2hhdFRvU2hvdywgV1RGTW92ZShmaWx0ZXIpKSk7
CiAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAKLSAgICAgICAgTm9kZSog
Y3VycmVudE5vZGUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnQuZ2V0KCk7IH0KLSAgICAgICAg
dm9pZCBzZXRDdXJyZW50Tm9kZShOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICBOb2Rl
JiBjdXJyZW50Tm9kZSgpIHsgcmV0dXJuIG1fY3VycmVudC5nZXQoKTsgfQorICAgICAgICBjb25z
dCBOb2RlJiBjdXJyZW50Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudC5nZXQoKTsgfQor
CisgICAgICAgIHZvaWQgc2V0Q3VycmVudE5vZGUoTm9kZSYpOwogCiAgICAgICAgIE5vZGUqIHBh
cmVudE5vZGUoKTsKICAgICAgICAgTm9kZSogZmlyc3RDaGlsZCgpOwpAQCAtNTcsOSArNTksOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGVudW0gY2xhc3MgU2libGluZ1RyYXZlcnNh
bFR5cGUgeyBQcmV2aW91cywgTmV4dCB9OwogICAgICAgICB0ZW1wbGF0ZTxTaWJsaW5nVHJhdmVy
c2FsVHlwZT4gTm9kZSogdHJhdmVyc2VTaWJsaW5ncygpOwogICAgICAgICAKLSAgICAgICAgTm9k
ZSogc2V0Q3VycmVudChSZWZQdHI8Tm9kZT4mJik7CisgICAgICAgIE5vZGUqIHNldEN1cnJlbnQo
UmVmPE5vZGU+JiYpOwogCi0gICAgICAgIFJlZlB0cjxOb2RlPiBtX2N1cnJlbnQ7CisgICAgICAg
IFJlZjxOb2RlPiBtX2N1cnJlbnQ7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaWRsIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVXYWxrZXIuaWRsCmluZGV4IGFkNWNiNWQ2NDAzMTBmOGMwMzg5NjFmNTEz
MmQ1YmRkZDIzNjZjN2UuLmJlOTI3NzZhM2Q1ZDhhMjE0NDBkYmQzYzcwY2IxNTE1NTE2MWUxN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5pZGwKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBkZWZp
bmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSAmJiBMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGV4cGFuZEVudGl0eVJlZmVyZW5jZXM7CiAjZW5kaWYK
LSAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgTm9kZSBjdXJyZW50Tm9kZTsK
KyAgICBhdHRyaWJ1dGUgTm9kZSBjdXJyZW50Tm9kZTsKIAogICAgIE5vZGUgcGFyZW50Tm9kZSgp
OwogICAgIE5vZGUgZmlyc3RDaGlsZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
YWNobWVudEVsZW1lbnQuaWRsCmluZGV4IDg1YmQ0NzhjOWE5MjQ2MWEzYTZiZTQzZTk2ZWQ0MGYw
NWVjMTVlMjUuLmQ2OWExNTc4MGEzNGMzYzRlMTg3NmE3ZGVkMDY3N2UzYzJkMGM4Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5pZGwKQEAgLTI2LDUg
KzI2LDUgQEAKIFsKICAgICBDb25kaXRpb25hbD1BVFRBQ0hNRU5UX0VMRU1FTlQKIF0gaW50ZXJm
YWNlIEhUTUxBdHRhY2htZW50RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKLSAgICBhdHRyaWJ1dGUg
RmlsZSBmaWxlOworICAgIGF0dHJpYnV0ZSBGaWxlPyBmaWxlOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCmluZGV4IGUzZDBmOWZjMjYwNjQ5MWE3ZDBmZjM5NmVh
Njg2ZWZkYTY1NDM3NzMuLjYyMjc0ZWE3ZTg3ZTg1NzZjNjAyZmNlNWVlZmYzZDlmZGRlNmNkZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbApAQCAtMzIsNyArMzIs
NyBAQAogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRpck5hbWU7CiAgICAgW1Jl
ZmxlY3RdIGF0dHJpYnV0ZSBib29sZWFuIGRpc2FibGVkOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBIVE1MRm9ybUVsZW1lbnQgZm9ybTsKLSAgICBhdHRyaWJ1dGUgRmlsZUxpc3QgZmlsZXM7Cisg
ICAgYXR0cmlidXRlIEZpbGVMaXN0PyBmaWxlczsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZv
cm1BY3Rpb247CiAKICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIG5vdCB1c2UgW1RyZWF0TnVs
bEFzPUxlZ2FjeU51bGxTdHJpbmddLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5pZGwKaW5kZXggYmIzN2JjZGM5M2Q3ZjRmMmMxZmRjOTBmMmYwMDE2NGJkZGM1MDc1MS4uYThl
NzkyZTdhMzQ4ODA2YzFhN2I1MGFlMTdiNjA3N2RjYjBmMjM5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsCkBAIC0xOSw5ICsxOSw5IEBACiAgKi8KIAogaW50ZXJm
YWNlIEhUTUxUYWJsZUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7Ci0gICAgW1NldHRlclJhaXNlc0V4
Y2VwdGlvbiwgU3RyaWN0VHlwZUNoZWNraW5nXSBhdHRyaWJ1dGUgSFRNTFRhYmxlQ2FwdGlvbkVs
ZW1lbnQgY2FwdGlvbjsKLSAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBTdHJpY3RUeXBlQ2hl
Y2tpbmddIGF0dHJpYnV0ZSBIVE1MVGFibGVTZWN0aW9uRWxlbWVudCB0SGVhZDsKLSAgICBbU2V0
dGVyUmFpc2VzRXhjZXB0aW9uLCBTdHJpY3RUeXBlQ2hlY2tpbmddIGF0dHJpYnV0ZSBIVE1MVGFi
bGVTZWN0aW9uRWxlbWVudCB0Rm9vdDsKKyAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBTdHJp
Y3RUeXBlQ2hlY2tpbmddIGF0dHJpYnV0ZSBIVE1MVGFibGVDYXB0aW9uRWxlbWVudD8gY2FwdGlv
bjsKKyAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBTdHJpY3RUeXBlQ2hlY2tpbmddIGF0dHJp
YnV0ZSBIVE1MVGFibGVTZWN0aW9uRWxlbWVudD8gdEhlYWQ7CisgICAgW1NldHRlclJhaXNlc0V4
Y2VwdGlvbiwgU3RyaWN0VHlwZUNoZWNraW5nXSBhdHRyaWJ1dGUgSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQ/IHRGb290OwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxDb2xsZWN0aW9uIHJv
d3M7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxDb2xsZWN0aW9uIHRCb2RpZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0RhdGFDdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9EYXRhQ3VlLmNwcAppbmRleCAzOWE3OGFkZWU5MmVhNDViZGQ1N2Vm
YzNhZjk2NDRiY2I4MzVkNTk1Li41ZDllMDRlOGI3N2UzODdjM2YxM2Q4OGJlMzdmYWJmMzEyZWY2
YTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0RhdGFDdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5jcHAKQEAgLTM2LDExICszNiwx
MSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURhdGFDdWU6OkRhdGFDdWUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVk
aWFUaW1lJiBlbmQsIEFycmF5QnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIHR5cGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorRGF0YUN1ZTo6RGF0YUN1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgQXJy
YXlCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICA6IFRleHRUcmFja0N1ZShj
b250ZXh0LCBzdGFydCwgZW5kKQogICAgICwgbV90eXBlKHR5cGUpCiB7Ci0gICAgc2V0RGF0YShk
YXRhLCBlYyk7CisgICAgc2V0RGF0YShkYXRhKTsKIH0KIAogRGF0YUN1ZTo6RGF0YUN1ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25z
dCBNZWRpYVRpbWUmIGVuZCwgY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQpAQCAt
ODgsMTMgKzg4LDggQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBEYXRhQ3VlOjpkYXRhKCkgY29uc3QK
ICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZSgqbV9kYXRhKTsKIH0KIAotdm9pZCBEYXRh
Q3VlOjpzZXREYXRhKEFycmF5QnVmZmVyKiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQg
RGF0YUN1ZTo6c2V0RGF0YShBcnJheUJ1ZmZlciYgZGF0YSkKIHsKLSAgICBpZiAoIWRhdGEpIHsK
LSAgICAgICAgZWMgPSBUeXBlRXJyb3I7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICNpZiBF
TkFCTEUoREFUQUNVRV9WQUxVRSkKICAgICBtX3BsYXRmb3JtVmFsdWUgPSBudWxscHRyOwogICAg
IGlmIChtX3ZhbHVlKQpAQCAtMTAyLDcgKzk3LDcgQEAgdm9pZCBEYXRhQ3VlOjpzZXREYXRhKEFy
cmF5QnVmZmVyKiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBtX3ZhbHVlID0gSlNDOjpK
U1ZhbHVlKCk7CiAjZW5kaWYKIAotICAgIG1fZGF0YSA9IEFycmF5QnVmZmVyOjpjcmVhdGUoKmRh
dGEpOworICAgIG1fZGF0YSA9IEFycmF5QnVmZmVyOjpjcmVhdGUoZGF0YSk7CiB9CiAKIERhdGFD
dWUqIHRvRGF0YUN1ZShUZXh0VHJhY2tDdWUqIGN1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9EYXRh
Q3VlLmgKaW5kZXggZDcxZmI4MTE3MThiOTE0MTY5ODFiNTU5ZWRlMzU4MmRjNDMyMDdmNC4uNjIz
Mjc3NGY3NGJjOGU4ZmYzNzNmYThmYTRmNzA2NDlmYTczMzNhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9EYXRhQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9EYXRhQ3VlLmgKQEAgLTQ1LDkgKzQ1LDkgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKIAogY2xhc3MgRGF0YUN1ZSBmaW5hbCA6IHB1YmxpYyBUZXh0VHJhY2tDdWUgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8RGF0YUN1ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5k
LCBBcnJheUJ1ZmZlciogZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgc3RhdGljIFJlZjxE
YXRhQ3VlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgTWVk
aWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIEFycmF5QnVmZmVyJiBkYXRhKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YUN1ZShjb250ZXh0LCBzdGFy
dCwgZW5kLCBkYXRhLCBlbXB0eVN0cmluZygpLCBlYykpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEYXRhQ3VlKGNvbnRleHQsIHN0YXJ0LCBlbmQsIGRhdGEsIGVtcHR5U3RyaW5nKCkp
KTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPERhdGFDdWU+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRp
bWUmIGVuZCwgY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQpAQCAtNTUsOSArNTUs
OSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFDdWUoY29udGV4
dCwgc3RhcnQsIGVuZCwgZGF0YSwgbGVuZ3RoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxE
YXRhQ3VlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgTWVk
aWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIEFycmF5QnVmZmVyKiBkYXRhLCBj
b25zdCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgIHN0YXRpYyBSZWY8RGF0
YUN1ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IE1lZGlh
VGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBBcnJheUJ1ZmZlciYgZGF0YSwgY29u
c3QgU3RyaW5nJiB0eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0
YUN1ZShjb250ZXh0LCBzdGFydCwgZW5kLCBkYXRhLCB0eXBlLCBlYykpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEYXRhQ3VlKGNvbnRleHQsIHN0YXJ0LCBlbmQsIGRhdGEsIHR5cGUp
KTsKICAgICB9CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKQEAgLTc2LDcgKzc2LDcgQEAg
cHVibGljOgogICAgIEN1ZVR5cGUgY3VlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIERh
dGE7IH0KIAogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gZGF0YSgpIGNvbnN0OwotICAgIHZvaWQg
c2V0RGF0YShBcnJheUJ1ZmZlciosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldERhdGEo
QXJyYXlCdWZmZXImKTsKIAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQogICAgIGNvbnN0IFNl
cmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uKiBwbGF0Zm9ybVZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wbGF0Zm9ybVZhbHVlLmdldCgpOyB9CkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGRvZXNFeHRlbmRDdWUoY29uc3QgVGV4dFRyYWNrQ3VlJikgY29uc3Qgb3ZlcnJp
ZGU7CiAKIHByb3RlY3RlZDoKLSAgICBEYXRhQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBj
b25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgQXJyYXlCdWZmZXIq
LCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAgRGF0YUN1ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBl
bmQsIEFycmF5QnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAgICAgRGF0YUN1ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBl
bmQsIGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7CiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCiAg
ICAgRGF0YUN1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgTWVkaWFUaW1lJiBzdGFy
dCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZlB0cjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNl
bnRhdGlvbj4mJiwgY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0RhdGFDdWUuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9EYXRhQ3Vl
LmlkbAppbmRleCBmYTVlMjVlZDQ3YzY2M2VlNDI1OWIxNzMyYzBlN2NhZmVmNDRjMDg0Li41OTIz
NDg5ZmNkNWY4YzY1ZTlhNTIwNzRhZDMyOTRhN2ExNzMyZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0RhdGFDdWUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svRGF0YUN1ZS5pZGwKQEAgLTM0LDcgKzM0LDcgQEAKICNlbmRpZgogICAgIENvbnN0cnVj
dG9yUmFpc2VzRXhjZXB0aW9uLAogXSBpbnRlcmZhY2UgRGF0YUN1ZSA6IFRleHRUcmFja0N1ZSB7
Ci0gICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIEFycmF5QnVmZmVyIGRhdGE7
CisgICAgYXR0cmlidXRlIEFycmF5QnVmZmVyIGRhdGE7CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9E
QVRBQ1VFX1ZBTFVFKSAmJiBFTkFCTEVfREFUQUNVRV9WQUxVRQogICAgIFtDdXN0b21HZXR0ZXIs
IEN1c3RvbVNldHRlcl0gYXR0cmlidXRlIGFueSB2YWx1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277881</attachid>
            <date>2016-05-01 17:49:20 -0700</date>
            <delta_ts>2016-05-01 21:18:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157250-20160501174956.patch</filename>
            <type>text/plain</type>
            <size>62947</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJlMDJhNGM1MTYyOWQ3
NDk2NDVlM2YyYmE4OTRhNzdiMjBiZGVjYS4uOWRkMzNjZjBjMWVmMTI4ZDc4N2RlNjAxNWUwYTM1
OTEyNDk1NmUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDcxIEBACiAyMDE2LTA1LTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgUGFzcyByZWZlcmVuY2UgaW5z
dGVhZCBvZiBwb2ludGVyIHRvIElETCBhdHRyaWJ1dGUgc2V0dGVycyBpZiBub3QgbnVsbGFibGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzI1MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0
aGUgYmluZGluZ3MgZ2VuZXJhdG9yIHNvIHRoYXQgd2UgcGFzcyB3cmFwcGVyIHR5cGVzIGJ5IHJl
ZmVyZW5jZQorICAgICAgICB0byBhdHRyaWJ1dGUgc2V0dGVycyBpbnN0ZWFkIG9mIGJ5IHJhdyBw
b2ludGVyIHdoZW4gdGhlIGF0dHJpYnV0ZSBpcyBub3QKKyAgICAgICAgbWFya2VkIGFzIG51bGxh
YmxlIGluIHRoZSBJREwuCisKKyAgICAgICAgVGhlcmUgaXMgbm8gaW50ZW5kZWQgV2ViLWV4cG9z
ZWQgYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZl
ck5vZGUuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU0RhdGFDdWUpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbToK
KyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5tbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tOgorICAgICAgICBSZWJhc2VsaW5lIGJpbmRpbmdz
IHRlc3RzLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojptb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIGRv
bS9Ob2RlSXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJhdG9yOjpOb2Rl
UG9pbnRlcjo6Tm9kZVBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJhdG9yOjpO
b2RlUG9pbnRlcjo6bW92ZVRvTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0b3I6
Ok5vZGVQb2ludGVyOjptb3ZlVG9QcmV2aW91cyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlSXRl
cmF0b3I6Ok5vZGVJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0b3I6On5O
b2RlSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJhdG9yOjp1cGRhdGVGb3JO
b2RlUmVtb3ZhbCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0b3I6Ok5vZGVQb2ludGVy
OjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0b3I6Om5leHRO
b2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vTm9kZUl0ZXJhdG9yLmg6CisgICAgICAgICog
ZG9tL1RyYXZlcnNhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0b3JCYXNlOjpO
b2RlSXRlcmF0b3JCYXNlKToKKyAgICAgICAgKiBkb20vVHJhdmVyc2FsLmg6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlSXRlcmF0b3JCYXNlOjpyb290KToKKyAgICAgICAgKiBkb20vVHJlZVdhbGtl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlV2Fsa2VyOjpzZXRDdXJyZW50Tm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmVlV2Fsa2VyOjpzZXRDdXJyZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlRyZWVXYWxrZXI6OnBhcmVudE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtl
cjo6Zmlyc3RDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlV2Fsa2VyOjpsYXN0Q2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtlcjo6dHJhdmVyc2VTaWJsaW5ncyk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmVlV2Fsa2VyOjpwcmV2aW91c05vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJlZVdhbGtlcjo6bmV4dE5vZGUpOgorICAgICAgICAqIGRvbS9UcmVlV2Fsa2VyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmVlV2Fsa2VyOjpjdXJyZW50Tm9kZSk6CisgICAgICAgICogZG9t
L1RyZWVXYWxrZXIuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmlk
bDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwv
SFRNTFRhYmxlRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9EYXRhQ3VlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFDdWU6OkRhdGFDdWUpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YUN1ZTo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjp0b0RhdGFDdWUpOiBEZWxldGVk
LgorICAgICAgICAqIGh0bWwvdHJhY2svRGF0YUN1ZS5oOgorICAgICAgICAqIGh0bWwvdHJhY2sv
RGF0YUN1ZS5pZGw6CisKKzIwMTYtMDUtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKwogICAgICAgICBVbnJldmlld2VkIGF0dGVtcHQgdG8gZml4IFdpbmRvd3MgYnVpbGQgYWZ0
ZXIgcjIwMDI4OC4KIAogICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5pZGwKaW5kZXggYzM0YzdmYjc2YjVlODU3ODgwNzQ0MjVlZDU0
NmMxYjMwYWJjOGI5Zi4uZTc4MWY1MjQ0NDdmOTQxODA4OGM4YTI3YTZjZWQzMDYzMzc1MjQ0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuaWRsCkBAIC0zMCw3ICszMCw3IEBACiBdIGludGVyZmFjZSBTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UgOiBFdmVudFRhcmdldCB7CiAgICAgYXR0cmlidXRlIERPTVN0
cmluZyB0ZXh0OwogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbGFuZzsKLSAgICBhdHRyaWJ1dGUg
U3BlZWNoU3ludGhlc2lzVm9pY2Ugdm9pY2U7CisgICAgYXR0cmlidXRlIFNwZWVjaFN5bnRoZXNp
c1ZvaWNlPyB2b2ljZTsgLy8gRklYTUU6IHNob3VsZCBub3QgYmUgbnVsbGFibGUuCiAgICAgYXR0
cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCB2b2x1bWU7CiAgICAgYXR0cmlidXRlIHVucmVzdHJp
Y3RlZCBmbG9hdCByYXRlOwogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgcGl0Y2g7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5v
ZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlk
bAppbmRleCBkYmRjMTI2ZTQzYmIxYzA1N2VmNTJlYmRkY2FiZTM3Y2U0ZWI5YTRiLi5mMGQzZjc0
ZDY3ODQ5NjJkNTYzNTkyOTYzMzkwZDdlNGMyMmUwM2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5pZGwKQEAgLTI3LDYgKzI3LDYgQEAK
ICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QKIF0g
aW50ZXJmYWNlIENvbnZvbHZlck5vZGUgOiBBdWRpb05vZGUgewotICAgIFtTZXR0ZXJSYWlzZXNF
eGNlcHRpb25dIGF0dHJpYnV0ZSBBdWRpb0J1ZmZlciBidWZmZXI7CisgICAgW1NldHRlclJhaXNl
c0V4Y2VwdGlvbl0gYXR0cmlidXRlIEF1ZGlvQnVmZmVyPyBidWZmZXI7CiAgICAgYXR0cmlidXRl
IGJvb2xlYW4gbm9ybWFsaXplOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RhdGFDdWVDdXN0b20uY3BwCmluZGV4IGJlNTNlYmVkOTUxNDFiZjY4NTYxOTc1YzQxNjdhZTUy
YzAxZTJlYmQuLjQ4NTk1YTFlMjI3MGFmZDc4NzA2MmQ5NDNiMGYxMThmZTZjNTIyZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcApAQCAtNTMs
NyArNTMsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTRGF0YUN1
ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoZXhlYykpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgZG91YmxlIHN0
YXJ0VGltZShleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSk7CiAgICAgaWYgKFVOTElL
RUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKQEAgLTg0LDE2ICs4MywxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEpTRGF0YUN1ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgUmVmUHRy
PERhdGFDdWU+IG9iamVjdDsKICAgICBpZiAodmFsdWVBcmd1bWVudC5pc0NlbGwoKSAmJiB2YWx1
ZUFyZ3VtZW50LmFzQ2VsbCgpLT5pbmhlcml0cyhzdGQ6OnJlbW92ZV9wb2ludGVyPEpTQXJyYXlC
dWZmZXIqPjo6dHlwZTo6aW5mbygpKSkgewogCi0gICAgICAgIEFycmF5QnVmZmVyKiBkYXRhKHRv
QXJyYXlCdWZmZXIodmFsdWVBcmd1bWVudCkpOworICAgICAgICBBcnJheUJ1ZmZlciogZGF0YSA9
IHRvQXJyYXlCdWZmZXIodmFsdWVBcmd1bWVudCk7CiAgICAgICAgIGlmIChVTkxJS0VMWShleGVj
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogCi0gICAgICAgIG9iamVjdCA9IERhdGFDdWU6OmNyZWF0ZSgqY29udGV4
dCwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0VGltZSksIE1lZGlhVGltZTo6Y3Jl
YXRlV2l0aERvdWJsZShlbmRUaW1lKSwgZGF0YSwgdHlwZSwgZWMpOwotICAgICAgICBpZiAoZWMp
IHsKLSAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgICAgIGlmICghZGF0YSkgewor
ICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFR5cGVFcnJvcik7CisgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CiAKKyAg
ICAgICAgb2JqZWN0ID0gRGF0YUN1ZTo6Y3JlYXRlKCpjb250ZXh0LCBNZWRpYVRpbWU6OmNyZWF0
ZVdpdGhEb3VibGUoc3RhcnRUaW1lKSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGVuZFRp
bWUpLCAqZGF0YSwgdHlwZSk7CisKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09i
amVjdCh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBvYmplY3QuZ2V0KCkp
KSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQppbmRleCBhZGVjNzliZWNiYTY3NmZmMWQ1NTNiZDZj
MTMxNzNiMThkYTU4N2EwLi4yM2I2NGJlOWMxZTkwMmM3ODg5OTFmZjRjMGIwODNmZTcyOTBhODIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JHT2JqZWN0LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckdPYmplY3QucG0KQEAgLTExMTAsOSArMTExMCw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0
aW9uIHsKICAgICAgICAgfQogICAgICAgICBpZiAoJHBhcmFtSXNHRE9NVHlwZSB8fCAoJHBhcmFt
SURMVHlwZSBlcSAiRE9NU3RyaW5nIikpIHsKICAgICAgICAgICAgICRwYXJhbU5hbWUgPSAiY29u
dmVydGVkIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRwYXJhbU5hbWUpOwotICAgICAg
ICAgICAgaWYgKCRwcmVmaXggbmUgInNldF8iICYmICRjb2RlR2VuZXJhdG9yLT5TaG91bGRQYXNz
V3JhcHBlckJ5UmVmZXJlbmNlKCRwYXJhbSwgJHBhcmVudE5vZGUpKSB7Ci0gICAgICAgICAgICAg
ICAgJHBhcmFtTmFtZSA9ICIqJHBhcmFtTmFtZSI7Ci0gICAgICAgICAgICB9CisgICAgICAgICAg
ICAkcGFyYW1OYW1lID0gIiokcGFyYW1OYW1lIiBpZiAkY29kZUdlbmVyYXRvci0+U2hvdWxkUGFz
c1dyYXBwZXJCeVJlZmVyZW5jZSgkcGFyYW0sICRwYXJlbnROb2RlKTsKICAgICAgICAgfQogICAg
ICAgICBpZiAoJHBhcmFtSURMVHlwZSBlcSAiTm9kZUZpbHRlciIgfHwgJHBhcmFtSURMVHlwZSBl
cSAiWFBhdGhOU1Jlc29sdmVyIikgewogICAgICAgICAgICAgJHBhcmFtTmFtZSA9ICJXVEY6Omdl
dFB0cigiIC4gJHBhcmFtTmFtZSAuICIpIjsKQEAgLTE0OTcsNiArMTQ5NSw3IEBAIHN1YiBHZW5l
cmF0ZUZ1bmN0aW9ucyB7CiAgICAgICAgIG15ICRwYXJhbSA9IG5ldyBkb21TaWduYXR1cmUoKTsK
ICAgICAgICAgJHBhcmFtLT5uYW1lKCJ2YWx1ZSIpOwogICAgICAgICAkcGFyYW0tPnR5cGUoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKTsKKyAgICAgICAgJHBhcmFtLT5pc051bGxhYmxlKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+aXNOdWxsYWJsZSk7CiAgICAgICAgIG15ICVhdHRyaWJ1dGVz
ID0gKCk7CiAgICAgICAgICRwYXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKFwlYXR0cmlidXRlcyk7
CiAgICAgICAgIG15ICRhcnJheVJlZiA9ICRmdW5jdGlvbi0+cGFyYW1ldGVyczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXgg
ZDBjYmEzMzdhZmQ3YThlOWU2ZGUzOWM2ZTcwZmZhZWU1MGVjMGNlYS4uMmY0ZGM5ZGJhOGUzYzZh
YzUzOGZmZWY4ZWM3NWIzYTM5MTUxOWZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI4NjAsNiArMjg2MCwxNCBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBwdXNoIChAaW1w
bENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAgICAgICAgICAgICAgIH0K
IAorICAgICAgICAgICAgICAgIG15ICRzaG91bGRQYXNzQnlSZWZlcmVuY2UgPSBTaG91bGRQYXNz
V3JhcHBlckJ5UmVmZXJlbmNlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgJGludGVyZmFjZSk7Cisg
ICAgICAgICAgICAgICAgaWYgKCRzaG91bGRQYXNzQnlSZWZlcmVuY2UpIHsKKyAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1
ZSkpIHtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOworICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKKyAgICAgICAgICAgICAgICB9
CisKICAgICAgICAgICAgICAgICBpZiAoJHR5cGUgZXEgImRvdWJsZSIgb3IgJHR5cGUgZXEgImZs
b2F0IikgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
VU5MSUtFTFkoIXN0ZDo6aXNmaW5pdGUobmF0aXZlVmFsdWUpKSkge1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlKTtcbiIpOwpAQCAtMjkwMyw3ICsyOTExLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzRW51bVR5
cGUoJHR5cGUpIGFuZCBub3QgJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nQmFzZWRFbnVtVHlwZSgk
dHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgIm5hdGl2
ZVZhbHVlLnZhbHVlKCkiKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgIm5hdGl2ZVZhbHVlIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICRzaG91bGRQYXNzQnlSZWZlcmVuY2Ug
PyAiKm5hdGl2ZVZhbHVlIiA6ICJuYXRpdmVWYWx1ZSIpOwogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IG15ICRpbXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KaW5kZXggNjFhMWQwYTNkNTEyYTQ3ODJi
MjZhOTk2YzhiMGY2NWIyYTFjNWYxOC4uODFjNDVlMDUxOWFlZTVhYzgxZWQ3ZTRiZWEyNGQ1OWU5
MTMyYWU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yT2JqQy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JPYmpDLnBtCkBAIC0xNDE3LDYgKzE0MTcsMTIgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgJGFyZyA9ICJjb3JlKCIgLiAkYXJnIC4g
IikiOwogICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVy
YXRvci0+U2hvdWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZSgkYXR0cmlidXRlLT5zaWduYXR1cmUs
ICRpbnRlcmZhY2UpKSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmICghJGFyZylcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTtcbiIpOworICAg
ICAgICAgICAgICAgICAgICAkYXJnID0gIiokYXJnIjsKKyAgICAgICAgICAgICAgICB9CisKICAg
ICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9uTmFtZSwgQGFyZ3VtZW50cykgPSAkY29kZUdlbmVy
YXRvci0+U2V0dGVyRXhwcmVzc2lvbihcJWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5hbWUsICRh
dHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgJGFyZyk7CiAgICAg
ICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAiZWMiKSBpZiAkaGFzU2V0dGVyRXhjZXB0aW9u
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmNwcAppbmRleCA4ODY3
ZWQ2MmE0OWEyZmY0OTVkZDVmMmNjMWQ2NjhkNjAzYmViNmMyLi5iNjMxN2UxMzcwNjVhMjc0ODZl
N2I2MjJmOTEyNzQ5ZWYzNzE2OWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
SW50ZXJmYWNlLmNwcApAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgd2Via2l0X2RvbV90ZXN0X2lu
dGVyZmFjZV9zZXRfaW1wbGVtZW50c19ub2RlKFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYs
CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX05PREUodmFsdWUpKTsKICAgICBX
ZWJDb3JlOjpUZXN0SW50ZXJmYWNlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdl
YkNvcmU6Ok5vZGUqIGNvbnZlcnRlZFZhbHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKLSAgICBp
dGVtLT5zZXRJbXBsZW1lbnRzTm9kZShjb252ZXJ0ZWRWYWx1ZSk7CisgICAgaXRlbS0+c2V0SW1w
bGVtZW50c05vZGUoKmNvbnZlcnRlZFZhbHVlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNl
bGYpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CkBAIC01NjcsNyArNTY3LDcgQEAgdm9pZCB3
ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX3NldF9zdXBwbGVtZW50YWxfbm9kZShXZWJLaXRET01U
ZXN0SW50ZXJmYWNlKiBzZWwKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfTk9E
RSh2YWx1ZSkpOwogICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7CiAgICAgV2ViQ29yZTo6Tm9kZSogY29udmVydGVkVmFsdWUgPSBXZWJLaXQ6OmNv
cmUodmFsdWUpOwotICAgIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnNldFN1cHBsZW1lbnRh
bE5vZGUoKml0ZW0sIGNvbnZlcnRlZFZhbHVlKTsKKyAgICBXZWJDb3JlOjpUZXN0U3VwcGxlbWVu
dGFsOjpzZXRTdXBwbGVtZW50YWxOb2RlKCppdGVtLCAqY29udmVydGVkVmFsdWUpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0oc2VsZik7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKaW5kZXggN2Y0ZDMzNmZkMjVjYzNhM2FiZDlmNzEx
N2MzMzY4MDZjZmE5ODM4Ni4uZTE0YTYzZjc1ZmU0MDFjYWEyOTE4MTFkNjkzYzIyNzdkYzdjOTI3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKQEAgLTkyLDYgKzkyLDcgQEAg
ZW51bSB7CiAgICAgUFJPUF9VTlNJR05FRF9MT05HX0xPTkdfQVRUUiwKICAgICBQUk9QX1NUUklO
R19BVFRSLAogICAgIFBST1BfVEVTVF9PQkpfQVRUUiwKKyAgICBQUk9QX1RFU1RfTlVMTEFCTEVf
T0JKX0FUVFIsCiAgICAgUFJPUF9MRU5JRU5UX1RFU1RfT0JKX0FUVFIsCiAgICAgUFJPUF9VTkZP
UkdFQUJMRV9BVFRSLAogICAgIFBST1BfU1RSSU5HX0FUVFJfVFJFQVRJTkdfTlVMTF9BU19FTVBU
WV9TVFJJTkcsCkBAIC0zMjcsNiArMzI4LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0
X29ial9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLAogICAg
IGNhc2UgUFJPUF9URVNUX09CSl9BVFRSOgogICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFs
dWUsIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Rlc3Rfb2JqX2F0dHIoc2VsZikpOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfVEVTVF9OVUxMQUJMRV9PQkpfQVRUUjoKKyAgICAgICAg
Z192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF90ZXN0X251
bGxhYmxlX29ial9hdHRyKHNlbGYpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0xF
TklFTlRfVEVTVF9PQkpfQVRUUjoKICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9sZW5pZW50X3Rlc3Rfb2JqX2F0dHIoc2VsZikpOwogICAg
ICAgICBicmVhazsKQEAgLTY1Nyw2ICs2NjEsMTYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90
ZXN0X29ial9jbGFzc19pbml0KFdlYktpdERPTVRlc3RPYmpDbGFzcyogcmVxdWVzdENsYXNzKQog
CiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKICAgICAgICAgZ29iamVjdENs
YXNzLAorICAgICAgICBQUk9QX1RFU1RfTlVMTEFCTEVfT0JKX0FUVFIsCisgICAgICAgIGdfcGFy
YW1fc3BlY19vYmplY3QoCisgICAgICAgICAgICAidGVzdC1udWxsYWJsZS1vYmotYXR0ciIsCisg
ICAgICAgICAgICAiVGVzdE9iajp0ZXN0LW51bGxhYmxlLW9iai1hdHRyIiwKKyAgICAgICAgICAg
ICJyZWFkLW9ubHkgV2ViS2l0RE9NVGVzdE9iaiogVGVzdE9iajp0ZXN0LW51bGxhYmxlLW9iai1h
dHRyIiwKKyAgICAgICAgICAgIFdFQktJVF9ET01fVFlQRV9URVNUX09CSiwKKyAgICAgICAgICAg
IFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eSgKKyAgICAgICAgZ29iamVjdENsYXNzLAogICAgICAgICBQUk9QX0xFTklFTlRfVEVT
VF9PQkpfQVRUUiwKICAgICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgKICAgICAgICAgICAgICJs
ZW5pZW50LXRlc3Qtb2JqLWF0dHIiLApAQCAtMjIwMiw3ICsyMjE2LDI2IEBAIHZvaWQgd2Via2l0
X2RvbV90ZXN0X29ial9zZXRfdGVzdF9vYmpfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBX
ZWJLaXRET01UZXN0CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JK
KHZhbHVlKSk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2
YWx1ZSk7Ci0gICAgaXRlbS0+c2V0VGVzdE9iakF0dHIoY29udmVydGVkVmFsdWUpOworICAgIGl0
ZW0tPnNldFRlc3RPYmpBdHRyKCpjb252ZXJ0ZWRWYWx1ZSk7Cit9CisKK1dlYktpdERPTVRlc3RP
YmoqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Rlc3RfbnVsbGFibGVfb2JqX2F0dHIoV2ViS2l0
RE9NVGVzdE9iaiogc2VsZikKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihz
ZWxmKSwgMCk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0
UHRyKGl0ZW0tPnRlc3ROdWxsYWJsZU9iakF0dHIoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6a2l0
KGdvYmplY3RSZXN1bHQuZ2V0KCkpOworfQorCit2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0
X3Rlc3RfbnVsbGFibGVfb2JqX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9N
VGVzdE9iaiogdmFsdWUpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxmKSk7
CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHZhbHVlKSk7Cisg
ICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXZWJD
b3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7CisgICAg
aXRlbS0+c2V0VGVzdE51bGxhYmxlT2JqQXR0cihjb252ZXJ0ZWRWYWx1ZSk7CiB9CiAKIFdlYktp
dERPTVRlc3RPYmoqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2xlbmllbnRfdGVzdF9vYmpfYXR0
cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQpAQCAtMjIyMSw3ICsyMjU0LDcgQEAgdm9pZCB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX3NldF9sZW5pZW50X3Rlc3Rfb2JqX2F0dHIoV2ViS2l0RE9NVGVzdE9i
aiogc2VsZiwgV2ViS2kKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9P
QkoodmFsdWUpKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZlcnRlZFZhbHVlID0gV2ViS2l0Ojpjb3Jl
KHZhbHVlKTsKLSAgICBpdGVtLT5zZXRMZW5pZW50VGVzdE9iakF0dHIoY29udmVydGVkVmFsdWUp
OworICAgIGl0ZW0tPnNldExlbmllbnRUZXN0T2JqQXR0cigqY29udmVydGVkVmFsdWUpOwogfQog
CiBnY2hhciogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfdW5mb3JnZWFibGVfYXR0cihXZWJLaXRE
T01UZXN0T2JqKiBzZWxmKQpAQCAtMjI2OCw3ICsyMzAxLDcgQEAgdm9pZCB3ZWJraXRfZG9tX3Rl
c3Rfb2JqX3NldF94bWxfb2JqX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9N
VGVzdE8KICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkoodmFsdWUp
KTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAg
IFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZlcnRlZFZhbHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsK
LSAgICBpdGVtLT5zZXRYTUxPYmpBdHRyKGNvbnZlcnRlZFZhbHVlKTsKKyAgICBpdGVtLT5zZXRY
TUxPYmpBdHRyKCpjb252ZXJ0ZWRWYWx1ZSk7CiB9CiAKIGdib29sZWFuIHdlYmtpdF9kb21fdGVz
dF9vYmpfZ2V0X2NyZWF0ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmKQpAQCAtMjYyMiw3ICsyNjU1
LDcgQEAgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9zdHJpY3RfdHlwZV9jaGVja2luZ19h
dHRyaWJ1dGUoV2ViS2l0RE9NVGVzdE9iaiogc2UKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfVEVTVF9PQkoodmFsdWUpKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvbnZlcnRlZFZhbHVl
ID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKLSAgICBpdGVtLT5zZXRTdHJpY3RUeXBlQ2hlY2tpbmdB
dHRyaWJ1dGUoY29udmVydGVkVmFsdWUpOworICAgIGl0ZW0tPnNldFN0cmljdFR5cGVDaGVja2lu
Z0F0dHJpYnV0ZSgqY29udmVydGVkVmFsdWUpOwogfQogCiBnbG9uZyB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX2dldF93aXRoX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGUoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
ZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaAppbmRleCAwYzMxYjI0ZWU1NWUwOWFjOWFk
OWRjMTRhNmQ0MjkxNzhlNmZlNGMzLi4xMGJhNDQxYWE0Yjc5MTMwYWU0MGY4MjdhNjViMjFhOGQy
MzU0YWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCkBAIC0xMTc3LDYgKzExNzcs
MjcgQEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF90ZXN0X29ial9h
dHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTVRlc3RPYmoqIHZhbHVlKTsKIAog
LyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF90ZXN0X251bGxhYmxlX29ial9hdHRyOgor
ICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIg
bm9uZSk6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBTdGFiaWxpdHk6IFVuc3RhYmxlCisq
Ki8KK1dFQktJVF9BUEkgV2ViS2l0RE9NVGVzdE9iaioKK3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0
X3Rlc3RfbnVsbGFibGVfb2JqX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CisKKy8qKgor
ICogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfdGVzdF9udWxsYWJsZV9vYmpfYXR0cjoKKyAqIEBz
ZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBAdmFsdWU6IEEgI1dlYktpdERPTVRlc3RPYmoK
KyAqCisgKiBTdGFiaWxpdHk6IFVuc3RhYmxlCisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0
X2RvbV90ZXN0X29ial9zZXRfdGVzdF9udWxsYWJsZV9vYmpfYXR0cihXZWJLaXRET01UZXN0T2Jq
KiBzZWxmLCBXZWJLaXRET01UZXN0T2JqKiB2YWx1ZSk7CisKKy8qKgogICogd2Via2l0X2RvbV90
ZXN0X29ial9nZXRfbGVuaWVudF90ZXN0X29ial9hdHRyOgogICogQHNlbGY6IEEgI1dlYktpdERP
TVRlc3RPYmoKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDk3MWNjYTQ4MDQ1Nzc4M2I2
NmJkYTRmMDdiZmM4YzRkNmFhMGJhZjUuLmZhNzIzYTcyOWFjNWQ3NzA3NGU0NDkxOWE2NzMzNDY2
NGVhZTQ1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCkBAIC02ODYsNyArNjg2LDExIEBAIGJv
b2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlCiAgICAgTm9kZSogbmF0aXZlVmFsdWUgPSBKU05vZGU6OnRv
V3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbXBsLnNldEltcGxlbWVudHNOb2RlKG5hdGl2
ZVZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgeworICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBp
bXBsLnNldEltcGxlbWVudHNOb2RlKCpuYXRpdmVWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTc1Miw3ICs3NTYsMTEgQEAgYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50
YWxOb2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWwKICAgICBOb2Rl
KiBuYXRpdmVWYWx1ZSA9IEpTTm9kZTo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFdl
YkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnNldFN1cHBsZW1lbnRhbE5vZGUoaW1wbCwgbmF0aXZl
VmFsdWUpOworICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7CisgICAgICAgIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIFdl
YkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnNldFN1cHBsZW1lbnRhbE5vZGUoaW1wbCwgKm5hdGl2
ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA3OGQ1YmViZGM0
ZTM3NTAyNGNhNTI5YWI3MTkyNDIzMTE4YWEyODRiLi5jY2QxM2JhNmI4NWY4ZmFmYTRhMzRjNTNi
ODJhOTk1MWNmOGU2NDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtNDMwLDYgKzQzMCw4IEBAIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTCiBib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHIoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqVGVzdE9iakF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdE9ialRlc3RP
YmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3ROdWxsYWJsZU9iakF0
dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7Citib29sIHNldEpTVGVzdE9ialRlc3ROdWxsYWJsZU9iakF0dHIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RPYmpM
ZW5pZW50VGVzdE9iakF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVW5mb3Jn
ZWFibGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwpAQCAtNzQzLDYgKzc0NSw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJ1bnNpZ25lZExvbmdM
b25nQXR0ciIsIEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialVuc2lnbmVkTG9uZ0xv
bmdBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIpIH0gfSwKICAgICB7ICJzdHJp
bmdBdHRyIiwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqU3RyaW5nQXR0ciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdE9ialN0cmluZ0F0dHIpIH0gfSwKICAgICB7ICJ0ZXN0T2JqQXR0ciIsIEN1c3RvbUFjY2Vz
c29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialRlc3RPYmpBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqVGVzdE9iakF0dHIp
IH0gfSwKKyAgICB7ICJ0ZXN0TnVsbGFibGVPYmpBdHRyIiwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0T2JqVGVzdE51bGxhYmxlT2JqQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ialRlc3ROdWxsYWJsZU9i
akF0dHIpIH0gfSwKICAgICB7ICJsZW5pZW50VGVzdE9iakF0dHIiLCBDdXN0b21BY2Nlc3Nvciwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RPYmpMZW5pZW50VGVzdE9iakF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpMZW5pZW50VGVz
dE9iakF0dHIpIH0gfSwKICAgICB7ICJzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmlu
ZyIsIEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialN0cmluZ0F0dHJUcmVhdGluZ051
bGxBc0VtcHR5U3RyaW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlT
dHJpbmcpIH0gfSwKICAgICB7ICJYTUxPYmpBdHRyIiwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0T2JqWE1MT2JqQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ialhNTE9iakF0dHIpIH0gfSwKQEAgLTEzMjks
NiArMTMzMiwyMSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0T2JqQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsCiB9CiAKIAorRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqVGVzdE51bGxhYmxlT2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOworICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOworICAgIEpTVmFsdWUgZGVjb2RlZFRo
aXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOworICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOworICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAidGVzdE51bGxhYmxlT2JqQXR0ciIpOworICAgIH0K
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRy
KGltcGwudGVzdE51bGxhYmxlT2JqQXR0cigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOworfQorCisKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxlbmllbnRUZXN0T2Jq
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwpAQCAtMjU3Miw3ICsyNTkwLDI4IEBA
IGJvb2wgc2V0SlNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkCiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rl
c3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbXBsLnNldFRlc3RPYmpBdHRy
KG5hdGl2ZVZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgeworICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICBpbXBsLnNldFRlc3RPYmpBdHRyKCpuYXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKKworYm9vbCBzZXRKU1Rlc3RPYmpUZXN0TnVsbGFibGVPYmpBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKKyAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CisgICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInRlc3ROdWxsYWJsZU9iakF0dHIi
KTsKKyAgICB9CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBU
ZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKKyAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGltcGwuc2V0VGVzdE51bGxhYmxlT2JqQXR0cihuYXRpdmVWYWx1ZSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTI1ODksNyArMjYyOCwxMSBAQCBib29sIHNldEpTVGVzdE9iakxl
bmllbnRUZXN0T2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsCiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpbXBsLnNldExlbmllbnRUZXN0T2JqQXR0cihuYXRpdmVWYWx1ZSk7
CisgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaW1wbC5zZXRM
ZW5pZW50VGVzdE9iakF0dHIoKm5hdGl2ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtMjYyMyw3ICsyNjY2LDExIEBAIGJvb2wgc2V0SlNUZXN0T2JqWE1MT2JqQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKCiAgICAgVGVzdE9i
aiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpbXBsLnNldFhNTE9iakF0dHIobmF0aXZlVmFsdWUpOworICAgIGlmIChVTkxJS0VMWSghbmF0
aXZlVmFsdWUpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGltcGwuc2V0WE1MT2JqQXR0cigqbmF0aXZlVmFsdWUp
OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yODI5LDYgKzI4NzYsMTAgQEAgYm9vbCBzZXRK
U1Rlc3RPYmpUeXBlZEFycmF5QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY28KICAgICBSZWZQdHI8RmxvYXQzMkFycmF5PiBuYXRpdmVWYWx1ZSA9IHRv
RmxvYXQzMkFycmF5KHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFs
dWUpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQogICAgIGltcGwuc2V0VHlwZWRBcnJheUF0dHIobmF0aXZlVmFsdWUuZ2V0
KCkpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjk1OCw3ICszMDA5LDExIEBAIGJvb2wgc2V0
SlNUZXN0T2JqU3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoCiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRv
V3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbXBsLnNldFN0cmljdFR5cGVDaGVja2luZ0F0
dHJpYnV0ZShuYXRpdmVWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsK
KyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgaW1wbC5zZXRTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUoKm5hdGl2ZVZh
bHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzA0OCwxMCArMzEwMywxNCBAQCBib29s
IHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKUwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2Jq
Ojp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1
ZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CiAgICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW1wbC5z
ZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSgqY29udGV4dCwgbmF0aXZlVmFs
dWUpOworICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoKmNv
bnRleHQsICpuYXRpdmVWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMwNjgsNyAr
MzEyNywxMSBAQCBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNl
cyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZQogICAgIFRlc3RPYmoqIG5hdGl2ZVZh
bHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW1wbC5zZXRX
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoKnN0YXRlLCBuYXRpdmVWYWx1ZSk7CisgICAg
aWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaW1wbC5zZXRXaXRoU2Ny
aXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoKnN0YXRlLCAqbmF0aXZlVmFsdWUpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0zMDg1LDEwICszMTQ4LDE0IEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jCiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgeworICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAg
ICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNv
bnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKCpjb250ZXh0LCBuYXRpdmVWYWx1ZSk7CisgICAg
aW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcygqY29udGV4
dCwgKm5hdGl2ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzEwNSwxMCArMzE3
MiwxNCBAQCBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdAogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVl
ID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKFVOTElLRUxZ
KCFuYXRpdmVWYWx1ZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlKCpzdGF0ZSwgKmNvbnRleHQsIG5hdGl2ZVZhbHVlKTsKKyAgICBpbXBsLnNldFdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKnN0YXRlLCAqY29u
dGV4dCwgKm5hdGl2ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzEyNSwxMCAr
MzE5NiwxNCBAQCBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YQogICAgIFRlc3RPYmoqIG5hdGl2ZVZh
bHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKFVOTElL
RUxZKCFuYXRpdmVWYWx1ZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzKCpzdGF0ZSwgKmNvbnRleHQsIG5hdGl2ZVZhbHVlKTsKKyAgICBpbXBs
LnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXMoKnN0YXRlLCAqY29udGV4dCwgKm5hdGl2ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtMzE0NSwxMCArMzIyMCwxNCBAQCBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKEV4ZQogICAgIFRl
c3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgYXV0byogY29u
dGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSgqc3RhdGUsICpjb250ZXh0LCBuYXRp
dmVWYWx1ZSk7CisgICAgaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSgqc3RhdGUsICpjb250ZXh0LCAqbmF0aXZlVmFsdWUp
OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMTY1LDcgKzMyNDQsMTEgQEAgYm9vbCBzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY28KICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9X
cmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGltcGwuc2V0V2l0aFNjcmlwdEFyZ3VtZW50c0Fu
ZENhbGxTdGFja0F0dHJpYnV0ZShuYXRpdmVWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFuYXRp
dmVWYWx1ZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgaW1wbC5zZXRXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2Fs
bFN0YWNrQXR0cmlidXRlKCpuYXRpdmVWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RJbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0SW50ZXJmYWNlLm1tCmluZGV4IDA5OGExMWQ5ZTU3NDllMWFmOGQ3MmVhMjczZWU3
MTY0ZjYxNGE5OGQuLjdiZDI0NzE0MTFiZTExNDZiMjk4OWQ2MjQ2Mzg5MmU0MTk5ODVkOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RJbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEludGVyZmFjZS5tbQpAQCAtMTA5LDcgKzEwOSw5IEBAIC0gKHZvaWQpc2V0
SW1wbGVtZW50c05vZGU6KERPTU5vZGUgKiluZXdJbXBsZW1lbnRzTm9kZQogICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NFUlQobmV3SW1wbGVtZW50c05v
ZGUpOwogCi0gICAgSU1QTC0+c2V0SW1wbGVtZW50c05vZGUoY29yZShuZXdJbXBsZW1lbnRzTm9k
ZSkpOworICAgIGlmICghY29yZShuZXdJbXBsZW1lbnRzTm9kZSkpCisgICAgICAgIFdlYkNvcmU6
OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgSU1QTC0+c2V0SW1wbGVtZW50c05vZGUo
KmNvcmUobmV3SW1wbGVtZW50c05vZGUpKTsKIH0KICNlbmRpZgogCkBAIC0xNjEsNyArMTYzLDkg
QEAgLSAodm9pZClzZXRTdXBwbGVtZW50YWxOb2RlOihET01Ob2RlICopbmV3U3VwcGxlbWVudGFs
Tm9kZQogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NF
UlQobmV3U3VwcGxlbWVudGFsTm9kZSk7CiAKLSAgICBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFs
OjpzZXRTdXBwbGVtZW50YWxOb2RlKCpJTVBMLCBjb3JlKG5ld1N1cHBsZW1lbnRhbE5vZGUpKTsK
KyAgICBpZiAoIWNvcmUobmV3U3VwcGxlbWVudGFsTm9kZSkpCisgICAgICAgIFdlYkNvcmU6OnJh
aXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6
c2V0U3VwcGxlbWVudGFsTm9kZSgqSU1QTCwgKmNvcmUobmV3U3VwcGxlbWVudGFsTm9kZSkpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RPYmouaAppbmRleCBkZWEzZDI2YTRkMTVhNThhYjkwOTVmYzkwYWYw
OWRjYzUxMGUzMjI1Li5iMzhiM2Q5MDk5YWE1ZTk0ZDRlN2IxYTAxNzFmZDYyYmFhNjFiOTdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdE9iai5oCkBAIC03NSw2ICs3NSw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2Ug
RE9NVGVzdE9iaiA6IERPTU9iamVjdAogQHByb3BlcnR5IHVuc2lnbmVkIGxvbmcgbG9uZyB1bnNp
Z25lZExvbmdMb25nQXR0cjsKIEBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnN0cmluZ0F0dHI7
CiBAcHJvcGVydHkgKHN0cm9uZykgRE9NVGVzdE9iaiAqdGVzdE9iakF0dHI7CitAcHJvcGVydHkg
KHN0cm9uZykgRE9NVGVzdE9iaiAqdGVzdE51bGxhYmxlT2JqQXR0cjsKIEBwcm9wZXJ0eSAoc3Ry
b25nKSBET01UZXN0T2JqICpsZW5pZW50VGVzdE9iakF0dHI7CiBAcHJvcGVydHkgKHJlYWRvbmx5
LCBjb3B5KSBOU1N0cmluZyAqdW5mb3JnZWFibGVBdHRyOwogQHByb3BlcnR5IChjb3B5KSBOU1N0
cmluZyAqc3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmc7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQpp
bmRleCAzOTdjM2ZlNzQyNGIzNzk5MzEzNDM1N2Y1MjA2YzlmZjgzZjdhODhmLi4yMGUxMWM0ZDg1
YTdkYmQ1N2I0NWJlYmNiN2Y3NGVhZWQxMjkxYzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KQEAgLTExMiw3
ICsxMTIsOSBAQCAtICh2b2lkKXNldFRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nOihET01UZXN0
U3ViT2JqQ29uc3RydWN0b3IgKiluZXdUZXN0U3ViT2JqRQogICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NFUlQobmV3VGVzdFN1Yk9iakVuYWJsZWRCeVNl
dHRpbmcpOwogCi0gICAgSU1QTC0+c2V0VGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmcoY29yZShu
ZXdUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZykpOworICAgIGlmICghY29yZShuZXdUZXN0U3Vi
T2JqRW5hYmxlZEJ5U2V0dGluZykpCisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhj
ZXB0aW9uKCk7CisgICAgSU1QTC0+c2V0VGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmcoKmNvcmUo
bmV3VGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmcpKTsKIH0KIAogLSAoY2hhcilieXRlQXR0cgpA
QCAtMjQ2LDcgKzI0OCwyMyBAQCAtICh2b2lkKXNldFRlc3RPYmpBdHRyOihET01UZXN0T2JqICop
bmV3VGVzdE9iakF0dHIKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CiAgICAgQVNTRVJUKG5ld1Rlc3RPYmpBdHRyKTsKIAotICAgIElNUEwtPnNldFRlc3RPYmpBdHRy
KGNvcmUobmV3VGVzdE9iakF0dHIpKTsKKyAgICBpZiAoIWNvcmUobmV3VGVzdE9iakF0dHIpKQor
ICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIElNUEwtPnNl
dFRlc3RPYmpBdHRyKCpjb3JlKG5ld1Rlc3RPYmpBdHRyKSk7Cit9CisKKy0gKERPTVRlc3RPYmog
Kil0ZXN0TnVsbGFibGVPYmpBdHRyCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+dGVzdE51bGxhYmxl
T2JqQXR0cigpKSk7Cit9CisKKy0gKHZvaWQpc2V0VGVzdE51bGxhYmxlT2JqQXR0cjooRE9NVGVz
dE9iaiAqKW5ld1Rlc3ROdWxsYWJsZU9iakF0dHIKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgQVNTRVJUKG5ld1Rlc3ROdWxsYWJsZU9iakF0dHIpOwor
CisgICAgSU1QTC0+c2V0VGVzdE51bGxhYmxlT2JqQXR0cihjb3JlKG5ld1Rlc3ROdWxsYWJsZU9i
akF0dHIpKTsKIH0KIAogLSAoRE9NVGVzdE9iaiAqKWxlbmllbnRUZXN0T2JqQXR0cgpAQCAtMjYw
LDcgKzI3OCw5IEBAIC0gKHZvaWQpc2V0TGVuaWVudFRlc3RPYmpBdHRyOihET01UZXN0T2JqICop
bmV3TGVuaWVudFRlc3RPYmpBdHRyCiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwogICAgIEFTU0VSVChuZXdMZW5pZW50VGVzdE9iakF0dHIpOwogCi0gICAgSU1QTC0+
c2V0TGVuaWVudFRlc3RPYmpBdHRyKGNvcmUobmV3TGVuaWVudFRlc3RPYmpBdHRyKSk7CisgICAg
aWYgKCFjb3JlKG5ld0xlbmllbnRUZXN0T2JqQXR0cikpCisgICAgICAgIFdlYkNvcmU6OnJhaXNl
VHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgSU1QTC0+c2V0TGVuaWVudFRlc3RPYmpBdHRyKCpj
b3JlKG5ld0xlbmllbnRUZXN0T2JqQXR0cikpOwogfQogCiAtIChOU1N0cmluZyAqKXVuZm9yZ2Vh
YmxlQXR0cgpAQCAtMjkyLDcgKzMxMiw5IEBAIC0gKHZvaWQpc2V0WE1MT2JqQXR0cjooRE9NVGVz
dE9iaiAqKW5ld1hNTE9iakF0dHIKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7CiAgICAgQVNTRVJUKG5ld1hNTE9iakF0dHIpOwogCi0gICAgSU1QTC0+c2V0WE1MT2Jq
QXR0cihjb3JlKG5ld1hNTE9iakF0dHIpKTsKKyAgICBpZiAoIWNvcmUobmV3WE1MT2JqQXR0cikp
CisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgSU1QTC0+
c2V0WE1MT2JqQXR0cigqY29yZShuZXdYTUxPYmpBdHRyKSk7CiB9CiAKIC0gKEJPT0wpY3JlYXRl
CkBAIC01MjIsNyArNTQ0LDkgQEAgLSAodm9pZClzZXRTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1
dGU6KERPTVRlc3RPYmogKiluZXdTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWIKICAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgQVNTRVJUKG5ld1N0cmljdFR5cGVD
aGVja2luZ0F0dHJpYnV0ZSk7CiAKLSAgICBJTVBMLT5zZXRTdHJpY3RUeXBlQ2hlY2tpbmdBdHRy
aWJ1dGUoY29yZShuZXdTdHJpY3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUpKTsKKyAgICBpZiAoIWNv
cmUobmV3U3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKSkKKyAgICAgICAgV2ViQ29yZTo6cmFp
c2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBJTVBMLT5zZXRTdHJpY3RUeXBlQ2hlY2tpbmdB
dHRyaWJ1dGUoKmNvcmUobmV3U3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKSk7CiB9CiAKIC0g
KGludCljdXN0b21BdHRyCkBAIC01NDksNyArNTczLDkgQEAgLSAodm9pZClzZXRKc0J1aWx0aW5B
dHRyaWJ1dGU6KERPTVRlc3RPYmogKiluZXdKc0J1aWx0aW5BdHRyaWJ1dGUKICAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgQVNTRVJUKG5ld0pzQnVpbHRpbkF0
dHJpYnV0ZSk7CiAKLSAgICBJTVBMLT5zZXRKc0J1aWx0aW5BdHRyaWJ1dGUoY29yZShuZXdKc0J1
aWx0aW5BdHRyaWJ1dGUpKTsKKyAgICBpZiAoIWNvcmUobmV3SnNCdWlsdGluQXR0cmlidXRlKSkK
KyAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBJTVBMLT5z
ZXRKc0J1aWx0aW5BdHRyaWJ1dGUoKmNvcmUobmV3SnNCdWlsdGluQXR0cmlidXRlKSk7CiB9CiAj
ZW5kaWYKIApAQCAtNTk2LDcgKzYyMiw5IEBAIC0gKHZvaWQpc2V0V2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGU6KERPTVRlc3RPYmogKiluZXdXaXRoU2NyaXB0RXhlY3V0CiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIEFTU0VSVChuZXdXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSk7CiAKLSAgICBJTVBMLT5zZXRXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShjb3JlKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlKSk7CisgICAgaWYgKCFjb3JlKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlKSkKKyAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRp
b24oKTsKKyAgICBJTVBMLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSgq
Y29yZShuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSkpOwogfQogCiAtIChE
T01UZXN0T2JqICopd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzCkBAIC02MTMsNyArNjQx
LDkgQEAgLSAodm9pZClzZXRXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXM6KERPTVRlc3RP
YmogKiluZXdXaXRoU2NyaXB0U3RhdGVBdHRyaWIKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CiAgICAgQVNTRVJUKG5ld1dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJh
aXNlcyk7CiAKLSAgICBJTVBMLT5zZXRXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoY29y
ZShuZXdXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpKTsKKyAgICBpZiAoIWNvcmUobmV3
V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKSkKKyAgICAgICAgV2ViQ29yZTo6cmFpc2VU
eXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBJTVBMLT5zZXRXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMoKmNvcmUobmV3V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKSk7CiB9CiAK
IC0gKERPTVRlc3RPYmogKil3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNl
cwpAQCAtNjMwLDcgKzY2MCw5IEBAIC0gKHZvaWQpc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBdHRyaWJ1dGVSYWlzZXM6KERPTVRlc3RPYmogKiluZXdXaXRoU2NyaXB0CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIEFTU0VSVChuZXdXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyk7CiAKLSAgICBJTVBMLT5zZXRXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhjb3JlKG5ld1dpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKSk7CisgICAgaWYgKCFjb3JlKG5ld1dpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKSkKKyAgICAgICAgV2ViQ29yZTo6cmFp
c2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBJTVBMLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZVJhaXNlcygqY29yZShuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZVJhaXNlcykpOwogfQogCiAtIChET01UZXN0T2JqICopd2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZQpAQCAtNjQ0LDcgKzY3Niw5IEBAIC0g
KHZvaWQpc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZTooRE9NVGVzdE9iaiAqKW5ld1dpCiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwogICAgIEFTU0VSVChuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlKTsKIAotICAgIElNUEwtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoY29yZShuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKSk7CisgICAgaWYgKCFjb3JlKG5ld1dpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUpKQorICAgICAgICBXZWJD
b3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIElNUEwtPnNldFdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKmNvcmUobmV3V2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSkpOwogfQogCiAtIChET01U
ZXN0T2JqICopd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZVJhaXNlcwpAQCAtNjYxLDcgKzY5NSw5IEBAIC0gKHZvaWQpc2V0V2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlczooRE9NVGVzdE9iaiAqCiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIEFTU0VSVChuZXdXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKTsKIAot
ICAgIElNUEwtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGVSYWlzZXMoY29yZShuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzKSk7CisgICAgaWYgKCFjb3JlKG5ld1dpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpKQorICAgICAgICBXZWJDb3Jl
OjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIElNUEwtPnNldFdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoKmNvcmUobmV3V2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcykpOwogfQog
CiAtIChET01UZXN0T2JqICopd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZVdpdGhTcGFjZXNBdHRyaWJ1dGUKQEAgLTY3NSw3ICs3MTEsOSBAQCAtICh2b2lkKXNldFdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlOihE
T01UZXN0TwogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBB
U1NFUlQobmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFj
ZXNBdHRyaWJ1dGUpOwogCi0gICAgSU1QTC0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoY29yZShuZXdXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSkpOworICAgIGlmICgh
Y29yZShuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNl
c0F0dHJpYnV0ZSkpCisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7
CisgICAgSU1QTC0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdp
dGhTcGFjZXNBdHRyaWJ1dGUoKmNvcmUobmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpKTsKIH0KIAogLSAoRE9NVGVzdE9iaiAqKXdp
dGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUKQEAgLTY4OSw3ICs3MjcsOSBA
QCAtICh2b2lkKXNldFdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGU6KERP
TVRlc3RPYmogKiluZXdXaXRoU2NyaXB0QQogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKICAgICBBU1NFUlQobmV3V2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFj
a0F0dHJpYnV0ZSk7CiAKLSAgICBJTVBMLT5zZXRXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0
YWNrQXR0cmlidXRlKGNvcmUobmV3V2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJp
YnV0ZSkpOworICAgIGlmICghY29yZShuZXdXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNr
QXR0cmlidXRlKSkKKyAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsK
KyAgICBJTVBMLT5zZXRXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKCpj
b3JlKG5ld1dpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUpKTsKIH0KIAog
I2lmIEVOQUJMRShDb25kaXRpb24xKQpAQCAtNzQ2LDcgKzc4Niw5IEBAIC0gKHZvaWQpc2V0Q29u
ZGl0aW9uYWxBdHRyNDooRE9NVGVzdE9iamVjdEFDb25zdHJ1Y3RvciAqKW5ld0NvbmRpdGlvbmFs
QXR0cjQKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgQVNT
RVJUKG5ld0NvbmRpdGlvbmFsQXR0cjQpOwogCi0gICAgSU1QTC0+c2V0Q29uZGl0aW9uYWxBdHRy
NChjb3JlKG5ld0NvbmRpdGlvbmFsQXR0cjQpKTsKKyAgICBpZiAoIWNvcmUobmV3Q29uZGl0aW9u
YWxBdHRyNCkpCisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7Cisg
ICAgSU1QTC0+c2V0Q29uZGl0aW9uYWxBdHRyNCgqY29yZShuZXdDb25kaXRpb25hbEF0dHI0KSk7
CiB9CiAjZW5kaWYKIApAQCAtNzYyLDcgKzgwNCw5IEBAIC0gKHZvaWQpc2V0Q29uZGl0aW9uYWxB
dHRyNTooRE9NVGVzdE9iamVjdEJDb25zdHJ1Y3RvciAqKW5ld0NvbmRpdGlvbmFsQXR0cjUKICAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgQVNTRVJUKG5ld0Nv
bmRpdGlvbmFsQXR0cjUpOwogCi0gICAgSU1QTC0+c2V0Q29uZGl0aW9uYWxBdHRyNShjb3JlKG5l
d0NvbmRpdGlvbmFsQXR0cjUpKTsKKyAgICBpZiAoIWNvcmUobmV3Q29uZGl0aW9uYWxBdHRyNSkp
CisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgSU1QTC0+
c2V0Q29uZGl0aW9uYWxBdHRyNSgqY29yZShuZXdDb25kaXRpb25hbEF0dHI1KSk7CiB9CiAjZW5k
aWYKIApAQCAtNzc4LDcgKzgyMiw5IEBAIC0gKHZvaWQpc2V0Q29uZGl0aW9uYWxBdHRyNjooRE9N
VGVzdE9iamVjdENDb25zdHJ1Y3RvciAqKW5ld0NvbmRpdGlvbmFsQXR0cjYKICAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgQVNTRVJUKG5ld0NvbmRpdGlvbmFs
QXR0cjYpOwogCi0gICAgSU1QTC0+c2V0Q29uZGl0aW9uYWxBdHRyNihjb3JlKG5ld0NvbmRpdGlv
bmFsQXR0cjYpKTsKKyAgICBpZiAoIWNvcmUobmV3Q29uZGl0aW9uYWxBdHRyNikpCisgICAgICAg
IFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgSU1QTC0+c2V0Q29uZGl0
aW9uYWxBdHRyNigqY29yZShuZXdDb25kaXRpb25hbEF0dHI2KSk7CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRs
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4
IDk4YTdiNGQ2MGViM2Q4N2QzNjkwMDRmNTE2NWEyM2I0ZTVkYWE1MzAuLmZlMTNjZTc5ZTdkMGY1
M2RjMjlkNDQ3MGZlMzU1NmY1NzA1NmEzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKQEAgLTYzLDYgKzYzLDcgQEAgZW51bSBfb3B0
aW9uYWwgeyAiIiwgIk9wdGlvbmFsVmFsdWUxIiwgIk9wdGlvbmFsVmFsdWUyIiwgIk9wdGlvbmFs
VmFsdWUzIiB9OwogICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcgICAgICAgdW5zaWdu
ZWRMb25nTG9uZ0F0dHI7CiAgICAgYXR0cmlidXRlIERPTVN0cmluZyAgICAgICAgICAgICAgICBz
dHJpbmdBdHRyOwogICAgIGF0dHJpYnV0ZSBUZXN0T2JqICAgICAgICAgICAgICAgICAgdGVzdE9i
akF0dHI7CisgICAgYXR0cmlidXRlIFRlc3RPYmo/ICAgICAgICAgICAgICAgICB0ZXN0TnVsbGFi
bGVPYmpBdHRyOwogICAgIFtMZW5pZW50VGhpc10gYXR0cmlidXRlIFRlc3RPYmogICAgbGVuaWVu
dFRlc3RPYmpBdHRyOwogICAgIFtVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyB1bmZvcmdlYWJsZUF0dHI7CiAgICAgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNDIxMTBkNjhjZTI2OWZlYTkyNDgwOTE0ZWE5ZDcyYmNl
YWI3OGZhMy4uMjE3OGRhZjdkNjZkNzA1YzRjZDJjYzNmMDg3NzNiMmRiMzIxNGEwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zOTY0LDcgKzM5NjQsNyBAQCB2b2lkIERvY3VtZW50Ojpt
b3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnQoTm9kZSogbm9kZSwgRG9jdW1lbnQqIG5ld0Rv
Y3VtZW50KQogICAgIFZlY3RvcjxOb2RlSXRlcmF0b3IqPiBub2RlSXRlcmF0b3JzOwogICAgIGNv
cHlUb1ZlY3RvcihtX25vZGVJdGVyYXRvcnMsIG5vZGVJdGVyYXRvcnMpOwogICAgIGZvciAoYXV0
byogaXQgOiBub2RlSXRlcmF0b3JzKSB7Ci0gICAgICAgIGlmIChpdC0+cm9vdCgpID09IG5vZGUp
IHsKKyAgICAgICAgaWYgKCZpdC0+cm9vdCgpID09IG5vZGUpIHsKICAgICAgICAgICAgIGRldGFj
aE5vZGVJdGVyYXRvcihpdCk7CiAgICAgICAgICAgICBuZXdEb2N1bWVudC0+YXR0YWNoTm9kZUl0
ZXJhdG9yKGl0KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmNwcAppbmRl
eCA3NDI5MGE5NTE0NjM4NDcwN2ZhYTU0ZDUxZDA0OTUyOTRiNTZmMDRmLi5iNTllMGY5YTUzODc0
MjdlNjVjOWIxM2QxMjU0ZjllYTUzZjBiNGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZUl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9y
LmNwcApAQCAtMzMsMTMgKzMzLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Ob2RlSXRl
cmF0b3I6Ok5vZGVQb2ludGVyOjpOb2RlUG9pbnRlcigpCi17Ci19Ci0KLU5vZGVJdGVyYXRvcjo6
Tm9kZVBvaW50ZXI6Ok5vZGVQb2ludGVyKE5vZGUqIG4sIGJvb2wgYikKLSAgICA6IG5vZGUobikK
LSAgICAsIGlzUG9pbnRlckJlZm9yZU5vZGUoYikKK05vZGVJdGVyYXRvcjo6Tm9kZVBvaW50ZXI6
Ok5vZGVQb2ludGVyKE5vZGUmIG5vZGUsIGJvb2wgaXNQb2ludGVyQmVmb3JlTm9kZSkKKyAgICA6
IG5vZGUoJm5vZGUpCisgICAgLCBpc1BvaW50ZXJCZWZvcmVOb2RlKGlzUG9pbnRlckJlZm9yZU5v
ZGUpCiB7CiB9CiAKQEAgLTQ4LDcgKzQ0LDcgQEAgdm9pZCBOb2RlSXRlcmF0b3I6Ok5vZGVQb2lu
dGVyOjpjbGVhcigpCiAgICAgbm9kZSA9IG51bGxwdHI7CiB9CiAKLWJvb2wgTm9kZUl0ZXJhdG9y
OjpOb2RlUG9pbnRlcjo6bW92ZVRvTmV4dChOb2RlKiByb290KQorYm9vbCBOb2RlSXRlcmF0b3I6
Ok5vZGVQb2ludGVyOjptb3ZlVG9OZXh0KE5vZGUmIHJvb3QpCiB7CiAgICAgaWYgKCFub2RlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01NiwxMSArNTIsMTEgQEAgYm9vbCBOb2RlSXRlcmF0
b3I6Ok5vZGVQb2ludGVyOjptb3ZlVG9OZXh0KE5vZGUqIHJvb3QpCiAgICAgICAgIGlzUG9pbnRl
ckJlZm9yZU5vZGUgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIG5v
ZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlLCByb290KTsKKyAgICBub2RlID0gTm9kZVRy
YXZlcnNhbDo6bmV4dCgqbm9kZSwgJnJvb3QpOwogICAgIHJldHVybiBub2RlOwogfQogCi1ib29s
IE5vZGVJdGVyYXRvcjo6Tm9kZVBvaW50ZXI6Om1vdmVUb1ByZXZpb3VzKE5vZGUqIHJvb3QpCiti
b29sIE5vZGVJdGVyYXRvcjo6Tm9kZVBvaW50ZXI6Om1vdmVUb1ByZXZpb3VzKE5vZGUmIHJvb3Qp
CiB7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02OCw3ICs2NCw3
IEBAIGJvb2wgTm9kZUl0ZXJhdG9yOjpOb2RlUG9pbnRlcjo6bW92ZVRvUHJldmlvdXMoTm9kZSog
cm9vdCkKICAgICAgICAgaXNQb2ludGVyQmVmb3JlTm9kZSA9IHRydWU7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KLSAgICBpZiAobm9kZSA9PSByb290KSB7CisgICAgaWYgKG5vZGUgPT0g
JnJvb3QpIHsKICAgICAgICAgbm9kZSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CkBAIC04MCwxMiArNzYsMTIgQEAgTm9kZUl0ZXJhdG9yOjpOb2RlSXRlcmF0b3IoTm9k
ZSYgcm9vdE5vZGUsIHVuc2lnbmVkIGxvbmcgd2hhdFRvU2hvdywgUmVmUHRyPE5vZGUKICAgICA6
IE5vZGVJdGVyYXRvckJhc2Uocm9vdE5vZGUsIHdoYXRUb1Nob3csIFdURk1vdmUoZmlsdGVyKSkK
ICAgICAsIG1fcmVmZXJlbmNlTm9kZShyb290KCksIHRydWUpCiB7Ci0gICAgcm9vdCgpLT5kb2N1
bWVudCgpLmF0dGFjaE5vZGVJdGVyYXRvcih0aGlzKTsKKyAgICByb290KCkuZG9jdW1lbnQoKS5h
dHRhY2hOb2RlSXRlcmF0b3IodGhpcyk7CiB9CiAKIE5vZGVJdGVyYXRvcjo6fk5vZGVJdGVyYXRv
cigpCiB7Ci0gICAgcm9vdCgpLT5kb2N1bWVudCgpLmRldGFjaE5vZGVJdGVyYXRvcih0aGlzKTsK
KyAgICByb290KCkuZG9jdW1lbnQoKS5kZXRhY2hOb2RlSXRlcmF0b3IodGhpcyk7CiB9CiAKIFJl
ZlB0cjxOb2RlPiBOb2RlSXRlcmF0b3I6Om5leHROb2RlKCkKQEAgLTE0NSwxMSArMTQxLDExIEBA
IHZvaWQgTm9kZUl0ZXJhdG9yOjpub2RlV2lsbEJlUmVtb3ZlZChOb2RlJiByZW1vdmVkTm9kZSkK
IAogdm9pZCBOb2RlSXRlcmF0b3I6OnVwZGF0ZUZvck5vZGVSZW1vdmFsKE5vZGUmIHJlbW92ZWRO
b2RlLCBOb2RlUG9pbnRlciYgcmVmZXJlbmNlTm9kZSkgY29uc3QKIHsKLSAgICBBU1NFUlQoJnJv
b3QoKS0+ZG9jdW1lbnQoKSA9PSAmcmVtb3ZlZE5vZGUuZG9jdW1lbnQoKSk7CisgICAgQVNTRVJU
KCZyb290KCkuZG9jdW1lbnQoKSA9PSAmcmVtb3ZlZE5vZGUuZG9jdW1lbnQoKSk7CiAKICAgICAv
LyBJdGVyYXRvciBpcyBub3QgYWZmZWN0ZWQgaWYgdGhlIHJlbW92ZWQgbm9kZSBpcyB0aGUgcmVm
ZXJlbmNlIG5vZGUgYW5kIGlzIHRoZSByb290LgogICAgIC8vIG9yIGlmIHJlbW92ZWQgbm9kZSBp
cyBub3QgdGhlIHJlZmVyZW5jZSBub2RlLCBvciB0aGUgYW5jZXN0b3Igb2YgdGhlIHJlZmVyZW5j
ZSBub2RlLgotICAgIGlmICghcmVtb3ZlZE5vZGUuaXNEZXNjZW5kYW50T2Yocm9vdCgpKSkKKyAg
ICBpZiAoIXJlbW92ZWROb2RlLmlzRGVzY2VuZGFudE9mKCZyb290KCkpKQogICAgICAgICByZXR1
cm47CiAgICAgYm9vbCB3aWxsUmVtb3ZlUmVmZXJlbmNlTm9kZSA9ICZyZW1vdmVkTm9kZSA9PSBy
ZWZlcmVuY2VOb2RlLm5vZGU7CiAgICAgYm9vbCB3aWxsUmVtb3ZlUmVmZXJlbmNlTm9kZUFuY2Vz
dG9yID0gcmVmZXJlbmNlTm9kZS5ub2RlICYmIHJlZmVyZW5jZU5vZGUubm9kZS0+aXNEZXNjZW5k
YW50T2YoJnJlbW92ZWROb2RlKTsKQEAgLTE1NywxMiArMTUzLDEyIEBAIHZvaWQgTm9kZUl0ZXJh
dG9yOjp1cGRhdGVGb3JOb2RlUmVtb3ZhbChOb2RlJiByZW1vdmVkTm9kZSwgTm9kZVBvaW50ZXIm
IHJlZmVyZW5jCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChyZWZlcmVuY2VOb2RlLmlzUG9p
bnRlckJlZm9yZU5vZGUpIHsKLSAgICAgICAgTm9kZSogbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5l
eHQocmVtb3ZlZE5vZGUsIHJvb3QoKSk7CisgICAgICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVy
c2FsOjpuZXh0KHJlbW92ZWROb2RlLCAmcm9vdCgpKTsKICAgICAgICAgaWYgKG5vZGUpIHsKICAg
ICAgICAgICAgIC8vIE1vdmUgb3V0IGZyb20gdW5kZXIgdGhlIG5vZGUgYmVpbmcgcmVtb3ZlZCBp
ZiB0aGUgbmV3IHJlZmVyZW5jZQogICAgICAgICAgICAgLy8gbm9kZSBpcyBhIGRlc2NlbmRhbnQg
b2YgdGhlIG5vZGUgYmVpbmcgcmVtb3ZlZC4KICAgICAgICAgICAgIHdoaWxlIChub2RlICYmIG5v
ZGUtPmlzRGVzY2VuZGFudE9mKCZyZW1vdmVkTm9kZSkpCi0gICAgICAgICAgICAgICAgbm9kZSA9
IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUsIHJvb3QoKSk7CisgICAgICAgICAgICAgICAgbm9k
ZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUsICZyb290KCkpOwogICAgICAgICAgICAgaWYg
KG5vZGUpCiAgICAgICAgICAgICAgICAgcmVmZXJlbmNlTm9kZS5ub2RlID0gbm9kZTsKICAgICAg
ICAgfSBlbHNlIHsKQEAgLTE5Niw3ICsxOTIsNyBAQCB2b2lkIE5vZGVJdGVyYXRvcjo6dXBkYXRl
Rm9yTm9kZVJlbW92YWwoTm9kZSYgcmVtb3ZlZE5vZGUsIE5vZGVQb2ludGVyJiByZWZlcmVuYwog
ICAgICAgICAgICAgICAgIHJlZmVyZW5jZU5vZGUubm9kZSA9IG5vZGU7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBicmFuY2ggZG9lc24ndCBhcHBlYXIgdG8g
aGF2ZSBhbnkgTGF5b3V0VGVzdHMuCi0gICAgICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6
bmV4dChyZW1vdmVkTm9kZSwgcm9vdCgpKTsKKyAgICAgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVy
c2FsOjpuZXh0KHJlbW92ZWROb2RlLCAmcm9vdCgpKTsKICAgICAgICAgICAgIC8vIE1vdmUgb3V0
IGZyb20gdW5kZXIgdGhlIG5vZGUgYmVpbmcgcmVtb3ZlZCBpZiB0aGUgcmVmZXJlbmNlIG5vZGUg
aXMKICAgICAgICAgICAgIC8vIGEgZGVzY2VuZGFudCBvZiB0aGUgbm9kZSBiZWluZyByZW1vdmVk
LgogICAgICAgICAgICAgaWYgKHdpbGxSZW1vdmVSZWZlcmVuY2VOb2RlQW5jZXN0b3IpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlSXRlcmF0b3IuaAppbmRleCBmNmJiYTMyMzUzODBhMzg0YWQxMTJlMzY5N2I1
ZmRkZjkzYTM1ZDkyLi5jYThlOGQ0YzQwYWFlNGFkNTBiNDdjOTE4YTk3NjY4OTg2ZWQzNTk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5oCkBAIC01NywxMiArNTcsMTQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIHN0cnVjdCBOb2RlUG9pbnRlciB7CiAgICAgICAgICAgICBS
ZWZQdHI8Tm9kZT4gbm9kZTsKLSAgICAgICAgICAgIGJvb2wgaXNQb2ludGVyQmVmb3JlTm9kZTsK
LSAgICAgICAgICAgIE5vZGVQb2ludGVyKCk7Ci0gICAgICAgICAgICBOb2RlUG9pbnRlcihOb2Rl
KiwgYm9vbCk7CisgICAgICAgICAgICBib29sIGlzUG9pbnRlckJlZm9yZU5vZGUgeyB0cnVlIH07
CisKKyAgICAgICAgICAgIE5vZGVQb2ludGVyKCkgPSBkZWZhdWx0OworICAgICAgICAgICAgTm9k
ZVBvaW50ZXIoTm9kZSYsIGJvb2wpOworCiAgICAgICAgICAgICB2b2lkIGNsZWFyKCk7Ci0gICAg
ICAgICAgICBib29sIG1vdmVUb05leHQoTm9kZSogcm9vdCk7Ci0gICAgICAgICAgICBib29sIG1v
dmVUb1ByZXZpb3VzKE5vZGUqIHJvb3QpOworICAgICAgICAgICAgYm9vbCBtb3ZlVG9OZXh0KE5v
ZGUmIHJvb3QpOworICAgICAgICAgICAgYm9vbCBtb3ZlVG9QcmV2aW91cyhOb2RlJiByb290KTsK
ICAgICAgICAgfTsKIAogICAgICAgICB2b2lkIHVwZGF0ZUZvck5vZGVSZW1vdmFsKE5vZGUmIG5v
ZGVUb0JlUmVtb3ZlZCwgTm9kZVBvaW50ZXImKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UcmF2ZXJzYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyYXZlcnNhbC5j
cHAKaW5kZXggMGZkZjg1ODZmNmNjYjdiNTZlZGQ4Nzk2ZDE2ZDIzYmM2ZGNmZTkyYi4uM2M4MmE3
NjZlYTA1NTdmNWU4NWRhZmVhYjM2NjFkYzA4Yjg1NjI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1RyYXZlcnNhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyYXZlcnNh
bC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTm9kZUl0ZXJh
dG9yQmFzZTo6Tm9kZUl0ZXJhdG9yQmFzZShOb2RlJiByb290Tm9kZSwgdW5zaWduZWQgd2hhdFRv
U2hvdywgUmVmUHRyPE5vZGVGaWx0ZXI+JiYgbm9kZUZpbHRlcikKLSAgICA6IG1fcm9vdCgmcm9v
dE5vZGUpCisgICAgOiBtX3Jvb3Qocm9vdE5vZGUpCiAgICAgLCBtX3doYXRUb1Nob3cod2hhdFRv
U2hvdykKICAgICAsIG1fZmlsdGVyKFdURk1vdmUobm9kZUZpbHRlcikpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhdmVyc2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJh
dmVyc2FsLmgKaW5kZXggYjhiOWVjNGE2YzFiMzQ2YmUzNjZkOWYzYjU1OThiZGZiNDZmOWEwNC4u
YTFlMGZmYzUxYjc4ZDVkMGZlYWYxZTNkNmU3YWQ3ZjUzZjg0NzhlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1RyYXZlcnNhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmF2
ZXJzYWwuaApAQCAtMzMsNyArMzMsOSBAQCBjbGFzcyBOb2RlRmlsdGVyOwogCiBjbGFzcyBOb2Rl
SXRlcmF0b3JCYXNlIHsKIHB1YmxpYzoKLSAgICBOb2RlKiByb290KCkgY29uc3QgeyByZXR1cm4g
bV9yb290LmdldCgpOyB9CisgICAgTm9kZSYgcm9vdCgpIHsgcmV0dXJuIG1fcm9vdC5nZXQoKTsg
fQorICAgIGNvbnN0IE5vZGUmIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX3Jvb3QuZ2V0KCk7IH0K
KwogICAgIHVuc2lnbmVkIHdoYXRUb1Nob3coKSBjb25zdCB7IHJldHVybiBtX3doYXRUb1Nob3c7
IH0KICAgICBOb2RlRmlsdGVyKiBmaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlci5nZXQo
KTsgfQogICAgIGJvb2wgZXhwYW5kRW50aXR5UmVmZXJlbmNlcygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CkBAIC00Myw3ICs0NSw3IEBAIHByb3RlY3RlZDoKICAgICBzaG9ydCBhY2NlcHROb2Rl
KE5vZGUqKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8Tm9kZT4gbV9yb290OworICAg
IFJlZjxOb2RlPiBtX3Jvb3Q7CiAgICAgdW5zaWduZWQgbV93aGF0VG9TaG93OwogICAgIFJlZlB0
cjxOb2RlRmlsdGVyPiBtX2ZpbHRlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVdhbGtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5jcHAKaW5k
ZXggYWI4NmQ1OTNiMjkwYTllMDdhOTMzM2U3YzI3Y2E3ZmYyN2ZlZmQ1NC4uYTBjMDlmOWVlZTE1
NzRkN2JlYjAyYmUyNjc0MzY3NzY3OGM1OTI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVXYWxrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmNw
cApAQCAtMzksMzEgKzM5LDI3IEBAIFRyZWVXYWxrZXI6OlRyZWVXYWxrZXIoTm9kZSYgcm9vdE5v
ZGUsIHVuc2lnbmVkIGxvbmcgd2hhdFRvU2hvdywgUmVmUHRyPE5vZGVGaWx0CiB7CiB9CiAKLXZv
aWQgVHJlZVdhbGtlcjo6c2V0Q3VycmVudE5vZGUoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit2b2lkIFRyZWVXYWxrZXI6OnNldEN1cnJlbnROb2RlKE5vZGUmIG5vZGUpCiB7Ci0gICAg
aWYgKCFub2RlKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9CiAgICAgbV9jdXJyZW50ID0gbm9kZTsKIH0KIAotaW5saW5lIE5vZGUqIFRy
ZWVXYWxrZXI6OnNldEN1cnJlbnQoUmVmUHRyPE5vZGU+JiYgbm9kZSkKK2lubGluZSBOb2RlKiBU
cmVlV2Fsa2VyOjpzZXRDdXJyZW50KFJlZjxOb2RlPiYmIG5vZGUpCiB7Ci0gICAgbV9jdXJyZW50
ID0gbm9kZTsKLSAgICByZXR1cm4gbV9jdXJyZW50LmdldCgpOworICAgIG1fY3VycmVudCA9IFdU
Rk1vdmUobm9kZSk7CisgICAgcmV0dXJuIG1fY3VycmVudC5wdHIoKTsKIH0KIAogTm9kZSogVHJl
ZVdhbGtlcjo6cGFyZW50Tm9kZSgpCiB7Ci0gICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBtX2N1cnJl
bnQ7Ci0gICAgd2hpbGUgKG5vZGUgIT0gcm9vdCgpKSB7CisgICAgUmVmUHRyPE5vZGU+IG5vZGUg
PSBtX2N1cnJlbnQucHRyKCk7CisgICAgd2hpbGUgKG5vZGUgIT0gJnJvb3QoKSkgewogICAgICAg
ICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgc2hvcnQgYWNjZXB0Tm9kZVJlc3VsdCA9IGFj
Y2VwdE5vZGUobm9kZS5nZXQoKSk7CiAgICAgICAgIGlmIChhY2NlcHROb2RlUmVzdWx0ID09IE5v
ZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQpCi0gICAgICAgICAgICByZXR1cm4gc2V0Q3VycmVudChX
VEZNb3ZlKG5vZGUpKTsKKyAgICAgICAgICAgIHJldHVybiBzZXRDdXJyZW50KG5vZGUucmVsZWFz
ZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQpAQCAtNzQsOCArNzAs
OCBAQCBOb2RlKiBUcmVlV2Fsa2VyOjpmaXJzdENoaWxkKCkKICAgICAgICAgc2hvcnQgYWNjZXB0
Tm9kZVJlc3VsdCA9IGFjY2VwdE5vZGUobm9kZS5nZXQoKSk7CiAgICAgICAgIHN3aXRjaCAoYWNj
ZXB0Tm9kZVJlc3VsdCkgewogICAgICAgICAgICAgY2FzZSBOb2RlRmlsdGVyOjpGSUxURVJfQUND
RVBUOgotICAgICAgICAgICAgICAgIG1fY3VycmVudCA9IG5vZGUucmVsZWFzZSgpOwotICAgICAg
ICAgICAgICAgIHJldHVybiBtX2N1cnJlbnQuZ2V0KCk7CisgICAgICAgICAgICAgICAgbV9jdXJy
ZW50ID0gbm9kZS5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgICAgIHJldHVybiBtX2N1
cnJlbnQucHRyKCk7CiAgICAgICAgICAgICBjYXNlIE5vZGVGaWx0ZXI6OkZJTFRFUl9TS0lQOgog
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5maXJzdENoaWxkKCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgbm9kZSA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsKQEAgLTkxLDcgKzg3LDcgQEAgTm9kZSog
VHJlZVdhbGtlcjo6Zmlyc3RDaGlsZCgpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnRO
b2RlKCk7Ci0gICAgICAgICAgICBpZiAoIXBhcmVudCB8fCBwYXJlbnQgPT0gcm9vdCgpIHx8IHBh
cmVudCA9PSBtX2N1cnJlbnQpCisgICAgICAgICAgICBpZiAoIXBhcmVudCB8fCBwYXJlbnQgPT0g
JnJvb3QoKSB8fCBwYXJlbnQgPT0gbV9jdXJyZW50LnB0cigpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICAgICAgbm9kZSA9IHBhcmVudDsKICAgICAgICAgfSB3aGls
ZSAobm9kZSk7CkBAIC0xMDUsOCArMTAxLDggQEAgTm9kZSogVHJlZVdhbGtlcjo6bGFzdENoaWxk
KCkKICAgICAgICAgc2hvcnQgYWNjZXB0Tm9kZVJlc3VsdCA9IGFjY2VwdE5vZGUobm9kZS5nZXQo
KSk7CiAgICAgICAgIHN3aXRjaCAoYWNjZXB0Tm9kZVJlc3VsdCkgewogICAgICAgICAgICAgY2Fz
ZSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUOgotICAgICAgICAgICAgICAgIG1fY3VycmVudCA9
IG5vZGUucmVsZWFzZSgpOwotICAgICAgICAgICAgICAgIHJldHVybiBtX2N1cnJlbnQuZ2V0KCk7
CisgICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gbm9kZS5yZWxlYXNlTm9uTnVsbCgpOworICAg
ICAgICAgICAgICAgIHJldHVybiBtX2N1cnJlbnQucHRyKCk7CiAgICAgICAgICAgICBjYXNlIE5v
ZGVGaWx0ZXI6OkZJTFRFUl9TS0lQOgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5sYXN0Q2hp
bGQoKSkgewogICAgICAgICAgICAgICAgICAgICBub2RlID0gbm9kZS0+bGFzdENoaWxkKCk7CkBA
IC0xMjIsNyArMTE4LDcgQEAgTm9kZSogVHJlZVdhbGtlcjo6bGFzdENoaWxkKCkKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIENvbnRhaW5lck5vZGUq
IHBhcmVudCA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgICAgIGlmICghcGFyZW50IHx8
IHBhcmVudCA9PSByb290KCkgfHwgcGFyZW50ID09IG1fY3VycmVudCkKKyAgICAgICAgICAgIGlm
ICghcGFyZW50IHx8IHBhcmVudCA9PSAmcm9vdCgpIHx8IHBhcmVudCA9PSBtX2N1cnJlbnQucHRy
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBub2RlID0g
cGFyZW50OwogICAgICAgICB9IHdoaWxlIChub2RlKTsKQEAgLTEzMiw4ICsxMjgsOCBAQCBOb2Rl
KiBUcmVlV2Fsa2VyOjpsYXN0Q2hpbGQoKQogCiB0ZW1wbGF0ZTxUcmVlV2Fsa2VyOjpTaWJsaW5n
VHJhdmVyc2FsVHlwZSB0eXBlPiBOb2RlKiBUcmVlV2Fsa2VyOjp0cmF2ZXJzZVNpYmxpbmdzKCkK
IHsKLSAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IG1fY3VycmVudDsKLSAgICBpZiAobm9kZSA9PSBy
b290KCkpCisgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBtX2N1cnJlbnQucHRyKCk7CisgICAgaWYg
KG5vZGUgPT0gJnJvb3QoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGlz
TmV4dCA9IHR5cGUgPT0gU2libGluZ1RyYXZlcnNhbFR5cGU6Ok5leHQ7CkBAIC0xNDEsOCArMTM3
LDggQEAgdGVtcGxhdGU8VHJlZVdhbGtlcjo6U2libGluZ1RyYXZlcnNhbFR5cGUgdHlwZT4gTm9k
ZSogVHJlZVdhbGtlcjo6dHJhdmVyc2VTaWJsaW4KICAgICAgICAgZm9yIChSZWZQdHI8Tm9kZT4g
c2libGluZyA9IGlzTmV4dCA/IG5vZGUtPm5leHRTaWJsaW5nKCkgOiBub2RlLT5wcmV2aW91c1Np
YmxpbmcoKTsgc2libGluZzsgKSB7CiAgICAgICAgICAgICBzaG9ydCBhY2NlcHROb2RlUmVzdWx0
ID0gYWNjZXB0Tm9kZShzaWJsaW5nLmdldCgpKTsKICAgICAgICAgICAgIGlmIChhY2NlcHROb2Rl
UmVzdWx0ID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQpIHsKLSAgICAgICAgICAgICAgICBt
X2N1cnJlbnQgPSBXVEZNb3ZlKHNpYmxpbmcpOwotICAgICAgICAgICAgICAgIHJldHVybiBtX2N1
cnJlbnQuZ2V0KCk7CisgICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gc2libGluZy5yZWxlYXNl
Tm9uTnVsbCgpOworICAgICAgICAgICAgICAgIHJldHVybiBtX2N1cnJlbnQucHRyKCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBub2RlID0gc2libGluZzsKICAgICAgICAgICAgIHNpYmxp
bmcgPSBpc05leHQgPyBzaWJsaW5nLT5maXJzdENoaWxkKCkgOiBzaWJsaW5nLT5sYXN0Q2hpbGQo
KTsKQEAgLTE1MCw3ICsxNDYsNyBAQCB0ZW1wbGF0ZTxUcmVlV2Fsa2VyOjpTaWJsaW5nVHJhdmVy
c2FsVHlwZSB0eXBlPiBOb2RlKiBUcmVlV2Fsa2VyOjp0cmF2ZXJzZVNpYmxpbgogICAgICAgICAg
ICAgICAgIHNpYmxpbmcgPSBpc05leHQgPyBub2RlLT5uZXh0U2libGluZygpIDogbm9kZS0+cHJl
dmlvdXNTaWJsaW5nKCk7CiAgICAgICAgIH0KICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5v
ZGUoKTsKLSAgICAgICAgaWYgKCFub2RlIHx8IG5vZGUgPT0gcm9vdCgpKQorICAgICAgICBpZiAo
IW5vZGUgfHwgbm9kZSA9PSAmcm9vdCgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIHNob3J0IGFjY2VwdE5vZGVSZXN1bHQgPSBhY2NlcHROb2RlKG5vZGUuZ2V0KCkpOwog
ICAgICAgICBpZiAoYWNjZXB0Tm9kZVJlc3VsdCA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBU
KQpAQCAtMTcwLDggKzE2Niw4IEBAIE5vZGUqIFRyZWVXYWxrZXI6Om5leHRTaWJsaW5nKCkKIAog
Tm9kZSogVHJlZVdhbGtlcjo6cHJldmlvdXNOb2RlKCkKIHsKLSAgICBSZWZQdHI8Tm9kZT4gbm9k
ZSA9IG1fY3VycmVudDsKLSAgICB3aGlsZSAobm9kZSAhPSByb290KCkpIHsKKyAgICBSZWZQdHI8
Tm9kZT4gbm9kZSA9IG1fY3VycmVudC5wdHIoKTsKKyAgICB3aGlsZSAobm9kZSAhPSAmcm9vdCgp
KSB7CiAgICAgICAgIHdoaWxlIChOb2RlKiBwcmV2aW91c1NpYmxpbmcgPSBub2RlLT5wcmV2aW91
c1NpYmxpbmcoKSkgewogICAgICAgICAgICAgbm9kZSA9IHByZXZpb3VzU2libGluZzsKICAgICAg
ICAgICAgIHNob3J0IGFjY2VwdE5vZGVSZXN1bHQgPSBhY2NlcHROb2RlKG5vZGUuZ2V0KCkpOwpA
QCAtMTg0LDExICsxODAsMTEgQEAgTm9kZSogVHJlZVdhbGtlcjo6cHJldmlvdXNOb2RlKCkKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAo
YWNjZXB0Tm9kZVJlc3VsdCA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKSB7Ci0gICAgICAg
ICAgICAgICAgbV9jdXJyZW50ID0gbm9kZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIG1fY3VycmVudC5nZXQoKTsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBub2RlLnJl
bGVhc2VOb25OdWxsKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fY3VycmVudC5wdHIoKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAobm9kZSA9PSByb290KCkpCisg
ICAgICAgIGlmIChub2RlID09ICZyb290KCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAg
ICAgICBpZiAoIXBhcmVudCkKQEAgLTE5NiwyOCArMTkyLDI4IEBAIE5vZGUqIFRyZWVXYWxrZXI6
OnByZXZpb3VzTm9kZSgpCiAgICAgICAgIG5vZGUgPSBwYXJlbnQ7CiAgICAgICAgIHNob3J0IGFj
Y2VwdE5vZGVSZXN1bHQgPSBhY2NlcHROb2RlKG5vZGUuZ2V0KCkpOwogICAgICAgICBpZiAoYWNj
ZXB0Tm9kZVJlc3VsdCA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKQotICAgICAgICAgICAg
cmV0dXJuIHNldEN1cnJlbnQoV1RGTW92ZShub2RlKSk7CisgICAgICAgICAgICByZXR1cm4gc2V0
Q3VycmVudChub2RlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAogTm9kZSogVHJlZVdhbGtlcjo6bmV4dE5vZGUoKQogewotICAgIFJlZlB0cjxOb2Rl
PiBub2RlID0gbV9jdXJyZW50OworICAgIFJlZlB0cjxOb2RlPiBub2RlID0gbV9jdXJyZW50LnB0
cigpOwogQ2hpbGRyZW46CiAgICAgd2hpbGUgKE5vZGUqIGZpcnN0Q2hpbGQgPSBub2RlLT5maXJz
dENoaWxkKCkpIHsKICAgICAgICAgbm9kZSA9IGZpcnN0Q2hpbGQ7CiAgICAgICAgIHNob3J0IGFj
Y2VwdE5vZGVSZXN1bHQgPSBhY2NlcHROb2RlKG5vZGUuZ2V0KCkpOwogICAgICAgICBpZiAoYWNj
ZXB0Tm9kZVJlc3VsdCA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKQotICAgICAgICAgICAg
cmV0dXJuIHNldEN1cnJlbnQoV1RGTW92ZShub2RlKSk7CisgICAgICAgICAgICByZXR1cm4gc2V0
Q3VycmVudChub2RlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICBpZiAoYWNjZXB0Tm9kZVJl
c3VsdCA9PSBOb2RlRmlsdGVyOjpGSUxURVJfUkVKRUNUKQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgIHdoaWxlIChOb2RlKiBuZXh0U2libGluZyA9IE5vZGVUcmF2ZXJzYWw6Om5leHRT
a2lwcGluZ0NoaWxkcmVuKCpub2RlLCByb290KCkpKSB7CisgICAgd2hpbGUgKE5vZGUqIG5leHRT
aWJsaW5nID0gTm9kZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4oKm5vZGUsICZyb290
KCkpKSB7CiAgICAgICAgIG5vZGUgPSBuZXh0U2libGluZzsKICAgICAgICAgc2hvcnQgYWNjZXB0
Tm9kZVJlc3VsdCA9IGFjY2VwdE5vZGUobm9kZS5nZXQoKSk7CiAgICAgICAgIGlmIChhY2NlcHRO
b2RlUmVzdWx0ID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQpCi0gICAgICAgICAgICByZXR1
cm4gc2V0Q3VycmVudChXVEZNb3ZlKG5vZGUpKTsKKyAgICAgICAgICAgIHJldHVybiBzZXRDdXJy
ZW50KG5vZGUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIGlmIChhY2NlcHROb2RlUmVzdWx0
ID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9TS0lQKQogICAgICAgICAgICAgZ290byBDaGlsZHJlbjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaAppbmRleCAxYjViZTFjMTQyMzQzM2Y2ZWJjNmQ5
MTgyYjNkNjMxZWVkMjM2Y2U4Li40NTQwMDc0OGE1MTgzOTA1YTY1OGM4NzRhMTZlZTAwZTYyOWU0
ZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmgKQEAgLTQxLDggKzQxLDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyZWVXYWxrZXIo
cm9vdE5vZGUsIHdoYXRUb1Nob3csIFdURk1vdmUoZmlsdGVyKSkpOwogICAgICAgICB9ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAogCi0gICAgICAgIE5vZGUqIGN1cnJlbnROb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9jdXJyZW50LmdldCgpOyB9Ci0gICAgICAgIHZvaWQgc2V0Q3VycmVudE5v
ZGUoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgTm9kZSYgY3VycmVudE5vZGUoKSB7
IHJldHVybiBtX2N1cnJlbnQuZ2V0KCk7IH0KKyAgICAgICAgY29uc3QgTm9kZSYgY3VycmVudE5v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnQuZ2V0KCk7IH0KKworICAgICAgICB2b2lkIHNl
dEN1cnJlbnROb2RlKE5vZGUmKTsKIAogICAgICAgICBOb2RlKiBwYXJlbnROb2RlKCk7CiAgICAg
ICAgIE5vZGUqIGZpcnN0Q2hpbGQoKTsKQEAgLTU3LDkgKzU5LDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBlbnVtIGNsYXNzIFNpYmxpbmdUcmF2ZXJzYWxUeXBlIHsgUHJldmlvdXMs
IE5leHQgfTsKICAgICAgICAgdGVtcGxhdGU8U2libGluZ1RyYXZlcnNhbFR5cGU+IE5vZGUqIHRy
YXZlcnNlU2libGluZ3MoKTsKICAgICAgICAgCi0gICAgICAgIE5vZGUqIHNldEN1cnJlbnQoUmVm
UHRyPE5vZGU+JiYpOworICAgICAgICBOb2RlKiBzZXRDdXJyZW50KFJlZjxOb2RlPiYmKTsKIAot
ICAgICAgICBSZWZQdHI8Tm9kZT4gbV9jdXJyZW50OworICAgICAgICBSZWY8Tm9kZT4gbV9jdXJy
ZW50OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fs
a2VyLmlkbAppbmRleCBhZDVjYjVkNjQwMzEwZjhjMDM4OTYxZjUxMzJkNWJkZGQyMzY2YzdlLi5i
ZTkyNzc2YTNkNWQ4YTIxNDQwZGJkM2M3MGNiMTUxNTUxNjFlMTdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Ry
ZWVXYWxrZXIuaWRsCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpF
Q1RJVkVfQykgJiYgTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
Ym9vbGVhbiBleHBhbmRFbnRpdHlSZWZlcmVuY2VzOwogI2VuZGlmCi0gICAgW1NldHRlclJhaXNl
c0V4Y2VwdGlvbl0gYXR0cmlidXRlIE5vZGUgY3VycmVudE5vZGU7CisgICAgYXR0cmlidXRlIE5v
ZGUgY3VycmVudE5vZGU7CiAKICAgICBOb2RlIHBhcmVudE5vZGUoKTsKICAgICBOb2RlIGZpcnN0
Q2hpbGQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmlk
bAppbmRleCA4NWJkNDc4YzlhOTI0NjFhM2E2YmU0M2U5NmVkNDBmMDVlYzE1ZTI1Li5kNjlhMTU3
ODBhMzRjM2M0ZTE4NzZhN2RlZDA2NzdlM2MyZDBjOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaWRsCkBAIC0yNiw1ICsyNiw1IEBACiBbCiAgICAg
Q29uZGl0aW9uYWw9QVRUQUNITUVOVF9FTEVNRU5UCiBdIGludGVyZmFjZSBIVE1MQXR0YWNobWVu
dEVsZW1lbnQgOiBIVE1MRWxlbWVudCB7Ci0gICAgYXR0cmlidXRlIEZpbGUgZmlsZTsKKyAgICBh
dHRyaWJ1dGUgRmlsZT8gZmlsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmlkbAppbmRleCBlM2QwZjlmYzI2MDY0OTFhN2QwZmYzOTZlYTY4NmVmZGE2NTQzNzczLi42
MjI3NGVhN2U4N2U4NTc2YzYwMmZjZTVlZWZmM2Q5ZmRkZTZjZGZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwKQEAgLTMyLDcgKzMyLDcgQEAKICAgICBbUmVmbGVj
dF0gYXR0cmlidXRlIERPTVN0cmluZyBkaXJOYW1lOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUg
Ym9vbGVhbiBkaXNhYmxlZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTEZvcm1FbGVtZW50
IGZvcm07Ci0gICAgYXR0cmlidXRlIEZpbGVMaXN0IGZpbGVzOworICAgIGF0dHJpYnV0ZSBGaWxl
TGlzdD8gZmlsZXM7CiAgICAgYXR0cmlidXRlIERPTVN0cmluZyBmb3JtQWN0aW9uOwogCiAgICAg
Ly8gRklYTUU6IFRoZXNlIHNob3VsZCBub3QgdXNlIFtUcmVhdE51bGxBcz1MZWdhY3lOdWxsU3Ry
aW5nXS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsCmluZGV4IGJiMzdi
Y2RjOTNkN2Y0ZjJjMWZkYzkwZjJmMDAxNjRiZGRjNTA3NTEuLmE4ZTc5MmU3YTM0ODgwNmMxYTdi
NTBhZTE3YjYwNzdkY2IwZjIzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVt
ZW50LmlkbApAQCAtMTksOSArMTksOSBAQAogICovCiAKIGludGVyZmFjZSBIVE1MVGFibGVFbGVt
ZW50IDogSFRNTEVsZW1lbnQgewotICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb24sIFN0cmljdFR5
cGVDaGVja2luZ10gYXR0cmlidXRlIEhUTUxUYWJsZUNhcHRpb25FbGVtZW50IGNhcHRpb247Ci0g
ICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbiwgU3RyaWN0VHlwZUNoZWNraW5nXSBhdHRyaWJ1dGUg
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgdEhlYWQ7Ci0gICAgW1NldHRlclJhaXNlc0V4Y2VwdGlv
biwgU3RyaWN0VHlwZUNoZWNraW5nXSBhdHRyaWJ1dGUgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQg
dEZvb3Q7CisgICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbiwgU3RyaWN0VHlwZUNoZWNraW5nXSBh
dHRyaWJ1dGUgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ/IGNhcHRpb247CisgICAgW1NldHRlclJh
aXNlc0V4Y2VwdGlvbiwgU3RyaWN0VHlwZUNoZWNraW5nXSBhdHRyaWJ1dGUgSFRNTFRhYmxlU2Vj
dGlvbkVsZW1lbnQ/IHRIZWFkOworICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb24sIFN0cmljdFR5
cGVDaGVja2luZ10gYXR0cmlidXRlIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PyB0Rm9vdDsKIAog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MQ29sbGVjdGlvbiByb3dzOwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBIVE1MQ29sbGVjdGlvbiB0Qm9kaWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9EYXRhQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
RGF0YUN1ZS5jcHAKaW5kZXggMzlhNzhhZGVlOTJlYTQ1YmRkNTdlZmMzYWY5NjQ0YmNiODM1ZDU5
NS4uNWQ5ZTA0ZThiNzdlMzg3YzNmMTNkODhiZTM3ZmFiZjMxMmVmNmEzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9EYXRhQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0RhdGFDdWUuY3BwCkBAIC0zNiwxMSArMzYsMTEgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1EYXRhQ3VlOjpEYXRhQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBBcnJh
eUJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKK0Rh
dGFDdWU6OkRhdGFDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgTWVk
aWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIEFycmF5QnVmZmVyJiBkYXRhLCBj
b25zdCBTdHJpbmcmIHR5cGUpCiAgICAgOiBUZXh0VHJhY2tDdWUoY29udGV4dCwgc3RhcnQsIGVu
ZCkKICAgICAsIG1fdHlwZSh0eXBlKQogewotICAgIHNldERhdGEoZGF0YSwgZWMpOworICAgIHNl
dERhdGEoZGF0YSk7CiB9CiAKIERhdGFDdWU6OkRhdGFDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQs
IGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKQEAgLTg4LDEzICs4OCw4IEBAIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gRGF0YUN1ZTo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIEFycmF5
QnVmZmVyOjpjcmVhdGUoKm1fZGF0YSk7CiB9CiAKLXZvaWQgRGF0YUN1ZTo6c2V0RGF0YShBcnJh
eUJ1ZmZlciogZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIERhdGFDdWU6OnNldERhdGEo
QXJyYXlCdWZmZXImIGRhdGEpCiB7Ci0gICAgaWYgKCFkYXRhKSB7Ci0gICAgICAgIGVjID0gVHlw
ZUVycm9yOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFM
VUUpCiAgICAgbV9wbGF0Zm9ybVZhbHVlID0gbnVsbHB0cjsKICAgICBpZiAobV92YWx1ZSkKQEAg
LTEwMiw3ICs5Nyw3IEBAIHZvaWQgRGF0YUN1ZTo6c2V0RGF0YShBcnJheUJ1ZmZlciogZGF0YSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgbV92YWx1ZSA9IEpTQzo6SlNWYWx1ZSgpOwogI2VuZGlm
CiAKLSAgICBtX2RhdGEgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKCpkYXRhKTsKKyAgICBtX2RhdGEg
PSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogfQogCiBEYXRhQ3VlKiB0b0RhdGFDdWUoVGV4
dFRyYWNrQ3VlKiBjdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0Rh
dGFDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5oCmluZGV4IGQ3MWZi
ODExNzE4YjkxNDE2OTgxYjU1OWVkZTM1ODJkYzQzMjA3ZjQuLjYyMzI3NzRmNzRiYzhlOGZmMzcz
ZmE4ZmE0ZjcwNjQ5ZmE3MzMzYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svRGF0YUN1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5oCkBA
IC00NSw5ICs0NSw5IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIERh
dGFDdWUgZmluYWwgOiBwdWJsaWMgVGV4dFRyYWNrQ3VlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPERhdGFDdWU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgQXJyYXlCdWZmZXIqIGRh
dGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgIHN0YXRpYyBSZWY8RGF0YUN1ZT4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNv
bnN0IE1lZGlhVGltZSYgZW5kLCBBcnJheUJ1ZmZlciYgZGF0YSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFDdWUoY29udGV4dCwgc3RhcnQsIGVuZCwgZGF0YSwgZW1w
dHlTdHJpbmcoKSwgZWMpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YUN1ZShj
b250ZXh0LCBzdGFydCwgZW5kLCBkYXRhLCBlbXB0eVN0cmluZygpKSk7CiAgICAgfQogCiAgICAg
c3RhdGljIFJlZjxEYXRhQ3VlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZv
aWQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKQEAgLTU1LDkgKzU1LDkgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhQ3VlKGNvbnRleHQsIHN0YXJ0LCBlbmQsIGRh
dGEsIGxlbmd0aCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8RGF0YUN1ZT4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNv
bnN0IE1lZGlhVGltZSYgZW5kLCBBcnJheUJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiB0eXBl
LCBFeGNlcHRpb25Db2RlJiBlYykKKyAgICBzdGF0aWMgUmVmPERhdGFDdWU+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25z
dCBNZWRpYVRpbWUmIGVuZCwgQXJyYXlCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFDdWUoY29udGV4dCwgc3Rh
cnQsIGVuZCwgZGF0YSwgdHlwZSwgZWMpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YUN1ZShjb250ZXh0LCBzdGFydCwgZW5kLCBkYXRhLCB0eXBlKSk7CiAgICAgfQogCiAjaWYg
RU5BQkxFKERBVEFDVUVfVkFMVUUpCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBDdWVU
eXBlIGN1ZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBEYXRhOyB9CiAKICAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGRhdGEoKSBjb25zdDsKLSAgICB2b2lkIHNldERhdGEoQXJyYXlCdWZm
ZXIqLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXREYXRhKEFycmF5QnVmZmVyJik7CiAK
ICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKICAgICBjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1S
ZXByZXNlbnRhdGlvbiogcGxhdGZvcm1WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1W
YWx1ZS5nZXQoKTsgfQpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkb2VzRXh0
ZW5kQ3VlKGNvbnN0IFRleHRUcmFja0N1ZSYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6
Ci0gICAgRGF0YUN1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgTWVkaWFUaW1lJiBz
dGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIEFycmF5QnVmZmVyKiwgY29uc3QgU3RyaW5nJiwg
RXhjZXB0aW9uQ29kZSYpOworICAgIERhdGFDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNv
bnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBBcnJheUJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYpOwogICAgIERhdGFDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNv
bnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCB2b2lkKiwg
dW5zaWduZWQpOwogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQogICAgIERhdGFDdWUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGlt
ZSYgZW5kLCBSZWZQdHI8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+JiYsIGNvbnN0
IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9EYXRhQ3Vl
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5pZGwKaW5kZXggZmE1ZTI1
ZWQ0N2M2NjNlZTQyNTliMTczMmMwZTdjYWZlZjQ0YzA4NC4uNTkyMzQ4OWZjZDVmOGM2NWU5YTUy
MDc0YWQzMjk0YTdhMTczMmZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9EYXRhQ3VlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0RhdGFDdWUuaWRs
CkBAIC0zNCw3ICszNCw3IEBACiAjZW5kaWYKICAgICBDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlv
biwKIF0gaW50ZXJmYWNlIERhdGFDdWUgOiBUZXh0VHJhY2tDdWUgewotICAgIFtTZXR0ZXJSYWlz
ZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBBcnJheUJ1ZmZlciBkYXRhOworICAgIGF0dHJpYnV0ZSBB
cnJheUJ1ZmZlciBkYXRhOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfREFUQUNVRV9WQUxVRSkgJiYg
RU5BQkxFX0RBVEFDVUVfVkFMVUUKICAgICBbQ3VzdG9tR2V0dGVyLCBDdXN0b21TZXR0ZXJdIGF0
dHJpYnV0ZSBhbnkgdmFsdWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277889</attachid>
            <date>2016-05-01 21:18:50 -0700</date>
            <delta_ts>2016-05-01 21:20:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157250-20160501211926.patch</filename>
            <type>text/plain</type>
            <size>62954</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJlMDJhNGM1MTYyOWQ3
NDk2NDVlM2YyYmE4OTRhNzdiMjBiZGVjYS4uYjkyYzA5ZWNkNDkyYzZmZjg3Y2RiYWIxNDg0YjQ4
ODdlYzJjM2I2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDcxIEBACiAyMDE2LTA1LTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgUGFzcyByZWZlcmVuY2UgaW5z
dGVhZCBvZiBwb2ludGVyIHRvIElETCBhdHRyaWJ1dGUgc2V0dGVycyBpZiBub3QgbnVsbGFibGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzI1MAor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVwZGF0ZSB0aGUg
YmluZGluZ3MgZ2VuZXJhdG9yIHNvIHRoYXQgd2UgcGFzcyB3cmFwcGVyIHR5cGVzIGJ5IHJlZmVy
ZW5jZQorICAgICAgICB0byBhdHRyaWJ1dGUgc2V0dGVycyBpbnN0ZWFkIG9mIGJ5IHJhdyBwb2lu
dGVyIHdoZW4gdGhlIGF0dHJpYnV0ZSBpcyBub3QKKyAgICAgICAgbWFya2VkIGFzIG51bGxhYmxl
IGluIHRoZSBJREwuCisKKyAgICAgICAgVGhlcmUgaXMgbm8gaW50ZW5kZWQgV2ViLWV4cG9zZWQg
YmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5v
ZGUuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU0RhdGFDdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbToKKyAg
ICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5tbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tOgorICAgICAgICBSZWJhc2VsaW5lIGJpbmRpbmdzIHRl
c3RzLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojptb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9O
b2RlSXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJhdG9yOjpOb2RlUG9p
bnRlcjo6Tm9kZVBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJhdG9yOjpOb2Rl
UG9pbnRlcjo6bW92ZVRvTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0b3I6Ok5v
ZGVQb2ludGVyOjptb3ZlVG9QcmV2aW91cyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0
b3I6Ok5vZGVJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0b3I6On5Ob2Rl
SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJhdG9yOjp1cGRhdGVGb3JOb2Rl
UmVtb3ZhbCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0b3I6Ok5vZGVQb2ludGVyOjpj
bGVhcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0b3I6Om5leHROb2Rl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vTm9kZUl0ZXJhdG9yLmg6CisgICAgICAgICogZG9t
L1RyYXZlcnNhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0b3JCYXNlOjpOb2Rl
SXRlcmF0b3JCYXNlKToKKyAgICAgICAgKiBkb20vVHJhdmVyc2FsLmg6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlSXRlcmF0b3JCYXNlOjpyb290KToKKyAgICAgICAgKiBkb20vVHJlZVdhbGtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlV2Fsa2VyOjpzZXRDdXJyZW50Tm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmVlV2Fsa2VyOjpzZXRDdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlRyZWVXYWxrZXI6OnBhcmVudE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtlcjo6
Zmlyc3RDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlV2Fsa2VyOjpsYXN0Q2hpbGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VHJlZVdhbGtlcjo6dHJhdmVyc2VTaWJsaW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpUcmVlV2Fsa2VyOjpwcmV2aW91c05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
VHJlZVdhbGtlcjo6bmV4dE5vZGUpOgorICAgICAgICAqIGRvbS9UcmVlV2Fsa2VyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpUcmVlV2Fsa2VyOjpjdXJyZW50Tm9kZSk6CisgICAgICAgICogZG9tL1Ry
ZWVXYWxrZXIuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmlkbDoK
KyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRN
TFRhYmxlRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9EYXRhQ3VlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFDdWU6OkRhdGFDdWUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YUN1ZTo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjp0b0RhdGFDdWUpOiBEZWxldGVkLgor
ICAgICAgICAqIGh0bWwvdHJhY2svRGF0YUN1ZS5oOgorICAgICAgICAqIGh0bWwvdHJhY2svRGF0
YUN1ZS5pZGw6CisKKzIwMTYtMDUtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KwogICAgICAgICBVbnJldmlld2VkIGF0dGVtcHQgdG8gZml4IFdpbmRvd3MgYnVpbGQgYWZ0ZXIg
cjIwMDI4OC4KIAogICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZS5pZGwKaW5kZXggYzM0YzdmYjc2YjVlODU3ODgwNzQ0MjVlZDU0NmMx
YjMwYWJjOGI5Zi4uZTc4MWY1MjQ0NDdmOTQxODA4OGM4YTI3YTZjZWQzMDYzMzc1MjQ0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UuaWRsCkBAIC0zMCw3ICszMCw3IEBACiBdIGludGVyZmFjZSBTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UgOiBFdmVudFRhcmdldCB7CiAgICAgYXR0cmlidXRlIERPTVN0cmlu
ZyB0ZXh0OwogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbGFuZzsKLSAgICBhdHRyaWJ1dGUgU3Bl
ZWNoU3ludGhlc2lzVm9pY2Ugdm9pY2U7CisgICAgYXR0cmlidXRlIFNwZWVjaFN5bnRoZXNpc1Zv
aWNlPyB2b2ljZTsgLy8gRklYTUU6IHNob3VsZCBub3QgYmUgbnVsbGFibGUuCiAgICAgYXR0cmli
dXRlIHVucmVzdHJpY3RlZCBmbG9hdCB2b2x1bWU7CiAgICAgYXR0cmlidXRlIHVucmVzdHJpY3Rl
ZCBmbG9hdCByYXRlOwogICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgcGl0Y2g7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlkbApp
bmRleCBkYmRjMTI2ZTQzYmIxYzA1N2VmNTJlYmRkY2FiZTM3Y2U0ZWI5YTRiLi5mMGQzZjc0ZDY3
ODQ5NjJkNTYzNTkyOTYzMzkwZDdlNGMyMmUwM2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5pZGwKQEAgLTI3LDYgKzI3LDYgQEAKICAg
ICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QKIF0gaW50
ZXJmYWNlIENvbnZvbHZlck5vZGUgOiBBdWRpb05vZGUgewotICAgIFtTZXR0ZXJSYWlzZXNFeGNl
cHRpb25dIGF0dHJpYnV0ZSBBdWRpb0J1ZmZlciBidWZmZXI7CisgICAgW1NldHRlclJhaXNlc0V4
Y2VwdGlvbl0gYXR0cmlidXRlIEF1ZGlvQnVmZmVyPyBidWZmZXI7CiAgICAgYXR0cmlidXRlIGJv
b2xlYW4gbm9ybWFsaXplOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rh
dGFDdWVDdXN0b20uY3BwCmluZGV4IGJlNTNlYmVkOTUxNDFiZjY4NTYxOTc1YzQxNjdhZTUyYzAx
ZTJlYmQuLjZlZmJkZTVjY2Q0MGZmY2NkZDg2MzlhNzZmYTI5NjRjMTg3NDVjNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcApAQCAtNTMsNyAr
NTMsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTRGF0YUN1ZShF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoZXhlYykpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgZG91YmxlIHN0YXJ0
VGltZShleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSk7CiAgICAgaWYgKFVOTElLRUxZ
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKQEAgLTg0LDE2ICs4MywxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdEpTRGF0YUN1ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgUmVmUHRyPERh
dGFDdWU+IG9iamVjdDsKICAgICBpZiAodmFsdWVBcmd1bWVudC5pc0NlbGwoKSAmJiB2YWx1ZUFy
Z3VtZW50LmFzQ2VsbCgpLT5pbmhlcml0cyhzdGQ6OnJlbW92ZV9wb2ludGVyPEpTQXJyYXlCdWZm
ZXIqPjo6dHlwZTo6aW5mbygpKSkgewogCi0gICAgICAgIEFycmF5QnVmZmVyKiBkYXRhKHRvQXJy
YXlCdWZmZXIodmFsdWVBcmd1bWVudCkpOworICAgICAgICBBcnJheUJ1ZmZlciogZGF0YSA9IHRv
QXJyYXlCdWZmZXIodmFsdWVBcmd1bWVudCk7CiAgICAgICAgIGlmIChVTkxJS0VMWShleGVjLT5o
YWRFeGNlcHRpb24oKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogCi0gICAgICAgIG9iamVjdCA9IERhdGFDdWU6OmNyZWF0ZSgqY29udGV4dCwg
TWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0VGltZSksIE1lZGlhVGltZTo6Y3JlYXRl
V2l0aERvdWJsZShlbmRUaW1lKSwgZGF0YSwgdHlwZSwgZWMpOwotICAgICAgICBpZiAoZWMpIHsK
LSAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgICAgIGlmIChVTkxJS0VMWSghZGF0
YSkpIHsKKyAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUeXBlRXJyb3IpOworICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAg
fQogCisgICAgICAgIG9iamVjdCA9IERhdGFDdWU6OmNyZWF0ZSgqY29udGV4dCwgTWVkaWFUaW1l
OjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0VGltZSksIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJs
ZShlbmRUaW1lKSwgKmRhdGEsIHR5cGUpOworCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYXNPYmplY3QodG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0
LmdldCgpKSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0KaW5kZXggYWRlYzc5YmVjYmE2NzZmZjFk
NTUzYmQ2YzEzMTczYjE4ZGE1ODdhMC4uMjNiNjRiZTljMWU5MDJjNzg4OTkxZmY0YzBiMDgzZmU3
MjkwYTgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yR09iamVjdC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCkBAIC0xMTEwLDkgKzExMTAsNyBAQCBzdWIgR2VuZXJh
dGVGdW5jdGlvbiB7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCRwYXJhbUlzR0RPTVR5cGUgfHwg
KCRwYXJhbUlETFR5cGUgZXEgIkRPTVN0cmluZyIpKSB7CiAgICAgICAgICAgICAkcGFyYW1OYW1l
ID0gImNvbnZlcnRlZCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkcGFyYW1OYW1lKTsK
LSAgICAgICAgICAgIGlmICgkcHJlZml4IG5lICJzZXRfIiAmJiAkY29kZUdlbmVyYXRvci0+U2hv
dWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZSgkcGFyYW0sICRwYXJlbnROb2RlKSkgewotICAgICAg
ICAgICAgICAgICRwYXJhbU5hbWUgPSAiKiRwYXJhbU5hbWUiOwotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgJHBhcmFtTmFtZSA9ICIqJHBhcmFtTmFtZSIgaWYgJGNvZGVHZW5lcmF0b3ItPlNo
b3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2UoJHBhcmFtLCAkcGFyZW50Tm9kZSk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKCRwYXJhbUlETFR5cGUgZXEgIk5vZGVGaWx0ZXIiIHx8ICRwYXJhbUlE
TFR5cGUgZXEgIlhQYXRoTlNSZXNvbHZlciIpIHsKICAgICAgICAgICAgICRwYXJhbU5hbWUgPSAi
V1RGOjpnZXRQdHIoIiAuICRwYXJhbU5hbWUgLiAiKSI7CkBAIC0xNDk3LDYgKzE0OTUsNyBAQCBz
dWIgR2VuZXJhdGVGdW5jdGlvbnMgewogICAgICAgICBteSAkcGFyYW0gPSBuZXcgZG9tU2lnbmF0
dXJlKCk7CiAgICAgICAgICRwYXJhbS0+bmFtZSgidmFsdWUiKTsKICAgICAgICAgJHBhcmFtLT50
eXBlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7CisgICAgICAgICRwYXJhbS0+aXNOdWxs
YWJsZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmlzTnVsbGFibGUpOwogICAgICAgICBteSAlYXR0
cmlidXRlcyA9ICgpOwogICAgICAgICAkcGFyYW0tPmV4dGVuZGVkQXR0cmlidXRlcyhcJWF0dHJp
YnV0ZXMpOwogICAgICAgICBteSAkYXJyYXlSZWYgPSAkZnVuY3Rpb24tPnBhcmFtZXRlcnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CmluZGV4IGQwY2JhMzM3YWZkN2E4ZTllNmRlMzljNmU3MGZmYWVlNTBlYzBjZWEuLjJmNGRjOWRi
YThlM2M2YWM1MzhmZmVmOGVjNzViM2EzOTE1MTlmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0yODYwLDYgKzI4NjAs
MTQgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVz
aCAoQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgICAg
ICAgICB9CiAKKyAgICAgICAgICAgICAgICBteSAkc2hvdWxkUGFzc0J5UmVmZXJlbmNlID0gU2hv
dWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICRpbnRlcmZh
Y2UpOworICAgICAgICAgICAgICAgIGlmICgkc2hvdWxkUGFzc0J5UmVmZXJlbmNlKSB7CisgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghbmF0
aXZlVmFsdWUpKSB7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpO1xuIik7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CisgICAgICAgICAg
ICAgICAgfQorCiAgICAgICAgICAgICAgICAgaWYgKCR0eXBlIGVxICJkb3VibGUiIG9yICR0eXBl
IGVxICJmbG9hdCIpIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKFVOTElLRUxZKCFzdGQ6OmlzZmluaXRlKG5hdGl2ZVZhbHVlKSkpIHtcbiIpOwogICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSk7XG4iKTsKQEAgLTI5MDMsNyArMjkxMSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5J
c0VudW1UeXBlKCR0eXBlKSBhbmQgbm90ICRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ0Jhc2VkRW51
bVR5cGUoJHR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMs
ICJuYXRpdmVWYWx1ZS52YWx1ZSgpIik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJuYXRpdmVWYWx1ZSIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAkc2hvdWxkUGFzc0J5UmVm
ZXJlbmNlID8gIipuYXRpdmVWYWx1ZSIgOiAibmF0aXZlVmFsdWUiKTsKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCmluZGV4IDYxYTFkMGEzZDUx
MmE0NzgyYjI2YTk5NmM4YjBmNjViMmExYzVmMTguLjgxYzQ1ZTA1MTlhZWU1YWM4MWVkN2U0YmVh
MjRkNTllOTEzMmFlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvck9iakMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQpAQCAtMTQxNyw2ICsxNDE3LDEyIEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICRhcmcgPSAiY29yZSgiIC4g
JGFyZyAuICIpIjsKICAgICAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICBpZiAoJGNv
ZGVHZW5lcmF0b3ItPlNob3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2UoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLCAkaW50ZXJmYWNlKSkgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBpZiAoISRhcmcpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7XG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgJGFyZyA9ICIqJGFyZyI7CisgICAgICAgICAgICAgICAg
fQorCiAgICAgICAgICAgICAgICAgbXkgKCRmdW5jdGlvbk5hbWUsIEBhcmd1bWVudHMpID0gJGNv
ZGVHZW5lcmF0b3ItPlNldHRlckV4cHJlc3Npb24oXCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VO
YW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICRhcmcp
OwogICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgImVjIikgaWYgJGhhc1NldHRlckV4
Y2VwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHAKaW5k
ZXggODg2N2VkNjJhNDlhMmZmNDk1ZGQ1ZjJjYzFkNjY4ZDYwM2JlYjZjMi4uYjYzMTdlMTM3MDY1
YTI3NDg2ZTdiNjIyZjkxMjc0OWVmMzcxNjliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdEludGVyZmFjZS5jcHAKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIHdlYmtpdF9kb21f
dGVzdF9pbnRlcmZhY2Vfc2V0X2ltcGxlbWVudHNfbm9kZShXZWJLaXRET01UZXN0SW50ZXJmYWNl
KiBzZWxmLAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19OT0RFKHZhbHVlKSk7
CiAgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
ICAgICBXZWJDb3JlOjpOb2RlKiBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7
Ci0gICAgaXRlbS0+c2V0SW1wbGVtZW50c05vZGUoY29udmVydGVkVmFsdWUpOworICAgIGl0ZW0t
PnNldEltcGxlbWVudHNOb2RlKCpjb252ZXJ0ZWRWYWx1ZSk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShzZWxmKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWUpOwpAQCAtNTY3LDcgKzU2Nyw3IEBA
IHZvaWQgd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfc3VwcGxlbWVudGFsX25vZGUoV2Vi
S2l0RE9NVGVzdEludGVyZmFjZSogc2VsCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9N
X0lTX05PREUodmFsdWUpKTsKICAgICBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6Ok5vZGUqIGNvbnZlcnRlZFZhbHVlID0gV2Vi
S2l0Ojpjb3JlKHZhbHVlKTsKLSAgICBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBw
bGVtZW50YWxOb2RlKCppdGVtLCBjb252ZXJ0ZWRWYWx1ZSk7CisgICAgV2ViQ29yZTo6VGVzdFN1
cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsTm9kZSgqaXRlbSwgKmNvbnZlcnRlZFZhbHVlKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNlbGYpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCmluZGV4IDdmNGQzMzZmZDI1Y2MzYTNh
YmQ5ZjcxMTdjMzM2ODA2Y2ZhOTgzODYuLmUxNGE2M2Y3NWZlNDAxY2FhMjkxODExZDY5M2MyMjc3
ZGM3YzkyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCkBAIC05Miw2ICs5
Miw3IEBAIGVudW0gewogICAgIFBST1BfVU5TSUdORURfTE9OR19MT05HX0FUVFIsCiAgICAgUFJP
UF9TVFJJTkdfQVRUUiwKICAgICBQUk9QX1RFU1RfT0JKX0FUVFIsCisgICAgUFJPUF9URVNUX05V
TExBQkxFX09CSl9BVFRSLAogICAgIFBST1BfTEVOSUVOVF9URVNUX09CSl9BVFRSLAogICAgIFBS
T1BfVU5GT1JHRUFCTEVfQVRUUiwKICAgICBQUk9QX1NUUklOR19BVFRSX1RSRUFUSU5HX05VTExf
QVNfRU1QVFlfU1RSSU5HLApAQCAtMzI3LDYgKzMyOCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9k
b21fdGVzdF9vYmpfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJ
ZCwKICAgICBjYXNlIFBST1BfVEVTVF9PQkpfQVRUUjoKICAgICAgICAgZ192YWx1ZV9zZXRfb2Jq
ZWN0KHZhbHVlLCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF90ZXN0X29ial9hdHRyKHNlbGYpKTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1RFU1RfTlVMTEFCTEVfT0JKX0FUVFI6Cisg
ICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X2RvbV90ZXN0X29ial9nZXRf
dGVzdF9udWxsYWJsZV9vYmpfYXR0cihzZWxmKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UFJPUF9MRU5JRU5UX1RFU1RfT0JKX0FUVFI6CiAgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2
YWx1ZSwgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfbGVuaWVudF90ZXN0X29ial9hdHRyKHNlbGYp
KTsKICAgICAgICAgYnJlYWs7CkBAIC02NTcsNiArNjYxLDE2IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF9kb21fdGVzdF9vYmpfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0T2JqQ2xhc3MqIHJlcXVlc3RD
bGFzcykKIAogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCiAgICAgICAgIGdv
YmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9URVNUX05VTExBQkxFX09CSl9BVFRSLAorICAgICAg
ICBnX3BhcmFtX3NwZWNfb2JqZWN0KAorICAgICAgICAgICAgInRlc3QtbnVsbGFibGUtb2JqLWF0
dHIiLAorICAgICAgICAgICAgIlRlc3RPYmo6dGVzdC1udWxsYWJsZS1vYmotYXR0ciIsCisgICAg
ICAgICAgICAicmVhZC1vbmx5IFdlYktpdERPTVRlc3RPYmoqIFRlc3RPYmo6dGVzdC1udWxsYWJs
ZS1vYmotYXR0ciIsCisgICAgICAgICAgICBXRUJLSVRfRE9NX1RZUEVfVEVTVF9PQkosCisgICAg
ICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdvYmplY3RDbGFzcywKICAgICAgICAgUFJPUF9MRU5J
RU5UX1RFU1RfT0JKX0FUVFIsCiAgICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QoCiAgICAgICAg
ICAgICAibGVuaWVudC10ZXN0LW9iai1hdHRyIiwKQEAgLTIyMDIsNyArMjIxNiwyNiBAQCB2b2lk
IHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3Rlc3Rfb2JqX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZiwgV2ViS2l0RE9NVGVzdAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19U
RVNUX09CSih2YWx1ZSkpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkVmFsdWUgPSBXZWJLaXQ6
OmNvcmUodmFsdWUpOwotICAgIGl0ZW0tPnNldFRlc3RPYmpBdHRyKGNvbnZlcnRlZFZhbHVlKTsK
KyAgICBpdGVtLT5zZXRUZXN0T2JqQXR0cigqY29udmVydGVkVmFsdWUpOworfQorCitXZWJLaXRE
T01UZXN0T2JqKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF90ZXN0X251bGxhYmxlX29ial9hdHRy
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVT
VF9PQkooc2VsZiksIDApOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7CisgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IGdvYmplY3RSZXN1bHQgPSBX
VEY6OmdldFB0cihpdGVtLT50ZXN0TnVsbGFibGVPYmpBdHRyKCkpOworICAgIHJldHVybiBXZWJL
aXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKK30KKwordm9pZCB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3NldF90ZXN0X251bGxhYmxlX29ial9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdl
YktpdERPTVRlc3RPYmoqIHZhbHVlKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkoo
c2VsZikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSih2YWx1
ZSkpOworICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Cisg
ICAgV2ViQ29yZTo6VGVzdE9iaiogY29udmVydGVkVmFsdWUgPSBXZWJLaXQ6OmNvcmUodmFsdWUp
OworICAgIGl0ZW0tPnNldFRlc3ROdWxsYWJsZU9iakF0dHIoY29udmVydGVkVmFsdWUpOwogfQog
CiBXZWJLaXRET01UZXN0T2JqKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9sZW5pZW50X3Rlc3Rf
b2JqX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKQEAgLTIyMjEsNyArMjI1NCw3IEBAIHZv
aWQgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfbGVuaWVudF90ZXN0X29ial9hdHRyKFdlYktpdERP
TVRlc3RPYmoqIHNlbGYsIFdlYktpCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lT
X1RFU1RfT0JKKHZhbHVlKSk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktp
dDo6Y29yZSh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0TGVuaWVudFRlc3RPYmpBdHRyKGNvbnZlcnRl
ZFZhbHVlKTsKKyAgICBpdGVtLT5zZXRMZW5pZW50VGVzdE9iakF0dHIoKmNvbnZlcnRlZFZhbHVl
KTsKIH0KIAogZ2NoYXIqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3VuZm9yZ2VhYmxlX2F0dHIo
V2ViS2l0RE9NVGVzdE9iaiogc2VsZikKQEAgLTIyNjgsNyArMjMwMSw3IEBAIHZvaWQgd2Via2l0
X2RvbV90ZXN0X29ial9zZXRfeG1sX29ial9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdl
YktpdERPTVRlc3RPCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JK
KHZhbHVlKSk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2
YWx1ZSk7Ci0gICAgaXRlbS0+c2V0WE1MT2JqQXR0cihjb252ZXJ0ZWRWYWx1ZSk7CisgICAgaXRl
bS0+c2V0WE1MT2JqQXR0cigqY29udmVydGVkVmFsdWUpOwogfQogCiBnYm9vbGVhbiB3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX2dldF9jcmVhdGUoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKQEAgLTI2MjIs
NyArMjY1NSw3IEBAIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfc3RyaWN0X3R5cGVfY2hl
Y2tpbmdfYXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoqIHNlCiAgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHZhbHVlKSk7CiAgICAgV2ViQ29yZTo6VGVzdE9iaiog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb252ZXJ0
ZWRWYWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7Ci0gICAgaXRlbS0+c2V0U3RyaWN0VHlwZUNo
ZWNraW5nQXR0cmlidXRlKGNvbnZlcnRlZFZhbHVlKTsKKyAgICBpdGVtLT5zZXRTdHJpY3RUeXBl
Q2hlY2tpbmdBdHRyaWJ1dGUoKmNvbnZlcnRlZFZhbHVlKTsKIH0KIAogZ2xvbmcgd2Via2l0X2Rv
bV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgKaW5kZXggMGMzMWIyNGVlNTVl
MDlhYzlhZDlkYzE0YTZkNDI5MTc4ZTZmZTRjMy4uMTBiYTQ0MWFhNGI3OTEzMGFlNDBmODI3YTY1
YjIxYThkMjM1NGFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaApAQCAtMTE3Nyw2
ICsxMTc3LDI3IEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfdGVz
dF9vYmpfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01UZXN0T2JqKiB2YWx1
ZSk7CiAKIC8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfdGVzdF9udWxsYWJsZV9vYmpf
YXR0cjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgorICogUmV0dXJuczogKHRy
YW5zZmVyIG5vbmUpOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgorICogU3RhYmlsaXR5OiBVbnN0
YWJsZQorKiovCitXRUJLSVRfQVBJIFdlYktpdERPTVRlc3RPYmoqCit3ZWJraXRfZG9tX3Rlc3Rf
b2JqX2dldF90ZXN0X251bGxhYmxlX29ial9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOwor
CisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3Rlc3RfbnVsbGFibGVfb2JqX2F0dHI6
CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQHZhbHVlOiBBICNXZWJLaXRET01U
ZXN0T2JqCisgKgorICogU3RhYmlsaXR5OiBVbnN0YWJsZQorKiovCitXRUJLSVRfQVBJIHZvaWQK
K3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3Rlc3RfbnVsbGFibGVfb2JqX2F0dHIoV2ViS2l0RE9N
VGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NVGVzdE9iaiogdmFsdWUpOworCisvKioKICAqIHdlYmtp
dF9kb21fdGVzdF9vYmpfZ2V0X2xlbmllbnRfdGVzdF9vYmpfYXR0cjoKICAqIEBzZWxmOiBBICNX
ZWJLaXRET01UZXN0T2JqCiAgKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCA5NzFjY2E0ODA0
NTc3ODNiNjZiZGE0ZjA3YmZjOGM0ZDZhYTBiYWY1Li5mYTcyM2E3MjlhYzVkNzcwNzRlNDQ5MTlh
NjczMzQ2NjRlYWU0NTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtNjg2LDcgKzY4Niwx
MSBAQCBib29sIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNOb2RlKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZQogICAgIE5vZGUqIG5hdGl2ZVZhbHVlID0gSlNO
b2RlOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW1wbC5zZXRJbXBsZW1lbnRzTm9k
ZShuYXRpdmVWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKKyAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgaW1wbC5zZXRJbXBsZW1lbnRzTm9kZSgqbmF0aXZlVmFsdWUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC03NTIsNyArNzU2LDExIEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlU3Vw
cGxlbWVudGFsTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsCiAg
ICAgTm9kZSogbmF0aXZlVmFsdWUgPSBKU05vZGU6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxOb2RlKGltcGws
IG5hdGl2ZVZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgeworICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxOb2RlKGltcGws
ICpuYXRpdmVWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggNzhk
NWJlYmRjNGUzNzUwMjRjYTUyOWFiNzE5MjQyMzExOGFhMjg0Yi4uY2NkMTNiYTZiODVmOGZhZmE0
YTM0YzUzYjgyYTk5NTFjZjhlNjQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTQzMCw2ICs0MzAsOCBAQCBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKUwogYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3RPYmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RP
YmpUZXN0T2JqQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0TnVsbGFi
bGVPYmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RPYmpUZXN0TnVsbGFibGVPYmpBdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0cihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNU
ZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alVuZm9yZ2VhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKQEAgLTc0Myw2ICs3NDUsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAidW5zaWdu
ZWRMb25nTG9uZ0F0dHIiLCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpVbnNpZ25l
ZExvbmdMb25nQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKSB9IH0sCiAgICAg
eyAic3RyaW5nQXR0ciIsIEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialN0cmluZ0F0
dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyKSB9IH0sCiAgICAgeyAidGVzdE9iakF0dHIiLCBDdXN0
b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpUZXN0T2JqQXR0ciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ialRlc3RP
YmpBdHRyKSB9IH0sCisgICAgeyAidGVzdE51bGxhYmxlT2JqQXR0ciIsIEN1c3RvbUFjY2Vzc29y
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdE9ialRlc3ROdWxsYWJsZU9iakF0dHIpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpUZXN0TnVs
bGFibGVPYmpBdHRyKSB9IH0sCiAgICAgeyAibGVuaWVudFRlc3RPYmpBdHRyIiwgQ3VzdG9tQWNj
ZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqTGVu
aWVudFRlc3RPYmpBdHRyKSB9IH0sCiAgICAgeyAic3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1w
dHlTdHJpbmciLCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpTdHJpbmdBdHRyVHJl
YXRpbmdOdWxsQXNFbXB0eVN0cmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ialN0cmluZ0F0dHJUcmVhdGluZ051bGxB
c0VtcHR5U3RyaW5nKSB9IH0sCiAgICAgeyAiWE1MT2JqQXR0ciIsIEN1c3RvbUFjY2Vzc29yLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdE9ialhNTE9iakF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKSB9IH0sCkBA
IC0xMzI5LDYgKzEzMzIsMjEgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVGVzdE9iakF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLAogfQogCiAKK0VuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3ROdWxsYWJsZU9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKKyAgICBKU1ZhbHVlIGRl
Y29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKKyAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsK
KyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CisgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInRlc3ROdWxsYWJsZU9iakF0dHIiKTsK
KyAgICB9CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6
OmdldFB0cihpbXBsLnRlc3ROdWxsYWJsZU9iakF0dHIoKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKK30KKworCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMZW5pZW50
VGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKQEAgLTI1NzIsNyArMjU5
MCwyOCBAQCBib29sIHNldEpTVGVzdE9ialRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZAogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVl
ID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW1wbC5zZXRUZXN0
T2JqQXR0cihuYXRpdmVWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsK
KyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgaW1wbC5zZXRUZXN0T2JqQXR0cigqbmF0aXZlVmFsdWUpOworICAgIHJldHVy
biB0cnVlOworfQorCisKK2Jvb2wgc2V0SlNUZXN0T2JqVGVzdE51bGxhYmxlT2JqQXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKK3sKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CisgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CisgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgeworICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJ0ZXN0TnVsbGFibGVP
YmpBdHRyIik7CisgICAgfQorICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CisgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7
CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpbXBsLnNldFRlc3ROdWxsYWJsZU9iakF0dHIobmF0aXZlVmFsdWUpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNTg5LDcgKzI2MjgsMTEgQEAgYm9vbCBzZXRKU1Rl
c3RPYmpMZW5pZW50VGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLAogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBw
ZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW1wbC5zZXRMZW5pZW50VGVzdE9iakF0dHIobmF0aXZl
VmFsdWUpOworICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7CisgICAgICAgIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlt
cGwuc2V0TGVuaWVudFRlc3RPYmpBdHRyKCpuYXRpdmVWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTI2MjMsNyArMjY2NiwxMSBAQCBib29sIHNldEpTVGVzdE9ialhNTE9iakF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSgogICAg
IFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaW1wbC5zZXRYTUxPYmpBdHRyKG5hdGl2ZVZhbHVlKTsKKyAgICBpZiAoVU5MSUtF
TFkoIW5hdGl2ZVZhbHVlKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpbXBsLnNldFhNTE9iakF0dHIoKm5hdGl2
ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjgyOSw2ICsyODc2LDEwIEBAIGJv
b2wgc2V0SlNUZXN0T2JqVHlwZWRBcnJheUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvCiAgICAgUmVmUHRyPEZsb2F0MzJBcnJheT4gbmF0aXZlVmFs
dWUgPSB0b0Zsb2F0MzJBcnJheSh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoVU5MSUtFTFkoIW5h
dGl2ZVZhbHVlKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KICAgICBpbXBsLnNldFR5cGVkQXJyYXlBdHRyKG5hdGl2ZVZh
bHVlLmdldCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI5NTgsNyArMzAwOSwxMSBAQCBi
b29sIHNldEpTVGVzdE9ialN0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aAogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0
T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW1wbC5zZXRTdHJpY3RUeXBlQ2hl
Y2tpbmdBdHRyaWJ1dGUobmF0aXZlVmFsdWUpOworICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFs
dWUpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIGltcGwuc2V0U3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKCpu
YXRpdmVWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMwNDgsMTAgKzMxMDMsMTQg
QEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlMKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpT
VGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChVTkxJS0VMWSghbmF0
aXZlVmFsdWUpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoKmNvbnRleHQsIG5h
dGl2ZVZhbHVlKTsKKyAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlKCpjb250ZXh0LCAqbmF0aXZlVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0z
MDY4LDcgKzMxMjcsMTEgQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKICAgICBUZXN0T2JqKiBu
YXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlt
cGwuc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKCpzdGF0ZSwgbmF0aXZlVmFsdWUp
OworICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7CisgICAgICAgIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGltcGwuc2V0
V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKCpzdGF0ZSwgKm5hdGl2ZVZhbHVlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzA4NSwxMCArMzE0OCwxNCBAQCBib29sIHNldEpTVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuYwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBw
ZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKKyAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CiAgICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRl
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAg
aWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW1wbC5zZXRXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcygqY29udGV4dCwgbmF0aXZlVmFsdWUp
OworICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMo
KmNvbnRleHQsICpuYXRpdmVWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMxMDUs
MTAgKzMxNzIsMTQgQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3QKICAgICBUZXN0T2JqKiBuYXRp
dmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChV
TkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZSgqc3RhdGUsICpjb250ZXh0LCBuYXRpdmVWYWx1ZSk7CisgICAgaW1wbC5z
ZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKCpzdGF0
ZSwgKmNvbnRleHQsICpuYXRpdmVWYWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMx
MjUsMTAgKzMxOTYsMTQgQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGEKICAgICBUZXN0T2JqKiBu
YXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
IChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIGF1dG8qIGNvbnRleHQgPSBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygqc3RhdGUsICpjb250ZXh0LCBuYXRpdmVWYWx1ZSk7Cisg
ICAgaW1wbC5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmli
dXRlUmFpc2VzKCpzdGF0ZSwgKmNvbnRleHQsICpuYXRpdmVWYWx1ZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTMxNDUsMTAgKzMyMjAsMTQgQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShFeGUK
ICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7CisgICAgICAgIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIGF1
dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoKnN0YXRlLCAqY29udGV4
dCwgbmF0aXZlVmFsdWUpOworICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoKnN0YXRlLCAqY29udGV4dCwgKm5hdGl2
ZVZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzE2NSw3ICszMjQ0LDExIEBAIGJv
b2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvCiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RP
Ymo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbXBsLnNldFdpdGhTY3JpcHRBcmd1
bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUobmF0aXZlVmFsdWUpOworICAgIGlmIChVTkxJS0VM
WSghbmF0aXZlVmFsdWUpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGltcGwuc2V0V2l0aFNjcmlwdEFyZ3VtZW50
c0FuZENhbGxTdGFja0F0dHJpYnV0ZSgqbmF0aXZlVmFsdWUpOwogICAgIHJldHVybiB0cnVlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0SW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5tbQppbmRleCAwOThhMTFkOWU1NzQ5ZTFhZjhkNzJl
YTI3M2VlNzE2NGY2MTRhOThkLi43YmQyNDcxNDExYmUxMTQ2YjI5ODlkNjI0NjM4OTJlNDE5OTg1
ZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0SW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW0KQEAgLTEwOSw3ICsxMDksOSBAQCAtICh2
b2lkKXNldEltcGxlbWVudHNOb2RlOihET01Ob2RlICopbmV3SW1wbGVtZW50c05vZGUKICAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgQVNTRVJUKG5ld0ltcGxl
bWVudHNOb2RlKTsKIAotICAgIElNUEwtPnNldEltcGxlbWVudHNOb2RlKGNvcmUobmV3SW1wbGVt
ZW50c05vZGUpKTsKKyAgICBpZiAoIWNvcmUobmV3SW1wbGVtZW50c05vZGUpKQorICAgICAgICBX
ZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIElNUEwtPnNldEltcGxlbWVu
dHNOb2RlKCpjb3JlKG5ld0ltcGxlbWVudHNOb2RlKSk7CiB9CiAjZW5kaWYKIApAQCAtMTYxLDcg
KzE2Myw5IEBAIC0gKHZvaWQpc2V0U3VwcGxlbWVudGFsTm9kZTooRE9NTm9kZSAqKW5ld1N1cHBs
ZW1lbnRhbE5vZGUKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAg
ICAgQVNTRVJUKG5ld1N1cHBsZW1lbnRhbE5vZGUpOwogCi0gICAgV2ViQ29yZTo6VGVzdFN1cHBs
ZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsTm9kZSgqSU1QTCwgY29yZShuZXdTdXBwbGVtZW50YWxO
b2RlKSk7CisgICAgaWYgKCFjb3JlKG5ld1N1cHBsZW1lbnRhbE5vZGUpKQorICAgICAgICBXZWJD
b3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIFdlYkNvcmU6OlRlc3RTdXBwbGVt
ZW50YWw6OnNldFN1cHBsZW1lbnRhbE5vZGUoKklNUEwsICpjb3JlKG5ld1N1cHBsZW1lbnRhbE5v
ZGUpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKaW5kZXggZGVhM2QyNmE0ZDE1YTU4YWI5MDk1
ZmM5MGFmMDlkY2M1MTBlMzIyNS4uYjM4YjNkOTA5OWFhNWU5NGQ0ZTdiMWEwMTcxZmQ2MmJhYTYx
Yjk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RPYmouaApAQCAtNzUsNiArNzUsNyBAQCBXRUJDT1JFX0VYUE9SVCBAaW50
ZXJmYWNlIERPTVRlc3RPYmogOiBET01PYmplY3QKIEBwcm9wZXJ0eSB1bnNpZ25lZCBsb25nIGxv
bmcgdW5zaWduZWRMb25nTG9uZ0F0dHI7CiBAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpzdHJp
bmdBdHRyOwogQHByb3BlcnR5IChzdHJvbmcpIERPTVRlc3RPYmogKnRlc3RPYmpBdHRyOworQHBy
b3BlcnR5IChzdHJvbmcpIERPTVRlc3RPYmogKnRlc3ROdWxsYWJsZU9iakF0dHI7CiBAcHJvcGVy
dHkgKHN0cm9uZykgRE9NVGVzdE9iaiAqbGVuaWVudFRlc3RPYmpBdHRyOwogQHByb3BlcnR5IChy
ZWFkb25seSwgY29weSkgTlNTdHJpbmcgKnVuZm9yZ2VhYmxlQXR0cjsKIEBwcm9wZXJ0eSAoY29w
eSkgTlNTdHJpbmcgKnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9i
ai5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RP
YmoubW0KaW5kZXggMzk3YzNmZTc0MjRiMzc5OTMxMzQzNTdmNTIwNmM5ZmY4M2Y3YTg4Zi4uMjBl
MTFjNGQ4NWE3ZGJkNTdiNDViZWJjYjdmNzRlYWVkMTI5MWM0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCkBA
IC0xMTIsNyArMTEyLDkgQEAgLSAodm9pZClzZXRUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZzoo
RE9NVGVzdFN1Yk9iakNvbnN0cnVjdG9yICopbmV3VGVzdFN1Yk9iakUKICAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgQVNTRVJUKG5ld1Rlc3RTdWJPYmpFbmFi
bGVkQnlTZXR0aW5nKTsKIAotICAgIElNUEwtPnNldFRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5n
KGNvcmUobmV3VGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmcpKTsKKyAgICBpZiAoIWNvcmUobmV3
VGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmcpKQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVF
cnJvckV4Y2VwdGlvbigpOworICAgIElNUEwtPnNldFRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5n
KCpjb3JlKG5ld1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nKSk7CiB9CiAKIC0gKGNoYXIpYnl0
ZUF0dHIKQEAgLTI0Niw3ICsyNDgsMjMgQEAgLSAodm9pZClzZXRUZXN0T2JqQXR0cjooRE9NVGVz
dE9iaiAqKW5ld1Rlc3RPYmpBdHRyCiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwogICAgIEFTU0VSVChuZXdUZXN0T2JqQXR0cik7CiAKLSAgICBJTVBMLT5zZXRUZXN0
T2JqQXR0cihjb3JlKG5ld1Rlc3RPYmpBdHRyKSk7CisgICAgaWYgKCFjb3JlKG5ld1Rlc3RPYmpB
dHRyKSkKKyAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBJ
TVBMLT5zZXRUZXN0T2JqQXR0cigqY29yZShuZXdUZXN0T2JqQXR0cikpOworfQorCistIChET01U
ZXN0T2JqICopdGVzdE51bGxhYmxlT2JqQXR0cgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPnRlc3RO
dWxsYWJsZU9iakF0dHIoKSkpOworfQorCistICh2b2lkKXNldFRlc3ROdWxsYWJsZU9iakF0dHI6
KERPTVRlc3RPYmogKiluZXdUZXN0TnVsbGFibGVPYmpBdHRyCit7CisgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIEFTU0VSVChuZXdUZXN0TnVsbGFibGVPYmpB
dHRyKTsKKworICAgIElNUEwtPnNldFRlc3ROdWxsYWJsZU9iakF0dHIoY29yZShuZXdUZXN0TnVs
bGFibGVPYmpBdHRyKSk7CiB9CiAKIC0gKERPTVRlc3RPYmogKilsZW5pZW50VGVzdE9iakF0dHIK
QEAgLTI2MCw3ICsyNzgsOSBAQCAtICh2b2lkKXNldExlbmllbnRUZXN0T2JqQXR0cjooRE9NVGVz
dE9iaiAqKW5ld0xlbmllbnRUZXN0T2JqQXR0cgogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NFUlQobmV3TGVuaWVudFRlc3RPYmpBdHRyKTsKIAotICAg
IElNUEwtPnNldExlbmllbnRUZXN0T2JqQXR0cihjb3JlKG5ld0xlbmllbnRUZXN0T2JqQXR0cikp
OworICAgIGlmICghY29yZShuZXdMZW5pZW50VGVzdE9iakF0dHIpKQorICAgICAgICBXZWJDb3Jl
OjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIElNUEwtPnNldExlbmllbnRUZXN0T2Jq
QXR0cigqY29yZShuZXdMZW5pZW50VGVzdE9iakF0dHIpKTsKIH0KIAogLSAoTlNTdHJpbmcgKil1
bmZvcmdlYWJsZUF0dHIKQEAgLTI5Miw3ICszMTIsOSBAQCAtICh2b2lkKXNldFhNTE9iakF0dHI6
KERPTVRlc3RPYmogKiluZXdYTUxPYmpBdHRyCiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwogICAgIEFTU0VSVChuZXdYTUxPYmpBdHRyKTsKIAotICAgIElNUEwtPnNl
dFhNTE9iakF0dHIoY29yZShuZXdYTUxPYmpBdHRyKSk7CisgICAgaWYgKCFjb3JlKG5ld1hNTE9i
akF0dHIpKQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAg
IElNUEwtPnNldFhNTE9iakF0dHIoKmNvcmUobmV3WE1MT2JqQXR0cikpOwogfQogCiAtIChCT09M
KWNyZWF0ZQpAQCAtNTIyLDcgKzU0NCw5IEBAIC0gKHZvaWQpc2V0U3RyaWN0VHlwZUNoZWNraW5n
QXR0cmlidXRlOihET01UZXN0T2JqICopbmV3U3RyaWN0VHlwZUNoZWNraW5nQXR0cmliCiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIEFTU0VSVChuZXdTdHJp
Y3RUeXBlQ2hlY2tpbmdBdHRyaWJ1dGUpOwogCi0gICAgSU1QTC0+c2V0U3RyaWN0VHlwZUNoZWNr
aW5nQXR0cmlidXRlKGNvcmUobmV3U3RyaWN0VHlwZUNoZWNraW5nQXR0cmlidXRlKSk7CisgICAg
aWYgKCFjb3JlKG5ld1N0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSkpCisgICAgICAgIFdlYkNv
cmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgSU1QTC0+c2V0U3RyaWN0VHlwZUNo
ZWNraW5nQXR0cmlidXRlKCpjb3JlKG5ld1N0cmljdFR5cGVDaGVja2luZ0F0dHJpYnV0ZSkpOwog
fQogCiAtIChpbnQpY3VzdG9tQXR0cgpAQCAtNTQ5LDcgKzU3Myw5IEBAIC0gKHZvaWQpc2V0SnNC
dWlsdGluQXR0cmlidXRlOihET01UZXN0T2JqICopbmV3SnNCdWlsdGluQXR0cmlidXRlCiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIEFTU0VSVChuZXdKc0J1
aWx0aW5BdHRyaWJ1dGUpOwogCi0gICAgSU1QTC0+c2V0SnNCdWlsdGluQXR0cmlidXRlKGNvcmUo
bmV3SnNCdWlsdGluQXR0cmlidXRlKSk7CisgICAgaWYgKCFjb3JlKG5ld0pzQnVpbHRpbkF0dHJp
YnV0ZSkpCisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAg
SU1QTC0+c2V0SnNCdWlsdGluQXR0cmlidXRlKCpjb3JlKG5ld0pzQnVpbHRpbkF0dHJpYnV0ZSkp
OwogfQogI2VuZGlmCiAKQEAgLTU5Niw3ICs2MjIsOSBAQCAtICh2b2lkKXNldFdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QXR0cmlidXRlOihET01UZXN0T2JqICopbmV3V2l0aFNjcmlwdEV4ZWN1
dAogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NFUlQo
bmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpOwogCi0gICAgSU1QTC0+c2V0
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoY29yZShuZXdXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZSkpOworICAgIGlmICghY29yZShuZXdXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZSkpCisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9y
RXhjZXB0aW9uKCk7CisgICAgSU1QTC0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGUoKmNvcmUobmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpKTsKIH0K
IAogLSAoRE9NVGVzdE9iaiAqKXdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcwpAQCAtNjEz
LDcgKzY0MSw5IEBAIC0gKHZvaWQpc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzOihE
T01UZXN0T2JqICopbmV3V2l0aFNjcmlwdFN0YXRlQXR0cmliCiAgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIEFTU0VSVChuZXdXaXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGVSYWlzZXMpOwogCi0gICAgSU1QTC0+c2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFp
c2VzKGNvcmUobmV3V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKSk7CisgICAgaWYgKCFj
b3JlKG5ld1dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcykpCisgICAgICAgIFdlYkNvcmU6
OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgSU1QTC0+c2V0V2l0aFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzKCpjb3JlKG5ld1dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcykp
OwogfQogCiAtIChET01UZXN0T2JqICopd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1
dGVSYWlzZXMKQEAgLTYzMCw3ICs2NjAsOSBAQCAtICh2b2lkKXNldFdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlUmFpc2VzOihET01UZXN0T2JqICopbmV3V2l0aFNjcmlwdAogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NFUlQobmV3V2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMpOwogCi0gICAgSU1QTC0+c2V0
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoY29yZShuZXdXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcykpOworICAgIGlmICghY29yZShuZXdX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcykpCisgICAgICAgIFdlYkNv
cmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgSU1QTC0+c2V0V2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoKmNvcmUobmV3V2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMpKTsKIH0KIAogLSAoRE9NVGVzdE9iaiAqKXdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUKQEAgLTY0NCw3ICs2NzYs
OSBAQCAtICh2b2lkKXNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGU6KERPTVRlc3RPYmogKiluZXdXaQogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NFUlQobmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSk7CiAKLSAgICBJTVBMLT5zZXRXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKGNvcmUobmV3V2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSkpOworICAgIGlmICghY29yZShuZXdX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKSkKKyAgICAg
ICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBJTVBMLT5zZXRXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKCpjb3JlKG5ld1dp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUpKTsKIH0KIAog
LSAoRE9NVGVzdE9iaiAqKXdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGVSYWlzZXMKQEAgLTY2MSw3ICs2OTUsOSBAQCAtICh2b2lkKXNldFdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXM6KERPTVRlc3RPYmog
KgogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBBU1NFUlQo
bmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNl
cyk7CiAKLSAgICBJTVBMLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzKGNvcmUobmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcykpOworICAgIGlmICghY29yZShuZXdXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKSkKKyAgICAgICAg
V2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBJTVBMLT5zZXRXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKCpjb3JlKG5l
d1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMp
KTsKIH0KIAogLSAoRE9NVGVzdE9iaiAqKXdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlCkBAIC02NzUsNyArNzExLDkgQEAgLSAodm9pZClz
ZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJp
YnV0ZTooRE9NVGVzdE8KICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CiAgICAgQVNTRVJUKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVX
aXRoU3BhY2VzQXR0cmlidXRlKTsKIAotICAgIElNUEwtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKGNvcmUobmV3V2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpKTsKKyAg
ICBpZiAoIWNvcmUobmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdp
dGhTcGFjZXNBdHRyaWJ1dGUpKQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2Vw
dGlvbigpOworICAgIElNUEwtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKCpjb3JlKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKSk7CiB9CiAKIC0gKERPTVRlc3RP
YmogKil3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlCkBAIC02ODksNyAr
NzI3LDkgQEAgLSAodm9pZClzZXRXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmli
dXRlOihET01UZXN0T2JqICopbmV3V2l0aFNjcmlwdEEKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CiAgICAgQVNTRVJUKG5ld1dpdGhTY3JpcHRBcmd1bWVudHNBbmRD
YWxsU3RhY2tBdHRyaWJ1dGUpOwogCi0gICAgSU1QTC0+c2V0V2l0aFNjcmlwdEFyZ3VtZW50c0Fu
ZENhbGxTdGFja0F0dHJpYnV0ZShjb3JlKG5ld1dpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3Rh
Y2tBdHRyaWJ1dGUpKTsKKyAgICBpZiAoIWNvcmUobmV3V2l0aFNjcmlwdEFyZ3VtZW50c0FuZENh
bGxTdGFja0F0dHJpYnV0ZSkpCisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0
aW9uKCk7CisgICAgSU1QTC0+c2V0V2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJp
YnV0ZSgqY29yZShuZXdXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKSk7
CiB9CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKQEAgLTc0Niw3ICs3ODYsOSBAQCAtICh2b2lk
KXNldENvbmRpdGlvbmFsQXR0cjQ6KERPTVRlc3RPYmplY3RBQ29uc3RydWN0b3IgKiluZXdDb25k
aXRpb25hbEF0dHI0CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwog
ICAgIEFTU0VSVChuZXdDb25kaXRpb25hbEF0dHI0KTsKIAotICAgIElNUEwtPnNldENvbmRpdGlv
bmFsQXR0cjQoY29yZShuZXdDb25kaXRpb25hbEF0dHI0KSk7CisgICAgaWYgKCFjb3JlKG5ld0Nv
bmRpdGlvbmFsQXR0cjQpKQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlv
bigpOworICAgIElNUEwtPnNldENvbmRpdGlvbmFsQXR0cjQoKmNvcmUobmV3Q29uZGl0aW9uYWxB
dHRyNCkpOwogfQogI2VuZGlmCiAKQEAgLTc2Miw3ICs4MDQsOSBAQCAtICh2b2lkKXNldENvbmRp
dGlvbmFsQXR0cjU6KERPTVRlc3RPYmplY3RCQ29uc3RydWN0b3IgKiluZXdDb25kaXRpb25hbEF0
dHI1CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIEFTU0VS
VChuZXdDb25kaXRpb25hbEF0dHI1KTsKIAotICAgIElNUEwtPnNldENvbmRpdGlvbmFsQXR0cjUo
Y29yZShuZXdDb25kaXRpb25hbEF0dHI1KSk7CisgICAgaWYgKCFjb3JlKG5ld0NvbmRpdGlvbmFs
QXR0cjUpKQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAg
IElNUEwtPnNldENvbmRpdGlvbmFsQXR0cjUoKmNvcmUobmV3Q29uZGl0aW9uYWxBdHRyNSkpOwog
fQogI2VuZGlmCiAKQEAgLTc3OCw3ICs4MjIsOSBAQCAtICh2b2lkKXNldENvbmRpdGlvbmFsQXR0
cjY6KERPTVRlc3RPYmplY3RDQ29uc3RydWN0b3IgKiluZXdDb25kaXRpb25hbEF0dHI2CiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIEFTU0VSVChuZXdDb25k
aXRpb25hbEF0dHI2KTsKIAotICAgIElNUEwtPnNldENvbmRpdGlvbmFsQXR0cjYoY29yZShuZXdD
b25kaXRpb25hbEF0dHI2KSk7CisgICAgaWYgKCFjb3JlKG5ld0NvbmRpdGlvbmFsQXR0cjYpKQor
ICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIElNUEwtPnNl
dENvbmRpdGlvbmFsQXR0cjYoKmNvcmUobmV3Q29uZGl0aW9uYWxBdHRyNikpOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
T2JqLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlk
bAppbmRleCA5OGE3YjRkNjBlYjNkODdkMzY5MDA0ZjUxNjVhMjNiNGU1ZGFhNTMwLi5mZTEzY2U3
OWU3ZDBmNTNkYzI5ZDQ0NzBmZTM1NTZmNTcwNTZhM2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC02Myw2ICs2Myw3IEBAIGVu
dW0gX29wdGlvbmFsIHsgIiIsICJPcHRpb25hbFZhbHVlMSIsICJPcHRpb25hbFZhbHVlMiIsICJP
cHRpb25hbFZhbHVlMyIgfTsKICAgICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nICAgICAg
IHVuc2lnbmVkTG9uZ0xvbmdBdHRyOwogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICAgICAg
ICAgICAgc3RyaW5nQXR0cjsKICAgICBhdHRyaWJ1dGUgVGVzdE9iaiAgICAgICAgICAgICAgICAg
IHRlc3RPYmpBdHRyOworICAgIGF0dHJpYnV0ZSBUZXN0T2JqPyAgICAgICAgICAgICAgICAgdGVz
dE51bGxhYmxlT2JqQXR0cjsKICAgICBbTGVuaWVudFRoaXNdIGF0dHJpYnV0ZSBUZXN0T2JqICAg
IGxlbmllbnRUZXN0T2JqQXR0cjsKICAgICBbVW5mb3JnZWFibGVdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgdW5mb3JnZWFibGVBdHRyOwogICAgIFtUcmVhdE51bGxBcz1FbXB0eVN0cmlu
Z10gYXR0cmlidXRlIERPTVN0cmluZyBzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmlu
ZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDQyMTEwZDY4Y2UyNjlmZWE5MjQ4MDkxNGVh
OWQ3MmJjZWFiNzhmYTMuLjIxNzhkYWY3ZDY2ZDcwNWM0Y2QyY2MzZjA4NzczYjJkYjMyMTRhMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzk2NCw3ICszOTY0LDcgQEAgdm9pZCBEb2N1
bWVudDo6bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50KE5vZGUqIG5vZGUsIERvY3VtZW50
KiBuZXdEb2N1bWVudCkKICAgICBWZWN0b3I8Tm9kZUl0ZXJhdG9yKj4gbm9kZUl0ZXJhdG9yczsK
ICAgICBjb3B5VG9WZWN0b3IobV9ub2RlSXRlcmF0b3JzLCBub2RlSXRlcmF0b3JzKTsKICAgICBm
b3IgKGF1dG8qIGl0IDogbm9kZUl0ZXJhdG9ycykgewotICAgICAgICBpZiAoaXQtPnJvb3QoKSA9
PSBub2RlKSB7CisgICAgICAgIGlmICgmaXQtPnJvb3QoKSA9PSBub2RlKSB7CiAgICAgICAgICAg
ICBkZXRhY2hOb2RlSXRlcmF0b3IoaXQpOwogICAgICAgICAgICAgbmV3RG9jdW1lbnQtPmF0dGFj
aE5vZGVJdGVyYXRvcihpdCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5j
cHAKaW5kZXggNzQyOTBhOTUxNDYzODQ3MDdmYWE1NGQ1MWQwNDk1Mjk0YjU2ZjA0Zi4uYjU5ZTBm
OWE1Mzg3NDI3ZTY1YzliMTNkMTI1NGY5ZWE1M2YwYjRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJ
dGVyYXRvci5jcHAKQEAgLTMzLDEzICszMyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Tm9kZUl0ZXJhdG9yOjpOb2RlUG9pbnRlcjo6Tm9kZVBvaW50ZXIoKQotewotfQotCi1Ob2RlSXRl
cmF0b3I6Ok5vZGVQb2ludGVyOjpOb2RlUG9pbnRlcihOb2RlKiBuLCBib29sIGIpCi0gICAgOiBu
b2RlKG4pCi0gICAgLCBpc1BvaW50ZXJCZWZvcmVOb2RlKGIpCitOb2RlSXRlcmF0b3I6Ok5vZGVQ
b2ludGVyOjpOb2RlUG9pbnRlcihOb2RlJiBub2RlLCBib29sIGlzUG9pbnRlckJlZm9yZU5vZGUp
CisgICAgOiBub2RlKCZub2RlKQorICAgICwgaXNQb2ludGVyQmVmb3JlTm9kZShpc1BvaW50ZXJC
ZWZvcmVOb2RlKQogewogfQogCkBAIC00OCw3ICs0NCw3IEBAIHZvaWQgTm9kZUl0ZXJhdG9yOjpO
b2RlUG9pbnRlcjo6Y2xlYXIoKQogICAgIG5vZGUgPSBudWxscHRyOwogfQogCi1ib29sIE5vZGVJ
dGVyYXRvcjo6Tm9kZVBvaW50ZXI6Om1vdmVUb05leHQoTm9kZSogcm9vdCkKK2Jvb2wgTm9kZUl0
ZXJhdG9yOjpOb2RlUG9pbnRlcjo6bW92ZVRvTmV4dChOb2RlJiByb290KQogewogICAgIGlmICgh
bm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTYsMTEgKzUyLDExIEBAIGJvb2wgTm9k
ZUl0ZXJhdG9yOjpOb2RlUG9pbnRlcjo6bW92ZVRvTmV4dChOb2RlKiByb290KQogICAgICAgICBp
c1BvaW50ZXJCZWZvcmVOb2RlID0gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
LSAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSwgcm9vdCk7CisgICAgbm9kZSA9
IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUsICZyb290KTsKICAgICByZXR1cm4gbm9kZTsKIH0K
IAotYm9vbCBOb2RlSXRlcmF0b3I6Ok5vZGVQb2ludGVyOjptb3ZlVG9QcmV2aW91cyhOb2RlKiBy
b290KQorYm9vbCBOb2RlSXRlcmF0b3I6Ok5vZGVQb2ludGVyOjptb3ZlVG9QcmV2aW91cyhOb2Rl
JiByb290KQogewogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjgs
NyArNjQsNyBAQCBib29sIE5vZGVJdGVyYXRvcjo6Tm9kZVBvaW50ZXI6Om1vdmVUb1ByZXZpb3Vz
KE5vZGUqIHJvb3QpCiAgICAgICAgIGlzUG9pbnRlckJlZm9yZU5vZGUgPSB0cnVlOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKG5vZGUgPT0gcm9vdCkgeworICAgIGlmIChu
b2RlID09ICZyb290KSB7CiAgICAgICAgIG5vZGUgPSBudWxscHRyOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQpAQCAtODAsMTIgKzc2LDEyIEBAIE5vZGVJdGVyYXRvcjo6Tm9kZUl0ZXJh
dG9yKE5vZGUmIHJvb3ROb2RlLCB1bnNpZ25lZCBsb25nIHdoYXRUb1Nob3csIFJlZlB0cjxOb2Rl
CiAgICAgOiBOb2RlSXRlcmF0b3JCYXNlKHJvb3ROb2RlLCB3aGF0VG9TaG93LCBXVEZNb3ZlKGZp
bHRlcikpCiAgICAgLCBtX3JlZmVyZW5jZU5vZGUocm9vdCgpLCB0cnVlKQogewotICAgIHJvb3Qo
KS0+ZG9jdW1lbnQoKS5hdHRhY2hOb2RlSXRlcmF0b3IodGhpcyk7CisgICAgcm9vdCgpLmRvY3Vt
ZW50KCkuYXR0YWNoTm9kZUl0ZXJhdG9yKHRoaXMpOwogfQogCiBOb2RlSXRlcmF0b3I6On5Ob2Rl
SXRlcmF0b3IoKQogewotICAgIHJvb3QoKS0+ZG9jdW1lbnQoKS5kZXRhY2hOb2RlSXRlcmF0b3Io
dGhpcyk7CisgICAgcm9vdCgpLmRvY3VtZW50KCkuZGV0YWNoTm9kZUl0ZXJhdG9yKHRoaXMpOwog
fQogCiBSZWZQdHI8Tm9kZT4gTm9kZUl0ZXJhdG9yOjpuZXh0Tm9kZSgpCkBAIC0xNDUsMTEgKzE0
MSwxMSBAQCB2b2lkIE5vZGVJdGVyYXRvcjo6bm9kZVdpbGxCZVJlbW92ZWQoTm9kZSYgcmVtb3Zl
ZE5vZGUpCiAKIHZvaWQgTm9kZUl0ZXJhdG9yOjp1cGRhdGVGb3JOb2RlUmVtb3ZhbChOb2RlJiBy
ZW1vdmVkTm9kZSwgTm9kZVBvaW50ZXImIHJlZmVyZW5jZU5vZGUpIGNvbnN0CiB7Ci0gICAgQVNT
RVJUKCZyb290KCktPmRvY3VtZW50KCkgPT0gJnJlbW92ZWROb2RlLmRvY3VtZW50KCkpOworICAg
IEFTU0VSVCgmcm9vdCgpLmRvY3VtZW50KCkgPT0gJnJlbW92ZWROb2RlLmRvY3VtZW50KCkpOwog
CiAgICAgLy8gSXRlcmF0b3IgaXMgbm90IGFmZmVjdGVkIGlmIHRoZSByZW1vdmVkIG5vZGUgaXMg
dGhlIHJlZmVyZW5jZSBub2RlIGFuZCBpcyB0aGUgcm9vdC4KICAgICAvLyBvciBpZiByZW1vdmVk
IG5vZGUgaXMgbm90IHRoZSByZWZlcmVuY2Ugbm9kZSwgb3IgdGhlIGFuY2VzdG9yIG9mIHRoZSBy
ZWZlcmVuY2Ugbm9kZS4KLSAgICBpZiAoIXJlbW92ZWROb2RlLmlzRGVzY2VuZGFudE9mKHJvb3Qo
KSkpCisgICAgaWYgKCFyZW1vdmVkTm9kZS5pc0Rlc2NlbmRhbnRPZigmcm9vdCgpKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIGJvb2wgd2lsbFJlbW92ZVJlZmVyZW5jZU5vZGUgPSAmcmVtb3ZlZE5v
ZGUgPT0gcmVmZXJlbmNlTm9kZS5ub2RlOwogICAgIGJvb2wgd2lsbFJlbW92ZVJlZmVyZW5jZU5v
ZGVBbmNlc3RvciA9IHJlZmVyZW5jZU5vZGUubm9kZSAmJiByZWZlcmVuY2VOb2RlLm5vZGUtPmlz
RGVzY2VuZGFudE9mKCZyZW1vdmVkTm9kZSk7CkBAIC0xNTcsMTIgKzE1MywxMiBAQCB2b2lkIE5v
ZGVJdGVyYXRvcjo6dXBkYXRlRm9yTm9kZVJlbW92YWwoTm9kZSYgcmVtb3ZlZE5vZGUsIE5vZGVQ
b2ludGVyJiByZWZlcmVuYwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocmVmZXJlbmNlTm9k
ZS5pc1BvaW50ZXJCZWZvcmVOb2RlKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVy
c2FsOjpuZXh0KHJlbW92ZWROb2RlLCByb290KCkpOworICAgICAgICBOb2RlKiBub2RlID0gTm9k
ZVRyYXZlcnNhbDo6bmV4dChyZW1vdmVkTm9kZSwgJnJvb3QoKSk7CiAgICAgICAgIGlmIChub2Rl
KSB7CiAgICAgICAgICAgICAvLyBNb3ZlIG91dCBmcm9tIHVuZGVyIHRoZSBub2RlIGJlaW5nIHJl
bW92ZWQgaWYgdGhlIG5ldyByZWZlcmVuY2UKICAgICAgICAgICAgIC8vIG5vZGUgaXMgYSBkZXNj
ZW5kYW50IG9mIHRoZSBub2RlIGJlaW5nIHJlbW92ZWQuCiAgICAgICAgICAgICB3aGlsZSAobm9k
ZSAmJiBub2RlLT5pc0Rlc2NlbmRhbnRPZigmcmVtb3ZlZE5vZGUpKQotICAgICAgICAgICAgICAg
IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlLCByb290KCkpOworICAgICAgICAgICAg
ICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlLCAmcm9vdCgpKTsKICAgICAgICAg
ICAgIGlmIChub2RlKQogICAgICAgICAgICAgICAgIHJlZmVyZW5jZU5vZGUubm9kZSA9IG5vZGU7
CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xOTYsNyArMTkyLDcgQEAgdm9pZCBOb2RlSXRlcmF0b3I6
OnVwZGF0ZUZvck5vZGVSZW1vdmFsKE5vZGUmIHJlbW92ZWROb2RlLCBOb2RlUG9pbnRlciYgcmVm
ZXJlbmMKICAgICAgICAgICAgICAgICByZWZlcmVuY2VOb2RlLm5vZGUgPSBub2RlOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgYnJhbmNoIGRvZXNuJ3QgYXBw
ZWFyIHRvIGhhdmUgYW55IExheW91dFRlc3RzLgotICAgICAgICAgICAgbm9kZSA9IE5vZGVUcmF2
ZXJzYWw6Om5leHQocmVtb3ZlZE5vZGUsIHJvb3QoKSk7CisgICAgICAgICAgICBub2RlID0gTm9k
ZVRyYXZlcnNhbDo6bmV4dChyZW1vdmVkTm9kZSwgJnJvb3QoKSk7CiAgICAgICAgICAgICAvLyBN
b3ZlIG91dCBmcm9tIHVuZGVyIHRoZSBub2RlIGJlaW5nIHJlbW92ZWQgaWYgdGhlIHJlZmVyZW5j
ZSBub2RlIGlzCiAgICAgICAgICAgICAvLyBhIGRlc2NlbmRhbnQgb2YgdGhlIG5vZGUgYmVpbmcg
cmVtb3ZlZC4KICAgICAgICAgICAgIGlmICh3aWxsUmVtb3ZlUmVmZXJlbmNlTm9kZUFuY2VzdG9y
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmgKaW5kZXggZjZiYmEzMjM1MzgwYTM4NGFkMTEy
ZTM2OTdiNWZkZGY5M2EzNWQ5Mi4uY2E4ZThkNGM0MGFhZTRhZDUwYjQ3YzkxOGE5NzY2ODk4NmVk
MzU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3IuaApAQCAtNTcsMTIgKzU3LDE0IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBzdHJ1Y3QgTm9kZVBvaW50ZXIgewogICAgICAg
ICAgICAgUmVmUHRyPE5vZGU+IG5vZGU7Ci0gICAgICAgICAgICBib29sIGlzUG9pbnRlckJlZm9y
ZU5vZGU7Ci0gICAgICAgICAgICBOb2RlUG9pbnRlcigpOwotICAgICAgICAgICAgTm9kZVBvaW50
ZXIoTm9kZSosIGJvb2wpOworICAgICAgICAgICAgYm9vbCBpc1BvaW50ZXJCZWZvcmVOb2RlIHsg
dHJ1ZSB9OworCisgICAgICAgICAgICBOb2RlUG9pbnRlcigpID0gZGVmYXVsdDsKKyAgICAgICAg
ICAgIE5vZGVQb2ludGVyKE5vZGUmLCBib29sKTsKKwogICAgICAgICAgICAgdm9pZCBjbGVhcigp
OwotICAgICAgICAgICAgYm9vbCBtb3ZlVG9OZXh0KE5vZGUqIHJvb3QpOwotICAgICAgICAgICAg
Ym9vbCBtb3ZlVG9QcmV2aW91cyhOb2RlKiByb290KTsKKyAgICAgICAgICAgIGJvb2wgbW92ZVRv
TmV4dChOb2RlJiByb290KTsKKyAgICAgICAgICAgIGJvb2wgbW92ZVRvUHJldmlvdXMoTm9kZSYg
cm9vdCk7CiAgICAgICAgIH07CiAKICAgICAgICAgdm9pZCB1cGRhdGVGb3JOb2RlUmVtb3ZhbChO
b2RlJiBub2RlVG9CZVJlbW92ZWQsIE5vZGVQb2ludGVyJikgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmF2
ZXJzYWwuY3BwCmluZGV4IDBmZGY4NTg2ZjZjY2I3YjU2ZWRkODc5NmQxNmQyM2JjNmRjZmU5MmIu
LjNjODJhNzY2ZWEwNTU3ZjVlODVkYWZlYWIzNjYxZGMwOGI4NTYyNWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmF2ZXJzYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmF2ZXJzYWwuY3BwCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE5v
ZGVJdGVyYXRvckJhc2U6Ok5vZGVJdGVyYXRvckJhc2UoTm9kZSYgcm9vdE5vZGUsIHVuc2lnbmVk
IHdoYXRUb1Nob3csIFJlZlB0cjxOb2RlRmlsdGVyPiYmIG5vZGVGaWx0ZXIpCi0gICAgOiBtX3Jv
b3QoJnJvb3ROb2RlKQorICAgIDogbV9yb290KHJvb3ROb2RlKQogICAgICwgbV93aGF0VG9TaG93
KHdoYXRUb1Nob3cpCiAgICAgLCBtX2ZpbHRlcihXVEZNb3ZlKG5vZGVGaWx0ZXIpKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RyYXZlcnNhbC5oCmluZGV4IGI4YjllYzRhNmMxYjM0NmJlMzY2ZDlmM2I1NTk4YmRmYjQ2
ZjlhMDQuLmExZTBmZmM1MWI3OGQ1ZDBmZWFmMWUzZDZlN2FkN2Y1M2Y4NDc4ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmF2ZXJzYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJhdmVyc2FsLmgKQEAgLTMzLDcgKzMzLDkgQEAgY2xhc3MgTm9kZUZpbHRlcjsKIAogY2xh
c3MgTm9kZUl0ZXJhdG9yQmFzZSB7CiBwdWJsaWM6Ci0gICAgTm9kZSogcm9vdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcm9vdC5nZXQoKTsgfQorICAgIE5vZGUmIHJvb3QoKSB7IHJldHVybiBtX3Jvb3Qu
Z2V0KCk7IH0KKyAgICBjb25zdCBOb2RlJiByb290KCkgY29uc3QgeyByZXR1cm4gbV9yb290Lmdl
dCgpOyB9CisKICAgICB1bnNpZ25lZCB3aGF0VG9TaG93KCkgY29uc3QgeyByZXR1cm4gbV93aGF0
VG9TaG93OyB9CiAgICAgTm9kZUZpbHRlciogZmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV9maWx0
ZXIuZ2V0KCk7IH0KICAgICBib29sIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQpAQCAtNDMsNyArNDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc2hvcnQgYWNj
ZXB0Tm9kZShOb2RlKikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPE5vZGU+IG1fcm9v
dDsKKyAgICBSZWY8Tm9kZT4gbV9yb290OwogICAgIHVuc2lnbmVkIG1fd2hhdFRvU2hvdzsKICAg
ICBSZWZQdHI8Tm9kZUZpbHRlcj4gbV9maWx0ZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVXYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIu
Y3BwCmluZGV4IGFiODZkNTkzYjI5MGE5ZTA3YTkzMzNlN2MyN2NhN2ZmMjdmZWZkNTQuLmEwYzA5
ZjllZWUxNTc0ZDdiZWIwMmJlMjY3NDM2Nzc2NzhjNTkyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdh
bGtlci5jcHAKQEAgLTM5LDMxICszOSwyNyBAQCBUcmVlV2Fsa2VyOjpUcmVlV2Fsa2VyKE5vZGUm
IHJvb3ROb2RlLCB1bnNpZ25lZCBsb25nIHdoYXRUb1Nob3csIFJlZlB0cjxOb2RlRmlsdAogewog
fQogCi12b2lkIFRyZWVXYWxrZXI6OnNldEN1cnJlbnROb2RlKE5vZGUqIG5vZGUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQordm9pZCBUcmVlV2Fsa2VyOjpzZXRDdXJyZW50Tm9kZShOb2RlJiBub2RlKQog
ewotICAgIGlmICghbm9kZSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQogICAgIG1fY3VycmVudCA9IG5vZGU7CiB9CiAKLWlubGluZSBO
b2RlKiBUcmVlV2Fsa2VyOjpzZXRDdXJyZW50KFJlZlB0cjxOb2RlPiYmIG5vZGUpCitpbmxpbmUg
Tm9kZSogVHJlZVdhbGtlcjo6c2V0Q3VycmVudChSZWY8Tm9kZT4mJiBub2RlKQogewotICAgIG1f
Y3VycmVudCA9IG5vZGU7Ci0gICAgcmV0dXJuIG1fY3VycmVudC5nZXQoKTsKKyAgICBtX2N1cnJl
bnQgPSBXVEZNb3ZlKG5vZGUpOworICAgIHJldHVybiBtX2N1cnJlbnQucHRyKCk7CiB9CiAKIE5v
ZGUqIFRyZWVXYWxrZXI6OnBhcmVudE5vZGUoKQogewotICAgIFJlZlB0cjxOb2RlPiBub2RlID0g
bV9jdXJyZW50OwotICAgIHdoaWxlIChub2RlICE9IHJvb3QoKSkgeworICAgIFJlZlB0cjxOb2Rl
PiBub2RlID0gbV9jdXJyZW50LnB0cigpOworICAgIHdoaWxlIChub2RlICE9ICZyb290KCkpIHsK
ICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKICAgICAgICAgaWYgKCFub2RlKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHNob3J0IGFjY2VwdE5vZGVSZXN1
bHQgPSBhY2NlcHROb2RlKG5vZGUuZ2V0KCkpOwogICAgICAgICBpZiAoYWNjZXB0Tm9kZVJlc3Vs
dCA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKQotICAgICAgICAgICAgcmV0dXJuIHNldEN1
cnJlbnQoV1RGTW92ZShub2RlKSk7CisgICAgICAgICAgICByZXR1cm4gc2V0Q3VycmVudChub2Rl
LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTc0
LDggKzcwLDggQEAgTm9kZSogVHJlZVdhbGtlcjo6Zmlyc3RDaGlsZCgpCiAgICAgICAgIHNob3J0
IGFjY2VwdE5vZGVSZXN1bHQgPSBhY2NlcHROb2RlKG5vZGUuZ2V0KCkpOwogICAgICAgICBzd2l0
Y2ggKGFjY2VwdE5vZGVSZXN1bHQpIHsKICAgICAgICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6RklM
VEVSX0FDQ0VQVDoKLSAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBub2RlLnJlbGVhc2UoKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gbV9jdXJyZW50LmdldCgpOworICAgICAgICAgICAgICAg
IG1fY3VycmVudCA9IG5vZGUucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gbV9jdXJyZW50LnB0cigpOwogICAgICAgICAgICAgY2FzZSBOb2RlRmlsdGVyOjpGSUxURVJf
U0tJUDoKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Zmlyc3RDaGlsZCgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIG5vZGUgPSBub2RlLT5maXJzdENoaWxkKCk7CkBAIC05MSw3ICs4Nyw3IEBA
IE5vZGUqIFRyZWVXYWxrZXI6OmZpcnN0Q2hpbGQoKQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbm9kZS0+
cGFyZW50Tm9kZSgpOwotICAgICAgICAgICAgaWYgKCFwYXJlbnQgfHwgcGFyZW50ID09IHJvb3Qo
KSB8fCBwYXJlbnQgPT0gbV9jdXJyZW50KQorICAgICAgICAgICAgaWYgKCFwYXJlbnQgfHwgcGFy
ZW50ID09ICZyb290KCkgfHwgcGFyZW50ID09IG1fY3VycmVudC5wdHIoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIG5vZGUgPSBwYXJlbnQ7CiAgICAgICAg
IH0gd2hpbGUgKG5vZGUpOwpAQCAtMTA1LDggKzEwMSw4IEBAIE5vZGUqIFRyZWVXYWxrZXI6Omxh
c3RDaGlsZCgpCiAgICAgICAgIHNob3J0IGFjY2VwdE5vZGVSZXN1bHQgPSBhY2NlcHROb2RlKG5v
ZGUuZ2V0KCkpOwogICAgICAgICBzd2l0Y2ggKGFjY2VwdE5vZGVSZXN1bHQpIHsKICAgICAgICAg
ICAgIGNhc2UgTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVDoKLSAgICAgICAgICAgICAgICBtX2N1
cnJlbnQgPSBub2RlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9jdXJyZW50
LmdldCgpOworICAgICAgICAgICAgICAgIG1fY3VycmVudCA9IG5vZGUucmVsZWFzZU5vbk51bGwo
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9jdXJyZW50LnB0cigpOwogICAgICAgICAgICAg
Y2FzZSBOb2RlRmlsdGVyOjpGSUxURVJfU0tJUDoKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+
bGFzdENoaWxkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmxhc3RDaGls
ZCgpOwpAQCAtMTIyLDcgKzExOCw3IEBAIE5vZGUqIFRyZWVXYWxrZXI6Omxhc3RDaGlsZCgpCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBDb250YWlu
ZXJOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7Ci0gICAgICAgICAgICBpZiAoIXBh
cmVudCB8fCBwYXJlbnQgPT0gcm9vdCgpIHx8IHBhcmVudCA9PSBtX2N1cnJlbnQpCisgICAgICAg
ICAgICBpZiAoIXBhcmVudCB8fCBwYXJlbnQgPT0gJnJvb3QoKSB8fCBwYXJlbnQgPT0gbV9jdXJy
ZW50LnB0cigpKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAg
bm9kZSA9IHBhcmVudDsKICAgICAgICAgfSB3aGlsZSAobm9kZSk7CkBAIC0xMzIsOCArMTI4LDgg
QEAgTm9kZSogVHJlZVdhbGtlcjo6bGFzdENoaWxkKCkKIAogdGVtcGxhdGU8VHJlZVdhbGtlcjo6
U2libGluZ1RyYXZlcnNhbFR5cGUgdHlwZT4gTm9kZSogVHJlZVdhbGtlcjo6dHJhdmVyc2VTaWJs
aW5ncygpCiB7Ci0gICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBtX2N1cnJlbnQ7Ci0gICAgaWYgKG5v
ZGUgPT0gcm9vdCgpKQorICAgIFJlZlB0cjxOb2RlPiBub2RlID0gbV9jdXJyZW50LnB0cigpOwor
ICAgIGlmIChub2RlID09ICZyb290KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
YXV0byBpc05leHQgPSB0eXBlID09IFNpYmxpbmdUcmF2ZXJzYWxUeXBlOjpOZXh0OwpAQCAtMTQx
LDggKzEzNyw4IEBAIHRlbXBsYXRlPFRyZWVXYWxrZXI6OlNpYmxpbmdUcmF2ZXJzYWxUeXBlIHR5
cGU+IE5vZGUqIFRyZWVXYWxrZXI6OnRyYXZlcnNlU2libGluCiAgICAgICAgIGZvciAoUmVmUHRy
PE5vZGU+IHNpYmxpbmcgPSBpc05leHQgPyBub2RlLT5uZXh0U2libGluZygpIDogbm9kZS0+cHJl
dmlvdXNTaWJsaW5nKCk7IHNpYmxpbmc7ICkgewogICAgICAgICAgICAgc2hvcnQgYWNjZXB0Tm9k
ZVJlc3VsdCA9IGFjY2VwdE5vZGUoc2libGluZy5nZXQoKSk7CiAgICAgICAgICAgICBpZiAoYWNj
ZXB0Tm9kZVJlc3VsdCA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKSB7Ci0gICAgICAgICAg
ICAgICAgbV9jdXJyZW50ID0gV1RGTW92ZShzaWJsaW5nKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gbV9jdXJyZW50LmdldCgpOworICAgICAgICAgICAgICAgIG1fY3VycmVudCA9IHNpYmxpbmcu
cmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9jdXJyZW50LnB0cigp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbm9kZSA9IHNpYmxpbmc7CiAgICAgICAgICAg
ICBzaWJsaW5nID0gaXNOZXh0ID8gc2libGluZy0+Zmlyc3RDaGlsZCgpIDogc2libGluZy0+bGFz
dENoaWxkKCk7CkBAIC0xNTAsNyArMTQ2LDcgQEAgdGVtcGxhdGU8VHJlZVdhbGtlcjo6U2libGlu
Z1RyYXZlcnNhbFR5cGUgdHlwZT4gTm9kZSogVHJlZVdhbGtlcjo6dHJhdmVyc2VTaWJsaW4KICAg
ICAgICAgICAgICAgICBzaWJsaW5nID0gaXNOZXh0ID8gbm9kZS0+bmV4dFNpYmxpbmcoKSA6IG5v
ZGUtPnByZXZpb3VzU2libGluZygpOwogICAgICAgICB9CiAgICAgICAgIG5vZGUgPSBub2RlLT5w
YXJlbnROb2RlKCk7Ci0gICAgICAgIGlmICghbm9kZSB8fCBub2RlID09IHJvb3QoKSkKKyAgICAg
ICAgaWYgKCFub2RlIHx8IG5vZGUgPT0gJnJvb3QoKSkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICBzaG9ydCBhY2NlcHROb2RlUmVzdWx0ID0gYWNjZXB0Tm9kZShub2RlLmdl
dCgpKTsKICAgICAgICAgaWYgKGFjY2VwdE5vZGVSZXN1bHQgPT0gTm9kZUZpbHRlcjo6RklMVEVS
X0FDQ0VQVCkKQEAgLTE3MCw4ICsxNjYsOCBAQCBOb2RlKiBUcmVlV2Fsa2VyOjpuZXh0U2libGlu
ZygpCiAKIE5vZGUqIFRyZWVXYWxrZXI6OnByZXZpb3VzTm9kZSgpCiB7Ci0gICAgUmVmUHRyPE5v
ZGU+IG5vZGUgPSBtX2N1cnJlbnQ7Ci0gICAgd2hpbGUgKG5vZGUgIT0gcm9vdCgpKSB7CisgICAg
UmVmUHRyPE5vZGU+IG5vZGUgPSBtX2N1cnJlbnQucHRyKCk7CisgICAgd2hpbGUgKG5vZGUgIT0g
JnJvb3QoKSkgewogICAgICAgICB3aGlsZSAoTm9kZSogcHJldmlvdXNTaWJsaW5nID0gbm9kZS0+
cHJldmlvdXNTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIG5vZGUgPSBwcmV2aW91c1NpYmxpbmc7
CiAgICAgICAgICAgICBzaG9ydCBhY2NlcHROb2RlUmVzdWx0ID0gYWNjZXB0Tm9kZShub2RlLmdl
dCgpKTsKQEAgLTE4NCwxMSArMTgwLDExIEBAIE5vZGUqIFRyZWVXYWxrZXI6OnByZXZpb3VzTm9k
ZSgpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKGFjY2VwdE5vZGVSZXN1bHQgPT0gTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVCkgewot
ICAgICAgICAgICAgICAgIG1fY3VycmVudCA9IG5vZGUucmVsZWFzZSgpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBtX2N1cnJlbnQuZ2V0KCk7CisgICAgICAgICAgICAgICAgbV9jdXJyZW50ID0g
bm9kZS5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgICAgIHJldHVybiBtX2N1cnJlbnQu
cHRyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUgPT0gcm9v
dCgpKQorICAgICAgICBpZiAobm9kZSA9PSAmcm9vdCgpKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE5vZGUo
KTsKICAgICAgICAgaWYgKCFwYXJlbnQpCkBAIC0xOTYsMjggKzE5MiwyOCBAQCBOb2RlKiBUcmVl
V2Fsa2VyOjpwcmV2aW91c05vZGUoKQogICAgICAgICBub2RlID0gcGFyZW50OwogICAgICAgICBz
aG9ydCBhY2NlcHROb2RlUmVzdWx0ID0gYWNjZXB0Tm9kZShub2RlLmdldCgpKTsKICAgICAgICAg
aWYgKGFjY2VwdE5vZGVSZXN1bHQgPT0gTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVCkKLSAgICAg
ICAgICAgIHJldHVybiBzZXRDdXJyZW50KFdURk1vdmUobm9kZSkpOworICAgICAgICAgICAgcmV0
dXJuIHNldEN1cnJlbnQobm9kZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKIE5vZGUqIFRyZWVXYWxrZXI6Om5leHROb2RlKCkKIHsKLSAgICBSZWZQ
dHI8Tm9kZT4gbm9kZSA9IG1fY3VycmVudDsKKyAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IG1fY3Vy
cmVudC5wdHIoKTsKIENoaWxkcmVuOgogICAgIHdoaWxlIChOb2RlKiBmaXJzdENoaWxkID0gbm9k
ZS0+Zmlyc3RDaGlsZCgpKSB7CiAgICAgICAgIG5vZGUgPSBmaXJzdENoaWxkOwogICAgICAgICBz
aG9ydCBhY2NlcHROb2RlUmVzdWx0ID0gYWNjZXB0Tm9kZShub2RlLmdldCgpKTsKICAgICAgICAg
aWYgKGFjY2VwdE5vZGVSZXN1bHQgPT0gTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVCkKLSAgICAg
ICAgICAgIHJldHVybiBzZXRDdXJyZW50KFdURk1vdmUobm9kZSkpOworICAgICAgICAgICAgcmV0
dXJuIHNldEN1cnJlbnQobm9kZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgaWYgKGFjY2Vw
dE5vZGVSZXN1bHQgPT0gTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVDVCkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICB3aGlsZSAoTm9kZSogbmV4dFNpYmxpbmcgPSBOb2RlVHJhdmVyc2Fs
OjpuZXh0U2tpcHBpbmdDaGlsZHJlbigqbm9kZSwgcm9vdCgpKSkgeworICAgIHdoaWxlIChOb2Rl
KiBuZXh0U2libGluZyA9IE5vZGVUcmF2ZXJzYWw6Om5leHRTa2lwcGluZ0NoaWxkcmVuKCpub2Rl
LCAmcm9vdCgpKSkgewogICAgICAgICBub2RlID0gbmV4dFNpYmxpbmc7CiAgICAgICAgIHNob3J0
IGFjY2VwdE5vZGVSZXN1bHQgPSBhY2NlcHROb2RlKG5vZGUuZ2V0KCkpOwogICAgICAgICBpZiAo
YWNjZXB0Tm9kZVJlc3VsdCA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKQotICAgICAgICAg
ICAgcmV0dXJuIHNldEN1cnJlbnQoV1RGTW92ZShub2RlKSk7CisgICAgICAgICAgICByZXR1cm4g
c2V0Q3VycmVudChub2RlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICBpZiAoYWNjZXB0Tm9k
ZVJlc3VsdCA9PSBOb2RlRmlsdGVyOjpGSUxURVJfU0tJUCkKICAgICAgICAgICAgIGdvdG8gQ2hp
bGRyZW47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmgKaW5kZXggMWI1YmUxYzE0MjM0MzNm
NmViYzZkOTE4MmIzZDYzMWVlZDIzNmNlOC4uNDU0MDA3NDhhNTE4MzkwNWE2NThjODc0YTE2ZWUw
MGU2MjllNGVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5oCkBAIC00MSw4ICs0MSwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmVl
V2Fsa2VyKHJvb3ROb2RlLCB3aGF0VG9TaG93LCBXVEZNb3ZlKGZpbHRlcikpKTsKICAgICAgICAg
fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIAotICAgICAgICBOb2RlKiBjdXJyZW50Tm9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudC5nZXQoKTsgfQotICAgICAgICB2b2lkIHNldEN1
cnJlbnROb2RlKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIE5vZGUmIGN1cnJlbnRO
b2RlKCkgeyByZXR1cm4gbV9jdXJyZW50LmdldCgpOyB9CisgICAgICAgIGNvbnN0IE5vZGUmIGN1
cnJlbnROb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50LmdldCgpOyB9CisKKyAgICAgICAg
dm9pZCBzZXRDdXJyZW50Tm9kZShOb2RlJik7CiAKICAgICAgICAgTm9kZSogcGFyZW50Tm9kZSgp
OwogICAgICAgICBOb2RlKiBmaXJzdENoaWxkKCk7CkBAIC01Nyw5ICs1OSw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgZW51bSBjbGFzcyBTaWJsaW5nVHJhdmVyc2FsVHlwZSB7IFBy
ZXZpb3VzLCBOZXh0IH07CiAgICAgICAgIHRlbXBsYXRlPFNpYmxpbmdUcmF2ZXJzYWxUeXBlPiBO
b2RlKiB0cmF2ZXJzZVNpYmxpbmdzKCk7CiAgICAgICAgIAotICAgICAgICBOb2RlKiBzZXRDdXJy
ZW50KFJlZlB0cjxOb2RlPiYmKTsKKyAgICAgICAgTm9kZSogc2V0Q3VycmVudChSZWY8Tm9kZT4m
Jik7CiAKLSAgICAgICAgUmVmUHRyPE5vZGU+IG1fY3VycmVudDsKKyAgICAgICAgUmVmPE5vZGU+
IG1fY3VycmVudDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVdhbGtlci5pZGwKaW5kZXggYWQ1Y2I1ZDY0MDMxMGY4YzAzODk2MWY1MTMyZDViZGRkMjM2
NmM3ZS4uYmU5Mjc3NmEzZDVkOGEyMTQ0MGRiZDNjNzBjYjE1MTU1MTYxZTE3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlV2Fsa2VyLmlkbApAQCAtMjksNyArMjksNyBAQAogI2lmIGRlZmluZWQoTEFOR1VB
R0VfT0JKRUNUSVZFX0MpICYmIExBTkdVQUdFX09CSkVDVElWRV9DCiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGJvb2xlYW4gZXhwYW5kRW50aXR5UmVmZXJlbmNlczsKICNlbmRpZgotICAgIFtTZXR0
ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBOb2RlIGN1cnJlbnROb2RlOworICAgIGF0dHJp
YnV0ZSBOb2RlIGN1cnJlbnROb2RlOwogCiAgICAgTm9kZSBwYXJlbnROb2RlKCk7CiAgICAgTm9k
ZSBmaXJzdENoaWxkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxl
bWVudC5pZGwKaW5kZXggODViZDQ3OGM5YTkyNDYxYTNhNmJlNDNlOTZlZDQwZjA1ZWMxNWUyNS4u
ZDY5YTE1NzgwYTM0YzNjNGUxODc2YTdkZWQwNjc3ZTNjMmQwYzhjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmlkbApAQCAtMjYsNSArMjYsNSBAQAog
WwogICAgIENvbmRpdGlvbmFsPUFUVEFDSE1FTlRfRUxFTUVOVAogXSBpbnRlcmZhY2UgSFRNTEF0
dGFjaG1lbnRFbGVtZW50IDogSFRNTEVsZW1lbnQgewotICAgIGF0dHJpYnV0ZSBGaWxlIGZpbGU7
CisgICAgYXR0cmlidXRlIEZpbGU/IGZpbGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5pZGwKaW5kZXggZTNkMGY5ZmMyNjA2NDkxYTdkMGZmMzk2ZWE2ODZlZmRhNjU0
Mzc3My4uNjIyNzRlYTdlODdlODU3NmM2MDJmY2U1ZWVmZjNkOWZkZGU2Y2RmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCkBAIC0zMiw3ICszMiw3IEBACiAgICAg
W1JlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgZGlyTmFtZTsKICAgICBbUmVmbGVjdF0gYXR0
cmlidXRlIGJvb2xlYW4gZGlzYWJsZWQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxGb3Jt
RWxlbWVudCBmb3JtOwotICAgIGF0dHJpYnV0ZSBGaWxlTGlzdCBmaWxlczsKKyAgICBhdHRyaWJ1
dGUgRmlsZUxpc3Q/IGZpbGVzOwogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgZm9ybUFjdGlvbjsK
IAogICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgbm90IHVzZSBbVHJlYXROdWxsQXM9TGVnYWN5
TnVsbFN0cmluZ10uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVs
ZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmlkbAppbmRl
eCBiYjM3YmNkYzkzZDdmNGYyYzFmZGM5MGYyZjAwMTY0YmRkYzUwNzUxLi5hOGU3OTJlN2EzNDg4
MDZjMWE3YjUwYWUxN2I2MDc3ZGNiMGYyMzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlRWxlbWVudC5pZGwKQEAgLTE5LDkgKzE5LDkgQEAKICAqLwogCiBpbnRlcmZhY2UgSFRNTFRh
YmxlRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKLSAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBT
dHJpY3RUeXBlQ2hlY2tpbmddIGF0dHJpYnV0ZSBIVE1MVGFibGVDYXB0aW9uRWxlbWVudCBjYXB0
aW9uOwotICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb24sIFN0cmljdFR5cGVDaGVja2luZ10gYXR0
cmlidXRlIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50IHRIZWFkOwotICAgIFtTZXR0ZXJSYWlzZXNF
eGNlcHRpb24sIFN0cmljdFR5cGVDaGVja2luZ10gYXR0cmlidXRlIEhUTUxUYWJsZVNlY3Rpb25F
bGVtZW50IHRGb290OworICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb24sIFN0cmljdFR5cGVDaGVj
a2luZ10gYXR0cmlidXRlIEhUTUxUYWJsZUNhcHRpb25FbGVtZW50PyBjYXB0aW9uOworICAgIFtT
ZXR0ZXJSYWlzZXNFeGNlcHRpb24sIFN0cmljdFR5cGVDaGVja2luZ10gYXR0cmlidXRlIEhUTUxU
YWJsZVNlY3Rpb25FbGVtZW50PyB0SGVhZDsKKyAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uLCBT
dHJpY3RUeXBlQ2hlY2tpbmddIGF0dHJpYnV0ZSBIVE1MVGFibGVTZWN0aW9uRWxlbWVudD8gdEZv
b3Q7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24gcm93czsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24gdEJvZGllczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0RhdGFDdWUuY3BwCmluZGV4IDM5YTc4YWRlZTkyZWE0NWJkZDU3ZWZjM2FmOTY0NGJj
YjgzNWQ1OTUuLjVkOWUwNGU4Yjc3ZTM4N2MzZjEzZDg4YmUzN2ZhYmYzMTJlZjZhMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9EYXRhQ3VlLmNwcApAQCAtMzYsMTEgKzM2LDExIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotRGF0YUN1ZTo6RGF0YUN1ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCwgQXJyYXlCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitEYXRhQ3VlOjpEYXRhQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNv
bnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBBcnJheUJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIDogVGV4dFRyYWNrQ3VlKGNvbnRleHQsIHN0
YXJ0LCBlbmQpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKLSAgICBzZXREYXRhKGRhdGEsIGVjKTsK
KyAgICBzZXREYXRhKGRhdGEpOwogfQogCiBEYXRhQ3VlOjpEYXRhQ3VlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGlt
ZSYgZW5kLCBjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCkBAIC04OCwxMyArODgs
OCBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IERhdGFDdWU6OmRhdGEoKSBjb25zdAogICAgIHJldHVy
biBBcnJheUJ1ZmZlcjo6Y3JlYXRlKCptX2RhdGEpOwogfQogCi12b2lkIERhdGFDdWU6OnNldERh
dGEoQXJyYXlCdWZmZXIqIGRhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBEYXRhQ3VlOjpz
ZXREYXRhKEFycmF5QnVmZmVyJiBkYXRhKQogewotICAgIGlmICghZGF0YSkgewotICAgICAgICBl
YyA9IFR5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogI2lmIEVOQUJMRShEQVRB
Q1VFX1ZBTFVFKQogICAgIG1fcGxhdGZvcm1WYWx1ZSA9IG51bGxwdHI7CiAgICAgaWYgKG1fdmFs
dWUpCkBAIC0xMDIsNyArOTcsNyBAQCB2b2lkIERhdGFDdWU6OnNldERhdGEoQXJyYXlCdWZmZXIq
IGRhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIG1fdmFsdWUgPSBKU0M6OkpTVmFsdWUoKTsK
ICNlbmRpZgogCi0gICAgbV9kYXRhID0gQXJyYXlCdWZmZXI6OmNyZWF0ZSgqZGF0YSk7CisgICAg
bV9kYXRhID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShkYXRhKTsKIH0KIAogRGF0YUN1ZSogdG9EYXRh
Q3VlKFRleHRUcmFja0N1ZSogY3VlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9EYXRhQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0RhdGFDdWUuaAppbmRl
eCBkNzFmYjgxMTcxOGI5MTQxNjk4MWI1NTllZGUzNTgyZGM0MzIwN2Y0Li42MjMyNzc0Zjc0YmM4
ZThmZjM3M2ZhOGZhNGY3MDY0OWZhNzMzM2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0RhdGFDdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0RhdGFD
dWUuaApAQCAtNDUsOSArNDUsOSBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBj
bGFzcyBEYXRhQ3VlIGZpbmFsIDogcHVibGljIFRleHRUcmFja0N1ZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxEYXRhQ3VlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIEFycmF5QnVm
ZmVyKiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKKyAgICBzdGF0aWMgUmVmPERhdGFDdWU+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0
YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgQXJyYXlCdWZmZXImIGRhdGEpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhQ3VlKGNvbnRleHQsIHN0YXJ0LCBlbmQsIGRh
dGEsIGVtcHR5U3RyaW5nKCksIGVjKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFDdWUoY29udGV4dCwgc3RhcnQsIGVuZCwgZGF0YSwgZW1wdHlTdHJpbmcoKSkpOwogICAgIH0K
IAogICAgIHN0YXRpYyBSZWY8RGF0YUN1ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBj
b25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCkBAIC01NSw5ICs1NSw5IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YUN1ZShjb250ZXh0LCBzdGFydCwg
ZW5kLCBkYXRhLCBsZW5ndGgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPERhdGFDdWU+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0
YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgQXJyYXlCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgc3RhdGljIFJlZjxEYXRhQ3VlPiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgTWVkaWFUaW1lJiBzdGFy
dCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIEFycmF5QnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IHR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhQ3VlKGNvbnRl
eHQsIHN0YXJ0LCBlbmQsIGRhdGEsIHR5cGUsIGVjKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFDdWUoY29udGV4dCwgc3RhcnQsIGVuZCwgZGF0YSwgdHlwZSkpOwogICAgIH0K
IAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAg
ICAgQ3VlVHlwZSBjdWVUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRGF0YTsgfQogCiAg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBkYXRhKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXREYXRhKEFy
cmF5QnVmZmVyKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0RGF0YShBcnJheUJ1ZmZl
ciYpOwogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCiAgICAgY29uc3QgU2VyaWFsaXplZFBs
YXRmb3JtUmVwcmVzZW50YXRpb24qIHBsYXRmb3JtVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Bs
YXRmb3JtVmFsdWUuZ2V0KCk7IH0KQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgIGJvb2wg
ZG9lc0V4dGVuZEN1ZShjb25zdCBUZXh0VHJhY2tDdWUmKSBjb25zdCBvdmVycmlkZTsKIAogcHJv
dGVjdGVkOgotICAgIERhdGFDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlh
VGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBBcnJheUJ1ZmZlciosIGNvbnN0IFN0
cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBEYXRhQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgQXJyYXlC
dWZmZXImLCBjb25zdCBTdHJpbmcmKTsKICAgICBEYXRhQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgY29uc3Qg
dm9pZCosIHVuc2lnbmVkKTsKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKICAgICBEYXRhQ3Vl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBN
ZWRpYVRpbWUmIGVuZCwgUmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYm
LCBjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
RGF0YUN1ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0RhdGFDdWUuaWRsCmluZGV4
IGZhNWUyNWVkNDdjNjYzZWU0MjU5YjE3MzJjMGU3Y2FmZWY0NGMwODQuLjU5MjM0ODlmY2Q1Zjhj
NjVlOWE1MjA3NGFkMzI5NGE3YTE3MzJmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svRGF0YUN1ZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9EYXRh
Q3VlLmlkbApAQCAtMzQsNyArMzQsNyBAQAogI2VuZGlmCiAgICAgQ29uc3RydWN0b3JSYWlzZXNF
eGNlcHRpb24sCiBdIGludGVyZmFjZSBEYXRhQ3VlIDogVGV4dFRyYWNrQ3VlIHsKLSAgICBbU2V0
dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgQXJyYXlCdWZmZXIgZGF0YTsKKyAgICBhdHRy
aWJ1dGUgQXJyYXlCdWZmZXIgZGF0YTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0RBVEFDVUVfVkFM
VUUpICYmIEVOQUJMRV9EQVRBQ1VFX1ZBTFVFCiAgICAgW0N1c3RvbUdldHRlciwgQ3VzdG9tU2V0
dGVyXSBhdHRyaWJ1dGUgYW55IHZhbHVlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>