<?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>32844</bug_id>
          
          <creation_ts>2009-12-21 16:20:57 -0800</creation_ts>
          <short_desc>[V8] Generate header declaration for property accessor getters/setters</short_desc>
          <delta_ts>2009-12-30 14:14:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>32638</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>174133</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-12-21 16:20:57 -0800</bug_when>
    <thetext>Part of https://bugs.webkit.org/show_bug.cgi?id=32638, the quest to remove all the manually declared custom bindings from V8CustomBinding.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174137</commentid>
    <comment_count>1</comment_count>
      <attachid>45359</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-12-21 16:29:08 -0800</bug_when>
    <thetext>Created attachment 45359
Generate property accessor getter/setter declarations.

I&apos;m on my way out the door for the holidays, so this review is decidedly non-urgent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174139</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-21 16:33:56 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45359 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175583</commentid>
    <comment_count>3</comment_count>
      <attachid>45359</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-12-29 09:08:29 -0800</bug_when>
    <thetext>Comment on attachment 45359
Generate property accessor getter/setter declarations.

r=me with notes:

Gah! Why is this custom for V8 bindings? Need a FIXME and a bug for this.

&gt; +        readonly attribute [V8CustomGetter] DOMString appVersion;

Ditto.

&gt; +                 attribute [Replaceable, V8CustomGetter] WorkerContext self;

This special-casing bonanza needs FIXMEs and bugs. We should work to remove these.

&gt; +    if ($dataNode-&gt;name eq &quot;Event&quot;) {
&gt; +        push(@headerContent, &quot;  static v8::Handle&lt;v8::Value&gt; dataTransferAccessorGetter(v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info);\n&quot;);
&gt; +        push(@headerContent, &quot;  static void valueAccessorSetter(v8::Local&lt;v8::String&gt; name, v8::Local&lt;v8::Value&gt; value, const v8::AccessorInfo&amp; info);\n&quot;);
&gt; +    }
&gt; +    if ($dataNode-&gt;name eq &quot;Location&quot;) {
&gt; +        push(@headerContent, &quot;  static v8::Handle&lt;v8::Value&gt; assignAccessorGetter(v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info);\n&quot;);
&gt; +        push(@headerContent, &quot;  static v8::Handle&lt;v8::Value&gt; reloadAccessorGetter(v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info);\n&quot;);
&gt; +        push(@headerContent, &quot;  static v8::Handle&lt;v8::Value&gt; replaceAccessorGetter(v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info);\n&quot;);
&gt; +    }
&gt;  }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176030</commentid>
    <comment_count>4</comment_count>
      <attachid>45683</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-12-30 13:36:31 -0800</bug_when>
    <thetext>Created attachment 45683
patch2 - removed .idl modifications

The .idl modifications were originally necessary because of some v8 only custom bindings that didn&apos;t really need to be custom.  Those bindings are now generated, which resulted in the removal of V8NavigatorCustom.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176031</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-30 13:36:56 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45683 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176033</commentid>
    <comment_count>6</comment_count>
      <attachid>45683</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-12-30 13:39:58 -0800</bug_when>
    <thetext>Comment on attachment 45683
patch2 - removed .idl modifications

ROCK!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176045</commentid>
    <comment_count>7</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-12-30 14:14:29 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/52672</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45359</attachid>
            <date>2009-12-21 16:29:08 -0800</date>
            <delta_ts>2009-12-30 13:36:31 -0800</delta_ts>
            <desc>Generate property accessor getter/setter declarations.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>47548</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9F
