<?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>32063</bug_id>
          
          <creation_ts>2009-12-02 04:40:21 -0800</creation_ts>
          <short_desc>ScriptController::isEnabled needs to be renamed</short_desc>
          <delta_ts>2010-01-22 11:02:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrik Persson">patrik.j.persson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>167956</commentid>
    <comment_count>0</comment_count>
    <who name="Patrik Persson">patrik.j.persson</who>
    <bug_when>2009-12-02 04:40:21 -0800</bug_when>
    <thetext>During the work with #21288, we realized that the method ScriptController::isEnabled() has grown to do more than the name says. The name should reflect what the method does (checks settings, checks sandboxing status, passes decision to frame loader client): 

bool ScriptController::isEnabled()
{
    Settings* settings = m_frame-&gt;settings();
    return m_frame-&gt;loader()-&gt;client()-&gt;allowJavaScript(settings &amp;&amp; settings-&gt;isJavaScriptEnabled() &amp;&amp; !m_frame-&gt;loader()-&gt;isSandboxed(SandboxScripts));
}

Darin Adler suggested &apos;canExecuteScripts&apos; below. Is that OK?

(In reply to comment #51 in bug 21288)
&gt; Loose end for after this lands: ScriptController::isEnabled needs to be
&gt; renamed. It already checked more than just whether JavaScript was enabled.
&gt; Maybe canExecuteScripts is the right name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168025</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-12-02 09:38:42 -0800</bug_when>
    <thetext>&gt; Darin Adler suggested &apos;canExecuteScripts&apos; below. Is that OK?

The name looks good in abstract. Once you post  a final patch, it will be easier to see if it makes sense at all call sites.

    return m_frame-&gt;loader()-&gt;client()-&gt;allowJavaScript(settings &amp;&amp;
settings-&gt;isJavaScriptEnabled() &amp;&amp;
!m_frame-&gt;loader()-&gt;isSandboxed(SandboxScripts));

By the way, given that the argument to FrameLoaderClient::allowJavaScript() is called &quot;enabledPerSettings&quot;, it may be more appropriate to have the new isSandboxed() check outside the parentheses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168030</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-12-02 09:42:07 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; By the way, given that the argument to FrameLoaderClient::allowJavaScript() is
&gt; called &quot;enabledPerSettings&quot;, it may be more appropriate to have the new
&gt; isSandboxed() check outside the parentheses.

Patrik, sorry for sidetracking in your bug.

Alexey, I think the real issue there is whether we want the frame loader client to be able to override the sandboxing.

If we do want the client to have this capability, and I personally think we do, then we could change the name of the argument to allowJavaScript. Or consider other API refinements so the client can make the decision in a well-informed way.

If we don&apos;t, then I think we should change the rules so that ScriptController won&apos;t even call allowJavaScript when sandboxed.

We could look at what clients currently do with the allowJavaScript function to inform that decision.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170442</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-10 09:01:39 -0800</bug_when>
    <thetext>Why would you want the client to be able to override the sandbox?  I&apos;m not opposed, I just don&apos;t understand the use case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170499</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-12-10 13:15:52 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Why would you want the client to be able to override the sandbox?

I&apos;m not sure there is a use case.

I think it depends on why we have allowJavaScript as a client call at all. This was added for Chromium and is currently not used in any other port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170508</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-10 13:34:52 -0800</bug_when>
    <thetext>fishd would know, but I think this was due to paranoia about XSS in browser UI surfaces built out of HTML.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178965</commentid>
    <comment_count>6</comment_count>
      <attachid>46202</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-09 01:18:48 -0800</bug_when>
    <thetext>Created attachment 46202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178971</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-09 01:57:51 -0800</bug_when>
    <thetext>Attachment 46202 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/176231</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179086</commentid>
    <comment_count>8</comment_count>
      <attachid>46227</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-09 16:30:41 -0800</bug_when>
    <thetext>Created attachment 46227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179096</commentid>
    <comment_count>9</comment_count>
      <attachid>46227</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-09 18:16:13 -0800</bug_when>
    <thetext>Comment on attachment 46227
Patch

Rejecting patch 46227 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Running build-dumprendertree
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 11902 test cases.
fast/profiler/profile-calls-in-included-file.html -&gt; crashed

Exiting early after 1 failures. 7848 tests run.
270.16s total testing time

7847 test cases (99%) succeeded
1 test case (&lt;1%) crashed
3 test cases (&lt;1%) had stderr output

Full output: http://webkit-commit-queue.appspot.com/results/175716</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179100</commentid>
    <comment_count>10</comment_count>
      <attachid>46227</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-09 18:36:36 -0800</bug_when>
    <thetext>Comment on attachment 46227
Patch

Clearing flags on attachment: 46227

Committed r53046: &lt;http://trac.webkit.org/changeset/53046&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179101</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-09 18:36:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179513</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-11 13:44:03 -0800</bug_when>
    <thetext>Filed bug 33490 about the crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183702</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-01-22 11:02:58 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; I think it depends on why we have allowJavaScript as a client call at all. 
&gt; &gt; This was added for Chromium and is currently not used in any other port.
&gt; fishd would know, but I think this was due to paranoia about XSS in browser UI
&gt; surfaces built out of HTML.

Chromium wants to be able to enable JavaScript for chrome:// pages as well as file:// and ftp:// directory listings even when the user has disabled JavaScript.

I believe allowJavaScript is also enables a feature like the noscript Firefox extension.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46202</attachid>
            <date>2010-01-09 01:18:48 -0800</date>
            <delta_ts>2010-01-09 16:30:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32063-20100109011847.patch</filename>
            <type>text/plain</type>
            <size>25852</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzY0NDEzYS4uMWEwNzJlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiw2NyBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIFNjcmlwdENvbnRyb2xsZXI6OmlzRW5hYmxlZCBuZWVk
cyB0byBiZSByZW5hbWVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMjA2MworCisgICAgICAgIFJlbmFtZSBTY3JpcHRDb250cm9sbGVyOjppc0VuYWJs
ZWQgdG8KKyAgICAgICAgU2NyaXB0Q29udHJvbGxlcjo6Y2FuRXhlY3V0ZVNjcmlwdHMgdG8gcmVm
bGVjdCB3aGF0IHRoZSBtZXRob2QgYWN0dWFsbHkKKyAgICAgICAgbWVhbnMuICBUaGlzIGlzIGEg
dHJpdmlhbCBjaGFuZ2UsIGJ1dCBpdCBpbnZvbHZlZCB0b3VjaGluZyBhIGxvdCBvZgorICAgICAg
ICBjYWxsIHNpdGVzLgorCisgICAgICAgICogV2ViQ29yZS5QbHVnaW5Ib3N0UHJvY2Vzcy5leHA6
CisgICAgICAgICogYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y2FuRXhlY3V0ZVNjcmlwdHMpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRM
aXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50
TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNMYXp5RXZlbnRMaXN0ZW5lcjo6cGFy
c2VDb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENv
bnRyb2xsZXI6OmJpbmRpbmdSb290T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENv
bnRyb2xsZXI6OndpbmRvd1NjcmlwdE5QT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OmpzT2JqZWN0Rm9yUGx1Z2luRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjp3
aW5kb3dTY3JpcHRPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlz
dGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5l
cik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2NyaXB0U3RhdGVGcm9tTm9kZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjp3aW5k
b3dTY3JpcHROUE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpj
cmVhdGVTY3JpcHRPYmplY3RGb3JQbHVnaW5FbGVtZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRM
aXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4UHJveHk6OnJldHJpZXZlKToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50RGF0YTo6ZXZhbHVhdGVTY3JpcHQpOgor
ICAgICAgICAqIGRvbS9YTUxUb2tlbml6ZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlhNTFRva2VuaXplcjo6c3RhcnRFbGVtZW50TnMpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpjb250cm9s
cyk6CisgICAgICAgICogaHRtbC9IVE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUb2tlbml6ZXI6OnBhcnNlVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6
ZXI6OnByb2Nlc3NUb2tlbik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FuUGFzc05vZGVUb0phdmFTY3JpcHQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SmF2YVNjcmlwdERlYnVnU2VydmVyOjpzZXRKYXZhU2NyaXB0UGF1c2VkKToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENs
ZWFyV2luZG93T2JqZWN0c0luQWxsV29ybGRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6CisKKzIwMTAtMDEtMDkg
IEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBVbmlmeSBvcmlnaW4gc2FuZGJveCBmbGFnIHdpdGgg
bV9ub0FjY2VzcyBpbiBTZWN1cml0eU9yaWdpbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIzNzIKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
LlBsdWdpbkhvc3RQcm9jZXNzLmV4cCBiL1dlYkNvcmUvV2ViQ29yZS5QbHVnaW5Ib3N0UHJvY2Vz
cy5leHAKaW5kZXggY2NlOTUxZi4uNGI3ODk2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
LlBsdWdpbkhvc3RQcm9jZXNzLmV4cAorKysgYi9XZWJDb3JlL1dlYkNvcmUuUGx1Z2luSG9zdFBy
b2Nlc3MuZXhwCkBAIC05LDcgKzksNyBAQCBfX1pON1dlYkNvcmUxM0lkZW50aWZpZXJSZXAzZ2V0
RWkKIF9fWk43V2ViQ29yZTEzSWRlbnRpZmllclJlcDNnZXRFUEtjCiBfX1pON1dlYkNvcmUxM0lk
ZW50aWZpZXJSZXA3aXNWYWxpZEVQUzBfCiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIx
NmNyZWF0ZVJvb3RPYmplY3RFUHYKK19fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjE3Y2Fu
RXhlY3V0ZVNjcmlwdHNFdgogX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMjRqc09iamVj
dEZvclBsdWdpbkVsZW1lbnRFUE5TXzE3SFRNTFBsdWdJbkVsZW1lbnRFCi1fX1pON1dlYkNvcmUx
NlNjcmlwdENvbnRyb2xsZXI5aXNFbmFibGVkRXYKIF9fWk43V2ViQ29yZTZTdHJpbmcyNmZyb21V
VEY4V2l0aExhdGluMUZhbGxiYWNrRVBLY20KIF9fWk43V2ViQ29yZTZTdHJpbmc4ZnJvbVVURjhF
UEtjbQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5j
cHAgYi9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcAppbmRleCA3MmM5
ZjQ1Li5mMTIxN2UzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xs
ZXJCYXNlLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNw
cApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKIAogI2lu
Y2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlw
dFZhbHVlLmgiCkBAIC0zMCw2ICszMSwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Jv
b2wgU2NyaXB0Q29udHJvbGxlcjo6Y2FuRXhlY3V0ZVNjcmlwdHMoKQoreworICAgIGlmIChtX2Zy
YW1lLT5sb2FkZXIoKS0+aXNTYW5kYm94ZWQoU2FuZGJveFNjcmlwdHMpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygp
OworICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmFsbG93SmF2YVNjcmlw
dChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+aXNKYXZhU2NyaXB0RW5hYmxlZCgpKTsKK30KKwogU2Ny
aXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNj
cmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQogewogICAgIHJldHVybiBleGVjdXRlU2NyaXB0
KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlID8gS1VSTCgpIDogbV9m
cmFtZS0+bG9hZGVyKCktPnVybCgpKSk7CkBAIC0zNyw3ICs0Nyw3IEBAIFNjcmlwdFZhbHVlIFNj
cmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyCiAKIFNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKIHsKLSAgICBpZiAoIWlzRW5hYmxl
ZCgpIHx8IGlzUGF1c2VkKCkpCisgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cygpIHx8IGlzUGF1
c2VkKCkpCiAgICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOwogCiAgICAgYm9vbCB3YXNJbkV4
ZWN1dGVTY3JpcHQgPSBtX2luRXhlY3V0ZVNjcmlwdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dExpc3RlbmVyLmNwcAppbmRleCA3MzA2MGYxLi5kM2I1ZmUxIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgSlNFdmVudExpc3Rl
bmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIC8vIEZJWE1FOiBJcyB0aGlzIGNo
ZWNrIG5lZWRlZCBmb3Igb3RoZXIgY29udGV4dHM/CiAgICAgICAgIFNjcmlwdENvbnRyb2xsZXIq
IHNjcmlwdCA9IGZyYW1lLT5zY3JpcHQoKTsKLSAgICAgICAgaWYgKCFzY3JpcHQtPmlzRW5hYmxl
ZCgpIHx8IHNjcmlwdC0+aXNQYXVzZWQoKSkKKyAgICAgICAgaWYgKCFzY3JpcHQtPmNhbkV4ZWN1
dGVTY3JpcHRzKCkgfHwgc2NyaXB0LT5pc1BhdXNlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3Rl
bmVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5k
ZXggNmQ3NWY0Zi4uYjcwNzk5MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xh
enlFdmVudExpc3RlbmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50
TGlzdGVuZXIuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgSlNMYXp5RXZlbnRMaXN0ZW5lcjo6
cGFyc2VDb2RlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGV4ZWN1dGlvbkNvbnRleHQpIGNvCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIg
PSBmcmFtZS0+c2NyaXB0KCk7Ci0gICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT5pc0VuYWJsZWQo
KSkKKyAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXItPmNhbkV4ZWN1dGVTY3JpcHRzKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pT
RE9NR2xvYmFsT2JqZWN0KGV4ZWN1dGlvbkNvbnRleHQsIG1faXNvbGF0ZWRXb3JsZC5nZXQoKSk7
CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBKU0xhenlFdmVudExpc3RlbmVyOjpwYXJzZUNvZGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZXhlY3V0aW9uQ29udGV4dCkgY28KICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgY2hlY2sgbmVlZGVkIGZvciBub24t
RG9jdW1lbnQgY29udGV4dHM/CiAgICAgICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCA9IGZy
YW1lLT5zY3JpcHQoKTsKLSAgICAgICAgaWYgKCFzY3JpcHQtPmlzRW5hYmxlZCgpIHx8IHNjcmlw
dC0+aXNQYXVzZWQoKSkKKyAgICAgICAgaWYgKCFzY3JpcHQtPmNhbkV4ZWN1dGVTY3JpcHRzKCkg
fHwgc2NyaXB0LT5pc1BhdXNlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IDMyMjNlNTMuLmJlOTAxMjUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTExNyw3ICsxMTcs
NyBAQCB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShEb2N1bWVudCogZG9jdW1lbnQpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSB3aW5kb3ctPmltcGwo
KS0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+c2NyaXB0KCktPmlzRW5hYmxl
ZCgpKQorICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlw
dHMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZnJhbWUtPnNjcmlwdCgpLT5zZXRQcm9jZXNz
aW5nVGltZXJDYWxsYmFjayh0cnVlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwCmluZGV4IDNjNDQwZGIuLjY2NzNlYWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmNwcApAQCAtMjg2LDEyICsyODYsNiBAQCBib29sIFNjcmlwdENvbnRyb2xs
ZXI6OmFueVBhZ2VJc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1ib29sIFNjcmlwdENvbnRyb2xsZXI6OmlzRW5hYmxlZCgpCi17Ci0gICAgU2V0
dGluZ3MqIHNldHRpbmdzID0gbV9mcmFtZS0+c2V0dGluZ3MoKTsKLSAgICByZXR1cm4gbV9mcmFt
ZS0+bG9hZGVyKCktPmNsaWVudCgpLT5hbGxvd0phdmFTY3JpcHQoc2V0dGluZ3MgJiYgc2V0dGlu
Z3MtPmlzSmF2YVNjcmlwdEVuYWJsZWQoKSAmJiAhbV9mcmFtZS0+bG9hZGVyKCktPmlzU2FuZGJv
eGVkKFNhbmRib3hTY3JpcHRzKSk7Ci19Ci0KIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6YXR0YWNo
RGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCiB7CiAgICAgLy8gRklYTUU6IFNob3Vs
ZCBiZSBhYmxlIHRvIGRlYnVnIGlzb2xhdGVkIHdvcmxkcy4KQEAgLTMyMyw3ICszMTcsNyBAQCB2
b2lkIFNjcmlwdENvbnRyb2xsZXI6OnVwZGF0ZVNlY3VyaXR5T3JpZ2luKCkKIAogQmluZGluZ3M6
OlJvb3RPYmplY3QqIFNjcmlwdENvbnRyb2xsZXI6OmJpbmRpbmdSb290T2JqZWN0KCkKIHsKLSAg
ICBpZiAoIWlzRW5hYmxlZCgpKQorICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICBpZiAoIW1fYmluZGluZ1Jvb3RPYmplY3QpIHsKQEAgLTM1MCw3
ICszNDQsNyBAQCBQYXNzUmVmUHRyPEJpbmRpbmdzOjpSb290T2JqZWN0PiBTY3JpcHRDb250cm9s
bGVyOjpjcmVhdGVSb290T2JqZWN0KHZvaWQqIG5hdGl2ZQogTlBPYmplY3QqIFNjcmlwdENvbnRy
b2xsZXI6OndpbmRvd1NjcmlwdE5QT2JqZWN0KCkKIHsKICAgICBpZiAoIW1fd2luZG93U2NyaXB0
TlBPYmplY3QpIHsKLSAgICAgICAgaWYgKGlzRW5hYmxlZCgpKSB7CisgICAgICAgIGlmIChjYW5F
eGVjdXRlU2NyaXB0cygpKSB7CiAgICAgICAgICAgICAvLyBKYXZhU2NyaXB0IGlzIGVuYWJsZWQs
IHNvIHRoZXJlIGlzIGEgSmF2YVNjcmlwdCB3aW5kb3cgb2JqZWN0LgogICAgICAgICAgICAgLy8g
UmV0dXJuIGFuIE5QT2JqZWN0IGJvdW5kIHRvIHRoZSB3aW5kb3cgb2JqZWN0LgogICAgICAgICAg
ICAgSlNDOjpKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwpAQCAtMzgzLDcgKzM3
Nyw3IEBAIE5QT2JqZWN0KiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRPYmplY3RGb3JQ
bHVnaW5FbGVtZW50KEhUTUxQbHVnSW5FbGVtZW50CiBKU09iamVjdCogU2NyaXB0Q29udHJvbGxl
cjo6anNPYmplY3RGb3JQbHVnaW5FbGVtZW50KEhUTUxQbHVnSW5FbGVtZW50KiBwbHVnaW4pCiB7
CiAgICAgLy8gQ2FuJ3QgY3JlYXRlIEpTT2JqZWN0cyB3aGVuIEphdmFTY3JpcHQgaXMgZGlzYWJs
ZWQKLSAgICBpZiAoIWlzRW5hYmxlZCgpKQorICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBDcmVhdGUgYSBKU09iamVjdCBib3VuZCB0byB0
aGlzIGVsZW1lbnQKQEAgLTQ1MCw3ICs0NDQsNyBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9s
bGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdAog
ewogICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShzY3JpcHQsIGZvcmNlVXNlckdlc3R1
cmUgPyBLVVJMKCkgOiBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkpOwogCi0gICAgaWYgKCFpc0Vu
YWJsZWQoKSB8fCBpc1BhdXNlZCgpKQorICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoKSB8fCBp
c1BhdXNlZCgpKQogICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKIAogICAgIGJvb2wgd2Fz
SW5FeGVjdXRlU2NyaXB0ID0gbV9pbkV4ZWN1dGVTY3JpcHQ7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5oCmluZGV4IDg4MDE2MjIuLjM1ZWMwMjggMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIGJv
b2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkgY29uc3Q7CiAgICAgYm9vbCBhbnlQYWdlSXNQcm9j
ZXNzaW5nVXNlckdlc3R1cmUoKSBjb25zdDsKIAotICAgIGJvb2wgaXNFbmFibGVkKCk7CisgICAg
Ym9vbCBjYW5FeGVjdXRlU2NyaXB0cygpOwogCiAgICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcihKU0M6
OkRlYnVnZ2VyKik7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlck1hYy5tbSBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5t
bQppbmRleCAyMWVjMGYyLi45OGQzMDJlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXJNYWMubW0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyTWFjLm1tCkBAIC0xMDgsNyArMTA4LDcgQEAgUGFzc1NjcmlwdEluc3RhbmNlIFNj
cmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0KFdpZGdldCogd2lk
Z2UKIAogV2ViU2NyaXB0T2JqZWN0KiBTY3JpcHRDb250cm9sbGVyOjp3aW5kb3dTY3JpcHRPYmpl
Y3QoKQogewotICAgIGlmICghaXNFbmFibGVkKCkpCisgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0
cygpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmICghbV93aW5kb3dTY3JpcHRPYmplY3Qp
IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5j
cHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDgz
OTljN2EuLmI5ZGMwMGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZl
bnRMaXN0ZW5lci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3Rl
bmVyLmNwcApAQCAtNTksNyArNTksNyBAQCBQYXNzUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+
IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoTm9kZSogbm9kZSwgQXR0cmlidQogICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBwcm92aWRlIGFjY3VyYXRlIHNvdXJjZSBpbmZv
cm1hdGlvbiBmb3IgZnJhbWVsZXNzIGRvY3VtZW50cywgdG9vIChlLmcuIGZvciBpbXBvcnRpbmcg
bm9kZXMgZnJvbSBYTUxIdHRwUmVxdWVzdC5yZXNwb25zZVhNTCkuCiAgICAgaWYgKEZyYW1lKiBm
cmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkpIHsKICAgICAgICAgU2NyaXB0Q29udHJv
bGxlciogc2NyaXB0Q29udHJvbGxlciA9IGZyYW1lLT5zY3JpcHQoKTsKLSAgICAgICAgaWYgKCFz
Y3JpcHRDb250cm9sbGVyLT5pc0VuYWJsZWQoKSkKKyAgICAgICAgaWYgKCFzY3JpcHRDb250cm9s
bGVyLT5jYW5FeGVjdXRlU2NyaXB0cygpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAg
ICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT54c3NBdWRpdG9yKCktPmNhbkNyZWF0ZUlubGluZUV2
ZW50TGlzdGVuZXIoYXR0ci0+bG9jYWxOYW1lKCkuc3RyaW5nKCksIGF0dHItPnZhbHVlKCkpKSB7
CkBAIC04Myw3ICs4Myw3IEBAIFBhc3NSZWZQdHI8SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRl
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihGcmFtZSogZnJhbWUsIEF0dHJpCiAgICAgU3RyaW5nIHNv
dXJjZVVSTDsKICAgICAKICAgICBTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0g
ZnJhbWUtPnNjcmlwdCgpOwotICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+aXNFbmFibGVkKCkp
CisgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT5jYW5FeGVjdXRlU2NyaXB0cygpKQogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+eHNzQXVkaXRvcigpLT5j
YW5DcmVhdGVJbmxpbmVFdmVudExpc3RlbmVyKGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBh
dHRyLT52YWx1ZSgpKSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRT
dGF0ZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAppbmRleCBiOWY3
OGVmLi43YTc2MGFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRl
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcApAQCAtNDgsNyAr
NDgsNyBAQCBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGVGcm9tTm9kZShET01XcmFwcGVyV29ybGQq
IHdvcmxkLCBOb2RlKiBub2RlKQogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgp
OwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmICghZnJhbWUtPnNj
cmlwdCgpLT5pc0VuYWJsZWQoKSkKKyAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0
ZVNjcmlwdHMoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQo
KS0+Z2xvYmFsT2JqZWN0KHdvcmxkKS0+Z2xvYmFsRXhlYygpOwogfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMzI5OGNhZC4uOGYzNjdjMCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0yOTQsMTIgKzI5NCw2IEBAIGJv
b2wgU2NyaXB0Q29udHJvbGxlcjo6aGF2ZUludGVycHJldGVyKCkgY29uc3QKICAgICByZXR1cm4g
bV9wcm94eS0+d2luZG93U2hlbGwoKS0+aXNDb250ZXh0SW5pdGlhbGl6ZWQoKTsKIH0KIAotYm9v
bCBTY3JpcHRDb250cm9sbGVyOjppc0VuYWJsZWQoKSBjb25zdAotewotICAgIFNldHRpbmdzKiBz
ZXR0aW5ncyA9IG1fcHJveHktPmZyYW1lKCktPnNldHRpbmdzKCk7Ci0gICAgcmV0dXJuIG1fcHJv
eHktPmZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKS0+YWxsb3dKYXZhU2NyaXB0KHNldHRpbmdz
ICYmIHNldHRpbmdzLT5pc0phdmFTY3JpcHRFbmFibGVkKCkgJiYgIW1fZnJhbWUtPmxvYWRlcigp
LT5pc1NhbmRib3hlZChTYW5kYm94U2NyaXB0cykpOwotfQotCiBQYXNzU2NyaXB0SW5zdGFuY2Ug
U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0SW5zdGFuY2VGb3JXaWRnZXQoV2lkZ2V0KiB3
aWRnZXQpCiB7CiAgICAgQVNTRVJUKHdpZGdldCk7CkBAIC00MDEsNyArMzk1LDcgQEAgTlBPYmpl
Y3QqIFNjcmlwdENvbnRyb2xsZXI6OndpbmRvd1NjcmlwdE5QT2JqZWN0KCkKICAgICBpZiAobV93
aW5kb3dTY3JpcHROUE9iamVjdCkKICAgICAgICAgcmV0dXJuIG1fd2luZG93U2NyaXB0TlBPYmpl
Y3Q7CiAKLSAgICBpZiAoaXNFbmFibGVkKCkpIHsKKyAgICBpZiAoY2FuRXhlY3V0ZVNjcmlwdHMo
KSkgewogICAgICAgICAvLyBKYXZhU2NyaXB0IGlzIGVuYWJsZWQsIHNvIHRoZXJlIGlzIGEgSmF2
YVNjcmlwdCB3aW5kb3cgb2JqZWN0LgogICAgICAgICAvLyBSZXR1cm4gYW4gTlBPYmplY3QgYm91
bmQgdG8gdGhlIHdpbmRvdyBvYmplY3QuCiAgICAgICAgIG1fd2luZG93U2NyaXB0TlBPYmplY3Qg
PSBjcmVhdGVTY3JpcHRPYmplY3QobV9mcmFtZSk7CkBAIC00MTgsNyArNDEyLDcgQEAgTlBPYmpl
Y3QqIFNjcmlwdENvbnRyb2xsZXI6OndpbmRvd1NjcmlwdE5QT2JqZWN0KCkKIE5QT2JqZWN0KiBT
Y3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRPYmplY3RGb3JQbHVnaW5FbGVtZW50KEhUTUxQ
bHVnSW5FbGVtZW50KiBwbHVnaW4pCiB7CiAgICAgLy8gQ2FuJ3QgY3JlYXRlIE5QT2JqZWN0cyB3
aGVuIEphdmFTY3JpcHQgaXMgZGlzYWJsZWQuCi0gICAgaWYgKCFpc0VuYWJsZWQoKSkKKyAgICBp
ZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVOb1NjcmlwdE9i
amVjdCgpOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmggYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCA5YmE3ZDM4Li5mYjEwYmZhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoK
ICAgICAvLyBDaGVjayBpZiB0aGUgamF2YXNjcmlwdCBlbmdpbmUgaGFzIGJlZW4gaW5pdGlhbGl6
ZWQuCiAgICAgYm9vbCBoYXZlSW50ZXJwcmV0ZXIoKSBjb25zdDsKIAotICAgIGJvb2wgaXNFbmFi
bGVkKCkgY29uc3Q7CisgICAgYm9vbCBjYW5FeGVjdXRlU2NyaXB0cygpIGNvbnN0OwogCiAgICAg
Ly8gRklYTUU6IHZvaWQqIGlzIGEgY29tcGlsZSBoYWNrLgogICAgIHZvaWQgYXR0YWNoRGVidWdn
ZXIodm9pZCopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVudExp
c3RlbmVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAK
aW5kZXggNTFkNTNhYi4uY2YyYTFlZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRFdmVudExpc3RlbmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2
ZW50TGlzdGVuZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIFBhc3NSZWZQdHI8VjhMYXp5RXZlbnRM
aXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2RlKiBub2RlLCBBdHRyaWJ1
CiAKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewog
ICAgICAgICBTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gZnJhbWUtPnNjcmlw
dCgpOwotICAgICAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXItPmlzRW5hYmxlZCgpKQorICAgICAg
ICBpZiAoIXNjcmlwdENvbnRyb2xsZXItPmNhbkV4ZWN1dGVTY3JpcHRzKCkpCiAgICAgICAgICAg
ICByZXR1cm4gMDsKIAogICAgICAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXItPnhzc0F1ZGl0b3Io
KS0+Y2FuQ3JlYXRlSW5saW5lRXZlbnRMaXN0ZW5lcihhdHRyLT5sb2NhbE5hbWUoKS5zdHJpbmco
KSwgYXR0ci0+dmFsdWUoKSkpIHsKQEAgLTgxLDcgKzgxLDcgQEAgUGFzc1JlZlB0cjxWOExhenlF
dmVudExpc3RlbmVyPiBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKEZyYW1lKiBmcmFtZSwg
QXR0cmkKICAgICBTdHJpbmcgc291cmNlVVJMOwogCiAgICAgU2NyaXB0Q29udHJvbGxlciogc2Ny
aXB0Q29udHJvbGxlciA9IGZyYW1lLT5zY3JpcHQoKTsKLSAgICBpZiAoIXNjcmlwdENvbnRyb2xs
ZXItPmlzRW5hYmxlZCgpKQorICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+Y2FuRXhlY3V0ZVNj
cmlwdHMoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXIt
Pnhzc0F1ZGl0b3IoKS0+Y2FuQ3JlYXRlSW5saW5lRXZlbnRMaXN0ZW5lcihhdHRyLT5sb2NhbE5h
bWUoKS5zdHJpbmcoKSwgYXR0ci0+dmFsdWUoKSkpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhQcm94eS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCmlu
ZGV4IGZkYjJlNDkuLjA1YWNiOWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQ
cm94eS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcApAQCAtNTQ3LDcg
KzU0Nyw3IEBAIFY4UHJveHkqIFY4UHJveHk6OnJldHJpZXZlKEZyYW1lKiBmcmFtZSkKIHsKICAg
ICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gZnJhbWUtPnNjcmlw
dCgpLT5pc0VuYWJsZWQoKSA/IGZyYW1lLT5zY3JpcHQoKS0+cHJveHkoKSA6IDA7CisgICAgcmV0
dXJuIGZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSA/IGZyYW1lLT5zY3JpcHQo
KS0+cHJveHkoKSA6IDA7CiB9CiAKIFY4UHJveHkqIFY4UHJveHk6OnJldHJpZXZlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TY3JpcHRF
bGVtZW50LmNwcCBiL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDgzZWQyYmIu
LjlhODBlMTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBT
Y3JpcHRFbGVtZW50RGF0YTo6ZXZhbHVhdGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYg
c291cmNlQ29kZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1f
ZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewotICAgICAgICBpZiAoIWZyYW1lLT5zY3Jp
cHQoKS0+aXNFbmFibGVkKCkpCisgICAgICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVj
dXRlU2NyaXB0cygpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fZXZhbHVhdGVk
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1hNTFRva2VuaXplckxpYnhtbDIuY3Bw
IGIvV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyTGlieG1sMi5jcHAKaW5kZXggYzBkNzZiOC4uMjFi
ZGZiMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyTGlieG1sMi5jcHAKKysr
IGIvV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyTGlieG1sMi5jcHAKQEAgLTc4Myw3ICs3ODMsNyBA
QCB2b2lkIFhNTFRva2VuaXplcjo6c3RhcnRFbGVtZW50TnMoY29uc3QgeG1sQ2hhciogeG1sTG9j
YWxOYW1lLCBjb25zdCB4bWxDaGFyKiB4bQogICAgIH0KIAogICAgIFNjcmlwdENvbnRyb2xsZXIq
IGpzUHJveHkgPSBtX2RvYy0+ZnJhbWUoKSA/IG1fZG9jLT5mcmFtZSgpLT5zY3JpcHQoKSA6IDA7
Ci0gICAgaWYgKGpzUHJveHkgJiYgbV9kb2MtPmZyYW1lKCktPnNjcmlwdCgpLT5pc0VuYWJsZWQo
KSkKKyAgICBpZiAoanNQcm94eSAmJiBtX2RvYy0+ZnJhbWUoKS0+c2NyaXB0KCktPmNhbkV4ZWN1
dGVTY3JpcHRzKCkpCiAgICAgICAgIGpzUHJveHktPnNldEV2ZW50SGFuZGxlckxpbmVOdW1iZXIo
bGluZU51bWJlcigpKTsKIAogICAgIGhhbmRsZUVsZW1lbnRBdHRyaWJ1dGVzKG5ld0VsZW1lbnQu
Z2V0KCksIGxpYnhtbEF0dHJpYnV0ZXMsIG5iX2F0dHJpYnV0ZXMsIGVjKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAppbmRleCBmZDgzNDYwLi42NWFhOTQzIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC0xMTUyLDcgKzExNTIsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNv
bnRyb2xzKCkgY29uc3QKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOwog
CiAgICAgLy8gYWx3YXlzIHNob3cgY29udHJvbHMgd2hlbiBzY3JpcHRpbmcgaXMgZGlzYWJsZWQK
LSAgICBpZiAoZnJhbWUgJiYgIWZyYW1lLT5zY3JpcHQoKS0+aXNFbmFibGVkKCkpCisgICAgaWYg
KGZyYW1lICYmICFmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShjb250cm9sc0F0dHIpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwIGIvV2ViQ29yZS9odG1s
L0hUTUxUb2tlbml6ZXIuY3BwCmluZGV4IGRkMGViMzEuLjlhMWZmZDAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRva2Vu
aXplci5jcHAKQEAgLTE1MDEsNyArMTUwMSw3IEBAIEhUTUxUb2tlbml6ZXI6OlN0YXRlIEhUTUxU
b2tlbml6ZXI6OnBhcnNlVGFnKFNlZ21lbnRlZFN0cmluZyYgc3JjLCBTdGF0ZSBzdGF0ZSkKICAg
ICAgICAgICAgICAgICBtX3NjcmlwdFRhZ1NyY0F0dHJWYWx1ZSA9IFN0cmluZygpOwogICAgICAg
ICAgICAgICAgIG1fc2NyaXB0VGFnQ2hhcnNldEF0dHJWYWx1ZSA9IFN0cmluZygpOwogICAgICAg
ICAgICAgICAgIGlmIChtX2N1cnJlbnRUb2tlbi5hdHRycyAmJiAhbV9mcmFnbWVudCkgewotICAg
ICAgICAgICAgICAgICAgICBpZiAobV9kb2MtPmZyYW1lKCkgJiYgbV9kb2MtPmZyYW1lKCktPnNj
cmlwdCgpLT5pc0VuYWJsZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobV9kb2MtPmZy
YW1lKCkgJiYgbV9kb2MtPmZyYW1lKCktPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cygpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGEgPSBtX2N1cnJlbnRUb2tlbi5hdHRycy0+
Z2V0QXR0cmlidXRlSXRlbShzcmNBdHRyKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9zY3JpcHRUYWdTcmNBdHRyVmFsdWUgPSBtX2RvYy0+Y29tcGxldGVVUkwoZGVwcmVjYXRlZFBh
cnNlVVJMKGEtPnZhbHVlKCkpKS5zdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAt
MTkxMSw3ICsxOTExLDcgQEAgdm9pZCBIVE1MVG9rZW5pemVyOjpmaW5pc2goKQogUGFzc1JlZlB0
cjxOb2RlPiBIVE1MVG9rZW5pemVyOjpwcm9jZXNzVG9rZW4oKQogewogICAgIFNjcmlwdENvbnRy
b2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSAoIW1fZnJhZ21lbnQgJiYgbV9kb2MtPmZyYW1lKCkp
ID8gbV9kb2MtPmZyYW1lKCktPnNjcmlwdCgpIDogMDsKLSAgICBpZiAoc2NyaXB0Q29udHJvbGxl
ciAmJiBzY3JpcHRDb250cm9sbGVyLT5pc0VuYWJsZWQoKSkKKyAgICBpZiAoc2NyaXB0Q29udHJv
bGxlciAmJiBzY3JpcHRDb250cm9sbGVyLT5jYW5FeGVjdXRlU2NyaXB0cygpKQogICAgICAgICAv
LyBGSVhNRTogV2h5IGlzbid0IHRoaXMgbV9jdXJyZW50U2NyaXB0VGFnU3RhcnRMaW5lTnVtYmVy
PyAgSSBzdXNwZWN0IHRoaXMgaXMgd3JvbmcuCiAgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPnNl
dEV2ZW50SGFuZGxlckxpbmVOdW1iZXIobV9jdXJyZW50VGFnU3RhcnRMaW5lTnVtYmVyICsgMSk7
IC8vIFNjcmlwdCBsaW5lIG51bWJlcnMgYXJlIDEgYmFzZWQuCiAgICAgaWYgKG1fZGVzdCA+IG1f
YnVmZmVyKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4
IDUwMThkZDEuLmM4NGE0MTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCkBAIC0yMjksNyArMjI5LDcgQEAgc3RhdGljIGJvb2wgY2FuUGFzc05vZGVUb0phdmFT
Y3JpcHQoTm9kZSogbm9kZSkKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOwotICAgIHJldHVy
biBmcmFtZSAmJiBmcmFtZS0+c2NyaXB0KCktPmlzRW5hYmxlZCgpOworICAgIHJldHVybiBmcmFt
ZSAmJiBmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKCk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdChOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggZTQ2MGFlOC4uYzA0MzUzYyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC00MjMsNyArNDIz
LDcgQEAgdm9pZCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQoRnJh
bWUqIGZyYW1lLCBib29sIHBhdXNlZCkKIHsKICAgICBBU1NFUlRfQVJHKGZyYW1lLCBmcmFtZSk7
CiAKLSAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS0+aXNFbmFibGVkKCkpCisgICAgaWYgKCFmcmFt
ZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGZyYW1lLT5zY3JpcHQoKS0+c2V0UGF1c2VkKHBhdXNlZCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
aW5kZXggZTQ1N2ZkOS4uODVkZTUzOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTQ1Miw3
ICsxNDUyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpCiBi
b29sIEZyYW1lTG9hZGVyOjppc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpCiB7CiAgICAgRnJhbWUq
IGZyYW1lID0gbV9mcmFtZS0+dHJlZSgpLT50b3AoKTsKLSAgICBpZiAoIWZyYW1lLT5zY3JpcHQo
KS0+aXNFbmFibGVkKCkpCisgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3Jp
cHRzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOyAvLyBJZiBKYXZhU2NyaXB0IGlzIGRpc2FibGVk
LCBhIHVzZXIgZ2VzdHVyZSBtdXN0IGhhdmUgaW5pdGlhdGVkIHRoZSBuYXZpZ2F0aW9uLgogICAg
IHJldHVybiBmcmFtZS0+c2NyaXB0KCktPnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOyAvLyBGSVhN
RTogVXNlIHBhZ2VJc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZS4KIH0KQEAgLTI2NTksNyArMjY1OSw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6Om9wZW4oQ2FjaGVkUGFnZSYgY2FjaGVkUGFnZSkKICAgICBj
bG9zZVVSTCgpOwogICAgIAogICAgIC8vIERlbGV0ZSBvbGQgc3RhdHVzIGJhciBtZXNzYWdlcyAo
aWYgaXQgX3dhc18gYWN0aXZhdGVkIG9uIGxhc3QgVVJMKS4KLSAgICBpZiAobV9mcmFtZS0+c2Ny
aXB0KCktPmlzRW5hYmxlZCgpKSB7CisgICAgaWYgKG1fZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVj
dXRlU2NyaXB0cygpKSB7CiAgICAgICAgIG1fZnJhbWUtPnNldEpTU3RhdHVzQmFyVGV4dChTdHJp
bmcoKSk7CiAgICAgICAgIG1fZnJhbWUtPnNldEpTRGVmYXVsdFN0YXR1c0JhclRleHQoU3RyaW5n
KCkpOwogICAgIH0KQEAgLTM4NzgsNyArMzg3OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3Bh
dGNoRG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlKCkKIAogdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0
Y2hEaWRDbGVhcldpbmRvd09iamVjdHNJbkFsbFdvcmxkcygpCiB7Ci0gICAgaWYgKCFtX2ZyYW1l
LT5zY3JpcHQoKS0+aXNFbmFibGVkKCkpCisgICAgaWYgKCFtX2ZyYW1lLT5zY3JpcHQoKS0+Y2Fu
RXhlY3V0ZVNjcmlwdHMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVmVjdG9yPERPTVdyYXBw
ZXJXb3JsZCo+IHdvcmxkczsKQEAgLTM4ODksNyArMzg4OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RzSW5BbGxXb3JsZHMoKQogCiB2b2lkIEZyYW1l
TG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29y
bGQqIHdvcmxkKQogewotICAgIGlmICghbV9mcmFtZS0+c2NyaXB0KCktPmlzRW5hYmxlZCgpIHx8
ICFtX2ZyYW1lLT5zY3JpcHQoKS0+ZXhpc3RpbmdXaW5kb3dTaGVsbCh3b3JsZCkpCisgICAgaWYg
KCFtX2ZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSB8fCAhbV9mcmFtZS0+c2Ny
aXB0KCktPmV4aXN0aW5nV2luZG93U2hlbGwod29ybGQpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQod29ybGQpOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggYzg1YTY0MS4uN2Q5YmZjYSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTAtMDEtMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTY3JpcHRDb250cm9s
bGVyOjppc0VuYWJsZWQgbmVlZHMgdG8gYmUgcmVuYW1lZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIwNjMKKworICAgICAgICBSZW5hbWUgU2NyaXB0
Q29udHJvbGxlcjo6aXNFbmFibGVkIHRvCisgICAgICAgIFNjcmlwdENvbnRyb2xsZXI6OmNhbkV4
ZWN1dGVTY3JpcHRzLgorCisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6YmluZFRvV2luZG93T2JqZWN0KToKKwogMjAxMC0wMS0w
OCAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCBjYjcw
MGNhLi4yOTNkN2VlIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1w
bC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC01OTcs
NyArNTk3LDcgQEAgTlBPYmplY3QqIFdlYkZyYW1lSW1wbDo6d2luZG93T2JqZWN0KCkgY29uc3QK
IHZvaWQgV2ViRnJhbWVJbXBsOjpiaW5kVG9XaW5kb3dPYmplY3QoY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBOUE9iamVjdCogb2JqZWN0KQogewogICAgIEFTU0VSVChtX2ZyYW1lKTsKLSAgICBpZiAo
IW1fZnJhbWUgfHwgIW1fZnJhbWUtPnNjcmlwdCgpLT5pc0VuYWJsZWQoKSkKKyAgICBpZiAoIW1f
ZnJhbWUgfHwgIW1fZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cygpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBTdHJpbmcga2V5ID0gbmFtZTsKZGlmZiAtLWdpdCBhL1dlYktpdC9t
YWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZDBlNGNmYi4uMDExNzQ1
YyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wMS0wOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNjcmlwdENvbnRyb2xsZXI6OmlzRW5hYmxlZCBuZWVkcyB0byBiZSByZW5hbWVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjA2MworCisgICAg
ICAgIFJlbmFtZSBTY3JpcHRDb250cm9sbGVyOjppc0VuYWJsZWQgdG8KKyAgICAgICAgU2NyaXB0
Q29udHJvbGxlcjo6Y2FuRXhlY3V0ZVNjcmlwdHMuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Z2V0V2luZG93TlBPYmplY3QpOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmRlbWFyc2hhbFZhbHVlRnJvbUFycmF5
KToKKwogMjAxMC0wMS0wNyAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1BsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1dlYktpdC9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IGMzZDk5YWUu
LjEyY2JjMWMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC02OTYsNyArNjk2LDcgQEAgYm9vbCBOZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmdldFdpbmRvd05QT2JqZWN0KHVpbnQzMl90JiBvYmpl
Y3RJRCkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAg
aWYgKCFmcmFtZS0+c2NyaXB0KCktPmlzRW5hYmxlZCgpKQorICAgIGlmICghZnJhbWUtPnNjcmlw
dCgpLT5jYW5FeGVjdXRlU2NyaXB0cygpKQogICAgICAgICBvYmplY3RJRCA9IDA7CiAgICAgZWxz
ZQogICAgICAgICBvYmplY3RJRCA9IGlkRm9yT2JqZWN0KGZyYW1lLT5zY3JpcHQoKS0+d2luZG93
U2hlbGwocGx1Z2luV29ybGQoKSktPndpbmRvdygpKTsKQEAgLTEyMDEsNyArMTIwMSw3IEBAIGJv
b2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpkZW1hcnNoYWxWYWx1ZUZyb21BcnJheShF
eGVjU3RhdGUqIGV4ZWMsIE5TQXJyCiAgICAgICAgICAgICBpZiAoIWZyYW1lKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCFmcmFt
ZS0+c2NyaXB0KCktPmlzRW5hYmxlZCgpKQorICAgICAgICAgICAgaWYgKCFmcmFtZS0+c2NyaXB0
KCktPmNhbkV4ZWN1dGVTY3JpcHRzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgICAgICAgICBSZWZQdHI8Um9vdE9iamVjdD4gcm9vdE9iamVjdCA9IGZyYW1lLT5zY3Jp
cHQoKS0+Y3JlYXRlUm9vdE9iamVjdChtX3BsdWdpblZpZXcpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0
L3d4L0NoYW5nZUxvZyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggMGNlODE1My4uMDcwYzA0
ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L0NoYW5nZUxvZworKysgYi9XZWJLaXQvd3gvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDEtMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTY3JpcHRDb250cm9sbGVyOjppc0VuYWJsZWQgbmVlZHMgdG8gYmUgcmVuYW1lZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIwNjMKKworICAgICAg
ICBSZW5hbWUgU2NyaXB0Q29udHJvbGxlcjo6aXNFbmFibGVkIHRvCisgICAgICAgIFNjcmlwdENv
bnRyb2xsZXI6OmNhbkV4ZWN1dGVTY3JpcHRzLgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgor
ICAgICAgICAod3hXZWJGcmFtZTo6UnVuU2NyaXB0KToKKwogMjAwOS0xMi0zMCAgS2V2aW4gV2F0
dGVycyAgPGtldmlud2F0dGVyc0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2V2
aW4gT2xsaXZpZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwIGIvV2ViS2l0
L3d4L1dlYkZyYW1lLmNwcAppbmRleCBkOWJiMjIzLi44ZTU4ZThkIDEwMDY0NAotLS0gYS9XZWJL
aXQvd3gvV2ViRnJhbWUuY3BwCisrKyBiL1dlYktpdC93eC9XZWJGcmFtZS5jcHAKQEAgLTE5NCw3
ICsxOTQsNyBAQCB3eFN0cmluZyB3eFdlYkZyYW1lOjpSdW5TY3JpcHQoY29uc3Qgd3hTdHJpbmcm
IGphdmFzY3JpcHQpCiAgICAgICAgIHd4QVNTRVJUX01TRyhoYXNMb2FkZWQsIHd4VCgiRG9jdW1l
bnQgbXVzdCBiZSBsb2FkZWQgYmVmb3JlIGNhbGxpbmcgUnVuU2NyaXB0LiIpKTsKICAgICAgICAg
aWYgKGhhc0xvYWRlZCkgewogICAgICAgICAgICAgV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlciog
Y29udHJvbGxlciA9IG1faW1wbC0+ZnJhbWUtPnNjcmlwdCgpOwotICAgICAgICAgICAgYm9vbCBq
c0VuYWJsZWQgPSBjb250cm9sbGVyLT5pc0VuYWJsZWQoKTsgCisgICAgICAgICAgICBib29sIGpz
RW5hYmxlZCA9IGNvbnRyb2xsZXItPmNhbkV4ZWN1dGVTY3JpcHRzKCk7IAogICAgICAgICAgICAg
d3hBU1NFUlRfTVNHKGpzRW5hYmxlZCwgd3hUKCJSdW5TY3JpcHQgcmVxdWlyZXMgSmF2YVNjcmlw
dCB0byBiZSBlbmFibGVkLiIpKTsKICAgICAgICAgICAgIGlmIChqc0VuYWJsZWQpIHsKICAgICAg
ICAgICAgICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gY29udHJvbGxlci0+ZXhlY3V0ZVNjcmlw
dChqYXZhc2NyaXB0LCB0cnVlKS5qc1ZhbHVlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46227</attachid>
            <date>2010-01-09 16:30:41 -0800</date>
            <delta_ts>2010-01-09 18:36:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32063-20100109163039.patch</filename>
            <type>text/plain</type>
            <size>25761</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGE0Y2NkYS4uMTBmODAzZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NCBAQAorMjAxMC0wMS0wOSAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNjcmlwdENvbnRyb2xsZXI6OmlzRW5hYmxlZCBuZWVkcyB0byBiZSByZW5h
bWVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjA2
MworCisgICAgICAgIFJlbmFtZSBTY3JpcHRDb250cm9sbGVyOjppc0VuYWJsZWQgdG8KKyAgICAg
ICAgU2NyaXB0Q29udHJvbGxlcjo6Y2FuRXhlY3V0ZVNjcmlwdHMgdG8gcmVmbGVjdCB3aGF0IHRo
ZSBtZXRob2QgYWN0dWFsbHkKKyAgICAgICAgbWVhbnMuICBUaGlzIGlzIGEgdHJpdmlhbCBjaGFu
Z2UsIGJ1dCBpdCBpbnZvbHZlZCB0b3VjaGluZyBhIGxvdCBvZgorICAgICAgICBjYWxsIHNpdGVz
LgorCisgICAgICAgICogV2ViQ29yZS5QbHVnaW5Ib3N0UHJvY2Vzcy5leHA6CisgICAgICAgICog
YmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q29udHJvbGxlcjo6Y2FuRXhlY3V0ZVNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNF
dmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFu
ZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNMYXp5RXZlbnRMaXN0ZW5lcjo6cGFyc2VDb2RlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmJp
bmRpbmdSb290T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6Ondp
bmRvd1NjcmlwdE5QT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6
OmpzT2JqZWN0Rm9yUGx1Z2luRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250
cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjp3aW5kb3dTY3JpcHRP
YmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NyaXB0
U3RhdGVGcm9tTm9kZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjp3aW5kb3dTY3JpcHROUE9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRP
YmplY3RGb3JQbHVnaW5FbGVtZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250
cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6
OnJldHJpZXZlKToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRFbGVtZW50RGF0YTo6ZXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAqIGRv
bS9YTUxUb2tlbml6ZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXpl
cjo6c3RhcnRFbGVtZW50TnMpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpjb250cm9scyk6CisgICAgICAg
ICogaHRtbC9IVE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6
ZXI6OnBhcnNlVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6OnByb2Nlc3NU
b2tlbik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y2FuUGFzc05vZGVUb0phdmFTY3JpcHQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNj
cmlwdERlYnVnU2VydmVyOjpzZXRKYXZhU2NyaXB0UGF1c2VkKToKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmlzUHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpvcGVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93T2Jq
ZWN0c0luQWxsV29ybGRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRj
aERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6CisKIDIwMTAtMDEtMDkgIEV2YW4gTWFydGlu
ICA8ZXZhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuUGx1Z2luSG9zdFByb2Nlc3MuZXhwIGIvV2Vi
Q29yZS9XZWJDb3JlLlBsdWdpbkhvc3RQcm9jZXNzLmV4cAppbmRleCBjY2U5NTFmLi40Yjc4OTY2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuUGx1Z2luSG9zdFByb2Nlc3MuZXhwCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS5QbHVnaW5Ib3N0UHJvY2Vzcy5leHAKQEAgLTksNyArOSw3IEBAIF9f
Wk43V2ViQ29yZTEzSWRlbnRpZmllclJlcDNnZXRFaQogX19aTjdXZWJDb3JlMTNJZGVudGlmaWVy
UmVwM2dldEVQS2MKIF9fWk43V2ViQ29yZTEzSWRlbnRpZmllclJlcDdpc1ZhbGlkRVBTMF8KIF9f
Wk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjE2Y3JlYXRlUm9vdE9iamVjdEVQdgorX19aTjdX
ZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMTdjYW5FeGVjdXRlU2NyaXB0c0V2CiBfX1pON1dlYkNv
cmUxNlNjcmlwdENvbnRyb2xsZXIyNGpzT2JqZWN0Rm9yUGx1Z2luRWxlbWVudEVQTlNfMTdIVE1M
UGx1Z0luRWxlbWVudEUKLV9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjlpc0VuYWJsZWRF
dgogX19aTjdXZWJDb3JlNlN0cmluZzI2ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2tFUEtjbQog
X19aTjdXZWJDb3JlNlN0cmluZzhmcm9tVVRGOEVQS2NtCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvU2NyaXB0
Q29udHJvbGxlckJhc2UuY3BwCmluZGV4IDcyYzlmNDUuLmYxMjE3ZTMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgogCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJG
cmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRT
b3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKQEAgLTMwLDYgKzMxLDE1IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorYm9vbCBTY3JpcHRDb250cm9sbGVyOjpjYW5FeGVj
dXRlU2NyaXB0cygpCit7CisgICAgaWYgKG1fZnJhbWUtPmxvYWRlcigpLT5pc1NhbmRib3hlZChT
YW5kYm94U2NyaXB0cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFNldHRpbmdzKiBz
ZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7CisgICAgcmV0dXJuIG1fZnJhbWUtPmxvYWRl
cigpLT5jbGllbnQoKS0+YWxsb3dKYXZhU2NyaXB0KHNldHRpbmdzICYmIHNldHRpbmdzLT5pc0ph
dmFTY3JpcHRFbmFibGVkKCkpOworfQorCiBTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpl
eGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUp
CiB7CiAgICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQsIGZv
cmNlVXNlckdlc3R1cmUgPyBLVVJMKCkgOiBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkpKTsKQEAg
LTM3LDcgKzQ3LDcgQEAgU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlw
dChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXIKIAogU2NyaXB0VmFsdWUgU2Ny
aXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3Vy
Y2VDb2RlKQogewotICAgIGlmICghaXNFbmFibGVkKCkgfHwgaXNQYXVzZWQoKSkKKyAgICBpZiAo
IWNhbkV4ZWN1dGVTY3JpcHRzKCkgfHwgaXNQYXVzZWQoKSkKICAgICAgICAgcmV0dXJuIFNjcmlw
dFZhbHVlKCk7CiAKICAgICBib29sIHdhc0luRXhlY3V0ZVNjcmlwdCA9IG1faW5FeGVjdXRlU2Ny
aXB0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3Bw
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDczMDYwZjEu
LmQzYjVmZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKQEAgLTgx
LDcgKzgxLDcgQEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgY2hlY2sgbmVlZGVkIGZvciBvdGhlciBjb250ZXh0
cz8KICAgICAgICAgU2NyaXB0Q29udHJvbGxlciogc2NyaXB0ID0gZnJhbWUtPnNjcmlwdCgpOwot
ICAgICAgICBpZiAoIXNjcmlwdC0+aXNFbmFibGVkKCkgfHwgc2NyaXB0LT5pc1BhdXNlZCgpKQor
ICAgICAgICBpZiAoIXNjcmlwdC0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSB8fCBzY3JpcHQtPmlzUGF1
c2VkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAppbmRleCA2ZDc1ZjRmLi5iNzA3OTkxIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTg5LDcgKzg5LDcg
QEAgdm9pZCBKU0xhenlFdmVudExpc3RlbmVyOjpwYXJzZUNvZGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogZXhlY3V0aW9uQ29udGV4dCkgY28KICAgICAgICAgcmV0dXJuOwogCiAgICAgU2NyaXB0
Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlciA9IGZyYW1lLT5zY3JpcHQoKTsKLSAgICBpZiAo
IXNjcmlwdENvbnRyb2xsZXItPmlzRW5hYmxlZCgpKQorICAgIGlmICghc2NyaXB0Q29udHJvbGxl
ci0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoZXhlY3V0aW9uQ29u
dGV4dCwgbV9pc29sYXRlZFdvcmxkLmdldCgpKTsKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIEpT
TGF6eUV2ZW50TGlzdGVuZXI6OnBhcnNlQ29kZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBleGVj
dXRpb25Db250ZXh0KSBjbwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAvLyBGSVhNRTog
SXMgdGhpcyBjaGVjayBuZWVkZWQgZm9yIG5vbi1Eb2N1bWVudCBjb250ZXh0cz8KICAgICAgICAg
U2NyaXB0Q29udHJvbGxlciogc2NyaXB0ID0gZnJhbWUtPnNjcmlwdCgpOwotICAgICAgICBpZiAo
IXNjcmlwdC0+aXNFbmFibGVkKCkgfHwgc2NyaXB0LT5pc1BhdXNlZCgpKQorICAgICAgICBpZiAo
IXNjcmlwdC0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSB8fCBzY3JpcHQtPmlzUGF1c2VkKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlv
bi5jcHAKaW5kZXggMzIyM2U1My4uYmU5MDEyNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1
bGVkQWN0aW9uLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpl
eGVjdXRlKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRy
PEZyYW1lPiBmcmFtZSA9IHdpbmRvdy0+aW1wbCgpLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUg
fHwgIWZyYW1lLT5zY3JpcHQoKS0+aXNFbmFibGVkKCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJh
bWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cygpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBmcmFtZS0+c2NyaXB0KCktPnNldFByb2Nlc3NpbmdUaW1lckNhbGxiYWNrKHRydWUpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggM2M0NDBkYi4uNjY3M2Vh
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0yODYsMTIg
KzI4Niw2IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6YW55UGFnZUlzUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU2NyaXB0Q29udHJv
bGxlcjo6aXNFbmFibGVkKCkKLXsKLSAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5z
ZXR0aW5ncygpOwotICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmFsbG93
SmF2YVNjcmlwdChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+aXNKYXZhU2NyaXB0RW5hYmxlZCgpICYm
ICFtX2ZyYW1lLT5sb2FkZXIoKS0+aXNTYW5kYm94ZWQoU2FuZGJveFNjcmlwdHMpKTsKLX0KLQog
dm9pZCBTY3JpcHRDb250cm9sbGVyOjphdHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1
Z2dlcikKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIGJlIGFibGUgdG8gZGVidWcgaXNvbGF0ZWQg
d29ybGRzLgpAQCAtMzIzLDcgKzMxNyw3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6dXBkYXRl
U2VjdXJpdHlPcmlnaW4oKQogCiBCaW5kaW5nczo6Um9vdE9iamVjdCogU2NyaXB0Q29udHJvbGxl
cjo6YmluZGluZ1Jvb3RPYmplY3QoKQogewotICAgIGlmICghaXNFbmFibGVkKCkpCisgICAgaWYg
KCFjYW5FeGVjdXRlU2NyaXB0cygpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmICghbV9i
aW5kaW5nUm9vdE9iamVjdCkgewpAQCAtMzUwLDcgKzM0NCw3IEBAIFBhc3NSZWZQdHI8QmluZGlu
Z3M6OlJvb3RPYmplY3Q+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVJvb3RPYmplY3Qodm9pZCog
bmF0aXZlCiBOUE9iamVjdCogU2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0TlBPYmplY3Qo
KQogewogICAgIGlmICghbV93aW5kb3dTY3JpcHROUE9iamVjdCkgewotICAgICAgICBpZiAoaXNF
bmFibGVkKCkpIHsKKyAgICAgICAgaWYgKGNhbkV4ZWN1dGVTY3JpcHRzKCkpIHsKICAgICAgICAg
ICAgIC8vIEphdmFTY3JpcHQgaXMgZW5hYmxlZCwgc28gdGhlcmUgaXMgYSBKYXZhU2NyaXB0IHdp
bmRvdyBvYmplY3QuCiAgICAgICAgICAgICAvLyBSZXR1cm4gYW4gTlBPYmplY3QgYm91bmQgdG8g
dGhlIHdpbmRvdyBvYmplY3QuCiAgICAgICAgICAgICBKU0M6OkpTTG9jayBsb2NrKFNpbGVuY2VB
c3NlcnRpb25zT25seSk7CkBAIC0zODMsNyArMzc3LDcgQEAgTlBPYmplY3QqIFNjcmlwdENvbnRy
b2xsZXI6OmNyZWF0ZVNjcmlwdE9iamVjdEZvclBsdWdpbkVsZW1lbnQoSFRNTFBsdWdJbkVsZW1l
bnQKIEpTT2JqZWN0KiBTY3JpcHRDb250cm9sbGVyOjpqc09iamVjdEZvclBsdWdpbkVsZW1lbnQo
SFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdpbikKIHsKICAgICAvLyBDYW4ndCBjcmVhdGUgSlNPYmpl
Y3RzIHdoZW4gSmF2YVNjcmlwdCBpcyBkaXNhYmxlZAotICAgIGlmICghaXNFbmFibGVkKCkpCisg
ICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cygpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8v
IENyZWF0ZSBhIEpTT2JqZWN0IGJvdW5kIHRvIHRoaXMgZWxlbWVudApAQCAtNDUwLDcgKzQ0NCw3
IEBAIFNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERP
TVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0CiB7CiAgICAgU2NyaXB0U291cmNlQ29kZSBzb3Vy
Y2VDb2RlKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSA/IEtVUkwoKSA6IG1fZnJhbWUtPmxvYWRl
cigpLT51cmwoKSk7CiAKLSAgICBpZiAoIWlzRW5hYmxlZCgpIHx8IGlzUGF1c2VkKCkpCisgICAg
aWYgKCFjYW5FeGVjdXRlU2NyaXB0cygpIHx8IGlzUGF1c2VkKCkpCiAgICAgICAgIHJldHVybiBT
Y3JpcHRWYWx1ZSgpOwogCiAgICAgYm9vbCB3YXNJbkV4ZWN1dGVTY3JpcHQgPSBtX2luRXhlY3V0
ZVNjcmlwdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggODgwMTYy
Mi4uMzVlYzAyOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTEx
MCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSBj
b25zdDsKICAgICBib29sIGFueVBhZ2VJc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpIGNvbnN0Owog
Ci0gICAgYm9vbCBpc0VuYWJsZWQoKTsKKyAgICBib29sIGNhbkV4ZWN1dGVTY3JpcHRzKCk7CiAK
ICAgICB2b2lkIGF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKTsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCmluZGV4IDIxZWMwZjIuLjk4ZDMwMmUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbQorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTEwOCw3ICsx
MDgsNyBAQCBQYXNzU2NyaXB0SW5zdGFuY2UgU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlU2NyaXB0
SW5zdGFuY2VGb3JXaWRnZXQoV2lkZ2V0KiB3aWRnZQogCiBXZWJTY3JpcHRPYmplY3QqIFNjcmlw
dENvbnRyb2xsZXI6OndpbmRvd1NjcmlwdE9iamVjdCgpCiB7Ci0gICAgaWYgKCFpc0VuYWJsZWQo
KSkKKyAgICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgaWYgKCFtX3dpbmRvd1NjcmlwdE9iamVjdCkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggODM5OWM3YS4uYjlkYzAwZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFBh
c3NSZWZQdHI8SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihOb2RlKiBub2RlLCBBdHRyaWJ1CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRv
IHByb3ZpZGUgYWNjdXJhdGUgc291cmNlIGluZm9ybWF0aW9uIGZvciBmcmFtZWxlc3MgZG9jdW1l
bnRzLCB0b28gKGUuZy4gZm9yIGltcG9ydGluZyBub2RlcyBmcm9tIFhNTEh0dHBSZXF1ZXN0LnJl
c3BvbnNlWE1MKS4KICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJh
bWUoKSkgewogICAgICAgICBTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gZnJh
bWUtPnNjcmlwdCgpOwotICAgICAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXItPmlzRW5hYmxlZCgp
KQorICAgICAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXItPmNhbkV4ZWN1dGVTY3JpcHRzKCkpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXItPnhz
c0F1ZGl0b3IoKS0+Y2FuQ3JlYXRlSW5saW5lRXZlbnRMaXN0ZW5lcihhdHRyLT5sb2NhbE5hbWUo
KS5zdHJpbmcoKSwgYXR0ci0+dmFsdWUoKSkpIHsKQEAgLTgzLDcgKzgzLDcgQEAgUGFzc1JlZlB0
cjxKU0xhenlFdmVudExpc3RlbmVyPiBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKEZyYW1l
KiBmcmFtZSwgQXR0cmkKICAgICBTdHJpbmcgc291cmNlVVJMOwogICAgIAogICAgIFNjcmlwdENv
bnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7Ci0gICAgaWYgKCFz
Y3JpcHRDb250cm9sbGVyLT5pc0VuYWJsZWQoKSkKKyAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXIt
PmNhbkV4ZWN1dGVTY3JpcHRzKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFzY3Jp
cHRDb250cm9sbGVyLT54c3NBdWRpdG9yKCktPmNhbkNyZWF0ZUlubGluZUV2ZW50TGlzdGVuZXIo
YXR0ci0+bG9jYWxOYW1lKCkuc3RyaW5nKCksIGF0dHItPnZhbHVlKCkpKSB7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U3RhdGUuY3BwCmluZGV4IGI5Zjc4ZWYuLjdhNzYwYWUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U3RhdGUuY3BwCkBAIC00OCw3ICs0OCw3IEBAIFNjcmlwdFN0YXRlKiBzY3JpcHRT
dGF0ZUZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIE5vZGUqIG5vZGUpCiAgICAgRnJh
bWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgaWYgKCFmcmFtZS0+c2NyaXB0KCktPmlzRW5hYmxlZCgpKQorICAgIGlm
ICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cygpKQogICAgICAgICByZXR1cm4g
MDsKICAgICByZXR1cm4gZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3Qod29ybGQpLT5nbG9i
YWxFeGVjKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRy
b2xsZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRl
eCAzMjk4Y2FkLi44ZjM2N2MwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxl
ci5jcHAKQEAgLTI5NCwxMiArMjk0LDYgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVyOjpoYXZlSW50
ZXJwcmV0ZXIoKSBjb25zdAogICAgIHJldHVybiBtX3Byb3h5LT53aW5kb3dTaGVsbCgpLT5pc0Nv
bnRleHRJbml0aWFsaXplZCgpOwogfQogCi1ib29sIFNjcmlwdENvbnRyb2xsZXI6OmlzRW5hYmxl
ZCgpIGNvbnN0Ci17Ci0gICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9wcm94eS0+ZnJhbWUoKS0+
c2V0dGluZ3MoKTsKLSAgICByZXR1cm4gbV9wcm94eS0+ZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVu
dCgpLT5hbGxvd0phdmFTY3JpcHQoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmlzSmF2YVNjcmlwdEVu
YWJsZWQoKSAmJiAhbV9mcmFtZS0+bG9hZGVyKCktPmlzU2FuZGJveGVkKFNhbmRib3hTY3JpcHRz
KSk7Ci19Ci0KIFBhc3NTY3JpcHRJbnN0YW5jZSBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3Jp
cHRJbnN0YW5jZUZvcldpZGdldChXaWRnZXQqIHdpZGdldCkKIHsKICAgICBBU1NFUlQod2lkZ2V0
KTsKQEAgLTQwMSw3ICszOTUsNyBAQCBOUE9iamVjdCogU2NyaXB0Q29udHJvbGxlcjo6d2luZG93
U2NyaXB0TlBPYmplY3QoKQogICAgIGlmIChtX3dpbmRvd1NjcmlwdE5QT2JqZWN0KQogICAgICAg
ICByZXR1cm4gbV93aW5kb3dTY3JpcHROUE9iamVjdDsKIAotICAgIGlmIChpc0VuYWJsZWQoKSkg
eworICAgIGlmIChjYW5FeGVjdXRlU2NyaXB0cygpKSB7CiAgICAgICAgIC8vIEphdmFTY3JpcHQg
aXMgZW5hYmxlZCwgc28gdGhlcmUgaXMgYSBKYXZhU2NyaXB0IHdpbmRvdyBvYmplY3QuCiAgICAg
ICAgIC8vIFJldHVybiBhbiBOUE9iamVjdCBib3VuZCB0byB0aGUgd2luZG93IG9iamVjdC4KICAg
ICAgICAgbV93aW5kb3dTY3JpcHROUE9iamVjdCA9IGNyZWF0ZVNjcmlwdE9iamVjdChtX2ZyYW1l
KTsKQEAgLTQxOCw3ICs0MTIsNyBAQCBOUE9iamVjdCogU2NyaXB0Q29udHJvbGxlcjo6d2luZG93
U2NyaXB0TlBPYmplY3QoKQogTlBPYmplY3QqIFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlw
dE9iamVjdEZvclBsdWdpbkVsZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdpbikKIHsKICAg
ICAvLyBDYW4ndCBjcmVhdGUgTlBPYmplY3RzIHdoZW4gSmF2YVNjcmlwdCBpcyBkaXNhYmxlZC4K
LSAgICBpZiAoIWlzRW5hYmxlZCgpKQorICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoKSkKICAg
ICAgICAgcmV0dXJuIGNyZWF0ZU5vU2NyaXB0T2JqZWN0KCk7CiAKICAgICB2ODo6SGFuZGxlU2Nv
cGUgaGFuZGxlU2NvcGU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENv
bnRyb2xsZXIuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4
IDliYTdkMzguLjVhOTEwNWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
Q29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5o
CkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgIC8vIENoZWNrIGlmIHRoZSBqYXZhc2Ny
aXB0IGVuZ2luZSBoYXMgYmVlbiBpbml0aWFsaXplZC4KICAgICBib29sIGhhdmVJbnRlcnByZXRl
cigpIGNvbnN0OwogCi0gICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdDsKKyAgICBib29sIGNhbkV4
ZWN1dGVTY3JpcHRzKCk7CiAKICAgICAvLyBGSVhNRTogdm9pZCogaXMgYSBjb21waWxlIGhhY2su
CiAgICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcih2b2lkKik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRFdmVudExpc3RlbmVyLmNwcAppbmRleCA1MWQ1M2FiLi5jZjJhMWVlIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAg
UGFzc1JlZlB0cjxWOExhenlFdmVudExpc3RlbmVyPiBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKE5vZGUqIG5vZGUsIEF0dHJpYnUKIAogICAgIGlmIChGcmFtZSogZnJhbWUgPSBub2RlLT5k
b2N1bWVudCgpLT5mcmFtZSgpKSB7CiAgICAgICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENv
bnRyb2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7Ci0gICAgICAgIGlmICghc2NyaXB0Q29udHJvbGxl
ci0+aXNFbmFibGVkKCkpCisgICAgICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+Y2FuRXhlY3V0
ZVNjcmlwdHMoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIGlmICghc2NyaXB0
Q29udHJvbGxlci0+eHNzQXVkaXRvcigpLT5jYW5DcmVhdGVJbmxpbmVFdmVudExpc3RlbmVyKGF0
dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBhdHRyLT52YWx1ZSgpKSkgewpAQCAtODEsNyArODEs
NyBAQCBQYXNzUmVmUHRyPFY4TGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoRnJhbWUqIGZyYW1lLCBBdHRyaQogICAgIFN0cmluZyBzb3VyY2VVUkw7CiAKICAg
ICBTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gZnJhbWUtPnNjcmlwdCgpOwot
ICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+aXNFbmFibGVkKCkpCisgICAgaWYgKCFzY3JpcHRD
b250cm9sbGVyLT5jYW5FeGVjdXRlU2NyaXB0cygpKQogICAgICAgICByZXR1cm4gMDsKIAogICAg
IGlmICghc2NyaXB0Q29udHJvbGxlci0+eHNzQXVkaXRvcigpLT5jYW5DcmVhdGVJbmxpbmVFdmVu
dExpc3RlbmVyKGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBhdHRyLT52YWx1ZSgpKSkgewpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhQcm94eS5jcHAKaW5kZXggZmRiMmU0OS4uMDVhY2I5ZCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UHJveHkuY3BwCkBAIC01NDcsNyArNTQ3LDcgQEAgVjhQcm94eSogVjhQcm94eTo6cmV0cmll
dmUoRnJhbWUqIGZyYW1lKQogewogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwot
ICAgIHJldHVybiBmcmFtZS0+c2NyaXB0KCktPmlzRW5hYmxlZCgpID8gZnJhbWUtPnNjcmlwdCgp
LT5wcm94eSgpIDogMDsKKyAgICByZXR1cm4gZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2Ny
aXB0cygpID8gZnJhbWUtPnNjcmlwdCgpLT5wcm94eSgpIDogMDsKIH0KIAogVjhQcm94eSogVjhQ
cm94eTo6cmV0cmlldmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vU2NyaXB0RWxl
bWVudC5jcHAKaW5kZXggODNlZDJiYi4uOWE4MGUxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
U2NyaXB0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKQEAg
LTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFNjcmlwdEVsZW1lbnREYXRhOjpldmFsdWF0ZVNjcmlwdChj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoRnJhbWUqIGZyYW1lID0gbV9lbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpKSB7Ci0g
ICAgICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLT5pc0VuYWJsZWQoKSkKKyAgICAgICAgaWYgKCFm
cmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgbV9ldmFsdWF0ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
WE1MVG9rZW5pemVyTGlieG1sMi5jcHAgYi9XZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXJMaWJ4bWwy
LmNwcAppbmRleCBjMGQ3NmI4Li4yMWJkZmIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9YTUxU
b2tlbml6ZXJMaWJ4bWwyLmNwcAorKysgYi9XZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXJMaWJ4bWwy
LmNwcApAQCAtNzgzLDcgKzc4Myw3IEBAIHZvaWQgWE1MVG9rZW5pemVyOjpzdGFydEVsZW1lbnRO
cyhjb25zdCB4bWxDaGFyKiB4bWxMb2NhbE5hbWUsIGNvbnN0IHhtbENoYXIqIHhtCiAgICAgfQog
CiAgICAgU2NyaXB0Q29udHJvbGxlcioganNQcm94eSA9IG1fZG9jLT5mcmFtZSgpID8gbV9kb2Mt
PmZyYW1lKCktPnNjcmlwdCgpIDogMDsKLSAgICBpZiAoanNQcm94eSAmJiBtX2RvYy0+ZnJhbWUo
KS0+c2NyaXB0KCktPmlzRW5hYmxlZCgpKQorICAgIGlmIChqc1Byb3h5ICYmIG1fZG9jLT5mcmFt
ZSgpLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSkKICAgICAgICAganNQcm94eS0+c2V0
RXZlbnRIYW5kbGVyTGluZU51bWJlcihsaW5lTnVtYmVyKCkpOwogCiAgICAgaGFuZGxlRWxlbWVu
dEF0dHJpYnV0ZXMobmV3RWxlbWVudC5nZXQoKSwgbGlieG1sQXR0cmlidXRlcywgbmJfYXR0cmli
dXRlcywgZWMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
IGIvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGZkODM0NjAuLjY1YWE5
NDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTExNTIsNyArMTE1Miw3IEBAIGJv
b2wgSFRNTE1lZGlhRWxlbWVudDo6Y29udHJvbHMoKSBjb25zdAogICAgIEZyYW1lKiBmcmFtZSA9
IGRvY3VtZW50KCktPmZyYW1lKCk7CiAKICAgICAvLyBhbHdheXMgc2hvdyBjb250cm9scyB3aGVu
IHNjcmlwdGluZyBpcyBkaXNhYmxlZAotICAgIGlmIChmcmFtZSAmJiAhZnJhbWUtPnNjcmlwdCgp
LT5pc0VuYWJsZWQoKSkKKyAgICBpZiAoZnJhbWUgJiYgIWZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhl
Y3V0ZVNjcmlwdHMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gaGFzQXR0
cmlidXRlKGNvbnRyb2xzQXR0cik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRva2Vu
aXplci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAKaW5kZXggZGQwZWIzMS4u
OWExZmZkMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcApAQCAtMTUwMSw3ICsxNTAxLDcgQEAgSFRN
TFRva2VuaXplcjo6U3RhdGUgSFRNTFRva2VuaXplcjo6cGFyc2VUYWcoU2VnbWVudGVkU3RyaW5n
JiBzcmMsIFN0YXRlIHN0YXRlKQogICAgICAgICAgICAgICAgIG1fc2NyaXB0VGFnU3JjQXR0clZh
bHVlID0gU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgbV9zY3JpcHRUYWdDaGFyc2V0QXR0clZh
bHVlID0gU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudFRva2VuLmF0dHJz
ICYmICFtX2ZyYWdtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX2RvYy0+ZnJhbWUo
KSAmJiBtX2RvYy0+ZnJhbWUoKS0+c2NyaXB0KCktPmlzRW5hYmxlZCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChtX2RvYy0+ZnJhbWUoKSAmJiBtX2RvYy0+ZnJhbWUoKS0+c2NyaXB0KCkt
PmNhbkV4ZWN1dGVTY3JpcHRzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYSA9
IG1fY3VycmVudFRva2VuLmF0dHJzLT5nZXRBdHRyaWJ1dGVJdGVtKHNyY0F0dHIpKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX3NjcmlwdFRhZ1NyY0F0dHJWYWx1ZSA9IG1fZG9jLT5j
b21wbGV0ZVVSTChkZXByZWNhdGVkUGFyc2VVUkwoYS0+dmFsdWUoKSkpLnN0cmluZygpOwogICAg
ICAgICAgICAgICAgICAgICB9CkBAIC0xOTExLDcgKzE5MTEsNyBAQCB2b2lkIEhUTUxUb2tlbml6
ZXI6OmZpbmlzaCgpCiBQYXNzUmVmUHRyPE5vZGU+IEhUTUxUb2tlbml6ZXI6OnByb2Nlc3NUb2tl
bigpCiB7CiAgICAgU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlciA9ICghbV9mcmFn
bWVudCAmJiBtX2RvYy0+ZnJhbWUoKSkgPyBtX2RvYy0+ZnJhbWUoKS0+c2NyaXB0KCkgOiAwOwot
ICAgIGlmIChzY3JpcHRDb250cm9sbGVyICYmIHNjcmlwdENvbnRyb2xsZXItPmlzRW5hYmxlZCgp
KQorICAgIGlmIChzY3JpcHRDb250cm9sbGVyICYmIHNjcmlwdENvbnRyb2xsZXItPmNhbkV4ZWN1
dGVTY3JpcHRzKCkpCiAgICAgICAgIC8vIEZJWE1FOiBXaHkgaXNuJ3QgdGhpcyBtX2N1cnJlbnRT
Y3JpcHRUYWdTdGFydExpbmVOdW1iZXI/ICBJIHN1c3BlY3QgdGhpcyBpcyB3cm9uZy4KICAgICAg
ICAgc2NyaXB0Q29udHJvbGxlci0+c2V0RXZlbnRIYW5kbGVyTGluZU51bWJlcihtX2N1cnJlbnRU
YWdTdGFydExpbmVOdW1iZXIgKyAxKTsgLy8gU2NyaXB0IGxpbmUgbnVtYmVycyBhcmUgMSBiYXNl
ZC4KICAgICBpZiAobV9kZXN0ID4gbV9idWZmZXIpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKaW5kZXggNTAxOGRkMS4uYzg0YTQxNSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTIyOSw3ICsyMjksNyBAQCBzdGF0aWMg
Ym9vbCBjYW5QYXNzTm9kZVRvSmF2YVNjcmlwdChOb2RlKiBub2RlKQogICAgIGlmICghbm9kZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEZyYW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50
KCktPmZyYW1lKCk7Ci0gICAgcmV0dXJuIGZyYW1lICYmIGZyYW1lLT5zY3JpcHQoKS0+aXNFbmFi
bGVkKCk7CisgICAgcmV0dXJuIGZyYW1lICYmIGZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNj
cmlwdHMoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0KE5vZGUqIG5v
ZGUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBl
NDYwYWU4Li5jMDQzNTNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKQEAgLTQyMyw3ICs0MjMsNyBAQCB2b2lkIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6
c2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZSogZnJhbWUsIGJvb2wgcGF1c2VkKQogewogICAgIEFT
U0VSVF9BUkcoZnJhbWUsIGZyYW1lKTsKIAotICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLT5pc0Vu
YWJsZWQoKSkKKyAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgZnJhbWUtPnNjcmlwdCgpLT5zZXRQYXVzZWQocGF1c2Vk
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBlNDU3ZmQ5Li44NWRlNTM4IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCkBAIC0xNDUyLDcgKzE0NTIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpwcm92
aXNpb25hbExvYWRTdGFydGVkKCkKIGJvb2wgRnJhbWVMb2FkZXI6OmlzUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX2ZyYW1lLT50cmVlKCktPnRvcCgpOwot
ICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLT5pc0VuYWJsZWQoKSkKKyAgICBpZiAoIWZyYW1lLT5z
Y3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7IC8vIElm
IEphdmFTY3JpcHQgaXMgZGlzYWJsZWQsIGEgdXNlciBnZXN0dXJlIG11c3QgaGF2ZSBpbml0aWF0
ZWQgdGhlIG5hdmlnYXRpb24uCiAgICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQoKS0+cHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKCk7IC8vIEZJWE1FOiBVc2UgcGFnZUlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJl
LgogfQpAQCAtMjY1OSw3ICsyNjU5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6b3BlbihDYWNoZWRQ
YWdlJiBjYWNoZWRQYWdlKQogICAgIGNsb3NlVVJMKCk7CiAgICAgCiAgICAgLy8gRGVsZXRlIG9s
ZCBzdGF0dXMgYmFyIG1lc3NhZ2VzIChpZiBpdCBfd2FzXyBhY3RpdmF0ZWQgb24gbGFzdCBVUkwp
LgotICAgIGlmIChtX2ZyYW1lLT5zY3JpcHQoKS0+aXNFbmFibGVkKCkpIHsKKyAgICBpZiAobV9m
cmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKCkpIHsKICAgICAgICAgbV9mcmFtZS0+
c2V0SlNTdGF0dXNCYXJUZXh0KFN0cmluZygpKTsKICAgICAgICAgbV9mcmFtZS0+c2V0SlNEZWZh
dWx0U3RhdHVzQmFyVGV4dChTdHJpbmcoKSk7CiAgICAgfQpAQCAtMzg3OCw3ICszODc4LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKQogCiB2
b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0c0luQWxsV29ybGRz
KCkKIHsKLSAgICBpZiAoIW1fZnJhbWUtPnNjcmlwdCgpLT5pc0VuYWJsZWQoKSkKKyAgICBpZiAo
IW1fZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cygpKQogICAgICAgICByZXR1cm47
CiAKICAgICBWZWN0b3I8RE9NV3JhcHBlcldvcmxkKj4gd29ybGRzOwpAQCAtMzg4OSw3ICszODg5
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdHNJbkFs
bFdvcmxkcygpCiAKIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmpl
Y3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lLT5z
Y3JpcHQoKS0+aXNFbmFibGVkKCkgfHwgIW1fZnJhbWUtPnNjcmlwdCgpLT5leGlzdGluZ1dpbmRv
d1NoZWxsKHdvcmxkKSkKKyAgICBpZiAoIW1fZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2Ny
aXB0cygpIHx8ICFtX2ZyYW1lLT5zY3JpcHQoKS0+ZXhpc3RpbmdXaW5kb3dTaGVsbCh3b3JsZCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZENsZWFyV2luZG93
T2JqZWN0SW5Xb3JsZCh3b3JsZCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBjODVhNjQxLi43ZDliZmNhIDEw
MDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wMS0wOSAgQWRhbSBCYXJ0aCAgPGFi
YXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNjcmlwdENvbnRyb2xsZXI6OmlzRW5hYmxlZCBuZWVkcyB0byBiZSByZW5hbWVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjA2Mwor
CisgICAgICAgIFJlbmFtZSBTY3JpcHRDb250cm9sbGVyOjppc0VuYWJsZWQgdG8KKyAgICAgICAg
U2NyaXB0Q29udHJvbGxlcjo6Y2FuRXhlY3V0ZVNjcmlwdHMuCisKKyAgICAgICAgKiBzcmMvV2Vi
RnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpiaW5kVG9XaW5k
b3dPYmplY3QpOgorCiAyMDEwLTAxLTA4ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
cmFtZUltcGwuY3BwCmluZGV4IGNiNzAwY2EuLjI5M2Q3ZWUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5jcHAKQEAgLTU5Nyw3ICs1OTcsNyBAQCBOUE9iamVjdCogV2ViRnJhbWVJbXBs
Ojp3aW5kb3dPYmplY3QoKSBjb25zdAogdm9pZCBXZWJGcmFtZUltcGw6OmJpbmRUb1dpbmRvd09i
amVjdChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIE5QT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgQVNT
RVJUKG1fZnJhbWUpOwotICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+c2NyaXB0KCktPmlz
RW5hYmxlZCgpKQorICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+c2NyaXB0KCktPmNhbkV4
ZWN1dGVTY3JpcHRzKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBrZXkgPSBuYW1l
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwppbmRleCBkMGU0Y2ZiLi4wMTE3NDVjIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEwLTAxLTA5
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2NyaXB0Q29udHJvbGxlcjo6aXNFbmFibGVkIG5l
ZWRzIHRvIGJlIHJlbmFtZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMyMDYzCisKKyAgICAgICAgUmVuYW1lIFNjcmlwdENvbnRyb2xsZXI6OmlzRW5h
YmxlZCB0bworICAgICAgICBTY3JpcHRDb250cm9sbGVyOjpjYW5FeGVjdXRlU2NyaXB0cy4KKwor
ICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpnZXRXaW5kb3dO
UE9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
ZGVtYXJzaGFsVmFsdWVGcm9tQXJyYXkpOgorCiAyMDEwLTAxLTA3ICBEYW5pZWwgQmF0ZXMgIDxk
YmF0ZXNAcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAt
LWdpdCBhL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Lm1tIGIvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkubW0KaW5kZXggYzNkOTlhZS4uMTJjYmMxYyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9Q
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTY5
Niw3ICs2OTYsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Z2V0V2luZG93
TlBPYmplY3QodWludDMyX3QmIG9iamVjdElEKQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS0+aXNFbmFibGVkKCkp
CisgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKCkpCiAgICAgICAg
IG9iamVjdElEID0gMDsKICAgICBlbHNlCiAgICAgICAgIG9iamVjdElEID0gaWRGb3JPYmplY3Qo
ZnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTaGVsbChwbHVnaW5Xb3JsZCgpKS0+d2luZG93KCkpOwpA
QCAtMTIwMSw3ICsxMjAxLDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmRl
bWFyc2hhbFZhbHVlRnJvbUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgTlNBcnIKICAgICAgICAgICAg
IGlmICghZnJhbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS0+aXNFbmFibGVkKCkpCisgICAgICAg
ICAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgIFJlZlB0cjxSb290T2JqZWN0PiBy
b290T2JqZWN0ID0gZnJhbWUtPnNjcmlwdCgpLT5jcmVhdGVSb290T2JqZWN0KG1fcGx1Z2luVmll
dyk7CmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvQ2hhbmdlTG9nIGIvV2ViS2l0L3d4L0NoYW5nZUxv
ZwppbmRleCAwY2U4MTUzLi4wNzBjMDRmIDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvQ2hhbmdlTG9n
CisrKyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wMS0wOSAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFNjcmlwdENvbnRyb2xsZXI6OmlzRW5hYmxlZCBuZWVk
cyB0byBiZSByZW5hbWVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMjA2MworCisgICAgICAgIFJlbmFtZSBTY3JpcHRDb250cm9sbGVyOjppc0VuYWJs
ZWQgdG8KKyAgICAgICAgU2NyaXB0Q29udHJvbGxlcjo6Y2FuRXhlY3V0ZVNjcmlwdHMuCisKKyAg
ICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgICh3eFdlYkZyYW1lOjpSdW5TY3JpcHQpOgor
CiAyMDA5LTEyLTMwICBLZXZpbiBXYXR0ZXJzICA8a2V2aW53YXR0ZXJzQGdtYWlsLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBPbGxpdmllci4KZGlmZiAtLWdpdCBhL1dlYktpdC93
eC9XZWJGcmFtZS5jcHAgYi9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwCmluZGV4IGQ5YmIyMjMuLjhl
NThlOGQgMTAwNjQ0Ci0tLSBhL1dlYktpdC93eC9XZWJGcmFtZS5jcHAKKysrIGIvV2ViS2l0L3d4
L1dlYkZyYW1lLmNwcApAQCAtMTk0LDcgKzE5NCw3IEBAIHd4U3RyaW5nIHd4V2ViRnJhbWU6OlJ1
blNjcmlwdChjb25zdCB3eFN0cmluZyYgamF2YXNjcmlwdCkKICAgICAgICAgd3hBU1NFUlRfTVNH
KGhhc0xvYWRlZCwgd3hUKCJEb2N1bWVudCBtdXN0IGJlIGxvYWRlZCBiZWZvcmUgY2FsbGluZyBS
dW5TY3JpcHQuIikpOwogICAgICAgICBpZiAoaGFzTG9hZGVkKSB7CiAgICAgICAgICAgICBXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyKiBjb250cm9sbGVyID0gbV9pbXBsLT5mcmFtZS0+c2NyaXB0
KCk7Ci0gICAgICAgICAgICBib29sIGpzRW5hYmxlZCA9IGNvbnRyb2xsZXItPmlzRW5hYmxlZCgp
OyAKKyAgICAgICAgICAgIGJvb2wganNFbmFibGVkID0gY29udHJvbGxlci0+Y2FuRXhlY3V0ZVNj
cmlwdHMoKTsgCiAgICAgICAgICAgICB3eEFTU0VSVF9NU0coanNFbmFibGVkLCB3eFQoIlJ1blNj
cmlwdCByZXF1aXJlcyBKYXZhU2NyaXB0IHRvIGJlIGVuYWJsZWQuIikpOwogICAgICAgICAgICAg
aWYgKGpzRW5hYmxlZCkgewogICAgICAgICAgICAgICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBj
b250cm9sbGVyLT5leGVjdXRlU2NyaXB0KGphdmFzY3JpcHQsIHRydWUpLmpzVmFsdWUoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>