<?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>129277</bug_id>
          
          <creation_ts>2014-02-24 17:02:57 -0800</creation_ts>
          <short_desc>[iOS] Show status image when playing video to external device</short_desc>
          <delta_ts>2014-02-25 12:24:33 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>984111</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-02-24 17:02:57 -0800</bug_when>
    <thetext>Move all of the logic for &quot;IOS_AIRPLAY&quot; from HTMLMediaElement into HTMLMediaSession, and implement the media engine potion of the API for our AVFoundation based engine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984120</commentid>
    <comment_count>1</comment_count>
      <attachid>225105</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-02-24 17:23:30 -0800</bug_when>
    <thetext>Created attachment 225105
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984122</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-24 17:24:56 -0800</bug_when>
    <thetext>Attachment 225105 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
ERROR: Source/WebCore/html/HTMLMediaElement.cpp:2460:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 2 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984169</commentid>
    <comment_count>3</comment_count>
      <attachid>225116</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-02-24 20:01:30 -0800</bug_when>
    <thetext>Created attachment 225116
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984385</commentid>
    <comment_count>4</comment_count>
      <attachid>225116</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-02-25 10:16:46 -0800</bug_when>
    <thetext>Comment on attachment 225116
Updated patch

r=me.  Great logging!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984429</commentid>
    <comment_count>5</comment_count>
      <attachid>225116</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-25 12:24:31 -0800</bug_when>
    <thetext>Comment on attachment 225116
Updated patch

Clearing flags on attachment: 225116

Committed r164661: &lt;http://trac.webkit.org/changeset/164661&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984430</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-25 12:24:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225105</attachid>
            <date>2014-02-24 17:23:30 -0800</date>
            <delta_ts>2014-02-24 20:01:30 -0800</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>api_patch_11.txt</filename>
            <type>text/plain</type>
            <size>37389</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDYxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBACisyMDE0LTAyLTI0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFNob3cgc3Rh
