<?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>54457</bug_id>
          
          <creation_ts>2011-02-15 06:52:48 -0800</creation_ts>
          <short_desc>IndexedDB: Inject auto increment keys via key path on insertion</short_desc>
          <delta_ts>2011-02-16 10:13: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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hans Wennborg">hans</reporter>
          <assigned_to name="Hans Wennborg">hans</assigned_to>
          <cc>andreip</cc>
    
    <cc>dgrogan</cc>
    
    <cc>jorlow</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>351229</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-02-15 06:52:48 -0800</bug_when>
    <thetext>IndexedDB: Inject auto increment keys via key path on insertion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351233</commentid>
    <comment_count>1</comment_count>
      <attachid>82448</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-02-15 06:57:55 -0800</bug_when>
    <thetext>Created attachment 82448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351234</commentid>
    <comment_count>2</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-02-15 06:58:50 -0800</bug_when>
    <thetext>Please review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351398</commentid>
    <comment_count>3</comment_count>
      <attachid>82448</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-15 10:40:27 -0800</bug_when>
    <thetext>Comment on attachment 82448
Patch

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

&gt; Source/WebCore/bindings/v8/IDBBindingUtilities.cpp:40
&gt; +v8::Handle&lt;v8::Value&gt; toV8(IDBKey*);

Instead, include V8IDBKey.h

