<?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>123216</bug_id>
          
          <creation_ts>2013-10-23 13:41:54 -0700</creation_ts>
          <short_desc>Add CryptoKey base class and bindings</short_desc>
          <delta_ts>2013-10-24 10:31:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>
          
          <blocked>122679</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>942812</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-23 13:41:54 -0700</bug_when>
    <thetext>Add CryptoKey base class and bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942830</commentid>
    <comment_count>1</comment_count>
      <attachid>214994</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-23 13:57:40 -0700</bug_when>
    <thetext>Created attachment 214994
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942843</commentid>
    <comment_count>2</comment_count>
      <attachid>214997</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-23 14:27:37 -0700</bug_when>
    <thetext>Created attachment 214997
with release build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942972</commentid>
    <comment_count>3</comment_count>
      <attachid>214997</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-10-23 20:44:49 -0700</bug_when>
    <thetext>Comment on attachment 214997
with release build fix

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

r=me

&gt; Source/WebCore/bindings/js/JSCryptoAlgorithmBuilder.h:49
&gt; +    JSC::ExecState* m_exec;

It might be slightly more efficient to store a VM&amp; here.  I think everything except perhaps constructEmptyObject has an override that takes a VM&amp; or VM*.

&gt; Source/WebCore/bindings/js/JSCryptoAlgorithmBuilder.h:50
&gt; +    JSC::Strong&lt;JSC::JSObject&gt; m_dictionary;

If this is only ever used on the stack, does this have to be a Strong?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942982</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-23 22:05:57 -0700</bug_when>
    <thetext>&gt; It might be slightly more efficient to store a VM&amp; here.  I think everything except perhaps constructEmptyObject has an override that takes a VM&amp; or VM*.

Yes, I started with VM, but had to switch to ExecState because I&apos;ll need to call constructEmptyObject again for nested dictionaries (it&apos;s not in the patch right now).

&gt; If this is only ever used on the stack, does this have to be a Strong?

Good point, I copied it from elsewhere thoughtlessly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943186</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-24 10:04:09 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r157936&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943195</commentid>
    <comment_count>6</comment_count>
      <attachid>214997</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-24 10:14:20 -0700</bug_when>
    <thetext>Comment on attachment 214997
with release build fix

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

&gt; Source/WebCore/bindings/js/JSCryptoAlgorithmBuilder.h:45
&gt; +    virtual void add(const char*, unsigned long) OVERRIDE;

Why “unsigned long” instead of unsigned?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943200</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-24 10:24:44 -0700</bug_when>
    <thetext>&gt; Why “unsigned long” instead of unsigned?

This is for adding dictionary items that are marked &quot;unsigned long&quot; in IDL, what should this map to in C++ code?

In practice, key length could as well be 16 bit:

dictionary HmacKeyParams : Algorithm {
  // The inner hash function to use.
  AlgorithmIdentifier hash;

  // The length (in bytes) of the key to generate. If unspecified, the
  // recommended length will be used, which is the size of the associated hash function&apos;s block
  // size.
  unsigned long length?;
};</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943203</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-24 10:31:44 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; Why “unsigned long” instead of unsigned?
&gt; 
&gt; This is for adding dictionary items that are marked &quot;unsigned long&quot; in IDL, what should this map to in C++ code?

unsigned.

I know, it’s not obvious.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214994</attachid>
            <date>2013-10-23 13:57:40 -0700</date>
            <delta_ts>2013-10-23 14:27:37 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>AddCryptoKey.txt</filename>
            <type>text/plain</type>
            <size>33938</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Nzg4MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDEzLTEwLTIzICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBDcnlwdG9LZXkgYmFz