dHVzIGltYWdlIHdoZW4gcGxheWluZyB2aWRlbyB0byBleHRlcm5hbCBkZXZpY2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTI3NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRyb2xzL21lZGlhQ29udHJvbHNBcHBs
ZS5qczoKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZUV2ZW50KTogUmVzdHJ1
Y3R1cmUgdGhlIGNvZGUgc28gaXQgaXMgcG9zc2libGUgdG8gaGFuZGxlIGV2ZW50cworICAgICAg
ICAgICAgdGhhdCB0YXJnZXQgdGhlIHZpZGVvIGVsZW1lbnQgd2hpY2ggYXJlbid0IGluIHRoZSBI
YW5kbGVkVmlkZW9FdmVudHMgYXJyYXkuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY29udHJv
bHMvbWVkaWFDb250cm9sc2lPUy5qczoKKyAgICAgICAgKENvbnRyb2xsZXJJT1MucHJvdG90eXBl
LmN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3MpOiB3ZWJraXRDdXJyZW50UGxheWJhY2tU
YXJnZXRJc1dpcmVsZXNzCisgICAgICAgICAgICBpcyBhbiBhdHRyaWJ1dGUsIG5vdCBhIGZ1bmN0
aW9uLgorICAgICAgICAoQ29udHJvbGxlcklPUy5wcm90b3R5cGUudXBkYXRlV2lyZWxlc3NQbGF5
YmFja1N0YXR1cyk6IEZpeCBzdHlsZS4KKyAgICAgICAgKENvbnRyb2xsZXJJT1MucHJvdG90eXBl
LnVwZGF0ZVdpcmVsZXNzVGFyZ2V0QXZhaWxhYmxlKTogRGl0dG8uCisgICAgICAgIChDb250cm9s
bGVySU9TLnByb3RvdHlwZS51cGRhdGVQcm9ncmVzcyk6IERpdHRvLgorICAgICAgICAoQ29udHJv
bGxlcklPUy5wcm90b3R5cGUuaGFuZGxlV3JhcHBlclRvdWNoU3RhcnQpOiBTaG93IHRoZSBjb250
cm9scyBpZiB0aGUgd2lyZWxlc3Mgc3RhdHVzCisgICAgICAgICAgICBkaXNwbGF5IGlzIHRvdWNo
ZWQuCisgICAgICAgIChDb250cm9sbGVySU9TLnByb3RvdHlwZS5oYW5kbGVGdWxsc2NyZWVuQnV0
dG9uQ2xpY2tlZCk6IEZpeCBzdHlsZQorICAgICAgICAoQ29udHJvbGxlcklPUy5wcm90b3R5cGUu
aGFuZGxlV2lyZWxlc3NQbGF5YmFja0NoYW5nZSk6IERpdHRvLgorICAgICAgICAoQ29udHJvbGxl
cklPUy5wcm90b3R5cGUuaGFuZGxlV2lyZWxlc3NUYXJnZXRBdmFpbGFibGVDaGFuZ2UpOgorICAg
ICAgICAoQ29udHJvbGxlcklPUy5wcm90b3R5cGUuaGFuZGxlV2lyZWxlc3NQaWNrZXJCdXR0b25D
bGlja2VkKTogRGl0dG8uIFN0b3AgZXZlbiBwcm9wYWdhdGlvbi4KKworICAgICAgICBNb3ZlICJw
bGF5YmFjayB0YXJnZXQiIGxvZ2ljIGludG8gSFRNTE1lZGlhU2Vzc2lvbi4KKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6fkhUTUxNZWRpYUVsZW1lbnQpOiBDYWxsIG1lZGlhIHNlc3Npb24uCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UpOiBUZWxsIG1lZGlhIHNlc3Np
b24gdG8gYXBwbHkgbWVkaWEgcGxheWVyCisgICAgICAgICAgICByZXN0cmljdGlvbnMgbm93IHRo
YXQgaXQgaGFzIGEgdXJsLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6aW52
YWxpZGF0ZUNhY2hlZFRpbWUpOiBPbmx5IGxvZyB3aGVuIGNhY2hlZCB0aW1lIGlzIG5vdCAKKyAg
ICAgICAgICAgIGFscmVhZHkgaW52YWxpZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OndlYmtpdFNob3dQbGF5YmFja1RhcmdldFBpY2tlcik6IENhbGwgbWVkaWEgc2Vzc2lv
bi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdEN1cnJlbnRQbGF5
YmFja1RhcmdldElzV2lyZWxlc3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5n
ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50
TGlzdGVuZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJl
bW92ZUV2ZW50TGlzdGVuKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjplbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkRXZlbnQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVy
KTogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYVNlc3Npb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cmVzdHJpY3Rpb25OYW1lKTogTG9nIG5ldyBXaXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZCByZXN0cmljdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYVNlc3Np
b246OnNob3dpbmdQbGF5YmFja1RhcmdldFBpY2tlclBlcm1pdHRlZCk6IFJldHVybiBmYWxzZSBp
ZiB0aGVyZQorICAgICAgICAgICAgaXMgbm8gcGFnZSwgb3IgaWYgd2lyZWxlc3MgcGxheWJhY2sg
aXMgZGlzYWJsZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFTZXNzaW9uOjpjdXJyZW50
UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKTogTmV3LCBsb2dpYyBmcm9tIEhUTUxNZWRpYUVsZW1l
bnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFTZXNzaW9uOjpzaG93UGxheWJhY2tUYXJn
ZXRQaWNrZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYVNlc3Npb246Omhh
c1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFTZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhU2Vzc2lvbjo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYVNlc3Npb246OnNl
dEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFTZXNzaW9uOjphcHBseU1lZGlhUGxheWVyUmVzdHJpY3Rpb25z
KTogTmV3LCBhcHBseSBtZWRpYSBwbGF5ZXIgc3BlY2lmaWMKKyAgICAgICAgICAgIHJlc3RyaWN0
aW9uLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oOgorCisgICAgICAgIE1vdmUg
InBsYXliYWNrIHRhcmdldCIgbG9naWMgaW50byBIVE1MTWVkaWFTZXNzaW9uLgorICAgICAgICAq
IGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IENhbGwgbWVkaWEgc2Vzc2lvbi4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkKTogQ2FsbCBtZWRpYSBzZXNzaW9uLgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTWVk
aWFTZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKTogTmV3IG1ldGhvZCwgZG9lcyBub3RoaW5nIGlu
IGJhc2UgY2xhc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9u
TWFuYWdlcklPUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25N
YW5hZ2VySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6
c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKTogQWRkIG5vbi1mdW5jdGlvbmFsIHN0dWIuCisKKyAg
ICAgICAgSW1wbGVtZW50IHdpcmVsZXNzIHBsYXliYWNrIGNvbnRyb2wgYW5kIHN0YXR1cyBBUEku
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb246OmRpc3BhdGNoTm90aWZpY2F0aW9uKTogRGlzcGF0Y2ggVGFyZ2V0SXNX
aXJlbGVzc0NoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb246OnBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQpOiBQYXNzIHRocm91Z2gg
dG8KKyAgICAgICAgICAgIG1lZGlhIGVsZW1lbnQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKTogSW5pdGlhbGl6ZQorICAgICAgICAgICAgbV9h
bGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJhY2suCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjYW5jZWxMb2FkKTogUmVtb3ZlICJleHRlcm5hbFBs
YXliYWNrQWN0aXZlIiBvYnNlcnZlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRlb0xheWVyKTogRml4IGJyb2tlbiBsb2dn
aW5nLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6Y3JlYXRlQVZQbGF5ZXIpOiBBZGQgImV4dGVybmFsUGxheWJhY2tBY3RpdmUiIG9ic2VydmVy
LAorICAgICAgICAgICAgc2V0IGluaXRpYWwgd2lyZWxlc3MgcGxheWJhY2suCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVQaXhlbEJ1
ZmZlcik6ICBGaXggYnJva2VuIGxvZ2dpbmcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2spOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MpOiBOZXcuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp3aXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZCk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTogTmV3
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
cGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzRGlkQ2hhbmdlKTogTmV3LgorICAgICAgICAoLVtXZWJD
b3JlQVZGTW92aWVPYnNlcnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5n
ZTpjb250ZXh0Ol0pOiBEZWFsIHdpdGggCisgICAgICAgICAgICBleHRlcm5hbFBsYXliYWNrQWN0
aXZlLgorCiAyMDE0LTAyLTI0ICBKZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXSzIgQVZLaXQgZnVsbHNjcmVlbiBkb2Vzbid0IGRpc3BsYXkgdmlkZW8uCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc0FwcGxl
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9t
ZWRpYUNvbnRyb2xzQXBwbGUuanMJKHJldmlzaW9uIDE2NDQ5MykKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQXBwbGUuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTIyNSwxNSArMjI1LDE1IEBAIENvbnRyb2xsZXIucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgICAgIHZhciBoYW5kbGVyID0gdGhpc1toYW5kbGVyTmFtZV07CiAgICAgICAgICAgICAg
ICAgaWYgKGhhbmRsZXIgJiYgaGFuZGxlciBpbnN0YW5jZW9mIEZ1bmN0aW9uKQogICAgICAgICAg
ICAgICAgICAgICBoYW5kbGVyLmNhbGwodGhpcywgZXZlbnQpOwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBpZiAoISh0aGlzLmxpc3RlbmVyc1tldmVudC50eXBlXSBpbnN0
YW5jZW9mIEFycmF5KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAg
ICAgICAgdGhpcy5saXN0ZW5lcnNbZXZlbnQudHlwZV0uZm9yRWFjaChmdW5jdGlvbihlbnRyeSkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnkuZWxlbWVudCA9PT0gZXZlbnQuY3VycmVu
dFRhcmdldCAmJiBlbnRyeS5oYW5kbGVyIGluc3RhbmNlb2YgRnVuY3Rpb24pCi0gICAgICAgICAg
ICAgICAgICAgICAgICBlbnRyeS5oYW5kbGVyLmNhbGwodGhpcywgZXZlbnQpOwotICAgICAgICAg
ICAgICAgIH0sIHRoaXMpOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoISh0aGlz
Lmxpc3RlbmVyc1tldmVudC50eXBlXSBpbnN0YW5jZW9mIEFycmF5KSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzW2V2ZW50LnR5cGVdLmZvckVh
Y2goZnVuY3Rpb24oZW50cnkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnkuZWxlbWVudCA9
PT0gZXZlbnQuY3VycmVudFRhcmdldCAmJiBlbnRyeS5oYW5kbGVyIGluc3RhbmNlb2YgRnVuY3Rp
b24pCisgICAgICAgICAgICAgICAgICAgIGVudHJ5LmhhbmRsZXIuY2FsbCh0aGlzLCBldmVudCk7
CisgICAgICAgICAgICB9LCB0aGlzKTsKICAgICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgICAg
ICBpZiAod2luZG93LmNvbnNvbGUpCiAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xz
aU9TLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9s
cy9tZWRpYUNvbnRyb2xzaU9TLmpzCShyZXZpc2lvbiAxNjQ1NTIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc2lPUy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMTA0LDEzICsxMDQsMTEgQEAgQ29udHJvbGxlcklPUy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHJldHVybiB0aGlzLnNob3VsZEhhdmVTdGFydFBsYXliYWNrQnV0dG9uKCkgfHwgQ29udHJv
bGxlci5wcm90b3R5cGUuc2hvdWxkSGF2ZUFueVVJLmNhbGwodGhpcykgfHwgdGhpcy5jdXJyZW50
UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKCk7CiAgICAgfSwKIAotICAgIGN1cnJlbnRQbGF5YmFj
a1RhcmdldElzV2lyZWxlc3M6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBDb250
cm9sbGVySU9TLmdTaW11bGF0ZVdpcmVsZXNzUGxheWJhY2tUYXJnZXQgfHwgKCh0eXBlb2YgdGhp
cy52aWRlby53ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzID09PSAiZnVuY3Rp
b24iKSAmJiB0aGlzLnZpZGVvLndlYmtpdEN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3Mo
KSk7CisgICAgY3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzczogZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHJldHVybiBDb250cm9sbGVySU9TLmdTaW11bGF0ZVdpcmVsZXNzUGxheWJhY2tUYXJn
ZXQgfHwgKCgnd2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcycgaW4gdGhpcy52
aWRlbykgJiYgdGhpcy52aWRlby53ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNz
KTsKICAgICB9LAogCi0gICAgdXBkYXRlV2lyZWxlc3NQbGF5YmFja1N0YXR1czogZnVuY3Rpb24o
KQotICAgIHsKKyAgICB1cGRhdGVXaXJlbGVzc1BsYXliYWNrU3RhdHVzOiBmdW5jdGlvbigpIHsK
ICAgICAgICAgaWYgKHRoaXMuY3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcygpKSB7CiAg
ICAgICAgICAgICB2YXIgYmFja2dyb3VuZEltYWdlU1ZHID0gInVybCgnIiArIENvbnRyb2xsZXJJ
T1MuZ1dpcmVsZXNzSW1hZ2UgKyAiJykiOwogCkBAIC0xMzMsOCArMTMxLDcgQEAgQ29udHJvbGxl
cklPUy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgdXBkYXRlV2lyZWxl
c3NUYXJnZXRBdmFpbGFibGU6IGZ1bmN0aW9uKCkKLSAgICB7CisgICAgdXBkYXRlV2lyZWxlc3NU
YXJnZXRBdmFpbGFibGU6IGZ1bmN0aW9uKCkgewogICAgICAgICBpZiAoQ29udHJvbGxlcklPUy5n
U2ltdWxhdGVXaXJlbGVzc1BsYXliYWNrVGFyZ2V0IHx8IHRoaXMuaGFzV2lyZWxlc3NQbGF5YmFj
a1RhcmdldHMpCiAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLndpcmVsZXNzVGFyZ2V0UGlja2Vy
LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7CiAgICAgICAgIGVsc2UK
QEAgLTIyNyw4ICsyMjQsNyBAQCBDb250cm9sbGVySU9TLnByb3RvdHlwZSA9IHsKICAgICAgICAg
cmV0dXJuICdyZ2JhKDAsIDAsIDAsIDAuNSknOwogICAgIH0sCiAKLSAgICB1cGRhdGVQcm9ncmVz
czogZnVuY3Rpb24oKQotICAgIHsKKyAgICB1cGRhdGVQcm9ncmVzczogZnVuY3Rpb24oKSB7CiAg
ICAgICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZVByb2dyZXNzLmNhbGwodGhpcyk7CiAK
ICAgICAgICAgdmFyIHdpZHRoID0gdGhpcy5jb250cm9scy50aW1lbGluZS5vZmZzZXRXaWR0aDsK
QEAgLTI4MCw3ICsyNzYsNyBAQCBDb250cm9sbGVySU9TLnByb3RvdHlwZSA9IHsKICAgICB9LAog
CiAgICAgaGFuZGxlV3JhcHBlclRvdWNoU3RhcnQ6IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAg
IGlmIChldmVudC50YXJnZXQgIT0gdGhpcy5iYXNlKQorICAgICAgICBpZiAoZXZlbnQudGFyZ2V0
ICE9IHRoaXMuYmFzZSAmJiBldmVudC50YXJnZXQgIT0gdGhpcy5jb250cm9scy53aXJlbGVzc1Bs
YXliYWNrU3RhdHVzKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICh0aGlzLmNv
bnRyb2xzQXJlSGlkZGVuKCkpIHsKQEAgLTMwOSw5ICszMDUsNyBAQCBDb250cm9sbGVySU9TLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMudmlkZW8ud2Via2l0RGlzcGxheWluZ0Z1
bGxzY3JlZW47CiAgICAgfSwKIAotICAgIGhhbmRsZUZ1bGxzY3JlZW5CdXR0b25DbGlja2VkOiBm
dW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUudHJhY2UoKTsKKyAgICBoYW5k
bGVGdWxsc2NyZWVuQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgaWYg
KHRoaXMuaXNGdWxsU2NyZWVuKCkpCiAgICAgICAgICAgICB0aGlzLnZpZGVvLndlYmtpdEV4aXRG
dWxsc2NyZWVuKCk7CiAgICAgICAgIGVsc2UKQEAgLTM1OCwyMCArMzUyLDE4IEBAIENvbnRyb2xs
ZXJJT1MucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnVwZGF0ZUNvbnRyb2xzKCk7CiAgICAg
fSwKIAotICAgIGhhbmRsZVdpcmVsZXNzUGxheWJhY2tDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQot
ICAgIHsKLSAgICAgICAgdXBkYXRlV2lyZWxlc3NQbGF5YmFja1N0YXR1cygpOworICAgIGhhbmRs
ZVdpcmVsZXNzUGxheWJhY2tDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHRoaXMu
dXBkYXRlV2lyZWxlc3NQbGF5YmFja1N0YXR1cygpOwogICAgIH0sCiAKLSAgICBoYW5kbGVXaXJl
bGVzc1RhcmdldEF2YWlsYWJsZUNoYW5nZTogZnVuY3Rpb24oZXZlbnQpCi0gICAgeworICAgIGhh
bmRsZVdpcmVsZXNzVGFyZ2V0QXZhaWxhYmxlQ2hhbmdlOiBmdW5jdGlvbihldmVudCkgewogICAg
ICAgICB0aGlzLmhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzID0gZXZlbnQuYXZhaWxhYmlsaXR5
ID09ICJhdmFpbGFibGUiOwotICAgICAgICB1cGRhdGVXaXJlbGVzc1RhcmdldEF2YWlsYWJsZSgp
OworICAgICAgICB0aGlzLnVwZGF0ZVdpcmVsZXNzVGFyZ2V0QXZhaWxhYmxlKCk7CiAgICAgfSwK
IAotICAgIGhhbmRsZVdpcmVsZXNzUGlja2VyQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQp
Ci0gICAgewotICAgICAgICB2aWRlby53ZWJraXRTaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoKTsK
KyAgICBoYW5kbGVXaXJlbGVzc1BpY2tlckJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgIHRoaXMudmlkZW8ud2Via2l0U2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKCk7Cisg
ICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgIH0sCiB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2NDQ5OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxNyw4ICs0MTcsOCBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgp
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKLSAgICBpZiAobV9wbGF5ZXIgJiYg
IWhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWls
YWJpbGl0eWNoYW5nZWRFdmVudCkpCi0gICAgICAgIG1fcGxheWVyLT5zZXRIYXNQbGF5YmFja1Rh
cmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyhmYWxzZSk7CisgICAgaWYgKCFoYXNFdmVudExpc3Rl
bmVycyhldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2Vk
RXZlbnQpKQorICAgICAgICBtX21lZGlhU2Vzc2lvbi0+c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFp
bGFiaWxpdHlMaXN0ZW5lcnMoKnRoaXMsIGZhbHNlKTsKICNlbmRpZgogCiAgICAgaWYgKG1fbWVk
aWFDb250cm9sbGVyKSB7CkBAIC0xMjQ2LDYgKzEyNDYsOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmxvYWRSZXNvdXJjZShjb25zCiAgICAgaWYgKCFtX3BsYXllci0+bG9hZCh1cmwsIGNvbnRl
bnRUeXBlLCBrZXlTeXN0ZW0pKQogICAgICAgICBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5
ZXI6OkZvcm1hdEVycm9yKTsKIAorICAgIG1fbWVkaWFTZXNzaW9uLT5hcHBseU1lZGlhUGxheWVy
UmVzdHJpY3Rpb25zKCp0aGlzKTsKKwogICAgIC8vIElmIHRoZXJlIGlzIG5vIHBvc3RlciB0byBk
aXNwbGF5LCBhbGxvdyB0aGUgbWVkaWEgZW5naW5lIHRvIHJlbmRlciB2aWRlbyBmcmFtZXMgYXMg
c29vbiBhcwogICAgIC8vIHRoZXkgYXJlIGF2YWlsYWJsZS4KICAgICB1cGRhdGVEaXNwbGF5U3Rh
dGUoKTsKQEAgLTI0NTIsNyArMjQ1NCwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlZnJl
c2hDYWNoZWRUaW1lCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6aW52YWxpZGF0ZUNhY2hlZFRp
bWUoKSBjb25zdAogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmludmFsaWRh
dGVDYWNoZWRUaW1lIik7CisjaWYgIUxPR19ESVNBQkxFRAorICAgIGlmIChtX2NhY2hlZFRpbWUg
IT0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiSFRN
TE1lZGlhRWxlbWVudDo6aW52YWxpZGF0ZUNhY2hlZFRpbWUiKTsKKyAgICB9CisjZW5kaWYKIAog
ICAgIC8vIERvbid0IHRyeSB0byBjYWNoZSBtb3ZpZSB0aW1lIHdoZW4gcGxheWJhY2sgZmlyc3Qg
c3RhcnRzIGFzIHRoZSB0aW1lIHJlcG9ydGVkIGJ5IHRoZSBlbmdpbmUKICAgICAvLyBzb21ldGlt
ZXMgZmx1Y3R1YXRlcyBmb3IgYSBzaG9ydCBhbW91bnQgb2YgdGltZSwgc28gdGhlIGNhY2hlZCB0
aW1lIHdpbGwgYmUgb2ZmIGlmIHdlIHRha2UgaXQKQEAgLTQ3NzgsMjggKzQ3ODQsMTcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVXaWRnZXQoUGx1ZwogI2lmIEVOQUJMRShJT1NfQUlS
UExBWSkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2Via2l0U2hvd1BsYXliYWNrVGFyZ2V0UGlj
a2VyKCkKIHsKLSAgICBpZiAoIWRvY3VtZW50KCkucGFnZSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpZiAoIW1fcGxheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fbWVkaWFT
ZXNzaW9uLT5zaG93aW5nUGxheWJhY2tUYXJnZXRQaWNrZXJQZXJtaXR0ZWQoKnRoaXMpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLT5tZWRpYVBsYXli
YWNrQWxsb3dzQWlyUGxheSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3BsYXllci0+c2hv
d1BsYXliYWNrVGFyZ2V0UGlja2VyKCk7CisgICAgbV9tZWRpYVNlc3Npb24tPnNob3dQbGF5YmFj
a1RhcmdldFBpY2tlcigqdGhpcyk7CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6d2Via2l0
Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
cGxheWVyICYmIG1fcGxheWVyLT5pc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCk7Cisg
ICAgcmV0dXJuIG1fbWVkaWFTZXNzaW9uLT5jdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNz
KCp0aGlzKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckN1cnJlbnRQ
bGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKE1lZGlhUGxheWVyKikKIHsKKyAgICBMT0co
TWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckN1cnJlbnRQbGF5YmFja1Rhcmdl
dElzV2lyZWxlc3NDaGFuZ2VkIC0gd2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVz
cyA9ICVzIiwgYm9vbFN0cmluZyh3ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNz
KCkpKTsKICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRjdXJyZW50cGxheWJh
Y2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZEV2ZW50KTsKIH0KIApAQCAtNDgxNiw5ICs0ODExLDEy
IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcigKICAgICBib29sIGlz
Rmlyc3RBdmFpbGFiaWxpdHlDaGFuZ2VkTGlzdGVuZXIgPSAhaGFzRXZlbnRMaXN0ZW5lcnMoZXZl
bnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50KTsK
ICAgICBpZiAoIU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNl
Q2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9wbGF5ZXIgJiYgaXNG
aXJzdEF2YWlsYWJpbGl0eUNoYW5nZWRMaXN0ZW5lcikKLSAgICAgICAgbV9wbGF5ZXItPnNldEhh
c1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzKHRydWUpOwogCisgICAgaWYgKGlz
Rmlyc3RBdmFpbGFiaWxpdHlDaGFuZ2VkTGlzdGVuZXIpCisgICAgICAgIG1fbWVkaWFTZXNzaW9u
LT5zZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycygqdGhpcywgdHJ1ZSk7
CisKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKCd3
ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWQnKSIpOworICAgIAogICAgIGVu
cXVldWVQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRFdmVudCgpOyAvLyBFbnN1cmUg
dGhlIGV2ZW50IGxpc3RlbmVyIGdldHMgYXQgbGVhc3Qgb25lIGV2ZW50LgogICAgIHJldHVybiB0
cnVlOwogfQpAQCAtNDgzMiwxNyArNDgzMCwxNiBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnJl
bW92ZUV2ZW50TGlzdGVuCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgZGlkUmVt
b3ZlTGFzdEF2YWlsYWJpbGl0eUNoYW5nZWRMaXN0ZW5lciA9ICFoYXNFdmVudExpc3RlbmVycyhl
dmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQp
OwotICAgIGlmIChtX3BsYXllciAmJiBkaWRSZW1vdmVMYXN0QXZhaWxhYmlsaXR5Q2hhbmdlZExp
c3RlbmVyKQotICAgICAgICBtX3BsYXllci0+c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlMaXN0ZW5lcnMoZmFsc2UpOworICAgIGlmIChkaWRSZW1vdmVMYXN0QXZhaWxhYmlsaXR5Q2hh
bmdlZExpc3RlbmVyKQorICAgICAgICBtX21lZGlhU2Vzc2lvbi0+c2V0SGFzUGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMoKnRoaXMsIGZhbHNlKTsKKwogICAgIHJldHVybiB0cnVl
OwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVucXVldWVQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eUNoYW5nZWRFdmVudCgpCiB7Ci0gICAgaWYgKCFtX3BsYXllcikKLSAgICAgICAgcmV0
dXJuOwotICAgIGJvb2wgaXNBaXJQbGF5QXZhaWxhYmxlID0gbV9wbGF5ZXItPmhhc1dpcmVsZXNz
UGxheWJhY2tUYXJnZXRzKCk7Ci0gICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IFdlYktpdFBsYXli
YWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0cGxh
eWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQsIGlzQWlyUGxheUF2YWlsYWJsZSk7
CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXliYWNrVGFyZ2V0
QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50Iik7CisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IFdl
YktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
d2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQsIG1fbWVkaWFTZXNz
aW9uLT5oYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cygqdGhpcykpOwogICAgIGV2ZW50LT5zZXRU
YXJnZXQodGhpcyk7CiAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KGV2ZW50LnJl
bGVhc2UoKSk7CiB9CkBAIC01MzQ3LDcgKzUzNDQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmNyZWF0ZU1lZGlhUGxheWVyCiAKICNpZiBFTkFCTEUoSU9TX0FJUlBMQVkpCiAgICAgaWYgKGhh
c0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJp
bGl0eWNoYW5nZWRFdmVudCkpIHsKLSAgICAgICAgbV9wbGF5ZXItPnNldEhhc1BsYXliYWNrVGFy
Z2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzKHRydWUpOworICAgICAgICBtX21lZGlhU2Vzc2lvbi0+
c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMoKnRoaXMsIHRydWUpOwog
ICAgICAgICBlbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkRXZlbnQoKTsg
Ly8gRW5zdXJlIHRoZSBldmVudCBsaXN0ZW5lciBnZXRzIGF0IGxlYXN0IG9uZSBldmVudC4KICAg
ICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNw
cAkocmV2aXNpb24gMTY0NDkzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNz
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsMTAgQEAKICNpbmNsdWRlICJIVE1M
TWVkaWFTZXNzaW9uLmgiCiAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhU2Vz
c2lvbk1hbmFnZXIuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAKQEAgLTU1LDYgKzU3LDcgQEAg
c3RhdGljIGNvbnN0IGNoYXIqIHJlc3RyaWN0aW9uTmFtZShIVE1MTQogICAgIENBU0UoUmVxdWly
ZVBhZ2VDb25zZW50VG9SZXN1bWVNZWRpYSk7CiAjaWYgRU5BQkxFKElPU19BSVJQTEFZKQogICAg
IENBU0UoUmVxdWlyZVVzZXJHZXN0dXJlVG9TaG93UGxheWJhY2tUYXJnZXRQaWNrZXIpOworICAg
IENBU0UoV2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOwogI2VuZGlmCiAgICAgfQogCkBA
IC0xNTUsMTQgKzE1OCwxNDMgQEAgYm9vbCBIVE1MTWVkaWFTZXNzaW9uOjpwYWdlQWxsb3dzUGxh
eWJhYwogfQogCiAjaWYgRU5BQkxFKElPU19BSVJQTEFZKQotYm9vbCBIVE1MTWVkaWFTZXNzaW9u
OjpzaG93aW5nUGxheWJhY2tUYXJnZXRQaWNrZXJQZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxl
bWVudCYpIGNvbnN0Citib29sIEhUTUxNZWRpYVNlc3Npb246OnNob3dpbmdQbGF5YmFja1Rhcmdl
dFBpY2tlclBlcm1pdHRlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdAog
ewogICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZVRvU2hvd1BsYXli
YWNrVGFyZ2V0UGlja2VyICYmICFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1
cmUoKSkgewotICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFTZXNzaW9uOjpzaG93aW5nUGxh
eWJhY2tUYXJnZXRQaWNrZXJQZXJtaXR0ZWQgLSByZXR1cm5pbmcgRkFMU0UiKTsKKyAgICAgICAg
TE9HKE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6c2hvd2luZ1BsYXliYWNrVGFyZ2V0UGlja2Vy
UGVybWl0dGVkIC0gcmV0dXJuaW5nIEZBTFNFIGJlY2F1c2Ugb2YgcGVybWlzc2lvbnMiKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiB0cnVlOworICAgIGlmICgh
ZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKSkgeworICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVk
aWFTZXNzaW9uOjpzaG93aW5nUGxheWJhY2tUYXJnZXRQaWNrZXJQZXJtaXR0ZWQgLSByZXR1cm5p
bmcgRkFMU0UgYmVjYXVzZSBwYWdlIGlzIE5VTEwiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiAhd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoZWxlbWVu
dCk7Cit9CisKK2Jvb2wgSFRNTE1lZGlhU2Vzc2lvbjo6Y3VycmVudFBsYXliYWNrVGFyZ2V0SXNX
aXJlbGVzcyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdAoreworICAgIE1l
ZGlhUGxheWVyKiBwbGF5ZXIgPSBlbGVtZW50LnBsYXllcigpOworICAgIGlmICghcGxheWVyKSB7
CisgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OmN1cnJlbnRQbGF5YmFja1Rh
cmdldElzV2lyZWxlc3MgLSByZXR1cm5pbmcgRkFMU0UgYmVjYXVzZSBwbGF5ZXIgaXMgTlVMTCIp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgYm9vbCBpc1dpcmVsZXNzID0g
cGxheWVyLT5pc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCk7CisgICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhU2Vzc2lvbjo6Y3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcyAtIHJl
dHVybmluZyAlcyIsIGlzV2lyZWxlc3MgPyAiVFJVRSIgOiAiRkFMU0UiKTsKKworICAgIHJldHVy
biBpc1dpcmVsZXNzOworfQorCit2b2lkIEhUTUxNZWRpYVNlc3Npb246OnNob3dQbGF5YmFja1Rh
cmdldFBpY2tlcihjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KQoreworICAgIExPRyhN
ZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OnNob3dQbGF5YmFja1RhcmdldFBpY2tlciIpOworCisg
ICAgaWYgKCFzaG93aW5nUGxheWJhY2tUYXJnZXRQaWNrZXJQZXJtaXR0ZWQoZWxlbWVudCkpCisg
ICAgICAgIHJldHVybjsKKworI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQorICAg
IGlmIChlbGVtZW50LnNob3VsZFVzZVZpZGVvUGx1Z2luUHJveHkoKSkgeworICAgICAgICBNZWRp
YVBsYXllciogcGxheWVyID0gZWxlbWVudC5wbGF5ZXIoKTsKKyAgICAgICAgaWYgKCFwbGF5ZXIp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcGxheWVyLT5zaG93UGxheWJhY2tUYXJn
ZXRQaWNrZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNob3dQbGF5YmFja1RhcmdldFBpY2tlcigp
OworfQorCitib29sIEhUTUxNZWRpYVNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRz
KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Cit7CisjaWYgRU5BQkxFKFBM
VUdJTl9QUk9YWV9GT1JfVklERU8pCisgICAgaWYgKGVsZW1lbnQuc2hvdWxkVXNlVmlkZW9QbHVn
aW5Qcm94eSgpKSB7CisgICAgICAgIE1lZGlhUGxheWVyKiBwbGF5ZXIgPSBlbGVtZW50LnBsYXll
cigpOworICAgICAgICBpZiAoIXBsYXllcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICByZXR1cm4gcGxheWVyLT5oYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cygpOworICAg
IH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVsZW1lbnQpOworI2VuZGlmCisKKyAgICAvLyBG
SVhNRTogdGhpcyBvbmx5IGxldHMgdXMga25vdyBpZiB0aGUgY3VycmVudCBlbGVtZW50IGlzIHBs
YXlpbmcgdG8gYW4gZXh0ZXJuYWwgdGFyZ2V0LCB3ZSB3YW50IHRvCisgICAgLy8ga25vdyBpZiB0
aGVyZSBhcmUgKmFueSogZXh0ZXJuYWwgdGFyZ2V0cy4KKyAgICBib29sIGhhc1RhcmdldHMgPSBj
dXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKGVsZW1lbnQpOworICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYVNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzIC0gcmV0dXJuaW5n
ICVzIiwgaGFzVGFyZ2V0cyA/ICJUUlVFIiA6ICJGQUxTRSIpOworCisgICAgcmV0dXJuIGhhc1Rh
cmdldHM7Cit9CisKK2Jvb2wgSFRNTE1lZGlhU2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkgY29uc3QKK3sKKyAgICBT
ZXR0aW5ncyogc2V0dGluZ3MgPSBlbGVtZW50LmRvY3VtZW50KCkuc2V0dGluZ3MoKTsKKyAgICBp
ZiAoIXNldHRpbmdzIHx8ICFzZXR0aW5ncy0+bWVkaWFQbGF5YmFja0FsbG93c0FpclBsYXkoKSkg
eworICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFTZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZCAtIHJldHVybmluZyBUUlVFIGJlY2F1c2Ugb2Ygc2V0dGluZ3MiKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGVsZW1lbnQuZmFzdEhhc0F0dHJp
YnV0ZShIVE1MTmFtZXM6OndlYmtpdHdpcmVsZXNzdmlkZW9wbGF5YmFja2Rpc2FibGVkQXR0cikp
IHsKKyAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQgLSByZXR1cm5pbmcgVFJVRSBiZWNhdXNlIG9mIGF0dHJpYnV0ZSIpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgU3Ry
aW5nIGxlZ2FjeUFpcnBsYXlBdHRyaWJ1dGVWYWx1ZSA9IGVsZW1lbnQuZmFzdEdldEF0dHJpYnV0
ZShIVE1MTmFtZXM6OndlYmtpdGFpcnBsYXlBdHRyKTsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UobGVnYWN5QWlycGxheUF0dHJpYnV0ZVZhbHVlLCAiZGVueSIpKSB7CisgICAgICAgIExPRyhN
ZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIC0g
cmV0dXJuaW5nIFRSVUUgYmVjYXVzZSBvZiBsZWdhY3kgYXR0cmlidXRlIik7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyNlbmRpZgorCisgICAgTWVkaWFQbGF5ZXIqIHBsYXllciA9IGVs
ZW1lbnQucGxheWVyKCk7CisgICAgaWYgKCFwbGF5ZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGJvb2wgZGlzYWJsZWQgPSBwbGF5ZXItPndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkKCk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQgLSByZXR1cm5pbmcgJXMgYmVjYXVzZSBtZWRpYSBlbmdpbmUgc2F5cyBz
byIsIGRpc2FibGVkID8gIlRSVUUiIDogIkZBTFNFIik7CisgICAgCisgICAgcmV0dXJuIGRpc2Fi
bGVkOworfQorCit2b2lkIEhUTUxNZWRpYVNlc3Npb246OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgZGlzYWJsZWQp
Cit7CisgICAgaWYgKGRpc2FibGVkKQorICAgICAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFdp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTsKKyAgICBlbHNlCisgICAgICAgIHJlbW92ZUJl
aGF2aW9yUmVzdHJpY3Rpb24oV2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOworCisgICAg
TWVkaWFQbGF5ZXIqIHBsYXllciA9IGVsZW1lbnQucGxheWVyKCk7CisgICAgaWYgKCFwbGF5ZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OnNl
dFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIC0gZGlzYWJsZWQgJXMiLCBkaXNhYmxlZCA/
ICJUUlVFIiA6ICJGQUxTRSIpOworICAgIHBsYXllci0+c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQoZGlzYWJsZWQpOworfQorCit2b2lkIEhUTUxNZWRpYVNlc3Npb246OnNldEhhc1Bs
YXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQm
IGVsZW1lbnQsIGJvb2wgaGFzTGlzdGVuZXJzKQoreworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRp
YVNlc3Npb246OnNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzIC0gaGFz
TGlzdGVuZXJzICVzIiwgaGFzTGlzdGVuZXJzID8gIlRSVUUiIDogIkZBTFNFIik7CisKKyNpZiBF
TkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKKyAgICBpZiAoZWxlbWVudC5zaG91bGRVc2VW
aWRlb1BsdWdpblByb3h5KCkpIHsKKyAgICAgICAgTWVkaWFQbGF5ZXIqIHBsYXllciA9IGVsZW1l
bnQucGxheWVyKCk7CisgICAgICAgIGlmICghcGxheWVyKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAKKyAgICAgICAgcGxheWVyLT5zZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUxpc3RlbmVycyhoYXNMaXN0ZW5lcnMpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oaGFzTGlzdGVuZXJzKTsKKyAgICBVTlVTRURfUEFSQU0oZWxlbWVu
dCk7CisjZW5kaWYKKworICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAjZW5kaWYKIApAQCAtMjAy
LDYgKzMzNCwxOCBAQCBib29sIEhUTUxNZWRpYVNlc3Npb246OnJlcXVpcmVzRnVsbHNjcmVlCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6YXBwbHlNZWRpYVBs
YXllclJlc3RyaWN0aW9ucyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KQoreworICAg
IExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OmFwcGx5TWVkaWFQbGF5ZXJSZXN0cmljdGlv
bnMiKTsKKworI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKKyAgICBzZXRXaXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZChlbGVtZW50LCBtX3Jlc3RyaWN0aW9ucyAmIFdpcmVsZXNzVmlkZW9QbGF5
YmFja0Rpc2FibGVkKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVsZW1lbnQpOworI2VuZGlm
CisgICAgCit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oCShyZXZpc2lvbiAxNjQ0OTMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYVNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDksMTAg
KzQ5LDIxIEBAIHB1YmxpYzoKICAgICBib29sIHBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1p
bmcoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwogI2lmIEVOQUJMRShJT1NfQUlSUExB
WSkKICAgICBib29sIHNob3dpbmdQbGF5YmFja1RhcmdldFBpY2tlclBlcm1pdHRlZChjb25zdCBI
VE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CisKKyAgICBib29sIGN1cnJlbnRQbGF5YmFja1Rhcmdl
dElzV2lyZWxlc3MoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OworICAgIHZvaWQgc2hv
d1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKTsKKyAgICBib29s
IGhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25z
dDsKKworICAgIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoY29uc3QgSFRNTE1l
ZGlhRWxlbWVudCYpIGNvbnN0OworICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYsIGJvb2wpOworCisgICAgdm9pZCBzZXRIYXNQ
bGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyhjb25zdCBIVE1MTWVkaWFFbGVtZW50
JiwgYm9vbCk7CiAjZW5kaWYKICAgICBib29sIHJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxh
eWJhY2soY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwogICAgIE1lZGlhUGxheWVyOjpQ
cmVsb2FkIGVmZmVjdGl2ZVByZWxvYWRGb3JFbGVtZW50KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQm
KSBjb25zdDsKIAorICAgIHZvaWQgYXBwbHlNZWRpYVBsYXllclJlc3RyaWN0aW9ucyhjb25zdCBI
VE1MTWVkaWFFbGVtZW50Jik7CisKICAgICAvLyBSZXN0cmljdGlvbnMgdG8gbW9kaWZ5IGRlZmF1
bHQgYmVoYXZpb3JzLgogICAgIGVudW0gQmVoYXZpb3JSZXN0cmljdGlvbkZsYWdzIHsKICAgICAg
ICAgTm9SZXN0cmljdGlvbnMgPSAwLApAQCAtNjMsNiArNzQsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFJlcXVpcmVQYWdlQ29uc2VudFRvUmVzdW1lTWVkaWEgPSAxIDw8IDQsCiAjaWYgRU5BQkxFKElP
U19BSVJQTEFZKQogICAgICAgICBSZXF1aXJlVXNlckdlc3R1cmVUb1Nob3dQbGF5YmFja1Rhcmdl
dFBpY2tlciA9IDEgPDwgNSwKKyAgICAgICAgV2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQg
PSAgMSA8PCA2LAogI2VuZGlmCiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIEJlaGF2aW9y
UmVzdHJpY3Rpb25zOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNjQ0OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsMjEgKzEzMywxOCBAQCB2b2lkIEhUTUxW
aWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvCiAgICAgICAgIH0KICAgICB9CiAjaWYgRU5B
QkxFKElPU19BSVJQTEFZKQotICAgIGVsc2UgaWYgKG5hbWUgPT0gd2Via2l0d2lyZWxlc3N2aWRl
b3BsYXliYWNrZGlzYWJsZWRBdHRyKSB7Ci0gICAgICAgIGlmIChwbGF5ZXIoKSkKLSAgICAgICAg
ICAgIHBsYXllcigpLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCh3ZWJraXRXaXJl
bGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBIVE1M
TWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7Ci0KLSAgICAgICAgaWYg
KG5hbWUgPT0gd2Via2l0YWlycGxheUF0dHIpIHsKLSAgICAgICAgICAgIGlmIChwbGF5ZXIoKSkK
LSAgICAgICAgICAgICAgICBwbGF5ZXIoKS0+c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWQod2Via2l0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0jZWxzZQotICAgIGVsc2UKKyAgICBlbHNlIGlmIChuYW1lID09IHdlYmtpdHdpcmVsZXNz
dmlkZW9wbGF5YmFja2Rpc2FibGVkQXR0cikKKyAgICAgICAgbWVkaWFTZXNzaW9uKCkuc2V0V2ly
ZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKnRoaXMsIHdlYmtpdFdpcmVsZXNzVmlkZW9QbGF5
YmFja0Rpc2FibGVkKCkpOworI2VuZGlmCisgICAgZWxzZSB7CiAgICAgICAgIEhUTUxNZWRpYUVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsgICAgCisKKyNpZiBQTEFURk9STShJ
T1MpICYmIEVOQUJMRShJT1NfQUlSUExBWSkKKyAgICAgICAgaWYgKG5hbWUgPT0gd2Via2l0YWly
cGxheUF0dHIpCisgICAgICAgICAgICBtZWRpYVNlc3Npb24oKS5zZXRXaXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZCgqdGhpcywgd2Via2l0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQo
KSk7CiAjZW5kaWYKKyAgICB9CisKIH0KIAogYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpzdXBwb3J0
c0Z1bGxzY3JlZW4oKSBjb25zdApAQCAtMzE2LDE0ICszMTMsNyBAQCBib29sIEhUTUxWaWRlb0Vs
ZW1lbnQ6OndlYmtpdERpc3BsYXlpbmdGCiAjaWYgRU5BQkxFKElPU19BSVJQTEFZKQogYm9vbCBI
VE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNv
bnN0CiB7Ci0gICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQoKS5zZXR0aW5ncygpOwot
ICAgIGlmICghc2V0dGluZ3MgfHwgIXNldHRpbmdzLT5tZWRpYVBsYXliYWNrQWxsb3dzQWlyUGxh
eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIFN0cmluZyBsZWdhY3lBaXJwbGF5QXR0
cmlidXRlVmFsdWUgPSBmYXN0R2V0QXR0cmlidXRlKHdlYmtpdGFpcnBsYXlBdHRyKTsKLSAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UobGVnYWN5QWlycGxheUF0dHJpYnV0ZVZhbHVlLCAiZGVueSIp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFzdEhhc0F0dHJpYnV0ZSh3ZWJr
aXR3aXJlbGVzc3ZpZGVvcGxheWJhY2tkaXNhYmxlZEF0dHIpOworICAgIHJldHVybiBtZWRpYVNl
c3Npb24oKS53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgqdGhpcyk7CiB9CiAKIHZvaWQg
SFRNTFZpZGVvRWxlbWVudDo6c2V0V2Via2l0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQo
Ym9vbCBkaXNhYmxlZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlh
U2Vzc2lvbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmgJKHJldmlzaW9uIDE2NDQ5MykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNjksNiArNjksMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBzZXNzaW9uUmVzdHJpY3Rz
SW5saW5lVmlkZW9QbGF5YmFjayhjb25zdCBNZWRpYVNlc3Npb24mKSBjb25zdDsKIAorI2lmIEVO
QUJMRShJT1NfQUlSUExBWSkKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlj
a2VyKCkgeyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBNZWRpYVNl
c3Npb247CiAgICAgZXhwbGljaXQgTWVkaWFTZXNzaW9uTWFuYWdlcigpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9u
TWFuYWdlcklPUy5oCShyZXZpc2lvbiAxNjQ0OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw2ICs0NCwxMCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHJlc2V0UmVzdHJpY3Rp
b25zKCkgb3ZlcnJpZGU7CiAKKyNpZiBFTkFCTEUoSU9TX0FJUlBMQVkpCisgICAgdmlydHVhbCB2
b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcigpIG92ZXJyaWRlOworI2VuZGlmCisKICAgICBN
ZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCk7CiAgICAgUmV0YWluUHRyPFdlYk1lZGlhU2Vzc2lvbkhl
bHBlcj4gbV9vYmpjT2JzZXJ2ZXI7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0JKHJl
dmlzaW9uIDE2NDQ5MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhU2Vzc2lvbi5oIgorI2ltcG9ydCAi
Tm90SW1wbGVtZW50ZWQuaCIKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0ICJXZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCkBAIC0x
MDYsNiArMTA3LDEzIEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6cmVzZXRSZXN0cmkK
ICAgICBhZGRSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OlZpZGVvLCBBdXRvUHJlbG9hZGluZ05v
dFBlcm1pdHRlZCk7CiB9CiAKKyNpZiBFTkFCTEUoSU9TX0FJUlBMQVkpCit2b2lkIE1lZGlhU2Vz
c2lvbk1hbmFnZXJpT1M6OnNob3dQbGF5YmFja1RhcmdldFBpY2tlcigpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIEBpbXBs
ZW1lbnRhdGlvbiBXZWJNZWRpYVNlc3Npb25IZWxwZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCShyZXZpc2lvbiAx
NjQ0OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODky
LDYgKzg5MiwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6ZGlzCiAg
ICAgY2FzZSBOb3RpZmljYXRpb246OkZ1bmN0aW9uVHlwZToKICAgICAgICAgbm90aWZpY2F0aW9u
LmZ1bmN0aW9uKCkoKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOb3RpZmljYXRpb246OlRh
cmdldElzV2lyZWxlc3NDaGFuZ2VkOgorI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKKyAgICAgICAg
cGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZCgpOworI2VuZGlmCisgICAgICAgIGJyZWFr
OwogCiAgICAgY2FzZSBOb3RpZmljYXRpb246Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtOTcxLDYgKzk3NiwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6cHJvCiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uOjpwcm9jZXNzTmV3QW5kUmVtb3ZlZFRleHRUcmFja3MoJXApIC0gZm91bmQgJWx1IHRleHQg
dHJhY2tzIiwgdGhpcywgbV90ZXh0VHJhY2tzLnNpemUoKSk7CiB9CiAKKyNpZiBFTkFCTEUoSU9T
X0FJUlBMQVkpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6cGxheWJhY2tU
YXJnZXRJc1dpcmVsZXNzQ2hhbmdlZCgpCit7CisgICAgaWYgKG1fcGxheWVyKQorICAgICAgICBt
X3BsYXllci0+Y3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoKTsKK30KKyNl
bmRpZgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgJKHJldmlzaW9u
IDE2NDQ5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTks
NyArNTksMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb25maWd1cmVJbmJhbmRUcmFj
a3MoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRyYWNrKEluYmFuZFRleHRUcmFja1By
aXZhdGVBVkYqKSB7IH0KICAgICB2aXJ0dWFsIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYqIGN1
cnJlbnRUcmFjaygpIGNvbnN0ID0gMDsKLQorI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKKyAgICB2
b2lkIHBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoKTsKKyNlbmRpZgorICAgIAogICAg
IGNsYXNzIE5vdGlmaWNhdGlvbiB7CiAgICAgcHVibGljOgogI2RlZmluZSBGT1JfRUFDSF9NRURJ
QVBMQVlFUlBSSVZBVEVBVkZPVU5EQVRJT05fTk9USUZJQ0FUSU9OX1RZUEUobWFjcm8pIFwKQEAg
LTgxLDYgKzg0LDcgQEAgcHVibGljOgogICAgIG1hY3JvKER1cmF0aW9uQ2hhbmdlZCkgXAogICAg
IG1hY3JvKENvbnRlbnRzTmVlZHNEaXNwbGF5KSBcCiAgICAgbWFjcm8oSW5iYW5kVHJhY2tzTmVl
ZENvbmZpZ3VyYXRpb24pIFwKKyAgICBtYWNybyhUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZCkgXAog
CiAgICAgICAgIGVudW0gVHlwZSB7CiAjZGVmaW5lIERFRklORV9UWVBFX0VOVU0odHlwZSkgdHlw
ZSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgJKHJldmlzaW9uIDE2NDQ5OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMywx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKEFWUGxheWVy
SXRlbVZpZGVvT3V0cHV0Kik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKKyAg
ICB2b2lkIHBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0RpZENoYW5nZSgpOworI2VuZGlmCisKIHBy
aXZhdGU6CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyhNZWRpYVBsYXll
ciopOwogCkBAIC0yMjMsNiArMjI3LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVWaWRl
b1RyYWNrcygpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU9TX0FJUlBMQVkpCisgICAgdmlydHVh
bCBib29sIGlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MoKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWQoYm9vbCkgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIFdlYWtQdHJGYWN0b3J5PE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+IG1fd2Vha1B0ckZhY3Rvcnk7CiAKICAgICBSZXRh
aW5QdHI8QVZVUkxBc3NldD4gbV9hdkFzc2V0OwpAQCAtMjc4LDYgKzI4OCw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2NhY2hlZEJ1ZmZlckVtcHR5OwogICAgIGJvb2wgbV9jYWNoZWRCdWZmZXJG
dWxsOwogICAgIGJvb2wgbV9jYWNoZWRIYXNFbmFibGVkQXVkaW87CisgICAgbXV0YWJsZSBib29s
IG1fYWxsb3dzV2lyZWxlc3NWaWRlb1BsYXliYWNrOwogfTsKIAogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCShyZXZpc2lvbiAxNjQ0OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsNiArMjk1LDcgQEAgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaQogICAgICwgbV9jYWNoZWRCdWZmZXJFbXB0eShm
YWxzZSkKICAgICAsIG1fY2FjaGVkQnVmZmVyRnVsbChmYWxzZSkKICAgICAsIG1fY2FjaGVkSGFz
RW5hYmxlZEF1ZGlvKGZhbHNlKQorICAgICwgbV9hbGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJhY2so
dHJ1ZSkKIHsKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQogICAgIHBsYXllclRvUHJp
dmF0ZU1hcCgpLnNldChwbGF5ZXIsIHRoaXMpOwpAQCAtMzUzLDYgKzM1NCw5IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAgICAgICAgICAgIFttX2F2UGxheWVy
LmdldCgpIHJlbW92ZVRpbWVPYnNlcnZlcjptX3RpbWVPYnNlcnZlci5nZXQoKV07CiAgICAgICAg
IG1fdGltZU9ic2VydmVyID0gbmlsOwogICAgICAgICBbbV9hdlBsYXllci5nZXQoKSByZW1vdmVP
YnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAicmF0ZSJdOworI2lmIEVO
QUJMRShJT1NfQUlSUExBWSkKKyAgICAgICAgW21fYXZQbGF5ZXIuZ2V0KCkgcmVtb3ZlT2JzZXJ2
ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAImV4dGVybmFsUGxheWJhY2tBY3Rp
dmUiXTsKKyNlbmRpZgogICAgICAgICBtX2F2UGxheWVyID0gbmlsOwogICAgIH0KIApAQCAtNDU4
LDcgKzQ2Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAg
ICBpZiAoIW1fdmlkZW9MYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKE1lZGlhLCAi
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZpZGVvTGF5ZXIoJXAp
IC0gZGVzdHJveWluZyIsIHRoaXMsIG1fdmlkZW9MYXllci5nZXQoKSk7CisgICAgTE9HKE1lZGlh
LCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZpZGVvTGF5ZXIo
JXApIC0gZGVzdHJveWluZyAlcCIsIHRoaXMsIG1fdmlkZW9MYXllci5nZXQoKSk7CiAKICAgICBb
bV92aWRlb0xheWVyLmdldCgpIHNldFBsYXllcjpuaWxdOwogCkBAIC01MjIsMTEgKzUyNiwxOCBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAKICAgICBtX2F2UGxh
eWVyID0gYWRvcHROUyhbW0FWUGxheWVyIGFsbG9jXSBpbml0XSk7CiAgICAgW21fYXZQbGF5ZXIu
Z2V0KCkgYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAInJhdGUi
IG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Oih2b2lkICopTWVk
aWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlvbkNvbnRleHRQbGF5ZXJdOworI2lmIEVOQUJM
RShJT1NfQUlSUExBWSkKKyAgICBbbV9hdlBsYXllci5nZXQoKSBhZGRPYnNlcnZlcjptX29iamNP
YnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAiZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSIgb3B0aW9u
czpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6KHZvaWQgKilNZWRpYVBsYXll
ckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dFBsYXllcl07CisjZW5kaWYKIAogI2lmIEhB
VkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYgSEFWRShBVkZPVU5EQVRJ
T05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKICAgICBbbV9hdlBsYXllci5nZXQoKSBzZXRBcHBs
aWVzTWVkaWFTZWxlY3Rpb25Dcml0ZXJpYUF1dG9tYXRpY2FsbHk6WUVTXTsKICNlbmRpZgogCisj
aWYgRU5BQkxFKElPU19BSVJQTEFZKQorICAgIFttX2F2UGxheWVyLmdldCgpIHNldEFsbG93c0V4
dGVybmFsUGxheWJhY2s6bV9hbGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJhY2tdOworI2VuZGlmCisK
ICAgICBpZiAobV9hdlBsYXllckl0ZW0pCiAgICAgICAgIFttX2F2UGxheWVyLmdldCgpIHJlcGxh
Y2VDdXJyZW50SXRlbVdpdGhQbGF5ZXJJdGVtOm1fYXZQbGF5ZXJJdGVtLmdldCgpXTsKIApAQCAt
MTM2MCw3ICsxMzcxLDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IE1lZGlhUGxheWVy
UAogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGRvdWJsZSBkdXJhdGlvbiA9IG1vbm90b25pY2Fs
bHlJbmNyZWFzaW5nVGltZSgpIC0gc3RhcnQ7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlUGl4ZWxCdWZmZXIoKSAtIGNyZWF0aW5nIGJ1
ZmZlciB0b29rICUuNGYiLCB0aGlzLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGR1cmF0aW9uKSk7
CisgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3Jl
YXRlUGl4ZWxCdWZmZXIoJXApIC0gY3JlYXRpbmcgYnVmZmVyIHRvb2sgJS40ZiIsIHRoaXMsIG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQoZHVyYXRpb24pKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIGJ1
ZmZlcjsKQEAgLTE4MjMsNyArMTgzNCw3IEBAIFN0cmluZyBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmoKICAgICBOU0FycmF5ICp0cmFja3MgPSBbbV9hdkFzc2V0LmdldCgpIHRyYWNr
c1dpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpb107CiAgICAgaWYgKCF0cmFja3MgfHwgW3Ry
YWNrcyBjb3VudF0gIT0gMSkgewogICAgICAgICBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFj
ayA9IGVtcHR5U3RyaW5nKCk7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6Omxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayglcCkgLSAlaSBh
dWRpbyB0cmFja3MsIHJldHVybmluZyBlbXB0eVN0cmluZygpIiwgdGhpcywgKHRyYWNrcyA/IFt0
cmFja3MgY291bnRdIDogMCkpOworICAgICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2soJXApIC0gJWx1
IGF1ZGlvIHRyYWNrcywgcmV0dXJuaW5nIGVtcHR5U3RyaW5nKCkiLCB0aGlzLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nPih0cmFja3MgPyBbdHJhY2tzIGNvdW50XSA6IDApKTsKICAgICAgICAg
cmV0dXJuIG1fbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrOwogICAgIH0KIApAQCAtMTg0MCw2
ICsxODUxLDM5IEBAIFN0cmluZyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmoKICAg
ICByZXR1cm4gbV9sYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2s7CiB9CiAKKyNpZiBFTkFCTEUo
SU9TX0FJUlBMQVkpCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omlz
Q3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MoKSBjb25zdAoreworICAgIGlmICghbV9hdlBs
YXllcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCB3aXJlbGVzc1RhcmdldCA9
IFttX2F2UGxheWVyLmdldCgpIGlzRXh0ZXJuYWxQbGF5YmFja0FjdGl2ZV07CisgICAgTE9HKE1l
ZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aXNDdXJyZW50UGxheWJh
Y2tUYXJnZXRXaXJlbGVzcyglcCkgLSByZXR1cm5pbmcgJXMiLCB0aGlzLCBib29sU3RyaW5nKHdp
cmVsZXNzVGFyZ2V0KSk7CisgICAgcmV0dXJuIHdpcmVsZXNzVGFyZ2V0OworfQorCitib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYXZQbGF5ZXIpCisgICAgICAgIHJldHVybiAh
bV9hbGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJhY2s7CisgICAgCisgICAgbV9hbGxvd3NXaXJlbGVz
c1ZpZGVvUGxheWJhY2sgPSAhW21fYXZQbGF5ZXIuZ2V0KCkgYWxsb3dzRXh0ZXJuYWxQbGF5YmFj
a107CisgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoJXApIC0gcmV0dXJuaW5nICVzIiwgdGhpcywg
Ym9vbFN0cmluZyghbV9hbGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJhY2spKTsKKworICAgIHJldHVy
biAhbV9hbGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJhY2s7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQo
Ym9vbCBkaXNhYmxlZCkKK3sKKyAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCglcCkgLSAlcyIs
IHRoaXMsIGJvb2xTdHJpbmcoZGlzYWJsZWQpKTsKKyAgICBtX2FsbG93c1dpcmVsZXNzVmlkZW9Q
bGF5YmFjayA9ICFkaXNhYmxlZDsKKyAgICBpZiAoIW1fYXZQbGF5ZXIpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBbbV9hdlBsYXllci5nZXQoKSBzZXRBbGxvd3NFeHRlcm5hbFBsYXliYWNr
OmRpc2FibGVkXTsKK30KKyNlbmRpZgorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnBsYXllckl0ZW1TdGF0dXNEaWRDaGFuZ2UoaW50IHN0YXR1cykKIHsKICAgICBt
X2NhY2hlZEl0ZW1TdGF0dXMgPSBzdGF0dXM7CkBAIC0xOTQzLDYgKzE5ODcsMTMgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogICAgIHVwZGF0ZVN0YXRlcygpOwog
ICAgIHJhdGVDaGFuZ2VkKCk7CiB9CisgICAgCisjaWYgRU5BQkxFKElPU19BSVJQTEFZKQordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF5YmFja1RhcmdldElzV2ly
ZWxlc3NEaWRDaGFuZ2UoKQoreworICAgIHBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQo
KTsKK30KKyNlbmRpZgogCiBOU0FycmF5KiBhc3NldE1ldGFkYXRhS2V5TmFtZXMoKQogewpAQCAt
MjAyOSw3ICsyMDgwLDcgQEAgLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGgg
bwogICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOwogICAgIGlkIG5ld1ZhbHVlID0gW2NoYW5nZSB2
YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XTsKIAotICAgIExPRyhNZWRpYSwgIldl
YkNvcmVBVkZNb3ZpZU9ic2VydmVyOm9ic2VydmVWYWx1ZUZvcktleVBhdGgoJXApIC0ga2V5UGF0
aCA9ICVzIiwgc2VsZiwgW2tleVBhdGggVVRGOFN0cmluZ10pOworICAgIExPRyhNZWRpYSwgIldl
YkNvcmVBVkZNb3ZpZU9ic2VydmVyOjpvYnNlcnZlVmFsdWVGb3JLZXlQYXRoKCVwKSAtIGtleVBh
dGggPSAlcyIsIHNlbGYsIFtrZXlQYXRoIFVURjhTdHJpbmddKTsKIAogICAgIGlmICghbV9jYWxs
YmFjaykKICAgICAgICAgcmV0dXJuOwpAQCAtMjA3Nyw2ICsyMTI4LDEwIEBAIC0gKHZvaWQpb2Jz
ZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG8KICAgICAgICAgLy8gQSB2YWx1ZSBjaGFuZ2Vk
IGZvciBhbiBBVlBsYXllci4KICAgICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpA
InJhdGUiXSkKICAgICAgICAgICAgIGZ1bmN0aW9uID0gV1RGOjpiaW5kKCZNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyYXRlRGlkQ2hhbmdlLCBtX2NhbGxiYWNrLCBbbmV3VmFs
dWUgZG91YmxlVmFsdWVdKTsKKyNpZiBFTkFCTEUoSU9TX0FJUlBMQVkpCisgICAgICAgIGVsc2Ug
aWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImV4dGVybmFsUGxheWJhY2tBY3RpdmUiXSkK
KyAgICAgICAgICAgIGZ1bmN0aW9uID0gV1RGOjpiaW5kKCZNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpwbGF5YmFja1RhcmdldElzV2lyZWxlc3NEaWRDaGFuZ2UsIG1fY2FsbGJh
Y2spOworI2VuZGlmCiAgICAgfQogICAgIAogICAgIGlmIChmdW5jdGlvbi5pc051bGwoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225116</attachid>
            <date>2014-02-24 20:01:30 -0800</date>
            <delta_ts>2014-02-25 12:24:31 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>api_patch_12.txt</filename>
            <type>text/plain</type>
            <size>37413</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDYxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkyIEBACisyMDE0LTAyLTI0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFNob3cgc3Rh