&gt; Source/WebCore/bindings/v8/IDBBindingUtilities.cpp:56
&gt; +namespace {

do you need this?  shouldn&apos;t using static and/or template be enough?

&gt; Source/WebCore/bindings/v8/IDBBindingUtilities.cpp:69
&gt; +bool setValue(T indexOrName, v8::Handle&lt;v8::Value&gt;&amp; v8Object, v8::Handle&lt;v8::Value&gt;&amp; v8Value)

seems like the object should come first

&gt; Source/WebCore/bindings/v8/IDBBindingUtilities.cpp:74
&gt; +        return false; // Never overwrite.

More to the point, we simply shouldn&apos;t have been called if something was there...right?

&gt; Source/WebCore/bindings/v8/IDBBindingUtilities.cpp:98
&gt; +v8::Handle&lt;v8::Value&gt; getNthValueOnKeyPath(v8::Handle&lt;v8::Value&gt;&amp; v8Value, const Vector&lt;IDBKeyPathElement&gt;&amp; keyPath, size_t n)

variable names aren&apos;t great.  Maybe rootValue, keyPathElements, and something else for n

&gt; Source/WebCore/bindings/v8/IDBBindingUtilities.cpp:123
&gt; +PassRefPtr&lt;IDBKey&gt; createIDBKeyFromSerializedValueAndKeyPath(PassRefPtr&lt;SerializedScriptValue&gt; value, const Vector&lt;IDBKeyPathElement&gt;&amp; keyPath)

Could you take a bit of time to see if it&apos;s possible to make the code in this file a bit more clear?  I don&apos;t have any specific ideas and it&apos;s likely you can&apos;t do much better, but this is a pretty intense chunk of code.

&gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:205
&gt; +PassRefPtr&lt;IDBKey&gt; IDBObjectStoreBackendImpl::selectKeyForPut(IDBObjectStoreBackendImpl* objectStore, RefPtr&lt;SerializedScriptValue&gt;&amp; value, IDBKey* key, PutMode putMode, IDBCallbacks* callbacks)

in/out params should be last

&gt; Source/WebKit/chromium/public/WebKitClient.h:39
&gt; +#include &quot;WebSerializedScriptValue.h&quot;

remove the forward declare below

&gt; Source/WebKit/chromium/src/PlatformBridge.cpp:552
&gt; +    return webKitClient()-&gt;injectIDBKeyIntoSerializedValue(WebIDBKey(key), WebSerializedScriptValue(value), WebString(keyPath));

none of these casts should be necessary, i thought</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352005</commentid>
    <comment_count>4</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-02-16 05:46:36 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Source/WebCore/bindings/v8/IDBBindingUtilities.cpp:40
&gt; &gt; +v8::Handle&lt;v8::Value&gt; toV8(IDBKey*);
&gt; 
&gt; Instead, include V8IDBKey.h
Done.

&gt; &gt; Source/WebCore/bindings/v8/IDBBindingUtilities.cpp:56
&gt; &gt; +namespace {
&gt; 
&gt; do you need this?  shouldn&apos;t using static and/or template be enough?
But I&apos;d like to give LocalContext internal linkage too, and I can&apos;t do that with static. Not that it matters much.

&gt; &gt; Source/WebCore/bindings/v8/IDBBindingUtilities.cpp:69
&gt; &gt; +bool setValue(T indexOrName, v8::Handle&lt;v8::Value&gt;&amp; v8Object, v8::Handle&lt;v8::Value&gt;&amp; v8Value)
&gt; 
&gt; seems like the object should come first
Done.

&gt; &gt; Source/WebCore/bindings/v8/IDBBindingUtilities.cpp:74
&gt; &gt; +        return false; // Never overwrite.
&gt; 
&gt; More to the point, we simply shouldn&apos;t have been called if something was there...right?
Right. Asserting not reached instead.

&gt; &gt; Source/WebCore/bindings/v8/IDBBindingUtilities.cpp:98
&gt; &gt; +v8::Handle&lt;v8::Value&gt; getNthValueOnKeyPath(v8::Handle&lt;v8::Value&gt;&amp; v8Value, const Vector&lt;IDBKeyPathElement&gt;&amp; keyPath, size_t n)
&gt; 
&gt; variable names aren&apos;t great.  Maybe rootValue, keyPathElements, and something else for n
Done.

&gt; &gt; Source/WebCore/bindings/v8/IDBBindingUtilities.cpp:123
&gt; &gt; +PassRefPtr&lt;IDBKey&gt; createIDBKeyFromSerializedValueAndKeyPath(PassRefPtr&lt;SerializedScriptValue&gt; value, const Vector&lt;IDBKeyPathElement&gt;&amp; keyPath)
&gt; 
&gt; Could you take a bit of time to see if it&apos;s possible to make the code in this file a bit more clear?  I don&apos;t have any specific ideas and it&apos;s likely you can&apos;t do much better, but this is a pretty intense chunk of code.
Done. Not sure if I made it better or worse :) Extracted some code into separate functions.

&gt; &gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:205
&gt; &gt; +PassRefPtr&lt;IDBKey&gt; IDBObjectStoreBackendImpl::selectKeyForPut(IDBObjectStoreBackendImpl* objectStore, RefPtr&lt;SerializedScriptValue&gt;&amp; value, IDBKey* key, PutMode putMode, IDBCallbacks* callbacks)
&gt; 
&gt; in/out params should be last
Done.

&gt; &gt; Source/WebKit/chromium/public/WebKitClient.h:39
&gt; &gt; +#include &quot;WebSerializedScriptValue.h&quot;
&gt; 
&gt; remove the forward declare below
Done.

&gt; &gt; Source/WebKit/chromium/src/PlatformBridge.cpp:552
&gt; &gt; +    return webKitClient()-&gt;injectIDBKeyIntoSerializedValue(WebIDBKey(key), WebSerializedScriptValue(value), WebString(keyPath));
&gt; 
&gt; none of these casts should be necessary, i thought
Ah, you&apos;re right. Removing same cast from the function above, that&apos;s where I copied the pattern :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352006</commentid>
    <comment_count>5</comment_count>
      <attachid>82620</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-02-16 05:47:03 -0800</bug_when>
    <thetext>Created attachment 82620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352133</commentid>
    <comment_count>6</comment_count>
      <attachid>82620</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-16 09:26:27 -0800</bug_when>
    <thetext>Comment on attachment 82620
Patch

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

r=me

&gt; Source/WebCore/bindings/v8/IDBBindingUtilities.cpp:71
&gt; +    if (object-&gt;Has(indexOrName))

Simply assert?

&gt; Source/WebCore/bindings/v8/IDBBindingUtilities.cpp:89
&gt; +bool set(v8::Handle&lt;v8::Value&gt;&amp; object, const IDBKeyPathElement&amp; keyPathElement, const v8::Handle&lt;v8::Value&gt;&amp; v8Value)

make the param names and ordering consistent between these two?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352162</commentid>
    <comment_count>7</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-02-16 10:13:27 -0800</bug_when>
    <thetext>Committed r78721: &lt;http://trac.webkit.org/changeset/78721&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82448</attachid>
            <date>2011-02-15 06:57:55 -0800</date>
            <delta_ts>2011-02-16 05:46:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54457-20110215145752.patch</filename>
            <type>text/plain</type>
            <size>30237</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2OGEzMTNmNzJlMGUyNjcxNTNkNjZjMmE3NmNiMzZkZWNiMzlmNTU3Li41NzA0YjVm
YzNmYzljMWE2Y2M0ZWIxOThiN2Q1MjM2M2M4MWM4ZjcxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTEtMDItMTUgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmRleGVkREI6IEluamVj
dCBhdXRvIGluY3JlbWVudCBrZXlzIHZpYSBrZXkgcGF0aCBvbiBpbnNlcnRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NDU3CisKKyAgICAgICAg
UHJlcGFyZSB0byB0ZXN0IGluamVjdGlvbiBvZiBhdXRvIGluY3JlbWVudCBrZXkuIEtlZXAgaXQg
Y29tbWVudGVkIG91dAorICAgICAgICB1bnRpbCBpbXBsZW1lbnRlZCBDaHJvbWl1bS1zaWRlLgor
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYXV0
b2luY3JlbWVudC5odG1sOgorCiAyMDExLTAyLTExICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5hdGUgQ2hhcGluLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVu
dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9y
ZS1hdXRvaW5jcmVtZW50LWV4cGVjdGVkLnR4dAppbmRleCA2NzQwOWE3Y2YyMzEzMGZmNDc2MzMx
NWRkMGYwNDdjNWIxZDYwYTY5Li4wNDIzMzViMmM4OTkyYjYyOWNhYzU2Yzg0YjFmMDgwOGQxZTgz
NzVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9y
ZS1hdXRvaW5jcmVtZW50LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9vYmplY3RzdG9yZS1hdXRvaW5jcmVtZW50LWV4cGVjdGVkLnR4dApAQCAtMjksMTUg
KzI5LDEwIEBAIEluc2VydCBpbnRvIG9iamVjdCBzdG9yZSB3aXRoIGF1dG8gaW5jcmVtZW50IGFu
ZCBrZXkgcGF0aCwgd2l0aCBrZXkgaW4gdGhlIG9iamVjCiBzdG9yZS5hZGQoe25hbWU6ICdKZWZm
ZXJzc29uJywgbnVtYmVyOiAnNzAxMCcsIGlkOiAzfSkKIGFkZEplZmZlcnNzb25TdWNjZXNzKCk6
CiBQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQgaXMgMwotSW5zZXJ0IGludG8gb2JqZWN0IHN0b3Jl
IHdpdGggYXV0byBpbmNyZW1lbnQgYW5kIGtleSBwYXRoLCB3aXRob3V0IGtleSBpbiB0aGUgb2Jq
ZWN0Lgotc3RvcmUuYWRkKHtuYW1lOiAnTGluY29sbicsIG51bWJlcjogJzcwMTInfSkKLWFkZExp
bmNvbG5FcnJvcigpOgotUEFTUyBldmVudC50YXJnZXQuZXJyb3JDb2RlIGlzIHdlYmtpdElEQkRh
dGFiYXNlRXhjZXB0aW9uLlVOS05PV05fRVJSCi1ldmVudC5wcmV2ZW50RGVmYXVsdCgpCiBzdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdTdG9yZVdpdGhBdXRvSW5jcmVtZW50JykKIEluc2VydCBp
bnRvIG9iamVjdCBzdG9yZSB3aXRoIGtleSBnZW4gdXNpbmcgZXhwbGljaXQga2V5CiBzdG9yZS5h
ZGQoe25hbWU6ICdMaW5jb2xuJywgbnVtYmVyOiAnNzAxMid9LCA1KQotYWRkTGluY29sblN1Y2Nl
c3MoKToKK2FkZExpbmNvbG5XaXRoRXhwbGljaXRLZXlTdWNjZXNzKCk6CiBQQVNTIGV2ZW50LnRh
cmdldC5yZXN1bHQgaXMgNQogc3RvcmUuZ2V0KDUpCiBnZXRMaW5jb2xuU3VjY2VzcygpOgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYXV0b2lu
Y3JlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUt
YXV0b2luY3JlbWVudC5odG1sCmluZGV4IDAzM2Q2ZDUxMmJhMjQ1OGFlZDAyMzY5MzlhYzk0NTY0
ZWZmYzM3NTMuLjEzYjNmMTA4MTU1YmI2MzE2YzljNThkMGVjMzkxMmIzNDg4NzA1ZWYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWF1dG9pbmNy
ZW1lbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9y
ZS1hdXRvaW5jcmVtZW50Lmh0bWwKQEAgLTc4LDI5ICs3OCw0NSBAQCBmdW5jdGlvbiBhZGRKZWZm
ZXJzc29uU3VjY2VzcygpCiAgICAgZGVidWcoImFkZEplZmZlcnNzb25TdWNjZXNzKCk6Iik7CiAg
ICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiMyIpOwogCi0gICAgZGVidWcoIklu
c2VydCBpbnRvIG9iamVjdCBzdG9yZSB3aXRoIGF1dG8gaW5jcmVtZW50IGFuZCBrZXkgcGF0aCwg
d2l0aG91dCBrZXkgaW4gdGhlIG9iamVjdC4iKTsKLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygi
c3RvcmUuYWRkKHtuYW1lOiAnTGluY29sbicsIG51bWJlcjogJzcwMTInfSkiKTsKLSAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgcmVxdWVzdC5v
bmVycm9yID0gYWRkTGluY29sbkVycm9yOworICAgIC8vRklYTUU6IFVuLWNvbW1lbnQgdGhpcyBj
b2RlIHdoZW4gZnVuY3Rpb25hbGl0eSBpcyBpbXBsZW1lbnRlZCBDaHJvbWl1bS1zaWRlLgorICAg
IC8vZGVidWcoIkluc2VydCBpbnRvIG9iamVjdCBzdG9yZSB3aXRoIGF1dG8gaW5jcmVtZW50IGFu
ZCBrZXkgcGF0aCwgd2l0aG91dCBrZXkgaW4gdGhlIG9iamVjdC4iKTsKKyAgICAvL3JlcXVlc3Qg
PSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe25hbWU6ICdMaW5jb2xuJywgbnVtYmVyOiAnNzAxMid9
KSIpOworICAgIC8vcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRMaW5jb2xuV2l0aEluamVjdEtleVN1
Y2Nlc3M7CisgICAgLy9yZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICB3aW5kb3cuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3Jl
KCdTdG9yZVdpdGhBdXRvSW5jcmVtZW50JykiKTsKKyAgICBkZWJ1ZygiSW5zZXJ0IGludG8gb2Jq
ZWN0IHN0b3JlIHdpdGgga2V5IGdlbiB1c2luZyBleHBsaWNpdCBrZXkiKTsKKyAgICByZXF1ZXN0
ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHtuYW1lOiAnTGluY29sbicsIG51bWJlcjogJzcwMTIn
fSwgNSkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZExpbmNvbG5XaXRoRXhwbGljaXRL
ZXlTdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OwogfQogCi1mdW5jdGlvbiBhZGRMaW5jb2xuRXJyb3IoKQorZnVuY3Rpb24gYWRkTGluY29sbldp
dGhJbmplY3RLZXlTdWNjZXNzKCkKIHsKLSAgICBkZWJ1ZygiYWRkTGluY29sbkVycm9yKCk6Iik7
Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGltcGxlbWVudGVkLCBidXQgd2UgbWFrZSBp
dCBhbiBlcnJvciBmb3Igbm93LgotICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQuZXJyb3JDb2Rl
IiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLlVOS05PV05fRVJSIik7CisgICAgZGVidWco
ImFkZExpbmNvbG5XaXRoSW5qZWN0S2V5U3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlKCJldmVu
dC50YXJnZXQucmVzdWx0IiwgIjQiKTsKIAotICAgIGV2YWxBbmRMb2coImV2ZW50LnByZXZlbnRE
ZWZhdWx0KCkiKTsKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJzdG9yZS5nZXQoNCkiKTsKKyAg
ICByZXN1bHQub25zdWNjZXNzID0gZ2V0TGluY29sbkFmdGVySW5qZWN0ZWRLZXlTdWNjZXNzOwor
ICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0
aW9uIGdldExpbmNvbG5BZnRlckluamVjdGVkS2V5U3VjY2VzcygpCit7CisgICAgZGVidWcoImdl
dExpbmNvbG5BZnRlckluamVjdGVkS2V5U3VjY2VzcygpOiIpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZXZlbnQudGFyZ2V0LnJlc3VsdC5uYW1lIiwgIkxpbmNvbG4iKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQubnVtYmVyIiwgIjcwMTIiKTsK
KyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdC5pZCIsICI0Iik7CiAKICAgICB3aW5k
b3cuc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdTdG9yZVdp
dGhBdXRvSW5jcmVtZW50JykiKTsKICAgICBkZWJ1ZygiSW5zZXJ0IGludG8gb2JqZWN0IHN0b3Jl
IHdpdGgga2V5IGdlbiB1c2luZyBleHBsaWNpdCBrZXkiKTsKICAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygic3RvcmUuYWRkKHtuYW1lOiAnTGluY29sbicsIG51bWJlcjogJzcwMTInfSwgNSkiKTsK
LSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZExpbmNvbG5TdWNjZXNzOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gYWRkTGluY29sbldpdGhFeHBsaWNpdEtleVN1Y2Nlc3M7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CiB9CiAKLWZ1bmN0aW9uIGFkZExp
bmNvbG5TdWNjZXNzKCkKK2Z1bmN0aW9uIGFkZExpbmNvbG5XaXRoRXhwbGljaXRLZXlTdWNjZXNz
KCkKIHsKLSAgICBkZWJ1ZygiYWRkTGluY29sblN1Y2Nlc3MoKToiKTsKKyAgICBkZWJ1ZygiYWRk
TGluY29sbldpdGhFeHBsaWNpdEtleVN1Y2Nlc3MoKToiKTsKICAgICBzaG91bGRCZSgiZXZlbnQu
dGFyZ2V0LnJlc3VsdCIsICI1Iik7CiAKICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUu
Z2V0KDUpIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2E1ZjRiNjI3MjcwMWNiOGQ4YWVmNTZiMDVmYTRiY2E5
MWI2MmJmNC4uMGY5MWQ2ZjU4NDMxNDFiYTYzYTBmNDBhNTEzNDc5NjFkOWE2NmVhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDExLTAyLTE1ICBIYW5zIFdlbm5ib3JnICA8aGFuc0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW5kZXhlZERCOiBJbmplY3QgYXV0byBpbmNyZW1lbnQga2V5cyB2aWEga2V5IHBhdGgg
b24gaW5zZXJ0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NDQ1NworCisgICAgICAgIEluamVjdCBhdXRvIGluY3JlbWVudCBrZXlzIHZpYSBrZXkg
cGF0aCBmb3Igb2JqZWN0IHN0b3JlcyB1c2luZyBrZXkKKyAgICAgICAgcGF0aCBhbmQgYXV0byBp
bmNyZW1lbnQuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsQ29udGV4dDo6Z2V0TnRoVmFsdWVPbktleVBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtl
eVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtQnJpZGdlLmg6CisgICAgICAgICogc3RvcmFn
ZS9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoSURCS2V5UGF0aEJhY2tlbmRJ
bXBsOjppbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKToKKyAgICAgICAgKiBzdG9yYWdl
L0lEQktleVBhdGhCYWNrZW5kSW1wbC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbmplY3RLZXlJbnRvS2V5UGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZWxlY3RL
ZXlGb3JQdXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
cHV0SW50ZXJuYWwpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bC5oOgorICAgICAgICAqIHN0b3JhZ2UvY2hyb21pdW0vSURCS2V5UGF0aEJhY2tlbmRJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQktleVBhdGhCYWNrZW5kSW1wbDo6aW5qZWN0SURCS2V5
SW50b1NlcmlhbGl6ZWRWYWx1ZSk6CisKIDIwMTEtMDEtMjYgIE1PUklUQSBIYWppbWUgIDxtb3Jy
aXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApp
bmRleCAyZThkNGZlYTI5NzFlNjc5YzBmZTNhNmNlZWU5YmFkNDkyY2M1ZjExLi4yZWZhM2VhMGUy
YzY2ODEyODUyNjFlNjIzZmVhOGIzYTQwYjE4ZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtMzcsNiArMzcsOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KElEQktl
eSopOworCiBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVZhbHVlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPklzTnVsbCgpKQpAQCAtNTEs
NiArNTMsOCBAQCBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVZhbHVlKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKICAgICByZXR1cm4gMDsgLy8gU2lnbmFscyB0eXBlIGVy
cm9yLgogfQogCituYW1lc3BhY2UgeworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogYm9vbCBnZXRW
YWx1ZUZyb20oVCBpbmRleE9yTmFtZSwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+JiB2OFZhbHVlKQog
ewpAQCAtNjEsNiArNjUsMTcgQEAgYm9vbCBnZXRWYWx1ZUZyb20oVCBpbmRleE9yTmFtZSwgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+JiB2OFZhbHVlKQogICAgIHJldHVybiB0cnVlOwogfQogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorYm9vbCBzZXRWYWx1ZShUIGluZGV4T3JOYW1lLCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4mIHY4T2JqZWN0LCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIHY4VmFsdWUpCit7
CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4T2JqZWN0LT5Ub09iamVjdCgp
OworCisgICAgaWYgKG9iamVjdC0+SGFzKGluZGV4T3JOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOyAvLyBOZXZlciBvdmVyd3JpdGUuCisKKyAgICByZXR1cm4gb2JqZWN0LT5TZXQoaW5kZXhP
ck5hbWUsIHY4VmFsdWUpOworfQorCiBjbGFzcyBMb2NhbENvbnRleHQgewogcHVibGljOgogICAg
IExvY2FsQ29udGV4dCgpCkBAIC04MCwyNSArOTUsNzEgQEAgcHJpdmF0ZToKICAgICB2ODo6UGVy
c2lzdGVudDx2ODo6Q29udGV4dD4gbV9jb250ZXh0OwogfTsKIAotUGFzc1JlZlB0cjxJREJLZXk+
IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgVmVjdG9yPElEQktleVBhdGhFbGVtZW50
PiYga2V5UGF0aCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXROdGhWYWx1ZU9uS2V5UGF0aCh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIHY4VmFsdWUsIGNvbnN0IFZlY3RvcjxJREJLZXlQYXRoRWxl
bWVudD4mIGtleVBhdGgsIHNpemVfdCBuKQogewotICAgIExvY2FsQ29udGV4dCBsb2NhbENvbnRl
eHQ7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4VmFsdWUodmFsdWUtPmRlc2VyaWFsaXpl
KCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5UGF0aC5zaXplKCk7ICsraSkgewor
ICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXJyZW50VmFsdWUodjhWYWx1ZSk7CisKKyAgICBB
U1NFUlQobiA8PSBrZXlQYXRoLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
OyArK2kpIHsKICAgICAgICAgc3dpdGNoIChrZXlQYXRoW2ldLnR5cGUpIHsKICAgICAgICAgY2Fz
ZSBJREJLZXlQYXRoRWxlbWVudDo6SXNJbmRleGVkOgotICAgICAgICAgICAgaWYgKCF2OFZhbHVl
LT5Jc0FycmF5KCkgfHwgIWdldFZhbHVlRnJvbShrZXlQYXRoW2ldLmluZGV4LCB2OFZhbHVlKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmICghY3VycmVudFZhbHVl
LT5Jc0FycmF5KCkgfHwgIWdldFZhbHVlRnJvbShrZXlQYXRoW2ldLmluZGV4LCBjdXJyZW50VmFs
dWUpKQorICAgICAgICAgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIElEQktleVBhdGhFbGVtZW50OjpJc05hbWVk
OgotICAgICAgICAgICAgaWYgKCF2OFZhbHVlLT5Jc09iamVjdCgpIHx8ICFnZXRWYWx1ZUZyb20o
djhTdHJpbmcoa2V5UGF0aFtpXS5pZGVudGlmaWVyKSwgdjhWYWx1ZSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgICAgICBpZiAoIWN1cnJlbnRWYWx1ZS0+SXNPYmplY3QoKSB8
fCAhZ2V0VmFsdWVGcm9tKHY4U3RyaW5nKGtleVBhdGhbaV0uaWRlbnRpZmllciksIGN1cnJlbnRW
YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gY3JlYXRlSURCS2V5
RnJvbVZhbHVlKHY4VmFsdWUpOworCisgICAgcmV0dXJuIGN1cnJlbnRWYWx1ZTsKK30KKworfQor
CitQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtl
eVBhdGgoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBWZWN0
b3I8SURCS2V5UGF0aEVsZW1lbnQ+JiBrZXlQYXRoKQoreworICAgIExvY2FsQ29udGV4dCBsb2Nh
bENvbnRleHQ7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4VmFsdWUodmFsdWUtPmRlc2Vy
aWFsaXplKCkpOworCisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4S2V5KGdldE50aFZhbHVl
T25LZXlQYXRoKHY4VmFsdWUsIGtleVBhdGgsIGtleVBhdGguc2l6ZSgpKSk7CisgICAgaWYgKHY4
S2V5LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gY3JlYXRlSURC
S2V5RnJvbVZhbHVlKHY4S2V5KTsKK30KKworUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+IGtl
eSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBWZWN0b3I8
SURCS2V5UGF0aEVsZW1lbnQ+JiBrZXlQYXRoKQoreworICAgIExvY2FsQ29udGV4dCBsb2NhbENv
bnRleHQ7CisKKyAgICBpZiAoIWtleVBhdGguc2l6ZSgpKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFZhbHVlKHZhbHVlLT5kZXNlcmlhbGl6ZSgpKTsK
KyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGFyZW50KGdldE50aFZhbHVlT25LZXlQYXRoKHY4
VmFsdWUsIGtleVBhdGgsIGtleVBhdGguc2l6ZSgpIC0gMSkpOworICAgIGlmIChwYXJlbnQuSXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
OEtleSh0b1Y4KGtleS5nZXQoKSkpOworICAgIHN3aXRjaCAoa2V5UGF0aFtrZXlQYXRoLnNpemUo
KS0xXS50eXBlKSB7CisgICAgY2FzZSBJREJLZXlQYXRoRWxlbWVudDo6SXNJbmRleGVkOgorICAg
ICAgICBpZiAoIXBhcmVudC0+SXNBcnJheSgpIHx8ICFzZXRWYWx1ZShrZXlQYXRoW2tleVBhdGgu
c2l6ZSgpLTFdLmluZGV4LCBwYXJlbnQsIHY4S2V5KSkKKyAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIElEQktleVBhdGhFbGVtZW50OjpJc05hbWVkOgorICAg
ICAgICBpZiAoIXBhcmVudC0+SXNPYmplY3QoKSB8fCAhc2V0VmFsdWUodjhTdHJpbmcoa2V5UGF0
aFtrZXlQYXRoLnNpemUoKS0xXS5pZGVudGlmaWVyKSwgcGFyZW50LCB2OEtleSkpCisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVy
biBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSh2OFZhbHVlKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURC
QmluZGluZ1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGlu
Z1V0aWxpdGllcy5oCmluZGV4IDFhNzk0YjA4ZTFiY2UwZWI0OWQzZmZiYzY4NDMxNTkyN2YyNmNl
OTYuLjFmYjg1NWMxZThkYWMwOWI5OTE2MzM4Yjk3NjJhZTJiZTBlYWMzYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmgKQEAgLTM5LDYg
KzM5LDcgQEAgc3RydWN0IElEQktleVBhdGhFbGVtZW50OwogCiBQYXNzUmVmUHRyPElEQktleT4g
Y3JlYXRlSURCS2V5RnJvbVZhbHVlKHY4OjpIYW5kbGU8djg6OlZhbHVlPik7CiBQYXNzUmVmUHRy
PElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCAgY29uc3QgVmVjdG9yPElEQktleVBh
dGhFbGVtZW50LCAwPiYga2V5UGF0aCk7CitQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4sIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgVmVjdG9yPElEQktleVBhdGhF
bGVtZW50LCAwPiYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BsYXRmb3JtQnJpZGdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybUJyaWRnZS5oCmluZGV4IDQyYWYxNTU4YzQ4NTRmYTYwOWYyODY3MGYzYjkx
MzNhNzhlMTAzNWQuLmJiYTVhOWIwMDZjNTAzYTI1NjAzZmI1ZWJhNjliNDc0NmUyN2RiNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtQnJpZGdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1CcmlkZ2Uu
aApAQCAtMTczLDYgKzE3Myw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJG
YWN0b3J5QmFja2VuZEludGVyZmFjZT4gaWRiRmFjdG9yeSgpOwogICAgIC8vIEV4dHJhY3RzIGtl
eVBhdGggZnJvbSB2YWx1ZXMgYW5kIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcga2V5cy4KICAg
ICBzdGF0aWMgdm9pZCBjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRo
KGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JiB2YWx1ZXMsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCwgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIGtleXMpOworICAg
IC8vIEluamVjdHMga2V5IHZpYSBrZXlQYXRoIGludG8gdmFsdWUuIFJldHVybnMgdHJ1ZSBvbiBz
dWNjZXNzLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5q
ZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKTsKIAogICAg
IC8vIEphdmFTY3JpcHQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAgICAgc3RhdGljIHZvaWQgbm90aWZ5SlNPdXRPZk1lbW9yeShGcmFt
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJLZXlQYXRoQmFja2Vu
ZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJLZXlQYXRoQmFja2VuZEltcGwu
Y3BwCmluZGV4IGI3YzQ1YzM4ZDllNmVkNDZlNDI2ZDM3ZmMwMDA2MGRhYmIyYTM1MDcuLjRmMGZj
ZWU2NDdkNzIwZWE4OWU0M2UzYTVmMWZlMWVhYjFhYzE2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHAKQEAgLTM3LDQgKzM3LDEwIEBA
IHZvaWQgSURCS2V5UGF0aEJhY2tlbmRJbXBsOjpjcmVhdGVJREJLZXlzRnJvbVNlcmlhbGl6ZWRW
YWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIG1l
dGhvZCBvbmNlIEpTQyBzdXBwb3J0cyBXaXJlRm9ybWF0IGZvciBTZXJpYWxpemVkU2NyaXB0VmFs
dWUuCiB9CiAKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJREJLZXlQYXRoQmFj
a2VuZEltcGw6OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJL
ZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIG1ldGhvZCBv
bmNlIEpTQyBzdXBwb3J0cyBXaXJlRm9ybWF0IGZvciBTZXJpYWxpemVkU2NyaXB0VmFsdWUuCisg
ICAgcmV0dXJuIDA7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQktleVBhdGhCYWNrZW5kSW1wbC5oCmluZGV4IDMy
YWY1ZTM3YWI5NTgzYTNmOWUwNTcxM2Q2OTU1MTQ4OGM4YTcxYTUuLjFjNzYyMzIyMTdmZjUwZTRm
MGQ5Nzk4ZjU3Y2Y0MjRjZGQzYzExZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJLZXlQYXRoQmFja2VuZEltcGwuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBTZXJpYWxpemVk
U2NyaXB0VmFsdWU7CiBjbGFzcyBJREJLZXlQYXRoQmFja2VuZEltcGwgewogcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIGNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgo
Y29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCAwPiYgdmFsdWVzLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIFZlY3RvcjxSZWZQdHI8SURCS2V5PiwgMD4mIGtleXMpOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0SURCS2V5
SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKTsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3Bw
CmluZGV4IDkyMWJiYWI4NzhjNjFjY2EwOTkwY2JmOGI4NzhiNDg0ODgzMzA4MzMuLmNhYTA3OGU0
NDAzZDYzZDY5NWMwNDE4MWJjODI3NmQ1MjVkOTNhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtMTM0LDYgKzEz
NCwxMSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGZldGNoS2V5RnJvbUtleVBhdGgoU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgY29ucwogICAgIHJldHVybiBrZXlzWzBdLnJlbGVh
c2UoKTsKIH0KIAorc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmpl
Y3RLZXlJbnRvS2V5UGF0aChQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK3sKKyAgICBy
ZXR1cm4gSURCS2V5UGF0aEJhY2tlbmRJbXBsOjppbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZh
bHVlKGtleSwgdmFsdWUsIGtleVBhdGgpOworfQorCiBzdGF0aWMgYm9vbCBwdXRPYmplY3RTdG9y
ZURhdGEoU1FMaXRlRGF0YWJhc2UmIGRiLCBJREJLZXkqIGtleSwgU2VyaWFsaXplZFNjcmlwdFZh
bHVlKiB2YWx1ZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90JiBkYXRhUm93SWQpCiB7
CiAgICAgU3RyaW5nIHNxbCA9IGRhdGFSb3dJZCAhPSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpJbnZhbGlkSWQgPyAiVVBEQVRFIE9iamVjdFN0b3JlRGF0YSBTRVQga2V5U3RyaW5nID0gPywg
a2V5RGF0ZSA9ID8sIGtleU51bWJlciA9ID8sIHZhbHVlID0gPyBXSEVSRSBpZCA9ID8iCkBAIC0x
OTcsNyArMjAyLDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXQoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlLAogICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7CiB9CiAKLVBhc3NSZWZQdHI8SURCS2V5
PiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZWxlY3RLZXlGb3JQdXQoSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUs
IElEQktleSoga2V5LCBQdXRNb2RlIHB1dE1vZGUsIElEQkNhbGxiYWNrcyogY2FsbGJhY2tzKQor
UGFzc1JlZlB0cjxJREJLZXk+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNlbGVjdEtleUZv
clB1dChJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBvYmplY3RTdG9yZSwgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4mIHZhbHVlLCBJREJLZXkqIGtleSwgUHV0TW9kZSBwdXRNb2RlLCBJ
REJDYWxsYmFja3MqIGNhbGxiYWNrcykKIHsKICAgICBpZiAocHV0TW9kZSA9PSBDdXJzb3JVcGRh
dGUpCiAgICAgICAgIEFTU0VSVChrZXkpOwpAQCAtMjIwLDE5ICsyMjUsMjQgQEAgUGFzc1JlZlB0
cjxJREJLZXk+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNlbGVjdEtleUZvclB1dChJREJP
YmplY3RTdG9yZUJhY2sKICAgICAgICAgaWYgKCFoYXNLZXlQYXRoKQogICAgICAgICAgICAgcmV0
dXJuIG9iamVjdFN0b3JlLT5nZW5BdXRvSW5jcmVtZW50S2V5KCk7CiAKLSAgICAgICAgUmVmUHRy
PElEQktleT4ga2V5UGF0aEtleSA9IGZldGNoS2V5RnJvbUtleVBhdGgodmFsdWUsIG9iamVjdFN0
b3JlLT5tX2tleVBhdGgpOworICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXlQYXRoS2V5ID0gZmV0
Y2hLZXlGcm9tS2V5UGF0aCh2YWx1ZS5nZXQoKSwgb2JqZWN0U3RvcmUtPm1fa2V5UGF0aCk7CiAg
ICAgICAgIGlmIChrZXlQYXRoS2V5KSB7CiAgICAgICAgICAgICBvYmplY3RTdG9yZS0+cmVzZXRB
dXRvSW5jcmVtZW50S2V5Q2FjaGUoKTsKICAgICAgICAgICAgIHJldHVybiBrZXlQYXRoS2V5Owog
ICAgICAgICB9CiAKLSAgICAgICAgLy8gRklYTUU6IEdlbmVyYXRlIGF1dG8gaW5jcmVtZW50IGtl
eSwgYW5kIGluamVjdCBpdCB0aHJvdWdoIHRoZSBrZXkgcGF0aC4KLSAgICAgICAgY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VU5LTk9XTl9FUlIsICJBZGRpbmcgZGF0YSB0byBvYmplY3Qgc3RvcmVzIHdpdGggYXV0byBpbmNy
ZW1lbnQgYW5kIGluLWxpbmUga2V5cyBub3QgeWV0IHN1cHBvcnRlZC4iKSk7Ci0gICAgICAgIHJl
dHVybiAwOworICAgICAgICBSZWZQdHI8SURCS2V5PiBhdXRvSW5jS2V5ID0gb2JqZWN0U3RvcmUt
PmdlbkF1dG9JbmNyZW1lbnRLZXkoKTsKKyAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gdmFsdWVBZnRlckluamVjdGlvbiA9IGluamVjdEtleUludG9LZXlQYXRoKGF1dG9JbmNL
ZXksIHZhbHVlLCBvYmplY3RTdG9yZS0+bV9rZXlQYXRoKTsKKyAgICAgICAgaWYgKCF2YWx1ZUFm
dGVySW5qZWN0aW9uKSB7CisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUiwgIlRoZSBnZW5l
cmF0ZWQga2V5IGNvdWxkIG5vdCBiZSBpbnNlcnRlZCBpbnRvIHRoZSBvYmplY3QgdXNpbmcgdGhl
IGtleVBhdGguIikpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAg
dmFsdWUgPSB2YWx1ZUFmdGVySW5qZWN0aW9uOworICAgICAgICByZXR1cm4gYXV0b0luY0tleS5y
ZWxlYXNlKCk7CiAgICAgfQogCiAgICAgaWYgKGhhc0tleVBhdGgpIHsKLSAgICAgICAgUmVmUHRy
PElEQktleT4ga2V5UGF0aEtleSA9IGZldGNoS2V5RnJvbUtleVBhdGgodmFsdWUsIG9iamVjdFN0
b3JlLT5tX2tleVBhdGgpOworICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXlQYXRoS2V5ID0gZmV0
Y2hLZXlGcm9tS2V5UGF0aCh2YWx1ZS5nZXQoKSwgb2JqZWN0U3RvcmUtPm1fa2V5UGF0aCk7CiAK
ICAgICAgICAgaWYgKCFrZXlQYXRoS2V5KSB7CiAgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJy
b3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VS
UiwgIlRoZSBrZXkgY291bGQgbm90IGJlIGZldGNoZWQgZnJvbSB0aGUga2V5UGF0aC4iKSk7CkBA
IC0yNTgsNyArMjY4LDcgQEAgUGFzc1JlZlB0cjxJREJLZXk+IElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OnNlbGVjdEtleUZvclB1dChJREJPYmplY3RTdG9yZUJhY2sKIHZvaWQgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IHBy
cEtleSwgUHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24p
CiB7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUgPSBwcnBWYWx1ZTsK
LSAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBzZWxlY3RLZXlGb3JQdXQob2JqZWN0U3RvcmUuZ2V0
KCksIHZhbHVlLmdldCgpLCBwcnBLZXkuZ2V0KCksIHB1dE1vZGUsIGNhbGxiYWNrcy5nZXQoKSk7
CisgICAgUmVmUHRyPElEQktleT4ga2V5ID0gc2VsZWN0S2V5Rm9yUHV0KG9iamVjdFN0b3JlLmdl
dCgpLCB2YWx1ZSwgcHJwS2V5LmdldCgpLCBwdXRNb2RlLCBjYWxsYmFja3MuZ2V0KCkpOwogICAg
IGlmICgha2V5KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKaW5kZXggYjU0ZjlmZGEwOWI5ZDYwMTI3
ZTBhM2Q2ODJiZTM0NjlhYjc0Zjg0ZS4uZDBiNDEwNWZiYjBjNTEwNDA2NWYzMWZlYWQ5NzVhZGIw
ODlmYjhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBTUUxpdGVEYXRh
YmFzZSYgc3FsaXRlRGF0YWJhc2UoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPElEQktleT4gZ2Vu
QXV0b0luY3JlbWVudEtleSgpOwogICAgIHZvaWQgcmVzZXRBdXRvSW5jcmVtZW50S2V5Q2FjaGUo
KSB7IG1fYXV0b0luY3JlbWVudE51bWJlciA9IC0xOyB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCS2V5PiBzZWxlY3RLZXlGb3JQdXQoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCosIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSosIElEQktleSosIFB1dE1vZGUsIElEQkNhbGxiYWNrcyopOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gc2VsZWN0S2V5Rm9yUHV0KElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwqLCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYsIElEQktleSosIFB1
dE1vZGUsIElEQkNhbGxiYWNrcyopOwogCiAgICAgc3RhdGljIHZvaWQgZ2V0SW50ZXJuYWwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bD4sIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAg
ICAgc3RhdGljIHZvaWQgcHV0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL2Nocm9taXVtL0lEQktleVBhdGhCYWNr
ZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL2Nocm9taXVtL0lEQktleVBhdGhC
YWNrZW5kSW1wbC5jcHAKaW5kZXggMzhiMjk4M2UxNzAyYTU4ZDcyNzMwYjViZThhOTg2MTdjY2Q1
MTFhZS4uZTZhMWFkNTBmNzc1NWE2YTEzOWU2OGUwOTIxMmQzMzlmMDZjYTQ4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9JREJLZXlQYXRoQmFja2VuZEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvY2hyb21pdW0vSURCS2V5UGF0aEJhY2tl
bmRJbXBsLmNwcApAQCAtMjgsNyArMjgsOSBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCiAKKyNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgor
I2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTM3LDYgKzM5LDExIEBAIHZvaWQgSURCS2V5UGF0aEJhY2tlbmRJbXBsOjpjcmVhdGVJ
REJLZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlCiAgICAgUGxhdGZv
cm1CcmlkZ2U6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgodmFs
dWVzLCBrZXlQYXRoLCBrZXlzKTsKIH0KIAorUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IElEQktleVBhdGhCYWNrZW5kSW1wbDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1
ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1C
cmlkZ2U6OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoa2V5LCB2YWx1ZSwga2V5UGF0
aCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDJlYmUyNTUwNDQzMmMwMjBiMmVjZGU3ZjkzYmRlZTcxMDAxMzdkZGIu
Ljk1ZGVhYzEzY2RjZTljZWM2NzNkNGUxZDJlMGVmNWE4OTUzYjYwOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDItMTUgIEhhbnMgV2VubmJvcmcg
IDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbmRleGVkREI6IEluamVjdCBhdXRvIGluY3JlbWVudCBrZXlzIHZpYSBr
ZXkgcGF0aCBvbiBpbnNlcnRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU0NDU3CisKKyAgICAgICAgU3VwcG9ydCBmb3IgaW5qZWN0aW5nIGtleXMg
aW50byBvYmplY3RzIHZpYSBrZXkgcGF0aC4KKworICAgICAgICAqIHB1YmxpYy9XZWJJREJLZXku
aDoKKyAgICAgICAgKiBwdWJsaWMvV2ViS2l0Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YktpdENsaWVudDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZSk6CisgICAgICAgICog
c3JjL1BsYXRmb3JtQnJpZGdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQnJpZGdl
OjppbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKToKKyAgICAgICAgKiBzcmMvV2ViSURC
S2V5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5OjppbmplY3RJREJLZXlJbnRvU2Vy
aWFsaXplZFZhbHVlKToKKyAgICAgICAgKiB0ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjppbmplY3RLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y2hl
Y2tJbmplY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tJbmplY3Rpb25GYWlscyk6Cisg
ICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMS0wMS0yNiAgTU9SSVRBIEhhamltZSAgPG1v
cnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXkuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQktleS5oCmluZGV4IDM3NmQxYzU4NmYx
ZTczNTU2OTMyYzdlYTAxZmQ1MGU1Zjg4YzVmZTUuLmNiYzQ1NzdhOGM4MTY5NTEyMjRkYzA5YTY2
YmZlMWE1M2U3MjNkMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYklEQktleS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQktl
eS5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJJ
REJLZXkgY3JlYXRlTnVtYmVyKGRvdWJsZSk7CiAgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViSURC
S2V5IGNyZWF0ZUludmFsaWQoKTsKICAgICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJJREJLZXkgY3Jl
YXRlRnJvbVZhbHVlQW5kS2V5UGF0aChjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBj
b25zdCBXZWJJREJLZXlQYXRoJik7CisgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlIGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoY29uc3QgV2ViSURC
S2V5JiwgY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgY29uc3QgV2ViSURCS2V5UGF0
aCYpOwogCiAgICAgV2ViSURCS2V5KGNvbnN0IFdlYklEQktleSYgZSkgeyBhc3NpZ24oZSk7IH0K
ICAgICBXZWJJREJLZXkmIG9wZXJhdG9yPShjb25zdCBXZWJJREJLZXkmIGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdENsaWVudC5oCmluZGV4IGQ4ZWFkMjM4ZWQzYmQx
ZTAzYjY1Mzc4OWE5ZWM4MDJhNzgzZTQ0OTAuLjE1NzY3NTM5NTM4MDA1NDVlOTQxZmRkOGVkY2Uy
NDBiMjU3MGE1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YktpdENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdENs
aWVudC5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVk
ZSAiV2ViRGF0YS5oIgogI2luY2x1ZGUgIldlYkxvY2FsaXplZFN0cmluZy5oIgorI2luY2x1ZGUg
IldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2lu
Y2x1ZGUgIldlYlZlY3Rvci5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgpAQCAtMTQ0LDYgKzE0NSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgV2ViSURCRmFjdG9yeSogaWRiRmFjdG9yeSgpIHsg
cmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVk
VmFsdWVzQW5kS2V5UGF0aChjb25zdCBXZWJWZWN0b3I8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
PiYgdmFsdWVzLCAgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBXZWJWZWN0b3I8V2ViSURCS2V5
PiYga2V5cykgeyB9CisgICAgdmlydHVhbCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUgaW5qZWN0
SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShjb25zdCBXZWJJREJLZXkmIGtleSwgY29uc3QgV2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoKSB7
IHJldHVybiBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUoKTsgfQogCiAKICAgICAvLyBLZXlnZW4g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtQnJp
ZGdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtQnJpZGdlLmNwcApp
bmRleCBhNmY4YmJlOGNiYTI2ODQxYmRmNTczMjg3NTk4NzA3ZWJjZTJlNzI3Li42ZDBjNWYwMjBi
NjVjOTBiNDIxN2I4NDE1MzIyNDEwNWE0YzUxMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9QbGF0Zm9ybUJyaWRnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvUGxhdGZvcm1CcmlkZ2UuY3BwCkBAIC01NDcsNiArNTQ3LDExIEBAIHZvaWQgUGxh
dGZvcm1CcmlkZ2U6OmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgo
Y29uc3QgVmVjdG9yPFJlCiAgICAgICAgIGtleXMuYXBwZW5kKFBhc3NSZWZQdHI8SURCS2V5Pih3
ZWJLZXlzW2ldKSk7CiB9CiAKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBQbGF0
Zm9ybUJyaWRnZTo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElE
QktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0
IFN0cmluZyYga2V5UGF0aCkKK3sKKyAgICByZXR1cm4gd2ViS2l0Q2xpZW50KCktPmluamVjdElE
QktleUludG9TZXJpYWxpemVkVmFsdWUoV2ViSURCS2V5KGtleSksIFdlYlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSh2YWx1ZSksIFdlYlN0cmluZyhrZXlQYXRoKSk7Cit9CisKIC8vIEtleWdlbiAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAogU3RyaW5nIFBsYXRmb3JtQnJpZGdlOjpzaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJLZXkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5LmNwcAppbmRl
eCA3ZTg0ZGYxN2IxYjYzMjYzZWQ1OWZlNTg4ZjBlNTFlOGNkOGI4YmRkLi5hMjAxNDZlYWQ0Njk3
OGE1NDAyYTc4OTdkMTM1ZGFhNDRhZWNjN2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQktleS5jcHAKQEAgLTgzLDYgKzgzLDExIEBAIFdlYklEQktleSBXZWJJREJLZXk6OmNy
ZWF0ZUZyb21WYWx1ZUFuZEtleVBhdGgoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBz
CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRL
ZXlQYXRoKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgaWRiS2V5UGF0aCk7CiB9CiAKK1dlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSBXZWJJREJLZXk6OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFs
dWUoY29uc3QgV2ViSURCS2V5JiBrZXksIGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYg
dmFsdWUsIGNvbnN0IFdlYklEQktleVBhdGgmIHBhdGgpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6
OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoa2V5LCB2YWx1ZSwgcGF0aCk7Cit9CisK
IHZvaWQgV2ViSURCS2V5Ojphc3NpZ24oY29uc3QgV2ViSURCS2V5JiB2YWx1ZSkKIHsKICAgICBt
X3ByaXZhdGUgPSB2YWx1ZS5tX3ByaXZhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCmluZGV4IDFiN2YxNTY5
MTk1M2UzNDU4YTFiOWI0OTEzOGMwODQwYjNjZjNlZTguLjVhMTc5OWZjODNlZTRkYTMxMjBjYmEx
M2RjZmZiZDNlN2U2YjBmM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCkBAIC03Myw2ICs3MywyOSBAQCB2
b2lkIGNoZWNrS2V5UGF0aE51bGxWYWx1ZShTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgpCiAgICAgQVNTRVJUX0ZBTFNFKGlkYktleS5nZXQoKSk7CiB9
CiAKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RLZXkoUGFzc1JlZlB0
cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgpCit7CisgICAgVmVjdG9yPElEQktleVBhdGhFbGVtZW50PiBp
ZGJLZXlQYXRoOworICAgIElEQktleVBhdGhQYXJzZUVycm9yIHBhcnNlRXJyb3I7CisgICAgSURC
UGFyc2VLZXlQYXRoKGtleVBhdGgsIGlkYktleVBhdGgsIHBhcnNlRXJyb3IpOworICAgIEVYUEVD
VF9FUShJREJLZXlQYXRoUGFyc2VFcnJvck5vbmUsIHBhcnNlRXJyb3IpOworICAgIHJldHVybiBp
bmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKGtleSwgdmFsdWUsIGlkYktleVBhdGgpOwor
fQorCit2b2lkIGNoZWNrSW5qZWN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
KQoreworICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKKyAgICBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBuZXdWYWx1ZSA9IGluamVjdEtleShrZXksIHZhbHVlLCBrZXlQYXRo
KTsKKyAgICBBU1NFUlRfVFJVRShuZXdWYWx1ZSk7CisgICAgUmVmUHRyPElEQktleT4gZXh0cmFj
dGVkS2V5ID0gY2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRoSW50ZXJuYWwobmV3VmFsdWUuZ2V0
KCksIGtleVBhdGgpOworICAgIEVYUEVDVF9UUlVFKGtleS0+aXNFcXVhbChleHRyYWN0ZWRLZXku
Z2V0KCkpKTsKK30KKwordm9pZCBjaGVja0luamVjdGlvbkZhaWxzKFBhc3NSZWZQdHI8SURCS2V5
PiBrZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoKQoreworICAgIEVYUEVDVF9GQUxTRShpbmplY3RLZXkoa2V5LCB2YWx1ZSwg
a2V5UGF0aCkpOworfQorCiB2b2lkIGNoZWNrS2V5UGF0aFN0cmluZ1ZhbHVlKFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgY29uc3QgU3RyaW5nJiBl
eHBlY3RlZCkKIHsKICAgICBSZWZQdHI8SURCS2V5PiBpZGJLZXkgPSBjaGVja0tleUZyb21WYWx1
ZUFuZEtleVBhdGhJbnRlcm5hbCh2YWx1ZSwga2V5UGF0aCk7CkBAIC0xNjAsNiArMTgzLDcxIEBA
IFRFU1QoSURCS2V5RnJvbVZhbHVlQW5kS2V5UGF0aFRlc3QsIEFycmF5MkQpCiAgICAgY2hlY2tL
ZXlQYXRoTnVsbFZhbHVlKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5nZXQoKSwgIls0XSIpOwogfQog
CitURVNUKEluamVjdElEQktleVRlc3QsIFRvcExldmVsUHJvcGVydHlTdHJpbmdWYWx1ZSkKK3sK
KyAgICBMb2NhbENvbnRleHQgdjhjb250ZXh0OworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBv
YmplY3QgPSB2ODo6T2JqZWN0OjpOZXcoKTsKKyAgICBvYmplY3QtPlNldCh2ODo6U3RyaW5nOjpO
ZXcoImZvbyIpLCB2ODo6U3RyaW5nOjpOZXcoInpvbyIpKTsKKworICAgIGNoZWNrSW5qZWN0aW9u
KElEQktleTo6Y3JlYXRlU3RyaW5nKCJteU5ld0tleSIpLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZShvYmplY3QpLCAiYmFyIik7CisgICAgY2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVh
dGVOdW1iZXIoMTIzNCksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG9iamVjdCksICJi
YXIiKTsKKworICAgIGNoZWNrSW5qZWN0aW9uRmFpbHMoSURCS2V5OjpjcmVhdGVTdHJpbmcoImtl
eSIpLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShvYmplY3QpLCAiZm9vLmJhciIpOwor
ICAgIGNoZWNrSW5qZWN0aW9uRmFpbHMoSURCS2V5OjpjcmVhdGVTdHJpbmcoImtleSIpLCBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShvYmplY3QpLCAiWzNdIik7Cit9CisKK1RFU1QoSW5q
ZWN0SURCS2V5VGVzdCwgVG9wTGV2ZWxBcnJheUVsZW1lbnQpCit7CisgICAgTG9jYWxDb250ZXh0
IHY4Y29udGV4dDsKKyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBhcnJheSA9IHY4OjpBcnJheTo6
TmV3KCk7CisgICAgYXJyYXktPlNldCgzLCB2ODo6U3RyaW5nOjpOZXcoInpvbyIpKTsKKworICAg
IGNoZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlU3RyaW5nKCJteU5ld0tleSIpLCBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcnJheSksICJbMl0iKTsKKyAgICBjaGVja0luamVjdGlv
bihJREJLZXk6OmNyZWF0ZU51bWJlcig3ODkpLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZShhcnJheSksICJbNF0iKTsKKyAgICBjaGVja0luamVjdGlvbihJREJLZXk6OmNyZWF0ZURhdGUo
NDU2NyksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFycmF5KSwgIlsxXSIpOworCisg
ICAgY2hlY2tJbmplY3Rpb25GYWlscyhJREJLZXk6OmNyZWF0ZVN0cmluZygiZm9vIiksIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFycmF5KSwgIlszXSIpOworfQorCitURVNUKEluamVj
dElEQktleVRlc3QsIFN1YlByb3BlcnR5KQoreworICAgIExvY2FsQ29udGV4dCB2OGNvbnRleHQ7
CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpPYmplY3Q6Ok5ldygpOwor
ICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzdWJQcm9wZXJ0eSA9IHY4OjpPYmplY3Q6Ok5ldygp
OworICAgIHN1YlByb3BlcnR5LT5TZXQodjg6OlN0cmluZzo6TmV3KCJiYXIiKSwgdjg6OlN0cmlu
Zzo6TmV3KCJ6ZWUiKSk7CisgICAgb2JqZWN0LT5TZXQodjg6OlN0cmluZzo6TmV3KCJmb28iKSwg
c3ViUHJvcGVydHkpOworCisgICAgY2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVTdHJpbmco
Im15TmV3S2V5IiksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG9iamVjdCksICJmb28u
YmF6Iik7CisgICAgY2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVOdW1iZXIoNzg5KSwgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUob2JqZWN0KSwgImZvby5iYXoiKTsKKyAgICBjaGVj
a0luamVjdGlvbihJREJLZXk6OmNyZWF0ZURhdGUoNDU2NyksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKG9iamVjdCksICJmb28uYmF6Iik7CisgICAgY2hlY2tJbmplY3Rpb24oSURCS2V5
OjpjcmVhdGVEYXRlKDQ1NjcpLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShvYmplY3Qp
LCAiYmFyIik7CisKKyAgICBjaGVja0luamVjdGlvbkZhaWxzKElEQktleTo6Y3JlYXRlU3RyaW5n
KCJ6b28iKSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUob2JqZWN0KSwgImZvby5iYXIi
KTsKKyAgICBjaGVja0luamVjdGlvbkZhaWxzKElEQktleTo6Y3JlYXRlU3RyaW5nKCJ6b28iKSwg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUob2JqZWN0KSwgImZvbyIpOworICAgIGNoZWNr
SW5qZWN0aW9uRmFpbHMoSURCS2V5OjpjcmVhdGVTdHJpbmcoInpvbyIpLCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShvYmplY3QpLCAiZm9vLmJhci5iYXoiKTsKK30KKworVEVTVChJbmpl
Y3RJREJLZXlUZXN0LCBBcnJheTJEKQoreworICAgIExvY2FsQ29udGV4dCB2OGNvbnRleHQ7Cisg
ICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpPYmplY3Q6Ok5ldygpOworICAg
IHY4OjpMb2NhbDx2ODo6QXJyYXk+IGFycmF5ID0gdjg6OkFycmF5OjpOZXcoKTsKKyAgICB2ODo6
TG9jYWw8djg6OkFycmF5PiBzdWJBcnJheSA9IHY4OjpBcnJheTo6TmV3KCk7CisgICAgc3ViQXJy
YXktPlNldCg3LCB2ODo6U3RyaW5nOjpOZXcoInplZSIpKTsKKyAgICBhcnJheS0+U2V0KDMsIHN1
YkFycmF5KTsKKyAgICBvYmplY3QtPlNldCh2ODo6U3RyaW5nOjpOZXcoImZvbyIpLCBhcnJheSk7
CisKKyAgICBjaGVja0luamVjdGlvbihJREJLZXk6OmNyZWF0ZVN0cmluZygibXlOZXdLZXkiKSwg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUob2JqZWN0KSwgImZvb1szXVs4XSIpOworICAg
IGNoZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlTnVtYmVyKDc4OSksIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKG9iamVjdCksICJmb29bM11bOF0iKTsKKyAgICBjaGVja0luamVjdGlv
bihJREJLZXk6OmNyZWF0ZURhdGUoNDU2NyksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KG9iamVjdCksICJmb29bM11bOF0iKTsKKyAgICBjaGVja0luamVjdGlvbihJREJLZXk6OmNyZWF0
ZVN0cmluZygibXlOZXdLZXkiKSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUob2JqZWN0
KSwgImJhciIpOworICAgIGNoZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlU3RyaW5nKCJteU5l
d0tleSIpLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShvYmplY3QpLCAiZm9vWzRdIik7
CisKKyAgICBjaGVja0luamVjdGlvbkZhaWxzKElEQktleTo6Y3JlYXRlU3RyaW5nKCJ6b28iKSwg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUob2JqZWN0KSwgImZvb1szXVs3XSIpOworICAg
IGNoZWNrSW5qZWN0aW9uRmFpbHMoSURCS2V5OjpjcmVhdGVTdHJpbmcoInpvbyIpLCBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShvYmplY3QpLCAiZm9vWzNdIik7CisgICAgY2hlY2tJbmpl
Y3Rpb25GYWlscyhJREJLZXk6OmNyZWF0ZVN0cmluZygiem9vIiksIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKG9iamVjdCksICJmb28iKTsKKyAgICBjaGVja0luamVjdGlvbkZhaWxzKElE
QktleTo6Y3JlYXRlU3RyaW5nKCJ6b28iKSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
b2JqZWN0KSwgImZvb1szXVs3XS5mb28iKTsKK30KIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZiAv
LyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82620</attachid>
            <date>2011-02-16 05:47:03 -0800</date>
            <delta_ts>2011-02-16 09:26:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54457-20110216134701.patch</filename>
            <type>text/plain</type>
            <size>30662</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhOTE0NzE3ZDVjNzUzMTBjZGFkMzhmZDY3YzExOWRkMDQ5NTI1YmM4Li40YTE0NGM3
MjY5ZDg5ZDgxNGNjZjgwOGNlMGZmNWM2ZWJmMzkyZDViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTEtMDItMTYgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmRleGVkREI6IEluamVj
dCBhdXRvIGluY3JlbWVudCBrZXlzIHZpYSBrZXkgcGF0aCBvbiBpbnNlcnRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NDU3CisKKyAgICAgICAg
UHJlcGFyZSB0byB0ZXN0IGluamVjdGlvbiBvZiBhdXRvIGluY3JlbWVudCBrZXkuIEtlZXAgaXQg
Y29tbWVudGVkIG91dAorICAgICAgICB1bnRpbCBpbXBsZW1lbnRlZCBDaHJvbWl1bS1zaWRlLgor
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYXV0
b2luY3JlbWVudC5odG1sOgorCiAyMDExLTAyLTE1ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCB0ZXN0IGV4cGVjdGF0aW9uIHVwZGF0ZS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWF1
dG9pbmNyZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC1leHBlY3RlZC50eHQKaW5kZXggNjc0MDlhN2NmMjMx
MzBmZjQ3NjMzMTVkZDBmMDQ3YzViMWQ2MGE2OS4uMDQyMzM1YjJjODk5MmI2MjljYWM1NmM4NGIx
ZjA4MDhkMWU4Mzc1YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC1leHBlY3RlZC50eHQK
QEAgLTI5LDE1ICsyOSwxMCBAQCBJbnNlcnQgaW50byBvYmplY3Qgc3RvcmUgd2l0aCBhdXRvIGlu
Y3JlbWVudCBhbmQga2V5IHBhdGgsIHdpdGgga2V5IGluIHRoZSBvYmplYwogc3RvcmUuYWRkKHtu
YW1lOiAnSmVmZmVyc3NvbicsIG51bWJlcjogJzcwMTAnLCBpZDogM30pCiBhZGRKZWZmZXJzc29u
U3VjY2VzcygpOgogUEFTUyBldmVudC50YXJnZXQucmVzdWx0IGlzIDMKLUluc2VydCBpbnRvIG9i
amVjdCBzdG9yZSB3aXRoIGF1dG8gaW5jcmVtZW50IGFuZCBrZXkgcGF0aCwgd2l0aG91dCBrZXkg
aW4gdGhlIG9iamVjdC4KLXN0b3JlLmFkZCh7bmFtZTogJ0xpbmNvbG4nLCBudW1iZXI6ICc3MDEy
J30pCi1hZGRMaW5jb2xuRXJyb3IoKToKLVBBU1MgZXZlbnQudGFyZ2V0LmVycm9yQ29kZSBpcyB3
ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5VTktOT1dOX0VSUgotZXZlbnQucHJldmVudERlZmF1
bHQoKQogc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnU3RvcmVXaXRoQXV0b0luY3JlbWVudCcp
CiBJbnNlcnQgaW50byBvYmplY3Qgc3RvcmUgd2l0aCBrZXkgZ2VuIHVzaW5nIGV4cGxpY2l0IGtl
eQogc3RvcmUuYWRkKHtuYW1lOiAnTGluY29sbicsIG51bWJlcjogJzcwMTInfSwgNSkKLWFkZExp
bmNvbG5TdWNjZXNzKCk6CithZGRMaW5jb2xuV2l0aEV4cGxpY2l0S2V5U3VjY2VzcygpOgogUEFT
UyBldmVudC50YXJnZXQucmVzdWx0IGlzIDUKIHN0b3JlLmdldCg1KQogZ2V0TGluY29sblN1Y2Nl
c3MoKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0
b3JlLWF1dG9pbmNyZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdHN0b3JlLWF1dG9pbmNyZW1lbnQuaHRtbAppbmRleCAwMzNkNmQ1MTJiYTI0NThhZWQwMjM2
OTM5YWM5NDU2NGVmZmMzNzUzLi4xM2IzZjEwODE1NWJiNjMxNmM5YzU4ZDBlYzM5MTJiMzQ4ODcw
NWVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9y
ZS1hdXRvaW5jcmVtZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC5odG1sCkBAIC03OCwyOSArNzgsNDUgQEAgZnVuY3Rp
b24gYWRkSmVmZmVyc3NvblN1Y2Nlc3MoKQogICAgIGRlYnVnKCJhZGRKZWZmZXJzc29uU3VjY2Vz
cygpOiIpOwogICAgIHNob3VsZEJlKCJldmVudC50YXJnZXQucmVzdWx0IiwgIjMiKTsKIAotICAg
IGRlYnVnKCJJbnNlcnQgaW50byBvYmplY3Qgc3RvcmUgd2l0aCBhdXRvIGluY3JlbWVudCBhbmQg
a2V5IHBhdGgsIHdpdGhvdXQga2V5IGluIHRoZSBvYmplY3QuIik7Ci0gICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInN0b3JlLmFkZCh7bmFtZTogJ0xpbmNvbG4nLCBudW1iZXI6ICc3MDEyJ30pIik7
Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNrOwotICAg
IHJlcXVlc3Qub25lcnJvciA9IGFkZExpbmNvbG5FcnJvcjsKKyAgICAvL0ZJWE1FOiBVbi1jb21t
ZW50IHRoaXMgY29kZSB3aGVuIGZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQgQ2hyb21pdW0t
c2lkZS4KKyAgICAvL2RlYnVnKCJJbnNlcnQgaW50byBvYmplY3Qgc3RvcmUgd2l0aCBhdXRvIGlu
Y3JlbWVudCBhbmQga2V5IHBhdGgsIHdpdGhvdXQga2V5IGluIHRoZSBvYmplY3QuIik7CisgICAg
Ly9yZXF1ZXN0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHtuYW1lOiAnTGluY29sbicsIG51bWJl
cjogJzcwMTInfSkiKTsKKyAgICAvL3JlcXVlc3Qub25zdWNjZXNzID0gYWRkTGluY29sbldpdGhJ
bmplY3RLZXlTdWNjZXNzOworICAgIC8vcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgd2luZG93LnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5v
YmplY3RTdG9yZSgnU3RvcmVXaXRoQXV0b0luY3JlbWVudCcpIik7CisgICAgZGVidWcoIkluc2Vy
dCBpbnRvIG9iamVjdCBzdG9yZSB3aXRoIGtleSBnZW4gdXNpbmcgZXhwbGljaXQga2V5Iik7Cisg
ICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFtZTogJ0xpbmNvbG4nLCBudW1i
ZXI6ICc3MDEyJ30sIDUpIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRMaW5jb2xuV2l0
aEV4cGxpY2l0S2V5U3VjY2VzczsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKIH0KIAotZnVuY3Rpb24gYWRkTGluY29sbkVycm9yKCkKK2Z1bmN0aW9uIGFk
ZExpbmNvbG5XaXRoSW5qZWN0S2V5U3VjY2VzcygpCiB7Ci0gICAgZGVidWcoImFkZExpbmNvbG5F
cnJvcigpOiIpOwotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBpbXBsZW1lbnRlZCwgYnV0
IHdlIG1ha2UgaXQgYW4gZXJyb3IgZm9yIG5vdy4KLSAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0
LmVycm9yQ29kZSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5VTktOT1dOX0VSUiIpOwor
ICAgIGRlYnVnKCJhZGRMaW5jb2xuV2l0aEluamVjdEtleVN1Y2Nlc3MoKToiKTsKKyAgICBzaG91
bGRCZSgiZXZlbnQudGFyZ2V0LnJlc3VsdCIsICI0Iik7CiAKLSAgICBldmFsQW5kTG9nKCJldmVu
dC5wcmV2ZW50RGVmYXVsdCgpIik7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygic3RvcmUuZ2V0
KDQpIik7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGdldExpbmNvbG5BZnRlckluamVjdGVkS2V5
U3VjY2VzczsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
fQorCitmdW5jdGlvbiBnZXRMaW5jb2xuQWZ0ZXJJbmplY3RlZEtleVN1Y2Nlc3MoKQoreworICAg
IGRlYnVnKCJnZXRMaW5jb2xuQWZ0ZXJJbmplY3RlZEtleVN1Y2Nlc3MoKToiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldC5yZXN1bHQubmFtZSIsICJMaW5jb2xuIik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXQucmVzdWx0Lm51bWJlciIs
ICI3MDEyIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5yZXN1bHQuaWQiLCAiNCIpOwog
CiAgICAgd2luZG93LnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9y
ZSgnU3RvcmVXaXRoQXV0b0luY3JlbWVudCcpIik7CiAgICAgZGVidWcoIkluc2VydCBpbnRvIG9i
amVjdCBzdG9yZSB3aXRoIGtleSBnZW4gdXNpbmcgZXhwbGljaXQga2V5Iik7CiAgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFtZTogJ0xpbmNvbG4nLCBudW1iZXI6ICc3MDEy
J30sIDUpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhZGRMaW5jb2xuU3VjY2VzczsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFkZExpbmNvbG5XaXRoRXhwbGljaXRLZXlTdWNjZXNzOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwogfQogCi1mdW5j
dGlvbiBhZGRMaW5jb2xuU3VjY2VzcygpCitmdW5jdGlvbiBhZGRMaW5jb2xuV2l0aEV4cGxpY2l0
S2V5U3VjY2VzcygpCiB7Ci0gICAgZGVidWcoImFkZExpbmNvbG5TdWNjZXNzKCk6Iik7CisgICAg
ZGVidWcoImFkZExpbmNvbG5XaXRoRXhwbGljaXRLZXlTdWNjZXNzKCk6Iik7CiAgICAgc2hvdWxk
QmUoImV2ZW50LnRhcmdldC5yZXN1bHQiLCAiNSIpOwogCiAgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coInN0b3JlLmdldCg1KSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGUwZTRlNzI4YWFiYzdjOTU1YjgyODJi
MTJkZDdkMTI3ZTZjNGVmNDguLjY3MDI2MWIxMjkyZjU3Njk5NmJiNzJiMDc5NmUxOTU4NTFkMzBk
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMS0wMi0xNiAgSGFucyBXZW5uYm9y
ZyAgPGhhbnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEluZGV4ZWREQjogSW5qZWN0IGF1dG8gaW5jcmVtZW50IGtleXMgdmlh
IGtleSBwYXRoIG9uIGluc2VydGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTQ0NTcKKworICAgICAgICBJbmplY3QgYXV0byBpbmNyZW1lbnQga2V5
cyB2aWEga2V5IHBhdGggZm9yIG9iamVjdCBzdG9yZXMgdXNpbmcga2V5CisgICAgICAgIHBhdGgg
YW5kIGF1dG8gaW5jcmVtZW50LgorCisgICAgICAgICogYmluZGluZ3MvdjgvSURCQmluZGluZ1V0
aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbENvbnRleHQ6OmdldE50aFZhbHVl
T25LZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVk
VmFsdWVBbmRLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmluamVjdElEQktleUludG9TZXJp
YWxpemVkVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUJyaWRnZS5oOgorICAgICAg
ICAqIHN0b3JhZ2UvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKElEQktleVBh
dGhCYWNrZW5kSW1wbDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZSk6CisgICAgICAg
ICogc3RvcmFnZS9JREJLZXlQYXRoQmFja2VuZEltcGwuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5qZWN0S2V5
SW50b0tleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6c2VsZWN0S2V5Rm9yUHV0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OnB1dEludGVybmFsKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwuaDoKKyAgICAgICAgKiBzdG9yYWdlL2Nocm9taXVtL0lEQktleVBhdGhCYWNr
ZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoQmFja2VuZEltcGw6Omlu
amVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUpOgorCiAyMDExLTAyLTE1ICBKb2huIFN1bGxp
dmFuICA8c3VsbGl2YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtv
aXZpc3RvLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGlu
Z1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRp
bGl0aWVzLmNwcAppbmRleCAyZThkNGZlYTI5NzFlNjc5YzBmZTNhNmNlZWU5YmFkNDkyY2M1ZjEx
Li5mODQxY2Y2MjI1MzllNjllNDNhOWIyNmMxNDJhNmQ3ZTdjNWYzMGUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOElEQktl
eS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NTEsNiArNTIsOCBAQCBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVZhbHVlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKICAgICByZXR1cm4gMDsgLy8gU2lnbmFscyB0eXBl
IGVycm9yLgogfQogCituYW1lc3BhY2UgeworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogYm9vbCBn
ZXRWYWx1ZUZyb20oVCBpbmRleE9yTmFtZSwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+JiB2OFZhbHVl
KQogewpAQCAtNjEsNiArNjQsNDEgQEAgYm9vbCBnZXRWYWx1ZUZyb20oVCBpbmRleE9yTmFtZSwg
djg6OkhhbmRsZTx2ODo6VmFsdWU+JiB2OFZhbHVlKQogICAgIHJldHVybiB0cnVlOwogfQogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorYm9vbCBzZXRWYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4m
IHY4T2JqZWN0LCBUIGluZGV4T3JOYW1lLCBjb25zdCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIHY4
VmFsdWUpCit7CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4T2JqZWN0LT5U
b09iamVjdCgpOworICAgIGlmIChvYmplY3QtPkhhcyhpbmRleE9yTmFtZSkpCisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBvYmplY3QtPlNldChpbmRleE9yTmFtZSwg
djhWYWx1ZSk7Cit9CisKK2Jvb2wgZ2V0KGNvbnN0IElEQktleVBhdGhFbGVtZW50JiBrZXlQYXRo
RWxlbWVudCwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+JiBjdXJyZW50VmFsdWUpCit7CisgICAgc3dp
dGNoIChrZXlQYXRoRWxlbWVudC50eXBlKSB7CisgICAgY2FzZSBJREJLZXlQYXRoRWxlbWVudDo6
SXNJbmRleGVkOgorICAgICAgICByZXR1cm4gY3VycmVudFZhbHVlLT5Jc0FycmF5KCkgJiYgZ2V0
VmFsdWVGcm9tKGtleVBhdGhFbGVtZW50LmluZGV4LCBjdXJyZW50VmFsdWUpOworICAgIGNhc2Ug
SURCS2V5UGF0aEVsZW1lbnQ6OklzTmFtZWQ6CisgICAgICAgIHJldHVybiBjdXJyZW50VmFsdWUt
PklzT2JqZWN0KCkgJiYgZ2V0VmFsdWVGcm9tKHY4U3RyaW5nKGtleVBhdGhFbGVtZW50LmlkZW50
aWZpZXIpLCBjdXJyZW50VmFsdWUpOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgc2V0KHY4OjpI
YW5kbGU8djg6OlZhbHVlPiYgb2JqZWN0LCBjb25zdCBJREJLZXlQYXRoRWxlbWVudCYga2V5UGF0
aEVsZW1lbnQsIGNvbnN0IHY4OjpIYW5kbGU8djg6OlZhbHVlPiYgdjhWYWx1ZSkKK3sKKyAgICBz
d2l0Y2ggKGtleVBhdGhFbGVtZW50LnR5cGUpIHsKKyAgICBjYXNlIElEQktleVBhdGhFbGVtZW50
OjpJc0luZGV4ZWQ6CisgICAgICAgIHJldHVybiBvYmplY3QtPklzQXJyYXkoKSAmJiBzZXRWYWx1
ZShvYmplY3QsIGtleVBhdGhFbGVtZW50LmluZGV4LCB2OFZhbHVlKTsKKyAgICBjYXNlIElEQktl
eVBhdGhFbGVtZW50OjpJc05hbWVkOgorICAgICAgICByZXR1cm4gb2JqZWN0LT5Jc09iamVjdCgp
ICYmIHNldFZhbHVlKG9iamVjdCwgdjhTdHJpbmcoa2V5UGF0aEVsZW1lbnQuaWRlbnRpZmllciks
IHY4VmFsdWUpOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGNsYXNzIExvY2FsQ29udGV4dCB7CiBwdWJs
aWM6CiAgICAgTG9jYWxDb250ZXh0KCkKQEAgLTgwLDI1ICsxMTgsNDYgQEAgcHJpdmF0ZToKICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gbV9jb250ZXh0OwogfTsKIAordjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGdldE50aFZhbHVlT25LZXlQYXRoKHY4OjpIYW5kbGU8djg6OlZhbHVlPiYg
cm9vdFZhbHVlLCBjb25zdCBWZWN0b3I8SURCS2V5UGF0aEVsZW1lbnQ+JiBrZXlQYXRoRWxlbWVu
dHMsIHNpemVfdCBpbmRleCkKK3sKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VycmVudFZh
bHVlKHJvb3RWYWx1ZSk7CisKKyAgICBBU1NFUlQoaW5kZXggPD0ga2V5UGF0aEVsZW1lbnRzLnNp
emUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmRleDsgKytpKSB7CisgICAgICAg
IGlmICghZ2V0KGtleVBhdGhFbGVtZW50c1tpXSwgY3VycmVudFZhbHVlKSkKKyAgICAgICAgICAg
IHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICB9CisKKyAgICByZXR1cm4gY3Vy
cmVudFZhbHVlOworfQorCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKwogUGFzc1JlZlB0cjxJ
REJLZXk+IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgVmVjdG9yPElEQktleVBhdGhF
bGVtZW50PiYga2V5UGF0aCkKIHsKICAgICBMb2NhbENvbnRleHQgbG9jYWxDb250ZXh0OwogICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFZhbHVlKHZhbHVlLT5kZXNlcmlhbGl6ZSgpKTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtleVBhdGguc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
c3dpdGNoIChrZXlQYXRoW2ldLnR5cGUpIHsKLSAgICAgICAgY2FzZSBJREJLZXlQYXRoRWxlbWVu
dDo6SXNJbmRleGVkOgotICAgICAgICAgICAgaWYgKCF2OFZhbHVlLT5Jc0FycmF5KCkgfHwgIWdl
dFZhbHVlRnJvbShrZXlQYXRoW2ldLmluZGV4LCB2OFZhbHVlKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIElEQktleVBhdGhFbGVt
ZW50OjpJc05hbWVkOgotICAgICAgICAgICAgaWYgKCF2OFZhbHVlLT5Jc09iamVjdCgpIHx8ICFn
ZXRWYWx1ZUZyb20odjhTdHJpbmcoa2V5UGF0aFtpXS5pZGVudGlmaWVyKSwgdjhWYWx1ZSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9Ci0gICAg
fQotICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tVmFsdWUodjhWYWx1ZSk7CisgICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHY4S2V5KGdldE50aFZhbHVlT25LZXlQYXRoKHY4VmFsdWUsIGtleVBh
dGgsIGtleVBhdGguc2l6ZSgpKSk7CisgICAgaWYgKHY4S2V5LklzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIGNyZWF0ZUlEQktleUZyb21WYWx1ZSh2OEtleSk7Cit9CisK
K1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RJREJLZXlJbnRvU2VyaWFs
aXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgVmVjdG9yPElEQktleVBhdGhFbGVtZW50PiYga2V5UGF0
aCkKK3sKKyAgICBMb2NhbENvbnRleHQgbG9jYWxDb250ZXh0OworICAgIGlmICgha2V5UGF0aC5z
aXplKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4
VmFsdWUodmFsdWUtPmRlc2VyaWFsaXplKCkpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBw
YXJlbnQoZ2V0TnRoVmFsdWVPbktleVBhdGgodjhWYWx1ZSwga2V5UGF0aCwga2V5UGF0aC5zaXpl
KCkgLSAxKSk7CisgICAgaWYgKHBhcmVudC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgaWYgKCFzZXQocGFyZW50LCBrZXlQYXRoLmxhc3QoKSwgdG9WOChrZXkuZ2V0KCkpKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUodjhWYWx1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuaAppbmRleCAxYTc5NGIw
OGUxYmNlMGViNDlkM2ZmYmM2ODQzMTU5MjdmMjZjZTk2Li4xZmI4NTVjMWU4ZGFjMDliOTkxNjMz
OGI5NzYyYWUyYmUwZWFjM2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9JREJCaW5kaW5nVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
SURCQmluZGluZ1V0aWxpdGllcy5oCkBAIC0zOSw2ICszOSw3IEBAIHN0cnVjdCBJREJLZXlQYXRo
RWxlbWVudDsKIAogUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21WYWx1ZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4pOwogUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21T
ZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiB2YWx1ZSwgIGNvbnN0IFZlY3RvcjxJREJLZXlQYXRoRWxlbWVudCwgMD4mIGtleVBhdGgpOwor
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdElEQktleUludG9TZXJpYWxp
emVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4sIGNvbnN0IFZlY3RvcjxJREJLZXlQYXRoRWxlbWVudCwgMD4mKTsKIAogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUJyaWRnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1CcmlkZ2UuaAppbmRl
eCA0MmFmMTU1OGM0ODU0ZmE2MDlmMjg2NzBmM2I5MTMzYTc4ZTEwMzVkLi5iYmE1YTliMDA2YzUw
M2EyNTYwM2ZiNWViYTY5YjQ3NDZlMjdkYjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUJyaWRnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtQnJpZGdlLmgKQEAgLTE3Myw2ICsxNzMsOCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IGlk
YkZhY3RvcnkoKTsKICAgICAvLyBFeHRyYWN0cyBrZXlQYXRoIGZyb20gdmFsdWVzIGFuZCByZXR1
cm5zIHRoZSBjb3JyZXNwb25kaW5nIGtleXMuCiAgICAgc3RhdGljIHZvaWQgY3JlYXRlSURCS2V5
c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIFZlY3Rv
cjxSZWZQdHI8SURCS2V5PiA+JiBrZXlzKTsKKyAgICAvLyBJbmplY3RzIGtleSB2aWEga2V5UGF0
aCBpbnRvIHZhbHVlLiBSZXR1cm5zIHRydWUgb24gc3VjY2Vzcy4KKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFs
dWUoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4s
IGNvbnN0IFN0cmluZyYga2V5UGF0aCk7CiAKICAgICAvLyBKYXZhU2NyaXB0IC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIHN0YXRp
YyB2b2lkIG5vdGlmeUpTT3V0T2ZNZW1vcnkoRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmNwcAppbmRleCBiN2M0NWMzOGQ5ZTZlZDQ2
ZTQyNmQzN2ZjMDAwNjBkYWJiMmEzNTA3Li40ZjBmY2VlNjQ3ZDcyMGVhODllNDNlM2E1ZjFmZTFl
YWIxYWMxNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQktleVBhdGhC
YWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJLZXlQYXRoQmFj
a2VuZEltcGwuY3BwCkBAIC0zNyw0ICszNywxMCBAQCB2b2lkIElEQktleVBhdGhCYWNrZW5kSW1w
bDo6Y3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZQog
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBtZXRob2Qgb25jZSBKU0Mgc3VwcG9ydHMgV2ly
ZUZvcm1hdCBmb3IgU2VyaWFsaXplZFNjcmlwdFZhbHVlLgogfQogCitQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gSURCS2V5UGF0aEJhY2tlbmRJbXBsOjppbmplY3RJREJLZXlJbnRv
U2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQoreworICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBtZXRob2Qgb25jZSBKU0Mgc3VwcG9ydHMgV2lyZUZvcm1h
dCBmb3IgU2VyaWFsaXplZFNjcmlwdFZhbHVlLgorICAgIHJldHVybiAwOworfQorCiAjZW5kaWYg
Ly8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQktleVBhdGhCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJLZXlQYXRoQmFja2VuZEltcGwuaAppbmRleCAzMmFmNWUzN2FiOTU4M2EzZjllMDU3MTNkNjk1
NTE0ODhjOGE3MWE1Li4xYzc2MjMyMjE3ZmY1MGU0ZjBkOTc5OGY1N2NmNDI0Y2RkM2MxMWZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQktleVBhdGhCYWNrZW5kSW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCS2V5UGF0aEJhY2tlbmRJbXBsLmgKQEAg
LTM4LDYgKzM4LDcgQEAgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogY2xhc3MgSURCS2V5
UGF0aEJhY2tlbmRJbXBsIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVJREJLZXlz
RnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiwgMD4mIHZhbHVlcywgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBWZWN0
b3I8UmVmUHRyPElEQktleT4sIDA+JiBrZXlzKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1Jl
ZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IFN0
cmluZyYga2V5UGF0aCk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCA5MjFiYmFiODc4YzYxY2NhMDk5
MGNiZjhiODc4YjQ4NDg4MzMwODMzLi41NDFhYjA0ZWVkMTJiNTgwNjQ0YWY5M2EzYmRhNDA2Zjg4
OGRkMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5jcHAKQEAgLTEzNCw2ICsxMzQsMTEgQEAgc3RhdGljIFBhc3NSZWZQdHI8
SURCS2V5PiBmZXRjaEtleUZyb21LZXlQYXRoKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUs
IGNvbnMKICAgICByZXR1cm4ga2V5c1swXS5yZWxlYXNlKCk7CiB9CiAKK3N0YXRpYyBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0S2V5SW50b0tleVBhdGgoUGFzc1JlZlB0
cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgpCit7CisgICAgcmV0dXJuIElEQktleVBhdGhCYWNrZW5kSW1w
bDo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShrZXksIHZhbHVlLCBrZXlQYXRoKTsK
K30KKwogc3RhdGljIGJvb2wgcHV0T2JqZWN0U3RvcmVEYXRhKFNRTGl0ZURhdGFiYXNlJiBkYiwg
SURCS2V5KiBrZXksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCYgZGF0YVJvd0lkKQogewogICAgIFN0cmluZyBzcWwgPSBkYXRhUm93
SWQgIT0gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SW52YWxpZElkID8gIlVQREFURSBPYmpl
Y3RTdG9yZURhdGEgU0VUIGtleVN0cmluZyA9ID8sIGtleURhdGUgPSA/LCBrZXlOdW1iZXIgPSA/
LCB2YWx1ZSA9ID8gV0hFUkUgaWQgPSA/IgpAQCAtMTk3LDcgKzIwMiw3IEBAIHZvaWQgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBwcnBWYWx1ZSwKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FMTE9X
RURfRVJSOwogfQogCi1QYXNzUmVmUHRyPElEQktleT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6c2VsZWN0S2V5Rm9yUHV0KElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3Jl
LCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBJREJLZXkqIGtleSwgUHV0TW9kZSBwdXRN
b2RlLCBJREJDYWxsYmFja3MqIGNhbGxiYWNrcykKK1Bhc3NSZWZQdHI8SURCS2V5PiBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpzZWxlY3RLZXlGb3JQdXQoSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbCogb2JqZWN0U3RvcmUsIElEQktleSoga2V5LCBQdXRNb2RlIHB1dE1vZGUsIElEQkNhbGxi
YWNrcyogY2FsbGJhY2tzLCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYgdmFsdWUpCiB7
CiAgICAgaWYgKHB1dE1vZGUgPT0gQ3Vyc29yVXBkYXRlKQogICAgICAgICBBU1NFUlQoa2V5KTsK
QEAgLTIyMCwxOSArMjI1LDI0IEBAIFBhc3NSZWZQdHI8SURCS2V5PiBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpzZWxlY3RLZXlGb3JQdXQoSURCT2JqZWN0U3RvcmVCYWNrCiAgICAgICAgIGlm
ICghaGFzS2V5UGF0aCkKICAgICAgICAgICAgIHJldHVybiBvYmplY3RTdG9yZS0+Z2VuQXV0b0lu
Y3JlbWVudEtleSgpOwogCi0gICAgICAgIFJlZlB0cjxJREJLZXk+IGtleVBhdGhLZXkgPSBmZXRj
aEtleUZyb21LZXlQYXRoKHZhbHVlLCBvYmplY3RTdG9yZS0+bV9rZXlQYXRoKTsKKyAgICAgICAg
UmVmUHRyPElEQktleT4ga2V5UGF0aEtleSA9IGZldGNoS2V5RnJvbUtleVBhdGgodmFsdWUuZ2V0
KCksIG9iamVjdFN0b3JlLT5tX2tleVBhdGgpOwogICAgICAgICBpZiAoa2V5UGF0aEtleSkgewog
ICAgICAgICAgICAgb2JqZWN0U3RvcmUtPnJlc2V0QXV0b0luY3JlbWVudEtleUNhY2hlKCk7CiAg
ICAgICAgICAgICByZXR1cm4ga2V5UGF0aEtleTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEZJ
WE1FOiBHZW5lcmF0ZSBhdXRvIGluY3JlbWVudCBrZXksIGFuZCBpbmplY3QgaXQgdGhyb3VnaCB0
aGUga2V5IHBhdGguCi0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiQWRkaW5nIGRhdGEg
dG8gb2JqZWN0IHN0b3JlcyB3aXRoIGF1dG8gaW5jcmVtZW50IGFuZCBpbi1saW5lIGtleXMgbm90
IHlldCBzdXBwb3J0ZWQuIikpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgUmVmUHRyPElE
QktleT4gYXV0b0luY0tleSA9IG9iamVjdFN0b3JlLT5nZW5BdXRvSW5jcmVtZW50S2V5KCk7Cisg
ICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlQWZ0ZXJJbmplY3Rpb24g
PSBpbmplY3RLZXlJbnRvS2V5UGF0aChhdXRvSW5jS2V5LCB2YWx1ZSwgb2JqZWN0U3RvcmUtPm1f
a2V5UGF0aCk7CisgICAgICAgIGlmICghdmFsdWVBZnRlckluamVjdGlvbikgeworICAgICAgICAg
ICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6REFUQV9FUlIsICJUaGUgZ2VuZXJhdGVkIGtleSBjb3VsZCBub3QgYmUgaW5z
ZXJ0ZWQgaW50byB0aGUgb2JqZWN0IHVzaW5nIHRoZSBrZXlQYXRoLiIpKTsKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHZhbHVlID0gdmFsdWVBZnRlckluamVjdGlv
bjsKKyAgICAgICAgcmV0dXJuIGF1dG9JbmNLZXkucmVsZWFzZSgpOwogICAgIH0KIAogICAgIGlm
IChoYXNLZXlQYXRoKSB7Ci0gICAgICAgIFJlZlB0cjxJREJLZXk+IGtleVBhdGhLZXkgPSBmZXRj
aEtleUZyb21LZXlQYXRoKHZhbHVlLCBvYmplY3RTdG9yZS0+bV9rZXlQYXRoKTsKKyAgICAgICAg
UmVmUHRyPElEQktleT4ga2V5UGF0aEtleSA9IGZldGNoS2V5RnJvbUtleVBhdGgodmFsdWUuZ2V0
KCksIG9iamVjdFN0b3JlLT5tX2tleVBhdGgpOwogCiAgICAgICAgIGlmICgha2V5UGF0aEtleSkg
ewogICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlIsICJUaGUga2V5IGNvdWxkIG5vdCBiZSBm
ZXRjaGVkIGZyb20gdGhlIGtleVBhdGguIikpOwpAQCAtMjU4LDcgKzI2OCw3IEBAIFBhc3NSZWZQ
dHI8SURCS2V5PiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZWxlY3RLZXlGb3JQdXQoSURC
T2JqZWN0U3RvcmVCYWNrCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVy
bmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
cHJwVmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFB1dE1vZGUgcHV0TW9kZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKQogewogICAgIFJlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IHZhbHVlID0gcHJwVmFsdWU7Ci0gICAgUmVmUHRyPElEQktleT4ga2V5ID0g
c2VsZWN0S2V5Rm9yUHV0KG9iamVjdFN0b3JlLmdldCgpLCB2YWx1ZS5nZXQoKSwgcHJwS2V5Lmdl
dCgpLCBwdXRNb2RlLCBjYWxsYmFja3MuZ2V0KCkpOworICAgIFJlZlB0cjxJREJLZXk+IGtleSA9
IHNlbGVjdEtleUZvclB1dChvYmplY3RTdG9yZS5nZXQoKSwgcHJwS2V5LmdldCgpLCBwdXRNb2Rl
LCBjYWxsYmFja3MuZ2V0KCksIHZhbHVlKTsKICAgICBpZiAoIWtleSkKICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbC5oCmluZGV4IGI1NGY5ZmRhMDliOWQ2MDEyN2UwYTNkNjgyYmUzNDY5YWI3NGY4NGUuLmI1
ZWQ4YjZkMmM2MGMwNTkwM2JlNWE1MTAwY2Y2ZWMzZGY2YjliZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCkBAIC04NSw3ICs4
NSw3IEBAIHByaXZhdGU6CiAgICAgU1FMaXRlRGF0YWJhc2UmIHNxbGl0ZURhdGFiYXNlKCkgY29u
c3Q7CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IGdlbkF1dG9JbmNyZW1lbnRLZXkoKTsKICAgICB2
b2lkIHJlc2V0QXV0b0luY3JlbWVudEtleUNhY2hlKCkgeyBtX2F1dG9JbmNyZW1lbnROdW1iZXIg
PSAtMTsgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gc2VsZWN0S2V5Rm9yUHV0KElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwqLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBJREJLZXkq
LCBQdXRNb2RlLCBJREJDYWxsYmFja3MqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+
IHNlbGVjdEtleUZvclB1dChJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiwgSURCS2V5KiwgUHV0
TW9kZSwgSURCQ2FsbGJhY2tzKiwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mKTsKIAog
ICAgIHN0YXRpYyB2b2lkIGdldEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleT4ga2V5
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogICAgIHN0YXRpYyB2b2lkIHB1dEludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURC
S2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9jaHJvbWl1bS9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9jaHJvbWl1bS9JREJLZXlQYXRoQmFja2VuZEltcGwuY3BwCmluZGV4IDM4YjI5
ODNlMTcwMmE1OGQ3MjczMGI1YmU4YTk4NjE3Y2NkNTExYWUuLmU2YTFhZDUwZjc3NTVhNmExMzll
NjhlMDkyMTJkMzM5ZjA2Y2E0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
Y2hyb21pdW0vSURCS2V5UGF0aEJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL2Nocm9taXVtL0lEQktleVBhdGhCYWNrZW5kSW1wbC5jcHAKQEAgLTI4LDcgKzI4LDkg
QEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiSURCS2V5Lmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1CcmlkZ2UuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNyw2ICszOSwxMSBAQCB2b2lk
IElEQktleVBhdGhCYWNrZW5kSW1wbDo6Y3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVz
QW5kS2V5UGF0aChjb25zdCBWZQogICAgIFBsYXRmb3JtQnJpZGdlOjpjcmVhdGVJREJLZXlzRnJv
bVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKHZhbHVlcywga2V5UGF0aCwga2V5cyk7CiB9CiAK
K1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJREJLZXlQYXRoQmFja2VuZEltcGw6
OmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBTdHJpbmcmIGtl
eVBhdGgpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtQnJpZGdlOjppbmplY3RJREJLZXlJbnRvU2Vy
aWFsaXplZFZhbHVlKGtleSwgdmFsdWUsIGtleVBhdGgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA0MzFmMjg0Njhl
YzYxYjBkYjgwODJjZmZjMTBhYjVkZjVhZWJlYzNlLi40NWU0OWY0YzBhZDU5MmZhNTgzMmQ5Mzhl
ZmVmMTM0MmExODBkN2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDExLTAyLTE2ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5kZXhlZERCOiBJ
bmplY3QgYXV0byBpbmNyZW1lbnQga2V5cyB2aWEga2V5IHBhdGggb24gaW5zZXJ0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDQ1NworCisgICAg
ICAgIFN1cHBvcnQgZm9yIGluamVjdGluZyBrZXlzIGludG8gb2JqZWN0cyB2aWEga2V5IHBhdGgu
CisKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCS2V5Lmg6CisgICAgICAgICogcHVibGljL1dlYktp
dENsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRDbGllbnQ6OmluamVjdElEQktleUlu
dG9TZXJpYWxpemVkVmFsdWUpOgorICAgICAgICAqIHNyYy9QbGF0Zm9ybUJyaWRnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUJyaWRnZTo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6
ZWRWYWx1ZSk6CisgICAgICAgICogc3JjL1dlYklEQktleS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQktleTo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZSk6CisgICAgICAgICog
dGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5q
ZWN0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrSW5qZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OmNoZWNrSW5qZWN0aW9uRmFpbHMpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisK
IDIwMTEtMDItMTUgIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSURCS2V5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJREJLZXkuaAppbmRleCAzNzZkMWM1ODZmMWU3MzU1NjkzMmM3ZWEwMWZkNTBlNWY4OGM1ZmU1
Li5jYmM0NTc3YThjODE2OTUxMjI0ZGMwOWE2NmJmZTFhNTNlNzIzZDAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXkuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6
CiAgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViSURCS2V5IGNyZWF0ZU51bWJlcihkb3VibGUpOwog
ICAgIFdFQktJVF9BUEkgc3RhdGljIFdlYklEQktleSBjcmVhdGVJbnZhbGlkKCk7CiAgICAgV0VC
S0lUX0FQSSBzdGF0aWMgV2ViSURCS2V5IGNyZWF0ZUZyb21WYWx1ZUFuZEtleVBhdGgoY29uc3Qg
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgY29uc3QgV2ViSURCS2V5UGF0aCYpOworICAgIFdF
QktJVF9BUEkgc3RhdGljIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBpbmplY3RJREJLZXlJbnRv
U2VyaWFsaXplZFZhbHVlKGNvbnN0IFdlYklEQktleSYsIGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSYsIGNvbnN0IFdlYklEQktleVBhdGgmKTsKIAogICAgIFdlYklEQktleShjb25zdCBX
ZWJJREJLZXkmIGUpIHsgYXNzaWduKGUpOyB9CiAgICAgV2ViSURCS2V5JiBvcGVyYXRvcj0oY29u
c3QgV2ViSURCS2V5JiBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViS2l0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRD
bGllbnQuaAppbmRleCBkOGVhZDIzOGVkM2JkMWUwM2I2NTM3ODlhOWVjODAyYTc4M2U0NDkwLi5h
ODM2N2FiNDFhMTA5OTFkOGI3OWVkNzhjZjYwODhlZWU3MTEzN2MxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRDbGllbnQuaApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIldlYkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYkRhdGEuaCIKICNpbmNsdWRlICJXZWJM
b2NhbGl6ZWRTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
ICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKICNpbmNsdWRl
ICJXZWJVUkwuaCIKQEAgLTYyLDcgKzYzLDYgQEAgY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVs
OwogY2xhc3MgV2ViTWltZVJlZ2lzdHJ5OwogY2xhc3MgV2ViUGx1Z2luTGlzdEJ1aWxkZXI7CiBj
bGFzcyBXZWJTYW5kYm94U3VwcG9ydDsKLWNsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsK
IGNsYXNzIFdlYlNoYXJlZFdvcmtlclJlcG9zaXRvcnk7CiBjbGFzcyBXZWJTb2NrZXRTdHJlYW1I
YW5kbGU7CiBjbGFzcyBXZWJTdG9yYWdlTmFtZXNwYWNlOwpAQCAtMTQ0LDYgKzE0NCw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgV2ViSURCRmFjdG9yeSogaWRiRmFjdG9yeSgpIHsgcmV0dXJu
IDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVz
QW5kS2V5UGF0aChjb25zdCBXZWJWZWN0b3I8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiYgdmFs
dWVzLCAgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBXZWJWZWN0b3I8V2ViSURCS2V5PiYga2V5
cykgeyB9CisgICAgdmlydHVhbCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUgaW5qZWN0SURCS2V5
SW50b1NlcmlhbGl6ZWRWYWx1ZShjb25zdCBXZWJJREJLZXkmIGtleSwgY29uc3QgV2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoKSB7IHJldHVy
biBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUoKTsgfQogCiAKICAgICAvLyBLZXlnZW4gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtQnJpZGdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtQnJpZGdlLmNwcAppbmRleCBh
NmY4YmJlOGNiYTI2ODQxYmRmNTczMjg3NTk4NzA3ZWJjZTJlNzI3Li5lYjc3YjM3OTQ1N2E0NjRl
Nzg3OTYxNDk0NWJkZjkzYTRiZDU3YzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9QbGF0Zm9ybUJyaWRnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvUGxhdGZvcm1CcmlkZ2UuY3BwCkBAIC01MzksNyArNTM5LDcgQEAgdm9pZCBQbGF0Zm9ybUJy
aWRnZTo6Y3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBW
ZWN0b3I8UmUKIHsKICAgICBXZWJWZWN0b3I8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiB3ZWJW
YWx1ZXMgPSB2YWx1ZXM7CiAgICAgV2ViVmVjdG9yPFdlYklEQktleT4gd2ViS2V5czsKLSAgICB3
ZWJLaXRDbGllbnQoKS0+Y3JlYXRlSURCS2V5c0Zyb21TZXJpYWxpemVkVmFsdWVzQW5kS2V5UGF0
aCh3ZWJWYWx1ZXMsIFdlYlN0cmluZyhrZXlQYXRoKSwgd2ViS2V5cyk7CisgICAgd2ViS2l0Q2xp
ZW50KCktPmNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZhbHVlc0FuZEtleVBhdGgod2ViVmFs
dWVzLCBrZXlQYXRoLCB3ZWJLZXlzKTsKIAogICAgIHNpemVfdCB3ZWJLZXlzU2l6ZSA9IHdlYktl
eXMuc2l6ZSgpOwogICAgIGtleXMucmVzZXJ2ZUNhcGFjaXR5KHdlYktleXNTaXplKTsKQEAgLTU0
Nyw2ICs1NDcsMTEgQEAgdm9pZCBQbGF0Zm9ybUJyaWRnZTo6Y3JlYXRlSURCS2V5c0Zyb21TZXJp
YWxpemVkVmFsdWVzQW5kS2V5UGF0aChjb25zdCBWZWN0b3I8UmUKICAgICAgICAga2V5cy5hcHBl
bmQoUGFzc1JlZlB0cjxJREJLZXk+KHdlYktleXNbaV0pKTsKIH0KIAorUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IFBsYXRmb3JtQnJpZGdlOjppbmplY3RJREJLZXlJbnRvU2VyaWFs
aXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQoreworICAgIHJldHVybiB3
ZWJLaXRDbGllbnQoKS0+aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShrZXksIHZhbHVl
LCBrZXlQYXRoKTsKK30KKwogLy8gS2V5Z2VuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBTdHJpbmcgUGxhdGZv
cm1CcmlkZ2U6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZygKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQktleS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJLZXkuY3BwCmluZGV4IDdlODRkZjE3YjFiNjMyNjNlZDU5ZmU1
ODhmMGU1MWU4Y2Q4YjhiZGQuLmEyMDE0NmVhZDQ2OTc4YTU0MDJhNzg5N2QxMzVkYWE0NGFlY2M3
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQktleS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5LmNwcApAQCAtODMsNiAr
ODMsMTEgQEAgV2ViSURCS2V5IFdlYklEQktleTo6Y3JlYXRlRnJvbVZhbHVlQW5kS2V5UGF0aChj
b25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHMKICAgICByZXR1cm4gV2ViQ29yZTo6Y3Jl
YXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoc2VyaWFsaXplZFNjcmlwdFZh
bHVlLCBpZGJLZXlQYXRoKTsKIH0KIAorV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlIFdlYklEQktl
eTo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShjb25zdCBXZWJJREJLZXkmIGtleSwg
Y29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgV2ViSURCS2V5UGF0
aCYgcGF0aCkKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6
ZWRWYWx1ZShrZXksIHZhbHVlLCBwYXRoKTsKK30KKwogdm9pZCBXZWJJREJLZXk6OmFzc2lnbihj
b25zdCBXZWJJREJLZXkmIHZhbHVlKQogewogICAgIG1fcHJpdmF0ZSA9IHZhbHVlLm1fcHJpdmF0
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0
aWxpdGllc1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJCaW5kaW5n
VXRpbGl0aWVzVGVzdC5jcHAKaW5kZXggMWI3ZjE1NjkxOTUzZTM0NThhMWI5YjQ5MTM4YzA4NDBi
M2NmM2VlOC4uMDQ1NGVhOTgxYmVmMDhiMDA4MjZjNWNhNWQ2NzQzZWVjMWJlYzZhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJCaW5kaW5nVXRpbGl0
aWVzVGVzdC5jcHAKQEAgLTczLDYgKzczLDI5IEBAIHZvaWQgY2hlY2tLZXlQYXRoTnVsbFZhbHVl
KFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKICAg
ICBBU1NFUlRfRkFMU0UoaWRiS2V5LmdldCgpKTsKIH0KIAorUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IGluamVjdEtleShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK3sK
KyAgICBWZWN0b3I8SURCS2V5UGF0aEVsZW1lbnQ+IGlkYktleVBhdGg7CisgICAgSURCS2V5UGF0
aFBhcnNlRXJyb3IgcGFyc2VFcnJvcjsKKyAgICBJREJQYXJzZUtleVBhdGgoa2V5UGF0aCwgaWRi
S2V5UGF0aCwgcGFyc2VFcnJvcik7CisgICAgRVhQRUNUX0VRKElEQktleVBhdGhQYXJzZUVycm9y
Tm9uZSwgcGFyc2VFcnJvcik7CisgICAgcmV0dXJuIGluamVjdElEQktleUludG9TZXJpYWxpemVk
VmFsdWUoa2V5LCB2YWx1ZSwgaWRiS2V5UGF0aCk7Cit9CisKK3ZvaWQgY2hlY2tJbmplY3Rpb24o
UGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCit7CisgICAgUmVmUHRyPElEQktleT4g
a2V5ID0gcHJwS2V5OworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG5ld1ZhbHVl
ID0gaW5qZWN0S2V5KGtleSwgdmFsdWUsIGtleVBhdGgpOworICAgIEFTU0VSVF9UUlVFKG5ld1Zh
bHVlKTsKKyAgICBSZWZQdHI8SURCS2V5PiBleHRyYWN0ZWRLZXkgPSBjaGVja0tleUZyb21WYWx1
ZUFuZEtleVBhdGhJbnRlcm5hbChuZXdWYWx1ZS5nZXQoKSwga2V5UGF0aCk7CisgICAgRVhQRUNU
X1RSVUUoa2V5LT5pc0VxdWFsKGV4dHJhY3RlZEtleS5nZXQoKSkpOworfQorCit2b2lkIGNoZWNr
SW5qZWN0aW9uRmFpbHMoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCit7CisgICAgRVhQ
RUNUX0ZBTFNFKGluamVjdEtleShrZXksIHZhbHVlLCBrZXlQYXRoKSk7Cit9CisKIHZvaWQgY2hl
Y2tLZXlQYXRoU3RyaW5nVmFsdWUoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkKQogewogICAgIFJlZlB0cjxJ
REJLZXk+IGlkYktleSA9IGNoZWNrS2V5RnJvbVZhbHVlQW5kS2V5UGF0aEludGVybmFsKHZhbHVl
LCBrZXlQYXRoKTsKQEAgLTE2MCw2ICsxODMsNjcgQEAgVEVTVChJREJLZXlGcm9tVmFsdWVBbmRL
ZXlQYXRoVGVzdCwgQXJyYXkyRCkKICAgICBjaGVja0tleVBhdGhOdWxsVmFsdWUoc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmdldCgpLCAiWzRdIik7CiB9CiAKK1RFU1QoSW5qZWN0SURCS2V5VGVzdCwg
VG9wTGV2ZWxQcm9wZXJ0eVN0cmluZ1ZhbHVlKQoreworICAgIExvY2FsQ29udGV4dCB2OGNvbnRl
eHQ7CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpPYmplY3Q6Ok5ldygp
OworICAgIG9iamVjdC0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiZm9vIiksIHY4OjpTdHJpbmc6Ok5l
dygiem9vIikpOworCisgICAgY2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVTdHJpbmcoIm15
TmV3S2V5IiksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG9iamVjdCksICJiYXIiKTsK
KyAgICBjaGVja0luamVjdGlvbihJREJLZXk6OmNyZWF0ZU51bWJlcigxMjM0KSwgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUob2JqZWN0KSwgImJhciIpOworCisgICAgY2hlY2tJbmplY3Rp
b25GYWlscyhJREJLZXk6OmNyZWF0ZVN0cmluZygia2V5IiksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKG9iamVjdCksICJmb28uYmFyIik7CisgICAgY2hlY2tJbmplY3Rpb25GYWlscyhJ
REJLZXk6OmNyZWF0ZVN0cmluZygia2V5IiksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KG9iamVjdCksICJbM10iKTsKK30KKworVEVTVChJbmplY3RJREJLZXlUZXN0LCBUb3BMZXZlbEFy
cmF5RWxlbWVudCkKK3sKKyAgICBMb2NhbENvbnRleHQgdjhjb250ZXh0OworICAgIHY4OjpMb2Nh
bDx2ODo6QXJyYXk+IGFycmF5ID0gdjg6OkFycmF5OjpOZXcoKTsKKyAgICBhcnJheS0+U2V0KDMs
IHY4OjpTdHJpbmc6Ok5ldygiem9vIikpOworCisgICAgY2hlY2tJbmplY3Rpb24oSURCS2V5Ojpj
cmVhdGVTdHJpbmcoIm15TmV3S2V5IiksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFy
cmF5KSwgIlsyXSIpOworICAgIGNoZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlTnVtYmVyKDc4
OSksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFycmF5KSwgIls0XSIpOworICAgIGNo
ZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlRGF0ZSg0NTY3KSwgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoYXJyYXkpLCAiWzFdIik7CisKKyAgICBjaGVja0luamVjdGlvbkZhaWxzKElE
QktleTo6Y3JlYXRlU3RyaW5nKCJmb28iKSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
YXJyYXkpLCAiWzVdLmJhciIpOworfQorCitURVNUKEluamVjdElEQktleVRlc3QsIFN1YlByb3Bl
cnR5KQoreworICAgIExvY2FsQ29udGV4dCB2OGNvbnRleHQ7CisgICAgdjg6OkxvY2FsPHY4OjpP
YmplY3Q+IG9iamVjdCA9IHY4OjpPYmplY3Q6Ok5ldygpOworICAgIHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PiBzdWJQcm9wZXJ0eSA9IHY4OjpPYmplY3Q6Ok5ldygpOworICAgIHN1YlByb3BlcnR5LT5T
ZXQodjg6OlN0cmluZzo6TmV3KCJiYXIiKSwgdjg6OlN0cmluZzo6TmV3KCJ6ZWUiKSk7CisgICAg
b2JqZWN0LT5TZXQodjg6OlN0cmluZzo6TmV3KCJmb28iKSwgc3ViUHJvcGVydHkpOworCisgICAg
Y2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVTdHJpbmcoIm15TmV3S2V5IiksIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG9iamVjdCksICJmb28uYmF6Iik7CisgICAgY2hlY2tJbmpl
Y3Rpb24oSURCS2V5OjpjcmVhdGVOdW1iZXIoNzg5KSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUob2JqZWN0KSwgImZvby5iYXoiKTsKKyAgICBjaGVja0luamVjdGlvbihJREJLZXk6OmNy
ZWF0ZURhdGUoNDU2NyksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG9iamVjdCksICJm
b28uYmF6Iik7CisgICAgY2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVEYXRlKDQ1NjcpLCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShvYmplY3QpLCAiYmFyIik7CisKKyAgICBjaGVj
a0luamVjdGlvbkZhaWxzKElEQktleTo6Y3JlYXRlU3RyaW5nKCJ6b28iKSwgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUob2JqZWN0KSwgImZvby5iYXIuYmF6Iik7CisgICAgY2hlY2tJbmpl
Y3Rpb25GYWlscyhJREJLZXk6OmNyZWF0ZVN0cmluZygiem9vIiksIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKG9iamVjdCksICJmb28ueHl6LmZvbyIpOworfQorCitURVNUKEluamVjdElE
QktleVRlc3QsIEFycmF5MkQpCit7CisgICAgTG9jYWxDb250ZXh0IHY4Y29udGV4dDsKKyAgICB2
ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6Ok9iamVjdDo6TmV3KCk7CisgICAgdjg6
OkxvY2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2ODo6QXJyYXk6Ok5ldygpOworICAgIHY4OjpMb2Nh
bDx2ODo6QXJyYXk+IHN1YkFycmF5ID0gdjg6OkFycmF5OjpOZXcoKTsKKyAgICBzdWJBcnJheS0+
U2V0KDcsIHY4OjpTdHJpbmc6Ok5ldygiemVlIikpOworICAgIGFycmF5LT5TZXQoMywgc3ViQXJy
YXkpOworICAgIG9iamVjdC0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiZm9vIiksIGFycmF5KTsKKwor
ICAgIGNoZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlU3RyaW5nKCJteU5ld0tleSIpLCBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShvYmplY3QpLCAiZm9vWzNdWzhdIik7CisgICAgY2hl
Y2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVOdW1iZXIoNzg5KSwgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUob2JqZWN0KSwgImZvb1szXVs4XSIpOworICAgIGNoZWNrSW5qZWN0aW9uKElE
QktleTo6Y3JlYXRlRGF0ZSg0NTY3KSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUob2Jq
ZWN0KSwgImZvb1szXVs4XSIpOworICAgIGNoZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlU3Ry
aW5nKCJteU5ld0tleSIpLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShvYmplY3QpLCAi
YmFyIik7CisgICAgY2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVTdHJpbmcoIm15TmV3S2V5
IiksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG9iamVjdCksICJmb29bNF0iKTsKKwor
ICAgIGNoZWNrSW5qZWN0aW9uRmFpbHMoSURCS2V5OjpjcmVhdGVTdHJpbmcoInpvbyIpLCBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShvYmplY3QpLCAiZm9vWzNdWzddLmZvbyIpOworfQog
fSAvLyBuYW1lc3BhY2UKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQo=
</data>
<flag name="review"
          id="74294"
          type_id="1"
          status="+"
          setter="jorlow"
    />
          </attachment>
      

    </bug>

</bugzilla>