<?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>103654</bug_id>
          
          <creation_ts>2012-11-29 11:41:24 -0800</creation_ts>
          <short_desc>Web Components code should be fully behind feature flag</short_desc>
          <delta_ts>2012-11-29 15:50:30 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>103339</dup_id>
          
          <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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mjs</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
    
    <cc>philn</cc>
    
    <cc>sam</cc>
    
    <cc>tkent</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>779250</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-29 11:41:24 -0800</bug_when>
    <thetext>Platforms that are not currently shipping this experimental feature shouldn&apos;t need to take performance and binary size hit from it. As discussed in bug 103208 the code should be fully behind a feature flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779270</commentid>
    <comment_count>1</comment_count>
      <attachid>176775</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-29 11:57:44 -0800</bug_when>
    <thetext>Created attachment 176775
WIP patch

This compiles out ComposedShadowTreeWalker, EventRelatedTargetAdjuster, HTMLContentElement, HTMLShadowElement, InsertionPoint, ContentDistributor, ContentSelectorQuery and some utility classes when SHADOW_DOM flag is not set.

It also disables the &lt;details&gt; element which currently depends on the Shadow DOM feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779280</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 12:00:57 -0800</bug_when>
    <thetext>Attachment 176775 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/html/HTMLLIElement.cpp:110:  Missing space before {  [whitespace/braces] [5]
Total errors found: 1 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779284</commentid>
    <comment_count>3</comment_count>
      <attachid>176775</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-29 12:03:14 -0800</bug_when>
    <thetext>Comment on attachment 176775
WIP patch

Attachment 176775 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15029899</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779286</commentid>
    <comment_count>4</comment_count>
      <attachid>176775</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-29 12:03:19 -0800</bug_when>
    <thetext>Comment on attachment 176775
WIP patch

Attachment 176775 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15036594</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779305</commentid>
    <comment_count>5</comment_count>
      <attachid>176784</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-29 12:19:17 -0800</bug_when>
    <thetext>Created attachment 176784
now with &lt;details&gt; disabled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779309</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 12:20:56 -0800</bug_when>
    <thetext>Attachment 176784 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/wtf/Platform.h&apos;, u&apos;Source/WebCo...&quot; exit_code: 1
Source/WebCore/html/HTMLLIElement.cpp:110:  Missing space before {  [whitespace/braces] [5]
Total errors found: 1 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779325</commentid>
    <comment_count>7</comment_count>
      <attachid>176784</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-29 12:30:51 -0800</bug_when>
    <thetext>Comment on attachment 176784
now with &lt;details&gt; disabled

Attachment 176784 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15026966</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779349</commentid>
    <comment_count>8</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-11-29 12:46:58 -0800</bug_when>
    <thetext>Antti, would you mind if Morrita finished this work? He&apos;s very familiar with the code and already filed a bug for this: https://bugs.webkit.org/show_bug.cgi?id=103339. He could probably un-port &lt;details&gt; from Shadow DOM quicker, too. You have many other cool things you could be doing now :)

Also, I would love if we had a bit more precise terminology here. Calling this code &quot;Web Components&quot; is too broad. Web Components is just an umbrella term, and there&apos;s a more narrow &quot;Shadow DOM&quot; moniker for this plumbing, and even more precisely, you&apos;re trying to yank out the &quot;insertion points&quot; related parts of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779361</commentid>
    <comment_count>9</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-29 12:58:49 -0800</bug_when>
    <thetext>Not at all. I was just curious to learn how the Shadow DOM integrates with the rest of the WebKit. I just uploaded it because I thought it might be a useful starting point for someone doing it for real.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779362</commentid>
    <comment_count>10</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-29 12:59:24 -0800</bug_when>
    <thetext>Also feel free to rename as you like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779364</commentid>
    <comment_count>11</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-11-29 13:01:28 -0800</bug_when>
    <thetext>Awesome.

*** This bug has been marked as a duplicate of bug 103339 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176775</attachid>
            <date>2012-11-29 11:57:44 -0800</date>
            <delta_ts>2012-11-29 12:19:17 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>compile-out-shadowdom-4.patch</filename>
            <type>text/plain</type>
            <size>44742</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMzYxMzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtODEsOSArODEsMTMgQEAgX19a
TjdXZWJDb3JlMTBTY3JvbGxWaWV3MjFzZXREZWxlZ2F0ZXNTYwogX19aTjdXZWJDb3JlMTBTY3Jv
bGxWaWV3MjNzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZEViYgogX19aTjdXZWJDb3JlMTBTY3JvbGxW
aWV3MjR3aW5kb3dSZXNpemVyUmVjdENoYW5nZWRFdgogX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3
OGFkZENoaWxkRU4zV1RGMTBQYXNzUmVmUHRySU5TXzZXaWRnZXRFRUUKKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKIF9fWk5LN1dlYkNvcmUxMFNoYWRvd1Jvb3QxN2hhc0NvbnRlbnRFbGVtZW50RXYK
KyNlbmRpZgogX19aTks3V2ViQ29yZTEwU2hhZG93Um9vdDE4Y291bnRFbGVtZW50U2hhZG93RXYK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKIF9fWk5LN1dlYkNvcmUxMFNoYWRvd1Jvb3QyM2hhc1No
YWRvd0luc2VydGlvblBvaW50RXYKKyNlbmRpZgogX19aTjdXZWJDb3JlMTBTaGFkb3dSb290NmNy
ZWF0ZUVQTlNfN0VsZW1lbnRFUmkKIF9fWk43V2ViQ29yZTEwZGVsZXRlRmlsZUVSS04zV1RGNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTEwc2V0Q29va2llc0VQTlNfOERvY3VtZW50RVJLTlNfNEtVUkxF
UktOM1dURjZTdHJpbmdFCkBAIC01MDUsNyArNTA5LDkgQEAgX19aTjdXZWJDb3JlMTdjYWNoZURP
TVN0cnVjdHVyZUVQTlNfMTdKUwogX19aTjdXZWJDb3JlMTdvcGVuVGVtcG9yYXJ5RmlsZUVSS04z
V1RGNlN0cmluZ0VSaQogX19aTjdXZWJDb3JlMTd1c2VyVmlzaWJsZVN0cmluZ0VQNU5TVVJMCiBf
X1pON1dlYkNvcmUxOERPTVdpbmRvd0V4dGVuc2lvbkMxRVBOU181RnJhbWVFUE5TXzE1RE9NV3Jh
cHBlcldvcmxkRQorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogX19aTjdXZWJDb3JlMThIVE1MQ29u
dGVudEVsZW1lbnQ2Y3JlYXRlRVBOU184RG9jdW1lbnRFCisjZW5kaWYKIF9fWk43V2ViQ29yZTEw
UGFzdGVib2FyZDE3Z2VuZXJhbFBhc3RlYm9hcmRFdgogX19aTjdXZWJDb3JlMTBQYXN0ZWJvYXJk
MTR3cml0ZVBsYWluVGV4dEVSS04zV1RGNlN0cmluZ0VOUzBfMThTbWFydFJlcGxhY2VPcHRpb25F
CiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDEwdW5pcXVlTmFtZUV2CkBAIC02NDUs
MTEgKzY1MSwxMyBAQCBfX1pON1dlYkNvcmUyM2VuY29kZUhvc3ROYW1lV2l0aFJhbmdlRVA4CiBf
X1pON1dlYkNvcmUyM2dldEhvc3RuYW1lc1dpdGhDb29raWVzRVJOM1dURjdIYXNoU2V0SU5TMF82
U3RyaW5nRU5TMF8xMFN0cmluZ0hhc2hFTlMwXzEwSGFzaFRyYWl0c0lTMl9FRUVFCiBfX1pON1dl
YkNvcmUyNEJpbmFyeVByb3BlcnR5TGlzdFdyaXRlcjE3d3JpdGVQcm9wZXJ0eUxpc3RFdgogX19a
TjdXZWJDb3JlMjRDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UxMXNldFJlc291cmNlRVBOU18xNENh
Y2hlZFJlc291cmNlRQorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogX19aTjdXZWJDb3JlMjRDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXIxMGZpcnN0Q2hpbGRFdgogX19aTjdXZWJDb3JlMjRDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIxMW5leHRTaWJsaW5nRXYKIF9fWk43V2ViQ29yZTI0Q29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyNG5leHRFdgogX19aTjdXZWJDb3JlMjRDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXI4cHJldmlvdXNFdgogX19aTjdXZWJDb3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI5
bGFzdENoaWxkRXYKKyNlbmRpZgogX19aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIxMG1hcmtlcnNGb3JFUE5TXzROb2RlRU5TXzE0RG9jdW1lbnRNYXJrZXIxMU1hcmtlclR5cGVz
RQogX19aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxM3JlbW92ZU1hcmtlcnNF
TlNfMTREb2N1bWVudE1hcmtlcjExTWFya2VyVHlwZXNFCiBfX1pON1dlYkNvcmUyNERvY3VtZW50
TWFya2VyQ29udHJvbGxlcjE4YWRkVGV4dE1hdGNoTWFya2VyRVBLTlNfNVJhbmdlRWIKQEAgLTEy
MjMsOCArMTIzMSwxMCBAQCBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjE4aXNGb2N1c2Vk
CiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjMxZ2V0Q2xpcHBlZFZpc2libGVUZXh0UmVj
dGFuZ2xlc0VSTjNXVEY2VmVjdG9ySU5TXzlGbG9hdFJlY3RFTG0wRUVFCiBfX1pOSzdXZWJDb3Jl
MTRGcmFtZVNlbGVjdGlvbjM2cm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50RXYK
IF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uNmJvdW5kc0ViCisjaWYgRU5BQkxFKFNIQURP
V19ET00pCiBfX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Qb2ludDE5Z2V0RGlzdHJpYnV0ZWROb2Rl
c0V2CiBfX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Qb2ludDhpc0FjdGl2ZUV2CisjZW5kaWYKIF9f
Wk5LN1dlYkNvcmUxNFJlbmRlckxpc3RJdGVtMTBtYXJrZXJUZXh0RXYKIF9fWk5LN1dlYkNvcmUx
NFJlc291cmNlQnVmZmVyNGRhdGFFdgogX19aTks3V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXI0c2l6
ZUV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAxMzYx
MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk2MywxMiArOTYzLDE1IEBAIGlubGluZSB2b2lkIFN0eWxlUmVzb2x2ZXI6OmluaXRF
bGVtZW50KEUKIAogaW5saW5lIGJvb2wgc2hvdWxkUmVzZXRTdHlsZUluaGVyaXRhbmNlKE5vZGVS
ZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAg
IGlmIChjb250ZXh0LnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBjb250ZXh0Lmlu
c2VydGlvblBvaW50KCkpCiAgICAgICAgIHJldHVybiBpbnNlcnRpb25Qb2ludC0+cmVzZXRTdHls
ZUluaGVyaXRhbmNlKCk7Ci0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworI2Vu
ZGlmCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAkocmV2aXNpb24gMTM2MTMzKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDYgKzM2LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgRU5BQkxF
KFNIQURPV19ET00pCisKIHN0YXRpYyBpbmxpbmUgRWxlbWVudFNoYWRvdyogc2hhZG93Rm9yKGNv
bnN0IE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aXNFbGVtZW50Tm9kZSgp
KQpAQCAtMzQyLDYgKzM0NCw4IEBAIHZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpwcmV2
aW91cygKICAgICBhc3NlcnRQb3N0Y29uZGl0aW9uKCk7CiB9CiAKKyNlbmRpZgorCiBBbmNlc3Rv
ckNoYWluV2Fsa2VyOjpBbmNlc3RvckNoYWluV2Fsa2VyKGNvbnN0IE5vZGUqIG5vZGUpCiAgICAg
OiBtX25vZGUobm9kZSkKICAgICAsIG1fZGlzdHJpYnV0ZWROb2RlKG5vZGUpCkBAIC0zNTAsNiAr
MzU0LDcgQEAgQW5jZXN0b3JDaGFpbldhbGtlcjo6QW5jZXN0b3JDaGFpbldhbGtlcgogICAgIEFT
U0VSVChub2RlKTsKIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogdm9pZCBBbmNlc3RvckNo
YWluV2Fsa2VyOjpwYXJlbnQoKQogewogICAgIEFTU0VSVChtX25vZGUpOwpAQCAtMzc5LDUgKzM4
NCwxMyBAQCB2b2lkIEFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBhcmVudCgpCiAgICAgbV9kaXN0cmli
dXRlZE5vZGUgPSBtX25vZGU7CiAgICAgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9uUG9pbnQgPSBmYWxz
ZTsKIH0KKyNlbHNlCit2b2lkIEFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBhcmVudCgpCit7CisgICAg
QVNTRVJUKG1fbm9kZSk7CisgICAgbV9ub2RlID0gbV9ub2RlLT5pc1NoYWRvd1Jvb3QoKSA/IHRv
U2hhZG93Um9vdChtX25vZGUpLT5ob3N0KCkgOiBtX25vZGUtPnBhcmVudE5vZGUoKTsKK30KKyNl
bmRpZgogCiB9IC8vIG5hbWVzcGFjZQorCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Nv
bXBvc2VkU2hhZG93VHJlZVdhbGtlci5oCShyZXZpc2lvbiAxMzYxMzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDYgKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTm9kZTsKIGNsYXNzIFNoYWRv
d1Jvb3Q7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogLy8gRklYTUU6IE1ha2Ugc29tZSBm
dW5jdGlvbnMgaW5saW5lIHRvIG9wdGltaXNlIHRoZSBwZXJmb3JtYW5jZS4KIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjcwMgogY2xhc3MgQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyIHsKQEAgLTE2NCw2ICsxNjYsOCBAQCBpbmxpbmUgQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyOjpDb21wb3NlCiAjZW5kaWYKIH0KIAorI2VuZGlmCisKIGNsYXNzIEFuY2VzdG9y
Q2hhaW5XYWxrZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IEFuY2VzdG9yQ2hhaW5XYWxrZXIo
Y29uc3QgTm9kZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTM2MTMz
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NjAsMTAgKzc2MCwxMiBAQCBzdGF0aWMgYm9vbCBjaGVja05lZWRzU3R5bGVJbnZhbGlkYXRpb25G
CiAKIHZvaWQgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogeworI2lmIEVOQUJMRShTSEFET1df
RE9NKQogICAgIGlmIChFbGVtZW50U2hhZG93KiBwYXJlbnRFbGVtZW50U2hhZG93ID0gc2hhZG93
T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24odGhpcykpIHsKICAgICAgICAgaWYgKHNob3VsZEludmFs
aWRhdGVEaXN0cmlidXRpb25XaGVuQXR0cmlidXRlQ2hhbmdlZChwYXJlbnRFbGVtZW50U2hhZG93
LCBuYW1lLCBuZXdWYWx1ZSkpCiAgICAgICAgICAgICBwYXJlbnRFbGVtZW50U2hhZG93LT5pbnZh
bGlkYXRlRGlzdHJpYnV0aW9uKCk7CiAgICAgfQorI2VuZGlmCiAKICAgICBwYXJzZUF0dHJpYnV0
ZShuYW1lLCBuZXdWYWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hh
ZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5j
cHAJKHJldmlzaW9uIDEzNjEzMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDE0ICsxNzcsMTggQEAgdm9pZCBFbGVtZW50U2hh
ZG93OjpyZWNhbGNTdHlsZShOb2RlOjpTdAogCiB2b2lkIEVsZW1lbnRTaGFkb3c6OmVuc3VyZURp
c3RyaWJ1dGlvbigpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKCFtX2Rpc3Ry
aWJ1dG9yLm5lZWRzRGlzdHJpYnV0aW9uKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Rpc3Ry
aWJ1dG9yLmRpc3RyaWJ1dGUoaG9zdCgpKTsKKyNlbmRpZgogfQogCiB2b2lkIEVsZW1lbnRTaGFk
b3c6OnNldFZhbGlkaXR5VW5kZXRlcm1pbmVkKCkKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
ICAgICBtX2Rpc3RyaWJ1dG9yLnNldFZhbGlkaXR5KENvbnRlbnREaXN0cmlidXRvcjo6VW5kZXRl
cm1pbmVkKTsKKyNlbmRpZgogfQogCiB2b2lkIEVsZW1lbnRTaGFkb3c6OmludmFsaWRhdGVEaXN0
cmlidXRpb24oKQpAQCAtMTk0LDYgKzE5OCw3IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6aW52YWxp
ZGF0ZURpc3RyaWJ1dGkKIAogdm9pZCBFbGVtZW50U2hhZG93OjppbnZhbGlkYXRlRGlzdHJpYnV0
aW9uKEVsZW1lbnQqIGhvc3QpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgYm9vbCBu
ZWVkc0ludmFsaWRhdGlvbiA9IG1fZGlzdHJpYnV0b3IubmVlZHNJbnZhbGlkYXRpb24oKTsKICAg
ICBib29sIG5lZWRzUmVhdHRhY2ggPSBuZWVkc0ludmFsaWRhdGlvbiA/IG1fZGlzdHJpYnV0b3Iu
aW52YWxpZGF0ZShob3N0KSA6IGZhbHNlOwogCkBAIC0yMDUsNiArMjEwLDkgQEAgdm9pZCBFbGVt
ZW50U2hhZG93OjppbnZhbGlkYXRlRGlzdHJpYnV0aQogCiAgICAgaWYgKG5lZWRzSW52YWxpZGF0
aW9uKQogICAgICAgICBtX2Rpc3RyaWJ1dG9yLmZpbmlzaEluaXZhbGlkYXRpb24oKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKGhvc3QpOworI2VuZGlmCiB9CiAKIHZvaWQgRWxlbWVudFNoYWRv
dzo6c2V0U2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQoKQpAQCAtMjQyLDYgKzI1MCw3IEBA
IHZvaWQgRWxlbWVudFNoYWRvdzo6Y29sbGVjdFNlbGVjdEZlYXR1cmUKICAgICAgICAgfQogICAg
IH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmIChyb290LT5oYXNDb250ZW50RWxl
bWVudCgpKSB7CiAgICAgICAgIGZvciAoTm9kZSogbm9kZSA9IHJvb3QtPmZpcnN0Q2hpbGQoKTsg
bm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgewogICAgICAgICAgICAgaWYg
KGlzSFRNTENvbnRlbnRFbGVtZW50KG5vZGUpKSB7CkBAIC0yNTEsNiArMjYwLDcgQEAgdm9pZCBF
bGVtZW50U2hhZG93Ojpjb2xsZWN0U2VsZWN0RmVhdHVyZQogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRWxlbWVudFNoYWRvdzo6cmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKQEAgLTI2Miwx
MSArMjcyLDE0IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6cmVwb3J0TWVtb3J5VXNhZ2UoTWUKICAg
ICAgICAgaW5mby5hZGRNZW1iZXIoc2hhZG93Um9vdCk7CiAgICAgICAgIHNoYWRvd1Jvb3QgPSBz
aGFkb3dSb290LT5uZXh0KCk7CiAgICAgfQorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlu
Zm8uYWRkTWVtYmVyKG1fZGlzdHJpYnV0b3IpOworI2VuZGlmCiB9CiAKIHZvaWQgaW52YWxpZGF0
ZVBhcmVudERpc3RyaWJ1dGlvbklmTmVjZXNzYXJ5KEVsZW1lbnQqIGVsZW1lbnQsIFNlbGVjdFJ1
bGVGZWF0dXJlU2V0OjpTZWxlY3RSdWxlRmVhdHVyZU1hc2sgdXBkYXRlZEZlYXR1cmVzKQogewor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFkb3cg
PSBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbihlbGVtZW50KTsKICAgICBpZiAoIWVsZW1l
bnRTaGFkb3cpCiAgICAgICAgIHJldHVybjsKQEAgLTI3NCw2ICsyODcsMTAgQEAgdm9pZCBpbnZh
bGlkYXRlUGFyZW50RGlzdHJpYnV0aW9uSWZOZWNlcwogICAgIGVsZW1lbnRTaGFkb3ctPmVuc3Vy
ZVNlbGVjdEZlYXR1cmVTZXRDb2xsZWN0ZWQoKTsKICAgICBpZiAoZWxlbWVudFNoYWRvdy0+c2Vs
ZWN0UnVsZUZlYXR1cmVTZXQoKS5oYXNTZWxlY3RvckZvcih1cGRhdGVkRmVhdHVyZXMpKQogICAg
ICAgICBlbGVtZW50U2hhZG93LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShlbGVtZW50KTsKKyAgICBVTlVTRURfUEFSQU0odXBkYXRlZEZlYXR1cmVz
KTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRTaGFkb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFNoYWRvdy5oCShyZXZpc2lvbiAxMzYxMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFNoYWRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjZGVmaW5lIEVsZW1l
bnRTaGFkb3dfaAogCiAjaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCisjaW5jbHVkZSAi
RWxlbWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTZWxlY3RS
dWxlRmVhdHVyZVNldC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKQEAgLTY3LDkgKzY4LDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKICAgICB2b2lk
IGVuc3VyZURpc3RyaWJ1dGlvbigpOwogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29u
dGVudERpc3RyaWJ1dG9yJiBkaXN0cmlidXRvcigpOwogICAgIGNvbnN0IENvbnRlbnREaXN0cmli
dXRvciYgZGlzdHJpYnV0b3IoKSBjb25zdDsKLQorI2VuZGlmCiAgICAgYm9vbCBzaG91bGRDb2xs
ZWN0U2VsZWN0RmVhdHVyZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkQ29sbGVjdFNlbGVj
dEZlYXR1cmVTZXQ7IH0KICAgICB2b2lkIHNldFNob3VsZENvbGxlY3RTZWxlY3RGZWF0dXJlU2V0
KCk7CiAgICAgdm9pZCBlbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCk7CkBAIC04NCw3
ICs4Niw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0U2VsZWN0RmVhdHVyZVNldEZyb20o
U2hhZG93Um9vdCopOwogCiAgICAgRG91Ymx5TGlua2VkTGlzdDxTaGFkb3dSb290PiBtX3NoYWRv
d1Jvb3RzOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIENvbnRlbnREaXN0cmlidXRvciBt
X2Rpc3RyaWJ1dG9yOworI2VuZGlmCiAgICAgU2VsZWN0UnVsZUZlYXR1cmVTZXQgbV9zZWxlY3RG
ZWF0dXJlczsKICAgICBib29sIG1fc2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQgOiAxOwog
fTsKQEAgLTEwMSw2ICsxMDUsNyBAQCBpbmxpbmUgU2hhZG93Um9vdCogRWxlbWVudFNoYWRvdzo6
b2xkZXN0CiAgICAgcmV0dXJuIG1fc2hhZG93Um9vdHMudGFpbCgpOwogfQogCisjaWYgRU5BQkxF
KFNIQURPV19ET00pCiBpbmxpbmUgQ29udGVudERpc3RyaWJ1dG9yJiBFbGVtZW50U2hhZG93Ojpk
aXN0cmlidXRvcigpCiB7CiAgICAgcmV0dXJuIG1fZGlzdHJpYnV0b3I7CkBAIC0xMTAsNiArMTE1
LDcgQEAgaW5saW5lIGNvbnN0IENvbnRlbnREaXN0cmlidXRvciYgRWxlbWVudAogewogICAgIHJl
dHVybiBtX2Rpc3RyaWJ1dG9yOwogfQorI2VuZGlmCiAKIGlubGluZSBFbGVtZW50KiBFbGVtZW50
U2hhZG93Ojpob3N0KCkgY29uc3QKIHsKQEAgLTE0MSw2ICsxNDcsMTcgQEAgcHVibGljOgogICAg
IH0KIH07CiAKKyNpZiAhRU5BQkxFKFNIQURPV19ET00pCitpbmxpbmUgRWxlbWVudFNoYWRvdyog
c2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBB
U1NFUlQobm9kZSk7CisgICAgaWYgKENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVu
dE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpID8gdG9FbGVt
ZW50KHBhcmVudCktPnNoYWRvdygpIDogMDsKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudERpc3BhdGNoZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dERpc3BhdGNoZXIuY3BwCShyZXZpc2lvbiAxMzYxMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnREaXNwYXRjaGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBIYXNoU2V0PE5vZGUqPiogZ05vZGVzRGlzcGF0Y2hp
bmdTaW11bGF0ZWRDbGlja3MgPSAwOwogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKIEV2ZW50
UmVsYXRlZFRhcmdldEFkanVzdGVyOjpFdmVudFJlbGF0ZWRUYXJnZXRBZGp1c3RlcihQYXNzUmVm
UHRyPE5vZGU+IG5vZGUsIFBhc3NSZWZQdHI8Tm9kZT4gcmVsYXRlZFRhcmdldCkKICAgICA6IG1f
bm9kZShub2RlKQogICAgICwgbV9yZWxhdGVkVGFyZ2V0KHJlbGF0ZWRUYXJnZXQpCkBAIC0xMTgs
NiArMTIwLDcgQEAgRXZlbnRUYXJnZXQqIEV2ZW50UmVsYXRlZFRhcmdldEFkanVzdGVyOgogICAg
ICAgbV9yZWxhdGVkVGFyZ2V0TWFwLmFkZCgqaXRlciwgcmVsYXRlZFRhcmdldCk7CiAgICAgcmV0
dXJuIHJlbGF0ZWRUYXJnZXQ7CiB9CisjZW5kaWYKIAogYm9vbCBFdmVudERpc3BhdGNoZXI6OmRp
c3BhdGNoRXZlbnQoTm9kZSogbm9kZSwgUGFzc1JlZlB0cjxFdmVudERpc3BhdGNoTWVkaWF0b3I+
IG1lZGlhdG9yKQogewpAQCAtMTU5LDcgKzE2Miw5IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjph
ZGp1c3RSZWxhdGVkVGFyZ2UKICAgICBpZiAoIW1fbm9kZS5nZXQoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIGVuc3VyZUV2ZW50QW5jZXN0b3JzKGV2ZW50KTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKICAgICBFdmVudFJlbGF0ZWRUYXJnZXRBZGp1c3RlcihtX25vZGUsIHJlbGF0ZWRUYXJnZXQu
cmVsZWFzZSgpKS5hZGp1c3QobV9hbmNlc3RvcnMpOworI2VuZGlmCiB9CiAKIEV2ZW50RGlzcGF0
Y2hlcjo6RXZlbnREaXNwYXRjaGVyKE5vZGUqIG5vZGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnREaXNwYXRjaGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50RGlzcGF0Y2hlci5oCShyZXZpc2lvbiAxMzYxMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnREaXNwYXRjaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDggQEAgZW51bSBF
dmVudERpc3BhdGNoQ29udGludWF0aW9uIHsKICAgICBEb25lRGlzcGF0Y2hpbmcKIH07CiAKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogY2xhc3MgRXZlbnRSZWxhdGVkVGFyZ2V0QWRqdXN0ZXIg
ewogcHVibGljOgogICAgIEV2ZW50UmVsYXRlZFRhcmdldEFkanVzdGVyKFBhc3NSZWZQdHI8Tm9k
ZT4sIFBhc3NSZWZQdHI8Tm9kZT4gcmVsYXRlZFRhcmdldCk7CkBAIC02OCw2ICs3MCw4IEBAIHBy
aXZhdGU6CiAgICAgUmVsYXRlZFRhcmdldE1hcCBtX3JlbGF0ZWRUYXJnZXRNYXA7CiB9OwogCisj
ZW5kaWYKKwogY2xhc3MgRXZlbnREaXNwYXRjaGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBkaXNwYXRjaEV2ZW50KE5vZGUqLCBQYXNzUmVmUHRyPEV2ZW50RGlzcGF0Y2hNZWRpYXRvcj4p
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCShy
ZXZpc2lvbiAxMzYxMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxNSArNTIsMzcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCisjaWYgIUVOQUJMRShTSEFET1df
RE9NKQorc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRQYXJlbnQoTm9kZSogbm9kZSkKK3sKKyAg
ICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAg
aWYgKCFwYXJlbnQpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChwYXJlbnQtPmlzU2hhZG93
Um9vdCgpKQorICAgICAgICByZXR1cm4gdG9TaGFkb3dSb290KHBhcmVudCktPmhvc3QoKTsKKy8v
ICAgIGlmIChwYXJlbnQtPmlzSW5zZXJ0aW9uUG9pbnQoKSkKKy8vICAgICAgICByZXR1cm4gZmlu
ZFBhcmVudChwYXJlbnQpOworICAgIHJldHVybiBwYXJlbnQ7Cit9CisjZW5kaWYKKwogTm9kZVJl
bmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqIG5vZGUpCiAgICAgOiBt
X25vZGUobm9kZSkKKyNpZiAhRU5BQkxFKFNIQURPV19ET00pCisgICAgLCBtX3BhcmVudE5vZGVG
b3JSZW5kZXJpbmdBbmRTdHlsZShmaW5kUGFyZW50KG1fbm9kZSkpCisjZW5kaWYKICAgICAsIG1f
cGFyZW50Rmxvd1JlbmRlcmVyKDApCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpmaW5kUGFyZW50KG1fbm9kZSwgJm1fcGFyZW50RGV0YWls
cyk7CisjZW5kaWYKIH0KIAogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250
ZXh0KE5vZGUqIG5vZGUsIFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICA6IG1fbm9kZShub2RlKQor
I2lmICFFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAsIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0Fu
ZFN0eWxlKDApCisjZW5kaWYKICAgICAsIG1fc3R5bGUoc3R5bGUpCiAgICAgLCBtX3BhcmVudEZs
b3dSZW5kZXJlcigwKQogewpAQCAtNzAsNiArOTIsMTQgQEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6
On5Ob2RlUmVuZGVyaW5nQ29udAogewogfQogCitzdGF0aWMgYm9vbCBpc1ZhbGlkTm9uRmxvd1Ro
cmVhZFJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7CisgICAgaWYgKCFyZW5kZXJl
cikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIFJlbmRlcmVycyBmb3IgZWxlbWVudHMg
YXR0YWNoZWQgdG8gYSBmbG93IHRocmVhZCBzaG91bGQgYmUgc2tpcHBlZCBiZWNhdXNlIHRoZXkg
YXJlIHBhcmVudGVkIGRpZmZlcmVudGx5LgorICAgIHJldHVybiAhcmVuZGVyZXItPm5vZGUoKS0+
aXNFbGVtZW50Tm9kZSgpIHx8IHJlbmRlcmVyLT5zdHlsZSgpLT5mbG93VGhyZWFkKCkuaXNFbXB0
eSgpOworfQorCiBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpuZXh0UmVuZGVy
ZXIoKSBjb25zdAogewogICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9ub2RlLT5y
ZW5kZXJlcigpKQpAQCAtODAsMTkgKzExMCwyMiBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJp
bmdDb250ZXh0OjpuZXh0CiAKICAgICAvLyBBdm9pZCBhbiBPKE5eMikgcHJvYmxlbSB3aXRoIHRo
aXMgZnVuY3Rpb24gYnkgbm90IGNoZWNraW5nIGZvcgogICAgIC8vIG5leHRSZW5kZXJlcigpIHdo
ZW4gdGhlIHBhcmVudCBlbGVtZW50IGhhc24ndCBhdHRhY2hlZCB5ZXQuCi0gICAgaWYgKG1fcGFy
ZW50RGV0YWlscy5ub2RlKCkgJiYgIW1fcGFyZW50RGV0YWlscy5ub2RlKCktPmF0dGFjaGVkKCkp
CisgICAgTm9kZSogcGFyZW50Tm9kZSA9IHBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgp
OworICAgIGlmICghcGFyZW50Tm9kZSB8fCAhcGFyZW50Tm9kZS0+YXR0YWNoZWQoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKKyNpZiAhRU5BQkxFKFNIQURPV19ET00pCisgICAgZm9yIChOb2RlKiBj
dXJyZW50ID0gbV9ub2RlLT5uZXh0U2libGluZygpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVu
dC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoaXNWYWxpZE5vbkZsb3dUaHJlYWRSZW5k
ZXJlcihjdXJyZW50LT5yZW5kZXJlcigpKSkKKyAgICAgICAgICAgIHJldHVybiBjdXJyZW50LT5y
ZW5kZXJlcigpOworICAgIH0KKyNlbHNlCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdh
bGtlcihtX25vZGUpOwogICAgIGZvciAod2Fsa2VyLm5leHRTaWJsaW5nKCk7IHdhbGtlci5nZXQo
KTsgd2Fsa2VyLm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSB3YWxrZXIuZ2V0KCktPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIC8vIFJlbmRl
cmVycyBmb3IgZWxlbWVudHMgYXR0YWNoZWQgdG8gYSBmbG93IHRocmVhZCBzaG91bGQgYmUgc2tp
cHBlZCBiZWNhdXNlIHRoZXkgYXJlIHBhcmVudGVkIGRpZmZlcmVudGx5LgotICAgICAgICAgICAg
aWYgKHJlbmRlcmVyLT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSAmJiByZW5kZXJlci0+c3R5bGUo
KSAmJiAhcmVuZGVyZXItPnN0eWxlKCktPmZsb3dUaHJlYWQoKS5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7Ci0gICAgICAg
IH0KKyAgICAgICAgaWYgKGlzVmFsaWROb25GbG93VGhyZWFkUmVuZGVyZXIod2Fsa2VyLmdldCgp
LT5yZW5kZXJlcigpKSkKKyAgICAgICAgICAgIHJldHVybiB3YWxrZXIuZ2V0KCktPnJlbmRlcmVy
KCk7CiAgICAgfQotCisjZW5kaWYKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTA2LDE3ICsxMzks
MTggQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldgogCiAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBoYXZlIHRoZSBzYW1lIE8oTl4yKSBhdm9pZGFuY2UgYXMgbmV4dFJl
bmRlcmVyIGRvZXMKICAgICAvLyBob3dldmVyLCB3aGVuIEkgdHJpZWQgYWRkaW5nIGl0LCBzZXZl
cmFsIHRlc3RzIGZhaWxlZC4KLQorI2lmICFFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBmb3IgKE5v
ZGUqIGN1cnJlbnQgPSBtX25vZGUtPnByZXZpb3VzU2libGluZygpOyBjdXJyZW50OyBjdXJyZW50
ID0gY3VycmVudC0+cHJldmlvdXNTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKGlzVmFsaWROb25G
bG93VGhyZWFkUmVuZGVyZXIoY3VycmVudC0+cmVuZGVyZXIoKSkpCisgICAgICAgICAgICByZXR1
cm4gY3VycmVudC0+cmVuZGVyZXIoKTsKKyAgICB9CisjZWxzZQogICAgIENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlciB3YWxrZXIobV9ub2RlKTsKICAgICBmb3IgKHdhbGtlci5wcmV2aW91c1NpYmxp
bmcoKTsgd2Fsa2VyLmdldCgpOyB3YWxrZXIucHJldmlvdXNTaWJsaW5nKCkpIHsKLSAgICAgICAg
aWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB3YWxrZXIuZ2V0KCktPnJlbmRlcmVyKCkpIHsK
LSAgICAgICAgICAgIC8vIFJlbmRlcmVycyBmb3IgZWxlbWVudHMgYXR0YWNoZWQgdG8gYSBmbG93
IHRocmVhZCBzaG91bGQgYmUgc2tpcHBlZCBiZWNhdXNlIHRoZXkgYXJlIHBhcmVudGVkIGRpZmZl
cmVudGx5LgotICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5ub2RlKCktPmlzRWxlbWVudE5vZGUo
KSAmJiByZW5kZXJlci0+c3R5bGUoKSAmJiAhcmVuZGVyZXItPnN0eWxlKCktPmZsb3dUaHJlYWQo
KS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICByZXR1
cm4gcmVuZGVyZXI7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGlzVmFsaWROb25GbG93VGhyZWFk
UmVuZGVyZXIod2Fsa2VyLmdldCgpLT5yZW5kZXJlcigpKSkKKyAgICAgICAgICAgIHJldHVybiB3
YWxrZXIuZ2V0KCktPnJlbmRlcmVyKCk7CiAgICAgfQotCisjZW5kaWYKICAgICByZXR1cm4gMDsK
IH0KIApAQCAtMTI2LDIyICsxNjAsMjQgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6cGFyZQogICAgICAgICByZXR1cm4gcmVuZGVyZXItPnBhcmVudCgpOwogICAgIGlmICht
X3BhcmVudEZsb3dSZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG1fcGFyZW50Rmxvd1JlbmRlcmVy
OwotCi0gICAgcmV0dXJuIG1fcGFyZW50RGV0YWlscy5ub2RlKCkgPyBtX3BhcmVudERldGFpbHMu
bm9kZSgpLT5yZW5kZXJlcigpIDogMDsKKyAgICBpZiAoQ29udGFpbmVyTm9kZSogcGFyZW50Tm9k
ZSA9IHBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpKQorICAgICAgICByZXR1cm4gcGFy
ZW50Tm9kZS0+cmVuZGVyZXIoKTsKKyAgICByZXR1cm4gMDsKIH0KIAogYm9vbCBOb2RlUmVuZGVy
aW5nQ29udGV4dDo6c2hvdWxkQ3JlYXRlUmVuZGVyZXIoKSBjb25zdAogewogICAgIGlmICghbV9u
b2RlLT5kb2N1bWVudCgpLT5zaG91bGRDcmVhdGVSZW5kZXJlcnMoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICghbV9wYXJlbnREZXRhaWxzLm5vZGUoKSkKKyAgICBDb250YWluZXJO
b2RlKiBwYXJlbnROb2RlID0gcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCk7CisgICAg
aWYgKCFwYXJlbnROb2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgUmVuZGVyT2JqZWN0
KiBwYXJlbnRSZW5kZXJlciA9IHRoaXMtPnBhcmVudFJlbmRlcmVyKCk7CiAgICAgaWYgKCFwYXJl
bnRSZW5kZXJlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghcGFyZW50UmVuZGVy
ZXItPmNhbkhhdmVDaGlsZHJlbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFt
X3BhcmVudERldGFpbHMubm9kZSgpLT5jaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKCp0aGlzKSkK
KyAgICBpZiAoIXBhcmVudE5vZGUtPmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoKnRoaXMpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNzYsNyArMjEy
LDEzIEBAIHZvaWQgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om1vdmVUb0Zsb3dUaHIKIAogYm9vbCBO
b2RlUmVuZGVyaW5nQ29udGV4dDo6aXNPbkVuY2Fwc3VsYXRpb25Cb3VuZGFyeSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIGlzT25VcHBlckVuY2Fwc3VsYXRpb25Cb3VuZGFyeSgpIHx8IGlzTG93ZXJF
bmNhcHN1bGF0aW9uQm91bmRhcnkobV9wYXJlbnREZXRhaWxzLmluc2VydGlvblBvaW50KCkpIHx8
IGlzTG93ZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkobV9ub2RlLT5wYXJlbnROb2RlKCkpOworICAg
IGlmIChpc09uVXBwZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgaWYgKGlzTG93ZXJFbmNhcHN1bGF0aW9u
Qm91bmRhcnkobV9ub2RlLT5wYXJlbnROb2RlKCkpIHx8IGlzTG93ZXJFbmNhcHN1bGF0aW9uQm91
bmRhcnkobV9wYXJlbnREZXRhaWxzLmluc2VydGlvblBvaW50KCkpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBOb2RlUmVuZGVyaW5n
Q29udGV4dDo6aXNPblVwcGVyRW5jYXBzdWxhdGlvbkJvdW5kYXJ5KCkgY29uc3QKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiAxMzYxMzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBj
b3B5KQpAQCAtNjksNyArNjksMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1vdmVUb0Zsb3dUaHJl
YWRJZk5lZWRlZCgpOwogCiAgICAgTm9kZSogbV9ub2RlOworI2lmICFFTkFCTEUoU0hBRE9XX0RP
TSkKKyAgICBDb250YWluZXJOb2RlKiBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZTsK
KyNlbHNlCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpQYXJlbnRUcmF2ZXJzYWxEZXRh
aWxzIG1fcGFyZW50RGV0YWlsczsKKyNlbmRpZgogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9z
dHlsZTsKICAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIG1fcGFyZW50Rmxvd1JlbmRlcmVyOwog
ICAgIEF0b21pY1N0cmluZyBtX2Zsb3dUaHJlYWQ7CkBAIC04MiwxMiArODYsMjAgQEAgaW5saW5l
IE5vZGUqIE5vZGVSZW5kZXJpbmdDb250ZXh0Ojpub2RlKAogCiBpbmxpbmUgQ29udGFpbmVyTm9k
ZSogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgp
IGNvbnN0CiB7CisjaWYgIUVOQUJMRShTSEFET1dfRE9NKQorICAgIHJldHVybiBtX3BhcmVudE5v
ZGVGb3JSZW5kZXJpbmdBbmRTdHlsZTsKKyNlbHNlCiAgICAgcmV0dXJuIG1fcGFyZW50RGV0YWls
cy5ub2RlKCk7CisjZW5kaWYKIH0KIAogaW5saW5lIGJvb2wgTm9kZVJlbmRlcmluZ0NvbnRleHQ6
OnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShTSEFET1dfRE9N
KQorICAgIHJldHVybiBmYWxzZTsKKyNlbHNlCiAgICAgcmV0dXJuIG1fcGFyZW50RGV0YWlscy5y
ZXNldFN0eWxlSW5oZXJpdGFuY2UoKTsKKyNlbmRpZgogfQogCiBpbmxpbmUgY29uc3QgUmVuZGVy
U3R5bGUqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpzdHlsZSgpIGNvbnN0CkBAIC05Nyw3ICsxMDks
MTEgQEAgaW5saW5lIGNvbnN0IFJlbmRlclN0eWxlKiBOb2RlUmVuZGVyaW5nQwogCiBpbmxpbmUg
SW5zZXJ0aW9uUG9pbnQqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjppbnNlcnRpb25Qb2ludCgpIGNv
bnN0CiB7CisjaWYgIUVOQUJMRShTSEFET1dfRE9NKQorICAgIHJldHVybiAwOworI2Vsc2UKICAg
ICByZXR1cm4gbV9wYXJlbnREZXRhaWxzLmluc2VydGlvblBvaW50KCk7CisjZW5kaWYKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAko
cmV2aXNpb24gMTM2MTMzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Niw4ICs1NiwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dHJ1Y3QgU2FtZVNpemVBc1NoYWRvd1Jvb3QgOiBwdWJsaWMgRG9jdW1lbnRGcmFnbWVudCwgcHVi
bGljIFRyZWVTY29wZSwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFNoYWRvd1Jvb3Q+IHsK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICB2b2lkKiBwb2ludGVyc1szXTsKICAgICB1bnNp
Z25lZCBjb3VudGVyc0FuZEZsYWdzWzFdOworI2Vsc2UKKyAgICB2b2lkKiBwb2ludGVyc1syXTsK
KyAgICB1bnNpZ25lZCBjb3VudGVyc0FuZEZsYWdzWzJdOworI2VuZGlmCiB9OwogCiBDT01QSUxF
X0FTU0VSVChzaXplb2YoU2hhZG93Um9vdCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNTaGFkb3dSb290
KSwgc2hhZG93cm9vdF9zaG91bGRfc3RheV9zbWFsbCk7CkBAIC02Nyw2ICs3Miw5IEBAIFNoYWRv
d1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQqIGRvY3VtZW4KICAgICAsIFRyZWVTY29wZSh0aGlz
KQogICAgICwgbV9wcmV2KDApCiAgICAgLCBtX25leHQoMCkKKyNpZiAhRU5BQkxFKFNIQURPV19E
T00pCisgICAgLCBtX2VsZW1lbnRTaGFkb3dDb3VudChmYWxzZSkKKyNlbmRpZgogICAgICwgbV9u
dW1iZXJPZlN0eWxlcygwKQogICAgICwgbV9hcHBseUF1dGhvclN0eWxlcyhmYWxzZSkKICAgICAs
IG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlKGZhbHNlKQpAQCAtMjA5LDEyICsyMTcsMTIgQEAgRWxl
bWVudFNoYWRvdyogU2hhZG93Um9vdDo6b3duZXIoKSBjb25zdAogICAgICAgICByZXR1cm4gaG9z
dCgpLT5zaGFkb3coKTsKICAgICByZXR1cm4gMDsKIH0KLQorI2lmIEVOQUJMRShTSEFET01fRE9N
KQogYm9vbCBTaGFkb3dSb290OjpoYXNJbnNlcnRpb25Qb2ludCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGhhc1NoYWRvd0luc2VydGlvblBvaW50KCkgfHwgaGFzQ29udGVudEVsZW1lbnQoKTsKIH0K
LQorI2VuZGlmCiBib29sIFNoYWRvd1Jvb3Q6OmFwcGx5QXV0aG9yU3R5bGVzKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9hcHBseUF1dGhvclN0eWxlczsKQEAgLTI4OSw3ICsyOTcsNyBAQCB2b2lk
IFNoYWRvd1Jvb3Q6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vCiAKICAgICBEb2N1bWVudEZyYWdt
ZW50OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CiB9Ci0KKyNpZiBFTkFCTEUoU0hBRE9N
X0RPTSkKIEluc2VydGlvblBvaW50KiBTaGFkb3dSb290Ojphc3NpZ25lZFRvKCkgY29uc3QKIHsK
ICAgICBpZiAoIWRpc3RyaWJ1dGlvbkRhdGEoKSkKQEAgLTMxOSw3ICszMjcsNyBAQCBjb25zdCBW
ZWN0b3I8SW5zZXJ0aW9uUG9pbnQqPiYgU2hhZG93Um9vCiAKICAgICByZXR1cm4gZGlzdHJpYnV0
aW9uRGF0YSgpID8gZGlzdHJpYnV0aW9uRGF0YSgpLT5lbnN1cmVJbnNlcnRpb25Qb2ludExpc3Qo
dGhpcykgOiBlbXB0eVZlY3RvcjsKIH0KLQorI2VuZGlmCiB2b2lkIFNoYWRvd1Jvb3Q6OnJlZ2lz
dGVyU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKQogewogICAgICsrbV9udW1iZXJPZlN0eWxlczsKQEAg
LTMzMiw3ICszNDAsNyBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnVucmVnaXN0ZXJTY29wZWRIVE1MU3R5
CiAgICAgLS1tX251bWJlck9mU3R5bGVzOwogICAgIHNldEhhc1Njb3BlZEhUTUxTdHlsZUNoaWxk
KG1fbnVtYmVyT2ZTdHlsZXMgPiAwKTsKIH0KLQorI2lmIEVOQUJMRShTSEFET01fRE9NKQogaW5s
aW5lIFNoYWRvd1Jvb3RDb250ZW50RGlzdHJpYnV0aW9uRGF0YSogU2hhZG93Um9vdDo6ZW5zdXJl
RGlzdHJpYnV0aW9uRGF0YSgpCiB7CiAgICAgaWYgKG1fZGlzdHJpYnV0aW9uRGF0YSkKQEAgLTQw
NCw2ICs0MTIsMjggQEAgdW5zaWduZWQgU2hhZG93Um9vdDo6Y291bnRFbGVtZW50U2hhZG93KAog
CiAgICAgcmV0dXJuIGRpc3RyaWJ1dGlvbkRhdGEoKS0+bnVtYmVyT2ZFbGVtZW50U2hhZG93Q2hp
bGRyZW4oKTsKIH0KKyNlbHNlCit2b2lkIFNoYWRvd1Jvb3Q6OnJlZ2lzdGVyRWxlbWVudFNoYWRv
dygpCit7CisgICAgKyttX2VsZW1lbnRTaGFkb3dDb3VudDsKK30KKwordm9pZCBTaGFkb3dSb290
Ojp1bnJlZ2lzdGVyRWxlbWVudFNoYWRvdygpCit7CisgICAgQVNTRVJUKG1fZWxlbWVudFNoYWRv
d0NvdW50KTsKKyAgICAtLW1fZWxlbWVudFNoYWRvd0NvdW50OworfQorCitib29sIFNoYWRvd1Jv
b3Q6Omhhc0VsZW1lbnRTaGFkb3coKSBjb25zdAoreworICAgIHJldHVybiAhIW1fZWxlbWVudFNo
YWRvd0NvdW50OworfQorCit1bnNpZ25lZCBTaGFkb3dSb290Ojpjb3VudEVsZW1lbnRTaGFkb3co
KSBjb25zdAoreworICAgIHJldHVybiBtX2VsZW1lbnRTaGFkb3dDb3VudDsKK30KKyNlbmRpZgog
CiB2b2lkIFNoYWRvd1Jvb3Q6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1l
bW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CkBAIC00MTIsNyArNDQyLDkgQEAgdm9pZCBTaGFkb3dS
b290OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcgogICAgIFRyZWVTY29wZTo6cmVwb3J0TWVtb3J5
VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9wcmV2KTsKICAg
ICBpbmZvLmFkZE1lbWJlcihtX25leHQpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlu
Zm8uYWRkTWVtYmVyKG1fZGlzdHJpYnV0aW9uRGF0YSk7CisjZW5kaWYKIH0KIAogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5oCShyZXZpc2lvbiAxMzYxMzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZElu
dG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJv
bShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7Ci0KKyNpZiBFTkFCTEUoU0hBRE9NX0RPTSkKICAg
ICBib29sIGlzVXNlZEZvclJlbmRlcmluZygpIGNvbnN0OwogICAgIEluc2VydGlvblBvaW50KiBh
c3NpZ25lZFRvKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBc3NpZ25lZFRvKEluc2VydGlvblBvaW50
Kik7CkBAIC05OCwxNCArOTgsMTQgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJDb250ZW50
RWxlbWVudCgpOwogICAgIHZvaWQgdW5yZWdpc3RlckNvbnRlbnRFbGVtZW50KCk7CiAgICAgYm9v
bCBoYXNDb250ZW50RWxlbWVudCgpIGNvbnN0OwotCisjZW5kaWYKICAgICB2b2lkIHJlZ2lzdGVy
RWxlbWVudFNoYWRvdygpOwogICAgIHZvaWQgdW5yZWdpc3RlckVsZW1lbnRTaGFkb3coKTsKICAg
ICBib29sIGhhc0VsZW1lbnRTaGFkb3coKSBjb25zdDsKICAgICB1bnNpZ25lZCBjb3VudEVsZW1l
bnRTaGFkb3coKSBjb25zdDsKLQorI2lmIEVOQUJMRShTSEFET01fRE9NKQogICAgIGNvbnN0IFZl
Y3RvcjxJbnNlcnRpb25Qb2ludCo+JiBpbnNlcnRpb25Qb2ludExpc3QoKTsKLQorI2VuZGlmCiAg
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjb3BlZEhUTUxTdHlsZUNoaWxkKCkgT1ZFUlJJ
REU7CiAKQEAgLTEyMSwxOSArMTIxLDI1IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcg
bm9kZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2Rl
KGJvb2wgZGVlcCk7CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUp
IGNvbnN0OworI2lmIEVOQUJMRShTSEFET01fRE9NKQogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSog
YWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpIE9WRVJSSURFOworI2VuZGlmCiAgICAg
dmlydHVhbCBib29sIGRvY3VtZW50RnJhZ21lbnRJc1NoYWRvd1Jvb3QoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIHNldFR5cGUoU2hhZG93Um9vdFR5cGUgdHlw
ZSkgeyBtX2lzQXV0aG9yU2hhZG93Um9vdCA9IHR5cGUgPT0gQXV0aG9yU2hhZG93Um9vdDsgfQot
CisjaWYgRU5BQkxFKFNIQURPTV9ET00pCiAgICAgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRp
b25EYXRhKiBkaXN0cmlidXRpb25EYXRhKCkgeyByZXR1cm4gbV9kaXN0cmlidXRpb25EYXRhLmdl
dCgpOyB9CiAgICAgY29uc3QgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhKiBkaXN0
cmlidXRpb25EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kaXN0cmlidXRpb25EYXRhLmdldCgpOyB9
CiAgICAgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhKiBlbnN1cmVEaXN0cmlidXRp
b25EYXRhKCk7Ci0KKyNlbmRpZgogICAgIFNoYWRvd1Jvb3QqIG1fcHJldjsKICAgICBTaGFkb3dS
b290KiBtX25leHQ7CisjaWYgRU5BQkxFKFNIQURPTV9ET00pCiAgICAgT3duUHRyPFNoYWRvd1Jv
b3RDb250ZW50RGlzdHJpYnV0aW9uRGF0YT4gbV9kaXN0cmlidXRpb25EYXRhOwotICAgIHVuc2ln
bmVkIG1fbnVtYmVyT2ZTdHlsZXMgOiAyODsKKyNlbHNlCisgICAgdW5zaWduZWQgbV9lbGVtZW50
U2hhZG93Q291bnQ7CisjZW5kaWYKKyAgICB1bnNpZ25lZCBtX251bWJlck9mU3R5bGVzIDogMjc7
CiAgICAgdW5zaWduZWQgbV9hcHBseUF1dGhvclN0eWxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9y
ZXNldFN0eWxlSW5oZXJpdGFuY2UgOiAxOwogICAgIHVuc2lnbmVkIG1faXNBdXRob3JTaGFkb3dS
b290IDogMTsKQEAgLTE0OSwxMiArMTU1LDEyIEBAIGlubGluZSB2b2lkIFNoYWRvd1Jvb3Q6OnNl
dEhvc3QoRWxlbWVudCoKIHsKICAgICBzZXRQYXJlbnRPckhvc3ROb2RlKGhvc3QpOwogfQotCisj
aWYgRU5BQkxFKFNIQURPTV9ET00pCiBpbmxpbmUgYm9vbCBTaGFkb3dSb290Ojppc1VzZWRGb3JS
ZW5kZXJpbmcoKSBjb25zdAogewogICAgIHJldHVybiBpc1lvdW5nZXN0KCkgfHwgYXNzaWduZWRU
bygpOwogfQotCisjZW5kaWYKIGlubGluZSBFbGVtZW50KiBTaGFkb3dSb290OjphY3RpdmVFbGVt
ZW50KCkgY29uc3QKIHsKICAgICBpZiAoTm9kZSogbm9kZSA9IHRyZWVTY29wZSgpLT5mb2N1c2Vk
Tm9kZSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNw
cAkocmV2aXNpb24gMTM2MTMzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBIVE1MRGV0
YWlsc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKAogCiBib29sIEhUTUxEZXRhaWxzRWxlbWVudDo6
Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY2hp
bGRDb250ZXh0KSBjb25zdAogewotICAgIGlmICghY2hpbGRDb250ZXh0LmlzT25FbmNhcHN1bGF0
aW9uQm91bmRhcnkoKSkKKyAgICBpZiAoIWNoaWxkQ29udGV4dC5pc09uRW5jYXBzdWxhdGlvbkJv
dW5kYXJ5KCkgJiYgIWlzTG93ZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkoc2hhZG93KCktPmRpc3Ry
aWJ1dG9yKCkuZmluZEluc2VydGlvblBvaW50Rm9yKGNoaWxkQ29udGV4dC5ub2RlKCkpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG1faXNPcGVuKQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzYxMzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3
IEBAIHZvaWQgSFRNTExJRWxlbWVudDo6YXR0YWNoKCkKIAogICAgICAgICAvLyBGaW5kIHRoZSBl
bmNsb3NpbmcgbGlzdCBub2RlLgogICAgICAgICBOb2RlKiBsaXN0Tm9kZSA9IDA7CisjaWYgRU5B
QkxFKFNIQURPV19ET00pCiAgICAgICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIo
dGhpcyk7CiAgICAgICAgIHdoaWxlICghbGlzdE5vZGUpIHsKICAgICAgICAgICAgIHdhbGtlci5w
YXJlbnQoKTsKQEAgLTEwNCw2ICsxMDUsMTQgQEAgdm9pZCBIVE1MTElFbGVtZW50OjphdHRhY2go
KQogICAgICAgICAgICAgaWYgKHdhbGtlci5nZXQoKS0+aGFzVGFnTmFtZSh1bFRhZykgfHwgd2Fs
a2VyLmdldCgpLT5oYXNUYWdOYW1lKG9sVGFnKSkKICAgICAgICAgICAgICAgICBsaXN0Tm9kZSA9
IHdhbGtlci5nZXQoKTsKICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgZm9yIChOb2RlKiBub2Rl
ID0gcGFyZW50Tm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7CisgICAg
ICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh1bFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShv
bFRhZykpeworICAgICAgICAgICAgICAgIGxpc3ROb2RlID0gbm9kZTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCiAKICAgICAgICAgLy8g
SWYgd2UgYXJlIG5vdCBpbiBhIGxpc3QsIHRlbGwgdGhlIHJlbmRlcmVyIHNvIGl0IGNhbiBwb3Np
dGlvbiB1cyBpbnNpZGUuCiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gY2hhbmdlIG91ciBz
dHlsZSB0byBzYXkgImluc2lkZSIgc2luY2UgdGhhdCB3b3VsZCBhZmZlY3QgbmVzdGVkIG5vZGVz
LgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxMzYxMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiSFRNTE9w
dEdyb3VwRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFbGVt
ZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFNlbGVj
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJNZW51TGlzdC5oIgpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzNjEzMykKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAjaW5jbHVkZSAiSFRNTERhdGFMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxMzYxMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVz
c0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpZiBFTkFC
TEUoUFJPR1JFU1NfRUxFTUVOVCkKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJF
bGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgpAQCAtMzEsNyAr
MzIsNiBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJQcm9ncmVz
c1NoYWRvd0VsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJQcm9ncmVzcy5oIgotI2luY2x1ZGUg
IlNlbGVjdFJ1bGVGZWF0dXJlU2V0LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U3VtbWFyeUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFN1bW1hcnlFbGVtZW50LmNwcAkocmV2aXNpb24gMTM2MTMzKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3
IEBAIFJlbmRlck9iamVjdCogSFRNTFN1bW1hcnlFbGVtZW50OjpjcmVhdGUKIAogYm9vbCBIVE1M
U3VtbWFyeUVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRl
cmluZ0NvbnRleHQmIGNoaWxkQ29udGV4dCkgY29uc3QKIHsKLSAgICByZXR1cm4gY2hpbGRDb250
ZXh0LmlzT25FbmNhcHN1bGF0aW9uQm91bmRhcnkoKSAmJiBIVE1MRWxlbWVudDo6Y2hpbGRTaG91
bGRDcmVhdGVSZW5kZXJlcihjaGlsZENvbnRleHQpOworICAgIHJldHVybiAoY2hpbGRDb250ZXh0
LmlzT25FbmNhcHN1bGF0aW9uQm91bmRhcnkoKSB8fCBpc0xvd2VyRW5jYXBzdWxhdGlvbkJvdW5k
YXJ5KHNoYWRvdygpLT5kaXN0cmlidXRvcigpLmZpbmRJbnNlcnRpb25Qb2ludEZvcihjaGlsZENv
bnRleHQubm9kZSgpKSkpICYmIEhUTUxFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVy
KGNoaWxkQ29udGV4dCk7CiB9CiAKIHZvaWQgSFRNTFN1bW1hcnlFbGVtZW50OjpjcmVhdGVTaGFk
b3dTdWJ0cmVlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAJKHJldmlzaW9uIDEz
NjEzMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDkxLDcgKzQ5MSw3IEBAIHZvaWQgSW5wdXRUeXBlOjpkZXN0cm95U2hhZG93U3VidHJl
ZSgpCiAgICAgLy8gQXV0aG9yU2hhZG93Um9vdCB0byBIVE1MSW5wdXRFbGVtZW50LgogICAgIHdo
aWxlICgocm9vdCA9IHJvb3QtPnlvdW5nZXJTaGFkb3dSb290KCkpKSB7CiAgICAgICAgIHJvb3Qt
PnJlbW92ZUFsbENoaWxkcmVuKCk7Ci0gICAgICAgIHJvb3QtPmFwcGVuZENoaWxkKEhUTUxTaGFk
b3dFbGVtZW50OjpjcmVhdGUoc2hhZG93VGFnLCBlbGVtZW50KCktPmRvY3VtZW50KCkpKTsKKyAg
ICAgICAgcm9vdC0+YXBwZW5kQ2hpbGQoSFRNTEVsZW1lbnQ6OmNyZWF0ZShzaGFkb3dUYWcsIGVs
ZW1lbnQoKS0+ZG9jdW1lbnQoKSkpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCShyZXZpc2lvbiAxMzYx
MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
KwogI2luY2x1ZGUgIkNvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiRWxlbWVudFNo
YWRvdy5oIgogI2luY2x1ZGUgIkhUTUxDb250ZW50RWxlbWVudC5oIgpAQCAtMjU4LDMgKzI2MCw1
IEBAIHZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjppbnZhbGlkYXRlRGlzdHIKIH0KIAogfQorCisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0
cmlidXRvci5oCShyZXZpc2lvbiAxMzYxMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Db250ZW50RGlzdHJpYnV0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQAog
I2lmbmRlZiBDb250ZW50RGlzdHJpYnV0b3JfaAogI2RlZmluZSBDb250ZW50RGlzdHJpYnV0b3Jf
aAogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAg
LTE0MywzICsxNDUsNSBAQCBpbmxpbmUgYm9vbCBDb250ZW50RGlzdHJpYnV0b3I6Om5lZWRzRGlz
CiB9CiAKICNlbmRpZgorI2VuZGlmCisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAJKHJldmlzaW9uIDEzNjEzMykKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkNvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwog
I2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogI2luY2x1ZGUgIkluc2VydGlvblBvaW50Lmgi
CiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCkBAIC05MCwzICs5Miw1IEBAIGJvb2wgQ29u
dGVudFNlbGVjdG9yUXVlcnk6Om1hdGNoZXMoY29uc3QKIH0KIAogfQorCisjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnku
aAkocmV2aXNpb24gMTM2MTMzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVu
dFNlbGVjdG9yUXVlcnkuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQAogI2lmbmRl
ZiBDb250ZW50U2VsZWN0b3JRdWVyeV9oCiAjZGVmaW5lIENvbnRlbnRTZWxlY3RvclF1ZXJ5X2gK
IAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0Lmgi
CiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JRdWVyeS5o
IgpAQCAtNzcsMyArNzksNCBAQCBwcml2YXRlOgogfQogCiAjZW5kaWYKKyNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxMzYxMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29u
dGVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCiAKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKKwogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNvbnRl
bnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCkBAIC0y
MjgsMyArMjMwLDYgQEAgYm9vbCBIVE1MQ29udGVudEVsZW1lbnQ6OnZhbGlkYXRlU2VsZWN0KAog
CiAKIH0KKworI2VuZGlmCisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxD
b250ZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0hUTUxDb250ZW50RWxlbWVudC5oCShyZXZpc2lvbiAxMzYxMzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NiArMzEsOCBAQAogI2lmbmRlZiBIVE1MQ29udGVudEVsZW1lbnRfaAogI2RlZmluZSBIVE1MQ29u
dGVudEVsZW1lbnRfaAogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKICNpbmNsdWRlICJDU1NT
ZWxlY3Rvckxpc3QuaCIKICNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CkBAIC05NSwzICs5Nyw0IEBAIGlubGluZSBIVE1MQ29udGVudEVsZW1lbnQq
IHRvSFRNTENvbnRlbnQKIH0KIAogI2VuZGlmCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5jcHAJKHJldmlzaW9uIDEzNjEz
MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50LmgiCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KQEAgLTk0LDMgKzk2LDUgQEAgY29uc3QgQ1NTU2Vs
ZWN0b3JMaXN0JiBIVE1MU2hhZG93RWxlbWVudAogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0Vs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hh
ZG93RWxlbWVudC5oCShyZXZpc2lvbiAxMzYxMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9IVE1MU2hhZG93RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw4IEBA
CiAjaWZuZGVmIEhUTUxTaGFkb3dFbGVtZW50X2gKICNkZWZpbmUgSFRNTFNoYWRvd0VsZW1lbnRf
aAogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKICNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTc4LDQgKzgwLDUgQEAgaW5saW5lIGNv
bnN0IEhUTUxTaGFkb3dFbGVtZW50KiB0b0hUTUxTaAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKKyNlbmRpZgogI2VuZGlmIC8vIEhUTUxTaGFkb3dFbGVtZW50X2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAJKHJldmlzaW9uIDEzNjEz
MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkluc2VydGlvblBvaW50LmgiCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogI2luY2x1
ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAi
U3RhdGljTm9kZUxpc3QuaCIKQEAgLTE3OCwzICsxODAsNSBAQCB2b2lkIEluc2VydGlvblBvaW50
OjpzZXRSZXNldFN0eWxlSW5oZXJpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgJ
KHJldmlzaW9uIDEzNjEzMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlv
blBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAKICNpZm5kZWYgSW5zZXJ0
aW9uUG9pbnRfaAogI2RlZmluZSBJbnNlcnRpb25Qb2ludF9oCiAKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKKwogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogI2luY2x1ZGUgIkNvbnRlbnRE
aXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKQEAgLTE3Myw0ICsxNzUs
NSBAQCBpbmxpbmUgSW5zZXJ0aW9uUG9pbnQqIHJlc29sdmVSZXByb2plY3RpCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAorI2VuZGlmCiAjZW5kaWYgLy8gSW5zZXJ0aW9uUG9pbnRfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTM2MTMz
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NSw2ICs2NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAorI2lmIEVOQUJMRShTSEFET1df
RE9NKQorCit0eXBlZGVmIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciBUcmVlV2Fsa2VyOworCiBz
dGF0aWMgaW5saW5lIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXJGcm9tKGNvbnN0IE5v
ZGUqIG5vZGUpCiB7CiAgICAgcmV0dXJuIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcihub2RlLCBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OkRvTm90Q3Jvc3NVcHBlckJvdW5kYXJ5KTsKQEAgLTg0
LDYgKzg4LDQzIEBAIHN0YXRpYyBpbmxpbmUgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHcKICAg
ICByZXR1cm4gd2Fsa2VyOwogfQogCisjZWxzZQorCitjbGFzcyBUcmVlV2Fsa2VyIHsKK3B1Ymxp
YzoKKyAgICBUcmVlV2Fsa2VyKGNvbnN0IE5vZGUqIG5vZGUpIDogbV9ub2RlKG5vZGUpLCBtX2N1
cnJlbnQobm9kZSkgeyB9CisgICAgY29uc3QgTm9kZSogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9j
dXJyZW50OyB9CisgICAgTm9kZSogZ2V0KCkgeyByZXR1cm4gY29uc3RfY2FzdDxOb2RlKj4obV9j
dXJyZW50KTsgfQorICAgIHZvaWQgcGFyZW50KCkgeyBtX2N1cnJlbnQgPSBtX2N1cnJlbnQtPnBh
cmVudE5vZGUoKTsgfQorICAgIHZvaWQgbmV4dCgpIHsgbV9jdXJyZW50ID0gbV9jdXJyZW50LT50
cmF2ZXJzZU5leHROb2RlKG1fbm9kZSk7IH0KKyAgICB2b2lkIHByZXZpb3VzKCkgeyBtX2N1cnJl
bnQgPSBtX2N1cnJlbnQtPnRyYXZlcnNlUHJldmlvdXNOb2RlKG1fbm9kZSk7IH0KKyAgICB2b2lk
IGxhc3RDaGlsZCgpIHsgbV9jdXJyZW50ID0gbV9jdXJyZW50LT5sYXN0Q2hpbGQoKTsgfQorcHJp
dmF0ZToKKyAgICBjb25zdCBOb2RlKiBtX25vZGU7CisgICAgY29uc3QgTm9kZSogbV9jdXJyZW50
OworfTsKKworc3RhdGljIGlubGluZSBUcmVlV2Fsa2VyIHdhbGtlckZyb20oY29uc3QgTm9kZSog
bm9kZSkKK3sKKyAgICByZXR1cm4gVHJlZVdhbGtlcihub2RlKTsKK30KKworc3RhdGljIGlubGlu
ZSBUcmVlV2Fsa2VyIHdhbGtlckZyb21OZXh0KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgVHJl
ZVdhbGtlciB3YWxrZXIgPSBUcmVlV2Fsa2VyKG5vZGUpOworICAgIHdhbGtlci5uZXh0KCk7Cisg
ICAgcmV0dXJuIHdhbGtlcjsKK30KKworc3RhdGljIGlubGluZSBUcmVlV2Fsa2VyIHdhbGtlckZy
b21QcmV2aW91cyhjb25zdCBOb2RlKiBub2RlKQoreworICAgIFRyZWVXYWxrZXIgd2Fsa2VyID0g
VHJlZVdhbGtlcihub2RlKTsKKyAgICB3YWxrZXIucHJldmlvdXMoKTsKKyAgICByZXR1cm4gd2Fs
a2VyOworfQorCisjZW5kaWYKKwogc3RhdGljIGlubGluZSBOb2RlKiBuZXh0Tm9kZShjb25zdCBO
b2RlKiBub2RlKQogewogICAgIHJldHVybiB3YWxrZXJGcm9tTmV4dChub2RlKS5nZXQoKTsKQEAg
LTExOSw3ICsxNjAsOCBAQCBFbGVtZW50KiBGb2N1c05hdmlnYXRpb25TY29wZTo6b3duZXIoKSBj
CiBGb2N1c05hdmlnYXRpb25TY29wZSBGb2N1c05hdmlnYXRpb25TY29wZTo6Zm9jdXNOYXZpZ2F0
aW9uU2NvcGVPZihOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlKTsKLSAgICBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUsIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6
RG9Ob3RDcm9zc1VwcGVyQm91bmRhcnkpOworICAgIFRyZWVXYWxrZXIgd2Fsa2VyID0gd2Fsa2Vy
RnJvbShub2RlKTsKKwogICAgIE5vZGUqIHJvb3QgPSBub2RlOwogICAgIHdoaWxlICh3YWxrZXIu
Z2V0KCkpIHsKICAgICAgICAgcm9vdCA9IHdhbGtlci5nZXQoKTsKQEAgLTQ0OCw3ICs0OTAsNyBA
QCBOb2RlKiBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2RlCiBOb2RlKiBGb2N1c0Nv
bnRyb2xsZXI6OmZpbmROb2RlV2l0aEV4YWN0VGFiSW5kZXgoTm9kZSogc3RhcnQsIGludCB0YWJJ
bmRleCwgS2V5Ym9hcmRFdmVudCogZXZlbnQsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsK
ICAgICAvLyBTZWFyY2ggaXMgaW5jbHVzaXZlIG9mIHN0YXJ0Ci0gICAgZm9yIChDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXIgd2Fsa2VyID0gd2Fsa2VyRnJvbShzdGFydCk7IHdhbGtlci5nZXQoKTsg
ZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCA/IHdhbGtlci5uZXh0KCkgOiB3YWxr
ZXIucHJldmlvdXMoKSkgeworICAgIGZvciAoVHJlZVdhbGtlciB3YWxrZXIgPSB3YWxrZXJGcm9t
KHN0YXJ0KTsgd2Fsa2VyLmdldCgpOyBkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25Gb3J3YXJk
ID8gd2Fsa2VyLm5leHQoKSA6IHdhbGtlci5wcmV2aW91cygpKSB7CiAgICAgICAgIGlmIChzaG91
bGRWaXNpdCh3YWxrZXIuZ2V0KCksIGV2ZW50KSAmJiBhZGp1c3RlZFRhYkluZGV4KHdhbGtlci5n
ZXQoKSwgZXZlbnQpID09IHRhYkluZGV4KQogICAgICAgICAgICAgcmV0dXJuIHdhbGtlci5nZXQo
KTsKICAgICB9CkBAIC00NjAsMTQgKzUwMiwxMyBAQCBzdGF0aWMgTm9kZSogbmV4dE5vZGVXaXRo
R3JlYXRlclRhYkluZGV4CiAgICAgLy8gU2VhcmNoIGlzIGluY2x1c2l2ZSBvZiBzdGFydAogICAg
IGludCB3aW5uaW5nVGFiSW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNob3J0Pjo6bWF4KCkg
KyAxOwogICAgIE5vZGUqIHdpbm5lciA9IDA7Ci0gICAgZm9yIChDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIgd2Fsa2VyID0gd2Fsa2VyRnJvbShzdGFydCk7IHdhbGtlci5nZXQoKTsgd2Fsa2VyLm5l
eHQoKSkgeworICAgIGZvciAoVHJlZVdhbGtlciB3YWxrZXIgPSB3YWxrZXJGcm9tKHN0YXJ0KTsg
d2Fsa2VyLmdldCgpOyB3YWxrZXIubmV4dCgpKSB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSB3YWxr
ZXIuZ2V0KCk7CiAgICAgICAgIGlmIChzaG91bGRWaXNpdChub2RlLCBldmVudCkgJiYgbm9kZS0+
dGFiSW5kZXgoKSA+IHRhYkluZGV4ICYmIG5vZGUtPnRhYkluZGV4KCkgPCB3aW5uaW5nVGFiSW5k
ZXgpIHsKICAgICAgICAgICAgIHdpbm5lciA9IG5vZGU7CiAgICAgICAgICAgICB3aW5uaW5nVGFi
SW5kZXggPSBub2RlLT50YWJJbmRleCgpOwogICAgICAgICB9CiAgICAgfQotCiAgICAgcmV0dXJu
IHdpbm5lcjsKIH0KIApAQCAtNDc2LDcgKzUxNyw3IEBAIHN0YXRpYyBOb2RlKiBwcmV2aW91c05v
ZGVXaXRoTG93ZXJUYWJJbmQKICAgICAvLyBTZWFyY2ggaXMgaW5jbHVzaXZlIG9mIHN0YXJ0CiAg
ICAgaW50IHdpbm5pbmdUYWJJbmRleCA9IDA7CiAgICAgTm9kZSogd2lubmVyID0gMDsKLSAgICBm
b3IgKENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIgPSB3YWxrZXJGcm9tKHN0YXJ0KTsg
d2Fsa2VyLmdldCgpOyB3YWxrZXIucHJldmlvdXMoKSkgeworICAgIGZvciAoVHJlZVdhbGtlciB3
YWxrZXIgPSB3YWxrZXJGcm9tKHN0YXJ0KTsgd2Fsa2VyLmdldCgpOyB3YWxrZXIucHJldmlvdXMo
KSkgewogICAgICAgICBOb2RlKiBub2RlID0gd2Fsa2VyLmdldCgpOwogICAgICAgICBpbnQgY3Vy
cmVudFRhYkluZGV4ID0gYWRqdXN0ZWRUYWJJbmRleChub2RlLCBldmVudCk7CiAgICAgICAgIGlm
ICgoc2hvdWxkVmlzaXQobm9kZSwgZXZlbnQpIHx8IGlzTm9uRm9jdXNhYmxlU2hhZG93SG9zdChu
b2RlLCBldmVudCkpICYmIGN1cnJlbnRUYWJJbmRleCA8IHRhYkluZGV4ICYmIGN1cnJlbnRUYWJJ
bmRleCA+IHdpbm5pbmdUYWJJbmRleCkgewpAQCAtNDkzLDcgKzUzNCw3IEBAIE5vZGUqIEZvY3Vz
Q29udHJvbGxlcjo6bmV4dEZvY3VzYWJsZU5vZGUKICAgICAgICAgaW50IHRhYkluZGV4ID0gYWRq
dXN0ZWRUYWJJbmRleChzdGFydCwgZXZlbnQpOwogICAgICAgICAvLyBJZiBhIG5vZGUgaXMgZXhj
bHVkZWQgZnJvbSB0aGUgbm9ybWFsIHRhYmJpbmcgY3ljbGUsIHRoZSBuZXh0IGZvY3VzYWJsZSBu
b2RlIGlzIGRldGVybWluZWQgYnkgdHJlZSBvcmRlcgogICAgICAgICBpZiAodGFiSW5kZXggPCAw
KSB7Ci0gICAgICAgICAgICBmb3IgKENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIgPSB3
YWxrZXJGcm9tTmV4dChzdGFydCk7IHdhbGtlci5nZXQoKTsgd2Fsa2VyLm5leHQoKSkgeworICAg
ICAgICAgICAgZm9yIChUcmVlV2Fsa2VyIHdhbGtlciA9IHdhbGtlckZyb21OZXh0KHN0YXJ0KTsg
d2Fsa2VyLmdldCgpOyB3YWxrZXIubmV4dCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHNob3Vs
ZFZpc2l0KHdhbGtlci5nZXQoKSwgZXZlbnQpICYmIGFkanVzdGVkVGFiSW5kZXgod2Fsa2VyLmdl
dCgpLCBldmVudCkgPj0gMCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdhbGtlci5nZXQo
KTsKICAgICAgICAgICAgIH0KQEAgLTUyMiw3ICs1NjMsNyBAQCBOb2RlKiBGb2N1c0NvbnRyb2xs
ZXI6Om5leHRGb2N1c2FibGVOb2RlCiBOb2RlKiBGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9j
dXNhYmxlTm9kZShGb2N1c05hdmlnYXRpb25TY29wZSBzY29wZSwgTm9kZSogc3RhcnQsIEtleWJv
YXJkRXZlbnQqIGV2ZW50KQogewogICAgIE5vZGUqIGxhc3QgPSAwOwotICAgIGZvciAoQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlciA9IHdhbGtlckZyb20oc2NvcGUucm9vdE5vZGUoKSk7
IHdhbGtlci5nZXQoKTsgd2Fsa2VyLmxhc3RDaGlsZCgpKQorICAgIGZvciAoVHJlZVdhbGtlciB3
YWxrZXIgPSB3YWxrZXJGcm9tKHNjb3BlLnJvb3ROb2RlKCkpOyB3YWxrZXIuZ2V0KCk7IHdhbGtl
ci5sYXN0Q2hpbGQoKSkKICAgICAgICAgbGFzdCA9IHdhbGtlci5nZXQoKTsKICAgICBBU1NFUlQo
bGFzdCk7CiAKQEAgLTU0MCw3ICs1ODEsNyBAQCBOb2RlKiBGb2N1c0NvbnRyb2xsZXI6OnByZXZp
b3VzRm9jdXNhYmxlCiAKICAgICAvLyBIb3dldmVyLCBpZiBhIG5vZGUgaXMgZXhjbHVkZWQgZnJv
bSB0aGUgbm9ybWFsIHRhYmJpbmcgY3ljbGUsIHRoZSBwcmV2aW91cyBmb2N1c2FibGUgbm9kZSBp
cyBkZXRlcm1pbmVkIGJ5IHRyZWUgb3JkZXIKICAgICBpZiAoc3RhcnRpbmdUYWJJbmRleCA8IDAp
IHsKLSAgICAgICAgZm9yIChDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyID0gd2Fsa2Vy
RnJvbShzdGFydGluZ05vZGUpOyB3YWxrZXIuZ2V0KCk7IHdhbGtlci5wcmV2aW91cygpKSB7Cisg
ICAgICAgIGZvciAoVHJlZVdhbGtlciB3YWxrZXIgPSB3YWxrZXJGcm9tKHN0YXJ0aW5nTm9kZSk7
IHdhbGtlci5nZXQoKTsgd2Fsa2VyLnByZXZpb3VzKCkpIHsKICAgICAgICAgICAgIGlmIChzaG91
bGRWaXNpdCh3YWxrZXIuZ2V0KCksIGV2ZW50KSAmJiBhZGp1c3RlZFRhYkluZGV4KHdhbGtlci5n
ZXQoKSwgZXZlbnQpID49IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsK
ICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNp
b24gMTM2MTMzKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODMsMTIgKzI4MywxOCBAQCBib29sIEludGVybmFsczo6aXNQcmVsb2Fk
ZWQoRG9jdW1lbnQqIGRvCiAKIFBhc3NSZWZQdHI8RWxlbWVudD4gSW50ZXJuYWxzOjpjcmVhdGVD
b250ZW50RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmICghZG9jdW1lbnQpIHsKICAgICAgICAgZWMg
PSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIHJl
dHVybiBIVE1MQ29udGVudEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShkb2N1bWVudCk7CisgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAg
cmV0dXJuIDA7CisjZW5kaWYKIH0KIAogRWxlbWVudCogSW50ZXJuYWxzOjpnZXRFbGVtZW50QnlJ
ZEluU2hhZG93Um9vdChOb2RlKiBzaGFkb3dSb290LCBjb25zdCBTdHJpbmcmIGlkLCBFeGNlcHRp
b25Db2RlJiBlYykKQEAgLTMwMiwxMiArMzA4LDE4IEBAIEVsZW1lbnQqIEludGVybmFsczo6Z2V0
RWxlbWVudEJ5SWRJblNoYWQKIAogYm9vbCBJbnRlcm5hbHM6OmlzVmFsaWRDb250ZW50U2VsZWN0
KEVsZW1lbnQqIGluc2VydGlvblBvaW50LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKICAgICBpZiAoIWluc2VydGlvblBvaW50IHx8ICFpbnNlcnRpb25Qb2lu
dC0+aXNJbnNlcnRpb25Qb2ludCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJS
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgcmV0dXJuIHRvSW5zZXJ0aW9u
UG9pbnQoaW5zZXJ0aW9uUG9pbnQpLT5pc1NlbGVjdFZhbGlkKCk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShpbnNlcnRpb25Qb2ludCk7CisgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Cisg
ICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogTm9kZSogSW50ZXJuYWxzOjp0cmVlU2NvcGVSb290
Tm9kZShOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTM5MywxOCArNDA1LDI0IEBA
IGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvclBzZXVkb0NsYXMKIAogYm9vbCBJbnRlcm5h
bHM6Omhhc1NoYWRvd0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNv
ZGUmIGVjKSBjb25zdAogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmIChyb290ICYm
IHJvb3QtPmlzU2hhZG93Um9vdCgpKQogICAgICAgICByZXR1cm4gdG9TaGFkb3dSb290KHJvb3Qp
LT5oYXNTaGFkb3dJbnNlcnRpb25Qb2ludCgpOwotCisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShy
b290KTsKKyNlbmRpZgogICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgIHJldHVybiAw
OwogfQogCiBib29sIEludGVybmFsczo6aGFzQ29udGVudEVsZW1lbnQoY29uc3QgTm9kZSogcm9v
dCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAg
ICAgaWYgKHJvb3QgJiYgcm9vdC0+aXNTaGFkb3dSb290KCkpCiAgICAgICAgIHJldHVybiB0b1No
YWRvd1Jvb3Qocm9vdCktPmhhc0NvbnRlbnRFbGVtZW50KCk7Ci0KKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKHJvb3QpOworI2VuZGlmCiAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAg
cmV0dXJuIDA7CiB9CkBAIC00MzEsNiArNDQ5LDcgQEAgYm9vbCBJbnRlcm5hbHM6OmF0dGFjaGVk
KE5vZGUqIG5vZGUsIEV4YwogCiBOb2RlKiBJbnRlcm5hbHM6Om5leHRTaWJsaW5nQnlXYWxrZXIo
Tm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00p
CiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAg
ICAgICByZXR1cm4gMDsKQEAgLTQzOCwxMCArNDU3LDE2IEBAIE5vZGUqIEludGVybmFsczo6bmV4
dFNpYmxpbmdCeVdhbGtlcihOb2QKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2Vy
KG5vZGUpOwogICAgIHdhbGtlci5uZXh0U2libGluZygpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0
KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShub2RlKTsKKyAgICBlYyA9IElOVkFMSURfQUND
RVNTX0VSUjsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiBOb2RlKiBJbnRlcm5hbHM6OmZp
cnN0Q2hpbGRCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNDQ5LDEwICs0NzQsMTYgQEAgTm9k
ZSogSW50ZXJuYWxzOjpmaXJzdENoaWxkQnlXYWxrZXIoTm9kZQogICAgIENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CiAgICAgd2Fsa2VyLmZpcnN0Q2hpbGQoKTsKICAgICBy
ZXR1cm4gd2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obm9kZSk7CisgICAg
ZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogTm9k
ZSogSW50ZXJuYWxzOjpsYXN0Q2hpbGRCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoIW5vZGUpIHsKICAgICAg
ICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNDYwLDEw
ICs0OTEsMTYgQEAgTm9kZSogSW50ZXJuYWxzOjpsYXN0Q2hpbGRCeVdhbGtlcihOb2RlKgogICAg
IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CiAgICAgd2Fsa2VyLmxhc3RD
aGlsZCgpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShub2RlKTsKKyAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICByZXR1cm4gMDsKKyNl
bmRpZgogfQogCiBOb2RlKiBJbnRlcm5hbHM6Om5leHROb2RlQnlXYWxrZXIoTm9kZSogbm9kZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKCFu
b2RlKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm4g
MDsKQEAgLTQ3MSwxMCArNTA4LDE2IEBAIE5vZGUqIEludGVybmFsczo6bmV4dE5vZGVCeVdhbGtl
cihOb2RlKiAKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwogICAg
IHdhbGtlci5uZXh0KCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKG5vZGUpOworICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgIHJldHVy
biAwOworI2VuZGlmCiB9CiAKIE5vZGUqIEludGVybmFsczo6cHJldmlvdXNOb2RlQnlXYWxrZXIo
Tm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00p
CiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAg
ICAgICByZXR1cm4gMDsKQEAgLTQ4Miw2ICs1MjUsMTEgQEAgTm9kZSogSW50ZXJuYWxzOjpwcmV2
aW91c05vZGVCeVdhbGtlcihObwogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIo
bm9kZSk7CiAgICAgd2Fsa2VyLnByZXZpb3VzKCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG5vZGUpOworICAgIGVjID0gSU5WQUxJRF9BQ0NFU1Nf
RVJSOworICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIFN0cmluZyBJbnRlcm5hbHM6OmVsZW1l
bnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpA
QCAtNTk3LDEyICs2NDUsMTggQEAgU3RyaW5nIEludGVybmFsczo6c2hhZG93Um9vdFR5cGUoY29u
c3QgTgogCiBFbGVtZW50KiBJbnRlcm5hbHM6OmluY2x1ZGVyRm9yKE5vZGUqIG5vZGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmICghbm9kZSkg
ewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCiAgICAgcmV0dXJuIE5vZGVSZW5kZXJpbmdDb250ZXh0KG5vZGUpLmluc2VydGlvblBv
aW50KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShub2RlKTsKKyAgICBlYyA9IElOVkFMSURf
QUNDRVNTX0VSUjsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiBTdHJpbmcgSW50ZXJuYWxz
OjpzaGFkb3dQc2V1ZG9JZChFbGVtZW50KiBlbGVtZW50LCBFeGNlcHRpb25Db2RlJiBlYykK
</data>
<flag name="commit-queue"
          id="192662"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176784</attachid>
            <date>2012-11-29 12:19:17 -0800</date>
            <delta_ts>2012-11-29 12:30:51 -0800</delta_ts>
            <desc>now with &lt;details&gt; disabled</desc>
            <filename>compile-out-shadowdom-5.patch</filename>
            <type>text/plain</type>
            <size>45105</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTM2MTMzKQorKysgU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMTIwNSw0ICsxMjA1LDkgQEAKICNlbmRpZgogI2Vu
ZGlmCiAKKyNpZiAhRU5BQkxFKFNIQURPV19ET00pCisjdW5kZWYgRU5BQkxFX0RFVEFJTFNfRUxF
TUVOVAorI2RlZmluZSBFTkFCTEVfREVUQUlMU19FTEVNRU5UIDAKKyNlbmRpZgorCiAjZW5kaWYg
LyogV1RGX1BsYXRmb3JtX2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAx
MzYxMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpA
QCAtODEsOSArODEsMTMgQEAgX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjFzZXREZWxlZ2F0ZXNT
YwogX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjNzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZEViYgog
X19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjR3aW5kb3dSZXNpemVyUmVjdENoYW5nZWRFdgogX19a
TjdXZWJDb3JlMTBTY3JvbGxWaWV3OGFkZENoaWxkRU4zV1RGMTBQYXNzUmVmUHRySU5TXzZXaWRn
ZXRFRUUKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKIF9fWk5LN1dlYkNvcmUxMFNoYWRvd1Jvb3Qx
N2hhc0NvbnRlbnRFbGVtZW50RXYKKyNlbmRpZgogX19aTks3V2ViQ29yZTEwU2hhZG93Um9vdDE4
Y291bnRFbGVtZW50U2hhZG93RXYKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKIF9fWk5LN1dlYkNv
cmUxMFNoYWRvd1Jvb3QyM2hhc1NoYWRvd0luc2VydGlvblBvaW50RXYKKyNlbmRpZgogX19aTjdX
ZWJDb3JlMTBTaGFkb3dSb290NmNyZWF0ZUVQTlNfN0VsZW1lbnRFUmkKIF9fWk43V2ViQ29yZTEw
ZGVsZXRlRmlsZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTEwc2V0Q29va2llc0VQTlNf
OERvY3VtZW50RVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCkBAIC01MDUsNyArNTA5LDkgQEAg
X19aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKUwogX19aTjdXZWJDb3JlMTdv
cGVuVGVtcG9yYXJ5RmlsZUVSS04zV1RGNlN0cmluZ0VSaQogX19aTjdXZWJDb3JlMTd1c2VyVmlz
aWJsZVN0cmluZ0VQNU5TVVJMCiBfX1pON1dlYkNvcmUxOERPTVdpbmRvd0V4dGVuc2lvbkMxRVBO
U181RnJhbWVFUE5TXzE1RE9NV3JhcHBlcldvcmxkRQorI2lmIEVOQUJMRShTSEFET1dfRE9NKQog
X19aTjdXZWJDb3JlMThIVE1MQ29udGVudEVsZW1lbnQ2Y3JlYXRlRVBOU184RG9jdW1lbnRFCisj
ZW5kaWYKIF9fWk43V2ViQ29yZTEwUGFzdGVib2FyZDE3Z2VuZXJhbFBhc3RlYm9hcmRFdgogX19a
TjdXZWJDb3JlMTBQYXN0ZWJvYXJkMTR3cml0ZVBsYWluVGV4dEVSS04zV1RGNlN0cmluZ0VOUzBf
MThTbWFydFJlcGxhY2VPcHRpb25FCiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDEw
dW5pcXVlTmFtZUV2CkBAIC02NDUsMTEgKzY1MSwxMyBAQCBfX1pON1dlYkNvcmUyM2VuY29kZUhv
c3ROYW1lV2l0aFJhbmdlRVA4CiBfX1pON1dlYkNvcmUyM2dldEhvc3RuYW1lc1dpdGhDb29raWVz
RVJOM1dURjdIYXNoU2V0SU5TMF82U3RyaW5nRU5TMF8xMFN0cmluZ0hhc2hFTlMwXzEwSGFzaFRy
YWl0c0lTMl9FRUVFCiBfX1pON1dlYkNvcmUyNEJpbmFyeVByb3BlcnR5TGlzdFdyaXRlcjE3d3Jp
dGVQcm9wZXJ0eUxpc3RFdgogX19aTjdXZWJDb3JlMjRDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2Ux
MXNldFJlc291cmNlRVBOU18xNENhY2hlZFJlc291cmNlRQorI2lmIEVOQUJMRShTSEFET1dfRE9N
KQogX19aTjdXZWJDb3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMGZpcnN0Q2hpbGRFdgog
X19aTjdXZWJDb3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMW5leHRTaWJsaW5nRXYKIF9f
Wk43V2ViQ29yZTI0Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyNG5leHRFdgogX19aTjdXZWJDb3Jl
MjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI4cHJldmlvdXNFdgogX19aTjdXZWJDb3JlMjRDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXI5bGFzdENoaWxkRXYKKyNlbmRpZgogX19aTjdXZWJDb3JlMjRE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIxMG1hcmtlcnNGb3JFUE5TXzROb2RlRU5TXzE0RG9jdW1l
bnRNYXJrZXIxMU1hcmtlclR5cGVzRQogX19aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIxM3JlbW92ZU1hcmtlcnNFTlNfMTREb2N1bWVudE1hcmtlcjExTWFya2VyVHlwZXNFCiBf
X1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29udHJvbGxlcjE4YWRkVGV4dE1hdGNoTWFya2Vy
RVBLTlNfNVJhbmdlRWIKQEAgLTEyMjMsOCArMTIzMSwxMCBAQCBfX1pOSzdXZWJDb3JlMTRGcmFt
ZVNlbGVjdGlvbjE4aXNGb2N1c2VkCiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjMxZ2V0
Q2xpcHBlZFZpc2libGVUZXh0UmVjdGFuZ2xlc0VSTjNXVEY2VmVjdG9ySU5TXzlGbG9hdFJlY3RF
TG0wRUVFCiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjM2cm9vdEVkaXRhYmxlRWxlbWVu
dE9yRG9jdW1lbnRFbGVtZW50RXYKIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uNmJvdW5k
c0ViCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiBfX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Qb2lu
dDE5Z2V0RGlzdHJpYnV0ZWROb2Rlc0V2CiBfX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Qb2ludDhp
c0FjdGl2ZUV2CisjZW5kaWYKIF9fWk5LN1dlYkNvcmUxNFJlbmRlckxpc3RJdGVtMTBtYXJrZXJU
ZXh0RXYKIF9fWk5LN1dlYkNvcmUxNFJlc291cmNlQnVmZmVyNGRhdGFFdgogX19aTks3V2ViQ29y
ZTE0UmVzb3VyY2VCdWZmZXI0c2l6ZUV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCShyZXZpc2lvbiAxMzYxMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2MywxMiArOTYzLDE1IEBAIGlubGluZSB2b2lk
IFN0eWxlUmVzb2x2ZXI6OmluaXRFbGVtZW50KEUKIAogaW5saW5lIGJvb2wgc2hvdWxkUmVzZXRT
dHlsZUluaGVyaXRhbmNlKE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogeworI2lmIEVO
QUJMRShTSEFET1dfRE9NKQogICAgIGlmIChjb250ZXh0LnJlc2V0U3R5bGVJbmhlcml0YW5jZSgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0
aW9uUG9pbnQgPSBjb250ZXh0Lmluc2VydGlvblBvaW50KCkpCiAgICAgICAgIHJldHVybiBpbnNl
cnRpb25Qb2ludC0+cmVzZXRTdHlsZUluaGVyaXRhbmNlKCk7Ci0KKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKGNvbnRleHQpOworI2VuZGlmCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAkocmV2
aXNpb24gMTM2MTMzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdh
bGtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKIHN0YXRpYyBpbmxpbmUgRWxlbWVu
dFNoYWRvdyogc2hhZG93Rm9yKGNvbnN0IE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKG5vZGUgJiYg
bm9kZS0+aXNFbGVtZW50Tm9kZSgpKQpAQCAtMzQyLDYgKzM0NCw4IEBAIHZvaWQgQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyOjpwcmV2aW91cygKICAgICBhc3NlcnRQb3N0Y29uZGl0aW9uKCk7CiB9
CiAKKyNlbmRpZgorCiBBbmNlc3RvckNoYWluV2Fsa2VyOjpBbmNlc3RvckNoYWluV2Fsa2VyKGNv
bnN0IE5vZGUqIG5vZGUpCiAgICAgOiBtX25vZGUobm9kZSkKICAgICAsIG1fZGlzdHJpYnV0ZWRO
b2RlKG5vZGUpCkBAIC0zNTAsNiArMzU0LDcgQEAgQW5jZXN0b3JDaGFpbldhbGtlcjo6QW5jZXN0
b3JDaGFpbldhbGtlcgogICAgIEFTU0VSVChub2RlKTsKIH0KIAorI2lmIEVOQUJMRShTSEFET1df
RE9NKQogdm9pZCBBbmNlc3RvckNoYWluV2Fsa2VyOjpwYXJlbnQoKQogewogICAgIEFTU0VSVCht
X25vZGUpOwpAQCAtMzc5LDUgKzM4NCwxMyBAQCB2b2lkIEFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBh
cmVudCgpCiAgICAgbV9kaXN0cmlidXRlZE5vZGUgPSBtX25vZGU7CiAgICAgbV9pc0Nyb3NzaW5n
SW5zZXJ0aW9uUG9pbnQgPSBmYWxzZTsKIH0KKyNlbHNlCit2b2lkIEFuY2VzdG9yQ2hhaW5XYWxr
ZXI6OnBhcmVudCgpCit7CisgICAgQVNTRVJUKG1fbm9kZSk7CisgICAgbV9ub2RlID0gbV9ub2Rl
LT5pc1NoYWRvd1Jvb3QoKSA/IHRvU2hhZG93Um9vdChtX25vZGUpLT5ob3N0KCkgOiBtX25vZGUt
PnBhcmVudE5vZGUoKTsKK30KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZQorCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oCShyZXZpc2lvbiAx
MzYxMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgTm9kZTsKIGNsYXNzIFNoYWRvd1Jvb3Q7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwog
Ly8gRklYTUU6IE1ha2Ugc29tZSBmdW5jdGlvbnMgaW5saW5lIHRvIG9wdGltaXNlIHRoZSBwZXJm
b3JtYW5jZS4KIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mjcw
MgogY2xhc3MgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHsKQEAgLTE2NCw2ICsxNjYsOCBAQCBp
bmxpbmUgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpDb21wb3NlCiAjZW5kaWYKIH0KIAorI2Vu
ZGlmCisKIGNsYXNzIEFuY2VzdG9yQ2hhaW5XYWxrZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0
IEFuY2VzdG9yQ2hhaW5XYWxrZXIoY29uc3QgTm9kZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAkocmV2aXNpb24gMTM2MTMzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NjAsMTAgKzc2MCwxMiBAQCBzdGF0aWMgYm9vbCBjaGVja05l
ZWRzU3R5bGVJbnZhbGlkYXRpb25GCiAKIHZvaWQgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQog
eworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmIChFbGVtZW50U2hhZG93KiBwYXJlbnRF
bGVtZW50U2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24odGhpcykpIHsKICAg
ICAgICAgaWYgKHNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb25XaGVuQXR0cmlidXRlQ2hhbmdl
ZChwYXJlbnRFbGVtZW50U2hhZG93LCBuYW1lLCBuZXdWYWx1ZSkpCiAgICAgICAgICAgICBwYXJl
bnRFbGVtZW50U2hhZG93LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CiAgICAgfQorI2VuZGlm
CiAKICAgICBwYXJzZUF0dHJpYnV0ZShuYW1lLCBuZXdWYWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudFNoYWRvdy5jcHAJKHJldmlzaW9uIDEzNjEzMykKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDE0ICsxNzcs
MTggQEAgdm9pZCBFbGVtZW50U2hhZG93OjpyZWNhbGNTdHlsZShOb2RlOjpTdAogCiB2b2lkIEVs
ZW1lbnRTaGFkb3c6OmVuc3VyZURpc3RyaWJ1dGlvbigpCiB7CisjaWYgRU5BQkxFKFNIQURPV19E
T00pCiAgICAgaWYgKCFtX2Rpc3RyaWJ1dG9yLm5lZWRzRGlzdHJpYnV0aW9uKCkpCiAgICAgICAg
IHJldHVybjsKICAgICBtX2Rpc3RyaWJ1dG9yLmRpc3RyaWJ1dGUoaG9zdCgpKTsKKyNlbmRpZgog
fQogCiB2b2lkIEVsZW1lbnRTaGFkb3c6OnNldFZhbGlkaXR5VW5kZXRlcm1pbmVkKCkKIHsKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBtX2Rpc3RyaWJ1dG9yLnNldFZhbGlkaXR5KENvbnRl
bnREaXN0cmlidXRvcjo6VW5kZXRlcm1pbmVkKTsKKyNlbmRpZgogfQogCiB2b2lkIEVsZW1lbnRT
aGFkb3c6OmludmFsaWRhdGVEaXN0cmlidXRpb24oKQpAQCAtMTk0LDYgKzE5OCw3IEBAIHZvaWQg
RWxlbWVudFNoYWRvdzo6aW52YWxpZGF0ZURpc3RyaWJ1dGkKIAogdm9pZCBFbGVtZW50U2hhZG93
OjppbnZhbGlkYXRlRGlzdHJpYnV0aW9uKEVsZW1lbnQqIGhvc3QpCiB7CisjaWYgRU5BQkxFKFNI
QURPV19ET00pCiAgICAgYm9vbCBuZWVkc0ludmFsaWRhdGlvbiA9IG1fZGlzdHJpYnV0b3IubmVl
ZHNJbnZhbGlkYXRpb24oKTsKICAgICBib29sIG5lZWRzUmVhdHRhY2ggPSBuZWVkc0ludmFsaWRh
dGlvbiA/IG1fZGlzdHJpYnV0b3IuaW52YWxpZGF0ZShob3N0KSA6IGZhbHNlOwogCkBAIC0yMDUs
NiArMjEwLDkgQEAgdm9pZCBFbGVtZW50U2hhZG93OjppbnZhbGlkYXRlRGlzdHJpYnV0aQogCiAg
ICAgaWYgKG5lZWRzSW52YWxpZGF0aW9uKQogICAgICAgICBtX2Rpc3RyaWJ1dG9yLmZpbmlzaElu
aXZhbGlkYXRpb24oKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGhvc3QpOworI2VuZGlmCiB9
CiAKIHZvaWQgRWxlbWVudFNoYWRvdzo6c2V0U2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQo
KQpAQCAtMjQyLDYgKzI1MCw3IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6Y29sbGVjdFNlbGVjdEZl
YXR1cmUKICAgICAgICAgfQogICAgIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlm
IChyb290LT5oYXNDb250ZW50RWxlbWVudCgpKSB7CiAgICAgICAgIGZvciAoTm9kZSogbm9kZSA9
IHJvb3QtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUo
KSkgewogICAgICAgICAgICAgaWYgKGlzSFRNTENvbnRlbnRFbGVtZW50KG5vZGUpKSB7CkBAIC0y
NTEsNiArMjYwLDcgQEAgdm9pZCBFbGVtZW50U2hhZG93Ojpjb2xsZWN0U2VsZWN0RmVhdHVyZQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRWxlbWVu
dFNoYWRvdzo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKQEAgLTI2MiwxMSArMjcyLDE0IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6cmVw
b3J0TWVtb3J5VXNhZ2UoTWUKICAgICAgICAgaW5mby5hZGRNZW1iZXIoc2hhZG93Um9vdCk7CiAg
ICAgICAgIHNoYWRvd1Jvb3QgPSBzaGFkb3dSb290LT5uZXh0KCk7CiAgICAgfQorI2lmIEVOQUJM
RShTSEFET1dfRE9NKQogICAgIGluZm8uYWRkTWVtYmVyKG1fZGlzdHJpYnV0b3IpOworI2VuZGlm
CiB9CiAKIHZvaWQgaW52YWxpZGF0ZVBhcmVudERpc3RyaWJ1dGlvbklmTmVjZXNzYXJ5KEVsZW1l
bnQqIGVsZW1lbnQsIFNlbGVjdFJ1bGVGZWF0dXJlU2V0OjpTZWxlY3RSdWxlRmVhdHVyZU1hc2sg
dXBkYXRlZEZlYXR1cmVzKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIEVsZW1lbnRT
aGFkb3cqIGVsZW1lbnRTaGFkb3cgPSBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbihlbGVt
ZW50KTsKICAgICBpZiAoIWVsZW1lbnRTaGFkb3cpCiAgICAgICAgIHJldHVybjsKQEAgLTI3NCw2
ICsyODcsMTAgQEAgdm9pZCBpbnZhbGlkYXRlUGFyZW50RGlzdHJpYnV0aW9uSWZOZWNlcwogICAg
IGVsZW1lbnRTaGFkb3ctPmVuc3VyZVNlbGVjdEZlYXR1cmVTZXRDb2xsZWN0ZWQoKTsKICAgICBp
ZiAoZWxlbWVudFNoYWRvdy0+c2VsZWN0UnVsZUZlYXR1cmVTZXQoKS5oYXNTZWxlY3RvckZvcih1
cGRhdGVkRmVhdHVyZXMpKQogICAgICAgICBlbGVtZW50U2hhZG93LT5pbnZhbGlkYXRlRGlzdHJp
YnV0aW9uKCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShlbGVtZW50KTsKKyAgICBVTlVTRURf
UEFSQU0odXBkYXRlZEZlYXR1cmVzKTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCShyZXZpc2lvbiAxMzYxMzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCw3IEBACiAjZGVmaW5lIEVsZW1lbnRTaGFkb3dfaAogCiAjaW5jbHVkZSAiQ29udGVudERpc3Ry
aWJ1dG9yLmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKICNpbmNsdWRlICJTZWxlY3RSdWxlRmVhdHVyZVNldC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKQEAgLTY3LDkgKzY4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGVEaXN0
cmlidXRpb24oKTsKICAgICB2b2lkIGVuc3VyZURpc3RyaWJ1dGlvbigpOwogCisjaWYgRU5BQkxF
KFNIQURPV19ET00pCiAgICAgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0cmlidXRvcigpOwogICAg
IGNvbnN0IENvbnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKSBjb25zdDsKLQorI2VuZGlm
CiAgICAgYm9vbCBzaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQ7IH0KICAgICB2b2lkIHNldFNob3VsZENv
bGxlY3RTZWxlY3RGZWF0dXJlU2V0KCk7CiAgICAgdm9pZCBlbnN1cmVTZWxlY3RGZWF0dXJlU2V0
Q29sbGVjdGVkKCk7CkBAIC04NCw3ICs4Niw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0
U2VsZWN0RmVhdHVyZVNldEZyb20oU2hhZG93Um9vdCopOwogCiAgICAgRG91Ymx5TGlua2VkTGlz
dDxTaGFkb3dSb290PiBtX3NoYWRvd1Jvb3RzOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAg
IENvbnRlbnREaXN0cmlidXRvciBtX2Rpc3RyaWJ1dG9yOworI2VuZGlmCiAgICAgU2VsZWN0UnVs
ZUZlYXR1cmVTZXQgbV9zZWxlY3RGZWF0dXJlczsKICAgICBib29sIG1fc2hvdWxkQ29sbGVjdFNl
bGVjdEZlYXR1cmVTZXQgOiAxOwogfTsKQEAgLTEwMSw2ICsxMDUsNyBAQCBpbmxpbmUgU2hhZG93
Um9vdCogRWxlbWVudFNoYWRvdzo6b2xkZXN0CiAgICAgcmV0dXJuIG1fc2hhZG93Um9vdHMudGFp
bCgpOwogfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiBpbmxpbmUgQ29udGVudERpc3RyaWJ1
dG9yJiBFbGVtZW50U2hhZG93OjpkaXN0cmlidXRvcigpCiB7CiAgICAgcmV0dXJuIG1fZGlzdHJp
YnV0b3I7CkBAIC0xMTAsNiArMTE1LDcgQEAgaW5saW5lIGNvbnN0IENvbnRlbnREaXN0cmlidXRv
ciYgRWxlbWVudAogewogICAgIHJldHVybiBtX2Rpc3RyaWJ1dG9yOwogfQorI2VuZGlmCiAKIGlu
bGluZSBFbGVtZW50KiBFbGVtZW50U2hhZG93Ojpob3N0KCkgY29uc3QKIHsKQEAgLTE0MSw2ICsx
NDcsMTcgQEAgcHVibGljOgogICAgIH0KIH07CiAKKyNpZiAhRU5BQkxFKFNIQURPV19ET00pCitp
bmxpbmUgRWxlbWVudFNoYWRvdyogc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY29uc3Qg
Tm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKENvbnRhaW5lck5vZGUq
IHBhcmVudCA9IG5vZGUtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHBhcmVudC0+aXNF
bGVtZW50Tm9kZSgpID8gdG9FbGVtZW50KHBhcmVudCktPnNoYWRvdygpIDogMDsKKyAgICAKKyAg
ICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCShyZXZpc2lvbiAxMzYxMzMpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTIsNiArNTIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBIYXNoU2V0PE5v
ZGUqPiogZ05vZGVzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3MgPSAwOwogCisjaWYgRU5BQkxF
KFNIQURPV19ET00pCisKIEV2ZW50UmVsYXRlZFRhcmdldEFkanVzdGVyOjpFdmVudFJlbGF0ZWRU
YXJnZXRBZGp1c3RlcihQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIFBhc3NSZWZQdHI8Tm9kZT4gcmVs
YXRlZFRhcmdldCkKICAgICA6IG1fbm9kZShub2RlKQogICAgICwgbV9yZWxhdGVkVGFyZ2V0KHJl
bGF0ZWRUYXJnZXQpCkBAIC0xMTgsNiArMTIwLDcgQEAgRXZlbnRUYXJnZXQqIEV2ZW50UmVsYXRl
ZFRhcmdldEFkanVzdGVyOgogICAgICAgbV9yZWxhdGVkVGFyZ2V0TWFwLmFkZCgqaXRlciwgcmVs
YXRlZFRhcmdldCk7CiAgICAgcmV0dXJuIHJlbGF0ZWRUYXJnZXQ7CiB9CisjZW5kaWYKIAogYm9v
bCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQoTm9kZSogbm9kZSwgUGFzc1JlZlB0cjxF
dmVudERpc3BhdGNoTWVkaWF0b3I+IG1lZGlhdG9yKQogewpAQCAtMTU5LDcgKzE2Miw5IEBAIHZv
aWQgRXZlbnREaXNwYXRjaGVyOjphZGp1c3RSZWxhdGVkVGFyZ2UKICAgICBpZiAoIW1fbm9kZS5n
ZXQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGVuc3VyZUV2ZW50QW5jZXN0b3JzKGV2ZW50KTsK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBFdmVudFJlbGF0ZWRUYXJnZXRBZGp1c3Rlciht
X25vZGUsIHJlbGF0ZWRUYXJnZXQucmVsZWFzZSgpKS5hZGp1c3QobV9hbmNlc3RvcnMpOworI2Vu
ZGlmCiB9CiAKIEV2ZW50RGlzcGF0Y2hlcjo6RXZlbnREaXNwYXRjaGVyKE5vZGUqIG5vZGUpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5oCShyZXZpc2lvbiAxMzYxMzMpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU1LDYgKzU1LDggQEAgZW51bSBFdmVudERpc3BhdGNoQ29udGludWF0aW9uIHsKICAgICBEb25l
RGlzcGF0Y2hpbmcKIH07CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogY2xhc3MgRXZlbnRS
ZWxhdGVkVGFyZ2V0QWRqdXN0ZXIgewogcHVibGljOgogICAgIEV2ZW50UmVsYXRlZFRhcmdldEFk
anVzdGVyKFBhc3NSZWZQdHI8Tm9kZT4sIFBhc3NSZWZQdHI8Tm9kZT4gcmVsYXRlZFRhcmdldCk7
CkBAIC02OCw2ICs3MCw4IEBAIHByaXZhdGU6CiAgICAgUmVsYXRlZFRhcmdldE1hcCBtX3JlbGF0
ZWRUYXJnZXRNYXA7CiB9OwogCisjZW5kaWYKKwogY2xhc3MgRXZlbnREaXNwYXRjaGVyIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgYm9vbCBkaXNwYXRjaEV2ZW50KE5vZGUqLCBQYXNzUmVmUHRyPEV2
ZW50RGlzcGF0Y2hNZWRpYXRvcj4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5k
ZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJl
bmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAxMzYxMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxNSArNTIs
MzcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
CisjaWYgIUVOQUJMRShTSEFET1dfRE9NKQorc3RhdGljIENvbnRhaW5lck5vZGUqIGZpbmRQYXJl
bnQoTm9kZSogbm9kZSkKK3sKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJl
bnRPckhvc3ROb2RlKCk7CisgICAgaWYgKCFwYXJlbnQpCisgICAgICAgIHJldHVybiAwOworICAg
IGlmIChwYXJlbnQtPmlzU2hhZG93Um9vdCgpKQorICAgICAgICByZXR1cm4gdG9TaGFkb3dSb290
KHBhcmVudCktPmhvc3QoKTsKKy8vICAgIGlmIChwYXJlbnQtPmlzSW5zZXJ0aW9uUG9pbnQoKSkK
Ky8vICAgICAgICByZXR1cm4gZmluZFBhcmVudChwYXJlbnQpOworICAgIHJldHVybiBwYXJlbnQ7
Cit9CisjZW5kaWYKKwogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0
KE5vZGUqIG5vZGUpCiAgICAgOiBtX25vZGUobm9kZSkKKyNpZiAhRU5BQkxFKFNIQURPV19ET00p
CisgICAgLCBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZShmaW5kUGFyZW50KG1fbm9k
ZSkpCisjZW5kaWYKICAgICAsIG1fcGFyZW50Rmxvd1JlbmRlcmVyKDApCiB7CisjaWYgRU5BQkxF
KFNIQURPV19ET00pCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpmaW5kUGFyZW50KG1f
bm9kZSwgJm1fcGFyZW50RGV0YWlscyk7CisjZW5kaWYKIH0KIAogTm9kZVJlbmRlcmluZ0NvbnRl
eHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqIG5vZGUsIFJlbmRlclN0eWxlKiBzdHlsZSkK
ICAgICA6IG1fbm9kZShub2RlKQorI2lmICFFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAsIG1fcGFy
ZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKDApCisjZW5kaWYKICAgICAsIG1fc3R5bGUoc3R5
bGUpCiAgICAgLCBtX3BhcmVudEZsb3dSZW5kZXJlcigwKQogewpAQCAtNzAsNiArOTIsMTQgQEAg
Tm9kZVJlbmRlcmluZ0NvbnRleHQ6On5Ob2RlUmVuZGVyaW5nQ29udAogewogfQogCitzdGF0aWMg
Ym9vbCBpc1ZhbGlkTm9uRmxvd1RocmVhZFJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIp
Cit7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIFJl
bmRlcmVycyBmb3IgZWxlbWVudHMgYXR0YWNoZWQgdG8gYSBmbG93IHRocmVhZCBzaG91bGQgYmUg
c2tpcHBlZCBiZWNhdXNlIHRoZXkgYXJlIHBhcmVudGVkIGRpZmZlcmVudGx5LgorICAgIHJldHVy
biAhcmVuZGVyZXItPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpIHx8IHJlbmRlcmVyLT5zdHlsZSgp
LT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpOworfQorCiBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJp
bmdDb250ZXh0OjpuZXh0UmVuZGVyZXIoKSBjb25zdAogewogICAgIGlmIChSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpKQpAQCAtODAsMTkgKzExMCwyMiBAQCBSZW5k
ZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpuZXh0CiAKICAgICAvLyBBdm9pZCBhbiBP
KE5eMikgcHJvYmxlbSB3aXRoIHRoaXMgZnVuY3Rpb24gYnkgbm90IGNoZWNraW5nIGZvcgogICAg
IC8vIG5leHRSZW5kZXJlcigpIHdoZW4gdGhlIHBhcmVudCBlbGVtZW50IGhhc24ndCBhdHRhY2hl
ZCB5ZXQuCi0gICAgaWYgKG1fcGFyZW50RGV0YWlscy5ub2RlKCkgJiYgIW1fcGFyZW50RGV0YWls
cy5ub2RlKCktPmF0dGFjaGVkKCkpCisgICAgTm9kZSogcGFyZW50Tm9kZSA9IHBhcmVudE5vZGVG
b3JSZW5kZXJpbmdBbmRTdHlsZSgpOworICAgIGlmICghcGFyZW50Tm9kZSB8fCAhcGFyZW50Tm9k
ZS0+YXR0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyNpZiAhRU5BQkxFKFNIQURPV19E
T00pCisgICAgZm9yIChOb2RlKiBjdXJyZW50ID0gbV9ub2RlLT5uZXh0U2libGluZygpOyBjdXJy
ZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoaXNW
YWxpZE5vbkZsb3dUaHJlYWRSZW5kZXJlcihjdXJyZW50LT5yZW5kZXJlcigpKSkKKyAgICAgICAg
ICAgIHJldHVybiBjdXJyZW50LT5yZW5kZXJlcigpOworICAgIH0KKyNlbHNlCiAgICAgQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihtX25vZGUpOwogICAgIGZvciAod2Fsa2VyLm5leHRT
aWJsaW5nKCk7IHdhbGtlci5nZXQoKTsgd2Fsa2VyLm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAg
aWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB3YWxrZXIuZ2V0KCktPnJlbmRlcmVyKCkpIHsK
LSAgICAgICAgICAgIC8vIFJlbmRlcmVycyBmb3IgZWxlbWVudHMgYXR0YWNoZWQgdG8gYSBmbG93
IHRocmVhZCBzaG91bGQgYmUgc2tpcHBlZCBiZWNhdXNlIHRoZXkgYXJlIHBhcmVudGVkIGRpZmZl
cmVudGx5LgotICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5ub2RlKCktPmlzRWxlbWVudE5vZGUo
KSAmJiByZW5kZXJlci0+c3R5bGUoKSAmJiAhcmVuZGVyZXItPnN0eWxlKCktPmZsb3dUaHJlYWQo
KS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICByZXR1
cm4gcmVuZGVyZXI7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGlzVmFsaWROb25GbG93VGhyZWFk
UmVuZGVyZXIod2Fsa2VyLmdldCgpLT5yZW5kZXJlcigpKSkKKyAgICAgICAgICAgIHJldHVybiB3
YWxrZXIuZ2V0KCktPnJlbmRlcmVyKCk7CiAgICAgfQotCisjZW5kaWYKICAgICByZXR1cm4gMDsK
IH0KIApAQCAtMTA2LDE3ICsxMzksMTggQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6cHJldgogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIHRoZSBzYW1lIE8oTl4y
KSBhdm9pZGFuY2UgYXMgbmV4dFJlbmRlcmVyIGRvZXMKICAgICAvLyBob3dldmVyLCB3aGVuIEkg
dHJpZWQgYWRkaW5nIGl0LCBzZXZlcmFsIHRlc3RzIGZhaWxlZC4KLQorI2lmICFFTkFCTEUoU0hB
RE9XX0RPTSkKKyAgICBmb3IgKE5vZGUqIGN1cnJlbnQgPSBtX25vZGUtPnByZXZpb3VzU2libGlu
ZygpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+cHJldmlvdXNTaWJsaW5nKCkpIHsKKyAg
ICAgICAgaWYgKGlzVmFsaWROb25GbG93VGhyZWFkUmVuZGVyZXIoY3VycmVudC0+cmVuZGVyZXIo
KSkpCisgICAgICAgICAgICByZXR1cm4gY3VycmVudC0+cmVuZGVyZXIoKTsKKyAgICB9CisjZWxz
ZQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobV9ub2RlKTsKICAgICBmb3Ig
KHdhbGtlci5wcmV2aW91c1NpYmxpbmcoKTsgd2Fsa2VyLmdldCgpOyB3YWxrZXIucHJldmlvdXNT
aWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB3YWxrZXIu
Z2V0KCktPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIC8vIFJlbmRlcmVycyBmb3IgZWxlbWVu
dHMgYXR0YWNoZWQgdG8gYSBmbG93IHRocmVhZCBzaG91bGQgYmUgc2tpcHBlZCBiZWNhdXNlIHRo
ZXkgYXJlIHBhcmVudGVkIGRpZmZlcmVudGx5LgotICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5u
b2RlKCktPmlzRWxlbWVudE5vZGUoKSAmJiByZW5kZXJlci0+c3R5bGUoKSAmJiAhcmVuZGVyZXIt
PnN0eWxlKCktPmZsb3dUaHJlYWQoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KGlzVmFsaWROb25GbG93VGhyZWFkUmVuZGVyZXIod2Fsa2VyLmdldCgpLT5yZW5kZXJlcigpKSkK
KyAgICAgICAgICAgIHJldHVybiB3YWxrZXIuZ2V0KCktPnJlbmRlcmVyKCk7CiAgICAgfQotCisj
ZW5kaWYKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTI2LDIyICsxNjAsMjQgQEAgUmVuZGVyT2Jq
ZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZQogICAgICAgICByZXR1cm4gcmVuZGVyZXIt
PnBhcmVudCgpOwogICAgIGlmIChtX3BhcmVudEZsb3dSZW5kZXJlcikKICAgICAgICAgcmV0dXJu
IG1fcGFyZW50Rmxvd1JlbmRlcmVyOwotCi0gICAgcmV0dXJuIG1fcGFyZW50RGV0YWlscy5ub2Rl
KCkgPyBtX3BhcmVudERldGFpbHMubm9kZSgpLT5yZW5kZXJlcigpIDogMDsKKyAgICBpZiAoQ29u
dGFpbmVyTm9kZSogcGFyZW50Tm9kZSA9IHBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgp
KQorICAgICAgICByZXR1cm4gcGFyZW50Tm9kZS0+cmVuZGVyZXIoKTsKKyAgICByZXR1cm4gMDsK
IH0KIAogYm9vbCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6c2hvdWxkQ3JlYXRlUmVuZGVyZXIoKSBj
b25zdAogewogICAgIGlmICghbV9ub2RlLT5kb2N1bWVudCgpLT5zaG91bGRDcmVhdGVSZW5kZXJl
cnMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghbV9wYXJlbnREZXRhaWxzLm5v
ZGUoKSkKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlID0gcGFyZW50Tm9kZUZvclJlbmRl
cmluZ0FuZFN0eWxlKCk7CisgICAgaWYgKCFwYXJlbnROb2RlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlciA9IHRoaXMtPnBhcmVudFJlbmRl
cmVyKCk7CiAgICAgaWYgKCFwYXJlbnRSZW5kZXJlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmICghcGFyZW50UmVuZGVyZXItPmNhbkhhdmVDaGlsZHJlbigpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKCFtX3BhcmVudERldGFpbHMubm9kZSgpLT5jaGlsZFNob3VsZENy
ZWF0ZVJlbmRlcmVyKCp0aGlzKSkKKyAgICBpZiAoIXBhcmVudE5vZGUtPmNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoKnRoaXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC0xNzYsNyArMjEyLDEzIEBAIHZvaWQgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om1v
dmVUb0Zsb3dUaHIKIAogYm9vbCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6aXNPbkVuY2Fwc3VsYXRp
b25Cb3VuZGFyeSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzT25VcHBlckVuY2Fwc3VsYXRpb25C
b3VuZGFyeSgpIHx8IGlzTG93ZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkobV9wYXJlbnREZXRhaWxz
Lmluc2VydGlvblBvaW50KCkpIHx8IGlzTG93ZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkobV9ub2Rl
LT5wYXJlbnROb2RlKCkpOworICAgIGlmIChpc09uVXBwZXJFbmNhcHN1bGF0aW9uQm91bmRhcnko
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgaWYg
KGlzTG93ZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkobV9ub2RlLT5wYXJlbnROb2RlKCkpIHx8IGlz
TG93ZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkobV9wYXJlbnREZXRhaWxzLmluc2VydGlvblBvaW50
KCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKIH0K
IAogYm9vbCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6aXNPblVwcGVyRW5jYXBzdWxhdGlvbkJvdW5k
YXJ5KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5oCShyZXZpc2lvbiAxMzYxMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmlu
Z0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksMTEgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIG1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZCgpOwogCiAgICAgTm9kZSogbV9ub2RlOwor
I2lmICFFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBDb250YWluZXJOb2RlKiBtX3BhcmVudE5vZGVG
b3JSZW5kZXJpbmdBbmRTdHlsZTsKKyNlbHNlCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
OjpQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzIG1fcGFyZW50RGV0YWlsczsKKyNlbmRpZgogICAgIFJl
ZlB0cjxSZW5kZXJTdHlsZT4gbV9zdHlsZTsKICAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIG1f
cGFyZW50Rmxvd1JlbmRlcmVyOwogICAgIEF0b21pY1N0cmluZyBtX2Zsb3dUaHJlYWQ7CkBAIC04
MiwxMiArODYsMjAgQEAgaW5saW5lIE5vZGUqIE5vZGVSZW5kZXJpbmdDb250ZXh0Ojpub2RlKAog
CiBpbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVudE5vZGVG
b3JSZW5kZXJpbmdBbmRTdHlsZSgpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShTSEFET1dfRE9NKQor
ICAgIHJldHVybiBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZTsKKyNlbHNlCiAgICAg
cmV0dXJuIG1fcGFyZW50RGV0YWlscy5ub2RlKCk7CisjZW5kaWYKIH0KIAogaW5saW5lIGJvb2wg
Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpIGNvbnN0CiB7Cisj
aWYgIUVOQUJMRShTSEFET1dfRE9NKQorICAgIHJldHVybiBmYWxzZTsKKyNlbHNlCiAgICAgcmV0
dXJuIG1fcGFyZW50RGV0YWlscy5yZXNldFN0eWxlSW5oZXJpdGFuY2UoKTsKKyNlbmRpZgogfQog
CiBpbmxpbmUgY29uc3QgUmVuZGVyU3R5bGUqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpzdHlsZSgp
IGNvbnN0CkBAIC05Nyw3ICsxMDksMTEgQEAgaW5saW5lIGNvbnN0IFJlbmRlclN0eWxlKiBOb2Rl
UmVuZGVyaW5nQwogCiBpbmxpbmUgSW5zZXJ0aW9uUG9pbnQqIE5vZGVSZW5kZXJpbmdDb250ZXh0
OjppbnNlcnRpb25Qb2ludCgpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShTSEFET1dfRE9NKQorICAg
IHJldHVybiAwOworI2Vsc2UKICAgICByZXR1cm4gbV9wYXJlbnREZXRhaWxzLmluc2VydGlvblBv
aW50KCk7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmNwcAkocmV2aXNpb24gMTM2MTMzKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw4ICs1NiwxMyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2FtZVNpemVBc1NoYWRvd1Jvb3QgOiBwdWJsaWMg
RG9jdW1lbnRGcmFnbWVudCwgcHVibGljIFRyZWVTY29wZSwgcHVibGljIERvdWJseUxpbmtlZExp
c3ROb2RlPFNoYWRvd1Jvb3Q+IHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICB2b2lkKiBw
b2ludGVyc1szXTsKICAgICB1bnNpZ25lZCBjb3VudGVyc0FuZEZsYWdzWzFdOworI2Vsc2UKKyAg
ICB2b2lkKiBwb2ludGVyc1syXTsKKyAgICB1bnNpZ25lZCBjb3VudGVyc0FuZEZsYWdzWzJdOwor
I2VuZGlmCiB9OwogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoU2hhZG93Um9vdCkgPT0gc2l6ZW9m
KFNhbWVTaXplQXNTaGFkb3dSb290KSwgc2hhZG93cm9vdF9zaG91bGRfc3RheV9zbWFsbCk7CkBA
IC02Nyw2ICs3Miw5IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQqIGRvY3VtZW4K
ICAgICAsIFRyZWVTY29wZSh0aGlzKQogICAgICwgbV9wcmV2KDApCiAgICAgLCBtX25leHQoMCkK
KyNpZiAhRU5BQkxFKFNIQURPV19ET00pCisgICAgLCBtX2VsZW1lbnRTaGFkb3dDb3VudChmYWxz
ZSkKKyNlbmRpZgogICAgICwgbV9udW1iZXJPZlN0eWxlcygwKQogICAgICwgbV9hcHBseUF1dGhv
clN0eWxlcyhmYWxzZSkKICAgICAsIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlKGZhbHNlKQpAQCAt
MjA5LDEyICsyMTcsMTIgQEAgRWxlbWVudFNoYWRvdyogU2hhZG93Um9vdDo6b3duZXIoKSBjb25z
dAogICAgICAgICByZXR1cm4gaG9zdCgpLT5zaGFkb3coKTsKICAgICByZXR1cm4gMDsKIH0KLQor
I2lmIEVOQUJMRShTSEFET01fRE9NKQogYm9vbCBTaGFkb3dSb290OjpoYXNJbnNlcnRpb25Qb2lu
dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGhhc1NoYWRvd0luc2VydGlvblBvaW50KCkgfHwgaGFz
Q29udGVudEVsZW1lbnQoKTsKIH0KLQorI2VuZGlmCiBib29sIFNoYWRvd1Jvb3Q6OmFwcGx5QXV0
aG9yU3R5bGVzKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9hcHBseUF1dGhvclN0eWxlczsKQEAg
LTI4OSw3ICsyOTcsNyBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5v
CiAKICAgICBEb2N1bWVudEZyYWdtZW50OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CiB9
Ci0KKyNpZiBFTkFCTEUoU0hBRE9NX0RPTSkKIEluc2VydGlvblBvaW50KiBTaGFkb3dSb290Ojph
c3NpZ25lZFRvKCkgY29uc3QKIHsKICAgICBpZiAoIWRpc3RyaWJ1dGlvbkRhdGEoKSkKQEAgLTMx
OSw3ICszMjcsNyBAQCBjb25zdCBWZWN0b3I8SW5zZXJ0aW9uUG9pbnQqPiYgU2hhZG93Um9vCiAK
ICAgICByZXR1cm4gZGlzdHJpYnV0aW9uRGF0YSgpID8gZGlzdHJpYnV0aW9uRGF0YSgpLT5lbnN1
cmVJbnNlcnRpb25Qb2ludExpc3QodGhpcykgOiBlbXB0eVZlY3RvcjsKIH0KLQorI2VuZGlmCiB2
b2lkIFNoYWRvd1Jvb3Q6OnJlZ2lzdGVyU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKQogewogICAgICsr
bV9udW1iZXJPZlN0eWxlczsKQEAgLTMzMiw3ICszNDAsNyBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnVu
cmVnaXN0ZXJTY29wZWRIVE1MU3R5CiAgICAgLS1tX251bWJlck9mU3R5bGVzOwogICAgIHNldEhh
c1Njb3BlZEhUTUxTdHlsZUNoaWxkKG1fbnVtYmVyT2ZTdHlsZXMgPiAwKTsKIH0KLQorI2lmIEVO
QUJMRShTSEFET01fRE9NKQogaW5saW5lIFNoYWRvd1Jvb3RDb250ZW50RGlzdHJpYnV0aW9uRGF0
YSogU2hhZG93Um9vdDo6ZW5zdXJlRGlzdHJpYnV0aW9uRGF0YSgpCiB7CiAgICAgaWYgKG1fZGlz
dHJpYnV0aW9uRGF0YSkKQEAgLTQwNCw2ICs0MTIsMjggQEAgdW5zaWduZWQgU2hhZG93Um9vdDo6
Y291bnRFbGVtZW50U2hhZG93KAogCiAgICAgcmV0dXJuIGRpc3RyaWJ1dGlvbkRhdGEoKS0+bnVt
YmVyT2ZFbGVtZW50U2hhZG93Q2hpbGRyZW4oKTsKIH0KKyNlbHNlCit2b2lkIFNoYWRvd1Jvb3Q6
OnJlZ2lzdGVyRWxlbWVudFNoYWRvdygpCit7CisgICAgKyttX2VsZW1lbnRTaGFkb3dDb3VudDsK
K30KKwordm9pZCBTaGFkb3dSb290Ojp1bnJlZ2lzdGVyRWxlbWVudFNoYWRvdygpCit7CisgICAg
QVNTRVJUKG1fZWxlbWVudFNoYWRvd0NvdW50KTsKKyAgICAtLW1fZWxlbWVudFNoYWRvd0NvdW50
OworfQorCitib29sIFNoYWRvd1Jvb3Q6Omhhc0VsZW1lbnRTaGFkb3coKSBjb25zdAoreworICAg
IHJldHVybiAhIW1fZWxlbWVudFNoYWRvd0NvdW50OworfQorCit1bnNpZ25lZCBTaGFkb3dSb290
Ojpjb3VudEVsZW1lbnRTaGFkb3coKSBjb25zdAoreworICAgIHJldHVybiBtX2VsZW1lbnRTaGFk
b3dDb3VudDsKK30KKyNlbmRpZgogCiB2b2lkIFNoYWRvd1Jvb3Q6OnJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CkBAIC00MTIsNyAr
NDQyLDkgQEAgdm9pZCBTaGFkb3dSb290OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcgogICAgIFRy
ZWVTY29wZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CiAgICAgaW5mby5h
ZGRNZW1iZXIobV9wcmV2KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX25leHQpOworI2lmIEVOQUJM
RShTSEFET1dfRE9NKQogICAgIGluZm8uYWRkTWVtYmVyKG1fZGlzdHJpYnV0aW9uRGF0YSk7Cisj
ZW5kaWYKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCShyZXZpc2lvbiAxMzYx
MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7Ci0KKyNpZiBF
TkFCTEUoU0hBRE9NX0RPTSkKICAgICBib29sIGlzVXNlZEZvclJlbmRlcmluZygpIGNvbnN0Owog
ICAgIEluc2VydGlvblBvaW50KiBhc3NpZ25lZFRvKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBc3Np
Z25lZFRvKEluc2VydGlvblBvaW50Kik7CkBAIC05OCwxNCArOTgsMTQgQEAgcHVibGljOgogICAg
IHZvaWQgcmVnaXN0ZXJDb250ZW50RWxlbWVudCgpOwogICAgIHZvaWQgdW5yZWdpc3RlckNvbnRl
bnRFbGVtZW50KCk7CiAgICAgYm9vbCBoYXNDb250ZW50RWxlbWVudCgpIGNvbnN0OwotCisjZW5k
aWYKICAgICB2b2lkIHJlZ2lzdGVyRWxlbWVudFNoYWRvdygpOwogICAgIHZvaWQgdW5yZWdpc3Rl
ckVsZW1lbnRTaGFkb3coKTsKICAgICBib29sIGhhc0VsZW1lbnRTaGFkb3coKSBjb25zdDsKICAg
ICB1bnNpZ25lZCBjb3VudEVsZW1lbnRTaGFkb3coKSBjb25zdDsKLQorI2lmIEVOQUJMRShTSEFE
T01fRE9NKQogICAgIGNvbnN0IFZlY3RvcjxJbnNlcnRpb25Qb2ludCo+JiBpbnNlcnRpb25Qb2lu
dExpc3QoKTsKLQorI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2NvcGVkSFRNTFN0
eWxlQ2hpbGQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjb3BlZEhU
TUxTdHlsZUNoaWxkKCkgT1ZFUlJJREU7CiAKQEAgLTEyMSwxOSArMTIxLDI1IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCk7CiAgICAgdmlydHVhbCBib29sIGNoaWxk
VHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0OworI2lmIEVOQUJMRShTSEFET01fRE9NKQogICAg
IHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUq
IGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpIE9W
RVJSSURFOworI2VuZGlmCiAgICAgdmlydHVhbCBib29sIGRvY3VtZW50RnJhZ21lbnRJc1NoYWRv
d1Jvb3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIHNldFR5
cGUoU2hhZG93Um9vdFR5cGUgdHlwZSkgeyBtX2lzQXV0aG9yU2hhZG93Um9vdCA9IHR5cGUgPT0g
QXV0aG9yU2hhZG93Um9vdDsgfQotCisjaWYgRU5BQkxFKFNIQURPTV9ET00pCiAgICAgU2hhZG93
Um9vdENvbnRlbnREaXN0cmlidXRpb25EYXRhKiBkaXN0cmlidXRpb25EYXRhKCkgeyByZXR1cm4g
bV9kaXN0cmlidXRpb25EYXRhLmdldCgpOyB9CiAgICAgY29uc3QgU2hhZG93Um9vdENvbnRlbnRE
aXN0cmlidXRpb25EYXRhKiBkaXN0cmlidXRpb25EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kaXN0
cmlidXRpb25EYXRhLmdldCgpOyB9CiAgICAgU2hhZG93Um9vdENvbnRlbnREaXN0cmlidXRpb25E
YXRhKiBlbnN1cmVEaXN0cmlidXRpb25EYXRhKCk7Ci0KKyNlbmRpZgogICAgIFNoYWRvd1Jvb3Qq
IG1fcHJldjsKICAgICBTaGFkb3dSb290KiBtX25leHQ7CisjaWYgRU5BQkxFKFNIQURPTV9ET00p
CiAgICAgT3duUHRyPFNoYWRvd1Jvb3RDb250ZW50RGlzdHJpYnV0aW9uRGF0YT4gbV9kaXN0cmli
dXRpb25EYXRhOwotICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZTdHlsZXMgOiAyODsKKyNlbHNlCisg
ICAgdW5zaWduZWQgbV9lbGVtZW50U2hhZG93Q291bnQ7CisjZW5kaWYKKyAgICB1bnNpZ25lZCBt
X251bWJlck9mU3R5bGVzIDogMjc7CiAgICAgdW5zaWduZWQgbV9hcHBseUF1dGhvclN0eWxlcyA6
IDE7CiAgICAgdW5zaWduZWQgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2UgOiAxOwogICAgIHVuc2ln
bmVkIG1faXNBdXRob3JTaGFkb3dSb290IDogMTsKQEAgLTE0OSwxMiArMTU1LDEyIEBAIGlubGlu
ZSB2b2lkIFNoYWRvd1Jvb3Q6OnNldEhvc3QoRWxlbWVudCoKIHsKICAgICBzZXRQYXJlbnRPckhv
c3ROb2RlKGhvc3QpOwogfQotCisjaWYgRU5BQkxFKFNIQURPTV9ET00pCiBpbmxpbmUgYm9vbCBT
aGFkb3dSb290Ojppc1VzZWRGb3JSZW5kZXJpbmcoKSBjb25zdAogewogICAgIHJldHVybiBpc1lv
dW5nZXN0KCkgfHwgYXNzaWduZWRUbygpOwogfQotCisjZW5kaWYKIGlubGluZSBFbGVtZW50KiBT
aGFkb3dSb290OjphY3RpdmVFbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAoTm9kZSogbm9kZSA9
IHRyZWVTY29wZSgpLT5mb2N1c2VkTm9kZSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRGV0YWlsc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTERldGFpbHNFbGVtZW50LmNwcAkocmV2aXNpb24gMTM2MTMzKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyAr
MTM5LDcgQEAgdm9pZCBIVE1MRGV0YWlsc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKAogCiBib29s
IEhUTUxEZXRhaWxzRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2Rl
UmVuZGVyaW5nQ29udGV4dCYgY2hpbGRDb250ZXh0KSBjb25zdAogewotICAgIGlmICghY2hpbGRD
b250ZXh0LmlzT25FbmNhcHN1bGF0aW9uQm91bmRhcnkoKSkKKyAgICBpZiAoIWNoaWxkQ29udGV4
dC5pc09uRW5jYXBzdWxhdGlvbkJvdW5kYXJ5KCkgJiYgIWlzTG93ZXJFbmNhcHN1bGF0aW9uQm91
bmRhcnkoc2hhZG93KCktPmRpc3RyaWJ1dG9yKCkuZmluZEluc2VydGlvblBvaW50Rm9yKGNoaWxk
Q29udGV4dC5ub2RlKCkpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG1faXNP
cGVuKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
MzYxMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05Niw2ICs5Niw3IEBAIHZvaWQgSFRNTExJRWxlbWVudDo6YXR0YWNoKCkKIAog
ICAgICAgICAvLyBGaW5kIHRoZSBlbmNsb3NpbmcgbGlzdCBub2RlLgogICAgICAgICBOb2RlKiBs
aXN0Tm9kZSA9IDA7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgICAgIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlciB3YWxrZXIodGhpcyk7CiAgICAgICAgIHdoaWxlICghbGlzdE5vZGUpIHsK
ICAgICAgICAgICAgIHdhbGtlci5wYXJlbnQoKTsKQEAgLTEwNCw2ICsxMDUsMTQgQEAgdm9pZCBI
VE1MTElFbGVtZW50OjphdHRhY2goKQogICAgICAgICAgICAgaWYgKHdhbGtlci5nZXQoKS0+aGFz
VGFnTmFtZSh1bFRhZykgfHwgd2Fsa2VyLmdldCgpLT5oYXNUYWdOYW1lKG9sVGFnKSkKICAgICAg
ICAgICAgICAgICBsaXN0Tm9kZSA9IHdhbGtlci5nZXQoKTsKICAgICAgICAgfQorI2Vsc2UKKyAg
ICAgICAgZm9yIChOb2RlKiBub2RlID0gcGFyZW50Tm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+
cGFyZW50Tm9kZSgpKSB7CisgICAgICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh1bFRhZykg
fHwgbm9kZS0+aGFzVGFnTmFtZShvbFRhZykpeworICAgICAgICAgICAgICAgIGxpc3ROb2RlID0g
bm9kZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
I2VuZGlmCiAKICAgICAgICAgLy8gSWYgd2UgYXJlIG5vdCBpbiBhIGxpc3QsIHRlbGwgdGhlIHJl
bmRlcmVyIHNvIGl0IGNhbiBwb3NpdGlvbiB1cyBpbnNpZGUuCiAgICAgICAgIC8vIFdlIGRvbid0
IHdhbnQgdG8gY2hhbmdlIG91ciBzdHlsZSB0byBzYXkgImluc2lkZSIgc2luY2UgdGhhdCB3b3Vs
ZCBhZmZlY3QgbmVzdGVkIG5vZGVzLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
R3JvdXBFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRHcm91cEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzYxMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiSFRNTE9wdEdyb3VwRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJNZW51TGlz
dC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDEzNjEzMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJBdHRyaWJ1
dGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIK
ICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSFRNTERhdGFMaXN0RWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzYxMzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2
ICsyMyw3IEBACiAKICNpZiBFTkFCTEUoUFJPR1JFU1NfRUxFTUVOVCkKICNpbmNsdWRlICJBdHRy
aWJ1dGUuaCIKKyNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5n
Q29udGV4dC5oIgpAQCAtMzEsNyArMzIsNiBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMu
aCIKICNpbmNsdWRlICJQcm9ncmVzc1NoYWRvd0VsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJQ
cm9ncmVzcy5oIgotI2luY2x1ZGUgIlNlbGVjdFJ1bGVGZWF0dXJlU2V0LmgiCiAjaW5jbHVkZSAi
U2hhZG93Um9vdC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcAkocmV2aXNpb24gMTM2MTMz
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIFJlbmRlck9iamVjdCogSFRNTFN1bW1hcnlFbGVtZW50
OjpjcmVhdGUKIAogYm9vbCBIVE1MU3VtbWFyeUVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVu
ZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNoaWxkQ29udGV4dCkgY29uc3QKIHsK
LSAgICByZXR1cm4gY2hpbGRDb250ZXh0LmlzT25FbmNhcHN1bGF0aW9uQm91bmRhcnkoKSAmJiBI
VE1MRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGlsZENvbnRleHQpOworICAg
IHJldHVybiAoY2hpbGRDb250ZXh0LmlzT25FbmNhcHN1bGF0aW9uQm91bmRhcnkoKSB8fCBpc0xv
d2VyRW5jYXBzdWxhdGlvbkJvdW5kYXJ5KHNoYWRvdygpLT5kaXN0cmlidXRvcigpLmZpbmRJbnNl
cnRpb25Qb2ludEZvcihjaGlsZENvbnRleHQubm9kZSgpKSkpICYmIEhUTUxFbGVtZW50OjpjaGls
ZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxkQ29udGV4dCk7CiB9CiAKIHZvaWQgSFRNTFN1bW1h
cnlFbGVtZW50OjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0
VHlwZS5jcHAJKHJldmlzaW9uIDEzNjEzMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRU
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDkxLDcgKzQ5MSw3IEBAIHZvaWQgSW5wdXRUeXBl
OjpkZXN0cm95U2hhZG93U3VidHJlZSgpCiAgICAgLy8gQXV0aG9yU2hhZG93Um9vdCB0byBIVE1M
SW5wdXRFbGVtZW50LgogICAgIHdoaWxlICgocm9vdCA9IHJvb3QtPnlvdW5nZXJTaGFkb3dSb290
KCkpKSB7CiAgICAgICAgIHJvb3QtPnJlbW92ZUFsbENoaWxkcmVuKCk7Ci0gICAgICAgIHJvb3Qt
PmFwcGVuZENoaWxkKEhUTUxTaGFkb3dFbGVtZW50OjpjcmVhdGUoc2hhZG93VGFnLCBlbGVtZW50
KCktPmRvY3VtZW50KCkpKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kQ2hpbGQoSFRNTEVsZW1lbnQ6
OmNyZWF0ZShzaGFkb3dUYWcsIGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSkpOwogICAgIH0KIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0
b3IuY3BwCShyZXZpc2lvbiAxMzYxMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9D
b250ZW50RGlzdHJpYnV0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCiAKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogI2luY2x1ZGUgIkNvbnRlbnRTZWxlY3RvclF1ZXJ5Lmgi
CiAjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1ZGUgIkhUTUxDb250ZW50RWxlbWVu
dC5oIgpAQCAtMjU4LDMgKzI2MCw1IEBAIHZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjppbnZhbGlk
YXRlRGlzdHIKIH0KIAogfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0NvbnRlbnREaXN0cmlidXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oCShyZXZpc2lvbiAxMzYxMzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsOCBAQAogI2lmbmRlZiBDb250ZW50RGlzdHJpYnV0b3JfaAogI2RlZmlu
ZSBDb250ZW50RGlzdHJpYnV0b3JfaAogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTE0MywzICsxNDUsNSBAQCBpbmxpbmUgYm9vbCBDb250ZW50
RGlzdHJpYnV0b3I6Om5lZWRzRGlzCiB9CiAKICNlbmRpZgorI2VuZGlmCisKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAJ
KHJldmlzaW9uIDEzNjEzMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCiAKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKKwogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogI2luY2x1
ZGUgIkluc2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCkBAIC05
MCwzICs5Miw1IEBAIGJvb2wgQ29udGVudFNlbGVjdG9yUXVlcnk6Om1hdGNoZXMoY29uc3QKIH0K
IAogfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
Q29udGVudFNlbGVjdG9yUXVlcnkuaAkocmV2aXNpb24gMTM2MTMzKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNiArMzEsOCBAQAogI2lmbmRlZiBDb250ZW50U2VsZWN0b3JRdWVyeV9oCiAjZGVmaW5lIENv
bnRlbnRTZWxlY3RvclF1ZXJ5X2gKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiAjaW5jbHVk
ZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCiAjaW5j
bHVkZSAiU2VsZWN0b3JRdWVyeS5oIgpAQCAtNzcsMyArNzksNCBAQCBwcml2YXRlOgogfQogCiAj
ZW5kaWYKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRl
bnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9I
VE1MQ29udGVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzYxMzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRF
bGVtZW50LmgiCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogI2luY2x1ZGUgIkNTU1BhcnNl
ci5oIgogI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkNvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmgiCkBAIC0yMjgsMyArMjMwLDYgQEAgYm9vbCBIVE1MQ29udGVudEVsZW1l
bnQ6OnZhbGlkYXRlU2VsZWN0KAogCiAKIH0KKworI2VuZGlmCisKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oCShyZXZpc2lvbiAxMzYx
MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQAogI2lmbmRlZiBIVE1MQ29udGVudEVsZW1l
bnRfaAogI2RlZmluZSBIVE1MQ29udGVudEVsZW1lbnRfaAogCisjaWYgRU5BQkxFKFNIQURPV19E
T00pCisKICNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKICNpbmNsdWRlICJJbnNlcnRpb25Q
b2ludC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC05NSwzICs5Nyw0IEBAIGlubGlu
ZSBIVE1MQ29udGVudEVsZW1lbnQqIHRvSFRNTENvbnRlbnQKIH0KIAogI2VuZGlmCisjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVu
dC5jcHAJKHJldmlzaW9uIDEzNjEzMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hU
TUxTaGFkb3dFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50LmgiCiAKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKKwogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlNo
YWRvd1Jvb3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KQEAgLTk0LDMg
Kzk2LDUgQEAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBIVE1MU2hhZG93RWxlbWVudAogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oCShyZXZpc2lvbiAxMzYxMzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw2ICszMSw4IEBACiAjaWZuZGVmIEhUTUxTaGFkb3dFbGVtZW50X2gKICNkZWZp
bmUgSFRNTFNoYWRvd0VsZW1lbnRfaAogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKICNpbmNs
dWRlICJJbnNlcnRpb25Qb2ludC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTc4
LDQgKzgwLDUgQEAgaW5saW5lIGNvbnN0IEhUTUxTaGFkb3dFbGVtZW50KiB0b0hUTUxTaAogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZgogI2VuZGlmIC8vIEhUTUxTaGFkb3dFbGVt
ZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2lu
dC5jcHAJKHJldmlzaW9uIDEzNjEzMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0lu
c2VydGlvblBvaW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKKwogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCiAjaW5jbHVkZSAiU3RhdGljTm9kZUxpc3QuaCIKQEAgLTE3OCwzICsxODAsNSBA
QCB2b2lkIEluc2VydGlvblBvaW50OjpzZXRSZXNldFN0eWxlSW5oZXJpCiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9JbnNlcnRpb25Qb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0luc2VydGlvblBvaW50LmgJKHJldmlzaW9uIDEzNjEzMykKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMx
LDggQEAKICNpZm5kZWYgSW5zZXJ0aW9uUG9pbnRfaAogI2RlZmluZSBJbnNlcnRpb25Qb2ludF9o
CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5o
IgogI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFk
b3cuaCIKQEAgLTE3Myw0ICsxNzUsNSBAQCBpbmxpbmUgSW5zZXJ0aW9uUG9pbnQqIHJlc29sdmVS
ZXByb2plY3RpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2VuZGlmCiAjZW5kaWYgLy8g
SW5zZXJ0aW9uUG9pbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gMTM2MTMzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
IAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCit0eXBlZGVmIENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlciBUcmVlV2Fsa2VyOworCiBzdGF0aWMgaW5saW5lIENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ciB3YWxrZXJGcm9tKGNvbnN0IE5vZGUqIG5vZGUpCiB7CiAgICAgcmV0dXJuIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlcihub2RlLCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OkRvTm90Q3Jvc3NV
cHBlckJvdW5kYXJ5KTsKQEAgLTg0LDYgKzg4LDQzIEBAIHN0YXRpYyBpbmxpbmUgQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyIHcKICAgICByZXR1cm4gd2Fsa2VyOwogfQogCisjZWxzZQorCitjbGFz
cyBUcmVlV2Fsa2VyIHsKK3B1YmxpYzoKKyAgICBUcmVlV2Fsa2VyKGNvbnN0IE5vZGUqIG5vZGUp
IDogbV9ub2RlKG5vZGUpLCBtX2N1cnJlbnQobm9kZSkgeyB9CisgICAgY29uc3QgTm9kZSogZ2V0
KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50OyB9CisgICAgTm9kZSogZ2V0KCkgeyByZXR1cm4g
Y29uc3RfY2FzdDxOb2RlKj4obV9jdXJyZW50KTsgfQorICAgIHZvaWQgcGFyZW50KCkgeyBtX2N1
cnJlbnQgPSBtX2N1cnJlbnQtPnBhcmVudE5vZGUoKTsgfQorICAgIHZvaWQgbmV4dCgpIHsgbV9j
dXJyZW50ID0gbV9jdXJyZW50LT50cmF2ZXJzZU5leHROb2RlKG1fbm9kZSk7IH0KKyAgICB2b2lk
IHByZXZpb3VzKCkgeyBtX2N1cnJlbnQgPSBtX2N1cnJlbnQtPnRyYXZlcnNlUHJldmlvdXNOb2Rl
KG1fbm9kZSk7IH0KKyAgICB2b2lkIGxhc3RDaGlsZCgpIHsgbV9jdXJyZW50ID0gbV9jdXJyZW50
LT5sYXN0Q2hpbGQoKTsgfQorcHJpdmF0ZToKKyAgICBjb25zdCBOb2RlKiBtX25vZGU7CisgICAg
Y29uc3QgTm9kZSogbV9jdXJyZW50OworfTsKKworc3RhdGljIGlubGluZSBUcmVlV2Fsa2VyIHdh
bGtlckZyb20oY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4gVHJlZVdhbGtlcihub2Rl
KTsKK30KKworc3RhdGljIGlubGluZSBUcmVlV2Fsa2VyIHdhbGtlckZyb21OZXh0KGNvbnN0IE5v
ZGUqIG5vZGUpCit7CisgICAgVHJlZVdhbGtlciB3YWxrZXIgPSBUcmVlV2Fsa2VyKG5vZGUpOwor
ICAgIHdhbGtlci5uZXh0KCk7CisgICAgcmV0dXJuIHdhbGtlcjsKK30KKworc3RhdGljIGlubGlu
ZSBUcmVlV2Fsa2VyIHdhbGtlckZyb21QcmV2aW91cyhjb25zdCBOb2RlKiBub2RlKQoreworICAg
IFRyZWVXYWxrZXIgd2Fsa2VyID0gVHJlZVdhbGtlcihub2RlKTsKKyAgICB3YWxrZXIucHJldmlv
dXMoKTsKKyAgICByZXR1cm4gd2Fsa2VyOworfQorCisjZW5kaWYKKwogc3RhdGljIGlubGluZSBO
b2RlKiBuZXh0Tm9kZShjb25zdCBOb2RlKiBub2RlKQogewogICAgIHJldHVybiB3YWxrZXJGcm9t
TmV4dChub2RlKS5nZXQoKTsKQEAgLTExOSw3ICsxNjAsOCBAQCBFbGVtZW50KiBGb2N1c05hdmln
YXRpb25TY29wZTo6b3duZXIoKSBjCiBGb2N1c05hdmlnYXRpb25TY29wZSBGb2N1c05hdmlnYXRp
b25TY29wZTo6Zm9jdXNOYXZpZ2F0aW9uU2NvcGVPZihOb2RlKiBub2RlKQogewogICAgIEFTU0VS
VChub2RlKTsKLSAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUsIENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlcjo6RG9Ob3RDcm9zc1VwcGVyQm91bmRhcnkpOworICAgIFRyZWVX
YWxrZXIgd2Fsa2VyID0gd2Fsa2VyRnJvbShub2RlKTsKKwogICAgIE5vZGUqIHJvb3QgPSBub2Rl
OwogICAgIHdoaWxlICh3YWxrZXIuZ2V0KCkpIHsKICAgICAgICAgcm9vdCA9IHdhbGtlci5nZXQo
KTsKQEAgLTQ0OCw3ICs0OTAsNyBAQCBOb2RlKiBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2Fi
bGVOb2RlCiBOb2RlKiBGb2N1c0NvbnRyb2xsZXI6OmZpbmROb2RlV2l0aEV4YWN0VGFiSW5kZXgo
Tm9kZSogc3RhcnQsIGludCB0YWJJbmRleCwgS2V5Ym9hcmRFdmVudCogZXZlbnQsIEZvY3VzRGly
ZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICAvLyBTZWFyY2ggaXMgaW5jbHVzaXZlIG9mIHN0YXJ0
Ci0gICAgZm9yIChDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyID0gd2Fsa2VyRnJvbShz
dGFydCk7IHdhbGtlci5nZXQoKTsgZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCA/
IHdhbGtlci5uZXh0KCkgOiB3YWxrZXIucHJldmlvdXMoKSkgeworICAgIGZvciAoVHJlZVdhbGtl
ciB3YWxrZXIgPSB3YWxrZXJGcm9tKHN0YXJ0KTsgd2Fsa2VyLmdldCgpOyBkaXJlY3Rpb24gPT0g
Rm9jdXNEaXJlY3Rpb25Gb3J3YXJkID8gd2Fsa2VyLm5leHQoKSA6IHdhbGtlci5wcmV2aW91cygp
KSB7CiAgICAgICAgIGlmIChzaG91bGRWaXNpdCh3YWxrZXIuZ2V0KCksIGV2ZW50KSAmJiBhZGp1
c3RlZFRhYkluZGV4KHdhbGtlci5nZXQoKSwgZXZlbnQpID09IHRhYkluZGV4KQogICAgICAgICAg
ICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKICAgICB9CkBAIC00NjAsMTQgKzUwMiwxMyBAQCBzdGF0
aWMgTm9kZSogbmV4dE5vZGVXaXRoR3JlYXRlclRhYkluZGV4CiAgICAgLy8gU2VhcmNoIGlzIGlu
Y2x1c2l2ZSBvZiBzdGFydAogICAgIGludCB3aW5uaW5nVGFiSW5kZXggPSBzdGQ6Om51bWVyaWNf
bGltaXRzPHNob3J0Pjo6bWF4KCkgKyAxOwogICAgIE5vZGUqIHdpbm5lciA9IDA7Ci0gICAgZm9y
IChDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyID0gd2Fsa2VyRnJvbShzdGFydCk7IHdh
bGtlci5nZXQoKTsgd2Fsa2VyLm5leHQoKSkgeworICAgIGZvciAoVHJlZVdhbGtlciB3YWxrZXIg
PSB3YWxrZXJGcm9tKHN0YXJ0KTsgd2Fsa2VyLmdldCgpOyB3YWxrZXIubmV4dCgpKSB7CiAgICAg
ICAgIE5vZGUqIG5vZGUgPSB3YWxrZXIuZ2V0KCk7CiAgICAgICAgIGlmIChzaG91bGRWaXNpdChu
b2RlLCBldmVudCkgJiYgbm9kZS0+dGFiSW5kZXgoKSA+IHRhYkluZGV4ICYmIG5vZGUtPnRhYklu
ZGV4KCkgPCB3aW5uaW5nVGFiSW5kZXgpIHsKICAgICAgICAgICAgIHdpbm5lciA9IG5vZGU7CiAg
ICAgICAgICAgICB3aW5uaW5nVGFiSW5kZXggPSBub2RlLT50YWJJbmRleCgpOwogICAgICAgICB9
CiAgICAgfQotCiAgICAgcmV0dXJuIHdpbm5lcjsKIH0KIApAQCAtNDc2LDcgKzUxNyw3IEBAIHN0
YXRpYyBOb2RlKiBwcmV2aW91c05vZGVXaXRoTG93ZXJUYWJJbmQKICAgICAvLyBTZWFyY2ggaXMg
aW5jbHVzaXZlIG9mIHN0YXJ0CiAgICAgaW50IHdpbm5pbmdUYWJJbmRleCA9IDA7CiAgICAgTm9k
ZSogd2lubmVyID0gMDsKLSAgICBmb3IgKENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIg
PSB3YWxrZXJGcm9tKHN0YXJ0KTsgd2Fsa2VyLmdldCgpOyB3YWxrZXIucHJldmlvdXMoKSkgewor
ICAgIGZvciAoVHJlZVdhbGtlciB3YWxrZXIgPSB3YWxrZXJGcm9tKHN0YXJ0KTsgd2Fsa2VyLmdl
dCgpOyB3YWxrZXIucHJldmlvdXMoKSkgewogICAgICAgICBOb2RlKiBub2RlID0gd2Fsa2VyLmdl
dCgpOwogICAgICAgICBpbnQgY3VycmVudFRhYkluZGV4ID0gYWRqdXN0ZWRUYWJJbmRleChub2Rl
LCBldmVudCk7CiAgICAgICAgIGlmICgoc2hvdWxkVmlzaXQobm9kZSwgZXZlbnQpIHx8IGlzTm9u
Rm9jdXNhYmxlU2hhZG93SG9zdChub2RlLCBldmVudCkpICYmIGN1cnJlbnRUYWJJbmRleCA8IHRh
YkluZGV4ICYmIGN1cnJlbnRUYWJJbmRleCA+IHdpbm5pbmdUYWJJbmRleCkgewpAQCAtNDkzLDcg
KzUzNCw3IEBAIE5vZGUqIEZvY3VzQ29udHJvbGxlcjo6bmV4dEZvY3VzYWJsZU5vZGUKICAgICAg
ICAgaW50IHRhYkluZGV4ID0gYWRqdXN0ZWRUYWJJbmRleChzdGFydCwgZXZlbnQpOwogICAgICAg
ICAvLyBJZiBhIG5vZGUgaXMgZXhjbHVkZWQgZnJvbSB0aGUgbm9ybWFsIHRhYmJpbmcgY3ljbGUs
IHRoZSBuZXh0IGZvY3VzYWJsZSBub2RlIGlzIGRldGVybWluZWQgYnkgdHJlZSBvcmRlcgogICAg
ICAgICBpZiAodGFiSW5kZXggPCAwKSB7Ci0gICAgICAgICAgICBmb3IgKENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlciB3YWxrZXIgPSB3YWxrZXJGcm9tTmV4dChzdGFydCk7IHdhbGtlci5nZXQoKTsg
d2Fsa2VyLm5leHQoKSkgeworICAgICAgICAgICAgZm9yIChUcmVlV2Fsa2VyIHdhbGtlciA9IHdh
bGtlckZyb21OZXh0KHN0YXJ0KTsgd2Fsa2VyLmdldCgpOyB3YWxrZXIubmV4dCgpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKHNob3VsZFZpc2l0KHdhbGtlci5nZXQoKSwgZXZlbnQpICYmIGFkanVz
dGVkVGFiSW5kZXgod2Fsa2VyLmdldCgpLCBldmVudCkgPj0gMCkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKICAgICAgICAgICAgIH0KQEAgLTUyMiw3ICs1NjMsNyBA
QCBOb2RlKiBGb2N1c0NvbnRyb2xsZXI6Om5leHRGb2N1c2FibGVOb2RlCiBOb2RlKiBGb2N1c0Nv
bnRyb2xsZXI6OnByZXZpb3VzRm9jdXNhYmxlTm9kZShGb2N1c05hdmlnYXRpb25TY29wZSBzY29w
ZSwgTm9kZSogc3RhcnQsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewogICAgIE5vZGUqIGxhc3Qg
PSAwOwotICAgIGZvciAoQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlciA9IHdhbGtlckZy
b20oc2NvcGUucm9vdE5vZGUoKSk7IHdhbGtlci5nZXQoKTsgd2Fsa2VyLmxhc3RDaGlsZCgpKQor
ICAgIGZvciAoVHJlZVdhbGtlciB3YWxrZXIgPSB3YWxrZXJGcm9tKHNjb3BlLnJvb3ROb2RlKCkp
OyB3YWxrZXIuZ2V0KCk7IHdhbGtlci5sYXN0Q2hpbGQoKSkKICAgICAgICAgbGFzdCA9IHdhbGtl
ci5nZXQoKTsKICAgICBBU1NFUlQobGFzdCk7CiAKQEAgLTU0MCw3ICs1ODEsNyBAQCBOb2RlKiBG
b2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9jdXNhYmxlCiAKICAgICAvLyBIb3dldmVyLCBpZiBh
IG5vZGUgaXMgZXhjbHVkZWQgZnJvbSB0aGUgbm9ybWFsIHRhYmJpbmcgY3ljbGUsIHRoZSBwcmV2
aW91cyBmb2N1c2FibGUgbm9kZSBpcyBkZXRlcm1pbmVkIGJ5IHRyZWUgb3JkZXIKICAgICBpZiAo
c3RhcnRpbmdUYWJJbmRleCA8IDApIHsKLSAgICAgICAgZm9yIChDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIgd2Fsa2VyID0gd2Fsa2VyRnJvbShzdGFydGluZ05vZGUpOyB3YWxrZXIuZ2V0KCk7IHdh
bGtlci5wcmV2aW91cygpKSB7CisgICAgICAgIGZvciAoVHJlZVdhbGtlciB3YWxrZXIgPSB3YWxr
ZXJGcm9tKHN0YXJ0aW5nTm9kZSk7IHdhbGtlci5nZXQoKTsgd2Fsa2VyLnByZXZpb3VzKCkpIHsK
ICAgICAgICAgICAgIGlmIChzaG91bGRWaXNpdCh3YWxrZXIuZ2V0KCksIGV2ZW50KSAmJiBhZGp1
c3RlZFRhYkluZGV4KHdhbGtlci5nZXQoKSwgZXZlbnQpID49IDApCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHdhbGtlci5nZXQoKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMTM2MTMzKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODMsMTIgKzI4MywxOCBAQCBib29s
IEludGVybmFsczo6aXNQcmVsb2FkZWQoRG9jdW1lbnQqIGRvCiAKIFBhc3NSZWZQdHI8RWxlbWVu
dD4gSW50ZXJuYWxzOjpjcmVhdGVDb250ZW50RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmICghZG9j
dW1lbnQpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAogICAgIHJldHVybiBIVE1MQ29udGVudEVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShkb2N1bWVudCk7CisgICAgZWMgPSBJTlZB
TElEX0FDQ0VTU19FUlI7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogRWxlbWVudCogSW50
ZXJuYWxzOjpnZXRFbGVtZW50QnlJZEluU2hhZG93Um9vdChOb2RlKiBzaGFkb3dSb290LCBjb25z
dCBTdHJpbmcmIGlkLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTMwMiwxMiArMzA4LDE4IEBAIEVs
ZW1lbnQqIEludGVybmFsczo6Z2V0RWxlbWVudEJ5SWRJblNoYWQKIAogYm9vbCBJbnRlcm5hbHM6
OmlzVmFsaWRDb250ZW50U2VsZWN0KEVsZW1lbnQqIGluc2VydGlvblBvaW50LCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoIWluc2VydGlvblBv
aW50IHx8ICFpbnNlcnRpb25Qb2ludC0+aXNJbnNlcnRpb25Qb2ludCgpKSB7CiAgICAgICAgIGVj
ID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAg
ICAgcmV0dXJuIHRvSW5zZXJ0aW9uUG9pbnQoaW5zZXJ0aW9uUG9pbnQpLT5pc1NlbGVjdFZhbGlk
KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShpbnNlcnRpb25Qb2ludCk7CisgICAgZWMgPSBJ
TlZBTElEX0FDQ0VTU19FUlI7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogTm9kZSogSW50
ZXJuYWxzOjp0cmVlU2NvcGVSb290Tm9kZShOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykK
QEAgLTM5MywxOCArNDA1LDI0IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvclBzZXVk
b0NsYXMKIAogYm9vbCBJbnRlcm5hbHM6Omhhc1NoYWRvd0luc2VydGlvblBvaW50KGNvbnN0IE5v
ZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogeworI2lmIEVOQUJMRShTSEFET1df
RE9NKQogICAgIGlmIChyb290ICYmIHJvb3QtPmlzU2hhZG93Um9vdCgpKQogICAgICAgICByZXR1
cm4gdG9TaGFkb3dSb290KHJvb3QpLT5oYXNTaGFkb3dJbnNlcnRpb25Qb2ludCgpOwotCisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShyb290KTsKKyNlbmRpZgogICAgIGVjID0gSU5WQUxJRF9BQ0NF
U1NfRVJSOwogICAgIHJldHVybiAwOwogfQogCiBib29sIEludGVybmFsczo6aGFzQ29udGVudEVs
ZW1lbnQoY29uc3QgTm9kZSogcm9vdCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CisjaWYg
RU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKHJvb3QgJiYgcm9vdC0+aXNTaGFkb3dSb290KCkp
CiAgICAgICAgIHJldHVybiB0b1NoYWRvd1Jvb3Qocm9vdCktPmhhc0NvbnRlbnRFbGVtZW50KCk7
Ci0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJvb3QpOworI2VuZGlmCiAgICAgZWMgPSBJTlZB
TElEX0FDQ0VTU19FUlI7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC00MzEsNiArNDQ5LDcgQEAgYm9v
bCBJbnRlcm5hbHM6OmF0dGFjaGVkKE5vZGUqIG5vZGUsIEV4YwogCiBOb2RlKiBJbnRlcm5hbHM6
Om5leHRTaWJsaW5nQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Cisj
aWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVjID0gSU5W
QUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTQzOCwxMCArNDU3LDE2IEBA
IE5vZGUqIEludGVybmFsczo6bmV4dFNpYmxpbmdCeVdhbGtlcihOb2QKICAgICBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwogICAgIHdhbGtlci5uZXh0U2libGluZygpOwog
ICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShub2RlKTsK
KyAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQog
CiBOb2RlKiBJbnRlcm5hbHM6OmZpcnN0Q2hpbGRCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoIW5vZGUpIHsK
ICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAt
NDQ5LDEwICs0NzQsMTYgQEAgTm9kZSogSW50ZXJuYWxzOjpmaXJzdENoaWxkQnlXYWxrZXIoTm9k
ZQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CiAgICAgd2Fsa2Vy
LmZpcnN0Q2hpbGQoKTsKICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0obm9kZSk7CisgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgcmV0dXJu
IDA7CisjZW5kaWYKIH0KIAogTm9kZSogSW50ZXJuYWxzOjpsYXN0Q2hpbGRCeVdhbGtlcihOb2Rl
KiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAg
ICBpZiAoIW5vZGUpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAg
IHJldHVybiAwOwpAQCAtNDYwLDEwICs0OTEsMTYgQEAgTm9kZSogSW50ZXJuYWxzOjpsYXN0Q2hp
bGRCeVdhbGtlcihOb2RlKgogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9k
ZSk7CiAgICAgd2Fsa2VyLmxhc3RDaGlsZCgpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShub2RlKTsKKyAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VS
UjsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiBOb2RlKiBJbnRlcm5hbHM6Om5leHROb2Rl
QnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgRU5BQkxFKFNI
QURPV19ET00pCiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1Nf
RVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTQ3MSwxMCArNTA4LDE2IEBAIE5vZGUqIEludGVy
bmFsczo6bmV4dE5vZGVCeVdhbGtlcihOb2RlKiAKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXIgd2Fsa2VyKG5vZGUpOwogICAgIHdhbGtlci5uZXh0KCk7CiAgICAgcmV0dXJuIHdhbGtlci5n
ZXQoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG5vZGUpOworICAgIGVjID0gSU5WQUxJRF9B
Q0NFU1NfRVJSOworICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIE5vZGUqIEludGVybmFsczo6
cHJldmlvdXNOb2RlQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Cisj
aWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVjID0gSU5W
QUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTQ4Miw2ICs1MjUsMTEgQEAg
Tm9kZSogSW50ZXJuYWxzOjpwcmV2aW91c05vZGVCeVdhbGtlcihObwogICAgIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CiAgICAgd2Fsa2VyLnByZXZpb3VzKCk7CiAgICAg
cmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG5vZGUpOworICAg
IGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIFN0
cmluZyBJbnRlcm5hbHM6OmVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1lbnQqIGVsZW1lbnQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNTk3LDEyICs2NDUsMTggQEAgU3RyaW5nIEludGVybmFs
czo6c2hhZG93Um9vdFR5cGUoY29uc3QgTgogCiBFbGVtZW50KiBJbnRlcm5hbHM6OmluY2x1ZGVy
Rm9yKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIEVOQUJMRShTSEFET1df
RE9NKQogICAgIGlmICghbm9kZSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgcmV0dXJuIE5vZGVSZW5kZXJpbmdDb250
ZXh0KG5vZGUpLmluc2VydGlvblBvaW50KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShub2Rl
KTsKKyAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgog
fQogCiBTdHJpbmcgSW50ZXJuYWxzOjpzaGFkb3dQc2V1ZG9JZChFbGVtZW50KiBlbGVtZW50LCBF
eGNlcHRpb25Db2RlJiBlYykK
</data>
<flag name="commit-queue"
          id="192670"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>