<?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>109739</bug_id>
          
          <creation_ts>2013-02-13 13:03:22 -0800</creation_ts>
          <short_desc>EME: Add a CDMPrivate implementation using AVFoundation.</short_desc>
          <delta_ts>2013-02-18 13:39:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          <dependson>109702</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>ddorwin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>832236</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-02-13 13:03:22 -0800</bug_when>
    <thetext>EME: Add a CDMPrivate implementation using AVFoundation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832252</commentid>
    <comment_count>1</comment_count>
      <attachid>188161</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-02-13 13:17:53 -0800</bug_when>
    <thetext>Created attachment 188161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835702</commentid>
    <comment_count>2</comment_count>
      <attachid>188933</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-02-18 12:59:07 -0800</bug_when>
    <thetext>Created attachment 188933
Patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835704</commentid>
    <comment_count>3</comment_count>
      <attachid>188934</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-02-18 13:01:13 -0800</bug_when>
    <thetext>Created attachment 188934
Patch

Fixed const issue in CDMSessionAVFoundation::sessionId()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835729</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-02-18 13:39:35 -0800</bug_when>
    <thetext>Committed r143259: &lt;http://trac.webkit.org/changeset/143259&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188161</attachid>
            <date>2013-02-13 13:17:53 -0800</date>
            <delta_ts>2013-02-18 12:59:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109739-20130213131422.patch</filename>
            <type>text/plain</type>
            <size>23840</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGIwMjM5ODFlYTgzZDJk