dmVudC5pZGwJKHJldmlzaW9uIDUyNDU4KQorKysgV2ViQ29yZS9kb20vRXZlbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw5ICs3MSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIGJvb2xlYW4gY2FuY2VsYWJsZUFyZyk7CiAKICAgICAgICAgLy8gSUUgRXh0
ZW5zaW9ucwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRXZlbnRUYXJnZXQgICAgICBzcmNF
bGVtZW50OwotICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgICByZXR1
cm5WYWx1ZTsKLSAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gICAgICAgICAgY2Fu
Y2VsQnViYmxlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4Q3VzdG9tR2V0dGVyXSBF
dmVudFRhcmdldCBzcmNFbGVtZW50OworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW1Y4Q3Vz
dG9tR2V0dGVyXSBib29sZWFuIHJldHVyblZhbHVlOworICAgICAgICAgICAgICAgICBhdHRyaWJ1
dGUgYm9vbGVhbiBjYW5jZWxCdWJibGU7CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJ
UFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtD
dXN0b21dIENsaXBib2FyZCAgICAgICAgY2xpcGJvYXJkRGF0YTsKSW5kZXg6IFdlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MjQ2MikK
KysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIw
MDktMTItMjEgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdXRvLWdlbmVyYXRlIFY4IGJp
bmRpbmdzIGhlYWRlciBkZWNsYXJhdGlvbnMgZm9yIAorICAgICAgICBwcm9wZXJ0eSBhY2Nlc3Nv
ciBnZXR0ZXIvc2V0dGVycy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXR0ckN1c3RvbS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENvb3JkaW5hdGVzQ3VzdG9tLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERvY3VtZW50TG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxJRnJhbWVFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOE5hdmlnYXRvckN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAgICAgICogZG9tL0V2ZW50LmlkbDoKKyAg
ICAgICAgKiBwYWdlL05hdmlnYXRvci5pZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmlkbDoKKwogMjAwOS0xMi0xOCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gYmFydGguCkluZGV4OiBXZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAko
cmV2aXNpb24gNTI0NTgpCisrKyBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICAgIF0gTmF2aWdhdG9yIHsKICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBhcHBDb2RlTmFtZTsKICAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyBhcHBOYW1lOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGFwcFZlcnNpb247CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhDdXN0b21H
ZXR0ZXJdIERPTVN0cmluZyBhcHBWZXJzaW9uOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGxhbmd1YWdlOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IHVzZXJBZ2VudDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBwbGF0Zm9y
bTsKSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwJKHJldmlzaW9uIDUyNDU4KQorKysg
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3
ICszOSw3IEBACiAKICAgICAgICAgLy8gV29ya2VyR2xvYmFsU2NvcGUKICNpZiBkZWZpbmVkKExB
TkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKLSAgICAgICAgICAgICAg
ICAgYXR0cmlidXRlIFtSZXBsYWNlYWJsZV0gV29ya2VyQ29udGV4dCBzZWxmOworICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGUgW1JlcGxhY2VhYmxlLCBWOEN1c3RvbUdldHRlcl0gV29ya2VyQ29u
dGV4dCBzZWxmOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbUmVwbGFjZWFi
bGVdIFdvcmtlckxvY2F0aW9uIGxvY2F0aW9uOwogICAgICAgICB2b2lkIGNsb3NlKCk7CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHJldmlzaW9u
IDUyNDU5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQko
d29ya2luZyBjb3B5KQpAQCAtMjgyLDE2ICsyODIsMzIgQEAKIEVORAogICAgIH0KIAotCiAgICAg
Zm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7CiAgICAgICAg
IG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsIDw8RU5EKTsKICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke25h
bWV9Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOwogRU5ECiAgICAgfQorICAgIAorICAg
IGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9KSB7CisgICAg
ICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICBteSAk
YXR0ckV4dCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzOworICAg
ICAgICBpZiAoJGF0dHJFeHQtPnsiVjhDdXN0b21HZXR0ZXIifSB8fCAkYXR0ckV4dC0+eyJDdXN0
b21HZXR0ZXIifQorICAgICAgICAgICAgfHwgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSB8fCAkYXR0
ckV4dC0+eyJDdXN0b20ifSkgeworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxF
TkQpOworICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7bmFtZX1BY2Nlc3NvckdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
byk7CitFTkQKKyAgICAgICAgfQorICAgICAgICBpZiAoJGF0dHJFeHQtPnsiVjhDdXN0b21TZXR0
ZXIifSB8fCAkYXR0ckV4dC0+eyJDdXN0b21TZXR0ZXIifQorICAgICAgICAgICAgfHwgJGF0dHJF
eHQtPnsiVjhDdXN0b20ifSB8fCAkYXR0ckV4dC0+eyJDdXN0b20ifSkgeworICAgICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOworICBzdGF0aWMgdm9pZCAke25hbWV9QWNjZXNz
b3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKTsKK0VORAorICAgICAgICB9Cisg
ICAgfQogCiAgICAgR2VuZXJhdGVTcGVjaWFsQ2FzZUhlYWRlckRlY2xhcmF0aW9ucygkZGF0YU5v
ZGUpOwotICAgIAorCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogCiAgcHJpdmF0
ZToKQEAgLTMxNSw2ICszMzEsMTUgQEAKICAgICBpZiAoJGRhdGFOb2RlLT5uYW1lIGVxICJIVE1M
Q29sbGVjdGlvbiIgfHwgJGRhdGFOb2RlLT5uYW1lIGVxICJIVE1MQWxsQ29sbGVjdGlvbiIpIHsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBjYWxsQXNGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTtcbiIpOwog
ICAgIH0KKyAgICBpZiAoJGRhdGFOb2RlLT5uYW1lIGVxICJFdmVudCIpIHsKKyAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkYXRhVHJh
bnNmZXJBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbyk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgc3RhdGljIHZvaWQgdmFsdWVBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pO1xuIik7CisgICAgfQorICAgIGlmICgkZGF0YU5vZGUtPm5hbWUgZXEgIkxvY2F0aW9u
IikgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGFzc2lnbkFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlbG9hZEFjY2Vzc29y
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHJlcGxhY2VBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbyk7XG4iKTsKKyAgICB9CiB9
CiAKIHN1YiBHZW5lcmF0ZVNldERPTUV4Y2VwdGlvbgpAQCAtMTA1Myw3ICsxMDc4LDcgQEAKICAg
ICAgICAgIiI7CiAgICAgaWYgKCRjdXN0b21BY2Nlc3NvciBlcSAxKSB7CiAgICAgICAgICMgdXNl
IHRoZSBuYW1pbmcgY29udmVuc2lvbiwgaW50ZXJmYWNlICsgKGNhcGl0YWxpemUpIGF0dHIgbmFt
ZQotICAgICAgICAkY3VzdG9tQWNjZXNzb3IgPSAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJh
dG9yLT5XS191Y2ZpcnN0KCRhdHRyTmFtZSk7CisgICAgICAgICRjdXN0b21BY2Nlc3NvciA9ICRp
bnRlcmZhY2VOYW1lIC4gIjo6IiAuICRhdHRyTmFtZTsKICAgICB9CiAKICAgICBteSAkZ2V0dGVy
OwpAQCAtMTA3OCw3ICsxMTAzLDcgQEAKICAgICAgICAgJGNvbnN0cnVjdG9yVHlwZSA9fiBzL0Nv
bnN0cnVjdG9yJC8vOwogICAgICAgICBteSAkY29uc3RydWN0b3JJbmRleCA9IHVjKCRjb25zdHJ1
Y3RvclR5cGUpOwogICAgICAgICBpZiAoJGN1c3RvbUFjY2Vzc29yKSB7Ci0gICAgICAgICAgICAk
Z2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JHZXR0ZXIiOwor
ICAgICAgICAgICAgJGdldHRlciA9ICJWOCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JHZXR0ZXIi
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgJGRhdGEgPSAiVjhDbGFzc0luZGV4Ojok
e2NvbnN0cnVjdG9ySW5kZXh9IjsKICAgICAgICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VO
YW1lfUludGVybmFsOjoke2ludGVyZmFjZU5hbWV9Q29uc3RydWN0b3JHZXR0ZXIiOwpAQCAtMTA5
NCwxMiArMTExOSwxMiBAQAogICAgICAgICAjIEN1c3RvbSBTZXR0ZXIKICAgICAgICAgaWYgKCRh
dHRyRXh0LT57IkN1c3RvbVNldHRlciJ9IHx8ICRhdHRyRXh0LT57IlY4Q3VzdG9tU2V0dGVyIn0g
fHwgJGF0dHJFeHQtPnsiQ3VzdG9tIn0gfHwgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSkgewogICAg
ICAgICAgICAgJGhhc0N1c3RvbVNldHRlciA9IDE7Ci0gICAgICAgICAgICAkc2V0dGVyID0gIlY4
Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JTZXR0ZXIiOworICAgICAgICAgICAg
JHNldHRlciA9ICJWOCR7Y3VzdG9tQWNjZXNzb3J9QWNjZXNzb3JTZXR0ZXIiOwogICAgICAgICB9
CiAKICAgICAgICAgIyBDdXN0b20gR2V0dGVyCiAgICAgICAgIGlmICgkYXR0ckV4dC0+eyJDdXN0
b21HZXR0ZXIifSB8fCAkYXR0ckV4dC0+eyJDdXN0b20ifSB8fCAkYXR0ckV4dC0+eyJWOEN1c3Rv
bSJ9KSB7Ci0gICAgICAgICAgICAkZ2V0dGVyID0gIlY4Q3VzdG9tOjp2OCR7Y3VzdG9tQWNjZXNz
b3J9QWNjZXNzb3JHZXR0ZXIiOworICAgICAgICAgICAgJGdldHRlciA9ICJWOCR7Y3VzdG9tQWNj
ZXNzb3J9QWNjZXNzb3JHZXR0ZXIiOwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCShyZXZpc2lvbiA1MjQ1OSkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBA
QAogI2luY2x1ZGUgIlY4SFRNTFBsdWdJbkVsZW1lbnRDdXN0b20uaCIKICNpbmNsdWRlICJWOElu
ZGV4LmgiCiAjaW5jbHVkZSAiVjhJc29sYXRlZFdvcmxkLmgiCisjaW5jbHVkZSAiVjhMb2NhdGlv
bi5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJXZWJHTEFycmF5LmgiCiAjaW5j
bHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKQEAgLTM3OCw5ICszNzksOSBAQAogICAgICAg
ICAvLyBpbnN0ZWFkIG9mIG9uIHRoZSBwcm90b3R5cGUgb2JqZWN0IHRvIGluc3VyZSB0aGF0IHRo
ZXkgY2Fubm90CiAgICAgICAgIC8vIGJlIG92ZXJ3cml0dGVuLgogICAgICAgICB2ODo6TG9jYWw8
djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IGRlc2NyaXB0b3ItPkluc3RhbmNlVGVtcGxh
dGUoKTsKLSAgICAgICAgaW5zdGFuY2UtPlNldEFjY2Vzc29yKHY4OjpTdHJpbmc6Ok5ldygicmVs
b2FkIiksIFY4Q3VzdG9tOjp2OExvY2F0aW9uUmVsb2FkQWNjZXNzb3JHZXR0ZXIsIDAsIHY4OjpI
YW5kbGU8djg6OlZhbHVlPigpLCB2ODo6QUxMX0NBTl9SRUFELCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpEb250RGVsZXRlIHwgdjg6OlJlYWRPbmx5KSk7Ci0gICAgICAg
IGluc3RhbmNlLT5TZXRBY2Nlc3Nvcih2ODo6U3RyaW5nOjpOZXcoInJlcGxhY2UiKSwgVjhDdXN0
b206OnY4TG9jYXRpb25SZXBsYWNlQWNjZXNzb3JHZXR0ZXIsIDAsIHY4OjpIYW5kbGU8djg6OlZh
bHVlPigpLCB2ODo6QUxMX0NBTl9SRUFELCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpEb250RGVsZXRlIHwgdjg6OlJlYWRPbmx5KSk7Ci0gICAgICAgIGluc3RhbmNlLT5T
ZXRBY2Nlc3Nvcih2ODo6U3RyaW5nOjpOZXcoImFzc2lnbiIpLCBWOEN1c3RvbTo6djhMb2NhdGlv
bkFzc2lnbkFjY2Vzc29yR2V0dGVyLCAwLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgdjg6OkFM
TF9DQU5fUkVBRCwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6RG9udERl
bGV0ZSB8IHY4OjpSZWFkT25seSkpOworICAgICAgICBpbnN0YW5jZS0+U2V0QWNjZXNzb3Iodjg6
OlN0cmluZzo6TmV3KCJyZWxvYWQiKSwgVjhMb2NhdGlvbjo6cmVsb2FkQWNjZXNzb3JHZXR0ZXIs
IDAsIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6QUxMX0NBTl9SRUFELCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpEb250RGVsZXRlIHwgdjg6OlJlYWRPbmx5KSk7
CisgICAgICAgIGluc3RhbmNlLT5TZXRBY2Nlc3Nvcih2ODo6U3RyaW5nOjpOZXcoInJlcGxhY2Ui
KSwgVjhMb2NhdGlvbjo6cmVwbGFjZUFjY2Vzc29yR2V0dGVyLCAwLCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKSwgdjg6OkFMTF9DQU5fUkVBRCwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6RG9udERlbGV0ZSB8IHY4OjpSZWFkT25seSkpOworICAgICAgICBpbnN0YW5jZS0+
U2V0QWNjZXNzb3Iodjg6OlN0cmluZzo6TmV3KCJhc3NpZ24iKSwgVjhMb2NhdGlvbjo6YXNzaWdu
QWNjZXNzb3JHZXR0ZXIsIDAsIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6QUxMX0NBTl9S
RUFELCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpEb250RGVsZXRlIHwg
djg6OlJlYWRPbmx5KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFY4Q2xhc3NJ
bmRleDo6SElTVE9SWToKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZy
YW1lRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gNTI0NTgpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSwxMCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJWOEhUTUxGcmFtZUVsZW1lbnQuaCIKKwogI2luY2x1ZGUgIkhUTUxGcmFt
ZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLQogI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIK
QEAgLTQwLDcgKzQxLDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsgCiAKLUFDQ0VT
U09SX1NFVFRFUihIVE1MRnJhbWVFbGVtZW50U3JjKQordm9pZCBWOEhUTUxGcmFtZUVsZW1lbnQ6
OnNyY0FjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBI
VE1MRnJhbWVFbGVtZW50KiBmcmFtZSA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJU
b05vZGU8SFRNTEZyYW1lRWxlbWVudD4oaW5mby5Ib2xkZXIoKSk7CiAgICAgU3RyaW5nIHNyY1Zh
bHVlID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVjayh2YWx1ZSk7CkBAIC01MSw3ICs1Miw3
IEBACiAgICAgZnJhbWUtPnNldEF0dHJpYnV0ZShzcmNBdHRyLCBzcmNWYWx1ZSk7IAogfQogCi1B
Q0NFU1NPUl9TRVRURVIoSFRNTEZyYW1lRWxlbWVudExvY2F0aW9uKQordm9pZCBWOEhUTUxGcmFt
ZUVsZW1lbnQ6OmxvY2F0aW9uQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewogICAgIEhUTUxGcmFtZUVsZW1lbnQqIGZyYW1lID0gVjhET01XcmFwcGVyOjpjb252
ZXJ0RE9NV3JhcHBlclRvTm9kZTxIVE1MRnJhbWVFbGVtZW50PihpbmZvLkhvbGRlcigpKTsKICAg
ICBTdHJpbmcgbG9jYXRpb25WYWx1ZSA9IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2sodmFs
dWUpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOYXZpZ2F0b3JDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmF2aWdhdG9y
Q3VzdG9tLmNwcAkocmV2aXNpb24gNTI0NTgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE5hdmlnYXRvckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE1ICsyOSwxNiBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOE5hdmlnYXRvci5oIgor
CiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCi0KICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNs
dWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotQUNDRVNTT1JfR0VUVEVSKE5hdmlnYXRvckFwcFZlcnNpb24pCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhOYXZpZ2F0b3I6OmFwcFZlcnNpb25BY2Nlc3NvckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKICAgICBJTkNfU1RBVFMoIkRPTS5OYXZpZ2F0b3IuYXBwVmVyc2lvbiIpOwogICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9t
LmNwcAkocmV2aXNpb24gNTI0NTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQUNDRVNTT1JfR0VUVEVSKEhUTUxJbnB1dEVsZW1l
bnRTZWxlY3Rpb25TdGFydCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxJbnB1dEVsZW1l
bnQ6OnNlbGVjdGlvblN0YXJ0QWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00u
SFRNTElucHV0RWxlbWVudC5zZWxlY3Rpb25TdGFydC5fZ2V0Iik7CiAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwpAQCAtNTIsNyArNTIsNyBAQAogICAg
IHJldHVybiB2ODo6SW50ZWdlcjo6TmV3KHYpOwogfQogCi1BQ0NFU1NPUl9TRVRURVIoSFRNTElu
cHV0RWxlbWVudFNlbGVjdGlvblN0YXJ0KQordm9pZCBWOEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVj
dGlvblN0YXJ0QWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewog
ICAgIElOQ19TVEFUUygiRE9NLkhUTUxJbnB1dEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQuX3NldCIp
OwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKQEAg
LTY1LDcgKzY1LDcgQEAKICAgICBpbXAtPnNldFNlbGVjdGlvblN0YXJ0KHZhbHVlLT5JbnQzMlZh
bHVlKCkpOwogfQogCi1BQ0NFU1NPUl9HRVRURVIoSFRNTElucHV0RWxlbWVudFNlbGVjdGlvbkVu
ZCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkVu
ZEFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxJbnB1dEVsZW1lbnQu
c2VsZWN0aW9uRW5kLl9nZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9
IGluZm8uSG9sZGVyKCk7CkBAIC03OCw3ICs3OCw3IEBACiAgICAgcmV0dXJuIHY4OjpJbnRlZ2Vy
OjpOZXcodik7CiB9CiAKLUFDQ0VTU09SX1NFVFRFUihIVE1MSW5wdXRFbGVtZW50U2VsZWN0aW9u
RW5kKQordm9pZCBWOEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkVuZEFjY2Vzc29yU2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1M
SW5wdXRFbGVtZW50LnNlbGVjdGlvbkVuZC5fc2V0Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gNTI0NTkpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2Nyw3ICsxNjcsNyBAQAogICAgIHJldHVybiB2OFN0cmluZyhTdHJpbmcob3V0
cHV0Q2hhcmFjdGVycy5kYXRhKCksIG91dHB1dENoYXJhY3RlcnMuc2l6ZSgpKSk7CiB9CiAKLUFD
Q0VTU09SX0dFVFRFUihET01XaW5kb3dFdmVudCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERP
TVdpbmRvdzo6ZXZlbnRBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOENsYXNzSW5kZXg6
OkRPTVdJTkRPVywgaW5mby5UaGlzKCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQpAQCAt
MTg4LDcgKzE4OCw3IEBACiAgICAgcmV0dXJuIGpzRXZlbnQ7CiB9CiAKLUFDQ0VTU09SX1NFVFRF
UihET01XaW5kb3dFdmVudCkKK3ZvaWQgVjhET01XaW5kb3c6OmV2ZW50QWNjZXNzb3JTZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4Q2xhc3NJbmRleDo6
RE9NV0lORE9XLCBpbmZvLlRoaXMoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCkBAIC0y
MDYsMjAgKzIwNiwyMCBAQAogICAgIGNvbnRleHQtPkdsb2JhbCgpLT5TZXRIaWRkZW5WYWx1ZShl
dmVudFN5bWJvbCwgdmFsdWUpOwogfQogCi1BQ0NFU1NPUl9HRVRURVIoRE9NV2luZG93Q3J5cHRv
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpjcnlwdG9BY2Nlc3NvckdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1lLgogICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7CiB9CiAKLUFDQ0VTU09SX1NFVFRFUihET01XaW5kb3dMb2NhdGlvbikKK3ZvaWQgVjhE
T01XaW5kb3c6OmxvY2F0aW9uQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewogICAgIERPTVdpbmRvdyogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRp
dmVPYmplY3Q8RE9NV2luZG93PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaW5mby5Ib2xkZXIo
KSk7CiAgICAgVjhDdXN0b206OldpbmRvd1NldExvY2F0aW9uKGltcCwgdG9XZWJDb3JlU3RyaW5n
KHZhbHVlKSk7CiB9CiAKIAotQUNDRVNTT1JfU0VUVEVSKERPTVdpbmRvd09wZW5lcikKK3ZvaWQg
VjhET01XaW5kb3c6Om9wZW5lckFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKIHsKICAgICBET01XaW5kb3cqIGltcCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0
aXZlT2JqZWN0PERPTVdpbmRvdz4oVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGluZm8uSG9sZGVy
KCkpOwogCkBAIC0yNDUsNyArMjQ1LDcgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAotQUNDRVNT
T1JfR0VUVEVSKERPTVdpbmRvd0F1ZGlvKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2lu
ZG93OjpBdWRpb0FjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIERPTVdpbmRvdyogd2luZG93ID0gVjhE
T01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RE9NV2luZG93PihWOENsYXNzSW5kZXg6
OkRPTVdJTkRPVywgaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Z2V0
Q29uc3RydWN0b3IoVjhDbGFzc0luZGV4OjpBVURJTywgd2luZG93KTsKQEAgLTMyNSwxMyArMzI1
LDEzIEBACiB9CiAjZW5kaWYKIAotQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRvd0ltYWdlKQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpJbWFnZUFjY2Vzc29yR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewog
ICAgIERPTVdpbmRvdyogd2luZG93ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmpl
Y3Q8RE9NV2luZG93PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaW5mby5Ib2xkZXIoKSk7CiAg
ICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Z2V0Q29uc3RydWN0b3IoVjhDbGFzc0luZGV4OjpJTUFH
RSwgd2luZG93KTsKIH0KIAotQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRvd09wdGlvbikKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6T3B0aW9uQWNjZXNzb3JHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAg
ICAgRE9NV2luZG93KiB3aW5kb3cgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVj
dDxET01XaW5kb3c+KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBpbmZvLkhvbGRlcigpKTsKICAg
ICByZXR1cm4gVjhET01XcmFwcGVyOjpnZXRDb25zdHJ1Y3RvcihWOENsYXNzSW5kZXg6Ok9QVElP
Tiwgd2luZG93KTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29vcmRpbmF0
ZXNDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Q29vcmRpbmF0ZXNDdXN0b20uY3BwCShyZXZpc2lvbiA1MjQ1OCkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q29vcmRpbmF0ZXNDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCwxNSArMjQsMTYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhD
b29yZGluYXRlcy5oIgorCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZXMuaCIKLQogI2luY2x1ZGUgIlY4
QmluZGluZy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJv
eHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BQ0NFU1NPUl9HRVRURVIoQ29vcmRpbmF0
ZXNBbHRpdHVkZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvb3JkaW5hdGVzOjphbHRpdHVk
ZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLkNvb3JkaW5hdGVzLmFsdGl0
dWRlLl9nZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9s
ZGVyKCk7CkBAIC00Miw3ICs0Myw3IEBACiAgICAgcmV0dXJuIHY4OjpOdW1iZXI6Ok5ldyhpbXAt
PmFsdGl0dWRlKCkpOwogfQogCi1BQ0NFU1NPUl9HRVRURVIoQ29vcmRpbmF0ZXNBbHRpdHVkZUFj
Y3VyYWN5KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29vcmRpbmF0ZXM6OmFsdGl0dWRlQWNj
dXJhY3lBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Db29yZGluYXRlcy5h
bHRpdHVkZUFjY3VyYWN5Ll9nZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRl
ciA9IGluZm8uSG9sZGVyKCk7CkBAIC01Miw3ICs1Myw3IEBACiAgICAgcmV0dXJuIHY4OjpOdW1i
ZXI6Ok5ldyhpbXAtPmFsdGl0dWRlQWNjdXJhY3koKSk7CiB9CiAKLUFDQ0VTU09SX0dFVFRFUihD
b29yZGluYXRlc0hlYWRpbmcpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb29yZGluYXRlczo6
aGVhZGluZ0FjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLkNvb3JkaW5hdGVz
LmhlYWRpbmcuX2dldCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5m
by5Ib2xkZXIoKTsKQEAgLTYyLDcgKzYzLDcgQEAKICAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3
KGltcC0+aGVhZGluZygpKTsKIH0KIAotQUNDRVNTT1JfR0VUVEVSKENvb3JkaW5hdGVzU3BlZWQp
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb29yZGluYXRlczo6c3BlZWRBY2Nlc3NvckdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Db29yZGluYXRlcy5zcGVlZC5fZ2V0Iik7CiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAJKHJldmlz
aW9uIDUyNDU5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw0ICsxMDQsMzIgQEAKICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwogfQogCisKKy8vIERPTUltcGxlbWVudGF0aW9uIGlzIGEgc2luZ2xldG9u
IGluIFdlYkNvcmUuIElmIHdlIHVzZSBvdXIgbm9ybWFsCisvLyBtYXBwaW5nIGZyb20gRE9NIG9i
amVjdHMgdG8gVjggd3JhcHBlcnMsIHRoZSBzYW1lIHdyYXBwZXIgd2lsbCBiZQorLy8gc2hhcmVk
IGZvciBhbGwgZnJhbWVzIGluIHRoZSBzYW1lIHByb2Nlc3MuIFRoaXMgaXMgYSBtYWpvcgorLy8g
c2VjdXJpdHkgcHJvYmxlbS4gVGhlcmVmb3JlLCB3ZSBnZW5lcmF0ZSBhIERPTUltcGxlbWVudGF0
aW9uCisvLyB3cmFwcGVyIHBlciBkb2N1bWVudCBhbmQgc3RvcmUgaXQgaW4gYW4gaW50ZXJuYWwg
ZmllbGQgb2YgdGhlCisvLyBkb2N1bWVudC4gU2luY2UgdGhlIERPTUltcGxlbWVudGF0aW9uIG9i
amVjdCBpcyBhIHNpbmdsZXRvbiwgd2UgZG8KKy8vIG5vdCBoYXZlIHRvIGRvIGFueXRoaW5nIHRv
IGtlZXAgdGhlIERPTUltcGxlbWVudGF0aW9uIG9iamVjdCBhbGl2ZQorLy8gZm9yIHRoZSBsaWZl
dGltZSBvZiB0aGUgd3JhcHBlci4KK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERvY3VtZW50Ojpp
bXBsZW1lbnRhdGlvbkFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIEFTU0VSVChpbmZvLkhvbGRlcigp
LT5JbnRlcm5hbEZpZWxkQ291bnQoKSA+PSBWOEN1c3RvbTo6a0RvY3VtZW50TWluaW11bUludGVy
bmFsRmllbGRDb3VudCk7CisKKyAgICAvLyBDaGVjayBpZiB0aGUgaW50ZXJuYWwgZmllbGQgYWxy
ZWFkeSBjb250YWlucyBhIHdyYXBwZXIuCisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gaW1wbGVt
ZW50YXRpb24gPSBpbmZvLkhvbGRlcigpLT5HZXRJbnRlcm5hbEZpZWxkKFY4Q3VzdG9tOjprRG9j
dW1lbnRJbXBsZW1lbnRhdGlvbkluZGV4KTsKKyAgICBpZiAoIWltcGxlbWVudGF0aW9uLT5Jc1Vu
ZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gaW1wbGVtZW50YXRpb247CisKKyAgICAvLyBHZW5l
cmF0ZSBhIHdyYXBwZXIuCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gVjhET01XcmFwcGVyOjpj
b252ZXJ0RE9NV3JhcHBlclRvTmF0aXZlPERvY3VtZW50PihpbmZvLkhvbGRlcigpKTsKKyAgICB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTUlt
cGxlbWVudGF0aW9uVG9WOE9iamVjdChkb2N1bWVudC0+aW1wbGVtZW50YXRpb24oKSk7CisKKyAg
ICAvLyBTdG9yZSB0aGUgd3JhcHBlciBpbiB0aGUgaW50ZXJuYWwgZmllbGQuCisgICAgaW5mby5I
b2xkZXIoKS0+U2V0SW50ZXJuYWxGaWVsZChWOEN1c3RvbTo6a0RvY3VtZW50SW1wbGVtZW50YXRp
b25JbmRleCwgd3JhcHBlcik7CisKKyAgICByZXR1cm4gd3JhcHBlcjsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA1MjQ1OSkKKysrIFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU0LDcgKzU0LDcgQEAKIH0KICNlbmRpZgogCi1BQ0NFU1NPUl9HRVRURVIoV29ya2Vy
Q29udGV4dFNlbGYpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0OjpzZWxm
QWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKEwiRE9NLldvcmtlckNvbnRleHQuc2Vs
Zi5fZ2V0Iik7CiAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IFY4RE9NV3JhcHBl
cjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxXb3JrZXJDb250ZXh0PihpbmZvLkhvbGRlcigp
KTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3Bw
CShyZXZpc2lvbiA1MjQ1OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwyNSArMjksMjUgQEAKICAqLwogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJWOEV2ZW50Lmgi
CiAKICNpbmNsdWRlICJDbGlwYm9hcmQuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRFdmVudC5oIgor
I2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgotCiAjaW5jbHVkZSAi
VjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQ
cm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFDQ0VTU09SX1NFVFRFUihFdmVudFJl
dHVyblZhbHVlKQordm9pZCBWOEV2ZW50Ojp2YWx1ZUFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBFdmVudCogZXZlbnQgPSBWOERPTVdyYXBwZXI6OmNv
bnZlcnRET01XcmFwcGVyVG9OYXRpdmU8RXZlbnQ+KGluZm8uSG9sZGVyKCkpOwogICAgIGV2ZW50
LT5zZXREZWZhdWx0UHJldmVudGVkKCF2YWx1ZS0+Qm9vbGVhblZhbHVlKCkpOwogfQogCi1BQ0NF
U1NPUl9HRVRURVIoRXZlbnREYXRhVHJhbnNmZXIpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhF
dmVudDo6ZGF0YVRyYW5zZmVyQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgRXZlbnQqIGV2ZW50ID0g
VjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTmF0aXZlPEV2ZW50PihpbmZvLkhvbGRl
cigpKTsKIApAQCAtNTcsNyArNTcsNyBAQAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9
CiAKLUFDQ0VTU09SX0dFVFRFUihFdmVudENsaXBib2FyZERhdGEpCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhFdmVudDo6Y2xpcGJvYXJkRGF0YUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIEV2ZW50
KiBldmVudCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxFdmVudD4o
aW5mby5Ib2xkZXIoKSk7CiAKQEAgLTY3LDEzICs2NywxMyBAQAogICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CiB9CiAKLUFDQ0VTU09SX0dFVFRFUihFdmVudFNyY0VsZW1lbnQpCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhFdmVudDo6c3JjRWxlbWVudEFjY2Vzc29yR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IEV2ZW50KiBldmVudCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxF
dmVudD4oaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydEV2
ZW50VGFyZ2V0VG9WOE9iamVjdChldmVudC0+dGFyZ2V0KCkpOwogfQogCi1BQ0NFU1NPUl9HRVRU
RVIoRXZlbnRSZXR1cm5WYWx1ZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEV2ZW50OjpyZXR1
cm5WYWx1ZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIEV2ZW50KiBldmVudCA9IFY4RE9NV3JhcHBl
cjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxFdmVudD4oaW5mby5Ib2xkZXIoKSk7CiAgICAg
cmV0dXJuIGV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCkgPyB2ODo6RmFsc2UoKSA6IHY4OjpUcnVl
KCk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdl
RXZlbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1MjQ1OSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyAr
NDIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFDQ0VTU09SX0dFVFRFUihNZXNzYWdl
RXZlbnRQb3J0cykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6cG9ydHNB
Y2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5NZXNzYWdlRXZlbnQucG9ydHMi
KTsKICAgICBNZXNzYWdlRXZlbnQqIGV2ZW50ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRp
dmVPYmplY3Q8TWVzc2FnZUV2ZW50PihWOENsYXNzSW5kZXg6Ok1FU1NBR0VFVkVOVCwgaW5mby5I
b2xkZXIoKSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdM
ZW5ndGhDdXN0b20uY3BwCShyZXZpc2lvbiA1MjQ1OSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFDQ0VTU09SX0dFVFRFUihTVkdMZW5ndGhW
YWx1ZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNWR0xlbmd0aDo6dmFsdWVBY2Nlc3Nvckdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5TVkdMZW5ndGgudmFsdWUiKTsKICAgICBWOFNW
R1BPRFR5cGVXcmFwcGVyPFNWR0xlbmd0aD4qIHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNvbnZl
cnRUb05hdGl2ZU9iamVjdDxWOFNWR1BPRFR5cGVXcmFwcGVyPFNWR0xlbmd0aD4gPihWOENsYXNz
SW5kZXg6OlNWR0xFTkdUSCwgaW5mby5Ib2xkZXIoKSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1
MjQ1OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDcgKzE3NCw3IEBACiAgICAgcmV0dXJuIGFyZ3Mu
SG9sZGVyKCk7CiB9CiAKLUFDQ0VTU09SX0dFVFRFUihIVE1MRG9jdW1lbnRBbGwpCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRG9jdW1lbnQ6OmFsbEFjY2Vzc29yR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IElOQ19TVEFUUygiRE9NLkhUTUxEb2N1bWVudC5hbGwuX2dldCIpOwogICAgIHY4OjpIYW5kbGVT
Y29wZSBzY29wZTsKQEAgLTE4MywxMiArMTgzLDEyIEBACiAgICAgcmV0dXJuIFY4RE9NV3JhcHBl
cjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpIVE1MQ09MTEVDVElPTiwgaHRtbERv
Y3VtZW50LT5hbGwoKSk7CiB9CiAKLUFDQ0VTU09SX1NFVFRFUihIVE1MRG9jdW1lbnRBbGwpCit2
b2lkIFY4SFRNTERvY3VtZW50OjphbGxBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTERvY3VtZW50LmFsbC5fc2V0Iik7
CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwotICAg
IEFTU0VSVChpbmZvLkhvbGRlcigpLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA9PSBrSFRNTERvY3Vt
ZW50SW50ZXJuYWxGaWVsZENvdW50KTsKLSAgICBpbmZvLkhvbGRlcigpLT5TZXRJbnRlcm5hbEZp
ZWxkKGtIVE1MRG9jdW1lbnRTaGFkb3dJbmRleCwgdmFsdWUpOworICAgIEFTU0VSVChpbmZvLkhv
bGRlcigpLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA9PSBWOEN1c3RvbTo6a0hUTUxEb2N1bWVudElu
dGVybmFsRmllbGRDb3VudCk7CisgICAgaW5mby5Ib2xkZXIoKS0+U2V0SW50ZXJuYWxGaWVsZChW
OEN1c3RvbTo6a0hUTUxEb2N1bWVudFNoYWRvd0luZGV4LCB2YWx1ZSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAJKHJldmlz
aW9uIDUyNDU5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCwyNSArNzQsMjUgQEAK
ICAgICByZXR1cm4gMDsKIH0KIAotQUNDRVNTT1JfR0VUVEVSKENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRFN0cm9rZVN0eWxlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzdHJva2VTdHlsZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRCogaW1wbCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05h
dGl2ZTxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVy
biB0b1Y4KGltcGwtPnN0cm9rZVN0eWxlKCkpOwogfQogCi1BQ0NFU1NPUl9TRVRURVIoQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEU3Ryb2tlU3R5bGUpCit2b2lkIFY4Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzdHJva2VTdHlsZUFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKIHsKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGltcGwgPSBWOERPTVdyYXBw
ZXI6OmNvbnZlcnRET01XcmFwcGVyVG9OYXRpdmU8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihp
bmZvLkhvbGRlcigpKTsKICAgICBpbXBsLT5zZXRTdHJva2VTdHlsZSh0b0NhbnZhc1N0eWxlKHZh
bHVlKSk7CiB9CiAKLUFDQ0VTU09SX0dFVFRFUihDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRGaWxs
U3R5bGUpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmZpbGxTdHlsZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RCogaW1wbCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ+KGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVybiB0b1Y4KGltcGwt
PmZpbGxTdHlsZSgpKTsKIH0KIAotQUNDRVNTT1JfU0VUVEVSKENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREZpbGxTdHlsZSkKK3ZvaWQgVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxTdHls
ZUFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQqIGltcGwgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFw
cGVyVG9OYXRpdmU8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihpbmZvLkhvbGRlcigpKTsKICAg
ICBpbXBsLT5zZXRGaWxsU3R5bGUodG9DYW52YXNTdHlsZSh2YWx1ZSkpOwpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5j
cHAJKHJldmlzaW9uIDUyNDU5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxI
dHRwUmVxdWVzdEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1BQ0NFU1NPUl9HRVRURVIoWE1MSHR0cFJlcXVlc3RSZXNw
b25zZVRleHQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6cmVzcG9u
c2VUZXh0QWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uWE1MSHR0cFJlcXVl
c3QucmVzcG9uc2V0ZXh0Ll9nZXQiKTsKICAgICBYTUxIdHRwUmVxdWVzdCogeG1sSHR0cFJlcXVl
c3QgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxYTUxIdHRwUmVxdWVzdD4o
VjhDbGFzc0luZGV4OjpYTUxIVFRQUkVRVUVTVCwgaW5mby5Ib2xkZXIoKSk7CkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAkocmV2aXNpb24gNTI0
NTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAkod29y
a2luZyBjb3B5KQpAQCAtMzYsMTQgKzM2LDYgQEAKIAogc3RydWN0IE5QT2JqZWN0OwogCi0jZGVm
aW5lIEFDQ0VTU09SX0dFVFRFUihOQU1FKSBcCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
Q3VzdG9tOjp2OCMjTkFNRSMjQWNjZXNzb3JHZXR0ZXIoIFwKLSAgICAgICAgdjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCi0KLSNkZWZpbmUg
QUNDRVNTT1JfU0VUVEVSKE5BTUUpIFwKLSAgICB2b2lkIFY4Q3VzdG9tOjp2OCMjTkFNRSMjQWNj
ZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIFwKLSAgICAgICAgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCi0KICNk
ZWZpbmUgSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoTkFNRSkgXAogICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEN1c3RvbTo6djgjI05BTUUjI0luZGV4ZWRQcm9wZXJ0eUdldHRlciggXAogICAg
ICAgICB1aW50MzJfdCBpbmRleCwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKQEAgLTE4
NCwxNiArMTc2LDYgQEAKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBrV2ViU29ja2V0SW50ZXJu
YWxGaWVsZENvdW50ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMTsKICNl
bmRpZgogCi0jZGVmaW5lIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKE5BTUUpIFwK
LSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4IyNOQU1FIyNBY2Nlc3NvckdldHRl
ciggXAotICAgICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKLQotI2RlZmluZSBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRF
UihOQU1FKSAgXAotICAgIHN0YXRpYyB2b2lkIHY4IyNOQU1FIyNBY2Nlc3NvclNldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgXAotICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKLQotI2RlZmluZSBERUNMQVJFX1BS
T1BFUlRZX0FDQ0VTU09SKE5BTUUpIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKE5B
TUUpOyBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRFUihOQU1FKQotCiAjZGVmaW5lIERF
Q0xBUkVfTkFNRURfUFJPUEVSVFlfR0VUVEVSKE5BTUUpICBcCiAgICAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2OCMjTkFNRSMjTmFtZWRQcm9wZXJ0eUdldHRlciggXAogICAgICAgICB2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
QEAgLTI0NCwxNSArMjI2LDcgQEAKIAogI2RlZmluZSBERUNMQVJFX0FDQ0VTU09SX1JVTlRJTUVf
RU5BQkxFUihOQU1FKSBzdGF0aWMgYm9vbCB2OCMjTkFNRSMjRW5hYmxlZCgpCiAKLSAgICAgICAg
REVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRTdHJva2VT
dHlsZSk7Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJERmlsbFN0eWxlKTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihE
T01XaW5kb3dFdmVudCk7Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVS
KERPTVdpbmRvd0NyeXB0byk7Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VU
VEVSKERPTVdpbmRvd0xvY2F0aW9uKTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NP
Ul9TRVRURVIoRE9NV2luZG93T3BlbmVyKTsKLQogI2lmIEVOQUJMRShWSURFTykKLSAgICAgICAg
REVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoRE9NV2luZG93QXVkaW8pOwogICAgICAg
ICBERUNMQVJFX0FDQ0VTU09SX1JVTlRJTUVfRU5BQkxFUihET01XaW5kb3dBdWRpbyk7CiAgICAg
ICAgIERFQ0xBUkVfQUNDRVNTT1JfUlVOVElNRV9FTkFCTEVSKERPTVdpbmRvd0hUTUxNZWRpYUVs
ZW1lbnQpOwogICAgICAgICBERUNMQVJFX0FDQ0VTU09SX1JVTlRJTUVfRU5BQkxFUihET01XaW5k
b3dIVE1MQXVkaW9FbGVtZW50KTsKQEAgLTI2MCwzNyArMjM0LDEyIEBACiAgICAgICAgIERFQ0xB
UkVfQUNDRVNTT1JfUlVOVElNRV9FTkFCTEVSKERPTVdpbmRvd01lZGlhRXJyb3IpOwogI2VuZGlm
CiAKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoRE9NV2luZG93SW1h
Z2UpOwotICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihET01XaW5kb3dP
cHRpb24pOwotCi0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoRG9jdW1lbnRMb2Nh
dGlvbik7Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoRG9jdW1lbnRJbXBsZW1l
bnRhdGlvbik7Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKEV2ZW50
U3JjRWxlbWVudCk7Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoRXZlbnRSZXR1
cm5WYWx1ZSk7Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKEV2ZW50
RGF0YVRyYW5zZmVyKTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIo
RXZlbnRDbGlwYm9hcmREYXRhKTsKLQotICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09S
KERPTVdpbmRvd0V2ZW50SGFuZGxlcik7Ci0KLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NF
U1NPUl9TRVRURVIoSFRNTEZyYW1lRWxlbWVudFNyYyk7Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVS
VFlfQUNDRVNTT1JfU0VUVEVSKEhUTUxGcmFtZUVsZW1lbnRMb2NhdGlvbik7Ci0gICAgICAgIERF
Q0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKEhUTUxJRnJhbWVFbGVtZW50U3JjKTsKLQot
ICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRFUihBdHRyVmFsdWUpOwotCi0g
ICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoSFRNTE9wdGlvbnNDb2xsZWN0aW9uTGVu
Z3RoKTsKLQotCi0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoSFRNTElucHV0RWxl
bWVudFNlbGVjdGlvblN0YXJ0KTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihI
VE1MSW5wdXRFbGVtZW50U2VsZWN0aW9uRW5kKTsKLQogICAgICAgICBERUNMQVJFX05BTUVEX0FD
Q0VTU19DSEVDSyhMb2NhdGlvbik7CiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9BQ0NFU1NfQ0hF
Q0soSGlzdG9yeSk7CiAKICAgICAgICAgREVDTEFSRV9OQU1FRF9BQ0NFU1NfQ0hFQ0soSGlzdG9y
eSk7CiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9BQ0NFU1NfQ0hFQ0soTG9jYXRpb24pOwogCi0g
ICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoSFRNTERvY3VtZW50QWxsKTsKICAgICAg
ICAgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIoSFRNTERvY3VtZW50KTsKICAgICAgICAg
REVDTEFSRV9OQU1FRF9QUk9QRVJUWV9ERUxFVEVSKEhUTUxEb2N1bWVudCk7CiAKQEAgLTMxNywz
OSArMjY2LDYgQEAKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFVuc2lnbmVkU2hvcnRB
cnJheUNvbnN0cnVjdG9yKTsKICNlbmRpZgogCi0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUND
RVNTT1JfR0VUVEVSKENsaXBib2FyZFR5cGVzKTsKLQotICAgICAgICBERUNMQVJFX1BST1BFUlRZ
X0FDQ0VTU09SX1NFVFRFUihMb2NhdGlvblByb3RvY29sKTsKLSAgICAgICAgREVDTEFSRV9QUk9Q
RVJUWV9BQ0NFU1NPUl9TRVRURVIoTG9jYXRpb25Ib3N0KTsKLSAgICAgICAgREVDTEFSRV9QUk9Q
RVJUWV9BQ0NFU1NPUl9TRVRURVIoTG9jYXRpb25Ib3N0bmFtZSk7Ci0gICAgICAgIERFQ0xBUkVf
UFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKExvY2F0aW9uUG9ydCk7Ci0gICAgICAgIERFQ0xBUkVf
UFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKExvY2F0aW9uUGF0aG5hbWUpOwotICAgICAgICBERUNM
QVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRFUihMb2NhdGlvblNlYXJjaCk7Ci0gICAgICAgIERF
Q0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKExvY2F0aW9uSGFzaCk7Ci0gICAgICAgIERF
Q0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKExvY2F0aW9uSHJlZik7Ci0gICAgICAgIERF
Q0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKExvY2F0aW9uQXNzaWduKTsKLSAgICAgICAg
REVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoTG9jYXRpb25SZXBsYWNlKTsKLSAgICAg
ICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoTG9jYXRpb25SZWxvYWQpOwotCi0g
ICAgICAgIC8vIFdlIGFjdHVhbGx5IG9ubHkgbmVlZCB0aGlzIGJlY2F1c2UgV2ViS2l0IGhhcwot
ICAgICAgICAvLyBuYXZpZ2F0b3IuYXBwVmVyc2lvbiBhcyBjdXN0b20uIE91ciB2ZXJzaW9uIGp1
c3QKLSAgICAgICAgLy8gcGFzc2VzIHRocm91Z2guCi0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlf
QUNDRVNTT1IoTmF2aWdhdG9yQXBwVmVyc2lvbik7Ci0KLSAgICAgICAgREVDTEFSRV9QUk9QRVJU
WV9BQ0NFU1NPUihYTUxIdHRwUmVxdWVzdE9uYWJvcnQpOwotICAgICAgICBERUNMQVJFX1BST1BF
UlRZX0FDQ0VTU09SKFhNTEh0dHBSZXF1ZXN0T25lcnJvcik7Ci0gICAgICAgIERFQ0xBUkVfUFJP
UEVSVFlfQUNDRVNTT1IoWE1MSHR0cFJlcXVlc3RPbmxvYWQpOwotICAgICAgICBERUNMQVJFX1BS
T1BFUlRZX0FDQ0VTU09SKFhNTEh0dHBSZXF1ZXN0T25sb2Fkc3RhcnQpOwotICAgICAgICBERUNM
QVJFX1BST1BFUlRZX0FDQ0VTU09SKFhNTEh0dHBSZXF1ZXN0T25wcm9ncmVzcyk7Ci0gICAgICAg
IERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoWE1MSHR0cFJlcXVlc3RPbnJlYWR5c3RhdGVjaGFu
Z2UpOwotICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKFhNTEh0dHBSZXF1ZXN0UmVz
cG9uc2VUZXh0KTsKLQotICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKFhNTEh0dHBS
ZXF1ZXN0VXBsb2FkT25hYm9ydCk7Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1Io
WE1MSHR0cFJlcXVlc3RVcGxvYWRPbmVycm9yKTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9B
Q0NFU1NPUihYTUxIdHRwUmVxdWVzdFVwbG9hZE9ubG9hZCk7Ci0gICAgICAgIERFQ0xBUkVfUFJP
UEVSVFlfQUNDRVNTT1IoWE1MSHR0cFJlcXVlc3RVcGxvYWRPbmxvYWRzdGFydCk7Ci0gICAgICAg
IERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoWE1MSHR0cFJlcXVlc3RVcGxvYWRPbnByb2dyZXNz
KTsKLQogICAgICAgICBERUNMQVJFX05BTUVEX1BST1BFUlRZX0dFVFRFUihET01XaW5kb3cpOwog
ICAgICAgICBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKERPTVdpbmRvdyk7CiAgICAg
ICAgIERFQ0xBUkVfTkFNRURfQUNDRVNTX0NIRUNLKERPTVdpbmRvdyk7CkBAIC00MDAsMTMgKzMx
Niw3IEBACiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9TRVRURVIoV2ViR0xVbnNp
Z25lZFNob3J0QXJyYXkpOwogI2VuZGlmCiAKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NF
U1NPUl9HRVRURVIoTWVzc2FnZUV2ZW50UG9ydHMpOwotCi0gICAgICAgIERFQ0xBUkVfUFJPUEVS
VFlfQUNDRVNTT1IoTWVzc2FnZVBvcnRPbm1lc3NhZ2UpOwotICAgICAgICBERUNMQVJFX1BST1BF
UlRZX0FDQ0VTU09SKE1lc3NhZ2VQb3J0T25jbG9zZSk7Ci0KICNpZiBFTkFCTEUoREFUQUdSSUQp
Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoSFRNTERhdGFHcmlkRWxlbWVudERh
dGFTb3VyY2UpOwogICAgICAgICBERUNMQVJFX05BTUVEX1BST1BFUlRZX0dFVFRFUihEYXRhR3Jp
ZENvbHVtbkxpc3QpOwogI2VuZGlmCiAKQEAgLTQyNiwzMyArMzM2LDE2IEBACiAgICAgICAgIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpBcnJheT4gdjhTdG9yYWdlTmFtZWRQcm9wZXJ0eUVudW1lcmF0
b3IoY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbyk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShT
VkcpCi0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKFNWR0xlbmd0aFZh
bHVlKTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgICAgIERFQ0xBUkVfUFJP
UEVSVFlfQUNDRVNTT1IoQWJzdHJhY3RXb3JrZXJPbmVycm9yKTsKLQotICAgICAgICBERUNMQVJF
X1BST1BFUlRZX0FDQ0VTU09SKERlZGljYXRlZFdvcmtlckNvbnRleHRPbm1lc3NhZ2UpOwotCi0g
ICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoV29ya2VyT25tZXNzYWdlKTsKICAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhXb3JrZXJDb25zdHJ1Y3Rvcik7CiAKLSAgICAgICAgREVDTEFS
RV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoV29ya2VyQ29udGV4dFNlbGYpOwotICAgICAgICBE
RUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKFdvcmtlckNvbnRleHRPbmVycm9yKTsKLQogI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQogICAgICAgICBERUNMQVJFX0FDQ0VTU09SX1JVTlRJTUVfRU5B
QkxFUihXb3JrZXJDb250ZXh0V2Via2l0Tm90aWZpY2F0aW9ucyk7CiAjZW5kaWYKICNlbmRpZiAv
LyBFTkFCTEUoV09SS0VSUykKIAotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgICAgICBE
RUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKE5vdGlmaWNhdGlvbkV2ZW50SGFuZGxlcik7Ci0jZW5k
aWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCi0KICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05TKQogICAgICAgICBERUNMQVJFX0FDQ0VTU09SX1JVTlRJTUVfRU5BQkxFUihET01X
aW5kb3dBcHBsaWNhdGlvbkNhY2hlKTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NP
UihET01BcHBsaWNhdGlvbkNhY2hlRXZlbnRIYW5kbGVyKTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKQpAQCAtNDY1LDI1ICszNTgsMTMgQEAKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFdFQl9TT0NLRVRTKQotICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKFdlYlNv
Y2tldE9ub3Blbik7Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoV2ViU29ja2V0
T25tZXNzYWdlKTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihXZWJTb2NrZXRP
bmNsb3NlKTsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJTb2NrZXRDb25zdHJ1Y3Rvcik7
CiAgICAgICAgIERFQ0xBUkVfQUNDRVNTT1JfUlVOVElNRV9FTkFCTEVSKERPTVdpbmRvd1dlYlNv
Y2tldCk7CiAjZW5kaWYKIAotICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRF
UihDb29yZGluYXRlc0FsdGl0dWRlKTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NP
Ul9HRVRURVIoQ29vcmRpbmF0ZXNBbHRpdHVkZUFjY3VyYWN5KTsKLSAgICAgICAgREVDTEFSRV9Q
Uk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoQ29vcmRpbmF0ZXNIZWFkaW5nKTsKLSAgICAgICAgREVD
TEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoQ29vcmRpbmF0ZXNTcGVlZCk7Ci0KICN1bmRl
ZiBERUNMQVJFX0lOREVYRURfQUNDRVNTX0NIRUNLCiAjdW5kZWYgREVDTEFSRV9OQU1FRF9BQ0NF
U1NfQ0hFQ0sKIAotI3VuZGVmIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSCi0jdW5k
ZWYgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIKLSN1bmRlZiBERUNMQVJFX1BST1BF
UlRZX0FDQ0VTU09SCi0KICN1bmRlZiBERUNMQVJFX05BTUVEX1BST1BFUlRZX0dFVFRFUgogI3Vu
ZGVmIERFQ0xBUkVfTkFNRURfUFJPUEVSVFlfU0VUVEVSCiAjdW5kZWYgREVDTEFSRV9OQU1FRF9Q
Uk9QRVJUWV9ERUxFVEVSCkBAIC01MDUsNyArMzg2LDYgQEAKICNpZiBFTkFCTEUoU1ZHKQogICAg
ICAgICBzdGF0aWMgVjhDbGFzc0luZGV4OjpWOFdyYXBwZXJUeXBlIERvd25jYXN0U1ZHUGF0aFNl
Zyh2b2lkKiBwYXRoU2VnKTsKICNlbmRpZgotICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyB2
b2lkIFdpbmRvd1NldExvY2F0aW9uKERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYpOwogICAgIH07
CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0
aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDUyNDU5KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBACiAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKIH0KIAotQUNDRVNTT1JfR0VUVEVSKEhUTUxPcHRpb25zQ29sbGVjdGlvbkxlbmd0aCkK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6bGVuZ3RoQWNj
ZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTE9wdGlvbnNDb2xsZWN0aW9u
Lmxlbmd0aC5fZ2V0Iik7CiAgICAgSFRNTE9wdGlvbnNDb2xsZWN0aW9uKiBpbXAgPSBWOERPTVdy
YXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+KFY4Q2xh
c3NJbmRleDo6SFRNTE9QVElPTlNDT0xMRUNUSU9OLCBpbmZvLkhvbGRlcigpKTsKQEAgLTkzLDcg
KzkzLDcgQEAKICAgICByZXR1cm4gdjg6OkludGVnZXI6Ok5ldyh2KTsKIH0KIAotQUNDRVNTT1Jf
U0VUVEVSKEhUTUxPcHRpb25zQ29sbGVjdGlvbkxlbmd0aCkKK3ZvaWQgVjhIVE1MT3B0aW9uc0Nv
bGxlY3Rpb246Omxlbmd0aEFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubGVuZ3RoLl9z
ZXQiKTsKICAgICBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGltcCA9IFY4RE9NV3JhcHBlcjo6Y29u
dmVydFRvTmF0aXZlT2JqZWN0PEhUTUxPcHRpb25zQ29sbGVjdGlvbj4oVjhDbGFzc0luZGV4OjpI
VE1MT1BUSU9OU0NPTExFQ1RJT04sIGluZm8uSG9sZGVyKCkpOwpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcAkocmV2aXNpb24gNTI0
NTkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1BQ0NFU1NPUl9HRVRURVIoQ2xpcGJvYXJkVHlwZXMpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhDbGlwYm9hcmQ6OnR5cGVzQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00u
Q2xpcGJvYXJkLnR5cGVzKCkiKTsKICAgICBDbGlwYm9hcmQqIGNsaXBib2FyZCA9IFY4RE9NV3Jh
cHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PENsaXBib2FyZD4oVjhDbGFzc0luZGV4OjpDTElQ
Qk9BUkQsIGluZm8uSG9sZGVyKCkpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhEb2N1bWVudExvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50TG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiA1MjQ1
OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRMb2NhdGlvbkN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDE3ICsyMiwxOCBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOERv
Y3VtZW50LmgiCiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJGcmFtZS5oIgog
I2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2lu
Y2x1ZGUgIlY4RG9jdW1lbnQuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotQUNDRVNTT1JfR0VUVEVSKERvY3VtZW50TG9jYXRpb24pCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhEb2N1bWVudDo6bG9jYXRpb25BY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9OYXRp
dmU8RG9jdW1lbnQ+KGluZm8uSG9sZGVyKCkpOwogICAgIGlmICghZG9jdW1lbnQtPmZyYW1lKCkp
CkBAIC00Miw3ICs0Myw3IEBACiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhP
YmplY3QoVjhDbGFzc0luZGV4OjpMT0NBVElPTiwgd2luZG93LT5sb2NhdGlvbigpKTsKIH0KIAot
QUNDRVNTT1JfU0VUVEVSKERvY3VtZW50TG9jYXRpb24pCit2b2lkIFY4RG9jdW1lbnQ6OmxvY2F0
aW9uQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2
ZTxEb2N1bWVudD4oaW5mby5Ib2xkZXIoKSk7CiAgICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKSkK
QEAgLTUwLDcgKzUxLDcgQEAKIAogICAgIERPTVdpbmRvdyogd2luZG93ID0gZG9jdW1lbnQtPmZy
YW1lKCktPmRvbVdpbmRvdygpOwogICAgIC8vIFdpbmRvd1NldExvY2F0aW9uIGRvZXMgc2VjdXJp
dHkgY2hlY2tzLiAvLyBYWFhNQi0gdmVyaWZ5IQotICAgIFdpbmRvd1NldExvY2F0aW9uKHdpbmRv
dywgdG9XZWJDb3JlU3RyaW5nKHZhbHVlKSk7CisgICAgVjhDdXN0b206OldpbmRvd1NldExvY2F0
aW9uKHdpbmRvdywgdG9XZWJDb3JlU3RyaW5nKHZhbHVlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRp
b25DdXN0b20uY3BwCShyZXZpc2lvbiA1MjQ1OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSwxNiBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOExvY2F0aW9uLmgiCisK
KyNpbmNsdWRlICJDU1NIZWxwZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUg
IkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJLVVJMLmgiCiAj
aW5jbHVkZSAiTG9jYXRpb24uaCIKLQorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1
ZGUgIlY4QmluZGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCkBAIC0z
OSwxNCArNDcsNiBAQAogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiVjhQcm94
eS5oIgogCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlICJLVVJMLmgiCi0j
aW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgotI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJDU1NIZWxwZXIuaCIKLSNpbmNsdWRlICJG
cmFtZS5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIE5vdGVzIGFib3V0IFY4L0pTQyBw
b3J0aW5nIG9mIHRoaXMgZmlsZS4KQEAgLTU5LDcgKzU5LDcgQEAKIC8vIHdlJ3JlIGp1c3QgbWFr
aW5nIGFsbCB0aGVzZSBjdXN0b20gZm9yIG5vdy4gIFRoZSBmdW5jdGlvbmFsaXR5IGlzIHNpbXBs
ZQogLy8gYW5kIG1pcnJvcnMgSlNMb2NhdGlvbkN1c3RvbS5jcHAuCiAKLUFDQ0VTU09SX1NFVFRF
UihMb2NhdGlvbkhhc2gpCit2b2lkIFY4TG9jYXRpb246Omhhc2hBY2Nlc3NvclNldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24u
aGFzaC5fc2V0Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhv
bGRlcigpOwpAQCAtODIsNyArODIsNyBAQAogICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZyYW1lLCB1
cmwsIGZhbHNlLCBmYWxzZSk7CiB9CiAKLUFDQ0VTU09SX1NFVFRFUihMb2NhdGlvbkhvc3QpCit2
b2lkIFY4TG9jYXRpb246Omhvc3RBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24uaG9zdC5fc2V0Iik7CiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwpAQCAtMTAyLDcg
KzEwMiw3IEBACiAgICAgbmF2aWdhdGVJZkFsbG93ZWQoZnJhbWUsIHVybCwgZmFsc2UsIGZhbHNl
KTsKIH0KIAotQUNDRVNTT1JfU0VUVEVSKExvY2F0aW9uSG9zdG5hbWUpCit2b2lkIFY4TG9jYXRp
b246Omhvc3RuYW1lQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewogICAgIElOQ19TVEFUUygiRE9NLkxvY2F0aW9uLmhvc3RuYW1lLl9zZXQiKTsKICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7CkBAIC0xMTksNyArMTE5
LDcgQEAKICAgICBuYXZpZ2F0ZUlmQWxsb3dlZChmcmFtZSwgdXJsLCBmYWxzZSwgZmFsc2UpOwog
fQogCi1BQ0NFU1NPUl9TRVRURVIoTG9jYXRpb25IcmVmKQordm9pZCBWOExvY2F0aW9uOjpocmVm
QWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIElOQ19T
VEFUUygiRE9NLkxvY2F0aW9uLmhyZWYuX3NldCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKQEAgLTEzOSw3ICsxMzksNyBAQAogICAgIG5hdmln
YXRlSWZBbGxvd2VkKGZyYW1lLCB1cmwsIGZhbHNlLCBmYWxzZSk7CiB9CiAKLUFDQ0VTU09SX1NF
VFRFUihMb2NhdGlvblBhdGhuYW1lKQordm9pZCBWOExvY2F0aW9uOjpwYXRobmFtZUFjY2Vzc29y
U2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRP
TS5Mb2NhdGlvbi5wYXRobmFtZS5fc2V0Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBo
b2xkZXIgPSBpbmZvLkhvbGRlcigpOwpAQCAtMTU2LDcgKzE1Niw3IEBACiAgICAgbmF2aWdhdGVJ
ZkFsbG93ZWQoZnJhbWUsIHVybCwgZmFsc2UsIGZhbHNlKTsKIH0KIAotQUNDRVNTT1JfU0VUVEVS
KExvY2F0aW9uUG9ydCkKK3ZvaWQgVjhMb2NhdGlvbjo6cG9ydEFjY2Vzc29yU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi5w
b3J0Ll9zZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9s
ZGVyKCk7CkBAIC0xNzMsNyArMTczLDcgQEAKICAgICBuYXZpZ2F0ZUlmQWxsb3dlZChmcmFtZSwg
dXJsLCBmYWxzZSwgZmFsc2UpOwogfQogCi1BQ0NFU1NPUl9TRVRURVIoTG9jYXRpb25Qcm90b2Nv
bCkKK3ZvaWQgVjhMb2NhdGlvbjo6cHJvdG9jb2xBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24ucHJvdG9jb2wu
X3NldCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIo
KTsKQEAgLTE5MCw3ICsxOTAsNyBAQAogICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZyYW1lLCB1cmws
IGZhbHNlLCBmYWxzZSk7CiB9CiAKLUFDQ0VTU09SX1NFVFRFUihMb2NhdGlvblNlYXJjaCkKK3Zv
aWQgVjhMb2NhdGlvbjo6c2VhcmNoQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLkxvY2F0aW9uLnNlYXJjaC5fc2V0Iik7CiAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwpAQCAtMjA3
LDcgKzIwNyw3IEBACiAgICAgbmF2aWdhdGVJZkFsbG93ZWQoZnJhbWUsIHVybCwgZmFsc2UsIGZh
bHNlKTsKIH0KIAotQUNDRVNTT1JfR0VUVEVSKExvY2F0aW9uUmVsb2FkKQordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZEFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIElOQ19T
VEFUUygiRE9NLkxvY2F0aW9uLnJlbG9hZC5fZ2V0Iik7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4
TG9jYXRpb246OnJlbG9hZENhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgdjg6OlNp
Z25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7CkBAIC0yMjUsNyAr
MjI1LDcgQEAKICAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogfQog
Ci1BQ0NFU1NPUl9HRVRURVIoTG9jYXRpb25SZXBsYWNlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4TG9jYXRpb246OnJlcGxhY2VBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRP
TS5Mb2NhdGlvbi5yZXBsYWNlLl9nZXQiKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlv
bjo6cmVwbGFjZUNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgdjg6OlNpZ25hdHVy
ZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7CkBAIC0yNDMsNyArMjQzLDcg
QEAKICAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogfQogCi1BQ0NF
U1NPUl9HRVRURVIoTG9jYXRpb25Bc3NpZ24pCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2Nh
dGlvbjo6YXNzaWduQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRp
b24uYXNzaWduLl9nZXQiKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEN1c3RvbUJpbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5jcHAJKHJldmlzaW9uIDUyNDU4KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjYsMzMgKzY2LDYgQEAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gRE9NSW1wbGVtZW50
YXRpb24gaXMgYSBzaW5nbGV0b24gaW4gV2ViQ29yZS4gSWYgd2UgdXNlIG91ciBub3JtYWwKLS8v
IG1hcHBpbmcgZnJvbSBET00gb2JqZWN0cyB0byBWOCB3cmFwcGVycywgdGhlIHNhbWUgd3JhcHBl
ciB3aWxsIGJlCi0vLyBzaGFyZWQgZm9yIGFsbCBmcmFtZXMgaW4gdGhlIHNhbWUgcHJvY2Vzcy4g
VGhpcyBpcyBhIG1ham9yCi0vLyBzZWN1cml0eSBwcm9ibGVtLiBUaGVyZWZvcmUsIHdlIGdlbmVy
YXRlIGEgRE9NSW1wbGVtZW50YXRpb24KLS8vIHdyYXBwZXIgcGVyIGRvY3VtZW50IGFuZCBzdG9y
ZSBpdCBpbiBhbiBpbnRlcm5hbCBmaWVsZCBvZiB0aGUKLS8vIGRvY3VtZW50LiBTaW5jZSB0aGUg
RE9NSW1wbGVtZW50YXRpb24gb2JqZWN0IGlzIGEgc2luZ2xldG9uLCB3ZSBkbwotLy8gbm90IGhh
dmUgdG8gZG8gYW55dGhpbmcgdG8ga2VlcCB0aGUgRE9NSW1wbGVtZW50YXRpb24gb2JqZWN0IGFs
aXZlCi0vLyBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSB3cmFwcGVyLgotQUNDRVNTT1JfR0VUVEVS
KERvY3VtZW50SW1wbGVtZW50YXRpb24pCi17Ci0gICAgQVNTRVJUKGluZm8uSG9sZGVyKCktPklu
dGVybmFsRmllbGRDb3VudCgpID49IGtEb2N1bWVudE1pbmltdW1JbnRlcm5hbEZpZWxkQ291bnQp
OwotCi0gICAgLy8gQ2hlY2sgaWYgdGhlIGludGVybmFsIGZpZWxkIGFscmVhZHkgY29udGFpbnMg
YSB3cmFwcGVyLgotICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGltcGxlbWVudGF0aW9uID0gaW5m
by5Ib2xkZXIoKS0+R2V0SW50ZXJuYWxGaWVsZChrRG9jdW1lbnRJbXBsZW1lbnRhdGlvbkluZGV4
KTsKLSAgICBpZiAoIWltcGxlbWVudGF0aW9uLT5Jc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1
cm4gaW1wbGVtZW50YXRpb247Ci0KLSAgICAvLyBHZW5lcmF0ZSBhIHdyYXBwZXIuCi0gICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTmF0aXZl
PERvY3VtZW50PihpbmZvLkhvbGRlcigpKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3Jh
cHBlciA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTUltcGxlbWVudGF0aW9uVG9WOE9iamVjdChk
b2N1bWVudC0+aW1wbGVtZW50YXRpb24oKSk7Ci0KLSAgICAvLyBTdG9yZSB0aGUgd3JhcHBlciBp
biB0aGUgaW50ZXJuYWwgZmllbGQuCi0gICAgaW5mby5Ib2xkZXIoKS0+U2V0SW50ZXJuYWxGaWVs
ZChrRG9jdW1lbnRJbXBsZW1lbnRhdGlvbkluZGV4LCB3cmFwcGVyKTsKLQotICAgIHJldHVybiB3
cmFwcGVyOwotfQotCiAvLyAtLS0tLS0tLS0tLS0tLS0gU2VjdXJpdHkgQ2hlY2tzIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIElOREVYRURfQUNDRVNTX0NIRUNLKEhpc3RvcnkpCiB7CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF0dHJDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXR0ckN1c3RvbS5jcHAJKHJldmlzaW9u
IDUyNDU4KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdHRyQ3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksMTggKzI5LDE4IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlY4QXR0ci5oIgorCiAjaW5jbHVkZSAiQXR0ci5oIgotCiAjaW5jbHVk
ZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLQogI2luY2x1ZGUgIlY4
QmluZGluZy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJv
eHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BQ0NFU1NPUl9TRVRURVIoQXR0clZhbHVl
KQordm9pZCBWOEF0dHI6OnZhbHVlQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewogICAgIEF0dHIqIGltcCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBw
ZXJUb05vZGU8QXR0cj4oaW5mby5Ib2xkZXIoKSk7CiAgICAgU3RyaW5nIGF0dHJWYWx1ZSA9IHRv
V2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2sodmFsdWUpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MSUZyYW1lRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSUZyYW1lRWxlbWVudEN1c3RvbS5jcHAJ
KHJldmlzaW9uIDUyNDU4KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSUZy
YW1lRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5LDEwIEBACiAg
Ki8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4SFRNTElGcmFtZUVsZW1lbnQu
aCIKKwogI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiIAotCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5n
LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgpAQCAtNDAsNyArNDEsNyBAQAogCiB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOyAKIAotQUNDRVNTT1JfU0VUVEVSKEhUTUxJRnJhbWVFbGVtZW50U3Jj
KQordm9pZCBWOEhUTUxJRnJhbWVFbGVtZW50OjpzcmNBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgSFRNTElGcmFtZUVsZW1lbnQqIGlmcmFtZSA9IFY4
RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8SFRNTElGcmFtZUVsZW1lbnQ+KGlu
Zm8uSG9sZGVyKCkpOwogICAgIFN0cmluZyB2ID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVj
ayh2YWx1ZSk7Cg==
</data>
<flag name="review"
          id="27378"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45683</attachid>
            <date>2009-12-30 13:36:31 -0800</date>
            <delta_ts>2009-12-30 13:39:57 -0800</delta_ts>
            <desc>patch2 - removed .idl modifications</desc>
            <filename>patch2.txt</filename>
            <type>text/plain</type>
            <size>48523</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MjY3MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMDktMTItMzAgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
