<?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>122489</bug_id>
          
          <creation_ts>2013-10-07 22:11:41 -0700</creation_ts>
          <short_desc>[Media] Refactor supportsType() factory method to take a parameters object.</short_desc>
          <delta_ts>2013-10-22 17:13:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>philn</cc>
    
    <cc>rniwa</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>937375</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-10-07 22:11:41 -0700</bug_when>
    <thetext>[Media] Refactor supportsType() factory method to take a parameters object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937376</commentid>
    <comment_count>1</comment_count>
      <attachid>213655</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-10-07 22:16:33 -0700</bug_when>
    <thetext>Created attachment 213655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937400</commentid>
    <comment_count>2</comment_count>
      <attachid>213661</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-10-07 23:39:33 -0700</bug_when>
    <thetext>Created attachment 213661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937416</commentid>
    <comment_count>3</comment_count>
      <attachid>213661</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-08 00:12:34 -0700</bug_when>
    <thetext>Comment on attachment 213661
Patch

Attachment 213661 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/3708112</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937425</commentid>
    <comment_count>4</comment_count>
      <attachid>213661</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-08 00:23:12 -0700</bug_when>
    <thetext>Comment on attachment 213661
Patch

Attachment 213661 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/3715126</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937514</commentid>
    <comment_count>5</comment_count>
      <attachid>213686</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-10-08 07:58:40 -0700</bug_when>
    <thetext>Created attachment 213686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942160</commentid>
    <comment_count>6</comment_count>
      <attachid>213686</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-21 22:57:06 -0700</bug_when>
    <thetext>Comment on attachment 213686
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=213686&amp;action=review

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:405
&gt; +    parameters.isMediaSource = !!m_mediaSource;

We will want to use this for other features  (eg. MediaStream), so an enum would be better than a Boolean here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942507</commentid>
    <comment_count>7</comment_count>
      <attachid>213686</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-22 17:12:58 -0700</bug_when>
    <thetext>Comment on attachment 213686
Patch

Clearing flags on attachment: 213686

Committed r157834: &lt;http://trac.webkit.org/changeset/157834&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942508</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-22 17:13:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213655</attachid>
            <date>2013-10-07 22:16:33 -0700</date>
            <delta_ts>2013-10-07 22:24:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122489-20131007221629.patch</filename>
            <type>text/plain</type>
            <size>24389</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWVhMzZjMmJjOGM2NGNm
MzFiYjNkZWMyN2QzY2NjNzY1M2I1YmE5YS4uNWQyNWZjZDAxMDE5MzE1Mzk2NzY4NDhmMjdjNmRk
MzE2OTEyZDRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDEzLTEwLTA3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIFtNZWRpYV0gUmVmYWN0b3Ig
c3VwcG9ydHNUeXBlKCkgZmFjdG9yeSBtZXRob2QgdG8gdGFrZSBhIHBhcmFtZXRlcnMgb2JqZWN0
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNDg5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb3Jk
ZXIgdG8gc3VwcG9ydCBhZGRpbmcgbmV3IGNvbmRpdGlvbmFsIHByb3BlcnRpZXMgd2l0aCB3aGlj
aCB0byBkZWNpZGUKKyAgICAgICAgd2hhdCBNZWRpYVBsYXllclByaXZhdGUgc3ViY2xhc3MgdG8g
Y3JlYXRlLCByZXBsYWNlIHRoZSB0d28gdmVyc2lvbnMgb2YgdGhlCisgICAgICAgIHN1cHBvcnRz
VHlwZSgpIGZhY3RvcnkgbWV0aG9kIHdpdGggYSBzaW5nbGUgb25lIHRha2luZyBhIHBhcmFtZXRl
cnMgb2JqZWN0LgorCisgICAgICAgIEF0IHRoZSBzYW1lIHRpbWUsIGFkZCBhICdpc01lZGlhU291
cmNlJyBwYXJhbWV0ZXIgdG8gdGhhdCBvYmplY3QsIGFsbG93aW5nCisgICAgICAgIE1lZGlhUGxh
eWVyUHJpdmF0ZSBzdWJjbGFzc2VzIHdoaWNoIHN1cHBvcnQgdGhlIHNhbWUgdHlwZSBhbmQgY29k
ZWNzIGJ1dAorICAgICAgICB3aGljaCBkbyBub3QgYm90aCBzdXBwb3J0IE1lZGlhU291cmNlIHRv
IGJlIGRpc3Rpbmd1aXNlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RNZWRpYUVuZ2luZUZvclR5cGVBbmRDb2Rl
Y3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGOjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6a2V5U3lzdGVtSXNTdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3VwcG9ydHNUeXBlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNr
QmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpzdXBwb3J0
c1R5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5
ZXJQcml2YXRlQmxhY2tCZXJyeS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6c3VwcG9ydHNUeXBl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVp
Y2tUaW1lVmlzdWFsQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250
ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvTWVkaWFQbGF5ZXJQcml2
YXRlV2luQ0UuaDoKKworMjAxMy0xMC0wNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KKwogICAgICAgICBVUkxNZWRpYVNvdXJjZS5pZGwgYW5kIFVSTE1lZGlhU3RyZWFtLmlkbCBh
cmUgd3JvbmcKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMjMwMQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAKaW5kZXggMzhjYTU4NjE3N2FkMDk1Njc3ZWVkY2U2ZWUzZTJkNzQyZjdlYzRkMi4u
YTk5YmZiZmJjMTNmN2QzYTdjMDA3Yjg1YTFjOTMxZWVjOTNkMGUwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMjc0LDYgKzI3
NCwxNSBAQCBzdGF0aWMgTWVkaWFQbGF5ZXJGYWN0b3J5KiBiZXN0TWVkaWFFbmdpbmVGb3JUeXBl
QW5kQ29kZWNzKGNvbnN0IFN0cmluZyYgdHlwZSwgYwogCiAgICAgTWVkaWFQbGF5ZXJGYWN0b3J5
KiBlbmdpbmUgPSAwOwogICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydGVkID0g
TWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAgIE1lZGlhUGxheWVyU3VwcG9ydFBhcmFt
ZXRlcnMgcGFyYW1ldGVyczsKKyAgICBwYXJhbWV0ZXJzLnR5cGUgPSB0eXBlOworICAgIHBhcmFt
ZXRlcnMuY29kZWNzID0gY29kZWNzOworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAg
cGFyYW1ldGVycy5rZXlTeXN0ZW0gPSBrZXlTeXN0ZW07CisjZW5kaWYKKyNpZiBFTkFCTEUoTUVE
SUFfU09VUkNFKQorICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9ICEhbV9tZWRpYVNvdXJj
ZTsKKyNlbmRpZgogICAgIHVuc2lnbmVkIGNvdW50ID0gZW5naW5lcy5zaXplKCk7CiAgICAgZm9y
ICh1bnNpZ25lZCBuZHggPSAwOyBuZHggPCBjb3VudDsgbmR4KyspIHsKICAgICAgICAgaWYgKGN1
cnJlbnQpIHsKQEAgLTI4MSwxMyArMjkwLDcgQEAgc3RhdGljIE1lZGlhUGxheWVyRmFjdG9yeSog
YmVzdE1lZGlhRW5naW5lRm9yVHlwZUFuZENvZGVjcyhjb25zdCBTdHJpbmcmIHR5cGUsIGMKICAg
ICAgICAgICAgICAgICBjdXJyZW50ID0gMDsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9Ci0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QV9WMikKLSAgICAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdpbmVTdXBwb3J0ID0g
ZW5naW5lc1tuZHhdLT5zdXBwb3J0c1R5cGVBbmRDb2RlY3ModHlwZSwgY29kZWNzLCBrZXlTeXN0
ZW0sIHVybCk7Ci0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0oa2V5U3lzdGVtKTsKLSAgICAg
ICAgQVNTRVJUKGtleVN5c3RlbS5pc0VtcHR5KCkpOwotICAgICAgICBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIGVuZ2luZVN1cHBvcnQgPSBlbmdpbmVzW25keF0tPnN1cHBvcnRzVHlwZUFuZENv
ZGVjcyh0eXBlLCBjb2RlY3MsIHVybCk7Ci0jZW5kaWYKKyAgICAgICAgTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSBlbmdpbmVTdXBwb3J0ID0gZW5naW5lc1tuZHhdLT5zdXBwb3J0c1R5cGVBbmRD
b2RlY3MocGFyYW1ldGVycyk7CiAgICAgICAgIGlmIChlbmdpbmVTdXBwb3J0ID4gc3VwcG9ydGVk
KSB7CiAgICAgICAgICAgICBzdXBwb3J0ZWQgPSBlbmdpbmVTdXBwb3J0OwogICAgICAgICAgICAg
ZW5naW5lID0gZW5naW5lc1tuZHhdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmgKaW5kZXggYjNkODg0NDc3ODUxZThjODQxY2M5YjRjZGRkODM4NDVk
YWJhYTBjMC4uNDVmZWRhYjViY2Y0ZGQwOWJlNGMzZjA5ODA4NTFiMjM4ZjlhNTY3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC01MjMs
MTMgKzUyMywyMSBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCitzdHJ1Y3QgTWVkaWFFbmdpbmVT
dXBwb3J0UGFyYW1ldGVycyB7CisgICAgU3RyaW5nIHR5cGU7CisgICAgU3RyaW5nIGNvZGVjczsK
KyAgICBVUkwgdXJsOworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgU3RyaW5nIGtl
eVN5c3RlbTsKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAgYm9vbCBpc01l
ZGlhU291cmNlOworI2VuZGlmCit9OworCiB0eXBlZGVmIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlPiAoKkNyZWF0ZU1lZGlhRW5naW5lUGxheWVyKShNZWRpYVBsYXllciop
OwogdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcykoSGFzaFNldDxTdHJp
bmc+JiB0eXBlcyk7Ci0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQV9WMikKLXR5cGVkZWYgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSAoKk1lZGlh
RW5naW5lU3VwcG9ydHNUeXBlKShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29k
ZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJiB1cmwpOwotI2Vsc2UKLXR5
cGVkZWYgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSAoKk1lZGlhRW5naW5lU3VwcG9ydHNUeXBl
KShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmIHVy
bCk7Ci0jZW5kaWYKK3R5cGVkZWYgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSAoKk1lZGlhRW5n
aW5lU3VwcG9ydHNUeXBlKShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKTsKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lR2V0U2l0ZXNJbk1lZGlhQ2FjaGUp
KFZlY3RvcjxTdHJpbmc+Jik7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVkaWFD
YWNoZSkoKTsKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yU2l0
ZSkoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAppbmRleCBiOTVlOTA0OWY3ZGJjMGU3
YTBhYjY0NzNhYTIxNWJlNjEyNTg5MDMxLi4yMDhkMDZhZjg4MTkwMTY5MDQ5ZWQ4ZmY5YmI3YjA4
MzFiYjBkZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKQEAgLTgyOCwxMiArODI4LDEyIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hT
ZXQ8U3RyaW5nPiYgc3VwcG9yCiAgICAgc3VwcG9ydGVkVHlwZXMgPSBtaW1lVHlwZUNhY2hlKCk7
CiB9IAogCi1NZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IGNvZGVjcywgY29uc3QgVVJMJikKK01lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1
cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIC8vIE9ubHkgcmV0dXJuICJJc1N1
cHBvcnRlZCIgaWYgdGhlcmUgaXMgbm8gY29kZWNzIHBhcmFtZXRlciBmb3Igbm93IGFzIHRoZXJl
IGlzIG5vIHdheSB0byBhc2sgaWYgaXQgc3VwcG9ydHMgYW4KICAgICAvLyBleHRlbmRlZCBNSU1F
IHR5cGUgdW50aWwgcmRhcjovLzg3MjE3MTUgaXMgZml4ZWQuCi0gICAgaWYgKG1pbWVUeXBlQ2Fj
aGUoKS5jb250YWlucyh0eXBlKSkKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5pc0VtcHR5KCkgPyBN
ZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQ7Cisg
ICAgaWYgKG1pbWVUeXBlQ2FjaGUoKS5jb250YWlucyhwYXJhbWV0ZXJzLnR5cGUpKQorICAgICAg
ICByZXR1cm4gcGFyYW1ldGVycy5jb2RlY3MuaXNFbXB0eSgpID8gTWVkaWFQbGF5ZXI6Ok1heUJl
U3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkOwogCiAgICAgcmV0dXJuIE1lZGlh
UGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKaW5kZXggODU4YzUyMWE0ZDI3
Y2ZmNWJiN2NkOWRmM2MyYjMwMmU0ODM2MjEwOS4uYzQwZGZmN2FiODUyZjEzY2Y2MWI1MjY2NGRl
MjA1ZGVlYzAwMTliOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToK
ICAgICAvLyBFbmdpbmUgc3VwcG9ydAogICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAgICAgc3RhdGljIHZvaWQg
Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7Ci0gICAgc3RhdGljIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFVSTCYpOworICAgIHN0YXRpYyBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJh
bWV0ZXJzJik7CiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBjYW5jZWxMb2FkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggMzExM2M4ZTE4MzQ2
YTcyYTBjZjRhZDRmZTBmZTAwNjA3YzM2NGJmZi4uMGRhMGVmYjBmMzBiMjU1YzYwMGFjMjRmZjM0
MWQzYTc0MTZlYTdlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtOTcsMTAgKzk3LDcgQEAg
cHJpdmF0ZToKICAgICAvLyBlbmdpbmUgc3VwcG9ydAogICAgIHN0YXRpYyBQYXNzT3duUHRyPE1l
ZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAgICAgc3Rh
dGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7Ci0gICAg
c3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFVSTCYpOwotI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCi0gICAgc3RhdGlj
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IGNvbnN0IFVSTCYpOwotI2VuZGlmCisgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKIAog
ICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmlu
ZGV4IDhiZGQ0NTYyNTBmZTkzZjBkMDk3NDRkZTc5NTQzNjBjYzY5ZGE4NjUuLjU3NThjZGI1ZmIy
MDQ2Yzc1NzAyMjA2ODhlZDc1NGIzYWNhMWYzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpA
QCAtODc3LDQ4ICs4NzcsNDUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mIHN1cHAKICAgICBzdXBwb3J0
ZWRUeXBlcyA9IG1pbWVUeXBlQ2FjaGUoKTsKIH0gCiAKLU1lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3VwcG9ydHNUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFVSTCYpCi17Ci0gICAg
aWYgKCFtaW1lVHlwZUNhY2hlKCkuY29udGFpbnModHlwZSkpCi0gICAgICAgIHJldHVybiBNZWRp
YVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7Ci0KLSAgICAvLyBUaGUgc3BlYyBzYXlzOgotICAgIC8v
ICJJbXBsZW1lbnRvcnMgYXJlIGVuY291cmFnZWQgdG8gcmV0dXJuICJtYXliZSIgdW5sZXNzIHRo
ZSB0eXBlIGNhbiBiZSBjb25maWRlbnRseSBlc3RhYmxpc2hlZCBhcyBiZWluZyBzdXBwb3J0ZWQg
b3Igbm90LiIKLSAgICBpZiAoY29kZWNzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlh
UGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKLQotICAgIE5TU3RyaW5nICp0eXBlU3RyaW5nID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDsgY29kZWNzPVwiJUBcIiIsIChOU1N0cmluZyAq
KXR5cGUsIChOU1N0cmluZyAqKWNvZGVjc107Ci0gICAgcmV0dXJuIFtBVlVSTEFzc2V0IGlzUGxh
eWFibGVFeHRlbmRlZE1JTUVUeXBlOnR5cGVTdHJpbmddID8gTWVkaWFQbGF5ZXI6OklzU3VwcG9y
dGVkIDogTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOzsKLX0KLQotI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKIHN0YXRpYyBib29sIGtleVN5c3RlbUlzU3VwcG9ydGVkKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKQogewogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShrZXlTeXN0ZW0s
ICJjb20uYXBwbGUubHNrZCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGtleVN5c3RlbSwgImNvbS5h
cHBsZS5sc2tkLjFfMCIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLQogICAgIHJldHVybiBmYWxz
ZTsKIH0KKyNlbmRpZgogCi1NZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmV4dGVuZGVkU3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25z
dCBVUkwmIHVybCkKK01lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAg
ICAvLyBGcm9tOiA8aHR0cDovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvZW1l
LXYwLjFiL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEuaHRtbCNkb20tY2FucGxheXR5
cGU+CiAgICAgLy8gSW4gYWRkaXRpb24gdG8gdGhlIHN0ZXBzIGluIHRoZSBjdXJyZW50IHNwZWNp
ZmljYXRpb24sIHRoaXMgbWV0aG9kIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAKICAg
ICAvLyAxLiBDaGVjayB3aGV0aGVyIHRoZSBLZXkgU3lzdGVtIGlzIHN1cHBvcnRlZCB3aXRoIHRo
ZSBzcGVjaWZpZWQgY29udGFpbmVyIGFuZCBjb2RlYyB0eXBlKHMpIGJ5IGZvbGxvd2luZyB0aGUg
c3RlcHMgZm9yIHRoZSBmaXJzdCBtYXRjaGluZyBjb25kaXRpb24gZnJvbSB0aGUgZm9sbG93aW5n
IGxpc3Q6CiAgICAgLy8gICAgSWYga2V5U3lzdGVtIGlzIG51bGwsIGNvbnRpbnVlIHRvIHRoZSBu
ZXh0IHN0ZXAuCi0gICAgaWYgKGtleVN5c3RlbS5pc051bGwoKSB8fCBrZXlTeXN0ZW0uaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gc3VwcG9ydHNUeXBlKHR5cGUsIGNvZGVjcywgdXJsKTsKKyAg
ICBpZiAoIXBhcmFtZXRlcnMua2V5U3lzdGVtLmlzTnVsbCgpICYmICFwYXJhbWV0ZXJzLmtleVN5
c3RlbS5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gSWYga2V5U3lzdGVtIGNvbnRhaW5zIGFuIHVu
cmVjb2duaXplZCBvciB1bnN1cHBvcnRlZCBLZXkgU3lzdGVtLCByZXR1cm4gdGhlIGVtcHR5IHN0
cmluZworICAgICAgICBpZiAoIWtleVN5c3RlbUlzU3VwcG9ydGVkKHBhcmFtZXRlcnMua2V5U3lz
dGVtKSkKKyAgICAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiAK
LSAgICAvLyBJZiBrZXlTeXN0ZW0gY29udGFpbnMgYW4gdW5yZWNvZ25pemVkIG9yIHVuc3VwcG9y
dGVkIEtleSBTeXN0ZW0sIHJldHVybiB0aGUgZW1wdHkgc3RyaW5nCi0gICAgaWYgKCFrZXlTeXN0
ZW1Jc1N1cHBvcnRlZChrZXlTeXN0ZW0pKQorICAgICAgICAvLyBJZiB0aGUgS2V5IFN5c3RlbSBz
cGVjaWZpZWQgYnkga2V5U3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgZGVjcnlwdGluZyB0aGUgY29u
dGFpbmVyIGFuZC9vciBjb2RlYyBzcGVjaWZpZWQgaW4gdGhlIHJlc3Qgb2YgdGhlIHR5cGUgc3Ry
aW5nLgorICAgICAgICAvLyAoQVZGb3VuZGF0aW9uIGRvZXMgbm90IHByb3ZpZGUgYW4gQVBJIHdo
aWNoIHdvdWxkIGFsbG93IHVzIHRvIGRldGVybWluZSB0aGlzLCBzbyB0aGlzIGlzIGEgbm8tb3Ap
CisgICAgfQorCisgICAgLy8gMi4gUmV0dXJuICJtYXliZSIgb3IgInByb2JhYmx5IiBhcyBhcHBy
b3ByaWF0ZSBwZXIgdGhlIGV4aXN0aW5nIHNwZWNpZmljYXRpb24gb2YgY2FuUGxheVR5cGUoKS4K
KyNlbmRpZgorCisgICAgaWYgKCFtaW1lVHlwZUNhY2hlKCkuY29udGFpbnMocGFyYW1ldGVycy50
eXBlKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIAotICAg
IC8vIElmIHRoZSBLZXkgU3lzdGVtIHNwZWNpZmllZCBieSBrZXlTeXN0ZW0gZG9lcyBub3Qgc3Vw
cG9ydCBkZWNyeXB0aW5nIHRoZSBjb250YWluZXIgYW5kL29yIGNvZGVjIHNwZWNpZmllZCBpbiB0
aGUgcmVzdCBvZiB0aGUgdHlwZSBzdHJpbmcuCi0gICAgLy8gKEFWRm91bmRhdGlvbiBkb2VzIG5v
dCBwcm92aWRlIGFuIEFQSSB3aGljaCB3b3VsZCBhbGxvdyB1cyB0byBkZXRlcm1pbmUgdGhpcywg
c28gdGhpcyBpcyBhIG5vLW9wKQorICAgIC8vIFRoZSBzcGVjIHNheXM6CisgICAgLy8gIkltcGxl
bWVudG9ycyBhcmUgZW5jb3VyYWdlZCB0byByZXR1cm4gIm1heWJlIiB1bmxlc3MgdGhlIHR5cGUg
Y2FuIGJlIGNvbmZpZGVudGx5IGVzdGFibGlzaGVkIGFzIGJlaW5nIHN1cHBvcnRlZCBvciBub3Qu
IgorICAgIGlmIChwYXJhbWV0ZXJzLmNvZGVjcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBN
ZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ7CiAKLSAgICAvLyAyLiBSZXR1cm4gIm1heWJlIiBv
ciAicHJvYmFibHkiIGFzIGFwcHJvcHJpYXRlIHBlciB0aGUgZXhpc3Rpbmcgc3BlY2lmaWNhdGlv
biBvZiBjYW5QbGF5VHlwZSgpLgotICAgIHJldHVybiBzdXBwb3J0c1R5cGUodHlwZSwgY29kZWNz
LCB1cmwpOworICAgIE5TU3RyaW5nICp0eXBlU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCIlQDsgY29kZWNzPVwiJUBcIiIsIChOU1N0cmluZyAqKXBhcmFtZXRlcnMudHlwZSwg
KE5TU3RyaW5nICopLnBhcmFtdGVycy5jb2RlY3NdOworICAgIHJldHVybiBbQVZVUkxBc3NldCBp
c1BsYXlhYmxlRXh0ZW5kZWRNSU1FVHlwZTp0eXBlU3RyaW5nXSA/IE1lZGlhUGxheWVyOjpJc1N1
cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDs7CiB9CiAKIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291
cmNlKEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0KiBhdlJlcXVlc3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVy
UHJpdmF0ZUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcAppbmRleCA5NjA2MTBl
OTU2ODIxYTJlODliYTFmMTE2ZDg4ZDcwNTdlMTc5ZWQ0Li43ODE5MmQ3MmFlYTg4ZjlkNjRmOGQy
ZjU5NjhjNjVlZmM1Y2ZhMjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQ
cml2YXRlQmxhY2tCZXJyeS5jcHAKQEAgLTY3LDkgKzY3LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFdURjo6U3RyaW5nPiYgdHlwZXMpCiAg
ICAgICAgIHR5cGVzLmFkZCgqaSk7CiB9CiAKLU1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVk
aWFQbGF5ZXJQcml2YXRlOjpzdXBwb3J0c1R5cGUoY29uc3QgV1RGOjpTdHJpbmcmIHR5cGUsIGNv
bnN0IFdURjo6U3RyaW5nJiBjb2RlY3MsIGNvbnN0IFVSTCYgdXJsKQorTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGU6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVu
Z2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIGJvb2wgaXNSVFNQID0g
dXJsLnByb3RvY29sSXMoInJ0c3AiKTsKKyAgICBib29sIGlzUlRTUCA9IHBhcmFtZXRlcnMudXJs
LnByb3RvY29sSXMoInJ0c3AiKTsKKyAgICBjb25zdCBTdHJpbmcmIHR5cGUgPSBwYXJhbWV0ZXJz
LnR5cGU7CiAKICAgICBpZiAoIWlzUlRTUCAmJiAodHlwZS5pc051bGwoKSB8fCB0eXBlLmlzRW1w
dHkoKSkpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXIgZG9lcyBub3Qgc3VwcG9y
dCB0eXBlOyB0eXBlIGlzIG51bGwgb3IgZW1wdHkuIik7CkBAIC03OSw3ICs4MCw3IEBAIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlOjpzdXBwb3J0c1R5cGUoY29u
c3QgV1RGOjpTdHJpbmcmIHR5CiAgICAgLy8gc3BlYyBzYXlzIHdlIHNob3VsZCBub3QgcmV0dXJu
ICJwcm9iYWJseSIgaWYgdGhlIGNvZGVjcyBzdHJpbmcgaXMgZW1wdHkKICAgICBpZiAoaXNSVFNQ
IHx8IFBsYXRmb3JtUGxheWVyOjptaW1lVHlwZVN1cHBvcnRlZCh0eXBlLmFzY2lpKCkuZGF0YSgp
KSkgewogICAgICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllciBzdXBwb3J0cyB0eXBlICVzLiIs
IGlzUlRTUCA/ICJydHNwIiA6IHR5cGUuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4g
Y29kZWNzLmlzRW1wdHkoKSA/IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZCA6IE1lZGlhUGxh
eWVyOjpJc1N1cHBvcnRlZDsKKyAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnMuY29kZWNzLmlzRW1w
dHkoKSA/IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpJc1N1cHBv
cnRlZDsKICAgICB9CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXIgZG9lcyBub3Qgc3VwcG9y
dCB0eXBlICVzLiIsIHR5cGUuYXNjaWkoKS5kYXRhKCkpOwogICAgIHJldHVybiBNZWRpYVBsYXll
cjo6SXNOb3RTdXBwb3J0ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRl
QmxhY2tCZXJyeS5oCmluZGV4IDU0N2IxZDUyMDA0ZTM0ZjVjZDgwMjg3ZDkxYjIwYjI0ZDdjNTlj
OGIuLjc3ZmUyODYyN2JkZGUyMGMyYzlmYjkwZWQxYWRjNzFhOWI1YTEzZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQ
cml2YXRlQmxhY2tCZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5oCkBAIC00OSw3ICs0OSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2U+IGNyZWF0ZShNZWRpYVBsYXllciopOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTWVk
aWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIpOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBv
cnRlZFR5cGVzKEhhc2hTZXQ8V1RGOjpTdHJpbmc+Jik7Ci0gICAgc3RhdGljIE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RG
OjpTdHJpbmcmLCBjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOwog
ICAgIHN0YXRpYyB2b2lkIG5vdGlmeUFwcEFjdGl2YXRlZEV2ZW50KGJvb2wpOwogICAgIHN0YXRp
YyB2b2lkIHNldENlcnRpZmljYXRlUGF0aChjb25zdCBXVEY6OlN0cmluZyYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGU3ZTJkOWI1
ZDFlNjdhMTcwZTk3ZWE2MmQ5NGNmMWJjNzMxNGVlOTMuLmJiN2I4NjJmMGM2ZjdjODE0NDliMzhh
ZGM4ZTZkYTA1NmNhODE5ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwCkBAIC0xNzA5LDE0ICsxNzA5LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mIHR5cGVz
KQogICAgIHR5cGVzID0gbWltZVR5cGVDYWNoZSgpOwogfQogCi1NZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFVSTCYpCitNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNUeXBl
KGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAg
aWYgKHR5cGUuaXNOdWxsKCkgfHwgdHlwZS5pc0VtcHR5KCkpCisgICAgaWYgKHBhcmFtZXRlcnMu
dHlwZS5pc051bGwoKSB8fCBwYXJhbWV0ZXJzLnR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwogCiAgICAgLy8gc3BlYyBzYXlzIHdlIHNo
b3VsZCBub3QgcmV0dXJuICJwcm9iYWJseSIgaWYgdGhlIGNvZGVjcyBzdHJpbmcgaXMgZW1wdHkK
LSAgICBpZiAobWltZVR5cGVDYWNoZSgpLmNvbnRhaW5zKHR5cGUpKQotICAgICAgICByZXR1cm4g
Y29kZWNzLmlzRW1wdHkoKSA/IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZCA6IE1lZGlhUGxh
eWVyOjpJc1N1cHBvcnRlZDsKKyAgICBpZiAobWltZVR5cGVDYWNoZSgpLmNvbnRhaW5zKHBhcmFt
ZXRlcnMudHlwZSkpCisgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzLmNvZGVjcy5pc0VtcHR5KCkg
PyBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQ7
CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDU5NjFkYTUwNzQ1MmE3
YThlMWRjZGJiOGI4ZDU5N2E4YjNlYzMxYmUuLjFhMzU1Y2Q1OWUwOTI2ZDcwN2ZhNTE2YmNmZjg2
MTVhYzBkYWI3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBQYXNzT3duUHRy
PE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAKICAg
ICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mKTsKLSAgICBz
dGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJik7CisgICAgc3RhdGljIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3Vw
cG9ydFBhcmFtZXRlcnMmKTsKIAogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXll
clByaXZhdGVRVEtpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKaW5kZXggZjMwZDExNmQ5YWYxZDcwNDRlYjFmYTZkYTc3
MDU3Mjc5NGZhOWFjZC4uNDdkYjhhZjMwMTY5YjcwZjIwZDU4MTJiYTk5MWI2YzMxYTJiNTg0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKQEAgLTc1LDEwICs3NSw3IEBAIHByaXZhdGU6
CiAgICAgLy8gZW5naW5lIHN1cHBvcnQKICAgICBzdGF0aWMgUGFzc093blB0cjxNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShNZWRpYVBsYXllciopOwogICAgIHN0YXRpYyB2b2lk
IGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpOwotICAgIHN0YXRpYyBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKTsKLSNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQotICAgIHN0YXRpYyBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlIGV4dGVuZGVkU3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBV
UkwmKTsKLSNlbmRpZgorICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBv
cnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAKICAgICBzdGF0
aWMgdm9pZCBnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYpOwogICAgIHN0YXRp
YyB2b2lkIGNsZWFyTWVkaWFDYWNoZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCmlu
ZGV4IGY5MzUxYTcwYWNmZWUxYTRmYTM5MTAyMTkyMWUyZDcwNjU4YjM2ZGIuLjdhYjY2ODc0NDVk
ODYyNjI0YWU1MzIwZGNmYzVkMDI0ZTQyMTljOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQubW0KQEAgLTE0NjIsMTggKzE0NjIsMjQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtp
dDo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiBzdXBwb3J0ZWRUeXBlcykKICAg
ICBjb25jYXRlbmF0ZUhhc2hTZXRzKHN1cHBvcnRlZFR5cGVzLCBtaW1lQ29tbW9uVHlwZXNDYWNo
ZSgpKTsKIH0KIAotTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVR
VEtpdDo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2Rl
Y3MsIGNvbnN0IFVSTCYpCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0OjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKIHsKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIC8vIFFU
S2l0IGRvZXMgbm90IHN1cHBvcnQgYW55IGtleVN5c3RlbS4KKyAgICBpZiAoIXBhcmFtZXRlcnMu
a2V5U3lzdGVtLmlzTnVsbCgpICYmICFwYXJhbWV0ZXJzLmtleVN5c3RlbS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCiAgICAgLy8gT25seSByZXR1cm4gIklzU3Vw
cG9ydGVkIiBpZiB0aGVyZSBpcyBubyBjb2RlY3MgcGFyYW1ldGVyIGZvciBub3cgYXMgdGhlcmUg
aXMgbm8gd2F5IHRvIGFzayBRVCBpZiBpdCBzdXBwb3J0cyBhbgogICAgIC8vIGV4dGVuZGVkIE1J
TUUgdHlwZSB5ZXQuCiAKICAgICAvLyBEdWUgdG8gPHJkYXI6Ly9wcm9ibGVtLzEwNzc3MDU5Piwg
YXZvaWQgY2FsbGluZyB0aGUgbWltZSB0eXBlcyBjYWNoZSBmdW5jdGlvbnMgaWYgYXQKICAgICAv
LyBhbGwgcG9zc2libGU6Ci0gICAgaWYgKHNob3VsZFJlamVjdE1JTUVUeXBlKHR5cGUpKQorICAg
IGlmIChzaG91bGRSZWplY3RNSU1FVHlwZShwYXJhbWV0ZXJzLnR5cGUpKQogICAgICAgICByZXR1
cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwogCiAgICAgLy8gV2UgY2hlY2sgdGhlICJt
b2Rlcm4iIHR5cGUgY2FjaGUgZmlyc3QsIGFzIGl0IGRvZXNuJ3QgcmVxdWlyZSBRVEtpdFNlcnZl
ciB0byBzdGFydC4KLSAgICBpZiAobWltZU1vZGVyblR5cGVzQ2FjaGUoKS5jb250YWlucyh0eXBl
KSB8fCBtaW1lQ29tbW9uVHlwZXNDYWNoZSgpLmNvbnRhaW5zKHR5cGUpKQorICAgIGlmIChtaW1l
TW9kZXJuVHlwZXNDYWNoZSgpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZSkgfHwgbWltZUNvbW1v
blR5cGVzQ2FjaGUoKS5jb250YWlucyhwYXJhbWV0ZXJzLnR5cGUpKQogICAgICAgICByZXR1cm4g
Y29kZWNzLmlzRW1wdHkoKSA/IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZCA6IE1lZGlhUGxh
eWVyOjpJc1N1cHBvcnRlZDsKIAogICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVk
aWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFs
Q29udGV4dC5jcHAKaW5kZXggOWRkMjVmMjQ5MjY5ZWFhZGQ3NjQzZmIyZDU2YTU0YmQ0ZGY5MDc0
Yi4uMjBhNDQwNDZmYzEwNGJkNzcyMTM5MzkxNzQ5ZDAxZWQyNjUzZWZlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1
aWNrVGltZVZpc3VhbENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcApA
QCAtMTAxNSwxMSArMTAxNSwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZp
c3VhbENvbnRleHQ6OmlzQXZhaWxhYmxlKCkKICNlbmRpZgogfQogCi1NZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OnN1cHBv
cnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBV
UkwmKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVRdWlja1Rp
bWVWaXN1YWxDb250ZXh0OjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFy
YW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICAvLyBvbmx5IHJldHVybiAiSXNTdXBwb3J0ZWQi
IGlmIHRoZXJlIGlzIG5vIGNvZGVjcyBwYXJhbWV0ZXIgZm9yIG5vdyBhcyB0aGVyZSBpcyBubyB3
YXkgdG8gYXNrIFFUIGlmIGl0IHN1cHBvcnRzIGFuCiAgICAgLy8gIGV4dGVuZGVkIE1JTUUgdHlw
ZQotICAgIHJldHVybiBtaW1lVHlwZUNhY2hlKCkuY29udGFpbnModHlwZSkgPyAoY29kZWNzLmlz
RW1wdHkoKSA/IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpJc1N1
cHBvcnRlZCkgOiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgcmV0dXJuIG1pbWVU
eXBlQ2FjaGUoKS5jb250YWlucyhwYXJhbWV0ZXJzLnR5cGUpID8gKHBhcmFtZXRlcnMuY29kZWNz
LmlzRW1wdHkoKSA/IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpJ
c1N1cHBvcnRlZCkgOiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6TW92aWVDbGllbnQ6Om1vdmll
RW5kZWQoUVRNb3ZpZSogbW92aWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuaAppbmRleCAzOWNjYmEwZWRjNzAyZjNjMzBhNTg0NzVl
MjY1NjJiOTRlNGExZTU3Li4yY2FlOTE3MWRjOTM1YzBjOGE3ZWQzZjI3YzJhMWJiODg4MTc2NzA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQ
bGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxD
b250ZXh0LmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIC8vIGVuZ2luZSBzdXBw
b3J0CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBj
cmVhdGUoTWVkaWFQbGF5ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhI
YXNoU2V0PFN0cmluZz4mIHR5cGVzKTsKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVj
cywgY29uc3QgVVJMJik7CisgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3Vw
cG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKICAgICBzdGF0
aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvTWVk
aWFQbGF5ZXJQcml2YXRlV2luQ0UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbmNlL01lZGlhUGxheWVyUHJpdmF0ZVdpbkNFLmgKaW5kZXggNDJmNjczYWJmY2M2NDJhNGMz
ZmYxZTliNjU5OWEzYmRhYjY1MjYxNy4uYTliOGJiMjhiMThiNGIwMTUzY2NlY2M2N2Y1MjE2MjFk
NjdkYWNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
Y2UvTWVkaWFQbGF5ZXJQcml2YXRlV2luQ0UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW5jZS9NZWRpYVBsYXllclByaXZhdGVXaW5DRS5oCkBAIC0xMDAsNyArMTAw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBlbmdpbmUgc3VwcG9ydAogICAg
ICAgICBzdGF0aWMgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0
ZShNZWRpYVBsYXllciopOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhI
YXNoU2V0PFN0cmluZz4mIHR5cGVzKTsKLSAgICAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBj
b2RlY3MsIGNvbnN0IFVSTCYpOworICAgICAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOwog
ICAgICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogCiAgICAgICAgIHZpcnR1YWwgU3Ry
aW5nIGVuZ2luZURlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gIldpbkNFIjsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213661</attachid>
            <date>2013-10-07 23:39:33 -0700</date>
            <delta_ts>2013-10-08 07:58:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122489-20131007233933.patch</filename>
            <type>text/plain</type>
            <size>32329</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWM1MjM1ZmY2MGUxMjM3