ZWEzYzAxOTZjYTU1OWVlMGVjNTA2OTAwMC4uYTIzODgwYzZiNDIyZjU4OTFhZjkyNzkwMTY1YjI5
ZTI1MmM4MjI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ5IEBACiAyMDEzLTAyLTEzICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIEVNRTogQWRkIGEgQ0RNUHJp
dmF0ZSBpbXBsZW1lbnRhdGlvbiB1c2luZyBBVkZvdW5kYXRpb24uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3MzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBDRE1Qcml2YXRlIGltcGxlbWVu
dGF0aW9uIHVzaW5nIEFWRm91bmRhdGlvbiwgc2ltaWxhciB0byB0aGUgRU1FIHYxIGltcGxlbWVu
dGF0aW9uCisgICAgICAgIGluIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuIFRo
aXMgcmVxdWlyZXMgcGFzc2luZyB0aGUgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QKKyAg
ICAgICAgZnJvbSB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyBpbnN0YW5j
ZSB0byBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uLiBUbyBkbyBzbworICAgICAgICB3aXRob3V0IGFk
ZGluZyBwbGF0Zm9ybS1zcGVjaWZpYyBBUEkgdG8gTWVkaWFQbGF5ZXIsIGFkZCBhIHN0YXRpYyBt
YXAgZnJvbSBNZWRpYVBsYXllciAtPgorICAgICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDIGluc3RhbmNlcyB0byBiZSB1c2VkIHRvIHZlbmQgdGhlIEFWQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0CisgICAgICAgIHRvIENETVNlc3Npb25BVkZvdW5kYXRpb24uCisKKyAg
ICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjppbnN0YWxsZWRDRE1GYWN0b3JpZXMpOiBBZGQgdGhlIGZhY3RvcnkgZm9yIENETVByaXZhdGVB
VkZvdW5kYXRpb24uCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24uaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQVZGb3VuZGF0aW9uOjpjcmVhdGUp
OiBTaW1wbGUgZmFjdG9yeSBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQVZG
b3VuZGF0aW9uOjp+Q0RNUHJpdmF0ZUFWRm91bmRhdGlvbik6IFNpbXBsZSB2aXJ0dWFsIGRlc3Ry
dWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQVZGb3VuZGF0aW9uOjpjZG0pOiBT
aW1wbGUgZ2V0dGVyLgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUFWRm91bmRhdGlvbjo6
Q0RNUHJpdmF0ZUFWRm91bmRhdGlvbik6IFNpbXBsZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24ubW06IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbjo6fkNETVNlc3Npb25BVkZv
dW5kYXRpb24pOiBTaW1wbGUgZGVzdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZh
dGVBVkZvdW5kYXRpb246OnN1cHBvcnRzS2V5U3l0ZW0pOiBDaGVjayB3aGV0aGVyIHRoZSBnaXZl
biBrZXkgc3lzdGVtIGlzIHN1cHBvcnRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVB
VkZvdW5kYXRpb246OnN1cHBvcnRzTUlNRVR5cGUpOiBDaGVjayB3aGV0aGVyIHRoZSBnaXZlbiBN
SU1FIHR5cGUgaXMgc3VwcG9ydGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUFWRm91
bmRhdGlvbjo6Y3JlYXRlU2Vzc2lvbik6IFJldHVybiBhIG5ldyBDRE1TZXNzaW9uQVZGb3VuZGF0
aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbjo6Q0RNU2Vzc2lv
bkFWRm91bmRhdGlvbik6IFNpbXBsZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkNE
TVNlc3Npb25BVkZvdW5kYXRpb246OmdlbmVyYXRlS2V5UmVxdWVzdCk6IFJldHJpZXZlIHRoZSBB
VkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdAorICAgICAgICAgICAgZnJvbSB0aGUgTWVkaWFQ
bGF5ZXIsIGFuZCB1c2UgaXQgdG8gZ2VuZXJhdGUgYSBrZXkgcmVxdWVzdC4KKyAgICAgICAgKFdl
YkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb246OnJlbGVhc2VLZXlzKTogTm8tb3AuCisgICAg
ICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uOjp1cGRhdGUpOiBBZGQgdGhlIHBh
c3NlZCBpbiBrZXkgdG8gdGhlIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0LgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OnBsYXllclRvUHJpdmF0ZU1hcCk6IExhemlseSBpbnN0YW50aWF0ZSBzdGF0aWMgbWFwLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyk6IFJlZ2lzdGVyIHdpdGggdGhlIHBsYXllclRv
UHJpdmF0ZU1hcC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKTogVW5yZWdpc3Rl
ciBmcm9tIHNhbWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOiBBbHNvIHNlbmQga2V5
TmVlZGVkIGV2ZW50IGluIEVOQ1JZUFRFRF9NRURJQV9WMi4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmV4dHJhY3RLZXlVUklLZXlJREFuZENl
cnRpZmljYXRlRnJvbUluaXREYXRhKTogQ29udmVydCB0aGlzIAorICAgICAgICAgICAgbWV0aG9k
IGZyb20gZmlsZS1zdGF0aWMgdG8gY2xhc3Mgc3RhdGljLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dGFrZVJlcXVlc3RGb3JQbGF5ZXJBbmRL
ZXlVUkkpOiBQdWxsIHRoZSBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdAorICAgICAgICAg
ICAgZnJvbSBtX2tleVVSSVRvUmVxdWVzdE1hcCBhbmQgcmV0dXJuIGl0LCBpZiBwcmVzZW50Lgor
CisyMDEzLTAyLTEzICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCiAgICAgICAg
IEFkZCBhIENETUNsaWVudCBjbGFzcyB3aGljaCBhbGxvd3MgdGhlIENETSB0byBxdWVyeSBmb3Ig
dGhlIGN1cnJlbnRseSBhdHRhY2hlZCBNZWRpYVBsYXllci4KICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTcwMgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggZTk5YmU4M2Y0MjRlNTZjMTcwMmVk
OTc4MTJhNDEzNDJiYWRmMDI5Yy4uOGM3MDdkNGIxYmZkODFmZTc2MmU2MGExY2ViYzAxMDczYThh
NDcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9D
RE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNw
cApAQCAtMzQsNiArMzQsMTAgQEAKICNpbmNsdWRlICJNZWRpYUtleXMuaCIKICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA5MAorI2luY2x1ZGUgIkNETVByaXZhdGVBVkZvdW5kYXRpb24uaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBDRE1GYWN0b3J5IHsKQEAgLTU3LDYgKzYx
LDEwIEBAIHN0YXRpYyBWZWN0b3I8Q0RNRmFjdG9yeSo+JiBpbnN0YWxsZWRDRE1GYWN0b3JpZXMo
KQogICAgICAgICBxdWVyaWVkQ0RNcyA9IHRydWU7CiAKICAgICAgICAgLy8gRklYTUU6IGluaXRp
YWxpemUgc3BlY2lmaWMgVUEgQ0RNcy4gaHR0cDovL3dlYmtpdC5vcmcvYi8xMDkzMTgsIGh0dHA6
Ly93ZWJraXQub3JnL2IvMTA5MzIwCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDkwCisgICAgICAgIGNkbXMuYXBwZW5kKG5ldyBDRE1GYWN0b3J5KENETVByaXZhdGVB
VkZvdW5kYXRpb246OmNyZWF0ZSwgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9ydHNLZXlT
eXRlbSkpOworI2VuZGlmCisKICAgICB9CiAKICAgICByZXR1cm4gY2RtczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCmluZGV4IDQzMWNlZmM1MjQyNzczZmE1
ZjliYWIzNmQ1MmY1MzU4ZWU3YWNmZWYuLmI1ZWY1YTg3Mzk3NmE3ZDk4YTgxNTFkMjVkYTU5NDhh
MDBlMWY4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0u
aApAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAKIGNsYXNzIENETSB7CiBwdWJsaWM6CisKKyAg
ICBlbnVtIENETUVycm9yQ29kZSB7IFVua25vd25FcnJvciA9IDEsIENsaWVudEVycm9yLCBTZXJ2
aWNlRXJyb3IsIE91dHB1dEVycm9yLCBIYXJkd2FyZUNoYW5nZUVycm9yLCBEb21haW5FcnJvciB9
OwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpOwogICAg
IHN0YXRpYyBQYXNzT3duUHRyPENETT4gY3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsK
ICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckNETUZhY3RvcnkoQ3JlYXRlQ0RNLCBDRE1TdXBwb3J0
c0tleVN5c3RlbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlMzUz
NDNiODJhZjJhMWFkZDUwZjRiMjY0NmE0ZjQxZWNjYWYzMTIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRp
b24uaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDRE1Qcml2YXRlQVZG
b3VuZGF0aW9uX2gKKyNkZWZpbmUgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbl9oCisKKyNpbmNsdWRl
ICJDRE1Qcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBDRE07CisKK2NsYXNzIENETVByaXZhdGVBVkZvdW5kYXRpb24gOiBwdWJsaWMg
Q0RNUHJpdmF0ZUludGVyZmFjZSB7CitwdWJsaWM6CisgICAgLy8gQ0RNRmFjdG9yeSBzdXBwb3J0
OgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENETVByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShDRE0q
IGNkbSkgeyByZXR1cm4gYWRvcHRQdHIobmV3IENETVByaXZhdGVBVkZvdW5kYXRpb24oY2RtKSk7
IH0KKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5dGVtKGNvbnN0IFN0cmluZyYpOworCisg
ICAgdmlydHVhbCB+Q0RNUHJpdmF0ZUFWRm91bmRhdGlvbigpIHsgfQorCisgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBQYXNzT3duUHRyPENETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBPVkVSUklE
RTsKKworICAgIENETSogY2RtKCkgY29uc3QgeyByZXR1cm4gbV9jZG07IH0KKworcHJvdGVjdGVk
OgorICAgIENETVByaXZhdGVBVkZvdW5kYXRpb24oQ0RNKiBjZG0pIDogbV9jZG0oY2RtKSB7IH0K
KyAgICBDRE0qIG1fY2RtOworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmIC8vIENETVByaXZh
dGVBVkZvdW5kYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9DRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkNjBjMzE1OGVhMDAwNDBiMTJhZTIxZjc2OWI0ZDdiOTJmMzBiMTgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZv
dW5kYXRpb24ubW0KQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIkNETVByaXZhdGVBVkZvdW5kYXRpb24uaCIKKworI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUFfVjIpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTA5MAorCisjaW1wb3J0ICJDRE0uaCIKKyNpbXBvcnQgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbXBv
cnQgIk1lZGlhUGxheWVyLmgiCisjaW1wb3J0ICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmgiCisjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgorI2ltcG9ydCAiVVVJRC5oIgorI2lt
cG9ydCA8QVZGb3VuZGF0aW9uL0FWRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8b2JqYy9vYmpjLXJ1
bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9VbnVzZWRQYXJhbS5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIENETVNlc3Npb25BVkZvdW5kYXRpb24gOiBwdWJsaWMgQ0RNU2Vzc2lvbiB7
CitwdWJsaWM6CisgICAgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbihDRE1Qcml2YXRlQVZGb3VuZGF0
aW9uKiBwYXJlbnQpOworICAgIHZpcnR1YWwgfkNETVNlc3Npb25BVkZvdW5kYXRpb24oKSB7IH0K
KworICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBPVkVSUklERSB7IHJldHVy
biBtX3Nlc3Npb25JZDsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBnZW5l
cmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERh
dGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVu
c2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWxl
YXNlS2V5cygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGUoVWludDhBcnJheSos
IFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNv
ZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpIE9WRVJSSURFOworCitwcm90ZWN0ZWQ6Cisg
ICAgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbiogbV9wYXJlbnQ7CisgICAgU3RyaW5nIG1fc2Vzc2lv
bklkOworICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9yZXF1
ZXN0OworfTsKKworU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5kYXRpb24pCitT
T0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0KQorU09GVF9MSU5LX0NMQVNT
KEFWRm91bmRhdGlvbiwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QpCisjZGVmaW5lIEFW
VVJMQXNzZXQgZ2V0QVZVUkxBc3NldENsYXNzKCkKKyNkZWZpbmUgQVZBc3NldFJlc291cmNlTG9h
ZGluZ1JlcXVlc3QgZ2V0QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QoKQorCisKK2Jvb2wg
Q0RNUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9ydHNLZXlTeXRlbShjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSkKK3sKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2Uoa2V5U3lzdGVtLCAiY29t
LmFwcGxlLmZwcyIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGtleVN5c3RlbSwgImNvbS5hcHBsZS5m
cHMuMV8wIik7Cit9CisKK2Jvb2wgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9ydHNNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIHJldHVybiBbQVZVUkxBc3NldCBp
c1BsYXlhYmxlRXh0ZW5kZWRNSU1FVHlwZTptaW1lVHlwZV07Cit9CisKK1Bhc3NPd25QdHI8Q0RN
U2Vzc2lvbj4gQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbjo6Y3JlYXRlU2Vzc2lvbigpCit7CisgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uKHRoaXMpKTsKK30KKwor
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbjo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbihDRE1Qcml2YXRl
QVZGb3VuZGF0aW9uKiBwYXJlbnQpCisgICAgOiBtX3BhcmVudChwYXJlbnQpCisgICAgLCBtX3Nl
c3Npb25JZChjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpCit7Cit9CisKK1Bhc3NSZWZQdHI8
VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3Rp
bmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNpZ25lZCBsb25nJiBzeXN0
ZW1Db2RlKQoreworICAgIFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7CisKKyAgICBNZWRpYVBsYXll
ciogbWVkaWFQbGF5ZXIgPSBtX3BhcmVudC0+Y2RtKCktPm1lZGlhUGxheWVyKCk7CisgICAgaWYg
KCFtZWRpYVBsYXllcikgeworICAgICAgICBlcnJvckNvZGUgPSBOT1RfU1VQUE9SVEVEX0VSUjsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgU3RyaW5nIGtleVVSSTsKKyAgICBTdHJp
bmcga2V5SUQ7CisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGNlcnRpZmljYXRlOworICAgIGlmICgh
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZXh0cmFjdEtleVVSSUtleUlEQW5k
Q2VydGlmaWNhdGVGcm9tSW5pdERhdGEoaW5pdERhdGEsIGtleVVSSSwga2V5SUQsIGNlcnRpZmlj
YXRlKSkgeworICAgICAgICBlcnJvckNvZGUgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgbV9yZXF1ZXN0ID0gTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6dGFrZVJlcXVlc3RGb3JQbGF5ZXJBbmRLZXlVUkkobWVkaWFQbGF5ZXIs
IGtleVVSSSk7CisgICAgaWYgKCFtX3JlcXVlc3QpIHsKKyAgICAgICAgZXJyb3JDb2RlID0gSU5W
QUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1fc2Vzc2lv
bklkID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworCisgICAgUmV0YWluUHRyPE5TRGF0
YT4gY2VydGlmaWNhdGVEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRl
czpjZXJ0aWZpY2F0ZS0+YmFzZUFkZHJlc3MoKSBsZW5ndGg6Y2VydGlmaWNhdGUtPmJ5dGVMZW5n
dGgoKV0pOworICAgIE5TU3RyaW5nKiBhc3NldFN0ciA9IGtleUlEOworICAgIFJldGFpblB0cjxO
U0RhdGE+IGFzc2V0SUQgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IFthc3NldFN0ciBjU3RyaW5n
VXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gbGVuZ3RoOlthc3NldFN0ciBsZW5n
dGhPZkJ5dGVzVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOworICAgIE5TRXJy
b3IqIGVycm9yID0gMDsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBrZXlSZXF1ZXN0ID0gW21fcmVx
dWVzdC5nZXQoKSBzdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6Y2VydGlmaWNh
dGVEYXRhLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmFzc2V0SUQuZ2V0KCkgb3B0aW9uczpuaWwg
ZXJyb3I6JmVycm9yXTsKKworICAgIGlmICgha2V5UmVxdWVzdCkgeworICAgICAgICBOU0Vycm9y
KiB1bmRlcmx5aW5nRXJyb3IgPSBbW2Vycm9yIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6TlNVbmRl
cmx5aW5nRXJyb3JLZXldOworICAgICAgICBlcnJvckNvZGUgPSBDRE06OkRvbWFpbkVycm9yOwor
ICAgICAgICBzeXN0ZW1Db2RlID0gW3VuZGVybHlpbmdFcnJvciBjb2RlXTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCisgICAgZXJyb3JDb2RlID0gMDsKKyAgICBzeXN0ZW1Db2RlID0gMDsK
KyAgICBkZXN0aW5hdGlvblVSTCA9IFN0cmluZygpOworCisgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBrZXlSZXF1ZXN0QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShba2V5UmVxdWVzdC5nZXQo
KSBieXRlc10sIFtrZXlSZXF1ZXN0LmdldCgpIGxlbmd0aF0pOworICAgIHJldHVybiBVaW50OEFy
cmF5OjpjcmVhdGUoa2V5UmVxdWVzdEJ1ZmZlciwgMCwga2V5UmVxdWVzdEJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpKTsKK30KKwordm9pZCBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uOjpyZWxlYXNlS2V5cygp
Cit7Cit9CisKK2Jvb2wgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbjo6dXBkYXRlKFVpbnQ4QXJyYXkq
IGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVy
cm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkKK3sKKyAgICBpZiAoIWtleSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmV0YWluUHRyPE5TRGF0YT4ga2V5RGF0YSA9IGFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6a2V5LT5iYXNlQWRkcmVzcygpIGxl
bmd0aDprZXktPmJ5dGVMZW5ndGgoKV0pOworICAgIFtbbV9yZXF1ZXN0LmdldCgpIGRhdGFSZXF1
ZXN0XSByZXNwb25kV2l0aERhdGE6a2V5RGF0YS5nZXQoKV07CisgICAgW21fcmVxdWVzdC5nZXQo
KSBmaW5pc2hMb2FkaW5nXTsKKyAgICBlcnJvckNvZGUgPSAwOworICAgIHN5c3RlbUNvZGUgPSAw
OworICAgIG5leHRNZXNzYWdlID0gbnVsbHB0cjsKKworICAgIHJldHVybiB0cnVlOworfQorCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGE2NGYwNDBkZDIyNzQ1NjFlMDU2MTAzZjJiZGFiOTUyZTUzZTA0YTku
LjkxODk5NTYxNzM5NTBjOTNhMGNjOGU3ZTU3ODQzMDI5ODE3N2YwZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU5ODksNiAr
NTk4OSw3IEBACiAJCUNEMjdGNkU1MTQ1NzY4NUEwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3
RjZFMjE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlD
RDI3RjZFNzE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkU2MTQ1NzcwRDMwMDc4
MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlDRDM3QjM5ODE1QzFCOTcxMDA2
REM4OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzdCMzc0MTVDMUE3RTEwMDZEQzg5OCAvKiBEaWFn
bm9zdGljTG9nZ2luZ0tleXMuY3BwICovOyB9OworCQlDRDQ3QjNGQzE2Q0MzNEY4MDBBMjFFQzgg
LyogQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENENDdCM0ZBMTZDQzM0RjgwMEEyMUVDOCAvKiBDRE1Qcml2YXRl
QVZGb3VuZGF0aW9uLm1tICovOyB9OwogCQlDRDRBQzUyQTE0OTZBRTlBMDA4N0M0RUYgLyogQ29t
cG9zaXRlLndhdiBpbiBDb3B5IEF1ZGlvIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDRBQzUyODE0OTZBRTJGMDA4N0M0RUYgLyogQ29tcG9zaXRlLndhdiAq
LzsgfTsKIAkJQ0Q3RTA1MjIxNjUxQzI4MjAwQzEyMDFGIC8qIFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
N0UwNTIxMTY1MUE4NDEwMEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gKi87
IH07CiAJCUNENzVBNUM1MTYwQzJBMTkwMDk3QjE5QiAvKiBKU01lZGlhS2V5U2Vzc2lvbkN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDc1
QTVDMzE2MEMyOTQyMDA5N0IxOUIgLyogSlNNZWRpYUtleVNlc3Npb25DdXN0b20uY3BwICovOyB9
OwpAQCAtMTM1NzEsNiArMTM1NzIsOCBAQAogCQlDRDI3RjZFNjE0NTc3MEQzMDA3ODIwN0QgLyog
TWVkaWFDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1lZGlhQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMzdC
Mzc0MTVDMUE3RTEwMDZEQzg5OCAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzN0IzNzUxNUMxQTdFMTAwNkRDODk4IC8q
IERpYWdub3N0aWNMb2dnaW5nS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEaWFnbm9zdGljTG9nZ2luZ0tleXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0Q0N0IzRjkxNkNDMzRGODAwQTIxRUM4IC8qIENETVByaXZhdGVBVkZvdW5kYXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5oOyBw
YXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlQVZGb3VuZGF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENDdCM0ZBMTZDQzM0RjgwMEEyMUVDOCAvKiBD
RE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5tbTsgcGF0aCA9IE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0Q0QUM1MjgxNDk2QUUyRjAwODdDNEVGIC8qIENvbXBvc2l0ZS53YXYgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5h
bWUgPSBDb21wb3NpdGUud2F2OyBwYXRoID0gcGxhdGZvcm0vYXVkaW8vcmVzb3VyY2VzL0NvbXBv
c2l0ZS53YXY7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJQ0Q0RTBBRkExMUY3QkMy
NzAwOUQzODExIC8qIGZ1bGxzY3JlZW4uY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBm
dWxsc2NyZWVuLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q3RTA1MjAxNjUx
QTg0MTAwQzEyMDFGIC8qIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDsgcGF0aCA9IG9iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTYzOCw2ICsyMTY0
MSw4IEBACiAJCQkJQ0RBOThEQzkxNjAxNEY0MDAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5p
ZGwgKi8sCiAJCQkJQ0RBOThFMDkxNjAzQ0Q1OTAwRkVBM0IxIC8qIENETS5jcHAgKi8sCiAJCQkJ
Q0RBOThFMEExNjAzQ0Q1OTAwRkVBM0IxIC8qIENETS5oICovLAorCQkJCUNENDdCM0Y5MTZDQzM0
RjgwMEEyMUVDOCAvKiBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLmggKi8sCisJCQkJQ0Q0N0IzRkEx
NkNDMzRGODAwQTIxRUM4IC8qIENETVByaXZhdGVBVkZvdW5kYXRpb24ubW0gKi8sCiAJCQkJQ0RB
OThFMEMxNjAzQ0YzQzAwRkVBM0IxIC8qIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0
ZS5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBlbmNyeXB0ZWRtZWRpYTsKQEAgLTI3MzgwLDYgKzI3
Mzg1LDcgQEAKIAkJCQkxOUJGRjY0QzExQzBGMkFDMDBCOEMwNEQgLyogRE9NU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTAyQUI0OTBBRDQzOEMwMDAz
Nzg1NDAgLyogRE9NU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJODUwMkFCNEIwQUQ0MzhDMDAwMzc4NTQwIC8qIERPTVNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNENDdCM0ZDMTZDQzM0RjgwMEEyMUVDOCAv
KiBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMkFCNEQw
QUQ0MzhDMDAwMzc4NTQwIC8qIERPTVNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTQzNThFODZCMTM2MEEyMTYwMEU0NzQ4QyAvKiBET01TVkdGRURyb3BTaGFk
b3dFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMkFCNEYwQUQ0MzhDMDAwMzc4NTQw
IC8qIERPTVNWR0ZFRmxvb2RFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKaW5kZXggM2U0NjZiYzY5MGUwZjNiODRmYzNlMGI5ODcwODdiNTMwZTUxNzU2MC4uMzU5
Yjg0NzkyODcwYWMwZDNkZjdjNTdmZWVjZTUzOThjMzM5ZmE2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaApAQCAtNzQsNiArNzQsMTQgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ2FuY2VsTG9hZGlu
Z1JlcXVlc3QoQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QqKTsKICNlbmRpZgogCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKyAg
ICBzdGF0aWMgYm9vbCBleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0
YShVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBrZXlVUkksIFN0cmluZyYga2V5SUQsIFJl
ZlB0cjxVaW50OEFycmF5PiYgY2VydGlmaWNhdGUpOworI2VuZGlmCisKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBX1YyKQorICAgIHN0YXRpYyBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9h
ZGluZ1JlcXVlc3Q+IHRha2VSZXF1ZXN0Rm9yUGxheWVyQW5kS2V5VVJJKE1lZGlhUGxheWVyKiwg
Y29uc3QgU3RyaW5nJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDKE1lZGlhUGxheWVyKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CmluZGV4IDM0MGU1OWNmODE3NjAyNjk0MWM4YzE0OWIxYWUxNGIyMDM1ZWRmYmEuLjhjMmE3MDY4
NDMyMTU3MDgyMWQwNmM5M2Y0ODU3NzRkMjNmZjcxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQpAQCAtMTg2LDYgKzE4NiwxNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqYm9vbFN0cmluZyhib29s
IHZhbCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKK3R5cGVk
ZWYgSGFzaE1hcDxNZWRpYVBsYXllciosIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMqPiBQbGF5ZXJUb1ByaXZhdGVNYXBUeXBlOworc3RhdGljIFBsYXllclRvUHJpdmF0ZU1hcFR5
cGUmIHBsYXllclRvUHJpdmF0ZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChQbGF5
ZXJUb1ByaXZhdGVNYXBUeXBlLCBtYXAsICgpKTsKKyAgICByZXR1cm4gbWFwOworfTsKKyNlbmRp
ZgorCisKIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGUoTWVkaWFQbGF5ZXIqIHBsYXllcikKIHsg
CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDKHBsYXllcikpOwpAQCAtMjEzLDEwICsyMjMsMTYgQEAgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyhNZWRpYVBs
YXkKICAgICAsIG1fY3VycmVudFRyYWNrKDApCiAjZW5kaWYKIHsKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBX1YyKQorICAgIHBsYXllclRvUHJpdmF0ZU1hcCgpLnNldChwbGF5ZXIsIHRoaXMp
OworI2VuZGlmCiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6On5NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKCkKIHsKKyNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBX1YyKQorICAgIHBsYXllclRvUHJpdmF0ZU1hcCgpLnJlbW92ZShwbGF5ZXIoKSk7Cisj
ZW5kaWYKICAgICBjYW5jZWxMb2FkKCk7CiB9CiAKQEAgLTg1MCw3ICs4NjYsNyBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZS
ZXNvdXJjZShBVkFzc2V0UgogICAgIFN0cmluZyBzY2hlbWUgPSBbW1thdlJlcXVlc3QgcmVxdWVz
dF0gVVJMXSBzY2hlbWVdOwogICAgIFN0cmluZyBrZXlVUkkgPSBbW1thdlJlcXVlc3QgcmVxdWVz
dF0gVVJMXSBhYnNvbHV0ZVN0cmluZ107CiAKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIp
CiAgICAgaWYgKHNjaGVtZSA9PSAic2tkIikgewogICAgICAgICAvLyBDcmVhdGUgYW4gaW5pdERh
dGEgd2l0aCB0aGUgZm9sbG93aW5nIGxheW91dDoKICAgICAgICAgLy8gWzQgYnl0ZXM6IGtleVVS
SSBzaXplXSwgW2tleVVSSSBzaXplIGJ5dGVzOiBrZXlVUkldCkBAIC04NjMsNyArODc5LDEyIEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxv
YWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgIFJlZlB0cjxVaW50MTZBcnJheT4ga2V5
VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLCA0LCBrZXlVUkku
bGVuZ3RoKCkpOwogICAgICAgICBrZXlVUklBcnJheS0+c2V0UmFuZ2Uoa2V5VVJJLmNoYXJhY3Rl
cnMoKSwga2V5VVJJLmxlbmd0aCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAwKTsKIAorI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgICAgIGlmICghcGxheWVyKCktPmtleU5lZWRl
ZCgiY29tLmFwcGxlLmxza2QiLCBlbXB0eVN0cmluZygpLCBzdGF0aWNfY2FzdDxjb25zdCB1bnNp
Z25lZCBjaGFyKj4oaW5pdERhdGFCdWZmZXItPmRhdGEoKSksIGluaXREYXRhQnVmZmVyLT5ieXRl
TGVuZ3RoKCkpKQorI2VsaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKyAgICAgICAgUmVm
UHRyPFVpbnQ4QXJyYXk+IGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVm
ZmVyLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgaWYgKCFwbGF5
ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLmdldCgpKSkKKyNlbmRpZgogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgICAgIG1fa2V5VVJJVG9SZXF1ZXN0TWFwLnNldChrZXlVUkksIGF2
UmVxdWVzdCk7CkBAIC0xMTExLDkgKzExMzIsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCogYwog
CiAjZW5kaWYKIAotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCi0KLXN0YXRpYyBib29sIGV4
dHJhY3RLZXlVUklLZXlJREFuZENlcnRpZmljYXRlRnJvbUluaXREYXRhKFVpbnQ4QXJyYXkqIGlu
aXREYXRhLCBTdHJpbmcmIGtleVVSSSwgU3RyaW5nJiBrZXlJRCwgUmVmUHRyPFVpbnQ4QXJyYXk+
JiBjZXJ0aWZpY2F0ZSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5D
UllQVEVEX01FRElBX1YyKQorYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0YShVaW50OEFycmF5
KiBpbml0RGF0YSwgU3RyaW5nJiBrZXlVUkksIFN0cmluZyYga2V5SUQsIFJlZlB0cjxVaW50OEFy
cmF5PiYgY2VydGlmaWNhdGUpCiB7CiAgICAgLy8gaW5pdERhdGEgc2hvdWxkIGhhdmUgdGhlIGZv
bGxvd2luZyBsYXlvdXQ6CiAgICAgLy8gWzQgYnl0ZXM6IGtleVVSSSBsZW5ndGhdW04gYnl0ZXM6
IGtleVVSSV1bNCBieXRlczogY29udGVudElEIGxlbmd0aF0sIFtOIGJ5dGVzOiBjb250ZW50SURd
LCBbNCBieXRlczogY2VydGlmaWNhdGUgbGVuZ3RoXVtOIGJ5dGVzOiBjZXJ0aWZpY2F0ZV0KQEAg
LTExNjIsNyArMTE4Miw5IEBAIHN0YXRpYyBib29sIGV4dHJhY3RLZXlVUklLZXlJREFuZENlcnRp
ZmljYXRlRnJvbUluaXREYXRhKFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTCiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KKyNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIE1lZGlhUGxh
eWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGluaXREYXRhUHRyLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCkKIHsKICAgICBp
ZiAoIWtleVN5c3RlbUlzU3VwcG9ydGVkKGtleVN5c3RlbSkpCkBAIC0xMjM5LDYgKzEyNjEsMTgg
QEAgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmNhbmNlbEtleVJlcXUKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQV9WMikKK1JldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4g
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dGFrZVJlcXVlc3RGb3JQbGF5ZXJB
bmRLZXlVUkkoTWVkaWFQbGF5ZXIqIHBsYXllciwgY29uc3QgU3RyaW5nJiBrZXlVUkkpCit7Cisg
ICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogX3RoaXMgPSBwbGF5ZXJUb1By
aXZhdGVNYXAoKS5nZXQocGxheWVyKTsKKyAgICBpZiAoIV90aGlzKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIHJldHVybiBfdGhpcy0+bV9rZXlVUklUb1JlcXVlc3RNYXAudGFrZShr
ZXlVUkkpOworCit9CisjZW5kaWYKKwogI2lmIEhBVkUoQVZGT1VOREFUSU9OX1RFWFRfVFJBQ0tf
U1VQUE9SVCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVh
clRleHRUcmFja3MoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188933</attachid>
            <date>2013-02-18 12:59:07 -0800</date>
            <delta_ts>2013-02-18 13:01:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109739-20130218125529.patch</filename>
            <type>text/plain</type>
            <size>24242</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTYyOTU0YTE4YzEwZGE5