dHVzIGltYWdlIHdoZW4gcGxheWluZyB2aWRlbyB0byBleHRlcm5hbCBkZXZpY2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTI3NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYWNv
bnRyb2xzL21lZGlhQ29udHJvbHNBcHBsZS5qczoKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90
eXBlLmhhbmRsZUV2ZW50KTogUmVzdHJ1Y3R1cmUgdGhlIGNvZGUgc28gaXQgaXMgcG9zc2libGUg
dG8gaGFuZGxlIGV2ZW50cworICAgICAgICAgICAgdGhhdCB0YXJnZXQgdGhlIHZpZGVvIGVsZW1l
bnQgd2hpY2ggYXJlbid0IGluIHRoZSBIYW5kbGVkVmlkZW9FdmVudHMgYXJyYXkuCisKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9sc2lPUy5qczoKKyAgICAgICAg
KENvbnRyb2xsZXJJT1MucHJvdG90eXBlLmN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3Mp
OiB3ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzCisgICAgICAgICAgICBpcyBh
biBhdHRyaWJ1dGUsIG5vdCBhIGZ1bmN0aW9uLgorICAgICAgICAoQ29udHJvbGxlcklPUy5wcm90
b3R5cGUudXBkYXRlV2lyZWxlc3NQbGF5YmFja1N0YXR1cyk6IEZpeCBzdHlsZS4KKyAgICAgICAg
KENvbnRyb2xsZXJJT1MucHJvdG90eXBlLnVwZGF0ZVdpcmVsZXNzVGFyZ2V0QXZhaWxhYmxlKTog
RGl0dG8uCisgICAgICAgIChDb250cm9sbGVySU9TLnByb3RvdHlwZS51cGRhdGVQcm9ncmVzcyk6
IERpdHRvLgorICAgICAgICAoQ29udHJvbGxlcklPUy5wcm90b3R5cGUuaGFuZGxlV3JhcHBlclRv
dWNoU3RhcnQpOiBTaG93IHRoZSBjb250cm9scyBpZiB0aGUgd2lyZWxlc3Mgc3RhdHVzCisgICAg
ICAgICAgICBkaXNwbGF5IGlzIHRvdWNoZWQuCisgICAgICAgIChDb250cm9sbGVySU9TLnByb3Rv
dHlwZS5oYW5kbGVGdWxsc2NyZWVuQnV0dG9uQ2xpY2tlZCk6IEZpeCBzdHlsZQorICAgICAgICAo
Q29udHJvbGxlcklPUy5wcm90b3R5cGUuaGFuZGxlV2lyZWxlc3NQbGF5YmFja0NoYW5nZSk6IERp
dHRvLgorICAgICAgICAoQ29udHJvbGxlcklPUy5wcm90b3R5cGUuaGFuZGxlV2lyZWxlc3NUYXJn
ZXRBdmFpbGFibGVDaGFuZ2UpOgorICAgICAgICAoQ29udHJvbGxlcklPUy5wcm90b3R5cGUuaGFu
ZGxlV2lyZWxlc3NQaWNrZXJCdXR0b25DbGlja2VkKTogRGl0dG8uIFN0b3AgZXZlbiBwcm9wYWdh
dGlvbi4KKworICAgICAgICBNb3ZlICJwbGF5YmFjayB0YXJnZXQiIGxvZ2ljIGludG8gSFRNTE1l
ZGlhU2Vzc2lvbi4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQpOiBDYWxsIG1l
ZGlhIHNlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVz
b3VyY2UpOiBUZWxsIG1lZGlhIHNlc3Npb24gdG8gYXBwbHkgbWVkaWEgcGxheWVyCisgICAgICAg
ICAgICByZXN0cmljdGlvbnMgbm93IHRoYXQgaXQgaGFzIGEgdXJsLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6aW52YWxpZGF0ZUNhY2hlZFRpbWUpOiBPbmx5IGxvZyB3aGVu
IGNhY2hlZCB0aW1lIGlzIG5vdCAKKyAgICAgICAgICAgIGFscmVhZHkgaW52YWxpZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNob3dQbGF5YmFja1RhcmdldFBp
Y2tlcik6IENhbGwgbWVkaWEgc2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OndlYmtpdEN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3MpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ3VycmVudFBsYXli
YWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFi
aWxpdHlDaGFuZ2VkRXZlbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVyKTogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzdHJpY3Rpb25OYW1lKTogTG9n
IG5ldyBXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCByZXN0cmljdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYVNlc3Npb246OnNob3dpbmdQbGF5YmFja1RhcmdldFBpY2tlclBl
cm1pdHRlZCk6IFJldHVybiBmYWxzZSBpZiB0aGVyZQorICAgICAgICAgICAgaXMgbm8gcGFnZSwg
b3IgaWYgd2lyZWxlc3MgcGxheWJhY2sgaXMgZGlzYWJsZWQuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFTZXNzaW9uOjpjdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKTogTmV3LCBs
b2dpYyBmcm9tIEhUTUxNZWRpYUVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFT
ZXNzaW9uOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYVNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFTZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhU2Vzc2lvbjo6
c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYVNlc3Npb246OnNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlz
dGVuZXJzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFTZXNzaW9uOjphcHBs
eU1lZGlhUGxheWVyUmVzdHJpY3Rpb25zKTogTmV3LCBhcHBseSBtZWRpYSBwbGF5ZXIgc3BlY2lm
aWMKKyAgICAgICAgICAgIHJlc3RyaWN0aW9uLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhU2Vz
c2lvbi5oOgorCisgICAgICAgIE1vdmUgInBsYXliYWNrIHRhcmdldCIgbG9naWMgaW50byBIVE1M
TWVkaWFTZXNzaW9uLgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IENhbGwgbWVk
aWEgc2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdFdp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTogQ2FsbCBtZWRpYSBzZXNzaW9uLgorCisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKTogTmV3
IG1ldGhvZCwgZG9lcyBub3RoaW5nIGluIGJhc2UgY2xhc3MuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKTogQWRkIG5v
bi1mdW5jdGlvbmFsIHN0dWIuCisKKyAgICAgICAgSW1wbGVtZW50IHdpcmVsZXNzIHBsYXliYWNr
IGNvbnRyb2wgYW5kIHN0YXR1cyBBUEkuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmRpc3BhdGNoTm90aWZpY2F0
aW9uKTogRGlzcGF0Y2ggVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnBsYXliYWNrVGFyZ2V0SXNXaXJlbGVz
c0NoYW5nZWQpOiBQYXNzIHRocm91Z2ggdG8KKyAgICAgICAgICAgIG1lZGlhIGVsZW1lbnQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5oOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKTogSW5p
dGlhbGl6ZQorICAgICAgICAgICAgbV9hbGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJhY2suCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjYW5jZWxM
b2FkKTogUmVtb3ZlICJleHRlcm5hbFBsYXliYWNrQWN0aXZlIiBvYnNlcnZlci4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRl
b0xheWVyKTogRml4IGJyb2tlbiBsb2dnaW5nLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXIpOiBBZGQgImV4dGVybmFs
UGxheWJhY2tBY3RpdmUiIG9ic2VydmVyLAorICAgICAgICAgICAgc2V0IGluaXRpYWwgd2lyZWxl
c3MgcGxheWJhY2suCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpjcmVhdGVQaXhlbEJ1ZmZlcik6ICBGaXggYnJva2VuIGxvZ2dpbmcuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpsYW5ndWFn
ZU9mUHJpbWFyeUF1ZGlvVHJhY2spOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxl
c3MpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6IE5ldy4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFdpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzRGlkQ2hhbmdl
KTogTmV3LgorICAgICAgICAoLVtXZWJDb3JlQVZGTW92aWVPYnNlcnZlciBvYnNlcnZlVmFsdWVG
b3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOiBEZWFsIHdpdGggCisgICAgICAg
ICAgICBleHRlcm5hbFBsYXliYWNrQWN0aXZlLgorCiAyMDE0LTAyLTI0ICBKZXJlbXkgSm9uZXMg
IDxqZXJlbXlqQGFwcGxlLmNvbT4KIAogICAgICAgICBXSzIgQVZLaXQgZnVsbHNjcmVlbiBkb2Vz
bid0IGRpc3BsYXkgdmlkZW8uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29u
dHJvbHMvbWVkaWFDb250cm9sc0FwcGxlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQXBwbGUuanMJKHJldmlzaW9uIDE2
NDQ5MykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRy
b2xzQXBwbGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTIyNSwxNSArMjI1LDE1IEBAIENvbnRyb2xs
ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHZhciBoYW5kbGVyID0gdGhpc1toYW5k
bGVyTmFtZV07CiAgICAgICAgICAgICAgICAgaWYgKGhhbmRsZXIgJiYgaGFuZGxlciBpbnN0YW5j
ZW9mIEZ1bmN0aW9uKQogICAgICAgICAgICAgICAgICAgICBoYW5kbGVyLmNhbGwodGhpcywgZXZl
bnQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoISh0aGlzLmxp
c3RlbmVyc1tldmVudC50eXBlXSBpbnN0YW5jZW9mIEFycmF5KSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnNbZXZlbnQudHlwZV0u
Zm9yRWFjaChmdW5jdGlvbihlbnRyeSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnku
ZWxlbWVudCA9PT0gZXZlbnQuY3VycmVudFRhcmdldCAmJiBlbnRyeS5oYW5kbGVyIGluc3RhbmNl
b2YgRnVuY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5oYW5kbGVyLmNhbGwo
dGhpcywgZXZlbnQpOwotICAgICAgICAgICAgICAgIH0sIHRoaXMpOwogICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAoISh0aGlzLmxpc3RlbmVyc1tldmVudC50eXBlXSBpbnN0YW5jZW9m
IEFycmF5KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHRoaXMubGlz
dGVuZXJzW2V2ZW50LnR5cGVdLmZvckVhY2goZnVuY3Rpb24oZW50cnkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoZW50cnkuZWxlbWVudCA9PT0gZXZlbnQuY3VycmVudFRhcmdldCAmJiBlbnRyeS5o
YW5kbGVyIGluc3RhbmNlb2YgRnVuY3Rpb24pCisgICAgICAgICAgICAgICAgICAgIGVudHJ5Lmhh
bmRsZXIuY2FsbCh0aGlzLCBldmVudCk7CisgICAgICAgICAgICB9LCB0aGlzKTsKICAgICAgICAg
fSBjYXRjaChlKSB7CiAgICAgICAgICAgICBpZiAod2luZG93LmNvbnNvbGUpCiAgICAgICAgICAg
ICAgICAgY29uc29sZS5lcnJvcihlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFjb250cm9scy9tZWRpYUNvbnRyb2xzaU9TLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzaU9TLmpzCShyZXZpc2lvbiAx
NjQ1NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250
cm9sc2lPUy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTA0LDEzICsxMDQsMTEgQEAgQ29udHJvbGxl
cklPUy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLnNob3VsZEhhdmVTdGFydFBs
YXliYWNrQnV0dG9uKCkgfHwgQ29udHJvbGxlci5wcm90b3R5cGUuc2hvdWxkSGF2ZUFueVVJLmNh
bGwodGhpcykgfHwgdGhpcy5jdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKCk7CiAgICAg
fSwKIAotICAgIGN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3M6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBDb250cm9sbGVySU9TLmdTaW11bGF0ZVdpcmVsZXNzUGxheWJh
Y2tUYXJnZXQgfHwgKCh0eXBlb2YgdGhpcy52aWRlby53ZWJraXRDdXJyZW50UGxheWJhY2tUYXJn
ZXRJc1dpcmVsZXNzID09PSAiZnVuY3Rpb24iKSAmJiB0aGlzLnZpZGVvLndlYmtpdEN1cnJlbnRQ
bGF5YmFja1RhcmdldElzV2lyZWxlc3MoKSk7CisgICAgY3VycmVudFBsYXliYWNrVGFyZ2V0SXNX
aXJlbGVzczogZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBDb250cm9sbGVySU9TLmdTaW11
bGF0ZVdpcmVsZXNzUGxheWJhY2tUYXJnZXQgfHwgKCgnd2Via2l0Q3VycmVudFBsYXliYWNrVGFy
Z2V0SXNXaXJlbGVzcycgaW4gdGhpcy52aWRlbykgJiYgdGhpcy52aWRlby53ZWJraXRDdXJyZW50
UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKTsKICAgICB9LAogCi0gICAgdXBkYXRlV2lyZWxlc3NQ
bGF5YmFja1N0YXR1czogZnVuY3Rpb24oKQotICAgIHsKKyAgICB1cGRhdGVXaXJlbGVzc1BsYXli
YWNrU3RhdHVzOiBmdW5jdGlvbigpIHsKICAgICAgICAgaWYgKHRoaXMuY3VycmVudFBsYXliYWNr
VGFyZ2V0SXNXaXJlbGVzcygpKSB7CiAgICAgICAgICAgICB2YXIgYmFja2dyb3VuZEltYWdlU1ZH
ID0gInVybCgnIiArIENvbnRyb2xsZXJJT1MuZ1dpcmVsZXNzSW1hZ2UgKyAiJykiOwogCkBAIC0x
MzMsOCArMTMxLDcgQEAgQ29udHJvbGxlcklPUy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAg
ICB9LAogCi0gICAgdXBkYXRlV2lyZWxlc3NUYXJnZXRBdmFpbGFibGU6IGZ1bmN0aW9uKCkKLSAg
ICB7CisgICAgdXBkYXRlV2lyZWxlc3NUYXJnZXRBdmFpbGFibGU6IGZ1bmN0aW9uKCkgewogICAg
ICAgICBpZiAoQ29udHJvbGxlcklPUy5nU2ltdWxhdGVXaXJlbGVzc1BsYXliYWNrVGFyZ2V0IHx8
IHRoaXMuaGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldHMpCiAgICAgICAgICAgICB0aGlzLmNvbnRy
b2xzLndpcmVsZXNzVGFyZ2V0UGlja2VyLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05hbWVz
LmhpZGRlbik7CiAgICAgICAgIGVsc2UKQEAgLTIyNyw4ICsyMjQsNyBAQCBDb250cm9sbGVySU9T
LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuICdyZ2JhKDAsIDAsIDAsIDAuNSknOwogICAg
IH0sCiAKLSAgICB1cGRhdGVQcm9ncmVzczogZnVuY3Rpb24oKQotICAgIHsKKyAgICB1cGRhdGVQ
cm9ncmVzczogZnVuY3Rpb24oKSB7CiAgICAgICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0
ZVByb2dyZXNzLmNhbGwodGhpcyk7CiAKICAgICAgICAgdmFyIHdpZHRoID0gdGhpcy5jb250cm9s
cy50aW1lbGluZS5vZmZzZXRXaWR0aDsKQEAgLTI4MCw3ICsyNzYsNyBAQCBDb250cm9sbGVySU9T
LnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgaGFuZGxlV3JhcHBlclRvdWNoU3RhcnQ6IGZ1
bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGlmIChldmVudC50YXJnZXQgIT0gdGhpcy5iYXNlKQor
ICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9IHRoaXMuYmFzZSAmJiBldmVudC50YXJnZXQgIT0g
dGhpcy5jb250cm9scy53aXJlbGVzc1BsYXliYWNrU3RhdHVzKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzQXJlSGlkZGVuKCkpIHsKQEAgLTMwOSw5ICsz
MDUsNyBAQCBDb250cm9sbGVySU9TLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMu
dmlkZW8ud2Via2l0RGlzcGxheWluZ0Z1bGxzY3JlZW47CiAgICAgfSwKIAotICAgIGhhbmRsZUZ1
bGxzY3JlZW5CdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIGNv
bnNvbGUudHJhY2UoKTsKKyAgICBoYW5kbGVGdWxsc2NyZWVuQnV0dG9uQ2xpY2tlZDogZnVuY3Rp
b24oZXZlbnQpIHsKICAgICAgICAgaWYgKHRoaXMuaXNGdWxsU2NyZWVuKCkpCiAgICAgICAgICAg
ICB0aGlzLnZpZGVvLndlYmtpdEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgICAgIGVsc2UKQEAgLTM1
OCwyMCArMzUyLDE4IEBAIENvbnRyb2xsZXJJT1MucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
LnVwZGF0ZUNvbnRyb2xzKCk7CiAgICAgfSwKIAotICAgIGhhbmRsZVdpcmVsZXNzUGxheWJhY2tD
aGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdXBkYXRlV2lyZWxlc3NQbGF5
YmFja1N0YXR1cygpOworICAgIGhhbmRsZVdpcmVsZXNzUGxheWJhY2tDaGFuZ2U6IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIHRoaXMudXBkYXRlV2lyZWxlc3NQbGF5YmFja1N0YXR1cygpOwog
ICAgIH0sCiAKLSAgICBoYW5kbGVXaXJlbGVzc1RhcmdldEF2YWlsYWJsZUNoYW5nZTogZnVuY3Rp
b24oZXZlbnQpCi0gICAgeworICAgIGhhbmRsZVdpcmVsZXNzVGFyZ2V0QXZhaWxhYmxlQ2hhbmdl
OiBmdW5jdGlvbihldmVudCkgewogICAgICAgICB0aGlzLmhhc1dpcmVsZXNzUGxheWJhY2tUYXJn
ZXRzID0gZXZlbnQuYXZhaWxhYmlsaXR5ID09ICJhdmFpbGFibGUiOwotICAgICAgICB1cGRhdGVX
aXJlbGVzc1RhcmdldEF2YWlsYWJsZSgpOworICAgICAgICB0aGlzLnVwZGF0ZVdpcmVsZXNzVGFy
Z2V0QXZhaWxhYmxlKCk7CiAgICAgfSwKIAotICAgIGhhbmRsZVdpcmVsZXNzUGlja2VyQnV0dG9u
Q2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB2aWRlby53ZWJraXRTaG93
UGxheWJhY2tUYXJnZXRQaWNrZXIoKTsKKyAgICBoYW5kbGVXaXJlbGVzc1BpY2tlckJ1dHRvbkNs
aWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHRoaXMudmlkZW8ud2Via2l0U2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKCk7CisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwog
ICAgIH0sCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAJKHJldmlzaW9uIDE2NDQ5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNyw4ICs0MTcsOCBAQCBIVE1MTWVkaWFFbGVt
ZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShJT1NfQUlSUExB
WSkKLSAgICBpZiAobV9wbGF5ZXIgJiYgIWhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53
ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWRFdmVudCkpCi0gICAgICAgIG1f
cGxheWVyLT5zZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyhmYWxzZSk7
CisgICAgaWYgKCFoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0
YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQpKQorICAgICAgICBtX21lZGlhU2Vzc2lvbi0+
c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMoKnRoaXMsIGZhbHNlKTsK
ICNlbmRpZgogCiAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKSB7CkBAIC0xMjQ2LDYgKzEyNDYs
OCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25zCiAgICAgaWYgKCFt
X3BsYXllci0+bG9hZCh1cmwsIGNvbnRlbnRUeXBlLCBrZXlTeXN0ZW0pKQogICAgICAgICBtZWRp
YUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6OkZvcm1hdEVycm9yKTsKIAorICAgIG1fbWVkaWFT
ZXNzaW9uLT5hcHBseU1lZGlhUGxheWVyUmVzdHJpY3Rpb25zKCp0aGlzKTsKKwogICAgIC8vIElm
IHRoZXJlIGlzIG5vIHBvc3RlciB0byBkaXNwbGF5LCBhbGxvdyB0aGUgbWVkaWEgZW5naW5lIHRv
IHJlbmRlciB2aWRlbyBmcmFtZXMgYXMgc29vbiBhcwogICAgIC8vIHRoZXkgYXJlIGF2YWlsYWJs
ZS4KICAgICB1cGRhdGVEaXNwbGF5U3RhdGUoKTsKQEAgLTI0NTIsNyArMjQ1NCwxMCBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnJlZnJlc2hDYWNoZWRUaW1lCiAKIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6aW52YWxpZGF0ZUNhY2hlZFRpbWUoKSBjb25zdAogewotICAgIExPRyhNZWRpYSwgIkhU
TUxNZWRpYUVsZW1lbnQ6OmludmFsaWRhdGVDYWNoZWRUaW1lIik7CisjaWYgIUxPR19ESVNBQkxF
RAorICAgIGlmIChtX2NhY2hlZFRpbWUgIT0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkpCisg
ICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmludmFsaWRhdGVDYWNoZWRUaW1l
Iik7CisjZW5kaWYKIAogICAgIC8vIERvbid0IHRyeSB0byBjYWNoZSBtb3ZpZSB0aW1lIHdoZW4g
cGxheWJhY2sgZmlyc3Qgc3RhcnRzIGFzIHRoZSB0aW1lIHJlcG9ydGVkIGJ5IHRoZSBlbmdpbmUK
ICAgICAvLyBzb21ldGltZXMgZmx1Y3R1YXRlcyBmb3IgYSBzaG9ydCBhbW91bnQgb2YgdGltZSwg
c28gdGhlIGNhY2hlZCB0aW1lIHdpbGwgYmUgb2ZmIGlmIHdlIHRha2UgaXQKQEAgLTQ3NzgsMjgg
KzQ3ODMsMTcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVXaWRnZXQoUGx1ZwogI2lm
IEVOQUJMRShJT1NfQUlSUExBWSkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2Via2l0U2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKCkKIHsKLSAgICBpZiAoIWRvY3VtZW50KCkucGFnZSgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fcGxheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5zaG93aW5nUGxheWJhY2tUYXJnZXRQaWNrZXJQZXJtaXR0
ZWQoKnRoaXMpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5n
cygpLT5tZWRpYVBsYXliYWNrQWxsb3dzQWlyUGxheSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtX3BsYXllci0+c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKCk7CisgICAgbV9tZWRpYVNlc3Np
b24tPnNob3dQbGF5YmFja1RhcmdldFBpY2tlcigqdGhpcyk7CiB9CiAKIGJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6d2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcygpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fcGxheWVyICYmIG1fcGxheWVyLT5pc0N1cnJlbnRQbGF5YmFja1Rhcmdl
dFdpcmVsZXNzKCk7CisgICAgcmV0dXJuIG1fbWVkaWFTZXNzaW9uLT5jdXJyZW50UGxheWJhY2tU
YXJnZXRJc1dpcmVsZXNzKCp0aGlzKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllckN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKE1lZGlhUGxheWVy
KikKIHsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckN1cnJl
bnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkIC0gd2Via2l0Q3VycmVudFBsYXliYWNr
VGFyZ2V0SXNXaXJlbGVzcyA9ICVzIiwgYm9vbFN0cmluZyh3ZWJraXRDdXJyZW50UGxheWJhY2tU
YXJnZXRJc1dpcmVsZXNzKCkpKTsKICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJr
aXRjdXJyZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZEV2ZW50KTsKIH0KIApAQCAt
NDgxNiw5ICs0ODEwLDEyIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5l
cigKICAgICBib29sIGlzRmlyc3RBdmFpbGFiaWxpdHlDaGFuZ2VkTGlzdGVuZXIgPSAhaGFzRXZl
bnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5
Y2hhbmdlZEV2ZW50KTsKICAgICBpZiAoIU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBl
LCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAo
bV9wbGF5ZXIgJiYgaXNGaXJzdEF2YWlsYWJpbGl0eUNoYW5nZWRMaXN0ZW5lcikKLSAgICAgICAg
bV9wbGF5ZXItPnNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzKHRydWUp
OwogCisgICAgaWYgKGlzRmlyc3RBdmFpbGFiaWxpdHlDaGFuZ2VkTGlzdGVuZXIpCisgICAgICAg
IG1fbWVkaWFTZXNzaW9uLT5zZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVy
cygqdGhpcywgdHJ1ZSk7CisKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjphZGRF
dmVudExpc3RlbmVyKCd3ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWQnKSIp
OworICAgIAogICAgIGVucXVldWVQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRFdmVu
dCgpOyAvLyBFbnN1cmUgdGhlIGV2ZW50IGxpc3RlbmVyIGdldHMgYXQgbGVhc3Qgb25lIGV2ZW50
LgogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNDgzMiwxNyArNDgyOSwxNiBAQCBib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGJvb2wgZGlkUmVtb3ZlTGFzdEF2YWlsYWJpbGl0eUNoYW5nZWRMaXN0ZW5lciA9ICFoYXNF
dmVudExpc3RlbmVycyhldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxp
dHljaGFuZ2VkRXZlbnQpOwotICAgIGlmIChtX3BsYXllciAmJiBkaWRSZW1vdmVMYXN0QXZhaWxh
YmlsaXR5Q2hhbmdlZExpc3RlbmVyKQotICAgICAgICBtX3BsYXllci0+c2V0SGFzUGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMoZmFsc2UpOworICAgIGlmIChkaWRSZW1vdmVMYXN0
QXZhaWxhYmlsaXR5Q2hhbmdlZExpc3RlbmVyKQorICAgICAgICBtX21lZGlhU2Vzc2lvbi0+c2V0
SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMoKnRoaXMsIGZhbHNlKTsKKwog
ICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVucXVldWVQbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRFdmVudCgpCiB7Ci0gICAgaWYgKCFtX3BsYXll
cikKLSAgICAgICAgcmV0dXJuOwotICAgIGJvb2wgaXNBaXJQbGF5QXZhaWxhYmxlID0gbV9wbGF5
ZXItPmhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKCk7Ci0gICAgUmVmUHRyPEV2ZW50PiBldmVu
dCA9IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQsIGlzQWly
UGxheUF2YWlsYWJsZSk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1
ZVBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50Iik7CisgICAgUmVmUHRyPEV2
ZW50PiBldmVudCA9IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZl
bnQsIG1fbWVkaWFTZXNzaW9uLT5oYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cygqdGhpcykpOwog
ICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CiAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1
ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CiB9CkBAIC01MzQ3LDcgKzUzNDMsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVyCiAKICNpZiBFTkFCTEUoSU9TX0FJUlBM
QVkpCiAgICAgaWYgKGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFj
a3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWRFdmVudCkpIHsKLSAgICAgICAgbV9wbGF5ZXItPnNl
dEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzKHRydWUpOworICAgICAgICBt
X21lZGlhU2Vzc2lvbi0+c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMo
KnRoaXMsIHRydWUpOwogICAgICAgICBlbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlD
aGFuZ2VkRXZlbnQoKTsgLy8gRW5zdXJlIHRoZSBldmVudCBsaXN0ZW5lciBnZXRzIGF0IGxlYXN0
IG9uZSBldmVudC4KICAgICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFTZXNzaW9uLmNwcAkocmV2aXNpb24gMTY0NDkzKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsMTAgQEAK
ICNpbmNsdWRlICJIVE1MTWVkaWFTZXNzaW9uLmgiCiAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVt
ZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAKQEAg
LTU1LDYgKzU3LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHJlc3RyaWN0aW9uTmFtZShIVE1MTQog
ICAgIENBU0UoUmVxdWlyZVBhZ2VDb25zZW50VG9SZXN1bWVNZWRpYSk7CiAjaWYgRU5BQkxFKElP
U19BSVJQTEFZKQogICAgIENBU0UoUmVxdWlyZVVzZXJHZXN0dXJlVG9TaG93UGxheWJhY2tUYXJn
ZXRQaWNrZXIpOworICAgIENBU0UoV2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOwogI2Vu
ZGlmCiAgICAgfQogCkBAIC0xNTUsMTQgKzE1OCwxNDMgQEAgYm9vbCBIVE1MTWVkaWFTZXNzaW9u
OjpwYWdlQWxsb3dzUGxheWJhYwogfQogCiAjaWYgRU5BQkxFKElPU19BSVJQTEFZKQotYm9vbCBI
VE1MTWVkaWFTZXNzaW9uOjpzaG93aW5nUGxheWJhY2tUYXJnZXRQaWNrZXJQZXJtaXR0ZWQoY29u
c3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0Citib29sIEhUTUxNZWRpYVNlc3Npb246OnNob3dp
bmdQbGF5YmFja1RhcmdldFBpY2tlclBlcm1pdHRlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBl
bGVtZW50KSBjb25zdAogewogICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2Vz
dHVyZVRvU2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyICYmICFTY3JpcHRDb250cm9sbGVyOjpwcm9j
ZXNzaW5nVXNlckdlc3R1cmUoKSkgewotICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFTZXNz
aW9uOjpzaG93aW5nUGxheWJhY2tUYXJnZXRQaWNrZXJQZXJtaXR0ZWQgLSByZXR1cm5pbmcgRkFM
U0UiKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6c2hvd2luZ1BsYXli
YWNrVGFyZ2V0UGlja2VyUGVybWl0dGVkIC0gcmV0dXJuaW5nIEZBTFNFIGJlY2F1c2Ugb2YgcGVy
bWlzc2lvbnMiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiB0
cnVlOworICAgIGlmICghZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKSkgeworICAgICAgICBMT0co
TWVkaWEsICJIVE1MTWVkaWFTZXNzaW9uOjpzaG93aW5nUGxheWJhY2tUYXJnZXRQaWNrZXJQZXJt
aXR0ZWQgLSByZXR1cm5pbmcgRkFMU0UgYmVjYXVzZSBwYWdlIGlzIE5VTEwiKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiAhd2lyZWxlc3NWaWRlb1BsYXliYWNr
RGlzYWJsZWQoZWxlbWVudCk7Cit9CisKK2Jvb2wgSFRNTE1lZGlhU2Vzc2lvbjo6Y3VycmVudFBs
YXliYWNrVGFyZ2V0SXNXaXJlbGVzcyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBj
b25zdAoreworICAgIE1lZGlhUGxheWVyKiBwbGF5ZXIgPSBlbGVtZW50LnBsYXllcigpOworICAg
IGlmICghcGxheWVyKSB7CisgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OmN1
cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3MgLSByZXR1cm5pbmcgRkFMU0UgYmVjYXVzZSBw
bGF5ZXIgaXMgTlVMTCIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgYm9v
bCBpc1dpcmVsZXNzID0gcGxheWVyLT5pc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCk7
CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6Y3VycmVudFBsYXliYWNrVGFyZ2V0
SXNXaXJlbGVzcyAtIHJldHVybmluZyAlcyIsIGlzV2lyZWxlc3MgPyAiVFJVRSIgOiAiRkFMU0Ui
KTsKKworICAgIHJldHVybiBpc1dpcmVsZXNzOworfQorCit2b2lkIEhUTUxNZWRpYVNlc3Npb246
OnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50
KQoreworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OnNob3dQbGF5YmFja1Rhcmdl
dFBpY2tlciIpOworCisgICAgaWYgKCFzaG93aW5nUGxheWJhY2tUYXJnZXRQaWNrZXJQZXJtaXR0
ZWQoZWxlbWVudCkpCisgICAgICAgIHJldHVybjsKKworI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlf
Rk9SX1ZJREVPKQorICAgIGlmIChlbGVtZW50LnNob3VsZFVzZVZpZGVvUGx1Z2luUHJveHkoKSkg
eworICAgICAgICBNZWRpYVBsYXllciogcGxheWVyID0gZWxlbWVudC5wbGF5ZXIoKTsKKyAgICAg
ICAgaWYgKCFwbGF5ZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcGxheWVyLT5z
aG93UGxheWJhY2tUYXJnZXRQaWNrZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRp
ZgorCisgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNob3dQbGF5YmFj
a1RhcmdldFBpY2tlcigpOworfQorCitib29sIEhUTUxNZWRpYVNlc3Npb246Omhhc1dpcmVsZXNz
UGxheWJhY2tUYXJnZXRzKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Cit7
CisjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCisgICAgaWYgKGVsZW1lbnQuc2hv
dWxkVXNlVmlkZW9QbHVnaW5Qcm94eSgpKSB7CisgICAgICAgIE1lZGlhUGxheWVyKiBwbGF5ZXIg
PSBlbGVtZW50LnBsYXllcigpOworICAgICAgICBpZiAoIXBsYXllcikKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gcGxheWVyLT5oYXNXaXJlbGVzc1BsYXliYWNr
VGFyZ2V0cygpOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVsZW1lbnQpOworI2Vu
ZGlmCisKKyAgICAvLyBGSVhNRTogdGhpcyBvbmx5IGxldHMgdXMga25vdyBpZiB0aGUgY3VycmVu
dCBlbGVtZW50IGlzIHBsYXlpbmcgdG8gYW4gZXh0ZXJuYWwgdGFyZ2V0LCB3ZSB3YW50IHRvCisg
ICAgLy8ga25vdyBpZiB0aGVyZSBhcmUgKmFueSogZXh0ZXJuYWwgdGFyZ2V0cy4KKyAgICBib29s
IGhhc1RhcmdldHMgPSBjdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKGVsZW1lbnQpOwor
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJn
ZXRzIC0gcmV0dXJuaW5nICVzIiwgaGFzVGFyZ2V0cyA/ICJUUlVFIiA6ICJGQUxTRSIpOworCisg
ICAgcmV0dXJuIGhhc1RhcmdldHM7Cit9CisKK2Jvb2wgSFRNTE1lZGlhU2Vzc2lvbjo6d2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkg
Y29uc3QKK3sKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBlbGVtZW50LmRvY3VtZW50KCkuc2V0
dGluZ3MoKTsKKyAgICBpZiAoIXNldHRpbmdzIHx8ICFzZXR0aW5ncy0+bWVkaWFQbGF5YmFja0Fs
bG93c0FpclBsYXkoKSkgeworICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFTZXNzaW9uOjp3
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCAtIHJldHVybmluZyBUUlVFIGJlY2F1c2Ugb2Yg
c2V0dGluZ3MiKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGVsZW1l
bnQuZmFzdEhhc0F0dHJpYnV0ZShIVE1MTmFtZXM6OndlYmtpdHdpcmVsZXNzdmlkZW9wbGF5YmFj
a2Rpc2FibGVkQXR0cikpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQgLSByZXR1cm5pbmcgVFJVRSBiZWNhdXNlIG9m
IGF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgU3RyaW5nIGxlZ2FjeUFpcnBsYXlBdHRyaWJ1dGVWYWx1ZSA9IGVsZW1lbnQu
ZmFzdEdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OndlYmtpdGFpcnBsYXlBdHRyKTsKKyAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UobGVnYWN5QWlycGxheUF0dHJpYnV0ZVZhbHVlLCAiZGVueSIpKSB7
CisgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5
YmFja0Rpc2FibGVkIC0gcmV0dXJuaW5nIFRSVUUgYmVjYXVzZSBvZiBsZWdhY3kgYXR0cmlidXRl
Iik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgorCisgICAgTWVkaWFQbGF5
ZXIqIHBsYXllciA9IGVsZW1lbnQucGxheWVyKCk7CisgICAgaWYgKCFwbGF5ZXIpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgZGlzYWJsZWQgPSBwbGF5ZXItPndpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkKCk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhU2Vzc2lvbjo6
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQgLSByZXR1cm5pbmcgJXMgYmVjYXVzZSBtZWRp
YSBlbmdpbmUgc2F5cyBzbyIsIGRpc2FibGVkID8gIlRSVUUiIDogIkZBTFNFIik7CisgICAgCisg
ICAgcmV0dXJuIGRpc2FibGVkOworfQorCit2b2lkIEhUTUxNZWRpYVNlc3Npb246OnNldFdpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQs
IGJvb2wgZGlzYWJsZWQpCit7CisgICAgaWYgKGRpc2FibGVkKQorICAgICAgICBhZGRCZWhhdmlv
clJlc3RyaWN0aW9uKFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTsKKyAgICBlbHNlCisg
ICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQpOworCisgICAgTWVkaWFQbGF5ZXIqIHBsYXllciA9IGVsZW1lbnQucGxheWVyKCk7Cisg
ICAgaWYgKCFwbGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhNZWRpYSwgIkhUTUxN
ZWRpYVNlc3Npb246OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIC0gZGlzYWJsZWQg
JXMiLCBkaXNhYmxlZCA/ICJUUlVFIiA6ICJGQUxTRSIpOworICAgIHBsYXllci0+c2V0V2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoZGlzYWJsZWQpOworfQorCit2b2lkIEhUTUxNZWRpYVNl
c3Npb246OnNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzKGNvbnN0IEhU
TUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgaGFzTGlzdGVuZXJzKQoreworICAgIExPRyhN
ZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OnNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5
TGlzdGVuZXJzIC0gaGFzTGlzdGVuZXJzICVzIiwgaGFzTGlzdGVuZXJzID8gIlRSVUUiIDogIkZB
TFNFIik7CisKKyNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKKyAgICBpZiAoZWxl
bWVudC5zaG91bGRVc2VWaWRlb1BsdWdpblByb3h5KCkpIHsKKyAgICAgICAgTWVkaWFQbGF5ZXIq
IHBsYXllciA9IGVsZW1lbnQucGxheWVyKCk7CisgICAgICAgIGlmICghcGxheWVyKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgcGxheWVyLT5zZXRIYXNQbGF5YmFja1Rh
cmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyhoYXNMaXN0ZW5lcnMpOworICAgICAgICByZXR1cm47
CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaGFzTGlzdGVuZXJzKTsKKyAgICBVTlVT
RURfUEFSQU0oZWxlbWVudCk7CisjZW5kaWYKKworICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAj
ZW5kaWYKIApAQCAtMjAyLDYgKzMzNCwxOCBAQCBib29sIEhUTUxNZWRpYVNlc3Npb246OnJlcXVp
cmVzRnVsbHNjcmVlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgSFRNTE1lZGlhU2Vzc2lv
bjo6YXBwbHlNZWRpYVBsYXllclJlc3RyaWN0aW9ucyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBl
bGVtZW50KQoreworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYVNlc3Npb246OmFwcGx5TWVkaWFQ
bGF5ZXJSZXN0cmljdGlvbnMiKTsKKworI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKKyAgICBzZXRX
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChlbGVtZW50LCBtX3Jlc3RyaWN0aW9ucyAmIFdp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVs
ZW1lbnQpOworI2VuZGlmCisgICAgCit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5oCShyZXZpc2lvbiAxNjQ0
OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYVNlc3Npb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNDksMTAgKzQ5LDIxIEBAIHB1YmxpYzoKICAgICBib29sIHBhZ2VBbGxvd3NQbGF5
YmFja0FmdGVyUmVzdW1pbmcoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwogI2lmIEVO
QUJMRShJT1NfQUlSUExBWSkKICAgICBib29sIHNob3dpbmdQbGF5YmFja1RhcmdldFBpY2tlclBl
cm1pdHRlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CisKKyAgICBib29sIGN1cnJl
bnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3MoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0
OworICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IEhUTUxNZWRpYUVsZW1l
bnQmKTsKKyAgICBib29sIGhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKGNvbnN0IEhUTUxNZWRp
YUVsZW1lbnQmKSBjb25zdDsKKworICAgIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OworICAgIHZvaWQgc2V0V2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYsIGJvb2wpOworCisg
ICAgdm9pZCBzZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyhjb25zdCBI
VE1MTWVkaWFFbGVtZW50JiwgYm9vbCk7CiAjZW5kaWYKICAgICBib29sIHJlcXVpcmVzRnVsbHNj
cmVlbkZvclZpZGVvUGxheWJhY2soY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwogICAg
IE1lZGlhUGxheWVyOjpQcmVsb2FkIGVmZmVjdGl2ZVByZWxvYWRGb3JFbGVtZW50KGNvbnN0IEhU
TUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKIAorICAgIHZvaWQgYXBwbHlNZWRpYVBsYXllclJlc3Ry
aWN0aW9ucyhjb25zdCBIVE1MTWVkaWFFbGVtZW50Jik7CisKICAgICAvLyBSZXN0cmljdGlvbnMg
dG8gbW9kaWZ5IGRlZmF1bHQgYmVoYXZpb3JzLgogICAgIGVudW0gQmVoYXZpb3JSZXN0cmljdGlv
bkZsYWdzIHsKICAgICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLApAQCAtNjMsNiArNzQsNyBAQCBw
dWJsaWM6CiAgICAgICAgIFJlcXVpcmVQYWdlQ29uc2VudFRvUmVzdW1lTWVkaWEgPSAxIDw8IDQs
CiAjaWYgRU5BQkxFKElPU19BSVJQTEFZKQogICAgICAgICBSZXF1aXJlVXNlckdlc3R1cmVUb1No
b3dQbGF5YmFja1RhcmdldFBpY2tlciA9IDEgPDwgNSwKKyAgICAgICAgV2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQgPSAgMSA8PCA2LAogI2VuZGlmCiAgICAgfTsKICAgICB0eXBlZGVmIHVu
c2lnbmVkIEJlaGF2aW9yUmVzdHJpY3Rpb25zOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjQ0OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsMjEgKzEzMywx
OCBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvCiAgICAgICAgIH0K
ICAgICB9CiAjaWYgRU5BQkxFKElPU19BSVJQTEFZKQotICAgIGVsc2UgaWYgKG5hbWUgPT0gd2Vi
a2l0d2lyZWxlc3N2aWRlb3BsYXliYWNrZGlzYWJsZWRBdHRyKSB7Ci0gICAgICAgIGlmIChwbGF5
ZXIoKSkKLSAgICAgICAgICAgIHBsYXllcigpLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZCh3ZWJraXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7
Ci0KLSAgICAgICAgaWYgKG5hbWUgPT0gd2Via2l0YWlycGxheUF0dHIpIHsKLSAgICAgICAgICAg
IGlmIChwbGF5ZXIoKSkKLSAgICAgICAgICAgICAgICBwbGF5ZXIoKS0+c2V0V2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWQod2Via2l0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0jZWxzZQotICAgIGVsc2UKKyAgICBlbHNlIGlmIChuYW1lID09
IHdlYmtpdHdpcmVsZXNzdmlkZW9wbGF5YmFja2Rpc2FibGVkQXR0cikKKyAgICAgICAgbWVkaWFT
ZXNzaW9uKCkuc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKnRoaXMsIHdlYmtpdFdp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkpOworI2VuZGlmCisgICAgZWxzZSB7CiAgICAg
ICAgIEhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsgICAgCisK
KyNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShJT1NfQUlSUExBWSkKKyAgICAgICAgaWYgKG5h
bWUgPT0gd2Via2l0YWlycGxheUF0dHIpCisgICAgICAgICAgICBtZWRpYVNlc3Npb24oKS5zZXRX
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgqdGhpcywgd2Via2l0V2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQoKSk7CiAjZW5kaWYKKyAgICB9CisKIH0KIAogYm9vbCBIVE1MVmlkZW9F
bGVtZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdApAQCAtMzE2LDE0ICszMTMsNyBAQCBi
b29sIEhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdERpc3BsYXlpbmdGCiAjaWYgRU5BQkxFKElPU19B
SVJQTEFZKQogYm9vbCBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRXaXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZCgpIGNvbnN0CiB7Ci0gICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQo
KS5zZXR0aW5ncygpOwotICAgIGlmICghc2V0dGluZ3MgfHwgIXNldHRpbmdzLT5tZWRpYVBsYXli
YWNrQWxsb3dzQWlyUGxheSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIFN0cmluZyBs
ZWdhY3lBaXJwbGF5QXR0cmlidXRlVmFsdWUgPSBmYXN0R2V0QXR0cmlidXRlKHdlYmtpdGFpcnBs
YXlBdHRyKTsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobGVnYWN5QWlycGxheUF0dHJpYnV0
ZVZhbHVlLCAiZGVueSIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFzdEhh
c0F0dHJpYnV0ZSh3ZWJraXR3aXJlbGVzc3ZpZGVvcGxheWJhY2tkaXNhYmxlZEF0dHIpOworICAg
IHJldHVybiBtZWRpYVNlc3Npb24oKS53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgqdGhp
cyk7CiB9CiAKIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0V2Via2l0V2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmgJKHJldmlzaW9uIDE2NDQ5
MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBz
ZXNzaW9uUmVzdHJpY3RzSW5saW5lVmlkZW9QbGF5YmFjayhjb25zdCBNZWRpYVNlc3Npb24mKSBj
b25zdDsKIAorI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKCkgeyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIGZyaWVu
ZCBjbGFzcyBNZWRpYVNlc3Npb247CiAgICAgZXhwbGljaXQgTWVkaWFTZXNzaW9uTWFuYWdlcigp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1h
bmFnZXJJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCShyZXZpc2lvbiAxNjQ0OTMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxMCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lk
IHJlc2V0UmVzdHJpY3Rpb25zKCkgb3ZlcnJpZGU7CiAKKyNpZiBFTkFCTEUoSU9TX0FJUlBMQVkp
CisgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcigpIG92ZXJyaWRlOwor
I2VuZGlmCisKICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCk7CiAgICAgUmV0YWluUHRyPFdl
Yk1lZGlhU2Vzc2lvbkhlbHBlcj4gbV9vYmpjT2JzZXJ2ZXI7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1h
bmFnZXJJT1MubW0JKHJldmlzaW9uIDE2NDQ5MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw2ICszMCw3IEBACiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhU2Vzc2lv
bi5oIgorI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgi
CiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJDb3JlVGhy
ZWFkUnVuLmgiCkBAIC0xMDYsNiArMTA3LDEzIEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlP
Uzo6cmVzZXRSZXN0cmkKICAgICBhZGRSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OlZpZGVvLCBB
dXRvUHJlbG9hZGluZ05vdFBlcm1pdHRlZCk7CiB9CiAKKyNpZiBFTkFCTEUoSU9TX0FJUlBMQVkp
Cit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNob3dQbGF5YmFja1RhcmdldFBpY2tlcigp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJNZWRpYVNlc3Npb25IZWxwZXIKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
Y3BwCShyZXZpc2lvbiAxNjQ0OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODkyLDYgKzg5MiwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6ZGlzCiAgICAgY2FzZSBOb3RpZmljYXRpb246OkZ1bmN0aW9uVHlwZToKICAgICAg
ICAgbm90aWZpY2F0aW9uLmZ1bmN0aW9uKCkoKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBO
b3RpZmljYXRpb246OlRhcmdldElzV2lyZWxlc3NDaGFuZ2VkOgorI2lmIEVOQUJMRShJT1NfQUlS
UExBWSkKKyAgICAgICAgcGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZCgpOworI2VuZGlm
CisgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBOb3RpZmljYXRpb246Ok5vbmU6CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtOTcxLDYgKzk3NiwxMyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6cHJvCiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uOjpwcm9jZXNzTmV3QW5kUmVtb3ZlZFRleHRUcmFja3MoJXApIC0g
Zm91bmQgJWx1IHRleHQgdHJhY2tzIiwgdGhpcywgbV90ZXh0VHJhY2tzLnNpemUoKSk7CiB9CiAK
KyNpZiBFTkFCTEUoSU9TX0FJUlBMQVkpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbjo6cGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZCgpCit7CisgICAgaWYgKG1fcGxh
eWVyKQorICAgICAgICBtX3BsYXllci0+Y3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0No
YW5nZWQoKTsKK30KKyNlbmRpZgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uLmgJKHJldmlzaW9uIDE2NDQ5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTksNyArNTksMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb25m
aWd1cmVJbmJhbmRUcmFja3MoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRyYWNrKElu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkYqKSB7IH0KICAgICB2aXJ0dWFsIEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkYqIGN1cnJlbnRUcmFjaygpIGNvbnN0ID0gMDsKLQorI2lmIEVOQUJMRShJT1Nf
QUlSUExBWSkKKyAgICB2b2lkIHBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoKTsKKyNl
bmRpZgorICAgIAogICAgIGNsYXNzIE5vdGlmaWNhdGlvbiB7CiAgICAgcHVibGljOgogI2RlZmlu
ZSBGT1JfRUFDSF9NRURJQVBMQVlFUlBSSVZBVEVBVkZPVU5EQVRJT05fTk9USUZJQ0FUSU9OX1RZ
UEUobWFjcm8pIFwKQEAgLTgxLDYgKzg0LDcgQEAgcHVibGljOgogICAgIG1hY3JvKER1cmF0aW9u
Q2hhbmdlZCkgXAogICAgIG1hY3JvKENvbnRlbnRzTmVlZHNEaXNwbGF5KSBcCiAgICAgbWFjcm8o
SW5iYW5kVHJhY2tzTmVlZENvbmZpZ3VyYXRpb24pIFwKKyAgICBtYWNybyhUYXJnZXRJc1dpcmVs
ZXNzQ2hhbmdlZCkgXAogCiAgICAgICAgIGVudW0gVHlwZSB7CiAjZGVmaW5lIERFRklORV9UWVBF
X0VOVU0odHlwZSkgdHlwZSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgJKHJldmlzaW9uIDE2
NDQ5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTEzLDYgKzExMywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBvdXRwdXRNZWRpYURhdGFXaWxs
Q2hhbmdlKEFWUGxheWVySXRlbVZpZGVvT3V0cHV0Kik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJ
T1NfQUlSUExBWSkKKyAgICB2b2lkIHBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0RpZENoYW5nZSgp
OworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQyhNZWRpYVBsYXllciopOwogCkBAIC0yMjMsNiArMjI3LDEyIEBAIHByaXZhdGU6CiAgICAg
dm9pZCB1cGRhdGVWaWRlb1RyYWNrcygpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU9TX0FJUlBM
QVkpCisgICAgdmlydHVhbCBib29sIGlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MoKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWQoYm9vbCkgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIFdlYWtQdHJG
YWN0b3J5PE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+IG1fd2Vha1B0ckZhY3Rv
cnk7CiAKICAgICBSZXRhaW5QdHI8QVZVUkxBc3NldD4gbV9hdkFzc2V0OwpAQCAtMjc4LDYgKzI4
OCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhY2hlZEJ1ZmZlckVtcHR5OwogICAgIGJvb2wg
bV9jYWNoZWRCdWZmZXJGdWxsOwogICAgIGJvb2wgbV9jYWNoZWRIYXNFbmFibGVkQXVkaW87Cisj
aWYgRU5BQkxFKElPU19BSVJQTEFZKQorICAgIG11dGFibGUgYm9vbCBtX2FsbG93c1dpcmVsZXNz
VmlkZW9QbGF5YmFjazsKKyNlbmRpZgogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCShyZXZpc2lvbiAxNjQ0OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsNiArMjk1LDkgQEAgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6TWVkaQogICAgICwgbV9jYWNoZWRCdWZmZXJFbXB0eShmYWxzZSkKICAg
ICAsIG1fY2FjaGVkQnVmZmVyRnVsbChmYWxzZSkKICAgICAsIG1fY2FjaGVkSGFzRW5hYmxlZEF1
ZGlvKGZhbHNlKQorI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKKyAgICAsIG1fYWxsb3dzV2lyZWxl
c3NWaWRlb1BsYXliYWNrKHRydWUpCisjZW5kaWYKIHsKICNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBX1YyKQogICAgIHBsYXllclRvUHJpdmF0ZU1hcCgpLnNldChwbGF5ZXIsIHRoaXMpOwpAQCAt
MzUzLDYgKzM1Niw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoK
ICAgICAgICAgICAgIFttX2F2UGxheWVyLmdldCgpIHJlbW92ZVRpbWVPYnNlcnZlcjptX3RpbWVP
YnNlcnZlci5nZXQoKV07CiAgICAgICAgIG1fdGltZU9ic2VydmVyID0gbmlsOwogICAgICAgICBb
bV9hdlBsYXllci5nZXQoKSByZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JL
ZXlQYXRoOkAicmF0ZSJdOworI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKKyAgICAgICAgW21fYXZQ
bGF5ZXIuZ2V0KCkgcmVtb3ZlT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0
aDpAImV4dGVybmFsUGxheWJhY2tBY3RpdmUiXTsKKyNlbmRpZgogICAgICAgICBtX2F2UGxheWVy
ID0gbmlsOwogICAgIH0KIApAQCAtNDU4LDcgKzQ2NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAgICBpZiAoIW1fdmlkZW9MYXllcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6ZGVzdHJveVZpZGVvTGF5ZXIoJXApIC0gZGVzdHJveWluZyIsIHRoaXMsIG1fdmlkZW9MYXll
ci5nZXQoKSk7CisgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6ZGVzdHJveVZpZGVvTGF5ZXIoJXApIC0gZGVzdHJveWluZyAlcCIsIHRoaXMsIG1fdmlk
ZW9MYXllci5nZXQoKSk7CiAKICAgICBbbV92aWRlb0xheWVyLmdldCgpIHNldFBsYXllcjpuaWxd
OwogCkBAIC01MjIsMTEgKzUyOCwxOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6CiAKICAgICBtX2F2UGxheWVyID0gYWRvcHROUyhbW0FWUGxheWVyIGFsbG9jXSBp
bml0XSk7CiAgICAgW21fYXZQbGF5ZXIuZ2V0KCkgYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIu
Z2V0KCkgZm9yS2V5UGF0aDpAInJhdGUiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlv
bk5ldyBjb250ZXh0Oih2b2lkICopTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlvbkNv
bnRleHRQbGF5ZXJdOworI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKKyAgICBbbV9hdlBsYXllci5n
ZXQoKSBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAiZXh0ZXJu
YWxQbGF5YmFja0FjdGl2ZSIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNv
bnRleHQ6KHZvaWQgKilNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dFBs
YXllcl07CisjZW5kaWYKIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9H
Uk9VUCkgJiYgSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKICAgICBb
bV9hdlBsYXllci5nZXQoKSBzZXRBcHBsaWVzTWVkaWFTZWxlY3Rpb25Dcml0ZXJpYUF1dG9tYXRp
Y2FsbHk6WUVTXTsKICNlbmRpZgogCisjaWYgRU5BQkxFKElPU19BSVJQTEFZKQorICAgIFttX2F2
UGxheWVyLmdldCgpIHNldEFsbG93c0V4dGVybmFsUGxheWJhY2s6bV9hbGxvd3NXaXJlbGVzc1Zp
ZGVvUGxheWJhY2tdOworI2VuZGlmCisKICAgICBpZiAobV9hdlBsYXllckl0ZW0pCiAgICAgICAg
IFttX2F2UGxheWVyLmdldCgpIHJlcGxhY2VDdXJyZW50SXRlbVdpdGhQbGF5ZXJJdGVtOm1fYXZQ
bGF5ZXJJdGVtLmdldCgpXTsKIApAQCAtMTM2MCw3ICsxMzczLDcgQEAgUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJSZWY+IE1lZGlhUGxheWVyUAogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGRvdWJs
ZSBkdXJhdGlvbiA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gc3RhcnQ7Ci0gICAg
TE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlUGl4
ZWxCdWZmZXIoKSAtIGNyZWF0aW5nIGJ1ZmZlciB0b29rICUuNGYiLCB0aGlzLCBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KGR1cmF0aW9uKSk7CisgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlUGl4ZWxCdWZmZXIoJXApIC0gY3JlYXRpbmcgYnVm
ZmVyIHRvb2sgJS40ZiIsIHRoaXMsIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoZHVyYXRpb24pKTsK
ICNlbmRpZgogCiAgICAgcmV0dXJuIGJ1ZmZlcjsKQEAgLTE4MjMsNyArMTgzNiw3IEBAIFN0cmlu
ZyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmoKICAgICBOU0FycmF5ICp0cmFja3Mg
PSBbbV9hdkFzc2V0LmdldCgpIHRyYWNrc1dpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpb107
CiAgICAgaWYgKCF0cmFja3MgfHwgW3RyYWNrcyBjb3VudF0gIT0gMSkgewogICAgICAgICBtX2xh
bmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayA9IGVtcHR5U3RyaW5nKCk7Ci0gICAgICAgIExPRyhN
ZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omxhbmd1YWdlT2ZQcmlt
YXJ5QXVkaW9UcmFjayglcCkgLSAlaSBhdWRpbyB0cmFja3MsIHJldHVybmluZyBlbXB0eVN0cmlu
ZygpIiwgdGhpcywgKHRyYWNrcyA/IFt0cmFja3MgY291bnRdIDogMCkpOworICAgICAgICBMT0co
TWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpsYW5ndWFnZU9mUHJp
bWFyeUF1ZGlvVHJhY2soJXApIC0gJWx1IGF1ZGlvIHRyYWNrcywgcmV0dXJuaW5nIGVtcHR5U3Ry
aW5nKCkiLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPih0cmFja3MgPyBbdHJhY2tz
IGNvdW50XSA6IDApKTsKICAgICAgICAgcmV0dXJuIG1fbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1Ry
YWNrOwogICAgIH0KIApAQCAtMTg0MCw2ICsxODUzLDM5IEBAIFN0cmluZyBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmoKICAgICByZXR1cm4gbV9sYW5ndWFnZU9mUHJpbWFyeUF1ZGlv
VHJhY2s7CiB9CiAKKyNpZiBFTkFCTEUoSU9TX0FJUlBMQVkpCitib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MoKSBj
b25zdAoreworICAgIGlmICghbV9hdlBsYXllcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYm9vbCB3aXJlbGVzc1RhcmdldCA9IFttX2F2UGxheWVyLmdldCgpIGlzRXh0ZXJuYWxQbGF5
YmFja0FjdGl2ZV07CisgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcyglcCkgLSByZXR1cm5pbmcg
JXMiLCB0aGlzLCBib29sU3RyaW5nKHdpcmVsZXNzVGFyZ2V0KSk7CisgICAgcmV0dXJuIHdpcmVs
ZXNzVGFyZ2V0OworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYXZQ
bGF5ZXIpCisgICAgICAgIHJldHVybiAhbV9hbGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJhY2s7Cisg
ICAgCisgICAgbV9hbGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJhY2sgPSAhW21fYXZQbGF5ZXIuZ2V0
KCkgYWxsb3dzRXh0ZXJuYWxQbGF5YmFja107CisgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoJXAp
IC0gcmV0dXJuaW5nICVzIiwgdGhpcywgYm9vbFN0cmluZyghbV9hbGxvd3NXaXJlbGVzc1ZpZGVv
UGxheWJhY2spKTsKKworICAgIHJldHVybiAhbV9hbGxvd3NXaXJlbGVzc1ZpZGVvUGxheWJhY2s7
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0V2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKK3sKKyAgICBMT0coTWVkaWEs
ICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZCglcCkgLSAlcyIsIHRoaXMsIGJvb2xTdHJpbmcoZGlzYWJsZWQpKTsKKyAg
ICBtX2FsbG93c1dpcmVsZXNzVmlkZW9QbGF5YmFjayA9ICFkaXNhYmxlZDsKKyAgICBpZiAoIW1f
YXZQbGF5ZXIpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBbbV9hdlBsYXllci5nZXQoKSBz
ZXRBbGxvd3NFeHRlcm5hbFBsYXliYWNrOmRpc2FibGVkXTsKK30KKyNlbmRpZgorCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXllckl0ZW1TdGF0dXNEaWRDaGFu
Z2UoaW50IHN0YXR1cykKIHsKICAgICBtX2NhY2hlZEl0ZW1TdGF0dXMgPSBzdGF0dXM7CkBAIC0x
OTQzLDYgKzE5ODksMTMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OgogICAgIHVwZGF0ZVN0YXRlcygpOwogICAgIHJhdGVDaGFuZ2VkKCk7CiB9CisgICAgCisjaWYg
RU5BQkxFKElPU19BSVJQTEFZKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpwbGF5YmFja1RhcmdldElzV2lyZWxlc3NEaWRDaGFuZ2UoKQoreworICAgIHBsYXliYWNr
VGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoKTsKK30KKyNlbmRpZgogCiBOU0FycmF5KiBhc3NldE1l
dGFkYXRhS2V5TmFtZXMoKQogewpAQCAtMjAyOSw3ICsyMDgyLDcgQEAgLSAodm9pZClvYnNlcnZl
VmFsdWVGb3JLZXlQYXRoOmtleVBhdGggbwogICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOwogICAg
IGlkIG5ld1ZhbHVlID0gW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTmV3S2V5
XTsKIAotICAgIExPRyhNZWRpYSwgIldlYkNvcmVBVkZNb3ZpZU9ic2VydmVyOm9ic2VydmVWYWx1
ZUZvcktleVBhdGgoJXApIC0ga2V5UGF0aCA9ICVzIiwgc2VsZiwgW2tleVBhdGggVVRGOFN0cmlu
Z10pOworICAgIExPRyhNZWRpYSwgIldlYkNvcmVBVkZNb3ZpZU9ic2VydmVyOjpvYnNlcnZlVmFs
dWVGb3JLZXlQYXRoKCVwKSAtIGtleVBhdGggPSAlcyIsIHNlbGYsIFtrZXlQYXRoIFVURjhTdHJp
bmddKTsKIAogICAgIGlmICghbV9jYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwpAQCAtMjA3Nyw2
ICsyMTMwLDEwIEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG8KICAg
ICAgICAgLy8gQSB2YWx1ZSBjaGFuZ2VkIGZvciBhbiBBVlBsYXllci4KICAgICAgICAgaWYgKFtr
ZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInJhdGUiXSkKICAgICAgICAgICAgIGZ1bmN0aW9uID0g
V1RGOjpiaW5kKCZNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyYXRlRGlkQ2hh
bmdlLCBtX2NhbGxiYWNrLCBbbmV3VmFsdWUgZG91YmxlVmFsdWVdKTsKKyNpZiBFTkFCTEUoSU9T
X0FJUlBMQVkpCisgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImV4
dGVybmFsUGxheWJhY2tBY3RpdmUiXSkKKyAgICAgICAgICAgIGZ1bmN0aW9uID0gV1RGOjpiaW5k
KCZNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF5YmFja1RhcmdldElzV2ly
ZWxlc3NEaWRDaGFuZ2UsIG1fY2FsbGJhY2spOworI2VuZGlmCiAgICAgfQogICAgIAogICAgIGlm
IChmdW5jdGlvbi5pc051bGwoKSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>