ZSBjbGFzcyBhbmQgYmluZGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyMzIxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogY3J5cHRvL0NyeXB0b0tleS5pZGw6IEFkZGVkLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICBQcm9jZXNzIHRoZSBJREwuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkIGZpbGVzLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9LZXlDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5OjphbGdvcml0aG0pOiBVc2UgYSB2aXNpdG9yIHRvIGJ1
aWxkIGFsZ29yaXRobSBkaWN0aW9uYXJ5CisgICAgICAgIGZvciB0aGUga2V5LgorCisgICAgICAg
ICogY3J5cHRvL0NyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlci5jcHA6IEFkZGVkLgor
ICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXIuaDogQWRk
ZWQuCisgICAgICAgIEFuIGludGVyZmFjZSBmb3IgYSB2aXNpdG9yIHdlJ2xsIHVzZSB0byBleHBv
c2UgQ3J5dG9LZXkuYWxnb3JpdGhtIGluIGJpbmRpbmdzLAorICAgICAgICBhbmQgcG9zc2libHkg
YWxzbyBmb3Igc3RvcmFnZSBzZXJpYWxpemF0aW9uLiBOb3QgY29tcGxldGUgeWV0LCB3ZSdsbCBu
ZWVkIHN1cHBvcnQKKyAgICAgICAgZm9yIGEgZmV3IG1vcmUgc2ltcGxlIHR5cGVzLCBhbmQgbGVz
cyB0cml2aWFsbHksIGZvciBuZXN0ZWQgYWxnb3JpdGhtcy4KKworICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5oOiBBZGRlZC4KKyAgICAgICAgQW4gaW1w
bGVtZW50YXRpb24gdGhhdCBidWlsZHMgYW4gYWxnb3JpdGhtIGRlc2NyaXB0aW9uIGRpY3Rpb25h
cnkgZm9yIEpTIGJpbmRpbmdzLgorCisgICAgICAgICogY3J5cHRvL0NyeXB0b0tleS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5Ojp+Q3J5cHRvS2V5KToKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0tleTo6YnVpbGRBbGdvcml0aG1EZXNjcmlwdGlvbik6CisgICAgICAg
ICogY3J5cHRvL0NyeXB0b0tleS5oOiBBZGRlZC4KKyAgICAgICAgQWRkZWQgYW4gYWxtb3N0IGVt
cHR5IGltcGxlbWVudGF0aW9uLiBTb21lIG9mIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgY3VycmVu
dGx5CisgICAgICAgIG1hcmtlZCBhcyBwdXJlIHZpcnR1YWwgd2lsbCBsaWtlbHkgYmUgaW1wbGVt
ZW50ZWQgaW4gdGhpcyBiYXNlIGNsYXNzLgorCiAyMDEzLTEwLTIzICBNeWxlcyBDLiBNYXhmaWVs
ZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgQW50aWFsaWFzIHVuZGVybGluZXMg
aWYgdGhleSdyZSBub3QgYXhpcy1hbGlnbmVkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMTU3ODgzKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTI4Myw2ICsyODMsNyBAQCBzZXQoV2ViQ29yZV9JRExfRklMRVMKICAgICBNb2R1
bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwKICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmlkbAogCisgICAgY3J5cHRvL0NyeXB0b0tleS5pZGwKICAgICBjcnlwdG8vU3VidGxl
Q3J5cHRvLmlkbAogCiAgICAgY3NzL0NTU0NoYXJzZXRSdWxlLmlkbApJbmRleDogU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxNTc4ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNiArMTk4LDcgQEAgQklO
RElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJkYXRhYmFzZS9Xb3JrZXJH
bG9iYWxTY29wZVdlYkRhdGFiYXNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYnNv
Y2tldHMvQ2xvc2VFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5pZGwgXAorICAgICQoV2ViQ29yZSkvY3J5cHRvL0NyeXB0b0tleS5pZGwgXAog
ICAgICQoV2ViQ29yZSkvY3J5cHRvL1N1YnRsZUNyeXB0by5pZGwgXAogICAgICQoV2ViQ29yZSkv
Y3NzL0NTU0NoYXJzZXRSdWxlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTRm9udEZhY2VM
b2FkRXZlbnQuaWRsIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNp
b24gMTU3ODgzKQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTI5OCw2ICsxMjk4LDcgQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1dvcmtlckdsb2JhbFNjb3BlV2ViRGF0YWJhc2Uu
aWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvd2Vic29ja2V0cy9DbG9zZUV2ZW50LmlkbCBcCiAJ
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbCBcCisJJChXZWJDb3Jl
KS9jcnlwdG8vQ3J5cHRvS2V5LmlkbCBcCiAJJChXZWJDb3JlKS9jcnlwdG8vU3VidGxlQ3J5cHRv
LmlkbCBcCiAJJChXZWJDb3JlKS9jc3MvQ1NTQ2hhcnNldFJ1bGUuaWRsIFwKIAkkKFdlYkNvcmUp
L2Nzcy9DU1NGb250RmFjZUxvYWRFdmVudC5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9u
IDE1Nzg4MykKKysrIFNvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsNyArMTY1LDcgQEAgRU5BQkxFX1NQRUVD
SF9TWU5USEVTSVMgPSAkKEVOQUJMRV9TUEVFQwogRU5BQkxFX1NQRUVDSF9TWU5USEVTSVNfbWFj
b3N4ID0gRU5BQkxFX1NQRUVDSF9TWU5USEVTSVM7CiBFTkFCTEVfU1FMX0RBVEFCQVNFID0gRU5B
QkxFX1NRTF9EQVRBQkFTRTsKIEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQgPSA7Ci1FTkFCTEVfU1VC
VExFX0NSWVBUTyA9IDsKK0VOQUJMRV9TVUJUTEVfQ1JZUFRPID0gRU5BQkxFX1NVQlRMRV9DUllQ
VE87CiBFTkFCTEVfU1ZHID0gRU5BQkxFX1NWRzsKIEVOQUJMRV9TVkdfRk9OVFMgPSBFTkFCTEVf
U1ZHX0ZPTlRTOwogRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQgPSA7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
NTc4ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTU1MjQsNiArNTUyNCwxNSBAQAogCQlFMTUxM0Q1MTE2NzdG
MDg4MDAxNDlGQ0IgLyogTm90SW1wbGVtZW50ZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1MTNENTAxNjc3RjA4ODAwMTQ5RkNCIC8qIE5vdElt
cGxlbWVudGVkLmNwcCAqLzsgfTsKIAkJRTE1MjU1MTUxNkZEMjM1MDAwM0Q3QURCIC8qIFdlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1MjU1MTMxNkZEMjM0RjAwM0Q3QURC
IC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oICovOyB9
OwogCQlFMTUyNTUxNjE2RkQyMzUwMDAzRDdBREIgLyogV2ViQ29yZVJlc291cmNlSGFuZGxlQXNP
cGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTE1MjU1MTQxNkZEMjM0RjAwM0Q3QURCIC8qIFdlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSAqLzsgfTsKKwkJRTE1N0E4RTAxODE3
MzMxQzAwOUY4MjFEIC8qIEpTQ3J5cHRvS2V5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTdBOERFMTgxNzMzMUMwMDlGODIxRCAvKiBKU0NyeXB0
b0tleS5jcHAgKi87IH07CisJCUUxNTdBOEUxMTgxNzMzMUMwMDlGODIxRCAvKiBKU0NyeXB0b0tl
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1N0E4
REYxODE3MzMxQzAwOUY4MjFEIC8qIEpTQ3J5cHRvS2V5LmggKi87IH07CisJCUUxNTdBOEU0MTgx
NzNBM0EwMDlGODIxRCAvKiBDcnlwdG9LZXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1N0E4RTIxODE3M0EzQTAwOUY4MjFEIC8qIENyeXB0b0tl
eS5jcHAgKi87IH07CisJCUUxNTdBOEU1MTgxNzNBM0EwMDlGODIxRCAvKiBDcnlwdG9LZXkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTdBOEUzMTgx
NzNBM0EwMDlGODIxRCAvKiBDcnlwdG9LZXkuaCAqLzsgfTsKKwkJRTE1N0E4RTgxODE4NEM2NzAw
OUY4MjFEIC8qIEpTQ3J5cHRvS2V5Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTdBOEU2MTgxODRDNjcwMDlGODIxRCAvKiBKU0NyeXB0
b0tleUN1c3RvbS5jcHAgKi87IH07CisJCUUxNTdBOEVDMTgxODUxQUMwMDlGODIxRCAvKiBDcnlw
dG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1N0E4RUExODE4NTFBQzAwOUY4MjFEIC8qIENyeXB0
b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlci5jcHAgKi87IH07CisJCUUxNTdBOEVEMTgxODUx
QUMwMDlGODIxRCAvKiBDcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTdBOEVCMTgxODUxQUMw
MDlGODIxRCAvKiBDcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXIuaCAqLzsgfTsKKwkJ
RTE1N0E4RjAxODE4NTQyNTAwOUY4MjFEIC8qIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU3QThFRTE4
MTg1NDI1MDA5RjgyMUQgLyogSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyLmNwcCAqLzsgfTsKKwkJ
RTE1N0E4RjExODE4NTQyNTAwOUY4MjFEIC8qIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1N0E4RUYxODE4
NTQyNTAwOUY4MjFEIC8qIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5oICovOyB9OwogCQlFMTVB
MzZENzExMDQ1NzIwMDBCN0I2MzkgLyogWE1MTlNOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1QTM2RDYxMTA0NTcyMDAwQjdCNjM5IC8qIFhN
TE5TTmFtZXMuaCAqLzsgfTsKIAkJRTE1QTM2RDkxMTA0NTcyNzAwQjdCNjM5IC8qIFhNTE5TTmFt
ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1
QTM2RDgxMTA0NTcyNzAwQjdCNjM5IC8qIFhNTE5TTmFtZXMuY3BwICovOyB9OwogCQlFMTY5ODAz
RDExMzM1NDJEMDA4OTQxMTUgLyogQ1J1bnRpbWVPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNjk4MDNDMTEzMzU0MkQwMDg5NDExNSAvKiBD
UnVudGltZU9iamVjdC5oICovOyB9OwpAQCAtMTI0OTYsNiArMTI1MDUsMTYgQEAKIAkJRTE1MTNE
NTAxNjc3RjA4ODAwMTQ5RkNCIC8qIE5vdEltcGxlbWVudGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vdEltcGxlbWVudGVkLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTE1MjU1MTMxNkZEMjM0RjAwM0Q3QURCIC8qIFdlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE1MjU1MTQxNkZEMjM0RjAwM0Q3QURC
IC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTE1N0E4REMxODE3MkMyQzAwOUY4MjFEIC8qIENyeXB0b0tleS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ3J5cHRv
S2V5LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE1N0E4REUxODE3MzMxQzAw
OUY4MjFEIC8qIEpTQ3J5cHRvS2V5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQ3J5cHRvS2V5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE1
N0E4REYxODE3MzMxQzAwOUY4MjFEIC8qIEpTQ3J5cHRvS2V5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTQ3J5cHRvS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUxNTdBOEUyMTgxNzNBM0EwMDlGODIxRCAvKiBDcnlwdG9LZXkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvS2V5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTE1N0E4RTMxODE3M0EzQTAwOUY4MjFEIC8qIENyeXB0b0tleS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9LZXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTE1N0E4RTYxODE4NEM2NzAwOUY4MjFEIC8qIEpTQ3J5cHRvS2V5
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3J5cHRv
S2V5Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE1N0E4RUExODE4
NTFBQzAwOUY4MjFEIC8qIENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1EZXNjcmlw
dGlvbkJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMTU3QThFQjE4
MTg1MUFDMDA5RjgyMUQgLyogQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9u
QnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMTU3QThFRTE4MTg1NDI1
MDA5RjgyMUQgLyogSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxNTdBOEVGMTgxODU0MjUwMDlGODIxRCAvKiBKU0Ny
eXB0b0FsZ29yaXRobUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxNUEzNkQ2MTEwNDU3MjAwMEI3QjYzOSAvKiBYTUxOU05hbWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFhNTE5TTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTE1QTM2RDgxMTA0NTcyNzAwQjdCNjM5IC8qIFhNTE5TTmFtZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MTlNOYW1lcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxNjk4MDNDMTEzMzU0MkQwMDg5NDExNSAvKiBDUnVudGltZU9i
amVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDUnVudGltZU9iamVjdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkyMTAsNiArMTkyMjksOCBAQAogCQkJ
CUM1ODVBNjYxMTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmggKi8sCiAJ
CQkJMUM4MUJBMDMwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICov
LAogCQkJCTFDODFCQTA0MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmgg
Ki8sCisJCQkJRTE1N0E4RUUxODE4NTQyNTAwOUY4MjFEIC8qIEpTQ3J5cHRvQWxnb3JpdGhtQnVp
bGRlci5jcHAgKi8sCisJCQkJRTE1N0E4RUYxODE4NTQyNTAwOUY4MjFEIC8qIEpTQ3J5cHRvQWxn
b3JpdGhtQnVpbGRlci5oICovLAogCQkJCUJDRTQzOEExMTQwQzBEQkYwMDVFNDM3RSAvKiBKU0Rp
Y3Rpb25hcnkuY3BwICovLAogCQkJCUJDRTQzODlCMTQwQjFCQTcwMDVFNDM3RSAvKiBKU0RpY3Rp
b25hcnkuaCAqLywKIAkJCQk5M0I3MEQ0NzA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5n
LmNwcCAqLywKQEAgLTE5MzQyLDYgKzE5MzYzLDcgQEAKIAkJCQk5M0JBNTlCMTBGMkFBNUZFMDA4
RThFOTkgLyogSlNDREFUQVNlY3Rpb25DdXN0b20uY3BwICovLAogCQkJCUJDQTgzRTUxMEQ3Q0Uy
MDUwMDM0MjFBOCAvKiBKU0NsaXBib2FyZEN1c3RvbS5jcHAgKi8sCiAJCQkJMjA5QjQ1NkExNjc5
NkE3RTAwRTU0RTRFIC8qIEpTQ3J5cHRvQ3VzdG9tLmNwcCAqLywKKwkJCQlFMTU3QThFNjE4MTg0
QzY3MDA5RjgyMUQgLyogSlNDcnlwdG9LZXlDdXN0b20uY3BwICovLAogCQkJCUJDNDZDMUVEMEMw
RERCREYwMDIwQ0ZDMyAvKiBKU0NTU1J1bGVDdXN0b20uY3BwICovLAogCQkJCUFENzI2RkU5MTZE
OUY0MEEwMDNBNEU2RCAvKiBKU0NTU1J1bGVDdXN0b20uaCAqLywKIAkJCQk5MzkyMjYyRTEwMzIx
MDg0MDA2RTdENUQgLyogSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAgKi8sCkBAIC0yMDE1NSw2ICsy
MDE3NywxMSBAQAogCQlFMUZGOEY1QjE4MDczNjJCMDAxMzI2NzQgLyogY3J5cHRvICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFMTU3QThFQTE4MTg1MUFD
MDA5RjgyMUQgLyogQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyLmNwcCAqLywKKwkJ
CQlFMTU3QThFQjE4MTg1MUFDMDA5RjgyMUQgLyogQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25C
dWlsZGVyLmggKi8sCisJCQkJRTE1N0E4REMxODE3MkMyQzAwOUY4MjFEIC8qIENyeXB0b0tleS5p
ZGwgKi8sCisJCQkJRTE1N0E4RTIxODE3M0EzQTAwOUY4MjFEIC8qIENyeXB0b0tleS5jcHAgKi8s
CisJCQkJRTE1N0E4RTMxODE3M0EzQTAwOUY4MjFEIC8qIENyeXB0b0tleS5oICovLAogCQkJCUUx
RkY4RjVDMTgwNzM2NEIwMDEzMjY3NCAvKiBTdWJ0bGVDcnlwdG8uaWRsICovLAogCQkJCUUxRkY4
RjVEMTgwNzQ0MjEwMDEzMjY3NCAvKiBTdWJ0bGVDcnlwdG8uY3BwICovLAogCQkJCUUxRkY4RjVF
MTgwNzQ0MjEwMDEzMjY3NCAvKiBTdWJ0bGVDcnlwdG8uaCAqLywKQEAgLTIwMTY1LDYgKzIwMTky
LDggQEAKIAkJRTFGRjhGNjExODA3NDVDNjAwMTMyNjc0IC8qIENyeXB0byAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTE1N0E4REUxODE3MzMxQzAwOUY4
MjFEIC8qIEpTQ3J5cHRvS2V5LmNwcCAqLywKKwkJCQlFMTU3QThERjE4MTczMzFDMDA5RjgyMUQg
LyogSlNDcnlwdG9LZXkuaCAqLywKIAkJCQlFMUZGOEY2MjE4MDc0NUQ4MDAxMzI2NzQgLyogSlNT
dWJ0bGVDcnlwdG8uY3BwICovLAogCQkJCUUxRkY4RjYzMTgwNzQ1RDgwMDEzMjY3NCAvKiBKU1N1
YnRsZUNyeXB0by5oICovLAogCQkJKTsKQEAgLTIyMTk3LDYgKzIyMjI2LDcgQEAKIAkJCQk4NUU3
MTFDNzBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTFN0eWxlRWxlbWVudEludGVybmFsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NURGODIxRDBBQTc4NDlFMDA0ODZBRDcgLyogRE9NSFRNTFRhYmxl
Q2FwdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUM4MEFDNUQ1MzUwMDUz
MjcwRiAvKiBET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFMTU3QThGMTE4MTg1NDI1MDA5RjgyMUQgLyogSlNDcnlwdG9BbGdvcml0aG1CdWls
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NURGODIxRjBBQTc4NDlFMDA0ODZBRDcgLyogRE9N
SFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUM5MEFDNUQ1
MzUwMDUzMjcwRiAvKiBET01IVE1MVGFibGVDZWxsRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NURGODIyMTBBQTc4NDlFMDA0ODZBRDcgLyogRE9NSFRNTFRhYmxlQ29sRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzM1NCw2ICsyMzM4NCw3IEBACiAJCQkJQkNERkQ0
OTYwRTMwNTkyRjAwOUQxMEFEIC8qIEpTWE1MSHR0cFJlcXVlc3RVcGxvYWQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBQ0U1M0Y3MEE4RDE5NDcwMDIyOTQ3RCAvKiBKU1hNTFNlcmlhbGl6ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBNzYyQzc0MEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQYXRoRXZh
bHVhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMTU3QThFRDE4MTg1MUFDMDA5RjgyMUQgLyog
Q3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzYwREI0QTBEMkEzRDFFMDBCOTkxOEYgLyogSlNYUGF0aEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE3NjJDNzYwQTA3NEYyNjAwOTg5RjVCIC8qIEpTWFBhdGhFeHByZXNzaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTc2MkM3ODBBMDc0RjI2MDA5ODlGNUIgLyogSlNYUGF0aE5T
UmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjM1MzIsNyArMjM1NjMsOSBAQAogCQkJCTFB
NTY5RDEyMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpjX2NsYXNzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTU2OUQxNDBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY19oZWFkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBNTY5RDE1MEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpjX2luc3RhbmNlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFMTU3QThFNTE4MTczQTNBMDA5RjgyMUQgLyogQ3J5cHRvS2V5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQTU2OUQxNzBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY19ydW50aW1l
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMTU3QThFMTE4MTczMzFDMDA5RjgyMUQgLyogSlNDcnlw
dG9LZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDE5MEQ3RTJCODIwMDdDMzk4MyAvKiBv
YmpjX3V0aWxpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDRjZCREZBMEU5QkIyNkEwMDI1RTFD
RCAvKiBPYmpDRXZlbnRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNGNkJFMTUwRTlC
QjQ2NzAwMjVFMUNEIC8qIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywK
QEAgLTI1NDU1LDYgKzI1NDg4LDcgQEAKIAkJCQk4NURGMkY4RjBBQTNDODgxMDBBRDY0QzUgLyog
RE9NSFRNTENvbGxlY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzhFMDkwMDE3RDE0Q0VF
MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNUMw
NDFFNDBGRkNBOTZEMDA4MzlENEEgLyogRE9NSFRNTERhdGFMaXN0RWxlbWVudC5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCUUxNTdBOEU4MTgxODRDNjcwMDlGODIxRCAvKiBKU0NyeXB0b0tleUN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzA1ODUyMzE3RkRDMTQwMDA1RjJCQ0IgLyogTWVk
aWFUcmFja0NvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQzNTlENzkyMTI5Q0Ez
QzAwMDA2RTVEMiAvKiBET01IVE1MRGV0YWlsc0VsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk4NUJBNEQwQzBBQTY4ODY4MDA4ODA1MkQgLyogRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQubW0g
aW4gU291cmNlcyAqLywKQEAgLTI1ODAwLDYgKzI1ODM0LDcgQEAKIAkJCQk5NzdCMzg2NjEyMjg4
M0U5MDBCODFGRjggLyogSFRNTERvY3VtZW50UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTkzMzA5REU3MDk5RTY0OTIwMDU2RTU4MSAvKiBodG1sZWRpdGluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5M0YxOUE5MjA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTEVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJRTE1N0E4RjAxODE4NTQyNTAwOUY4MjFEIC8qIEpTQ3J5cHRvQWxnb3Jp
dGhtQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTdDODEyMjBGMkE1Q0Y3MDA1REFB
RUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0IzNzIz
MTIyODcyMTcwMEI4MUZGOCAvKiBIVE1MRWxlbWVudFN0YWNrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4NzFENDVGMEExMjdDQkMwMEIxMkE2OCAvKiBIVE1MRW1iZWRFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMjY0NTUsNiArMjY0OTAsNyBAQAogCQkJCUIyRkEzRDkyMEFCNzVBNkYw
MDBFNUFDNCAvKiBKU1NWR0ZFVGlsZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJG
QTNEOTQwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMkZBM0Q5NjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGaWx0ZXJF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxNTdBOEVDMTgxODUxQUMwMDlGODIxRCAv
KiBDcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjI3QjI4MjUwQ0VGMEMwNzAwRDM5RDU0IC8qIEpTU1ZHRm9udEVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTgzQjc5MDQwQ0NBRkYxNTAwMEIwODI1IC8qIEpTU1ZHRm9udEZhY2VF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4M0I3OTAxMENDQUZGMTUwMDBCMDgyNSAv
KiBKU1NWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2OTAy
LDYgKzI2OTM4LDcgQEAKIAkJCQlCQ0VBNDg1RDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQXJl
bmEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4NUYwOTdEOTMwMjAwOTRDOUU0IC8qIFJl
bmRlckJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0ODUyMDk3RDkzMDIwMDk0QzlF
NCAvKiBSZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTE1N0E4
RTAxODE3MzMxQzAwOUY4MjFEIC8qIEpTQ3J5cHRvS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDRUE0ODYxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCb3guY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM5NkRCNDYwRjNBODgyMjAwNTczQ0IzIC8qIFJlbmRlckJveE1vZGVsT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0ODYzMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJM
aW5lQnJlYWsuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjk0Niw2ICsyNjk4Myw3IEBACiAJCQkJ
NDM5MDQ2REIxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTEZyYWN0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQzOTA0NkREMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxN
YXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzOTA0NkRGMTJEQTI1RTgwMEFGODBBMiAvKiBS
ZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMTU3QThFNDE4MTcz
QTNBMDA5RjgyMUQgLyogQ3J5cHRvS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENjFGRTYz
MTc5NEFBREIwMDQxMDFFQiAvKiBXZWJLaXRNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0MzkwNDZFMTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MUm9vdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0MzkwNDZFMzEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1M
Um93LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5oIgorCisjaWYg
RU5BQkxFKFNVQlRMRV9DUllQVE8pCisKKyNpbmNsdWRlIDxydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
SlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyOjpKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIoRXhlY1N0
YXRlKiBleGVjKQorICAgIDogbV9leGVjKGV4ZWMpCisgICAgLCBtX2RpY3Rpb25hcnkoZXhlYy0+
dm0oKSwgY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYykpCit7Cit9CisKK0pTQ3J5cHRvQWxnb3Jp
dGhtQnVpbGRlcjo6fkpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcigpCit7Cit9CisKK3ZvaWQgSlND
cnlwdG9BbGdvcml0aG1CdWlsZGVyOjphZGQoY29uc3QgY2hhcioga2V5LCB1bnNpZ25lZCBsb25n
IHZhbHVlKQoreworICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihtX2V4ZWMsIGtleSk7CisgICAg
bV9kaWN0aW9uYXJ5LT5wdXREaXJlY3QobV9leGVjLT52bSgpLCBpZGVudGlmaWVyLCBqc051bWJl
cih2YWx1ZSkpOworfQorCit2b2lkIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcjo6YWRkKGNvbnN0
IGNoYXIqIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBJZGVudGlmaWVyIGlkZW50
aWZpZXIobV9leGVjLCBrZXkpOworICAgIG1fZGljdGlvbmFyeS0+cHV0RGlyZWN0KG1fZXhlYy0+
dm0oKSwgaWRlbnRpZmllciwganNTdHJpbmcobV9leGVjLCB2YWx1ZSkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBUTykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGht
QnVpbGRlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
cnlwdG9BbGdvcml0aG1CdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyX2gKKyNkZWZpbmUg
SlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyX2gKKworI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobURl
c2NyaXB0aW9uQnVpbGRlci5oIgorCisjaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KKworI2lmIEVO
QUJMRShTVUJUTEVfQ1JZUFRPKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTQ3J5
cHRvQWxnb3JpdGhtQnVpbGRlciBGSU5BTCA6IHB1YmxpYyBDcnlwdG9BbGdvcml0aG1EZXNjcmlw
dGlvbkJ1aWxkZXIgeworcHVibGljOgorICAgIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcihKU0M6
OkV4ZWNTdGF0ZSopOworICAgIHZpcnR1YWwgfkpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcigpOwor
CisgICAgSlNDOjpKU09iamVjdCogcmVzdWx0KCkgeyByZXR1cm4gbV9kaWN0aW9uYXJ5LmdldCgp
OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsb25nKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkKGNvbnN0IGNoYXIqLCBjb25zdCBTdHJpbmcm
KSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBKU0M6OkV4ZWNTdGF0ZSogbV9leGVjOworICAg
IEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IG1fZGljdGlvbmFyeTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorI2VuZGlm
IC8vIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NyeXB0b0tleUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSlNDcnlwdG9LZXkuaCIKKworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorCisj
aW5jbHVkZSAiSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBK
U0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNWYWx1ZSBKU0NyeXB0b0tleTo6YWxnb3Jp
dGhtKEpTQzo6RXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIEpTQ3J5cHRvQWxnb3JpdGht
QnVpbGRlciBidWlsZGVyKGV4ZWMpOworICAgIGltcGwoKS5idWlsZEFsZ29yaXRobURlc2NyaXB0
aW9uKGJ1aWxkZXIpOworICAgIHJldHVybiBidWlsZGVyLnJlc3VsdCgpOworfQorCisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRo
bURlc2NyaXB0aW9uQnVpbGRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9j
cnlwdG8vQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkNyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlci5oIgorCisjaWYgRU5BQkxF
KFNVQlRMRV9DUllQVE8pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ3J5cHRvQWxnb3JpdGht
RGVzY3JpcHRpb25CdWlsZGVyOjpDcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXIoKQor
eworfQorCitDcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXI6On5DcnlwdG9BbGdvcml0
aG1EZXNjcmlwdGlvbkJ1aWxkZXIoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBUTykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Ny
eXB0by9DcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtRGVz
Y3JpcHRpb25CdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyX2gKKyNkZWZp
bmUgQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyX2gKKworI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKKyNpZiBFTkFCTEUoU1VC
VExFX0NSWVBUTykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDcnlwdG9BbGdvcml0
aG1EZXNjcmlwdGlvbkJ1aWxkZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyeXB0b0Fs
Z29yaXRobURlc2NyaXB0aW9uQnVpbGRlcik7CitwdWJsaWM6CisgICAgQ3J5cHRvQWxnb3JpdGht
RGVzY3JpcHRpb25CdWlsZGVyKCk7CisgICAgdmlydHVhbCB+Q3J5cHRvQWxnb3JpdGhtRGVzY3Jp
cHRpb25CdWlsZGVyKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkKGNvbnN0IGNoYXIqLCB1bnNp
Z25lZCBsb25nKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZChjb25zdCBjaGFyKiwgY29uc3Qg
U3RyaW5nJikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFNVQlRMRV9DUllQVE8pCisjZW5kaWYgLy8gQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRp
b25CdWlsZGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJDcnlwdG9LZXkuaCIKKworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorCisjaW5j
bHVkZSAiQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworQ3J5cHRvS2V5Ojp+Q3J5cHRvS2V5KCkKK3sKK30KKwordm9pZCBDcnlwdG9L
ZXk6OmJ1aWxkQWxnb3JpdGhtRGVzY3JpcHRpb24oQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25C
dWlsZGVyJiAvKmJ1aWxkZXIqLykgY29uc3QKK3sKKyAgICAvLyBXaWxsIGRvIHNvbWV0aGluZyBs
aWtlIGJ1aWxkZXIuYWRkKCJuYW1lIiwgbV9hbGdvcml0aG1OYW1lKTsKKyAgICAvLyBTdWJjbGFz
c2VzIHdpbGwgYWRkIG90aGVyIGtleXMuCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5
cHRvL0NyeXB0b0tleS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9Dcnlw
dG9LZXkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXku
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBD
cnlwdG9LZXlfaAorI2RlZmluZSBDcnlwdG9LZXlfaAorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlcjsKKworY2xhc3MgQ3J5cHRvS2V5
IDogcHVibGljIFJlZkNvdW50ZWQ8Q3J5cHRvS2V5PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
Q3J5cHRvS2V5KCk7CisKKyAgICB2aXJ0dWFsIFN0cmluZyB0eXBlKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBleHRyYWN0YWJsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
YnVpbGRBbGdvcml0aG1EZXNjcmlwdGlvbihDcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxk
ZXImKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHVzYWdlKCkgY29uc3QgPSAw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNVQlRM
RV9DUllQVE8pCisjZW5kaWYgLy8gQ3J5cHRvS2V5X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Ny
eXB0by9DcnlwdG9LZXkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9D
cnlwdG9LZXkuaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0
b0tleS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Vu
dW0gS2V5VHlwZSB7CisgICAgInNlY3JldCIsCisgICAgInB1YmxpYyIsCisgICAgInByaXZhdGUi
Cit9OworCitlbnVtIEtleVVzYWdlIHsKKyAgICAiZW5jcnlwdCIsCisgICAgImRlY3J5cHQiLAor
ICAgICJzaWduIiwKKyAgICAidmVyaWZ5IiwKKyAgICAiZGVyaXZlS2V5IiwKKyAgICAiZGVyaXZl
Qml0cyIsCisgICAgIndyYXBLZXkiLAorICAgICJ1bndyYXBLZXkiCit9OworCitbCisgICAgQ29u
ZGl0aW9uYWw9U1VCVExFX0NSWVBUTywKKyAgICBJbnRlcmZhY2VOYW1lPUtleSwKKyAgICBOb0lu
dGVyZmFjZU9iamVjdCwKKyAgICBPcGVyYXRpb25zTm90RGVsZXRhYmxlCitdIGludGVyZmFjZSBD
cnlwdG9LZXkgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBLZXlUeXBlIHR5cGU7CisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gZXh0cmFjdGFibGU7CisgICAgW0N1c3RvbV0gcmVhZG9u
bHkgYXR0cmlidXRlIEFsZ29yaXRobSBhbGdvcml0aG07CisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IEtleVVzYWdlW10gdXNhZ2U7Cit9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214997</attachid>
            <date>2013-10-23 14:27:37 -0700</date>
            <delta_ts>2013-10-24 10:14:20 -0700</delta_ts>
            <desc>with release build fix</desc>
            <filename>AddCryptoKey.txt</filename>
            <type>text/plain</type>
            <size>33336</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Nzg4MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDEzLTEwLTIzICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBDcnlwdG9LZXkgYmFz