ZDllOWNhZjJmZGQ5OTYzYzBjZWRiNjIwMC4uNjg0ZTZmMDM5YmE1MDI2ZjI4NzkwNDE0MDM0MTMw
MTZlYzUwNzQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEzLTAyLTEzICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEVNRTogQWRkIGEgQ0RNUHJp
dmF0ZSBpbXBsZW1lbnRhdGlvbiB1c2luZyBBVkZvdW5kYXRpb24uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3MzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBDRE1Qcml2YXRlIGltcGxlbWVu
dGF0aW9uIHVzaW5nIEFWRm91bmRhdGlvbiwgc2ltaWxhciB0byB0aGUgRU1FIHYxIGltcGxlbWVu
dGF0aW9uCisgICAgICAgIGluIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuIFRo
aXMgcmVxdWlyZXMgcGFzc2luZyB0aGUgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QKKyAg
ICAgICAgZnJvbSB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyBpbnN0YW5j
ZSB0byBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uLiBUbyBkbyBzbworICAgICAgICB3aXRob3V0IGFk
ZGluZyBwbGF0Zm9ybS1zcGVjaWZpYyBBUEkgdG8gTWVkaWFQbGF5ZXIsIGFkZCBhIHN0YXRpYyBt
YXAgZnJvbSBNZWRpYVBsYXllciAtPgorICAgICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDIGluc3RhbmNlcyB0byBiZSB1c2VkIHRvIHZlbmQgdGhlIEFWQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0CisgICAgICAgIHRvIENETVNlc3Npb25BVkZvdW5kYXRpb24uCisKKyAg
ICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjppbnN0YWxsZWRDRE1GYWN0b3JpZXMpOiBBZGQgdGhlIGZhY3RvcnkgZm9yIENETVByaXZhdGVB
VkZvdW5kYXRpb24uCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24uaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQVZGb3VuZGF0aW9uOjpjcmVhdGUp
OiBTaW1wbGUgZmFjdG9yeSBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQVZG
b3VuZGF0aW9uOjp+Q0RNUHJpdmF0ZUFWRm91bmRhdGlvbik6IFNpbXBsZSB2aXJ0dWFsIGRlc3Ry
dWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQVZGb3VuZGF0aW9uOjpjZG0pOiBT
aW1wbGUgZ2V0dGVyLgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUFWRm91bmRhdGlvbjo6
Q0RNUHJpdmF0ZUFWRm91bmRhdGlvbik6IFNpbXBsZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24ubW06IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbjo6fkNETVNlc3Npb25BVkZv
dW5kYXRpb24pOiBTaW1wbGUgZGVzdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZh
dGVBVkZvdW5kYXRpb246OnN1cHBvcnRzS2V5U3l0ZW0pOiBDaGVjayB3aGV0aGVyIHRoZSBnaXZl
biBrZXkgc3lzdGVtIGlzIHN1cHBvcnRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVB
VkZvdW5kYXRpb246OnN1cHBvcnRzTUlNRVR5cGUpOiBDaGVjayB3aGV0aGVyIHRoZSBnaXZlbiBN
SU1FIHR5cGUgaXMgc3VwcG9ydGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUFWRm91
bmRhdGlvbjo6Y3JlYXRlU2Vzc2lvbik6IFJldHVybiBhIG5ldyBDRE1TZXNzaW9uQVZGb3VuZGF0
aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbjo6Q0RNU2Vzc2lv
bkFWRm91bmRhdGlvbik6IFNpbXBsZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkNE
TVNlc3Npb25BVkZvdW5kYXRpb246OmdlbmVyYXRlS2V5UmVxdWVzdCk6IFJldHJpZXZlIHRoZSBB
VkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdAorICAgICAgICAgICAgZnJvbSB0aGUgTWVkaWFQ
bGF5ZXIsIGFuZCB1c2UgaXQgdG8gZ2VuZXJhdGUgYSBrZXkgcmVxdWVzdC4KKyAgICAgICAgKFdl
YkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb246OnJlbGVhc2VLZXlzKTogTm8tb3AuCisgICAg
ICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uOjp1cGRhdGUpOiBBZGQgdGhlIHBh
c3NlZCBpbiBrZXkgdG8gdGhlIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0LgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OnBsYXllclRvUHJpdmF0ZU1hcCk6IExhemlseSBpbnN0YW50aWF0ZSBzdGF0aWMgbWFwLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyk6IFJlZ2lzdGVyIHdpdGggdGhlIHBsYXllclRv
UHJpdmF0ZU1hcC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKTogVW5yZWdpc3Rl
ciBmcm9tIHNhbWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOiBBbHNvIHNlbmQga2V5
TmVlZGVkIGV2ZW50IGluIEVOQ1JZUFRFRF9NRURJQV9WMi4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmV4dHJhY3RLZXlVUklLZXlJREFuZENl
cnRpZmljYXRlRnJvbUluaXREYXRhKTogQ29udmVydCB0aGlzIAorICAgICAgICAgICAgbWV0aG9k
IGZyb20gZmlsZS1zdGF0aWMgdG8gY2xhc3Mgc3RhdGljLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dGFrZVJlcXVlc3RGb3JQbGF5ZXJBbmRL
ZXlVUkkpOiBQdWxsIHRoZSBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdAorICAgICAgICAg
ICAgZnJvbSBtX2tleVVSSVRvUmVxdWVzdE1hcCBhbmQgcmV0dXJuIGl0LCBpZiBwcmVzZW50Lgor
CiAyMDEzLTAyLTEyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAg
IE1lZGlhS2V5U2Vzc2lvbiBzaG91bGQgbm90IGJlIEdDZCB3aGlsZSBmaXJpbmcgZXZlbnQgbGlz
dGVuZXJzIG9yIHdpdGggY3VzdG9tIHByb3BlcnRpZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggNDNhOWYxNzAyMTJlZjJmNmViN2FjMTJj
MzZhZGVmNzdiNTM1NzdjYy4uMTYzNzIxNjJiZGY3NWNiNTg1M2MwMmFkYjRlYjVhZTFjMTY1YjE5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApA
QCAtMzQsNiArMzQsMTAgQEAKICNpbmNsdWRlICJNZWRpYUtleXMuaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTA5MAorI2luY2x1ZGUgIkNETVByaXZhdGVBVkZvdW5kYXRpb24uaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBDRE1GYWN0b3J5IHsKQEAgLTU3LDYgKzYxLDEw
IEBAIHN0YXRpYyBWZWN0b3I8Q0RNRmFjdG9yeSo+JiBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKQog
ICAgICAgICBxdWVyaWVkQ0RNcyA9IHRydWU7CiAKICAgICAgICAgLy8gRklYTUU6IGluaXRpYWxp
emUgc3BlY2lmaWMgVUEgQ0RNcy4gaHR0cDovL3dlYmtpdC5vcmcvYi8xMDkzMTgsIGh0dHA6Ly93
ZWJraXQub3JnL2IvMTA5MzIwCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDkwCisgICAgICAgIGNkbXMuYXBwZW5kKG5ldyBDRE1GYWN0b3J5KENETVByaXZhdGVBVkZv
dW5kYXRpb246OmNyZWF0ZSwgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9ydHNLZXlTeXRl
bSkpOworI2VuZGlmCisKICAgICB9CiAKICAgICByZXR1cm4gY2RtczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCmluZGV4IDZhM2IwMjM5ODE1NGY5NjI2ZmU4
MGQ2ZmVhMjMxNGQxYzc0MTRhMGQuLjNiNzUzZGM1MzdhNzgxODY1ZTliNmUxM2FmZmQ2M2Q2ZGZl
ZGNhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaApA
QCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAKIGNsYXNzIENETSB7CiBwdWJsaWM6CisKKyAgICBl
bnVtIENETUVycm9yQ29kZSB7IFVua25vd25FcnJvciA9IDEsIENsaWVudEVycm9yLCBTZXJ2aWNl
RXJyb3IsIE91dHB1dEVycm9yLCBIYXJkd2FyZUNoYW5nZUVycm9yLCBEb21haW5FcnJvciB9Owog
ICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpOwogICAgIHN0
YXRpYyBQYXNzT3duUHRyPENETT4gY3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKICAg
ICBzdGF0aWMgdm9pZCByZWdpc3RlckNETUZhY3RvcnkoQ3JlYXRlQ0RNLCBDRE1TdXBwb3J0c0tl
eVN5c3RlbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlMzUzNDNi
ODJhZjJhMWFkZDUwZjRiMjY0NmE0ZjQxZWNjYWYzMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24u
aApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDRE1Qcml2YXRlQVZGb3Vu
ZGF0aW9uX2gKKyNkZWZpbmUgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbl9oCisKKyNpbmNsdWRlICJD
RE1Qcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBDRE07CisKK2NsYXNzIENETVByaXZhdGVBVkZvdW5kYXRpb24gOiBwdWJsaWMgQ0RN
UHJpdmF0ZUludGVyZmFjZSB7CitwdWJsaWM6CisgICAgLy8gQ0RNRmFjdG9yeSBzdXBwb3J0Ogor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENETVByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShDRE0qIGNk
bSkgeyByZXR1cm4gYWRvcHRQdHIobmV3IENETVByaXZhdGVBVkZvdW5kYXRpb24oY2RtKSk7IH0K
KyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5dGVtKGNvbnN0IFN0cmluZyYpOworCisgICAg
dmlydHVhbCB+Q0RNUHJpdmF0ZUFWRm91bmRhdGlvbigpIHsgfQorCisgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBQYXNzT3duUHRyPENETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBPVkVSUklERTsK
KworICAgIENETSogY2RtKCkgY29uc3QgeyByZXR1cm4gbV9jZG07IH0KKworcHJvdGVjdGVkOgor
ICAgIENETVByaXZhdGVBVkZvdW5kYXRpb24oQ0RNKiBjZG0pIDogbV9jZG0oY2RtKSB7IH0KKyAg
ICBDRE0qIG1fY2RtOworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmIC8vIENETVByaXZhdGVB
VkZvdW5kYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRk
NjBjMzE1OGVhMDAwNDBiMTJhZTIxZjc2OWI0ZDdiOTJmMzBiMTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5k
YXRpb24ubW0KQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIkNETVByaXZhdGVBVkZvdW5kYXRpb24uaCIKKworI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUFfVjIpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5
MAorCisjaW1wb3J0ICJDRE0uaCIKKyNpbXBvcnQgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbXBvcnQg
Ik1lZGlhUGxheWVyLmgiCisjaW1wb3J0ICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgiCisjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgorI2ltcG9ydCAiVVVJRC5oIgorI2ltcG9y
dCA8QVZGb3VuZGF0aW9uL0FWRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRp
bWUuaD4KKyNpbXBvcnQgPHd0Zi9VbnVzZWRQYXJhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIENETVNlc3Npb25BVkZvdW5kYXRpb24gOiBwdWJsaWMgQ0RNU2Vzc2lvbiB7Citw
dWJsaWM6CisgICAgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbihDRE1Qcml2YXRlQVZGb3VuZGF0aW9u
KiBwYXJlbnQpOworICAgIHZpcnR1YWwgfkNETVNlc3Npb25BVkZvdW5kYXRpb24oKSB7IH0KKwor
ICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBPVkVSUklERSB7IHJldHVybiBt
X3Nlc3Npb25JZDsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0
ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEs
IFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2ln
bmVkIGxvbmcmIHN5c3RlbUNvZGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWxlYXNl
S2V5cygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGUoVWludDhBcnJheSosIFJl
ZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUs
IHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpIE9WRVJSSURFOworCitwcm90ZWN0ZWQ6CisgICAg
Q0RNUHJpdmF0ZUFWRm91bmRhdGlvbiogbV9wYXJlbnQ7CisgICAgU3RyaW5nIG1fc2Vzc2lvbklk
OworICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9yZXF1ZXN0
OworfTsKKworU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5kYXRpb24pCitTT0ZU
X0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0KQorU09GVF9MSU5LX0NMQVNTKEFW
Rm91bmRhdGlvbiwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QpCisjZGVmaW5lIEFWVVJM
QXNzZXQgZ2V0QVZVUkxBc3NldENsYXNzKCkKKyNkZWZpbmUgQVZBc3NldFJlc291cmNlTG9hZGlu
Z1JlcXVlc3QgZ2V0QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QoKQorCisKK2Jvb2wgQ0RN
UHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9ydHNLZXlTeXRlbShjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSkKK3sKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2Uoa2V5U3lzdGVtLCAiY29tLmFw
cGxlLmZwcyIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGtleVN5c3RlbSwgImNvbS5hcHBsZS5mcHMu
MV8wIik7Cit9CisKK2Jvb2wgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9ydHNNSU1FVHlw
ZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIHJldHVybiBbQVZVUkxBc3NldCBpc1Bs
YXlhYmxlRXh0ZW5kZWRNSU1FVHlwZTptaW1lVHlwZV07Cit9CisKK1Bhc3NPd25QdHI8Q0RNU2Vz
c2lvbj4gQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbjo6Y3JlYXRlU2Vzc2lvbigpCit7CisgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uKHRoaXMpKTsKK30KKworQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbjo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbihDRE1Qcml2YXRlQVZG
b3VuZGF0aW9uKiBwYXJlbnQpCisgICAgOiBtX3BhcmVudChwYXJlbnQpCisgICAgLCBtX3Nlc3Np
b25JZChjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpCit7Cit9CisKK1Bhc3NSZWZQdHI8VWlu
dDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0
aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNpZ25lZCBsb25nJiBzeXN0ZW1D
b2RlKQoreworICAgIFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7CisKKyAgICBNZWRpYVBsYXllciog
bWVkaWFQbGF5ZXIgPSBtX3BhcmVudC0+Y2RtKCktPm1lZGlhUGxheWVyKCk7CisgICAgaWYgKCFt
ZWRpYVBsYXllcikgeworICAgICAgICBlcnJvckNvZGUgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgU3RyaW5nIGtleVVSSTsKKyAgICBTdHJpbmcg
a2V5SUQ7CisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGNlcnRpZmljYXRlOworICAgIGlmICghTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZXh0cmFjdEtleVVSSUtleUlEQW5kQ2Vy
dGlmaWNhdGVGcm9tSW5pdERhdGEoaW5pdERhdGEsIGtleVVSSSwga2V5SUQsIGNlcnRpZmljYXRl
KSkgeworICAgICAgICBlcnJvckNvZGUgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCisgICAgbV9yZXF1ZXN0ID0gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6dGFrZVJlcXVlc3RGb3JQbGF5ZXJBbmRLZXlVUkkobWVkaWFQbGF5ZXIsIGtl
eVVSSSk7CisgICAgaWYgKCFtX3JlcXVlc3QpIHsKKyAgICAgICAgZXJyb3JDb2RlID0gSU5WQUxJ
RF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1fc2Vzc2lvbklk
ID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworCisgICAgUmV0YWluUHRyPE5TRGF0YT4g
Y2VydGlmaWNhdGVEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpj
ZXJ0aWZpY2F0ZS0+YmFzZUFkZHJlc3MoKSBsZW5ndGg6Y2VydGlmaWNhdGUtPmJ5dGVMZW5ndGgo
KV0pOworICAgIE5TU3RyaW5nKiBhc3NldFN0ciA9IGtleUlEOworICAgIFJldGFpblB0cjxOU0Rh
dGE+IGFzc2V0SUQgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IFthc3NldFN0ciBjU3RyaW5nVXNp
bmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gbGVuZ3RoOlthc3NldFN0ciBsZW5ndGhP
ZkJ5dGVzVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOworICAgIE5TRXJyb3Iq
IGVycm9yID0gMDsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBrZXlSZXF1ZXN0ID0gW21fcmVxdWVz
dC5nZXQoKSBzdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6Y2VydGlmaWNhdGVE
YXRhLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmFzc2V0SUQuZ2V0KCkgb3B0aW9uczpuaWwgZXJy
b3I6JmVycm9yXTsKKworICAgIGlmICgha2V5UmVxdWVzdCkgeworICAgICAgICBOU0Vycm9yKiB1
bmRlcmx5aW5nRXJyb3IgPSBbW2Vycm9yIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6TlNVbmRlcmx5
aW5nRXJyb3JLZXldOworICAgICAgICBlcnJvckNvZGUgPSBDRE06OkRvbWFpbkVycm9yOworICAg
ICAgICBzeXN0ZW1Db2RlID0gW3VuZGVybHlpbmdFcnJvciBjb2RlXTsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCisgICAgZXJyb3JDb2RlID0gMDsKKyAgICBzeXN0ZW1Db2RlID0gMDsKKyAg
ICBkZXN0aW5hdGlvblVSTCA9IFN0cmluZygpOworCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBr
ZXlSZXF1ZXN0QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShba2V5UmVxdWVzdC5nZXQoKSBi
eXRlc10sIFtrZXlSZXF1ZXN0LmdldCgpIGxlbmd0aF0pOworICAgIHJldHVybiBVaW50OEFycmF5
OjpjcmVhdGUoa2V5UmVxdWVzdEJ1ZmZlciwgMCwga2V5UmVxdWVzdEJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKTsKK30KKwordm9pZCBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uOjpyZWxlYXNlS2V5cygpCit7
Cit9CisKK2Jvb2wgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbjo6dXBkYXRlKFVpbnQ4QXJyYXkqIGtl
eSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9y
Q29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkKK3sKKyAgICBpZiAoIWtleSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgUmV0YWluUHRyPE5TRGF0YT4ga2V5RGF0YSA9IGFkb3B0
TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6a2V5LT5iYXNlQWRkcmVzcygpIGxlbmd0
aDprZXktPmJ5dGVMZW5ndGgoKV0pOworICAgIFtbbV9yZXF1ZXN0LmdldCgpIGRhdGFSZXF1ZXN0
XSByZXNwb25kV2l0aERhdGE6a2V5RGF0YS5nZXQoKV07CisgICAgW21fcmVxdWVzdC5nZXQoKSBm
aW5pc2hMb2FkaW5nXTsKKyAgICBlcnJvckNvZGUgPSAwOworICAgIHN5c3RlbUNvZGUgPSAwOwor
ICAgIG5leHRNZXNzYWdlID0gbnVsbHB0cjsKKworICAgIHJldHVybiB0cnVlOworfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDAyNjJlYmEzYmYyMjQ4NzNiOWE3NmNmYjZlMDM0OWE4NWZkZjlmMzEuLmRj
NzE0MmM0ZDllZTkyNDQ2YmI0N2UwYTEzNGM5YTNlNjUzYTNmNjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYwMDIsNiArNjAw
Miw3IEBACiAJCUNEMjdGNkU1MTQ1NzY4NUEwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZF
MjE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlDRDI3
RjZFNzE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkU2MTQ1NzcwRDMwMDc4MjA3
RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlDRDM3QjM5ODE1QzFCOTcxMDA2REM4
OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzdCMzc0MTVDMUE3RTEwMDZEQzg5OCAvKiBEaWFnbm9z
dGljTG9nZ2luZ0tleXMuY3BwICovOyB9OworCQlDRDQ3QjNGQzE2Q0MzNEY4MDBBMjFFQzggLyog
Q0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENENDdCM0ZBMTZDQzM0RjgwMEEyMUVDOCAvKiBDRE1Qcml2YXRlQVZG
b3VuZGF0aW9uLm1tICovOyB9OwogCQlDRDRBQzUyQTE0OTZBRTlBMDA4N0M0RUYgLyogQ29tcG9z
aXRlLndhdiBpbiBDb3B5IEF1ZGlvIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDRBQzUyODE0OTZBRTJGMDA4N0M0RUYgLyogQ29tcG9zaXRlLndhdiAqLzsg
fTsKIAkJQ0Q3RTA1MjIxNjUxQzI4MjAwQzEyMDFGIC8qIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEN0Uw
NTIxMTY1MUE4NDEwMEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gKi87IH07
CiAJCUNEODIwMzBBMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgy
MDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzYxMiw2
ICsxMzYxMyw4IEBACiAJCUNEMjdGNkU2MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9s
bGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzN0IzNzQxNUMxQTdFMTAw
NkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBEaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDM3QjM3NTE1QzFBN0UxMDA2REM4OTggLyogRGlhZ25vc3RpY0xv
Z2dpbmdLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpYWdub3N0aWNM
b2dnaW5nS2V5cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDQ3QjNGOTE2Q0Mz
NEY4MDBBMjFFQzggLyogQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLmg7IHBhdGggPSBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0Q0N0IzRkExNkNDMzRGODAwQTIxRUM4IC8qIENETVByaXZhdGVBVkZv
dW5kYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBDRE1Q
cml2YXRlQVZGb3VuZGF0aW9uLm1tOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cml2YXRlQVZGb3VuZGF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDRB
QzUyODE0OTZBRTJGMDA4N0M0RUYgLyogQ29tcG9zaXRlLndhdiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGF1ZGlvLndhdjsgbmFtZSA9IENvbXBvc2l0
ZS53YXY7IHBhdGggPSBwbGF0Zm9ybS9hdWRpby9yZXNvdXJjZXMvQ29tcG9zaXRlLndhdjsgc291
cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEgLyog
ZnVsbHNjcmVlbi5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3JlZW4uY3Nz
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDdFMDUyMDE2NTFBODQxMDBDMTIwMUYg
LyogV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5oOyBwYXRoID0gb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNzE1LDYgKzIxNzE4LDkgQEAKIAkJCWNo
aWxkcmVuID0gKAogCQkJCUNEQTk4RTA5MTYwM0NENTkwMEZFQTNCMSAvKiBDRE0uY3BwICovLAog
CQkJCUNEQTk4RTBBMTYwM0NENTkwMEZFQTNCMSAvKiBDRE0uaCAqLywKKwkJCQlDREE5OEUwQzE2
MDNDRjNDMDBGRUEzQjEgLyogQ0RNUHJpdmF0ZS5oICovLAorCQkJCUNENDdCM0Y5MTZDQzM0Rjgw
MEEyMUVDOCAvKiBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLmggKi8sCisJCQkJQ0Q0N0IzRkExNkND
MzRGODAwQTIxRUM4IC8qIENETVByaXZhdGVBVkZvdW5kYXRpb24ubW0gKi8sCiAJCQkJQ0RBOThE
RDUxNjAyNUJFRDAwRkVBM0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCAqLywKIAkJCQlD
REE5OERENjE2MDI1QkVEMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCAqLywKIAkJ
CQlDREE5OERENzE2MDI1QkVFMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuaWRsICov
LApAQCAtMjE3MjcsNyArMjE3MzMsNiBAQAogCQkJCUNEQTk4REM3MTYwMTRGMkMwMEZFQTNCMSAv
KiBNZWRpYUtleVNlc3Npb24uY3BwICovLAogCQkJCUNEQTk4REM4MTYwMTRGMkMwMEZFQTNCMSAv
KiBNZWRpYUtleVNlc3Npb24uaCAqLywKIAkJCQlDREE5OERDOTE2MDE0RjQwMDBGRUEzQjEgLyog
TWVkaWFLZXlTZXNzaW9uLmlkbCAqLywKLQkJCQlDREE5OEUwQzE2MDNDRjNDMDBGRUEzQjEgLyog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9
IGVuY3J5cHRlZG1lZGlhOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI3NDkyLDYg
KzI3NDk3LDcgQEAKIAkJCQkxOUJGRjY0QzExQzBGMkFDMDBCOEMwNEQgLyogRE9NU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTAyQUI0OTBBRDQzOEMw
MDAzNzg1NDAgLyogRE9NU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODUwMkFCNEIwQUQ0MzhDMDAwMzc4NTQwIC8qIERPTVNWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNENDdCM0ZDMTZDQzM0RjgwMEEyMUVD
OCAvKiBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMkFC
NEQwQUQ0MzhDMDAwMzc4NTQwIC8qIERPTVNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTQzNThFODZCMTM2MEEyMTYwMEU0NzQ4QyAvKiBET01TVkdGRURyb3BT
aGFkb3dFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMkFCNEYwQUQ0MzhDMDAwMzc4
NTQwIC8qIERPTVNWR0ZFRmxvb2RFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmgKaW5kZXggM2U0NjZiYzY5MGUwZjNiODRmYzNlMGI5ODcwODdiNTMwZTUxNzU2MC4u
MzU5Yjg0NzkyODcwYWMwZDNkZjdjNTdmZWVjZTUzOThjMzM5ZmE2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaApAQCAtNzQsNiArNzQsMTQgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ2FuY2VsTG9h
ZGluZ1JlcXVlc3QoQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QqKTsKICNlbmRpZgogCisj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikK
KyAgICBzdGF0aWMgYm9vbCBleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0
RGF0YShVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBrZXlVUkksIFN0cmluZyYga2V5SUQs
IFJlZlB0cjxVaW50OEFycmF5PiYgY2VydGlmaWNhdGUpOworI2VuZGlmCisKKyNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBX1YyKQorICAgIHN0YXRpYyBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNl
TG9hZGluZ1JlcXVlc3Q+IHRha2VSZXF1ZXN0Rm9yUGxheWVyQW5kS2V5VVJJKE1lZGlhUGxheWVy
KiwgY29uc3QgU3RyaW5nJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDKE1lZGlhUGxheWVyKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCmluZGV4IGY0ZWZhY2VmMzI3OTZkZmMzNGM1OGQyNDRjNjM1ODAxMjNlYjliZDIuLjhjNGMw
NDA4NzY5ZTU1OTA2MTc2ODM3ZDU0YmVmY2U4OTIxZDdiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQpAQCAtMTg2LDYgKzE4NiwxNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqYm9vbFN0cmluZyhi
b29sIHZhbCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKK3R5
cGVkZWYgSGFzaE1hcDxNZWRpYVBsYXllciosIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMqPiBQbGF5ZXJUb1ByaXZhdGVNYXBUeXBlOworc3RhdGljIFBsYXllclRvUHJpdmF0ZU1h
cFR5cGUmIHBsYXllclRvUHJpdmF0ZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChQ
bGF5ZXJUb1ByaXZhdGVNYXBUeXBlLCBtYXAsICgpKTsKKyAgICByZXR1cm4gbWFwOworfTsKKyNl
bmRpZgorCisKIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGUoTWVkaWFQbGF5ZXIqIHBsYXllcikK
IHsgCiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDKHBsYXllcikpOwpAQCAtMjEzLDEwICsyMjMsMTYgQEAgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyhNZWRp
YVBsYXkKICAgICAsIG1fY3VycmVudFRyYWNrKDApCiAjZW5kaWYKIHsKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBX1YyKQorICAgIHBsYXllclRvUHJpdmF0ZU1hcCgpLnNldChwbGF5ZXIsIHRo
aXMpOworI2VuZGlmCiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6On5N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKCkKIHsKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBX1YyKQorICAgIHBsYXllclRvUHJpdmF0ZU1hcCgpLnJlbW92ZShwbGF5ZXIoKSk7
CisjZW5kaWYKICAgICBjYW5jZWxMb2FkKCk7CiB9CiAKQEAgLTg3MCw3ICs4ODYsNyBAQCBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5n
T2ZSZXNvdXJjZShBVkFzc2V0UgogICAgIFN0cmluZyBzY2hlbWUgPSBbW1thdlJlcXVlc3QgcmVx
dWVzdF0gVVJMXSBzY2hlbWVdOwogICAgIFN0cmluZyBrZXlVUkkgPSBbW1thdlJlcXVlc3QgcmVx
dWVzdF0gVVJMXSBhYnNvbHV0ZVN0cmluZ107CiAKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFf
VjIpCiAgICAgaWYgKHNjaGVtZSA9PSAic2tkIikgewogICAgICAgICAvLyBDcmVhdGUgYW4gaW5p
dERhdGEgd2l0aCB0aGUgZm9sbG93aW5nIGxheW91dDoKICAgICAgICAgLy8gWzQgYnl0ZXM6IGtl
eVVSSSBzaXplXSwgW2tleVVSSSBzaXplIGJ5dGVzOiBrZXlVUkldCkBAIC04ODIsNyArODk4LDEy
IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZv
ckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgIFJlZlB0cjxVaW50MTZBcnJheT4g
a2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLCA0LCBrZXlV
UkkubGVuZ3RoKCkpOwogICAgICAgICBrZXlVUklBcnJheS0+c2V0UmFuZ2Uoa2V5VVJJLmNoYXJh
Y3RlcnMoKSwga2V5VVJJLmxlbmd0aCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAwKTsKIAor
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgICAgIGlmICghcGxheWVyKCktPmtleU5l
ZWRlZCgiY29tLmFwcGxlLmxza2QiLCBlbXB0eVN0cmluZygpLCBzdGF0aWNfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4oaW5pdERhdGFCdWZmZXItPmRhdGEoKSksIGluaXREYXRhQnVmZmVyLT5i
eXRlTGVuZ3RoKCkpKQorI2VsaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKyAgICAgICAg
UmVmUHRyPFVpbnQ4QXJyYXk+IGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKGluaXREYXRh
QnVmZmVyLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgaWYgKCFw
bGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLmdldCgpKSkKKyNlbmRpZgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgIG1fa2V5VVJJVG9SZXF1ZXN0TWFwLnNldChrZXlVUkks
IGF2UmVxdWVzdCk7CkBAIC0xMTE2LDkgKzExMzcsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCog
YwogCiAjZW5kaWYKIAotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCi0KLXN0YXRpYyBib29s
IGV4dHJhY3RLZXlVUklLZXlJREFuZENlcnRpZmljYXRlRnJvbUluaXREYXRhKFVpbnQ4QXJyYXkq
IGluaXREYXRhLCBTdHJpbmcmIGtleVVSSSwgU3RyaW5nJiBrZXlJRCwgUmVmUHRyPFVpbnQ4QXJy
YXk+JiBjZXJ0aWZpY2F0ZSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUo
RU5DUllQVEVEX01FRElBX1YyKQorYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0YShVaW50OEFy
cmF5KiBpbml0RGF0YSwgU3RyaW5nJiBrZXlVUkksIFN0cmluZyYga2V5SUQsIFJlZlB0cjxVaW50
OEFycmF5PiYgY2VydGlmaWNhdGUpCiB7CiAgICAgLy8gaW5pdERhdGEgc2hvdWxkIGhhdmUgdGhl
IGZvbGxvd2luZyBsYXlvdXQ6CiAgICAgLy8gWzQgYnl0ZXM6IGtleVVSSSBsZW5ndGhdW04gYnl0
ZXM6IGtleVVSSV1bNCBieXRlczogY29udGVudElEIGxlbmd0aF0sIFtOIGJ5dGVzOiBjb250ZW50
SURdLCBbNCBieXRlczogY2VydGlmaWNhdGUgbGVuZ3RoXVtOIGJ5dGVzOiBjZXJ0aWZpY2F0ZV0K
QEAgLTExNjcsNyArMTE4Nyw5IEBAIHN0YXRpYyBib29sIGV4dHJhY3RLZXlVUklLZXlJREFuZENl
cnRpZmljYXRlRnJvbUluaXREYXRhKFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTCiAKICAgICByZXR1
cm4gdHJ1ZTsKIH0KKyNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIE1lZGlh
UGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGluaXREYXRhUHRyLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCkKIHsKICAg
ICBpZiAoIWtleVN5c3RlbUlzU3VwcG9ydGVkKGtleVN5c3RlbSkpCkBAIC0xMjQ0LDYgKzEyNjYs
MTggQEAgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNhbmNlbEtleVJlcXUKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQV9WMikKK1JldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVz
dD4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dGFrZVJlcXVlc3RGb3JQbGF5
ZXJBbmRLZXlVUkkoTWVkaWFQbGF5ZXIqIHBsYXllciwgY29uc3QgU3RyaW5nJiBrZXlVUkkpCit7
CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogX3RoaXMgPSBwbGF5ZXJU
b1ByaXZhdGVNYXAoKS5nZXQocGxheWVyKTsKKyAgICBpZiAoIV90aGlzKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBfdGhpcy0+bV9rZXlVUklUb1JlcXVlc3RNYXAudGFr
ZShrZXlVUkkpOworCit9CisjZW5kaWYKKwogI2lmIEhBVkUoQVZGT1VOREFUSU9OX1RFWFRfVFJB
Q0tfU1VQUE9SVCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpj
bGVhclRleHRUcmFja3MoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188934</attachid>
            <date>2013-02-18 13:01:13 -0800</date>
            <delta_ts>2013-02-18 13:02:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109739-20130218125736.patch</filename>
            <type>text/plain</type>
            <size>24248</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTYyOTU0YTE4YzEwZGE5