ZDMwZDUzOTU5YjFmYWMwMTU5ZTI5YzFjMy4uNWRkYWRmNzkyZjlhODg5MWE4YWY3OWUxNmNkMmFm
NTY4NjZhNDIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUxIEBACiAyMDEzLTEwLTA3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIFtNZWRpYV0gUmVmYWN0b3Ig
c3VwcG9ydHNUeXBlKCkgZmFjdG9yeSBtZXRob2QgdG8gdGFrZSBhIHBhcmFtZXRlcnMgb2JqZWN0
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNDg5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb3Jk
ZXIgdG8gc3VwcG9ydCBhZGRpbmcgbmV3IGNvbmRpdGlvbmFsIHByb3BlcnRpZXMgd2l0aCB3aGlj
aCB0byBkZWNpZGUKKyAgICAgICAgd2hhdCBNZWRpYVBsYXllclByaXZhdGUgc3ViY2xhc3MgdG8g
Y3JlYXRlLCByZXBsYWNlIHRoZSB0d28gdmVyc2lvbnMgb2YgdGhlCisgICAgICAgIHN1cHBvcnRz
VHlwZSgpIGZhY3RvcnkgbWV0aG9kIHdpdGggYSBzaW5nbGUgb25lIHRha2luZyBhIHBhcmFtZXRl
cnMgb2JqZWN0LgorCisgICAgICAgIEF0IHRoZSBzYW1lIHRpbWUsIGFkZCBhICdpc01lZGlhU291
cmNlJyBwYXJhbWV0ZXIgdG8gdGhhdCBvYmplY3QsIGFsbG93aW5nCisgICAgICAgIE1lZGlhUGxh
eWVyUHJpdmF0ZSBzdWJjbGFzc2VzIHdoaWNoIHN1cHBvcnQgdGhlIHNhbWUgdHlwZSBhbmQgY29k
ZWNzIGJ1dAorICAgICAgICB3aGljaCBkbyBub3QgYm90aCBzdXBwb3J0IE1lZGlhU291cmNlIHRv
IGJlIGRpc3Rpbmd1aXNlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RNZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJh
bWV0ZXJzKTogUmVuYW1lZCBmcm9tCisgICAgICAgICAgICBiZXN0TWVkaWFFbmdpbmVGb3JUeXBl
QW5kQ29kZWNzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFF
bmdpbmUpOiBBZGRlZCBjb252ZW5pZW5jZSBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZSk6IENhbGwgbmV4dEJlc3RNZWRpYUVu
Z2luZSgpCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKTogUGFz
cyBwYXJhbWV0ZXIgb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5ldHdv
cmtTdGF0ZUNoYW5nZWQpOiBDYWxsIG5leHRCZXN0TWVkaWFFbmdpbmUoKS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3Vw
cG9ydHNUeXBlKTogSGFuZGxlIHBhcmFtZXRlciBvYmplY3QuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpyZWdpc3Rlck1lZGlhRW5naW5lKTogUmVtb3ZlIGV4dHJhbmVvdXMKKyAgICAgICAgICAgIGV4
dGVuZGVkU3VwcG9ydHNUeXBlIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzVHlwZSk6IEhhbmRsZSBwYXJhbWV0ZXIg
b2JqZWN0LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5
ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGU6OnN1cHBvcnRzVHlwZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6IFJlbW92ZSBleHRyYW5lb3VzCisgICAgICAg
ICAgICBleHRlbmRlZFN1cHBvcnRzVHlwZSBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVRVEtpdDo6c3VwcG9ydHNUeXBlKTogSGFuZGxlIHBhcmFtZXRlciBvYmpl
Y3QuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1
aWNrVGltZVZpc3VhbENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6c3VwcG9ydHNUeXBlKTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZp
c3VhbENvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9NZWRpYVBs
YXllclByaXZhdGVXaW5DRS5oOgorCisyMDEzLTEwLTA3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgorCiAgICAgICAgIFtNU0VdIFtNYWNdIEVuYWJsZSBNZWRpYVNvdXJjZSBvbiB0
aGUgTWFjCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjI0ODQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCmluZGV4IDM4Y2E1ODYxNzdhZDA5NTY3N2VlZGNlNmVlM2UyZDc0MmY3ZWM0ZDIuLjJj
NGFiMzk1ZTEzMDkzNzYzM2Q4ZDA1MjA2Y2IzMmVlNjk0NjJiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE4Niw3ICsxODYs
NyBAQCBwdWJsaWM6CiAKIHN0YXRpYyB2b2lkIGFkZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5n
aW5lUGxheWVyLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRz
VHlwZSwgTWVkaWFFbmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1l
ZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk7CiAKLXN0YXRpYyBN
ZWRpYVBsYXllckZhY3RvcnkqIGJlc3RNZWRpYUVuZ2luZUZvclR5cGVBbmRDb2RlY3MoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0sIGNvbnN0IFVSTCYsIE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCA9IDApOworc3RhdGlj
IE1lZGlhUGxheWVyRmFjdG9yeSogYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMo
Y29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYsIE1lZGlhUGxheWVyRmFjdG9yeSog
Y3VycmVudCA9IDApOwogc3RhdGljIE1lZGlhUGxheWVyRmFjdG9yeSogbmV4dE1lZGlhRW5naW5l
KE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCk7CiAKIGVudW0gUmVxdWVyeUVuZ2luZU9wdGlv
bnMgeyBEb05vdFJlc2V0RW5naW5lcywgUmVzZXRFbmdpbmVzIH07CkBAIC0yNTUsOSArMjU1LDkg
QEAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY29kZWNzKCkKICAgICByZXR1cm4gY29kZWNz
OwogfQogCi1zdGF0aWMgTWVkaWFQbGF5ZXJGYWN0b3J5KiBiZXN0TWVkaWFFbmdpbmVGb3JUeXBl
QW5kQ29kZWNzKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBVUkwmIHVybCwgTWVkaWFQbGF5ZXJGYWN0b3J5KiBj
dXJyZW50KQorc3RhdGljIE1lZGlhUGxheWVyRmFjdG9yeSogYmVzdE1lZGlhRW5naW5lRm9yU3Vw
cG9ydFBhcmFtZXRlcnMoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1l
dGVycywgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQogewotICAgIGlmICh0eXBlLmlzRW1w
dHkoKSkKKyAgICBpZiAocGFyYW1ldGVycy50eXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5Kj4mIGVuZ2luZXMgPSBpbnN0YWxs
ZWRNZWRpYUVuZ2luZXMoKTsKQEAgLTI2Nyw4ICsyNjcsOCBAQCBzdGF0aWMgTWVkaWFQbGF5ZXJG
YWN0b3J5KiBiZXN0TWVkaWFFbmdpbmVGb3JUeXBlQW5kQ29kZWNzKGNvbnN0IFN0cmluZyYgdHlw
ZSwgYwogICAgIC8vIDQuOC4xMC4zIE1JTUUgdHlwZXMgLSBJbiB0aGUgYWJzZW5jZSBvZiBhIHNw
ZWNpZmljYXRpb24gdG8gdGhlIGNvbnRyYXJ5LCB0aGUgTUlNRSB0eXBlICJhcHBsaWNhdGlvbi9v
Y3RldC1zdHJlYW0iIAogICAgIC8vIHdoZW4gdXNlZCB3aXRoIHBhcmFtZXRlcnMsIGUuZy4gImFw
cGxpY2F0aW9uL29jdGV0LXN0cmVhbTtjb2RlY3M9dGhlb3JhIiwgaXMgYSB0eXBlIHRoYXQgdGhl
IHVzZXIgYWdlbnQga25vd3MgCiAgICAgLy8gaXQgY2Fubm90IHJlbmRlci4KLSAgICBpZiAodHlw
ZSA9PSBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkpIHsKLSAgICAgICAgaWYgKCFjb2RlY3MuaXNF
bXB0eSgpKQorICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUgPT0gYXBwbGljYXRpb25PY3RldFN0cmVh
bSgpKSB7CisgICAgICAgIGlmICghcGFyYW1ldGVycy5jb2RlY3MuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0yODEsMTMgKzI4MSw3IEBAIHN0YXRpYyBNZWRp
YVBsYXllckZhY3RvcnkqIGJlc3RNZWRpYUVuZ2luZUZvclR5cGVBbmRDb2RlY3MoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjCiAgICAgICAgICAgICAgICAgY3VycmVudCA9IDA7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJM
RShFTkNSWVBURURfTUVESUFfVjIpCi0gICAgICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUg
ZW5naW5lU3VwcG9ydCA9IGVuZ2luZXNbbmR4XS0+c3VwcG9ydHNUeXBlQW5kQ29kZWNzKHR5cGUs
IGNvZGVjcywga2V5U3lzdGVtLCB1cmwpOwotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKGtl
eVN5c3RlbSk7Ci0gICAgICAgIEFTU0VSVChrZXlTeXN0ZW0uaXNFbXB0eSgpKTsKLSAgICAgICAg
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdpbmVTdXBwb3J0ID0gZW5naW5lc1tuZHhdLT5z
dXBwb3J0c1R5cGVBbmRDb2RlY3ModHlwZSwgY29kZWNzLCB1cmwpOwotI2VuZGlmCisgICAgICAg
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgZW5naW5lU3VwcG9ydCA9IGVuZ2luZXNbbmR4XS0+
c3VwcG9ydHNUeXBlQW5kQ29kZWNzKHBhcmFtZXRlcnMpOwogICAgICAgICBpZiAoZW5naW5lU3Vw
cG9ydCA+IHN1cHBvcnRlZCkgewogICAgICAgICAgICAgc3VwcG9ydGVkID0gZW5naW5lU3VwcG9y
dDsKICAgICAgICAgICAgIGVuZ2luZSA9IGVuZ2luZXNbbmR4XTsKQEAgLTM5OCwxMiArMzkyLDI4
IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoY29uc3QgVVJMJiB1cmwsIFBhc3NSZWZQdHI8SFRN
TE1lZGlhU291cmNlPiBtZWRpYVNvdXJjZSkKIH0KICNlbmRpZgogCitNZWRpYVBsYXllckZhY3Rv
cnkqIE1lZGlhUGxheWVyOjpuZXh0QmVzdE1lZGlhRW5naW5lKE1lZGlhUGxheWVyRmFjdG9yeSog
Y3VycmVudCkgY29uc3QKK3sKKyAgICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBhcmFt
ZXRlcnM7CisgICAgcGFyYW1ldGVycy50eXBlID0gbV9jb250ZW50TUlNRVR5cGU7CisgICAgcGFy
YW1ldGVycy5jb2RlY3MgPSBtX2NvbnRlbnRUeXBlQ29kZWNzOworICAgIHBhcmFtZXRlcnMudXJs
ID0gbV91cmw7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBwYXJhbWV0ZXJzLmtl
eVN5c3RlbSA9IG1fa2V5U3lzdGVtOworI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkK
KyAgICBwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UgPSAhIW1fbWVkaWFTb3VyY2U7CisjZW5kaWYK
KworICAgIHJldHVybiBiZXN0TWVkaWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyhwYXJhbWV0
ZXJzLCBjdXJyZW50KTsKK30KKwogdm9pZCBNZWRpYVBsYXllcjo6bG9hZFdpdGhOZXh0TWVkaWFF
bmdpbmUoTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQogewogICAgIE1lZGlhUGxheWVyRmFj
dG9yeSogZW5naW5lID0gMDsKIAogICAgIGlmICghbV9jb250ZW50TUlNRVR5cGUuaXNFbXB0eSgp
KQotICAgICAgICBlbmdpbmUgPSBiZXN0TWVkaWFFbmdpbmVGb3JUeXBlQW5kQ29kZWNzKG1fY29u
dGVudE1JTUVUeXBlLCBtX2NvbnRlbnRUeXBlQ29kZWNzLCBtX2tleVN5c3RlbSwgbV91cmwsIGN1
cnJlbnQpOworICAgICAgICBlbmdpbmUgPSBuZXh0QmVzdE1lZGlhRW5naW5lKGN1cnJlbnQpOwog
CiAgICAgLy8gSWYgbm8gTUlNRSB0eXBlIGlzIHNwZWNpZmllZCBvciB0aGUgdHlwZSB3YXMgaW5m
ZXJyZWQgZnJvbSB0aGUgZmlsZSBleHRlbnNpb24sIGp1c3QgdXNlIHRoZSBuZXh0IGVuZ2luZS4K
ICAgICBpZiAoIWVuZ2luZSAmJiAobV9jb250ZW50TUlNRVR5cGUuaXNFbXB0eSgpIHx8IG1fY29u
dGVudE1JTUVUeXBlV2FzSW5mZXJyZWRGcm9tRXh0ZW5zaW9uKSkKQEAgLTczMywxOCArNzQzLDI1
IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwKIAogTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBN
ZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBNZWRpYVBsYXll
clN1cHBvcnRzVHlwZUNsaWVudCogY2xpZW50KQogewotICAgIFN0cmluZyB0eXBlID0gY29udGVu
dFR5cGUudHlwZSgpLmxvd2VyKCk7CisgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBw
YXJhbWV0ZXJzOworICAgIHBhcmFtZXRlcnMudHlwZSA9IGNvbnRlbnRUeXBlLnR5cGUoKS5sb3dl
cigpOwogICAgIC8vIFRoZSBjb2RlY3Mgc3RyaW5nIGlzIG5vdCBsb3dlci1jYXNlZCBiZWNhdXNl
IE1QNCB2YWx1ZXMgYXJlIGNhc2Ugc2Vuc2l0aXZlCiAgICAgLy8gcGVyIGh0dHA6Ly90b29scy5p
ZXRmLm9yZy9odG1sL3JmYzQyODEjcGFnZS03LgotICAgIFN0cmluZyB0eXBlQ29kZWNzID0gY29u
dGVudFR5cGUucGFyYW1ldGVyKGNvZGVjcygpKTsKLSAgICBTdHJpbmcgc3lzdGVtID0ga2V5U3lz
dGVtLmxvd2VyKCk7CisgICAgcGFyYW1ldGVycy5jb2RlY3MgPSBjb250ZW50VHlwZS5wYXJhbWV0
ZXIoY29kZWNzKCkpOworICAgIHBhcmFtZXRlcnMudXJsID0gdXJsOworI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisgICAgcGFyYW1ldGVycy5rZXlTeXN0ZW0gPSBrZXlTeXN0ZW0ubG93ZXIo
KTsKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisgICAgcGFyYW1ldGVycy5pc01l
ZGlhU291cmNlID0gZmFsc2U7CisjZW5kaWYKIAogICAgIC8vIDQuOC4xMC4zIE1JTUUgdHlwZXMg
LSBUaGUgY2FuUGxheVR5cGUodHlwZSkgbWV0aG9kIG11c3QgcmV0dXJuIHRoZSBlbXB0eSBzdHJp
bmcgaWYgdHlwZSBpcyBhIHR5cGUgdGhhdCB0aGUgCiAgICAgLy8gdXNlciBhZ2VudCBrbm93cyBp
dCBjYW5ub3QgcmVuZGVyIG9yIGlzIHRoZSB0eXBlICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0i
Ci0gICAgaWYgKHR5cGUgPT0gYXBwbGljYXRpb25PY3RldFN0cmVhbSgpKQorICAgIGlmIChwYXJh
bWV0ZXJzLnR5cGUgPT0gYXBwbGljYXRpb25PY3RldFN0cmVhbSgpKQogICAgICAgICByZXR1cm4g
SXNOb3RTdXBwb3J0ZWQ7CiAKLSAgICBNZWRpYVBsYXllckZhY3RvcnkqIGVuZ2luZSA9IGJlc3RN
ZWRpYUVuZ2luZUZvclR5cGVBbmRDb2RlY3ModHlwZSwgdHlwZUNvZGVjcywgc3lzdGVtLCB1cmwp
OworICAgIE1lZGlhUGxheWVyRmFjdG9yeSogZW5naW5lID0gYmVzdE1lZGlhRW5naW5lRm9yU3Vw
cG9ydFBhcmFtZXRlcnMocGFyYW1ldGVycyk7CiAgICAgaWYgKCFlbmdpbmUpCiAgICAgICAgIHJl
dHVybiBJc05vdFN1cHBvcnRlZDsKIApAQCAtNzY1LDEyICs3ODIsNyBAQCBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUoY29uc3QgQ29udGVudFR5cGUm
IGNvbnRlbnRUeQogICAgIFVOVVNFRF9QQVJBTShjbGllbnQpOwogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQotICAgIHJl
dHVybiBlbmdpbmUtPnN1cHBvcnRzVHlwZUFuZENvZGVjcyh0eXBlLCB0eXBlQ29kZWNzLCBzeXN0
ZW0sIHVybCk7Ci0jZWxzZQotICAgIEFTU0VSVChzeXN0ZW0uaXNFbXB0eSgpKTsKLSAgICByZXR1
cm4gZW5naW5lLT5zdXBwb3J0c1R5cGVBbmRDb2RlY3ModHlwZSwgdHlwZUNvZGVjcywgdXJsKTsK
LSNlbmRpZgorICAgIHJldHVybiBlbmdpbmUtPnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJhbWV0
ZXJzKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllcjo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxT
dHJpbmc+JiB0eXBlcykKQEAgLTk0Niw3ICs5NTgsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpuZXR3
b3JrU3RhdGVDaGFuZ2VkKCkKICAgICBpZiAobV9wcml2YXRlLT5uZXR3b3JrU3RhdGUoKSA+PSBG
b3JtYXRFcnJvcgogICAgICAgICAmJiBtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKSA8IEhhdmVNZXRh
ZGF0YQogICAgICAgICAmJiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKS5zaXplKCkgPiAxKSB7Ci0g
ICAgICAgIGlmIChtX2NvbnRlbnRNSU1FVHlwZS5pc0VtcHR5KCkgfHwgYmVzdE1lZGlhRW5naW5l
Rm9yVHlwZUFuZENvZGVjcyhtX2NvbnRlbnRNSU1FVHlwZSwgbV9jb250ZW50VHlwZUNvZGVjcywg
bV9rZXlTeXN0ZW0sIG1fdXJsLCBtX2N1cnJlbnRNZWRpYUVuZ2luZSkpIHsKKyAgICAgICAgaWYg
KG1fY29udGVudE1JTUVUeXBlLmlzRW1wdHkoKSB8fCBuZXh0QmVzdE1lZGlhRW5naW5lKG1fY3Vy
cmVudE1lZGlhRW5naW5lKSkgewogICAgICAgICAgICAgbV9yZWxvYWRUaW1lci5zdGFydE9uZVNo
b3QoMCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IGIzZDg4NDQ3Nzg1MWU4Yzg0
MWNjOWI0Y2RkZDgzODQ1ZGFiYWEwYzAuLjVmYWY5ZGM1YTUyMGU4NWY2OTViYWY0YzkwMzAwZWIz
NjZiMGRlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaApAQCAtNDkwLDYgKzQ5MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBNZWRp
YVBsYXllcihNZWRpYVBsYXllckNsaWVudCopOworICAgIE1lZGlhUGxheWVyRmFjdG9yeSogbmV4
dEJlc3RNZWRpYUVuZ2luZShNZWRpYVBsYXllckZhY3RvcnkqKSBjb25zdDsKICAgICB2b2lkIGxv
YWRXaXRoTmV4dE1lZGlhRW5naW5lKE1lZGlhUGxheWVyRmFjdG9yeSopOwogICAgIHZvaWQgcmVs
b2FkVGltZXJGaXJlZChUaW1lcjxNZWRpYVBsYXllcj4qKTsKIApAQCAtNTIzLDEzICs1MjQsMjEg
QEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAorc3RydWN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFt
ZXRlcnMgeworICAgIFN0cmluZyB0eXBlOworICAgIFN0cmluZyBjb2RlY3M7CisgICAgVVJMIHVy
bDsKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIFN0cmluZyBrZXlTeXN0ZW07Cisj
ZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIGJvb2wgaXNNZWRpYVNvdXJjZTsK
KyNlbmRpZgorfTsKKwogdHlwZWRlZiBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZT4gKCpDcmVhdGVNZWRpYUVuZ2luZVBsYXllcikoTWVkaWFQbGF5ZXIqKTsKIHR5cGVkZWYg
dm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMpKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMp
OwotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFf
VjIpCi10eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBv
cnRzVHlwZSkoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYgdXJsKTsKLSNlbHNlCi10eXBlZGVmIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJiB1cmwpOwotI2VuZGlm
Cit0eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRz
VHlwZSkoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycyk7CiB0
eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRpYUNhY2hlKShWZWN0b3I8U3Ry
aW5nPiYpOwogdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUpKCk7CiB0
eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvclNpdGUpKGNvbnN0IFN0
cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggYjk1ZTkwNDlmN2RiYzBlN2EwYWI2NDczYWEy
MTViZTYxMjU4OTAzMS4uMjA4ZDA2YWY4ODE5MDE2OTA0OWVkOGZmOWJiN2IwODMxYmIwZGU5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC04MjgsMTIgKzgyOCwxMiBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4m
IHN1cHBvcgogICAgIHN1cHBvcnRlZFR5cGVzID0gbWltZVR5cGVDYWNoZSgpOwogfSAKIAotTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNv
bnN0IFVSTCYpCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyYgcGFyYW1ldGVycykKIHsKICAgICAvLyBPbmx5IHJldHVybiAiSXNTdXBwb3J0ZWQiIGlm
IHRoZXJlIGlzIG5vIGNvZGVjcyBwYXJhbWV0ZXIgZm9yIG5vdyBhcyB0aGVyZSBpcyBubyB3YXkg
dG8gYXNrIGlmIGl0IHN1cHBvcnRzIGFuCiAgICAgLy8gZXh0ZW5kZWQgTUlNRSB0eXBlIHVudGls
IHJkYXI6Ly84NzIxNzE1IGlzIGZpeGVkLgotICAgIGlmIChtaW1lVHlwZUNhY2hlKCkuY29udGFp
bnModHlwZSkpCi0gICAgICAgIHJldHVybiBjb2RlY3MuaXNFbXB0eSgpID8gTWVkaWFQbGF5ZXI6
Ok1heUJlU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkOworICAgIGlmIChtaW1l
VHlwZUNhY2hlKCkuY29udGFpbnMocGFyYW1ldGVycy50eXBlKSkKKyAgICAgICAgcmV0dXJuIHBh
cmFtZXRlcnMuY29kZWNzLmlzRW1wdHkoKSA/IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZCA6
IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZDsKIAogICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNO
b3RTdXBwb3J0ZWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oCmluZGV4IDg1OGM1MjFhNGQyN2NmZjViYjdjZDlk
ZjNjMmIzMDJlNDgzNjIxMDkuLmM0MGRmZjdhYjg1MmYxM2NmNjFiNTI2NjRkZTIwNWRlZWMwMDE5
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRi5oCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgLy8gRW5n
aW5lIHN1cHBvcnQKICAgICBzdGF0aWMgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2U+IGNyZWF0ZShNZWRpYVBsYXllciopOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRl
ZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpOwotICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgY29kZWNzLCBjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOwog
ICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
TG9hZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDNjNGNiMzA5NWYxZDZkOTRhYzU0OGQz
MDJkNWU3ZGMwNDBkZmVmYWQuLjY5ZWNhYzIwNDA2NmM3MDJmY2VlN2Y3ZjRlNzVlYzg3M2NkYTVi
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTk3LDEwICs5Nyw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gZW5naW5lIHN1cHBvcnQKICAgICBzdGF0aWMgUGFzc093blB0cjxNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShNZWRpYVBsYXllciopOwogICAgIHN0YXRpYyB2b2lkIGdl
dFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpOwotICAgIHN0YXRpYyBNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKTsKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQotICAgIHN0YXRpYyBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlIGV4dGVuZGVkU3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBVUkwm
KTsKLSNlbmRpZgorICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRz
VHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAKICAgICBzdGF0aWMg
Ym9vbCBpc0F2YWlsYWJsZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA4YmRkNDU2
MjUwZmU5M2YwZDA5NzQ0ZGU3OTU0MzYwY2M2OWRhODY1Li4yYmVjZjNjYWE1YmZmNzc3ZmZkYWUz
NTRmMjY1MjYxY2ZkNjM3ZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTIyOSwxMSAr
MjI5LDcgQEAgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWEKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJh
ciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0jaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKLSAgICAgICAgcmVnaXN0
cmFyKGNyZWF0ZSwgZ2V0U3VwcG9ydGVkVHlwZXMsIGV4dGVuZGVkU3VwcG9ydHNUeXBlLCAwLCAw
LCAwKTsKLSNlbHNlCiAgICAgICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5cGVz
LCBzdXBwb3J0c1R5cGUsIDAsIDAsIDApOwotI2VuZGlmCiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMoTWVk
aWFQbGF5ZXIqIHBsYXllcikKQEAgLTg3Nyw1MCArODczLDQ4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+
JiBzdXBwCiAgICAgc3VwcG9ydGVkVHlwZXMgPSBtaW1lVHlwZUNhY2hlKCk7CiB9IAogCi1NZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBj
b25zdCBVUkwmKQotewotICAgIGlmICghbWltZVR5cGVDYWNoZSgpLmNvbnRhaW5zKHR5cGUpKQot
ICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwotCi0gICAgLy8gVGhl
IHNwZWMgc2F5czoKLSAgICAvLyAiSW1wbGVtZW50b3JzIGFyZSBlbmNvdXJhZ2VkIHRvIHJldHVy
biAibWF5YmUiIHVubGVzcyB0aGUgdHlwZSBjYW4gYmUgY29uZmlkZW50bHkgZXN0YWJsaXNoZWQg
YXMgYmVpbmcgc3VwcG9ydGVkIG9yIG5vdC4iCi0gICAgaWYgKGNvZGVjcy5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ7Ci0KLSAgICBOU1N0cmlu
ZyAqdHlwZVN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUA7IGNvZGVjcz1c
IiVAXCIiLCAoTlNTdHJpbmcgKil0eXBlLCAoTlNTdHJpbmcgKiljb2RlY3NdOwotICAgIHJldHVy
biBbQVZVUkxBc3NldCBpc1BsYXlhYmxlRXh0ZW5kZWRNSU1FVHlwZTp0eXBlU3RyaW5nXSA/IE1l
ZGlhUGxheWVyOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDs7Ci19
Ci0KLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElB
X1YyKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiBzdGF0aWMgYm9vbCBrZXlTeXN0ZW1J
c1N1cHBvcnRlZChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKIHsKICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2Uoa2V5U3lzdGVtLCAiY29tLmFwcGxlLmxza2QiKSB8fCBlcXVhbElnbm9yaW5nQ2Fz
ZShrZXlTeXN0ZW0sICJjb20uYXBwbGUubHNrZC4xXzAiKSkKICAgICAgICAgcmV0dXJuIHRydWU7
Ci0KICAgICByZXR1cm4gZmFsc2U7CiB9CisjZW5kaWYKIAotTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpleHRlbmRlZFN1cHBvcnRz
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJiB1cmwpCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzVHlwZShjb25zdCBN
ZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpCiAgICAgLy8gRnJvbTogPGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9odG1s
LW1lZGlhL3Jhdy1maWxlL2VtZS12MC4xYi9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlh
Lmh0bWwjZG9tLWNhbnBsYXl0eXBlPgogICAgIC8vIEluIGFkZGl0aW9uIHRvIHRoZSBzdGVwcyBp
biB0aGUgY3VycmVudCBzcGVjaWZpY2F0aW9uLCB0aGlzIG1ldGhvZCBtdXN0IHJ1biB0aGUgZm9s
bG93aW5nIHN0ZXBzOgogCiAgICAgLy8gMS4gQ2hlY2sgd2hldGhlciB0aGUgS2V5IFN5c3RlbSBp
cyBzdXBwb3J0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbnRhaW5lciBhbmQgY29kZWMgdHlwZShz
KSBieSBmb2xsb3dpbmcgdGhlIHN0ZXBzIGZvciB0aGUgZmlyc3QgbWF0Y2hpbmcgY29uZGl0aW9u
IGZyb20gdGhlIGZvbGxvd2luZyBsaXN0OgogICAgIC8vICAgIElmIGtleVN5c3RlbSBpcyBudWxs
LCBjb250aW51ZSB0byB0aGUgbmV4dCBzdGVwLgotICAgIGlmIChrZXlTeXN0ZW0uaXNOdWxsKCkg
fHwga2V5U3lzdGVtLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHN1cHBvcnRzVHlwZSh0eXBl
LCBjb2RlY3MsIHVybCk7CisgICAgaWYgKCFwYXJhbWV0ZXJzLmtleVN5c3RlbS5pc051bGwoKSAm
JiAhcGFyYW1ldGVycy5rZXlTeXN0ZW0uaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIElmIGtleVN5
c3RlbSBjb250YWlucyBhbiB1bnJlY29nbml6ZWQgb3IgdW5zdXBwb3J0ZWQgS2V5IFN5c3RlbSwg
cmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcKKyAgICAgICAgaWYgKCFrZXlTeXN0ZW1Jc1N1cHBvcnRl
ZChwYXJhbWV0ZXJzLmtleVN5c3RlbSkpCisgICAgICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6
OklzTm90U3VwcG9ydGVkOwogCi0gICAgLy8gSWYga2V5U3lzdGVtIGNvbnRhaW5zIGFuIHVucmVj
b2duaXplZCBvciB1bnN1cHBvcnRlZCBLZXkgU3lzdGVtLCByZXR1cm4gdGhlIGVtcHR5IHN0cmlu
ZwotICAgIGlmICgha2V5U3lzdGVtSXNTdXBwb3J0ZWQoa2V5U3lzdGVtKSkKKyAgICAgICAgLy8g
SWYgdGhlIEtleSBTeXN0ZW0gc3BlY2lmaWVkIGJ5IGtleVN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0
IGRlY3J5cHRpbmcgdGhlIGNvbnRhaW5lciBhbmQvb3IgY29kZWMgc3BlY2lmaWVkIGluIHRoZSBy
ZXN0IG9mIHRoZSB0eXBlIHN0cmluZy4KKyAgICAgICAgLy8gKEFWRm91bmRhdGlvbiBkb2VzIG5v
dCBwcm92aWRlIGFuIEFQSSB3aGljaCB3b3VsZCBhbGxvdyB1cyB0byBkZXRlcm1pbmUgdGhpcywg
c28gdGhpcyBpcyBhIG5vLW9wKQorICAgIH0KKworICAgIC8vIDIuIFJldHVybiAibWF5YmUiIG9y
ICJwcm9iYWJseSIgYXMgYXBwcm9wcmlhdGUgcGVyIHRoZSBleGlzdGluZyBzcGVjaWZpY2F0aW9u
IG9mIGNhblBsYXlUeXBlKCkuCisjZW5kaWYKKworICAgIGlmICghbWltZVR5cGVDYWNoZSgpLmNv
bnRhaW5zKHBhcmFtZXRlcnMudHlwZSkpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNO
b3RTdXBwb3J0ZWQ7CiAKLSAgICAvLyBJZiB0aGUgS2V5IFN5c3RlbSBzcGVjaWZpZWQgYnkga2V5
U3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgZGVjcnlwdGluZyB0aGUgY29udGFpbmVyIGFuZC9vciBj
b2RlYyBzcGVjaWZpZWQgaW4gdGhlIHJlc3Qgb2YgdGhlIHR5cGUgc3RyaW5nLgotICAgIC8vIChB
VkZvdW5kYXRpb24gZG9lcyBub3QgcHJvdmlkZSBhbiBBUEkgd2hpY2ggd291bGQgYWxsb3cgdXMg
dG8gZGV0ZXJtaW5lIHRoaXMsIHNvIHRoaXMgaXMgYSBuby1vcCkKKyAgICAvLyBUaGUgc3BlYyBz
YXlzOgorICAgIC8vICJJbXBsZW1lbnRvcnMgYXJlIGVuY291cmFnZWQgdG8gcmV0dXJuICJtYXli
ZSIgdW5sZXNzIHRoZSB0eXBlIGNhbiBiZSBjb25maWRlbnRseSBlc3RhYmxpc2hlZCBhcyBiZWlu
ZyBzdXBwb3J0ZWQgb3Igbm90LiIKKyAgICBpZiAocGFyYW1ldGVycy5jb2RlY3MuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOwogCi0gICAgLy8g
Mi4gUmV0dXJuICJtYXliZSIgb3IgInByb2JhYmx5IiBhcyBhcHByb3ByaWF0ZSBwZXIgdGhlIGV4
aXN0aW5nIHNwZWNpZmljYXRpb24gb2YgY2FuUGxheVR5cGUoKS4KLSAgICByZXR1cm4gc3VwcG9y
dHNUeXBlKHR5cGUsIGNvZGVjcywgdXJsKTsKKyAgICBOU1N0cmluZyAqdHlwZVN0cmluZyA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUA7IGNvZGVjcz1cIiVAXCIiLCAoTlNTdHJpbmcg
KilwYXJhbWV0ZXJzLnR5cGUsIChOU1N0cmluZyAqKXBhcmFtZXRlcnMuY29kZWNzXTsKKyAgICBy
ZXR1cm4gW0FWVVJMQXNzZXQgaXNQbGF5YWJsZUV4dGVuZGVkTUlNRVR5cGU6dHlwZVN0cmluZ10g
PyBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ7
OwogfQogCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCiBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5n
T2ZSZXNvdXJjZShBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCogYXZSZXF1ZXN0KQogewog
ICAgIFN0cmluZyBzY2hlbWUgPSBbW1thdlJlcXVlc3QgcmVxdWVzdF0gVVJMXSBzY2hlbWVdOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9N
ZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAKaW5k
ZXggOTYwNjEwZTk1NjgyMWEyZTg5YmExZjExNmQ4OGQ3MDU3ZTE3OWVkNC4uNzgxOTJkNzJhZWE4
OGY5ZDY0ZjhkMmY1OTY4YzY1ZWZjNWNmYTI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01l
ZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwCkBAIC02Nyw5ICs2NywxMCBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxXVEY6OlN0cmluZz4m
IHR5cGVzKQogICAgICAgICB0eXBlcy5hZGQoKmkpOwogfQogCi1NZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZTo6c3VwcG9ydHNUeXBlKGNvbnN0IFdURjo6U3RyaW5n
JiB0eXBlLCBjb25zdCBXVEY6OlN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmIHVybCkKK01lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlOjpzdXBwb3J0c1R5cGUoY29u
c3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBib29s
IGlzUlRTUCA9IHVybC5wcm90b2NvbElzKCJydHNwIik7CisgICAgYm9vbCBpc1JUU1AgPSBwYXJh
bWV0ZXJzLnVybC5wcm90b2NvbElzKCJydHNwIik7CisgICAgY29uc3QgU3RyaW5nJiB0eXBlID0g
cGFyYW1ldGVycy50eXBlOwogCiAgICAgaWYgKCFpc1JUU1AgJiYgKHR5cGUuaXNOdWxsKCkgfHwg
dHlwZS5pc0VtcHR5KCkpKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyIGRvZXMg
bm90IHN1cHBvcnQgdHlwZTsgdHlwZSBpcyBudWxsIG9yIGVtcHR5LiIpOwpAQCAtNzksNyArODAs
NyBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZTo6c3VwcG9y
dHNUeXBlKGNvbnN0IFdURjo6U3RyaW5nJiB0eQogICAgIC8vIHNwZWMgc2F5cyB3ZSBzaG91bGQg
bm90IHJldHVybiAicHJvYmFibHkiIGlmIHRoZSBjb2RlY3Mgc3RyaW5nIGlzIGVtcHR5CiAgICAg
aWYgKGlzUlRTUCB8fCBQbGF0Zm9ybVBsYXllcjo6bWltZVR5cGVTdXBwb3J0ZWQodHlwZS5hc2Np
aSgpLmRhdGEoKSkpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXIgc3VwcG9ydHMg
dHlwZSAlcy4iLCBpc1JUU1AgPyAicnRzcCIgOiB0eXBlLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAg
ICAgcmV0dXJuIGNvZGVjcy5pc0VtcHR5KCkgPyBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQg
OiBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQ7CisgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzLmNv
ZGVjcy5pc0VtcHR5KCkgPyBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQgOiBNZWRpYVBsYXll
cjo6SXNTdXBwb3J0ZWQ7CiAgICAgfQogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyIGRvZXMg
bm90IHN1cHBvcnQgdHlwZSAlcy4iLCB0eXBlLmFzY2lpKCkuZGF0YSgpKTsKICAgICByZXR1cm4g
TWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxh
eWVyUHJpdmF0ZUJsYWNrQmVycnkuaAppbmRleCA1NDdiMWQ1MjAwNGUzNGY1Y2Q4MDI4N2Q5MWIy
MGIyNGQ3YzU5YzhiLi43N2ZlMjg2MjdiZGRlMjBjMmM5ZmI5MGVkMWFkYzcxYTliNWExM2RlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01l
ZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuaApAQCAt
NDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlPiBjcmVhdGUoTWVkaWFQbGF5ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBy
ZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyKTsKICAgICBzdGF0aWMgdm9p
ZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFdURjo6U3RyaW5nPiYpOwotICAgIHN0YXRpYyBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBXVEY6OlN0cmluZyYs
IGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgVVJMJik7CisgICAgc3RhdGljIE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFt
ZXRlcnMmKTsKICAgICBzdGF0aWMgdm9pZCBub3RpZnlBcHBBY3RpdmF0ZWRFdmVudChib29sKTsK
ICAgICBzdGF0aWMgdm9pZCBzZXRDZXJ0aWZpY2F0ZVBhdGgoY29uc3QgV1RGOjpTdHJpbmcmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRl
eCBlN2UyZDliNWQxZTY3YTE3MGU5N2VhNjJkOTRjZjFiYzczMTRlZTkzLi5iYjdiODYyZjBjNmY3
YzgxNDQ5YjM4YWRjOGU2ZGEwNTZjYTgxOWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTcwOSwxNCArMTcwOSwxNCBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJp
bmc+JiB0eXBlcykKICAgICB0eXBlcyA9IG1pbWVUeXBlQ2FjaGUoKTsKIH0KIAotTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlw
ZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKQor
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1
cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogewotICAgIGlmICh0eXBlLmlzTnVsbCgpIHx8IHR5cGUuaXNFbXB0eSgpKQorICAgIGlmIChw
YXJhbWV0ZXJzLnR5cGUuaXNOdWxsKCkgfHwgcGFyYW1ldGVycy50eXBlLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIAogICAgIC8vIHNwZWMg
c2F5cyB3ZSBzaG91bGQgbm90IHJldHVybiAicHJvYmFibHkiIGlmIHRoZSBjb2RlY3Mgc3RyaW5n
IGlzIGVtcHR5Ci0gICAgaWYgKG1pbWVUeXBlQ2FjaGUoKS5jb250YWlucyh0eXBlKSkKLSAgICAg
ICAgcmV0dXJuIGNvZGVjcy5pc0VtcHR5KCkgPyBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQg
OiBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQ7CisgICAgaWYgKG1pbWVUeXBlQ2FjaGUoKS5jb250
YWlucyhwYXJhbWV0ZXJzLnR5cGUpKQorICAgICAgICByZXR1cm4gcGFyYW1ldGVycy5jb2RlY3Mu
aXNFbXB0eSgpID8gTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6Oklz
U3VwcG9ydGVkOwogICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCA1OTYx
ZGE1MDc0NTJhN2E4ZTFkY2RiYjhiOGQ1OTdhOGIzZWMzMWJlLi4xYTM1NWNkNTllMDkyNmQ3MDdm
YTUxNmJjZmY4NjE1YWMwZGFiN2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
UGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShNZWRpYVBsYXll
ciopOwogCiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+
Jik7Ci0gICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFVSTCYpOworICAg
IHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBNZWRp
YUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJs
ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCmluZGV4IGYzMGQxMTZkOWFmMWQ3MDQ0
ZWIxZmE2ZGE3NzA1NzI3OTRmYTlhY2QuLjQ3ZGI4YWYzMDE2OWI3MGYyMGQ1ODEyYmE5OTFiNmMz
MWEyYjU4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCkBAIC03NSwxMCArNzUsNyBA
QCBwcml2YXRlOgogICAgIC8vIGVuZ2luZSBzdXBwb3J0CiAgICAgc3RhdGljIFBhc3NPd25QdHI8
TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGUoTWVkaWFQbGF5ZXIqKTsKICAgICBz
dGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mIHR5cGVzKTsKLSAg
ICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJik7Ci0jaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKLSAgICBzdGF0
aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBleHRlbmRlZFN1cHBvcnRzVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgY29uc3QgVVJMJik7Ci0jZW5kaWYKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOwog
CiAgICAgc3RhdGljIHZvaWQgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mKTsK
ICAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVR
VEtpdC5tbQppbmRleCBmOTM1MWE3MGFjZmVlMWE0ZmEzOTEwMjE5MjFlMmQ3MDY1OGIzNmRiLi43
Yjc0ZTdkZWVkMjc5ZmY4MTJkNjBlMzI4OTcxMjA3ZDk0NGMxMmU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0Lm1tCkBAIC0xODksMTEgKzE4OSw3IEBAIFBhc3NPd25QdHI8TWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYWNlPiBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y3JlYXRlKE1lZGlh
UGxhCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpyZWdpc3Rlck1lZGlhRW5naW5lKE1l
ZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkK
LSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBX1Yy
KQotICAgICAgICByZWdpc3RyYXIoY3JlYXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywgZXh0ZW5kZWRT
dXBwb3J0c1R5cGUsIGdldFNpdGVzSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFy
TWVkaWFDYWNoZUZvclNpdGUpOwotI2Vsc2UKICAgICAgICAgcmVnaXN0cmFyKGNyZWF0ZSwgZ2V0
U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUsIGNsZWFy
TWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk7Ci0jZW5kaWYKIH0KIAogTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0KE1lZGlhUGxheWVyKiBw
bGF5ZXIpCkBAIC0xNDYyLDM0ICsxNDU4LDI5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgc3VwcG9ydGVkVHlwZXMpCiAg
ICAgY29uY2F0ZW5hdGVIYXNoU2V0cyhzdXBwb3J0ZWRUeXBlcywgbWltZUNvbW1vblR5cGVzQ2Fj
aGUoKSk7CiB9CiAKLU1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQ6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29k
ZWNzLCBjb25zdCBVUkwmKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclBy
aXZhdGVRVEtpdDo6c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCiB7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICAvLyBR
VEtpdCBkb2VzIG5vdCBzdXBwb3J0IGFueSBlbmNyeXRwZWQgbWVkaWEsIHNvIHJldHVybiBJc05v
dFN1cHBvcnRlZCBpZiB0aGUga2V5U3lzdGVtIGlzIG5vbi1OVUxMOgorICAgIGlmICghcGFyYW1l
dGVycy5rZXlTeXN0ZW0uaXNOdWxsKCkgJiYgIXBhcmFtZXRlcnMua2V5U3lzdGVtLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKyNlbmRpZgor
CiAgICAgLy8gT25seSByZXR1cm4gIklzU3VwcG9ydGVkIiBpZiB0aGVyZSBpcyBubyBjb2RlY3Mg
cGFyYW1ldGVyIGZvciBub3cgYXMgdGhlcmUgaXMgbm8gd2F5IHRvIGFzayBRVCBpZiBpdCBzdXBw
b3J0cyBhbgogICAgIC8vIGV4dGVuZGVkIE1JTUUgdHlwZSB5ZXQuCiAKICAgICAvLyBEdWUgdG8g
PHJkYXI6Ly9wcm9ibGVtLzEwNzc3MDU5PiwgYXZvaWQgY2FsbGluZyB0aGUgbWltZSB0eXBlcyBj
YWNoZSBmdW5jdGlvbnMgaWYgYXQKICAgICAvLyBhbGwgcG9zc2libGU6Ci0gICAgaWYgKHNob3Vs
ZFJlamVjdE1JTUVUeXBlKHR5cGUpKQorICAgIGlmIChzaG91bGRSZWplY3RNSU1FVHlwZShwYXJh
bWV0ZXJzLnR5cGUpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVk
OwogCiAgICAgLy8gV2UgY2hlY2sgdGhlICJtb2Rlcm4iIHR5cGUgY2FjaGUgZmlyc3QsIGFzIGl0
IGRvZXNuJ3QgcmVxdWlyZSBRVEtpdFNlcnZlciB0byBzdGFydC4KLSAgICBpZiAobWltZU1vZGVy
blR5cGVzQ2FjaGUoKS5jb250YWlucyh0eXBlKSB8fCBtaW1lQ29tbW9uVHlwZXNDYWNoZSgpLmNv
bnRhaW5zKHR5cGUpKQotICAgICAgICByZXR1cm4gY29kZWNzLmlzRW1wdHkoKSA/IE1lZGlhUGxh
eWVyOjpNYXlCZVN1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZDsKKyAgICBpZiAo
bWltZU1vZGVyblR5cGVzQ2FjaGUoKS5jb250YWlucyhwYXJhbWV0ZXJzLnR5cGUpIHx8IG1pbWVD
b21tb25UeXBlc0NhY2hlKCkuY29udGFpbnMocGFyYW1ldGVycy50eXBlKSkKKyAgICAgICAgcmV0
dXJuIHBhcmFtZXRlcnMuY29kZWNzLmlzRW1wdHkoKSA/IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBv
cnRlZCA6IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZDsKIAogICAgIHJldHVybiBNZWRpYVBsYXll
cjo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBF
TkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQotTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRp
YVBsYXllclByaXZhdGVRVEtpdDo6ZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0
IFVSTCYgdXJsKQotewotICAgIC8vIFFUS2l0IGRvZXMgbm90IHN1cHBvcnQgYW55IGVuY3J5dHBl
ZCBtZWRpYSwgc28gcmV0dXJuIElzTm90U3VwcG9ydGVkIGlmIHRoZSBrZXlTeXN0ZW0gaXMgbm9u
LU5VTEw6Ci0gICAgaWYgKCFrZXlTeXN0ZW0uaXNOdWxsKCkgfHwgIWtleVN5c3RlbS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7Ci0KLSAgICBy
ZXR1cm4gc3VwcG9ydHNUeXBlKHR5cGUsIGNvZGVjcywgdXJsKTs7Ci19Ci0jZW5kaWYKLQogYm9v
bCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aXNBdmFpbGFibGUoKQogewogICAgIC8vIE9uIDEw
LjUgYW5kIGhpZ2hlciwgUXVpY2tUaW1lIHdpbGwgYWx3YXlzIGJlIG5ldyBlbm91Z2ggZm9yIDx2
aWRlbz4gYW5kIDxhdWRpbz4gc3VwcG9ydCwgc28gd2UganVzdCBjaGVjayB0aGF0IHRoZSBmcmFt
ZXdvcmsgY2FuIGJlIGxvYWRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZh
dGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAppbmRleCA5ZGQyNWYyNDkyNjllYWFkZDc2NDNm
YjJkNTZhNTRiZDRkZjkwNzRiLi4yMGE0NDA0NmZjMTA0YmQ3NzIxMzkzOTE3NDlkMDFlZDI2NTNl
ZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVk
aWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZp
c3VhbENvbnRleHQuY3BwCkBAIC0xMDE1LDExICsxMDE1LDExIEBAIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6aXNBdmFpbGFibGUoKQogI2VuZGlmCiB9CiAK
LU1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlz
dWFsQ29udGV4dDo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBjb2RlY3MsIGNvbnN0IFVSTCYpCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxh
eWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRp
YUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIC8vIG9ubHkgcmV0
dXJuICJJc1N1cHBvcnRlZCIgaWYgdGhlcmUgaXMgbm8gY29kZWNzIHBhcmFtZXRlciBmb3Igbm93
IGFzIHRoZXJlIGlzIG5vIHdheSB0byBhc2sgUVQgaWYgaXQgc3VwcG9ydHMgYW4KICAgICAvLyAg
ZXh0ZW5kZWQgTUlNRSB0eXBlCi0gICAgcmV0dXJuIG1pbWVUeXBlQ2FjaGUoKS5jb250YWlucyh0
eXBlKSA/IChjb2RlY3MuaXNFbXB0eSgpID8gTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkIDog
TWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkKSA6IE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsK
KyAgICByZXR1cm4gbWltZVR5cGVDYWNoZSgpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZSkgPyAo
cGFyYW1ldGVycy5jb2RlY3MuaXNFbXB0eSgpID8gTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVk
IDogTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkKSA6IE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRl
ZDsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpN
b3ZpZUNsaWVudDo6bW92aWVFbmRlZChRVE1vdmllKiBtb3ZpZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1Rp
bWVWaXN1YWxDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5oCmluZGV4IDM5Y2NiYTBl
ZGM3MDJmM2MzMGE1ODQ3NWUyNjU2MmI5NGU0YTFlNTcuLjJjYWU5MTcxZGM5MzVjMGM4YTdlZDNm
MjdjMmExYmI4ODgxNzY3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gZW5naW5lIHN1cHBvcnQKICAgICBzdGF0aWMgUGFzc093blB0cjxNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShNZWRpYVBsYXllciopOwogICAgIHN0YXRpYyB2b2lkIGdl
dFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpOwotICAgIHN0YXRpYyBNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyYpOwogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CiAKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW5jZS9NZWRpYVBsYXllclByaXZhdGVXaW5DRS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvTWVkaWFQbGF5ZXJQcml2YXRlV2luQ0UuaAppbmRleCA0
MmY2NzNhYmZjYzY0MmE0YzNmZjFlOWI2NTk5YTNiZGFiNjUyNjE3Li5hOWI4YmIyOGIxOGI0YjAx
NTNjY2VjYzY3ZjUyMTYyMWQ2N2RhY2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW5jZS9NZWRpYVBsYXllclByaXZhdGVXaW5DRS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL01lZGlhUGxheWVyUHJpdmF0ZVdpbkNF
LmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIGVu
Z2luZSBzdXBwb3J0CiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdl
dFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpOwotICAgICAgICBzdGF0aWMg
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJik7CisgICAgICAgIHN0YXRpYyBNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzJik7CiAgICAgICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CiAKICAg
ICAgICAgdmlydHVhbCBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiAi
V2luQ0UiOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213686</attachid>
            <date>2013-10-08 07:58:40 -0700</date>
            <delta_ts>2013-10-22 17:12:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122489-20131008075839.patch</filename>
            <type>text/plain</type>
            <size>32366</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWM1MjM1ZmY2MGUxMjM3
