<?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>43586</bug_id>
          
          <creation_ts>2010-08-05 16:13:35 -0700</creation_ts>
          <short_desc>Use the HTML5 TreeBuilder for Fragment Parsing</short_desc>
          <delta_ts>2010-08-09 14:52:24 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>260932</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-05 16:13:35 -0700</bug_when>
    <thetext>Use the HTML5 TreeBuilder for Fragment Parsing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260933</commentid>
    <comment_count>1</comment_count>
      <attachid>63656</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-05 16:13:56 -0700</bug_when>
    <thetext>Created attachment 63656
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261590</commentid>
    <comment_count>2</comment_count>
      <attachid>63788</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-06 17:31:17 -0700</bug_when>
    <thetext>Created attachment 63788
crashes due to DocumentParser use after free?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261824</commentid>
    <comment_count>3</comment_count>
      <attachid>63837</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-07 21:27:25 -0700</bug_when>
    <thetext>Created attachment 63837
works</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262181</commentid>
    <comment_count>4</comment_count>
      <attachid>63903</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-09 09:28:27 -0700</bug_when>
    <thetext>Created attachment 63903
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262187</commentid>
    <comment_count>5</comment_count>
      <attachid>63903</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-09 09:33:17 -0700</bug_when>
    <thetext>Comment on attachment 63903
Patch

&gt;      // FIXME: parse error
&gt; +    // fragment case handled by callers.
&gt;      mergeAttributesFromTokenIntoElement(token, m_openElements.bodyElement());

This is a confusing comment. Exactly what is handled by the callers? Is there some way to assert or check that?

It&apos;s also strange that the comment has a period but does not start with a capital letter.

&gt; +// This is a direct transcription of step 4 from:
&gt; +// http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#fragment-case
&gt; +HTMLTokenizer::State tokenizerStateForContextElement(Element* contextElement, bool reportErrors)
&gt; +{
&gt; +    if (!contextElement)
&gt; +        return HTMLTokenizer::DataState;
&gt; +
&gt; +    const QualifiedName&amp; contextTag = contextElement-&gt;tagQName();
&gt; +
&gt; +    if (contextTag.matches(titleTag) || contextTag.matches(textareaTag))
&gt; +        return HTMLTokenizer::RCDATAState;
&gt; +    if (contextTag.matches(styleTag)
&gt; +        || contextTag.matches(xmpTag)
&gt; +        || contextTag.matches(iframeTag)
&gt; +        || (contextTag.matches(noembedTag) &amp;&amp; HTMLTreeBuilder::pluginsEnabled(contextElement-&gt;document()-&gt;frame()))
&gt; +        || (contextTag.matches(noscriptTag) &amp;&amp; HTMLTreeBuilder::scriptEnabled(contextElement-&gt;document()-&gt;frame()))
&gt; +        || contextTag.matches(noframesTag))
&gt; +        return reportErrors ? HTMLTokenizer::RAWTEXTState : HTMLTokenizer::PLAINTEXTState;
&gt; +    if (contextTag.matches(scriptTag))
&gt; +        return reportErrors ? HTMLTokenizer::ScriptDataState : HTMLTokenizer::PLAINTEXTState;
&gt; +    if (contextTag.matches(plaintextTag))
&gt; +        return HTMLTokenizer::PLAINTEXTState;
&gt; +    return HTMLTokenizer::DataState;
&gt; +}

It is better to write this code out like this rather than using functions in the element classes?

Have to run, no time to read the rest of the patch right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262190</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-09 09:40:38 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 63903 [details])
&gt; &gt;      // FIXME: parse error
&gt; &gt; +    // fragment case handled by callers.
&gt; &gt;      mergeAttributesFromTokenIntoElement(token, m_openElements.bodyElement());
&gt; 
&gt; This is a confusing comment. Exactly what is handled by the callers? Is there some way to assert or check that?

Agreed.  Basically that function should be killed or renamed.  I should kill it or rename it.  It was a victim of our first effort to split the original HTMLTreeBuilder.cpp into multiple data structures.  That function ended up on the wrong side of the split IMO.

&gt; It&apos;s also strange that the comment has a period but does not start with a capital letter.

I&apos;m just going to remove the comment, it&apos;s not helpful.

&gt; It is better to write this code out like this rather than using functions in the element classes?

Interesting thought.  I think in this case, the if-cascade using tag names is better, since it more closely matches the spec.  But I agree with you, many times it&apos;s better to shove this stuff into the DOM implementations.

&gt; Have to run, no time to read the rest of the patch right now.

Thanks for the look!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262206</commentid>
    <comment_count>7</comment_count>
      <attachid>63903</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-09 10:16:32 -0700</bug_when>
    <thetext>Comment on attachment 63903
Patch

WebCore/html/HTMLTreeBuilder.cpp:824
 +  bool isFragmentCaseWithoutBody(const HTMLElementStack* elementStack)
This is wrong.  You probably want to cache this information.  Basically, you&apos;re not covering the case when there are more than three elements on the stack.

WebCore/html/HTMLTreeBuilder.cpp:2902
 +          m_document-&gt;finishedParsing();
I would use a return here instead of an else.  The else is uglies.

WebCore/html/HTMLTreeBuilder.cpp:2900
 +      // Warning, this may delete the parser, so don&apos;t try to do anything else after this.
Please move this comment closer to m_document-&gt;finishedParsing().

WebCore/html/HTMLTreeBuilder.cpp:2914
 +              RefPtr&lt;Node&gt; newChild = fragment-&gt;document()-&gt;adoptNode(child, ec);
This is dangerous.  We need a version of adoptNode that doesn&apos;t run JavaScript.  Also, you should grab references to all the children first and then move them to their new home.

WebCore/html/HTMLTreeBuilder.h:212
 +          RefPtr&lt;Document&gt; m_dummyDocumentForFragmentParse;
m_dummyDocumentForFragmentParse -&gt; m_dummyDocumentForFragmentParsing ?

WebCore/html/HTMLTreeBuilder.h:221
 +      FragmentParsingContext m_fragmentContext;
Insert blank line above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262262</commentid>
    <comment_count>8</comment_count>
      <attachid>63915</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-09 12:19:08 -0700</bug_when>
    <thetext>Created attachment 63915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262264</commentid>
    <comment_count>9</comment_count>
      <attachid>63915</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-09 12:26:55 -0700</bug_when>
    <thetext>Comment on attachment 63915
Patch

WebCore/html/HTMLElementStack.cpp:155
 +      return m_bodyElement;
!!m_bodyElement  ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262267</commentid>
    <comment_count>10</comment_count>
      <attachid>63916</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-09 12:40:24 -0700</bug_when>
    <thetext>Created attachment 63916
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262309</commentid>
    <comment_count>11</comment_count>
      <attachid>63916</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-09 13:59:36 -0700</bug_when>
    <thetext>Comment on attachment 63916
Patch for landing

Failed runner.html on the commit-bot, will need one more tweak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262331</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-09 14:52:24 -0700</bug_when>
    <thetext>Committed r65006: &lt;http://trac.webkit.org/changeset/65006&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63656</attachid>
            <date>2010-08-05 16:13:56 -0700</date>
            <delta_ts>2010-08-06 17:31:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43586-20100805161354.patch</filename>
            <type>text/plain</type>
            <size>26586</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NjlhZTg5MDE4OGUyMTlkYTk3ZDBkYzgzNDNkZTdlZDFiMmIxNWM3NS4uMTRiZjUyYzExMzM4ODVj
NzA1MjQ5M2JhMmQyNTdlMDcyNjAwZTczZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMC0wOC0wNSAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXNlIHRoZSBIVE1MNSBUcmVlQnVpbGRlciBmb3IgRnJhZ21l
bnQgUGFyc2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDM1ODYKKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIGRv
bS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRlcHJlY2F0ZWRDcmVh
dGVDb250ZXh0dWFsRnJhZ21lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAg
ICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRG
cm9tTWFya3VwKToKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTmFtZXM6OnRva2VuaXplclN0YXRlRm9yQ29udGV4dEVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJz
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50
RnJhZ21lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50UGFyc2VyLmg6CisgICAgICAg
ICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6
ZGVwcmVjYXRlZENyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRWxlbWVudDo6c2V0SW5uZXJIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50
OjpzZXRPdXRlckhUTUwpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxUb2tlbml6ZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUcmVlQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRlcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDb2xncm91cEVuZFRh
Z0ZvckluQ29sdW1uR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzU3RhcnRUYWdGb3JJblRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblRhYmxlQm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblJvdyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJbkNlbGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2FwdGlvbkVuZFRhZ0Zvcklu
Q2FwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUckVu
ZFRhZ0ZvckluUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c1RhYmxlRW5kVGFnRm9ySW5UYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NFbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzQ2hhcmFjdGVyQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0VuZE9mRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6
OmZpbmlzaGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUcmVlQnVpbGRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjppc1BhcnNpbmdGcmFnbWVudCk6CisKIDIwMTAtMDgt
MDUgIEZyYW7Dp29pcyBTYXVzc2V0ICA8c2F1c3NldEBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDJmYTc1Y2U3
NjY1ZGIwZDBiZWI0OWJjMzgxYmYyYWQzODc4MWIwNDkuLjQxN2Y0MjU4YmRkOTcyN2YzMzhjNmU1
NDFlZGQ3MTlkMmE1MWM1YTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC05MCw3ICs5MCw3IEBAIE5vZGVSYXJlRGF0
YSogRWxlbWVudDo6Y3JlYXRlUmFyZURhdGEoKQogICAgIHJldHVybiBuZXcgRWxlbWVudFJhcmVE
YXRhOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IEVsZW1lbnQ6OmNyZWF0ZUNv
bnRleHR1YWxGcmFnbWVudChjb25zdCBTdHJpbmcmIG1hcmt1cCwgRnJhZ21lbnRTY3JpcHRpbmdQ
ZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCitQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IEVsZW1lbnQ6OmRlcHJlY2F0ZWRDcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoY29uc3QgU3Ry
aW5nJiBtYXJrdXAsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNz
aW9uKQogewogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGRvY3VtZW50
KCktPmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
RWxlbWVudC5oIGIvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGE2NjgwOWFiNmQ2NDA5ZGEw
MDY0NmUxYmY4MGIxN2U3MDUxZWViYjAuLjY5NGRiOTg4YmI2ZWM2ZmE2MzM2MzFiMzZiMDNlYjFk
OTEyYjk1OTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIodG91Y2hjYW5jZWwpOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGNv
bnN0IFN0cmluZyYsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0
aW5nQWxsb3dlZCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGRl
cHJlY2F0ZWRDcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoY29uc3QgU3RyaW5nJiwgRnJhZ21lbnRT
Y3JpcHRpbmdQZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKIAogICAgIGJv
b2wgaGFzQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwCmluZGV4IDU2N2Y2NTFhMDNkNjVhMDAxMDI1YmYyMDZhZWYxNDUyY2JkYzQ2OTgu
LjQyMTZjYmM2MjU4Y2M1ZWY5MTZlYmMxODYwN2Y5ZGJiZTViM2FjNWYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
CkBAIC0xMDg3LDcgKzEwODcsNyBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiBy
YW5nZSwgVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBbm5vdGF0ZUZvckludGVyYwogCiBQYXNzUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWFya3VwLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEZy
YWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQogewotICAgIFJl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1l
bnQoKS0+Y3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KG1hcmt1cCwgc2NyaXB0aW5nUGVybWlzc2lv
bik7CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZG9jdW1lbnQtPmRv
Y3VtZW50RWxlbWVudCgpLT5kZXByZWNhdGVkQ3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KG1hcmt1
cCwgc2NyaXB0aW5nUGVybWlzc2lvbik7CiAKICAgICBpZiAoZnJhZ21lbnQgJiYgIWJhc2VVUkwu
aXNFbXB0eSgpICYmIGJhc2VVUkwgIT0gYmxhbmtVUkwoKSAmJiBiYXNlVVJMICE9IGRvY3VtZW50
LT5iYXNlVVJMKCkpCiAgICAgICAgIGNvbXBsZXRlVVJMcyhmcmFnbWVudC5nZXQoKSwgYmFzZVVS
TCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1dl
YkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDM1NGU3ZWQ1MmQ2OWI5MDNj
NzZlZmY0MTJlYjA4YmI0ZjFjMDVmZGQuLmE4NTFkNDkwZDNhNTM0Zjk2ODVmOTgwYjgxZTYzYmQ4
ZTg2ZmQyYmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhU
TUxQYXJzZXJTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJIVE1MVG9rZW5pemVyLmgiCiAjaW5jbHVk
ZSAiSFRNTFByZWxvYWRTY2FubmVyLmgiCkBAIC00NCw2ICs0NSw4IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKyAgICAKIG5hbWVzcGFjZSB7
CiAKIGNsYXNzIE5lc3RpbmdMZXZlbEluY3JlbWVudGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsK
QEAgLTYzLDYgKzY2LDM0IEBAIHByaXZhdGU6CiAgICAgaW50KiBtX2NvdW50ZXI7CiB9OwogCisv
LyBUaGlzIGlzIGEgZGlyZWN0IHRyYW5zY3JpcHRpb24gb2Ygc3RlcCA0IGZyb206CisvLyBodHRw
Oi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90
aGUtZW5kLmh0bWwjZnJhZ21lbnQtY2FzZQorSFRNTFRva2VuaXplcjo6U3RhdGUgdG9rZW5pemVy
U3RhdGVGb3JDb250ZXh0RWxlbWVudChFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgYm9vbCByZXBv
cnRFcnJvcnMpCit7CisgICAgaWYgKCFjb250ZXh0RWxlbWVudCkKKyAgICAgICAgcmV0dXJuIEhU
TUxUb2tlbml6ZXI6OkRhdGFTdGF0ZTsKKyAgICAKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBj
b250ZXh0VGFnID0gY29udGV4dEVsZW1lbnQtPnRhZ1FOYW1lKCk7CisgICAgCisgICAgaWYgKGNv
bnRleHRUYWcubWF0Y2hlcyh0aXRsZVRhZykgfHwgY29udGV4dFRhZy5tYXRjaGVzKHRleHRhcmVh
VGFnKSkKKyAgICAgICAgcmV0dXJuIEhUTUxUb2tlbml6ZXI6OlJDREFUQVN0YXRlOworICAgIGlm
IChjb250ZXh0VGFnLm1hdGNoZXMoc3R5bGVUYWcpCisgICAgICAgIHx8IGNvbnRleHRUYWcubWF0
Y2hlcyh4bXBUYWcpCisgICAgICAgIHx8IGNvbnRleHRUYWcubWF0Y2hlcyhpZnJhbWVUYWcpCisg
ICAgICAgIHx8IGNvbnRleHRUYWcubWF0Y2hlcyhub2VtYmVkVGFnKQorICAgICAgICB8fCBjb250
ZXh0VGFnLm1hdGNoZXMobm9mcmFtZXNUYWcpKQorICAgICAgICByZXR1cm4gcmVwb3J0RXJyb3Jz
ID8gSFRNTFRva2VuaXplcjo6UkFXVEVYVFN0YXRlIDogSFRNTFRva2VuaXplcjo6UExBSU5URVhU
U3RhdGU7CisgICAgaWYgKGNvbnRleHRUYWcubWF0Y2hlcyhzY3JpcHRUYWcpKQorICAgICAgICBy
ZXR1cm4gcmVwb3J0RXJyb3JzID8gSFRNTFRva2VuaXplcjo6U2NyaXB0RGF0YVN0YXRlIDogSFRN
TFRva2VuaXplcjo6UExBSU5URVhUU3RhdGU7CisgICAgaWYgKGNvbnRleHRUYWcubWF0Y2hlcyhu
b3NjcmlwdFRhZykKKyAgICAgICAgJiYgSFRNTFRyZWVCdWlsZGVyOjppc1NjcmlwdGluZ0ZsYWdF
bmFibGVkKGNvbnRleHRFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpKSkKKyAgICAgICAgcmV0
dXJuIHJlcG9ydEVycm9ycyA/IEhUTUxUb2tlbml6ZXI6OlJBV1RFWFRTdGF0ZSA6IEhUTUxUb2tl
bml6ZXI6OlBMQUlOVEVYVFN0YXRlOworICAgIGlmIChjb250ZXh0VGFnLm1hdGNoZXMocGxhaW50
ZXh0VGFnKSkKKyAgICAgICAgcmV0dXJuIEhUTUxUb2tlbml6ZXI6OlBMQUlOVEVYVFN0YXRlOwor
ICAgIHJldHVybiBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGU7Cit9CisKKwogfSAvLyBuYW1lc3Bh
Y2UKIAogSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50
KiBkb2N1bWVudCwgYm9vbCByZXBvcnRFcnJvcnMpCkBAIC03NCwxOSArMTA1LDE5IEBAIEhUTUxE
b2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVudCogZG9jdW1lbnQs
IGJvb2wgcmVwb3J0RXJyb3JzCiAgICAgLCBtX2VuZFdhc0RlbGF5ZWQoZmFsc2UpCiAgICAgLCBt
X3dyaXRlTmVzdGluZ0xldmVsKDApCiB7Ci0gICAgYmVnaW4oKTsKIH0KIAogLy8gRklYTUU6IE1l
bWJlciB2YXJpYWJsZXMgc2hvdWxkIGJlIGdyb3VwZWQgaW50byBzZWxmLWluaXRpYWxpemluZyBz
dHJ1Y3RzIHRvCiAvLyBtaW5pbWl6ZSBjb2RlIGR1cGxpY2F0aW9uIGJldHdlZW4gdGhlc2UgY29u
c3RydWN0b3JzLgotSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1l
bnRGcmFnbWVudCogZnJhZ21lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRp
bmdQZXJtaXNzaW9uKQorSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoRG9j
dW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVu
dFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKICAgICA6IFNjcmlwdGFi
bGVEb2N1bWVudFBhcnNlcihmcmFnbWVudC0+ZG9jdW1lbnQoKSkKICAgICAsIG1fdG9rZW5pemVy
KG5ldyBIVE1MVG9rZW5pemVyKQogICAgICwgbV90cmVlQnVpbGRlcihuZXcgSFRNTFRyZWVCdWls
ZGVyKG1fdG9rZW5pemVyLmdldCgpLCBmcmFnbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbikpCiAg
ICAgLCBtX2VuZFdhc0RlbGF5ZWQoZmFsc2UpCiAgICAgLCBtX3dyaXRlTmVzdGluZ0xldmVsKDAp
CiB7Ci0gICAgYmVnaW4oKTsKKyAgICBib29sIHJlcG9ydEVycm9ycyA9IGZhbHNlOyAvLyBGb3Ig
bm93IGRvY3VtZW50IGZyYWdtZW50IHBhcnNpbmcgbmV2ZXIgcmVwb3J0cyBlcnJvcnMuCisgICAg
bV90b2tlbml6ZXItPnNldFN0YXRlKHRva2VuaXplclN0YXRlRm9yQ29udGV4dEVsZW1lbnQoY29u
dGV4dEVsZW1lbnQsIHJlcG9ydEVycm9ycykpOwogfQogCiBIVE1MRG9jdW1lbnRQYXJzZXI6On5I
VE1MRG9jdW1lbnRQYXJzZXIoKQpAQCAtOTcsMTEgKzEyOCw2IEBAIEhUTUxEb2N1bWVudFBhcnNl
cjo6fkhUTUxEb2N1bWVudFBhcnNlcigpCiAgICAgLy8gdGhlbiB3ZSBjb3VsZCBBU1NFUlQgc29t
ZSBpbnZhcmlhbnRzIGhlcmUuCiB9CiAKLXZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpiZWdpbigp
Ci17Ci0gICAgLy8gRklYTUU6IFNob3VsZCB3ZSByZXNldCB0aGUgdG9rZW5pemVyPwotfQotCiB2
b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6c3RvcFBhcnNpbmcoKQogewogICAgIERvY3VtZW50UGFy
c2VyOjpzdG9wUGFyc2luZygpOwpAQCAtNDEzLDkgKzQzOSw5IEBAIFNjcmlwdENvbnRyb2xsZXIq
IEhUTUxEb2N1bWVudFBhcnNlcjo6c2NyaXB0KCkgY29uc3QKICAgICByZXR1cm4gbV9kb2N1bWVu
dC0+ZnJhbWUoKSA/IG1fZG9jdW1lbnQtPmZyYW1lKCktPnNjcmlwdCgpIDogMDsKIH0KIAotdm9p
ZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudChjb25zdCBTdHJpbmcm
IHNvdXJjZSwgRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVy
bWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQordm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnBh
cnNlRG9jdW1lbnRGcmFnbWVudChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRG9jdW1lbnRGcmFnbWVu
dCogZnJhZ21lbnQsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Bl
cm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKIHsKLSAgICBIVE1MRG9jdW1lbnRQYXJzZXIg
cGFyc2VyKGZyYWdtZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uKTsKKyAgICBIVE1MRG9jdW1lbnRQ
YXJzZXIgcGFyc2VyKGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgc2NyaXB0aW5nUGVybWlzc2lv
bik7IC8vIEZJWE1FCiAgICAgcGFyc2VyLmluc2VydChzb3VyY2UpOyAvLyBVc2UgaW5zZXJ0KCkg
c28gdGhhdCB0aGUgcGFyc2VyIHdpbGwgbm90IHlpZWxkLgogICAgIHBhcnNlci5maW5pc2goKTsK
ICAgICBBU1NFUlQoIXBhcnNlci5wcm9jZXNzaW5nRGF0YSgpKTsgLy8gTWFrZSBzdXJlIHdlJ3Jl
IGRvbmUuIDxyZGFyOi8vcHJvYmxlbS8zOTYzMTUxPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0hUTUxEb2N1bWVudFBhcnNlci5oIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5o
CmluZGV4IGNjNDZkMzEzZjI1MmYyZjlhNWEzYWFiYmQzMjRmYjcxMTc1OGRmMjkuLmQwNTU4NjE0
ZjA1YWFiMTkyYzg3YWJmN2Y4N2MyZWE4MzQxYmRhODcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFy
c2VyLmgKQEAgLTU0LDEzICs1NCwxMyBAQCBjbGFzcyBIVE1MRG9jdW1lbnRQYXJzZXIgOiAgcHVi
bGljIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciwgSFRNTFNjcmlwdFJ1bm5lckhvcwogcHVibGlj
OgogICAgIC8vIEZJWE1FOiBUaGVzZSBjb25zdHJ1Y3RvcnMgc2hvdWxkIGJlIG1hZGUgcHJpdmF0
ZSBhbmQgcmVwbGFjZWQgYnkgY3JlYXRlKCkgbWV0aG9kcy4KICAgICBIVE1MRG9jdW1lbnRQYXJz
ZXIoSFRNTERvY3VtZW50KiwgYm9vbCByZXBvcnRFcnJvcnMpOwotICAgIEhUTUxEb2N1bWVudFBh
cnNlcihEb2N1bWVudEZyYWdtZW50KiwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKKyAg
ICBIVE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCosIEVsZW1lbnQqIGNvbnRleHRF
bGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24pOwogICAgIHZpcnR1YWwgfkhUTUxE
b2N1bWVudFBhcnNlcigpOwogCiAgICAgLy8gRXhwb3NlZCBmb3IgSFRNTFBhcnNlclNjaGVkdWxl
cgogICAgIHZvaWQgcmVzdW1lUGFyc2luZ0FmdGVyWWllbGQoKTsKIAotICAgIHN0YXRpYyB2b2lk
IHBhcnNlRG9jdW1lbnRGcmFnbWVudChjb25zdCBTdHJpbmcmLCBEb2N1bWVudEZyYWdtZW50Kiwg
RnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsK
KyAgICBzdGF0aWMgdm9pZCBwYXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiwgRG9j
dW1lbnRGcmFnbWVudCosIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGlu
Z1Blcm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGluZ0FsbG93ZWQpOwogCiBwcml2YXRlOgogICAg
IC8vIERvY3VtZW50UGFyc2VyCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwIGIvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCBmYjFiY2MyMjBjZTU4N2E5
NTkyN2Q0NGYwY2QyYjcyODU1NzNlNDBkLi42YzdmNzUzZDdmMzE5ZTBiMzAxMzg4ZmM2NThmMzZk
YjcxNTRiODRkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTI3NSw3ICsyNzUsOCBAQCBTdHJpbmcg
SFRNTEVsZW1lbnQ6Om91dGVySFRNTCgpIGNvbnN0CiAgICAgcmV0dXJuIGNyZWF0ZU1hcmt1cCh0
aGlzKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBIVE1MRWxlbWVudDo6Y3Jl
YXRlQ29udGV4dHVhbEZyYWdtZW50KGNvbnN0IFN0cmluZyYgbWFya3VwLCBGcmFnbWVudFNjcmlw
dGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKKy8vIEZJWE1FOiBUaGlzIG1ldGhv
ZCBpcyB1bmVjZXNzYXJ5IHdpdGggdGhlIG5ldyBIVE1MRG9jdW1lbnRQYXJzZXIuCitQYXNzUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IEhUTUxFbGVtZW50OjpkZXByZWNhdGVkQ3JlYXRlQ29udGV4
dHVhbEZyYWdtZW50KGNvbnN0IFN0cmluZyYgbWFya3VwLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1p
c3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKIHsKICAgICAvLyBUaGUgZm9sbG93aW5nIGlzIGlu
IGFjY29yZGFuY2Ugd2l0aCB0aGUgZGVmaW5pdGlvbiBhcyB1c2VkIGJ5IElFLgogICAgIGlmIChl
bmRUYWdSZXF1aXJlbWVudCgpID09IFRhZ1N0YXR1c0ZvcmJpZGRlbikKQEAgLTM0MCw2ICszNDEs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlQ2hpbGRyZW5XaXRoVGV4dChIVE1MRWxlbWVudCogZWxl
bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBFeAogCiB2b2lkIEhUTUxFbGVtZW50OjpzZXRJbm5l
ckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICAvLyBG
SVhNRTogVGhpcyBjb2RlIGNhbiBiZSByZW1vdmVkLCBpdCdzIGhhbmRsZWQgYnkgdGhlIEhUTUxE
b2N1bWVudFBhcnNlciBjb3JyZWN0bHkuCiAgICAgaWYgKGhhc0xvY2FsTmFtZShzY3JpcHRUYWcp
IHx8IGhhc0xvY2FsTmFtZShzdHlsZVRhZykpIHsKICAgICAgICAgLy8gU2NyaXB0IGFuZCBDU1Mg
c291cmNlIHNob3VsZG4ndCBiZSBwYXJzZWQgYXMgSFRNTC4KICAgICAgICAgcmVtb3ZlQ2hpbGRy
ZW4oKTsKQEAgLTM0Nyw3ICszNDksNyBAQCB2b2lkIEhUTUxFbGVtZW50OjpzZXRJbm5lckhUTUwo
Y29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUNv
bnRleHR1YWxGcmFnbWVudChodG1sKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJh
Z21lbnQgPSBkZXByZWNhdGVkQ3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGh0bWwpOwogICAgIGlm
ICghZnJhZ21lbnQpIHsKICAgICAgICAgZWMgPSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7
CiAgICAgICAgIHJldHVybjsKQEAgLTM2NSw3ICszNjcsNyBAQCB2b2lkIEhUTUxFbGVtZW50Ojpz
ZXRPdXRlckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB9
CiAKICAgICBIVE1MRWxlbWVudCogcGFyZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihw
KTsKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBwYXJlbnQtPmNyZWF0
ZUNvbnRleHR1YWxGcmFnbWVudChodG1sKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
ZnJhZ21lbnQgPSBwYXJlbnQtPmRlcHJlY2F0ZWRDcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoaHRt
bCk7CiAgICAgaWYgKCFmcmFnbWVudCkgewogICAgICAgICBlYyA9IE5PX01PRElGSUNBVElPTl9B
TExPV0VEX0VSUjsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCAwMzQ0OWM5ODVh
ZTA0Mjc1NTUxZDc4MWRkMjBmZGRjNjQ5YWVjMTcyLi45MWEyMWM1Mjk5YjcyYjM0NTQ2ZWQ0NGFk
NTY2OTNiZDFhNTk4MGI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAor
KysgYi9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6
CiAKICAgICBTdHJpbmcgaW5uZXJIVE1MKCkgY29uc3Q7CiAgICAgU3RyaW5nIG91dGVySFRNTCgp
IGNvbnN0OwotICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlQ29udGV4dHVh
bEZyYWdtZW50KGNvbnN0IFN0cmluZyYsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiA9IEZy
YWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7CisgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBkZXByZWNhdGVkQ3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGNvbnN0IFN0cmluZyYsIEZyYWdt
ZW50U2NyaXB0aW5nUGVybWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7CiAgICAg
dm9pZCBzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZv
aWQgc2V0T3V0ZXJIVE1MKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lk
IHNldElubmVyVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5oIGIvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6
ZXIuaAppbmRleCA3ZWU5ZDQxNzQzOTY3OGQ1ODA3MjA2MzMxNTI2YjkxNjY0NmNkOWQwLi4xYmE0
ODRiMWVmNjk2NTNlNjY2MDE5ZGUyZmQwNWEwZjI3ZGFmMGRjIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2h0bWwvSFRNTFRva2VuaXplci5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmgK
QEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBFbGVtZW50
OwogY2xhc3MgSFRNTFRva2VuOwogCiBjbGFzcyBIVE1MVG9rZW5pemVyIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIv
V2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggMGUwZDIyMDg5NTZiZjM1MmI0
N2QxMDA1YjI3NTBlZDBiN2EzOWE5My4uOTk1YmRkNzY3MWE2ZmRiZDk3YjZhZDE3ZjgwMWVlOTg4
MmViY2JjZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAKKysr
IGIvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTM0Nyw3ICszNDcsNyBAQCBI
VE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRlcihIVE1MVG9rZW5pemVyKiB0b2tlbml6ZXIs
IEhUTUxEb2N1bWVudCogZG9jdW1lbgogICAgICwgbV9sYXN0U2NyaXB0RWxlbWVudFN0YXJ0TGlu
ZSh1bmluaXRpYWxpemVkTGluZU51bWJlclZhbHVlKQogICAgICwgbV9zY3JpcHRUb1Byb2Nlc3NT
dGFydExpbmUodW5pbml0aWFsaXplZExpbmVOdW1iZXJWYWx1ZSkKICAgICAsIG1fZnJhZ21lbnRT
Y3JpcHRpbmdQZXJtaXNzaW9uKEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCkKLSAgICAsIG1faXNQ
YXJzaW5nRnJhZ21lbnQoZmFsc2UpCisgICAgLCBpc1BhcnNpbmdGcmFnbWVudCgpKGZhbHNlKQog
ewogfQogCkBAIC0zNjcsOCArMzY3LDIxIEBAIEhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWls
ZGVyKEhUTUxUb2tlbml6ZXIqIHRva2VuaXplciwgRG9jdW1lbnRGcmFnbWVudCogZnJhCiAgICAg
LCBtX2xhc3RTY3JpcHRFbGVtZW50U3RhcnRMaW5lKHVuaW5pdGlhbGl6ZWRMaW5lTnVtYmVyVmFs
dWUpCiAgICAgLCBtX3NjcmlwdFRvUHJvY2Vzc1N0YXJ0TGluZSh1bmluaXRpYWxpemVkTGluZU51
bWJlclZhbHVlKQogICAgICwgbV9mcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24oc2NyaXB0aW5n
UGVybWlzc2lvbikKLSAgICAsIG1faXNQYXJzaW5nRnJhZ21lbnQodHJ1ZSkKKyAgICAsIGlzUGFy
c2luZ0ZyYWdtZW50KCkodHJ1ZSkKIHsKKworICAgIFJlZlB0cjxIVE1MRG9jdW1lbnQ+IGR1bW15
RG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOworICAgIGlmIChjb250
ZXh0RWxlbWVudCkKKyAgICAgICAgZHVtbXlEb2N1bWVudC0+c2V0UGFyc2VNb2RlKGNvbnRleHRF
bGVtZW50LT5kb2N1bWVudCgpLT5wYXJzZU1vZGUoKSk7CisgICAgCisgICAgQ29udGFpbmVyTm9k
ZSogcm9vdCA9IGNvbnRleHRFbGVtZW50ID8gZHVtbXlEb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50
KCkgOiBkdW1teURvY3VtZW50LmdldCgpOworICAgIE5vZGUqIG5leHRDaGlsZCA9IHJvb3QtPmZp
cnN0Q2hpbGQoKTsKKyAgICB3aGlsZSAobmV4dENoaWxkKSB7CisgICAgICAgIE5vZGUqIGNoaWxk
ID0gbmV4dENoaWxkOworICAgICAgICBuZXh0Q2hpbGQgPSBuZXh0Q2hpbGQtPm5leHRTaWJsaW5n
KCk7CisgICAgICAgIFJlZlB0cjxOb2RlPiBuZXdDaGlsZCA9IGRvY3VtZW50LT5hZG9wdE5vZGUo
Y2hpbGQpOworICAgICAgICBmcmFnbWVudC0+cGFyc2VyQWRkQ2hpbGQobmV3Q2hpbGQucmVsZWFz
ZSgpKTsKKyAgICB9CiB9CiAKIEhUTUxUcmVlQnVpbGRlcjo6fkhUTUxUcmVlQnVpbGRlcigpCkBA
IC0xMDY4LDcgKzEwODEsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFn
Rm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiBib29sIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0NvbGdyb3VwRW5kVGFnRm9ySW5Db2x1bW5Hcm91cCgpCiB7CiAgICAgaWYgKG1fdHJl
ZS5jdXJyZW50RWxlbWVudCgpID09IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aHRtbEVsZW1lbnQo
KSkgewotICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgIEFTU0VS
VChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgLy8gRklYTUU6IHBhcnNlIGVycm9yCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xMTI5LDcgKzExNDIsNyBAQCB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5UYWJsZShBdG9taWNIVE1MVG9rZW4m
IHRva2VuKQogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gdGFibGVUYWcpIHsKICAgICAgICAgcGFy
c2VFcnJvcih0b2tlbik7CiAgICAgICAgIGlmICghcHJvY2Vzc1RhYmxlRW5kVGFnRm9ySW5UYWJs
ZSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAg
ICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgcHJvY2Vzc1N0YXJ0VGFnKHRva2VuKTsKQEAgLTEyNzgsNyArMTI5
MSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRv
a2VuJiB0b2tlbikKICAgICAgICAgICAgIHx8IHRva2VuLm5hbWUoKSA9PSB0clRhZykgewogICAg
ICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAgICAgICBpZiAoIXByb2Nlc3NDYXB0
aW9uRW5kVGFnRm9ySW5DYXB0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9pc1Bh
cnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50
KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHByb2Nlc3NTdGFydFRhZyh0b2tlbik7CkBAIC0xMjk3LDcgKzEzMTAsNyBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFwcm9jZXNzQ29sZ3JvdXBF
bmRUYWdGb3JJbkNvbHVtbkdyb3VwKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lzUGFyc2lu
Z0ZyYWdtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBwcm9jZXNzU3RhcnRUYWcodG9r
ZW4pOwpAQCAtMTMyMCw3ICsxMzMzLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NT
dGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBpZiAoaXNDYXB0aW9uQ29s
T3JDb2xncm91cFRhZyh0b2tlbi5uYW1lKCkpIHx8IGlzVGFibGVCb2R5Q29udGV4dFRhZyh0b2tl
bi5uYW1lKCkpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBzbG93LgogICAgICAg
ICAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0Ym9keVRhZy5s
b2NhbE5hbWUoKSkgJiYgIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJsZVNjb3BlKHRoZWFk
VGFnLmxvY2FsTmFtZSgpKSAmJiAhbV90cmVlLm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2NvcGUo
dGZvb3RUYWcubG9jYWxOYW1lKCkpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG1faXNQYXJz
aW5nRnJhZ21lbnQpOworICAgICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgp
KTsKICAgICAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0xMzQ1LDcgKzEzNTgsNyBAQCB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAg
ICAgICB8fCBpc0NhcHRpb25Db2xPckNvbGdyb3VwVGFnKHRva2VuLm5hbWUoKSkKICAgICAgICAg
ICAgIHx8IGlzVGFibGVCb2R5Q29udGV4dFRhZyh0b2tlbi5uYW1lKCkpKSB7CiAgICAgICAgICAg
ICBpZiAoIXByb2Nlc3NUckVuZFRhZ0ZvckluUm93KCkpIHsKLSAgICAgICAgICAgICAgICBBU1NF
UlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2lu
Z0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5UYWJsZUJvZHlNb2RlKTsKQEAg
LTEzNjIsNyArMTM3NSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWco
QXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIHx8IGlzVGFibGVCb2R5Q29udGV4
dFRhZyh0b2tlbi5uYW1lKCkpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBi
ZSBtb3JlIGVmZmljaWVudC4KICAgICAgICAgICAgIGlmICghbV90cmVlLm9wZW5FbGVtZW50cygp
LT5pblRhYmxlU2NvcGUodGRUYWcpICYmICFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVT
Y29wZSh0aFRhZykpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVu
dCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAg
ICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KQEAgLTE3NjYsNyArMTc3OSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpz
ZXRJbnNlcnRpb25Nb2RlQW5kRW5kKEluc2VydGlvbk1vZGUgbmV3SW5zZXJ0aW9uTW9kZSwgYm9v
CiAgICAgfQogfQogCi12b2lkIEhUTUxUcmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBw
cm9wcmlhdGVseSgpCit2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBw
cm9wcmlhdGVseShFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKIHsKICAgICAvLyBodHRwOi8vd3d3
LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9wYXJzaW5n
Lmh0bWwjcmVzZXQtdGhlLWluc2VydGlvbi1tb2RlLWFwcHJvcHJpYXRlbHkKICAgICBib29sIGxh
c3QgPSBmYWxzZTsKQEAgLTE3NzUsMTIgKzE3ODgsMTIgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKQogICAgIHdoaWxlICgxKSB7CiAgICAg
ICAgIEVsZW1lbnQqIG5vZGUgPSBub2RlUmVjb3JkLT5lbGVtZW50KCk7CiAgICAgICAgIGlmIChu
b2RlID09IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+Ym90dG9tKCkpIHsKLSAgICAgICAgICAgIEFT
U0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdG
cmFnbWVudCgpKTsKICAgICAgICAgICAgIGxhc3QgPSB0cnVlOwotICAgICAgICAgICAgbm90SW1w
bGVtZW50ZWQoKTsgLy8gbm9kZSA9IG1fY29udGV4dEVsZW1lbnQ7CisgICAgICAgICAgICBub2Rl
ID0gY29udGV4dEVsZW1lbnQ7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05h
bWUoc2VsZWN0VGFnKSkgewotICAgICAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQp
OworICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAg
cmV0dXJuIHNldEluc2VydGlvbk1vZGVBbmRFbmQoSW5TZWxlY3RNb2RlLCBmb3JlaWduKTsKICAg
ICAgICAgfQogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0ZFRhZykgfHwgbm9kZS0+aGFz
VGFnTmFtZSh0aFRhZykpCkBAIC0xNzkyLDMwICsxODA1LDMwIEBAIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpyZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KCkKICAgICAgICAgaWYgKG5vZGUt
Pmhhc1RhZ05hbWUoY2FwdGlvblRhZykpCiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9u
TW9kZUFuZEVuZChJbkNhcHRpb25Nb2RlLCBmb3JlaWduKTsKICAgICAgICAgaWYgKG5vZGUtPmhh
c1RhZ05hbWUoY29sZ3JvdXBUYWcpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdG
cmFnbWVudCk7CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZUFuZEVuZChJbkNvbHVtbkdyb3VwTW9kZSwg
Zm9yZWlnbik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUodGFibGVU
YWcpKQogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGVBbmRFbmQoSW5UYWJsZU1v
ZGUsIGZvcmVpZ24pOwogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShoZWFkVGFnKSkgewot
ICAgICAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAgICAgICAgICAgQVNT
RVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlv
bk1vZGVBbmRFbmQoSW5Cb2R5TW9kZSwgZm9yZWlnbik7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KG5vZGUtPmhhc1RhZ05hbWUoYm9keVRhZykpCiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0
aW9uTW9kZUFuZEVuZChJbkJvZHlNb2RlLCBmb3JlaWduKTsKICAgICAgICAgaWYgKG5vZGUtPmhh
c1RhZ05hbWUoZnJhbWVzZXRUYWcpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdG
cmFnbWVudCk7CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZUFuZEVuZChJbkZyYW1lc2V0TW9kZSwgZm9y
ZWlnbik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoaHRtbFRhZykp
IHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAg
IEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNl
cnRpb25Nb2RlQW5kRW5kKEJlZm9yZUhlYWRNb2RlLCBmb3JlaWduKTsKICAgICAgICAgfQogICAg
ICAgICBpZiAobm9kZS0+bmFtZXNwYWNlVVJJKCkgPT0gU1ZHTmFtZXM6OnN2Z05hbWVzcGFjZVVS
SQogICAgICAgICAgICAgfHwgbm9kZS0+bmFtZXNwYWNlVVJJKCkgPT0gTWF0aE1MTmFtZXM6Om1h
dGhtbE5hbWVzcGFjZVVSSSkKICAgICAgICAgICAgIGZvcmVpZ24gPSB0cnVlOwogICAgICAgICBp
ZiAobGFzdCkgewotICAgICAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAg
ICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJu
IHNldEluc2VydGlvbk1vZGVBbmRFbmQoSW5Cb2R5TW9kZSwgZm9yZWlnbik7CiAgICAgICAgIH0K
ICAgICAgICAgbm9kZVJlY29yZCA9IG5vZGVSZWNvcmQtPm5leHQoKTsKQEAgLTE4MzgsNyArMTg1
MSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5UYWJsZUJvZHko
QXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICBpZiAodG9rZW4ubmFtZSgpID09IHRhYmxlVGFn
KSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHNsb3cuCiAgICAgICAgIGlmICghbV90cmVl
Lm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2NvcGUodGJvZHlUYWcubG9jYWxOYW1lKCkpICYmICFt
X3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0aGVhZFRhZy5sb2NhbE5hbWUoKSkg
JiYgIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJsZVNjb3BlKHRmb290VGFnLmxvY2FsTmFt
ZSgpKSkgewotICAgICAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAgICAg
ICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcGFyc2VFcnJv
cih0b2tlbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE4NjgsNyArMTg4
MSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5Sb3coQXRvbWlj
SFRNTFRva2VuJiB0b2tlbikKICAgICB9CiAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSB0YWJsZVRh
ZykgewogICAgICAgICBpZiAoIXByb2Nlc3NUckVuZFRhZ0ZvckluUm93KCkpIHsKLSAgICAgICAg
ICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpc1Bh
cnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluVGFibGVCb2R5TW9kZSk7CkBAIC0xOTIyLDcg
KzE5MzUsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluQ2VsbChB
dG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICB8fCB0b2tlbi5uYW1lKCkgPT0gdHJUYWcK
ICAgICAgICAgfHwgaXNUYWJsZUJvZHlDb250ZXh0VGFnKHRva2VuLm5hbWUoKSkpIHsKICAgICAg
ICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0b2tlbi5uYW1lKCkp
KSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAg
ICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogSXQg
aXMgdW5jbGVhciB3aGF0IHRoZSBleGFjdCBBU1NFUlQgc2hvdWxkIGJlLgogICAgICAgICAgICAg
Ly8gaHR0cDovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTEwMDk4CiAg
ICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKQEAgLTIwNzQsNyArMjA4Nyw3IEBAIHZvaWQg
SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYg
dG9rZW4pCiBib29sIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NhcHRpb25FbmRUYWdGb3JJbkNh
cHRpb24oKQogewogICAgIGlmICghbV90cmVlLm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2NvcGUo
Y2FwdGlvblRhZy5sb2NhbE5hbWUoKSkpIHsKLSAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJh
Z21lbnQpOworICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgIC8v
IEZJWE1FOiBwYXJzZSBlcnJvcgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjA4
OSw3ICsyMTAyLDcgQEAgYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDYXB0aW9uRW5kVGFn
Rm9ySW5DYXB0aW9uKCkKIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVHJFbmRUYWdGb3JJ
blJvdygpCiB7CiAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0
clRhZy5sb2NhbE5hbWUoKSkpIHsKLSAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQp
OworICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgIC8vIEZJWE1F
OiBwYXJzZSBlcnJvcgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjEwMyw3ICsy
MTE2LDcgQEAgYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUckVuZFRhZ0ZvckluUm93KCkK
IGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVGFibGVFbmRUYWdGb3JJblRhYmxlKCkKIHsK
ICAgICBpZiAoIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJsZVNjb3BlKHRhYmxlVGFnKSkg
ewotICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgIEFTU0VSVChp
c1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgLy8gRklYTUU6IHBhcnNlIGVycm9yLgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjE5NSw3ICsyMjA4LDcgQEAgdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAg
ICAgaWYgKHRva2VuLm5hbWUoKSA9PSB0YWJsZVRhZykgewogICAgICAgICAgICAgcGFyc2VFcnJv
cih0b2tlbik7CiAgICAgICAgICAgICBpZiAoIXByb2Nlc3NDYXB0aW9uRW5kVGFnRm9ySW5DYXB0
aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcodG9r
ZW4pOwpAQCAtMjIyNCw3ICsyMjM3LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NF
bmRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBpZiAoIXByb2Nlc3NDb2xncm91cEVuZFRhZ0ZvckluQ29sdW1uR3JvdXAo
KSkgewotICAgICAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAgICAgICAg
ICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIHByb2Nlc3NFbmRUYWcodG9rZW4pOwpAQCAtMjI0NCw3ICsyMjU3LDcg
QEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2VuJiB0
b2tlbikKICAgICBjYXNlIEFmdGVyQm9keU1vZGU6CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25N
b2RlKCkgPT0gQWZ0ZXJCb2R5TW9kZSk7CiAgICAgICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gaHRt
bFRhZykgewotICAgICAgICAgICAgaWYgKG1faXNQYXJzaW5nRnJhZ21lbnQpIHsKKyAgICAgICAg
ICAgIGlmIChpc1BhcnNpbmdGcmFnbWVudCgpKSB7CiAgICAgICAgICAgICAgICAgcGFyc2VFcnJv
cih0b2tlbik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMjI5
Niw3ICsyMzA5LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWlj
SFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnBvcCgpOwotICAgICAgICAgICAg
aWYgKCFtX2lzUGFyc2luZ0ZyYWdtZW50ICYmICFtX3RyZWUuY3VycmVudEVsZW1lbnQoKS0+aGFz
VGFnTmFtZShmcmFtZXNldFRhZykpCisgICAgICAgICAgICBpZiAoIWlzUGFyc2luZ0ZyYWdtZW50
KCkgJiYgIW1fdHJlZS5jdXJyZW50RWxlbWVudCgpLT5oYXNUYWdOYW1lKGZyYW1lc2V0VGFnKSkK
ICAgICAgICAgICAgICAgICBzZXRJbnNlcnRpb25Nb2RlKEFmdGVyRnJhbWVzZXRNb2RlKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjUzOSw3ICsyNTUyLDcgQEAgUmVwcm9j
ZXNzQnVmZmVyOgogICAgICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgaWYgKCFwcm9jZXNzQ29sZ3JvdXBFbmRUYWdGb3JJbkNvbHVtbkdyb3Vw
KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAg
ICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBnb3RvIFJlcHJvY2Vzc0J1ZmZlcjsKQEAgLTI2NTksMTEgKzI2NzIs
MTEgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRPZkZpbGUoQXRvbWljSFRNTFRv
a2VuJiB0b2tlbikKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbkNvbHVtbkdyb3VwTW9kZToK
ICAgICAgICAgaWYgKG1fdHJlZS5jdXJyZW50RWxlbWVudCgpID09IG1fdHJlZS5vcGVuRWxlbWVu
dHMoKS0+aHRtbEVsZW1lbnQoKSkgewotICAgICAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJh
Z21lbnQpOworICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmICghcHJvY2Vzc0NvbGdyb3VwRW5k
VGFnRm9ySW5Db2x1bW5Hcm91cCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdG
cmFnbWVudCk7CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgcHJvY2Vzc0VuZE9mRmlsZSh0b2tl
bik7CkBAIC0yODI4LDcgKzI4NDEsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZmluaXNoZWQo
KQogICAgIH0KIAogICAgIC8vIFdhcm5pbmcsIHRoaXMgbWF5IGRlbGV0ZSB0aGUgcGFyc2VyLCBz
byBkb24ndCB0cnkgdG8gZG8gYW55dGhpbmcgZWxzZSBhZnRlciB0aGlzLgotICAgIGlmICghbV9p
c1BhcnNpbmdGcmFnbWVudCkKKyAgICBpZiAoIWlzUGFyc2luZ0ZyYWdtZW50KCkpCiAgICAgICAg
IG1fZG9jdW1lbnQtPmZpbmlzaGVkUGFyc2luZygpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSFRNTFRyZWVCdWlsZGVyLmggYi9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmgK
aW5kZXggZDcyMzM4NDQ2OWEwNmQyMzA3MzcwZmM0NWRjNjNkODJkNGFlN2I1OS4uMGE3ZTk1Mjc5
M2EwOGIxNGYyMzA5NWU0OTI1YzQ4MzI4ZTgzZGY5MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0hUTUxUcmVlQnVpbGRlci5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuaApA
QCAtMTA1LDYgKzEwNSw4IEBAIHByaXZhdGU6CiAgICAgICAgIEFmdGVyQWZ0ZXJGcmFtZXNldE1v
ZGUsCiAgICAgfTsKIAorICAgIGJvb2wgaXNQYXJzaW5nRnJhZ21lbnQoKSBjb25zdCB7IHJldHVy
biAhIW1fZnJhZ21lbnQ7IH0KKwogICAgIHZvaWQgcGFzc1Rva2VuVG9MZWdhY3lQYXJzZXIoSFRN
TFRva2VuJik7CiAKICAgICB2b2lkIHByb2Nlc3NUb2tlbihBdG9taWNIVE1MVG9rZW4mKTsKQEAg
LTE5MCwxMSArMTkyLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRTZWNvbmRhcnlJbnNlcnRp
b25Nb2RlKEluc2VydGlvbk1vZGUpOwogCiAgICAgdm9pZCBzZXRJbnNlcnRpb25Nb2RlQW5kRW5k
KEluc2VydGlvbk1vZGUsIGJvb2wgZm9yZWlnbik7IC8vIEhlbHBlciBmb3IgcmVzZXRJbnNlcnRp
b25Nb2RlQXBwcm9wcmlhdGVseQotICAgIHZvaWQgcmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlh
dGVseSgpOworICAgIHZvaWQgcmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseShFbGVtZW50
KiBjb250ZXh0RWxlbWVudCA9IDApOwogCiAgICAgc3RhdGljIGJvb2wgaXNTY3JpcHRpbmdGbGFn
RW5hYmxlZChGcmFtZSogZnJhbWUpOwogCiAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAg
RG9jdW1lbnRGcmFnbWVudCogbV9mcmFnbWVudDsKKyAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZHVt
bXlEb2N1bWVudEZvckZyYWdtZW50UGFyc2U7CiAgICAgSFRNTENvbnN0cnVjdGlvblNpdGUgbV90
cmVlOwogCiAgICAgYm9vbCBtX3JlcG9ydEVycm9yczsKQEAgLTIzMCw3ICsyMzQsNiBAQCBwcml2
YXRlOgogICAgIC8vIEZyYWdtZW50U2NyaXB0aW5nTm90QWxsb3dlZCBjYXVzZXMgdGhlIFBhcnNl
ciB0byByZW1vdmUgY2hpbGRyZW4KICAgICAvLyBmcm9tIDxzY3JpcHQ+IHRhZ3MgKHNvIGphdmFz
Y3JpcHQgZG9lc24ndCBzaG93IHVwIGluIHBhc3RlcykuCiAgICAgRnJhZ21lbnRTY3JpcHRpbmdQ
ZXJtaXNzaW9uIG1fZnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uOwotICAgIGJvb2wgbV9pc1Bh
cnNpbmdGcmFnbWVudDsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63788</attachid>
            <date>2010-08-06 17:31:17 -0700</date>
            <delta_ts>2010-08-07 21:27:21 -0700</delta_ts>
            <desc>crashes due to DocumentParser use after free?</desc>
            <filename>bug-43586-20100806173113.patch</filename>
            <type>text/plain</type>
            <size>43234</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGM4MmE3ZmQ1Yjg2OThkMDdmN2VkYTQzMjc0OGVlZTJmMTY0ZjJjYy4uZWE2ZDcwMmNiNWNiMDc5
ODY2N2I5NDc5ZjU4MDBiOWNjODE4Mzk0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0OSBAQAogMjAxMC0wOC0wNiAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXNlIHRoZSBIVE1MNSBUcmVlQnVpbGRlciBmb3IgRnJhZ21l
bnQgUGFyc2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDM1ODYKKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIGRv
bS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRlcHJlY2F0ZWRDcmVh
dGVDb250ZXh0dWFsRnJhZ21lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAg
ICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRG
cm9tTWFya3VwKToKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTmFtZXM6OnRva2VuaXplclN0YXRlRm9yQ29udGV4dEVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJz
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50
RnJhZ21lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50UGFyc2VyLmg6CisgICAgICAg
ICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6
ZGVwcmVjYXRlZENyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRWxlbWVudDo6c2V0SW5uZXJIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50
OjpzZXRPdXRlckhUTUwpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxUb2tlbml6ZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUcmVlQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRlcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDb2xncm91cEVuZFRh
Z0ZvckluQ29sdW1uR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzU3RhcnRUYWdGb3JJblRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblRhYmxlQm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblJvdyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJbkNlbGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2FwdGlvbkVuZFRhZ0Zvcklu
Q2FwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUckVu
ZFRhZ0ZvckluUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c1RhYmxlRW5kVGFnRm9ySW5UYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NFbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzQ2hhcmFjdGVyQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0VuZE9mRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6
OmZpbmlzaGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUcmVlQnVpbGRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjppc1BhcnNpbmdGcmFnbWVudCk6CisKKzIwMTAtMDgt
MDYgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5
IENocmlzIEZsZWl6YWNoLgogCiAgICAgICAgIE1ha2UgQVggQ29kZSB1c2UgbW9yZSBzcGVjaWZp
YyBSZW5kZXJPYmplY3Qgc3ViY2xhc3MgdHlwZXMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNGIyMDY0ZWU2MzIyMzAzNDY0YTdkNDViNTdiYTRlYzhmNjM3
ZDg0Ni4uM2I5MmMzOGVmZmNlMGM3OThjZDI4MmJiMDQwNGIwNmE3NWVhNzc1MCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MjMsMTEgKzE0MjMsOSBA
QAogCQk3QUVEM0UwNjBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRUQzRTA0MEZCQjFF
QUEwMEQyQjAzQyAvKiBJbnNwZWN0b3JGcm9udGVuZC5oICovOyB9OwogCQk3QUZENEE4QjExMzFD
Mjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGRDRBOEExMTMxQzI3NjAwMzVCODgzIC8qIFNjcmlw
dEJyZWFrcG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3QUZENEZGNDExMzI3N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGRDRGRjMx
MTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4MUJFMjA5ODExRjRBQjhEMDA5MTVE
RkEgLyogSURCQ3Vyc29yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgxQkUyMDkzMTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3IuY3BwICovOyB9
OwogCQk4MUJFMjA5NzExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUJFMjA5MjExRjRBQjhEMDA5MTVE
RkEgLyogSURCQ3Vyc29yLmggKi87IH07CiAJCTgxQkUyMDk4MTFGNEFCOEQwMDkxNURGQSAvKiBJ
REJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MUJFMjA5MzExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yQmFja2Vu
ZEltcGwuY3BwICovOyB9OwotCQk4MUJFMjA5OTExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29y
QmFja2VuZEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgxQkUyMDk0MTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JCYWNrZW5kSW1wbC5oICov
OyB9OwotCQk4MUJFMjA5QjExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFC
RTIwOTYxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCAqLzsg
fTsKKwkJODFCRTIwOTkxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxQkUy
MDk0MTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmggKi87IH07
CiAJCTgxQkUyMEQyMTFGNEJDMzIwMDkxNURGQSAvKiBKU0lEQkN1cnNvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUJFMjBBNzExRjRCNjZGMDA5
MTVERkEgLyogSlNJREJDdXJzb3IuY3BwICovOyB9OwogCQk4MUJFMjBEMzExRjRCQzMyMDA5MTVE
RkEgLyogSlNJREJDdXJzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgxQkUyMEE4MTFGNEI2NkYwMDkxNURGQSAvKiBKU0lEQkN1cnNvci5oICovOyB9
OwogCQk4MkI2NTg5ODExODlFMzkyMDBFMDUyQTEgLyogSW5zcGVjdG9yQ1NTU3RvcmUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyQjY1ODk3MTE4OUUz
OTIwMEUwNTJBMSAvKiBJbnNwZWN0b3JDU1NTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03MjQ5LDcgKzcyNDcsNiBAQAogCQk3QUZENEZG
MzExMzI3N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHREZWJ1Z0xpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTgxQkUyMDkyMTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ3Vyc29yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgxQkUyMDkzMTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JC
YWNrZW5kSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJD
dXJzb3JCYWNrZW5kSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgxQkUy
MDk0MTFGNEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JCYWNrZW5kSW1wbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJREJDdXJzb3JCYWNrZW5kSW1wbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4MUJFMjA5NDExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgx
QkUyMDlDMTFGNEFCQkQwMDkxNURGQSAvKiBJREJDdXJzb3IuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IElEQkN1cnNvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgxQkUy
MEE3MTFGNEI2NkYwMDkxNURGQSAvKiBKU0lEQkN1cnNvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0lEQkN1cnNvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMDA3Nyw4ICsxMDA3NCw4IEBACiAJCUI2NTY2MjY4MTIwQjExNUEwMDZFQTg1
QyAvKiBJREJUcmFuc2FjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
REJUcmFuc2FjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNjU2NjI2OTEy
MEIxMTVBMDA2RUE4NUMgLyogSURCVHJhbnNhY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IElEQlRyYW5zYWN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjY1
NjYyNkQxMjBCMTE2QjAwNkVBODVDIC8qIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjY1NjYyNkUxMjBCMTIy
NzAwNkVBODVDIC8qIEpTSURCVHJhbnNhY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gSlNJREJUcmFuc2FjdGlvbi5oOyBwYXRoID0gSlNJREJUcmFuc2FjdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCNjU2NjI2RjEyMEIxMjI3MDA2RUE4NUMgLyog
SlNJREJUcmFuc2FjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBKU0lEQlRyYW5zYWN0aW9uLmNwcDsgcGF0aCA9IEpTSURCVHJhbnNhY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNjU2NjI2RTEyMEIxMjI3MDA2RUE4NUMgLyogSlNJ
REJUcmFuc2FjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0lEQlRy
YW5zYWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI2NTY2MjZGMTIwQjEy
MjcwMDZFQTg1QyAvKiBKU0lEQlRyYW5zYWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTSURCVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCNzM0QjE4MDExOUI5OTExMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRm9udFRyYW5zY29kZXIuY3Bw
OyBwYXRoID0gdHJhbnNjb2Rlci9Gb250VHJhbnNjb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUI3MzRCMTgyMTE5Qjk5MUQwMDY1ODdCRCAvKiBGb250VHJhbnNjb2Rlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGb250VHJhbnNjb2Rlci5oOyBwYXRo
ID0gdHJhbnNjb2Rlci9Gb250VHJhbnNjb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCNzc2RDQzQTExMDQ1MjVEMDBCRUIwRUMgLyogUHJpbnRDb250ZXh0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaW50Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTE0MDgsNyArMTE0MDUsNiBAQAogCQkxQUU4MkVDOTBDQUFFMTc3MDAy
MjM3QUUgLyogc3RvcmFnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCi0KIAkJCQlCNUI1REM2NzExOUJCM0Q1MDAyQTg3OTAgLyogQWJzdHJhY3REYXRhYmFzZS5j
cHAgKi8sCiAJCQkJQjVCNURDNjgxMTlCQjNENTAwMkE4NzkwIC8qIEFic3RyYWN0RGF0YWJhc2Uu
aCAqLywKIAkJCQk1MTQxODVFRDBDRDY1RjA0MDA3NjNDOTkgLyogQ2hhbmdlVmVyc2lvbldyYXBw
ZXIuY3BwICovLApAQCAtMTE0NDksMTIgKzExNDQ1LDExIEBACiAJCQkJQzU4NUE2OTkxMUQ0RkIz
RDAwNEMzRTRCIC8qIElEQkFueS5oICovLAogCQkJCUM1ODVBNjlBMTFENEZCM0QwMDRDM0U0QiAv
KiBJREJBbnkuaWRsICovLAogCQkJCUM1ODVBNjlCMTFENEZCM0QwMDRDM0U0QiAvKiBJREJDYWxs
YmFja3MuaCAqLywKLQkJCQk4MUJFMjA5MjExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yLmNw
cCAqLywKKwkJCQk4MUJFMjA5MjExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yLmggKi8sCiAJ
CQkJODFCRTIwOTIxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvci5oICovLAogCQkJCTgxQkUy
MDlDMTFGNEFCQkQwMDkxNURGQSAvKiBJREJDdXJzb3IuaWRsICovLAogCQkJCTgxQkUyMDkzMTFG
NEFCOEQwMDkxNURGQSAvKiBJREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgKi8sCi0JCQkJODFCRTIw
OTQxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvckJhY2tlbmRJbXBsLmggKi8sCi0JCQkJODFC
RTIwOTUxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCAqLywK
KwkJCQk4MUJFMjA5NDExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZS5oICovLAogCQkJCUM1ODVBNkEzMTFENEZCM0QwMDRDM0U0QiAvKiBJREJEYXRhYmFzZS5jcHAg
Ki8sCiAJCQkJQzU4NUE2QTQxMUQ0RkIzRDAwNEMzRTRCIC8qIElEQkRhdGFiYXNlLmggKi8sCiAJ
CQkJQzU4NUE2QTUxMUQ0RkIzRDAwNEMzRTRCIC8qIElEQkRhdGFiYXNlLmlkbCAqLywKQEAgLTE4
Njg1LDggKzE4NjgwLDcgQEAKIAkJCQlDNTg1QTY2MzExRDRGQUM1MDA0QzNFNEIgLyogSURCQmlu
ZGluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU4NUE2Q0YxMUQ0RkIzRDAwNEMz
RTRCIC8qIElEQkNhbGxiYWNrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODFCRTIwOTcxMUY0QUI4
RDAwOTE1REZBIC8qIElEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODFCRTIwOTkxMUY0
QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvckJhY2tlbmRJbXBsLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk4MUJFMjA5QjExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJODFCRTIwOTkxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1ODVBNkQ4MTFENEZCM0Qw
MDRDM0U0QiAvKiBJREJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjYxNzYyNjIxMjAz
NDkwODAwRUY5MTE0IC8qIElEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBpbiBIZWFkZXJzICovLAog
CQkJCUI2MTc2MjU0MTIwMzM3NEYwMEVGOTExNCAvKiBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjExMjksNyArMjExMjMsNyBAQAogCQkJCTUxRTFFQ0Mw
MEM5MUM5MDQwMERDMjU1QiAvKiBJY29uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1
ODVBNkNDMTFENEZCM0QwMDRDM0U0QiAvKiBJREJBbnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QzU4NUE2NjIxMUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJODFCRTIwOTgxMUY0QUI4RDAwOTE1REZBIC8qIElEQkN1cnNvci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk4MUJFMjA5ODExRjRBQjhEMDA5MTVERkEgLyogSURCQ3Vyc29y
QmFja2VuZEltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODFCRTIwOTgxMUY0QUI4RDAwOTE1
REZBIC8qIElEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI2OTFD
MUY5MTIwNkQ0QTAwMDI1RDk4MCAvKiBJREJEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDNTg1QTZENTExRDRGQjNEMDA0QzNFNEIgLyogSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQu
Y3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKaW5kZXggZWNjNTcyNTlmZWU4
YWUzZWZkNzBiODlkZGY3MDQxZmIzZTVjYzVjZi4uNDc0ODViN2Y2NjQwMmQ4ZDcyYjk3ZDQwZTlm
YmI4YTc3Y2QzMzFhZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5j
cHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKQEAgLTgyLDE2ICs4Miwx
NiBAQCBib29sIERvY3VtZW50RnJhZ21lbnQ6OnNob3VsZFVzZUxlZ2FjeUhUTUxQYXJzZXIoKSBj
b25zdAogICAgICAgICAmJiAhZG9jdW1lbnQoKS0+cGFnZSgpLT5zZXR0aW5ncygpLT5odG1sNVBh
cnNlckVuYWJsZWQoKTsKIH0KIAotdm9pZCBEb2N1bWVudEZyYWdtZW50OjpwYXJzZUhUTUwoY29u
c3QgU3RyaW5nJiBzb3VyY2UsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQ
ZXJtaXNzaW9uKQordm9pZCBEb2N1bWVudEZyYWdtZW50OjpwYXJzZUhUTUwoY29uc3QgU3RyaW5n
JiBzb3VyY2UsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1p
c3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKIHsKICAgICBpZiAoc2hvdWxkVXNlTGVnYWN5SFRN
TFBhcnNlcigpKQogICAgICAgICByZXR1cm4gTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpwYXJz
ZURvY3VtZW50RnJhZ21lbnQoc291cmNlLCB0aGlzLCBzY3JpcHRpbmdQZXJtaXNzaW9uKTsKLSAg
ICBIVE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudChzb3VyY2UsIHRoaXMs
IHNjcmlwdGluZ1Blcm1pc3Npb24pOworICAgIEhUTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1
bWVudEZyYWdtZW50KHNvdXJjZSwgdGhpcywgY29udGV4dEVsZW1lbnQsIHNjcmlwdGluZ1Blcm1p
c3Npb24pOwogfQogCi1ib29sIERvY3VtZW50RnJhZ21lbnQ6OnBhcnNlWE1MKGNvbnN0IFN0cmlu
ZyYgc291cmNlLCBFbGVtZW50KiBwYXJlbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBz
Y3JpcHRpbmdQZXJtaXNzaW9uKQorYm9vbCBEb2N1bWVudEZyYWdtZW50OjpwYXJzZVhNTChjb25z
dCBTdHJpbmcmIHNvdXJjZSwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0
aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQogewotICAgIHJldHVybiBYTUxEb2N1
bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KHNvdXJjZSwgdGhpcywgcGFyZW50LCBz
Y3JpcHRpbmdQZXJtaXNzaW9uKTsKKyAgICByZXR1cm4gWE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNl
RG9jdW1lbnRGcmFnbWVudChzb3VyY2UsIHRoaXMsIGNvbnRleHRFbGVtZW50LCBzY3JpcHRpbmdQ
ZXJtaXNzaW9uKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFn
bWVudC5oIGIvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCmluZGV4IDVlZmYxN2ZjYWMw
N2U3NmQ2MjczYzdiM2MzNDdiZGYzYWNjMzg3Y2EuLmQzZGFkYjhiMmRiMzQyZjA0ZjI2OWZiNzE0
Y2M0NDcxM2U5YmQ2ZWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQu
aAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKQEAgLTMzLDggKzMzLDggQEAg
Y2xhc3MgRG9jdW1lbnRGcmFnbWVudCA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGUoRG9jdW1lbnQq
KTsKIAotICAgIHZvaWQgcGFyc2VIVE1MKGNvbnN0IFN0cmluZyYsIEZyYWdtZW50U2NyaXB0aW5n
UGVybWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7Ci0gICAgYm9vbCBwYXJzZVhN
TChjb25zdCBTdHJpbmcmLCBFbGVtZW50KiBwYXJlbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlz
c2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7CisgICAgdm9pZCBwYXJzZUhUTUwoY29u
c3QgU3RyaW5nJiwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVy
bWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7CisgICAgYm9vbCBwYXJzZVhNTChj
b25zdCBTdHJpbmcmLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQ
ZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKIAogcHJpdmF0ZToKICAgICBE
b2N1bWVudEZyYWdtZW50KERvY3VtZW50Kik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcCBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDJmYTc1Y2U3NjY1ZGIwZDBi
ZWI0OWJjMzgxYmYyYWQzODc4MWIwNDkuLjdjOGE2MDk5NzE2NDY0Nzk3NDI0YTMxMGI1OGFiNGQz
OWYzNWM2MDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC05MCwxMiArOTAsMTIgQEAgTm9kZVJhcmVEYXRhKiBFbGVt
ZW50OjpjcmVhdGVSYXJlRGF0YSgpCiAgICAgcmV0dXJuIG5ldyBFbGVtZW50UmFyZURhdGE7CiB9
CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRWxlbWVudDo6Y3JlYXRlQ29udGV4dHVh
bEZyYWdtZW50KGNvbnN0IFN0cmluZyYgbWFya3VwLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Np
b24gc2NyaXB0aW5nUGVybWlzc2lvbikKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRWxl
bWVudDo6ZGVwcmVjYXRlZENyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChjb25zdCBTdHJpbmcmIG1h
cmt1cCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCiB7
CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZG9jdW1lbnQoKS0+Y3Jl
YXRlRG9jdW1lbnRGcmFnbWVudCgpOwogCiAgICAgaWYgKGRvY3VtZW50KCktPmlzSFRNTERvY3Vt
ZW50KCkpCi0gICAgICAgIGZyYWdtZW50LT5wYXJzZUhUTUwobWFya3VwLCBzY3JpcHRpbmdQZXJt
aXNzaW9uKTsKKyAgICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChtYXJrdXAsIHRoaXMsIHNjcmlw
dGluZ1Blcm1pc3Npb24pOwogICAgIGVsc2UgewogICAgICAgICBpZiAoIWZyYWdtZW50LT5wYXJz
ZVhNTChtYXJrdXAsIHRoaXMsIHNjcmlwdGluZ1Blcm1pc3Npb24pKQogICAgICAgICAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBwcm9wYWdhdGUgYSBzeW50YXggZXJyb3IgZXhjZXB0aW9uIG91dCBo
ZXJlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvV2ViQ29yZS9kb20vRWxl
bWVudC5oCmluZGV4IGE2NjgwOWFiNmQ2NDA5ZGEwMDY0NmUxYmY4MGIxN2U3MDUxZWViYjAuLjY5
NGRiOTg4YmI2ZWM2ZmE2MzM2MzFiMzZiMDNlYjFkOTEyYjk1OTIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTk1LDcgKzk1
LDcgQEAgcHVibGljOgogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIodG91Y2hj
YW5jZWwpOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGNvbnN0IFN0cmluZyYsIEZyYWdtZW50U2NyaXB0
aW5nUGVybWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7CisgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGRlcHJlY2F0ZWRDcmVhdGVDb250ZXh0dWFsRnJh
Z21lbnQoY29uc3QgU3RyaW5nJiwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uID0gRnJhZ21l
bnRTY3JpcHRpbmdBbGxvd2VkKTsKIAogICAgIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBjb25zdDsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdldEF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9SYW5n
ZS5jcHAgYi9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKaW5kZXggMzNhMjFiYjc1NmVlMDgxM2Q0ZTIw
YjZjMTZkZjEwOWZkNmFmNjJlYi4uYjUzNTExMmEwNWQ4NTc2YWUwMGZjNzA4MDYwZGYwN2VlNTIw
MTNiMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1dlYkNvcmUvZG9t
L1JhbmdlLmNwcApAQCAtMTA2MSw3ICsxMDYxLDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBSYW5nZTo6Y3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGNvbnN0IFN0cmluZyYgbWFya3UK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGZyYWdtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihlbGVtZW50KS0+Y3JlYXRlQ29u
dGV4dHVhbEZyYWdtZW50KG1hcmt1cCk7CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZy
YWdtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihlbGVtZW50KS0+ZGVwcmVjYXRlZENy
ZWF0ZUNvbnRleHR1YWxGcmFnbWVudChtYXJrdXApOwogICAgIGlmICghZnJhZ21lbnQpIHsKICAg
ICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
Y3BwCmluZGV4IDU2N2Y2NTFhMDNkNjVhMDAxMDI1YmYyMDZhZWYxNDUyY2JkYzQ2OTguLjQyMTZj
YmM2MjU4Y2M1ZWY5MTZlYmMxODYwN2Y5ZGJiZTViM2FjNWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0x
MDg3LDcgKzEwODcsNyBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwg
VmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBbm5vdGF0ZUZvckludGVyYwogCiBQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgbWFya3VwLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEZyYWdtZW50
U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQogewotICAgIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKS0+
Y3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KG1hcmt1cCwgc2NyaXB0aW5nUGVybWlzc2lvbik7Cisg
ICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50
RWxlbWVudCgpLT5kZXByZWNhdGVkQ3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KG1hcmt1cCwgc2Ny
aXB0aW5nUGVybWlzc2lvbik7CiAKICAgICBpZiAoZnJhZ21lbnQgJiYgIWJhc2VVUkwuaXNFbXB0
eSgpICYmIGJhc2VVUkwgIT0gYmxhbmtVUkwoKSAmJiBiYXNlVVJMICE9IGRvY3VtZW50LT5iYXNl
VVJMKCkpCiAgICAgICAgIGNvbXBsZXRlVVJMcyhmcmFnbWVudC5nZXQoKSwgYmFzZVVSTCk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGIvV2ViQ29y
ZS9odG1sL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCAwYjE3MDg2ZmVkM2JiNDcwYTNi
MjdkOTBiZGFjZTdhYmJmYzBmMzRlLi40MmQ1OWY0ZjVkY2E5ZjQ5NWEwMDQ4ODkzMzE0YTI1YmUw
YmRjOWRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTENvbnN0cnVjdGlvblNpdGUuY3Bw
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTE0MSw2ICsx
NDEsMTMgQEAgSFRNTENvbnN0cnVjdGlvblNpdGU6On5IVE1MQ29uc3RydWN0aW9uU2l0ZSgpCiB7
CiB9CiAKK3ZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6OnNldEZvcm0oSFRNTEZvcm1FbGVtZW50
KiBmb3JtKQoreworICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIG5lZWRlZCBmb3Ig
SFRNTFRyZWVCdWlsZGVyIGluIHRoZSBmcmFnbWVudCBjYXNlLgorICAgIEFTU0VSVCghbV9mb3Jt
KTsKKyAgICBtX2Zvcm0gPSBmb3JtOworfQorCiBQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4g
SFRNTENvbnN0cnVjdGlvblNpdGU6OnRha2VGb3JtKCkKIHsKICAgICByZXR1cm4gbV9mb3JtLnJl
bGVhc2UoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5o
IGIvV2ViQ29yZS9odG1sL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgKaW5kZXggZDljOGFjNTkzYzJj
YWViMjJjMjk4YTcxYTgzYzVlMjI4ODZjODE5YS4uMTZiYTU2YjE4MzVlYzY3ZTQ3YWU3OGRjZGNj
ZjlkYzY4MGEyYTdlYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxDb25zdHJ1Y3Rpb25T
aXRlLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgKQEAgLTg0LDYg
Kzg0LDcgQEAgcHVibGljOgogCiAgICAgRWxlbWVudCogaGVhZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aGVhZC5nZXQoKTsgfQogCisgICAgdm9pZCBzZXRGb3JtKEhUTUxGb3JtRWxlbWVudCopOwogICAg
IEhUTUxGb3JtRWxlbWVudCogZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybS5nZXQoKTsgfQog
ICAgIFBhc3NSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiB0YWtlRm9ybSgpOwogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1M
RG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDM1NGU3ZWQ1MmQ2OWI5MDNjNzZlZmY0MTJlYjA4YmI0
ZjFjMDVmZGQuLjdkMDUzMzg3NzEyMzRkZTJhMjJmOGU0MTRiODA3MGJkNDNlNzMyNGYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUv
aHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
RG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJTY2hlZHVs
ZXIuaCIKICNpbmNsdWRlICJIVE1MVG9rZW5pemVyLmgiCiAjaW5jbHVkZSAiSFRNTFByZWxvYWRT
Y2FubmVyLmgiCkBAIC00NCw2ICs0NSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKyAgICAKIG5hbWVzcGFjZSB7CiAKIGNsYXNzIE5lc3Rp
bmdMZXZlbEluY3JlbWVudGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKQEAgLTYzLDYgKzY2LDMy
IEBAIHByaXZhdGU6CiAgICAgaW50KiBtX2NvdW50ZXI7CiB9OwogCisvLyBUaGlzIGlzIGEgZGly
ZWN0IHRyYW5zY3JpcHRpb24gb2Ygc3RlcCA0IGZyb206CisvLyBodHRwOi8vd3d3LndoYXR3Zy5v
cmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtZW5kLmh0bWwjZnJh
Z21lbnQtY2FzZQorSFRNTFRva2VuaXplcjo6U3RhdGUgdG9rZW5pemVyU3RhdGVGb3JDb250ZXh0
RWxlbWVudChFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgYm9vbCByZXBvcnRFcnJvcnMpCit7Cisg
ICAgaWYgKCFjb250ZXh0RWxlbWVudCkKKyAgICAgICAgcmV0dXJuIEhUTUxUb2tlbml6ZXI6OkRh
dGFTdGF0ZTsKKyAgICAKKyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBjb250ZXh0VGFnID0gY29u
dGV4dEVsZW1lbnQtPnRhZ1FOYW1lKCk7CisgICAgCisgICAgaWYgKGNvbnRleHRUYWcubWF0Y2hl
cyh0aXRsZVRhZykgfHwgY29udGV4dFRhZy5tYXRjaGVzKHRleHRhcmVhVGFnKSkKKyAgICAgICAg
cmV0dXJuIEhUTUxUb2tlbml6ZXI6OlJDREFUQVN0YXRlOworICAgIGlmIChjb250ZXh0VGFnLm1h
dGNoZXMoc3R5bGVUYWcpCisgICAgICAgIHx8IGNvbnRleHRUYWcubWF0Y2hlcyh4bXBUYWcpCisg
ICAgICAgIHx8IGNvbnRleHRUYWcubWF0Y2hlcyhpZnJhbWVUYWcpCisgICAgICAgIHx8IChjb250
ZXh0VGFnLm1hdGNoZXMobm9lbWJlZFRhZykgJiYgSFRNTFRyZWVCdWlsZGVyOjpwbHVnaW5zRW5h
YmxlZChjb250ZXh0RWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpCisgICAgICAgIHx8IChj
b250ZXh0VGFnLm1hdGNoZXMobm9zY3JpcHRUYWcpICYmIEhUTUxUcmVlQnVpbGRlcjo6c2NyaXB0
RW5hYmxlZChjb250ZXh0RWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpCisgICAgICAgIHx8
IGNvbnRleHRUYWcubWF0Y2hlcyhub2ZyYW1lc1RhZykpCisgICAgICAgIHJldHVybiByZXBvcnRF
cnJvcnMgPyBIVE1MVG9rZW5pemVyOjpSQVdURVhUU3RhdGUgOiBIVE1MVG9rZW5pemVyOjpQTEFJ
TlRFWFRTdGF0ZTsKKyAgICBpZiAoY29udGV4dFRhZy5tYXRjaGVzKHNjcmlwdFRhZykpCisgICAg
ICAgIHJldHVybiByZXBvcnRFcnJvcnMgPyBIVE1MVG9rZW5pemVyOjpTY3JpcHREYXRhU3RhdGUg
OiBIVE1MVG9rZW5pemVyOjpQTEFJTlRFWFRTdGF0ZTsKKyAgICBpZiAoY29udGV4dFRhZy5tYXRj
aGVzKHBsYWludGV4dFRhZykpCisgICAgICAgIHJldHVybiBIVE1MVG9rZW5pemVyOjpQTEFJTlRF
WFRTdGF0ZTsKKyAgICByZXR1cm4gSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlOworfQorCisKIH0g
Ly8gbmFtZXNwYWNlCiAKIEhUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKEhU
TUxEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgcmVwb3J0RXJyb3JzKQpAQCAtNzQsMTkgKzEwMywx
OSBAQCBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQq
IGRvY3VtZW50LCBib29sIHJlcG9ydEVycm9ycwogICAgICwgbV9lbmRXYXNEZWxheWVkKGZhbHNl
KQogICAgICwgbV93cml0ZU5lc3RpbmdMZXZlbCgwKQogewotICAgIGJlZ2luKCk7CiB9CiAKIC8v
IEZJWE1FOiBNZW1iZXIgdmFyaWFibGVzIHNob3VsZCBiZSBncm91cGVkIGludG8gc2VsZi1pbml0
aWFsaXppbmcgc3RydWN0cyB0bwogLy8gbWluaW1pemUgY29kZSBkdXBsaWNhdGlvbiBiZXR3ZWVu
IHRoZXNlIGNvbnN0cnVjdG9ycy4KLUhUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFy
c2VyKERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Np
b24gc2NyaXB0aW5nUGVybWlzc2lvbikKK0hUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50
UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCiAgICAg
OiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQtPmRvY3VtZW50KCkpCiAgICAgLCBt
X3Rva2VuaXplcihuZXcgSFRNTFRva2VuaXplcikKLSAgICAsIG1fdHJlZUJ1aWxkZXIobmV3IEhU
TUxUcmVlQnVpbGRlcihtX3Rva2VuaXplci5nZXQoKSwgZnJhZ21lbnQsIHNjcmlwdGluZ1Blcm1p
c3Npb24pKQorICAgICwgbV90cmVlQnVpbGRlcihuZXcgSFRNTFRyZWVCdWlsZGVyKG1fdG9rZW5p
emVyLmdldCgpLCBmcmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHNjcmlwdGluZ1Blcm1pc3Npb24p
KQogICAgICwgbV9lbmRXYXNEZWxheWVkKGZhbHNlKQogICAgICwgbV93cml0ZU5lc3RpbmdMZXZl
bCgwKQogewotICAgIGJlZ2luKCk7CisgICAgYm9vbCByZXBvcnRFcnJvcnMgPSBmYWxzZTsgLy8g
Rm9yIG5vdyBkb2N1bWVudCBmcmFnbWVudCBwYXJzaW5nIG5ldmVyIHJlcG9ydHMgZXJyb3JzLgor
ICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZSh0b2tlbml6ZXJTdGF0ZUZvckNvbnRleHRFbGVtZW50
KGNvbnRleHRFbGVtZW50LCByZXBvcnRFcnJvcnMpKTsKIH0KIAogSFRNTERvY3VtZW50UGFyc2Vy
Ojp+SFRNTERvY3VtZW50UGFyc2VyKCkKQEAgLTk3LDExICsxMjYsNiBAQCBIVE1MRG9jdW1lbnRQ
YXJzZXI6On5IVE1MRG9jdW1lbnRQYXJzZXIoKQogICAgIC8vIHRoZW4gd2UgY291bGQgQVNTRVJU
IHNvbWUgaW52YXJpYW50cyBoZXJlLgogfQogCi12b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6YmVn
aW4oKQotewotICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgcmVzZXQgdGhlIHRva2VuaXplcj8KLX0K
LQogdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnN0b3BQYXJzaW5nKCkKIHsKICAgICBEb2N1bWVu
dFBhcnNlcjo6c3RvcFBhcnNpbmcoKTsKQEAgLTQxMyw5ICs0MzcsOSBAQCBTY3JpcHRDb250cm9s
bGVyKiBIVE1MRG9jdW1lbnRQYXJzZXI6OnNjcmlwdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZG9j
dW1lbnQtPmZyYW1lKCkgPyBtX2RvY3VtZW50LT5mcmFtZSgpLT5zY3JpcHQoKSA6IDA7CiB9CiAK
LXZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3Ry
aW5nJiBzb3VyY2UsIERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBGcmFnbWVudFNjcmlwdGlu
Z1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKK3ZvaWQgSFRNTERvY3VtZW50UGFyc2Vy
OjpwYXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIERvY3VtZW50RnJh
Z21lbnQqIGZyYWdtZW50LCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRp
bmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCiB7Ci0gICAgSFRNTERvY3VtZW50UGFy
c2VyIHBhcnNlcihmcmFnbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbik7CisgICAgSFRNTERvY3Vt
ZW50UGFyc2VyIHBhcnNlcihmcmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHNjcmlwdGluZ1Blcm1p
c3Npb24pOyAvLyBGSVhNRQogICAgIHBhcnNlci5pbnNlcnQoc291cmNlKTsgLy8gVXNlIGluc2Vy
dCgpIHNvIHRoYXQgdGhlIHBhcnNlciB3aWxsIG5vdCB5aWVsZC4KICAgICBwYXJzZXIuZmluaXNo
KCk7CiAgICAgQVNTRVJUKCFwYXJzZXIucHJvY2Vzc2luZ0RhdGEoKSk7IC8vIE1ha2Ugc3VyZSB3
ZSdyZSBkb25lLiA8cmRhcjovL3Byb2JsZW0vMzk2MzE1MT4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJz
ZXIuaAppbmRleCBjYzQ2ZDMxM2YyNTJmMmY5YTVhM2FhYmJkMzI0ZmI3MTE3NThkZjI5Li5kMDU1
ODYxNGYwNWFhYjE5MmM4N2FiZjdmODdjMmVhODM0MWJkYTg3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVu
dFBhcnNlci5oCkBAIC01NCwxMyArNTQsMTMgQEAgY2xhc3MgSFRNTERvY3VtZW50UGFyc2VyIDog
IHB1YmxpYyBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIsIEhUTUxTY3JpcHRSdW5uZXJIb3MKIHB1
YmxpYzoKICAgICAvLyBGSVhNRTogVGhlc2UgY29uc3RydWN0b3JzIHNob3VsZCBiZSBtYWRlIHBy
aXZhdGUgYW5kIHJlcGxhY2VkIGJ5IGNyZWF0ZSgpIG1ldGhvZHMuCiAgICAgSFRNTERvY3VtZW50
UGFyc2VyKEhUTUxEb2N1bWVudCosIGJvb2wgcmVwb3J0RXJyb3JzKTsKLSAgICBIVE1MRG9jdW1l
bnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCosIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbik7
CisgICAgSFRNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqLCBFbGVtZW50KiBjb250
ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKICAgICB2aXJ0dWFsIH5I
VE1MRG9jdW1lbnRQYXJzZXIoKTsKIAogICAgIC8vIEV4cG9zZWQgZm9yIEhUTUxQYXJzZXJTY2hl
ZHVsZXIKICAgICB2b2lkIHJlc3VtZVBhcnNpbmdBZnRlcllpZWxkKCk7CiAKLSAgICBzdGF0aWMg
dm9pZCBwYXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRGcmFnbWVu
dCosIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dl
ZCk7CisgICAgc3RhdGljIHZvaWQgcGFyc2VEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmluZyYs
IERvY3VtZW50RnJhZ21lbnQqLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3Jp
cHRpbmdQZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKIAogcHJpdmF0ZToK
ICAgICAvLyBEb2N1bWVudFBhcnNlcgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggZmIxYmNjMjIwY2U1
ODdhOTU5MjdkNDRmMGNkMmI3Mjg1NTczZTQwZC4uY2EwZGM1NGQ0YzI0NDc3OTMxYjk4MDYxZDE5
OWZhZmY5MWQxNTExZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAor
KysgYi9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC0yNzUsNyArMjc1LDggQEAgU3Ry
aW5nIEhUTUxFbGVtZW50OjpvdXRlckhUTUwoKSBjb25zdAogICAgIHJldHVybiBjcmVhdGVNYXJr
dXAodGhpcyk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gSFRNTEVsZW1lbnQ6
OmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChjb25zdCBTdHJpbmcmIG1hcmt1cCwgRnJhZ21lbnRT
Y3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCisvLyBGSVhNRTogVGhpcyBt
ZXRob2QgaXMgdW5lY2Vzc2FyeSB3aXRoIHRoZSBuZXcgSFRNTERvY3VtZW50UGFyc2VyLgorUGFz
c1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBIVE1MRWxlbWVudDo6ZGVwcmVjYXRlZENyZWF0ZUNv
bnRleHR1YWxGcmFnbWVudChjb25zdCBTdHJpbmcmIG1hcmt1cCwgRnJhZ21lbnRTY3JpcHRpbmdQ
ZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCiB7CiAgICAgLy8gVGhlIGZvbGxvd2luZyBp
cyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGRlZmluaXRpb24gYXMgdXNlZCBieSBJRS4KICAgICBp
ZiAoZW5kVGFnUmVxdWlyZW1lbnQoKSA9PSBUYWdTdGF0dXNGb3JiaWRkZW4pCkBAIC0yODUsNyAr
Mjg2LDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBIVE1MRWxlbWVudDo6Y3JlYXRl
Q29udGV4dHVhbEZyYWdtZW50KGNvbnN0IFN0cmluZyYKICAgICAgICAgaGFzTG9jYWxOYW1lKGhl
YWRUYWcpIHx8IGhhc0xvY2FsTmFtZShzdHlsZVRhZykgfHwgaGFzTG9jYWxOYW1lKHRpdGxlVGFn
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gRWxlbWVudDo6Y3JlYXRlQ29udGV4
dHVhbEZyYWdtZW50KG1hcmt1cCwgc2NyaXB0aW5nUGVybWlzc2lvbik7CisgICAgcmV0dXJuIEVs
ZW1lbnQ6OmRlcHJlY2F0ZWRDcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQobWFya3VwLCBzY3JpcHRp
bmdQZXJtaXNzaW9uKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGhhc09uZUNoaWxkKENvbnRh
aW5lck5vZGUqIG5vZGUpCkBAIC0zNDAsNiArMzQxLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZUNo
aWxkcmVuV2l0aFRleHQoSFRNTEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwg
RXgKIAogdm9pZCBIVE1MRWxlbWVudDo6c2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgLy8gRklYTUU6IFRoaXMgY29kZSBjYW4gYmUgcmVt
b3ZlZCwgaXQncyBoYW5kbGVkIGJ5IHRoZSBIVE1MRG9jdW1lbnRQYXJzZXIgY29ycmVjdGx5Lgog
ICAgIGlmIChoYXNMb2NhbE5hbWUoc2NyaXB0VGFnKSB8fCBoYXNMb2NhbE5hbWUoc3R5bGVUYWcp
KSB7CiAgICAgICAgIC8vIFNjcmlwdCBhbmQgQ1NTIHNvdXJjZSBzaG91bGRuJ3QgYmUgcGFyc2Vk
IGFzIEhUTUwuCiAgICAgICAgIHJlbW92ZUNoaWxkcmVuKCk7CkBAIC0zNDcsNyArMzQ5LDcgQEAg
dm9pZCBIVE1MRWxlbWVudDo6c2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoaHRtbCk7Cisg
ICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZGVwcmVjYXRlZENyZWF0ZUNv
bnRleHR1YWxGcmFnbWVudChodG1sKTsKICAgICBpZiAoIWZyYWdtZW50KSB7CiAgICAgICAgIGVj
ID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOwogICAgICAgICByZXR1cm47CkBAIC0zNjUs
NyArMzY3LDcgQEAgdm9pZCBIVE1MRWxlbWVudDo6c2V0T3V0ZXJIVE1MKGNvbnN0IFN0cmluZyYg
aHRtbCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgfQogCiAgICAgSFRNTEVsZW1lbnQqIHBhcmVu
dCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4ocCk7Ci0gICAgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGZyYWdtZW50ID0gcGFyZW50LT5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoaHRtbCk7
CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gcGFyZW50LT5kZXByZWNh
dGVkQ3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGh0bWwpOwogICAgIGlmICghZnJhZ21lbnQpIHsK
ICAgICAgICAgZWMgPSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7CiAgICAgICAgIHJldHVy
bjsKQEAgLTU1MSw3ICs1NTMsNyBAQCB2b2lkIEhUTUxFbGVtZW50OjppbnNlcnRBZGphY2VudEhU
TUwoY29uc3QgU3RyaW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJiBtYXJrdXAsCiB7CiAgICAgUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZG9jdW1lbnQoKS0+Y3JlYXRlRG9jdW1l
bnRGcmFnbWVudCgpOwogICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQotICAg
ICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChtYXJrdXApOworICAgICAgICAgZnJhZ21lbnQtPnBh
cnNlSFRNTChtYXJrdXAsIHRoaXMpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoIWZyYWdtZW50
LT5wYXJzZVhNTChtYXJrdXAsIHRoaXMpKQogICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBwcm9wYWdhdGUgYSBzeW50YXggZXJyb3IgZXhjZXB0aW9uIG91dCBoZXJlLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
aAppbmRleCAwMzQ0OWM5ODVhZTA0Mjc1NTUxZDc4MWRkMjBmZGRjNjQ5YWVjMTcyLi45MWEyMWM1
Mjk5YjcyYjM0NTQ2ZWQ0NGFkNTY2OTNiZDFhNTk4MGI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtNDYs
NyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgaW5uZXJIVE1MKCkgY29uc3Q7CiAgICAg
U3RyaW5nIG91dGVySFRNTCgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGNvbnN0IFN0cmluZyYsIEZyYWdtZW50U2NyaXB0
aW5nUGVybWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7CisgICAgUGFzc1JlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBkZXByZWNhdGVkQ3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGNv
bnN0IFN0cmluZyYsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0
aW5nQWxsb3dlZCk7CiAgICAgdm9pZCBzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0T3V0ZXJIVE1MKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2b2lkIHNldElubmVyVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5oIGIvV2ViQ29y
ZS9odG1sL0hUTUxUb2tlbml6ZXIuaAppbmRleCBlNGNhMTZhY2UxYmUzZDc4YmE2ZjcxNTEzNTlk
YWQ4MDIxOTdmOThiLi4wZTliYTNhMmNjMDliZTQ5YzRkYmVjNTNiZjYwNmZjM2MwZjA2ZWIzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5oCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MVG9rZW5pemVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBFbGVtZW50OwogY2xhc3MgSFRNTFRva2VuOwogCiBjbGFzcyBIVE1MVG9rZW5p
emVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1M
VHJlZUJ1aWxkZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXgg
ODNmNDlmZTE4Mjk3NjM4MWJkZDlhNzkzMDEyNWZhMjQzZDI0NThhOC4uYzE2OGZmYzE1NWYwNTI2
MGE2NjRhODQwOWExZjNiZGVjODBmYzY0YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxU
cmVlQnVpbGRlci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAg
LTI1Myw2ICsyNTMsMTkgQEAgYm9vbCBpc05vdEZvcm1hdHRpbmdBbmROb3RQaHJhc2luZyhjb25z
dCBFbGVtZW50KiBlbGVtZW50KQogICAgIHJldHVybiBpc1Njb3BpbmdUYWcodGFnTmFtZSkgfHwg
aXNTcGVjaWFsVGFnKHRhZ05hbWUpOwogfQogCitIVE1MRm9ybUVsZW1lbnQqIGNsb3Nlc3RGb3Jt
QW5jZXN0b3IoRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICB3aGlsZSAoZWxlbWVudCkgeworICAg
ICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShmb3JtVGFnKSkKKyAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihlbGVtZW50KTsKKyAgICAgICAgTm9kZSog
cGFyZW50ID0gZWxlbWVudC0+cGFyZW50KCk7CisgICAgICAgIGlmICghcGFyZW50LT5pc0VsZW1l
bnROb2RlKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgZWxlbWVudCA9IHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihwYXJlbnQpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogfSAv
LyBuYW1lc3BhY2UKIAogY2xhc3MgSFRNTFRyZWVCdWlsZGVyOjpFeHRlcm5hbENoYXJhY3RlclRv
a2VuQnVmZmVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKQEAgLTM0NywyOCArMzYwLDM1IEBAIEhU
TUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKEhUTUxUb2tlbml6ZXIqIHRva2VuaXplciwg
SFRNTERvY3VtZW50KiBkb2N1bWVuCiAgICAgLCBtX2xhc3RTY3JpcHRFbGVtZW50U3RhcnRMaW5l
KHVuaW5pdGlhbGl6ZWRMaW5lTnVtYmVyVmFsdWUpCiAgICAgLCBtX3NjcmlwdFRvUHJvY2Vzc1N0
YXJ0TGluZSh1bmluaXRpYWxpemVkTGluZU51bWJlclZhbHVlKQogICAgICwgbV9mcmFnbWVudFNj
cmlwdGluZ1Blcm1pc3Npb24oRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKQotICAgICwgbV9pc1Bh
cnNpbmdGcmFnbWVudChmYWxzZSkKIHsKIH0KIAogLy8gRklYTUU6IE1lbWJlciB2YXJpYWJsZXMg
c2hvdWxkIGJlIGdyb3VwZWQgaW50byBzZWxmLWluaXRpYWxpemluZyBzdHJ1Y3RzIHRvCiAvLyBt
aW5pbWl6ZSBjb2RlIGR1cGxpY2F0aW9uIGJldHdlZW4gdGhlc2UgY29uc3RydWN0b3JzLgotSFRN
TFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIoSFRNTFRva2VuaXplciogdG9rZW5pemVyLCBE
b2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNj
cmlwdGluZ1Blcm1pc3Npb24pCitIVE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRlcihIVE1M
VG9rZW5pemVyKiB0b2tlbml6ZXIsIERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBFbGVtZW50
KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Bl
cm1pc3Npb24pCiAgICAgOiBtX2ZyYW1lc2V0T2sodHJ1ZSkKLSAgICAsIG1fZG9jdW1lbnQoZnJh
Z21lbnQtPmRvY3VtZW50KCkpCi0gICAgLCBtX3RyZWUoZnJhZ21lbnQtPmRvY3VtZW50KCksIHNj
cmlwdGluZ1Blcm1pc3Npb24sIHRydWUpCisgICAgLCBtX2R1bW15RG9jdW1lbnRGb3JGcmFnbWVu
dFBhcnNlKEhUTUxEb2N1bWVudDo6Y3JlYXRlKDAsIEtVUkwoKSkpCisgICAgLCBtX2ZyYWdtZW50
KGZyYWdtZW50KQorICAgICwgbV9jb250ZXh0RWxlbWVudChjb250ZXh0RWxlbWVudCkKKyAgICAs
IG1fZG9jdW1lbnQobV9kdW1teURvY3VtZW50Rm9yRnJhZ21lbnRQYXJzZS5nZXQoKSkKKyAgICAs
IG1fdHJlZShtX2RvY3VtZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uLCB0cnVlKQogICAgICwgbV9y
ZXBvcnRFcnJvcnMoZmFsc2UpIC8vIEZJWE1FOiBXaHkgbm90IHJlcG9ydCBlcnJvcnMgaW4gZnJh
Z21lbnRzPwogICAgICwgbV9pc1BhdXNlZChmYWxzZSkKICAgICAsIG1faW5zZXJ0aW9uTW9kZShJ
bml0aWFsTW9kZSkKICAgICAsIG1fb3JpZ2luYWxJbnNlcnRpb25Nb2RlKEluaXRpYWxNb2RlKQog
ICAgICwgbV9zZWNvbmRhcnlJbnNlcnRpb25Nb2RlKEluaXRpYWxNb2RlKQogICAgICwgbV90b2tl
bml6ZXIodG9rZW5pemVyKQotICAgICwgbV9sZWdhY3lUcmVlQnVpbGRlcihuZXcgTGVnYWN5SFRN
TFRyZWVCdWlsZGVyKGZyYWdtZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uKSkKICAgICAsIG1fbGFz
dFNjcmlwdEVsZW1lbnRTdGFydExpbmUodW5pbml0aWFsaXplZExpbmVOdW1iZXJWYWx1ZSkKICAg
ICAsIG1fc2NyaXB0VG9Qcm9jZXNzU3RhcnRMaW5lKHVuaW5pdGlhbGl6ZWRMaW5lTnVtYmVyVmFs
dWUpCiAgICAgLCBtX2ZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbihzY3JpcHRpbmdQZXJtaXNz
aW9uKQotICAgICwgbV9pc1BhcnNpbmdGcmFnbWVudCh0cnVlKQogeworICAgIC8vIFRoaXMgaXMg
c3RlcHMgMi02IG9mIHRoZSBIVE1MNSBGcmFnbWVudCBDYXNlIHBhcnNpbmcgYWxnb3JpdGhtOgor
ICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
bXVsdGlwYWdlL3RoZS1lbmQuaHRtbCNmcmFnbWVudC1jYXNlCisgICAgaWYgKG1fY29udGV4dEVs
ZW1lbnQpCisgICAgICAgIG1fZHVtbXlEb2N1bWVudEZvckZyYWdtZW50UGFyc2UtPnNldFBhcnNl
TW9kZShtX2NvbnRleHRFbGVtZW50LT5kb2N1bWVudCgpLT5wYXJzZU1vZGUoKSk7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsgLy8gQXBwZW5kIGFuIDxodG1sPiBlbGVtZW50LgorICAgIHJlc2V0SW5z
ZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKTsKKyAgICBtX3RyZWUuc2V0Rm9ybShjbG9zZXN0Rm9y
bUFuY2VzdG9yKGNvbnRleHRFbGVtZW50KSk7CiB9CiAKIEhUTUxUcmVlQnVpbGRlcjo6fkhUTUxU
cmVlQnVpbGRlcigpCkBAIC0xMDczLDcgKzEwOTMsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc1N0YXJ0VGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiBib29sIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NvbGdyb3VwRW5kVGFnRm9ySW5Db2x1bW5Hcm91cCgpCiB7
CiAgICAgaWYgKG1fdHJlZS5jdXJyZW50RWxlbWVudCgpID09IG1fdHJlZS5vcGVuRWxlbWVudHMo
KS0+aHRtbEVsZW1lbnQoKSkgewotICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7
CisgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgLy8gRklYTUU6
IHBhcnNlIGVycm9yCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xMTM0LDcgKzEx
NTQsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5UYWJsZShB
dG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gdGFibGVUYWcp
IHsKICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAgIGlmICghcHJvY2Vzc1RhYmxl
RW5kVGFnRm9ySW5UYWJsZSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFn
bWVudCk7CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgcHJvY2Vzc1N0YXJ0VGFnKHRva2VuKTsK
QEAgLTEyODMsNyArMTMwMyw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRU
YWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIHx8IHRva2VuLm5hbWUoKSA9
PSB0clRhZykgewogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAgICAgICBp
ZiAoIXByb2Nlc3NDYXB0aW9uRW5kVGFnRm9ySW5DYXB0aW9uKCkpIHsKLSAgICAgICAgICAgICAg
ICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlz
UGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHByb2Nlc3NTdGFydFRhZyh0b2tlbik7CkBAIC0xMzAyLDcgKzEzMjIs
NyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tl
biYgdG9rZW4pCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFw
cm9jZXNzQ29sZ3JvdXBFbmRUYWdGb3JJbkNvbHVtbkdyb3VwKCkpIHsKLSAgICAgICAgICAgIEFT
U0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdG
cmFnbWVudCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBwcm9j
ZXNzU3RhcnRUYWcodG9rZW4pOwpAQCAtMTMyNSw3ICsxMzQ1LDcgQEAgdm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBp
ZiAoaXNDYXB0aW9uQ29sT3JDb2xncm91cFRhZyh0b2tlbi5uYW1lKCkpIHx8IGlzVGFibGVCb2R5
Q29udGV4dFRhZyh0b2tlbi5uYW1lKCkpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBp
cyBzbG93LgogICAgICAgICAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVT
Y29wZSh0Ym9keVRhZy5sb2NhbE5hbWUoKSkgJiYgIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5U
YWJsZVNjb3BlKHRoZWFkVGFnLmxvY2FsTmFtZSgpKSAmJiAhbV90cmVlLm9wZW5FbGVtZW50cygp
LT5pblRhYmxlU2NvcGUodGZvb3RUYWcubG9jYWxOYW1lKCkpKSB7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAgICAgICAgICAgICAgIEFTU0VSVChpc1Bh
cnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0xMzUwLDcgKzEzNzAsNyBA
QCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYg
dG9rZW4pCiAgICAgICAgICAgICB8fCBpc0NhcHRpb25Db2xPckNvbGdyb3VwVGFnKHRva2VuLm5h
bWUoKSkKICAgICAgICAgICAgIHx8IGlzVGFibGVCb2R5Q29udGV4dFRhZyh0b2tlbi5uYW1lKCkp
KSB7CiAgICAgICAgICAgICBpZiAoIXByb2Nlc3NUckVuZFRhZ0ZvckluUm93KCkpIHsKLSAgICAg
ICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICAgICAg
QVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5UYWJs
ZUJvZHlNb2RlKTsKQEAgLTEzNjcsNyArMTM4Nyw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIHx8IGlz
VGFibGVCb2R5Q29udGV4dFRhZyh0b2tlbi5uYW1lKCkpKSB7CiAgICAgICAgICAgICAvLyBGSVhN
RTogVGhpcyBjb3VsZCBiZSBtb3JlIGVmZmljaWVudC4KICAgICAgICAgICAgIGlmICghbV90cmVl
Lm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2NvcGUodGRUYWcpICYmICFtX3RyZWUub3BlbkVsZW1l
bnRzKCktPmluVGFibGVTY29wZSh0aFRhZykpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9p
c1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdt
ZW50KCkpOwogICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTE3ODAsMTIgKzE4MDAsMTIgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKQogICAgIHdo
aWxlICgxKSB7CiAgICAgICAgIEVsZW1lbnQqIG5vZGUgPSBub2RlUmVjb3JkLT5lbGVtZW50KCk7
CiAgICAgICAgIGlmIChub2RlID09IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+Ym90dG9tKCkpIHsK
LSAgICAgICAgICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgIEFT
U0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIGxhc3QgPSB0cnVlOwotICAg
ICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsgLy8gbm9kZSA9IG1fY29udGV4dEVsZW1lbnQ7Cisg
ICAgICAgICAgICBub2RlID0gbV9jb250ZXh0RWxlbWVudDsKICAgICAgICAgfQogICAgICAgICBp
ZiAobm9kZS0+aGFzVGFnTmFtZShzZWxlY3RUYWcpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9p
c1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQo
KSk7CiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZUFuZEVuZChJblNlbGVjdE1v
ZGUsIGZvcmVpZ24pOwogICAgICAgICB9CiAgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRk
VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKHRoVGFnKSkKQEAgLTE3OTcsMzAgKzE4MTcsMzAgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKQog
ICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShjYXB0aW9uVGFnKSkKICAgICAgICAgICAgIHJl
dHVybiBzZXRJbnNlcnRpb25Nb2RlQW5kRW5kKEluQ2FwdGlvbk1vZGUsIGZvcmVpZ24pOwogICAg
ICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShjb2xncm91cFRhZykpIHsKLSAgICAgICAgICAgIEFT
U0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdG
cmFnbWVudCgpKTsKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlQW5kRW5kKElu
Q29sdW1uR3JvdXBNb2RlLCBmb3JlaWduKTsKICAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+
aGFzVGFnTmFtZSh0YWJsZVRhZykpCiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9k
ZUFuZEVuZChJblRhYmxlTW9kZSwgZm9yZWlnbik7CiAgICAgICAgIGlmIChub2RlLT5oYXNUYWdO
YW1lKGhlYWRUYWcpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7
CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZUFuZEVuZChJbkJvZHlNb2RlLCBmb3JlaWduKTsKICAgICAg
ICAgfQogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShib2R5VGFnKSkKICAgICAgICAgICAg
IHJldHVybiBzZXRJbnNlcnRpb25Nb2RlQW5kRW5kKEluQm9keU1vZGUsIGZvcmVpZ24pOwogICAg
ICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShmcmFtZXNldFRhZykpIHsKLSAgICAgICAgICAgIEFT
U0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdG
cmFnbWVudCgpKTsKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlQW5kRW5kKElu
RnJhbWVzZXRNb2RlLCBmb3JlaWduKTsKICAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+aGFz
VGFnTmFtZShodG1sVGFnKSkgewotICAgICAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21l
bnQpOworICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAg
ICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGVBbmRFbmQoQmVmb3JlSGVhZE1vZGUsIGZvcmVpZ24p
OwogICAgICAgICB9CiAgICAgICAgIGlmIChub2RlLT5uYW1lc3BhY2VVUkkoKSA9PSBTVkdOYW1l
czo6c3ZnTmFtZXNwYWNlVVJJCiAgICAgICAgICAgICB8fCBub2RlLT5uYW1lc3BhY2VVUkkoKSA9
PSBNYXRoTUxOYW1lczo6bWF0aG1sTmFtZXNwYWNlVVJJKQogICAgICAgICAgICAgZm9yZWlnbiA9
IHRydWU7CiAgICAgICAgIGlmIChsYXN0KSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNp
bmdGcmFnbWVudCk7CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZUFuZEVuZChJbkJvZHlNb2RlLCBmb3Jl
aWduKTsKICAgICAgICAgfQogICAgICAgICBub2RlUmVjb3JkID0gbm9kZVJlY29yZC0+bmV4dCgp
OwpAQCAtMTg0Myw3ICsxODYzLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRU
YWdGb3JJblRhYmxlQm9keShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgIGlmICh0b2tlbi5u
YW1lKCkgPT0gdGFibGVUYWcpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgc2xvdy4KICAg
ICAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0Ym9keVRhZy5s
b2NhbE5hbWUoKSkgJiYgIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJsZVNjb3BlKHRoZWFk
VGFnLmxvY2FsTmFtZSgpKSAmJiAhbV90cmVlLm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2NvcGUo
dGZvb3RUYWcubG9jYWxOYW1lKCkpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdG
cmFnbWVudCk7CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAg
ICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtMTg3Myw3ICsxODkzLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRU
YWdGb3JJblJvdyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgIH0KICAgICBpZiAodG9rZW4u
bmFtZSgpID09IHRhYmxlVGFnKSB7CiAgICAgICAgIGlmICghcHJvY2Vzc1RyRW5kVGFnRm9ySW5S
b3coKSkgewotICAgICAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAgICAg
ICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5UYWJsZUJvZHlN
b2RlKTsKQEAgLTE5MjcsNyArMTk0Nyw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
RW5kVGFnRm9ySW5DZWxsKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIHx8IHRva2Vu
Lm5hbWUoKSA9PSB0clRhZwogICAgICAgICB8fCBpc1RhYmxlQm9keUNvbnRleHRUYWcodG9rZW4u
bmFtZSgpKSkgewogICAgICAgICBpZiAoIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJsZVNj
b3BlKHRva2VuLm5hbWUoKSkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdt
ZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBJdCBpcyB1bmNsZWFyIHdoYXQgdGhlIGV4YWN0IEFTU0VSVCBzaG91bGQg
YmUuCiAgICAgICAgICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1
Zy5jZ2k/aWQ9MTAwOTgKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwpAQCAtMjA3OSw3
ICsyMDk5LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJbkJvZHko
QXRvbWljSFRNTFRva2VuJiB0b2tlbikKIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2Fw
dGlvbkVuZFRhZ0ZvckluQ2FwdGlvbigpCiB7CiAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRz
KCktPmluVGFibGVTY29wZShjYXB0aW9uVGFnLmxvY2FsTmFtZSgpKSkgewotICAgICAgICBBU1NF
UlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVu
dCgpKTsKICAgICAgICAgLy8gRklYTUU6IHBhcnNlIGVycm9yCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CkBAIC0yMDk0LDcgKzIxMTQsNyBAQCBib29sIEhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc0NhcHRpb25FbmRUYWdGb3JJbkNhcHRpb24oKQogYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NUckVuZFRhZ0ZvckluUm93KCkKIHsKICAgICBpZiAoIW1fdHJlZS5vcGVuRWxlbWVudHMo
KS0+aW5UYWJsZVNjb3BlKHRyVGFnLmxvY2FsTmFtZSgpKSkgewotICAgICAgICBBU1NFUlQobV9p
c1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsK
ICAgICAgICAgLy8gRklYTUU6IHBhcnNlIGVycm9yCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CkBAIC0yMTA4LDcgKzIxMjgsNyBAQCBib29sIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Ry
RW5kVGFnRm9ySW5Sb3coKQogYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUYWJsZUVuZFRh
Z0ZvckluVGFibGUoKQogewogICAgIGlmICghbV90cmVlLm9wZW5FbGVtZW50cygpLT5pblRhYmxl
U2NvcGUodGFibGVUYWcpKSB7Ci0gICAgICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsK
KyAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAvLyBGSVhNRTog
cGFyc2UgZXJyb3IuCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yMjAwLDcgKzIy
MjAsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9r
ZW4mIHRva2VuKQogICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IHRhYmxlVGFnKSB7CiAgICAg
ICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgICAgIGlmICghcHJvY2Vzc0NhcHRp
b25FbmRUYWdGb3JJbkNhcHRpb24oKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVChtX2lzUGFy
c2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQo
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
cHJvY2Vzc0VuZFRhZyh0b2tlbik7CkBAIC0yMjI5LDcgKzIyNDksNyBAQCB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmICghcHJvY2Vzc0NvbGdyb3VwRW5kVGFn
Rm9ySW5Db2x1bW5Hcm91cCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFn
bWVudCk7CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgcHJvY2Vzc0VuZFRhZyh0b2tlbik7CkBA
IC0yMjQ5LDcgKzIyNjksNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhB
dG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgIGNhc2UgQWZ0ZXJCb2R5TW9kZToKICAgICAgICAg
QVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBBZnRlckJvZHlNb2RlKTsKICAgICAgICAgaWYgKHRv
a2VuLm5hbWUoKSA9PSBodG1sVGFnKSB7Ci0gICAgICAgICAgICBpZiAobV9pc1BhcnNpbmdGcmFn
bWVudCkgeworICAgICAgICAgICAgaWYgKGlzUGFyc2luZ0ZyYWdtZW50KCkpIHsKICAgICAgICAg
ICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CkBAIC0yMzAxLDcgKzIzMjEsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cG9w
KCk7Ci0gICAgICAgICAgICBpZiAoIW1faXNQYXJzaW5nRnJhZ21lbnQgJiYgIW1fdHJlZS5jdXJy
ZW50RWxlbWVudCgpLT5oYXNUYWdOYW1lKGZyYW1lc2V0VGFnKSkKKyAgICAgICAgICAgIGlmICgh
aXNQYXJzaW5nRnJhZ21lbnQoKSAmJiAhbV90cmVlLmN1cnJlbnRFbGVtZW50KCktPmhhc1RhZ05h
bWUoZnJhbWVzZXRUYWcpKQogICAgICAgICAgICAgICAgIHNldEluc2VydGlvbk1vZGUoQWZ0ZXJG
cmFtZXNldE1vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNTQ0LDcg
KzI1NjQsNyBAQCBSZXByb2Nlc3NCdWZmZXI6CiAgICAgICAgIGlmIChidWZmZXIuaXNFbXB0eSgp
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoIXByb2Nlc3NDb2xncm91cEVuZFRh
Z0ZvckluQ29sdW1uR3JvdXAoKSkgewotICAgICAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJh
Z21lbnQpOworICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGdvdG8gUmVwcm9jZXNzQnVmZmVyOwpA
QCAtMjY2NCwxMSArMjY4NCwxMSBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9m
RmlsZShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBicmVhazsKICAgICBjYXNlIElu
Q29sdW1uR3JvdXBNb2RlOgogICAgICAgICBpZiAobV90cmVlLmN1cnJlbnRFbGVtZW50KCkgPT0g
bV90cmVlLm9wZW5FbGVtZW50cygpLT5odG1sRWxlbWVudCgpKSB7Ci0gICAgICAgICAgICBBU1NF
UlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJh
Z21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFw
cm9jZXNzQ29sZ3JvdXBFbmRUYWdGb3JJbkNvbHVtbkdyb3VwKCkpIHsKLSAgICAgICAgICAgIEFT
U0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdG
cmFnbWVudCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBwcm9j
ZXNzRW5kT2ZGaWxlKHRva2VuKTsKQEAgLTI4MzMsOCArMjg1MywyMyBAQCB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6ZmluaXNoZWQoKQogICAgIH0KIAogICAgIC8vIFdhcm5pbmcsIHRoaXMgbWF5IGRl
bGV0ZSB0aGUgcGFyc2VyLCBzbyBkb24ndCB0cnkgdG8gZG8gYW55dGhpbmcgZWxzZSBhZnRlciB0
aGlzLgotICAgIGlmICghbV9pc1BhcnNpbmdGcmFnbWVudCkKKyAgICBpZiAoIWlzUGFyc2luZ0Zy
YWdtZW50KCkpCiAgICAgICAgIG1fZG9jdW1lbnQtPmZpbmlzaGVkUGFyc2luZygpOworICAgIGVs
c2UgeworICAgICAgICAvLyBQb3B1bGF0ZSB0aGUgRG9jdW1lbnRGcmFnbWVudCB3aXRoIHRoZSBw
YXJzZWQgY29udGVudCBub3cgdGhhdCB3ZSdyZSBkb25lLgorICAgICAgICBDb250YWluZXJOb2Rl
KiByb290ID0gbV9kdW1teURvY3VtZW50Rm9yRnJhZ21lbnRQYXJzZS5nZXQoKTsKKyAgICAgICAg
aWYgKG1fY29udGV4dEVsZW1lbnQpCisgICAgICAgICAgICByb290ID0gbV9kdW1teURvY3VtZW50
Rm9yRnJhZ21lbnRQYXJzZS0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgICAgIE5vZGUqIG5leHRD
aGlsZCA9IHJvb3QtPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgd2hpbGUgKG5leHRDaGlsZCkgewor
ICAgICAgICAgICAgTm9kZSogY2hpbGQgPSBuZXh0Q2hpbGQ7CisgICAgICAgICAgICBuZXh0Q2hp
bGQgPSBuZXh0Q2hpbGQtPm5leHRTaWJsaW5nKCk7CisgICAgICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKKyAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBuZXdDaGlsZCA9IG1fZnJhZ21lbnQt
PmRvY3VtZW50KCktPmFkb3B0Tm9kZShjaGlsZCwgZWMpOworICAgICAgICAgICAgQVNTRVJUKCFl
Yyk7CisgICAgICAgICAgICBtX2ZyYWdtZW50LT5wYXJzZXJBZGRDaGlsZChuZXdDaGlsZC5yZWxl
YXNlKCkpOworICAgICAgICB9CisgICAgfQogfQogCiBib29sIEhUTUxUcmVlQnVpbGRlcjo6c2Ny
aXB0RW5hYmxlZChGcmFtZSogZnJhbWUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRy
ZWVCdWlsZGVyLmggYi9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmgKaW5kZXggZTMxZDA5
YjY2ZWYzYjdjMTVlN2MwM2YwZWY4OWE0YjRiMWYzMDc2Yi4uYTdjOTc2YjYwYzVhYTM2YWExMzdi
MDc3YTBlOWY5NThmZWY2MTU4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVp
bGRlci5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuaApAQCAtNTQsNyArNTQs
NyBAQCBjbGFzcyBIVE1MVHJlZUJ1aWxkZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGlj
OgogICAgIC8vIEZJWE1FOiBSZXBsYWNlIGNvbnN0cnVjdG9ycyB3aXRoIGNyZWF0ZSgpIGZ1bmN0
aW9ucyByZXR1cm5pbmcgUGFzc093blB0cnMKICAgICBIVE1MVHJlZUJ1aWxkZXIoSFRNTFRva2Vu
aXplciosIEhUTUxEb2N1bWVudCosIGJvb2wgcmVwb3J0RXJyb3JzKTsKLSAgICBIVE1MVHJlZUJ1
aWxkZXIoSFRNTFRva2VuaXplciosIERvY3VtZW50RnJhZ21lbnQqLCBGcmFnbWVudFNjcmlwdGlu
Z1Blcm1pc3Npb24pOworICAgIEhUTUxUcmVlQnVpbGRlcihIVE1MVG9rZW5pemVyKiwgRG9jdW1l
bnRGcmFnbWVudCosIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Bl
cm1pc3Npb24pOwogICAgIH5IVE1MVHJlZUJ1aWxkZXIoKTsKIAogICAgIHZvaWQgc2V0UGF1c2Vk
KGJvb2wgcGF1c2VkKSB7IG1faXNQYXVzZWQgPSBwYXVzZWQ7IH0KQEAgLTc0LDYgKzc0LDkgQEAg
cHVibGljOgogICAgIC8vIHVudGlsIHdlIHN0b3AgdXNpbmcgdGhlIGxlZ2FjeSBwYXJzZXIuIERP
IE5PVCBDQUxMIFRISVMgTUVUSE9ELgogICAgIExlZ2FjeUhUTUxUcmVlQnVpbGRlciogbGVnYWN5
VHJlZUJ1aWxkZXIoKSBjb25zdCB7IHJldHVybiBtX2xlZ2FjeVRyZWVCdWlsZGVyLmdldCgpOyB9
CiAKKyAgICBzdGF0aWMgYm9vbCBzY3JpcHRFbmFibGVkKEZyYW1lKik7CisgICAgc3RhdGljIGJv
b2wgcGx1Z2luc0VuYWJsZWQoRnJhbWUqKTsKKwogcHJpdmF0ZToKICAgICBjbGFzcyBGYWtlSW5z
ZXJ0aW9uTW9kZTsKICAgICBjbGFzcyBFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyOwpAQCAt
MTA1LDYgKzEwOCw4IEBAIHByaXZhdGU6CiAgICAgICAgIEFmdGVyQWZ0ZXJGcmFtZXNldE1vZGUs
CiAgICAgfTsKIAorICAgIGJvb2wgaXNQYXJzaW5nRnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiAh
IW1fZnJhZ21lbnQ7IH0KKwogICAgIHZvaWQgcGFzc1Rva2VuVG9MZWdhY3lQYXJzZXIoSFRNTFRv
a2VuJik7CiAKICAgICB2b2lkIHByb2Nlc3NUb2tlbihBdG9taWNIVE1MVG9rZW4mKTsKQEAgLTE5
Miw4ICsxOTcsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0SW5zZXJ0aW9uTW9kZUFuZEVuZChJ
bnNlcnRpb25Nb2RlLCBib29sIGZvcmVpZ24pOyAvLyBIZWxwZXIgZm9yIHJlc2V0SW5zZXJ0aW9u
TW9kZUFwcHJvcHJpYXRlbHkKICAgICB2b2lkIHJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRl
bHkoKTsKIAotICAgIHN0YXRpYyBib29sIHNjcmlwdEVuYWJsZWQoRnJhbWUqIGZyYW1lKTsKLSAg
ICBzdGF0aWMgYm9vbCBwbHVnaW5zRW5hYmxlZChGcmFtZSogZnJhbWUpOworICAgIFJlZlB0cjxE
b2N1bWVudD4gbV9kdW1teURvY3VtZW50Rm9yRnJhZ21lbnRQYXJzZTsKKyAgICBEb2N1bWVudEZy
YWdtZW50KiBtX2ZyYWdtZW50OworICAgIEVsZW1lbnQqIG1fY29udGV4dEVsZW1lbnQ7CiAKICAg
ICBEb2N1bWVudCogbV9kb2N1bWVudDsKICAgICBIVE1MQ29uc3RydWN0aW9uU2l0ZSBtX3RyZWU7
CkBAIC0yMzEsNyArMjM3LDYgQEAgcHJpdmF0ZToKICAgICAvLyBGcmFnbWVudFNjcmlwdGluZ05v
dEFsbG93ZWQgY2F1c2VzIHRoZSBQYXJzZXIgdG8gcmVtb3ZlIGNoaWxkcmVuCiAgICAgLy8gZnJv
bSA8c2NyaXB0PiB0YWdzIChzbyBqYXZhc2NyaXB0IGRvZXNuJ3Qgc2hvdyB1cCBpbiBwYXN0ZXMp
LgogICAgIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBtX2ZyYWdtZW50U2NyaXB0aW5nUGVy
bWlzc2lvbjsKLSAgICBib29sIG1faXNQYXJzaW5nRnJhZ21lbnQ7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcCBiL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3IuY3BwCmluZGV4IGY5NDkxNjM4MWMyY2Y5ZTRiNTQwOGRjOTRkOTU0NWI1MjhhYzFlZDYu
LjdlMDdlZTNmZGJiMzI0OTIyYzJlYjgxM2IxY2U5M2ZiNmI5OWYyOWEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCisrKyBiL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNz
b3IuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYgc28KICAgICBS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBvdXRwdXREb2MtPmNyZWF0ZURvY3Vt
ZW50RnJhZ21lbnQoKTsKIAogICAgIGlmIChzb3VyY2VNSU1FVHlwZSA9PSAidGV4dC9odG1sIikK
LSAgICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChzb3VyY2VTdHJpbmcpOworICAgICAgICBmcmFn
bWVudC0+cGFyc2VIVE1MKHNvdXJjZVN0cmluZywgb3V0cHV0RG9jLT5kb2N1bWVudEVsZW1lbnQo
KSk7CiAgICAgZWxzZSBpZiAoc291cmNlTUlNRVR5cGUgPT0gInRleHQvcGxhaW4iKQogICAgICAg
ICBmcmFnbWVudC0+bGVnYWN5UGFyc2VyQWRkQ2hpbGQoVGV4dDo6Y3JlYXRlKG91dHB1dERvYywg
c291cmNlU3RyaW5nKSk7CiAgICAgZWxzZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63837</attachid>
            <date>2010-08-07 21:27:25 -0700</date>
            <delta_ts>2010-08-09 09:28:23 -0700</delta_ts>
            <desc>works</desc>
            <filename>bug-43586-20100807212724.patch</filename>
            <type>text/plain</type>
            <size>31597</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmQwNzM2NDk5Yzg4NGNlZGZiMWM0ZWE0MGQ1ZWIxZjdlNmIyYjZiZi4uMmEwNDcwOTMwMmVkNGZj
NTg4NTEzZmRlZmVkNjM1NGYyMDEzOGFjMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMC0wOC0wNiAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXNlIHRoZSBIVE1MNSBUcmVlQnVpbGRlciBmb3IgRnJhZ21l
bnQgUGFyc2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDM1ODYKKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIGRv
bS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRlcHJlY2F0ZWRDcmVh
dGVDb250ZXh0dWFsRnJhZ21lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAg
ICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRG
cm9tTWFya3VwKToKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTmFtZXM6OnRva2VuaXplclN0YXRlRm9yQ29udGV4dEVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJz
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50
RnJhZ21lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50UGFyc2VyLmg6CisgICAgICAg
ICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6
ZGVwcmVjYXRlZENyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRWxlbWVudDo6c2V0SW5uZXJIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50
OjpzZXRPdXRlckhUTUwpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxUb2tlbml6ZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUcmVlQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRlcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDb2xncm91cEVuZFRh
Z0ZvckluQ29sdW1uR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzU3RhcnRUYWdGb3JJblRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblRhYmxlQm9keSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblJvdyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJbkNlbGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2FwdGlvbkVuZFRhZ0Zvcklu
Q2FwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUckVu
ZFRhZ0ZvckluUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c1RhYmxlRW5kVGFnRm9ySW5UYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NFbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzQ2hhcmFjdGVyQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0VuZE9mRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6
OmZpbmlzaGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUcmVlQnVpbGRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjppc1BhcnNpbmdGcmFnbWVudCk6CisKIDIwMTAtMDgt
MDcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50
RnJhZ21lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKaW5kZXggZWNj
NTcyNTlmZWU4YWUzZWZkNzBiODlkZGY3MDQxZmIzZTVjYzVjZi4uNDc0ODViN2Y2NjQwMmQ4ZDcy
Yjk3ZDQwZTlmYmI4YTc3Y2QzMzFhZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnRG
cmFnbWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKQEAgLTgy
LDE2ICs4MiwxNiBAQCBib29sIERvY3VtZW50RnJhZ21lbnQ6OnNob3VsZFVzZUxlZ2FjeUhUTUxQ
YXJzZXIoKSBjb25zdAogICAgICAgICAmJiAhZG9jdW1lbnQoKS0+cGFnZSgpLT5zZXR0aW5ncygp
LT5odG1sNVBhcnNlckVuYWJsZWQoKTsKIH0KIAotdm9pZCBEb2N1bWVudEZyYWdtZW50OjpwYXJz
ZUhUTUwoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBz
Y3JpcHRpbmdQZXJtaXNzaW9uKQordm9pZCBEb2N1bWVudEZyYWdtZW50OjpwYXJzZUhUTUwoY29u
c3QgU3RyaW5nJiBzb3VyY2UsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlw
dGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKIHsKICAgICBpZiAoc2hvdWxkVXNl
TGVnYWN5SFRNTFBhcnNlcigpKQogICAgICAgICByZXR1cm4gTGVnYWN5SFRNTERvY3VtZW50UGFy
c2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQoc291cmNlLCB0aGlzLCBzY3JpcHRpbmdQZXJtaXNz
aW9uKTsKLSAgICBIVE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudChzb3Vy
Y2UsIHRoaXMsIHNjcmlwdGluZ1Blcm1pc3Npb24pOworICAgIEhUTUxEb2N1bWVudFBhcnNlcjo6
cGFyc2VEb2N1bWVudEZyYWdtZW50KHNvdXJjZSwgdGhpcywgY29udGV4dEVsZW1lbnQsIHNjcmlw
dGluZ1Blcm1pc3Npb24pOwogfQogCi1ib29sIERvY3VtZW50RnJhZ21lbnQ6OnBhcnNlWE1MKGNv
bnN0IFN0cmluZyYgc291cmNlLCBFbGVtZW50KiBwYXJlbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVy
bWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQorYm9vbCBEb2N1bWVudEZyYWdtZW50OjpwYXJz
ZVhNTChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZyYWdt
ZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQogewotICAgIHJldHVy
biBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KHNvdXJjZSwgdGhpcywg
cGFyZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uKTsKKyAgICByZXR1cm4gWE1MRG9jdW1lbnRQYXJz
ZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudChzb3VyY2UsIHRoaXMsIGNvbnRleHRFbGVtZW50LCBz
Y3JpcHRpbmdQZXJtaXNzaW9uKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9j
dW1lbnRGcmFnbWVudC5oIGIvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCmluZGV4IDVl
ZmYxN2ZjYWMwN2U3NmQ2MjczYzdiM2MzNDdiZGYzYWNjMzg3Y2EuLmQzZGFkYjhiMmRiMzQyZjA0
ZjI2OWZiNzE0Y2M0NDcxM2U5YmQ2ZWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50
RnJhZ21lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKQEAgLTMzLDgg
KzMzLDggQEAgY2xhc3MgRG9jdW1lbnRGcmFnbWVudCA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGUo
RG9jdW1lbnQqKTsKIAotICAgIHZvaWQgcGFyc2VIVE1MKGNvbnN0IFN0cmluZyYsIEZyYWdtZW50
U2NyaXB0aW5nUGVybWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7Ci0gICAgYm9v
bCBwYXJzZVhNTChjb25zdCBTdHJpbmcmLCBFbGVtZW50KiBwYXJlbnQsIEZyYWdtZW50U2NyaXB0
aW5nUGVybWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7CisgICAgdm9pZCBwYXJz
ZUhUTUwoY29uc3QgU3RyaW5nJiwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZyYWdtZW50U2Ny
aXB0aW5nUGVybWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7CisgICAgYm9vbCBw
YXJzZVhNTChjb25zdCBTdHJpbmcmLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRT
Y3JpcHRpbmdQZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKIAogcHJpdmF0
ZToKICAgICBEb2N1bWVudEZyYWdtZW50KERvY3VtZW50Kik7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDJmYTc1Y2U3
NjY1ZGIwZDBiZWI0OWJjMzgxYmYyYWQzODc4MWIwNDkuLjBlODllOTMzMzU1N2IwYjY3YzFiMzRk
ODIxZDJlYzkyNGI3M2IxMWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC05NSw3ICs5NSw3IEBAIFBhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gRWxlbWVudDo6Y3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGNvbnN0
IFN0cmluZyYgbWFyCiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZG9j
dW1lbnQoKS0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogCiAgICAgaWYgKGRvY3VtZW50KCkt
PmlzSFRNTERvY3VtZW50KCkpCi0gICAgICAgIGZyYWdtZW50LT5wYXJzZUhUTUwobWFya3VwLCBz
Y3JpcHRpbmdQZXJtaXNzaW9uKTsKKyAgICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChtYXJrdXAs
IHRoaXMsIHNjcmlwdGluZ1Blcm1pc3Npb24pOwogICAgIGVsc2UgewogICAgICAgICBpZiAoIWZy
YWdtZW50LT5wYXJzZVhNTChtYXJrdXAsIHRoaXMsIHNjcmlwdGluZ1Blcm1pc3Npb24pKQogICAg
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9wYWdhdGUgYSBzeW50YXggZXJyb3IgZXhj
ZXB0aW9uIG91dCBoZXJlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxDb25zdHJ1Y3Rp
b25TaXRlLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXgg
MGIxNzA4NmZlZDNiYjQ3MGEzYjI3ZDkwYmRhY2U3YWJiZmMwZjM0ZS4uNDZhODY1ODAzYmZiNGIz
MmRhZDg1NDAxYjUzMGJjZjU2MzBjODBkZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxD
b25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTENvbnN0cnVjdGlvblNp
dGUuY3BwCkBAIC0xNDEsNiArMTQxLDEzIEBAIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjp+SFRNTENv
bnN0cnVjdGlvblNpdGUoKQogewogfQogCit2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpzZXRG
b3JtKEhUTUxGb3JtRWxlbWVudCogZm9ybSkKK3sKKyAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQg
b25seSBiZSBuZWVkZWQgZm9yIEhUTUxUcmVlQnVpbGRlciBpbiB0aGUgZnJhZ21lbnQgY2FzZS4K
KyAgICBBU1NFUlQoIW1fZm9ybSk7CisgICAgbV9mb3JtID0gZm9ybTsKK30KKwogUGFzc1JlZlB0
cjxIVE1MRm9ybUVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjp0YWtlRm9ybSgpCiB7CiAg
ICAgcmV0dXJuIG1fZm9ybS5yZWxlYXNlKCk7CkBAIC0xODIsNyArMTg5LDE0IEBAIHZvaWQgSFRN
TENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxIdG1sU3RhcnRUYWdJbkJvZHkoQXRvbWljSFRN
TFRva2VuJiB0b2tlbikKIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxCb2R5
U3RhcnRUYWdJbkJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICAvLyBGSVhNRTog
cGFyc2UgZXJyb3IKLSAgICBub3RJbXBsZW1lbnRlZCgpOyAvLyBmcmFnbWVudCBjYXNlCisgICAg
Ly8gTm90ZTogVGhpcyBjaGVjayBpcyBvdXIgY29tcGxpY2F0ZWQgd2F5IG9mIHdyaXRpbmc6Cisg
ICAgLy8gIklmIHRoZSBzZWNvbmQgZWxlbWVudCBvbiB0aGUgc3RhY2sgb2Ygb3BlbiBlbGVtZW50
cyBpcyBub3QgYSBib2R5CisgICAgLy8gZWxlbWVudCwgb3IsIGlmIHRoZSBzdGFjayBvZiBvcGVu
IGVsZW1lbnRzIGhhcyBvbmx5IG9uZSBub2RlIG9uIGl0IgorICAgIGlmIChtX29wZW5FbGVtZW50
cy5odG1sRWxlbWVudCgpID09IG1fb3BlbkVsZW1lbnRzLnRvcCgpCisgICAgICAgIHx8IChtX29w
ZW5FbGVtZW50cy5odG1sRWxlbWVudCgpID09IG1fb3BlbkVsZW1lbnRzLm9uZUJlbG93VG9wKCkg
JiYgIW1fb3BlbkVsZW1lbnRzLnRvcCgpLT5oYXNUYWdOYW1lKGJvZHlUYWcpKSkgeworICAgICAg
ICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAg
ICAgbWVyZ2VBdHRyaWJ1dGVzRnJvbVRva2VuSW50b0VsZW1lbnQodG9rZW4sIG1fb3BlbkVsZW1l
bnRzLmJvZHlFbGVtZW50KCkpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTENv
bnN0cnVjdGlvblNpdGUuaCBiL1dlYkNvcmUvaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oCmlu
ZGV4IGQ5YzhhYzU5M2MyY2FlYjIyYzI5OGE3MWE4M2M1ZTIyODg2YzgxOWEuLjE2YmE1NmIxODM1
ZWM2N2U0N2FlNzhkY2RjY2Y5ZGM2ODBhMmE3ZWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9I
VE1MQ29uc3RydWN0aW9uU2l0ZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQ29uc3RydWN0aW9u
U2l0ZS5oCkBAIC04NCw2ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIEVsZW1lbnQqIGhlYWQoKSBj
b25zdCB7IHJldHVybiBtX2hlYWQuZ2V0KCk7IH0KIAorICAgIHZvaWQgc2V0Rm9ybShIVE1MRm9y
bUVsZW1lbnQqKTsKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0oKSBjb25zdCB7IHJldHVybiBt
X2Zvcm0uZ2V0KCk7IH0KICAgICBQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gdGFrZUZvcm0o
KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9X
ZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCAzNTRlN2VkNTJkNjliOTAz
Yzc2ZWZmNDEyZWIwOGJiNGYxYzA1ZmRkLi4yOGIzMTk4NDdiYmFjZGE2MTlmZGM0YjYyYzQyZjJl
YjdkNjU4MWY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNw
cAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJI
VE1MUGFyc2VyU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiSFRNTFRva2VuaXplci5oIgogI2luY2x1
ZGUgIkhUTUxQcmVsb2FkU2Nhbm5lci5oIgpAQCAtNDQsNiArNDUsOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKIG5hbWVzcGFjZSB7CiAK
IGNsYXNzIE5lc3RpbmdMZXZlbEluY3JlbWVudGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKQEAg
LTYzLDYgKzY2LDMxIEBAIHByaXZhdGU6CiAgICAgaW50KiBtX2NvdW50ZXI7CiB9OwogCisvLyBU
aGlzIGlzIGEgZGlyZWN0IHRyYW5zY3JpcHRpb24gb2Ygc3RlcCA0IGZyb206CisvLyBodHRwOi8v
d3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUt
ZW5kLmh0bWwjZnJhZ21lbnQtY2FzZQorSFRNTFRva2VuaXplcjo6U3RhdGUgdG9rZW5pemVyU3Rh
dGVGb3JDb250ZXh0RWxlbWVudChFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgYm9vbCByZXBvcnRF
cnJvcnMpCit7CisgICAgaWYgKCFjb250ZXh0RWxlbWVudCkKKyAgICAgICAgcmV0dXJuIEhUTUxU
b2tlbml6ZXI6OkRhdGFTdGF0ZTsKKworICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGNvbnRleHRU
YWcgPSBjb250ZXh0RWxlbWVudC0+dGFnUU5hbWUoKTsKKworICAgIGlmIChjb250ZXh0VGFnLm1h
dGNoZXModGl0bGVUYWcpIHx8IGNvbnRleHRUYWcubWF0Y2hlcyh0ZXh0YXJlYVRhZykpCisgICAg
ICAgIHJldHVybiBIVE1MVG9rZW5pemVyOjpSQ0RBVEFTdGF0ZTsKKyAgICBpZiAoY29udGV4dFRh
Zy5tYXRjaGVzKHN0eWxlVGFnKQorICAgICAgICB8fCBjb250ZXh0VGFnLm1hdGNoZXMoeG1wVGFn
KQorICAgICAgICB8fCBjb250ZXh0VGFnLm1hdGNoZXMoaWZyYW1lVGFnKQorICAgICAgICB8fCAo
Y29udGV4dFRhZy5tYXRjaGVzKG5vZW1iZWRUYWcpICYmIEhUTUxUcmVlQnVpbGRlcjo6cGx1Z2lu
c0VuYWJsZWQoY29udGV4dEVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkpKQorICAgICAgICB8
fCAoY29udGV4dFRhZy5tYXRjaGVzKG5vc2NyaXB0VGFnKSAmJiBIVE1MVHJlZUJ1aWxkZXI6OnNj
cmlwdEVuYWJsZWQoY29udGV4dEVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkpKQorICAgICAg
ICB8fCBjb250ZXh0VGFnLm1hdGNoZXMobm9mcmFtZXNUYWcpKQorICAgICAgICByZXR1cm4gcmVw
b3J0RXJyb3JzID8gSFRNTFRva2VuaXplcjo6UkFXVEVYVFN0YXRlIDogSFRNTFRva2VuaXplcjo6
UExBSU5URVhUU3RhdGU7CisgICAgaWYgKGNvbnRleHRUYWcubWF0Y2hlcyhzY3JpcHRUYWcpKQor
ICAgICAgICByZXR1cm4gcmVwb3J0RXJyb3JzID8gSFRNTFRva2VuaXplcjo6U2NyaXB0RGF0YVN0
YXRlIDogSFRNTFRva2VuaXplcjo6UExBSU5URVhUU3RhdGU7CisgICAgaWYgKGNvbnRleHRUYWcu
bWF0Y2hlcyhwbGFpbnRleHRUYWcpKQorICAgICAgICByZXR1cm4gSFRNTFRva2VuaXplcjo6UExB
SU5URVhUU3RhdGU7CisgICAgcmV0dXJuIEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZTsKK30KKwog
fSAvLyBuYW1lc3BhY2UKIAogSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIo
SFRNTERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCByZXBvcnRFcnJvcnMpCkBAIC03NCwxOSArMTAy
LDE5IEBAIEhUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVu
dCogZG9jdW1lbnQsIGJvb2wgcmVwb3J0RXJyb3JzCiAgICAgLCBtX2VuZFdhc0RlbGF5ZWQoZmFs
c2UpCiAgICAgLCBtX3dyaXRlTmVzdGluZ0xldmVsKDApCiB7Ci0gICAgYmVnaW4oKTsKIH0KIAog
Ly8gRklYTUU6IE1lbWJlciB2YXJpYWJsZXMgc2hvdWxkIGJlIGdyb3VwZWQgaW50byBzZWxmLWlu
aXRpYWxpemluZyBzdHJ1Y3RzIHRvCiAvLyBtaW5pbWl6ZSBjb2RlIGR1cGxpY2F0aW9uIGJldHdl
ZW4gdGhlc2UgY29uc3RydWN0b3JzLgotSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQ
YXJzZXIoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlz
c2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQorSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1l
bnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIGNvbnRleHRFbGVt
ZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKICAg
ICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihmcmFnbWVudC0+ZG9jdW1lbnQoKSkKICAgICAs
IG1fdG9rZW5pemVyKG5ldyBIVE1MVG9rZW5pemVyKQotICAgICwgbV90cmVlQnVpbGRlcihuZXcg
SFRNTFRyZWVCdWlsZGVyKG1fdG9rZW5pemVyLmdldCgpLCBmcmFnbWVudCwgc2NyaXB0aW5nUGVy
bWlzc2lvbikpCisgICAgLCBtX3RyZWVCdWlsZGVyKG5ldyBIVE1MVHJlZUJ1aWxkZXIobV90b2tl
bml6ZXIuZ2V0KCksIGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgc2NyaXB0aW5nUGVybWlzc2lv
bikpCiAgICAgLCBtX2VuZFdhc0RlbGF5ZWQoZmFsc2UpCiAgICAgLCBtX3dyaXRlTmVzdGluZ0xl
dmVsKDApCiB7Ci0gICAgYmVnaW4oKTsKKyAgICBib29sIHJlcG9ydEVycm9ycyA9IGZhbHNlOyAv
LyBGb3Igbm93IGRvY3VtZW50IGZyYWdtZW50IHBhcnNpbmcgbmV2ZXIgcmVwb3J0cyBlcnJvcnMu
CisgICAgbV90b2tlbml6ZXItPnNldFN0YXRlKHRva2VuaXplclN0YXRlRm9yQ29udGV4dEVsZW1l
bnQoY29udGV4dEVsZW1lbnQsIHJlcG9ydEVycm9ycykpOwogfQogCiBIVE1MRG9jdW1lbnRQYXJz
ZXI6On5IVE1MRG9jdW1lbnRQYXJzZXIoKQpAQCAtOTcsMTEgKzEyNSw2IEBAIEhUTUxEb2N1bWVu
dFBhcnNlcjo6fkhUTUxEb2N1bWVudFBhcnNlcigpCiAgICAgLy8gdGhlbiB3ZSBjb3VsZCBBU1NF
UlQgc29tZSBpbnZhcmlhbnRzIGhlcmUuCiB9CiAKLXZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpi
ZWdpbigpCi17Ci0gICAgLy8gRklYTUU6IFNob3VsZCB3ZSByZXNldCB0aGUgdG9rZW5pemVyPwot
fQotCiB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6c3RvcFBhcnNpbmcoKQogewogICAgIERvY3Vt
ZW50UGFyc2VyOjpzdG9wUGFyc2luZygpOwpAQCAtNDEzLDkgKzQzNiw5IEBAIFNjcmlwdENvbnRy
b2xsZXIqIEhUTUxEb2N1bWVudFBhcnNlcjo6c2NyaXB0KCkgY29uc3QKICAgICByZXR1cm4gbV9k
b2N1bWVudC0+ZnJhbWUoKSA/IG1fZG9jdW1lbnQtPmZyYW1lKCktPnNjcmlwdCgpIDogMDsKIH0K
IAotdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudChjb25zdCBT
dHJpbmcmIHNvdXJjZSwgRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEZyYWdtZW50U2NyaXB0
aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQordm9pZCBIVE1MRG9jdW1lbnRQYXJz
ZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRG9jdW1lbnRG
cmFnbWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlw
dGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKIHsKLSAgICBIVE1MRG9jdW1lbnRQ
YXJzZXIgcGFyc2VyKGZyYWdtZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uKTsKKyAgICBIVE1MRG9j
dW1lbnRQYXJzZXIgcGFyc2VyKGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgc2NyaXB0aW5nUGVy
bWlzc2lvbik7CiAgICAgcGFyc2VyLmluc2VydChzb3VyY2UpOyAvLyBVc2UgaW5zZXJ0KCkgc28g
dGhhdCB0aGUgcGFyc2VyIHdpbGwgbm90IHlpZWxkLgogICAgIHBhcnNlci5maW5pc2goKTsKICAg
ICBBU1NFUlQoIXBhcnNlci5wcm9jZXNzaW5nRGF0YSgpKTsgLy8gTWFrZSBzdXJlIHdlJ3JlIGRv
bmUuIDxyZGFyOi8vcHJvYmxlbS8zOTYzMTUxPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hU
TUxEb2N1bWVudFBhcnNlci5oIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5oCmlu
ZGV4IGNjNDZkMzEzZjI1MmYyZjlhNWEzYWFiYmQzMjRmYjcxMTc1OGRmMjkuLmQwNTU4NjE0ZjA1
YWFiMTkyYzg3YWJmN2Y4N2MyZWE4MzQxYmRhODcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9I
VE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2Vy
LmgKQEAgLTU0LDEzICs1NCwxMyBAQCBjbGFzcyBIVE1MRG9jdW1lbnRQYXJzZXIgOiAgcHVibGlj
IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciwgSFRNTFNjcmlwdFJ1bm5lckhvcwogcHVibGljOgog
ICAgIC8vIEZJWE1FOiBUaGVzZSBjb25zdHJ1Y3RvcnMgc2hvdWxkIGJlIG1hZGUgcHJpdmF0ZSBh
bmQgcmVwbGFjZWQgYnkgY3JlYXRlKCkgbWV0aG9kcy4KICAgICBIVE1MRG9jdW1lbnRQYXJzZXIo
SFRNTERvY3VtZW50KiwgYm9vbCByZXBvcnRFcnJvcnMpOwotICAgIEhUTUxEb2N1bWVudFBhcnNl
cihEb2N1bWVudEZyYWdtZW50KiwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKKyAgICBI
VE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCosIEVsZW1lbnQqIGNvbnRleHRFbGVt
ZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24pOwogICAgIHZpcnR1YWwgfkhUTUxEb2N1
bWVudFBhcnNlcigpOwogCiAgICAgLy8gRXhwb3NlZCBmb3IgSFRNTFBhcnNlclNjaGVkdWxlcgog
ICAgIHZvaWQgcmVzdW1lUGFyc2luZ0FmdGVyWWllbGQoKTsKIAotICAgIHN0YXRpYyB2b2lkIHBh
cnNlRG9jdW1lbnRGcmFnbWVudChjb25zdCBTdHJpbmcmLCBEb2N1bWVudEZyYWdtZW50KiwgRnJh
Z21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKKyAg
ICBzdGF0aWMgdm9pZCBwYXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiwgRG9jdW1l
bnRGcmFnbWVudCosIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Bl
cm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGluZ0FsbG93ZWQpOwogCiBwcml2YXRlOgogICAgIC8v
IERvY3VtZW50UGFyc2VyCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
IGIvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCAwMTk4OTAxZDczZjk1ZDMyMDE4
Y2Y1M2FiMTg2Y2Y0ZDg5YjRmY2ZlLi42ZmM1M2EyYmYwZWMwYTNiYTMzZWY2OTdhOGMyMzYzMjQy
NDdlN2ZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTI3NSw2ICsyNzUsNyBAQCBTdHJpbmcgSFRN
TEVsZW1lbnQ6Om91dGVySFRNTCgpIGNvbnN0CiAgICAgcmV0dXJuIGNyZWF0ZU1hcmt1cCh0aGlz
KTsKIH0KIAorLy8gRklYTUU6IFRoaXMgbWV0aG9kIGlzIHVuZWNlc3Nhcnkgd2l0aCB0aGUgbmV3
IEhUTUxEb2N1bWVudFBhcnNlci4KIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gSFRNTEVs
ZW1lbnQ6OmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChjb25zdCBTdHJpbmcmIG1hcmt1cCwgRnJh
Z21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCiB7CiAgICAgLy8g
VGhlIGZvbGxvd2luZyBpcyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGRlZmluaXRpb24gYXMgdXNl
ZCBieSBJRS4KQEAgLTM0MCw2ICszNDEsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlQ2hpbGRyZW5X
aXRoVGV4dChIVE1MRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBFeAogCiB2
b2lkIEhUTUxFbGVtZW50OjpzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKKyAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGNhbiBiZSByZW1vdmVkLCBp
dCdzIGhhbmRsZWQgYnkgdGhlIEhUTUxEb2N1bWVudFBhcnNlciBjb3JyZWN0bHkuCiAgICAgaWYg
KGhhc0xvY2FsTmFtZShzY3JpcHRUYWcpIHx8IGhhc0xvY2FsTmFtZShzdHlsZVRhZykpIHsKICAg
ICAgICAgLy8gU2NyaXB0IGFuZCBDU1Mgc291cmNlIHNob3VsZG4ndCBiZSBwYXJzZWQgYXMgSFRN
TC4KICAgICAgICAgcmVtb3ZlQ2hpbGRyZW4oKTsKQEAgLTU1MSw3ICs1NTMsNyBAQCB2b2lkIEhU
TUxFbGVtZW50OjppbnNlcnRBZGphY2VudEhUTUwoY29uc3QgU3RyaW5nJiB3aGVyZSwgY29uc3Qg
U3RyaW5nJiBtYXJrdXAsCiB7CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50
ID0gZG9jdW1lbnQoKS0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogICAgIGlmIChkb2N1bWVu
dCgpLT5pc0hUTUxEb2N1bWVudCgpKQotICAgICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChtYXJr
dXApOworICAgICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChtYXJrdXAsIHRoaXMpOwogICAgIGVs
c2UgewogICAgICAgICBpZiAoIWZyYWdtZW50LT5wYXJzZVhNTChtYXJrdXAsIHRoaXMpKQogICAg
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9wYWdhdGUgYSBzeW50YXggZXJyb3IgZXhj
ZXB0aW9uIG91dCBoZXJlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIu
aCBiL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmgKaW5kZXggZTRjYTE2YWNlMWJlM2Q3OGJh
NmY3MTUxMzU5ZGFkODAyMTk3Zjk4Yi4uMGU5YmEzYTJjYzA5YmU0OWM0ZGJlYzUzYmY2MDZmYzNj
MGYwNmViMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuaAorKysgYi9X
ZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5oCkBAIC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgRWxlbWVudDsKIGNsYXNzIEhUTUxUb2tlbjsKIAogY2xhc3Mg
SFRNTFRva2VuaXplciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIu
Y3BwCmluZGV4IDIxNzE2ZTNkODdiNGU0Zjc2NGQxMzM0M2Q4NzA2Nzg3N2VmMDJkNTQuLmZhYmQw
Mzk2MTRkZDExZmQwZDQ3NmY4NzkzYjQ2MDA4OTA5YzY0N2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxk
ZXIuY3BwCkBAIC0yNTMsNiArMjUzLDE5IEBAIGJvb2wgaXNOb3RGb3JtYXR0aW5nQW5kTm90UGhy
YXNpbmcoY29uc3QgRWxlbWVudCogZWxlbWVudCkKICAgICByZXR1cm4gaXNTY29waW5nVGFnKHRh
Z05hbWUpIHx8IGlzU3BlY2lhbFRhZyh0YWdOYW1lKTsKIH0KIAorSFRNTEZvcm1FbGVtZW50KiBj
bG9zZXN0Rm9ybUFuY2VzdG9yKEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgd2hpbGUgKGVsZW1l
bnQpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoZm9ybVRhZykpCisgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oZWxlbWVudCk7CisgICAg
ICAgIE5vZGUqIHBhcmVudCA9IGVsZW1lbnQtPnBhcmVudCgpOworICAgICAgICBpZiAoIXBhcmVu
dCB8fCAhcGFyZW50LT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihwYXJlbnQpOworICAgIH0KKyAg
ICByZXR1cm4gMDsKK30KKwogfSAvLyBuYW1lc3BhY2UKIAogY2xhc3MgSFRNTFRyZWVCdWlsZGVy
OjpFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKQEAg
LTMzNiw2ICszNDksOCBAQCBwcml2YXRlOgogCiBIVE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVp
bGRlcihIVE1MVG9rZW5pemVyKiB0b2tlbml6ZXIsIEhUTUxEb2N1bWVudCogZG9jdW1lbnQsIGJv
b2wgcmVwb3J0RXJyb3JzKQogICAgIDogbV9mcmFtZXNldE9rKHRydWUpCisgICAgLCBtX2ZyYWdt
ZW50KDApCisgICAgLCBtX2NvbnRleHRFbGVtZW50KDApCiAgICAgLCBtX2RvY3VtZW50KGRvY3Vt
ZW50KQogICAgICwgbV90cmVlKGRvY3VtZW50LCBGcmFnbWVudFNjcmlwdGluZ0FsbG93ZWQsIGZh
bHNlKQogICAgICwgbV9yZXBvcnRFcnJvcnMocmVwb3J0RXJyb3JzKQpAQCAtMzQ3LDI4ICszNjIs
MzUgQEAgSFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIoSFRNTFRva2VuaXplciogdG9r
ZW5pemVyLCBIVE1MRG9jdW1lbnQqIGRvY3VtZW4KICAgICAsIG1fbGFzdFNjcmlwdEVsZW1lbnRT
dGFydExpbmUodW5pbml0aWFsaXplZExpbmVOdW1iZXJWYWx1ZSkKICAgICAsIG1fc2NyaXB0VG9Q
cm9jZXNzU3RhcnRMaW5lKHVuaW5pdGlhbGl6ZWRMaW5lTnVtYmVyVmFsdWUpCiAgICAgLCBtX2Zy
YWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbihGcmFnbWVudFNjcmlwdGluZ0FsbG93ZWQpCi0gICAg
LCBtX2lzUGFyc2luZ0ZyYWdtZW50KGZhbHNlKQogewogfQogCiAvLyBGSVhNRTogTWVtYmVyIHZh
cmlhYmxlcyBzaG91bGQgYmUgZ3JvdXBlZCBpbnRvIHNlbGYtaW5pdGlhbGl6aW5nIHN0cnVjdHMg
dG8KIC8vIG1pbmltaXplIGNvZGUgZHVwbGljYXRpb24gYmV0d2VlbiB0aGVzZSBjb25zdHJ1Y3Rv
cnMuCi1IVE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRlcihIVE1MVG9rZW5pemVyKiB0b2tl
bml6ZXIsIERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1p
c3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKK0hUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWls
ZGVyKEhUTUxUb2tlbml6ZXIqIHRva2VuaXplciwgRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQs
IEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2Ny
aXB0aW5nUGVybWlzc2lvbikKICAgICA6IG1fZnJhbWVzZXRPayh0cnVlKQotICAgICwgbV9kb2N1
bWVudChmcmFnbWVudC0+ZG9jdW1lbnQoKSkKLSAgICAsIG1fdHJlZShmcmFnbWVudC0+ZG9jdW1l
bnQoKSwgc2NyaXB0aW5nUGVybWlzc2lvbiwgdHJ1ZSkKKyAgICAsIG1fZHVtbXlEb2N1bWVudEZv
ckZyYWdtZW50UGFyc2UoSFRNTERvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKSkKKyAgICAsIG1f
ZnJhZ21lbnQoZnJhZ21lbnQpCisgICAgLCBtX2NvbnRleHRFbGVtZW50KGNvbnRleHRFbGVtZW50
KQorICAgICwgbV9kb2N1bWVudChtX2R1bW15RG9jdW1lbnRGb3JGcmFnbWVudFBhcnNlLmdldCgp
KQorICAgICwgbV90cmVlKG1fZG9jdW1lbnQsIHNjcmlwdGluZ1Blcm1pc3Npb24sIHRydWUpCiAg
ICAgLCBtX3JlcG9ydEVycm9ycyhmYWxzZSkgLy8gRklYTUU6IFdoeSBub3QgcmVwb3J0IGVycm9y
cyBpbiBmcmFnbWVudHM/CiAgICAgLCBtX2lzUGF1c2VkKGZhbHNlKQogICAgICwgbV9pbnNlcnRp
b25Nb2RlKEluaXRpYWxNb2RlKQogICAgICwgbV9vcmlnaW5hbEluc2VydGlvbk1vZGUoSW5pdGlh
bE1vZGUpCiAgICAgLCBtX3NlY29uZGFyeUluc2VydGlvbk1vZGUoSW5pdGlhbE1vZGUpCiAgICAg
LCBtX3Rva2VuaXplcih0b2tlbml6ZXIpCi0gICAgLCBtX2xlZ2FjeVRyZWVCdWlsZGVyKG5ldyBM
ZWdhY3lIVE1MVHJlZUJ1aWxkZXIoZnJhZ21lbnQsIHNjcmlwdGluZ1Blcm1pc3Npb24pKQogICAg
ICwgbV9sYXN0U2NyaXB0RWxlbWVudFN0YXJ0TGluZSh1bmluaXRpYWxpemVkTGluZU51bWJlclZh
bHVlKQogICAgICwgbV9zY3JpcHRUb1Byb2Nlc3NTdGFydExpbmUodW5pbml0aWFsaXplZExpbmVO
dW1iZXJWYWx1ZSkKICAgICAsIG1fZnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKHNjcmlwdGlu
Z1Blcm1pc3Npb24pCi0gICAgLCBtX2lzUGFyc2luZ0ZyYWdtZW50KHRydWUpCiB7CisgICAgLy8g
VGhpcyBpcyBzdGVwcyAyLTYgb2YgdGhlIEhUTUw1IEZyYWdtZW50IENhc2UgcGFyc2luZyBhbGdv
cml0aG06CisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJl
bnQtd29yay9tdWx0aXBhZ2UvdGhlLWVuZC5odG1sI2ZyYWdtZW50LWNhc2UKKyAgICBpZiAobV9j
b250ZXh0RWxlbWVudCkKKyAgICAgICAgbV9kdW1teURvY3VtZW50Rm9yRnJhZ21lbnRQYXJzZS0+
c2V0UGFyc2VNb2RlKG1fY29udGV4dEVsZW1lbnQtPmRvY3VtZW50KCktPnBhcnNlTW9kZSgpKTsK
KyAgICBwcm9jZXNzRmFrZVN0YXJ0VGFnKGh0bWxUYWcpOworICAgIHJlc2V0SW5zZXJ0aW9uTW9k
ZUFwcHJvcHJpYXRlbHkoKTsKKyAgICBtX3RyZWUuc2V0Rm9ybShjbG9zZXN0Rm9ybUFuY2VzdG9y
KGNvbnRleHRFbGVtZW50KSk7CiB9CiAKIEhUTUxUcmVlQnVpbGRlcjo6fkhUTUxUcmVlQnVpbGRl
cigpCkBAIC0xMDczLDcgKzEwOTUsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0
YXJ0VGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiBib29sIEhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc0NvbGdyb3VwRW5kVGFnRm9ySW5Db2x1bW5Hcm91cCgpCiB7CiAgICAgaWYg
KG1fdHJlZS5jdXJyZW50RWxlbWVudCgpID09IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aHRtbEVs
ZW1lbnQoKSkgewotICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAg
IEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgLy8gRklYTUU6IHBhcnNlIGVy
cm9yCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xMTM0LDcgKzExNTYsNyBAQCB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5UYWJsZShBdG9taWNIVE1M
VG9rZW4mIHRva2VuKQogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gdGFibGVUYWcpIHsKICAgICAg
ICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAgIGlmICghcHJvY2Vzc1RhYmxlRW5kVGFnRm9y
SW5UYWJsZSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7Cisg
ICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgcHJvY2Vzc1N0YXJ0VGFnKHRva2VuKTsKQEAgLTEyODMs
NyArMTMwNSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWlj
SFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIHx8IHRva2VuLm5hbWUoKSA9PSB0clRhZykg
ewogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAgICAgICBpZiAoIXByb2Nl
c3NDYXB0aW9uRW5kVGFnRm9ySW5DYXB0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQo
bV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0Zy
YWdtZW50KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHByb2Nlc3NTdGFydFRhZyh0b2tlbik7CkBAIC0xMzAyLDcgKzEzMjQsNyBAQCB2b2lk
IEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4p
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFwcm9jZXNzQ29s
Z3JvdXBFbmRUYWdGb3JJbkNvbHVtbkdyb3VwKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lz
UGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBwcm9jZXNzU3RhcnRU
YWcodG9rZW4pOwpAQCAtMTMyNSw3ICsxMzQ3LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBpZiAoaXNDYXB0
aW9uQ29sT3JDb2xncm91cFRhZyh0b2tlbi5uYW1lKCkpIHx8IGlzVGFibGVCb2R5Q29udGV4dFRh
Zyh0b2tlbi5uYW1lKCkpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBzbG93Lgog
ICAgICAgICAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0Ym9k
eVRhZy5sb2NhbE5hbWUoKSkgJiYgIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJsZVNjb3Bl
KHRoZWFkVGFnLmxvY2FsTmFtZSgpKSAmJiAhbV90cmVlLm9wZW5FbGVtZW50cygpLT5pblRhYmxl
U2NvcGUodGZvb3RUYWcubG9jYWxOYW1lKCkpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG1f
aXNQYXJzaW5nRnJhZ21lbnQpOworICAgICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFn
bWVudCgpKTsKICAgICAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0xMzUwLDcgKzEzNzIsNyBAQCB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAg
ICAgICAgICAgICB8fCBpc0NhcHRpb25Db2xPckNvbGdyb3VwVGFnKHRva2VuLm5hbWUoKSkKICAg
ICAgICAgICAgIHx8IGlzVGFibGVCb2R5Q29udGV4dFRhZyh0b2tlbi5uYW1lKCkpKSB7CiAgICAg
ICAgICAgICBpZiAoIXByb2Nlc3NUckVuZFRhZ0ZvckluUm93KCkpIHsKLSAgICAgICAgICAgICAg
ICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlz
UGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5UYWJsZUJvZHlNb2Rl
KTsKQEAgLTEzNjcsNyArMTM4OSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3Rh
cnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIHx8IGlzVGFibGVCb2R5
Q29udGV4dFRhZyh0b2tlbi5uYW1lKCkpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBj
b3VsZCBiZSBtb3JlIGVmZmljaWVudC4KICAgICAgICAgICAgIGlmICghbV90cmVlLm9wZW5FbGVt
ZW50cygpLT5pblRhYmxlU2NvcGUodGRUYWcpICYmICFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmlu
VGFibGVTY29wZSh0aFRhZykpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdG
cmFnbWVudCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwog
ICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KQEAgLTE3ODEsMTIgKzE4MDMsMTIgQEAgdm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKQogICAgIHdoaWxlICgxKSB7
CiAgICAgICAgIEVsZW1lbnQqIG5vZGUgPSBub2RlUmVjb3JkLT5lbGVtZW50KCk7CiAgICAgICAg
IGlmIChub2RlID09IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+Ym90dG9tKCkpIHsKLSAgICAgICAg
ICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpc1Bh
cnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIGxhc3QgPSB0cnVlOwotICAgICAgICAgICAg
bm90SW1wbGVtZW50ZWQoKTsgLy8gbm9kZSA9IG1fY29udGV4dEVsZW1lbnQ7CisgICAgICAgICAg
ICBub2RlID0gbV9jb250ZXh0RWxlbWVudDsKICAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+
aGFzVGFnTmFtZShzZWxlY3RUYWcpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdG
cmFnbWVudCk7CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZUFuZEVuZChJblNlbGVjdE1vZGUsIGZvcmVp
Z24pOwogICAgICAgICB9CiAgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRkVGFnKSB8fCBu
b2RlLT5oYXNUYWdOYW1lKHRoVGFnKSkKQEAgLTE3OTgsMzAgKzE4MjAsMzAgQEAgdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKQogICAgICAgICBp
ZiAobm9kZS0+aGFzVGFnTmFtZShjYXB0aW9uVGFnKSkKICAgICAgICAgICAgIHJldHVybiBzZXRJ
bnNlcnRpb25Nb2RlQW5kRW5kKEluQ2FwdGlvbk1vZGUsIGZvcmVpZ24pOwogICAgICAgICBpZiAo
bm9kZS0+aGFzVGFnTmFtZShjb2xncm91cFRhZykpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lz
UGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgp
KTsKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlQW5kRW5kKEluQ29sdW1uR3Jv
dXBNb2RlLCBmb3JlaWduKTsKICAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFt
ZSh0YWJsZVRhZykpCiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZUFuZEVuZChJ
blRhYmxlTW9kZSwgZm9yZWlnbik7CiAgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGhlYWRU
YWcpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAg
ICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc2V0
SW5zZXJ0aW9uTW9kZUFuZEVuZChJbkJvZHlNb2RlLCBmb3JlaWduKTsKICAgICAgICAgfQogICAg
ICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShib2R5VGFnKSkKICAgICAgICAgICAgIHJldHVybiBz
ZXRJbnNlcnRpb25Nb2RlQW5kRW5kKEluQm9keU1vZGUsIGZvcmVpZ24pOwogICAgICAgICBpZiAo
bm9kZS0+aGFzVGFnTmFtZShmcmFtZXNldFRhZykpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lz
UGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgp
KTsKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlQW5kRW5kKEluRnJhbWVzZXRN
b2RlLCBmb3JlaWduKTsKICAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSho
dG1sVGFnKSkgewotICAgICAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAg
ICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJu
IHNldEluc2VydGlvbk1vZGVBbmRFbmQoQmVmb3JlSGVhZE1vZGUsIGZvcmVpZ24pOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChub2RlLT5uYW1lc3BhY2VVUkkoKSA9PSBTVkdOYW1lczo6c3ZnTmFt
ZXNwYWNlVVJJCiAgICAgICAgICAgICB8fCBub2RlLT5uYW1lc3BhY2VVUkkoKSA9PSBNYXRoTUxO
YW1lczo6bWF0aG1sTmFtZXNwYWNlVVJJKQogICAgICAgICAgICAgZm9yZWlnbiA9IHRydWU7CiAg
ICAgICAgIGlmIChsYXN0KSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVu
dCk7CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAg
ICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZUFuZEVuZChJbkJvZHlNb2RlLCBmb3JlaWduKTsKICAg
ICAgICAgfQogICAgICAgICBub2RlUmVjb3JkID0gbm9kZVJlY29yZC0+bmV4dCgpOwpAQCAtMTg0
NCw3ICsxODY2LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblRh
YmxlQm9keShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0g
dGFibGVUYWcpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgc2xvdy4KICAgICAgICAgaWYg
KCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0Ym9keVRhZy5sb2NhbE5hbWUo
KSkgJiYgIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJsZVNjb3BlKHRoZWFkVGFnLmxvY2Fs
TmFtZSgpKSAmJiAhbV90cmVlLm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2NvcGUodGZvb3RUYWcu
bG9jYWxOYW1lKCkpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7
CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICBw
YXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTg3
NCw3ICsxODk2LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblJv
dyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgIH0KICAgICBpZiAodG9rZW4ubmFtZSgpID09
IHRhYmxlVGFnKSB7CiAgICAgICAgIGlmICghcHJvY2Vzc1RyRW5kVGFnRm9ySW5Sb3coKSkgewot
ICAgICAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAgICAgICAgICAgQVNT
RVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5UYWJsZUJvZHlNb2RlKTsKQEAg
LTE5MjgsNyArMTk1MCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9y
SW5DZWxsKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIHx8IHRva2VuLm5hbWUoKSA9
PSB0clRhZwogICAgICAgICB8fCBpc1RhYmxlQm9keUNvbnRleHRUYWcodG9rZW4ubmFtZSgpKSkg
ewogICAgICAgICBpZiAoIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJsZVNjb3BlKHRva2Vu
Lm5hbWUoKSkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsKKyAg
ICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBJdCBpcyB1bmNsZWFyIHdoYXQgdGhlIGV4YWN0IEFTU0VSVCBzaG91bGQgYmUuCiAgICAg
ICAgICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9
MTAwOTgKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwpAQCAtMjA4MCw3ICsyMTAyLDcg
QEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJbkJvZHkoQXRvbWljSFRN
TFRva2VuJiB0b2tlbikKIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2FwdGlvbkVuZFRh
Z0ZvckluQ2FwdGlvbigpCiB7CiAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFi
bGVTY29wZShjYXB0aW9uVGFnLmxvY2FsTmFtZSgpKSkgewotICAgICAgICBBU1NFUlQobV9pc1Bh
cnNpbmdGcmFnbWVudCk7CisgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAg
ICAgICAgLy8gRklYTUU6IHBhcnNlIGVycm9yCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CkBAIC0yMDk1LDcgKzIxMTcsNyBAQCBib29sIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NhcHRp
b25FbmRUYWdGb3JJbkNhcHRpb24oKQogYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUckVu
ZFRhZ0ZvckluUm93KCkKIHsKICAgICBpZiAoIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJs
ZVNjb3BlKHRyVGFnLmxvY2FsTmFtZSgpKSkgewotICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdG
cmFnbWVudCk7CisgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAg
Ly8gRklYTUU6IHBhcnNlIGVycm9yCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0y
MTA5LDcgKzIxMzEsNyBAQCBib29sIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1RyRW5kVGFnRm9y
SW5Sb3coKQogYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUYWJsZUVuZFRhZ0ZvckluVGFi
bGUoKQogewogICAgIGlmICghbV90cmVlLm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2NvcGUodGFi
bGVUYWcpKSB7Ci0gICAgICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAg
QVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAvLyBGSVhNRTogcGFyc2UgZXJy
b3IuCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yMjAxLDcgKzIyMjMsNyBAQCB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2Vu
KQogICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IHRhYmxlVGFnKSB7CiAgICAgICAgICAgICBw
YXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgICAgIGlmICghcHJvY2Vzc0NhcHRpb25FbmRUYWdG
b3JJbkNhcHRpb24oKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdt
ZW50KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcHJvY2Vzc0Vu
ZFRhZyh0b2tlbik7CkBAIC0yMjMwLDcgKzIyNTIsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIGlmICghcHJvY2Vzc0NvbGdyb3VwRW5kVGFnRm9ySW5Db2x1
bW5Hcm91cCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7Cisg
ICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgcHJvY2Vzc0VuZFRhZyh0b2tlbik7CkBAIC0yMjUwLDcg
KzIyNzIsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1M
VG9rZW4mIHRva2VuKQogICAgIGNhc2UgQWZ0ZXJCb2R5TW9kZToKICAgICAgICAgQVNTRVJUKGlu
c2VydGlvbk1vZGUoKSA9PSBBZnRlckJvZHlNb2RlKTsKICAgICAgICAgaWYgKHRva2VuLm5hbWUo
KSA9PSBodG1sVGFnKSB7Ci0gICAgICAgICAgICBpZiAobV9pc1BhcnNpbmdGcmFnbWVudCkgewor
ICAgICAgICAgICAgaWYgKGlzUGFyc2luZ0ZyYWdtZW50KCkpIHsKICAgICAgICAgICAgICAgICBw
YXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CkBAIC0yMzAyLDcgKzIzMjQsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRh
ZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cG9wKCk7Ci0gICAg
ICAgICAgICBpZiAoIW1faXNQYXJzaW5nRnJhZ21lbnQgJiYgIW1fdHJlZS5jdXJyZW50RWxlbWVu
dCgpLT5oYXNUYWdOYW1lKGZyYW1lc2V0VGFnKSkKKyAgICAgICAgICAgIGlmICghaXNQYXJzaW5n
RnJhZ21lbnQoKSAmJiAhbV90cmVlLmN1cnJlbnRFbGVtZW50KCktPmhhc1RhZ05hbWUoZnJhbWVz
ZXRUYWcpKQogICAgICAgICAgICAgICAgIHNldEluc2VydGlvbk1vZGUoQWZ0ZXJGcmFtZXNldE1v
ZGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNTQ1LDcgKzI1NjcsNyBA
QCBSZXByb2Nlc3NCdWZmZXI6CiAgICAgICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoIXByb2Nlc3NDb2xncm91cEVuZFRhZ0ZvckluQ29s
dW1uR3JvdXAoKSkgewotICAgICAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOwor
ICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIGdvdG8gUmVwcm9jZXNzQnVmZmVyOwpAQCAtMjY2NSwx
MSArMjY4NywxMSBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZShBdG9t
aWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBicmVhazsKICAgICBjYXNlIEluQ29sdW1uR3Jv
dXBNb2RlOgogICAgICAgICBpZiAobV90cmVlLmN1cnJlbnRFbGVtZW50KCkgPT0gbV90cmVlLm9w
ZW5FbGVtZW50cygpLT5odG1sRWxlbWVudCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1Bh
cnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFwcm9jZXNzQ29s
Z3JvdXBFbmRUYWdGb3JJbkNvbHVtbkdyb3VwKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lz
UGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBwcm9jZXNzRW5kT2ZG
aWxlKHRva2VuKTsKQEAgLTI4MzQsOCArMjg1NiwyMyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
ZmluaXNoZWQoKQogICAgIH0KIAogICAgIC8vIFdhcm5pbmcsIHRoaXMgbWF5IGRlbGV0ZSB0aGUg
cGFyc2VyLCBzbyBkb24ndCB0cnkgdG8gZG8gYW55dGhpbmcgZWxzZSBhZnRlciB0aGlzLgotICAg
IGlmICghbV9pc1BhcnNpbmdGcmFnbWVudCkKKyAgICBpZiAoIWlzUGFyc2luZ0ZyYWdtZW50KCkp
CiAgICAgICAgIG1fZG9jdW1lbnQtPmZpbmlzaGVkUGFyc2luZygpOworICAgIGVsc2UgeworICAg
ICAgICAvLyBQb3B1bGF0ZSB0aGUgRG9jdW1lbnRGcmFnbWVudCB3aXRoIHRoZSBwYXJzZWQgY29u
dGVudCBub3cgdGhhdCB3ZSdyZSBkb25lLgorICAgICAgICBDb250YWluZXJOb2RlKiByb290ID0g
bV9kdW1teURvY3VtZW50Rm9yRnJhZ21lbnRQYXJzZS5nZXQoKTsKKyAgICAgICAgaWYgKG1fY29u
dGV4dEVsZW1lbnQpCisgICAgICAgICAgICByb290ID0gbV9kdW1teURvY3VtZW50Rm9yRnJhZ21l
bnRQYXJzZS0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgICAgIE5vZGUqIG5leHRDaGlsZCA9IHJv
b3QtPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgd2hpbGUgKG5leHRDaGlsZCkgeworICAgICAgICAg
ICAgTm9kZSogY2hpbGQgPSBuZXh0Q2hpbGQ7CisgICAgICAgICAgICBuZXh0Q2hpbGQgPSBuZXh0
Q2hpbGQtPm5leHRTaWJsaW5nKCk7CisgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBuZXdDaGlsZCA9IG1fZnJhZ21lbnQtPmRvY3VtZW50
KCktPmFkb3B0Tm9kZShjaGlsZCwgZWMpOworICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAg
ICAgICAgICBtX2ZyYWdtZW50LT5wYXJzZXJBZGRDaGlsZChuZXdDaGlsZC5yZWxlYXNlKCkpOwor
ICAgICAgICB9CisgICAgfQogfQogCiBib29sIEhUTUxUcmVlQnVpbGRlcjo6c2NyaXB0RW5hYmxl
ZChGcmFtZSogZnJhbWUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVy
LmggYi9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmgKaW5kZXggZTMxZDA5YjY2ZWYzYjdj
MTVlN2MwM2YwZWY4OWE0YjRiMWYzMDc2Yi4uYTdjOTc2YjYwYzVhYTM2YWExMzdiMDc3YTBlOWY5
NThmZWY2MTU4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5oCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFz
cyBIVE1MVHJlZUJ1aWxkZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgogICAgIC8v
IEZJWE1FOiBSZXBsYWNlIGNvbnN0cnVjdG9ycyB3aXRoIGNyZWF0ZSgpIGZ1bmN0aW9ucyByZXR1
cm5pbmcgUGFzc093blB0cnMKICAgICBIVE1MVHJlZUJ1aWxkZXIoSFRNTFRva2VuaXplciosIEhU
TUxEb2N1bWVudCosIGJvb2wgcmVwb3J0RXJyb3JzKTsKLSAgICBIVE1MVHJlZUJ1aWxkZXIoSFRN
TFRva2VuaXplciosIERvY3VtZW50RnJhZ21lbnQqLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Np
b24pOworICAgIEhUTUxUcmVlQnVpbGRlcihIVE1MVG9rZW5pemVyKiwgRG9jdW1lbnRGcmFnbWVu
dCosIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24p
OwogICAgIH5IVE1MVHJlZUJ1aWxkZXIoKTsKIAogICAgIHZvaWQgc2V0UGF1c2VkKGJvb2wgcGF1
c2VkKSB7IG1faXNQYXVzZWQgPSBwYXVzZWQ7IH0KQEAgLTc0LDYgKzc0LDkgQEAgcHVibGljOgog
ICAgIC8vIHVudGlsIHdlIHN0b3AgdXNpbmcgdGhlIGxlZ2FjeSBwYXJzZXIuIERPIE5PVCBDQUxM
IFRISVMgTUVUSE9ELgogICAgIExlZ2FjeUhUTUxUcmVlQnVpbGRlciogbGVnYWN5VHJlZUJ1aWxk
ZXIoKSBjb25zdCB7IHJldHVybiBtX2xlZ2FjeVRyZWVCdWlsZGVyLmdldCgpOyB9CiAKKyAgICBz
dGF0aWMgYm9vbCBzY3JpcHRFbmFibGVkKEZyYW1lKik7CisgICAgc3RhdGljIGJvb2wgcGx1Z2lu
c0VuYWJsZWQoRnJhbWUqKTsKKwogcHJpdmF0ZToKICAgICBjbGFzcyBGYWtlSW5zZXJ0aW9uTW9k
ZTsKICAgICBjbGFzcyBFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyOwpAQCAtMTA1LDYgKzEw
OCw4IEBAIHByaXZhdGU6CiAgICAgICAgIEFmdGVyQWZ0ZXJGcmFtZXNldE1vZGUsCiAgICAgfTsK
IAorICAgIGJvb2wgaXNQYXJzaW5nRnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiAhIW1fZnJhZ21l
bnQ7IH0KKwogICAgIHZvaWQgcGFzc1Rva2VuVG9MZWdhY3lQYXJzZXIoSFRNTFRva2VuJik7CiAK
ICAgICB2b2lkIHByb2Nlc3NUb2tlbihBdG9taWNIVE1MVG9rZW4mKTsKQEAgLTE5Miw4ICsxOTcs
OSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0SW5zZXJ0aW9uTW9kZUFuZEVuZChJbnNlcnRpb25N
b2RlLCBib29sIGZvcmVpZ24pOyAvLyBIZWxwZXIgZm9yIHJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJv
cHJpYXRlbHkKICAgICB2b2lkIHJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKTsKIAot
ICAgIHN0YXRpYyBib29sIHNjcmlwdEVuYWJsZWQoRnJhbWUqIGZyYW1lKTsKLSAgICBzdGF0aWMg
Ym9vbCBwbHVnaW5zRW5hYmxlZChGcmFtZSogZnJhbWUpOworICAgIFJlZlB0cjxEb2N1bWVudD4g
bV9kdW1teURvY3VtZW50Rm9yRnJhZ21lbnRQYXJzZTsKKyAgICBEb2N1bWVudEZyYWdtZW50KiBt
X2ZyYWdtZW50OworICAgIEVsZW1lbnQqIG1fY29udGV4dEVsZW1lbnQ7CiAKICAgICBEb2N1bWVu
dCogbV9kb2N1bWVudDsKICAgICBIVE1MQ29uc3RydWN0aW9uU2l0ZSBtX3RyZWU7CkBAIC0yMzEs
NyArMjM3LDYgQEAgcHJpdmF0ZToKICAgICAvLyBGcmFnbWVudFNjcmlwdGluZ05vdEFsbG93ZWQg
Y2F1c2VzIHRoZSBQYXJzZXIgdG8gcmVtb3ZlIGNoaWxkcmVuCiAgICAgLy8gZnJvbSA8c2NyaXB0
PiB0YWdzIChzbyBqYXZhc2NyaXB0IGRvZXNuJ3Qgc2hvdyB1cCBpbiBwYXN0ZXMpLgogICAgIEZy
YWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBtX2ZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbjsK
LSAgICBib29sIG1faXNQYXJzaW5nRnJhZ21lbnQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcCBiL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3Bw
CmluZGV4IGY5NDkxNjM4MWMyY2Y5ZTRiNTQwOGRjOTRkOTU0NWI1MjhhYzFlZDYuLjdlMDdlZTNm
ZGJiMzI0OTIyYzJlYjgxM2IxY2U5M2ZiNmI5OWYyOWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1s
L1hTTFRQcm9jZXNzb3IuY3BwCisrKyBiL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCkBA
IC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
Y3JlYXRlRnJhZ21lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYgc28KICAgICBSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBvdXRwdXREb2MtPmNyZWF0ZURvY3VtZW50RnJhZ21l
bnQoKTsKIAogICAgIGlmIChzb3VyY2VNSU1FVHlwZSA9PSAidGV4dC9odG1sIikKLSAgICAgICAg
ZnJhZ21lbnQtPnBhcnNlSFRNTChzb3VyY2VTdHJpbmcpOworICAgICAgICBmcmFnbWVudC0+cGFy
c2VIVE1MKHNvdXJjZVN0cmluZywgb3V0cHV0RG9jLT5kb2N1bWVudEVsZW1lbnQoKSk7CiAgICAg
ZWxzZSBpZiAoc291cmNlTUlNRVR5cGUgPT0gInRleHQvcGxhaW4iKQogICAgICAgICBmcmFnbWVu
dC0+bGVnYWN5UGFyc2VyQWRkQ2hpbGQoVGV4dDo6Y3JlYXRlKG91dHB1dERvYywgc291cmNlU3Ry
aW5nKSk7CiAgICAgZWxzZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63903</attachid>
            <date>2010-08-09 09:28:27 -0700</date>
            <delta_ts>2010-08-09 12:19:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43586-20100809092825.patch</filename>
            <type>text/plain</type>
            <size>40675</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MjYyNmQwOTAzMmUyNGM4NmYzMmM4NDgyYTNlYTlhZWUxNTY3YWUwLi4wMmUyM2E2
NGZhMGJhYWI5MTI2MmQ3ZjI5OTBjMTc2NjQ0ZGU4NzFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMDgtMDkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0aGUgSFRNTDUgVHJlZUJ1
aWxkZXIgZm9yIEZyYWdtZW50IFBhcnNpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQzNTg2CisKKyAgICAgICAgKiBodG1sNWxpYi9ydW5uZXItZXhw
ZWN0ZWQtaHRtbDUudHh0OgorICAgICAgICAgLSBXZSBwYXNzIDQgbW9yZSB0ZXN0cyBub3cgdGhh
dCBIVE1MNSBmcmFnbWVudCBwYXJzaW5nIGlzCisgICAgICAgICAgIChwYXJ0aWFsbHkpIGltcGxl
bWVudGVkIGJlaGluZCB0aGUgLS1odG1sNS10cmVlYnVpbGRlciBmbGFnLgorCiAyMDEwLTA4LTA5
ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
ZXJzIENhcmxzc29uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhw
ZWN0ZWQtaHRtbDUudHh0IGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLWh0
bWw1LnR4dAppbmRleCBhYzAxOWZmMjkzMjkxNTY3Nzc2OGM1Y2JjZDBiMTAyNWI3OTY3NzIzLi41
Y2EyMzI5MjU5MDQyMDQ2MWJiMWI5ZjRmZWRjZGNjZjg0YjA4OTgxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQtaHRtbDUudHh0CisrKyBiL0xheW91dFRl
c3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC1odG1sNS50eHQKQEAgLTE3LDMwICsxNyw5IEBA
IHJlc291cmNlcy90ZXN0czIuZGF0OiBQQVNTCiByZXNvdXJjZXMvdGVzdHMzLmRhdDogUEFTUwog
CiByZXNvdXJjZXMvdGVzdHM0LmRhdDoKLTMKLTUKIDYKIDcKIAotVGVzdCAzIG9mIDcgaW4gcmVz
b3VyY2VzL3Rlc3RzNC5kYXQgZmFpbGVkLiBJbnB1dDoKLXRleHRhcmVhIGNvbnRlbnQgd2l0aCA8
ZW0+cHNldWRvPC9lbT4gPGZvbz5tYXJrdXAKLUdvdDoKLXwgInRleHRhcmVhIGNvbnRlbnQgd2l0
aCAiCi18IDxlbT4KLXwgICAicHNldWRvIgotfCAiICIKLXwgPGZvbz4KLXwgICAibWFya3VwIgot
RXhwZWN0ZWQ6Ci18ICJ0ZXh0YXJlYSBjb250ZW50IHdpdGggPGVtPnBzZXVkbzwvZW0+IDxmb28+
bWFya3VwIgotCi1UZXN0IDUgb2YgNyBpbiByZXNvdXJjZXMvdGVzdHM0LmRhdCBmYWlsZWQuIElu
cHV0OgotPC9wbGFpbnRleHQ+Ci1Hb3Q6Ci18IAotRXhwZWN0ZWQ6Ci18ICI8L3BsYWludGV4dD4i
Ci0KIFRlc3QgNiBvZiA3IGluIHJlc291cmNlcy90ZXN0czQuZGF0IGZhaWxlZC4gSW5wdXQ6CiBz
ZXR0aW5nIGh0bWwncyBpbm5lckhUTUwKIEdvdDoKQEAgLTYyLDggKzQxLDYgQEAgcmVzb3VyY2Vz
L3Rlc3RzNS5kYXQ6IFBBU1MKIHJlc291cmNlcy90ZXN0czYuZGF0OgogMjcKIDMwCi0zNwotNDQK
IDQ1CiAKIFRlc3QgMjcgb2YgNTEgaW4gcmVzb3VyY2VzL3Rlc3RzNi5kYXQgZmFpbGVkLiBJbnB1
dDoKQEAgLTgwLDI2ICs1Nyw2IEBAIEdvdDoKIEV4cGVjdGVkOgogfCA8ZnJhbWU+CiAKLVRlc3Qg
Mzcgb2YgNTEgaW4gcmVzb3VyY2VzL3Rlc3RzNi5kYXQgZmFpbGVkLiBJbnB1dDoKLTxjYXB0aW9u
Pjxjb2w+PGNvbGdyb3VwPjx0Ym9keT48dGZvb3Q+PHRoZWFkPjx0cj4KLUdvdDoKLXwgPGNhcHRp
b24+Ci18IDxjb2xncm91cD4KLXwgPHRib2R5PgotfCA8dGZvb3Q+Ci18IDx0aGVhZD4KLXwgICA8
dHI+Ci1FeHBlY3RlZDoKLXwgPHRyPgotCi1UZXN0IDQ0IG9mIDUxIGluIHJlc291cmNlcy90ZXN0
czYuZGF0IGZhaWxlZC4gSW5wdXQ6Ci08L3RhYmxlPjx0cj4KLUdvdDoKLXwgPHRyPgotRXhwZWN0
ZWQ6Ci18IDx0Ym9keT4KLXwgICA8dHI+Ci0KIFRlc3QgNDUgb2YgNTEgaW4gcmVzb3VyY2VzL3Rl
c3RzNi5kYXQgZmFpbGVkLiBJbnB1dDoKIDxib2R5PjwvYm9keT48L2h0bWw+CiBHb3Q6CmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGI0ZWQw
NDdmOTA2NjQ2MmM1ODRiNjU2YzE4OTA0OTQ1MDhjMmVlYmIuLjhjZmJlMDJjYWI1YzNiMTJjNWI1
ZDY2ZWE1M2Q3NzMyNjFkNDg2NmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODkgQEAKKzIwMTAtMDgtMDkgIEVyaWMgU2Vp
ZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSB0aGUgSFRNTDUgVHJlZUJ1aWxkZXIgZm9yIEZyYWdtZW50IFBh
cnNpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQz
NTg2CisKKyAgICAgICAgVGhlIGJ1bGsgb2YgdGhpcyBjaGFuZ2UgaXMganVzdCBhIHRyYW5zY3Jp
cHRpb24gb2YgdGhlIEhUTUw1IHNwZWM6CisgICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9z
cGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1lbmQuaHRtbCNmcmFnbWVu
dC1jYXNlCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGRlZmF1bHQgY29k
ZSBwYXRoLAorICAgICAgICBidXQgSSd2ZSB1cGRhdGVkIHRoZSBodG1sNS1zcGVjaWZpYyByZXN1
bHRzIGZvciBodG1sNWxpYi9ydW5uZXIuaHRtbC4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudEZy
YWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ6OnBhcnNlSFRN
TCk6CisgICAgICAgICAtIEhUTUw1IGltcGxlbWVudGF0aW9uIG9mIGZyYWdtZW50IHBhcnNpbmcg
cmVxdWlyZXMgdGhlIGNvbnRleHQgZWxlbWVudCAocGFyZW50KQorICAgICAgICAgICBwb2ludGVy
LiAgVGhlIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBoYW5kbGVzIGFsbCBwYXJzaW5nIGJyYW5jaGVz
IHdoaWNoIHJlcXVpcmUKKyAgICAgICAgICAgdGhlIGNvbnRleHQgZWxlbWVudCBvdXRzaWRlIG9m
IHRoZSBwYXJzZXIgaXRzZWxmLCB3aGljaCBsaWtlbHkgcHJvZHVjZXMgIndyb25nIgorICAgICAg
ICAgICByZXN1bHRzLiAgV2UnbGwgcmVtb3ZlIHRob3NlIGJyYW5jaGVzIHdoZW4gd2UgdHVybiBv
biB0aGUgSE1UTDUgZnJhZ21lbnQgcGFyc2VyLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRG
cmFnbWVudDo6cGFyc2VYTUwpOgorICAgICAgICAgLSBSZW5hbWUgInBhcmVudCIgdG8gImNvbnRl
eHRFbGVtZW50IiB0byBtYXRjaCB0aGUgSFRNTCBwYXRoIChhbmQgdGhlIEhUTUw1IHNwZWMpLgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y3JlYXRlQ29udGV4dHVhbEZyYWdtZW50
KToKKyAgICAgICAgIC0gUGFzcyB0aGUgY29udGV4dEVsZW1lbnQgKHRoaXMpLgorICAgICAgICAq
IGh0bWwvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENv
bnN0cnVjdGlvblNpdGU6OnNldEZvcm0pOgorICAgICAgICAgLSBOZWVkZWQgYnkgZm9yIHRoZSBm
cmFnbWVudCBjYXNlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omlu
c2VydEhUTUxCb2R5U3RhcnRUYWdJbkJvZHkpOgorICAgICAgICAgLSBJJ20gbm90IHN1cmUgdGhp
cyBtZXRob2Qgc2hvdWxkIGV4aXN0LCBpdCBvbmx5IGhhcyBvbmUgY2FsbGVyLgorICAgICAgICAg
ICBidXQgZm9yIG5vdywgSSd2ZSBtb3ZlZCB0aGUgZnJhZ21lbnQgY2FzZSBGSVhNRSBvdXQgdG8g
dGhlCisgICAgICAgICAgIG9uZSBjYWxsZXIgYW5kIGltcGxlbWVudGVkIGl0LgorICAgICAgICAq
IGh0bWwvSFRNTENvbnN0cnVjdGlvblNpdGUuaDoKKyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVu
dFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFtZXM6OnRva2VuaXplclN0YXRl
Rm9yQ29udGV4dEVsZW1lbnQpOgorICAgICAgICAgLSBQYXJ0IG9mIHRoZSBmcmFnbWVudCBjYXNl
IGhhbmRsaW5nIGZvciB0aGUgSFRNTDUgcGFyc2VyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTERv
Y3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAgLSBTZXQgdGhlIFRv
a2VuaXplciBzdGF0ZSBiYXNlZCBvbiB0aGUgY29udGV4dEVsZW1lbnQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudCk6CisgICAgICAg
ICAtIFRha2UgYSBjb250ZXh0RWxlbWVudCBhcmd1bWVudC4KKyAgICAgICAgKiBodG1sL0hUTUxE
b2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldElubmVySFRNTCk6CisgICAgICAgICAtIEFkZGVk
IGEgRklYTUUgYmVmb3JlIHRoZSBicmFuY2hlcyB0aGUgb2xkIHBhcnNlciB1c2VkIHRvIGF2b2lk
IGV2ZXIgbmVlZGluZworICAgICAgICAgICB0byBwYXNzIGEgY29udGV4dCBlbGVtZW50IHdoZW4g
cGFyc2luZyBIVE1MIGZyYWdtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojpp
bnNlcnRBZGphY2VudEhUTUwpOgorICAgICAgICAgLSBQYXNzIHRoZSBjb250ZXh0IGVsZW1lbnQu
CisgICAgICAgICogaHRtbC9IVE1MVG9rZW5pemVyLmg6CisgICAgICAgICogaHRtbC9IVE1MVHJl
ZUJ1aWxkZXIuY3BwOgorICAgICAgICAgLSBJIGFkZGVkIGEgbmV3IGhlbHBlciBjbGFzcyBGcmFn
bWVudFBhcnNpbmdDb250ZXh0IHRvIHNpbXBsaWZ5IHRoZSB0d28KKyAgICAgICAgICAgSFRNTFRy
ZWVCdWlsZGVyIGNvbnN0cnVjdG9ycyBhbmQgaGlkZSB0aGUgZXhpc3RlbmNlIG9mIG1fZHVtbXlE
b2N1bWVudEZvckZyYWdtZW50UGFyc2UuCisgICAgICAgICAtIEkgYWxzbyByZW1vdmVkIG1faXNQ
YXJzaW5nRnJhZ21lbnQgYW5kIHJlcGxhY2VkIGl0IHdpdGggYW4gaXNQYXJzaW5nRnJhZ21lbnQo
KSBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVC
dWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJz
aW5nQ29udGV4dDo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OmRvY3VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6fkZy
YWdtZW50UGFyc2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
OjpwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluQm9keSk6CisgICAgICAgICAtIEkgaGFkIHRvIGlt
cGxlbWVudCB0d28gbm90SW1wbGVtZW50ZWQoKSBzdGF0ZXMgaW4gb3JkZXIgdG8gZ2V0IG1vc3Qg
b2YgdGhlCisgICAgICAgICAgIGxheW91dCB0ZXN0cyB0byBwYXNzIHdoZW4gdXNpbmcgdGhlIEhU
TUw1IHBhcnNlciBmcmFnbWVudCBjYXNlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzQ29sZ3JvdXBFbmRUYWdGb3JJbkNvbHVtbkdyb3VwKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5UYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRl
bHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9y
SW5UYWJsZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
RW5kVGFnRm9ySW5Sb3cpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzRW5kVGFnRm9ySW5DZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0NhcHRpb25FbmRUYWdGb3JJbkNhcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzVHJFbmRUYWdGb3JJblJvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUYWJsZUVuZFRhZ0ZvckluVGFibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlckJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRPZkZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpmaW5pc2hlZCk6CisgICAgICAgICAtIFRoZSBIVE1M
NSBwYXJzaW5nIGFsZ29yaXRobSBmcmFnbWVudCBjYXNlIHVzZXMgYSBkdW1teSBkb2N1bWVudCB0
byBoYW5kbGUgYWxsIHRoZSBwYXJzaW5nCisgICAgICAgICAgIGFuZCB0aGVuIG1vdmVzIGFsbCB0
aGUgY2hpbGRyZW4gZnJvbSB0aGUgZHVtbXkgZG9jdW1lbnQgb3ZlciBpbnRvIGEgRG9jdW1lbnRG
cmFnbWVudAorICAgICAgICAgICB3aGVuIHRoZSBwYXJzZSBpcyBkb25lLiAgV2UgY291bGQgYXZv
aWQgdGhpcyBhZG9wdCBzdGVwIGJ5IG1ha2luZyB0aGUgVHJlZUJ1aWxkZXIgYSBiaXQKKyAgICAg
ICAgICAgbW9yZSBjb21wbGljYXRlZCwgYnV0IEknbSBub3Qgc3VyZSB0aGF0J3MgbmVjZXNzYXJ5
ICh5ZXQpLgorICAgICAgICAqIGh0bWwvSFRNTFRyZWVCdWlsZGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmlzUGFyc2luZ0ZyYWdtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6ZnJhZ21lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250ZXh0
Ojpjb250ZXh0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkZy
YWdtZW50UGFyc2luZ0NvbnRleHQ6OnNjcmlwdGluZ1Blcm1pc3Npb24pOgorICAgICAgICAqIHht
bC9YU0xUUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJv
bVNvdXJjZSk6CisKIDIwMTAtMDgtMDkgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50
RnJhZ21lbnQuY3BwCmluZGV4IGVjYzU3MjU5ZmVlOGFlM2VmZDcwYjg5ZGRmNzA0MWZiM2U1Y2M1
Y2YuLjQ3NDg1YjdmNjY0MDJkOGQ3MmI5N2Q0MGU5ZmJiOGE3N2NkMzMxYWQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50RnJhZ21lbnQuY3BwCkBAIC04MiwxNiArODIsMTYgQEAgYm9vbCBEb2N1bWVudEZyYWdtZW50
OjpzaG91bGRVc2VMZWdhY3lIVE1MUGFyc2VyKCkgY29uc3QKICAgICAgICAgJiYgIWRvY3VtZW50
KCktPnBhZ2UoKS0+c2V0dGluZ3MoKS0+aHRtbDVQYXJzZXJFbmFibGVkKCk7CiB9CiAKLXZvaWQg
RG9jdW1lbnRGcmFnbWVudDo6cGFyc2VIVE1MKGNvbnN0IFN0cmluZyYgc291cmNlLCBGcmFnbWVu
dFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKK3ZvaWQgRG9jdW1lbnRG
cmFnbWVudDo6cGFyc2VIVE1MKGNvbnN0IFN0cmluZyYgc291cmNlLCBFbGVtZW50KiBjb250ZXh0
RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24p
CiB7CiAgICAgaWYgKHNob3VsZFVzZUxlZ2FjeUhUTUxQYXJzZXIoKSkKICAgICAgICAgcmV0dXJu
IExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KHNvdXJjZSwg
dGhpcywgc2NyaXB0aW5nUGVybWlzc2lvbik7Ci0gICAgSFRNTERvY3VtZW50UGFyc2VyOjpwYXJz
ZURvY3VtZW50RnJhZ21lbnQoc291cmNlLCB0aGlzLCBzY3JpcHRpbmdQZXJtaXNzaW9uKTsKKyAg
ICBIVE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudChzb3VyY2UsIHRoaXMs
IGNvbnRleHRFbGVtZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uKTsKIH0KIAotYm9vbCBEb2N1bWVu
dEZyYWdtZW50OjpwYXJzZVhNTChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRWxlbWVudCogcGFyZW50
LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKK2Jvb2wg
RG9jdW1lbnRGcmFnbWVudDo6cGFyc2VYTUwoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEVsZW1lbnQq
IGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVy
bWlzc2lvbikKIHsKLSAgICByZXR1cm4gWE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRG
cmFnbWVudChzb3VyY2UsIHRoaXMsIHBhcmVudCwgc2NyaXB0aW5nUGVybWlzc2lvbik7CisgICAg
cmV0dXJuIFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQoc291cmNlLCB0
aGlzLCBjb250ZXh0RWxlbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbik7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaCBiL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50RnJhZ21lbnQuaAppbmRleCA1ZWZmMTdmY2FjMDdlNzZkNjI3M2M3YjNjMzQ3YmRmM2FjYzM4
N2NhLi5kM2RhZGI4YjJkYjM0MmYwNGYyNjlmYjcxNGNjNDQ3MTNlOWJkNmVhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1l
bnRGcmFnbWVudC5oCkBAIC0zMyw4ICszMyw4IEBAIGNsYXNzIERvY3VtZW50RnJhZ21lbnQgOiBw
dWJsaWMgQ29udGFpbmVyTm9kZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKLSAgICB2b2lkIHBhcnNlSFRNTChj
b25zdCBTdHJpbmcmLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBGcmFnbWVudFNjcmlw
dGluZ0FsbG93ZWQpOwotICAgIGJvb2wgcGFyc2VYTUwoY29uc3QgU3RyaW5nJiwgRWxlbWVudCog
cGFyZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGluZ0Fs
bG93ZWQpOworICAgIHZvaWQgcGFyc2VIVE1MKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqIGNvbnRl
eHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGlu
Z0FsbG93ZWQpOworICAgIGJvb2wgcGFyc2VYTUwoY29uc3QgU3RyaW5nJiwgRWxlbWVudCogY29u
dGV4dEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0
aW5nQWxsb3dlZCk7CiAKIHByaXZhdGU6CiAgICAgRG9jdW1lbnRGcmFnbWVudChEb2N1bWVudCop
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAppbmRleCAyZmE3NWNlNzY2NWRiMGQwYmViNDliYzM4MWJmMmFkMzg3ODFiMDQ5Li4w
ZTg5ZTkzMzM1NTdiMGI2N2MxYjM0ZDgyMWQyZWM5MjRiNzNiMTFlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtOTUs
NyArOTUsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IEVsZW1lbnQ6OmNyZWF0ZUNv
bnRleHR1YWxGcmFnbWVudChjb25zdCBTdHJpbmcmIG1hcgogICAgIFJlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBmcmFnbWVudCA9IGRvY3VtZW50KCktPmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsK
IAogICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQotICAgICAgICBmcmFnbWVu
dC0+cGFyc2VIVE1MKG1hcmt1cCwgc2NyaXB0aW5nUGVybWlzc2lvbik7CisgICAgICAgIGZyYWdt
ZW50LT5wYXJzZUhUTUwobWFya3VwLCB0aGlzLCBzY3JpcHRpbmdQZXJtaXNzaW9uKTsKICAgICBl
bHNlIHsKICAgICAgICAgaWYgKCFmcmFnbWVudC0+cGFyc2VYTUwobWFya3VwLCB0aGlzLCBzY3Jp
cHRpbmdQZXJtaXNzaW9uKSkKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcHJvcGFn
YXRlIGEgc3ludGF4IGVycm9yIGV4Y2VwdGlvbiBvdXQgaGVyZS4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTENvbnN0
cnVjdGlvblNpdGUuY3BwCmluZGV4IDBiMTcwODZmZWQzYmI0NzBhM2IyN2Q5MGJkYWNlN2FiYmZj
MGYzNGUuLjEyN2UxOGIwM2NkZDRiZGViNjcwNDc0YWUxOGQ3ZDVmNjc3ZDk5OGUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvV2ViQ29yZS9o
dG1sL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtMTQxLDYgKzE0MSwxMyBAQCBIVE1MQ29u
c3RydWN0aW9uU2l0ZTo6fkhUTUxDb25zdHJ1Y3Rpb25TaXRlKCkKIHsKIH0KIAordm9pZCBIVE1M
Q29uc3RydWN0aW9uU2l0ZTo6c2V0Rm9ybShIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCit7CisgICAg
Ly8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgbmVlZGVkIGZvciBIVE1MVHJlZUJ1aWxkZXIg
aW4gdGhlIGZyYWdtZW50IGNhc2UuCisgICAgQVNTRVJUKCFtX2Zvcm0pOworICAgIG1fZm9ybSA9
IGZvcm07Cit9CisKIFBhc3NSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBIVE1MQ29uc3RydWN0aW9u
U2l0ZTo6dGFrZUZvcm0oKQogewogICAgIHJldHVybiBtX2Zvcm0ucmVsZWFzZSgpOwpAQCAtMTgy
LDcgKzE4OSw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxIdG1sU3Rh
cnRUYWdJbkJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHZvaWQgSFRNTENvbnN0cnVjdGlv
blNpdGU6Omluc2VydEhUTUxCb2R5U3RhcnRUYWdJbkJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tl
bikKIHsKICAgICAvLyBGSVhNRTogcGFyc2UgZXJyb3IKLSAgICBub3RJbXBsZW1lbnRlZCgpOyAv
LyBmcmFnbWVudCBjYXNlCisgICAgLy8gZnJhZ21lbnQgY2FzZSBoYW5kbGVkIGJ5IGNhbGxlcnMu
CiAgICAgbWVyZ2VBdHRyaWJ1dGVzRnJvbVRva2VuSW50b0VsZW1lbnQodG9rZW4sIG1fb3BlbkVs
ZW1lbnRzLmJvZHlFbGVtZW50KCkpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRN
TENvbnN0cnVjdGlvblNpdGUuaCBiL1dlYkNvcmUvaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5o
CmluZGV4IGQ5YzhhYzU5M2MyY2FlYjIyYzI5OGE3MWE4M2M1ZTIyODg2YzgxOWEuLjE2YmE1NmIx
ODM1ZWM2N2U0N2FlNzhkY2RjY2Y5ZGM2ODBhMmE3ZWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQ29uc3RydWN0
aW9uU2l0ZS5oCkBAIC04NCw2ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIEVsZW1lbnQqIGhlYWQo
KSBjb25zdCB7IHJldHVybiBtX2hlYWQuZ2V0KCk7IH0KIAorICAgIHZvaWQgc2V0Rm9ybShIVE1M
Rm9ybUVsZW1lbnQqKTsKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0oKSBjb25zdCB7IHJldHVy
biBtX2Zvcm0uZ2V0KCk7IH0KICAgICBQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gdGFrZUZv
cm0oKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAg
Yi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCAzNTRlN2VkNTJkNjli
OTAzYzc2ZWZmNDEyZWIwOGJiNGYxYzA1ZmRkLi4yOGIzMTk4NDdiYmFjZGE2MTlmZGM0YjYyYzQy
ZjJlYjdkNjU4MWY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2Vy
LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJIVE1MUGFyc2VyU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiSFRNTFRva2VuaXplci5oIgogI2lu
Y2x1ZGUgIkhUTUxQcmVsb2FkU2Nhbm5lci5oIgpAQCAtNDQsNiArNDUsOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKIG5hbWVzcGFjZSB7
CiAKIGNsYXNzIE5lc3RpbmdMZXZlbEluY3JlbWVudGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsK
QEAgLTYzLDYgKzY2LDMxIEBAIHByaXZhdGU6CiAgICAgaW50KiBtX2NvdW50ZXI7CiB9OwogCisv
LyBUaGlzIGlzIGEgZGlyZWN0IHRyYW5zY3JpcHRpb24gb2Ygc3RlcCA0IGZyb206CisvLyBodHRw
Oi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90
aGUtZW5kLmh0bWwjZnJhZ21lbnQtY2FzZQorSFRNTFRva2VuaXplcjo6U3RhdGUgdG9rZW5pemVy
U3RhdGVGb3JDb250ZXh0RWxlbWVudChFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgYm9vbCByZXBv
cnRFcnJvcnMpCit7CisgICAgaWYgKCFjb250ZXh0RWxlbWVudCkKKyAgICAgICAgcmV0dXJuIEhU
TUxUb2tlbml6ZXI6OkRhdGFTdGF0ZTsKKworICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGNvbnRl
eHRUYWcgPSBjb250ZXh0RWxlbWVudC0+dGFnUU5hbWUoKTsKKworICAgIGlmIChjb250ZXh0VGFn
Lm1hdGNoZXModGl0bGVUYWcpIHx8IGNvbnRleHRUYWcubWF0Y2hlcyh0ZXh0YXJlYVRhZykpCisg
ICAgICAgIHJldHVybiBIVE1MVG9rZW5pemVyOjpSQ0RBVEFTdGF0ZTsKKyAgICBpZiAoY29udGV4
dFRhZy5tYXRjaGVzKHN0eWxlVGFnKQorICAgICAgICB8fCBjb250ZXh0VGFnLm1hdGNoZXMoeG1w
VGFnKQorICAgICAgICB8fCBjb250ZXh0VGFnLm1hdGNoZXMoaWZyYW1lVGFnKQorICAgICAgICB8
fCAoY29udGV4dFRhZy5tYXRjaGVzKG5vZW1iZWRUYWcpICYmIEhUTUxUcmVlQnVpbGRlcjo6cGx1
Z2luc0VuYWJsZWQoY29udGV4dEVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkpKQorICAgICAg
ICB8fCAoY29udGV4dFRhZy5tYXRjaGVzKG5vc2NyaXB0VGFnKSAmJiBIVE1MVHJlZUJ1aWxkZXI6
OnNjcmlwdEVuYWJsZWQoY29udGV4dEVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkpKQorICAg
ICAgICB8fCBjb250ZXh0VGFnLm1hdGNoZXMobm9mcmFtZXNUYWcpKQorICAgICAgICByZXR1cm4g
cmVwb3J0RXJyb3JzID8gSFRNTFRva2VuaXplcjo6UkFXVEVYVFN0YXRlIDogSFRNTFRva2VuaXpl
cjo6UExBSU5URVhUU3RhdGU7CisgICAgaWYgKGNvbnRleHRUYWcubWF0Y2hlcyhzY3JpcHRUYWcp
KQorICAgICAgICByZXR1cm4gcmVwb3J0RXJyb3JzID8gSFRNTFRva2VuaXplcjo6U2NyaXB0RGF0
YVN0YXRlIDogSFRNTFRva2VuaXplcjo6UExBSU5URVhUU3RhdGU7CisgICAgaWYgKGNvbnRleHRU
YWcubWF0Y2hlcyhwbGFpbnRleHRUYWcpKQorICAgICAgICByZXR1cm4gSFRNTFRva2VuaXplcjo6
UExBSU5URVhUU3RhdGU7CisgICAgcmV0dXJuIEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZTsKK30K
KwogfSAvLyBuYW1lc3BhY2UKIAogSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJz
ZXIoSFRNTERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCByZXBvcnRFcnJvcnMpCkBAIC03NCwxOSAr
MTAyLDE5IEBAIEhUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKEhUTUxEb2N1
bWVudCogZG9jdW1lbnQsIGJvb2wgcmVwb3J0RXJyb3JzCiAgICAgLCBtX2VuZFdhc0RlbGF5ZWQo
ZmFsc2UpCiAgICAgLCBtX3dyaXRlTmVzdGluZ0xldmVsKDApCiB7Ci0gICAgYmVnaW4oKTsKIH0K
IAogLy8gRklYTUU6IE1lbWJlciB2YXJpYWJsZXMgc2hvdWxkIGJlIGdyb3VwZWQgaW50byBzZWxm
LWluaXRpYWxpemluZyBzdHJ1Y3RzIHRvCiAvLyBtaW5pbWl6ZSBjb2RlIGR1cGxpY2F0aW9uIGJl
dHdlZW4gdGhlc2UgY29uc3RydWN0b3JzLgotSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1l
bnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVy
bWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQorSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9j
dW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIGNvbnRleHRF
bGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikK
ICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihmcmFnbWVudC0+ZG9jdW1lbnQoKSkKICAg
ICAsIG1fdG9rZW5pemVyKG5ldyBIVE1MVG9rZW5pemVyKQotICAgICwgbV90cmVlQnVpbGRlcihu
ZXcgSFRNTFRyZWVCdWlsZGVyKG1fdG9rZW5pemVyLmdldCgpLCBmcmFnbWVudCwgc2NyaXB0aW5n
UGVybWlzc2lvbikpCisgICAgLCBtX3RyZWVCdWlsZGVyKG5ldyBIVE1MVHJlZUJ1aWxkZXIobV90
b2tlbml6ZXIuZ2V0KCksIGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgc2NyaXB0aW5nUGVybWlz
c2lvbikpCiAgICAgLCBtX2VuZFdhc0RlbGF5ZWQoZmFsc2UpCiAgICAgLCBtX3dyaXRlTmVzdGlu
Z0xldmVsKDApCiB7Ci0gICAgYmVnaW4oKTsKKyAgICBib29sIHJlcG9ydEVycm9ycyA9IGZhbHNl
OyAvLyBGb3Igbm93IGRvY3VtZW50IGZyYWdtZW50IHBhcnNpbmcgbmV2ZXIgcmVwb3J0cyBlcnJv
cnMuCisgICAgbV90b2tlbml6ZXItPnNldFN0YXRlKHRva2VuaXplclN0YXRlRm9yQ29udGV4dEVs
ZW1lbnQoY29udGV4dEVsZW1lbnQsIHJlcG9ydEVycm9ycykpOwogfQogCiBIVE1MRG9jdW1lbnRQ
YXJzZXI6On5IVE1MRG9jdW1lbnRQYXJzZXIoKQpAQCAtOTcsMTEgKzEyNSw2IEBAIEhUTUxEb2N1
bWVudFBhcnNlcjo6fkhUTUxEb2N1bWVudFBhcnNlcigpCiAgICAgLy8gdGhlbiB3ZSBjb3VsZCBB
U1NFUlQgc29tZSBpbnZhcmlhbnRzIGhlcmUuCiB9CiAKLXZvaWQgSFRNTERvY3VtZW50UGFyc2Vy
OjpiZWdpbigpCi17Ci0gICAgLy8gRklYTUU6IFNob3VsZCB3ZSByZXNldCB0aGUgdG9rZW5pemVy
PwotfQotCiB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6c3RvcFBhcnNpbmcoKQogewogICAgIERv
Y3VtZW50UGFyc2VyOjpzdG9wUGFyc2luZygpOwpAQCAtNDEzLDkgKzQzNiw5IEBAIFNjcmlwdENv
bnRyb2xsZXIqIEhUTUxEb2N1bWVudFBhcnNlcjo6c2NyaXB0KCkgY29uc3QKICAgICByZXR1cm4g
bV9kb2N1bWVudC0+ZnJhbWUoKSA/IG1fZG9jdW1lbnQtPmZyYW1lKCktPnNjcmlwdCgpIDogMDsK
IH0KIAotdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudChjb25z
dCBTdHJpbmcmIHNvdXJjZSwgRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEZyYWdtZW50U2Ny
aXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQordm9pZCBIVE1MRG9jdW1lbnRQ
YXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRG9jdW1l
bnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNj
cmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKIHsKLSAgICBIVE1MRG9jdW1l
bnRQYXJzZXIgcGFyc2VyKGZyYWdtZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uKTsKKyAgICBIVE1M
RG9jdW1lbnRQYXJzZXIgcGFyc2VyKGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgc2NyaXB0aW5n
UGVybWlzc2lvbik7CiAgICAgcGFyc2VyLmluc2VydChzb3VyY2UpOyAvLyBVc2UgaW5zZXJ0KCkg
c28gdGhhdCB0aGUgcGFyc2VyIHdpbGwgbm90IHlpZWxkLgogICAgIHBhcnNlci5maW5pc2goKTsK
ICAgICBBU1NFUlQoIXBhcnNlci5wcm9jZXNzaW5nRGF0YSgpKTsgLy8gTWFrZSBzdXJlIHdlJ3Jl
IGRvbmUuIDxyZGFyOi8vcHJvYmxlbS8zOTYzMTUxPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0hUTUxEb2N1bWVudFBhcnNlci5oIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5o
CmluZGV4IGNjNDZkMzEzZjI1MmYyZjlhNWEzYWFiYmQzMjRmYjcxMTc1OGRmMjkuLmQwNTU4NjE0
ZjA1YWFiMTkyYzg3YWJmN2Y4N2MyZWE4MzQxYmRhODcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFy
c2VyLmgKQEAgLTU0LDEzICs1NCwxMyBAQCBjbGFzcyBIVE1MRG9jdW1lbnRQYXJzZXIgOiAgcHVi
bGljIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciwgSFRNTFNjcmlwdFJ1bm5lckhvcwogcHVibGlj
OgogICAgIC8vIEZJWE1FOiBUaGVzZSBjb25zdHJ1Y3RvcnMgc2hvdWxkIGJlIG1hZGUgcHJpdmF0
ZSBhbmQgcmVwbGFjZWQgYnkgY3JlYXRlKCkgbWV0aG9kcy4KICAgICBIVE1MRG9jdW1lbnRQYXJz
ZXIoSFRNTERvY3VtZW50KiwgYm9vbCByZXBvcnRFcnJvcnMpOwotICAgIEhUTUxEb2N1bWVudFBh
cnNlcihEb2N1bWVudEZyYWdtZW50KiwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKKyAg
ICBIVE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCosIEVsZW1lbnQqIGNvbnRleHRF
bGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24pOwogICAgIHZpcnR1YWwgfkhUTUxE
b2N1bWVudFBhcnNlcigpOwogCiAgICAgLy8gRXhwb3NlZCBmb3IgSFRNTFBhcnNlclNjaGVkdWxl
cgogICAgIHZvaWQgcmVzdW1lUGFyc2luZ0FmdGVyWWllbGQoKTsKIAotICAgIHN0YXRpYyB2b2lk
IHBhcnNlRG9jdW1lbnRGcmFnbWVudChjb25zdCBTdHJpbmcmLCBEb2N1bWVudEZyYWdtZW50Kiwg
RnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsK
KyAgICBzdGF0aWMgdm9pZCBwYXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiwgRG9j
dW1lbnRGcmFnbWVudCosIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGlu
Z1Blcm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGluZ0FsbG93ZWQpOwogCiBwcml2YXRlOgogICAg
IC8vIERvY3VtZW50UGFyc2VyCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwIGIvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCAwMTk4OTAxZDczZjk1ZDMy
MDE4Y2Y1M2FiMTg2Y2Y0ZDg5YjRmY2ZlLi42ZmM1M2EyYmYwZWMwYTNiYTMzZWY2OTdhOGMyMzYz
MjQyNDdlN2ZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTI3NSw2ICsyNzUsNyBAQCBTdHJpbmcg
SFRNTEVsZW1lbnQ6Om91dGVySFRNTCgpIGNvbnN0CiAgICAgcmV0dXJuIGNyZWF0ZU1hcmt1cCh0
aGlzKTsKIH0KIAorLy8gRklYTUU6IFRoaXMgbWV0aG9kIGlzIHVuZWNlc3Nhcnkgd2l0aCB0aGUg
bmV3IEhUTUxEb2N1bWVudFBhcnNlci4KIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gSFRN
TEVsZW1lbnQ6OmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChjb25zdCBTdHJpbmcmIG1hcmt1cCwg
RnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCiB7CiAgICAg
Ly8gVGhlIGZvbGxvd2luZyBpcyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGRlZmluaXRpb24gYXMg
dXNlZCBieSBJRS4KQEAgLTM0MCw2ICszNDEsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlQ2hpbGRy
ZW5XaXRoVGV4dChIVE1MRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBFeAog
CiB2b2lkIEhUTUxFbGVtZW50OjpzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKKyAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGNhbiBiZSByZW1vdmVk
LCBpdCdzIGhhbmRsZWQgYnkgdGhlIEhUTUxEb2N1bWVudFBhcnNlciBjb3JyZWN0bHkuCiAgICAg
aWYgKGhhc0xvY2FsTmFtZShzY3JpcHRUYWcpIHx8IGhhc0xvY2FsTmFtZShzdHlsZVRhZykpIHsK
ICAgICAgICAgLy8gU2NyaXB0IGFuZCBDU1Mgc291cmNlIHNob3VsZG4ndCBiZSBwYXJzZWQgYXMg
SFRNTC4KICAgICAgICAgcmVtb3ZlQ2hpbGRyZW4oKTsKQEAgLTU1MSw3ICs1NTMsNyBAQCB2b2lk
IEhUTUxFbGVtZW50OjppbnNlcnRBZGphY2VudEhUTUwoY29uc3QgU3RyaW5nJiB3aGVyZSwgY29u
c3QgU3RyaW5nJiBtYXJrdXAsCiB7CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdt
ZW50ID0gZG9jdW1lbnQoKS0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogICAgIGlmIChkb2N1
bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQotICAgICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTCht
YXJrdXApOworICAgICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChtYXJrdXAsIHRoaXMpOwogICAg
IGVsc2UgewogICAgICAgICBpZiAoIWZyYWdtZW50LT5wYXJzZVhNTChtYXJrdXAsIHRoaXMpKQog
ICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9wYWdhdGUgYSBzeW50YXggZXJyb3Ig
ZXhjZXB0aW9uIG91dCBoZXJlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6
ZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmgKaW5kZXggZTRjYTE2YWNlMWJlM2Q3
OGJhNmY3MTUxMzU5ZGFkODAyMTk3Zjk4Yi4uMGU5YmEzYTJjYzA5YmU0OWM0ZGJlYzUzYmY2MDZm
YzNjMGYwNmViMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuaAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5oCkBAIC0zNCw2ICszNCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRWxlbWVudDsKIGNsYXNzIEhUTUxUb2tlbjsKIAogY2xh
c3MgSFRNTFRva2VuaXplciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxk
ZXIuY3BwCmluZGV4IDAxNjA3NGUwOWJjZjU0NzZlOGRiNzMxOGFkZWM2NjA5NmQyNWFlN2MuLjk4
ZWNiZTEwNzZlNzY1OWM5ZDQ2NmVjNjUyNzdmY2VlYTE5ZGY1MTQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1
aWxkZXIuY3BwCkBAIC0yNTMsNiArMjUzLDE5IEBAIGJvb2wgaXNOb3RGb3JtYXR0aW5nQW5kTm90
UGhyYXNpbmcoY29uc3QgRWxlbWVudCogZWxlbWVudCkKICAgICByZXR1cm4gaXNTY29waW5nVGFn
KHRhZ05hbWUpIHx8IGlzU3BlY2lhbFRhZyh0YWdOYW1lKTsKIH0KIAorSFRNTEZvcm1FbGVtZW50
KiBjbG9zZXN0Rm9ybUFuY2VzdG9yKEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgd2hpbGUgKGVs
ZW1lbnQpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoZm9ybVRhZykpCisgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oZWxlbWVudCk7Cisg
ICAgICAgIE5vZGUqIHBhcmVudCA9IGVsZW1lbnQtPnBhcmVudCgpOworICAgICAgICBpZiAoIXBh
cmVudCB8fCAhcGFyZW50LT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihwYXJlbnQpOworICAgIH0K
KyAgICByZXR1cm4gMDsKK30KKwogfSAvLyBuYW1lc3BhY2UKIAogY2xhc3MgSFRNTFRyZWVCdWls
ZGVyOjpFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsK
QEAgLTM0NiwzNSArMzU5LDcwIEBAIEhUTUxUcmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKEhU
TUxUb2tlbml6ZXIqIHRva2VuaXplciwgSFRNTERvY3VtZW50KiBkb2N1bWVuCiAgICAgLCBtX3Rv
a2VuaXplcih0b2tlbml6ZXIpCiAgICAgLCBtX2xhc3RTY3JpcHRFbGVtZW50U3RhcnRMaW5lKHVu
aW5pdGlhbGl6ZWRMaW5lTnVtYmVyVmFsdWUpCiAgICAgLCBtX3NjcmlwdFRvUHJvY2Vzc1N0YXJ0
TGluZSh1bmluaXRpYWxpemVkTGluZU51bWJlclZhbHVlKQotICAgICwgbV9mcmFnbWVudFNjcmlw
dGluZ1Blcm1pc3Npb24oRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKQotICAgICwgbV9pc1BhcnNp
bmdGcmFnbWVudChmYWxzZSkKIHsKIH0KIAogLy8gRklYTUU6IE1lbWJlciB2YXJpYWJsZXMgc2hv
dWxkIGJlIGdyb3VwZWQgaW50byBzZWxmLWluaXRpYWxpemluZyBzdHJ1Y3RzIHRvCiAvLyBtaW5p
bWl6ZSBjb2RlIGR1cGxpY2F0aW9uIGJldHdlZW4gdGhlc2UgY29uc3RydWN0b3JzLgotSFRNTFRy
ZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIoSFRNTFRva2VuaXplciogdG9rZW5pemVyLCBEb2N1
bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlw
dGluZ1Blcm1pc3Npb24pCitIVE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRlcihIVE1MVG9r
ZW5pemVyKiB0b2tlbml6ZXIsIERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBFbGVtZW50KiBj
b250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1p
c3Npb24pCiAgICAgOiBtX2ZyYW1lc2V0T2sodHJ1ZSkKLSAgICAsIG1fZG9jdW1lbnQoZnJhZ21l
bnQtPmRvY3VtZW50KCkpCi0gICAgLCBtX3RyZWUoZnJhZ21lbnQtPmRvY3VtZW50KCksIHNjcmlw
dGluZ1Blcm1pc3Npb24sIHRydWUpCisgICAgLCBtX2ZyYWdtZW50Q29udGV4dChmcmFnbWVudCwg
Y29udGV4dEVsZW1lbnQsIHNjcmlwdGluZ1Blcm1pc3Npb24sIHNob3VsZFVzZUxlZ2FjeVRyZWVC
dWlsZGVyKGZyYWdtZW50LT5kb2N1bWVudCgpKSkKKyAgICAsIG1fZG9jdW1lbnQobV9mcmFnbWVu
dENvbnRleHQuZG9jdW1lbnQoKSkKKyAgICAsIG1fdHJlZShtX2RvY3VtZW50LCBzY3JpcHRpbmdQ
ZXJtaXNzaW9uLCB0cnVlKQogICAgICwgbV9yZXBvcnRFcnJvcnMoZmFsc2UpIC8vIEZJWE1FOiBX
aHkgbm90IHJlcG9ydCBlcnJvcnMgaW4gZnJhZ21lbnRzPwogICAgICwgbV9pc1BhdXNlZChmYWxz
ZSkKICAgICAsIG1faW5zZXJ0aW9uTW9kZShJbml0aWFsTW9kZSkKICAgICAsIG1fb3JpZ2luYWxJ
bnNlcnRpb25Nb2RlKEluaXRpYWxNb2RlKQogICAgICwgbV9zZWNvbmRhcnlJbnNlcnRpb25Nb2Rl
KEluaXRpYWxNb2RlKQogICAgICwgbV90b2tlbml6ZXIodG9rZW5pemVyKQotICAgICwgbV9sZWdh
Y3lUcmVlQnVpbGRlcihuZXcgTGVnYWN5SFRNTFRyZWVCdWlsZGVyKGZyYWdtZW50LCBzY3JpcHRp
bmdQZXJtaXNzaW9uKSkKKyAgICAsIG1fbGVnYWN5VHJlZUJ1aWxkZXIoc2hvdWxkVXNlTGVnYWN5
VHJlZUJ1aWxkZXIoZnJhZ21lbnQtPmRvY3VtZW50KCkpID8gbmV3IExlZ2FjeUhUTUxUcmVlQnVp
bGRlcihmcmFnbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbikgOiAwKQogICAgICwgbV9sYXN0U2Ny
aXB0RWxlbWVudFN0YXJ0TGluZSh1bmluaXRpYWxpemVkTGluZU51bWJlclZhbHVlKQogICAgICwg
bV9zY3JpcHRUb1Byb2Nlc3NTdGFydExpbmUodW5pbml0aWFsaXplZExpbmVOdW1iZXJWYWx1ZSkK
LSAgICAsIG1fZnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKHNjcmlwdGluZ1Blcm1pc3Npb24p
Ci0gICAgLCBtX2lzUGFyc2luZ0ZyYWdtZW50KHRydWUpCiB7CisgICAgaWYgKHNob3VsZFVzZUxl
Z2FjeVRyZWVCdWlsZGVyKGZyYWdtZW50LT5kb2N1bWVudCgpKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIC8vIFRoaXMgaXMgc3RlcHMgMi02IG9mIHRoZSBIVE1MNSBGcmFnbWVudCBDYXNlIHBhcnNp
bmcgYWxnb3JpdGhtOgorICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBw
cy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1lbmQuaHRtbCNmcmFnbWVudC1jYXNlCisgICAg
aWYgKGNvbnRleHRFbGVtZW50KQorICAgICAgICBtX2RvY3VtZW50LT5zZXRQYXJzZU1vZGUoY29u
dGV4dEVsZW1lbnQtPmRvY3VtZW50KCktPnBhcnNlTW9kZSgpKTsKKyAgICBwcm9jZXNzRmFrZVN0
YXJ0VGFnKGh0bWxUYWcpOworICAgIHJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKTsK
KyAgICBtX3RyZWUuc2V0Rm9ybShjbG9zZXN0Rm9ybUFuY2VzdG9yKGNvbnRleHRFbGVtZW50KSk7
CiB9CiAKIEhUTUxUcmVlQnVpbGRlcjo6fkhUTUxUcmVlQnVpbGRlcigpCiB7CiB9CiAKK0hUTUxU
cmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6RnJhZ21lbnRQYXJzaW5nQ29udGV4
dCgpCisgICAgOiBtX2ZyYWdtZW50KDApCisgICAgLCBtX2NvbnRleHRFbGVtZW50KDApCisgICAg
LCBtX3VzaW5nTGVnYWN5VHJlZUJ1aWxkZXIoZmFsc2UpCisgICAgLCBtX3NjcmlwdGluZ1Blcm1p
c3Npb24oRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKQoreworfQorCitIVE1MVHJlZUJ1aWxkZXI6
OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQoRG9jdW1lbnRG
cmFnbWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlw
dGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbiwgYm9vbCBsZWdhY3lNb2RlKQorICAg
IDogbV9kdW1teURvY3VtZW50Rm9yRnJhZ21lbnRQYXJzZShsZWdhY3lNb2RlID8gMCA6IEhUTUxE
b2N1bWVudDo6Y3JlYXRlKDAsIEtVUkwoKSkpCisgICAgLCBtX2ZyYWdtZW50KGZyYWdtZW50KQor
ICAgICwgbV9jb250ZXh0RWxlbWVudChjb250ZXh0RWxlbWVudCkKKyAgICAsIG1fdXNpbmdMZWdh
Y3lUcmVlQnVpbGRlcihsZWdhY3lNb2RlKQorICAgICwgbV9zY3JpcHRpbmdQZXJtaXNzaW9uKHNj
cmlwdGluZ1Blcm1pc3Npb24pCit7Cit9CisKK0RvY3VtZW50KiBIVE1MVHJlZUJ1aWxkZXI6OkZy
YWdtZW50UGFyc2luZ0NvbnRleHQ6OmRvY3VtZW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9m
cmFnbWVudCk7CisgICAgaWYgKG1fdXNpbmdMZWdhY3lUcmVlQnVpbGRlcikKKyAgICAgICAgcmV0
dXJuIG1fZnJhZ21lbnQtPmRvY3VtZW50KCk7CisgICAgcmV0dXJuIG1fZHVtbXlEb2N1bWVudEZv
ckZyYWdtZW50UGFyc2UuZ2V0KCk7Cit9CisKK0hUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJz
aW5nQ29udGV4dDo6fkZyYWdtZW50UGFyc2luZ0NvbnRleHQoKQoreworfQorCiBzdGF0aWMgdm9p
ZCBjb252ZXJ0VG9PbGRTdHlsZShBdG9taWNIVE1MVG9rZW4mIHRva2VuLCBUb2tlbiYgb2xkU3R5
bGVUb2tlbikKIHsKICAgICBzd2l0Y2ggKHRva2VuLnR5cGUoKSkgewpAQCAtNDc2LDcgKzUyNCw3
IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNlcihIVE1MVG9r
ZW4mIHRva2VuKQogICAgICAgICBpZiAob2xkU3R5bGVUb2tlbi50YWdOYW1lID09IHNjcmlwdFRh
ZykgewogICAgICAgICAgICAgaWYgKG1fbGFzdFNjcmlwdEVsZW1lbnQpIHsKICAgICAgICAgICAg
ICAgICBBU1NFUlQobV9sYXN0U2NyaXB0RWxlbWVudFN0YXJ0TGluZSAhPSB1bmluaXRpYWxpemVk
TGluZU51bWJlclZhbHVlKTsKLSAgICAgICAgICAgICAgICBpZiAobV9mcmFnbWVudFNjcmlwdGlu
Z1Blcm1pc3Npb24gPT0gRnJhZ21lbnRTY3JpcHRpbmdOb3RBbGxvd2VkKSB7CisgICAgICAgICAg
ICAgICAgaWYgKG1fZnJhZ21lbnRDb250ZXh0LnNjcmlwdGluZ1Blcm1pc3Npb24oKSA9PSBGcmFn
bWVudFNjcmlwdGluZ05vdEFsbG93ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFRoaXMgaXMgYSBob3JyaWJsZSBoYWNrIGZvciBwbGF0Zm9ybS9QYXN0ZWJvYXJkLgogICAgICAg
ICAgICAgICAgICAgICAvLyBDbGVhciB0aGUgPHNjcmlwdD4gdGFnIHdoZW4gdXNpbmcgdGhlIFBh
cnNlciB0byBjcmVhdGUKICAgICAgICAgICAgICAgICAgICAgLy8gYSBEb2N1bWVudEZyYWdtZW50
IGZvciBwYXN0aW5nIHNvIHRoYXQgamF2YXNjcmlwdCBjb250ZW50CkBAIC03NzMsNiArODIxLDE1
IEBAIHZvaWQgYWRqdXN0Rm9yZWlnbkF0dHJpYnV0ZXMoQXRvbWljSFRNTFRva2VuJiB0b2tlbikK
ICAgICB9CiB9CiAKK2Jvb2wgaXNGcmFnbWVudENhc2VXaXRob3V0Qm9keShjb25zdCBIVE1MRWxl
bWVudFN0YWNrKiBlbGVtZW50U3RhY2spCit7CisgICAgLy8gTm90ZTogVGhpcyBjaGVjayBpcyBv
dXIgY29tcGxpY2F0ZWQgd2F5IG9mIHdyaXRpbmc6CisgICAgLy8gIklmIHRoZSBzZWNvbmQgZWxl
bWVudCBvbiB0aGUgc3RhY2sgb2Ygb3BlbiBlbGVtZW50cyBpcyBub3QgYSBib2R5CisgICAgLy8g
ZWxlbWVudCwgb3IsIGlmIHRoZSBzdGFjayBvZiBvcGVuIGVsZW1lbnRzIGhhcyBvbmx5IG9uZSBu
b2RlIG9uIGl0IgorICAgIHJldHVybiAoZWxlbWVudFN0YWNrLT5odG1sRWxlbWVudCgpID09IGVs
ZW1lbnRTdGFjay0+dG9wKCkKKyAgICAgICAgfHwgKGVsZW1lbnRTdGFjay0+aHRtbEVsZW1lbnQo
KSA9PSBlbGVtZW50U3RhY2stPm9uZUJlbG93VG9wKCkgJiYgIWVsZW1lbnRTdGFjay0+dG9wKCkt
Pmhhc1RhZ05hbWUoYm9keVRhZykpKTsKK30KKwogfQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc1N0YXJ0VGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCkBAIC03OTcs
MTIgKzg1NCwxOSBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5C
b2R5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
aWYgKHRva2VuLm5hbWUoKSA9PSBib2R5VGFnKSB7CisgICAgICAgIGlmIChpc0ZyYWdtZW50Q2Fz
ZVdpdGhvdXRCb2R5KG1fdHJlZS5vcGVuRWxlbWVudHMoKSkpIHsKKyAgICAgICAgICAgIEFTU0VS
VChpc1BhcnNpbmdGcmFnbWVudCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQog
ICAgICAgICBtX3RyZWUuaW5zZXJ0SFRNTEJvZHlTdGFydFRhZ0luQm9keSh0b2tlbik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBmcmFtZXNldFRhZykg
ewogICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsg
Ly8gZnJhZ21lbnQgY2FzZQorICAgICAgICBpZiAoaXNGcmFnbWVudENhc2VXaXRob3V0Qm9keSht
X3RyZWUub3BlbkVsZW1lbnRzKCkpKSB7CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJh
Z21lbnQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgaWYgKCFt
X2ZyYW1lc2V0T2spCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwpAQCAtMTA3Myw3ICsxMTM3LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NTdGFydFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogYm9vbCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NDb2xncm91cEVuZFRhZ0ZvckluQ29sdW1uR3JvdXAoKQogewogICAg
IGlmIChtX3RyZWUuY3VycmVudEVsZW1lbnQoKSA9PSBtX3RyZWUub3BlbkVsZW1lbnRzKCktPmh0
bWxFbGVtZW50KCkpIHsKLSAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAg
ICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBwYXJz
ZSBlcnJvcgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTEzNCw3ICsxMTk4LDcg
QEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluVGFibGUoQXRvbWlj
SFRNTFRva2VuJiB0b2tlbikKICAgICBpZiAodG9rZW4ubmFtZSgpID09IHRhYmxlVGFnKSB7CiAg
ICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwogICAgICAgICBpZiAoIXByb2Nlc3NUYWJsZUVuZFRh
Z0ZvckluVGFibGUoKSkgewotICAgICAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQp
OworICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHByb2Nlc3NTdGFydFRhZyh0b2tlbik7CkBAIC0x
MjgzLDcgKzEzNDcsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0
b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICB8fCB0b2tlbi5uYW1lKCkgPT0gdHJU
YWcpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwogICAgICAgICAgICAgaWYgKCFw
cm9jZXNzQ2FwdGlvbkVuZFRhZ0ZvckluQ2FwdGlvbigpKSB7Ci0gICAgICAgICAgICAgICAgQVNT
RVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAgICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNp
bmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBwcm9jZXNzU3RhcnRUYWcodG9rZW4pOwpAQCAtMTMwMiw3ICsxMzY2LDcgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRv
a2VuKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmICghcHJvY2Vz
c0NvbGdyb3VwRW5kVGFnRm9ySW5Db2x1bW5Hcm91cCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQo
bV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21l
bnQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgcHJvY2Vzc1N0
YXJ0VGFnKHRva2VuKTsKQEAgLTEzMjUsNyArMTM4OSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgaWYgKGlz
Q2FwdGlvbkNvbE9yQ29sZ3JvdXBUYWcodG9rZW4ubmFtZSgpKSB8fCBpc1RhYmxlQm9keUNvbnRl
eHRUYWcodG9rZW4ubmFtZSgpKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgc2xv
dy4KICAgICAgICAgICAgIGlmICghbV90cmVlLm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2NvcGUo
dGJvZHlUYWcubG9jYWxOYW1lKCkpICYmICFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVT
Y29wZSh0aGVhZFRhZy5sb2NhbE5hbWUoKSkgJiYgIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5U
YWJsZVNjb3BlKHRmb290VGFnLmxvY2FsTmFtZSgpKSkgewotICAgICAgICAgICAgICAgIEFTU0VS
VChtX2lzUGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5n
RnJhZ21lbnQoKSk7CiAgICAgICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMTM1MCw3ICsxNDE0LDcgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2Vu
KQogICAgICAgICAgICAgfHwgaXNDYXB0aW9uQ29sT3JDb2xncm91cFRhZyh0b2tlbi5uYW1lKCkp
CiAgICAgICAgICAgICB8fCBpc1RhYmxlQm9keUNvbnRleHRUYWcodG9rZW4ubmFtZSgpKSkgewog
ICAgICAgICAgICAgaWYgKCFwcm9jZXNzVHJFbmRUYWdGb3JJblJvdygpKSB7Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAgICAgICAgICAgICAgIEFTU0VS
VChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluVGFibGVCb2R5
TW9kZSk7CkBAIC0xMzY3LDcgKzE0MzEsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICB8fCBpc1RhYmxl
Qm9keUNvbnRleHRUYWcodG9rZW4ubmFtZSgpKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRo
aXMgY291bGQgYmUgbW9yZSBlZmZpY2llbnQuCiAgICAgICAgICAgICBpZiAoIW1fdHJlZS5vcGVu
RWxlbWVudHMoKS0+aW5UYWJsZVNjb3BlKHRkVGFnKSAmJiAhbV90cmVlLm9wZW5FbGVtZW50cygp
LT5pblRhYmxlU2NvcGUodGhUYWcpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG1faXNQYXJz
aW5nRnJhZ21lbnQpOworICAgICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgp
KTsKICAgICAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0xNzgxLDEyICsxODQ1LDEyIEBAIHZvaWQgSFRNTFRy
ZWVCdWlsZGVyOjpyZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KCkKICAgICB3aGlsZSAo
MSkgewogICAgICAgICBFbGVtZW50KiBub2RlID0gbm9kZVJlY29yZC0+ZWxlbWVudCgpOwogICAg
ICAgICBpZiAobm9kZSA9PSBtX3RyZWUub3BlbkVsZW1lbnRzKCktPmJvdHRvbSgpKSB7Ci0gICAg
ICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICBBU1NFUlQo
aXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICBsYXN0ID0gdHJ1ZTsKLSAgICAgICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7IC8vIG5vZGUgPSBtX2NvbnRleHRFbGVtZW50OworICAgICAg
ICAgICAgbm9kZSA9IG1fZnJhZ21lbnRDb250ZXh0LmNvbnRleHRFbGVtZW50KCk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoc2VsZWN0VGFnKSkgewotICAgICAgICAg
ICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAgICAgICAgICAgQVNTRVJUKGlzUGFy
c2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGVBbmRF
bmQoSW5TZWxlY3RNb2RlLCBmb3JlaWduKTsKICAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+
aGFzVGFnTmFtZSh0ZFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZSh0aFRhZykpCkBAIC0xNzk4LDMw
ICsxODYyLDMwIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpyZXNldEluc2VydGlvbk1vZGVBcHBy
b3ByaWF0ZWx5KCkKICAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoY2FwdGlvblRhZykpCiAg
ICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZUFuZEVuZChJbkNhcHRpb25Nb2RlLCBm
b3JlaWduKTsKICAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoY29sZ3JvdXBUYWcpKSB7Ci0g
ICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICBBU1NF
UlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9u
TW9kZUFuZEVuZChJbkNvbHVtbkdyb3VwTW9kZSwgZm9yZWlnbik7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUodGFibGVUYWcpKQogICAgICAgICAgICAgcmV0dXJuIHNl
dEluc2VydGlvbk1vZGVBbmRFbmQoSW5UYWJsZU1vZGUsIGZvcmVpZ24pOwogICAgICAgICBpZiAo
bm9kZS0+aGFzVGFnTmFtZShoZWFkVGFnKSkgewotICAgICAgICAgICAgQVNTRVJUKG1faXNQYXJz
aW5nRnJhZ21lbnQpOworICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwog
ICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGVBbmRFbmQoSW5Cb2R5TW9kZSwgZm9y
ZWlnbik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoYm9keVRhZykp
CiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZUFuZEVuZChJbkJvZHlNb2RlLCBm
b3JlaWduKTsKICAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoZnJhbWVzZXRUYWcpKSB7Ci0g
ICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICBBU1NF
UlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9u
TW9kZUFuZEVuZChJbkZyYW1lc2V0TW9kZSwgZm9yZWlnbik7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKG5vZGUtPmhhc1RhZ05hbWUoaHRtbFRhZykpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lz
UGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgp
KTsKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlQW5kRW5kKEJlZm9yZUhlYWRN
b2RlLCBmb3JlaWduKTsKICAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+bmFtZXNwYWNlVVJJ
KCkgPT0gU1ZHTmFtZXM6OnN2Z05hbWVzcGFjZVVSSQogICAgICAgICAgICAgfHwgbm9kZS0+bmFt
ZXNwYWNlVVJJKCkgPT0gTWF0aE1MTmFtZXM6Om1hdGhtbE5hbWVzcGFjZVVSSSkKICAgICAgICAg
ICAgIGZvcmVpZ24gPSB0cnVlOwogICAgICAgICBpZiAobGFzdCkgewotICAgICAgICAgICAgQVNT
RVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0Zy
YWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGVBbmRFbmQoSW5C
b2R5TW9kZSwgZm9yZWlnbik7CiAgICAgICAgIH0KICAgICAgICAgbm9kZVJlY29yZCA9IG5vZGVS
ZWNvcmQtPm5leHQoKTsKQEAgLTE4NDQsNyArMTkwOCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzRW5kVGFnRm9ySW5UYWJsZUJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAg
ICBpZiAodG9rZW4ubmFtZSgpID09IHRhYmxlVGFnKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IGlzIHNsb3cuCiAgICAgICAgIGlmICghbV90cmVlLm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2Nv
cGUodGJvZHlUYWcubG9jYWxOYW1lKCkpICYmICFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFi
bGVTY29wZSh0aGVhZFRhZy5sb2NhbE5hbWUoKSkgJiYgIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+
aW5UYWJsZVNjb3BlKHRmb290VGFnLmxvY2FsTmFtZSgpKSkgewotICAgICAgICAgICAgQVNTRVJU
KG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdt
ZW50KCkpOwogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KQEAgLTE4NzQsNyArMTkzOCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzRW5kVGFnRm9ySW5Sb3coQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICB9CiAg
ICAgaWYgKHRva2VuLm5hbWUoKSA9PSB0YWJsZVRhZykgewogICAgICAgICBpZiAoIXByb2Nlc3NU
ckVuZFRhZ0ZvckluUm93KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdt
ZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09
IEluVGFibGVCb2R5TW9kZSk7CkBAIC0xOTI4LDcgKzE5OTIsNyBAQCB2b2lkIEhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluQ2VsbChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAg
ICAgICB8fCB0b2tlbi5uYW1lKCkgPT0gdHJUYWcKICAgICAgICAgfHwgaXNUYWJsZUJvZHlDb250
ZXh0VGFnKHRva2VuLm5hbWUoKSkpIHsKICAgICAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRz
KCktPmluVGFibGVTY29wZSh0b2tlbi5uYW1lKCkpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9p
c1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQo
KSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogSXQgaXMgdW5jbGVhciB3aGF0IHRoZSBleGFjdCBB
U1NFUlQgc2hvdWxkIGJlLgogICAgICAgICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvQnVncy9Q
dWJsaWMvc2hvd19idWcuY2dpP2lkPTEwMDk4CiAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2Vu
KTsKQEAgLTIwODAsNyArMjE0NCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5k
VGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiBib29sIEhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0NhcHRpb25FbmRUYWdGb3JJbkNhcHRpb24oKQogewogICAgIGlmICghbV90cmVl
Lm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2NvcGUoY2FwdGlvblRhZy5sb2NhbE5hbWUoKSkpIHsK
LSAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAgICAgICBBU1NFUlQoaXNQ
YXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBwYXJzZSBlcnJvcgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjA5NSw3ICsyMTU5LDcgQEAgYm9vbCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NDYXB0aW9uRW5kVGFnRm9ySW5DYXB0aW9uKCkKIGJvb2wgSFRNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzVHJFbmRUYWdGb3JJblJvdygpCiB7CiAgICAgaWYgKCFtX3RyZWUu
b3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0clRhZy5sb2NhbE5hbWUoKSkpIHsKLSAgICAg
ICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAgICAgICBBU1NFUlQoaXNQYXJzaW5n
RnJhZ21lbnQoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBwYXJzZSBlcnJvcgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQpAQCAtMjEwOSw3ICsyMTczLDcgQEAgYm9vbCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NUckVuZFRhZ0ZvckluUm93KCkKIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzVGFibGVFbmRUYWdGb3JJblRhYmxlKCkKIHsKICAgICBpZiAoIW1fdHJlZS5vcGVuRWxlbWVu
dHMoKS0+aW5UYWJsZVNjb3BlKHRhYmxlVGFnKSkgewotICAgICAgICBBU1NFUlQobV9pc1BhcnNp
bmdGcmFnbWVudCk7CisgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAg
ICAgLy8gRklYTUU6IHBhcnNlIGVycm9yLgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpA
QCAtMjIwMSw3ICsyMjY1LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWco
QXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSB0YWJs
ZVRhZykgewogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAgICAgICBpZiAo
IXByb2Nlc3NDYXB0aW9uRW5kVGFnRm9ySW5DYXB0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBB
U1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlzUGFy
c2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcodG9rZW4pOwpAQCAtMjIzMCw3ICsyMjk0LDcgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tl
bikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoIXByb2Nlc3ND
b2xncm91cEVuZFRhZ0ZvckluQ29sdW1uR3JvdXAoKSkgewotICAgICAgICAgICAgQVNTRVJUKG1f
aXNQYXJzaW5nRnJhZ21lbnQpOworICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50
KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHByb2Nlc3NFbmRU
YWcodG9rZW4pOwpAQCAtMjI1MCw3ICsyMzE0LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICBjYXNlIEFmdGVyQm9keU1v
ZGU6CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gQWZ0ZXJCb2R5TW9kZSk7CiAg
ICAgICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gaHRtbFRhZykgewotICAgICAgICAgICAgaWYgKG1f
aXNQYXJzaW5nRnJhZ21lbnQpIHsKKyAgICAgICAgICAgIGlmIChpc1BhcnNpbmdGcmFnbWVudCgp
KSB7CiAgICAgICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMjMwMiw3ICsyMzY2LDcgQEAgdm9pZCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX3RyZWUub3BlbkVs
ZW1lbnRzKCktPnBvcCgpOwotICAgICAgICAgICAgaWYgKCFtX2lzUGFyc2luZ0ZyYWdtZW50ICYm
ICFtX3RyZWUuY3VycmVudEVsZW1lbnQoKS0+aGFzVGFnTmFtZShmcmFtZXNldFRhZykpCisgICAg
ICAgICAgICBpZiAoIWlzUGFyc2luZ0ZyYWdtZW50KCkgJiYgIW1fdHJlZS5jdXJyZW50RWxlbWVu
dCgpLT5oYXNUYWdOYW1lKGZyYW1lc2V0VGFnKSkKICAgICAgICAgICAgICAgICBzZXRJbnNlcnRp
b25Nb2RlKEFmdGVyRnJhbWVzZXRNb2RlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtMjU0NSw3ICsyNjA5LDcgQEAgUmVwcm9jZXNzQnVmZmVyOgogICAgICAgICBpZiAoYnVm
ZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKCFwcm9jZXNz
Q29sZ3JvdXBFbmRUYWdGb3JJbkNvbHVtbkdyb3VwKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVCht
X2lzUGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVu
dCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBnb3RvIFJlcHJv
Y2Vzc0J1ZmZlcjsKQEAgLTI2NjUsMTEgKzI3MjksMTEgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NFbmRPZkZpbGUoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbkNvbHVtbkdyb3VwTW9kZToKICAgICAgICAgaWYgKG1fdHJlZS5jdXJyZW50
RWxlbWVudCgpID09IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aHRtbEVsZW1lbnQoKSkgewotICAg
ICAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAgICAgICAgICAgQVNTRVJU
KGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIGlmICghcHJvY2Vzc0NvbGdyb3VwRW5kVGFnRm9ySW5Db2x1bW5Hcm91cCgpKSB7Ci0g
ICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICBBU1NF
UlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgcHJvY2Vzc0VuZE9mRmlsZSh0b2tlbik7CkBAIC0yODM0LDggKzI4OTgsMjQgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmZpbmlzaGVkKCkKICAgICB9CiAKICAgICAvLyBXYXJuaW5n
LCB0aGlzIG1heSBkZWxldGUgdGhlIHBhcnNlciwgc28gZG9uJ3QgdHJ5IHRvIGRvIGFueXRoaW5n
IGVsc2UgYWZ0ZXIgdGhpcy4KLSAgICBpZiAoIW1faXNQYXJzaW5nRnJhZ21lbnQpCisgICAgaWYg
KCFpc1BhcnNpbmdGcmFnbWVudCgpKQogICAgICAgICBtX2RvY3VtZW50LT5maW5pc2hlZFBhcnNp
bmcoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gUG9wdWxhdGUgdGhlIERvY3VtZW50RnJhZ21l
bnQgd2l0aCB0aGUgcGFyc2VkIGNvbnRlbnQgbm93IHRoYXQgd2UncmUgZG9uZS4KKyAgICAgICAg
Q29udGFpbmVyTm9kZSogcm9vdCA9IG1fZG9jdW1lbnQ7CisgICAgICAgIERvY3VtZW50RnJhZ21l
bnQqIGZyYWdtZW50ID0gbV9mcmFnbWVudENvbnRleHQuZnJhZ21lbnQoKTsKKyAgICAgICAgaWYg
KG1fZnJhZ21lbnRDb250ZXh0LmNvbnRleHRFbGVtZW50KCkpCisgICAgICAgICAgICByb290ID0g
bV9kb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgICAgIE5vZGUqIG5leHRDaGlsZCA9
IHJvb3QtPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgd2hpbGUgKG5leHRDaGlsZCkgeworICAgICAg
ICAgICAgTm9kZSogY2hpbGQgPSBuZXh0Q2hpbGQ7CisgICAgICAgICAgICBuZXh0Q2hpbGQgPSBu
ZXh0Q2hpbGQtPm5leHRTaWJsaW5nKCk7CisgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKKyAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBuZXdDaGlsZCA9IGZyYWdtZW50LT5kb2N1bWVu
dCgpLT5hZG9wdE5vZGUoY2hpbGQsIGVjKTsKKyAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAg
ICAgICAgICAgZnJhZ21lbnQtPnBhcnNlckFkZENoaWxkKG5ld0NoaWxkLnJlbGVhc2UoKSk7Cisg
ICAgICAgIH0KKyAgICB9CiB9CiAKIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpzY3JpcHRFbmFibGVk
KEZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIu
aCBiL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuaAppbmRleCBlMzFkMDliNjZlZjNiN2Mx
NWU3YzAzZjBlZjg5YTRiNGIxZjMwNzZiLi43OTVmNTI4OGVhY2ExMTRmZjU0YWRjY2Y2Yzg0ODc2
YTAwNmIyYTcwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmgKKysr
IGIvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNz
IEhUTUxUcmVlQnVpbGRlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgLy8g
RklYTUU6IFJlcGxhY2UgY29uc3RydWN0b3JzIHdpdGggY3JlYXRlKCkgZnVuY3Rpb25zIHJldHVy
bmluZyBQYXNzT3duUHRycwogICAgIEhUTUxUcmVlQnVpbGRlcihIVE1MVG9rZW5pemVyKiwgSFRN
TERvY3VtZW50KiwgYm9vbCByZXBvcnRFcnJvcnMpOwotICAgIEhUTUxUcmVlQnVpbGRlcihIVE1M
VG9rZW5pemVyKiwgRG9jdW1lbnRGcmFnbWVudCosIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lv
bik7CisgICAgSFRNTFRyZWVCdWlsZGVyKEhUTUxUb2tlbml6ZXIqLCBEb2N1bWVudEZyYWdtZW50
KiwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbik7
CiAgICAgfkhUTUxUcmVlQnVpbGRlcigpOwogCiAgICAgdm9pZCBzZXRQYXVzZWQoYm9vbCBwYXVz
ZWQpIHsgbV9pc1BhdXNlZCA9IHBhdXNlZDsgfQpAQCAtNzQsNiArNzQsOSBAQCBwdWJsaWM6CiAg
ICAgLy8gdW50aWwgd2Ugc3RvcCB1c2luZyB0aGUgbGVnYWN5IHBhcnNlci4gRE8gTk9UIENBTEwg
VEhJUyBNRVRIT0QuCiAgICAgTGVnYWN5SFRNTFRyZWVCdWlsZGVyKiBsZWdhY3lUcmVlQnVpbGRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fbGVnYWN5VHJlZUJ1aWxkZXIuZ2V0KCk7IH0KIAorICAgIHN0
YXRpYyBib29sIHNjcmlwdEVuYWJsZWQoRnJhbWUqKTsKKyAgICBzdGF0aWMgYm9vbCBwbHVnaW5z
RW5hYmxlZChGcmFtZSopOworCiBwcml2YXRlOgogICAgIGNsYXNzIEZha2VJbnNlcnRpb25Nb2Rl
OwogICAgIGNsYXNzIEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXI7CkBAIC0xMDUsNiArMTA4
LDggQEAgcHJpdmF0ZToKICAgICAgICAgQWZ0ZXJBZnRlckZyYW1lc2V0TW9kZSwKICAgICB9Owog
CisgICAgYm9vbCBpc1BhcnNpbmdGcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuICEhbV9mcmFnbWVu
dENvbnRleHQuZnJhZ21lbnQoKTsgfQorCiAgICAgdm9pZCBwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNl
cihIVE1MVG9rZW4mKTsKIAogICAgIHZvaWQgcHJvY2Vzc1Rva2VuKEF0b21pY0hUTUxUb2tlbiYp
OwpAQCAtMTkyLDggKzE5NywyOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0SW5zZXJ0aW9uTW9k
ZUFuZEVuZChJbnNlcnRpb25Nb2RlLCBib29sIGZvcmVpZ24pOyAvLyBIZWxwZXIgZm9yIHJlc2V0
SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkKICAgICB2b2lkIHJlc2V0SW5zZXJ0aW9uTW9kZUFw
cHJvcHJpYXRlbHkoKTsKIAotICAgIHN0YXRpYyBib29sIHNjcmlwdEVuYWJsZWQoRnJhbWUqIGZy
YW1lKTsKLSAgICBzdGF0aWMgYm9vbCBwbHVnaW5zRW5hYmxlZChGcmFtZSogZnJhbWUpOworICAg
IGNsYXNzIEZyYWdtZW50UGFyc2luZ0NvbnRleHQgOiBwdWJsaWMgTm9uY29weWFibGUgeworICAg
IHB1YmxpYzoKKyAgICAgICAgRnJhZ21lbnRQYXJzaW5nQ29udGV4dCgpOworICAgICAgICBGcmFn
bWVudFBhcnNpbmdDb250ZXh0KERvY3VtZW50RnJhZ21lbnQqLCBFbGVtZW50KiBjb250ZXh0RWxl
bWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLCBib29sIHVzaW5nTGVnYWN5VHJlZUJ1
aWxkZXIpOworICAgICAgICB+RnJhZ21lbnRQYXJzaW5nQ29udGV4dCgpOworCisgICAgICAgIERv
Y3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OworICAgICAgICBEb2N1bWVudEZyYWdtZW50KiBmcmFn
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21lbnQ7IH0KKyAgICAgICAgRWxlbWVudCogY29u
dGV4dEVsZW1lbnQoKSBjb25zdCB7IEFTU0VSVChtX2ZyYWdtZW50KTsgQVNTRVJUKCFtX3VzaW5n
TGVnYWN5VHJlZUJ1aWxkZXIpOyByZXR1cm4gbV9jb250ZXh0RWxlbWVudDsgfQorICAgICAgICBG
cmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbigpIGNvbnN0IHsg
QVNTRVJUKG1fZnJhZ21lbnQpOyByZXR1cm4gbV9zY3JpcHRpbmdQZXJtaXNzaW9uOyB9CisKKyAg
ICBwcml2YXRlOgorICAgICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZHVtbXlEb2N1bWVudEZvckZy
YWdtZW50UGFyc2U7CisgICAgICAgIERvY3VtZW50RnJhZ21lbnQqIG1fZnJhZ21lbnQ7CisgICAg
ICAgIEVsZW1lbnQqIG1fY29udGV4dEVsZW1lbnQ7CisgICAgICAgIGJvb2wgbV91c2luZ0xlZ2Fj
eVRyZWVCdWlsZGVyOworCisgICAgICAgIC8vIEZyYWdtZW50U2NyaXB0aW5nTm90QWxsb3dlZCBj
YXVzZXMgdGhlIFBhcnNlciB0byByZW1vdmUgY2hpbGRyZW4KKyAgICAgICAgLy8gZnJvbSA8c2Ny
aXB0PiB0YWdzIChzbyBqYXZhc2NyaXB0IGRvZXNuJ3Qgc2hvdyB1cCBpbiBwYXN0ZXMpLgorICAg
ICAgICBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gbV9zY3JpcHRpbmdQZXJtaXNzaW9uOwor
ICAgIH07CisgICAgRnJhZ21lbnRQYXJzaW5nQ29udGV4dCBtX2ZyYWdtZW50Q29udGV4dDsKIAog
ICAgIERvY3VtZW50KiBtX2RvY3VtZW50OwogICAgIEhUTUxDb25zdHJ1Y3Rpb25TaXRlIG1fdHJl
ZTsKQEAgLTIyNiwxMiArMjUxLDYgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxFbGVtZW50PiBt
X3NjcmlwdFRvUHJvY2VzczsgLy8gPHNjcmlwdD4gdGFnIHdoaWNoIG5lZWRzIHByb2Nlc3Npbmcg
YmVmb3JlIHJlc3VtaW5nIHRoZSBwYXJzZXIuCiAgICAgaW50IG1fc2NyaXB0VG9Qcm9jZXNzU3Rh
cnRMaW5lOyAvLyBTdGFydGluZyBsaW5lIG51bWJlciBvZiB0aGUgc2NyaXB0IHRhZyBuZWVkaW5n
IHByb2Nlc3NpbmcuCi0KLSAgICAvLyBGSVhNRTogRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9u
IGlzIGEgSEFDSyBmb3IgcGxhdGZvcm0vUGFzdGVib2FyZC4KLSAgICAvLyBGcmFnbWVudFNjcmlw
dGluZ05vdEFsbG93ZWQgY2F1c2VzIHRoZSBQYXJzZXIgdG8gcmVtb3ZlIGNoaWxkcmVuCi0gICAg
Ly8gZnJvbSA8c2NyaXB0PiB0YWdzIChzbyBqYXZhc2NyaXB0IGRvZXNuJ3Qgc2hvdyB1cCBpbiBw
YXN0ZXMpLgotICAgIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBtX2ZyYWdtZW50U2NyaXB0
aW5nUGVybWlzc2lvbjsKLSAgICBib29sIG1faXNQYXJzaW5nRnJhZ21lbnQ7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcCBiL1dlYkNvcmUveG1sL1hT
TFRQcm9jZXNzb3IuY3BwCmluZGV4IGY5NDkxNjM4MWMyY2Y5ZTRiNTQwOGRjOTRkOTU0NWI1Mjhh
YzFlZDYuLjdlMDdlZTNmZGJiMzI0OTIyYzJlYjgxM2IxY2U5M2ZiNmI5OWYyOWEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCisrKyBiL1dlYkNvcmUveG1sL1hTTFRQ
cm9jZXNzb3IuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYgc28K
ICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBvdXRwdXREb2MtPmNyZWF0
ZURvY3VtZW50RnJhZ21lbnQoKTsKIAogICAgIGlmIChzb3VyY2VNSU1FVHlwZSA9PSAidGV4dC9o
dG1sIikKLSAgICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChzb3VyY2VTdHJpbmcpOworICAgICAg
ICBmcmFnbWVudC0+cGFyc2VIVE1MKHNvdXJjZVN0cmluZywgb3V0cHV0RG9jLT5kb2N1bWVudEVs
ZW1lbnQoKSk7CiAgICAgZWxzZSBpZiAoc291cmNlTUlNRVR5cGUgPT0gInRleHQvcGxhaW4iKQog
ICAgICAgICBmcmFnbWVudC0+bGVnYWN5UGFyc2VyQWRkQ2hpbGQoVGV4dDo6Y3JlYXRlKG91dHB1
dERvYywgc291cmNlU3RyaW5nKSk7CiAgICAgZWxzZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63915</attachid>
            <date>2010-08-09 12:19:08 -0700</date>
            <delta_ts>2010-08-09 12:40:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43586-20100809121907.patch</filename>
            <type>text/plain</type>
            <size>42390</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2Y2UyNTQ3MDdjY2YwYzJkYTJiMGMxZTc5ZDk0ZmFkNzBmOThkYjNlLi5lODkyMGFk
YjBhZTUyYTg3NjBiNjM4ODA0MjQ1MzMwM2M2Njc1MmM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMDgtMDkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0aGUgSFRNTDUgVHJlZUJ1
aWxkZXIgZm9yIEZyYWdtZW50IFBhcnNpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQzNTg2CisKKyAgICAgICAgKiBodG1sNWxpYi9ydW5uZXItZXhw
ZWN0ZWQtaHRtbDUudHh0OgorICAgICAgICAgLSBXZSBwYXNzIDQgbW9yZSB0ZXN0cyBub3cgdGhh
dCBIVE1MNSBmcmFnbWVudCBwYXJzaW5nIGlzCisgICAgICAgICAgIChwYXJ0aWFsbHkpIGltcGxl
bWVudGVkIGJlaGluZCB0aGUgLS1odG1sNS10cmVlYnVpbGRlciBmbGFnLgorCiAyMDEwLTA4LTA5
ICBKaWFuIExpICA8amlhbmxpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVcGRhdGUgY2hyb21p
dW0gdGVzdCByZXN1bHRzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVubmVy
LWV4cGVjdGVkLWh0bWw1LnR4dCBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3Rl
ZC1odG1sNS50eHQKaW5kZXggYWMwMTlmZjI5MzI5MTU2Nzc3NjhjNWNiY2QwYjEwMjViNzk2Nzcy
My4uNWNhMjMyOTI1OTA0MjA0NjFiYjFiOWY0ZmVkY2RjY2Y4NGIwODk4MSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLWh0bWw1LnR4dAorKysgYi9MYXlv
dXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQtaHRtbDUudHh0CkBAIC0xNywzMCArMTcs
OSBAQCByZXNvdXJjZXMvdGVzdHMyLmRhdDogUEFTUwogcmVzb3VyY2VzL3Rlc3RzMy5kYXQ6IFBB
U1MKIAogcmVzb3VyY2VzL3Rlc3RzNC5kYXQ6Ci0zCi01CiA2CiA3CiAKLVRlc3QgMyBvZiA3IGlu
IHJlc291cmNlcy90ZXN0czQuZGF0IGZhaWxlZC4gSW5wdXQ6Ci10ZXh0YXJlYSBjb250ZW50IHdp
dGggPGVtPnBzZXVkbzwvZW0+IDxmb28+bWFya3VwCi1Hb3Q6Ci18ICJ0ZXh0YXJlYSBjb250ZW50
IHdpdGggIgotfCA8ZW0+Ci18ICAgInBzZXVkbyIKLXwgIiAiCi18IDxmb28+Ci18ICAgIm1hcmt1
cCIKLUV4cGVjdGVkOgotfCAidGV4dGFyZWEgY29udGVudCB3aXRoIDxlbT5wc2V1ZG88L2VtPiA8
Zm9vPm1hcmt1cCIKLQotVGVzdCA1IG9mIDcgaW4gcmVzb3VyY2VzL3Rlc3RzNC5kYXQgZmFpbGVk
LiBJbnB1dDoKLTwvcGxhaW50ZXh0PgotR290OgotfCAKLUV4cGVjdGVkOgotfCAiPC9wbGFpbnRl
eHQ+IgotCiBUZXN0IDYgb2YgNyBpbiByZXNvdXJjZXMvdGVzdHM0LmRhdCBmYWlsZWQuIElucHV0
Ogogc2V0dGluZyBodG1sJ3MgaW5uZXJIVE1MCiBHb3Q6CkBAIC02Miw4ICs0MSw2IEBAIHJlc291
cmNlcy90ZXN0czUuZGF0OiBQQVNTCiByZXNvdXJjZXMvdGVzdHM2LmRhdDoKIDI3CiAzMAotMzcK
LTQ0CiA0NQogCiBUZXN0IDI3IG9mIDUxIGluIHJlc291cmNlcy90ZXN0czYuZGF0IGZhaWxlZC4g
SW5wdXQ6CkBAIC04MCwyNiArNTcsNiBAQCBHb3Q6CiBFeHBlY3RlZDoKIHwgPGZyYW1lPgogCi1U
ZXN0IDM3IG9mIDUxIGluIHJlc291cmNlcy90ZXN0czYuZGF0IGZhaWxlZC4gSW5wdXQ6Ci08Y2Fw
dGlvbj48Y29sPjxjb2xncm91cD48dGJvZHk+PHRmb290Pjx0aGVhZD48dHI+Ci1Hb3Q6Ci18IDxj
YXB0aW9uPgotfCA8Y29sZ3JvdXA+Ci18IDx0Ym9keT4KLXwgPHRmb290PgotfCA8dGhlYWQ+Ci18
ICAgPHRyPgotRXhwZWN0ZWQ6Ci18IDx0cj4KLQotVGVzdCA0NCBvZiA1MSBpbiByZXNvdXJjZXMv
dGVzdHM2LmRhdCBmYWlsZWQuIElucHV0OgotPC90YWJsZT48dHI+Ci1Hb3Q6Ci18IDx0cj4KLUV4
cGVjdGVkOgotfCA8dGJvZHk+Ci18ICAgPHRyPgotCiBUZXN0IDQ1IG9mIDUxIGluIHJlc291cmNl
cy90ZXN0czYuZGF0IGZhaWxlZC4gSW5wdXQ6CiA8Ym9keT48L2JvZHk+PC9odG1sPgogR290Ogpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZTlmNzg4M2Q0MjNmNzc4NDMyOGI1Y2ZmZWYwZGVlNmQ1NTcxNmRlLi41NDc3YWI3MTZmYzVmMzU0
YjQ0NTgzODg4MjZjNmYzODRlZWM5ZDkyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDEwLTA4LTA5ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgdGhlIEhUTUw1IFRyZWVCdWlsZGVyIGZvciBGcmFnbWVu
dCBQYXJzaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MzU4NgorCisgICAgICAgIFRoZSBidWxrIG9mIHRoaXMgY2hhbmdlIGlzIGp1c3QgYSB0cmFu
c2NyaXB0aW9uIG9mIHRoZSBIVE1MNSBzcGVjOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5v
cmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtZW5kLmh0bWwjZnJh
Z21lbnQtY2FzZQorCisgICAgICAgIE5vIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBkZWZhdWx0
IGNvZGUgcGF0aCwKKyAgICAgICAgYnV0IEkndmUgdXBkYXRlZCB0aGUgaHRtbDUtc3BlY2lmaWMg
cmVzdWx0cyBmb3IgaHRtbDVsaWIvcnVubmVyLmh0bWwuCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnRGcmFnbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50OjpwYXJz
ZUhUTUwpOgorICAgICAgICAgLSBIVE1MNSBpbXBsZW1lbnRhdGlvbiBvZiBmcmFnbWVudCBwYXJz
aW5nIHJlcXVpcmVzIHRoZSBjb250ZXh0IGVsZW1lbnQgKHBhcmVudCkKKyAgICAgICAgICAgcG9p
bnRlci4gIFRoZSBsZWdhY3kgaW1wbGVtZW50YXRpb24gaGFuZGxlcyBhbGwgcGFyc2luZyBicmFu
Y2hlcyB3aGljaCByZXF1aXJlCisgICAgICAgICAgIHRoZSBjb250ZXh0IGVsZW1lbnQgb3V0c2lk
ZSBvZiB0aGUgcGFyc2VyIGl0c2VsZiwgd2hpY2ggbGlrZWx5IHByb2R1Y2VzICJ3cm9uZyIKKyAg
ICAgICAgICAgcmVzdWx0cy4gIFdlJ2xsIHJlbW92ZSB0aG9zZSBicmFuY2hlcyB3aGVuIHdlIHR1
cm4gb24gdGhlIEhNVEw1IGZyYWdtZW50IHBhcnNlci4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50RnJhZ21lbnQ6OnBhcnNlWE1MKToKKyAgICAgICAgIC0gUmVuYW1lICJwYXJlbnQiIHRvICJj
b250ZXh0RWxlbWVudCIgdG8gbWF0Y2ggdGhlIEhUTUwgcGF0aCAoYW5kIHRoZSBIVE1MNSBzcGVj
KS4KKyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNyZWF0ZUNvbnRleHR1YWxGcmFn
bWVudCk6CisgICAgICAgICAtIFBhc3MgdGhlIGNvbnRleHRFbGVtZW50ICh0aGlzKS4KKyAgICAg
ICAgKiBodG1sL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxDb25zdHJ1Y3Rpb25TaXRlOjpzZXRGb3JtKToKKyAgICAgICAgIC0gTmVlZGVkIGJ5IGZvciB0
aGUgZnJhZ21lbnQgY2FzZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRl
OjppbnNlcnRIVE1MQm9keVN0YXJ0VGFnSW5Cb2R5KToKKyAgICAgICAgIC0gSSdtIG5vdCBzdXJl
IHRoaXMgbWV0aG9kIHNob3VsZCBleGlzdCwgaXQgb25seSBoYXMgb25lIGNhbGxlci4KKyAgICAg
ICAgICAgYnV0IGZvciBub3csIEkndmUgbW92ZWQgdGhlIGZyYWdtZW50IGNhc2UgRklYTUUgb3V0
IHRvIHRoZQorICAgICAgICAgICBvbmUgY2FsbGVyIGFuZCBpbXBsZW1lbnRlZCBpdC4KKyAgICAg
ICAgKiBodG1sL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmg6CisgICAgICAgICogaHRtbC9IVE1MRG9j
dW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE5hbWVzOjp0b2tlbml6ZXJT
dGF0ZUZvckNvbnRleHRFbGVtZW50KToKKyAgICAgICAgIC0gUGFydCBvZiB0aGUgZnJhZ21lbnQg
Y2FzZSBoYW5kbGluZyBmb3IgdGhlIEhUTUw1IHBhcnNlci4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgIC0gU2V0IHRo
ZSBUb2tlbml6ZXIgc3RhdGUgYmFzZWQgb24gdGhlIGNvbnRleHRFbGVtZW50LgorICAgICAgICAo
V2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQpOgorICAg
ICAgICAgLSBUYWtlIGEgY29udGV4dEVsZW1lbnQgYXJndW1lbnQuCisgICAgICAgICogaHRtbC9I
VE1MRG9jdW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRJbm5lckhUTUwpOgorICAgICAgICAgLSBB
ZGRlZCBhIEZJWE1FIGJlZm9yZSB0aGUgYnJhbmNoZXMgdGhlIG9sZCBwYXJzZXIgdXNlZCB0byBh
dm9pZCBldmVyIG5lZWRpbmcKKyAgICAgICAgICAgdG8gcGFzcyBhIGNvbnRleHQgZWxlbWVudCB3
aGVuIHBhcnNpbmcgSFRNTCBmcmFnbWVudHMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVu
dDo6aW5zZXJ0QWRqYWNlbnRIVE1MKToKKyAgICAgICAgIC0gUGFzcyB0aGUgY29udGV4dCBlbGVt
ZW50LgorICAgICAgICAqIGh0bWwvSFRNTFRva2VuaXplci5oOgorICAgICAgICAqIGh0bWwvSFRN
TFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgIC0gSSBhZGRlZCBhIG5ldyBoZWxwZXIgY2xhc3Mg
RnJhZ21lbnRQYXJzaW5nQ29udGV4dCB0byBzaW1wbGlmeSB0aGUgdHdvCisgICAgICAgICAgIEhU
TUxUcmVlQnVpbGRlciBjb25zdHJ1Y3RvcnMgYW5kIGhpZGUgdGhlIGV4aXN0ZW5jZSBvZiBtX2R1
bW15RG9jdW1lbnRGb3JGcmFnbWVudFBhcnNlLgorICAgICAgICAgLSBJIGFsc28gcmVtb3ZlZCBt
X2lzUGFyc2luZ0ZyYWdtZW50IGFuZCByZXBsYWNlZCBpdCB3aXRoIGFuIGlzUGFyc2luZ0ZyYWdt
ZW50KCkgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkhUTUxU
cmVlQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50
UGFyc2luZ0NvbnRleHQ6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250ZXh0Ojpkb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6
On5GcmFnbWVudFBhcnNpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVp
bGRlcjo6cGFzc1Rva2VuVG9MZWdhY3lQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkpOgorICAgICAgICAgLSBJIGhhZCB0
byBpbXBsZW1lbnQgdHdvIG5vdEltcGxlbWVudGVkKCkgc3RhdGVzIGluIG9yZGVyIHRvIGdldCBt
b3N0IG9mIHRoZQorICAgICAgICAgICBsYXlvdXQgdGVzdHMgdG8gcGFzcyB3aGVuIHVzaW5nIHRo
ZSBIVE1MNSBwYXJzZXIgZnJhZ21lbnQgY2FzZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0NvbGdyb3VwRW5kVGFnRm9ySW5Db2x1bW5Hcm91cCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluVGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpyZXNldEluc2VydGlvbk1vZGVBcHByb3By
aWF0ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRh
Z0ZvckluVGFibGVCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc0VuZFRhZ0ZvckluUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0VuZFRhZ0ZvckluQ2VsbCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NDYXB0aW9uRW5kVGFnRm9ySW5DYXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1RyRW5kVGFnRm9ySW5Sb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVGFibGVFbmRUYWdGb3JJblRhYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDaGFyYWN0ZXJCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kT2ZGaWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6ZmluaXNoZWQpOgorICAgICAgICAgLSBUaGUg
SFRNTDUgcGFyc2luZyBhbGdvcml0aG0gZnJhZ21lbnQgY2FzZSB1c2VzIGEgZHVtbXkgZG9jdW1l
bnQgdG8gaGFuZGxlIGFsbCB0aGUgcGFyc2luZworICAgICAgICAgICBhbmQgdGhlbiBtb3ZlcyBh
bGwgdGhlIGNoaWxkcmVuIGZyb20gdGhlIGR1bW15IGRvY3VtZW50IG92ZXIgaW50byBhIERvY3Vt
ZW50RnJhZ21lbnQKKyAgICAgICAgICAgd2hlbiB0aGUgcGFyc2UgaXMgZG9uZS4gIFdlIGNvdWxk
IGF2b2lkIHRoaXMgYWRvcHQgc3RlcCBieSBtYWtpbmcgdGhlIFRyZWVCdWlsZGVyIGEgYml0Cisg
ICAgICAgICAgIG1vcmUgY29tcGxpY2F0ZWQsIGJ1dCBJJ20gbm90IHN1cmUgdGhhdCdzIG5lY2Vz
c2FyeSAoeWV0KS4KKyAgICAgICAgKiBodG1sL0hUTUxUcmVlQnVpbGRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjppc1BhcnNpbmdGcmFnbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OmZyYWdtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29u
dGV4dDo6Y29udGV4dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
OjpGcmFnbWVudFBhcnNpbmdDb250ZXh0OjpzY3JpcHRpbmdQZXJtaXNzaW9uKToKKyAgICAgICAg
KiB4bWwvWFNMVFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVu
dEZyb21Tb3VyY2UpOgorCiAyMDEwLTA4LTA5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjQ5OTMu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcCBiL1dlYkNvcmUv
ZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCmluZGV4IGVjYzU3MjU5ZmVlOGFlM2VmZDcwYjg5ZGRm
NzA0MWZiM2U1Y2M1Y2YuLjQ3NDg1YjdmNjY0MDJkOGQ3MmI5N2Q0MGU5ZmJiOGE3N2NkMzMxYWQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCisrKyBiL1dlYkNv
cmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCkBAIC04MiwxNiArODIsMTYgQEAgYm9vbCBEb2N1
bWVudEZyYWdtZW50OjpzaG91bGRVc2VMZWdhY3lIVE1MUGFyc2VyKCkgY29uc3QKICAgICAgICAg
JiYgIWRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKS0+aHRtbDVQYXJzZXJFbmFibGVkKCk7
CiB9CiAKLXZvaWQgRG9jdW1lbnRGcmFnbWVudDo6cGFyc2VIVE1MKGNvbnN0IFN0cmluZyYgc291
cmNlLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKK3Zv
aWQgRG9jdW1lbnRGcmFnbWVudDo6cGFyc2VIVE1MKGNvbnN0IFN0cmluZyYgc291cmNlLCBFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGlu
Z1Blcm1pc3Npb24pCiB7CiAgICAgaWYgKHNob3VsZFVzZUxlZ2FjeUhUTUxQYXJzZXIoKSkKICAg
ICAgICAgcmV0dXJuIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdt
ZW50KHNvdXJjZSwgdGhpcywgc2NyaXB0aW5nUGVybWlzc2lvbik7Ci0gICAgSFRNTERvY3VtZW50
UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQoc291cmNlLCB0aGlzLCBzY3JpcHRpbmdQZXJt
aXNzaW9uKTsKKyAgICBIVE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudChz
b3VyY2UsIHRoaXMsIGNvbnRleHRFbGVtZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uKTsKIH0KIAot
Ym9vbCBEb2N1bWVudEZyYWdtZW50OjpwYXJzZVhNTChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRWxl
bWVudCogcGFyZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlz
c2lvbikKK2Jvb2wgRG9jdW1lbnRGcmFnbWVudDo6cGFyc2VYTUwoY29uc3QgU3RyaW5nJiBzb3Vy
Y2UsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24g
c2NyaXB0aW5nUGVybWlzc2lvbikKIHsKLSAgICByZXR1cm4gWE1MRG9jdW1lbnRQYXJzZXI6OnBh
cnNlRG9jdW1lbnRGcmFnbWVudChzb3VyY2UsIHRoaXMsIHBhcmVudCwgc2NyaXB0aW5nUGVybWlz
c2lvbik7CisgICAgcmV0dXJuIFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21l
bnQoc291cmNlLCB0aGlzLCBjb250ZXh0RWxlbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbik7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaCBiL1dlYkNv
cmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaAppbmRleCA1ZWZmMTdmY2FjMDdlNzZkNjI3M2M3YjNj
MzQ3YmRmM2FjYzM4N2NhLi5kM2RhZGI4YjJkYjM0MmYwNGYyNjlmYjcxNGNjNDQ3MTNlOWJkNmVh
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKKysrIGIvV2ViQ29y
ZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCkBAIC0zMyw4ICszMyw4IEBAIGNsYXNzIERvY3VtZW50
RnJhZ21lbnQgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKLSAgICB2b2lk
IHBhcnNlSFRNTChjb25zdCBTdHJpbmcmLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBG
cmFnbWVudFNjcmlwdGluZ0FsbG93ZWQpOwotICAgIGJvb2wgcGFyc2VYTUwoY29uc3QgU3RyaW5n
JiwgRWxlbWVudCogcGFyZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBGcmFnbWVu
dFNjcmlwdGluZ0FsbG93ZWQpOworICAgIHZvaWQgcGFyc2VIVE1MKGNvbnN0IFN0cmluZyYsIEVs
ZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBGcmFn
bWVudFNjcmlwdGluZ0FsbG93ZWQpOworICAgIGJvb2wgcGFyc2VYTUwoY29uc3QgU3RyaW5nJiwg
RWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiA9IEZy
YWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7CiAKIHByaXZhdGU6CiAgICAgRG9jdW1lbnRGcmFnbWVu
dChEb2N1bWVudCopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAyZmE3NWNlNzY2NWRiMGQwYmViNDliYzM4MWJmMmFk
Mzg3ODFiMDQ5Li4wZTg5ZTkzMzM1NTdiMGI2N2MxYjM0ZDgyMWQyZWM5MjRiNzNiMTFlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcApAQCAtOTUsNyArOTUsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IEVsZW1l
bnQ6OmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChjb25zdCBTdHJpbmcmIG1hcgogICAgIFJlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGRvY3VtZW50KCktPmNyZWF0ZURvY3VtZW50
RnJhZ21lbnQoKTsKIAogICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQotICAg
ICAgICBmcmFnbWVudC0+cGFyc2VIVE1MKG1hcmt1cCwgc2NyaXB0aW5nUGVybWlzc2lvbik7Cisg
ICAgICAgIGZyYWdtZW50LT5wYXJzZUhUTUwobWFya3VwLCB0aGlzLCBzY3JpcHRpbmdQZXJtaXNz
aW9uKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKCFmcmFnbWVudC0+cGFyc2VYTUwobWFya3Vw
LCB0aGlzLCBzY3JpcHRpbmdQZXJtaXNzaW9uKSkKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgcHJvcGFnYXRlIGEgc3ludGF4IGVycm9yIGV4Y2VwdGlvbiBvdXQgaGVyZS4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9XZWJDb3JlL2h0
bWwvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmluZGV4IDBiMTcwODZmZWQzYmI0NzBhM2IyN2Q5
MGJkYWNlN2FiYmZjMGYzNGUuLjFhOWEzNzNlMDI3ODVjOTE1NWE3ZDA4MTQ3M2JkYzA1YmEwOGMz
MGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysr
IGIvV2ViQ29yZS9odG1sL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtMTQxLDYgKzE0MSwx
MyBAQCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6fkhUTUxDb25zdHJ1Y3Rpb25TaXRlKCkKIHsKIH0K
IAordm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6c2V0Rm9ybShIVE1MRm9ybUVsZW1lbnQqIGZv
cm0pCit7CisgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgbmVlZGVkIGZvciBIVE1M
VHJlZUJ1aWxkZXIgaW4gdGhlIGZyYWdtZW50IGNhc2UuCisgICAgQVNTRVJUKCFtX2Zvcm0pOwor
ICAgIG1fZm9ybSA9IGZvcm07Cit9CisKIFBhc3NSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBIVE1M
Q29uc3RydWN0aW9uU2l0ZTo6dGFrZUZvcm0oKQogewogICAgIHJldHVybiBtX2Zvcm0ucmVsZWFz
ZSgpOwpAQCAtMTgyLDcgKzE4OSw2IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2Vy
dEhUTUxIdG1sU3RhcnRUYWdJbkJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHZvaWQgSFRN
TENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxCb2R5U3RhcnRUYWdJbkJvZHkoQXRvbWljSFRN
TFRva2VuJiB0b2tlbikKIHsKICAgICAvLyBGSVhNRTogcGFyc2UgZXJyb3IKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOyAvLyBmcmFnbWVudCBjYXNlCiAgICAgbWVyZ2VBdHRyaWJ1dGVzRnJvbVRva2Vu
SW50b0VsZW1lbnQodG9rZW4sIG1fb3BlbkVsZW1lbnRzLmJvZHlFbGVtZW50KCkpOwogfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTENvbnN0cnVjdGlvblNpdGUuaCBiL1dlYkNvcmUv
aHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oCmluZGV4IGQ5YzhhYzU5M2MyY2FlYjIyYzI5OGE3
MWE4M2M1ZTIyODg2YzgxOWEuLjE2YmE1NmIxODM1ZWM2N2U0N2FlNzhkY2RjY2Y5ZGM2ODBhMmE3
ZWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oCkBAIC04NCw2ICs4NCw3IEBAIHB1
YmxpYzoKIAogICAgIEVsZW1lbnQqIGhlYWQoKSBjb25zdCB7IHJldHVybiBtX2hlYWQuZ2V0KCk7
IH0KIAorICAgIHZvaWQgc2V0Rm9ybShIVE1MRm9ybUVsZW1lbnQqKTsKICAgICBIVE1MRm9ybUVs
ZW1lbnQqIGZvcm0oKSBjb25zdCB7IHJldHVybiBtX2Zvcm0uZ2V0KCk7IH0KICAgICBQYXNzUmVm
UHRyPEhUTUxGb3JtRWxlbWVudD4gdGFrZUZvcm0oKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFy
c2VyLmNwcAppbmRleCAzNTRlN2VkNTJkNjliOTAzYzc2ZWZmNDEyZWIwOGJiNGYxYzA1ZmRkLi4y
OGIzMTk4NDdiYmFjZGE2MTlmZGM0YjYyYzQyZjJlYjdkNjU4MWY0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50UGFyc2VyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50RnJh
Z21lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VyU2NoZWR1bGVyLmgiCiAjaW5j
bHVkZSAiSFRNTFRva2VuaXplci5oIgogI2luY2x1ZGUgIkhUTUxQcmVsb2FkU2Nhbm5lci5oIgpA
QCAtNDQsNiArNDUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3VzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CisKIG5hbWVzcGFjZSB7CiAKIGNsYXNzIE5lc3RpbmdMZXZlbEluY3JlbWVu
dGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKQEAgLTYzLDYgKzY2LDMxIEBAIHByaXZhdGU6CiAg
ICAgaW50KiBtX2NvdW50ZXI7CiB9OwogCisvLyBUaGlzIGlzIGEgZGlyZWN0IHRyYW5zY3JpcHRp
b24gb2Ygc3RlcCA0IGZyb206CisvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFw
cHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtZW5kLmh0bWwjZnJhZ21lbnQtY2FzZQorSFRN
TFRva2VuaXplcjo6U3RhdGUgdG9rZW5pemVyU3RhdGVGb3JDb250ZXh0RWxlbWVudChFbGVtZW50
KiBjb250ZXh0RWxlbWVudCwgYm9vbCByZXBvcnRFcnJvcnMpCit7CisgICAgaWYgKCFjb250ZXh0
RWxlbWVudCkKKyAgICAgICAgcmV0dXJuIEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZTsKKworICAg
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGNvbnRleHRUYWcgPSBjb250ZXh0RWxlbWVudC0+dGFnUU5h
bWUoKTsKKworICAgIGlmIChjb250ZXh0VGFnLm1hdGNoZXModGl0bGVUYWcpIHx8IGNvbnRleHRU
YWcubWF0Y2hlcyh0ZXh0YXJlYVRhZykpCisgICAgICAgIHJldHVybiBIVE1MVG9rZW5pemVyOjpS
Q0RBVEFTdGF0ZTsKKyAgICBpZiAoY29udGV4dFRhZy5tYXRjaGVzKHN0eWxlVGFnKQorICAgICAg
ICB8fCBjb250ZXh0VGFnLm1hdGNoZXMoeG1wVGFnKQorICAgICAgICB8fCBjb250ZXh0VGFnLm1h
dGNoZXMoaWZyYW1lVGFnKQorICAgICAgICB8fCAoY29udGV4dFRhZy5tYXRjaGVzKG5vZW1iZWRU
YWcpICYmIEhUTUxUcmVlQnVpbGRlcjo6cGx1Z2luc0VuYWJsZWQoY29udGV4dEVsZW1lbnQtPmRv
Y3VtZW50KCktPmZyYW1lKCkpKQorICAgICAgICB8fCAoY29udGV4dFRhZy5tYXRjaGVzKG5vc2Ny
aXB0VGFnKSAmJiBIVE1MVHJlZUJ1aWxkZXI6OnNjcmlwdEVuYWJsZWQoY29udGV4dEVsZW1lbnQt
PmRvY3VtZW50KCktPmZyYW1lKCkpKQorICAgICAgICB8fCBjb250ZXh0VGFnLm1hdGNoZXMobm9m
cmFtZXNUYWcpKQorICAgICAgICByZXR1cm4gcmVwb3J0RXJyb3JzID8gSFRNTFRva2VuaXplcjo6
UkFXVEVYVFN0YXRlIDogSFRNTFRva2VuaXplcjo6UExBSU5URVhUU3RhdGU7CisgICAgaWYgKGNv
bnRleHRUYWcubWF0Y2hlcyhzY3JpcHRUYWcpKQorICAgICAgICByZXR1cm4gcmVwb3J0RXJyb3Jz
ID8gSFRNTFRva2VuaXplcjo6U2NyaXB0RGF0YVN0YXRlIDogSFRNTFRva2VuaXplcjo6UExBSU5U
RVhUU3RhdGU7CisgICAgaWYgKGNvbnRleHRUYWcubWF0Y2hlcyhwbGFpbnRleHRUYWcpKQorICAg
ICAgICByZXR1cm4gSFRNTFRva2VuaXplcjo6UExBSU5URVhUU3RhdGU7CisgICAgcmV0dXJuIEhU
TUxUb2tlbml6ZXI6OkRhdGFTdGF0ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UKIAogSFRNTERvY3Vt
ZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50KiBkb2N1bWVudCwgYm9v
bCByZXBvcnRFcnJvcnMpCkBAIC03NCwxOSArMTAyLDE5IEBAIEhUTUxEb2N1bWVudFBhcnNlcjo6
SFRNTERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgcmVwb3J0RXJy
b3JzCiAgICAgLCBtX2VuZFdhc0RlbGF5ZWQoZmFsc2UpCiAgICAgLCBtX3dyaXRlTmVzdGluZ0xl
dmVsKDApCiB7Ci0gICAgYmVnaW4oKTsKIH0KIAogLy8gRklYTUU6IE1lbWJlciB2YXJpYWJsZXMg
c2hvdWxkIGJlIGdyb3VwZWQgaW50byBzZWxmLWluaXRpYWxpemluZyBzdHJ1Y3RzIHRvCiAvLyBt
aW5pbWl6ZSBjb2RlIGR1cGxpY2F0aW9uIGJldHdlZW4gdGhlc2UgY29uc3RydWN0b3JzLgotSFRN
TERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCogZnJh
Z21lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQor
SFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCog
ZnJhZ21lbnQsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1p
c3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNl
cihmcmFnbWVudC0+ZG9jdW1lbnQoKSkKICAgICAsIG1fdG9rZW5pemVyKG5ldyBIVE1MVG9rZW5p
emVyKQotICAgICwgbV90cmVlQnVpbGRlcihuZXcgSFRNTFRyZWVCdWlsZGVyKG1fdG9rZW5pemVy
LmdldCgpLCBmcmFnbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbikpCisgICAgLCBtX3RyZWVCdWls
ZGVyKG5ldyBIVE1MVHJlZUJ1aWxkZXIobV90b2tlbml6ZXIuZ2V0KCksIGZyYWdtZW50LCBjb250
ZXh0RWxlbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbikpCiAgICAgLCBtX2VuZFdhc0RlbGF5ZWQo
ZmFsc2UpCiAgICAgLCBtX3dyaXRlTmVzdGluZ0xldmVsKDApCiB7Ci0gICAgYmVnaW4oKTsKKyAg
ICBib29sIHJlcG9ydEVycm9ycyA9IGZhbHNlOyAvLyBGb3Igbm93IGRvY3VtZW50IGZyYWdtZW50
IHBhcnNpbmcgbmV2ZXIgcmVwb3J0cyBlcnJvcnMuCisgICAgbV90b2tlbml6ZXItPnNldFN0YXRl
KHRva2VuaXplclN0YXRlRm9yQ29udGV4dEVsZW1lbnQoY29udGV4dEVsZW1lbnQsIHJlcG9ydEVy
cm9ycykpOwogfQogCiBIVE1MRG9jdW1lbnRQYXJzZXI6On5IVE1MRG9jdW1lbnRQYXJzZXIoKQpA
QCAtOTcsMTEgKzEyNSw2IEBAIEhUTUxEb2N1bWVudFBhcnNlcjo6fkhUTUxEb2N1bWVudFBhcnNl
cigpCiAgICAgLy8gdGhlbiB3ZSBjb3VsZCBBU1NFUlQgc29tZSBpbnZhcmlhbnRzIGhlcmUuCiB9
CiAKLXZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpiZWdpbigpCi17Ci0gICAgLy8gRklYTUU6IFNo
b3VsZCB3ZSByZXNldCB0aGUgdG9rZW5pemVyPwotfQotCiB2b2lkIEhUTUxEb2N1bWVudFBhcnNl
cjo6c3RvcFBhcnNpbmcoKQogewogICAgIERvY3VtZW50UGFyc2VyOjpzdG9wUGFyc2luZygpOwpA
QCAtNDEzLDkgKzQzNiw5IEBAIFNjcmlwdENvbnRyb2xsZXIqIEhUTUxEb2N1bWVudFBhcnNlcjo6
c2NyaXB0KCkgY29uc3QKICAgICByZXR1cm4gbV9kb2N1bWVudC0+ZnJhbWUoKSA/IG1fZG9jdW1l
bnQtPmZyYW1lKCktPnNjcmlwdCgpIDogMDsKIH0KIAotdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6
OnBhcnNlRG9jdW1lbnRGcmFnbWVudChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRG9jdW1lbnRGcmFn
bWVudCogZnJhZ21lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJt
aXNzaW9uKQordm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudChj
b25zdCBTdHJpbmcmIHNvdXJjZSwgRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1lbnQq
IGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVy
bWlzc2lvbikKIHsKLSAgICBIVE1MRG9jdW1lbnRQYXJzZXIgcGFyc2VyKGZyYWdtZW50LCBzY3Jp
cHRpbmdQZXJtaXNzaW9uKTsKKyAgICBIVE1MRG9jdW1lbnRQYXJzZXIgcGFyc2VyKGZyYWdtZW50
LCBjb250ZXh0RWxlbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbik7CiAgICAgcGFyc2VyLmluc2Vy
dChzb3VyY2UpOyAvLyBVc2UgaW5zZXJ0KCkgc28gdGhhdCB0aGUgcGFyc2VyIHdpbGwgbm90IHlp
ZWxkLgogICAgIHBhcnNlci5maW5pc2goKTsKICAgICBBU1NFUlQoIXBhcnNlci5wcm9jZXNzaW5n
RGF0YSgpKTsgLy8gTWFrZSBzdXJlIHdlJ3JlIGRvbmUuIDxyZGFyOi8vcHJvYmxlbS8zOTYzMTUx
PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5oIGIvV2ViQ29y
ZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IGNjNDZkMzEzZjI1MmYyZjlhNWEzYWFi
YmQzMjRmYjcxMTc1OGRmMjkuLmQwNTU4NjE0ZjA1YWFiMTkyYzg3YWJmN2Y4N2MyZWE4MzQxYmRh
ODcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9X
ZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmgKQEAgLTU0LDEzICs1NCwxMyBAQCBjbGFz
cyBIVE1MRG9jdW1lbnRQYXJzZXIgOiAgcHVibGljIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciwg
SFRNTFNjcmlwdFJ1bm5lckhvcwogcHVibGljOgogICAgIC8vIEZJWE1FOiBUaGVzZSBjb25zdHJ1
Y3RvcnMgc2hvdWxkIGJlIG1hZGUgcHJpdmF0ZSBhbmQgcmVwbGFjZWQgYnkgY3JlYXRlKCkgbWV0
aG9kcy4KICAgICBIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50KiwgYm9vbCByZXBvcnRF
cnJvcnMpOwotICAgIEhUTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50KiwgRnJhZ21l
bnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKKyAgICBIVE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRG
cmFnbWVudCosIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1p
c3Npb24pOwogICAgIHZpcnR1YWwgfkhUTUxEb2N1bWVudFBhcnNlcigpOwogCiAgICAgLy8gRXhw
b3NlZCBmb3IgSFRNTFBhcnNlclNjaGVkdWxlcgogICAgIHZvaWQgcmVzdW1lUGFyc2luZ0FmdGVy
WWllbGQoKTsKIAotICAgIHN0YXRpYyB2b2lkIHBhcnNlRG9jdW1lbnRGcmFnbWVudChjb25zdCBT
dHJpbmcmLCBEb2N1bWVudEZyYWdtZW50KiwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uID0g
RnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKKyAgICBzdGF0aWMgdm9pZCBwYXJzZURvY3VtZW50
RnJhZ21lbnQoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRGcmFnbWVudCosIEVsZW1lbnQqIGNvbnRl
eHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGlu
Z0FsbG93ZWQpOwogCiBwcml2YXRlOgogICAgIC8vIERvY3VtZW50UGFyc2VyCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmNwcAppbmRleCAwMTk4OTAxZDczZjk1ZDMyMDE4Y2Y1M2FiMTg2Y2Y0ZDg5YjRmY2ZlLi42ZmM1
M2EyYmYwZWMwYTNiYTMzZWY2OTdhOGMyMzYzMjQyNDdlN2ZhIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
QEAgLTI3NSw2ICsyNzUsNyBAQCBTdHJpbmcgSFRNTEVsZW1lbnQ6Om91dGVySFRNTCgpIGNvbnN0
CiAgICAgcmV0dXJuIGNyZWF0ZU1hcmt1cCh0aGlzKTsKIH0KIAorLy8gRklYTUU6IFRoaXMgbWV0
aG9kIGlzIHVuZWNlc3Nhcnkgd2l0aCB0aGUgbmV3IEhUTUxEb2N1bWVudFBhcnNlci4KIFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gSFRNTEVsZW1lbnQ6OmNyZWF0ZUNvbnRleHR1YWxGcmFn
bWVudChjb25zdCBTdHJpbmcmIG1hcmt1cCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNj
cmlwdGluZ1Blcm1pc3Npb24pCiB7CiAgICAgLy8gVGhlIGZvbGxvd2luZyBpcyBpbiBhY2NvcmRh
bmNlIHdpdGggdGhlIGRlZmluaXRpb24gYXMgdXNlZCBieSBJRS4KQEAgLTM0MCw2ICszNDEsNyBA
QCBzdGF0aWMgdm9pZCByZXBsYWNlQ2hpbGRyZW5XaXRoVGV4dChIVE1MRWxlbWVudCogZWxlbWVu
dCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBFeAogCiB2b2lkIEhUTUxFbGVtZW50OjpzZXRJbm5lckhU
TUwoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICAvLyBGSVhN
RTogVGhpcyBjb2RlIGNhbiBiZSByZW1vdmVkLCBpdCdzIGhhbmRsZWQgYnkgdGhlIEhUTUxEb2N1
bWVudFBhcnNlciBjb3JyZWN0bHkuCiAgICAgaWYgKGhhc0xvY2FsTmFtZShzY3JpcHRUYWcpIHx8
IGhhc0xvY2FsTmFtZShzdHlsZVRhZykpIHsKICAgICAgICAgLy8gU2NyaXB0IGFuZCBDU1Mgc291
cmNlIHNob3VsZG4ndCBiZSBwYXJzZWQgYXMgSFRNTC4KICAgICAgICAgcmVtb3ZlQ2hpbGRyZW4o
KTsKQEAgLTU1MSw3ICs1NTMsNyBAQCB2b2lkIEhUTUxFbGVtZW50OjppbnNlcnRBZGphY2VudEhU
TUwoY29uc3QgU3RyaW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJiBtYXJrdXAsCiB7CiAgICAgUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZG9jdW1lbnQoKS0+Y3JlYXRlRG9jdW1l
bnRGcmFnbWVudCgpOwogICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQotICAg
ICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChtYXJrdXApOworICAgICAgICAgZnJhZ21lbnQtPnBh
cnNlSFRNTChtYXJrdXAsIHRoaXMpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoIWZyYWdtZW50
LT5wYXJzZVhNTChtYXJrdXAsIHRoaXMpKQogICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBwcm9wYWdhdGUgYSBzeW50YXggZXJyb3IgZXhjZXB0aW9uIG91dCBoZXJlLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50U3RhY2suY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50U3RhY2suY3BwCmluZGV4IDUzMWEzYjQyMDNmMGU4ODIzOTVjMWNmNTliMzY2NmEyY2I3
YzdmN2EuLjVhYzBmMmI3NDc5YjFmODEyODJiNDZmYjdiZGQ1MTVkOWM2MTU5MGIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudFN0YWNrLmNwcAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnRTdGFjay5jcHAKQEAgLTEzOCw2ICsxMzgsMjMgQEAgSFRNTEVsZW1lbnRTdGFj
azo6fkhUTUxFbGVtZW50U3RhY2soKQogewogfQogCitib29sIEhUTUxFbGVtZW50U3RhY2s6Omhh
c09ubHlPbmVFbGVtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIXRvcFJlY29yZCgpLT5uZXh0
KCk7Cit9CisKK2Jvb2wgSFRNTEVsZW1lbnRTdGFjazo6c2Vjb25kRWxlbWVudElzSFRNTEJvZHlF
bGVtZW50KCkgY29uc3QKK3sKKyAgICAvLyBUaGlzIGlzIHVzZWQgdGhlIGZyYWdtZW50IGNhc2Ug
b2YgPGJvZHk+IGFuZCA8ZnJhbWVzZXQ+IGluIHRoZSAiaW4gYm9keSIKKyAgICAvLyBpbnNlcnRp
b24gbW9kZS4KKyAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3Vy
cmVudC13b3JrL211bHRpcGFnZS90b2tlbml6YXRpb24uaHRtbCNwYXJzaW5nLW1haW4taW5ib2R5
CisgICAgQVNTRVJUKG1faHRtbEVsZW1lbnQpOworICAgIC8vIElmIHdlIGhhdmUgYSBib2R5IGVs
ZW1lbnQsIGl0IG11c3QgYWx3YXlzIGJlIHRoZSBzZWNvbmQgZWxlbWVudCBvbiB0aGUKKyAgICAv
LyBzdGFjaywgYXMgd2UgYWx3YXlzIHN0YXJ0IHdpdGggYW4gaHRtbCBlbGVtZW50LCBhbmQgYW55
IG90aGVyIGVsZW1lbnQKKyAgICAvLyB3b3VsZCBjYXVzZSB0aGUgaW1wbGljaXQgY3JlYXRpb24g
b2YgYSBib2R5IGVsZW1lbnQuCisgICAgcmV0dXJuIG1fYm9keUVsZW1lbnQ7Cit9CisKIHZvaWQg
SFRNTEVsZW1lbnRTdGFjazo6cG9wSFRNTEhlYWRFbGVtZW50KCkKIHsKICAgICBBU1NFUlQodG9w
KCkgPT0gbV9oZWFkRWxlbWVudCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnRTdGFjay5oIGIvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50U3RhY2suaAppbmRleCA2MmQwMzFm
YTRkYzY1NDk1YjNlNmU0NTVkNzg1YWIzZDA0NjQwYTg2Li5mZDlmM2I1ODU3MmUxOTBiNjczOTY4
NGU2ZmNkY2ZmZjBjMTEyOTQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnRT
dGFjay5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudFN0YWNrLmgKQEAgLTEyMSw2ICsx
MjEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNPbmx5SFRNTEVsZW1lbnRzSW5TY29wZSgpIGNv
bnN0OwogICAgIGJvb2wgaGFzTnVtYmVyZWRIZWFkZXJFbGVtZW50SW5TY29wZSgpIGNvbnN0Owog
CisgICAgYm9vbCBoYXNPbmx5T25lRWxlbWVudCgpIGNvbnN0OworICAgIGJvb2wgc2Vjb25kRWxl
bWVudElzSFRNTEJvZHlFbGVtZW50KCkgY29uc3Q7CisKICAgICBFbGVtZW50KiBodG1sRWxlbWVu
dCgpIGNvbnN0OwogICAgIEVsZW1lbnQqIGhlYWRFbGVtZW50KCkgY29uc3Q7CiAgICAgRWxlbWVu
dCogYm9keUVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVG9r
ZW5pemVyLmggYi9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5oCmluZGV4IGU0Y2ExNmFjZTFi
ZTNkNzhiYTZmNzE1MTM1OWRhZDgwMjE5N2Y5OGIuLjBlOWJhM2EyY2MwOWJlNDljNGRiZWM1M2Jm
NjA2ZmMzYzBmMDZlYjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmgK
KysrIGIvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuaApAQCAtMzQsNiArMzQsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MVG9rZW47CiAK
IGNsYXNzIEhUTUxUb2tlbml6ZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFRyZWVC
dWlsZGVyLmNwcAppbmRleCAwMTYwNzRlMDliY2Y1NDc2ZThkYjczMThhZGVjNjYwOTZkMjVhZTdj
Li4yYzdkNDBkMmUyNjYxM2EyYWExOTBkNmM3MDA5ZGY4YWQ0MDRkNzY5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRy
ZWVCdWlsZGVyLmNwcApAQCAtMjUzLDYgKzI1MywyOSBAQCBib29sIGlzTm90Rm9ybWF0dGluZ0Fu
ZE5vdFBocmFzaW5nKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgcmV0dXJuIGlzU2NvcGlu
Z1RhZyh0YWdOYW1lKSB8fCBpc1NwZWNpYWxUYWcodGFnTmFtZSk7CiB9CiAKK0hUTUxGb3JtRWxl
bWVudCogY2xvc2VzdEZvcm1BbmNlc3RvcihFbGVtZW50KiBlbGVtZW50KQoreworICAgIHdoaWxl
IChlbGVtZW50KSB7CisgICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKGZvcm1UYWcpKQor
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGVsZW1lbnQp
OworICAgICAgICBOb2RlKiBwYXJlbnQgPSBlbGVtZW50LT5wYXJlbnQoKTsKKyAgICAgICAgaWYg
KCFwYXJlbnQgfHwgIXBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4ocGFyZW50KTsKKyAg
ICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIEZJWE1FOiBUaGlzIGJlbG9uZ3Mgb24gQ29udGFp
bmVyTm9kZSwgd2hlcmUgaXQgY291bGQgYXZvaWQgdGhlIGRvdWJsZSByZWYKKy8vIGJ5IGRpcmVj
dGx5IHJlbGVhc2luZyBpbnRvIHRoZSBWZWN0b3IuICBTdWNoIGFuIGltcGxlbWVudGF0aW9uIHdv
dWxkIG5lZWQgdG8KKy8vIGJlIGNhcmVmdWwgbm90IHRvIHNlbmQgbXV0YXRpb24gZXZlbnRzLgor
dm9pZCB0YWtlQ2hpbGRyZW5Gcm9tTm9kZShDb250YWluZXJOb2RlKiBjb250YWluZXIsIFZlY3Rv
cjxSZWZQdHI8Tm9kZT4gPiYgY2hpbGRyZW4pCit7CisgICAgZm9yIChOb2RlKiBjaGlsZCA9IGNv
bnRhaW5lci0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmco
KSkKKyAgICAgICAgY2hpbGRyZW4uYXBwZW5kKGNoaWxkKTsKKyAgICBjb250YWluZXItPnJlbW92
ZUFsbENoaWxkcmVuKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKIGNsYXNzIEhUTUxUcmVlQnVp
bGRlcjo6RXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7
CkBAIC0zNDYsMzUgKzM2OSw4NyBAQCBIVE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRlcihI
VE1MVG9rZW5pemVyKiB0b2tlbml6ZXIsIEhUTUxEb2N1bWVudCogZG9jdW1lbgogICAgICwgbV90
b2tlbml6ZXIodG9rZW5pemVyKQogICAgICwgbV9sYXN0U2NyaXB0RWxlbWVudFN0YXJ0TGluZSh1
bmluaXRpYWxpemVkTGluZU51bWJlclZhbHVlKQogICAgICwgbV9zY3JpcHRUb1Byb2Nlc3NTdGFy
dExpbmUodW5pbml0aWFsaXplZExpbmVOdW1iZXJWYWx1ZSkKLSAgICAsIG1fZnJhZ21lbnRTY3Jp
cHRpbmdQZXJtaXNzaW9uKEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCkKLSAgICAsIG1faXNQYXJz
aW5nRnJhZ21lbnQoZmFsc2UpCiB7CiB9CiAKIC8vIEZJWE1FOiBNZW1iZXIgdmFyaWFibGVzIHNo
b3VsZCBiZSBncm91cGVkIGludG8gc2VsZi1pbml0aWFsaXppbmcgc3RydWN0cyB0bwogLy8gbWlu
aW1pemUgY29kZSBkdXBsaWNhdGlvbiBiZXR3ZWVuIHRoZXNlIGNvbnN0cnVjdG9ycy4KLUhUTUxU
cmVlQnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKEhUTUxUb2tlbml6ZXIqIHRva2VuaXplciwgRG9j
dW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3Jp
cHRpbmdQZXJtaXNzaW9uKQorSFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIoSFRNTFRv
a2VuaXplciogdG9rZW5pemVyLCBEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRWxlbWVudCog
Y29udGV4dEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJt
aXNzaW9uKQogICAgIDogbV9mcmFtZXNldE9rKHRydWUpCi0gICAgLCBtX2RvY3VtZW50KGZyYWdt
ZW50LT5kb2N1bWVudCgpKQotICAgICwgbV90cmVlKGZyYWdtZW50LT5kb2N1bWVudCgpLCBzY3Jp
cHRpbmdQZXJtaXNzaW9uLCB0cnVlKQorICAgICwgbV9mcmFnbWVudENvbnRleHQoZnJhZ21lbnQs
IGNvbnRleHRFbGVtZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uLCBzaG91bGRVc2VMZWdhY3lUcmVl
QnVpbGRlcihmcmFnbWVudC0+ZG9jdW1lbnQoKSkpCisgICAgLCBtX2RvY3VtZW50KG1fZnJhZ21l
bnRDb250ZXh0LmRvY3VtZW50KCkpCisgICAgLCBtX3RyZWUobV9kb2N1bWVudCwgc2NyaXB0aW5n
UGVybWlzc2lvbiwgdHJ1ZSkKICAgICAsIG1fcmVwb3J0RXJyb3JzKGZhbHNlKSAvLyBGSVhNRTog
V2h5IG5vdCByZXBvcnQgZXJyb3JzIGluIGZyYWdtZW50cz8KICAgICAsIG1faXNQYXVzZWQoZmFs
c2UpCiAgICAgLCBtX2luc2VydGlvbk1vZGUoSW5pdGlhbE1vZGUpCiAgICAgLCBtX29yaWdpbmFs
SW5zZXJ0aW9uTW9kZShJbml0aWFsTW9kZSkKICAgICAsIG1fc2Vjb25kYXJ5SW5zZXJ0aW9uTW9k
ZShJbml0aWFsTW9kZSkKICAgICAsIG1fdG9rZW5pemVyKHRva2VuaXplcikKLSAgICAsIG1fbGVn
YWN5VHJlZUJ1aWxkZXIobmV3IExlZ2FjeUhUTUxUcmVlQnVpbGRlcihmcmFnbWVudCwgc2NyaXB0
aW5nUGVybWlzc2lvbikpCisgICAgLCBtX2xlZ2FjeVRyZWVCdWlsZGVyKHNob3VsZFVzZUxlZ2Fj
eVRyZWVCdWlsZGVyKGZyYWdtZW50LT5kb2N1bWVudCgpKSA/IG5ldyBMZWdhY3lIVE1MVHJlZUJ1
aWxkZXIoZnJhZ21lbnQsIHNjcmlwdGluZ1Blcm1pc3Npb24pIDogMCkKICAgICAsIG1fbGFzdFNj
cmlwdEVsZW1lbnRTdGFydExpbmUodW5pbml0aWFsaXplZExpbmVOdW1iZXJWYWx1ZSkKICAgICAs
IG1fc2NyaXB0VG9Qcm9jZXNzU3RhcnRMaW5lKHVuaW5pdGlhbGl6ZWRMaW5lTnVtYmVyVmFsdWUp
Ci0gICAgLCBtX2ZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbihzY3JpcHRpbmdQZXJtaXNzaW9u
KQotICAgICwgbV9pc1BhcnNpbmdGcmFnbWVudCh0cnVlKQogeworICAgIGlmIChzaG91bGRVc2VM
ZWdhY3lUcmVlQnVpbGRlcihmcmFnbWVudC0+ZG9jdW1lbnQoKSkpCisgICAgICAgIHJldHVybjsK
KyAgICAvLyBUaGlzIGlzIHN0ZXBzIDItNiBvZiB0aGUgSFRNTDUgRnJhZ21lbnQgQ2FzZSBwYXJz
aW5nIGFsZ29yaXRobToKKyAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFw
cHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtZW5kLmh0bWwjZnJhZ21lbnQtY2FzZQorICAg
IGlmIChjb250ZXh0RWxlbWVudCkKKyAgICAgICAgbV9kb2N1bWVudC0+c2V0UGFyc2VNb2RlKGNv
bnRleHRFbGVtZW50LT5kb2N1bWVudCgpLT5wYXJzZU1vZGUoKSk7CisgICAgcHJvY2Vzc0Zha2VT
dGFydFRhZyhodG1sVGFnKTsKKyAgICByZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KCk7
CisgICAgbV90cmVlLnNldEZvcm0oY2xvc2VzdEZvcm1BbmNlc3Rvcihjb250ZXh0RWxlbWVudCkp
OwogfQogCiBIVE1MVHJlZUJ1aWxkZXI6On5IVE1MVHJlZUJ1aWxkZXIoKQogewogfQogCitIVE1M
VHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OkZyYWdtZW50UGFyc2luZ0NvbnRl
eHQoKQorICAgIDogbV9mcmFnbWVudCgwKQorICAgICwgbV9jb250ZXh0RWxlbWVudCgwKQorICAg
ICwgbV91c2luZ0xlZ2FjeVRyZWVCdWlsZGVyKGZhbHNlKQorICAgICwgbV9zY3JpcHRpbmdQZXJt
aXNzaW9uKEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCkKK3sKK30KKworSFRNTFRyZWVCdWlsZGVy
OjpGcmFnbWVudFBhcnNpbmdDb250ZXh0OjpGcmFnbWVudFBhcnNpbmdDb250ZXh0KERvY3VtZW50
RnJhZ21lbnQqIGZyYWdtZW50LCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3Jp
cHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24sIGJvb2wgbGVnYWN5TW9kZSkKKyAg
ICA6IG1fZHVtbXlEb2N1bWVudEZvckZyYWdtZW50UGFyc2luZyhsZWdhY3lNb2RlID8gMCA6IEhU
TUxEb2N1bWVudDo6Y3JlYXRlKDAsIEtVUkwoKSkpCisgICAgLCBtX2ZyYWdtZW50KGZyYWdtZW50
KQorICAgICwgbV9jb250ZXh0RWxlbWVudChjb250ZXh0RWxlbWVudCkKKyAgICAsIG1fdXNpbmdM
ZWdhY3lUcmVlQnVpbGRlcihsZWdhY3lNb2RlKQorICAgICwgbV9zY3JpcHRpbmdQZXJtaXNzaW9u
KHNjcmlwdGluZ1Blcm1pc3Npb24pCit7Cit9CisKK0RvY3VtZW50KiBIVE1MVHJlZUJ1aWxkZXI6
OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OmRvY3VtZW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
bV9mcmFnbWVudCk7CisgICAgaWYgKG1fdXNpbmdMZWdhY3lUcmVlQnVpbGRlcikKKyAgICAgICAg
cmV0dXJuIG1fZnJhZ21lbnQtPmRvY3VtZW50KCk7CisgICAgcmV0dXJuIG1fZHVtbXlEb2N1bWVu
dEZvckZyYWdtZW50UGFyc2luZy5nZXQoKTsKK30KKwordm9pZCBIVE1MVHJlZUJ1aWxkZXI6OkZy
YWdtZW50UGFyc2luZ0NvbnRleHQ6OmZpbmlzaGVkKCkKK3sKKyAgICAvLyBQb3B1bGF0ZSB0aGUg
RG9jdW1lbnRGcmFnbWVudCB3aXRoIHRoZSBwYXJzZWQgY29udGVudCBub3cgdGhhdCB3ZSdyZSBk
b25lLgorICAgIENvbnRhaW5lck5vZGUqIHJvb3QgPSBtX2R1bW15RG9jdW1lbnRGb3JGcmFnbWVu
dFBhcnNpbmcuZ2V0KCk7CisgICAgaWYgKG1fY29udGV4dEVsZW1lbnQpCisgICAgICAgIHJvb3Qg
PSBtX2R1bW15RG9jdW1lbnRGb3JGcmFnbWVudFBhcnNpbmctPmRvY3VtZW50RWxlbWVudCgpOwor
ICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBjaGlsZHJlbjsKKyAgICB0YWtlQ2hpbGRyZW5Gcm9t
Tm9kZShyb290LCBjaGlsZHJlbik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoaWxk
cmVuLnNpemUoKTsgKytpKSB7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAg
ICAvLyBGSVhNRTogV2UgbmVlZCBhIHBhcnNlci1zYWZlIChubyBldmVudHMpIHZlcnNpb24gb2Yg
YWRvcHROb2RlLgorICAgICAgICBSZWZQdHI8Tm9kZT4gY2hpbGQgPSBtX2ZyYWdtZW50LT5kb2N1
bWVudCgpLT5hZG9wdE5vZGUoY2hpbGRyZW5baV0ucmVsZWFzZSgpLCBlYyk7CisgICAgICAgIEFT
U0VSVCghZWMpOworICAgICAgICBtX2ZyYWdtZW50LT5wYXJzZXJBZGRDaGlsZChjaGlsZC5yZWxl
YXNlKCkpOworICAgIH0KK30KKworSFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250
ZXh0Ojp+RnJhZ21lbnRQYXJzaW5nQ29udGV4dCgpCit7Cit9CisKIHN0YXRpYyB2b2lkIGNvbnZl
cnRUb09sZFN0eWxlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4sIFRva2VuJiBvbGRTdHlsZVRva2Vu
KQogewogICAgIHN3aXRjaCAodG9rZW4udHlwZSgpKSB7CkBAIC00NzYsNyArNTUxLDcgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnBhc3NUb2tlblRvTGVnYWN5UGFyc2VyKEhUTUxUb2tlbiYgdG9r
ZW4pCiAgICAgICAgIGlmIChvbGRTdHlsZVRva2VuLnRhZ05hbWUgPT0gc2NyaXB0VGFnKSB7CiAg
ICAgICAgICAgICBpZiAobV9sYXN0U2NyaXB0RWxlbWVudCkgewogICAgICAgICAgICAgICAgIEFT
U0VSVChtX2xhc3RTY3JpcHRFbGVtZW50U3RhcnRMaW5lICE9IHVuaW5pdGlhbGl6ZWRMaW5lTnVt
YmVyVmFsdWUpOwotICAgICAgICAgICAgICAgIGlmIChtX2ZyYWdtZW50U2NyaXB0aW5nUGVybWlz
c2lvbiA9PSBGcmFnbWVudFNjcmlwdGluZ05vdEFsbG93ZWQpIHsKKyAgICAgICAgICAgICAgICBp
ZiAobV9mcmFnbWVudENvbnRleHQuc2NyaXB0aW5nUGVybWlzc2lvbigpID09IEZyYWdtZW50U2Ny
aXB0aW5nTm90QWxsb3dlZCkgewogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBp
cyBhIGhvcnJpYmxlIGhhY2sgZm9yIHBsYXRmb3JtL1Bhc3RlYm9hcmQuCiAgICAgICAgICAgICAg
ICAgICAgIC8vIENsZWFyIHRoZSA8c2NyaXB0PiB0YWcgd2hlbiB1c2luZyB0aGUgUGFyc2VyIHRv
IGNyZWF0ZQogICAgICAgICAgICAgICAgICAgICAvLyBhIERvY3VtZW50RnJhZ21lbnQgZm9yIHBh
c3Rpbmcgc28gdGhhdCBqYXZhc2NyaXB0IGNvbnRlbnQKQEAgLTc5NywxMiArODcyLDE5IEBAIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRv
a2VuJiB0b2tlbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodG9rZW4ubmFtZSgp
ID09IGJvZHlUYWcpIHsKKyAgICAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPnNlY29u
ZEVsZW1lbnRJc0hUTUxCb2R5RWxlbWVudCgpIHx8IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aGFz
T25seU9uZUVsZW1lbnQoKSkgeworICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50
KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIG1fdHJlZS5pbnNl
cnRIVE1MQm9keVN0YXJ0VGFnSW5Cb2R5KHRva2VuKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBpZiAodG9rZW4ubmFtZSgpID09IGZyYW1lc2V0VGFnKSB7CiAgICAgICAgIHBhcnNlRXJy
b3IodG9rZW4pOwotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOyAvLyBmcmFnbWVudCBjYXNlCisg
ICAgICAgIGlmICghbV90cmVlLm9wZW5FbGVtZW50cygpLT5zZWNvbmRFbGVtZW50SXNIVE1MQm9k
eUVsZW1lbnQoKSB8fCBtX3RyZWUub3BlbkVsZW1lbnRzKCktPmhhc09ubHlPbmVFbGVtZW50KCkp
IHsKKyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQogICAgICAgICBpZiAoIW1fZnJhbWVzZXRPaykKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC0xMDczLDcgKzEx
NTUsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5Cb2R5KEF0
b21pY0hUTUxUb2tlbiYgdG9rZW4pCiBib29sIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NvbGdy
b3VwRW5kVGFnRm9ySW5Db2x1bW5Hcm91cCgpCiB7CiAgICAgaWYgKG1fdHJlZS5jdXJyZW50RWxl
bWVudCgpID09IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aHRtbEVsZW1lbnQoKSkgewotICAgICAg
ICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgIEFTU0VSVChpc1BhcnNpbmdG
cmFnbWVudCgpKTsKICAgICAgICAgLy8gRklYTUU6IHBhcnNlIGVycm9yCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CkBAIC0xMTM0LDcgKzEyMTYsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5UYWJsZShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAg
IGlmICh0b2tlbi5uYW1lKCkgPT0gdGFibGVUYWcpIHsKICAgICAgICAgcGFyc2VFcnJvcih0b2tl
bik7CiAgICAgICAgIGlmICghcHJvY2Vzc1RhYmxlRW5kVGFnRm9ySW5UYWJsZSgpKSB7Ci0gICAg
ICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICBBU1NFUlQo
aXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgcHJvY2Vzc1N0YXJ0VGFnKHRva2VuKTsKQEAgLTEyODMsNyArMTM2NSw3IEBAIHZvaWQg
SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikK
ICAgICAgICAgICAgIHx8IHRva2VuLm5hbWUoKSA9PSB0clRhZykgewogICAgICAgICAgICAgcGFy
c2VFcnJvcih0b2tlbik7CiAgICAgICAgICAgICBpZiAoIXByb2Nlc3NDYXB0aW9uRW5kVGFnRm9y
SW5DYXB0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVu
dCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHByb2Nlc3NTdGFy
dFRhZyh0b2tlbik7CkBAIC0xMzAyLDcgKzEzODQsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFwcm9jZXNzQ29sZ3JvdXBFbmRUYWdGb3JJbkNv
bHVtbkdyb3VwKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsK
KyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBwcm9jZXNzU3RhcnRUYWcodG9rZW4pOwpAQCAtMTMy
NSw3ICsxNDA3LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9t
aWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBpZiAoaXNDYXB0aW9uQ29sT3JDb2xncm91cFRh
Zyh0b2tlbi5uYW1lKCkpIHx8IGlzVGFibGVCb2R5Q29udGV4dFRhZyh0b2tlbi5uYW1lKCkpKSB7
CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBzbG93LgogICAgICAgICAgICAgaWYgKCFt
X3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0Ym9keVRhZy5sb2NhbE5hbWUoKSkg
JiYgIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJsZVNjb3BlKHRoZWFkVGFnLmxvY2FsTmFt
ZSgpKSAmJiAhbV90cmVlLm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2NvcGUodGZvb3RUYWcubG9j
YWxOYW1lKCkpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQp
OworICAgICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAg
ICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CkBAIC0xMzUwLDcgKzE0MzIsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICB8fCBpc0Nh
cHRpb25Db2xPckNvbGdyb3VwVGFnKHRva2VuLm5hbWUoKSkKICAgICAgICAgICAgIHx8IGlzVGFi
bGVCb2R5Q29udGV4dFRhZyh0b2tlbi5uYW1lKCkpKSB7CiAgICAgICAgICAgICBpZiAoIXByb2Nl
c3NUckVuZFRhZ0ZvckluUm93KCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNp
bmdGcmFnbWVudCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFT
U0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5UYWJsZUJvZHlNb2RlKTsKQEAgLTEzNjcsNyArMTQ0
OSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRv
a2VuJiB0b2tlbikKICAgICAgICAgICAgIHx8IGlzVGFibGVCb2R5Q29udGV4dFRhZyh0b2tlbi5u
YW1lKCkpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBtb3JlIGVmZmlj
aWVudC4KICAgICAgICAgICAgIGlmICghbV90cmVlLm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2Nv
cGUodGRUYWcpICYmICFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0aFRhZykp
IHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgICAgIHBh
cnNlRXJyb3IodG9rZW4pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
QEAgLTE3ODEsMTIgKzE4NjMsMTIgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0
aW9uTW9kZUFwcHJvcHJpYXRlbHkoKQogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIEVsZW1lbnQq
IG5vZGUgPSBub2RlUmVjb3JkLT5lbGVtZW50KCk7CiAgICAgICAgIGlmIChub2RlID09IG1fdHJl
ZS5vcGVuRWxlbWVudHMoKS0+Ym90dG9tKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lzUGFy
c2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsK
ICAgICAgICAgICAgIGxhc3QgPSB0cnVlOwotICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsg
Ly8gbm9kZSA9IG1fY29udGV4dEVsZW1lbnQ7CisgICAgICAgICAgICBub2RlID0gbV9mcmFnbWVu
dENvbnRleHQuY29udGV4dEVsZW1lbnQoKTsKICAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+
aGFzVGFnTmFtZShzZWxlY3RUYWcpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdG
cmFnbWVudCk7CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZUFuZEVuZChJblNlbGVjdE1vZGUsIGZvcmVp
Z24pOwogICAgICAgICB9CiAgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRkVGFnKSB8fCBu
b2RlLT5oYXNUYWdOYW1lKHRoVGFnKSkKQEAgLTE3OTgsMzAgKzE4ODAsMzAgQEAgdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKQogICAgICAgICBp
ZiAobm9kZS0+aGFzVGFnTmFtZShjYXB0aW9uVGFnKSkKICAgICAgICAgICAgIHJldHVybiBzZXRJ
bnNlcnRpb25Nb2RlQW5kRW5kKEluQ2FwdGlvbk1vZGUsIGZvcmVpZ24pOwogICAgICAgICBpZiAo
bm9kZS0+aGFzVGFnTmFtZShjb2xncm91cFRhZykpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lz
UGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgp
KTsKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlQW5kRW5kKEluQ29sdW1uR3Jv
dXBNb2RlLCBmb3JlaWduKTsKICAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFt
ZSh0YWJsZVRhZykpCiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZUFuZEVuZChJ
blRhYmxlTW9kZSwgZm9yZWlnbik7CiAgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGhlYWRU
YWcpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAg
ICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc2V0
SW5zZXJ0aW9uTW9kZUFuZEVuZChJbkJvZHlNb2RlLCBmb3JlaWduKTsKICAgICAgICAgfQogICAg
ICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShib2R5VGFnKSkKICAgICAgICAgICAgIHJldHVybiBz
ZXRJbnNlcnRpb25Nb2RlQW5kRW5kKEluQm9keU1vZGUsIGZvcmVpZ24pOwogICAgICAgICBpZiAo
bm9kZS0+aGFzVGFnTmFtZShmcmFtZXNldFRhZykpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lz
UGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgp
KTsKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlQW5kRW5kKEluRnJhbWVzZXRN
b2RlLCBmb3JlaWduKTsKICAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSho
dG1sVGFnKSkgewotICAgICAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAg
ICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJu
IHNldEluc2VydGlvbk1vZGVBbmRFbmQoQmVmb3JlSGVhZE1vZGUsIGZvcmVpZ24pOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChub2RlLT5uYW1lc3BhY2VVUkkoKSA9PSBTVkdOYW1lczo6c3ZnTmFt
ZXNwYWNlVVJJCiAgICAgICAgICAgICB8fCBub2RlLT5uYW1lc3BhY2VVUkkoKSA9PSBNYXRoTUxO
YW1lczo6bWF0aG1sTmFtZXNwYWNlVVJJKQogICAgICAgICAgICAgZm9yZWlnbiA9IHRydWU7CiAg
ICAgICAgIGlmIChsYXN0KSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVu
dCk7CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAg
ICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZUFuZEVuZChJbkJvZHlNb2RlLCBmb3JlaWduKTsKICAg
ICAgICAgfQogICAgICAgICBub2RlUmVjb3JkID0gbm9kZVJlY29yZC0+bmV4dCgpOwpAQCAtMTg0
NCw3ICsxOTI2LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblRh
YmxlQm9keShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0g
dGFibGVUYWcpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgc2xvdy4KICAgICAgICAgaWYg
KCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0Ym9keVRhZy5sb2NhbE5hbWUo
KSkgJiYgIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJsZVNjb3BlKHRoZWFkVGFnLmxvY2Fs
TmFtZSgpKSAmJiAhbV90cmVlLm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2NvcGUodGZvb3RUYWcu
bG9jYWxOYW1lKCkpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7
CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICBw
YXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTg3
NCw3ICsxOTU2LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblJv
dyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgIH0KICAgICBpZiAodG9rZW4ubmFtZSgpID09
IHRhYmxlVGFnKSB7CiAgICAgICAgIGlmICghcHJvY2Vzc1RyRW5kVGFnRm9ySW5Sb3coKSkgewot
ICAgICAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAgICAgICAgICAgQVNT
RVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5UYWJsZUJvZHlNb2RlKTsKQEAg
LTE5MjgsNyArMjAxMCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9y
SW5DZWxsKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIHx8IHRva2VuLm5hbWUoKSA9
PSB0clRhZwogICAgICAgICB8fCBpc1RhYmxlQm9keUNvbnRleHRUYWcodG9rZW4ubmFtZSgpKSkg
ewogICAgICAgICBpZiAoIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJsZVNjb3BlKHRva2Vu
Lm5hbWUoKSkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsKKyAg
ICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBJdCBpcyB1bmNsZWFyIHdoYXQgdGhlIGV4YWN0IEFTU0VSVCBzaG91bGQgYmUuCiAgICAg
ICAgICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9
MTAwOTgKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwpAQCAtMjA4MCw3ICsyMTYyLDcg
QEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJbkJvZHkoQXRvbWljSFRN
TFRva2VuJiB0b2tlbikKIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2FwdGlvbkVuZFRh
Z0ZvckluQ2FwdGlvbigpCiB7CiAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFi
bGVTY29wZShjYXB0aW9uVGFnLmxvY2FsTmFtZSgpKSkgewotICAgICAgICBBU1NFUlQobV9pc1Bh
cnNpbmdGcmFnbWVudCk7CisgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAg
ICAgICAgLy8gRklYTUU6IHBhcnNlIGVycm9yCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CkBAIC0yMDk1LDcgKzIxNzcsNyBAQCBib29sIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NhcHRp
b25FbmRUYWdGb3JJbkNhcHRpb24oKQogYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUckVu
ZFRhZ0ZvckluUm93KCkKIHsKICAgICBpZiAoIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJs
ZVNjb3BlKHRyVGFnLmxvY2FsTmFtZSgpKSkgewotICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdG
cmFnbWVudCk7CisgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAg
Ly8gRklYTUU6IHBhcnNlIGVycm9yCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0y
MTA5LDcgKzIxOTEsNyBAQCBib29sIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1RyRW5kVGFnRm9y
SW5Sb3coKQogYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUYWJsZUVuZFRhZ0ZvckluVGFi
bGUoKQogewogICAgIGlmICghbV90cmVlLm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2NvcGUodGFi
bGVUYWcpKSB7Ci0gICAgICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAg
QVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAvLyBGSVhNRTogcGFyc2UgZXJy
b3IuCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yMjAxLDcgKzIyODMsNyBAQCB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2Vu
KQogICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IHRhYmxlVGFnKSB7CiAgICAgICAgICAgICBw
YXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgICAgIGlmICghcHJvY2Vzc0NhcHRpb25FbmRUYWdG
b3JJbkNhcHRpb24oKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdt
ZW50KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcHJvY2Vzc0Vu
ZFRhZyh0b2tlbik7CkBAIC0yMjMwLDcgKzIzMTIsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIGlmICghcHJvY2Vzc0NvbGdyb3VwRW5kVGFnRm9ySW5Db2x1
bW5Hcm91cCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7Cisg
ICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgcHJvY2Vzc0VuZFRhZyh0b2tlbik7CkBAIC0yMjUwLDcg
KzIzMzIsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1M
VG9rZW4mIHRva2VuKQogICAgIGNhc2UgQWZ0ZXJCb2R5TW9kZToKICAgICAgICAgQVNTRVJUKGlu
c2VydGlvbk1vZGUoKSA9PSBBZnRlckJvZHlNb2RlKTsKICAgICAgICAgaWYgKHRva2VuLm5hbWUo
KSA9PSBodG1sVGFnKSB7Ci0gICAgICAgICAgICBpZiAobV9pc1BhcnNpbmdGcmFnbWVudCkgewor
ICAgICAgICAgICAgaWYgKGlzUGFyc2luZ0ZyYWdtZW50KCkpIHsKICAgICAgICAgICAgICAgICBw
YXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CkBAIC0yMzAyLDcgKzIzODQsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRh
ZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cG9wKCk7Ci0gICAg
ICAgICAgICBpZiAoIW1faXNQYXJzaW5nRnJhZ21lbnQgJiYgIW1fdHJlZS5jdXJyZW50RWxlbWVu
dCgpLT5oYXNUYWdOYW1lKGZyYW1lc2V0VGFnKSkKKyAgICAgICAgICAgIGlmICghaXNQYXJzaW5n
RnJhZ21lbnQoKSAmJiAhbV90cmVlLmN1cnJlbnRFbGVtZW50KCktPmhhc1RhZ05hbWUoZnJhbWVz
ZXRUYWcpKQogICAgICAgICAgICAgICAgIHNldEluc2VydGlvbk1vZGUoQWZ0ZXJGcmFtZXNldE1v
ZGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNTQ1LDcgKzI2MjcsNyBA
QCBSZXByb2Nlc3NCdWZmZXI6CiAgICAgICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoIXByb2Nlc3NDb2xncm91cEVuZFRhZ0ZvckluQ29s
dW1uR3JvdXAoKSkgewotICAgICAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOwor
ICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIGdvdG8gUmVwcm9jZXNzQnVmZmVyOwpAQCAtMjY2NSwx
MSArMjc0NywxMSBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZShBdG9t
aWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBicmVhazsKICAgICBjYXNlIEluQ29sdW1uR3Jv
dXBNb2RlOgogICAgICAgICBpZiAobV90cmVlLmN1cnJlbnRFbGVtZW50KCkgPT0gbV90cmVlLm9w
ZW5FbGVtZW50cygpLT5odG1sRWxlbWVudCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1Bh
cnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFwcm9jZXNzQ29s
Z3JvdXBFbmRUYWdGb3JJbkNvbHVtbkdyb3VwKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lz
UGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBwcm9jZXNzRW5kT2ZG
aWxlKHRva2VuKTsKQEAgLTI4MzMsOSArMjkxNSwxMyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
ZmluaXNoZWQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKGlzUGFyc2luZ0Zy
YWdtZW50KCkpIHsKKyAgICAgICAgbV9mcmFnbWVudENvbnRleHQuZmluaXNoZWQoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKwogICAgIC8vIFdhcm5pbmcsIHRoaXMgbWF5IGRlbGV0ZSB0aGUg
cGFyc2VyLCBzbyBkb24ndCB0cnkgdG8gZG8gYW55dGhpbmcgZWxzZSBhZnRlciB0aGlzLgotICAg
IGlmICghbV9pc1BhcnNpbmdGcmFnbWVudCkKLSAgICAgICAgbV9kb2N1bWVudC0+ZmluaXNoZWRQ
YXJzaW5nKCk7CisgICAgbV9kb2N1bWVudC0+ZmluaXNoZWRQYXJzaW5nKCk7CiB9CiAKIGJvb2wg
SFRNTFRyZWVCdWlsZGVyOjpzY3JpcHRFbmFibGVkKEZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1
aWxkZXIuaAppbmRleCBlMzFkMDliNjZlZjNiN2MxNWU3YzAzZjBlZjg5YTRiNGIxZjMwNzZiLi4y
NGNiNTQyYTA3NWU3OTY3NTliNzFhMzkyMDc5MDM4YmY0NWI2ZGI3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVp
bGRlci5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIEhUTUxUcmVlQnVpbGRlciA6IHB1YmxpYyBO
b25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFJlcGxhY2UgY29uc3RydWN0b3Jz
IHdpdGggY3JlYXRlKCkgZnVuY3Rpb25zIHJldHVybmluZyBQYXNzT3duUHRycwogICAgIEhUTUxU
cmVlQnVpbGRlcihIVE1MVG9rZW5pemVyKiwgSFRNTERvY3VtZW50KiwgYm9vbCByZXBvcnRFcnJv
cnMpOwotICAgIEhUTUxUcmVlQnVpbGRlcihIVE1MVG9rZW5pemVyKiwgRG9jdW1lbnRGcmFnbWVu
dCosIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbik7CisgICAgSFRNTFRyZWVCdWlsZGVyKEhU
TUxUb2tlbml6ZXIqLCBEb2N1bWVudEZyYWdtZW50KiwgRWxlbWVudCogY29udGV4dEVsZW1lbnQs
IEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbik7CiAgICAgfkhUTUxUcmVlQnVpbGRlcigpOwog
CiAgICAgdm9pZCBzZXRQYXVzZWQoYm9vbCBwYXVzZWQpIHsgbV9pc1BhdXNlZCA9IHBhdXNlZDsg
fQpAQCAtNzQsNiArNzQsOSBAQCBwdWJsaWM6CiAgICAgLy8gdW50aWwgd2Ugc3RvcCB1c2luZyB0
aGUgbGVnYWN5IHBhcnNlci4gRE8gTk9UIENBTEwgVEhJUyBNRVRIT0QuCiAgICAgTGVnYWN5SFRN
TFRyZWVCdWlsZGVyKiBsZWdhY3lUcmVlQnVpbGRlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGVnYWN5
VHJlZUJ1aWxkZXIuZ2V0KCk7IH0KIAorICAgIHN0YXRpYyBib29sIHNjcmlwdEVuYWJsZWQoRnJh
bWUqKTsKKyAgICBzdGF0aWMgYm9vbCBwbHVnaW5zRW5hYmxlZChGcmFtZSopOworCiBwcml2YXRl
OgogICAgIGNsYXNzIEZha2VJbnNlcnRpb25Nb2RlOwogICAgIGNsYXNzIEV4dGVybmFsQ2hhcmFj
dGVyVG9rZW5CdWZmZXI7CkBAIC0xMDUsNiArMTA4LDggQEAgcHJpdmF0ZToKICAgICAgICAgQWZ0
ZXJBZnRlckZyYW1lc2V0TW9kZSwKICAgICB9OwogCisgICAgYm9vbCBpc1BhcnNpbmdGcmFnbWVu
dCgpIGNvbnN0IHsgcmV0dXJuICEhbV9mcmFnbWVudENvbnRleHQuZnJhZ21lbnQoKTsgfQorCiAg
ICAgdm9pZCBwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNlcihIVE1MVG9rZW4mKTsKIAogICAgIHZvaWQg
cHJvY2Vzc1Rva2VuKEF0b21pY0hUTUxUb2tlbiYpOwpAQCAtMTkyLDggKzE5NywzMSBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0SW5zZXJ0aW9uTW9kZUFuZEVuZChJbnNlcnRpb25Nb2RlLCBib29s
IGZvcmVpZ24pOyAvLyBIZWxwZXIgZm9yIHJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkK
ICAgICB2b2lkIHJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKTsKIAotICAgIHN0YXRp
YyBib29sIHNjcmlwdEVuYWJsZWQoRnJhbWUqIGZyYW1lKTsKLSAgICBzdGF0aWMgYm9vbCBwbHVn
aW5zRW5hYmxlZChGcmFtZSogZnJhbWUpOworICAgIGNsYXNzIEZyYWdtZW50UGFyc2luZ0NvbnRl
eHQgOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgRnJhZ21lbnRQ
YXJzaW5nQ29udGV4dCgpOworICAgICAgICBGcmFnbWVudFBhcnNpbmdDb250ZXh0KERvY3VtZW50
RnJhZ21lbnQqLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJt
aXNzaW9uLCBib29sIHVzaW5nTGVnYWN5VHJlZUJ1aWxkZXIpOworICAgICAgICB+RnJhZ21lbnRQ
YXJzaW5nQ29udGV4dCgpOworCisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0Owor
ICAgICAgICBEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJh
Z21lbnQ7IH0KKyAgICAgICAgRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IEFTU0VS
VChtX2ZyYWdtZW50KTsgQVNTRVJUKCFtX3VzaW5nTGVnYWN5VHJlZUJ1aWxkZXIpOyByZXR1cm4g
bV9jb250ZXh0RWxlbWVudDsgfQorICAgICAgICBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24g
c2NyaXB0aW5nUGVybWlzc2lvbigpIGNvbnN0IHsgQVNTRVJUKG1fZnJhZ21lbnQpOyByZXR1cm4g
bV9zY3JpcHRpbmdQZXJtaXNzaW9uOyB9CisKKyAgICAgICAgdm9pZCBmaW5pc2hlZCgpOworCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgUmVmUHRyPERvY3VtZW50PiBtX2R1bW15RG9jdW1lbnRGb3JG
cmFnbWVudFBhcnNpbmc7CisgICAgICAgIERvY3VtZW50RnJhZ21lbnQqIG1fZnJhZ21lbnQ7Cisg
ICAgICAgIEVsZW1lbnQqIG1fY29udGV4dEVsZW1lbnQ7CisgICAgICAgIGJvb2wgbV91c2luZ0xl
Z2FjeVRyZWVCdWlsZGVyOworCisgICAgICAgIC8vIEZyYWdtZW50U2NyaXB0aW5nTm90QWxsb3dl
ZCBjYXVzZXMgdGhlIFBhcnNlciB0byByZW1vdmUgY2hpbGRyZW4KKyAgICAgICAgLy8gZnJvbSA8
c2NyaXB0PiB0YWdzIChzbyBqYXZhc2NyaXB0IGRvZXNuJ3Qgc2hvdyB1cCBpbiBwYXN0ZXMpLgor
ICAgICAgICBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gbV9zY3JpcHRpbmdQZXJtaXNzaW9u
OworICAgIH07CisKKyAgICBGcmFnbWVudFBhcnNpbmdDb250ZXh0IG1fZnJhZ21lbnRDb250ZXh0
OwogCiAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CiAgICAgSFRNTENvbnN0cnVjdGlvblNpdGUg
bV90cmVlOwpAQCAtMjI2LDEyICsyNTQsNiBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPEVsZW1l
bnQ+IG1fc2NyaXB0VG9Qcm9jZXNzOyAvLyA8c2NyaXB0PiB0YWcgd2hpY2ggbmVlZHMgcHJvY2Vz
c2luZyBiZWZvcmUgcmVzdW1pbmcgdGhlIHBhcnNlci4KICAgICBpbnQgbV9zY3JpcHRUb1Byb2Nl
c3NTdGFydExpbmU7IC8vIFN0YXJ0aW5nIGxpbmUgbnVtYmVyIG9mIHRoZSBzY3JpcHQgdGFnIG5l
ZWRpbmcgcHJvY2Vzc2luZy4KLQotICAgIC8vIEZJWE1FOiBGcmFnbWVudFNjcmlwdGluZ1Blcm1p
c3Npb24gaXMgYSBIQUNLIGZvciBwbGF0Zm9ybS9QYXN0ZWJvYXJkLgotICAgIC8vIEZyYWdtZW50
U2NyaXB0aW5nTm90QWxsb3dlZCBjYXVzZXMgdGhlIFBhcnNlciB0byByZW1vdmUgY2hpbGRyZW4K
LSAgICAvLyBmcm9tIDxzY3JpcHQ+IHRhZ3MgKHNvIGphdmFzY3JpcHQgZG9lc24ndCBzaG93IHVw
IGluIHBhc3RlcykuCi0gICAgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIG1fZnJhZ21lbnRT
Y3JpcHRpbmdQZXJtaXNzaW9uOwotICAgIGJvb2wgbV9pc1BhcnNpbmdGcmFnbWVudDsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwIGIvV2ViQ29yZS94
bWwvWFNMVFByb2Nlc3Nvci5jcHAKaW5kZXggZjk0OTE2MzgxYzJjZjllNGI1NDA4ZGM5NGQ5NTQ1
YjUyOGFjMWVkNi4uN2UwN2VlM2ZkYmIzMjQ5MjJjMmViODEzYjFjZTkzZmI2Yjk5ZjI5YSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKKysrIGIvV2ViQ29yZS94bWwv
WFNMVFByb2Nlc3Nvci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Tb3VyY2UoY29uc3QgU3RyaW5n
JiBzbwogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IG91dHB1dERvYy0+
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogCiAgICAgaWYgKHNvdXJjZU1JTUVUeXBlID09ICJ0
ZXh0L2h0bWwiKQotICAgICAgICBmcmFnbWVudC0+cGFyc2VIVE1MKHNvdXJjZVN0cmluZyk7Cisg
ICAgICAgIGZyYWdtZW50LT5wYXJzZUhUTUwoc291cmNlU3RyaW5nLCBvdXRwdXREb2MtPmRvY3Vt
ZW50RWxlbWVudCgpKTsKICAgICBlbHNlIGlmIChzb3VyY2VNSU1FVHlwZSA9PSAidGV4dC9wbGFp
biIpCiAgICAgICAgIGZyYWdtZW50LT5sZWdhY3lQYXJzZXJBZGRDaGlsZChUZXh0OjpjcmVhdGUo
b3V0cHV0RG9jLCBzb3VyY2VTdHJpbmcpKTsKICAgICBlbHNlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63916</attachid>
            <date>2010-08-09 12:40:24 -0700</date>
            <delta_ts>2010-08-09 13:59:36 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-43586-20100809124023.patch</filename>
            <type>text/plain</type>
            <size>42372</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2Y2UyNTQ3MDdjY2YwYzJkYTJiMGMxZTc5ZDk0ZmFkNzBmOThkYjNlLi45YmI5Njdm
NDA3ZDI5ZWJjNDhmOTViMzZmNWQyNmExNGVhN2YwNzU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMDgtMDkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgVXNlIHRoZSBIVE1MNSBUcmVlQnVpbGRl
ciBmb3IgRnJhZ21lbnQgUGFyc2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDM1ODYKKworICAgICAgICAqIGh0bWw1bGliL3J1bm5lci1leHBlY3Rl
ZC1odG1sNS50eHQ6CisgICAgICAgICAtIFdlIHBhc3MgNCBtb3JlIHRlc3RzIG5vdyB0aGF0IEhU
TUw1IGZyYWdtZW50IHBhcnNpbmcgaXMKKyAgICAgICAgICAgKHBhcnRpYWxseSkgaW1wbGVtZW50
ZWQgYmVoaW5kIHRoZSAtLWh0bWw1LXRyZWVidWlsZGVyIGZsYWcuCisKIDIwMTAtMDgtMDkgIEpp
YW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVwZGF0ZSBjaHJvbWl1bSB0
ZXN0IHJlc3VsdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhw
ZWN0ZWQtaHRtbDUudHh0IGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLWh0
bWw1LnR4dAppbmRleCBhYzAxOWZmMjkzMjkxNTY3Nzc2OGM1Y2JjZDBiMTAyNWI3OTY3NzIzLi41
Y2EyMzI5MjU5MDQyMDQ2MWJiMWI5ZjRmZWRjZGNjZjg0YjA4OTgxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQtaHRtbDUudHh0CisrKyBiL0xheW91dFRl
c3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC1odG1sNS50eHQKQEAgLTE3LDMwICsxNyw5IEBA
IHJlc291cmNlcy90ZXN0czIuZGF0OiBQQVNTCiByZXNvdXJjZXMvdGVzdHMzLmRhdDogUEFTUwog
CiByZXNvdXJjZXMvdGVzdHM0LmRhdDoKLTMKLTUKIDYKIDcKIAotVGVzdCAzIG9mIDcgaW4gcmVz
b3VyY2VzL3Rlc3RzNC5kYXQgZmFpbGVkLiBJbnB1dDoKLXRleHRhcmVhIGNvbnRlbnQgd2l0aCA8
ZW0+cHNldWRvPC9lbT4gPGZvbz5tYXJrdXAKLUdvdDoKLXwgInRleHRhcmVhIGNvbnRlbnQgd2l0
aCAiCi18IDxlbT4KLXwgICAicHNldWRvIgotfCAiICIKLXwgPGZvbz4KLXwgICAibWFya3VwIgot
RXhwZWN0ZWQ6Ci18ICJ0ZXh0YXJlYSBjb250ZW50IHdpdGggPGVtPnBzZXVkbzwvZW0+IDxmb28+
bWFya3VwIgotCi1UZXN0IDUgb2YgNyBpbiByZXNvdXJjZXMvdGVzdHM0LmRhdCBmYWlsZWQuIElu
cHV0OgotPC9wbGFpbnRleHQ+Ci1Hb3Q6Ci18IAotRXhwZWN0ZWQ6Ci18ICI8L3BsYWludGV4dD4i
Ci0KIFRlc3QgNiBvZiA3IGluIHJlc291cmNlcy90ZXN0czQuZGF0IGZhaWxlZC4gSW5wdXQ6CiBz
ZXR0aW5nIGh0bWwncyBpbm5lckhUTUwKIEdvdDoKQEAgLTYyLDggKzQxLDYgQEAgcmVzb3VyY2Vz
L3Rlc3RzNS5kYXQ6IFBBU1MKIHJlc291cmNlcy90ZXN0czYuZGF0OgogMjcKIDMwCi0zNwotNDQK
IDQ1CiAKIFRlc3QgMjcgb2YgNTEgaW4gcmVzb3VyY2VzL3Rlc3RzNi5kYXQgZmFpbGVkLiBJbnB1
dDoKQEAgLTgwLDI2ICs1Nyw2IEBAIEdvdDoKIEV4cGVjdGVkOgogfCA8ZnJhbWU+CiAKLVRlc3Qg
Mzcgb2YgNTEgaW4gcmVzb3VyY2VzL3Rlc3RzNi5kYXQgZmFpbGVkLiBJbnB1dDoKLTxjYXB0aW9u
Pjxjb2w+PGNvbGdyb3VwPjx0Ym9keT48dGZvb3Q+PHRoZWFkPjx0cj4KLUdvdDoKLXwgPGNhcHRp
b24+Ci18IDxjb2xncm91cD4KLXwgPHRib2R5PgotfCA8dGZvb3Q+Ci18IDx0aGVhZD4KLXwgICA8
dHI+Ci1FeHBlY3RlZDoKLXwgPHRyPgotCi1UZXN0IDQ0IG9mIDUxIGluIHJlc291cmNlcy90ZXN0
czYuZGF0IGZhaWxlZC4gSW5wdXQ6Ci08L3RhYmxlPjx0cj4KLUdvdDoKLXwgPHRyPgotRXhwZWN0
ZWQ6Ci18IDx0Ym9keT4KLXwgICA8dHI+Ci0KIFRlc3QgNDUgb2YgNTEgaW4gcmVzb3VyY2VzL3Rl
c3RzNi5kYXQgZmFpbGVkLiBJbnB1dDoKIDxib2R5PjwvYm9keT48L2h0bWw+CiBHb3Q6CmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGYzZGU0
YzkwZDRkMjQ4ZTI2ODRhNTFmNzkyMDdkNDkzOWRlNGRlZjYuLjQ0NmQzODk3NGU0ODI4NTU5MjAz
NmNjZTI5MGRiZWQ1NTdmNWVmNWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODkgQEAKKzIwMTAtMDgtMDkgIEVyaWMgU2Vp
ZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGgu
CisKKyAgICAgICAgVXNlIHRoZSBIVE1MNSBUcmVlQnVpbGRlciBmb3IgRnJhZ21lbnQgUGFyc2lu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM1ODYK
KworICAgICAgICBUaGUgYnVsayBvZiB0aGlzIGNoYW5nZSBpcyBqdXN0IGEgdHJhbnNjcmlwdGlv
biBvZiB0aGUgSFRNTDUgc3BlYzoKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNz
L3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWVuZC5odG1sI2ZyYWdtZW50LWNh
c2UKKworICAgICAgICBObyBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgZGVmYXVsdCBjb2RlIHBh
dGgsCisgICAgICAgIGJ1dCBJJ3ZlIHVwZGF0ZWQgdGhlIGh0bWw1LXNwZWNpZmljIHJlc3VsdHMg
Zm9yIGh0bWw1bGliL3J1bm5lci5odG1sLgorCisgICAgICAgICogZG9tL0RvY3VtZW50RnJhZ21l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6cGFyc2VIVE1MKToK
KyAgICAgICAgIC0gSFRNTDUgaW1wbGVtZW50YXRpb24gb2YgZnJhZ21lbnQgcGFyc2luZyByZXF1
aXJlcyB0aGUgY29udGV4dCBlbGVtZW50IChwYXJlbnQpCisgICAgICAgICAgIHBvaW50ZXIuICBU
aGUgbGVnYWN5IGltcGxlbWVudGF0aW9uIGhhbmRsZXMgYWxsIHBhcnNpbmcgYnJhbmNoZXMgd2hp
Y2ggcmVxdWlyZQorICAgICAgICAgICB0aGUgY29udGV4dCBlbGVtZW50IG91dHNpZGUgb2YgdGhl
IHBhcnNlciBpdHNlbGYsIHdoaWNoIGxpa2VseSBwcm9kdWNlcyAid3JvbmciCisgICAgICAgICAg
IHJlc3VsdHMuICBXZSdsbCByZW1vdmUgdGhvc2UgYnJhbmNoZXMgd2hlbiB3ZSB0dXJuIG9uIHRo
ZSBITVRMNSBmcmFnbWVudCBwYXJzZXIuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEZyYWdt
ZW50OjpwYXJzZVhNTCk6CisgICAgICAgICAtIFJlbmFtZSAicGFyZW50IiB0byAiY29udGV4dEVs
ZW1lbnQiIHRvIG1hdGNoIHRoZSBIVE1MIHBhdGggKGFuZCB0aGUgSFRNTDUgc3BlYykuCisgICAg
ICAgICogZG9tL0RvY3VtZW50RnJhZ21lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQpOgor
ICAgICAgICAgLSBQYXNzIHRoZSBjb250ZXh0RWxlbWVudCAodGhpcykuCisgICAgICAgICogaHRt
bC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3Ry
dWN0aW9uU2l0ZTo6c2V0Rm9ybSk6CisgICAgICAgICAtIE5lZWRlZCBieSBmb3IgdGhlIGZyYWdt
ZW50IGNhc2UuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0
SFRNTEJvZHlTdGFydFRhZ0luQm9keSk6CisgICAgICAgICAtIEknbSBub3Qgc3VyZSB0aGlzIG1l
dGhvZCBzaG91bGQgZXhpc3QsIGl0IG9ubHkgaGFzIG9uZSBjYWxsZXIuCisgICAgICAgICAgIGJ1
dCBmb3Igbm93LCBJJ3ZlIG1vdmVkIHRoZSBmcmFnbWVudCBjYXNlIEZJWE1FIG91dCB0byB0aGUK
KyAgICAgICAgICAgb25lIGNhbGxlciBhbmQgaW1wbGVtZW50ZWQgaXQuCisgICAgICAgICogaHRt
bC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50UGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxOYW1lczo6dG9rZW5pemVyU3RhdGVGb3JD
b250ZXh0RWxlbWVudCk6CisgICAgICAgICAtIFBhcnQgb2YgdGhlIGZyYWdtZW50IGNhc2UgaGFu
ZGxpbmcgZm9yIHRoZSBIVE1MNSBwYXJzZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1l
bnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcik6CisgICAgICAgICAtIFNldCB0aGUgVG9rZW5p
emVyIHN0YXRlIGJhc2VkIG9uIHRoZSBjb250ZXh0RWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KToKKyAgICAgICAgIC0g
VGFrZSBhIGNvbnRleHRFbGVtZW50IGFyZ3VtZW50LgorICAgICAgICAqIGh0bWwvSFRNTERvY3Vt
ZW50UGFyc2VyLmg6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0SW5uZXJIVE1MKToKKyAgICAgICAgIC0gQWRkZWQgYSBG
SVhNRSBiZWZvcmUgdGhlIGJyYW5jaGVzIHRoZSBvbGQgcGFyc2VyIHVzZWQgdG8gYXZvaWQgZXZl
ciBuZWVkaW5nCisgICAgICAgICAgIHRvIHBhc3MgYSBjb250ZXh0IGVsZW1lbnQgd2hlbiBwYXJz
aW5nIEhUTUwgZnJhZ21lbnRzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6Omluc2Vy
dEFkamFjZW50SFRNTCk6CisgICAgICAgICAtIFBhc3MgdGhlIGNvbnRleHQgZWxlbWVudC4KKyAg
ICAgICAgKiBodG1sL0hUTUxUb2tlbml6ZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUcmVlQnVp
bGRlci5jcHA6CisgICAgICAgICAtIEkgYWRkZWQgYSBuZXcgaGVscGVyIGNsYXNzIEZyYWdtZW50
UGFyc2luZ0NvbnRleHQgdG8gc2ltcGxpZnkgdGhlIHR3bworICAgICAgICAgICBIVE1MVHJlZUJ1
aWxkZXIgY29uc3RydWN0b3JzIGFuZCBoaWRlIHRoZSBleGlzdGVuY2Ugb2YgbV9kdW1teURvY3Vt
ZW50Rm9yRnJhZ21lbnRQYXJzZS4KKyAgICAgICAgIC0gSSBhbHNvIHJlbW92ZWQgbV9pc1BhcnNp
bmdGcmFnbWVudCBhbmQgcmVwbGFjZWQgaXQgd2l0aCBhbiBpc1BhcnNpbmdGcmFnbWVudCgpIGZ1
bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdD
b250ZXh0OjpGcmFnbWVudFBhcnNpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6ZG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250ZXh0Ojp+RnJhZ21l
bnRQYXJzaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnBh
c3NUb2tlblRvTGVnYWN5UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5Cb2R5KToKKyAgICAgICAgIC0gSSBoYWQgdG8gaW1wbGVt
ZW50IHR3byBub3RJbXBsZW1lbnRlZCgpIHN0YXRlcyBpbiBvcmRlciB0byBnZXQgbW9zdCBvZiB0
aGUKKyAgICAgICAgICAgbGF5b3V0IHRlc3RzIHRvIHBhc3Mgd2hlbiB1c2luZyB0aGUgSFRNTDUg
cGFyc2VyIGZyYWdtZW50IGNhc2UuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NDb2xncm91cEVuZFRhZ0ZvckluQ29sdW1uR3JvdXApOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJblRhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblRh
YmxlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRU
YWdGb3JJblJvdyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NF
bmRUYWdGb3JJbkNlbGwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzQ2FwdGlvbkVuZFRhZ0ZvckluQ2FwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NUckVuZFRhZ0ZvckluUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1RhYmxlRW5kVGFnRm9ySW5UYWJsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmZpbmlzaGVkKToKKyAgICAgICAgIC0gVGhlIEhUTUw1IHBh
cnNpbmcgYWxnb3JpdGhtIGZyYWdtZW50IGNhc2UgdXNlcyBhIGR1bW15IGRvY3VtZW50IHRvIGhh
bmRsZSBhbGwgdGhlIHBhcnNpbmcKKyAgICAgICAgICAgYW5kIHRoZW4gbW92ZXMgYWxsIHRoZSBj
aGlsZHJlbiBmcm9tIHRoZSBkdW1teSBkb2N1bWVudCBvdmVyIGludG8gYSBEb2N1bWVudEZyYWdt
ZW50CisgICAgICAgICAgIHdoZW4gdGhlIHBhcnNlIGlzIGRvbmUuICBXZSBjb3VsZCBhdm9pZCB0
aGlzIGFkb3B0IHN0ZXAgYnkgbWFraW5nIHRoZSBUcmVlQnVpbGRlciBhIGJpdAorICAgICAgICAg
ICBtb3JlIGNvbXBsaWNhdGVkLCBidXQgSSdtIG5vdCBzdXJlIHRoYXQncyBuZWNlc3NhcnkgKHll
dCkuCisgICAgICAgICogaHRtbC9IVE1MVHJlZUJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6aXNQYXJzaW5nRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250ZXh0OjpmcmFnbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OmNv
bnRleHRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RnJhZ21l
bnRQYXJzaW5nQ29udGV4dDo6c2NyaXB0aW5nUGVybWlzc2lvbik6CisgICAgICAgICogeG1sL1hT
TFRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGcm9tU291
cmNlKToKKwogMjAxMC0wOC0wOSAgTWFyY3VzIEJ1bGFjaCAgPGJ1bGFjaEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50
LmNwcAppbmRleCBlY2M1NzI1OWZlZThhZTNlZmQ3MGI4OWRkZjcwNDFmYjNlNWNjNWNmLi40NzQ4
NWI3ZjY2NDAyZDhkNzJiOTdkNDBlOWZiYjhhNzdjZDMzMWFkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdt
ZW50LmNwcApAQCAtODIsMTYgKzgyLDE2IEBAIGJvb2wgRG9jdW1lbnRGcmFnbWVudDo6c2hvdWxk
VXNlTGVnYWN5SFRNTFBhcnNlcigpIGNvbnN0CiAgICAgICAgICYmICFkb2N1bWVudCgpLT5wYWdl
KCktPnNldHRpbmdzKCktPmh0bWw1UGFyc2VyRW5hYmxlZCgpOwogfQogCi12b2lkIERvY3VtZW50
RnJhZ21lbnQ6OnBhcnNlSFRNTChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRnJhZ21lbnRTY3JpcHRp
bmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCit2b2lkIERvY3VtZW50RnJhZ21lbnQ6
OnBhcnNlSFRNTChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRWxlbWVudCogY29udGV4dEVsZW1lbnQs
IEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQogewogICAg
IGlmIChzaG91bGRVc2VMZWdhY3lIVE1MUGFyc2VyKCkpCiAgICAgICAgIHJldHVybiBMZWdhY3lI
VE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudChzb3VyY2UsIHRoaXMsIHNj
cmlwdGluZ1Blcm1pc3Npb24pOwotICAgIEhUTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVu
dEZyYWdtZW50KHNvdXJjZSwgdGhpcywgc2NyaXB0aW5nUGVybWlzc2lvbik7CisgICAgSFRNTERv
Y3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQoc291cmNlLCB0aGlzLCBjb250ZXh0
RWxlbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbik7CiB9CiAKLWJvb2wgRG9jdW1lbnRGcmFnbWVu
dDo6cGFyc2VYTUwoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEVsZW1lbnQqIHBhcmVudCwgRnJhZ21l
bnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCitib29sIERvY3VtZW50
RnJhZ21lbnQ6OnBhcnNlWE1MKGNvbnN0IFN0cmluZyYgc291cmNlLCBFbGVtZW50KiBjb250ZXh0
RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24p
CiB7Ci0gICAgcmV0dXJuIFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQo
c291cmNlLCB0aGlzLCBwYXJlbnQsIHNjcmlwdGluZ1Blcm1pc3Npb24pOworICAgIHJldHVybiBY
TUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50KHNvdXJjZSwgdGhpcywgY29u
dGV4dEVsZW1lbnQsIHNjcmlwdGluZ1Blcm1pc3Npb24pOwogfQogCiB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmggYi9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdt
ZW50LmgKaW5kZXggNWVmZjE3ZmNhYzA3ZTc2ZDYyNzNjN2IzYzM0N2JkZjNhY2MzODdjYS4uZDNk
YWRiOGIyZGIzNDJmMDRmMjY5ZmI3MTRjYzQ0NzEzZTliZDZlYSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21l
bnQuaApAQCAtMzMsOCArMzMsOCBAQCBjbGFzcyBEb2N1bWVudEZyYWdtZW50IDogcHVibGljIENv
bnRhaW5lck5vZGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCi0gICAgdm9pZCBwYXJzZUhUTUwoY29uc3QgU3Ry
aW5nJiwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxv
d2VkKTsKLSAgICBib29sIHBhcnNlWE1MKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqIHBhcmVudCwg
RnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsK
KyAgICB2b2lkIHBhcnNlSFRNTChjb25zdCBTdHJpbmcmLCBFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2Vk
KTsKKyAgICBib29sIHBhcnNlWE1MKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqIGNvbnRleHRFbGVt
ZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGluZ0FsbG93
ZWQpOwogCiBwcml2YXRlOgogICAgIERvY3VtZW50RnJhZ21lbnQoRG9jdW1lbnQqKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
aW5kZXggMmZhNzVjZTc2NjVkYjBkMGJlYjQ5YmMzODFiZjJhZDM4NzgxYjA0OS4uMGU4OWU5MzMz
NTU3YjBiNjdjMWIzNGQ4MjFkMmVjOTI0YjczYjExZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTk1LDcgKzk1LDcg
QEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBFbGVtZW50OjpjcmVhdGVDb250ZXh0dWFs
RnJhZ21lbnQoY29uc3QgU3RyaW5nJiBtYXIKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
ZnJhZ21lbnQgPSBkb2N1bWVudCgpLT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAKICAgICBp
ZiAoZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgZnJhZ21lbnQtPnBhcnNl
SFRNTChtYXJrdXAsIHNjcmlwdGluZ1Blcm1pc3Npb24pOworICAgICAgICBmcmFnbWVudC0+cGFy
c2VIVE1MKG1hcmt1cCwgdGhpcywgc2NyaXB0aW5nUGVybWlzc2lvbik7CiAgICAgZWxzZSB7CiAg
ICAgICAgIGlmICghZnJhZ21lbnQtPnBhcnNlWE1MKG1hcmt1cCwgdGhpcywgc2NyaXB0aW5nUGVy
bWlzc2lvbikpCiAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHByb3BhZ2F0ZSBhIHN5
bnRheCBlcnJvciBleGNlcHRpb24gb3V0IGhlcmUuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxDb25zdHJ1Y3Rpb25T
aXRlLmNwcAppbmRleCAwYjE3MDg2ZmVkM2JiNDcwYTNiMjdkOTBiZGFjZTdhYmJmYzBmMzRlLi4x
YTlhMzczZTAyNzg1YzkxNTVhN2QwODE0NzNiZGMwNWJhMDhjMzBmIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1M
Q29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTE0MSw2ICsxNDEsMTMgQEAgSFRNTENvbnN0cnVjdGlv
blNpdGU6On5IVE1MQ29uc3RydWN0aW9uU2l0ZSgpCiB7CiB9CiAKK3ZvaWQgSFRNTENvbnN0cnVj
dGlvblNpdGU6OnNldEZvcm0oSFRNTEZvcm1FbGVtZW50KiBmb3JtKQoreworICAgIC8vIFRoaXMg
bWV0aG9kIHNob3VsZCBvbmx5IGJlIG5lZWRlZCBmb3IgSFRNTFRyZWVCdWlsZGVyIGluIHRoZSBm
cmFnbWVudCBjYXNlLgorICAgIEFTU0VSVCghbV9mb3JtKTsKKyAgICBtX2Zvcm0gPSBmb3JtOwor
fQorCiBQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gSFRNTENvbnN0cnVjdGlvblNpdGU6OnRh
a2VGb3JtKCkKIHsKICAgICByZXR1cm4gbV9mb3JtLnJlbGVhc2UoKTsKQEAgLTE4Miw3ICsxODks
NiBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MSHRtbFN0YXJ0VGFnSW5C
b2R5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpp
bnNlcnRIVE1MQm9keVN0YXJ0VGFnSW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7CiAg
ICAgLy8gRklYTUU6IHBhcnNlIGVycm9yCi0gICAgbm90SW1wbGVtZW50ZWQoKTsgLy8gZnJhZ21l
bnQgY2FzZQogICAgIG1lcmdlQXR0cmlidXRlc0Zyb21Ub2tlbkludG9FbGVtZW50KHRva2VuLCBt
X29wZW5FbGVtZW50cy5ib2R5RWxlbWVudCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmggYi9XZWJDb3JlL2h0bWwvSFRNTENvbnN0cnVjdGlv
blNpdGUuaAppbmRleCBkOWM4YWM1OTNjMmNhZWIyMmMyOThhNzFhODNjNWUyMjg4NmM4MTlhLi4x
NmJhNTZiMTgzNWVjNjdlNDdhZTc4ZGNkY2NmOWRjNjgwYTJhN2VjIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTENvbnN0cnVjdGlvblNpdGUuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTENv
bnN0cnVjdGlvblNpdGUuaApAQCAtODQsNiArODQsNyBAQCBwdWJsaWM6CiAKICAgICBFbGVtZW50
KiBoZWFkKCkgY29uc3QgeyByZXR1cm4gbV9oZWFkLmdldCgpOyB9CiAKKyAgICB2b2lkIHNldEZv
cm0oSFRNTEZvcm1FbGVtZW50Kik7CiAgICAgSFRNTEZvcm1FbGVtZW50KiBmb3JtKCkgY29uc3Qg
eyByZXR1cm4gbV9mb3JtLmdldCgpOyB9CiAgICAgUGFzc1JlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+
IHRha2VGb3JtKCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJz
ZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggMzU0ZTdl
ZDUyZDY5YjkwM2M3NmVmZjQxMmViMDhiYjRmMWMwNWZkZC4uMjhiMzE5ODQ3YmJhY2RhNjE5ZmRj
NGI2MmM0MmYyZWI3ZDY1ODFmNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVu
dFBhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAi
RWxlbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiSFRNTFBhcnNlclNjaGVkdWxlci5oIgogI2luY2x1ZGUgIkhUTUxUb2tlbml6ZXIu
aCIKICNpbmNsdWRlICJIVE1MUHJlbG9hZFNjYW5uZXIuaCIKQEAgLTQ0LDYgKzQ1LDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCiBuYW1l
c3BhY2UgewogCiBjbGFzcyBOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlciA6IHB1YmxpYyBOb25jb3B5
YWJsZSB7CkBAIC02Myw2ICs2NiwzMSBAQCBwcml2YXRlOgogICAgIGludCogbV9jb3VudGVyOwog
fTsKIAorLy8gVGhpcyBpcyBhIGRpcmVjdCB0cmFuc2NyaXB0aW9uIG9mIHN0ZXAgNCBmcm9tOgor
Ly8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0
aXBhZ2UvdGhlLWVuZC5odG1sI2ZyYWdtZW50LWNhc2UKK0hUTUxUb2tlbml6ZXI6OlN0YXRlIHRv
a2VuaXplclN0YXRlRm9yQ29udGV4dEVsZW1lbnQoRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGJv
b2wgcmVwb3J0RXJyb3JzKQoreworICAgIGlmICghY29udGV4dEVsZW1lbnQpCisgICAgICAgIHJl
dHVybiBIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGU7CisKKyAgICBjb25zdCBRdWFsaWZpZWROYW1l
JiBjb250ZXh0VGFnID0gY29udGV4dEVsZW1lbnQtPnRhZ1FOYW1lKCk7CisKKyAgICBpZiAoY29u
dGV4dFRhZy5tYXRjaGVzKHRpdGxlVGFnKSB8fCBjb250ZXh0VGFnLm1hdGNoZXModGV4dGFyZWFU
YWcpKQorICAgICAgICByZXR1cm4gSFRNTFRva2VuaXplcjo6UkNEQVRBU3RhdGU7CisgICAgaWYg
KGNvbnRleHRUYWcubWF0Y2hlcyhzdHlsZVRhZykKKyAgICAgICAgfHwgY29udGV4dFRhZy5tYXRj
aGVzKHhtcFRhZykKKyAgICAgICAgfHwgY29udGV4dFRhZy5tYXRjaGVzKGlmcmFtZVRhZykKKyAg
ICAgICAgfHwgKGNvbnRleHRUYWcubWF0Y2hlcyhub2VtYmVkVGFnKSAmJiBIVE1MVHJlZUJ1aWxk
ZXI6OnBsdWdpbnNFbmFibGVkKGNvbnRleHRFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpKSkK
KyAgICAgICAgfHwgKGNvbnRleHRUYWcubWF0Y2hlcyhub3NjcmlwdFRhZykgJiYgSFRNTFRyZWVC
dWlsZGVyOjpzY3JpcHRFbmFibGVkKGNvbnRleHRFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgp
KSkKKyAgICAgICAgfHwgY29udGV4dFRhZy5tYXRjaGVzKG5vZnJhbWVzVGFnKSkKKyAgICAgICAg
cmV0dXJuIHJlcG9ydEVycm9ycyA/IEhUTUxUb2tlbml6ZXI6OlJBV1RFWFRTdGF0ZSA6IEhUTUxU
b2tlbml6ZXI6OlBMQUlOVEVYVFN0YXRlOworICAgIGlmIChjb250ZXh0VGFnLm1hdGNoZXMoc2Ny
aXB0VGFnKSkKKyAgICAgICAgcmV0dXJuIHJlcG9ydEVycm9ycyA/IEhUTUxUb2tlbml6ZXI6OlNj
cmlwdERhdGFTdGF0ZSA6IEhUTUxUb2tlbml6ZXI6OlBMQUlOVEVYVFN0YXRlOworICAgIGlmIChj
b250ZXh0VGFnLm1hdGNoZXMocGxhaW50ZXh0VGFnKSkKKyAgICAgICAgcmV0dXJuIEhUTUxUb2tl
bml6ZXI6OlBMQUlOVEVYVFN0YXRlOworICAgIHJldHVybiBIVE1MVG9rZW5pemVyOjpEYXRhU3Rh
dGU7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKIEhUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3Vt
ZW50UGFyc2VyKEhUTUxEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgcmVwb3J0RXJyb3JzKQpAQCAt
NzQsMTkgKzEwMiwxOSBAQCBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihI
VE1MRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHJlcG9ydEVycm9ycwogICAgICwgbV9lbmRXYXNE
ZWxheWVkKGZhbHNlKQogICAgICwgbV93cml0ZU5lc3RpbmdMZXZlbCgwKQogewotICAgIGJlZ2lu
KCk7CiB9CiAKIC8vIEZJWE1FOiBNZW1iZXIgdmFyaWFibGVzIHNob3VsZCBiZSBncm91cGVkIGlu
dG8gc2VsZi1pbml0aWFsaXppbmcgc3RydWN0cyB0bwogLy8gbWluaW1pemUgY29kZSBkdXBsaWNh
dGlvbiBiZXR3ZWVuIHRoZXNlIGNvbnN0cnVjdG9ycy4KLUhUTUxEb2N1bWVudFBhcnNlcjo6SFRN
TERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBGcmFnbWVudFNjcmlw
dGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKK0hUTUxEb2N1bWVudFBhcnNlcjo6
SFRNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBFbGVtZW50KiBj
b250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1p
c3Npb24pCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQtPmRvY3VtZW50
KCkpCiAgICAgLCBtX3Rva2VuaXplcihuZXcgSFRNTFRva2VuaXplcikKLSAgICAsIG1fdHJlZUJ1
aWxkZXIobmV3IEhUTUxUcmVlQnVpbGRlcihtX3Rva2VuaXplci5nZXQoKSwgZnJhZ21lbnQsIHNj
cmlwdGluZ1Blcm1pc3Npb24pKQorICAgICwgbV90cmVlQnVpbGRlcihuZXcgSFRNTFRyZWVCdWls
ZGVyKG1fdG9rZW5pemVyLmdldCgpLCBmcmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHNjcmlwdGlu
Z1Blcm1pc3Npb24pKQogICAgICwgbV9lbmRXYXNEZWxheWVkKGZhbHNlKQogICAgICwgbV93cml0
ZU5lc3RpbmdMZXZlbCgwKQogewotICAgIGJlZ2luKCk7CisgICAgYm9vbCByZXBvcnRFcnJvcnMg
PSBmYWxzZTsgLy8gRm9yIG5vdyBkb2N1bWVudCBmcmFnbWVudCBwYXJzaW5nIG5ldmVyIHJlcG9y
dHMgZXJyb3JzLgorICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZSh0b2tlbml6ZXJTdGF0ZUZvckNv
bnRleHRFbGVtZW50KGNvbnRleHRFbGVtZW50LCByZXBvcnRFcnJvcnMpKTsKIH0KIAogSFRNTERv
Y3VtZW50UGFyc2VyOjp+SFRNTERvY3VtZW50UGFyc2VyKCkKQEAgLTk3LDExICsxMjUsNiBAQCBI
VE1MRG9jdW1lbnRQYXJzZXI6On5IVE1MRG9jdW1lbnRQYXJzZXIoKQogICAgIC8vIHRoZW4gd2Ug
Y291bGQgQVNTRVJUIHNvbWUgaW52YXJpYW50cyBoZXJlLgogfQogCi12b2lkIEhUTUxEb2N1bWVu
dFBhcnNlcjo6YmVnaW4oKQotewotICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgcmVzZXQgdGhlIHRv
a2VuaXplcj8KLX0KLQogdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnN0b3BQYXJzaW5nKCkKIHsK
ICAgICBEb2N1bWVudFBhcnNlcjo6c3RvcFBhcnNpbmcoKTsKQEAgLTQxMyw5ICs0MzYsOSBAQCBT
Y3JpcHRDb250cm9sbGVyKiBIVE1MRG9jdW1lbnRQYXJzZXI6OnNjcmlwdCgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fZG9jdW1lbnQtPmZyYW1lKCkgPyBtX2RvY3VtZW50LT5mcmFtZSgpLT5zY3JpcHQo
KSA6IDA7CiB9CiAKLXZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21l
bnQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBGcmFn
bWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKK3ZvaWQgSFRNTERv
Y3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiBzb3VyY2Us
IERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJh
Z21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCiB7Ci0gICAgSFRN
TERvY3VtZW50UGFyc2VyIHBhcnNlcihmcmFnbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbik7Cisg
ICAgSFRNTERvY3VtZW50UGFyc2VyIHBhcnNlcihmcmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHNj
cmlwdGluZ1Blcm1pc3Npb24pOwogICAgIHBhcnNlci5pbnNlcnQoc291cmNlKTsgLy8gVXNlIGlu
c2VydCgpIHNvIHRoYXQgdGhlIHBhcnNlciB3aWxsIG5vdCB5aWVsZC4KICAgICBwYXJzZXIuZmlu
aXNoKCk7CiAgICAgQVNTRVJUKCFwYXJzZXIucHJvY2Vzc2luZ0RhdGEoKSk7IC8vIE1ha2Ugc3Vy
ZSB3ZSdyZSBkb25lLiA8cmRhcjovL3Byb2JsZW0vMzk2MzE1MT4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQ
YXJzZXIuaAppbmRleCBjYzQ2ZDMxM2YyNTJmMmY5YTVhM2FhYmJkMzI0ZmI3MTE3NThkZjI5Li5k
MDU1ODYxNGYwNWFhYjE5MmM4N2FiZjdmODdjMmVhODM0MWJkYTg3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1
bWVudFBhcnNlci5oCkBAIC01NCwxMyArNTQsMTMgQEAgY2xhc3MgSFRNTERvY3VtZW50UGFyc2Vy
IDogIHB1YmxpYyBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIsIEhUTUxTY3JpcHRSdW5uZXJIb3MK
IHB1YmxpYzoKICAgICAvLyBGSVhNRTogVGhlc2UgY29uc3RydWN0b3JzIHNob3VsZCBiZSBtYWRl
IHByaXZhdGUgYW5kIHJlcGxhY2VkIGJ5IGNyZWF0ZSgpIG1ldGhvZHMuCiAgICAgSFRNTERvY3Vt
ZW50UGFyc2VyKEhUTUxEb2N1bWVudCosIGJvb2wgcmVwb3J0RXJyb3JzKTsKLSAgICBIVE1MRG9j
dW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCosIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lv
bik7CisgICAgSFRNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqLCBFbGVtZW50KiBj
b250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKICAgICB2aXJ0dWFs
IH5IVE1MRG9jdW1lbnRQYXJzZXIoKTsKIAogICAgIC8vIEV4cG9zZWQgZm9yIEhUTUxQYXJzZXJT
Y2hlZHVsZXIKICAgICB2b2lkIHJlc3VtZVBhcnNpbmdBZnRlcllpZWxkKCk7CiAKLSAgICBzdGF0
aWMgdm9pZCBwYXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRGcmFn
bWVudCosIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxs
b3dlZCk7CisgICAgc3RhdGljIHZvaWQgcGFyc2VEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmlu
ZyYsIERvY3VtZW50RnJhZ21lbnQqLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRT
Y3JpcHRpbmdQZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKIAogcHJpdmF0
ZToKICAgICAvLyBEb2N1bWVudFBhcnNlcgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggMDE5ODkwMWQ3
M2Y5NWQzMjAxOGNmNTNhYjE4NmNmNGQ4OWI0ZmNmZS4uNmZjNTNhMmJmMGVjMGEzYmEzM2VmNjk3
YThjMjM2MzI0MjQ3ZTdmYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC0yNzUsNiArMjc1LDcgQEAg
U3RyaW5nIEhUTUxFbGVtZW50OjpvdXRlckhUTUwoKSBjb25zdAogICAgIHJldHVybiBjcmVhdGVN
YXJrdXAodGhpcyk7CiB9CiAKKy8vIEZJWE1FOiBUaGlzIG1ldGhvZCBpcyB1bmVjZXNzYXJ5IHdp
dGggdGhlIG5ldyBIVE1MRG9jdW1lbnRQYXJzZXIuCiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IEhUTUxFbGVtZW50OjpjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoY29uc3QgU3RyaW5nJiBt
YXJrdXAsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQog
ewogICAgIC8vIFRoZSBmb2xsb3dpbmcgaXMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBkZWZpbml0
aW9uIGFzIHVzZWQgYnkgSUUuCkBAIC0zNDAsNiArMzQxLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFj
ZUNoaWxkcmVuV2l0aFRleHQoSFRNTEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4
dCwgRXgKIAogdm9pZCBIVE1MRWxlbWVudDo6c2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRt
bCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgLy8gRklYTUU6IFRoaXMgY29kZSBjYW4gYmUg
cmVtb3ZlZCwgaXQncyBoYW5kbGVkIGJ5IHRoZSBIVE1MRG9jdW1lbnRQYXJzZXIgY29ycmVjdGx5
LgogICAgIGlmIChoYXNMb2NhbE5hbWUoc2NyaXB0VGFnKSB8fCBoYXNMb2NhbE5hbWUoc3R5bGVU
YWcpKSB7CiAgICAgICAgIC8vIFNjcmlwdCBhbmQgQ1NTIHNvdXJjZSBzaG91bGRuJ3QgYmUgcGFy
c2VkIGFzIEhUTUwuCiAgICAgICAgIHJlbW92ZUNoaWxkcmVuKCk7CkBAIC01NTEsNyArNTUzLDcg
QEAgdm9pZCBIVE1MRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnRIVE1MKGNvbnN0IFN0cmluZyYgd2hl
cmUsIGNvbnN0IFN0cmluZyYgbWFya3VwLAogewogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBmcmFnbWVudCA9IGRvY3VtZW50KCktPmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICBp
ZiAoZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgIGZyYWdtZW50LT5wYXJz
ZUhUTUwobWFya3VwKTsKKyAgICAgICAgIGZyYWdtZW50LT5wYXJzZUhUTUwobWFya3VwLCB0aGlz
KTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKCFmcmFnbWVudC0+cGFyc2VYTUwobWFya3VwLCB0
aGlzKSkKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcHJvcGFnYXRlIGEgc3ludGF4
IGVycm9yIGV4Y2VwdGlvbiBvdXQgaGVyZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudFN0YWNrLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudFN0YWNrLmNwcAppbmRl
eCA1MzFhM2I0MjAzZjBlODgyMzk1YzFjZjU5YjM2NjZhMmNiN2M3ZjdhLi4xOTQ3NTNiNzA4ZThj
ZWM1ZjUxNjk2ZTQyODIxMTRlZTIxYWRkMTk2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnRTdGFjay5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50U3RhY2suY3Bw
CkBAIC0xMzgsNiArMTM4LDIzIEBAIEhUTUxFbGVtZW50U3RhY2s6On5IVE1MRWxlbWVudFN0YWNr
KCkKIHsKIH0KIAorYm9vbCBIVE1MRWxlbWVudFN0YWNrOjpoYXNPbmx5T25lRWxlbWVudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuICF0b3BSZWNvcmQoKS0+bmV4dCgpOworfQorCitib29sIEhUTUxF
bGVtZW50U3RhY2s6OnNlY29uZEVsZW1lbnRJc0hUTUxCb2R5RWxlbWVudCgpIGNvbnN0Cit7Cisg
ICAgLy8gVGhpcyBpcyB1c2VkIHRoZSBmcmFnbWVudCBjYXNlIG9mIDxib2R5PiBhbmQgPGZyYW1l
c2V0PiBpbiB0aGUgImluIGJvZHkiCisgICAgLy8gaW5zZXJ0aW9uIG1vZGUuCisgICAgLy8gaHR0
cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2Uv
dG9rZW5pemF0aW9uLmh0bWwjcGFyc2luZy1tYWluLWluYm9keQorICAgIEFTU0VSVChtX2h0bWxF
bGVtZW50KTsKKyAgICAvLyBJZiB3ZSBoYXZlIGEgYm9keSBlbGVtZW50LCBpdCBtdXN0IGFsd2F5
cyBiZSB0aGUgc2Vjb25kIGVsZW1lbnQgb24gdGhlCisgICAgLy8gc3RhY2ssIGFzIHdlIGFsd2F5
cyBzdGFydCB3aXRoIGFuIGh0bWwgZWxlbWVudCwgYW5kIGFueSBvdGhlciBlbGVtZW50CisgICAg
Ly8gd291bGQgY2F1c2UgdGhlIGltcGxpY2l0IGNyZWF0aW9uIG9mIGEgYm9keSBlbGVtZW50Lgor
ICAgIHJldHVybiAhIW1fYm9keUVsZW1lbnQ7Cit9CisKIHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6
cG9wSFRNTEhlYWRFbGVtZW50KCkKIHsKICAgICBBU1NFUlQodG9wKCkgPT0gbV9oZWFkRWxlbWVu
dCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnRTdGFjay5oIGIvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50U3RhY2suaAppbmRleCA2MmQwMzFmYTRkYzY1NDk1YjNlNmU0NTVk
Nzg1YWIzZDA0NjQwYTg2Li5mZDlmM2I1ODU3MmUxOTBiNjczOTY4NGU2ZmNkY2ZmZjBjMTEyOTQ5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnRTdGFjay5oCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudFN0YWNrLmgKQEAgLTEyMSw2ICsxMjEsOSBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBoYXNPbmx5SFRNTEVsZW1lbnRzSW5TY29wZSgpIGNvbnN0OwogICAgIGJvb2wgaGFz
TnVtYmVyZWRIZWFkZXJFbGVtZW50SW5TY29wZSgpIGNvbnN0OwogCisgICAgYm9vbCBoYXNPbmx5
T25lRWxlbWVudCgpIGNvbnN0OworICAgIGJvb2wgc2Vjb25kRWxlbWVudElzSFRNTEJvZHlFbGVt
ZW50KCkgY29uc3Q7CisKICAgICBFbGVtZW50KiBodG1sRWxlbWVudCgpIGNvbnN0OwogICAgIEVs
ZW1lbnQqIGhlYWRFbGVtZW50KCkgY29uc3Q7CiAgICAgRWxlbWVudCogYm9keUVsZW1lbnQoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmggYi9XZWJDb3Jl
L2h0bWwvSFRNTFRva2VuaXplci5oCmluZGV4IGU0Y2ExNmFjZTFiZTNkNzhiYTZmNzE1MTM1OWRh
ZDgwMjE5N2Y5OGIuLjBlOWJhM2EyY2MwOWJlNDljNGRiZWM1M2JmNjA2ZmMzYzBmMDZlYjMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmgKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxUb2tlbml6ZXIuaApAQCAtMzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MVG9rZW47CiAKIGNsYXNzIEhUTUxUb2tlbml6
ZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxU
cmVlQnVpbGRlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCAw
MTYwNzRlMDliY2Y1NDc2ZThkYjczMThhZGVjNjYwOTZkMjVhZTdjLi4yYzdkNDBkMmUyNjYxM2Ey
YWExOTBkNmM3MDA5ZGY4YWQ0MDRkNzY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRy
ZWVCdWlsZGVyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAt
MjUzLDYgKzI1MywyOSBAQCBib29sIGlzTm90Rm9ybWF0dGluZ0FuZE5vdFBocmFzaW5nKGNvbnN0
IEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgcmV0dXJuIGlzU2NvcGluZ1RhZyh0YWdOYW1lKSB8fCBp
c1NwZWNpYWxUYWcodGFnTmFtZSk7CiB9CiAKK0hUTUxGb3JtRWxlbWVudCogY2xvc2VzdEZvcm1B
bmNlc3RvcihFbGVtZW50KiBlbGVtZW50KQoreworICAgIHdoaWxlIChlbGVtZW50KSB7CisgICAg
ICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKGZvcm1UYWcpKQorICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGVsZW1lbnQpOworICAgICAgICBOb2RlKiBw
YXJlbnQgPSBlbGVtZW50LT5wYXJlbnQoKTsKKyAgICAgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVu
dC0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4ocGFyZW50KTsKKyAgICB9CisgICAgcmV0dXJuIDA7
Cit9CisKKy8vIEZJWE1FOiBUaGlzIGJlbG9uZ3Mgb24gQ29udGFpbmVyTm9kZSwgd2hlcmUgaXQg
Y291bGQgYXZvaWQgdGhlIGRvdWJsZSByZWYKKy8vIGJ5IGRpcmVjdGx5IHJlbGVhc2luZyBpbnRv
IHRoZSBWZWN0b3IuICBTdWNoIGFuIGltcGxlbWVudGF0aW9uIHdvdWxkIG5lZWQgdG8KKy8vIGJl
IGNhcmVmdWwgbm90IHRvIHNlbmQgbXV0YXRpb24gZXZlbnRzLgordm9pZCB0YWtlQ2hpbGRyZW5G
cm9tTm9kZShDb250YWluZXJOb2RlKiBjb250YWluZXIsIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYg
Y2hpbGRyZW4pCit7CisgICAgZm9yIChOb2RlKiBjaGlsZCA9IGNvbnRhaW5lci0+Zmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgY2hpbGRy
ZW4uYXBwZW5kKGNoaWxkKTsKKyAgICBjb250YWluZXItPnJlbW92ZUFsbENoaWxkcmVuKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlCiAKIGNsYXNzIEhUTUxUcmVlQnVpbGRlcjo6RXh0ZXJuYWxDaGFy
YWN0ZXJUb2tlbkJ1ZmZlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CkBAIC0zNDYsMzUgKzM2OSw4
NyBAQCBIVE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRlcihIVE1MVG9rZW5pemVyKiB0b2tl
bml6ZXIsIEhUTUxEb2N1bWVudCogZG9jdW1lbgogICAgICwgbV90b2tlbml6ZXIodG9rZW5pemVy
KQogICAgICwgbV9sYXN0U2NyaXB0RWxlbWVudFN0YXJ0TGluZSh1bmluaXRpYWxpemVkTGluZU51
bWJlclZhbHVlKQogICAgICwgbV9zY3JpcHRUb1Byb2Nlc3NTdGFydExpbmUodW5pbml0aWFsaXpl
ZExpbmVOdW1iZXJWYWx1ZSkKLSAgICAsIG1fZnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKEZy
YWdtZW50U2NyaXB0aW5nQWxsb3dlZCkKLSAgICAsIG1faXNQYXJzaW5nRnJhZ21lbnQoZmFsc2Up
CiB7CiB9CiAKIC8vIEZJWE1FOiBNZW1iZXIgdmFyaWFibGVzIHNob3VsZCBiZSBncm91cGVkIGlu
dG8gc2VsZi1pbml0aWFsaXppbmcgc3RydWN0cyB0bwogLy8gbWluaW1pemUgY29kZSBkdXBsaWNh
dGlvbiBiZXR3ZWVuIHRoZXNlIGNvbnN0cnVjdG9ycy4KLUhUTUxUcmVlQnVpbGRlcjo6SFRNTFRy
ZWVCdWlsZGVyKEhUTUxUb2tlbml6ZXIqIHRva2VuaXplciwgRG9jdW1lbnRGcmFnbWVudCogZnJh
Z21lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQor
SFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIoSFRNTFRva2VuaXplciogdG9rZW5pemVy
LCBEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZy
YWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQogICAgIDogbV9m
cmFtZXNldE9rKHRydWUpCi0gICAgLCBtX2RvY3VtZW50KGZyYWdtZW50LT5kb2N1bWVudCgpKQot
ICAgICwgbV90cmVlKGZyYWdtZW50LT5kb2N1bWVudCgpLCBzY3JpcHRpbmdQZXJtaXNzaW9uLCB0
cnVlKQorICAgICwgbV9mcmFnbWVudENvbnRleHQoZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBz
Y3JpcHRpbmdQZXJtaXNzaW9uLCBzaG91bGRVc2VMZWdhY3lUcmVlQnVpbGRlcihmcmFnbWVudC0+
ZG9jdW1lbnQoKSkpCisgICAgLCBtX2RvY3VtZW50KG1fZnJhZ21lbnRDb250ZXh0LmRvY3VtZW50
KCkpCisgICAgLCBtX3RyZWUobV9kb2N1bWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbiwgdHJ1ZSkK
ICAgICAsIG1fcmVwb3J0RXJyb3JzKGZhbHNlKSAvLyBGSVhNRTogV2h5IG5vdCByZXBvcnQgZXJy
b3JzIGluIGZyYWdtZW50cz8KICAgICAsIG1faXNQYXVzZWQoZmFsc2UpCiAgICAgLCBtX2luc2Vy
dGlvbk1vZGUoSW5pdGlhbE1vZGUpCiAgICAgLCBtX29yaWdpbmFsSW5zZXJ0aW9uTW9kZShJbml0
aWFsTW9kZSkKICAgICAsIG1fc2Vjb25kYXJ5SW5zZXJ0aW9uTW9kZShJbml0aWFsTW9kZSkKICAg
ICAsIG1fdG9rZW5pemVyKHRva2VuaXplcikKLSAgICAsIG1fbGVnYWN5VHJlZUJ1aWxkZXIobmV3
IExlZ2FjeUhUTUxUcmVlQnVpbGRlcihmcmFnbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbikpCisg
ICAgLCBtX2xlZ2FjeVRyZWVCdWlsZGVyKHNob3VsZFVzZUxlZ2FjeVRyZWVCdWlsZGVyKGZyYWdt
ZW50LT5kb2N1bWVudCgpKSA/IG5ldyBMZWdhY3lIVE1MVHJlZUJ1aWxkZXIoZnJhZ21lbnQsIHNj
cmlwdGluZ1Blcm1pc3Npb24pIDogMCkKICAgICAsIG1fbGFzdFNjcmlwdEVsZW1lbnRTdGFydExp
bmUodW5pbml0aWFsaXplZExpbmVOdW1iZXJWYWx1ZSkKICAgICAsIG1fc2NyaXB0VG9Qcm9jZXNz
U3RhcnRMaW5lKHVuaW5pdGlhbGl6ZWRMaW5lTnVtYmVyVmFsdWUpCi0gICAgLCBtX2ZyYWdtZW50
U2NyaXB0aW5nUGVybWlzc2lvbihzY3JpcHRpbmdQZXJtaXNzaW9uKQotICAgICwgbV9pc1BhcnNp
bmdGcmFnbWVudCh0cnVlKQogeworICAgIGlmIChzaG91bGRVc2VMZWdhY3lUcmVlQnVpbGRlcihm
cmFnbWVudC0+ZG9jdW1lbnQoKSkpCisgICAgICAgIHJldHVybjsKKyAgICAvLyBUaGlzIGlzIHN0
ZXBzIDItNiBvZiB0aGUgSFRNTDUgRnJhZ21lbnQgQ2FzZSBwYXJzaW5nIGFsZ29yaXRobToKKyAg
ICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211
bHRpcGFnZS90aGUtZW5kLmh0bWwjZnJhZ21lbnQtY2FzZQorICAgIGlmIChjb250ZXh0RWxlbWVu
dCkKKyAgICAgICAgbV9kb2N1bWVudC0+c2V0UGFyc2VNb2RlKGNvbnRleHRFbGVtZW50LT5kb2N1
bWVudCgpLT5wYXJzZU1vZGUoKSk7CisgICAgcHJvY2Vzc0Zha2VTdGFydFRhZyhodG1sVGFnKTsK
KyAgICByZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KCk7CisgICAgbV90cmVlLnNldEZv
cm0oY2xvc2VzdEZvcm1BbmNlc3Rvcihjb250ZXh0RWxlbWVudCkpOwogfQogCiBIVE1MVHJlZUJ1
aWxkZXI6On5IVE1MVHJlZUJ1aWxkZXIoKQogewogfQogCitIVE1MVHJlZUJ1aWxkZXI6OkZyYWdt
ZW50UGFyc2luZ0NvbnRleHQ6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQoKQorICAgIDogbV9mcmFn
bWVudCgwKQorICAgICwgbV9jb250ZXh0RWxlbWVudCgwKQorICAgICwgbV91c2luZ0xlZ2FjeVRy
ZWVCdWlsZGVyKGZhbHNlKQorICAgICwgbV9zY3JpcHRpbmdQZXJtaXNzaW9uKEZyYWdtZW50U2Ny
aXB0aW5nQWxsb3dlZCkKK3sKK30KKworSFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdD
b250ZXh0OjpGcmFnbWVudFBhcnNpbmdDb250ZXh0KERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50
LCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNj
cmlwdGluZ1Blcm1pc3Npb24sIGJvb2wgbGVnYWN5TW9kZSkKKyAgICA6IG1fZHVtbXlEb2N1bWVu
dEZvckZyYWdtZW50UGFyc2luZyhsZWdhY3lNb2RlID8gMCA6IEhUTUxEb2N1bWVudDo6Y3JlYXRl
KDAsIEtVUkwoKSkpCisgICAgLCBtX2ZyYWdtZW50KGZyYWdtZW50KQorICAgICwgbV9jb250ZXh0
RWxlbWVudChjb250ZXh0RWxlbWVudCkKKyAgICAsIG1fdXNpbmdMZWdhY3lUcmVlQnVpbGRlcihs
ZWdhY3lNb2RlKQorICAgICwgbV9zY3JpcHRpbmdQZXJtaXNzaW9uKHNjcmlwdGluZ1Blcm1pc3Np
b24pCit7Cit9CisKK0RvY3VtZW50KiBIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0Nv
bnRleHQ6OmRvY3VtZW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9mcmFnbWVudCk7CisgICAg
aWYgKG1fdXNpbmdMZWdhY3lUcmVlQnVpbGRlcikKKyAgICAgICAgcmV0dXJuIG1fZnJhZ21lbnQt
PmRvY3VtZW50KCk7CisgICAgcmV0dXJuIG1fZHVtbXlEb2N1bWVudEZvckZyYWdtZW50UGFyc2lu
Zy5nZXQoKTsKK30KKwordm9pZCBIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRl
eHQ6OmZpbmlzaGVkKCkKK3sKKyAgICAvLyBQb3B1bGF0ZSB0aGUgRG9jdW1lbnRGcmFnbWVudCB3
aXRoIHRoZSBwYXJzZWQgY29udGVudCBub3cgdGhhdCB3ZSdyZSBkb25lLgorICAgIENvbnRhaW5l
ck5vZGUqIHJvb3QgPSBtX2R1bW15RG9jdW1lbnRGb3JGcmFnbWVudFBhcnNpbmcuZ2V0KCk7Cisg
ICAgaWYgKG1fY29udGV4dEVsZW1lbnQpCisgICAgICAgIHJvb3QgPSBtX2R1bW15RG9jdW1lbnRG
b3JGcmFnbWVudFBhcnNpbmctPmRvY3VtZW50RWxlbWVudCgpOworICAgIFZlY3RvcjxSZWZQdHI8
Tm9kZT4gPiBjaGlsZHJlbjsKKyAgICB0YWtlQ2hpbGRyZW5Gcm9tTm9kZShyb290LCBjaGlsZHJl
bik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKSB7
CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICAvLyBGSVhNRTogV2UgbmVl
ZCBhIHBhcnNlci1zYWZlIChubyBldmVudHMpIHZlcnNpb24gb2YgYWRvcHROb2RlLgorICAgICAg
ICBSZWZQdHI8Tm9kZT4gY2hpbGQgPSBtX2ZyYWdtZW50LT5kb2N1bWVudCgpLT5hZG9wdE5vZGUo
Y2hpbGRyZW5baV0ucmVsZWFzZSgpLCBlYyk7CisgICAgICAgIEFTU0VSVCghZWMpOworICAgICAg
ICBtX2ZyYWdtZW50LT5wYXJzZXJBZGRDaGlsZChjaGlsZC5yZWxlYXNlKCkpOworICAgIH0KK30K
KworSFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250ZXh0Ojp+RnJhZ21lbnRQYXJz
aW5nQ29udGV4dCgpCit7Cit9CisKIHN0YXRpYyB2b2lkIGNvbnZlcnRUb09sZFN0eWxlKEF0b21p
Y0hUTUxUb2tlbiYgdG9rZW4sIFRva2VuJiBvbGRTdHlsZVRva2VuKQogewogICAgIHN3aXRjaCAo
dG9rZW4udHlwZSgpKSB7CkBAIC00NzYsNyArNTUxLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OnBhc3NUb2tlblRvTGVnYWN5UGFyc2VyKEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIGlmIChv
bGRTdHlsZVRva2VuLnRhZ05hbWUgPT0gc2NyaXB0VGFnKSB7CiAgICAgICAgICAgICBpZiAobV9s
YXN0U2NyaXB0RWxlbWVudCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChtX2xhc3RTY3JpcHRF
bGVtZW50U3RhcnRMaW5lICE9IHVuaW5pdGlhbGl6ZWRMaW5lTnVtYmVyVmFsdWUpOwotICAgICAg
ICAgICAgICAgIGlmIChtX2ZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiA9PSBGcmFnbWVudFNj
cmlwdGluZ05vdEFsbG93ZWQpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9mcmFnbWVudENvbnRl
eHQuc2NyaXB0aW5nUGVybWlzc2lvbigpID09IEZyYWdtZW50U2NyaXB0aW5nTm90QWxsb3dlZCkg
ewogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIGhvcnJpYmxlIGhhY2sg
Zm9yIHBsYXRmb3JtL1Bhc3RlYm9hcmQuCiAgICAgICAgICAgICAgICAgICAgIC8vIENsZWFyIHRo
ZSA8c2NyaXB0PiB0YWcgd2hlbiB1c2luZyB0aGUgUGFyc2VyIHRvIGNyZWF0ZQogICAgICAgICAg
ICAgICAgICAgICAvLyBhIERvY3VtZW50RnJhZ21lbnQgZm9yIHBhc3Rpbmcgc28gdGhhdCBqYXZh
c2NyaXB0IGNvbnRlbnQKQEAgLTc5NywxMiArODcyLDE5IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodG9rZW4ubmFtZSgpID09IGJvZHlUYWcpIHsKKyAg
ICAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPnNlY29uZEVsZW1lbnRJc0hUTUxCb2R5
RWxlbWVudCgpIHx8IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aGFzT25seU9uZUVsZW1lbnQoKSkg
eworICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CiAgICAgICAgIG1fdHJlZS5pbnNlcnRIVE1MQm9keVN0YXJ0VGFn
SW5Cb2R5KHRva2VuKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodG9rZW4ubmFt
ZSgpID09IGZyYW1lc2V0VGFnKSB7CiAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwotICAgICAg
ICBub3RJbXBsZW1lbnRlZCgpOyAvLyBmcmFnbWVudCBjYXNlCisgICAgICAgIGlmICghbV90cmVl
Lm9wZW5FbGVtZW50cygpLT5zZWNvbmRFbGVtZW50SXNIVE1MQm9keUVsZW1lbnQoKSB8fCBtX3Ry
ZWUub3BlbkVsZW1lbnRzKCktPmhhc09ubHlPbmVFbGVtZW50KCkpIHsKKyAgICAgICAgICAgIEFT
U0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQogICAgICAgICBpZiAoIW1fZnJhbWVzZXRPaykKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC0xMDczLDcgKzExNTUsNyBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYgdG9r
ZW4pCiBib29sIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NvbGdyb3VwRW5kVGFnRm9ySW5Db2x1
bW5Hcm91cCgpCiB7CiAgICAgaWYgKG1fdHJlZS5jdXJyZW50RWxlbWVudCgpID09IG1fdHJlZS5v
cGVuRWxlbWVudHMoKS0+aHRtbEVsZW1lbnQoKSkgewotICAgICAgICBBU1NFUlQobV9pc1BhcnNp
bmdGcmFnbWVudCk7CisgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAg
ICAgLy8gRklYTUU6IHBhcnNlIGVycm9yCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBA
IC0xMTM0LDcgKzEyMTYsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFn
Rm9ySW5UYWJsZShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgIGlmICh0b2tlbi5uYW1lKCkg
PT0gdGFibGVUYWcpIHsKICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAgIGlmICgh
cHJvY2Vzc1RhYmxlRW5kVGFnRm9ySW5UYWJsZSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9p
c1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQo
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgcHJvY2Vzc1N0YXJ0
VGFnKHRva2VuKTsKQEAgLTEyODMsNyArMTM2NSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIHx8IHRv
a2VuLm5hbWUoKSA9PSB0clRhZykgewogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CiAg
ICAgICAgICAgICBpZiAoIXByb2Nlc3NDYXB0aW9uRW5kVGFnRm9ySW5DYXB0aW9uKCkpIHsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHByb2Nlc3NTdGFydFRhZyh0b2tlbik7CkBAIC0x
MzAyLDcgKzEzODQsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0
b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCFwcm9jZXNzQ29sZ3JvdXBFbmRUYWdGb3JJbkNvbHVtbkdyb3VwKCkpIHsKLSAg
ICAgICAgICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgIEFTU0VS
VChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBwcm9jZXNzU3RhcnRUYWcodG9rZW4pOwpAQCAtMTMyNSw3ICsxNDA3LDcgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2Vu
KQogICAgICAgICBpZiAoaXNDYXB0aW9uQ29sT3JDb2xncm91cFRhZyh0b2tlbi5uYW1lKCkpIHx8
IGlzVGFibGVCb2R5Q29udGV4dFRhZyh0b2tlbi5uYW1lKCkpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyBpcyBzbG93LgogICAgICAgICAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRz
KCktPmluVGFibGVTY29wZSh0Ym9keVRhZy5sb2NhbE5hbWUoKSkgJiYgIW1fdHJlZS5vcGVuRWxl
bWVudHMoKS0+aW5UYWJsZVNjb3BlKHRoZWFkVGFnLmxvY2FsTmFtZSgpKSAmJiAhbV90cmVlLm9w
ZW5FbGVtZW50cygpLT5pblRhYmxlU2NvcGUodGZvb3RUYWcubG9jYWxOYW1lKCkpKSB7Ci0gICAg
ICAgICAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAgICAgICAgICAgICAg
IEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgICAgICBwYXJzZUVycm9y
KHRva2VuKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0xMzUw
LDcgKzE0MzIsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21p
Y0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICB8fCBpc0NhcHRpb25Db2xPckNvbGdyb3Vw
VGFnKHRva2VuLm5hbWUoKSkKICAgICAgICAgICAgIHx8IGlzVGFibGVCb2R5Q29udGV4dFRhZyh0
b2tlbi5uYW1lKCkpKSB7CiAgICAgICAgICAgICBpZiAoIXByb2Nlc3NUckVuZFRhZ0ZvckluUm93
KCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2Rl
KCkgPT0gSW5UYWJsZUJvZHlNb2RlKTsKQEAgLTEzNjcsNyArMTQ0OSw3IEBAIHZvaWQgSFRNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAg
ICAgICAgIHx8IGlzVGFibGVCb2R5Q29udGV4dFRhZyh0b2tlbi5uYW1lKCkpKSB7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBtb3JlIGVmZmljaWVudC4KICAgICAgICAgICAg
IGlmICghbV90cmVlLm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2NvcGUodGRUYWcpICYmICFtX3Ry
ZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0aFRhZykpIHsKLSAgICAgICAgICAgICAg
ICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlz
UGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTE3ODEsMTIgKzE4NjMs
MTIgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRl
bHkoKQogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIEVsZW1lbnQqIG5vZGUgPSBub2RlUmVjb3Jk
LT5lbGVtZW50KCk7CiAgICAgICAgIGlmIChub2RlID09IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+
Ym90dG9tKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsKKyAg
ICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIGxhc3Qg
PSB0cnVlOwotICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsgLy8gbm9kZSA9IG1fY29udGV4
dEVsZW1lbnQ7CisgICAgICAgICAgICBub2RlID0gbV9mcmFnbWVudENvbnRleHQuY29udGV4dEVs
ZW1lbnQoKTsKICAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShzZWxlY3RU
YWcpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAg
ICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc2V0
SW5zZXJ0aW9uTW9kZUFuZEVuZChJblNlbGVjdE1vZGUsIGZvcmVpZ24pOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRkVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKHRo
VGFnKSkKQEAgLTE3OTgsMzAgKzE4ODAsMzAgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0
SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKQogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFt
ZShjYXB0aW9uVGFnKSkKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlQW5kRW5k
KEluQ2FwdGlvbk1vZGUsIGZvcmVpZ24pOwogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShj
b2xncm91cFRhZykpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsK
KyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIHJl
dHVybiBzZXRJbnNlcnRpb25Nb2RlQW5kRW5kKEluQ29sdW1uR3JvdXBNb2RlLCBmb3JlaWduKTsK
ICAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0YWJsZVRhZykpCiAgICAg
ICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZUFuZEVuZChJblRhYmxlTW9kZSwgZm9yZWln
bik7CiAgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGhlYWRUYWcpKSB7Ci0gICAgICAgICAg
ICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJz
aW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0aW9uTW9kZUFuZEVu
ZChJbkJvZHlNb2RlLCBmb3JlaWduKTsKICAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+aGFz
VGFnTmFtZShib2R5VGFnKSkKICAgICAgICAgICAgIHJldHVybiBzZXRJbnNlcnRpb25Nb2RlQW5k
RW5kKEluQm9keU1vZGUsIGZvcmVpZ24pOwogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShm
cmFtZXNldFRhZykpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsK
KyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIHJl
dHVybiBzZXRJbnNlcnRpb25Nb2RlQW5kRW5kKEluRnJhbWVzZXRNb2RlLCBmb3JlaWduKTsKICAg
ICAgICAgfQogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShodG1sVGFnKSkgewotICAgICAg
ICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAgICAgICAgICAgQVNTRVJUKGlz
UGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuIHNldEluc2VydGlvbk1vZGVB
bmRFbmQoQmVmb3JlSGVhZE1vZGUsIGZvcmVpZ24pOwogICAgICAgICB9CiAgICAgICAgIGlmIChu
b2RlLT5uYW1lc3BhY2VVUkkoKSA9PSBTVkdOYW1lczo6c3ZnTmFtZXNwYWNlVVJJCiAgICAgICAg
ICAgICB8fCBub2RlLT5uYW1lc3BhY2VVUkkoKSA9PSBNYXRoTUxOYW1lczo6bWF0aG1sTmFtZXNw
YWNlVVJJKQogICAgICAgICAgICAgZm9yZWlnbiA9IHRydWU7CiAgICAgICAgIGlmIChsYXN0KSB7
Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICBB
U1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc2V0SW5zZXJ0
aW9uTW9kZUFuZEVuZChJbkJvZHlNb2RlLCBmb3JlaWduKTsKICAgICAgICAgfQogICAgICAgICBu
b2RlUmVjb3JkID0gbm9kZVJlY29yZC0+bmV4dCgpOwpAQCAtMTg0NCw3ICsxOTI2LDcgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblRhYmxlQm9keShBdG9taWNIVE1M
VG9rZW4mIHRva2VuKQogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gdGFibGVUYWcpIHsKICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgaXMgc2xvdy4KICAgICAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1l
bnRzKCktPmluVGFibGVTY29wZSh0Ym9keVRhZy5sb2NhbE5hbWUoKSkgJiYgIW1fdHJlZS5vcGVu
RWxlbWVudHMoKS0+aW5UYWJsZVNjb3BlKHRoZWFkVGFnLmxvY2FsTmFtZSgpKSAmJiAhbV90cmVl
Lm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2NvcGUodGZvb3RUYWcubG9jYWxOYW1lKCkpKSB7Ci0g
ICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICBBU1NF
UlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTg3NCw3ICsxOTU2LDcgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblJvdyhBdG9taWNIVE1MVG9rZW4m
IHRva2VuKQogICAgIH0KICAgICBpZiAodG9rZW4ubmFtZSgpID09IHRhYmxlVGFnKSB7CiAgICAg
ICAgIGlmICghcHJvY2Vzc1RyRW5kVGFnRm9ySW5Sb3coKSkgewotICAgICAgICAgICAgQVNTRVJU
KG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdt
ZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChp
bnNlcnRpb25Nb2RlKCkgPT0gSW5UYWJsZUJvZHlNb2RlKTsKQEAgLTE5MjgsNyArMjAxMCw3IEBA
IHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5DZWxsKEF0b21pY0hUTUxU
b2tlbiYgdG9rZW4pCiAgICAgICAgIHx8IHRva2VuLm5hbWUoKSA9PSB0clRhZwogICAgICAgICB8
fCBpc1RhYmxlQm9keUNvbnRleHRUYWcodG9rZW4ubmFtZSgpKSkgewogICAgICAgICBpZiAoIW1f
dHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJsZVNjb3BlKHRva2VuLm5hbWUoKSkpIHsKLSAgICAg
ICAgICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChp
c1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBJdCBpcyB1bmNsZWFy
IHdoYXQgdGhlIGV4YWN0IEFTU0VSVCBzaG91bGQgYmUuCiAgICAgICAgICAgICAvLyBodHRwOi8v
d3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9MTAwOTgKICAgICAgICAgICAg
IHBhcnNlRXJyb3IodG9rZW4pOwpAQCAtMjA4MCw3ICsyMTYyLDcgQEAgdm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIGJv
b2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2FwdGlvbkVuZFRhZ0ZvckluQ2FwdGlvbigpCiB7
CiAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZShjYXB0aW9uVGFn
LmxvY2FsTmFtZSgpKSkgewotICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7Cisg
ICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgLy8gRklYTUU6IHBh
cnNlIGVycm9yCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yMDk1LDcgKzIxNzcs
NyBAQCBib29sIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NhcHRpb25FbmRUYWdGb3JJbkNhcHRp
b24oKQogYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUckVuZFRhZ0ZvckluUm93KCkKIHsK
ICAgICBpZiAoIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJsZVNjb3BlKHRyVGFnLmxvY2Fs
TmFtZSgpKSkgewotICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAg
IEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgLy8gRklYTUU6IHBhcnNlIGVy
cm9yCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yMTA5LDcgKzIxOTEsNyBAQCBi
b29sIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1RyRW5kVGFnRm9ySW5Sb3coKQogYm9vbCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NUYWJsZUVuZFRhZ0ZvckluVGFibGUoKQogewogICAgIGlmICgh
bV90cmVlLm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2NvcGUodGFibGVUYWcpKSB7Ci0gICAgICAg
IEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0Zy
YWdtZW50KCkpOwogICAgICAgICAvLyBGSVhNRTogcGFyc2UgZXJyb3IuCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CkBAIC0yMjAxLDcgKzIyODMsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBpZiAodG9r
ZW4ubmFtZSgpID09IHRhYmxlVGFnKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsK
ICAgICAgICAgICAgIGlmICghcHJvY2Vzc0NhcHRpb25FbmRUYWdGb3JJbkNhcHRpb24oKSkgewot
ICAgICAgICAgICAgICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZyh0b2tlbik7CkBAIC0y
MjMwLDcgKzIzMTIsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9t
aWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
ICAgIGlmICghcHJvY2Vzc0NvbGdyb3VwRW5kVGFnRm9ySW5Db2x1bW5Hcm91cCgpKSB7Ci0gICAg
ICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7CisgICAgICAgICAgICBBU1NFUlQo
aXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgcHJvY2Vzc0VuZFRhZyh0b2tlbik7CkBAIC0yMjUwLDcgKzIzMzIsNyBAQCB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAg
IGNhc2UgQWZ0ZXJCb2R5TW9kZToKICAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBB
ZnRlckJvZHlNb2RlKTsKICAgICAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBodG1sVGFnKSB7Ci0g
ICAgICAgICAgICBpZiAobV9pc1BhcnNpbmdGcmFnbWVudCkgeworICAgICAgICAgICAgaWYgKGlz
UGFyc2luZ0ZyYWdtZW50KCkpIHsKICAgICAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0yMzAyLDcgKzIzODQs
NyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4m
IHRva2VuKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cG9wKCk7Ci0gICAgICAgICAgICBpZiAoIW1faXNQ
YXJzaW5nRnJhZ21lbnQgJiYgIW1fdHJlZS5jdXJyZW50RWxlbWVudCgpLT5oYXNUYWdOYW1lKGZy
YW1lc2V0VGFnKSkKKyAgICAgICAgICAgIGlmICghaXNQYXJzaW5nRnJhZ21lbnQoKSAmJiAhbV90
cmVlLmN1cnJlbnRFbGVtZW50KCktPmhhc1RhZ05hbWUoZnJhbWVzZXRUYWcpKQogICAgICAgICAg
ICAgICAgIHNldEluc2VydGlvbk1vZGUoQWZ0ZXJGcmFtZXNldE1vZGUpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC0yNTQ1LDcgKzI2MjcsNyBAQCBSZXByb2Nlc3NCdWZmZXI6
CiAgICAgICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBpZiAoIXByb2Nlc3NDb2xncm91cEVuZFRhZ0ZvckluQ29sdW1uR3JvdXAoKSkgewotICAg
ICAgICAgICAgQVNTRVJUKG1faXNQYXJzaW5nRnJhZ21lbnQpOworICAgICAgICAgICAgQVNTRVJU
KGlzUGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIGdvdG8gUmVwcm9jZXNzQnVmZmVyOwpAQCAtMjY2NSwxMSArMjc0NywxMSBAQCB2b2lk
IEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZShBdG9taWNIVE1MVG9rZW4mIHRva2Vu
KQogICAgICAgICBicmVhazsKICAgICBjYXNlIEluQ29sdW1uR3JvdXBNb2RlOgogICAgICAgICBp
ZiAobV90cmVlLmN1cnJlbnRFbGVtZW50KCkgPT0gbV90cmVlLm9wZW5FbGVtZW50cygpLT5odG1s
RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pc1BhcnNpbmdGcmFnbWVudCk7Cisg
ICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFwcm9jZXNzQ29sZ3JvdXBFbmRUYWdGb3JJbkNv
bHVtbkdyb3VwKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lzUGFyc2luZ0ZyYWdtZW50KTsK
KyAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBwcm9jZXNzRW5kT2ZGaWxlKHRva2VuKTsKQEAgLTI4
MzMsOSArMjkxNSwxMyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZmluaXNoZWQoKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKGlzUGFyc2luZ0ZyYWdtZW50KCkpIHsKKyAgICAg
ICAgbV9mcmFnbWVudENvbnRleHQuZmluaXNoZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIC8vIFdhcm5pbmcsIHRoaXMgbWF5IGRlbGV0ZSB0aGUgcGFyc2VyLCBzbyBkb24ndCB0
cnkgdG8gZG8gYW55dGhpbmcgZWxzZSBhZnRlciB0aGlzLgotICAgIGlmICghbV9pc1BhcnNpbmdG
cmFnbWVudCkKLSAgICAgICAgbV9kb2N1bWVudC0+ZmluaXNoZWRQYXJzaW5nKCk7CisgICAgbV9k
b2N1bWVudC0+ZmluaXNoZWRQYXJzaW5nKCk7CiB9CiAKIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpz
Y3JpcHRFbmFibGVkKEZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1M
VHJlZUJ1aWxkZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuaAppbmRleCBlMzFk
MDliNjZlZjNiN2MxNWU3YzAzZjBlZjg5YTRiNGIxZjMwNzZiLi4yNGNiNTQyYTA3NWU3OTY3NTli
NzFhMzkyMDc5MDM4YmY0NWI2ZGI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRyZWVC
dWlsZGVyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5oCkBAIC01NCw3ICs1
NCw3IEBAIGNsYXNzIEhUTUxUcmVlQnVpbGRlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJs
aWM6CiAgICAgLy8gRklYTUU6IFJlcGxhY2UgY29uc3RydWN0b3JzIHdpdGggY3JlYXRlKCkgZnVu
Y3Rpb25zIHJldHVybmluZyBQYXNzT3duUHRycwogICAgIEhUTUxUcmVlQnVpbGRlcihIVE1MVG9r
ZW5pemVyKiwgSFRNTERvY3VtZW50KiwgYm9vbCByZXBvcnRFcnJvcnMpOwotICAgIEhUTUxUcmVl
QnVpbGRlcihIVE1MVG9rZW5pemVyKiwgRG9jdW1lbnRGcmFnbWVudCosIEZyYWdtZW50U2NyaXB0
aW5nUGVybWlzc2lvbik7CisgICAgSFRNTFRyZWVCdWlsZGVyKEhUTUxUb2tlbml6ZXIqLCBEb2N1
bWVudEZyYWdtZW50KiwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5n
UGVybWlzc2lvbik7CiAgICAgfkhUTUxUcmVlQnVpbGRlcigpOwogCiAgICAgdm9pZCBzZXRQYXVz
ZWQoYm9vbCBwYXVzZWQpIHsgbV9pc1BhdXNlZCA9IHBhdXNlZDsgfQpAQCAtNzQsNiArNzQsOSBA
QCBwdWJsaWM6CiAgICAgLy8gdW50aWwgd2Ugc3RvcCB1c2luZyB0aGUgbGVnYWN5IHBhcnNlci4g
RE8gTk9UIENBTEwgVEhJUyBNRVRIT0QuCiAgICAgTGVnYWN5SFRNTFRyZWVCdWlsZGVyKiBsZWdh
Y3lUcmVlQnVpbGRlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGVnYWN5VHJlZUJ1aWxkZXIuZ2V0KCk7
IH0KIAorICAgIHN0YXRpYyBib29sIHNjcmlwdEVuYWJsZWQoRnJhbWUqKTsKKyAgICBzdGF0aWMg
Ym9vbCBwbHVnaW5zRW5hYmxlZChGcmFtZSopOworCiBwcml2YXRlOgogICAgIGNsYXNzIEZha2VJ
bnNlcnRpb25Nb2RlOwogICAgIGNsYXNzIEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXI7CkBA
IC0xMDUsNiArMTA4LDggQEAgcHJpdmF0ZToKICAgICAgICAgQWZ0ZXJBZnRlckZyYW1lc2V0TW9k
ZSwKICAgICB9OwogCisgICAgYm9vbCBpc1BhcnNpbmdGcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJu
ICEhbV9mcmFnbWVudENvbnRleHQuZnJhZ21lbnQoKTsgfQorCiAgICAgdm9pZCBwYXNzVG9rZW5U
b0xlZ2FjeVBhcnNlcihIVE1MVG9rZW4mKTsKIAogICAgIHZvaWQgcHJvY2Vzc1Rva2VuKEF0b21p
Y0hUTUxUb2tlbiYpOwpAQCAtMTkyLDggKzE5NywzMSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
SW5zZXJ0aW9uTW9kZUFuZEVuZChJbnNlcnRpb25Nb2RlLCBib29sIGZvcmVpZ24pOyAvLyBIZWxw
ZXIgZm9yIHJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkKICAgICB2b2lkIHJlc2V0SW5z
ZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKTsKIAotICAgIHN0YXRpYyBib29sIHNjcmlwdEVuYWJs
ZWQoRnJhbWUqIGZyYW1lKTsKLSAgICBzdGF0aWMgYm9vbCBwbHVnaW5zRW5hYmxlZChGcmFtZSog
ZnJhbWUpOworICAgIGNsYXNzIEZyYWdtZW50UGFyc2luZ0NvbnRleHQgOiBwdWJsaWMgTm9uY29w
eWFibGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgRnJhZ21lbnRQYXJzaW5nQ29udGV4dCgpOwor
ICAgICAgICBGcmFnbWVudFBhcnNpbmdDb250ZXh0KERvY3VtZW50RnJhZ21lbnQqLCBFbGVtZW50
KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLCBib29sIHVzaW5n
TGVnYWN5VHJlZUJ1aWxkZXIpOworICAgICAgICB+RnJhZ21lbnRQYXJzaW5nQ29udGV4dCgpOwor
CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OworICAgICAgICBEb2N1bWVudEZy
YWdtZW50KiBmcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21lbnQ7IH0KKyAgICAgICAg
RWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IEFTU0VSVChtX2ZyYWdtZW50KTsgQVNT
RVJUKCFtX3VzaW5nTGVnYWN5VHJlZUJ1aWxkZXIpOyByZXR1cm4gbV9jb250ZXh0RWxlbWVudDsg
fQorICAgICAgICBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lv
bigpIGNvbnN0IHsgQVNTRVJUKG1fZnJhZ21lbnQpOyByZXR1cm4gbV9zY3JpcHRpbmdQZXJtaXNz
aW9uOyB9CisKKyAgICAgICAgdm9pZCBmaW5pc2hlZCgpOworCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgUmVmUHRyPERvY3VtZW50PiBtX2R1bW15RG9jdW1lbnRGb3JGcmFnbWVudFBhcnNpbmc7Cisg
ICAgICAgIERvY3VtZW50RnJhZ21lbnQqIG1fZnJhZ21lbnQ7CisgICAgICAgIEVsZW1lbnQqIG1f
Y29udGV4dEVsZW1lbnQ7CisgICAgICAgIGJvb2wgbV91c2luZ0xlZ2FjeVRyZWVCdWlsZGVyOwor
CisgICAgICAgIC8vIEZyYWdtZW50U2NyaXB0aW5nTm90QWxsb3dlZCBjYXVzZXMgdGhlIFBhcnNl
ciB0byByZW1vdmUgY2hpbGRyZW4KKyAgICAgICAgLy8gZnJvbSA8c2NyaXB0PiB0YWdzIChzbyBq
YXZhc2NyaXB0IGRvZXNuJ3Qgc2hvdyB1cCBpbiBwYXN0ZXMpLgorICAgICAgICBGcmFnbWVudFNj
cmlwdGluZ1Blcm1pc3Npb24gbV9zY3JpcHRpbmdQZXJtaXNzaW9uOworICAgIH07CisKKyAgICBG
cmFnbWVudFBhcnNpbmdDb250ZXh0IG1fZnJhZ21lbnRDb250ZXh0OwogCiAgICAgRG9jdW1lbnQq
IG1fZG9jdW1lbnQ7CiAgICAgSFRNTENvbnN0cnVjdGlvblNpdGUgbV90cmVlOwpAQCAtMjI2LDEy
ICsyNTQsNiBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fc2NyaXB0VG9Qcm9j
ZXNzOyAvLyA8c2NyaXB0PiB0YWcgd2hpY2ggbmVlZHMgcHJvY2Vzc2luZyBiZWZvcmUgcmVzdW1p
bmcgdGhlIHBhcnNlci4KICAgICBpbnQgbV9zY3JpcHRUb1Byb2Nlc3NTdGFydExpbmU7IC8vIFN0
YXJ0aW5nIGxpbmUgbnVtYmVyIG9mIHRoZSBzY3JpcHQgdGFnIG5lZWRpbmcgcHJvY2Vzc2luZy4K
LQotICAgIC8vIEZJWE1FOiBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gaXMgYSBIQUNLIGZv
ciBwbGF0Zm9ybS9QYXN0ZWJvYXJkLgotICAgIC8vIEZyYWdtZW50U2NyaXB0aW5nTm90QWxsb3dl
ZCBjYXVzZXMgdGhlIFBhcnNlciB0byByZW1vdmUgY2hpbGRyZW4KLSAgICAvLyBmcm9tIDxzY3Jp
cHQ+IHRhZ3MgKHNvIGphdmFzY3JpcHQgZG9lc24ndCBzaG93IHVwIGluIHBhc3RlcykuCi0gICAg
RnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIG1fZnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9u
OwotICAgIGJvb2wgbV9pc1BhcnNpbmdGcmFnbWVudDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwIGIvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5j
cHAKaW5kZXggZjk0OTE2MzgxYzJjZjllNGI1NDA4ZGM5NGQ5NTQ1YjUyOGFjMWVkNi4uN2UwN2Vl
M2ZkYmIzMjQ5MjJjMmViODEzYjFjZTkzZmI2Yjk5ZjI5YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS94
bWwvWFNMVFByb2Nlc3Nvci5jcHAKKysrIGIvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAK
QEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBjcmVhdGVGcmFnbWVudEZyb21Tb3VyY2UoY29uc3QgU3RyaW5nJiBzbwogICAgIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IG91dHB1dERvYy0+Y3JlYXRlRG9jdW1lbnRGcmFn
bWVudCgpOwogCiAgICAgaWYgKHNvdXJjZU1JTUVUeXBlID09ICJ0ZXh0L2h0bWwiKQotICAgICAg
ICBmcmFnbWVudC0+cGFyc2VIVE1MKHNvdXJjZVN0cmluZyk7CisgICAgICAgIGZyYWdtZW50LT5w
YXJzZUhUTUwoc291cmNlU3RyaW5nLCBvdXRwdXREb2MtPmRvY3VtZW50RWxlbWVudCgpKTsKICAg
ICBlbHNlIGlmIChzb3VyY2VNSU1FVHlwZSA9PSAidGV4dC9wbGFpbiIpCiAgICAgICAgIGZyYWdt
ZW50LT5sZWdhY3lQYXJzZXJBZGRDaGlsZChUZXh0OjpjcmVhdGUob3V0cHV0RG9jLCBzb3VyY2VT
dHJpbmcpKTsKICAgICBlbHNlIHsK
</data>
<flag name="commit-queue"
          id="52359"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>