dXRvLWdlbmVyYXRlIFY4IGJpbmRpbmdzIGhlYWRlciBkZWNsYXJhdGlvbnMgZm9yCisgICAgICAg
IHByb3BlcnR5IGFjY2Vzc29yIGdldHRlci9zZXR0ZXJzLCBhbmQgcmVtb3ZlIGEgY291cGxlIG9m
CisgICAgICAgIHVubmVjZXNzYXJpbHkgY3VzdG9tIGJpbmRpbmdzIHRoYXQgd2VyZW4ndCBwcm9w
ZXJseSBkZWNsYXJlZAorICAgICAgICBjdXN0b20gYW55d2F5LgorCisgICAgICAgICogQW5kcm9p
ZC52OGJpbmRpbmdzLm1rOiBSZW1vdmUgVjhOYXZpZ2F0b3JDdXN0b20uY3BwLgorICAgICAgICAq
IFdlYkNvcmUuZ3lwaTogUmVtb3ZlIFY4TmF2aWdhdG9yQ3VzdG9tLmNwcC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEF0dHJD
dXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xp
cGJvYXJkQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDb29yZGlu
YXRlc0N1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmlu
ZGluZy5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5o
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHA6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50TG9jYXRpb25DdXN0b20uY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJRnJhbWVFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20u
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hdmlnYXRvckN1c3RvbS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6
CisKIDIwMDktMTItMzAgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXguCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
Z3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNTI2NzAp
CisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNzIwLDcgKzcyMCw2
IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmFtZWROb2RlTWFwQ3VzdG9t
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmFtZWROb2Rlc0NvbGxl
Y3Rpb24uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhOYW1lZE5vZGVz
Q29sbGVjdGlvbi5oJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhOYXZpZ2F0
b3JDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3Vz
dG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUZpbHRlckN1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVJdGVyYXRv
ckN1c3RvbS5jcHAnLApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtCShyZXZpc2lvbiA1MjY3MCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0JKHdvcmtpbmcgY29weSkKQEAgLTI4MiwxNiArMjgyLDMyIEBACiBF
TkQKICAgICB9CiAKLQogICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRkYXRhTm9kZS0+ZnVu
Y3Rpb25zfSkgewogICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1l
OwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiAgIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gJHtuYW1lfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKIEVO
RAogICAgIH0KKyAgICAKKyAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGRhdGFOb2RlLT5h
dHRyaWJ1dGVzfSkgeworICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
bmFtZTsKKyAgICAgICAgbXkgJGF0dHJFeHQgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlczsKKyAgICAgICAgaWYgKCRhdHRyRXh0LT57IlY4Q3VzdG9tR2V0dGVyIn0g
fHwgJGF0dHJFeHQtPnsiQ3VzdG9tR2V0dGVyIn0KKyAgICAgICAgICAgIHx8ICRhdHRyRXh0LT57
IlY4Q3VzdG9tIn0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9tIn0pIHsKKyAgICAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKKyAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAk
e25hbWV9QWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pOworRU5ECisgICAgICAgIH0KKyAgICAgICAgaWYgKCRhdHRy
RXh0LT57IlY4Q3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9tU2V0dGVyIn0KKyAg
ICAgICAgICAgIHx8ICRhdHRyRXh0LT57IlY4Q3VzdG9tIn0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9t
In0pIHsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKKyAgc3RhdGlj
IHZvaWQgJHtuYW1lfUFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbyk7
CitFTkQKKyAgICAgICAgfQorICAgIH0KIAogICAgIEdlbmVyYXRlSGVhZGVyQ3VzdG9tQ2FsbCgk
ZGF0YU5vZGUpOwotICAgIAorCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogCiAg
cHJpdmF0ZToKQEAgLTMxNSw2ICszMzEsMTUgQEAKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ2FsbCJ9KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FsbEFzRnVuY3Rpb25DYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJik7XG4iKTsKICAgICB9CisgICAgaWYgKCRkYXRhTm9kZS0+
bmFtZSBlcSAiRXZlbnQiKSB7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGF0YVRyYW5zZmVyQWNjZXNzb3JHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pO1xuIik7
CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgIHN0YXRpYyB2b2lkIHZhbHVlQWNjZXNz
b3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKTtcbiIpOworICAgIH0KKyAgICBp
ZiAoJGRhdGFOb2RlLT5uYW1lIGVxICJMb2NhdGlvbiIpIHsKKyAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhc3NpZ25BY2Nlc3Nvckdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbyk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiByZWxvYWRBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbyk7XG4iKTsKKyAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXBsYWNl
QWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pO1xuIik7CisgICAgfQogfQogCiBzdWIgR2VuZXJhdGVTZXRET01FeGNl
cHRpb24KQEAgLTEwNTMsNyArMTA3OCw3IEBACiAgICAgICAgICIiOwogICAgIGlmICgkY3VzdG9t
QWNjZXNzb3IgZXEgMSkgewogICAgICAgICAjIHVzZSB0aGUgbmFtaW5nIGNvbnZlbnNpb24sIGlu
dGVyZmFjZSArIChjYXBpdGFsaXplKSBhdHRyIG5hbWUKLSAgICAgICAgJGN1c3RvbUFjY2Vzc29y
ID0gJGludGVyZmFjZU5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0ck5hbWUp
OworICAgICAgICAkY3VzdG9tQWNjZXNzb3IgPSAkaW50ZXJmYWNlTmFtZSAuICI6OiIgLiAkYXR0
ck5hbWU7CiAgICAgfQogCiAgICAgbXkgJGdldHRlcjsKQEAgLTEwNzgsNyArMTEwMyw3IEBACiAg
ICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKICAgICAgICAgbXkg
JGNvbnN0cnVjdG9ySW5kZXggPSB1YygkY29uc3RydWN0b3JUeXBlKTsKICAgICAgICAgaWYgKCRj
dXN0b21BY2Nlc3NvcikgewotICAgICAgICAgICAgJGdldHRlciA9ICJWOEN1c3RvbTo6djgke2N1
c3RvbUFjY2Vzc29yfUFjY2Vzc29yR2V0dGVyIjsKKyAgICAgICAgICAgICRnZXR0ZXIgPSAiVjgk
e2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yR2V0dGVyIjsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICRkYXRhID0gIlY4Q2xhc3NJbmRleDo6JHtjb25zdHJ1Y3RvckluZGV4fSI7CiAgICAg
ICAgICAgICAkZ2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1JbnRlcm5hbDo6JHtpbnRlcmZhY2VO
YW1lfUNvbnN0cnVjdG9yR2V0dGVyIjsKQEAgLTEwOTQsMTIgKzExMTksMTIgQEAKICAgICAgICAg
IyBDdXN0b20gU2V0dGVyCiAgICAgICAgIGlmICgkYXR0ckV4dC0+eyJDdXN0b21TZXR0ZXIifSB8
fCAkYXR0ckV4dC0+eyJWOEN1c3RvbVNldHRlciJ9IHx8ICRhdHRyRXh0LT57IkN1c3RvbSJ9IHx8
ICRhdHRyRXh0LT57IlY4Q3VzdG9tIn0pIHsKICAgICAgICAgICAgICRoYXNDdXN0b21TZXR0ZXIg
PSAxOwotICAgICAgICAgICAgJHNldHRlciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29y
fUFjY2Vzc29yU2V0dGVyIjsKKyAgICAgICAgICAgICRzZXR0ZXIgPSAiVjgke2N1c3RvbUFjY2Vz
c29yfUFjY2Vzc29yU2V0dGVyIjsKICAgICAgICAgfQogCiAgICAgICAgICMgQ3VzdG9tIEdldHRl
cgogICAgICAgICBpZiAoJGF0dHJFeHQtPnsiQ3VzdG9tR2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsi
Q3VzdG9tIn0gfHwgJGF0dHJFeHQtPnsiVjhDdXN0b20ifSkgewotICAgICAgICAgICAgJGdldHRl
ciA9ICJWOEN1c3RvbTo6djgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yR2V0dGVyIjsKKyAgICAg
ICAgICAgICRnZXR0ZXIgPSAiVjgke2N1c3RvbUFjY2Vzc29yfUFjY2Vzc29yR2V0dGVyIjsKICAg
ICAgICAgfQogICAgIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAko
cmV2aXNpb24gNTI2NzApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJWOEhUTUxDb2xsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiVjhJbmRleC5oIgogI2luY2x1ZGUgIlY4SXNvbGF0ZWRXb3JsZC5o
IgorI2luY2x1ZGUgIlY4TG9jYXRpb24uaCIKICNpbmNsdWRlICJWOE5vZGVMaXN0LmgiCiAjaW5j
bHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIldlYkdMQXJyYXkuaCIKQEAgLTMzOCw5ICszMzks
OSBAQAogICAgICAgICAvLyBpbnN0ZWFkIG9mIG9uIHRoZSBwcm90b3R5cGUgb2JqZWN0IHRvIGlu
c3VyZSB0aGF0IHRoZXkgY2Fubm90CiAgICAgICAgIC8vIGJlIG92ZXJ3cml0dGVuLgogICAgICAg
ICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IGRlc2NyaXB0b3ItPklu
c3RhbmNlVGVtcGxhdGUoKTsKLSAgICAgICAgaW5zdGFuY2UtPlNldEFjY2Vzc29yKHY4OjpTdHJp
bmc6Ok5ldygicmVsb2FkIiksIFY4Q3VzdG9tOjp2OExvY2F0aW9uUmVsb2FkQWNjZXNzb3JHZXR0
ZXIsIDAsIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6QUxMX0NBTl9SRUFELCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpEb250RGVsZXRlIHwgdjg6OlJlYWRPbmx5
KSk7Ci0gICAgICAgIGluc3RhbmNlLT5TZXRBY2Nlc3Nvcih2ODo6U3RyaW5nOjpOZXcoInJlcGxh
Y2UiKSwgVjhDdXN0b206OnY4TG9jYXRpb25SZXBsYWNlQWNjZXNzb3JHZXR0ZXIsIDAsIHY4OjpI
YW5kbGU8djg6OlZhbHVlPigpLCB2ODo6QUxMX0NBTl9SRUFELCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpEb250RGVsZXRlIHwgdjg6OlJlYWRPbmx5KSk7Ci0gICAgICAg
IGluc3RhbmNlLT5TZXRBY2Nlc3Nvcih2ODo6U3RyaW5nOjpOZXcoImFzc2lnbiIpLCBWOEN1c3Rv
bTo6djhMb2NhdGlvbkFzc2lnbkFjY2Vzc29yR2V0dGVyLCAwLCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4oKSwgdjg6OkFMTF9DQU5fUkVBRCwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6RG9udERlbGV0ZSB8IHY4OjpSZWFkT25seSkpOworICAgICAgICBpbnN0YW5jZS0+U2V0
QWNjZXNzb3Iodjg6OlN0cmluZzo6TmV3KCJyZWxvYWQiKSwgVjhMb2NhdGlvbjo6cmVsb2FkQWNj
ZXNzb3JHZXR0ZXIsIDAsIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6QUxMX0NBTl9SRUFE
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpEb250RGVsZXRlIHwgdjg6
OlJlYWRPbmx5KSk7CisgICAgICAgIGluc3RhbmNlLT5TZXRBY2Nlc3Nvcih2ODo6U3RyaW5nOjpO
ZXcoInJlcGxhY2UiKSwgVjhMb2NhdGlvbjo6cmVwbGFjZUFjY2Vzc29yR2V0dGVyLCAwLCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4oKSwgdjg6OkFMTF9DQU5fUkVBRCwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6RG9udERlbGV0ZSB8IHY4OjpSZWFkT25seSkpOworICAgICAg
ICBpbnN0YW5jZS0+U2V0QWNjZXNzb3Iodjg6OlN0cmluZzo6TmV3KCJhc3NpZ24iKSwgVjhMb2Nh
dGlvbjo6YXNzaWduQWNjZXNzb3JHZXR0ZXIsIDAsIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2
ODo6QUxMX0NBTl9SRUFELCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpE
b250RGVsZXRlIHwgdjg6OlJlYWRPbmx5KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIFY4Q2xhc3NJbmRleDo6SElTVE9SWToKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24g
NTI2NzApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZUVsZW1lbnRD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSwxMCBAQAogICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOEhUTUxGcmFtZUVsZW1lbnQuaCIKKwogI2luY2x1
ZGUgIkhUTUxGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLQogI2luY2x1
ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUg
IlY4UHJveHkuaCIKQEAgLTQwLDcgKzQxLDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsgCiAKLUFDQ0VTU09SX1NFVFRFUihIVE1MRnJhbWVFbGVtZW50U3JjKQordm9pZCBWOEhUTUxG
cmFtZUVsZW1lbnQ6OnNyY0FjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKICAgICBIVE1MRnJhbWVFbGVtZW50KiBmcmFtZSA9IFY4RE9NV3JhcHBlcjo6Y29udmVy
dERPTVdyYXBwZXJUb05vZGU8SFRNTEZyYW1lRWxlbWVudD4oaW5mby5Ib2xkZXIoKSk7CiAgICAg
U3RyaW5nIHNyY1ZhbHVlID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVjayh2YWx1ZSk7CkBA
IC01MSw3ICs1Miw3IEBACiAgICAgZnJhbWUtPnNldEF0dHJpYnV0ZShzcmNBdHRyLCBzcmNWYWx1
ZSk7IAogfQogCi1BQ0NFU1NPUl9TRVRURVIoSFRNTEZyYW1lRWxlbWVudExvY2F0aW9uKQordm9p
ZCBWOEhUTUxGcmFtZUVsZW1lbnQ6OmxvY2F0aW9uQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQogewogICAgIEhUTUxGcmFtZUVsZW1lbnQqIGZyYW1lID0gVjhET01X
cmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9kZTxIVE1MRnJhbWVFbGVtZW50PihpbmZvLkhv
bGRlcigpKTsKICAgICBTdHJpbmcgbG9jYXRpb25WYWx1ZSA9IHRvV2ViQ29yZVN0cmluZ1dpdGhO
dWxsQ2hlY2sodmFsdWUpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOYXZp
Z2F0b3JDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4TmF2aWdhdG9yQ3VzdG9tLmNwcAkocmV2aXNpb24gNTI2NzApCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOE5hdmlnYXRvckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk5hdmlnYXRvci5o
IgotCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgi
Ci0jaW5jbHVkZSAiVjhQcm94eS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUFDQ0VTU09S
X0dFVFRFUihOYXZpZ2F0b3JBcHBWZXJzaW9uKQotewotICAgIElOQ19TVEFUUygiRE9NLk5hdmln
YXRvci5hcHBWZXJzaW9uIik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBp
bmZvLkhvbGRlcigpOwotICAgIE5hdmlnYXRvciogbmF2aWdhdG9yID0gVjhET01XcmFwcGVyOjpj
b252ZXJ0VG9OYXRpdmVPYmplY3Q8TmF2aWdhdG9yPihWOENsYXNzSW5kZXg6Ok5BVklHQVRPUiwg
aG9sZGVyKTsKLSAgICByZXR1cm4gdjhTdHJpbmdPclVuZGVmaW5lZChuYXZpZ2F0b3ItPmFwcFZl
cnNpb24oKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNw
cAkocmV2aXNpb24gNTI2NzApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJ
bnB1dEVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQUNDRVNTT1JfR0VUVEVSKEhUTUxJbnB1dEVsZW1lbnRT
ZWxlY3Rpb25TdGFydCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxJbnB1dEVsZW1lbnQ6
OnNlbGVjdGlvblN0YXJ0QWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRN
TElucHV0RWxlbWVudC5zZWxlY3Rpb25TdGFydC5fZ2V0Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwpAQCAtNTIsNyArNTIsNyBAQAogICAgIHJl
dHVybiB2ODo6SW50ZWdlcjo6TmV3KHYpOwogfQogCi1BQ0NFU1NPUl9TRVRURVIoSFRNTElucHV0
RWxlbWVudFNlbGVjdGlvblN0YXJ0KQordm9pZCBWOEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlv
blN0YXJ0QWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IElOQ19TVEFUUygiRE9NLkhUTUxJbnB1dEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQuX3NldCIpOwog
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKQEAgLTY1
LDcgKzY1LDcgQEAKICAgICBpbXAtPnNldFNlbGVjdGlvblN0YXJ0KHZhbHVlLT5JbnQzMlZhbHVl
KCkpOwogfQogCi1BQ0NFU1NPUl9HRVRURVIoSFRNTElucHV0RWxlbWVudFNlbGVjdGlvbkVuZCkK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkVuZEFj
Y2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxJbnB1dEVsZW1lbnQuc2Vs
ZWN0aW9uRW5kLl9nZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGlu
Zm8uSG9sZGVyKCk7CkBAIC03OCw3ICs3OCw3IEBACiAgICAgcmV0dXJuIHY4OjpJbnRlZ2VyOjpO
ZXcodik7CiB9CiAKLUFDQ0VTU09SX1NFVFRFUihIVE1MSW5wdXRFbGVtZW50U2VsZWN0aW9uRW5k
KQordm9pZCBWOEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkVuZEFjY2Vzc29yU2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MSW5w
dXRFbGVtZW50LnNlbGVjdGlvbkVuZC5fc2V0Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gNTI2NzApCisrKyBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE2Nyw3ICsxNjcsNyBAQAogICAgIHJldHVybiB2OFN0cmluZyhTdHJpbmcob3V0cHV0
Q2hhcmFjdGVycy5kYXRhKCksIG91dHB1dENoYXJhY3RlcnMuc2l6ZSgpKSk7CiB9CiAKLUFDQ0VT
U09SX0dFVFRFUihET01XaW5kb3dFdmVudCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdp
bmRvdzo6ZXZlbnRBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOENsYXNzSW5kZXg6OkRP
TVdJTkRPVywgaW5mby5UaGlzKCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQpAQCAtMTg4
LDcgKzE4OCw3IEBACiAgICAgcmV0dXJuIGpzRXZlbnQ7CiB9CiAKLUFDQ0VTU09SX1NFVFRFUihE
T01XaW5kb3dFdmVudCkKK3ZvaWQgVjhET01XaW5kb3c6OmV2ZW50QWNjZXNzb3JTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
aG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4Q2xhc3NJbmRleDo6RE9N
V0lORE9XLCBpbmZvLlRoaXMoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpCkBAIC0yMDYs
MjAgKzIwNiwyMCBAQAogICAgIGNvbnRleHQtPkdsb2JhbCgpLT5TZXRIaWRkZW5WYWx1ZShldmVu
dFN5bWJvbCwgdmFsdWUpOwogfQogCi1BQ0NFU1NPUl9HRVRURVIoRE9NV2luZG93Q3J5cHRvKQor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpjcnlwdG9BY2Nlc3NvckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1lLgogICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CiB9CiAKLUFDQ0VTU09SX1NFVFRFUihET01XaW5kb3dMb2NhdGlvbikKK3ZvaWQgVjhET01X
aW5kb3c6OmxvY2F0aW9uQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQogewogICAgIERPTVdpbmRvdyogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVP
YmplY3Q8RE9NV2luZG93PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaW5mby5Ib2xkZXIoKSk7
CiAgICAgVjhDdXN0b206OldpbmRvd1NldExvY2F0aW9uKGltcCwgdG9XZWJDb3JlU3RyaW5nKHZh
bHVlKSk7CiB9CiAKIAotQUNDRVNTT1JfU0VUVEVSKERPTVdpbmRvd09wZW5lcikKK3ZvaWQgVjhE
T01XaW5kb3c6Om9wZW5lckFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKICAgICBET01XaW5kb3cqIGltcCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZl
T2JqZWN0PERPTVdpbmRvdz4oVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGluZm8uSG9sZGVyKCkp
OwogCkBAIC0yNDUsNyArMjQ1LDcgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAotQUNDRVNTT1Jf
R0VUVEVSKERPTVdpbmRvd0F1ZGlvKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93
OjpBdWRpb0FjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIERPTVdpbmRvdyogd2luZG93ID0gVjhET01X
cmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RE9NV2luZG93PihWOENsYXNzSW5kZXg6OkRP
TVdJTkRPVywgaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Z2V0Q29u
c3RydWN0b3IoVjhDbGFzc0luZGV4OjpBVURJTywgd2luZG93KTsKQEAgLTMyNSwxMyArMzI1LDEz
IEBACiB9CiAjZW5kaWYKIAotQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRvd0ltYWdlKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpJbWFnZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IERPTVdpbmRvdyogd2luZG93ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8
RE9NV2luZG93PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaW5mby5Ib2xkZXIoKSk7CiAgICAg
cmV0dXJuIFY4RE9NV3JhcHBlcjo6Z2V0Q29uc3RydWN0b3IoVjhDbGFzc0luZGV4OjpJTUFHRSwg
d2luZG93KTsKIH0KIAotQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRvd09wdGlvbikKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6T3B0aW9uQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAg
RE9NV2luZG93KiB3aW5kb3cgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxE
T01XaW5kb3c+KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBpbmZvLkhvbGRlcigpKTsKICAgICBy
ZXR1cm4gVjhET01XcmFwcGVyOjpnZXRDb25zdHJ1Y3RvcihWOENsYXNzSW5kZXg6Ok9QVElPTiwg
d2luZG93KTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29vcmRpbmF0ZXND
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29v
cmRpbmF0ZXNDdXN0b20uY3BwCShyZXZpc2lvbiA1MjY3MCkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q29vcmRpbmF0ZXNDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwx
NSArMjQsMTYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhDb29y
ZGluYXRlcy5oIgorCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZXMuaCIKLQogI2luY2x1ZGUgIlY4Qmlu
ZGluZy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHku
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BQ0NFU1NPUl9HRVRURVIoQ29vcmRpbmF0ZXNB
bHRpdHVkZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvb3JkaW5hdGVzOjphbHRpdHVkZUFj
Y2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLkNvb3JkaW5hdGVzLmFsdGl0dWRl
Ll9nZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVy
KCk7CkBAIC00Miw3ICs0Myw3IEBACiAgICAgcmV0dXJuIHY4OjpOdW1iZXI6Ok5ldyhpbXAtPmFs
dGl0dWRlKCkpOwogfQogCi1BQ0NFU1NPUl9HRVRURVIoQ29vcmRpbmF0ZXNBbHRpdHVkZUFjY3Vy
YWN5KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29vcmRpbmF0ZXM6OmFsdGl0dWRlQWNjdXJh
Y3lBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Db29yZGluYXRlcy5hbHRp
dHVkZUFjY3VyYWN5Ll9nZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9
IGluZm8uSG9sZGVyKCk7CkBAIC01Miw3ICs1Myw3IEBACiAgICAgcmV0dXJuIHY4OjpOdW1iZXI6
Ok5ldyhpbXAtPmFsdGl0dWRlQWNjdXJhY3koKSk7CiB9CiAKLUFDQ0VTU09SX0dFVFRFUihDb29y
ZGluYXRlc0hlYWRpbmcpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb29yZGluYXRlczo6aGVh
ZGluZ0FjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLkNvb3JkaW5hdGVzLmhl
YWRpbmcuX2dldCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5I
b2xkZXIoKTsKQEAgLTYyLDcgKzYzLDcgQEAKICAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KGlt
cC0+aGVhZGluZygpKTsKIH0KIAotQUNDRVNTT1JfR0VUVEVSKENvb3JkaW5hdGVzU3BlZWQpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb29yZGluYXRlczo6c3BlZWRBY2Nlc3NvckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKICAgICBJTkNfU1RBVFMoIkRPTS5Db29yZGluYXRlcy5zcGVlZC5fZ2V0Iik7CiAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAJKHJldmlzaW9u
IDUyNjcwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw0ICsxMDQsMzIgQEAKICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwogfQogCisKKy8vIERPTUltcGxlbWVudGF0aW9uIGlzIGEgc2luZ2xldG9uIGlu
IFdlYkNvcmUuIElmIHdlIHVzZSBvdXIgbm9ybWFsCisvLyBtYXBwaW5nIGZyb20gRE9NIG9iamVj
dHMgdG8gVjggd3JhcHBlcnMsIHRoZSBzYW1lIHdyYXBwZXIgd2lsbCBiZQorLy8gc2hhcmVkIGZv
ciBhbGwgZnJhbWVzIGluIHRoZSBzYW1lIHByb2Nlc3MuIFRoaXMgaXMgYSBtYWpvcgorLy8gc2Vj
dXJpdHkgcHJvYmxlbS4gVGhlcmVmb3JlLCB3ZSBnZW5lcmF0ZSBhIERPTUltcGxlbWVudGF0aW9u
CisvLyB3cmFwcGVyIHBlciBkb2N1bWVudCBhbmQgc3RvcmUgaXQgaW4gYW4gaW50ZXJuYWwgZmll
bGQgb2YgdGhlCisvLyBkb2N1bWVudC4gU2luY2UgdGhlIERPTUltcGxlbWVudGF0aW9uIG9iamVj
dCBpcyBhIHNpbmdsZXRvbiwgd2UgZG8KKy8vIG5vdCBoYXZlIHRvIGRvIGFueXRoaW5nIHRvIGtl
ZXAgdGhlIERPTUltcGxlbWVudGF0aW9uIG9iamVjdCBhbGl2ZQorLy8gZm9yIHRoZSBsaWZldGlt
ZSBvZiB0aGUgd3JhcHBlci4KK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERvY3VtZW50OjppbXBs
ZW1lbnRhdGlvbkFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIEFTU0VSVChpbmZvLkhvbGRlcigpLT5J
bnRlcm5hbEZpZWxkQ291bnQoKSA+PSBWOEN1c3RvbTo6a0RvY3VtZW50TWluaW11bUludGVybmFs
RmllbGRDb3VudCk7CisKKyAgICAvLyBDaGVjayBpZiB0aGUgaW50ZXJuYWwgZmllbGQgYWxyZWFk
eSBjb250YWlucyBhIHdyYXBwZXIuCisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gaW1wbGVtZW50
YXRpb24gPSBpbmZvLkhvbGRlcigpLT5HZXRJbnRlcm5hbEZpZWxkKFY4Q3VzdG9tOjprRG9jdW1l
bnRJbXBsZW1lbnRhdGlvbkluZGV4KTsKKyAgICBpZiAoIWltcGxlbWVudGF0aW9uLT5Jc1VuZGVm
aW5lZCgpKQorICAgICAgICByZXR1cm4gaW1wbGVtZW50YXRpb247CisKKyAgICAvLyBHZW5lcmF0
ZSBhIHdyYXBwZXIuCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gVjhET01XcmFwcGVyOjpjb252
ZXJ0RE9NV3JhcHBlclRvTmF0aXZlPERvY3VtZW50PihpbmZvLkhvbGRlcigpKTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTUltcGxl
bWVudGF0aW9uVG9WOE9iamVjdChkb2N1bWVudC0+aW1wbGVtZW50YXRpb24oKSk7CisKKyAgICAv
LyBTdG9yZSB0aGUgd3JhcHBlciBpbiB0aGUgaW50ZXJuYWwgZmllbGQuCisgICAgaW5mby5Ib2xk
ZXIoKS0+U2V0SW50ZXJuYWxGaWVsZChWOEN1c3RvbTo6a0RvY3VtZW50SW1wbGVtZW50YXRpb25J
bmRleCwgd3JhcHBlcik7CisKKyAgICByZXR1cm4gd3JhcHBlcjsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250
ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFdvcmtlckNvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA1MjY3MCkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU0LDEzICs1NCw2IEBACiB9CiAjZW5kaWYKIAotQUNDRVNTT1JfR0VUVEVSKFdvcmtlckNv
bnRleHRTZWxmKQotewotICAgIElOQ19TVEFUUyhMIkRPTS5Xb3JrZXJDb250ZXh0LnNlbGYuX2dl
dCIpOwotICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBWOERPTVdyYXBwZXI6OmNv
bnZlcnRET01XcmFwcGVyVG9OYXRpdmU8V29ya2VyQ29udGV4dD4oaW5mby5Ib2xkZXIoKSk7Ci0g
ICAgcmV0dXJuIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6Y29udmVydFdvcmtlckNvbnRl
eHRUb1Y4T2JqZWN0KHdvcmtlckNvbnRleHQpOwotfQotCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
U2V0VGltZW91dE9ySW50ZXJ2YWwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5n
bGVTaG90KQogewogICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBWOERPTVdyYXBw
ZXI6OmNvbnZlcnRET01XcmFwcGVyVG9OYXRpdmU8V29ya2VyQ29udGV4dD4oYXJncy5Ib2xkZXIo
KSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNw
cAkocmV2aXNpb24gNTI2NzApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMjUgKzI5LDI1IEBACiAgKi8KIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiVjhFdmVudC5o
IgogCiAjaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJkRXZlbnQuaCIK
KyNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKLQogI2luY2x1ZGUg
IlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4
UHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BQ0NFU1NPUl9TRVRURVIoRXZlbnRS
ZXR1cm5WYWx1ZSkKK3ZvaWQgVjhFdmVudDo6dmFsdWVBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgRXZlbnQqIGV2ZW50ID0gVjhET01XcmFwcGVyOjpj
b252ZXJ0RE9NV3JhcHBlclRvTmF0aXZlPEV2ZW50PihpbmZvLkhvbGRlcigpKTsKICAgICBldmVu
dC0+c2V0RGVmYXVsdFByZXZlbnRlZCghdmFsdWUtPkJvb2xlYW5WYWx1ZSgpKTsKIH0KIAotQUND
RVNTT1JfR0VUVEVSKEV2ZW50RGF0YVRyYW5zZmVyKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
RXZlbnQ6OmRhdGFUcmFuc2ZlckFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIEV2ZW50KiBldmVudCA9
IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxFdmVudD4oaW5mby5Ib2xk
ZXIoKSk7CiAKQEAgLTU3LDcgKzU3LDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwog
fQogCi1BQ0NFU1NPUl9HRVRURVIoRXZlbnRDbGlwYm9hcmREYXRhKQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RXZlbnQ6OmNsaXBib2FyZERhdGFBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBFdmVu
dCogZXZlbnQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9OYXRpdmU8RXZlbnQ+
KGluZm8uSG9sZGVyKCkpOwogCkBAIC02NywxNiArNjcsNCBAQAogICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CiB9CiAKLUFDQ0VTU09SX0dFVFRFUihFdmVudFNyY0VsZW1lbnQpCi17Ci0gICAg
RXZlbnQqIGV2ZW50ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTmF0aXZlPEV2
ZW50PihpbmZvLkhvbGRlcigpKTsKLSAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0RXZl
bnRUYXJnZXRUb1Y4T2JqZWN0KGV2ZW50LT50YXJnZXQoKSk7Ci19Ci0KLUFDQ0VTU09SX0dFVFRF
UihFdmVudFJldHVyblZhbHVlKQotewotICAgIEV2ZW50KiBldmVudCA9IFY4RE9NV3JhcHBlcjo6
Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxFdmVudD4oaW5mby5Ib2xkZXIoKSk7Ci0gICAgcmV0
dXJuIGV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCkgPyB2ODo6RmFsc2UoKSA6IHY4OjpUcnVlKCk7
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDUyNjcw
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotQUNDRVNTT1JfR0VUVEVSKE1lc3NhZ2VFdmVudFBvcnRzKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4TWVzc2FnZUV2ZW50Ojpwb3J0c0FjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFU
UygiRE9NLk1lc3NhZ2VFdmVudC5wb3J0cyIpOwogICAgIE1lc3NhZ2VFdmVudCogZXZlbnQgPSBW
OERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxNZXNzYWdlRXZlbnQ+KFY4Q2xhc3NJ
bmRleDo6TUVTU0FHRUVWRU5ULCBpbmZvLkhvbGRlcigpKTsKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHAJKHJldmlzaW9uIDUyNjcw
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
QUNDRVNTT1JfR0VUVEVSKFNWR0xlbmd0aFZhbHVlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
U1ZHTGVuZ3RoOjp2YWx1ZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLlNW
R0xlbmd0aC52YWx1ZSIpOwogICAgIFY4U1ZHUE9EVHlwZVdyYXBwZXI8U1ZHTGVuZ3RoPiogd3Jh
cHBlciA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFY4U1ZHUE9EVHlwZVdy
YXBwZXI8U1ZHTGVuZ3RoPiA+KFY4Q2xhc3NJbmRleDo6U1ZHTEVOR1RILCBpbmZvLkhvbGRlcigp
KTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1
bWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDUyNjcwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsNyAr
MTc0LDcgQEAKICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKIH0KIAotQUNDRVNTT1JfR0VUVEVS
KEhUTUxEb2N1bWVudEFsbCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6
YWxsQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTERvY3VtZW50LmFs
bC5fZ2V0Iik7CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwpAQCAtMTgzLDEyICsxODMsMTIg
QEAKICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5k
ZXg6OkhUTUxDT0xMRUNUSU9OLCBodG1sRG9jdW1lbnQtPmFsbCgpKTsKIH0KIAotQUNDRVNTT1Jf
U0VUVEVSKEhUTUxEb2N1bWVudEFsbCkKK3ZvaWQgVjhIVE1MRG9jdW1lbnQ6OmFsbEFjY2Vzc29y
U2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRP
TS5IVE1MRG9jdW1lbnQuYWxsLl9zZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhv
bGRlciA9IGluZm8uSG9sZGVyKCk7Ci0gICAgQVNTRVJUKGluZm8uSG9sZGVyKCktPkludGVybmFs
RmllbGRDb3VudCgpID09IGtIVE1MRG9jdW1lbnRJbnRlcm5hbEZpZWxkQ291bnQpOwotICAgIGlu
Zm8uSG9sZGVyKCktPlNldEludGVybmFsRmllbGQoa0hUTUxEb2N1bWVudFNoYWRvd0luZGV4LCB2
YWx1ZSk7CisgICAgQVNTRVJUKGluZm8uSG9sZGVyKCktPkludGVybmFsRmllbGRDb3VudCgpID09
IFY4Q3VzdG9tOjprSFRNTERvY3VtZW50SW50ZXJuYWxGaWVsZENvdW50KTsKKyAgICBpbmZvLkhv
bGRlcigpLT5TZXRJbnRlcm5hbEZpZWxkKFY4Q3VzdG9tOjprSFRNTERvY3VtZW50U2hhZG93SW5k
ZXgsIHZhbHVlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQ3VzdG9tLmNwcAkocmV2aXNpb24gNTI2NzApCisrKyBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc0LDI1ICs3NCwyNSBAQAogICAgIHJldHVybiAwOwogfQogCi1BQ0NFU1NPUl9H
RVRURVIoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU3Ryb2tlU3R5bGUpCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVN0eWxlQWNjZXNzb3JH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCiB7CiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBpbXBsID0gVjhET01XcmFw
cGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTmF0aXZlPENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4o
aW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHRvVjgoaW1wbC0+c3Ryb2tlU3R5bGUoKSk7CiB9
CiAKLUFDQ0VTU09SX1NFVFRFUihDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRTdHJva2VTdHlsZSkK
K3ZvaWQgVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVN0eWxlQWNjZXNzb3JTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRCogaW1wbCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KGluZm8uSG9sZGVyKCkpOwogICAgIGltcGwtPnNldFN0
cm9rZVN0eWxlKHRvQ2FudmFzU3R5bGUodmFsdWUpKTsKIH0KIAotQUNDRVNTT1JfR0VUVEVSKENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREZpbGxTdHlsZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFN0eWxlQWNjZXNzb3JHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAg
ICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBpbXBsID0gVjhET01XcmFwcGVyOjpjb252ZXJ0
RE9NV3JhcHBlclRvTmF0aXZlPENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oaW5mby5Ib2xkZXIo
KSk7CiAgICAgcmV0dXJuIHRvVjgoaW1wbC0+ZmlsbFN0eWxlKCkpOwogfQogCi1BQ0NFU1NPUl9T
RVRURVIoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJERmlsbFN0eWxlKQordm9pZCBWOENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZmlsbFN0eWxlQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQogewogICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCogaW1wbCA9IFY4
RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ+KGluZm8uSG9sZGVyKCkpOwogICAgIGltcGwtPnNldEZpbGxTdHlsZSh0b0NhbnZhc1N0
eWxlKHZhbHVlKSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBS
ZXF1ZXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAkocmV2aXNpb24gNTI2NzApCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDUsNyArNDUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFDQ0VTU09S
X0dFVFRFUihYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVGV4dCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVRleHRBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJ
TkNfU1RBVFMoIkRPTS5YTUxIdHRwUmVxdWVzdC5yZXNwb25zZXRleHQuX2dldCIpOwogICAgIFhN
TEh0dHBSZXF1ZXN0KiB4bWxIdHRwUmVxdWVzdCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0
aXZlT2JqZWN0PFhNTEh0dHBSZXF1ZXN0PihWOENsYXNzSW5kZXg6OlhNTEhUVFBSRVFVRVNULCBp
bmZvLkhvbGRlcigpKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9t
QmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3Vz
dG9tQmluZGluZy5oCShyZXZpc2lvbiA1MjY3MCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q3VzdG9tQmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNCArMzYsNiBAQAog
CiBzdHJ1Y3QgTlBPYmplY3Q7CiAKLSNkZWZpbmUgQUNDRVNTT1JfR0VUVEVSKE5BTUUpIFwKLSAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4IyNOQU1FIyNBY2Nlc3NvckdldHRl
ciggXAotICAgICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKLQotI2RlZmluZSBBQ0NFU1NPUl9TRVRURVIoTkFNRSkgXAotICAgIHZv
aWQgVjhDdXN0b206OnY4IyNOQU1FIyNBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgXAotICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKLQogI2RlZmluZSBJTkRFWEVEX1BST1BFUlRZX0dFVFRFUihO
QU1FKSBcCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OCMjTkFNRSMjSW5k
ZXhlZFByb3BlcnR5R2V0dGVyKCBcCiAgICAgICAgIHVpbnQzMl90IGluZGV4LCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtMTg0LDE2ICsxNzYsNiBAQAogICAgICAgICBzdGF0aWMg
Y29uc3QgaW50IGtXZWJTb2NrZXRJbnRlcm5hbEZpZWxkQ291bnQgPSBrRGVmYXVsdFdyYXBwZXJJ
bnRlcm5hbEZpZWxkQ291bnQgKyAxOwogI2VuZGlmCiAKLSNkZWZpbmUgREVDTEFSRV9QUk9QRVJU
WV9BQ0NFU1NPUl9HRVRURVIoTkFNRSkgXAotICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdjgjI05BTUUjI0FjY2Vzc29yR2V0dGVyKCBcCi0gICAgICAgIHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQotCi0jZGVmaW5lIERFQ0xB
UkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKE5BTUUpICBcCi0gICAgc3RhdGljIHZvaWQgdjgj
I05BTUUjI0FjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBcCi0gICAg
ICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQotCi0jZGVmaW5lIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoTkFNRSkgREVDTEFSRV9Q
Uk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoTkFNRSk7IERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1Jf
U0VUVEVSKE5BTUUpCi0KICNkZWZpbmUgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIoTkFN
RSkgIFwKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4IyNOQU1FIyNOYW1lZFBy
b3BlcnR5R2V0dGVyKCBcCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtMjQ0LDE1ICsyMjYsNyBAQAogCiAjZGVmaW5l
IERFQ0xBUkVfQUNDRVNTT1JfUlVOVElNRV9FTkFCTEVSKE5BTUUpIHN0YXRpYyBib29sIHY4IyNO
QU1FIyNFbmFibGVkKCkKIAotICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRFN0cm9rZVN0eWxlKTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJU
WV9BQ0NFU1NPUihDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRGaWxsU3R5bGUpOwotICAgICAgICBE
RUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKERPTVdpbmRvd0V2ZW50KTsKLSAgICAgICAgREVDTEFS
RV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoRE9NV2luZG93Q3J5cHRvKTsKLSAgICAgICAgREVD
TEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9TRVRURVIoRE9NV2luZG93TG9jYXRpb24pOwotICAgICAg
ICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRFUihET01XaW5kb3dPcGVuZXIpOwotCiAj
aWYgRU5BQkxFKFZJREVPKQotICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRF
UihET01XaW5kb3dBdWRpbyk7CiAgICAgICAgIERFQ0xBUkVfQUNDRVNTT1JfUlVOVElNRV9FTkFC
TEVSKERPTVdpbmRvd0F1ZGlvKTsKICAgICAgICAgREVDTEFSRV9BQ0NFU1NPUl9SVU5USU1FX0VO
QUJMRVIoRE9NV2luZG93SFRNTE1lZGlhRWxlbWVudCk7CiAgICAgICAgIERFQ0xBUkVfQUNDRVNT
T1JfUlVOVElNRV9FTkFCTEVSKERPTVdpbmRvd0hUTUxBdWRpb0VsZW1lbnQpOwpAQCAtMjYwLDM3
ICsyMzQsMTIgQEAKICAgICAgICAgREVDTEFSRV9BQ0NFU1NPUl9SVU5USU1FX0VOQUJMRVIoRE9N
V2luZG93TWVkaWFFcnJvcik7CiAjZW5kaWYKIAotICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FD
Q0VTU09SX0dFVFRFUihET01XaW5kb3dJbWFnZSk7Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlf
QUNDRVNTT1JfR0VUVEVSKERPTVdpbmRvd09wdGlvbik7Ci0KLSAgICAgICAgREVDTEFSRV9QUk9Q
RVJUWV9BQ0NFU1NPUihEb2N1bWVudExvY2F0aW9uKTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJU
WV9BQ0NFU1NPUihEb2N1bWVudEltcGxlbWVudGF0aW9uKTsKLSAgICAgICAgREVDTEFSRV9QUk9Q
RVJUWV9BQ0NFU1NPUl9HRVRURVIoRXZlbnRTcmNFbGVtZW50KTsKLSAgICAgICAgREVDTEFSRV9Q
Uk9QRVJUWV9BQ0NFU1NPUihFdmVudFJldHVyblZhbHVlKTsKLSAgICAgICAgREVDTEFSRV9QUk9Q
RVJUWV9BQ0NFU1NPUl9HRVRURVIoRXZlbnREYXRhVHJhbnNmZXIpOwotICAgICAgICBERUNMQVJF
X1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihFdmVudENsaXBib2FyZERhdGEpOwotCi0gICAgICAg
IERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoRE9NV2luZG93RXZlbnRIYW5kbGVyKTsKLQotICAg
ICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRFUihIVE1MRnJhbWVFbGVtZW50U3Jj
KTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9TRVRURVIoSFRNTEZyYW1lRWxl
bWVudExvY2F0aW9uKTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9TRVRURVIo
SFRNTElGcmFtZUVsZW1lbnRTcmMpOwotCi0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNT
T1JfU0VUVEVSKEF0dHJWYWx1ZSk7Ci0KLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NP
UihIVE1MT3B0aW9uc0NvbGxlY3Rpb25MZW5ndGgpOwotCi0KLSAgICAgICAgREVDTEFSRV9QUk9Q
RVJUWV9BQ0NFU1NPUihIVE1MSW5wdXRFbGVtZW50U2VsZWN0aW9uU3RhcnQpOwotICAgICAgICBE
RUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKEhUTUxJbnB1dEVsZW1lbnRTZWxlY3Rpb25FbmQpOwot
CiAgICAgICAgIERFQ0xBUkVfTkFNRURfQUNDRVNTX0NIRUNLKExvY2F0aW9uKTsKICAgICAgICAg
REVDTEFSRV9JTkRFWEVEX0FDQ0VTU19DSEVDSyhIaXN0b3J5KTsKIAogICAgICAgICBERUNMQVJF
X05BTUVEX0FDQ0VTU19DSEVDSyhIaXN0b3J5KTsKICAgICAgICAgREVDTEFSRV9JTkRFWEVEX0FD
Q0VTU19DSEVDSyhMb2NhdGlvbik7CiAKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NP
UihIVE1MRG9jdW1lbnRBbGwpOwogICAgICAgICBERUNMQVJFX05BTUVEX1BST1BFUlRZX0dFVFRF
UihIVE1MRG9jdW1lbnQpOwogICAgICAgICBERUNMQVJFX05BTUVEX1BST1BFUlRZX0RFTEVURVIo
SFRNTERvY3VtZW50KTsKIApAQCAtMzE3LDM5ICsyNjYsNiBAQAogICAgICAgICBERUNMQVJFX0NB
TExCQUNLKFdlYkdMVW5zaWduZWRTaG9ydEFycmF5Q29uc3RydWN0b3IpOwogI2VuZGlmCiAKLSAg
ICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoQ2xpcGJvYXJkVHlwZXMpOwot
Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKExvY2F0aW9uUHJvdG9j
b2wpOwotICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRFUihMb2NhdGlvbkhv
c3QpOwotICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRFUihMb2NhdGlvbkhv
c3RuYW1lKTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9TRVRURVIoTG9jYXRp
b25Qb3J0KTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9TRVRURVIoTG9jYXRp
b25QYXRobmFtZSk7Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKExv
Y2F0aW9uU2VhcmNoKTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9TRVRURVIo
TG9jYXRpb25IYXNoKTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9TRVRURVIo
TG9jYXRpb25IcmVmKTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIo
TG9jYXRpb25Bc3NpZ24pOwotICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRF
UihMb2NhdGlvblJlcGxhY2UpOwotICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dF
VFRFUihMb2NhdGlvblJlbG9hZCk7Ci0KLSAgICAgICAgLy8gV2UgYWN0dWFsbHkgb25seSBuZWVk
IHRoaXMgYmVjYXVzZSBXZWJLaXQgaGFzCi0gICAgICAgIC8vIG5hdmlnYXRvci5hcHBWZXJzaW9u
IGFzIGN1c3RvbS4gT3VyIHZlcnNpb24ganVzdAotICAgICAgICAvLyBwYXNzZXMgdGhyb3VnaC4K
LSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihOYXZpZ2F0b3JBcHBWZXJzaW9uKTsK
LQotICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKFhNTEh0dHBSZXF1ZXN0T25hYm9y
dCk7Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoWE1MSHR0cFJlcXVlc3RPbmVy
cm9yKTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihYTUxIdHRwUmVxdWVzdE9u
bG9hZCk7Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoWE1MSHR0cFJlcXVlc3RP
bmxvYWRzdGFydCk7Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoWE1MSHR0cFJl
cXVlc3RPbnByb2dyZXNzKTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihYTUxI
dHRwUmVxdWVzdE9ucmVhZHlzdGF0ZWNoYW5nZSk7Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlf
QUNDRVNTT1IoWE1MSHR0cFJlcXVlc3RSZXNwb25zZVRleHQpOwotCi0gICAgICAgIERFQ0xBUkVf
UFJPUEVSVFlfQUNDRVNTT1IoWE1MSHR0cFJlcXVlc3RVcGxvYWRPbmFib3J0KTsKLSAgICAgICAg
REVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihYTUxIdHRwUmVxdWVzdFVwbG9hZE9uZXJyb3IpOwot
ICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKFhNTEh0dHBSZXF1ZXN0VXBsb2FkT25s
b2FkKTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihYTUxIdHRwUmVxdWVzdFVw
bG9hZE9ubG9hZHN0YXJ0KTsKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihYTUxI
dHRwUmVxdWVzdFVwbG9hZE9ucHJvZ3Jlc3MpOwotCiAgICAgICAgIERFQ0xBUkVfTkFNRURfUFJP
UEVSVFlfR0VUVEVSKERPTVdpbmRvdyk7CiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJU
WV9HRVRURVIoRE9NV2luZG93KTsKICAgICAgICAgREVDTEFSRV9OQU1FRF9BQ0NFU1NfQ0hFQ0so
RE9NV2luZG93KTsKQEAgLTQwOCwxMyArMzI0LDcgQEAKICAgICAgICAgREVDTEFSRV9JTkRFWEVE
X1BST1BFUlRZX1NFVFRFUihXZWJHTFVuc2lnbmVkU2hvcnRBcnJheSk7CiAjZW5kaWYKIAotICAg
ICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihNZXNzYWdlRXZlbnRQb3J0cyk7
Ci0KLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihNZXNzYWdlUG9ydE9ubWVzc2Fn
ZSk7Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoTWVzc2FnZVBvcnRPbmNsb3Nl
KTsKLQogI2lmIEVOQUJMRShEQVRBR1JJRCkKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NF
U1NPUihIVE1MRGF0YUdyaWRFbGVtZW50RGF0YVNvdXJjZSk7CiAgICAgICAgIERFQ0xBUkVfTkFN
RURfUFJPUEVSVFlfR0VUVEVSKERhdGFHcmlkQ29sdW1uTGlzdCk7CiAjZW5kaWYKIApAQCAtNDM0
LDMzICszNDQsMTYgQEAKICAgICAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OkFycmF5PiB2OFN0
b3JhZ2VOYW1lZFByb3BlcnR5RW51bWVyYXRvcihjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFNWRykKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9B
Q0NFU1NPUl9HRVRURVIoU1ZHTGVuZ3RoVmFsdWUpOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoV09S
S0VSUykKLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihBYnN0cmFjdFdvcmtlck9u
ZXJyb3IpOwotCi0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoRGVkaWNhdGVkV29y
a2VyQ29udGV4dE9ubWVzc2FnZSk7Ci0KLSAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NP
UihXb3JrZXJPbm1lc3NhZ2UpOwogICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdvcmtlckNvbnN0
cnVjdG9yKTsKIAotICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihXb3Jr
ZXJDb250ZXh0U2VsZik7Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoV29ya2Vy
Q29udGV4dE9uZXJyb3IpOwotCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgICAgIERF
Q0xBUkVfQUNDRVNTT1JfUlVOVElNRV9FTkFCTEVSKFdvcmtlckNvbnRleHRXZWJraXROb3RpZmlj
YXRpb25zKTsKICNlbmRpZgogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQogCi0jaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCi0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoTm90aWZp
Y2F0aW9uRXZlbnRIYW5kbGVyKTsKLSNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLQog
I2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgICAgIERFQ0xBUkVfQUND
RVNTT1JfUlVOVElNRV9FTkFCTEVSKERPTVdpbmRvd0FwcGxpY2F0aW9uQ2FjaGUpOwotICAgICAg
ICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKERPTUFwcGxpY2F0aW9uQ2FjaGVFdmVudEhhbmRs
ZXIpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCkBAIC00NzMsMjUgKzM2
NiwxMyBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgICAgIERFQ0xB
UkVfUFJPUEVSVFlfQUNDRVNTT1IoV2ViU29ja2V0T25vcGVuKTsKLSAgICAgICAgREVDTEFSRV9Q
Uk9QRVJUWV9BQ0NFU1NPUihXZWJTb2NrZXRPbm1lc3NhZ2UpOwotICAgICAgICBERUNMQVJFX1BS
T1BFUlRZX0FDQ0VTU09SKFdlYlNvY2tldE9uY2xvc2UpOwogICAgICAgICBERUNMQVJFX0NBTExC
QUNLKFdlYlNvY2tldENvbnN0cnVjdG9yKTsKICAgICAgICAgREVDTEFSRV9BQ0NFU1NPUl9SVU5U
SU1FX0VOQUJMRVIoRE9NV2luZG93V2ViU29ja2V0KTsKICNlbmRpZgogCi0gICAgICAgIERFQ0xB
UkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKENvb3JkaW5hdGVzQWx0aXR1ZGUpOwotICAgICAg
ICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihDb29yZGluYXRlc0FsdGl0dWRlQWNj
dXJhY3kpOwotICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihDb29yZGlu
YXRlc0hlYWRpbmcpOwotICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihD
b29yZGluYXRlc1NwZWVkKTsKLQogI3VuZGVmIERFQ0xBUkVfSU5ERVhFRF9BQ0NFU1NfQ0hFQ0sK
ICN1bmRlZiBERUNMQVJFX05BTUVEX0FDQ0VTU19DSEVDSwogCi0jdW5kZWYgREVDTEFSRV9QUk9Q
RVJUWV9BQ0NFU1NPUl9TRVRURVIKLSN1bmRlZiBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dF
VFRFUgotI3VuZGVmIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IKLQogI3VuZGVmIERFQ0xBUkVf
TkFNRURfUFJPUEVSVFlfR0VUVEVSCiAjdW5kZWYgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9TRVRU
RVIKICN1bmRlZiBERUNMQVJFX05BTUVEX1BST1BFUlRZX0RFTEVURVIKQEAgLTUxMyw3ICszOTQs
NiBAQAogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgIHN0YXRpYyBWOENsYXNzSW5kZXg6OlY4V3Jh
cHBlclR5cGUgRG93bmNhc3RTVkdQYXRoU2VnKHZvaWQqIHBhdGhTZWcpOwogI2VuZGlmCi0gICAg
cHJpdmF0ZToKICAgICAgICAgc3RhdGljIHZvaWQgV2luZG93U2V0TG9jYXRpb24oRE9NV2luZG93
KiwgY29uc3QgU3RyaW5nJik7CiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNw
cAkocmV2aXNpb24gNTI2NzApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxP
cHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcg
QEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1BQ0NFU1NPUl9HRVRURVIoSFRN
TE9wdGlvbnNDb2xsZWN0aW9uTGVuZ3RoKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9w
dGlvbnNDb2xsZWN0aW9uOjpsZW5ndGhBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubGVuZ3RoLl9nZXQiKTsKICAgICBIVE1MT3B0aW9u
c0NvbGxlY3Rpb24qIGltcCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEhU
TUxPcHRpb25zQ29sbGVjdGlvbj4oVjhDbGFzc0luZGV4OjpIVE1MT1BUSU9OU0NPTExFQ1RJT04s
IGluZm8uSG9sZGVyKCkpOwpAQCAtOTMsNyArOTMsNyBAQAogICAgIHJldHVybiB2ODo6SW50ZWdl
cjo6TmV3KHYpOwogfQogCi1BQ0NFU1NPUl9TRVRURVIoSFRNTE9wdGlvbnNDb2xsZWN0aW9uTGVu
Z3RoKQordm9pZCBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6bGVuZ3RoQWNjZXNzb3JTZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxP
cHRpb25zQ29sbGVjdGlvbi5sZW5ndGguX3NldCIpOwogICAgIEhUTUxPcHRpb25zQ29sbGVjdGlv
biogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8SFRNTE9wdGlvbnND
b2xsZWN0aW9uPihWOENsYXNzSW5kZXg6OkhUTUxPUFRJT05TQ09MTEVDVElPTiwgaW5mby5Ib2xk
ZXIoKSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9h
cmRDdXN0b20uY3BwCShyZXZpc2lvbiA1MjY3MCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFDQ0VTU09SX0dFVFRFUihDbGlwYm9hcmRUeXBl
cykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENsaXBib2FyZDo6dHlwZXNBY2Nlc3NvckdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5DbGlwYm9hcmQudHlwZXMoKSIpOwogICAgIENsaXBi
b2FyZCogY2xpcGJvYXJkID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8Q2xp
cGJvYXJkPihWOENsYXNzSW5kZXg6OkNMSVBCT0FSRCwgaW5mby5Ib2xkZXIoKSk7CkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50TG9jYXRpb25DdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRMb2NhdGlv
bkN1c3RvbS5jcHAJKHJldmlzaW9uIDUyNjcwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTcg
KzIyLDE4IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlY4Q3VzdG9t
QmluZGluZy5oIgorI2luY2x1ZGUgIlY4RG9jdW1lbnQuaCIKIAogI2luY2x1ZGUgIkRPTVdpbmRv
dy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVk
ZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhEb2N1bWVudC5oIgogI2luY2x1ZGUg
IlY4UHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BQ0NFU1NPUl9HRVRURVIoRG9j
dW1lbnRMb2NhdGlvbikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERvY3VtZW50Ojpsb2NhdGlv
bkFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IFY4RE9NV3JhcHBl
cjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxEb2N1bWVudD4oaW5mby5Ib2xkZXIoKSk7CiAg
ICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKSkKQEAgLTQyLDcgKzQzLDcgQEAKICAgICByZXR1cm4g
VjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6OkxPQ0FUSU9OLCB3
aW5kb3ctPmxvY2F0aW9uKCkpOwogfQogCi1BQ0NFU1NPUl9TRVRURVIoRG9jdW1lbnRMb2NhdGlv
bikKK3ZvaWQgVjhEb2N1bWVudDo6bG9jYXRpb25BY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gVjhET01XcmFwcGVy
Ojpjb252ZXJ0RE9NV3JhcHBlclRvTmF0aXZlPERvY3VtZW50PihpbmZvLkhvbGRlcigpKTsKICAg
ICBpZiAoIWRvY3VtZW50LT5mcmFtZSgpKQpAQCAtNTAsNyArNTEsNyBAQAogCiAgICAgRE9NV2lu
ZG93KiB3aW5kb3cgPSBkb2N1bWVudC0+ZnJhbWUoKS0+ZG9tV2luZG93KCk7CiAgICAgLy8gV2lu
ZG93U2V0TG9jYXRpb24gZG9lcyBzZWN1cml0eSBjaGVja3MuIC8vIFhYWE1CLSB2ZXJpZnkhCi0g
ICAgV2luZG93U2V0TG9jYXRpb24od2luZG93LCB0b1dlYkNvcmVTdHJpbmcodmFsdWUpKTsKKyAg
ICBWOEN1c3RvbTo6V2luZG93U2V0TG9jYXRpb24od2luZG93LCB0b1dlYkNvcmVTdHJpbmcodmFs
dWUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDUyNjcwKQor
KysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDggKzI5LDE2IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlY4TG9jYXRpb24uaCIKKworI2luY2x1ZGUgIkNTU0hlbHBlci5oIgorI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRl
ci5oIgorI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJMb2NhdGlvbi5oIgotCisjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKICNpbmNsdWRl
ICJWOEN1c3RvbUJpbmRpbmcuaCIKQEAgLTM5LDE0ICs0Nyw2IEBACiAjaW5jbHVkZSAiVjhVdGls
aXRpZXMuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgotI2luY2x1ZGUgIktVUkwuaCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUg
IkZyYW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUg
IkNTU0hlbHBlci5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogLy8gTm90ZXMgYWJvdXQgVjgvSlNDIHBvcnRpbmcgb2YgdGhpcyBmaWxlLgpAQCAtNTksNyAr
NTksNyBAQAogLy8gd2UncmUganVzdCBtYWtpbmcgYWxsIHRoZXNlIGN1c3RvbSBmb3Igbm93LiAg
VGhlIGZ1bmN0aW9uYWxpdHkgaXMgc2ltcGxlCiAvLyBhbmQgbWlycm9ycyBKU0xvY2F0aW9uQ3Vz
dG9tLmNwcC4KIAotQUNDRVNTT1JfU0VUVEVSKExvY2F0aW9uSGFzaCkKK3ZvaWQgVjhMb2NhdGlv
bjo6aGFzaEFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi5oYXNoLl9zZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7CkBAIC04Miw3ICs4Miw3IEBACiAgICAg
bmF2aWdhdGVJZkFsbG93ZWQoZnJhbWUsIHVybCwgZmFsc2UsIGZhbHNlKTsKIH0KIAotQUNDRVNT
T1JfU0VUVEVSKExvY2F0aW9uSG9zdCkKK3ZvaWQgVjhMb2NhdGlvbjo6aG9zdEFjY2Vzc29yU2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5M
b2NhdGlvbi5ob3N0Ll9zZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9
IGluZm8uSG9sZGVyKCk7CkBAIC0xMDIsNyArMTAyLDcgQEAKICAgICBuYXZpZ2F0ZUlmQWxsb3dl
ZChmcmFtZSwgdXJsLCBmYWxzZSwgZmFsc2UpOwogfQogCi1BQ0NFU1NPUl9TRVRURVIoTG9jYXRp
b25Ib3N0bmFtZSkKK3ZvaWQgVjhMb2NhdGlvbjo6aG9zdG5hbWVBY2Nlc3NvclNldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24u
aG9zdG5hbWUuX3NldCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5m
by5Ib2xkZXIoKTsKQEAgLTExOSw3ICsxMTksNyBAQAogICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZy
YW1lLCB1cmwsIGZhbHNlLCBmYWxzZSk7CiB9CiAKLUFDQ0VTU09SX1NFVFRFUihMb2NhdGlvbkhy
ZWYpCit2b2lkIFY4TG9jYXRpb246OmhyZWZBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24uaHJlZi5fc2V0Iik7
CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwpAQCAt
MTM5LDcgKzEzOSw3IEBACiAgICAgbmF2aWdhdGVJZkFsbG93ZWQoZnJhbWUsIHVybCwgZmFsc2Us
IGZhbHNlKTsKIH0KIAotQUNDRVNTT1JfU0VUVEVSKExvY2F0aW9uUGF0aG5hbWUpCit2b2lkIFY4
TG9jYXRpb246OnBhdGhuYW1lQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLkxvY2F0aW9uLnBhdGhuYW1lLl9zZXQiKTsKICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7CkBAIC0xNTYs
NyArMTU2LDcgQEAKICAgICBuYXZpZ2F0ZUlmQWxsb3dlZChmcmFtZSwgdXJsLCBmYWxzZSwgZmFs
c2UpOwogfQogCi1BQ0NFU1NPUl9TRVRURVIoTG9jYXRpb25Qb3J0KQordm9pZCBWOExvY2F0aW9u
Ojpwb3J0QWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IElOQ19TVEFUUygiRE9NLkxvY2F0aW9uLnBvcnQuX3NldCIpOwogICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKQEAgLTE3Myw3ICsxNzMsNyBAQAogICAg
IG5hdmlnYXRlSWZBbGxvd2VkKGZyYW1lLCB1cmwsIGZhbHNlLCBmYWxzZSk7CiB9CiAKLUFDQ0VT
U09SX1NFVFRFUihMb2NhdGlvblByb3RvY29sKQordm9pZCBWOExvY2F0aW9uOjpwcm90b2NvbEFj
Y2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RB
VFMoIkRPTS5Mb2NhdGlvbi5wcm90b2NvbC5fc2V0Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwpAQCAtMTkwLDcgKzE5MCw3IEBACiAgICAgbmF2
aWdhdGVJZkFsbG93ZWQoZnJhbWUsIHVybCwgZmFsc2UsIGZhbHNlKTsKIH0KIAotQUNDRVNTT1Jf
U0VUVEVSKExvY2F0aW9uU2VhcmNoKQordm9pZCBWOExvY2F0aW9uOjpzZWFyY2hBY2Nlc3NvclNl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00u
TG9jYXRpb24uc2VhcmNoLl9zZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRl
ciA9IGluZm8uSG9sZGVyKCk7CkBAIC0yMDcsNyArMjA3LDcgQEAKICAgICBuYXZpZ2F0ZUlmQWxs
b3dlZChmcmFtZSwgdXJsLCBmYWxzZSwgZmFsc2UpOwogfQogCi1BQ0NFU1NPUl9HRVRURVIoTG9j
YXRpb25SZWxvYWQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2FkQWNj
ZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24ucmVsb2FkLl9nZXQi
KTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZh
dGVUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4
OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6cmVsb2FkQ2FsbGJhY2ssIHY4OjpI
YW5kbGU8djg6OlZhbHVlPigpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3
VGVtcGxhdGUoKSkpKTsKQEAgLTIyNSw3ICsyMjUsNyBAQAogICAgIHJldHVybiBwcml2YXRlVGVt
cGxhdGUtPkdldEZ1bmN0aW9uKCk7CiB9CiAKLUFDQ0VTU09SX0dFVFRFUihMb2NhdGlvblJlcGxh
Y2UpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFjZUFjY2Vzc29yR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLkxvY2F0aW9uLnJlcGxhY2UuX2dldCIpOwogICAg
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBs
YXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZXBsYWNlQ2FsbGJhY2ssIHY4OjpIYW5kbGU8
djg6OlZhbHVlPigpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxh
dGUoKSkpKTsKQEAgLTI0Myw3ICsyNDMsNyBAQAogICAgIHJldHVybiBwcml2YXRlVGVtcGxhdGUt
PkdldEZ1bmN0aW9uKCk7CiB9CiAKLUFDQ0VTU09SX0dFVFRFUihMb2NhdGlvbkFzc2lnbikKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjphc3NpZ25BY2Nlc3NvckdldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
ICAgICBJTkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi5hc3NpZ24uX2dldCIpOwogICAgIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0KSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmNwcAko
cmV2aXNpb24gNTI2NzApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJp
bmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwzMyArNjYsNiBAQAogICAgIHJldHVybiB0
cnVlOwogfQogCi0vLyBET01JbXBsZW1lbnRhdGlvbiBpcyBhIHNpbmdsZXRvbiBpbiBXZWJDb3Jl
LiBJZiB3ZSB1c2Ugb3VyIG5vcm1hbAotLy8gbWFwcGluZyBmcm9tIERPTSBvYmplY3RzIHRvIFY4
IHdyYXBwZXJzLCB0aGUgc2FtZSB3cmFwcGVyIHdpbGwgYmUKLS8vIHNoYXJlZCBmb3IgYWxsIGZy
YW1lcyBpbiB0aGUgc2FtZSBwcm9jZXNzLiBUaGlzIGlzIGEgbWFqb3IKLS8vIHNlY3VyaXR5IHBy
b2JsZW0uIFRoZXJlZm9yZSwgd2UgZ2VuZXJhdGUgYSBET01JbXBsZW1lbnRhdGlvbgotLy8gd3Jh
cHBlciBwZXIgZG9jdW1lbnQgYW5kIHN0b3JlIGl0IGluIGFuIGludGVybmFsIGZpZWxkIG9mIHRo
ZQotLy8gZG9jdW1lbnQuIFNpbmNlIHRoZSBET01JbXBsZW1lbnRhdGlvbiBvYmplY3QgaXMgYSBz
aW5nbGV0b24sIHdlIGRvCi0vLyBub3QgaGF2ZSB0byBkbyBhbnl0aGluZyB0byBrZWVwIHRoZSBE
T01JbXBsZW1lbnRhdGlvbiBvYmplY3QgYWxpdmUKLS8vIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhl
IHdyYXBwZXIuCi1BQ0NFU1NPUl9HRVRURVIoRG9jdW1lbnRJbXBsZW1lbnRhdGlvbikKLXsKLSAg
ICBBU1NFUlQoaW5mby5Ib2xkZXIoKS0+SW50ZXJuYWxGaWVsZENvdW50KCkgPj0ga0RvY3VtZW50
TWluaW11bUludGVybmFsRmllbGRDb3VudCk7Ci0KLSAgICAvLyBDaGVjayBpZiB0aGUgaW50ZXJu
YWwgZmllbGQgYWxyZWFkeSBjb250YWlucyBhIHdyYXBwZXIuCi0gICAgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gaW1wbGVtZW50YXRpb24gPSBpbmZvLkhvbGRlcigpLT5HZXRJbnRlcm5hbEZpZWxkKGtE
b2N1bWVudEltcGxlbWVudGF0aW9uSW5kZXgpOwotICAgIGlmICghaW1wbGVtZW50YXRpb24tPklz
VW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiBpbXBsZW1lbnRhdGlvbjsKLQotICAgIC8vIEdl
bmVyYXRlIGEgd3JhcHBlci4KLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBWOERPTVdyYXBwZXI6
OmNvbnZlcnRET01XcmFwcGVyVG9OYXRpdmU8RG9jdW1lbnQ+KGluZm8uSG9sZGVyKCkpOwotICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9N
SW1wbGVtZW50YXRpb25Ub1Y4T2JqZWN0KGRvY3VtZW50LT5pbXBsZW1lbnRhdGlvbigpKTsKLQot
ICAgIC8vIFN0b3JlIHRoZSB3cmFwcGVyIGluIHRoZSBpbnRlcm5hbCBmaWVsZC4KLSAgICBpbmZv
LkhvbGRlcigpLT5TZXRJbnRlcm5hbEZpZWxkKGtEb2N1bWVudEltcGxlbWVudGF0aW9uSW5kZXgs
IHdyYXBwZXIpOwotCi0gICAgcmV0dXJuIHdyYXBwZXI7Ci19Ci0KIC8vIC0tLS0tLS0tLS0tLS0t
LSBTZWN1cml0eSBDaGVja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogSU5ERVhFRF9BQ0NF
U1NfQ0hFQ0soSGlzdG9yeSkKIHsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
QXR0ckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhBdHRyQ3VzdG9tLmNwcAkocmV2aXNpb24gNTI2NzApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEF0dHJDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxOCArMjksMTgg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhBdHRyLmgiCisKICNp
bmNsdWRlICJBdHRyLmgiCi0KICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgotCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21C
aW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUFDQ0VTU09SX1NFVFRFUihBdHRyVmFsdWUpCit2b2lkIFY4QXR0cjo6dmFsdWVBY2Nlc3NvclNl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgQXR0ciogaW1wID0gVjhE
T01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9kZTxBdHRyPihpbmZvLkhvbGRlcigpKTsK
ICAgICBTdHJpbmcgYXR0clZhbHVlID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVjayh2YWx1
ZSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJRnJhbWVFbGVtZW50
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxJRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gNTI2NzApCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjksOSArMjksMTAgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVjhIVE1MSUZyYW1lRWxlbWVudC5oIgorCiAjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIgCi0KICNpbmNsdWRlICJWOEJpbmRpbmcuaCIK
ICNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCkBAIC00
MCw3ICs0MSw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7IAogCi1BQ0NFU1NPUl9T
RVRURVIoSFRNTElGcmFtZUVsZW1lbnRTcmMpCit2b2lkIFY4SFRNTElGcmFtZUVsZW1lbnQ6OnNy
Y0FjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBIVE1M
SUZyYW1lRWxlbWVudCogaWZyYW1lID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRv
Tm9kZTxIVE1MSUZyYW1lRWxlbWVudD4oaW5mby5Ib2xkZXIoKSk7CiAgICAgU3RyaW5nIHYgPSB0
b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKHZhbHVlKTsKSW5kZXg6IFdlYkNvcmUvQW5kcm9p
ZC52OGJpbmRpbmdzLm1rCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQW5kcm9pZC52OGJpbmRpbmdz
Lm1rCShyZXZpc2lvbiA1MjY3MCkKKysrIFdlYkNvcmUvQW5kcm9pZC52OGJpbmRpbmdzLm1rCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2LDYgQEAKIAliaW5kaW5ncy92OC9jdXN0b20vVjhN
ZXNzYWdlRXZlbnRDdXN0b20uY3BwIFwKIAliaW5kaW5ncy92OC9jdXN0b20vVjhOYW1lZE5vZGVN
YXBDdXN0b20uY3BwIFwKIAliaW5kaW5ncy92OC9jdXN0b20vVjhOYW1lZE5vZGVzQ29sbGVjdGlv
bi5jcHAgXAotCWJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hdmlnYXRvckN1c3RvbS5jcHAgXAogCWJp
bmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwIFwKIAliaW5kaW5ncy92OC9jdXN0b20v
VjhOb2RlRmlsdGVyQ3VzdG9tLmNwcCBcCiAJYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUl0ZXJh
dG9yQ3VzdG9tLmNwcCBcCg==
</data>
<flag name="review"
          id="27783"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="27784"
          type_id="3"
          status="-"
          setter="japhet"
    />
          </attachment>
      

    </bug>

</bugzilla>