<?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>124725</bug_id>
          
          <creation_ts>2013-11-21 10:26:23 -0800</creation_ts>
          <short_desc>Implement WebCrypto unwrapKey</short_desc>
          <delta_ts>2013-11-21 11:03:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>andersca</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mkwst</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>953161</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-21 10:26:23 -0800</bug_when>
    <thetext>unwrapKey is basically decrypt+importKey. One subtlety is that there will be algorithms that support wrap/unwrap, but not encrypt/decrypt, so chaining should take that into account.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953164</commentid>
    <comment_count>1</comment_count>
      <attachid>217582</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-21 10:35:35 -0800</bug_when>
    <thetext>Created attachment 217582
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953180</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-21 11:03:27 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r159637&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217582</attachid>
            <date>2013-11-21 10:35:35 -0800</date>
            <delta_ts>2013-11-21 10:59:53 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>UnwrapKey.txt</filename>
            <type>text/plain</type>
            <size>36500</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTYzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDEzLTExLTIxICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBXZWJDcnlw
dG8gdW53cmFwS2V5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjQ3MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0czogY3J5cHRvL3N1YnRsZS9hZXMtY2JjLXVud3JhcC1mYWlsdXJlLmh0bWwKKyAg
ICAgICAgICAgICAgIGNyeXB0by9zdWJ0bGUvYWVzLWNiYy11bndyYXAtcnNhLmh0bWwKKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHA6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5Lmg6CisgICAgICAg
IFJlbW92ZWQgY2FsbHMgZm9yIHdyYXAvdW53cmFwIHBhcmFtZXRlciBwYXJzaW5nLCB0aGVzZSBh
cmUganVzdCB0aGUgc2FtZSBhcyBlbmNyeXB0L2RlY3J5cHQuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0NyeXB0b09wZXJhdGlvbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3J5cHRv
T3BlcmF0aW9uRGF0YUZyb21KU1ZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0
b09wZXJhdGlvbkRhdGEuaDoKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvS2V5U2VyaWFsaXphdGlv
bi5oOgorICAgICAgICBNb3JlIFZlY3RvcjxjaGFyPiBlbGltaW5hdGlvbi4KKworICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01Qcm9taXNlLmg6CisgICAgICAgIFJlbW92ZWQgdW5uZWNjZXNzYXJ5IGNvcHkgY29uc3RydWN0
b3IgYW5kIGFzc2lnbm1lbnQgb3BlcmF0b3IsIHRoZXkgYXJlIG5vIGRpZmZkcmVudAorICAgICAg
ICB0aGFuIGNvbXBpbGVyIGdlbmVyYXRlZCBvbmVzLgorCisgICAgICAgICogYmluZGluZ3MvanMv
SlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3J5cHRvS2V5VXNh
Z2VzRnJvbUpTVmFsdWUpOiBNaW5vciBzdHlsZSBmaXhlcy4KKyAgICAgICAgKFdlYkNvcmU6OkpT
U3VidGxlQ3J5cHRvOjplbmNyeXB0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRs
ZUNyeXB0bzo6ZGVjcnlwdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlw
dG86OnNpZ24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRvOjp2ZXJp
ZnkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRvOjpnZW5lcmF0ZUtl
eSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6aW1wb3J0S2V5KTogU2VwYXJhdGVkIGFjdHVh
bCBpbXBvcnQgb3BlcmF0aW9uIGFuZCB0aGUgcGFydHMgdGhhdCByZWFkCisgICAgICAgIGFyZ3Vt
ZW50cyBmcm9tIEV4ZWNTdGF0ZSwgYW5kIGNhbGwgdGhlIHByb21pc2UuIExvZ2ljYWxseSwgdGhp
cyBzaG91bGQgYmUgb3V0c2lkZQorICAgICAgICBvZiBiaW5kaW5ncyBjb2RlIGV2ZW4sIGJ1dCBK
V0sgbWFrZXMgdGhhdCBxdWl0ZSBjaGFsbGVuZ2luZy4KKyAgICAgICAgKFdlYkNvcmU6OkpTU3Vi
dGxlQ3J5cHRvOjppbXBvcnRLZXkpOiBUaGlzIG9ubHkgZG9lcyB0aGUgbW9yZSBtdW5kYW5lIGFy
Z3VtZW50cworICAgICAgICBhbmQgcmV0dXJuIHBhcnRzIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6
OkpTU3VidGxlQ3J5cHRvOjpleHBvcnRLZXkpOiBNaW5vciBzdHlsZSBmaXhlcy4KKyAgICAgICAg
KFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRvOjp1bndyYXBLZXkpOiBDaGFpbiBkZWNyeXB0IGFuZCBp
bXBvcnQuCisKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobTo6ZW5jcnlwdEZvcldyYXBLZXkpOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtOjpkZWNyeXB0Rm9yVW53cmFwS2V5KToKKyAgICAgICAg
KiBjcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmg6CisgICAgICAgIFRoZXJlIGFyZSBhbGdvcml0aG1z
IHRoYXQgZXhwb3NlIHdyYXAvdW53cmFwLCBidXQgbm90IGVuY3J5cHQvZGVjcnlwdC4gVGhlc2Ug
d2lsbAorICAgICAgICBvdmVycmlkZSB0aGVzZSBuZXcgZnVuY3Rpb25zLCBhbmQgbGVhdmUgZW5j
cnlwdC9kZWNyeXB0IHRvIHJhaXNlIE5PVF9TVVBQT1JURURfRVJSLgorCisgICAgICAgICogY3J5
cHRvL1N1YnRsZUNyeXB0by5pZGw6IEFkZGVkIHVud3JhcEtleS4KKwogMjAxMy0xMS0yMSAgUm9i
ZXJ0IFNpcGthICA8c2lwa2FAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFtjdXJsXUltcHJv
dmUgc3NsIGNlcnRpZmljYXRlIHN0b3JhZ2UgYW5kIGNoZWNrCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFy
eS5jcHAJKHJldmlzaW9uIDE1OTU3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4NCw2NCAr
NTg0LDYgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcgogICAgIH0K
IH0KIAotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IEpTQ3J5cHRv
QWxnb3JpdGhtRGljdGlvbmFyeTo6Y3JlYXRlUGFyYW1ldGVyc0ZvcldyYXBLZXkoRXhlY1N0YXRl
KiBleGVjLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgSlNWYWx1ZSkKLXsK
LSAgICBzd2l0Y2ggKGFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6UlNBRVNfUEtDUzFfdjFfNToKLSAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlJTQVNTQV9QS0NTMV92MV81OgotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6UlNBX1BTUzoKLSAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9PQUVQ
OgotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNEU0E6Ci0gICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RIOgotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6QUVTX0NUUjoKLSAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkFFU19DQkM6Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ01BQzoK
LSAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19HQ006Ci0gICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0ZCOgotICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6SE1BQzoKLSAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkRIOgotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6Ci0gICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0OgotICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NjoKLSAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OlNIQV8zODQ6Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFf
NTEyOgotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6Q09OQ0FUOgotICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SEtERl9DVFI6Ci0gICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpQQktERjI6Ci0gICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVj
LCBOT1RfU1VQUE9SVEVEX0VSUik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLX0K
LQotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IEpTQ3J5cHRvQWxn
b3JpdGhtRGljdGlvbmFyeTo6Y3JlYXRlUGFyYW1ldGVyc0ZvclVud3JhcEtleShFeGVjU3RhdGUq
IGV4ZWMsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtLCBKU1ZhbHVlKQotewot
ICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpSU0FFU19QS0NTMV92MV81OgotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6UlNBU1NBX1BLQ1MxX3YxXzU6Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpSU0FfUFNTOgotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX09BRVA6
Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQToKLSAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDREg6Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpBRVNfQ1RSOgotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
QUVTX0NCQzoKLSAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DTUFDOgot
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0dDTToKLSAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DRkI6Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpITUFDOgotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
REg6Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKLSAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yMjQ6Ci0gICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgotICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6U0hBXzM4NDoKLSAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81
MTI6Ci0gICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpDT05DQVQ6Ci0gICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpIS0RGX0NUUjoKLSAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjoKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMs
IE5PVF9TVVBQT1JURURfRVJSKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotfQot
CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBUTykKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFy
eS5oCShyZXZpc2lvbiAxNTk1NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Ny
eXB0b0FsZ29yaXRobURpY3Rpb25hcnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsOCArNTMsNiBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPiBjcmVhdGVQYXJhbWV0ZXJzRm9yRGVyaXZlQml0cyhKU0M6OkV4ZWNTdGF0ZSosIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVQYXJhbWV0ZXJzRm9y
SW1wb3J0S2V5KEpTQzo6RXhlY1N0YXRlKiwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgSlND
OjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+IGNyZWF0ZVBhcmFtZXRlcnNGb3JFeHBvcnRLZXkoSlNDOjpFeGVjU3RhdGUqLCBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBKU0M6OkpTVmFsdWUpOwotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3JlYXRlUGFyYW1ldGVyc0Zv
cldyYXBLZXkoSlNDOjpFeGVjU3RhdGUqLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBKU0M6
OkpTVmFsdWUpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4gY3JlYXRlUGFyYW1ldGVyc0ZvclVud3JhcEtleShKU0M6OkV4ZWNTdGF0ZSosIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIEpTQzo6SlNWYWx1ZSk7CiB9OwogCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b09wZXJhdGlvbkRhdGEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvT3BlcmF0aW9uRGF0
YS5jcHAJKHJldmlzaW9uIDE1OTU3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3J5cHRvT3BlcmF0aW9uRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDkgKzM3LDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogYm9vbCBjcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpTVmFsdWUo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBDcnlwdG9PcGVyYXRpb25EYXRhJiByZXN1
bHQpCiB7CiAgICAgaWYgKEFycmF5QnVmZmVyKiBidWZmZXIgPSB0b0FycmF5QnVmZmVyKHZhbHVl
KSkKLSAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8Y2hhcio+KGJ1
ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXN1bHQgPSBz
dGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZm
ZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgZWxzZSBpZiAoUmVmUHRyPEFycmF5QnVmZmVyVmlldz4g
YnVmZmVyVmlldyA9IHRvQXJyYXlCdWZmZXJWaWV3KHZhbHVlKSkKLSAgICAgICAgcmVzdWx0ID0g
c3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8Y2hhcio+KGJ1ZmZlclZpZXctPmJhc2VBZGRyZXNz
KCkpLCBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXN1bHQgPSBzdGQ6Om1h
a2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyVmlldy0+YmFzZUFkZHJlc3MoKSks
IGJ1ZmZlclZpZXctPmJ5dGVMZW5ndGgoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsICJPbmx5IEFycmF5QnVmZmVyIGFuZCBBcnJheUJ1ZmZlclZpZXcgb2JqZWN0
cyBjYW4gYmUgcGFzc2VkIGFzIENyeXB0b09wZXJhdGlvbkRhdGEiKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9PcGVyYXRp
b25EYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlw
dG9PcGVyYXRpb25EYXRhLmgJKHJldmlzaW9uIDE1OTU3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3J5cHRvT3BlcmF0aW9uRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3
ICszNSw3IEBAIGNsYXNzIEpTVmFsdWU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRl
ZiBzdGQ6OnBhaXI8Y29uc3QgY2hhciosIHNpemVfdD4gQ3J5cHRvT3BlcmF0aW9uRGF0YTsKK3R5
cGVkZWYgc3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Q+IENyeXB0b09wZXJhdGlvbkRh
dGE7CiAKIGJvb2wgY3J5cHRvT3BlcmF0aW9uRGF0YUZyb21KU1ZhbHVlKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU1ZhbHVlLCBDcnlwdG9PcGVyYXRpb25EYXRhJik7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcAkocmV2aXNpb24gMTU5NTc4KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQsMTcgKzM0LDQgQEAgUHJvbWlzZVdyYXBwZXI6OlByb21pc2VXcmFwcGVyKEpT
RE9NR2xvYgogewogfQogCi1Qcm9taXNlV3JhcHBlcjo6UHJvbWlzZVdyYXBwZXIoY29uc3QgUHJv
bWlzZVdyYXBwZXImIG90aGVyKQotICAgIDogbV9nbG9iYWxPYmplY3Qob3RoZXIubV9nbG9iYWxP
YmplY3QpCi0gICAgLCBtX3Byb21pc2Uob3RoZXIubV9wcm9taXNlKQotewotfQotCi1Qcm9taXNl
V3JhcHBlciYgUHJvbWlzZVdyYXBwZXI6Om9wZXJhdG9yPShjb25zdCBQcm9taXNlV3JhcHBlciYg
b3RoZXIpCi17Ci0gICAgbV9nbG9iYWxPYmplY3QgPSBvdGhlci5tX2dsb2JhbE9iamVjdDsKLSAg
ICBtX3Byb21pc2UgPSBvdGhlci5tX3Byb21pc2U7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAkocmV2aXNp
b24gMTU5NTc4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDkgKzQwLDYgQEAgY2xhc3MgUHJvbWlzZVdyYXBwZXIgewog
cHVibGljOgogICAgIFByb21pc2VXcmFwcGVyKEpTRE9NR2xvYmFsT2JqZWN0KiwgSlNDOjpKU1By
b21pc2UqKTsKIAotICAgIFByb21pc2VXcmFwcGVyKGNvbnN0IFByb21pc2VXcmFwcGVyJik7Ci0g
ICAgUHJvbWlzZVdyYXBwZXImIG9wZXJhdG9yPShjb25zdCBQcm9taXNlV3JhcHBlciYpOwotCiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRnVsZmlsbFJlc3VsdFR5cGU+CiAgICAgdm9pZCBmdWxmaWxsKGNv
bnN0IEZ1bGZpbGxSZXN1bHRUeXBlJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAJKHJldmlzaW9uIDE1OTU3OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTAyLDkgKzEwMiw5IEBAIHN0YXRpYyBib29sIGNyeXB0b0tleVVz
YWdlc0Zyb21KU1ZhbHVlKEUKIAogICAgIHJlc3VsdCA9IDA7CiAKLSAgICBKU0M6OkpTQXJyYXkq
IGFycmF5ID0gYXNBcnJheSh2YWx1ZSk7CisgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHZh
bHVlKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5LT5sZW5ndGgoKTsgKytpKSB7
Ci0gICAgICAgIEpTQzo6SlNWYWx1ZSBlbGVtZW50ID0gYXJyYXktPmdldEluZGV4KGV4ZWMsIGkp
OworICAgICAgICBKU1ZhbHVlIGVsZW1lbnQgPSBhcnJheS0+Z2V0SW5kZXgoZXhlYywgaSk7CiAg
ICAgICAgIFN0cmluZyB1c2FnZVN0cmluZyA9IGVsZW1lbnQudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xNTAsNyArMTUwLDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6
ZW5jcnlwdChFeGVjU3RhdAogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7CiAK
ICAgICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlRW5jcnlwdCkpIHsKLSAgICAgICAg
bV9pbXBsLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVy
cm9yTWVzc2FnZUxldmVsLCAiS2V5IHVzYWdlcyBkb2VzIG5vdCBpbmNsdWRlICdlbmNyeXB0JyIp
OworICAgICAgICBtX2ltcGwtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKEpTTWVzc2Fn
ZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICdl
bmNyeXB0JyIpOwogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgTk9UX1NVUFBPUlRFRF9F
UlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CkBAIC0yMDIsNyArMjAy
LDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6ZGVjcnlwdChFeGVjU3RhdAogICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7CiAKICAgICBpZiAoIWtleS0+YWxsb3dzKENyeXB0
b0tleVVzYWdlRGVjcnlwdCkpIHsKLSAgICAgICAgbV9pbXBsLT5kb2N1bWVudCgpLT5hZGRDb25z
b2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiS2V5IHVzYWdl
cyBkb2VzIG5vdCBpbmNsdWRlICdkZWNyeXB0JyIpOworICAgICAgICBtX2ltcGwtPmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWws
ICJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICdkZWNyeXB0JyIpOwogICAgICAgICBzZXRET01F
eGNlcHRpb24oZXhlYywgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKICAgICB9CkBAIC0yNTQsNyArMjU0LDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0
bzo6c2lnbihFeGVjU3RhdGUqIAogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7
CiAKICAgICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlU2lnbikpIHsKLSAgICAgICAg
bV9pbXBsLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVy
cm9yTWVzc2FnZUxldmVsLCAiS2V5IHVzYWdlcyBkb2VzIG5vdCBpbmNsdWRlICdzaWduJyIpOwor
ICAgICAgICBtX2ltcGwtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNv
dXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICdzaWdu
JyIpOwogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgTk9UX1NVUFBPUlRFRF9FUlIpOwog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CkBAIC0zMDYsNyArMzA2LDcgQEAg
SlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6dmVyaWZ5KEV4ZWNTdGF0ZQogICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZXhlYyk7CiAKICAgICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVz
YWdlVmVyaWZ5KSkgewotICAgICAgICBtX2ltcGwtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNz
YWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJLZXkgdXNhZ2VzIGRvZXMg
bm90IGluY2x1ZGUgJ3ZlcmlmeSciKTsKKyAgICAgICAgbV9pbXBsLT5kb2N1bWVudCgpLT5hZGRD
b25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiS2V5IHVz
YWdlcyBkbyBub3QgaW5jbHVkZSAndmVyaWZ5JyIpOwogICAgICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgTk9UX1NVUFBPUlRFRF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ICAgICB9CkBAIC0zODQsNyArMzg0LDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6ZGlnZXN0
KEV4ZWNTdGF0ZQogICAgIHJldHVybiBwcm9taXNlOwogfQogCi1KU1ZhbHVlIEpTU3VidGxlQ3J5
cHRvOjpnZW5lcmF0ZUtleShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKK0pTVmFsdWUgSlNTdWJ0bGVD
cnlwdG86OmdlbmVyYXRlS2V5KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJn
dW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwpAQCAtNDQwLDM3
ICs0NDAsMTAgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6Z2VuZXJhdGVLZXkoSlNDOgogICAg
IHJldHVybiBwcm9taXNlOwogfQogCi1KU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjppbXBvcnRLZXko
SlNDOjpFeGVjU3RhdGUqIGV4ZWMpCitzdGF0aWMgdm9pZCBpbXBvcnRLZXkoRXhlY1N0YXRlKiBl
eGVjLCBDcnlwdG9LZXlGb3JtYXQga2V5Rm9ybWF0LCBDcnlwdG9PcGVyYXRpb25EYXRhIGRhdGEs
IENyeXB0b0FsZ29yaXRobSogYWxnb3JpdGhtUHRyLCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
KiBwYXJhbWV0ZXJzUHRyLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSBrZXlVc2Fn
ZXMsIENyeXB0b0FsZ29yaXRobTo6S2V5Q2FsbGJhY2sgY2FsbGJhY2ssIENyeXB0b0FsZ29yaXRo
bTo6Vm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMykKLSAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwotCi0gICAgQ3J5cHRv
S2V5Rm9ybWF0IGtleUZvcm1hdDsKLSAgICBpZiAoIWNyeXB0b0tleUZvcm1hdEZyb21KU1ZhbHVl
KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBrZXlGb3JtYXQpKSB7Ci0gICAgICAgIEFTU0VSVChl
eGVjLT5oYWRFeGNlcHRpb24oKSk7Ci0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAg
IH0KLQotICAgIENyeXB0b09wZXJhdGlvbkRhdGEgZGF0YTsKLSAgICBpZiAoIWNyeXB0b09wZXJh
dGlvbkRhdGFGcm9tSlNWYWx1ZShleGVjLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKSwgZGF0
YSkpIHsKLSAgICAgICAgQVNTRVJUKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKLSAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgfQotCi0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobT4gYWxnb3JpdGhtOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPiBwYXJhbWV0ZXJzOwotICAgIGlmICghZXhlYy0+dW5jaGVja2VkQXJndW1lbnQo
MikuaXNOdWxsKCkpIHsKLSAgICAgICAgYWxnb3JpdGhtID0gY3JlYXRlQWxnb3JpdGhtRnJvbUpT
VmFsdWUoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMikpOwotICAgICAgICBpZiAoIWFs
Z29yaXRobSkgewotICAgICAgICAgICAgQVNTRVJUKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKLSAg
ICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICB9Ci0gICAgICAgIHBhcmFt
ZXRlcnMgPSBKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnk6OmNyZWF0ZVBhcmFtZXRlcnNGb3JJ
bXBvcnRLZXkoZXhlYywgYWxnb3JpdGhtLT5pZGVudGlmaWVyKCksIGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDIpKTsKLSAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKSB7Ci0gICAgICAgICAgICBBU1NF
UlQoZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwotICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRo
bT4gYWxnb3JpdGhtKGFsZ29yaXRobVB0cik7CisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+IHBhcmFtZXRlcnMocGFyYW1ldGVyc1B0cik7CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5U2VyaWFsaXphdGlvbj4ga2V5U2VyaWFsaXphdGlvbjsKICAg
ICBzd2l0Y2ggKGtleUZvcm1hdCkgewpAQCAtNDgxLDE2ICs0NTQsMTYgQEAgSlNWYWx1ZSBKU1N1
YnRsZUNyeXB0bzo6aW1wb3J0S2V5KEpTQzo6RQogICAgICAgICBTdHJpbmcgandrU3RyaW5nID0g
U3RyaW5nOjpmcm9tVVRGOChkYXRhLmZpcnN0LCBkYXRhLnNlY29uZCk7CiAgICAgICAgIGlmIChq
d2tTdHJpbmcuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJK
V0sgSlNPTiBzZXJpYWxpemF0aW9uIGlzIG5vdCB2YWxpZCBVVEYtOCIpOwotICAgICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAga2V5U2VyaWFsaXphdGlvbiA9IEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6Y3Jl
YXRlKGV4ZWMsIGp3a1N0cmluZyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgIlVuc3VwcG9ydGVkIGtleSBmb3JtYXQgZm9yIGltcG9ydCIpOwotICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEFTU0VS
VChrZXlTZXJpYWxpemF0aW9uKTsKQEAgLTQ5OCwyNiArNDcxLDczIEBAIEpTVmFsdWUgSlNTdWJ0
bGVDcnlwdG86OmltcG9ydEtleShKU0M6OkUKICAgICBpZiAoIWtleVNlcmlhbGl6YXRpb24tPnJl
Y29uY2lsZUFsZ29yaXRobShhbGdvcml0aG0sIHBhcmFtZXRlcnMpKSB7CiAgICAgICAgIGlmICgh
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAi
QWxnb3JpdGhtIHNwZWNpZmllZCBpbiBrZXkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBvbmUgcGFz
c2VkIHRvIGltcG9ydEtleSBhcyBhcmd1bWVudCIpOwotICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoIWFsZ29yaXRobSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiTmVpdGhl
ciBrZXkgbm9yIGZ1bmN0aW9uIGFyZ3VtZW50IGhhcyBjcnlwdG8gYWxnb3JpdGhtIHNwZWNpZmll
ZCIpOwotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBBU1NFUlQocGFyYW1ldGVycyk7CiAKKyAgICBrZXlTZXJpYWxpemF0aW9uLT5yZWNv
bmNpbGVFeHRyYWN0YWJsZShleHRyYWN0YWJsZSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm47CisKKyAgICBrZXlTZXJpYWxpemF0aW9uLT5yZWNvbmNpbGVV
c2FnZXMoa2V5VXNhZ2VzKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8ga2V5RGF0YSA9IGtleVNlcmlhbGl6YXRpb24tPmtleURhdGEo
KTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGFsZ29yaXRobS0+aW1wb3J0S2V5KCpwYXJhbWV0
ZXJzLCAqa2V5RGF0YSwgZXh0cmFjdGFibGUsIGtleVVzYWdlcywgc3RkOjptb3ZlKGNhbGxiYWNr
KSwgc3RkOjptb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Cit9CisKK0pTVmFsdWUgSlNTdWJ0bGVDcnlwdG86
OmltcG9ydEtleShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDMpCisgICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKworICAgIENyeXB0b0tleUZv
cm1hdCBrZXlGb3JtYXQ7CisgICAgaWYgKCFjcnlwdG9LZXlGb3JtYXRGcm9tSlNWYWx1ZShleGVj
LCBleGVjLT5hcmd1bWVudCgwKSwga2V5Rm9ybWF0KSkgeworICAgICAgICBBU1NFUlQoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisK
KyAgICBDcnlwdG9PcGVyYXRpb25EYXRhIGRhdGE7CisgICAgaWYgKCFjcnlwdG9PcGVyYXRpb25E
YXRhRnJvbUpTVmFsdWUoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSksIGRhdGEpKSB7
CisgICAgICAgIEFTU0VSVChleGVjLT5oYWRFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG0+IGFsZ29yaXRobTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4gcGFyYW1ldGVyczsKKyAgICBpZiAoIWV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDIpLmlz
TnVsbCgpKSB7CisgICAgICAgIGFsZ29yaXRobSA9IGNyZWF0ZUFsZ29yaXRobUZyb21KU1ZhbHVl
KGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDIpKTsKKyAgICAgICAgaWYgKCFhbGdvcml0
aG0pIHsKKyAgICAgICAgICAgIEFTU0VSVChleGVjLT5oYWRFeGNlcHRpb24oKSk7CisgICAgICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgfQorICAgICAgICBwYXJhbWV0ZXJz
ID0gSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpjcmVhdGVQYXJhbWV0ZXJzRm9ySW1wb3J0
S2V5KGV4ZWMsIGFsZ29yaXRobS0+aWRlbnRpZmllcigpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVu
dCgyKSk7CisgICAgICAgIGlmICghcGFyYW1ldGVycykgeworICAgICAgICAgICAgQVNTRVJUKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
ICAgICAgICB9CisgICAgfQorCiAgICAgYm9vbCBleHRyYWN0YWJsZSA9IGZhbHNlOwogICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gNCkgewogICAgICAgICBleHRyYWN0YWJsZSA9IGV4
ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDMpLnRvQm9vbGVhbihleGVjKTsKICAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAg
ICAgfQotICAgIGtleVNlcmlhbGl6YXRpb24tPnJlY29uY2lsZUV4dHJhY3RhYmxlKGV4dHJhY3Rh
YmxlKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogCiAgICAgQ3J5cHRvS2V5VXNhZ2Uga2V5VXNhZ2VzID0gMDsKICAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDUpIHsKQEAgLTUyNiwxMyArNTQ2LDYgQEAgSlNWYWx1
ZSBKU1N1YnRsZUNyeXB0bzo6aW1wb3J0S2V5KEpTQzo6RQogICAgICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAga2V5U2VyaWFsaXphdGlvbi0+cmVj
b25jaWxlVXNhZ2VzKGtleVVzYWdlcyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQot
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIGF1dG8ga2V5RGF0YSA9IGtleVNl
cmlhbGl6YXRpb24tPmtleURhdGEoKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0g
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgSlNQcm9taXNlKiBwcm9taXNlID0g
SlNQcm9taXNlOjpjcmVhdGVXaXRoUmVzb2x2ZXIoZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0KCkp
OwogICAgIFByb21pc2VXcmFwcGVyIHByb21pc2VXcmFwcGVyKGdsb2JhbE9iamVjdCgpLCBwcm9t
aXNlKTsKQEAgLTU0MywxNyArNTU2LDE0IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OmltcG9y
dEtleShKU0M6OkUKICAgICAgICAgcHJvbWlzZVdyYXBwZXIucmVqZWN0KG51bGxwdHIpOwogICAg
IH07CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhbGdvcml0aG0tPmltcG9ydEtl
eSgqcGFyYW1ldGVycywgKmtleURhdGEsIGV4dHJhY3RhYmxlLCBrZXlVc2FnZXMsIHN0ZDo6bW92
ZShzdWNjZXNzQ2FsbGJhY2spLCBzdGQ6Om1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMpOwotICAg
IGlmIChlYykgewotICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIFdlYkNv
cmU6OmltcG9ydEtleShleGVjLCBrZXlGb3JtYXQsIGRhdGEsIGFsZ29yaXRobS5yZWxlYXNlKCks
IHBhcmFtZXRlcnMucmVsZWFzZSgpLCBleHRyYWN0YWJsZSwga2V5VXNhZ2VzLCBzdWNjZXNzQ2Fs
bGJhY2ssIGZhaWx1cmVDYWxsYmFjayk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICB9CiAKICAgICByZXR1cm4gcHJvbWlz
ZTsKIH0KIAotSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6ZXhwb3J0S2V5KEpTQzo6RXhlY1N0YXRl
KiBleGVjKQorSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6ZXhwb3J0S2V5KEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKICAgICAgICAgcmV0dXJu
IGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoZXhlYykpOwpAQCAtNTc5LDcgKzU4OSw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86
OmV4cG9ydEtleShKU0M6OkUKIAogICAgIHN3aXRjaCAoa2V5Rm9ybWF0KSB7CiAgICAgY2FzZSBD
cnlwdG9LZXlGb3JtYXQ6OlJhdzogewotICAgICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gcmVz
dWx0OworICAgICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwogICAgICAgICBpZiAoQ3J5cHRv
S2V5U2VyaWFsaXphdGlvblJhdzo6c2VyaWFsaXplKCprZXksIHJlc3VsdCkpCiAgICAgICAgICAg
ICBwcm9taXNlV3JhcHBlci5mdWxmaWxsKHJlc3VsdCk7CiAgICAgICAgIGVsc2UgewpAQCAtNTkz
LDcgKzYwMyw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OmV4cG9ydEtleShKU0M6OkUKICAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiAgICAgICAgIENTdHJpbmcgdXRmOFN0cmluZyA9IHJlc3VsdC51dGY4KFN0cmlj
dENvbnZlcnNpb24pOwotICAgICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gcmVzdWx0QnVmZmVy
OworICAgICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0QnVmZmVyOwogICAgICAgICByZXN1bHRC
dWZmZXIuYXBwZW5kKHV0ZjhTdHJpbmcuZGF0YSgpLCB1dGY4U3RyaW5nLmxlbmd0aCgpKTsKICAg
ICAgICAgcHJvbWlzZVdyYXBwZXIuZnVsZmlsbChyZXN1bHRCdWZmZXIpOwogICAgICAgICBicmVh
azsKQEAgLTYwNiw2ICs2MTYsMTEwIEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OmV4cG9ydEtl
eShKU0M6OkUKICAgICByZXR1cm4gcHJvbWlzZTsKIH0KIAorSlNWYWx1ZSBKU1N1YnRsZUNyeXB0
bzo6dW53cmFwS2V5KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgNSkKKyAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOworCisgICAgQ3J5cHRvS2V5
Rm9ybWF0IGtleUZvcm1hdDsKKyAgICBpZiAoIWNyeXB0b0tleUZvcm1hdEZyb21KU1ZhbHVlKGV4
ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBrZXlGb3JtYXQpKSB7CisgICAgICAgIEFTU0VSVChleGVj
LT5oYWRFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0K
KworICAgIENyeXB0b09wZXJhdGlvbkRhdGEgd3JhcHBlZEtleURhdGE7CisgICAgaWYgKCFjcnlw
dG9PcGVyYXRpb25EYXRhRnJvbUpTVmFsdWUoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQo
MSksIHdyYXBwZWRLZXlEYXRhKSkgeworICAgICAgICBBU1NFUlQoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBSZWZQdHI8
Q3J5cHRvS2V5PiB1bndyYXBwaW5nS2V5ID0gdG9DcnlwdG9LZXkoZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoMikpOworICAgIGlmICghdW53cmFwcGluZ0tleSkKKyAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGV4ZWMpOworCisgICAgaWYgKCF1bndyYXBwaW5nS2V5LT5hbGxvd3MoQ3J5cHRv
S2V5VXNhZ2VVbndyYXBLZXkpKSB7CisgICAgICAgIG1faW1wbC0+ZG9jdW1lbnQoKS0+YWRkQ29u
c29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIktleSB1c2Fn
ZXMgZG8gbm90IGluY2x1ZGUgJ3Vud3JhcEtleSciKTsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIE5PVF9TVVBQT1JURURfRVJSKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobT4gdW53cmFwQWxn
b3JpdGhtOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiB1
bndyYXBBbGdvcml0aG1QYXJhbWV0ZXJzOworICAgIHVud3JhcEFsZ29yaXRobSA9IGNyZWF0ZUFs
Z29yaXRobUZyb21KU1ZhbHVlKGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDMpKTsKKyAg
ICBpZiAoIXVud3JhcEFsZ29yaXRobSkgeworICAgICAgICBBU1NFUlQoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgdW53cmFw
QWxnb3JpdGhtUGFyYW1ldGVycyA9IEpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Y3JlYXRl
UGFyYW1ldGVyc0ZvckRlY3J5cHQoZXhlYywgdW53cmFwQWxnb3JpdGhtLT5pZGVudGlmaWVyKCks
IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDMpKTsKKyAgICBpZiAoIXVud3JhcEFsZ29yaXRobVBh
cmFtZXRlcnMpIHsKKyAgICAgICAgQVNTRVJUKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKKyAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobT4gdW53cmFwcGVkS2V5QWxnb3JpdGhtOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiB1bndyYXBwZWRLZXlBbGdvcml0aG1QYXJhbWV0
ZXJzOworICAgIGlmICghZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoNCkuaXNOdWxsKCkpIHsKKyAg
ICAgICAgdW53cmFwcGVkS2V5QWxnb3JpdGhtID0gY3JlYXRlQWxnb3JpdGhtRnJvbUpTVmFsdWUo
ZXhlYywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoNCkpOworICAgICAgICBpZiAoIXVud3JhcHBl
ZEtleUFsZ29yaXRobSkgeworICAgICAgICAgICAgQVNTRVJUKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KTsKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICB9CisgICAgICAg
IHVud3JhcHBlZEtleUFsZ29yaXRobVBhcmFtZXRlcnMgPSBKU0NyeXB0b0FsZ29yaXRobURpY3Rp
b25hcnk6OmNyZWF0ZVBhcmFtZXRlcnNGb3JJbXBvcnRLZXkoZXhlYywgdW53cmFwcGVkS2V5QWxn
b3JpdGhtLT5pZGVudGlmaWVyKCksIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDQpKTsKKyAgICAg
ICAgaWYgKCF1bndyYXBwZWRLZXlBbGdvcml0aG1QYXJhbWV0ZXJzKSB7CisgICAgICAgICAgICBB
U1NFUlQoZXhlYy0+aGFkRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIGV4dHJhY3RhYmxlID0gZmFsc2U7
CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSA2KSB7CisgICAgICAgIGV4dHJhY3Rh
YmxlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoNSkudG9Cb29sZWFuKGV4ZWMpOworICAgICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKyAgICB9CisKKyAgICBDcnlwdG9LZXlVc2FnZSBrZXlVc2FnZXMgPSAwOworICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gNykgeworICAgICAgICBpZiAoIWNyeXB0b0tleVVz
YWdlc0Zyb21KU1ZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDYpLCBrZXlVc2FnZXMpKSB7Cisg
ICAgICAgICAgICBBU1NFUlQoZXhlYy0+aGFkRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBKU1Byb21pc2UqIHBy
b21pc2UgPSBKU1Byb21pc2U6OmNyZWF0ZVdpdGhSZXNvbHZlcihleGVjLT52bSgpLCBnbG9iYWxP
YmplY3QoKSk7CisgICAgUHJvbWlzZVdyYXBwZXIgcHJvbWlzZVdyYXBwZXIoZ2xvYmFsT2JqZWN0
KCksIHByb21pc2UpOworICAgIFN0cm9uZzxKU0RPTUdsb2JhbE9iamVjdD4gZG9tR2xvYmFsT2Jq
ZWN0KGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCgpKTsKKworICAgIENyeXB0b0FsZ29yaXRobSog
dW53cmFwcGVkS2V5QWxnb3JpdGhtUHRyID0gdW53cmFwcGVkS2V5QWxnb3JpdGhtLnJlbGVhc2Uo
KTsKKyAgICBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzKiB1bndyYXBwZWRLZXlBbGdvcml0aG1Q
YXJhbWV0ZXJzUHRyID0gdW53cmFwcGVkS2V5QWxnb3JpdGhtUGFyYW1ldGVycy5yZWxlYXNlKCk7
CisKKyAgICBhdXRvIGZhaWx1cmVDYWxsYmFjayA9IFtwcm9taXNlV3JhcHBlcl0oKSBtdXRhYmxl
IHsKKyAgICAgICAgcHJvbWlzZVdyYXBwZXIucmVqZWN0KG51bGxwdHIpOworICAgIH07CisKKyAg
ICBhdXRvIHN1Y2Nlc3NDYWxsYmFjayA9IFtkb21HbG9iYWxPYmplY3QsIGtleUZvcm1hdCwgdW53
cmFwcGVkS2V5QWxnb3JpdGhtUHRyLCB1bndyYXBwZWRLZXlBbGdvcml0aG1QYXJhbWV0ZXJzUHRy
LCBleHRyYWN0YWJsZSwga2V5VXNhZ2VzLCBwcm9taXNlV3JhcHBlciwgZmFpbHVyZUNhbGxiYWNr
XShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8g
aW1wb3J0U3VjY2Vzc0NhbGxiYWNrID0gW3Byb21pc2VXcmFwcGVyXShDcnlwdG9LZXkmIGtleSkg
bXV0YWJsZSB7CisgICAgICAgICAgICBwcm9taXNlV3JhcHBlci5mdWxmaWxsKCZrZXkpOworICAg
ICAgICB9OworICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBkb21HbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKTsKKyAgICAgICAgV2ViQ29yZTo6aW1wb3J0S2V5KGV4ZWMsIGtleUZvcm1hdCwgc3Rk
OjptYWtlX3BhaXIocmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSksIHVud3JhcHBlZEtleUFs
Z29yaXRobVB0ciwgdW53cmFwcGVkS2V5QWxnb3JpdGhtUGFyYW1ldGVyc1B0ciwgZXh0cmFjdGFi
bGUsIGtleVVzYWdlcywgaW1wb3J0U3VjY2Vzc0NhbGxiYWNrLCBmYWlsdXJlQ2FsbGJhY2spOwor
ICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBSZXBvcnQgZXhjZXB0aW9uIGRldGFpbHMgdG8gY29uc29sZSwgYW5kIHBvc3NpYmx5IHRvIGNh
bGxpbmcgc2NyaXB0IG9uY2UgdGhlcmUgaXMgYSBzdGFuZGFyZGl6ZWQgd2F5IHRvIHBhc3MgZXJy
b3JzIHRvIFdlYkNyeXB0byBwcm9taXNlIHJlamVjdCBmdW5jdGlvbnMuCisgICAgICAgICAgICBl
eGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7Cisg
ICAgICAgIH0KKyAgICB9OworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgdW53cmFw
QWxnb3JpdGhtLT5kZWNyeXB0Rm9yVW53cmFwS2V5KCp1bndyYXBBbGdvcml0aG1QYXJhbWV0ZXJz
LCAqdW53cmFwcGluZ0tleSwgd3JhcHBlZEtleURhdGEsIHN0ZDo6bW92ZShzdWNjZXNzQ2FsbGJh
Y2spLCBzdGQ6Om1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMpOworICAgIGlmIChlYykgeworICAg
ICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcHJvbWlzZTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdv
cml0aG0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdv
cml0aG0uY3BwCShyZXZpc2lvbiAxNTk1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5
cHRvQWxnb3JpdGhtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsMTYgQEAgdm9pZCBD
cnlwdG9BbGdvcml0aG06OmltcG9ydEtleShjb25zdCBDcgogICAgIGVjID0gTk9UX1NVUFBPUlRF
RF9FUlI7CiB9CiAKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtOjplbmNyeXB0Rm9yV3JhcEtleShjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkm
IGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2sgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIGVuY3J5cHQocGFyYW1ldGVycywga2V5LCBkYXRhLCBjYWxsYmFjaywgZmFpbHVyZUNh
bGxiYWNrLCBlYyk7Cit9CisKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtOjpkZWNyeXB0Rm9yVW53cmFw
S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENy
eXB0b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxs
YmFjayBjYWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgZGVjcnlwdChwYXJhbWV0ZXJzLCBrZXksIGRhdGEsIGNhbGxiYWNrLCBm
YWlsdXJlQ2FsbGJhY2ssIGVjKTsKK30KKwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmgJKHJldmlzaW9uIDE1OTU3OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyAr
NDQsNyBAQCBjbGFzcyBDcnlwdG9LZXlQYWlyOwogY2xhc3MgQ3J5cHRvS2V5RGF0YTsKIAogLy8g
RGF0YSBpcyBtdXRhYmxlLCBzbyBhc3luYyBvcGVyYXRpb25zIHNob3VsZCBjb3B5IGl0IGZpcnN0
LgotdHlwZWRlZiBzdGQ6OnBhaXI8Y29uc3QgY2hhciosIHNpemVfdD4gQ3J5cHRvT3BlcmF0aW9u
RGF0YTsKK3R5cGVkZWYgc3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Q+IENyeXB0b09w
ZXJhdGlvbkRhdGE7CiAKIGNsYXNzIENyeXB0b0FsZ29yaXRobSB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQ3J5cHRvQWxnb3JpdGhtKQpAQCAtNjksNiArNjksMTAgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkZXJpdmVCaXRzKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMm
LCBjb25zdCBDcnlwdG9LZXkmIGJhc2VLZXksIHVuc2lnbmVkIGxvbmcgbGVuZ3RoLCBWZWN0b3JD
YWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBpbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cyYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2Fn
ZSwgS2V5Q2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNv
ZGUmKTsKIAorICAgIC8vIFRoZXNlIGFyZSBvbmx5IGRpZmZlcmVudCBmcm9tIGVuY3J5cHQvZGVj
cnlwdCBiZWNhdXNlIHNvbWUgYWxnb3JpdGhtcyBtYXkgbm90IGV4cG9zZSBlbmNyeXB0L2RlY3J5
cHQuCisgICAgdmlydHVhbCB2b2lkIGVuY3J5cHRGb3JXcmFwS2V5KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiwgVmVjdG9yQ2FsbGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVjcnlwdEZvclVud3JhcEtleShjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxi
YWNrLCBFeGNlcHRpb25Db2RlJik7CisKIHByb3RlY3RlZDoKICAgICBDcnlwdG9BbGdvcml0aG0o
KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5U2VyaWFsaXphdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXlTZXJpYWxp
emF0aW9uLmgJKHJldmlzaW9uIDE1OTU3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9Dcnlw
dG9LZXlTZXJpYWxpemF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xh
c3MgQ3J5cHRvQWxnb3JpdGhtOwogY2xhc3MgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczsKIGNs
YXNzIENyeXB0b0tleURhdGE7CiAKLXR5cGVkZWYgc3RkOjpwYWlyPGNvbnN0IGNoYXIqLCBzaXpl
X3Q+IENyeXB0b09wZXJhdGlvbkRhdGE7Cit0eXBlZGVmIHN0ZDo6cGFpcjxjb25zdCB1aW50OF90
Kiwgc2l6ZV90PiBDcnlwdG9PcGVyYXRpb25EYXRhOwogCiBjbGFzcyBDcnlwdG9LZXlTZXJpYWxp
emF0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDcnlwdG9LZXlTZXJpYWxpemF0aW9u
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uaWRsCShyZXZpc2lvbiAx
NTk1NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNCArMzcsNSBAQAogICAgIFtDdXN0b21dIFByb21pc2UgZ2VuZXJhdGVL
ZXkoQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIG9wdGlvbmFsIGJvb2xlYW4gZXh0cmFj
dGFibGUsIG9wdGlvbmFsIEtleVVzYWdlW10ga2V5VXNhZ2VzKTsKICAgICBbQ3VzdG9tXSBQcm9t
aXNlIGltcG9ydEtleShLZXlGb3JtYXQgZm9ybWF0LCBDcnlwdG9PcGVyYXRpb25EYXRhIGtleURh
dGEsIEFsZ29yaXRobUlkZW50aWZpZXI/IGFsZ29yaXRobSwgb3B0aW9uYWwgYm9vbGVhbiBleHRy
YWN0YWJsZSwgb3B0aW9uYWwgS2V5VXNhZ2VbXSBrZXlVc2FnZXMpOwogICAgIFtDdXN0b21dIFBy
b21pc2UgZXhwb3J0S2V5KEtleUZvcm1hdCBmb3JtYXQsIEtleSBrZXkpOworICAgIFtDdXN0b21d
IFByb21pc2UgdW53cmFwS2V5KEtleUZvcm1hdCBmb3JtYXQsIENyeXB0b09wZXJhdGlvbkRhdGEg
d3JhcHBlZEtleSwgS2V5IHVud3JhcHBpbmdLZXksIEFsZ29yaXRobUlkZW50aWZpZXIgdW53cmFw
QWxnb3JpdGhtLCBBbGdvcml0aG1JZGVudGlmaWVyPyB1bndyYXBwZWRLZXlBbGdvcml0aG0sIG9w
dGlvbmFsIGJvb2xlYW4gZXh0cmFjdGFibGUsIG9wdGlvbmFsIEtleVVzYWdlW10ga2V5VXNhZ2Vz
KTsKIH07CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTk2MzQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0xMS0yMSAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV2ViQ3J5cHRv
IHVud3JhcEtleQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI0NzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBjcnlwdG8vc3VidGxlL2Flcy1jYmMtdW53cmFwLWZhaWx1cmUtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL2Flcy1jYmMtdW53cmFwLWZhaWx1cmUuaHRt
bDogQWRkZWQuCisgICAgICAgICogY3J5cHRvL3N1YnRsZS9hZXMtY2JjLXVud3JhcC1yc2EtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL2Flcy1jYmMtdW53cmFw
LXJzYS5odG1sOiBBZGRlZC4KKwogMjAxMy0xMS0yMSAgUmFkdSBTdGF2aWxhICA8c3RhdmlsYUBh
ZG9iZS5jb20+CiAKICAgICAgICAgQWRkZWQgdGVzdCBmb3IgdGhlIG92ZXJmbG93IG9mIGEgcmVn
aW9uIGJlaW5nIHBhaW50ZWQgYWNyb3NzIG11bHRpcGxlIHRpbGVzLgpJbmRleDogTGF5b3V0VGVz
dHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLXVud3JhcC1mYWlsdXJlLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jYmMtdW53cmFwLWZhaWx1
cmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRs
ZS9hZXMtY2JjLXVud3JhcC1mYWlsdXJlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDEzIEBACitUZXN0IHVud3JhcHBpbmcgYW4gUlNBIGtleSB3aXRoIEFFUy1DQkMuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitJbXBvcnRpbmcgYW4gdW53cmFwcGluZyBr
ZXkuLi4KK1BBU1MgdW53cmFwcGluZ0tleS5hbGdvcml0aG0ubmFtZSBpcyAnYWVzLWNiYycKK1Vu
d3JhcHBpbmcgYSBrZXkuLi4KK1BBU1MgUHJvbWlzZSByZWplY3RlZAorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246
IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNiYy11bndyYXAtZmFpbHVyZS1leHBlY3Rl
ZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCit0ZXh0
L3BsYWluClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKQWRkZWQ6IHN2bjplb2wtc3R5
bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
SW5kZXg6IExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNiYy11bndyYXAtZmFpbHVyZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNiYy11bndy
YXAtZmFpbHVyZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRs
ZS9hZXMtY2JjLXVud3JhcC1mYWlsdXJlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2NvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbigiVGVzdCB1bndyYXBwaW5nIGFuIFJTQSBrZXkgd2l0aCBBRVMtQ0JDLiIpOworCitqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIGV4dHJhY3RhYmxlID0gdHJ1ZTsKK3ZhciBub25FeHRy
YWN0YWJsZSA9IGZhbHNlOworCit2YXIgdW53cmFwcGluZ0tleU9jdGV0cyA9IGhleFN0cmluZ1Rv
VWludDhBcnJheSgiMmEwMGUwZTc3NmU5NGU0ZGM4OWJmOTQ3Y2ViZGViZTEiKTsKK3ZhciB3cmFw
cGVkS2V5ID0gaGV4U3RyaW5nVG9VaW50OEFycmF5KCJiNDkwZGVkYjNhYmMzZmQ1NDVlMTQ2NTM4
ZTZjYzNjYSIpOyAvLyBBbiBlbXB0eSBlbmNyeXB0ZWQgSlNPTi4KKworZGVidWcoIkltcG9ydGlu
ZyBhbiB1bndyYXBwaW5nIGtleS4uLiIpOworY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIs
IHVud3JhcHBpbmdLZXlPY3RldHMsICJBRVMtQ0JDIiwgbm9uRXh0cmFjdGFibGUsIFsidW53cmFw
S2V5Il0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgdW53cmFwcGluZ0tleSA9IHJlc3Vs
dDsKKyAgICBzaG91bGRCZSgidW53cmFwcGluZ0tleS5hbGdvcml0aG0ubmFtZSIsICInYWVzLWNi
YyciKTsKKyAgICB2YXIgdW53cmFwQWxnb3JpdGhtID0ge25hbWU6ICJBRVMtQ0JDIiwgaXY6IGhl
eFN0cmluZ1RvVWludDhBcnJheSgiMDAwMTAyMDMwNDA1MDYwNzA4MDkwYTBiMGMwZDBlMGYiKX07
CisgICAgZGVidWcoIlVud3JhcHBpbmcgYSBrZXkuLi4iKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1
YnRsZS51bndyYXBLZXkoImp3ayIsIHdyYXBwZWRLZXksIHVud3JhcHBpbmdLZXksIHVud3JhcEFs
Z29yaXRobSwgbnVsbCwgZXh0cmFjdGFibGUsIFsic2lnbiIsICJ2ZXJpZnkiLCAiZW5jcnlwdCIs
ICJkZWNyeXB0IiwgIndyYXAiLCAidW53cmFwIl0pOworfSkudGhlbih1bmRlZmluZWQsIGZ1bmN0
aW9uKHJlc3VsdCkgeworICAgIHRlc3RQYXNzZWQoIlByb21pc2UgcmVqZWN0ZWQiKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30pOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJv
cGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLXVud3Jh
cC1mYWlsdXJlLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsx
ICMjCit0ZXh0L2h0bWwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5
b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9hZXMtY2JjLXVud3JhcC1yc2EtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNiYy11bndyYXAtcnNh
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2NyeXB0by9zdWJ0bGUv
YWVzLWNiYy11bndyYXAtcnNhLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDIwIEBACitUZXN0IHVud3JhcHBpbmcgYW4gUlNBIGtleSB3aXRoIEFFUy1DQkMuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitJbXBvcnRpbmcgYW4gdW53cmFwcGluZyBrZXkuLi4K
K1BBU1MgdW53cmFwcGluZ0tleS5hbGdvcml0aG0ubmFtZSBpcyAnYWVzLWNiYycKK1Vud3JhcHBp
bmcgYSBrZXkuLi4KK1BBU1MgdW53cmFwcGVkS2V5LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgS2V5
XScKK1BBU1MgdW53cmFwcGVkS2V5LnR5cGUgaXMgJ3B1YmxpYycKK1BBU1MgdW53cmFwcGVkS2V5
LnVzYWdlcyBpcyBbJ3NpZ24nLCd2ZXJpZnknXQorUEFTUyB1bndyYXBwZWRLZXkuYWxnb3JpdGht
Lm5hbWUgaXMgJ3JzYXNzYS1wa2NzMS12MV81JworUEFTUyB1bndyYXBwZWRLZXkuYWxnb3JpdGht
Lm1vZHVsdXNMZW5ndGggaXMgMjA0OAorUEFTUyBCYXNlNjRVUkwuc3RyaW5naWZ5KHVud3JhcHBl
ZEtleS5hbGdvcml0aG0ucHVibGljRXhwb25lbnQpIGlzIHB1YmxpY0tleUpTT04uZQorUEFTUyB1
bndyYXBwZWRLZXkuYWxnb3JpdGhtLmhhc2gubmFtZSBpcyAnc2hhLTI1NicKK1BBU1MgdW53cmFw
cGVkS2V5LmV4dHJhY3RhYmxlIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMv
Y3J5cHRvL3N1YnRsZS9hZXMtY2JjLXVud3JhcC1yc2EtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
QWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAjIwordGV4dC9wbGFpbgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIHByb3BlcnR5CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMK
K25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0
cy9jcnlwdG8vc3VidGxlL2Flcy1jYmMtdW53cmFwLXJzYS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNiYy11bndyYXAtcnNhLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL2Flcy1jYmMtdW53cmFwLXJzYS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgdW53cmFwcGluZyBhbiBSU0Eg
a2V5IHdpdGggQUVTLUNCQy4iKTsKKworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciBleHRy
YWN0YWJsZSA9IHRydWU7Cit2YXIgbm9uRXh0cmFjdGFibGUgPSBmYWxzZTsKKwordmFyIHB1Ymxp
Y0tleUpTT04gPSB7CisgICAga3R5OiAiUlNBIiwKKyAgICBhbGc6ICJSUzI1NiIsCisgICAgbjog
InJjQ1VDdjdPYzFIVmFtMURJaEN6cWtuVGhXYXdPcDhRTGs4Wml5MnAxMEJ5alFGQ2Fqb0ZpeXVB
V2wtUjFXWFphZjR4aXRMUnJhY1Q5YWdwekl6Yy1NYkxTSElHZ1dRR08yMWxHaUlteTVmdFotRDhi
SEFxUnoyeTE1cHpENGM0Q0VvdTdYU1NMRG9SblIwUUc1TXNEaEQ2czJnVjltd0hrcnRrQ3h0TVdk
QmktNzdhczh3R21sTlJsZGNPU2daRExLOFVuQ1NnQTFPZ3VaOTg5YkZ5Yzh0T09FSWIweFVTZlBT
ejNMUFNDbnlZejY4YURqbUtWZU5ILWlnODU3T1NjeVdiR3lFeTNCaXc2NHF1bjNqdVVsTldzSjN6
bmdrT2R0ZVlXeXR4NVFyNFhLTnM2Ui1NeXlxNzJLVXAwMm1KRFppaXlpZ2x4TUxfaTMtX0NlZWND
dyIsCisgICAgZTogIkFRQUIiLAorICAgIGV4dHJhY3RhYmxlOiBmYWxzZSwKKyAgICB1c2U6ICJz
aWciCit9OworCit2YXIgdW53cmFwcGluZ0tleU9jdGV0cyA9IGhleFN0cmluZ1RvVWludDhBcnJh
eSgiMmEwMGUwZTc3NmU5NGU0ZGM4OWJmOTQ3Y2ViZGViZTEiKTsKK3ZhciB3cmFwcGVkS2V5ID0g
aGV4U3RyaW5nVG9VaW50OEFycmF5KCIzNTExZjYwMjhkYjA0ZWE5N2U3Y2ZhZDNjNGNjNjA4Mzdi
Y2VmZjI1Y2I2Yzg4MjkyZmJjYjQ1NDc1NzBhZmRjMzJlNDAwM2ZlNGQ2NWYxZTdkZjYwZGMxZmRi
M2RmMzZjM2Y1OGFiMjI4ZTMzYWEzMTAwNTg1MmQ0NmQwYzJhZDEzMTg0MzVhMDcxYmJiNWJiYjA1
NjUwZWE2M2Q1NTE2OThiMGMwNDBkZDk1ZWQwZDM3OWI1ZTJlY2NiNTQ1YWU1NjIwYWNiODA1MTE3
NGNkMmFkNjQ3MzI4YWQ5OWRjZDQ2MmZlYzQwNzQ4NzI0ZWIxZTY4ZjIwOWY3NzlmYWEyYzM1YjRk
NGQxYjY2MDRhNzRlNjJhMTg0NjI0OWVhNjE5Mjk1NGE1YWYxMGM3MWViZmVhNzk5NDgxNDI0NDFl
ZDMwN2U5ZjUyZTc5N2E1MWE4MDA3YTZmODdiNTdjNTFmOWU3ZWVmNTRiN2U0YTFmODE4YmE2YWMy
NWVlNTkzNWMyM2IzMjUzZDZkOWQyMjIyNjJjNzljY2RiNzE0N2Q5YzA3NTI3YzIyZmU3YTRhYjkx
YWYyMDQ3OWVkZjU5MzBiM2MwNTNjMGEwYjI3MDkyY2ZiNTMyMDM2MzNkMDFkY2Y2ZTMzM2I1YmU3
YzE5MzNjMzIxYzk1M2Y5NjJiOTM0ZWJlZmQ5ZGY4Y2NhNmMwYTI1ZmNkNWZiOTYxMDU0MzVjNDJk
OTkwMjQwNmY4MmJjOGRhYThlYzEyZmE4NWQ5YWZhNjVhZGJmZTNmNjA4MjhlZjY0YWRhZjQzYWQ4
ZTNiMGFmMTA0Y2JmYWZkOTk0MzIzNzMyYmJhMDhmODRkNWNhYzFkMTU3YjI3NjIzM2RmZmVjYWZl
NDc5NDJiODNjODVlYWQ2ZDU4ODZjNmJhZGY1MzRkNGEzMmQzZjU0NWU4MDMyZGQ1ZTQxOWQ3YmZm
M2FjZGUyYzM3YTk2ZmMzNGZkYTg3NDdkODk1MDBiZjlmN2VmNDU4NzNjNmIzYjI3NDE5N2MxODRm
ZTkxYmFkZWVkZGY1MDQ1Zjk4MmVjYzY2YjYxZTBjNGQ3NWZkNDk2YzYxZmZjYmIzNmUwNzlmYWYy
MGFhMGMwNWNkMTI3NDJhZWZkZjFmNmEzOWM0YTljNWEiKTsKKworZGVidWcoIkltcG9ydGluZyBh
biB1bndyYXBwaW5nIGtleS4uLiIpOworY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIHVu
d3JhcHBpbmdLZXlPY3RldHMsICJBRVMtQ0JDIiwgbm9uRXh0cmFjdGFibGUsIFsidW53cmFwS2V5
Il0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgdW53cmFwcGluZ0tleSA9IHJlc3VsdDsK
KyAgICBzaG91bGRCZSgidW53cmFwcGluZ0tleS5hbGdvcml0aG0ubmFtZSIsICInYWVzLWNiYyci
KTsKKyAgICB2YXIgdW53cmFwQWxnb3JpdGhtID0ge25hbWU6ICJBRVMtQ0JDIiwgaXY6IGhleFN0
cmluZ1RvVWludDhBcnJheSgiMDAwMTAyMDMwNDA1MDYwNzA4MDkwYTBiMGMwZDBlMGYiKX07Cisg
ICAgZGVidWcoIlVud3JhcHBpbmcgYSBrZXkuLi4iKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRs
ZS51bndyYXBLZXkoImp3ayIsIHdyYXBwZWRLZXksIHVud3JhcHBpbmdLZXksIHVud3JhcEFsZ29y
aXRobSwgbnVsbCwgZXh0cmFjdGFibGUsIFsic2lnbiIsICJ2ZXJpZnkiLCAiZW5jcnlwdCIsICJk
ZWNyeXB0IiwgIndyYXAiLCAidW53cmFwIl0pOworfSkudGhlbihmdW5jdGlvbihyZXN1bHQpIHsK
KyAgICB1bndyYXBwZWRLZXkgPSByZXN1bHQ7CisKKyAgICBzaG91bGRCZSgidW53cmFwcGVkS2V5
LnRvU3RyaW5nKCkiLCAiJ1tvYmplY3QgS2V5XSciKTsKKyAgICBzaG91bGRCZSgidW53cmFwcGVk
S2V5LnR5cGUiLCAiJ3B1YmxpYyciKTsKKyAgICBzaG91bGRCZSgidW53cmFwcGVkS2V5LnVzYWdl
cyIsICJbJ3NpZ24nLCd2ZXJpZnknXSIpOworICAgIHNob3VsZEJlKCJ1bndyYXBwZWRLZXkuYWxn
b3JpdGhtLm5hbWUiLCAiJ3JzYXNzYS1wa2NzMS12MV81JyIpOworICAgIHNob3VsZEJlKCJ1bndy
YXBwZWRLZXkuYWxnb3JpdGhtLm1vZHVsdXNMZW5ndGgiLCAiMjA0OCIpOworICAgIHNob3VsZEJl
KCJCYXNlNjRVUkwuc3RyaW5naWZ5KHVud3JhcHBlZEtleS5hbGdvcml0aG0ucHVibGljRXhwb25l
bnQpIiwgInB1YmxpY0tleUpTT04uZSIpOworICAgIHNob3VsZEJlKCJ1bndyYXBwZWRLZXkuYWxn
b3JpdGhtLmhhc2gubmFtZSIsICInc2hhLTI1NiciKTsKKyAgICBzaG91bGRCZSgidW53cmFwcGVk
S2V5LmV4dHJhY3RhYmxlIiwgImZhbHNlIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKwor
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91
dFRlc3RzL2NyeXB0by9zdWJ0bGUvYWVzLWNiYy11bndyYXAtcnNhLmh0bWwKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpB
ZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCit0ZXh0L2h0bWwKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQo=
</data>
<flag name="review"
          id="240747"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>