ZSBjbGFzcyBhbmQgYmluZGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyMzIxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogY3J5cHRvL0NyeXB0b0tleS5pZGw6IEFkZGVkLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICBQcm9jZXNzIHRoZSBJREwuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkIGZpbGVzLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9LZXlDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5OjphbGdvcml0aG0pOiBVc2UgYSB2aXNpdG9yIHRvIGJ1
aWxkIGFsZ29yaXRobSBkaWN0aW9uYXJ5CisgICAgICAgIGZvciB0aGUga2V5LgorCisgICAgICAg
ICogY3J5cHRvL0NyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlci5jcHA6IEFkZGVkLgor
ICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXIuaDogQWRk
ZWQuCisgICAgICAgIEFuIGludGVyZmFjZSBmb3IgYSB2aXNpdG9yIHdlJ2xsIHVzZSB0byBleHBv
c2UgQ3J5dG9LZXkuYWxnb3JpdGhtIGluIGJpbmRpbmdzLAorICAgICAgICBhbmQgcG9zc2libHkg
YWxzbyBmb3Igc3RvcmFnZSBzZXJpYWxpemF0aW9uLiBOb3QgY29tcGxldGUgeWV0LCB3ZSdsbCBu
ZWVkIHN1cHBvcnQKKyAgICAgICAgZm9yIGEgZmV3IG1vcmUgc2ltcGxlIHR5cGVzLCBhbmQgbGVz
cyB0cml2aWFsbHksIGZvciBuZXN0ZWQgYWxnb3JpdGhtcy4KKworICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5oOiBBZGRlZC4KKyAgICAgICAgQW4gaW1w
bGVtZW50YXRpb24gdGhhdCBidWlsZHMgYW4gYWxnb3JpdGhtIGRlc2NyaXB0aW9uIGRpY3Rpb25h
cnkgZm9yIEpTIGJpbmRpbmdzLgorCisgICAgICAgICogY3J5cHRvL0NyeXB0b0tleS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5Ojp+Q3J5cHRvS2V5KToKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0tleTo6YnVpbGRBbGdvcml0aG1EZXNjcmlwdGlvbik6CisgICAgICAg
ICogY3J5cHRvL0NyeXB0b0tleS5oOiBBZGRlZC4KKyAgICAgICAgQWRkZWQgYW4gYWxtb3N0IGVt
cHR5IGltcGxlbWVudGF0aW9uLiBTb21lIG9mIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgY3VycmVu
dGx5CisgICAgICAgIG1hcmtlZCBhcyBwdXJlIHZpcnR1YWwgd2lsbCBsaWtlbHkgYmUgaW1wbGVt
ZW50ZWQgaW4gdGhpcyBiYXNlIGNsYXNzLgorCiAyMDEzLTEwLTIzICBNeWxlcyBDLiBNYXhmaWVs
ZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgQW50aWFsaWFzIHVuZGVybGluZXMg
aWYgdGhleSdyZSBub3QgYXhpcy1hbGlnbmVkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMTU3ODgzKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTI4Myw2ICsyODMsNyBAQCBzZXQoV2ViQ29yZV9JRExfRklMRVMKICAgICBNb2R1
bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwKICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmlkbAogCisgICAgY3J5cHRvL0NyeXB0b0tleS5pZGwKICAgICBjcnlwdG8vU3VidGxl
Q3J5cHRvLmlkbAogCiAgICAgY3NzL0NTU0NoYXJzZXRSdWxlLmlkbApJbmRleDogU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxNTc4ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNiArMTk4LDcgQEAgQklO
RElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJkYXRhYmFzZS9Xb3JrZXJH
bG9iYWxTY29wZVdlYkRhdGFiYXNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYnNv
Y2tldHMvQ2xvc2VFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5pZGwgXAorICAgICQoV2ViQ29yZSkvY3J5cHRvL0NyeXB0b0tleS5pZGwgXAog
ICAgICQoV2ViQ29yZSkvY3J5cHRvL1N1YnRsZUNyeXB0by5pZGwgXAogICAgICQoV2ViQ29yZSkv
Y3NzL0NTU0NoYXJzZXRSdWxlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTRm9udEZhY2VM
b2FkRXZlbnQuaWRsIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNp
b24gMTU3ODgzKQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTI5OCw2ICsxMjk4LDcgQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1dvcmtlckdsb2JhbFNjb3BlV2ViRGF0YWJhc2Uu
aWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvd2Vic29ja2V0cy9DbG9zZUV2ZW50LmlkbCBcCiAJ
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbCBcCisJJChXZWJDb3Jl
KS9jcnlwdG8vQ3J5cHRvS2V5LmlkbCBcCiAJJChXZWJDb3JlKS9jcnlwdG8vU3VidGxlQ3J5cHRv
LmlkbCBcCiAJJChXZWJDb3JlKS9jc3MvQ1NTQ2hhcnNldFJ1bGUuaWRsIFwKIAkkKFdlYkNvcmUp
L2Nzcy9DU1NGb250RmFjZUxvYWRFdmVudC5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU3ODgzKQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NTI0LDYgKzU1MjQsMTUgQEAKIAkJRTE1MTNENTExNjc3RjA4ODAwMTQ5
RkNCIC8qIE5vdEltcGxlbWVudGVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxNTEzRDUwMTY3N0YwODgwMDE0OUZDQiAvKiBOb3RJbXBsZW1lbnRl
ZC5jcHAgKi87IH07CiAJCUUxNTI1NTE1MTZGRDIzNTAwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTI1NTEzMTZGRDIzNEYwMDNEN0FEQiAvKiBXZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCAqLzsgfTsKIAkJRTE1
MjU1MTYxNkZEMjM1MDAwM0Q3QURCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxNTI1NTE0MTZGRDIzNEYwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gKi87IH07CisJCUUxNTdBOEUwMTgxNzMzMUMwMDlG
ODIxRCAvKiBKU0NyeXB0b0tleS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTU3QThERTE4MTczMzFDMDA5RjgyMUQgLyogSlNDcnlwdG9LZXkuY3Bw
ICovOyB9OworCQlFMTU3QThFMTE4MTczMzFDMDA5RjgyMUQgLyogSlNDcnlwdG9LZXkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTdBOERGMTgxNzMz
MUMwMDlGODIxRCAvKiBKU0NyeXB0b0tleS5oICovOyB9OworCQlFMTU3QThFNDE4MTczQTNBMDA5
RjgyMUQgLyogQ3J5cHRvS2V5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxNTdBOEUyMTgxNzNBM0EwMDlGODIxRCAvKiBDcnlwdG9LZXkuY3BwICov
OyB9OworCQlFMTU3QThFNTE4MTczQTNBMDA5RjgyMUQgLyogQ3J5cHRvS2V5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU3QThFMzE4MTczQTNBMDA5
RjgyMUQgLyogQ3J5cHRvS2V5LmggKi87IH07CisJCUUxNTdBOEU4MTgxODRDNjcwMDlGODIxRCAv
KiBKU0NyeXB0b0tleUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTU3QThFNjE4MTg0QzY3MDA5RjgyMUQgLyogSlNDcnlwdG9LZXlDdXN0
b20uY3BwICovOyB9OworCQlFMTU3QThFQzE4MTg1MUFDMDA5RjgyMUQgLyogQ3J5cHRvQWxnb3Jp
dGhtRGVzY3JpcHRpb25CdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxNTdBOEVBMTgxODUxQUMwMDlGODIxRCAvKiBDcnlwdG9BbGdvcml0
aG1EZXNjcmlwdGlvbkJ1aWxkZXIuY3BwICovOyB9OworCQlFMTU3QThFRDE4MTg1MUFDMDA5Rjgy
MUQgLyogQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU3QThFQjE4MTg1MUFDMDA5RjgyMUQg
LyogQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyLmggKi87IH07CisJCUUxNTdBOEYw
MTgxODU0MjUwMDlGODIxRCAvKiBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1N0E4RUUxODE4NTQyNTAw
OUY4MjFEIC8qIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHAgKi87IH07CisJCUUxNTdBOEYx
MTgxODU0MjUwMDlGODIxRCAvKiBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTdBOEVGMTgxODU0MjUwMDlG
ODIxRCAvKiBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuaCAqLzsgfTsKIAkJRTE1QTM2RDcxMTA0
NTcyMDAwQjdCNjM5IC8qIFhNTE5TTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxNUEzNkQ2MTEwNDU3MjAwMEI3QjYzOSAvKiBYTUxOU05hbWVz
LmggKi87IH07CiAJCUUxNUEzNkQ5MTEwNDU3MjcwMEI3QjYzOSAvKiBYTUxOU05hbWVzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNUEzNkQ4MTEw
NDU3MjcwMEI3QjYzOSAvKiBYTUxOU05hbWVzLmNwcCAqLzsgfTsKIAkJRTE2OTgwM0QxMTMzNTQy
RDAwODk0MTE1IC8qIENSdW50aW1lT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMTY5ODAzQzExMzM1NDJEMDA4OTQxMTUgLyogQ1J1bnRpbWVP
YmplY3QuaCAqLzsgfTsKQEAgLTEyNDk2LDYgKzEyNTA1LDE2IEBACiAJCUUxNTEzRDUwMTY3N0Yw
ODgwMDE0OUZDQiAvKiBOb3RJbXBsZW1lbnRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBOb3RJbXBsZW1lbnRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUxNTI1NTEzMTZGRDIzNEYwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTI1NTE0MTZGRDIzNEYwMDNEN0FEQiAvKiBXZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxNTdB
OERDMTgxNzJDMkMwMDlGODIxRCAvKiBDcnlwdG9LZXkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENyeXB0b0tleS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxNTdBOERFMTgxNzMzMUMwMDlGODIxRCAv
KiBKU0NyeXB0b0tleS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0NyeXB0b0tleS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxNTdBOERGMTgx
NzMzMUMwMDlGODIxRCAvKiBKU0NyeXB0b0tleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0NyeXB0b0tleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMTU3
QThFMjE4MTczQTNBMDA5RjgyMUQgLyogQ3J5cHRvS2V5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b0tleS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUxNTdBOEUzMTgxNzNBM0EwMDlGODIxRCAvKiBDcnlwdG9LZXkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUxNTdBOEU2MTgxODRDNjcwMDlGODIxRCAvKiBKU0NyeXB0b0tleUN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NyeXB0b0tleUN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxNTdBOEVBMTgxODUxQUMwMDlG
ODIxRCAvKiBDcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWls
ZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE1N0E4RUIxODE4NTFBQzAw
OUY4MjFEIC8qIENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE1N0E4RUUxODE4NTQyNTAwOUY4MjFE
IC8qIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMTU3QThFRjE4MTg1NDI1MDA5RjgyMUQgLyogSlNDcnlwdG9BbGdv
cml0aG1CdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3J5cHRv
QWxnb3JpdGhtQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTVBMzZE
NjExMDQ1NzIwMDBCN0I2MzkgLyogWE1MTlNOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBYTUxOU05hbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
NUEzNkQ4MTEwNDU3MjcwMEI3QjYzOSAvKiBYTUxOU05hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTE5TTmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMTY5ODAzQzExMzM1NDJEMDA4OTQxMTUgLyogQ1J1bnRpbWVPYmplY3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1J1bnRpbWVPYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MjEwLDYgKzE5MjI5LDggQEAKIAkJCQlDNTg1QTY2
MTExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5oICovLAogCQkJCTFDODFC
QTAzMEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLywKIAkJCQkx
QzgxQkEwNDBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovLAorCQkJ
CUUxNTdBOEVFMTgxODU0MjUwMDlGODIxRCAvKiBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3Bw
ICovLAorCQkJCUUxNTdBOEVGMTgxODU0MjUwMDlGODIxRCAvKiBKU0NyeXB0b0FsZ29yaXRobUJ1
aWxkZXIuaCAqLywKIAkJCQlCQ0U0MzhBMTE0MEMwREJGMDA1RTQzN0UgLyogSlNEaWN0aW9uYXJ5
LmNwcCAqLywKIAkJCQlCQ0U0Mzg5QjE0MEIxQkE3MDA1RTQzN0UgLyogSlNEaWN0aW9uYXJ5Lmgg
Ki8sCiAJCQkJOTNCNzBENDcwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5jcHAgKi8s
CkBAIC0xOTM0Miw2ICsxOTM2Myw3IEBACiAJCQkJOTNCQTU5QjEwRjJBQTVGRTAwOEU4RTk5IC8q
IEpTQ0RBVEFTZWN0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQlCQ0E4M0U1MTBEN0NFMjA1MDAzNDIx
QTggLyogSlNDbGlwYm9hcmRDdXN0b20uY3BwICovLAogCQkJCTIwOUI0NTZBMTY3OTZBN0UwMEU1
NEU0RSAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgKi8sCisJCQkJRTE1N0E4RTYxODE4NEM2NzAwOUY4
MjFEIC8qIEpTQ3J5cHRvS2V5Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzQ2QzFFRDBDMEREQkRGMDAy
MENGQzMgLyogSlNDU1NSdWxlQ3VzdG9tLmNwcCAqLywKIAkJCQlBRDcyNkZFOTE2RDlGNDBBMDAz
QTRFNkQgLyogSlNDU1NSdWxlQ3VzdG9tLmggKi8sCiAJCQkJOTM5MjI2MkUxMDMyMTA4NDAwNkU3
RDVEIC8qIEpTQ1NTUnVsZUxpc3RDdXN0b20uY3BwICovLApAQCAtMjAxNTUsNiArMjAxNzcsMTEg
QEAKIAkJRTFGRjhGNUIxODA3MzYyQjAwMTMyNjc0IC8qIGNyeXB0byAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTE1N0E4RUExODE4NTFBQzAwOUY4MjFE
IC8qIENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlci5jcHAgKi8sCisJCQkJRTE1N0E4
RUIxODE4NTFBQzAwOUY4MjFEIC8qIENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlci5o
ICovLAorCQkJCUUxNTdBOERDMTgxNzJDMkMwMDlGODIxRCAvKiBDcnlwdG9LZXkuaWRsICovLAor
CQkJCUUxNTdBOEUyMTgxNzNBM0EwMDlGODIxRCAvKiBDcnlwdG9LZXkuY3BwICovLAorCQkJCUUx
NTdBOEUzMTgxNzNBM0EwMDlGODIxRCAvKiBDcnlwdG9LZXkuaCAqLywKIAkJCQlFMUZGOEY1QzE4
MDczNjRCMDAxMzI2NzQgLyogU3VidGxlQ3J5cHRvLmlkbCAqLywKIAkJCQlFMUZGOEY1RDE4MDc0
NDIxMDAxMzI2NzQgLyogU3VidGxlQ3J5cHRvLmNwcCAqLywKIAkJCQlFMUZGOEY1RTE4MDc0NDIx
MDAxMzI2NzQgLyogU3VidGxlQ3J5cHRvLmggKi8sCkBAIC0yMDE2NSw2ICsyMDE5Miw4IEBACiAJ
CUUxRkY4RjYxMTgwNzQ1QzYwMDEzMjY3NCAvKiBDcnlwdG8gKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUxNTdBOERFMTgxNzMzMUMwMDlGODIxRCAvKiBK
U0NyeXB0b0tleS5jcHAgKi8sCisJCQkJRTE1N0E4REYxODE3MzMxQzAwOUY4MjFEIC8qIEpTQ3J5
cHRvS2V5LmggKi8sCiAJCQkJRTFGRjhGNjIxODA3NDVEODAwMTMyNjc0IC8qIEpTU3VidGxlQ3J5
cHRvLmNwcCAqLywKIAkJCQlFMUZGOEY2MzE4MDc0NUQ4MDAxMzI2NzQgLyogSlNTdWJ0bGVDcnlw
dG8uaCAqLywKIAkJCSk7CkBAIC0yMjE5Nyw2ICsyMjIyNiw3IEBACiAJCQkJODVFNzExQzcwQUM1
RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxTdHlsZUVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODVERjgyMUQwQUE3ODQ5RTAwNDg2QUQ3IC8qIERPTUhUTUxUYWJsZUNhcHRpb25F
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTFDODBBQzVENTM1MDA1MzI3MEYgLyog
RE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTE1N0E4RjExODE4NTQyNTAwOUY4MjFEIC8qIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODVERjgyMUYwQUE3ODQ5RTAwNDg2QUQ3IC8qIERPTUhUTUxUYWJs
ZUNlbGxFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTFDOTBBQzVENTM1MDA1MzI3
MEYgLyogRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODVERjgyMjEwQUE3ODQ5RTAwNDg2QUQ3IC8qIERPTUhUTUxUYWJsZUNvbEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMjMzNTQsNiArMjMzODQsNyBAQAogCQkJCUJDREZENDk2MEUzMDU5
MkYwMDlEMTBBRCAvKiBKU1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUNFNTNGNzBBOEQxOTQ3MDAyMjk0N0QgLyogSlNYTUxTZXJpYWxpemVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTc2MkM3NDBBMDc0RjI2MDA5ODlGNUIgLyogSlNYUGF0aEV2YWx1YXRvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTE1N0E4RUQxODE4NTFBQzAwOUY4MjFEIC8qIENyeXB0b0Fs
Z29yaXRobURlc2NyaXB0aW9uQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2MERCNEEw
RDJBM0QxRTAwQjk5MThGIC8qIEpTWFBhdGhFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBNzYyQzc2MEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQYXRoRXhwcmVzc2lvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE3NjJDNzgwQTA3NEYyNjAwOTg5RjVCIC8qIEpTWFBhdGhOU1Jlc29sdmVy
LmggaW4gSGVhZGVycyAqLywKQEAgLTIzNTMyLDcgKzIzNTYzLDkgQEAKIAkJCQkxQTU2OUQxMjBE
N0UyQjgyMDA3QzM5ODMgLyogb2JqY19jbGFzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlE
MTQwRDdFMkI4MjAwN0MzOTgzIC8qIG9iamNfaGVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTU2OUQxNTBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY19pbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTE1N0E4RTUxODE3M0EzQTAwOUY4MjFEIC8qIENyeXB0b0tleS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE1NjlEMTcwRDdFMkI4MjAwN0MzOTgzIC8qIG9iamNfcnVudGltZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTE1N0E4RTExODE3MzMxQzAwOUY4MjFEIC8qIEpTQ3J5cHRvS2V5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQxOTBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY191dGls
aXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0Y2QkRGQTBFOUJCMjZBMDAyNUUxQ0QgLyogT2Jq
Q0V2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDRjZCRTE1MEU5QkI0NjcwMDI1
RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTQ1
NSw2ICsyNTQ4OCw3IEBACiAJCQkJODVERjJGOEYwQUEzQzg4MTAwQUQ2NEM1IC8qIERPTUhUTUxD
b2xsZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA5MDAxN0QxNENFRTAwNDIwQUEx
IC8qIE1lZGlhU3RyZWFtRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjVDMDQxRTQwRkZD
QTk2RDAwODM5RDRBIC8qIERPTUhUTUxEYXRhTGlzdEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywK
KwkJCQlFMTU3QThFODE4MTg0QzY3MDA5RjgyMUQgLyogSlNDcnlwdG9LZXlDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDcwNTg1MjMxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tD
b25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEMzU5RDc5MjEyOUNBM0MwMDAwNkU1
RDIgLyogRE9NSFRNTERldGFpbHNFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVCQTRE
MEMwQUE2ODg2ODAwODgwNTJEIC8qIERPTUhUTUxEaXJlY3RvcnlFbGVtZW50Lm1tIGluIFNvdXJj
ZXMgKi8sCkBAIC0yNTgwMCw2ICsyNTgzNCw3IEBACiAJCQkJOTc3QjM4NjYxMjI4ODNFOTAwQjgx
RkY4IC8qIEhUTUxEb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOURF
NzA5OUU2NDkyMDA1NkU1ODEgLyogaHRtbGVkaXRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTNGMTlBOTIwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUUxNTdBOEYwMTgxODU0MjUwMDlGODIxRCAvKiBKU0NyeXB0b0FsZ29yaXRobUJ1aWxk
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE3QzgxMjIwRjJBNUNGNzAwNURBQUVCIC8qIEhU
TUxFbGVtZW50RmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdCMzcyMzEyMjg3MjE3
MDBCODFGRjggLyogSFRNTEVsZW1lbnRTdGFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODcx
RDQ1RjBBMTI3Q0JDMDBCMTJBNjggLyogSFRNTEVtYmVkRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTI2NDU1LDYgKzI2NDkwLDcgQEAKIAkJCQlCMkZBM0Q5MjBBQjc1QTZGMDAwRTVBQzQg
LyogSlNTVkdGRVRpbGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRDk0MEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjJGQTNEOTYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRmlsdGVyRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlFMTU3QThFQzE4MTg1MUFDMDA5RjgyMUQgLyogQ3J5cHRv
QWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyN0Iy
ODI1MENFRjBDMDcwMEQzOUQ1NCAvKiBKU1NWR0ZvbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4M0I3OTA0MENDQUZGMTUwMDBCMDgyNSAvKiBKU1NWR0ZvbnRGYWNlRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBODNCNzkwMTBDQ0FGRjE1MDAwQjA4MjUgLyogSlNTVkdG
b250RmFjZUZvcm1hdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjkwMiw2ICsyNjkz
OCw3IEBACiAJCQkJQkNFQTQ4NUQwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckFyZW5hLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDRUE0ODVGMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCbG9j
ay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg1MjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxNTdBOEUwMTgxNzMz
MUMwMDlGODIxRCAvKiBKU0NyeXB0b0tleS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg2
MTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQm94LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
OTZEQjQ2MEYzQTg4MjIwMDU3M0NCMyAvKiBSZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQ0VBNDg2MzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyTGluZUJyZWFr
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjY5NDYsNiArMjY5ODMsNyBAQAogCQkJCTQzOTA0NkRC
MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0MzkwNDZERDEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MTWF0aC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0MzkwNDZERjEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0
aE1MT3BlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTE1N0E4RTQxODE3M0EzQTAwOUY4
MjFEIC8qIENyeXB0b0tleS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDYxRkU2MzE3OTRBQURC
MDA0MTAxRUIgLyogV2ViS2l0TWVkaWFTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM5
MDQ2RTExMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFJvb3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDM5MDQ2RTMxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFJvdy5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRv
QWxnb3JpdGhtQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuaCIKKworI2lmIEVOQUJMRShT
VUJUTEVfQ1JZUFRPKQorCisjaW5jbHVkZSA8cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgor
Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTQ3J5cHRv
QWxnb3JpdGhtQnVpbGRlcjo6SlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyKEV4ZWNTdGF0ZSogZXhl
YykKKyAgICA6IG1fZXhlYyhleGVjKQorICAgICwgbV9kaWN0aW9uYXJ5KGV4ZWMtPnZtKCksIGNv
bnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpKQoreworfQorCitKU0NyeXB0b0FsZ29yaXRobUJ1aWxk
ZXI6On5KU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIoKQoreworfQorCit2b2lkIEpTQ3J5cHRvQWxn
b3JpdGhtQnVpbGRlcjo6YWRkKGNvbnN0IGNoYXIqIGtleSwgdW5zaWduZWQgbG9uZyB2YWx1ZSkK
K3sKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIobV9leGVjLCBrZXkpOworICAgIG1fZGljdGlv
bmFyeS0+cHV0RGlyZWN0KG1fZXhlYy0+dm0oKSwgaWRlbnRpZmllciwganNOdW1iZXIodmFsdWUp
KTsKK30KKwordm9pZCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXI6OmFkZChjb25zdCBjaGFyKiBr
ZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKG1f
ZXhlYywga2V5KTsKKyAgICBtX2RpY3Rpb25hcnktPnB1dERpcmVjdChtX2V4ZWMtPnZtKCksIGlk
ZW50aWZpZXIsIGpzU3RyaW5nKG1fZXhlYywgdmFsdWUpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxn
b3JpdGhtQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcl9oCisjZGVmaW5lIEpTQ3J5cHRv
QWxnb3JpdGhtQnVpbGRlcl9oCisKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlv
bkJ1aWxkZXIuaCIKKworI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+CisjaW5jbHVkZSA8aGVhcC9T
dHJvbmdJbmxpbmVzLmg+CisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIgRklOQUwgOiBwdWJs
aWMgQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyIHsKK3B1YmxpYzoKKyAgICBKU0Ny
eXB0b0FsZ29yaXRobUJ1aWxkZXIoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICB2aXJ0dWFsIH5KU0Ny
eXB0b0FsZ29yaXRobUJ1aWxkZXIoKTsKKworICAgIEpTQzo6SlNPYmplY3QqIHJlc3VsdCgpIHsg
cmV0dXJuIG1fZGljdGlvbmFyeS5nZXQoKTsgfQorCisgICAgdmlydHVhbCB2b2lkIGFkZChjb25z
dCBjaGFyKiwgdW5zaWduZWQgbG9uZykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFkZChj
b25zdCBjaGFyKiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgSlND
OjpFeGVjU3RhdGUqIG1fZXhlYzsKKyAgICBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiBtX2Rp
Y3Rpb25hcnk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoU1VCVExFX0NSWVBUTykKKyNlbmRpZiAvLyBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXJfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5Q3VzdG9t
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRv
S2V5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ3J5cHRvS2V5LmgiCisKKyNpZiBF
TkFCTEUoU1VCVExFX0NSWVBUTykKKworI2luY2x1ZGUgIkpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRl
ci5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pT
VmFsdWUgSlNDcnlwdG9LZXk6OmFsZ29yaXRobShKU0M6OkV4ZWNTdGF0ZSogZXhlYykgY29uc3QK
K3sKKyAgICBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIgYnVpbGRlcihleGVjKTsKKyAgICBpbXBs
KCkuYnVpbGRBbGdvcml0aG1EZXNjcmlwdGlvbihidWlsZGVyKTsKKyAgICByZXR1cm4gYnVpbGRl
ci5yZXN1bHQoKTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoU1VCVExFX0NSWVBUTykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9B
bGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXIuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9u
QnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlv
bkJ1aWxkZXIuaCIKKworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0NyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlcjo6Q3J5cHRvQWxnb3Jp
dGhtRGVzY3JpcHRpb25CdWlsZGVyKCkKK3sKK30KKworQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRp
b25CdWlsZGVyOjp+Q3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyKCkKK3sKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25C
dWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29y
aXRobURlc2NyaXB0aW9uQnVpbGRlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
Y3J5cHRvL0NyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENyeXB0b0FsZ29yaXRobURl
c2NyaXB0aW9uQnVpbGRlcl9oCisjZGVmaW5lIENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVp
bGRlcl9oCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgorCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShDcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXIpOworcHVi
bGljOgorICAgIENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlcigpOworICAgIHZpcnR1
YWwgfkNyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlcigpOworCisgICAgdmlydHVhbCB2
b2lkIGFkZChjb25zdCBjaGFyKiwgdW5zaWduZWQgbG9uZykgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBhZGQoY29uc3QgY2hhciosIGNvbnN0IFN0cmluZyYpID0gMDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorI2VuZGlmIC8v
IENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vQ3J5cHRvS2V5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlw
dG8vQ3J5cHRvS2V5LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9D
cnlwdG9LZXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5LmgiCisKKyNpZiBFTkFC
TEUoU1VCVExFX0NSWVBUTykKKworI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9u
QnVpbGRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NyeXB0b0tleTo6fkNyeXB0b0tl
eSgpCit7Cit9CisKK3ZvaWQgQ3J5cHRvS2V5OjpidWlsZEFsZ29yaXRobURlc2NyaXB0aW9uKENy
eXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlciYgLypidWlsZGVyKi8pIGNvbnN0Cit7Cisg
ICAgLy8gV2lsbCBkbyBzb21ldGhpbmcgbGlrZSBidWlsZGVyLmFkZCgibmFtZSIsIG1fYWxnb3Jp
dGhtTmFtZSk7CisgICAgLy8gU3ViY2xhc3NlcyB3aWxsIGFkZCBvdGhlciBrZXlzLgorfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBUTykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgQ3J5cHRvS2V5X2gKKyNkZWZpbmUgQ3J5cHRvS2V5X2gK
KworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1
aWxkZXI7CisKK2NsYXNzIENyeXB0b0tleSA6IHB1YmxpYyBSZWZDb3VudGVkPENyeXB0b0tleT4g
eworcHVibGljOgorICAgIHZpcnR1YWwgfkNyeXB0b0tleSgpOworCisgICAgdmlydHVhbCBTdHJp
bmcgdHlwZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZXh0cmFjdGFibGUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJ1aWxkQWxnb3JpdGhtRGVzY3JpcHRpb24oQ3J5cHRv
QWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyJikgY29uc3Q7CisgICAgdmlydHVhbCBWZWN0b3I8
U3RyaW5nPiB1c2FnZSgpIGNvbnN0ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorI2VuZGlmIC8vIENyeXB0b0tleV9o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmlkbAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCitlbnVtIEtleVR5cGUgeworICAgICJzZWNyZXQiLAorICAg
ICJwdWJsaWMiLAorICAgICJwcml2YXRlIgorfTsKKworZW51bSBLZXlVc2FnZSB7CisgICAgImVu
Y3J5cHQiLAorICAgICJkZWNyeXB0IiwKKyAgICAic2lnbiIsCisgICAgInZlcmlmeSIsCisgICAg
ImRlcml2ZUtleSIsCisgICAgImRlcml2ZUJpdHMiLAorICAgICJ3cmFwS2V5IiwKKyAgICAidW53
cmFwS2V5IgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVNVQlRMRV9DUllQVE8sCisgICAgSW50
ZXJmYWNlTmFtZT1LZXksCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCisgICAgT3BlcmF0aW9uc05v
dERlbGV0YWJsZQorXSBpbnRlcmZhY2UgQ3J5cHRvS2V5IHsKKyAgICByZWFkb25seSBhdHRyaWJ1
dGUgS2V5VHlwZSB0eXBlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGV4dHJhY3Rh
YmxlOworICAgIFtDdXN0b21dIHJlYWRvbmx5IGF0dHJpYnV0ZSBBbGdvcml0aG0gYWxnb3JpdGht
OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBLZXlVc2FnZVtdIHVzYWdlOworfTsK
</data>
<flag name="review"
          id="237628"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>