ZDllOWNhZjJmZGQ5OTYzYzBjZWRiNjIwMC4uNjg0ZTZmMDM5YmE1MDI2ZjI4NzkwNDE0MDM0MTMw
MTZlYzUwNzQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEzLTAyLTEzICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEVNRTogQWRkIGEgQ0RNUHJp
dmF0ZSBpbXBsZW1lbnRhdGlvbiB1c2luZyBBVkZvdW5kYXRpb24uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3MzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBDRE1Qcml2YXRlIGltcGxlbWVu
dGF0aW9uIHVzaW5nIEFWRm91bmRhdGlvbiwgc2ltaWxhciB0byB0aGUgRU1FIHYxIGltcGxlbWVu
dGF0aW9uCisgICAgICAgIGluIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuIFRo
aXMgcmVxdWlyZXMgcGFzc2luZyB0aGUgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QKKyAg
ICAgICAgZnJvbSB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyBpbnN0YW5j
ZSB0byBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uLiBUbyBkbyBzbworICAgICAgICB3aXRob3V0IGFk
ZGluZyBwbGF0Zm9ybS1zcGVjaWZpYyBBUEkgdG8gTWVkaWFQbGF5ZXIsIGFkZCBhIHN0YXRpYyBt
YXAgZnJvbSBNZWRpYVBsYXllciAtPgorICAgICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDIGluc3RhbmNlcyB0byBiZSB1c2VkIHRvIHZlbmQgdGhlIEFWQXNzZXRSZXNvdXJj
ZUxvYWRpbmdSZXF1ZXN0CisgICAgICAgIHRvIENETVNlc3Npb25BVkZvdW5kYXRpb24uCisKKyAg
ICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjppbnN0YWxsZWRDRE1GYWN0b3JpZXMpOiBBZGQgdGhlIGZhY3RvcnkgZm9yIENETVByaXZhdGVB
VkZvdW5kYXRpb24uCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24uaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQVZGb3VuZGF0aW9uOjpjcmVhdGUp
OiBTaW1wbGUgZmFjdG9yeSBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQVZG
b3VuZGF0aW9uOjp+Q0RNUHJpdmF0ZUFWRm91bmRhdGlvbik6IFNpbXBsZSB2aXJ0dWFsIGRlc3Ry
dWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQVZGb3VuZGF0aW9uOjpjZG0pOiBT
aW1wbGUgZ2V0dGVyLgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUFWRm91bmRhdGlvbjo6
Q0RNUHJpdmF0ZUFWRm91bmRhdGlvbik6IFNpbXBsZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24ubW06IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbjo6fkNETVNlc3Npb25BVkZv
dW5kYXRpb24pOiBTaW1wbGUgZGVzdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZh
dGVBVkZvdW5kYXRpb246OnN1cHBvcnRzS2V5U3l0ZW0pOiBDaGVjayB3aGV0aGVyIHRoZSBnaXZl
biBrZXkgc3lzdGVtIGlzIHN1cHBvcnRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVB
VkZvdW5kYXRpb246OnN1cHBvcnRzTUlNRVR5cGUpOiBDaGVjayB3aGV0aGVyIHRoZSBnaXZlbiBN
SU1FIHR5cGUgaXMgc3VwcG9ydGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUFWRm91
bmRhdGlvbjo6Y3JlYXRlU2Vzc2lvbik6IFJldHVybiBhIG5ldyBDRE1TZXNzaW9uQVZGb3VuZGF0
aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbjo6Q0RNU2Vzc2lv
bkFWRm91bmRhdGlvbik6IFNpbXBsZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkNE
TVNlc3Npb25BVkZvdW5kYXRpb246OmdlbmVyYXRlS2V5UmVxdWVzdCk6IFJldHJpZXZlIHRoZSBB
VkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdAorICAgICAgICAgICAgZnJvbSB0aGUgTWVkaWFQ
bGF5ZXIsIGFuZCB1c2UgaXQgdG8gZ2VuZXJhdGUgYSBrZXkgcmVxdWVzdC4KKyAgICAgICAgKFdl
YkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb246OnJlbGVhc2VLZXlzKTogTm8tb3AuCisgICAg
ICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uOjp1cGRhdGUpOiBBZGQgdGhlIHBh
c3NlZCBpbiBrZXkgdG8gdGhlIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0LgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OnBsYXllclRvUHJpdmF0ZU1hcCk6IExhemlseSBpbnN0YW50aWF0ZSBzdGF0aWMgbWFwLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyk6IFJlZ2lzdGVyIHdpdGggdGhlIHBsYXllclRv
UHJpdmF0ZU1hcC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKTogVW5yZWdpc3Rl
ciBmcm9tIHNhbWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOiBBbHNvIHNlbmQga2V5
TmVlZGVkIGV2ZW50IGluIEVOQ1JZUFRFRF9NRURJQV9WMi4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmV4dHJhY3RLZXlVUklLZXlJREFuZENl
cnRpZmljYXRlRnJvbUluaXREYXRhKTogQ29udmVydCB0aGlzIAorICAgICAgICAgICAgbWV0aG9k
IGZyb20gZmlsZS1zdGF0aWMgdG8gY2xhc3Mgc3RhdGljLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dGFrZVJlcXVlc3RGb3JQbGF5ZXJBbmRL
ZXlVUkkpOiBQdWxsIHRoZSBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdAorICAgICAgICAg
ICAgZnJvbSBtX2tleVVSSVRvUmVxdWVzdE1hcCBhbmQgcmV0dXJuIGl0LCBpZiBwcmVzZW50Lgor
CiAyMDEzLTAyLTEyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAg
IE1lZGlhS2V5U2Vzc2lvbiBzaG91bGQgbm90IGJlIEdDZCB3aGlsZSBmaXJpbmcgZXZlbnQgbGlz
dGVuZXJzIG9yIHdpdGggY3VzdG9tIHByb3BlcnRpZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggNDNhOWYxNzAyMTJlZjJmNmViN2FjMTJj
MzZhZGVmNzdiNTM1NzdjYy4uMTYzNzIxNjJiZGY3NWNiNTg1M2MwMmFkYjRlYjVhZTFjMTY1YjE5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApA
QCAtMzQsNiArMzQsMTAgQEAKICNpbmNsdWRlICJNZWRpYUtleXMuaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTA5MAorI2luY2x1ZGUgIkNETVByaXZhdGVBVkZvdW5kYXRpb24uaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBDRE1GYWN0b3J5IHsKQEAgLTU3LDYgKzYxLDEw
IEBAIHN0YXRpYyBWZWN0b3I8Q0RNRmFjdG9yeSo+JiBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKQog
ICAgICAgICBxdWVyaWVkQ0RNcyA9IHRydWU7CiAKICAgICAgICAgLy8gRklYTUU6IGluaXRpYWxp
emUgc3BlY2lmaWMgVUEgQ0RNcy4gaHR0cDovL3dlYmtpdC5vcmcvYi8xMDkzMTgsIGh0dHA6Ly93
ZWJraXQub3JnL2IvMTA5MzIwCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDkwCisgICAgICAgIGNkbXMuYXBwZW5kKG5ldyBDRE1GYWN0b3J5KENETVByaXZhdGVBVkZv
dW5kYXRpb246OmNyZWF0ZSwgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9ydHNLZXlTeXRl
bSkpOworI2VuZGlmCisKICAgICB9CiAKICAgICByZXR1cm4gY2RtczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCmluZGV4IDZhM2IwMjM5ODE1NGY5NjI2ZmU4
MGQ2ZmVhMjMxNGQxYzc0MTRhMGQuLjNiNzUzZGM1MzdhNzgxODY1ZTliNmUxM2FmZmQ2M2Q2ZGZl
ZGNhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaApA
QCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAKIGNsYXNzIENETSB7CiBwdWJsaWM6CisKKyAgICBl
bnVtIENETUVycm9yQ29kZSB7IFVua25vd25FcnJvciA9IDEsIENsaWVudEVycm9yLCBTZXJ2aWNl
RXJyb3IsIE91dHB1dEVycm9yLCBIYXJkd2FyZUNoYW5nZUVycm9yLCBEb21haW5FcnJvciB9Owog
ICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpOwogICAgIHN0
YXRpYyBQYXNzT3duUHRyPENETT4gY3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKICAg
ICBzdGF0aWMgdm9pZCByZWdpc3RlckNETUZhY3RvcnkoQ3JlYXRlQ0RNLCBDRE1TdXBwb3J0c0tl
eVN5c3RlbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlMzUzNDNi
ODJhZjJhMWFkZDUwZjRiMjY0NmE0ZjQxZWNjYWYzMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24u
aApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDRE1Qcml2YXRlQVZGb3Vu
ZGF0aW9uX2gKKyNkZWZpbmUgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbl9oCisKKyNpbmNsdWRlICJD
RE1Qcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBDRE07CisKK2NsYXNzIENETVByaXZhdGVBVkZvdW5kYXRpb24gOiBwdWJsaWMgQ0RN
UHJpdmF0ZUludGVyZmFjZSB7CitwdWJsaWM6CisgICAgLy8gQ0RNRmFjdG9yeSBzdXBwb3J0Ogor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENETVByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShDRE0qIGNk
bSkgeyByZXR1cm4gYWRvcHRQdHIobmV3IENETVByaXZhdGVBVkZvdW5kYXRpb24oY2RtKSk7IH0K
KyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5dGVtKGNvbnN0IFN0cmluZyYpOworCisgICAg
dmlydHVhbCB+Q0RNUHJpdmF0ZUFWRm91bmRhdGlvbigpIHsgfQorCisgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBQYXNzT3duUHRyPENETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBPVkVSUklERTsK
KworICAgIENETSogY2RtKCkgY29uc3QgeyByZXR1cm4gbV9jZG07IH0KKworcHJvdGVjdGVkOgor
ICAgIENETVByaXZhdGVBVkZvdW5kYXRpb24oQ0RNKiBjZG0pIDogbV9jZG0oY2RtKSB7IH0KKyAg
ICBDRE0qIG1fY2RtOworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmIC8vIENETVByaXZhdGVB
VkZvdW5kYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQy
NzNmZjg5OGI2YWQ2OTM3ZjllODY4YzM3ZTQ2YzY0MzliZmQ1YTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5k
YXRpb24ubW0KQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIkNETVByaXZhdGVBVkZvdW5kYXRpb24uaCIKKworI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUFfVjIpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5
MAorCisjaW1wb3J0ICJDRE0uaCIKKyNpbXBvcnQgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbXBvcnQg
Ik1lZGlhUGxheWVyLmgiCisjaW1wb3J0ICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgiCisjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgorI2ltcG9ydCAiVVVJRC5oIgorI2ltcG9y
dCA8QVZGb3VuZGF0aW9uL0FWRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRp
bWUuaD4KKyNpbXBvcnQgPHd0Zi9VbnVzZWRQYXJhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIENETVNlc3Npb25BVkZvdW5kYXRpb24gOiBwdWJsaWMgQ0RNU2Vzc2lvbiB7Citw
dWJsaWM6CisgICAgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbihDRE1Qcml2YXRlQVZGb3VuZGF0aW9u
KiBwYXJlbnQpOworICAgIHZpcnR1YWwgfkNETVNlc3Npb25BVkZvdW5kYXRpb24oKSB7IH0KKwor
ICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBtX3Nlc3Npb25JZDsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxVaW50OEFycmF5PiBn
ZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5p
dERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUs
IHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBy
ZWxlYXNlS2V5cygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGUoVWludDhBcnJh
eSosIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0JiBlcnJv
ckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpIE9WRVJSSURFOworCitwcm90ZWN0ZWQ6
CisgICAgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbiogbV9wYXJlbnQ7CisgICAgU3RyaW5nIG1fc2Vz
c2lvbklkOworICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9y
ZXF1ZXN0OworfTsKKworU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5kYXRpb24p
CitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0KQorU09GVF9MSU5LX0NM
QVNTKEFWRm91bmRhdGlvbiwgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QpCisjZGVmaW5l
IEFWVVJMQXNzZXQgZ2V0QVZVUkxBc3NldENsYXNzKCkKKyNkZWZpbmUgQVZBc3NldFJlc291cmNl
TG9hZGluZ1JlcXVlc3QgZ2V0QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QoKQorCisKK2Jv
b2wgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9ydHNLZXlTeXRlbShjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSkKK3sKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2Uoa2V5U3lzdGVtLCAi
Y29tLmFwcGxlLmZwcyIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGtleVN5c3RlbSwgImNvbS5hcHBs
ZS5mcHMuMV8wIik7Cit9CisKK2Jvb2wgQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3VwcG9ydHNN
SU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIHJldHVybiBbQVZVUkxBc3Nl
dCBpc1BsYXlhYmxlRXh0ZW5kZWRNSU1FVHlwZTptaW1lVHlwZV07Cit9CisKK1Bhc3NPd25QdHI8
Q0RNU2Vzc2lvbj4gQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbjo6Y3JlYXRlU2Vzc2lvbigpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uKHRoaXMpKTsKK30K
KworQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbjo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbihDRE1Qcml2
YXRlQVZGb3VuZGF0aW9uKiBwYXJlbnQpCisgICAgOiBtX3BhcmVudChwYXJlbnQpCisgICAgLCBt
X3Nlc3Npb25JZChjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpCit7Cit9CisKK1Bhc3NSZWZQ
dHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRl
c3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNpZ25lZCBsb25nJiBz
eXN0ZW1Db2RlKQoreworICAgIFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7CisKKyAgICBNZWRpYVBs
YXllciogbWVkaWFQbGF5ZXIgPSBtX3BhcmVudC0+Y2RtKCktPm1lZGlhUGxheWVyKCk7CisgICAg
aWYgKCFtZWRpYVBsYXllcikgeworICAgICAgICBlcnJvckNvZGUgPSBOT1RfU1VQUE9SVEVEX0VS
UjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgU3RyaW5nIGtleVVSSTsKKyAgICBT
dHJpbmcga2V5SUQ7CisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGNlcnRpZmljYXRlOworICAgIGlm
ICghTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZXh0cmFjdEtleVVSSUtleUlE
QW5kQ2VydGlmaWNhdGVGcm9tSW5pdERhdGEoaW5pdERhdGEsIGtleVVSSSwga2V5SUQsIGNlcnRp
ZmljYXRlKSkgeworICAgICAgICBlcnJvckNvZGUgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgbV9yZXF1ZXN0ID0gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6dGFrZVJlcXVlc3RGb3JQbGF5ZXJBbmRLZXlVUkkobWVkaWFQbGF5
ZXIsIGtleVVSSSk7CisgICAgaWYgKCFtX3JlcXVlc3QpIHsKKyAgICAgICAgZXJyb3JDb2RlID0g
SU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1fc2Vz
c2lvbklkID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworCisgICAgUmV0YWluUHRyPE5T
RGF0YT4gY2VydGlmaWNhdGVEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhC
eXRlczpjZXJ0aWZpY2F0ZS0+YmFzZUFkZHJlc3MoKSBsZW5ndGg6Y2VydGlmaWNhdGUtPmJ5dGVM
ZW5ndGgoKV0pOworICAgIE5TU3RyaW5nKiBhc3NldFN0ciA9IGtleUlEOworICAgIFJldGFpblB0
cjxOU0RhdGE+IGFzc2V0SUQgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IFthc3NldFN0ciBjU3Ry
aW5nVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gbGVuZ3RoOlthc3NldFN0ciBs
ZW5ndGhPZkJ5dGVzVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOworICAgIE5T
RXJyb3IqIGVycm9yID0gMDsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBrZXlSZXF1ZXN0ID0gW21f
cmVxdWVzdC5nZXQoKSBzdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6Y2VydGlm
aWNhdGVEYXRhLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmFzc2V0SUQuZ2V0KCkgb3B0aW9uczpu
aWwgZXJyb3I6JmVycm9yXTsKKworICAgIGlmICgha2V5UmVxdWVzdCkgeworICAgICAgICBOU0Vy
cm9yKiB1bmRlcmx5aW5nRXJyb3IgPSBbW2Vycm9yIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6TlNV
bmRlcmx5aW5nRXJyb3JLZXldOworICAgICAgICBlcnJvckNvZGUgPSBDRE06OkRvbWFpbkVycm9y
OworICAgICAgICBzeXN0ZW1Db2RlID0gW3VuZGVybHlpbmdFcnJvciBjb2RlXTsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgZXJyb3JDb2RlID0gMDsKKyAgICBzeXN0ZW1Db2RlID0g
MDsKKyAgICBkZXN0aW5hdGlvblVSTCA9IFN0cmluZygpOworCisgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBrZXlSZXF1ZXN0QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShba2V5UmVxdWVzdC5n
ZXQoKSBieXRlc10sIFtrZXlSZXF1ZXN0LmdldCgpIGxlbmd0aF0pOworICAgIHJldHVybiBVaW50
OEFycmF5OjpjcmVhdGUoa2V5UmVxdWVzdEJ1ZmZlciwgMCwga2V5UmVxdWVzdEJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpKTsKK30KKwordm9pZCBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uOjpyZWxlYXNlS2V5
cygpCit7Cit9CisKK2Jvb2wgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbjo6dXBkYXRlKFVpbnQ4QXJy
YXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQm
IGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkKK3sKKyAgICBpZiAoIWtleSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmV0YWluUHRyPE5TRGF0YT4ga2V5RGF0YSA9
IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6a2V5LT5iYXNlQWRkcmVzcygp
IGxlbmd0aDprZXktPmJ5dGVMZW5ndGgoKV0pOworICAgIFtbbV9yZXF1ZXN0LmdldCgpIGRhdGFS
ZXF1ZXN0XSByZXNwb25kV2l0aERhdGE6a2V5RGF0YS5nZXQoKV07CisgICAgW21fcmVxdWVzdC5n
ZXQoKSBmaW5pc2hMb2FkaW5nXTsKKyAgICBlcnJvckNvZGUgPSAwOworICAgIHN5c3RlbUNvZGUg
PSAwOworICAgIG5leHRNZXNzYWdlID0gbnVsbHB0cjsKKworICAgIHJldHVybiB0cnVlOworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDAyNjJlYmEzYmYyMjQ4NzNiOWE3NmNmYjZlMDM0OWE4NWZkZjlm
MzEuLmRjNzE0MmM0ZDllZTkyNDQ2YmI0N2UwYTEzNGM5YTNlNjUzYTNmNjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYwMDIs
NiArNjAwMiw3IEBACiAJCUNEMjdGNkU1MTQ1NzY4NUEwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDI3RjZFMjE0NTc2NzU4MDA3ODIwN0QgLyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwICovOyB9Owog
CQlDRDI3RjZFNzE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkU2MTQ1NzcwRDMw
MDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlDRDM3QjM5ODE1QzFCOTcx
MDA2REM4OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzdCMzc0MTVDMUE3RTEwMDZEQzg5OCAvKiBE
aWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwICovOyB9OworCQlDRDQ3QjNGQzE2Q0MzNEY4MDBBMjFF
QzggLyogQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDdCM0ZBMTZDQzM0RjgwMEEyMUVDOCAvKiBDRE1Qcml2
YXRlQVZGb3VuZGF0aW9uLm1tICovOyB9OwogCQlDRDRBQzUyQTE0OTZBRTlBMDA4N0M0RUYgLyog
Q29tcG9zaXRlLndhdiBpbiBDb3B5IEF1ZGlvIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDRBQzUyODE0OTZBRTJGMDA4N0M0RUYgLyogQ29tcG9zaXRlLndh
diAqLzsgfTsKIAkJQ0Q3RTA1MjIxNjUxQzI4MjAwQzEyMDFGIC8qIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEN0UwNTIxMTY1MUE4NDEwMEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0g
Ki87IH07CiAJCUNEODIwMzBBMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDgyMDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
MzYxMiw2ICsxMzYxMyw4IEBACiAJCUNEMjdGNkU2MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNv
bnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFD
b250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzN0IzNzQxNUMx
QTdFMTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDM3QjM3NTE1QzFBN0UxMDA2REM4OTggLyogRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpYWdu
b3N0aWNMb2dnaW5nS2V5cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDQ3QjNG
OTE2Q0MzNEY4MDBBMjFFQzggLyogQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLmg7IHBhdGggPSBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0N0IzRkExNkNDMzRGODAwQTIxRUM4IC8qIENETVByaXZh
dGVBVkZvdW5kYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRDRBQzUyODE0OTZBRTJGMDA4N0M0RUYgLyogQ29tcG9zaXRlLndhdiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGF1ZGlvLndhdjsgbmFtZSA9IENv
bXBvc2l0ZS53YXY7IHBhdGggPSBwbGF0Zm9ybS9hdWRpby9yZXNvdXJjZXMvQ29tcG9zaXRlLndh
djsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4
MTEgLyogZnVsbHNjcmVlbi5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3Jl
ZW4uY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDdFMDUyMDE2NTFBODQxMDBD
MTIwMUYgLyogV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5oOyBwYXRoID0gb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNzE1LDYgKzIxNzE4LDkgQEAK
IAkJCWNoaWxkcmVuID0gKAogCQkJCUNEQTk4RTA5MTYwM0NENTkwMEZFQTNCMSAvKiBDRE0uY3Bw
ICovLAogCQkJCUNEQTk4RTBBMTYwM0NENTkwMEZFQTNCMSAvKiBDRE0uaCAqLywKKwkJCQlDREE5
OEUwQzE2MDNDRjNDMDBGRUEzQjEgLyogQ0RNUHJpdmF0ZS5oICovLAorCQkJCUNENDdCM0Y5MTZD
QzM0RjgwMEEyMUVDOCAvKiBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLmggKi8sCisJCQkJQ0Q0N0Iz
RkExNkNDMzRGODAwQTIxRUM4IC8qIENETVByaXZhdGVBVkZvdW5kYXRpb24ubW0gKi8sCiAJCQkJ
Q0RBOThERDUxNjAyNUJFRDAwRkVBM0IxIC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCAqLywK
IAkJCQlDREE5OERENjE2MDI1QkVEMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCAq
LywKIAkJCQlDREE5OERENzE2MDI1QkVFMDBGRUEzQjEgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQu
aWRsICovLApAQCAtMjE3MjcsNyArMjE3MzMsNiBAQAogCQkJCUNEQTk4REM3MTYwMTRGMkMwMEZF
QTNCMSAvKiBNZWRpYUtleVNlc3Npb24uY3BwICovLAogCQkJCUNEQTk4REM4MTYwMTRGMkMwMEZF
QTNCMSAvKiBNZWRpYUtleVNlc3Npb24uaCAqLywKIAkJCQlDREE5OERDOTE2MDE0RjQwMDBGRUEz
QjEgLyogTWVkaWFLZXlTZXNzaW9uLmlkbCAqLywKLQkJCQlDREE5OEUwQzE2MDNDRjNDMDBGRUEz
QjEgLyogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggKi8sCiAJCQkpOwogCQkJ
bmFtZSA9IGVuY3J5cHRlZG1lZGlhOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI3
NDkyLDYgKzI3NDk3LDcgQEAKIAkJCQkxOUJGRjY0QzExQzBGMkFDMDBCOEMwNEQgLyogRE9NU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTAyQUI0OTBB
RDQzOEMwMDAzNzg1NDAgLyogRE9NU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJODUwMkFCNEIwQUQ0MzhDMDAwMzc4NTQwIC8qIERPTVNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNENDdCM0ZDMTZDQzM0Rjgw
MEEyMUVDOCAvKiBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODUwMkFCNEQwQUQ0MzhDMDAwMzc4NTQwIC8qIERPTVNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTQzNThFODZCMTM2MEEyMTYwMEU0NzQ4QyAvKiBET01TVkdG
RURyb3BTaGFkb3dFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMkFCNEYwQUQ0MzhD
MDAwMzc4NTQwIC8qIERPTVNWR0ZFRmxvb2RFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmgKaW5kZXggM2U0NjZiYzY5MGUwZjNiODRmYzNlMGI5ODcwODdiNTMwZTUx
NzU2MC4uMzU5Yjg0NzkyODcwYWMwZDNkZjdjNTdmZWVjZTUzOThjMzM5ZmE2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMuaApAQCAtNzQsNiArNzQsMTQgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ2Fu
Y2VsTG9hZGluZ1JlcXVlc3QoQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3QqKTsKICNlbmRp
ZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QV9WMikKKyAgICBzdGF0aWMgYm9vbCBleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZy
b21Jbml0RGF0YShVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBrZXlVUkksIFN0cmluZyYg
a2V5SUQsIFJlZlB0cjxVaW50OEFycmF5PiYgY2VydGlmaWNhdGUpOworI2VuZGlmCisKKyNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIHN0YXRpYyBSZXRhaW5QdHI8QVZBc3NldFJl
c291cmNlTG9hZGluZ1JlcXVlc3Q+IHRha2VSZXF1ZXN0Rm9yUGxheWVyQW5kS2V5VVJJKE1lZGlh
UGxheWVyKiwgY29uc3QgU3RyaW5nJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKE1lZGlhUGxheWVyKik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCmluZGV4IGY0ZWZhY2VmMzI3OTZkZmMzNGM1OGQyNDRjNjM1ODAxMjNlYjliZDIu
LjhjNGMwNDA4NzY5ZTU1OTA2MTc2ODM3ZDU0YmVmY2U4OTIxZDdiMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQpAQCAtMTg2LDYgKzE4NiwxNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqYm9vbFN0
cmluZyhib29sIHZhbCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9W
MikKK3R5cGVkZWYgSGFzaE1hcDxNZWRpYVBsYXllciosIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMqPiBQbGF5ZXJUb1ByaXZhdGVNYXBUeXBlOworc3RhdGljIFBsYXllclRvUHJp
dmF0ZU1hcFR5cGUmIHBsYXllclRvUHJpdmF0ZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChQbGF5ZXJUb1ByaXZhdGVNYXBUeXBlLCBtYXAsICgpKTsKKyAgICByZXR1cm4gbWFwOwor
fTsKKyNlbmRpZgorCisKIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGUoTWVkaWFQbGF5ZXIqIHBs
YXllcikKIHsgCiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDKHBsYXllcikpOwpAQCAtMjEzLDEwICsyMjMsMTYgQEAgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QyhNZWRpYVBsYXkKICAgICAsIG1fY3VycmVudFRyYWNrKDApCiAjZW5kaWYKIHsKKyNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIHBsYXllclRvUHJpdmF0ZU1hcCgpLnNldChwbGF5
ZXIsIHRoaXMpOworI2VuZGlmCiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKCkKIHsKKyNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBX1YyKQorICAgIHBsYXllclRvUHJpdmF0ZU1hcCgpLnJlbW92ZShwbGF5
ZXIoKSk7CisjZW5kaWYKICAgICBjYW5jZWxMb2FkKCk7CiB9CiAKQEAgLTg3MCw3ICs4ODYsNyBA
QCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JM
b2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0UgogICAgIFN0cmluZyBzY2hlbWUgPSBbW1thdlJlcXVl
c3QgcmVxdWVzdF0gVVJMXSBzY2hlbWVdOwogICAgIFN0cmluZyBrZXlVUkkgPSBbW1thdlJlcXVl
c3QgcmVxdWVzdF0gVVJMXSBhYnNvbHV0ZVN0cmluZ107CiAKLSNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURf
TUVESUFfVjIpCiAgICAgaWYgKHNjaGVtZSA9PSAic2tkIikgewogICAgICAgICAvLyBDcmVhdGUg
YW4gaW5pdERhdGEgd2l0aCB0aGUgZm9sbG93aW5nIGxheW91dDoKICAgICAgICAgLy8gWzQgYnl0
ZXM6IGtleVVSSSBzaXplXSwgW2tleVVSSSBzaXplIGJ5dGVzOiBrZXlVUkldCkBAIC04ODIsNyAr
ODk4LDEyIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxk
V2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgIFJlZlB0cjxVaW50MTZB
cnJheT4ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLCA0
LCBrZXlVUkkubGVuZ3RoKCkpOwogICAgICAgICBrZXlVUklBcnJheS0+c2V0UmFuZ2Uoa2V5VVJJ
LmNoYXJhY3RlcnMoKSwga2V5VVJJLmxlbmd0aCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAw
KTsKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgICAgIGlmICghcGxheWVyKCkt
PmtleU5lZWRlZCgiY29tLmFwcGxlLmxza2QiLCBlbXB0eVN0cmluZygpLCBzdGF0aWNfY2FzdDxj
b25zdCB1bnNpZ25lZCBjaGFyKj4oaW5pdERhdGFCdWZmZXItPmRhdGEoKSksIGluaXREYXRhQnVm
ZmVyLT5ieXRlTGVuZ3RoKCkpKQorI2VsaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKKyAg
ICAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKGlu
aXREYXRhQnVmZmVyLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAg
aWYgKCFwbGF5ZXIoKS0+a2V5TmVlZGVkKGluaXREYXRhLmdldCgpKSkKKyNlbmRpZgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIG1fa2V5VVJJVG9SZXF1ZXN0TWFwLnNldChr
ZXlVUkksIGF2UmVxdWVzdCk7CkBAIC0xMTE2LDkgKzExMzcsOCBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29u
dGV4dCogYwogCiAjZW5kaWYKIAotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCi0KLXN0YXRp
YyBib29sIGV4dHJhY3RLZXlVUklLZXlJREFuZENlcnRpZmljYXRlRnJvbUluaXREYXRhKFVpbnQ4
QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGtleVVSSSwgU3RyaW5nJiBrZXlJRCwgUmVmUHRyPFVp
bnQ4QXJyYXk+JiBjZXJ0aWZpY2F0ZSkKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBF
TkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0YShV
aW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBrZXlVUkksIFN0cmluZyYga2V5SUQsIFJlZlB0
cjxVaW50OEFycmF5PiYgY2VydGlmaWNhdGUpCiB7CiAgICAgLy8gaW5pdERhdGEgc2hvdWxkIGhh
dmUgdGhlIGZvbGxvd2luZyBsYXlvdXQ6CiAgICAgLy8gWzQgYnl0ZXM6IGtleVVSSSBsZW5ndGhd
W04gYnl0ZXM6IGtleVVSSV1bNCBieXRlczogY29udGVudElEIGxlbmd0aF0sIFtOIGJ5dGVzOiBj
b250ZW50SURdLCBbNCBieXRlczogY2VydGlmaWNhdGUgbGVuZ3RoXVtOIGJ5dGVzOiBjZXJ0aWZp
Y2F0ZV0KQEAgLTExNjcsNyArMTE4Nyw5IEBAIHN0YXRpYyBib29sIGV4dHJhY3RLZXlVUklLZXlJ
REFuZENlcnRpZmljYXRlRnJvbUluaXREYXRhKFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTCiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KKyNlbmRpZgogCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
IE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNv
bnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhUHRyLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCkK
IHsKICAgICBpZiAoIWtleVN5c3RlbUlzU3VwcG9ydGVkKGtleVN5c3RlbSkpCkBAIC0xMjQ0LDYg
KzEyNjYsMTggQEAgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmNhbmNlbEtleVJlcXUKIH0KICNlbmRpZgogCisjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKK1JldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5n
UmVxdWVzdD4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dGFrZVJlcXVlc3RG
b3JQbGF5ZXJBbmRLZXlVUkkoTWVkaWFQbGF5ZXIqIHBsYXllciwgY29uc3QgU3RyaW5nJiBrZXlV
UkkpCit7CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogX3RoaXMgPSBw
bGF5ZXJUb1ByaXZhdGVNYXAoKS5nZXQocGxheWVyKTsKKyAgICBpZiAoIV90aGlzKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBfdGhpcy0+bV9rZXlVUklUb1JlcXVlc3RN
YXAudGFrZShrZXlVUkkpOworCit9CisjZW5kaWYKKwogI2lmIEhBVkUoQVZGT1VOREFUSU9OX1RF
WFRfVFJBQ0tfU1VQUE9SVCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpjbGVhclRleHRUcmFja3MoKQo=
</data>
<flag name="review"
          id="209188"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>