ZDMwZDUzOTU5YjFmYWMwMTU5ZTI5YzFjMy4uNWRkYWRmNzkyZjlhODg5MWE4YWY3OWUxNmNkMmFm
NTY4NjZhNDIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUxIEBACiAyMDEzLTEwLTA3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIFtNZWRpYV0gUmVmYWN0b3Ig
c3VwcG9ydHNUeXBlKCkgZmFjdG9yeSBtZXRob2QgdG8gdGFrZSBhIHBhcmFtZXRlcnMgb2JqZWN0
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNDg5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb3Jk
ZXIgdG8gc3VwcG9ydCBhZGRpbmcgbmV3IGNvbmRpdGlvbmFsIHByb3BlcnRpZXMgd2l0aCB3aGlj
aCB0byBkZWNpZGUKKyAgICAgICAgd2hhdCBNZWRpYVBsYXllclByaXZhdGUgc3ViY2xhc3MgdG8g
Y3JlYXRlLCByZXBsYWNlIHRoZSB0d28gdmVyc2lvbnMgb2YgdGhlCisgICAgICAgIHN1cHBvcnRz
VHlwZSgpIGZhY3RvcnkgbWV0aG9kIHdpdGggYSBzaW5nbGUgb25lIHRha2luZyBhIHBhcmFtZXRl
cnMgb2JqZWN0LgorCisgICAgICAgIEF0IHRoZSBzYW1lIHRpbWUsIGFkZCBhICdpc01lZGlhU291
cmNlJyBwYXJhbWV0ZXIgdG8gdGhhdCBvYmplY3QsIGFsbG93aW5nCisgICAgICAgIE1lZGlhUGxh
eWVyUHJpdmF0ZSBzdWJjbGFzc2VzIHdoaWNoIHN1cHBvcnQgdGhlIHNhbWUgdHlwZSBhbmQgY29k
ZWNzIGJ1dAorICAgICAgICB3aGljaCBkbyBub3QgYm90aCBzdXBwb3J0IE1lZGlhU291cmNlIHRv
IGJlIGRpc3Rpbmd1aXNlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RNZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJh
bWV0ZXJzKTogUmVuYW1lZCBmcm9tCisgICAgICAgICAgICBiZXN0TWVkaWFFbmdpbmVGb3JUeXBl
QW5kQ29kZWNzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFF
bmdpbmUpOiBBZGRlZCBjb252ZW5pZW5jZSBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZSk6IENhbGwgbmV4dEJlc3RNZWRpYUVu
Z2luZSgpCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKTogUGFz
cyBwYXJhbWV0ZXIgb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5ldHdv
cmtTdGF0ZUNoYW5nZWQpOiBDYWxsIG5leHRCZXN0TWVkaWFFbmdpbmUoKS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3Vw
cG9ydHNUeXBlKTogSGFuZGxlIHBhcmFtZXRlciBvYmplY3QuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpyZWdpc3Rlck1lZGlhRW5naW5lKTogUmVtb3ZlIGV4dHJhbmVvdXMKKyAgICAgICAgICAgIGV4
dGVuZGVkU3VwcG9ydHNUeXBlIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzVHlwZSk6IEhhbmRsZSBwYXJhbWV0ZXIg
b2JqZWN0LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5
ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGU6OnN1cHBvcnRzVHlwZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6IFJlbW92ZSBleHRyYW5lb3VzCisgICAgICAg
ICAgICBleHRlbmRlZFN1cHBvcnRzVHlwZSBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVRVEtpdDo6c3VwcG9ydHNUeXBlKTogSGFuZGxlIHBhcmFtZXRlciBvYmpl
Y3QuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1
aWNrVGltZVZpc3VhbENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6c3VwcG9ydHNUeXBlKTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZp
c3VhbENvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9NZWRpYVBs
YXllclByaXZhdGVXaW5DRS5oOgorCisyMDEzLTEwLTA3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgorCiAgICAgICAgIFtNU0VdIFtNYWNdIEVuYWJsZSBNZWRpYVNvdXJjZSBvbiB0
aGUgTWFjCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjI0ODQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCmluZGV4IDM4Y2E1ODYxNzdhZDA5NTY3N2VlZGNlNmVlM2UyZDc0MmY3ZWM0ZDIuLjVm
Y2U3ZmNjOTM2ZTU5YTUwYTc4MzAxNjE0NjFmMWRiYmNiMzFiZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE4Niw3ICsxODYs
NyBAQCBwdWJsaWM6CiAKIHN0YXRpYyB2b2lkIGFkZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5n
aW5lUGxheWVyLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRz
VHlwZSwgTWVkaWFFbmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1l
ZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk7CiAKLXN0YXRpYyBN
ZWRpYVBsYXllckZhY3RvcnkqIGJlc3RNZWRpYUVuZ2luZUZvclR5cGVBbmRDb2RlY3MoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0sIGNvbnN0IFVSTCYsIE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCA9IDApOworc3RhdGlj
IE1lZGlhUGxheWVyRmFjdG9yeSogYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMo
Y29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYsIE1lZGlhUGxheWVyRmFjdG9yeSog
Y3VycmVudCA9IDApOwogc3RhdGljIE1lZGlhUGxheWVyRmFjdG9yeSogbmV4dE1lZGlhRW5naW5l
KE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCk7CiAKIGVudW0gUmVxdWVyeUVuZ2luZU9wdGlv
bnMgeyBEb05vdFJlc2V0RW5naW5lcywgUmVzZXRFbmdpbmVzIH07CkBAIC0yNTUsOSArMjU1LDkg
QEAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY29kZWNzKCkKICAgICByZXR1cm4gY29kZWNz
OwogfQogCi1zdGF0aWMgTWVkaWFQbGF5ZXJGYWN0b3J5KiBiZXN0TWVkaWFFbmdpbmVGb3JUeXBl
QW5kQ29kZWNzKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBVUkwmIHVybCwgTWVkaWFQbGF5ZXJGYWN0b3J5KiBj
dXJyZW50KQorc3RhdGljIE1lZGlhUGxheWVyRmFjdG9yeSogYmVzdE1lZGlhRW5naW5lRm9yU3Vw
cG9ydFBhcmFtZXRlcnMoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1l
dGVycywgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQogewotICAgIGlmICh0eXBlLmlzRW1w
dHkoKSkKKyAgICBpZiAocGFyYW1ldGVycy50eXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICBWZWN0b3I8TWVkaWFQbGF5ZXJGYWN0b3J5Kj4mIGVuZ2luZXMgPSBpbnN0YWxs
ZWRNZWRpYUVuZ2luZXMoKTsKQEAgLTI2Nyw4ICsyNjcsOCBAQCBzdGF0aWMgTWVkaWFQbGF5ZXJG
YWN0b3J5KiBiZXN0TWVkaWFFbmdpbmVGb3JUeXBlQW5kQ29kZWNzKGNvbnN0IFN0cmluZyYgdHlw
ZSwgYwogICAgIC8vIDQuOC4xMC4zIE1JTUUgdHlwZXMgLSBJbiB0aGUgYWJzZW5jZSBvZiBhIHNw
ZWNpZmljYXRpb24gdG8gdGhlIGNvbnRyYXJ5LCB0aGUgTUlNRSB0eXBlICJhcHBsaWNhdGlvbi9v
Y3RldC1zdHJlYW0iIAogICAgIC8vIHdoZW4gdXNlZCB3aXRoIHBhcmFtZXRlcnMsIGUuZy4gImFw
cGxpY2F0aW9uL29jdGV0LXN0cmVhbTtjb2RlY3M9dGhlb3JhIiwgaXMgYSB0eXBlIHRoYXQgdGhl
IHVzZXIgYWdlbnQga25vd3MgCiAgICAgLy8gaXQgY2Fubm90IHJlbmRlci4KLSAgICBpZiAodHlw
ZSA9PSBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkpIHsKLSAgICAgICAgaWYgKCFjb2RlY3MuaXNF
bXB0eSgpKQorICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUgPT0gYXBwbGljYXRpb25PY3RldFN0cmVh
bSgpKSB7CisgICAgICAgIGlmICghcGFyYW1ldGVycy5jb2RlY3MuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0yODEsMTMgKzI4MSw3IEBAIHN0YXRpYyBNZWRp
YVBsYXllckZhY3RvcnkqIGJlc3RNZWRpYUVuZ2luZUZvclR5cGVBbmRDb2RlY3MoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjCiAgICAgICAgICAgICAgICAgY3VycmVudCA9IDA7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJM
RShFTkNSWVBURURfTUVESUFfVjIpCi0gICAgICAgIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUg
ZW5naW5lU3VwcG9ydCA9IGVuZ2luZXNbbmR4XS0+c3VwcG9ydHNUeXBlQW5kQ29kZWNzKHR5cGUs
IGNvZGVjcywga2V5U3lzdGVtLCB1cmwpOwotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKGtl
eVN5c3RlbSk7Ci0gICAgICAgIEFTU0VSVChrZXlTeXN0ZW0uaXNFbXB0eSgpKTsKLSAgICAgICAg
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBlbmdpbmVTdXBwb3J0ID0gZW5naW5lc1tuZHhdLT5z
dXBwb3J0c1R5cGVBbmRDb2RlY3ModHlwZSwgY29kZWNzLCB1cmwpOwotI2VuZGlmCisgICAgICAg
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgZW5naW5lU3VwcG9ydCA9IGVuZ2luZXNbbmR4XS0+
c3VwcG9ydHNUeXBlQW5kQ29kZWNzKHBhcmFtZXRlcnMpOwogICAgICAgICBpZiAoZW5naW5lU3Vw
cG9ydCA+IHN1cHBvcnRlZCkgewogICAgICAgICAgICAgc3VwcG9ydGVkID0gZW5naW5lU3VwcG9y
dDsKICAgICAgICAgICAgIGVuZ2luZSA9IGVuZ2luZXNbbmR4XTsKQEAgLTM5OCwxMiArMzkyLDI4
IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoY29uc3QgVVJMJiB1cmwsIFBhc3NSZWZQdHI8SFRN
TE1lZGlhU291cmNlPiBtZWRpYVNvdXJjZSkKIH0KICNlbmRpZgogCitNZWRpYVBsYXllckZhY3Rv
cnkqIE1lZGlhUGxheWVyOjpuZXh0QmVzdE1lZGlhRW5naW5lKE1lZGlhUGxheWVyRmFjdG9yeSog
Y3VycmVudCkgY29uc3QKK3sKKyAgICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBhcmFt
ZXRlcnM7CisgICAgcGFyYW1ldGVycy50eXBlID0gbV9jb250ZW50TUlNRVR5cGU7CisgICAgcGFy
YW1ldGVycy5jb2RlY3MgPSBtX2NvbnRlbnRUeXBlQ29kZWNzOworICAgIHBhcmFtZXRlcnMudXJs
ID0gbV91cmw7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICBwYXJhbWV0ZXJzLmtl
eVN5c3RlbSA9IG1fa2V5U3lzdGVtOworI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkK
KyAgICBwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UgPSAhIW1fbWVkaWFTb3VyY2U7CisjZW5kaWYK
KworICAgIHJldHVybiBiZXN0TWVkaWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyhwYXJhbWV0
ZXJzLCBjdXJyZW50KTsKK30KKwogdm9pZCBNZWRpYVBsYXllcjo6bG9hZFdpdGhOZXh0TWVkaWFF
bmdpbmUoTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQogewogICAgIE1lZGlhUGxheWVyRmFj
dG9yeSogZW5naW5lID0gMDsKIAogICAgIGlmICghbV9jb250ZW50TUlNRVR5cGUuaXNFbXB0eSgp
KQotICAgICAgICBlbmdpbmUgPSBiZXN0TWVkaWFFbmdpbmVGb3JUeXBlQW5kQ29kZWNzKG1fY29u
dGVudE1JTUVUeXBlLCBtX2NvbnRlbnRUeXBlQ29kZWNzLCBtX2tleVN5c3RlbSwgbV91cmwsIGN1
cnJlbnQpOworICAgICAgICBlbmdpbmUgPSBuZXh0QmVzdE1lZGlhRW5naW5lKGN1cnJlbnQpOwog
CiAgICAgLy8gSWYgbm8gTUlNRSB0eXBlIGlzIHNwZWNpZmllZCBvciB0aGUgdHlwZSB3YXMgaW5m
ZXJyZWQgZnJvbSB0aGUgZmlsZSBleHRlbnNpb24sIGp1c3QgdXNlIHRoZSBuZXh0IGVuZ2luZS4K
ICAgICBpZiAoIWVuZ2luZSAmJiAobV9jb250ZW50TUlNRVR5cGUuaXNFbXB0eSgpIHx8IG1fY29u
dGVudE1JTUVUeXBlV2FzSW5mZXJyZWRGcm9tRXh0ZW5zaW9uKSkKQEAgLTczMywxOCArNzQzLDI3
IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwKIAogTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBN
ZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBNZWRpYVBsYXll
clN1cHBvcnRzVHlwZUNsaWVudCogY2xpZW50KQogewotICAgIFN0cmluZyB0eXBlID0gY29udGVu
dFR5cGUudHlwZSgpLmxvd2VyKCk7CisgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBw
YXJhbWV0ZXJzOworICAgIHBhcmFtZXRlcnMudHlwZSA9IGNvbnRlbnRUeXBlLnR5cGUoKS5sb3dl
cigpOwogICAgIC8vIFRoZSBjb2RlY3Mgc3RyaW5nIGlzIG5vdCBsb3dlci1jYXNlZCBiZWNhdXNl
IE1QNCB2YWx1ZXMgYXJlIGNhc2Ugc2Vuc2l0aXZlCiAgICAgLy8gcGVyIGh0dHA6Ly90b29scy5p
ZXRmLm9yZy9odG1sL3JmYzQyODEjcGFnZS03LgotICAgIFN0cmluZyB0eXBlQ29kZWNzID0gY29u
dGVudFR5cGUucGFyYW1ldGVyKGNvZGVjcygpKTsKLSAgICBTdHJpbmcgc3lzdGVtID0ga2V5U3lz
dGVtLmxvd2VyKCk7CisgICAgcGFyYW1ldGVycy5jb2RlY3MgPSBjb250ZW50VHlwZS5wYXJhbWV0
ZXIoY29kZWNzKCkpOworICAgIHBhcmFtZXRlcnMudXJsID0gdXJsOworI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCisgICAgcGFyYW1ldGVycy5rZXlTeXN0ZW0gPSBrZXlTeXN0ZW0ubG93ZXIo
KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGtleVN5c3RlbSk7CisjZW5kaWYKKyNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQorICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IGZhbHNlOwor
I2VuZGlmCiAKICAgICAvLyA0LjguMTAuMyBNSU1FIHR5cGVzIC0gVGhlIGNhblBsYXlUeXBlKHR5
cGUpIG1ldGhvZCBtdXN0IHJldHVybiB0aGUgZW1wdHkgc3RyaW5nIGlmIHR5cGUgaXMgYSB0eXBl
IHRoYXQgdGhlIAogICAgIC8vIHVzZXIgYWdlbnQga25vd3MgaXQgY2Fubm90IHJlbmRlciBvciBp
cyB0aGUgdHlwZSAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIgotICAgIGlmICh0eXBlID09IGFw
cGxpY2F0aW9uT2N0ZXRTdHJlYW0oKSkKKyAgICBpZiAocGFyYW1ldGVycy50eXBlID09IGFwcGxp
Y2F0aW9uT2N0ZXRTdHJlYW0oKSkKICAgICAgICAgcmV0dXJuIElzTm90U3VwcG9ydGVkOwogCi0g
ICAgTWVkaWFQbGF5ZXJGYWN0b3J5KiBlbmdpbmUgPSBiZXN0TWVkaWFFbmdpbmVGb3JUeXBlQW5k
Q29kZWNzKHR5cGUsIHR5cGVDb2RlY3MsIHN5c3RlbSwgdXJsKTsKKyAgICBNZWRpYVBsYXllckZh
Y3RvcnkqIGVuZ2luZSA9IGJlc3RNZWRpYUVuZ2luZUZvclN1cHBvcnRQYXJhbWV0ZXJzKHBhcmFt
ZXRlcnMpOwogICAgIGlmICghZW5naW5lKQogICAgICAgICByZXR1cm4gSXNOb3RTdXBwb3J0ZWQ7
CiAKQEAgLTc2NSwxMiArNzg0LDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBs
YXllcjo6c3VwcG9ydHNUeXBlKGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHkKICAgICBVTlVT
RURfUEFSQU0oY2xpZW50KTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkg
fHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKLSAgICByZXR1cm4gZW5naW5lLT5zdXBwb3J0
c1R5cGVBbmRDb2RlY3ModHlwZSwgdHlwZUNvZGVjcywgc3lzdGVtLCB1cmwpOwotI2Vsc2UKLSAg
ICBBU1NFUlQoc3lzdGVtLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIGVuZ2luZS0+c3VwcG9ydHNU
eXBlQW5kQ29kZWNzKHR5cGUsIHR5cGVDb2RlY3MsIHVybCk7Ci0jZW5kaWYKKyAgICByZXR1cm4g
ZW5naW5lLT5zdXBwb3J0c1R5cGVBbmRDb2RlY3MocGFyYW1ldGVycyk7CiB9CiAKIHZvaWQgTWVk
aWFQbGF5ZXI6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpCkBAIC05
NDYsNyArOTYwLDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6bmV0d29ya1N0YXRlQ2hhbmdlZCgpCiAg
ICAgaWYgKG1fcHJpdmF0ZS0+bmV0d29ya1N0YXRlKCkgPj0gRm9ybWF0RXJyb3IKICAgICAgICAg
JiYgbV9wcml2YXRlLT5yZWFkeVN0YXRlKCkgPCBIYXZlTWV0YWRhdGEKICAgICAgICAgJiYgaW5z
dGFsbGVkTWVkaWFFbmdpbmVzKCkuc2l6ZSgpID4gMSkgewotICAgICAgICBpZiAobV9jb250ZW50
TUlNRVR5cGUuaXNFbXB0eSgpIHx8IGJlc3RNZWRpYUVuZ2luZUZvclR5cGVBbmRDb2RlY3MobV9j
b250ZW50TUlNRVR5cGUsIG1fY29udGVudFR5cGVDb2RlY3MsIG1fa2V5U3lzdGVtLCBtX3VybCwg
bV9jdXJyZW50TWVkaWFFbmdpbmUpKSB7CisgICAgICAgIGlmIChtX2NvbnRlbnRNSU1FVHlwZS5p
c0VtcHR5KCkgfHwgbmV4dEJlc3RNZWRpYUVuZ2luZShtX2N1cnJlbnRNZWRpYUVuZ2luZSkpIHsK
ICAgICAgICAgICAgIG1fcmVsb2FkVGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaAppbmRleCBiM2Q4ODQ0Nzc4NTFlOGM4NDFjYzliNGNkZGQ4Mzg0NWRhYmFh
MGMwLi41ZmFmOWRjNWE1MjBlODVmNjk1YmFmNGM5MDMwMGViMzY2YjBkZTBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTQ5MCw2ICs0
OTAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJD
bGllbnQqKTsKKyAgICBNZWRpYVBsYXllckZhY3RvcnkqIG5leHRCZXN0TWVkaWFFbmdpbmUoTWVk
aWFQbGF5ZXJGYWN0b3J5KikgY29uc3Q7CiAgICAgdm9pZCBsb2FkV2l0aE5leHRNZWRpYUVuZ2lu
ZShNZWRpYVBsYXllckZhY3RvcnkqKTsKICAgICB2b2lkIHJlbG9hZFRpbWVyRmlyZWQoVGltZXI8
TWVkaWFQbGF5ZXI+Kik7CiAKQEAgLTUyMywxMyArNTI0LDIxIEBAIHByaXZhdGU6CiAjZW5kaWYK
IH07CiAKK3N0cnVjdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHsKKyAgICBTdHJpbmcg
dHlwZTsKKyAgICBTdHJpbmcgY29kZWNzOworICAgIFVSTCB1cmw7CisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyAgICBTdHJpbmcga2V5U3lzdGVtOworI2VuZGlmCisjaWYgRU5BQkxFKE1F
RElBX1NPVVJDRSkKKyAgICBib29sIGlzTWVkaWFTb3VyY2U7CisjZW5kaWYKK307CisKIHR5cGVk
ZWYgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+ICgqQ3JlYXRlTWVkaWFF
bmdpbmVQbGF5ZXIpKE1lZGlhUGxheWVyKik7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVN1
cHBvcnRlZFR5cGVzKShIYXNoU2V0PFN0cmluZz4mIHR5cGVzKTsKLSNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQotdHlwZWRlZiBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlICgqTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUpKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBj
b25zdCBVUkwmIHVybCk7Ci0jZWxzZQotdHlwZWRlZiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
ICgqTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUpKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBjb2RlY3MsIGNvbnN0IFVSTCYgdXJsKTsKLSNlbmRpZgordHlwZWRlZiBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlICgqTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUpKGNvbnN0IE1lZGlhRW5n
aW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpOwogdHlwZWRlZiB2b2lkICgqTWVkaWFF
bmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSkoVmVjdG9yPFN0cmluZz4mKTsKIHR5cGVkZWYgdm9p
ZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlKSgpOwogdHlwZWRlZiB2b2lkICgqTWVkaWFF
bmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JTaXRlKShjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yu
Y3BwCmluZGV4IGI5NWU5MDQ5ZjdkYmMwZTdhMGFiNjQ3M2FhMjE1YmU2MTI1ODkwMzEuLjIwOGQw
NmFmODgxOTAxNjkwNDllZDhmZjliYjdiMDgzMWJiMGRlOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApA
QCAtODI4LDEyICs4MjgsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Rjo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiBzdXBwb3IKICAgICBzdXBwb3J0
ZWRUeXBlcyA9IG1pbWVUeXBlQ2FjaGUoKTsKIH0gCiAKLU1lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnN1cHBvcnRzVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKQorTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3VwcG9y
dHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7
CiAgICAgLy8gT25seSByZXR1cm4gIklzU3VwcG9ydGVkIiBpZiB0aGVyZSBpcyBubyBjb2RlY3Mg
cGFyYW1ldGVyIGZvciBub3cgYXMgdGhlcmUgaXMgbm8gd2F5IHRvIGFzayBpZiBpdCBzdXBwb3J0
cyBhbgogICAgIC8vIGV4dGVuZGVkIE1JTUUgdHlwZSB1bnRpbCByZGFyOi8vODcyMTcxNSBpcyBm
aXhlZC4KLSAgICBpZiAobWltZVR5cGVDYWNoZSgpLmNvbnRhaW5zKHR5cGUpKQotICAgICAgICBy
ZXR1cm4gY29kZWNzLmlzRW1wdHkoKSA/IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZCA6IE1l
ZGlhUGxheWVyOjpJc1N1cHBvcnRlZDsKKyAgICBpZiAobWltZVR5cGVDYWNoZSgpLmNvbnRhaW5z
KHBhcmFtZXRlcnMudHlwZSkpCisgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzLmNvZGVjcy5pc0Vt
cHR5KCkgPyBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6SXNTdXBw
b3J0ZWQ7CiAKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YuaAppbmRleCA4NThjNTIxYTRkMjdjZmY1YmI3Y2Q5ZGYzYzJiMzAyZTQ4MzYyMTA5Li5j
NDBkZmY3YWI4NTJmMTNjZjYxYjUyNjY0ZGUyMDVkZWVjMDAxOWI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaApA
QCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogICAgIC8vIEVuZ2luZSBzdXBwb3J0CiAgICAgc3Rh
dGljIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGUoTWVkaWFQ
bGF5ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmlu
Zz4mIHR5cGVzKTsKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0
c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJM
Jik7CisgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNv
bnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2
YWlsYWJsZSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbExvYWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaAppbmRleCAzYzRjYjMwOTVmMWQ2ZDk0YWM1NDhkMzAyZDVlN2RjMDQwZGZlZmFkLi42
OWVjYWMyMDQwNjZjNzAyZmNlZTdmN2Y0ZTc1ZWM4NzNjZGE1YjI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oCkBAIC05NywxMCArOTcsNyBAQCBwcml2YXRlOgogICAgIC8vIGVuZ2luZSBzdXBwb3J0
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVh
dGUoTWVkaWFQbGF5ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNo
U2V0PFN0cmluZz4mIHR5cGVzKTsKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywg
Y29uc3QgVVJMJik7Ci0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQV9WMikKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBleHRl
bmRlZFN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNz
LCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJik7Ci0jZW5kaWYKKyAgICBzdGF0
aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVycyYpOwogCiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggOGJkZDQ1NjI1MGZlOTNmMGQwOTc0NGRlNzk1
NDM2MGNjNjlkYTg2NS4uMmJlY2YzY2FhNWJmZjc3N2ZmZGFlMzU0ZjI2NTI2MWNmZDYzN2YzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yMjksMTEgKzIyOSw3IEBAIFBhc3NPd25QdHI8
TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpjcmVhCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJl
Z2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAg
IGlmIChpc0F2YWlsYWJsZSgpKQotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJM
RShFTkNSWVBURURfTUVESUFfVjIpCi0gICAgICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBv
cnRlZFR5cGVzLCBleHRlbmRlZFN1cHBvcnRzVHlwZSwgMCwgMCwgMCk7Ci0jZWxzZQogICAgICAg
ICByZWdpc3RyYXIoY3JlYXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAw
LCAwKTsKLSNlbmRpZgogfQogCiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKE1lZGlhUGxheWVyKiBwbGF5ZXIpCkBA
IC04NzcsNTAgKzg3Myw0OCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgc3VwcAogICAgIHN1cHBvcnRl
ZFR5cGVzID0gbWltZVR5cGVDYWNoZSgpOwogfSAKIAotTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c1R5cGUoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJikKLXsKLSAgICBp
ZiAoIW1pbWVUeXBlQ2FjaGUoKS5jb250YWlucyh0eXBlKSkKLSAgICAgICAgcmV0dXJuIE1lZGlh
UGxheWVyOjpJc05vdFN1cHBvcnRlZDsKLQotICAgIC8vIFRoZSBzcGVjIHNheXM6Ci0gICAgLy8g
IkltcGxlbWVudG9ycyBhcmUgZW5jb3VyYWdlZCB0byByZXR1cm4gIm1heWJlIiB1bmxlc3MgdGhl
IHR5cGUgY2FuIGJlIGNvbmZpZGVudGx5IGVzdGFibGlzaGVkIGFzIGJlaW5nIHN1cHBvcnRlZCBv
ciBub3QuIgotICAgIGlmIChjb2RlY3MuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6Ok1heUJlU3VwcG9ydGVkOwotCi0gICAgTlNTdHJpbmcgKnR5cGVTdHJpbmcgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAOyBjb2RlY3M9XCIlQFwiIiwgKE5TU3RyaW5nICop
dHlwZSwgKE5TU3RyaW5nICopY29kZWNzXTsKLSAgICByZXR1cm4gW0FWVVJMQXNzZXQgaXNQbGF5
YWJsZUV4dGVuZGVkTUlNRVR5cGU6dHlwZVN0cmluZ10gPyBNZWRpYVBsYXllcjo6SXNTdXBwb3J0
ZWQgOiBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ7OwotfQotCi0jaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQogc3RhdGljIGJvb2wga2V5U3lzdGVtSXNTdXBwb3J0ZWQoY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0pCiB7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGtleVN5c3RlbSwg
ImNvbS5hcHBsZS5sc2tkIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2Uoa2V5U3lzdGVtLCAiY29tLmFw
cGxlLmxza2QuMV8wIikpCiAgICAgICAgIHJldHVybiB0cnVlOwotCiAgICAgcmV0dXJuIGZhbHNl
OwogfQorI2VuZGlmCiAKLU1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0
IFVSTCYgdXJsKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFy
YW1ldGVycyYgcGFyYW1ldGVycykKIHsKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAg
IC8vIEZyb206IDxodHRwOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS9lbWUt
djAuMWIvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS5odG1sI2RvbS1jYW5wbGF5dHlw
ZT4KICAgICAvLyBJbiBhZGRpdGlvbiB0byB0aGUgc3RlcHMgaW4gdGhlIGN1cnJlbnQgc3BlY2lm
aWNhdGlvbiwgdGhpcyBtZXRob2QgbXVzdCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKIAogICAg
IC8vIDEuIENoZWNrIHdoZXRoZXIgdGhlIEtleSBTeXN0ZW0gaXMgc3VwcG9ydGVkIHdpdGggdGhl
IHNwZWNpZmllZCBjb250YWluZXIgYW5kIGNvZGVjIHR5cGUocykgYnkgZm9sbG93aW5nIHRoZSBz
dGVwcyBmb3IgdGhlIGZpcnN0IG1hdGNoaW5nIGNvbmRpdGlvbiBmcm9tIHRoZSBmb2xsb3dpbmcg
bGlzdDoKICAgICAvLyAgICBJZiBrZXlTeXN0ZW0gaXMgbnVsbCwgY29udGludWUgdG8gdGhlIG5l
eHQgc3RlcC4KLSAgICBpZiAoa2V5U3lzdGVtLmlzTnVsbCgpIHx8IGtleVN5c3RlbS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBzdXBwb3J0c1R5cGUodHlwZSwgY29kZWNzLCB1cmwpOworICAg
IGlmICghcGFyYW1ldGVycy5rZXlTeXN0ZW0uaXNOdWxsKCkgJiYgIXBhcmFtZXRlcnMua2V5U3lz
dGVtLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBJZiBrZXlTeXN0ZW0gY29udGFpbnMgYW4gdW5y
ZWNvZ25pemVkIG9yIHVuc3VwcG9ydGVkIEtleSBTeXN0ZW0sIHJldHVybiB0aGUgZW1wdHkgc3Ry
aW5nCisgICAgICAgIGlmICgha2V5U3lzdGVtSXNTdXBwb3J0ZWQocGFyYW1ldGVycy5rZXlTeXN0
ZW0pKQorICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIAot
ICAgIC8vIElmIGtleVN5c3RlbSBjb250YWlucyBhbiB1bnJlY29nbml6ZWQgb3IgdW5zdXBwb3J0
ZWQgS2V5IFN5c3RlbSwgcmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcKLSAgICBpZiAoIWtleVN5c3Rl
bUlzU3VwcG9ydGVkKGtleVN5c3RlbSkpCisgICAgICAgIC8vIElmIHRoZSBLZXkgU3lzdGVtIHNw
ZWNpZmllZCBieSBrZXlTeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBkZWNyeXB0aW5nIHRoZSBjb250
YWluZXIgYW5kL29yIGNvZGVjIHNwZWNpZmllZCBpbiB0aGUgcmVzdCBvZiB0aGUgdHlwZSBzdHJp
bmcuCisgICAgICAgIC8vIChBVkZvdW5kYXRpb24gZG9lcyBub3QgcHJvdmlkZSBhbiBBUEkgd2hp
Y2ggd291bGQgYWxsb3cgdXMgdG8gZGV0ZXJtaW5lIHRoaXMsIHNvIHRoaXMgaXMgYSBuby1vcCkK
KyAgICB9CisKKyAgICAvLyAyLiBSZXR1cm4gIm1heWJlIiBvciAicHJvYmFibHkiIGFzIGFwcHJv
cHJpYXRlIHBlciB0aGUgZXhpc3Rpbmcgc3BlY2lmaWNhdGlvbiBvZiBjYW5QbGF5VHlwZSgpLgor
I2VuZGlmCisKKyAgICBpZiAoIW1pbWVUeXBlQ2FjaGUoKS5jb250YWlucyhwYXJhbWV0ZXJzLnR5
cGUpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwogCi0gICAg
Ly8gSWYgdGhlIEtleSBTeXN0ZW0gc3BlY2lmaWVkIGJ5IGtleVN5c3RlbSBkb2VzIG5vdCBzdXBw
b3J0IGRlY3J5cHRpbmcgdGhlIGNvbnRhaW5lciBhbmQvb3IgY29kZWMgc3BlY2lmaWVkIGluIHRo
ZSByZXN0IG9mIHRoZSB0eXBlIHN0cmluZy4KLSAgICAvLyAoQVZGb3VuZGF0aW9uIGRvZXMgbm90
IHByb3ZpZGUgYW4gQVBJIHdoaWNoIHdvdWxkIGFsbG93IHVzIHRvIGRldGVybWluZSB0aGlzLCBz
byB0aGlzIGlzIGEgbm8tb3ApCisgICAgLy8gVGhlIHNwZWMgc2F5czoKKyAgICAvLyAiSW1wbGVt
ZW50b3JzIGFyZSBlbmNvdXJhZ2VkIHRvIHJldHVybiAibWF5YmUiIHVubGVzcyB0aGUgdHlwZSBj
YW4gYmUgY29uZmlkZW50bHkgZXN0YWJsaXNoZWQgYXMgYmVpbmcgc3VwcG9ydGVkIG9yIG5vdC4i
CisgICAgaWYgKHBhcmFtZXRlcnMuY29kZWNzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKIAotICAgIC8vIDIuIFJldHVybiAibWF5YmUiIG9y
ICJwcm9iYWJseSIgYXMgYXBwcm9wcmlhdGUgcGVyIHRoZSBleGlzdGluZyBzcGVjaWZpY2F0aW9u
IG9mIGNhblBsYXlUeXBlKCkuCi0gICAgcmV0dXJuIHN1cHBvcnRzVHlwZSh0eXBlLCBjb2RlY3Ms
IHVybCk7CisgICAgTlNTdHJpbmcgKnR5cGVTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIiVAOyBjb2RlY3M9XCIlQFwiIiwgKE5TU3RyaW5nICopcGFyYW1ldGVycy50eXBlLCAo
TlNTdHJpbmcgKilwYXJhbWV0ZXJzLmNvZGVjc107CisgICAgcmV0dXJuIFtBVlVSTEFzc2V0IGlz
UGxheWFibGVFeHRlbmRlZE1JTUVUeXBlOnR5cGVTdHJpbmddID8gTWVkaWFQbGF5ZXI6OklzU3Vw
cG9ydGVkIDogTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOzsKIH0KIAorI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFJl
c291cmNlTG9hZGluZ1JlcXVlc3QqIGF2UmVxdWVzdCkKIHsKICAgICBTdHJpbmcgc2NoZW1lID0g
W1tbYXZSZXF1ZXN0IHJlcXVlc3RdIFVSTF0gc2NoZW1lXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxh
Y2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwCmluZGV4IDk2MDYxMGU5NTY4MjFhMmU4
OWJhMWYxMTZkODhkNzA1N2UxNzllZDQuLjc4MTkyZDcyYWVhODhmOWQ2NGY4ZDJmNTk2OGM2NWVm
YzVjZmEyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFj
a0JlcnJ5LmNwcApAQCAtNjcsOSArNjcsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6Omdl
dFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8V1RGOjpTdHJpbmc+JiB0eXBlcykKICAgICAgICAgdHlw
ZXMuYWRkKCppKTsKIH0KIAotTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclBy
aXZhdGU6OnN1cHBvcnRzVHlwZShjb25zdCBXVEY6OlN0cmluZyYgdHlwZSwgY29uc3QgV1RGOjpT
dHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJiB1cmwpCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IE1lZGlhUGxheWVyUHJpdmF0ZTo6c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9y
dFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgYm9vbCBpc1JUU1AgPSB1cmwucHJvdG9j
b2xJcygicnRzcCIpOworICAgIGJvb2wgaXNSVFNQID0gcGFyYW1ldGVycy51cmwucHJvdG9jb2xJ
cygicnRzcCIpOworICAgIGNvbnN0IFN0cmluZyYgdHlwZSA9IHBhcmFtZXRlcnMudHlwZTsKIAog
ICAgIGlmICghaXNSVFNQICYmICh0eXBlLmlzTnVsbCgpIHx8IHR5cGUuaXNFbXB0eSgpKSkgewog
ICAgICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllciBkb2VzIG5vdCBzdXBwb3J0IHR5cGU7IHR5
cGUgaXMgbnVsbCBvciBlbXB0eS4iKTsKQEAgLTc5LDcgKzgwLDcgQEAgTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGU6OnN1cHBvcnRzVHlwZShjb25zdCBXVEY6OlN0
cmluZyYgdHkKICAgICAvLyBzcGVjIHNheXMgd2Ugc2hvdWxkIG5vdCByZXR1cm4gInByb2JhYmx5
IiBpZiB0aGUgY29kZWNzIHN0cmluZyBpcyBlbXB0eQogICAgIGlmIChpc1JUU1AgfHwgUGxhdGZv
cm1QbGF5ZXI6Om1pbWVUeXBlU3VwcG9ydGVkKHR5cGUuYXNjaWkoKS5kYXRhKCkpKSB7CiAgICAg
ICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyIHN1cHBvcnRzIHR5cGUgJXMuIiwgaXNSVFNQID8g
InJ0c3AiIDogdHlwZS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiBjb2RlY3MuaXNF
bXB0eSgpID8gTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OklzU3Vw
cG9ydGVkOworICAgICAgICByZXR1cm4gcGFyYW1ldGVycy5jb2RlY3MuaXNFbXB0eSgpID8gTWVk
aWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkOwogICAg
IH0KICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllciBkb2VzIG5vdCBzdXBwb3J0IHR5cGUgJXMu
IiwgdHlwZS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1
cHBvcnRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5
LmgKaW5kZXggNTQ3YjFkNTIwMDRlMzRmNWNkODAyODdkOTFiMjBiMjRkN2M1OWM4Yi4uNzdmZTI4
NjI3YmRkZTIwYzJjOWZiOTBlZDFhZGM3MWE5YjVhMTNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFj
a0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3Jl
YXRlKE1lZGlhUGxheWVyKik7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNZWRpYUVuZ2luZShN
ZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMo
SGFzaFNldDxXVEY6OlN0cmluZz4mKTsKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYs
IGNvbnN0IFVSTCYpOworICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBv
cnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAgICAgc3RhdGlj
IHZvaWQgbm90aWZ5QXBwQWN0aXZhdGVkRXZlbnQoYm9vbCk7CiAgICAgc3RhdGljIHZvaWQgc2V0
Q2VydGlmaWNhdGVQYXRoKGNvbnN0IFdURjo6U3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggZTdlMmQ5YjVkMWU2N2ExNzBl
OTdlYTYyZDk0Y2YxYmM3MzE0ZWU5My4uYmI3Yjg2MmYwYzZmN2M4MTQ0OWIzOGFkYzhlNmRhMDU2
Y2E4MTlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKQEAgLTE3MDksMTQgKzE3MDksMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpCiAgICAgdHlw
ZXMgPSBtaW1lVHlwZUNhY2hlKCk7CiB9CiAKLU1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJikKK01lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVk
aWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBpZiAodHlwZS5p
c051bGwoKSB8fCB0eXBlLmlzRW1wdHkoKSkKKyAgICBpZiAocGFyYW1ldGVycy50eXBlLmlzTnVs
bCgpIHx8IHBhcmFtZXRlcnMudHlwZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBNZWRpYVBs
YXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiAKICAgICAvLyBzcGVjIHNheXMgd2Ugc2hvdWxkIG5vdCBy
ZXR1cm4gInByb2JhYmx5IiBpZiB0aGUgY29kZWNzIHN0cmluZyBpcyBlbXB0eQotICAgIGlmICht
aW1lVHlwZUNhY2hlKCkuY29udGFpbnModHlwZSkpCi0gICAgICAgIHJldHVybiBjb2RlY3MuaXNF
bXB0eSgpID8gTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OklzU3Vw
cG9ydGVkOworICAgIGlmIChtaW1lVHlwZUNhY2hlKCkuY29udGFpbnMocGFyYW1ldGVycy50eXBl
KSkKKyAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnMuY29kZWNzLmlzRW1wdHkoKSA/IE1lZGlhUGxh
eWVyOjpNYXlCZVN1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZDsKICAgICByZXR1
cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggNTk2MWRhNTA3NDUyYTdhOGUxZGNkYmI4
YjhkNTk3YThiM2VjMzFiZS4uMWEzNTVjZDU5ZTA5MjZkNzA3ZmE1MTZiY2ZmODYxNWFjMGRhYjdj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAt
MTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGUoTWVkaWFQbGF5ZXIqKTsKIAogICAgIHN0YXRpYyB2
b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYpOwotICAgIHN0YXRpYyBNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyYpOwogCiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQuaAppbmRleCBmMzBkMTE2ZDlhZjFkNzA0NGViMWZhNmRhNzcwNTcyNzk0ZmE5
YWNkLi40N2RiOGFmMzAxNjliNzBmMjBkNTgxMmJhOTkxYjZjMzFhMmI1ODQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQuaApAQCAtNzUsMTAgKzc1LDcgQEAgcHJpdmF0ZToKICAgICAvLyBl
bmdpbmUgc3VwcG9ydAogICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUlu
dGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9y
dGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7Ci0gICAgc3RhdGljIE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBjb2RlY3MsIGNvbnN0IFVSTCYpOwotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8
IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCi0gICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYpOwotI2Vu
ZGlmCisgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNv
bnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKIAogICAgIHN0YXRpYyB2b2lkIGdl
dFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+Jik7CiAgICAgc3RhdGljIHZvaWQgY2xl
YXJNZWRpYUNhY2hlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggZjkzNTFh
NzBhY2ZlZTFhNGZhMzkxMDIxOTIxZTJkNzA2NThiMzZkYi4uN2I3NGU3ZGVlZDI3OWZmODEyZDYw
ZTMyODk3MTIwN2Q5NDRjMTJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAt
MTg5LDExICsxODksNyBAQCBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4g
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNyZWF0ZShNZWRpYVBsYQogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVRVEtpdDo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciBy
ZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0jaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKLSAgICAgICAgcmVnaXN0cmFy
KGNyZWF0ZSwgZ2V0U3VwcG9ydGVkVHlwZXMsIGV4dGVuZGVkU3VwcG9ydHNUeXBlLCBnZXRTaXRl
c0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKTsK
LSNlbHNlCiAgICAgICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBw
b3J0c1R5cGUsIGdldFNpdGVzSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVk
aWFDYWNoZUZvclNpdGUpOwotI2VuZGlmCiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVRVEtpdChNZWRpYVBsYXllciogcGxheWVyKQpAQCAtMTQ2MiwzNCAr
MTQ1OCwyOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpnZXRTdXBwb3J0ZWRUeXBl
cyhIYXNoU2V0PFN0cmluZz4mIHN1cHBvcnRlZFR5cGVzKQogICAgIGNvbmNhdGVuYXRlSGFzaFNl
dHMoc3VwcG9ydGVkVHlwZXMsIG1pbWVDb21tb25UeXBlc0NhY2hlKCkpOwogfQogCi1NZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzdXBwb3J0c1R5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJikKK01l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1cHBvcnRz
VHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgLy8gUVRLaXQgZG9lcyBub3Qgc3VwcG9y
dCBhbnkgZW5jcnl0cGVkIG1lZGlhLCBzbyByZXR1cm4gSXNOb3RTdXBwb3J0ZWQgaWYgdGhlIGtl
eVN5c3RlbSBpcyBub24tTlVMTDoKKyAgICBpZiAoIXBhcmFtZXRlcnMua2V5U3lzdGVtLmlzTnVs
bCgpICYmICFwYXJhbWV0ZXJzLmtleVN5c3RlbS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBN
ZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisjZW5kaWYKKwogICAgIC8vIE9ubHkgcmV0dXJu
ICJJc1N1cHBvcnRlZCIgaWYgdGhlcmUgaXMgbm8gY29kZWNzIHBhcmFtZXRlciBmb3Igbm93IGFz
IHRoZXJlIGlzIG5vIHdheSB0byBhc2sgUVQgaWYgaXQgc3VwcG9ydHMgYW4KICAgICAvLyBleHRl
bmRlZCBNSU1FIHR5cGUgeWV0LgogCiAgICAgLy8gRHVlIHRvIDxyZGFyOi8vcHJvYmxlbS8xMDc3
NzA1OT4sIGF2b2lkIGNhbGxpbmcgdGhlIG1pbWUgdHlwZXMgY2FjaGUgZnVuY3Rpb25zIGlmIGF0
CiAgICAgLy8gYWxsIHBvc3NpYmxlOgotICAgIGlmIChzaG91bGRSZWplY3RNSU1FVHlwZSh0eXBl
KSkKKyAgICBpZiAoc2hvdWxkUmVqZWN0TUlNRVR5cGUocGFyYW1ldGVycy50eXBlKSkKICAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIAogICAgIC8vIFdlIGNoZWNr
IHRoZSAibW9kZXJuIiB0eXBlIGNhY2hlIGZpcnN0LCBhcyBpdCBkb2Vzbid0IHJlcXVpcmUgUVRL
aXRTZXJ2ZXIgdG8gc3RhcnQuCi0gICAgaWYgKG1pbWVNb2Rlcm5UeXBlc0NhY2hlKCkuY29udGFp
bnModHlwZSkgfHwgbWltZUNvbW1vblR5cGVzQ2FjaGUoKS5jb250YWlucyh0eXBlKSkKLSAgICAg
ICAgcmV0dXJuIGNvZGVjcy5pc0VtcHR5KCkgPyBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQg
OiBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQ7CisgICAgaWYgKG1pbWVNb2Rlcm5UeXBlc0NhY2hl
KCkuY29udGFpbnMocGFyYW1ldGVycy50eXBlKSB8fCBtaW1lQ29tbW9uVHlwZXNDYWNoZSgpLmNv
bnRhaW5zKHBhcmFtZXRlcnMudHlwZSkpCisgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzLmNvZGVj
cy5pc0VtcHR5KCkgPyBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6
SXNTdXBwb3J0ZWQ7CiAKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwog
fQogCi0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QV9WMikKLU1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6
OmV4dGVuZGVkU3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBj
b2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBVUkwmIHVybCkKLXsKLSAgICAv
LyBRVEtpdCBkb2VzIG5vdCBzdXBwb3J0IGFueSBlbmNyeXRwZWQgbWVkaWEsIHNvIHJldHVybiBJ
c05vdFN1cHBvcnRlZCBpZiB0aGUga2V5U3lzdGVtIGlzIG5vbi1OVUxMOgotICAgIGlmICgha2V5
U3lzdGVtLmlzTnVsbCgpIHx8ICFrZXlTeXN0ZW0uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
TWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwotCi0gICAgcmV0dXJuIHN1cHBvcnRzVHlwZSh0
eXBlLCBjb2RlY3MsIHVybCk7OwotfQotI2VuZGlmCi0KIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQ6OmlzQXZhaWxhYmxlKCkKIHsKICAgICAvLyBPbiAxMC41IGFuZCBoaWdoZXIsIFF1aWNr
VGltZSB3aWxsIGFsd2F5cyBiZSBuZXcgZW5vdWdoIGZvciA8dmlkZW8+IGFuZCA8YXVkaW8+IHN1
cHBvcnQsIHNvIHdlIGp1c3QgY2hlY2sgdGhhdCB0aGUgZnJhbWV3b3JrIGNhbiBiZSBsb2FkZWQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQ
bGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29u
dGV4dC5jcHAKaW5kZXggOWRkMjVmMjQ5MjY5ZWFhZGQ3NjQzZmIyZDU2YTU0YmQ0ZGY5MDc0Yi4u
MjBhNDQwNDZmYzEwNGJkNzcyMTM5MzkxNzQ5ZDAxZWQyNjUzZWZlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNr
VGltZVZpc3VhbENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcApAQCAt
MTAxNSwxMSArMTAxNSwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3Vh
bENvbnRleHQ6OmlzQXZhaWxhYmxlKCkKICNlbmRpZgogfQogCi1NZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OnN1cHBvcnRz
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwm
KQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVW
aXN1YWxDb250ZXh0OjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyYgcGFyYW1ldGVycykKIHsKICAgICAvLyBvbmx5IHJldHVybiAiSXNTdXBwb3J0ZWQiIGlm
IHRoZXJlIGlzIG5vIGNvZGVjcyBwYXJhbWV0ZXIgZm9yIG5vdyBhcyB0aGVyZSBpcyBubyB3YXkg
dG8gYXNrIFFUIGlmIGl0IHN1cHBvcnRzIGFuCiAgICAgLy8gIGV4dGVuZGVkIE1JTUUgdHlwZQot
ICAgIHJldHVybiBtaW1lVHlwZUNhY2hlKCkuY29udGFpbnModHlwZSkgPyAoY29kZWNzLmlzRW1w
dHkoKSA/IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpJc1N1cHBv
cnRlZCkgOiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisgICAgcmV0dXJuIG1pbWVUeXBl
Q2FjaGUoKS5jb250YWlucyhwYXJhbWV0ZXJzLnR5cGUpID8gKHBhcmFtZXRlcnMuY29kZWNzLmlz
RW1wdHkoKSA/IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpJc1N1
cHBvcnRlZCkgOiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6TW92aWVDbGllbnQ6Om1vdmllRW5k
ZWQoUVRNb3ZpZSogbW92aWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1
aWNrVGltZVZpc3VhbENvbnRleHQuaAppbmRleCAzOWNjYmEwZWRjNzAyZjNjMzBhNTg0NzVlMjY1
NjJiOTRlNGExZTU3Li4yY2FlOTE3MWRjOTM1YzBjOGE3ZWQzZjI3YzJhMWJiODg4MTc2NzA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5
ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250
ZXh0LmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIC8vIGVuZ2luZSBzdXBwb3J0
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVh
dGUoTWVkaWFQbGF5ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNo
U2V0PFN0cmluZz4mIHR5cGVzKTsKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywg
Y29uc3QgVVJMJik7CisgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9y
dHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMg
Ym9vbCBpc0F2YWlsYWJsZSgpOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvTWVkaWFQ
bGF5ZXJQcml2YXRlV2luQ0UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bmNlL01lZGlhUGxheWVyUHJpdmF0ZVdpbkNFLmgKaW5kZXggNDJmNjczYWJmY2M2NDJhNGMzZmYx
ZTliNjU5OWEzYmRhYjY1MjYxNy4uYTliOGJiMjhiMThiNGIwMTUzY2NlY2M2N2Y1MjE2MjFkNjdk
YWNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2Uv
TWVkaWFQbGF5ZXJQcml2YXRlV2luQ0UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW5jZS9NZWRpYVBsYXllclByaXZhdGVXaW5DRS5oCkBAIC0xMDAsNyArMTAwLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBlbmdpbmUgc3VwcG9ydAogICAgICAg
ICBzdGF0aWMgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShN
ZWRpYVBsYXllciopOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNo
U2V0PFN0cmluZz4mIHR5cGVzKTsKLSAgICAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2Rl
Y3MsIGNvbnN0IFVSTCYpOworICAgICAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOwogICAg
ICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogCiAgICAgICAgIHZpcnR1YWwgU3RyaW5n
IGVuZ2luZURlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gIldpbkNFIjsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>