<?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>95409</bug_id>
          
          <creation_ts>2012-08-29 17:36:55 -0700</creation_ts>
          <short_desc>IndexedDB: Use ScriptValue instead of SerializedScriptValue for get/openCursor</short_desc>
          <delta_ts>2012-09-17 12:03:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>94023</dependson>
    
    <dependson>95385</dependson>
          <blocked>88287</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alec Flett">alecflett</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>abarth</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>michael</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>708109</commentid>
    <comment_count>0</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-08-29 17:36:55 -0700</bug_when>
    <thetext>This is the second half of bug 94023, and also involves a lot of code removal that will be easier after bug 95385 lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721031</commentid>
    <comment_count>1</comment_count>
      <attachid>164206</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-09-14 12:30:54 -0700</bug_when>
    <thetext>Created attachment 164206
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721032</commentid>
    <comment_count>2</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-09-14 12:31:45 -0700</bug_when>
    <thetext>haraken@ - this is the second half of bug 94023 - mind taking a look at this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721122</commentid>
    <comment_count>3</comment_count>
      <attachid>164206</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-14 14:13:21 -0700</bug_when>
    <thetext>Comment on attachment 164206
Patch

LGTM at a first quick look. I&apos;m now leaving, let me take a detailed look tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721428</commentid>
    <comment_count>4</comment_count>
      <attachid>164206</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-15 06:30:02 -0700</bug_when>
    <thetext>Comment on attachment 164206
Patch

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

LGTM with some nits.

&gt; Source/WebCore/Modules/indexeddb/IDBAny.h:63
&gt; +    static PassRefPtr&lt;IDBAny&gt; create(const T&amp; idbObject)

Are both create(const T&amp; idbObject) and create(PassRefPtr&lt;T&gt; idbObject) needed? You might want to remove create(PassRefPtr&lt;T&gt; idbObject) in favor of create(const T&amp; idbObject).

&gt; Source/WebCore/Modules/indexeddb/IDBCursor.cpp:276
&gt; +            ASSERT_UNUSED(injected, injected);

Given that the current code has ASSERT(valueAfterInjection), shouldn&apos;t this be ASSERT(injected)?

&gt; Source/WebCore/Modules/indexeddb/IDBCursor.cpp:277
&gt;              // FIXME: There is no way to report errors here. Move this into onSuccessWithContinuation so that we can abort the transaction there. See: https://bugs.webkit.org/show_bug.cgi?id=92278

You can move this comment to just before the ASSERT().

&gt; Source/WebCore/Modules/indexeddb/IDBRequest.cpp:376
&gt; +    ASSERT(injected);
&gt; +    if (!injected) {

This code looks a bit strange:

- If &apos;injected&apos; can be 0, &apos;ASSERT(injected)&apos; should be removed.
- If &apos;injected&apos; shouldn&apos;t be 0, &apos;if (!injected)&apos; should be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722099</commentid>
    <comment_count>5</comment_count>
      <attachid>164423</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-09-17 11:25:08 -0700</bug_when>
    <thetext>Created attachment 164423
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722106</commentid>
    <comment_count>6</comment_count>
      <attachid>164423</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-17 11:31:02 -0700</bug_when>
    <thetext>Comment on attachment 164423
Patch for landing

Rejecting attachment 164423 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
oid WebCore::IDBRequest::onSuccess(WTF::PassRefPtr&lt;WebCore::SerializedScriptValue&gt;, WTF::PassRefPtr&lt;WebCore::IDBKey&gt;, const WebCore::IDBKeyPath&amp;)&apos;:
Source/WebCore/Modules/indexeddb/IDBRequest.cpp:374: error: unused variable &apos;injected&apos;
  CXX(target) out/Release/obj.target/webcore_remaining/Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.o
make: *** [out/Release/obj.target/webcore_remaining/Source/WebCore/Modules/indexeddb/IDBRequest.o] Error 1
make: *** Waiting for unfinished jobs....

Full output: http://queues.webkit.org/results/13860975</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722115</commentid>
    <comment_count>7</comment_count>
      <attachid>164425</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-09-17 11:41:13 -0700</bug_when>
    <thetext>Created attachment 164425
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722138</commentid>
    <comment_count>8</comment_count>
      <attachid>164425</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-17 12:03:16 -0700</bug_when>
    <thetext>Comment on attachment 164425
Patch for landing

Clearing flags on attachment: 164425

Committed r128789: &lt;http://trac.webkit.org/changeset/128789&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722139</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-17 12:03:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164206</attachid>
            <date>2012-09-14 12:30:54 -0700</date>
            <delta_ts>2012-09-17 11:25:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95409-20120914123026.patch</filename>
            <type>text/plain</type>
            <size>38815</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDQzMTU3NjI5MzRhOTM2
YjMzYWJkODJlYjJmMzczZWYxZjg1ZDQzZC4uOGUyMWU2ODQzYTJhYzExMzBhMDEyOTI3MDc0NDk2
ZThhMTBkMTcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTA5LTE0ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFVz
ZSBTY3JpcHRWYWx1ZSBpbnN0ZWFkIG9mIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBmb3IgZ2V0L29w
ZW5DdXJzb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk1NDA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyByZWR1Y2VzIGEgYnVuY2ggb2Ygc2VyaWFsaXphdGlvbi9kZXNlcmlhbGl6YXRpb24gd2hl
biB3cml0aW5nCisgICAgICAgIHRvIG9iamVjdHN0b3JlcyB3aXRoIGluZGV4ZXMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBhcyB0aGlzIGNvdmVycyBjb3JlIGZ1bmN0aW9uYWxpdHkgb2YgSW5k
ZXhlZERCLCBhbmQKKyAgICAgICAgYWxtb3N0IGV2ZXJ5IHRlc3Qgd291bGQgZmFpbC4gU29tZSBs
aWtlbHkgdGVzdHMgdGhhdCB3b3VsZCBmYWlsCisgICAgICAgIGZ1bmRhbWVudGFsbHkgaW5jbHVk
ZToKKworICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbAor
ICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItYmFzaWNzLmh0bWwKKyAgICAgICAgc3Rv
cmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkFueS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJBbnk6OnNjcmlwdFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkFueTo6aW50ZWdlcik6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkFueTo6c2V0KToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJBbnkuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCQW55KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkFueTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpzZXRW
YWx1ZVJlYWR5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZTo6dmVyc2lvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRSZXN1bHRDdXJz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNzKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNzSW50ZXJu
YWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAoSURCUmVxdWVz
dCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25DYWxsYmFja3Mu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmRlc2VyaWFsaXplSURCVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6aW5q
ZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9JREJCaW5k
aW5nVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisK
IDIwMTItMDktMTQgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiByZXVzZSBXZWJJbnNwZWN0b3IuUHJvZ3Jlc3NJbmRpY2F0b3Ig
aW4gQXVkaXRzIHBhbmVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGRmNjA1MWZiMzhl
YTE2MmY4ZmExZDZkYTA4YjUzZmJjMTFjNDU4NzYuLmI1YzM0ODA2YzJmYzdhY2NkNDQ3YzQwOWEw
NGI2NmIyNTQ3NTgzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTItMDktMTQgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEluZGV4ZWREQjogVXNlIFNjcmlwdFZhbHVlIGluc3RlYWQgb2YgU2VyaWFsaXplZFNj
cmlwdFZhbHVlIGZvciBnZXQvb3BlbkN1cnNvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHJlbW92ZXMgYSBidW5jaCBvZiB0ZXN0cyB0aGF0IGhh
dmUgYmVlbiBtaWdyYXRlZCB0bworICAgICAgICBMYXlvdXRUZXN0cywgaW4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2ODE4LgorCisgICAgICAgICogdGVzdHMvSURC
QmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tLZXlGcm9t
VmFsdWVBbmRLZXlQYXRoSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tLZXlQYXRo
TnVsbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmluamVjdEtleSk6CisgICAgICAgIChXZWJD
b3JlOjpjaGVja0luamVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0luamVjdGlvbkZh
aWxzKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrS2V5UGF0aFN0cmluZ1ZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNoZWNrS2V5UGF0aE51bWJlclZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0lEQktleVBhdGhUZXN0LmNwcDoKKwogMjAxMi0wOS0x
NCAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIHRp
bWUgaW5wdXQgbGFuZyBhdHRyaWJ1dGUgYXdhcmUgZm9yIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwCmluZGV4IDJjZDhhMDk0YzAyM2NjM2Y3MDRm
ZWI4YmQwZGU3NTliNzU4YjY4NjkuLmM2MDMyNTVhN2U3YzA4YjA3NjZhMzU1ZDBmOTg1ZGZmZGEx
MjJhYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFu
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcApA
QCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIklEQkluZGV4LmgiCiAjaW5jbHVkZSAiSURCS2V5
UGF0aC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCi0jaW5jbHVkZSAiU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTIwLDEwICsxMTks
MTAgQEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCQW55OjppZGJUcmFuc2FjdGlvbigp
CiAgICAgcmV0dXJuIG1faWRiVHJhbnNhY3Rpb247CiB9CiAKLVBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBJREJBbnk6OnNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpCitTY3JpcHRWYWx1
ZSBJREJBbnk6OnNjcmlwdFZhbHVlKCkKIHsKLSAgICBBU1NFUlQobV90eXBlID09IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZVR5cGUpOwotICAgIHJldHVybiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsK
KyAgICBBU1NFUlQobV90eXBlID09IFNjcmlwdFZhbHVlVHlwZSk7CisgICAgcmV0dXJuIG1fc2Ny
aXB0VmFsdWU7CiB9CiAKIGNvbnN0IFN0cmluZyYgSURCQW55OjpzdHJpbmcoKQpAQCAtMTMyLDYg
KzEzMSwxMiBAQCBjb25zdCBTdHJpbmcmIElEQkFueTo6c3RyaW5nKCkKICAgICByZXR1cm4gbV9z
dHJpbmc7CiB9CiAKK2ludDY0X3QgSURCQW55OjppbnRlZ2VyKCkKK3sKKyAgICBBU1NFUlQobV90
eXBlID09IEludGVnZXJUeXBlKTsKKyAgICByZXR1cm4gbV9pbnRlZ2VyOworfQorCiB2b2lkIElE
QkFueTo6c2V0TnVsbCgpCiB7CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmRlZmluZWRUeXBlKTsK
QEAgLTIwMSwxMSArMjA2LDExIEBAIHZvaWQgSURCQW55OjpzZXQoUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZT4gdmFsdWUpCiAgICAgbV9pZGJPYmplY3RTdG9yZSA9IHZhbHVlOwogfQogCi12b2lk
IElEQkFueTo6c2V0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSkKK3Zv
aWQgSURCQW55OjpzZXQoY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlKQogewogICAgIEFTU0VSVCht
X3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7Ci0gICAgbV90eXBlID0gU2VyaWFsaXplZFNjcmlwdFZh
bHVlVHlwZTsKLSAgICBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA9IHZhbHVlOworICAgIG1fdHlw
ZSA9IFNjcmlwdFZhbHVlVHlwZTsKKyAgICBtX3NjcmlwdFZhbHVlID0gdmFsdWU7CiB9CiAKIHZv
aWQgSURCQW55OjpzZXQoY29uc3QgSURCS2V5UGF0aCYgdmFsdWUpCkBAIC0yMzYsNiArMjQxLDEz
IEBAIHZvaWQgSURCQW55OjpzZXQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBtX3N0cmluZyA9
IHZhbHVlOwogfQogCit2b2lkIElEQkFueTo6c2V0KGludDY0X3QgdmFsdWUpCit7CisgICAgQVNT
RVJUKG1fdHlwZSA9PSBVbmRlZmluZWRUeXBlKTsKKyAgICBtX3R5cGUgPSBJbnRlZ2VyVHlwZTsK
KyAgICBtX2ludGVnZXIgPSB2YWx1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFu
eS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKaW5kZXggZDg3
ODNkMjA1OWM3ZTE2ZDk5ZmYzZjg2NzNiZWY4MmEwMTg3YzBmMS4uYTc3YmIxNzZkMWQ2MjU0MTE1
ODYwNWQzN2RmMTY5ZjliNzBjMDQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQW55LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQW55LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQogCisjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgpAQCAtNDUsNyArNDYsNiBAQCBjbGFzcyBJREJLZXk7CiBjbGFzcyBJREJLZXlQYXRoOwogY2xh
c3MgSURCT2JqZWN0U3RvcmU7CiBjbGFzcyBJREJUcmFuc2FjdGlvbjsKLWNsYXNzIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTsKIAogY2xhc3MgSURCQW55IDogcHVibGljIFJlZkNvdW50ZWQ8SURCQW55
PiB7CiBwdWJsaWM6CkBAIC01OSwxMCArNTksMTEgQEAgcHVibGljOgogICAgICAgICBhbnktPnNl
dChpZGJPYmplY3QpOwogICAgICAgICByZXR1cm4gYW55LnJlbGVhc2UoKTsKICAgICB9Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCQW55PiBjcmVhdGUoY29uc3QgSURCS2V5UGF0aCYga2V5UGF0
aCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkFu
eT4gY3JlYXRlKGNvbnN0IFQmIGlkYk9iamVjdCkKICAgICB7CiAgICAgICAgIFJlZlB0cjxJREJB
bnk+IGFueSA9IElEQkFueTo6Y3JlYXRlSW52YWxpZCgpOwotICAgICAgICBhbnktPnNldChrZXlQ
YXRoKTsKKyAgICAgICAgYW55LT5zZXQoaWRiT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIGFueS5y
ZWxlYXNlKCk7CiAgICAgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC03Miw2ICs3Mywx
MiBAQCBwdWJsaWM6CiAgICAgICAgIGFueS0+c2V0KGlkYk9iamVjdCk7CiAgICAgICAgIHJldHVy
biBhbnkucmVsZWFzZSgpOwogICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJBbnk+IGNy
ZWF0ZShpbnQ2NF90IHZhbHVlKQorICAgIHsKKyAgICAgICAgUmVmUHRyPElEQkFueT4gYW55ID0g
SURCQW55OjpjcmVhdGVJbnZhbGlkKCk7CisgICAgICAgIGFueS0+c2V0KHZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuIGFueS5yZWxlYXNlKCk7CisgICAgfQogICAgIH5JREJBbnkoKTsKIAogICAgIGVu
dW0gVHlwZSB7CkBAIC04Niw3ICs5Myw4IEBAIHB1YmxpYzoKICAgICAgICAgSURCS2V5VHlwZSwK
ICAgICAgICAgSURCT2JqZWN0U3RvcmVUeXBlLAogICAgICAgICBJREJUcmFuc2FjdGlvblR5cGUs
Ci0gICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVR5cGUsCisgICAgICAgIFNjcmlwdFZhbHVl
VHlwZSwKKyAgICAgICAgSW50ZWdlclR5cGUsCiAgICAgICAgIFN0cmluZ1R5cGUsCiAgICAgfTsK
IApAQCAtMTAxLDcgKzEwOSw4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQktleT4gaWRi
S2V5KCk7CiAgICAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUoKTsK
ICAgICBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBpZGJUcmFuc2FjdGlvbigpOwotICAgIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsdWUoKTsK
KyAgICBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZSgpOworICAgIGludDY0X3QgaW50ZWdlcigpOwog
ICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCk7CiAKICAgICAvLyBTZXQgY2FuIG9ubHkgYmUgY2Fs
bGVkIG9uY2UuCkBAIC0xMTUsOSArMTI0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldChQYXNz
UmVmUHRyPElEQktleT4pOwogICAgIHZvaWQgc2V0KFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+
KTsKICAgICB2b2lkIHNldChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPik7Ci0gICAgdm9pZCBz
ZXQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKICAgICB2b2lkIHNldChjb25z
dCBJREJLZXlQYXRoJik7CiAgICAgdm9pZCBzZXQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBz
ZXQoY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAgICB2b2lkIHNldChpbnQ2NF90KTsKIAogcHJpdmF0
ZToKICAgICBJREJBbnkoKTsKQEAgLTEzNCw4ICsxNDQsOSBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxJREJLZXk+IG1faWRiS2V5OwogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gbV9pZGJPYmpl
Y3RTdG9yZTsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1faWRiVHJhbnNhY3Rpb247Ci0g
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9zZXJpYWxpemVkU2NyaXB0VmFsdWU7
CisgICAgU2NyaXB0VmFsdWUgbV9zY3JpcHRWYWx1ZTsKICAgICBTdHJpbmcgbV9zdHJpbmc7Cisg
ICAgaW50NjRfdCBtX2ludGVnZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCA5NmZl
ODJmNzZkNmQzY2I3MTJiODY0ZjJmYzVlMGRlNDRjMGU5ZmZmLi5iNjRlMTNlZTA4NjU3YTY5NWIw
Y2U0OWRmNzRkNTAzZGI1NTcxOTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJJREJUcmFj
aW5nLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjYwLDI4ICsyNTksMjUgQEAgdm9pZCBJREJDdXJzb3I6
OmNsb3NlKCkKICAgICBtX3JlcXVlc3QuY2xlYXIoKTsKIH0KIAotdm9pZCBJREJDdXJzb3I6OnNl
dFZhbHVlUmVhZHkoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHBy
aW1hcnlLZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSkKK3Zv
aWQgSURCQ3Vyc29yOjpzZXRWYWx1ZVJlYWR5KFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NS
ZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBTY3JpcHRWYWx1ZSYgdmFsdWUpCiB7CiAgICAgbV9j
dXJyZW50S2V5ID0ga2V5OwogICAgIG1fY3VycmVudFByaW1hcnlLZXkgPSBwcmltYXJ5S2V5Owog
Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUgPSBwcnBWYWx1ZTsKICAg
ICBpZiAoIWlzS2V5Q3Vyc29yKCkpIHsKICAgICAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBv
YmplY3RTdG9yZSA9IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCk7CiAgICAgICAgIGNvbnN0IElEQk9i
amVjdFN0b3JlTWV0YWRhdGEgbWV0YWRhdGEgPSBvYmplY3RTdG9yZS0+bWV0YWRhdGEoKTsKICAg
ICAgICAgaWYgKG1ldGFkYXRhLmF1dG9JbmNyZW1lbnQgJiYgIW1ldGFkYXRhLmtleVBhdGguaXNO
dWxsKCkpIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBleHBl
Y3RlZEtleSA9IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKHZhbHVl
LCBtZXRhZGF0YS5rZXlQYXRoKTsKKyAgICAgICAgICAgIFJlZlB0cjxJREJLZXk+IGV4cGVjdGVk
S2V5ID0gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCh2YWx1ZSwgbWV0YWRh
dGEua2V5UGF0aCk7CiAgICAgICAgICAgICBBU1NFUlQoIWV4cGVjdGVkS2V5IHx8IGV4cGVjdGVk
S2V5LT5pc0VxdWFsKG1fY3VycmVudFByaW1hcnlLZXkuZ2V0KCkpKTsKICNlbmRpZgotICAgICAg
ICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWVBZnRlckluamVjdGlvbiA9
IGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUobV9jdXJyZW50UHJpbWFyeUtleSwgdmFs
dWUsIG1ldGFkYXRhLmtleVBhdGgpOwotICAgICAgICAgICAgQVNTRVJUKHZhbHVlQWZ0ZXJJbmpl
Y3Rpb24pOworICAgICAgICAgICAgYm9vbCBpbmplY3RlZCA9IGluamVjdElEQktleUludG9TY3Jp
cHRWYWx1ZShtX2N1cnJlbnRQcmltYXJ5S2V5LCB2YWx1ZSwgbWV0YWRhdGEua2V5UGF0aCk7Cisg
ICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGluamVjdGVkLCBpbmplY3RlZCk7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogVGhlcmUgaXMgbm8gd2F5IHRvIHJlcG9ydCBlcnJvcnMgaGVyZS4gTW92ZSB0
aGlzIGludG8gb25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbiBzbyB0aGF0IHdlIGNhbiBhYm9ydCB0
aGUgdHJhbnNhY3Rpb24gdGhlcmUuIFNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkyMjc4Ci0gICAgICAgICAgICBpZiAodmFsdWVBZnRlckluamVjdGlvbikKLSAg
ICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlQWZ0ZXJJbmplY3Rpb247CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgbV9jdXJyZW50VmFsdWUgPSBJREJBbnk6OmNyZWF0ZSh2YWx1ZS5yZWxlYXNlKCkp
OworICAgIG1fY3VycmVudFZhbHVlID0gSURCQW55OjpjcmVhdGUodmFsdWUpOwogCiAgICAgbV9n
b3RWYWx1ZSA9IHRydWU7CiAgICAgbV92YWx1ZUlzRGlydHkgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAppbmRleCAxYjYxOTM1M2ZlZGI1MmJi
YmUxMDIxZjliY2E4YTk5NjUwMTJhN2U2Li45YTk1MTQ3NTc4NmViN2EzM2NlN2ZmMzI1MDdjNTlk
MTM3YmM3NGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3IuaApAQCAtNDEsNyArNDEsNiBAQCBjbGFzcyBJREJDYWxsYmFja3M7CiBjbGFzcyBJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgSURCUmVxdWVzdDsKIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7Ci1jbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKIHR5cGVkZWYgaW50
IEV4Y2VwdGlvbkNvZGU7CiAKQEAgLTgyLDcgKzgxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBw
b3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpOwogICAgIHZvaWQgY2xvc2UoKTsKLSAgICB2b2lk
IHNldFZhbHVlUmVhZHkoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJp
bWFyeUtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKKyAgICB2b2lkIHNl
dFZhbHVlUmVhZHkoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFy
eUtleSwgU2NyaXB0VmFsdWUmKTsKIAogICAgIC8vIFRoZSBzcGVjIHJlcXVpcmVzIHRoYXQgdGhl
IHNjcmlwdCBvYmplY3QgdGhhdCB3cmFwcyB0aGUgdmFsdWUKICAgICAvLyBiZSB1bmNoYW5nZWQg
dW50aWwgdGhlIHZhbHVlIGNoYW5nZXMgYXMgYSByZXN1bHQgb2YgdGhlIGN1cnNvcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IGQ2
NDFkMDRhNDM2ZTFmZmY1ZjY0MTg0ZmQ4MzQyZjQyZDVjMDM3NDkuLjhlMGMzYWQ1NjQyMmQ4Zjg5
NDgxM2M0MTgyMjlhNzY3NzFlY2Y4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBQYXNzUmVmUHRy
PElEQkFueT4gSURCRGF0YWJhc2U6OnZlcnNpb24oKSBjb25zdAogICAgIGludDY0X3QgaW50VmVy
c2lvbiA9IG1fbWV0YWRhdGEuaW50VmVyc2lvbjsKICAgICBpZiAoaW50VmVyc2lvbiA9PSBJREJE
YXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pCiAgICAgICAgIHJldHVybiBJREJBbnk6OmNy
ZWF0ZVN0cmluZyhtX21ldGFkYXRhLnZlcnNpb24pOwotICAgIHJldHVybiBJREJBbnk6OmNyZWF0
ZShTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bWJlclZhbHVlKGludFZlcnNpb24pKTsKKyAgICBy
ZXR1cm4gSURCQW55OjpjcmVhdGUoaW50VmVyc2lvbik7CiB9CiAKIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmU+IElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmlu
ZGV4IDVmZmMxY2JhOWUxMGUxMzZhMWI4NzZhMTNjNjg2YzQyYzI2NjRmM2UuLmNjNmMyOGVmMjg0
ZWZkNzNmYTY1MzFjZjBkNWE5OTBjZTNhOTdjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTM0MCw5ICszNDAsOCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9IGN1cnNv
ci0+cHJpbWFyeUtleSgpOwogICAgICAgICAgICAgUmVmUHRyPElEQkFueT4gdmFsdWVBbnkgPSBj
dXJzb3ItPnZhbHVlKCk7CiAKLSAgICAgICAgICAgIEFTU0VSVCh2YWx1ZUFueS0+dHlwZSgpID09
IElEQkFueTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlVHlwZSk7Ci0gICAgICAgICAgICBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSB2YWx1ZUFueS0+c2VyaWFs
aXplZFNjcmlwdFZhbHVlKCk7Ci0gICAgICAgICAgICBTY3JpcHRWYWx1ZSB2YWx1ZShkZXNlcmlh
bGl6ZUlEQlZhbHVlKGNvbnRleHQsIHNlcmlhbGl6ZWRWYWx1ZSkpOworICAgICAgICAgICAgQVNT
RVJUKHZhbHVlQW55LT50eXBlKCkgPT0gSURCQW55OjpTY3JpcHRWYWx1ZVR5cGUpOworICAgICAg
ICAgICAgU2NyaXB0VmFsdWUgdmFsdWUgPSB2YWx1ZUFueS0+c2NyaXB0VmFsdWUoKTsKIAogICAg
ICAgICAgICAgSURCT2JqZWN0U3RvcmU6OkluZGV4S2V5cyBpbmRleEtleXM7CiAgICAgICAgICAg
ICBnZW5lcmF0ZUluZGV4S2V5c0ZvclZhbHVlKG1faW5kZXhNZXRhZGF0YSwgdmFsdWUsICZpbmRl
eEtleXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0
LmNwcAppbmRleCA0M2YyNWE4YzNjZWFlNjZhY2MwMzFkZDc4NTAwMWNjYzBkZWI5MWI2Li43NTk2
OGNjNjIyMWVhMmNlZTQ4YWJlYjkwMzljZmQ0ZDYxN2U0MzVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtMjE0LDcgKzIxNCw3IEBA
IFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBJREJSZXF1ZXN0OjpnZXRSZXN1bHRDdXJzb3IoKQogICAg
IHJldHVybiAwOwogfQogCi12b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdEN1cnNvcihQYXNzUmVm
UHRyPElEQkN1cnNvcj4gY3Vyc29yLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRy
PElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZh
bHVlKQordm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJz
b3I+IGN1cnNvciwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHBy
aW1hcnlLZXksIGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQobV9yZWFk
eVN0YXRlID09IFBFTkRJTkcpOwogICAgIG1fY3Vyc29yS2V5ID0ga2V5OwpAQCAtMjc2LDEyICsy
NzYsMTMgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdM
aXN0PiBkb21TdHJpbmdMaXN0KQogICAgIGVucXVldWVFdmVudChjcmVhdGVTdWNjZXNzRXZlbnQo
KSk7CiB9CiAKLXZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1Jl
ZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiB2YWx1ZSkKK3ZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1Jl
ZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBzZXJpYWxpemVkVmFsdWUpCiB7CiAgICAgSURCX1RSQUNFKCJJREJSZXF1ZXN0OjpvblN1Y2Nl
c3MoSURCQ3Vyc29yKSIpOwogICAgIGlmICghc2hvdWxkRW5xdWV1ZUV2ZW50KCkpCiAgICAgICAg
IHJldHVybjsKIAorICAgIFNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNlcmlhbGl6ZWRWYWx1ZSk7CiAgICAgQVNTRVJUKG1f
Y3Vyc29yVHlwZSAhPSBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpJbnZhbGlkQ3Vyc29yVHlw
ZSk7CiAgICAgUmVmUHRyPElEQkN1cnNvcj4gY3Vyc29yOwogICAgIGlmIChtX2N1cnNvclR5cGUg
PT0gSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6SW5kZXhLZXlDdXJzb3IpCkBAIC0zMDIsNyAr
MzAzLDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+IGlk
YktleSkKICAgICBpZiAoaWRiS2V5ICYmIGlkYktleS0+aXNWYWxpZCgpKQogICAgICAgICBtX3Jl
c3VsdCA9IElEQkFueTo6Y3JlYXRlKGlkYktleSk7CiAgICAgZWxzZQotICAgICAgICBtX3Jlc3Vs
dCA9IElEQkFueTo6Y3JlYXRlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dW5kZWZpbmVkVmFsdWUo
KSk7CisgICAgICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVhdGVJbnZhbGlkKCk7CiAgICAgZW5x
dWV1ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NFdmVudCgpKTsKIH0KIApAQCAtMzM3LDkgKzMzOCw4IEBA
IHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsCiAgICAgaWYgKCFzaG91bGRFbnF1ZXVlRXZlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShzZXJpYWxp
emVkU2NyaXB0VmFsdWUpOwotICAgIG1fcGVuZGluZ0N1cnNvci5jbGVhcigpOwotICAgIGVucXVl
dWVFdmVudChjcmVhdGVTdWNjZXNzRXZlbnQoKSk7CisgICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBk
ZXNlcmlhbGl6ZUlEQlZhbHVlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2VyaWFsaXplZFNj
cmlwdFZhbHVlKTsKKyAgICBvblN1Y2Nlc3NJbnRlcm5hbCh2YWx1ZSk7CiB9CiAKICNpZm5kZWYg
TkRFQlVHCkBAIC0zNjQsMzAgKzM2NCwzNyBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwU2VyaWFsaXplZFNjcmlwdAogI2lm
bmRlZiBOREVCVUcKICAgICBBU1NFUlQoa2V5UGF0aCA9PSBlZmZlY3RpdmVPYmplY3RTdG9yZSht
X3NvdXJjZSktPmtleVBhdGgoKSk7CiAjZW5kaWYKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiB2YWx1ZSA9IHBycFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKyAgICBTY3JpcHRWYWx1
ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBw
cnBTZXJpYWxpemVkU2NyaXB0VmFsdWUpOwogCiAgICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtl
eSA9IHBycFByaW1hcnlLZXk7CiAjaWZuZGVmIE5ERUJVRwotICAgIFJlZlB0cjxJREJLZXk+IGV4
cGVjdGVkS2V5ID0gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgodmFs
dWUsIGtleVBhdGgpOworICAgIFJlZlB0cjxJREJLZXk+IGV4cGVjdGVkS2V5ID0gY3JlYXRlSURC
S2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCh2YWx1ZSwga2V5UGF0aCk7CiAgICAgQVNTRVJU
KCFleHBlY3RlZEtleSB8fCBleHBlY3RlZEtleS0+aXNFcXVhbChwcmltYXJ5S2V5LmdldCgpKSk7
CiAjZW5kaWYKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZUFmdGVySW5q
ZWN0aW9uID0gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShwcmltYXJ5S2V5LCB2YWx1
ZSwga2V5UGF0aCk7Ci0gICAgQVNTRVJUKHZhbHVlQWZ0ZXJJbmplY3Rpb24pOwotICAgIGlmICgh
dmFsdWVBZnRlckluamVjdGlvbikgeworICAgIGJvb2wgaW5qZWN0ZWQgPSBpbmplY3RJREJLZXlJ
bnRvU2NyaXB0VmFsdWUocHJpbWFyeUtleSwgdmFsdWUsIGtleVBhdGgpOworICAgIEFTU0VSVChp
bmplY3RlZCk7CisgICAgaWYgKCFpbmplY3RlZCkgewogICAgICAgICAvLyBDaGVja3MgaW4gcHV0
KCkgZW5zdXJlIHRoaXMgc2hvdWxkIG9ubHkgaGFwcGVuIGlmIEkvTyBlcnJvciBvY2N1cnMuCiAg
ICAgICAgIG9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yIGluc2VydGluZyBnZW5lcmF0ZWQga2V5
IGludG8gdGhlIG9iamVjdC4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgdmFsdWUg
PSB2YWx1ZUFmdGVySW5qZWN0aW9uOwotICAgIG9uU3VjY2Vzcyh2YWx1ZS5yZWxlYXNlKCkpOwor
ICAgIG9uU3VjY2Vzc0ludGVybmFsKHZhbHVlKTsKK30KKwordm9pZCBJREJSZXF1ZXN0OjpvblN1
Y2Nlc3NJbnRlcm5hbChjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUpCit7CisgICAgbV9yZXN1bHQg
PSBJREJBbnk6OmNyZWF0ZSh2YWx1ZSk7CisgICAgbV9wZW5kaW5nQ3Vyc29yLmNsZWFyKCk7Cisg
ICAgZW5xdWV1ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NFdmVudCgpKTsKIH0KIAotdm9pZCBJREJSZXF1
ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+
IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSkKK3Zv
aWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQ
dHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
c2VyaWFsaXplZFZhbHVlKQogewogICAgIElEQl9UUkFDRSgiSURCUmVxdWVzdDo6b25TdWNjZXNz
KGtleSwgcHJpbWFyeUtleSwgdmFsdWUpIik7CiAgICAgaWYgKCFzaG91bGRFbnF1ZXVlRXZlbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCisgICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6
ZUlEQlZhbHVlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2VyaWFsaXplZFZhbHVlKTsKICAg
ICBBU1NFUlQobV9wZW5kaW5nQ3Vyc29yKTsKICAgICBzZXRSZXN1bHRDdXJzb3IobV9wZW5kaW5n
Q3Vyc29yLnJlbGVhc2UoKSwga2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSk7CiAgICAgZW5xdWV1ZUV2
ZW50KGNyZWF0ZVN1Y2Nlc3NFdmVudCgpKTsKQEAgLTQ1Niw3ICs0NjMsNyBAQCBib29sIElEQlJl
cXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgaWYgKGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCkgewogICAgICAgICBjdXJz
b3JUb05vdGlmeSA9IGdldFJlc3VsdEN1cnNvcigpOwogICAgICAgICBpZiAoY3Vyc29yVG9Ob3Rp
ZnkpCi0gICAgICAgICAgICBjdXJzb3JUb05vdGlmeS0+c2V0VmFsdWVSZWFkeShtX2N1cnNvcktl
eS5yZWxlYXNlKCksIG1fY3Vyc29yUHJpbWFyeUtleS5yZWxlYXNlKCksIG1fY3Vyc29yVmFsdWUu
cmVsZWFzZSgpKTsKKyAgICAgICAgICAgIGN1cnNvclRvTm90aWZ5LT5zZXRWYWx1ZVJlYWR5KG1f
Y3Vyc29yS2V5LnJlbGVhc2UoKSwgbV9jdXJzb3JQcmltYXJ5S2V5LnJlbGVhc2UoKSwgbV9jdXJz
b3JWYWx1ZSk7CiAgICAgfQogCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
LnVwZ3JhZGVuZWVkZWRFdmVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5oCmluZGV4IDdmOTk5MjQ4NTNlZjgwNjdjMTIyNmI0ZThhNTc2MGZhN2Y3
YjAzMjQuLmQ4MmZhYzcyMDdjMTFlZWJlNDJmNzEzZTBlOTAwYzdmYWRlNDhkNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTExMyw2ICsx
MTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlOjpUYXNrVHlwZSwgSURCVHJhbnNhY3Rpb24qKTsKICAgICB2b2lkIGVucXVldWVFdmVudChQ
YXNzUmVmUHRyPEV2ZW50Pik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEVucXVldWVFdmVudCgp
IGNvbnN0OworICAgIHZvaWQgb25TdWNjZXNzSW50ZXJuYWwoY29uc3QgU2NyaXB0VmFsdWUmKTsK
IAogICAgIFJlZlB0cjxJREJBbnk+IG1fcmVzdWx0OwogICAgIHVuc2lnbmVkIHNob3J0IG1fZXJy
b3JDb2RlOwpAQCAtMTMxLDcgKzEzMiw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBFdmVudFRh
cmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOwogCiAgICAgUGFzc1JlZlB0cjxJREJD
dXJzb3I+IGdldFJlc3VsdEN1cnNvcigpOwotICAgIHZvaWQgc2V0UmVzdWx0Q3Vyc29yKFBhc3NS
ZWZQdHI8SURCQ3Vyc29yPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4g
cHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKKyAgICB2b2lk
IHNldFJlc3VsdEN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvcj4sIFBhc3NSZWZQdHI8SURCS2V5
PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIGNvbnN0IFNjcmlwdFZhbHVlJik7CiAK
ICAgICBSZWZQdHI8SURCQW55PiBtX3NvdXJjZTsKICAgICBjb25zdCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIG1fdGFza1R5cGU7CkBAIC0xNDYsNyArMTQ3LDcgQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8SURCQ3Vyc29yPiBtX3BlbmRpbmdDdXJzb3I7CiAgICAgUmVm
UHRyPElEQktleT4gbV9jdXJzb3JLZXk7CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJzb3JQcmlt
YXJ5S2V5OwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fY3Vyc29yVmFsdWU7
CisgICAgU2NyaXB0VmFsdWUgbV9jdXJzb3JWYWx1ZTsKICAgICBib29sIG1fZGlkRmlyZVVwZ3Jh
ZGVOZWVkZWRFdmVudDsKIAogICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbkNhbGxiYWNrcy5oCmluZGV4IDhkOTA2YTZlYjgyYzU5MTNiNmMwMGUxZGNjZWU0ZTc4
ZWMyZmZlOWYuLjE4OTg4NmY5YmNlMmQ4ODc5NjlhZDJkMTdlNDYxMzEwNzQ1YzNiMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25DYWxsYmFja3MuaApAQCAtMzEsNyArMzEsNiBAQAogCiAjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCiAKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCmluZGV4IDQxNzRi
NzA1MjgyYmE3M2RlNTAxZDEyNjQ1NjcwYjY3NTA0YjA5YTEuLjI1ZDY1YThhM2JlMzYzY2QyOGNj
NTdkYTQyZmViNjJiNDE4OThkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBAIC0yMDksNTkgKzIwOSwxNyBAQCBQYXNzUmVm
UHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChjb25zdCBT
Y3JpcHRWYWx1ZSYgdmFsdQogICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVB
bmRLZXlQYXRoKHZhbHVlLCBrZXlQYXRoLnN0cmluZygpKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQ
dHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aChQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCkKLXsKLSAgICBWZWN0b3I8U3RyaW5nPiBrZXlQYXRoRWxlbWVudHM7Ci0gICAgSURCS2V5
UGF0aFBhcnNlRXJyb3IgZXJyb3I7Ci0gICAgSURCUGFyc2VLZXlQYXRoKGtleVBhdGgsIGtleVBh
dGhFbGVtZW50cywgZXJyb3IpOwotICAgIEFTU0VSVChlcnJvciA9PSBJREJLZXlQYXRoUGFyc2VF
cnJvck5vbmUpOwotCi0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUgPSBw
cnBWYWx1ZTsKLQotICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6Q29u
dGV4dDo6U2NvcGUgc2NvcGUoVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5lbnN1cmVBdXhp
bGlhcnlDb250ZXh0KCkpOwotCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4VmFsdWUodmFs
dWUtPmRlc2VyaWFsaXplKCkpOwotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OEtleShnZXRO
dGhWYWx1ZU9uS2V5UGF0aCh2OFZhbHVlLCBrZXlQYXRoRWxlbWVudHMsIGtleVBhdGhFbGVtZW50
cy5zaXplKCkpKTsKLSAgICBpZiAodjhLZXkuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsK
LSAgICByZXR1cm4gY3JlYXRlSURCS2V5RnJvbVZhbHVlKHY4S2V5KTsKLX0KLQogLy8gRklYTUU6
IFRoZSBvbmx5IHJlYXNvbiB0aGlzIGV4aXN0cyBpcyBiZWNhdXNlIHdlIG5lZWQgYSB2ODo6Q29u
dGV4dCBhbmQgc2NvcGUgaW5zaWRlIGEgdGltZXIuIElzIHRoZXJlIGEgYmV0dGVyIC8gbW9yZSBn
ZW5lcmFsIHdheSB0byBkbyB0aGlzPwogU2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNj
b3BlOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUodG9WOENvbnRleHQoc2Ny
aXB0Q29udGV4dCwgVXNlQ3VycmVudFdvcmxkKSk7CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNv
bnRleHRTY29wZShzY3JpcHRDb250ZXh0ID8gdG9WOENvbnRleHQoc2NyaXB0Q29udGV4dCwgVXNl
Q3VycmVudFdvcmxkKSA6IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+ZW5zdXJlQXV4aWxp
YXJ5Q29udGV4dCgpKTsKICAgICByZXR1cm4gU2NyaXB0VmFsdWUocHJwVmFsdWUtPmRlc2VyaWFs
aXplKCkpOwogfQogCi1QYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6
ZWRWYWx1ZUFuZEtleVBhdGgoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFZh
bHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQotewotICAgIElEQl9UUkFDRSgiY3JlYXRl
SURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgiKTsKLSAgICBBU1NFUlQoIWtleVBh
dGguaXNOdWxsKCkpOwotCi0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUg
PSBwcnBWYWx1ZTsKLQotICAgIGlmIChrZXlQYXRoLnR5cGUoKSA9PSBJREJLZXlQYXRoOjpBcnJh
eVR5cGUpIHsKLSAgICAgICAgSURCS2V5OjpLZXlBcnJheSByZXN1bHQ7Ci0gICAgICAgIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBhcnJheSA9IGtleVBhdGguYXJyYXkoKTsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBhcnJheS5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgUmVmUHRy
PElEQktleT4ga2V5ID0gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgo
dmFsdWUsIGFycmF5W2ldKTsKLSAgICAgICAgICAgIGlmICgha2V5KQotICAgICAgICAgICAgICAg
IHJldHVybiAwOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChrZXkpOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZUFycmF5KHJlc3VsdCk7Ci0gICAgfQotCi0gICAg
QVNTRVJUKGtleVBhdGgudHlwZSgpID09IElEQktleVBhdGg6OlN0cmluZ1R5cGUpOwotICAgIHJl
dHVybiBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aCh2YWx1ZSwga2V5
UGF0aC5zdHJpbmcoKSk7Ci19Ci0KLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBp
bmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYg
a2V5UGF0aCkKK2Jvb2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKFBhc3NSZWZQdHI8SURC
S2V5PiBrZXksIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkK
IHsKLSAgICBJREJfVFJBQ0UoImluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUiKTsKKyAg
ICBJREJfVFJBQ0UoImluamVjdElEQktleUludG9TY3JpcHRWYWx1ZSIpOwogCiAgICAgQVNTRVJU
KGtleVBhdGgudHlwZSgpID09IElEQktleVBhdGg6OlN0cmluZ1R5cGUpOwogICAgIFZlY3RvcjxT
dHJpbmc+IGtleVBhdGhFbGVtZW50czsKQEAgLTI3NSwxNSArMjMzLDE1IEBAIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBh
c3NSZWZQdHI8SURCCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpD
b250ZXh0OjpTY29wZSBzY29wZShWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmVuc3VyZUF1
eGlsaWFyeUNvbnRleHQoKSk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhWYWx1ZSh2
YWx1ZS0+ZGVzZXJpYWxpemUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4VmFsdWUo
dmFsdWUudjhWYWx1ZSgpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGFyZW50KGVuc3Vy
ZU50aFZhbHVlT25LZXlQYXRoKHY4VmFsdWUsIGtleVBhdGhFbGVtZW50cywga2V5UGF0aEVsZW1l
bnRzLnNpemUoKSAtIDEpKTsKICAgICBpZiAocGFyZW50LklzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghc2V0KHBhcmVudCwga2V5
UGF0aEVsZW1lbnRzLmxhc3QoKSwgdG9WOChrZXkuZ2V0KCkpKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZSh2OFZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBjYW5Jbmpl
Y3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoY29uc3QgU2NyaXB0VmFsdWUmIHNjcmlwdFZhbHVlLCBj
b25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvSURCQmluZGluZ1V0aWxpdGllcy5oCmluZGV4IGIyYjYyOWY1ODE5ZjlhMWE3ZTAwNWZmOTMw
NDY5ZWVmMjNkN2M0N2QuLmE0ODJkYzk3NDFiMjlhZWM4YTVlMTExM2NmN2ZlNWYzN2FmYWY0YTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRp
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVz
LmgKQEAgLTQwLDEwICs0MCw3IEBAIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogUGFz
c1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21WYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4pOwogCi0vLyBGSVhNRTogcmVtb3ZlIHRoZSBTZXJpYWxpemVkVmFsdWUgdmVyc2lvbnMgd2hl
biB0aGVpciB1c2UgaXMgZmluYWxseSByZW1vdmVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NTQwOS4KLVBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlG
cm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4sIGNvbnN0IElEQktleVBhdGgmKTsKLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBpbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5Piwg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBJREJLZXlQYXRoJik7Ci0K
K2Jvb2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiwgU2Ny
aXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7CiBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRl
SURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChjb25zdCBTY3JpcHRWYWx1ZSYsIGNvbnN0
IElEQktleVBhdGgmKTsKIGJvb2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKGNvbnN0
IFNjcmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwogU2NyaXB0VmFsdWUgZGVzZXJpYWxp
emVJREJWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOElEQkFueUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhJREJBbnlDdXN0b20uY3BwCmluZGV4IGU2MjU3ZWVjMzdmNmExMTJjMDY1Mzg0YTIwMWQ5
ZmFhN2U4MzY3YjAuLjVkNzFlNDI5ZWE0NjdjNTRiYmQxNDI2N2FjZjcwMDViY2M5NmYwZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3Vz
dG9tLmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiAjaW5jbHVkZSAiVjhJREJBbnkuaCIKIAotI2lu
Y2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgi
CiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhET01TdHJpbmdMaXN0LmgiCiAj
aW5jbHVkZSAiVjhJREJDdXJzb3IuaCIKQEAgLTczLDEwICs3MywxMiBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9WOChJREJBbnkqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LAogICAgICAgICByZXR1cm4gdG9WOChpbXBsLT5pZGJPYmplY3RTdG9yZSgpLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgIGNhc2UgSURCQW55OjpJREJUcmFuc2FjdGlv
blR5cGU6CiAgICAgICAgIHJldHVybiB0b1Y4KGltcGwtPmlkYlRyYW5zYWN0aW9uKCksIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci0gICAgY2FzZSBJREJBbnk6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZVR5cGU6Ci0gICAgICAgIHJldHVybiBpbXBsLT5zZXJpYWxpemVkU2NyaXB0VmFsdWUoKS0+
ZGVzZXJpYWxpemUoMCwgaXNvbGF0ZSk7CisgICAgY2FzZSBJREJBbnk6OlNjcmlwdFZhbHVlVHlw
ZToKKyAgICAgICAgcmV0dXJuIGltcGwtPnNjcmlwdFZhbHVlKCkudjhWYWx1ZSgpOwogICAgIGNh
c2UgSURCQW55OjpTdHJpbmdUeXBlOgogICAgICAgICByZXR1cm4gdjhTdHJpbmcoaW1wbC0+c3Ry
aW5nKCksIGlzb2xhdGUpOworICAgIGNhc2UgSURCQW55OjpJbnRlZ2VyVHlwZToKKyAgICAgICAg
cmV0dXJuIHY4OjpOdW1iZXI6Ok5ldyhpbXBsLT5pbnRlZ2VyKCkpOwogICAgIH0KIAogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcAppbmRleCBjMmQ1ZTc1NDEwOGQ2OGIz
NjQzODA2ZTJjZDgxZGQ3MDE1NDZlZjkyLi40NjcxMGU3NDU2OGE3NGZhYzVmZTVmNTA3OTNhYzJj
OWE5YzJmYjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkJp
bmRpbmdVdGlsaXRpZXNUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUg
IklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJ
REJLZXlQYXRoLmgiCi0jaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVk
ZSAiVjhQZXJJc29sYXRlRGF0YS5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAKQEAgLTQw
LDQxICszOSw0MiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIHsKIAot
UGFzc1JlZlB0cjxJREJLZXk+IGNoZWNrS2V5RnJvbVZhbHVlQW5kS2V5UGF0aEludGVybmFsKFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK1Bhc3NS
ZWZQdHI8SURCS2V5PiBjaGVja0tleUZyb21WYWx1ZUFuZEtleVBhdGhJbnRlcm5hbChjb25zdCBT
Y3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsKICAgICBJREJLZXlQ
YXRoIGlkYktleVBhdGgoa2V5UGF0aCk7CiAgICAgRVhQRUNUX1RSVUUoaWRiS2V5UGF0aC5pc1Zh
bGlkKCkpOwotICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5
UGF0aCh2YWx1ZSwgaWRiS2V5UGF0aCk7CisgICAgCisgICAgcmV0dXJuIGNyZWF0ZUlEQktleUZy
b21TY3JpcHRWYWx1ZUFuZEtleVBhdGgodmFsdWUsIGlkYktleVBhdGgpOwogfQogCi12b2lkIGNo
ZWNrS2V5UGF0aE51bGxWYWx1ZShTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgpCit2b2lkIGNoZWNrS2V5UGF0aE51bGxWYWx1ZShjb25zdCBTY3JpcHRW
YWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsKICAgICBSZWZQdHI8SURCS2V5
PiBpZGJLZXkgPSBjaGVja0tleUZyb21WYWx1ZUFuZEtleVBhdGhJbnRlcm5hbCh2YWx1ZSwga2V5
UGF0aCk7CiAgICAgQVNTRVJUX0ZBTFNFKGlkYktleS5nZXQoKSk7CiB9CiAKLVBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RLZXkoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBTdHJpbmcmIGtl
eVBhdGgpCitib29sIGluamVjdEtleShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBTY3JpcHRWYWx1
ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsKICAgICBJREJLZXlQYXRoIGlkYktl
eVBhdGgoa2V5UGF0aCk7CiAgICAgRVhQRUNUX1RSVUUoaWRiS2V5UGF0aC5pc1ZhbGlkKCkpOwot
ICAgIHJldHVybiBpbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKGtleSwgdmFsdWUsIGlk
YktleVBhdGgpOworICAgIHJldHVybiBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoa2V5LCB2
YWx1ZSwgaWRiS2V5UGF0aCk7CiB9CiAKLXZvaWQgY2hlY2tJbmplY3Rpb24oUGFzc1JlZlB0cjxJ
REJLZXk+IHBycEtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgpCit2b2lkIGNoZWNrSW5qZWN0aW9uKFBhc3NSZWZQdHI8SURC
S2V5PiBwcnBLZXksIFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQog
ewogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKLSAgICBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBuZXdWYWx1ZSA9IGluamVjdEtleShrZXksIHZhbHVlLCBrZXlQYXRoKTsK
LSAgICBBU1NFUlRfVFJVRShuZXdWYWx1ZSk7Ci0gICAgUmVmUHRyPElEQktleT4gZXh0cmFjdGVk
S2V5ID0gY2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRoSW50ZXJuYWwobmV3VmFsdWUuZ2V0KCks
IGtleVBhdGgpOworICAgIGJvb2wgcmVzdWx0ID0gaW5qZWN0S2V5KGtleSwgdmFsdWUsIGtleVBh
dGgpOworICAgIEFTU0VSVF9UUlVFKHJlc3VsdCk7CisgICAgUmVmUHRyPElEQktleT4gZXh0cmFj
dGVkS2V5ID0gY2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRoSW50ZXJuYWwodmFsdWUsIGtleVBh
dGgpOwogICAgIEVYUEVDVF9UUlVFKGtleS0+aXNFcXVhbChleHRyYWN0ZWRLZXkuZ2V0KCkpKTsK
IH0KIAotdm9pZCBjaGVja0luamVjdGlvbkZhaWxzKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoKQordm9pZCBjaGVja0luamVjdGlvbkZhaWxzKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFNj
cmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewogICAgIEVYUEVDVF9G
QUxTRShpbmplY3RLZXkoa2V5LCB2YWx1ZSwga2V5UGF0aCkpOwogfQogCi12b2lkIGNoZWNrS2V5
UGF0aFN0cmluZ1ZhbHVlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCwgY29uc3QgU3RyaW5nJiBleHBlY3RlZCkKK3ZvaWQgY2hlY2tLZXlQYXRoU3Ry
aW5nVmFsdWUoY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgs
IGNvbnN0IFN0cmluZyYgZXhwZWN0ZWQpCiB7CiAgICAgUmVmUHRyPElEQktleT4gaWRiS2V5ID0g
Y2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRoSW50ZXJuYWwodmFsdWUsIGtleVBhdGgpOwogICAg
IEFTU0VSVF9UUlVFKGlkYktleS5nZXQoKSk7CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgY2hlY2tL
ZXlQYXRoU3RyaW5nVmFsdWUoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoCiAgICAgQVNTRVJUX1RSVUUoZXhwZWN0ZWQgPT0gaWRiS2V5LT5zdHJpbmco
KSk7CiB9CiAKLXZvaWQgY2hlY2tLZXlQYXRoTnVtYmVyVmFsdWUoU2VyaWFsaXplZFNjcmlwdFZh
bHVlKiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBpbnQgZXhwZWN0ZWQpCit2b2lkIGNo
ZWNrS2V5UGF0aE51bWJlclZhbHVlKGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoLCBpbnQgZXhwZWN0ZWQpCiB7CiAgICAgUmVmUHRyPElEQktleT4gaWRiS2V5
ID0gY2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRoSW50ZXJuYWwodmFsdWUsIGtleVBhdGgpOwog
ICAgIEFTU0VSVF9UUlVFKGlkYktleS5nZXQoKSk7CkBAIC05OCwxMCArOTgsMTAgQEAgVEVTVChJ
REJLZXlGcm9tVmFsdWVBbmRLZXlQYXRoVGVzdCwgVG9wTGV2ZWxQcm9wZXJ0eVN0cmluZ1ZhbHVl
KQogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6T2JqZWN0OjpOZXcoKTsK
ICAgICBvYmplY3QtPlNldCh2ODo6U3RyaW5nOjpOZXcoImZvbyIpLCB2ODo6U3RyaW5nOjpOZXco
InpvbyIpKTsKIAotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG9iamVjdCk7CisgICAg
U2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUob2JqZWN0KTsKIAotICAgIGNoZWNrS2V5UGF0aFN0cmlu
Z1ZhbHVlKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5nZXQoKSwgImZvbyIsICJ6b28iKTsKLSAgICBj
aGVja0tleVBhdGhOdWxsVmFsdWUoc2VyaWFsaXplZFNjcmlwdFZhbHVlLmdldCgpLCAiYmFyIik7
CisgICAgY2hlY2tLZXlQYXRoU3RyaW5nVmFsdWUoc2NyaXB0VmFsdWUsICJmb28iLCAiem9vIik7
CisgICAgY2hlY2tLZXlQYXRoTnVsbFZhbHVlKHNjcmlwdFZhbHVlLCAiYmFyIik7CiB9CiAKIFRF
U1QoSURCS2V5RnJvbVZhbHVlQW5kS2V5UGF0aFRlc3QsIFRvcExldmVsUHJvcGVydHlOdW1iZXJW
YWx1ZSkKQEAgLTExMiwxMCArMTEyLDEwIEBAIFRFU1QoSURCS2V5RnJvbVZhbHVlQW5kS2V5UGF0
aFRlc3QsIFRvcExldmVsUHJvcGVydHlOdW1iZXJWYWx1ZSkKICAgICB2ODo6TG9jYWw8djg6Ok9i
amVjdD4gb2JqZWN0ID0gdjg6Ok9iamVjdDo6TmV3KCk7CiAgICAgb2JqZWN0LT5TZXQodjg6OlN0
cmluZzo6TmV3KCJmb28iKSwgdjg6Ok51bWJlcjo6TmV3KDQ1NikpOwogCi0gICAgUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlID0gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUob2JqZWN0KTsKKyAgICBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZShv
YmplY3QpOwogCi0gICAgY2hlY2tLZXlQYXRoTnVtYmVyVmFsdWUoc2VyaWFsaXplZFNjcmlwdFZh
bHVlLmdldCgpLCAiZm9vIiwgNDU2KTsKLSAgICBjaGVja0tleVBhdGhOdWxsVmFsdWUoc2VyaWFs
aXplZFNjcmlwdFZhbHVlLmdldCgpLCAiYmFyIik7CisgICAgY2hlY2tLZXlQYXRoTnVtYmVyVmFs
dWUoc2NyaXB0VmFsdWUsICJmb28iLCA0NTYpOworICAgIGNoZWNrS2V5UGF0aE51bGxWYWx1ZShz
Y3JpcHRWYWx1ZSwgImJhciIpOwogfQogCiBURVNUKElEQktleUZyb21WYWx1ZUFuZEtleVBhdGhU
ZXN0LCBTdWJQcm9wZXJ0eSkKQEAgLTEyOCwxMCArMTI4LDEwIEBAIFRFU1QoSURCS2V5RnJvbVZh
bHVlQW5kS2V5UGF0aFRlc3QsIFN1YlByb3BlcnR5KQogICAgIHN1YlByb3BlcnR5LT5TZXQodjg6
OlN0cmluZzo6TmV3KCJiYXIiKSwgdjg6OlN0cmluZzo6TmV3KCJ6ZWUiKSk7CiAgICAgb2JqZWN0
LT5TZXQodjg6OlN0cmluZzo6TmV3KCJmb28iKSwgc3ViUHJvcGVydHkpOwogCi0gICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUob2JqZWN0KTsKKyAgICBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1
ZShvYmplY3QpOwogCi0gICAgY2hlY2tLZXlQYXRoU3RyaW5nVmFsdWUoc2VyaWFsaXplZFNjcmlw
dFZhbHVlLmdldCgpLCAiZm9vLmJhciIsICJ6ZWUiKTsKLSAgICBjaGVja0tleVBhdGhOdWxsVmFs
dWUoc2VyaWFsaXplZFNjcmlwdFZhbHVlLmdldCgpLCAiYmFyIik7CisgICAgY2hlY2tLZXlQYXRo
U3RyaW5nVmFsdWUoc2NyaXB0VmFsdWUsICJmb28uYmFyIiwgInplZSIpOworICAgIGNoZWNrS2V5
UGF0aE51bGxWYWx1ZShzY3JpcHRWYWx1ZSwgImJhciIpOwogfQogCiBURVNUKEluamVjdElEQktl
eVRlc3QsIFRvcExldmVsUHJvcGVydHlTdHJpbmdWYWx1ZSkKQEAgLTE0MiwxMCArMTQyLDExIEBA
IFRFU1QoSW5qZWN0SURCS2V5VGVzdCwgVG9wTGV2ZWxQcm9wZXJ0eVN0cmluZ1ZhbHVlKQogICAg
IHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6T2JqZWN0OjpOZXcoKTsKICAgICBv
YmplY3QtPlNldCh2ODo6U3RyaW5nOjpOZXcoImZvbyIpLCB2ODo6U3RyaW5nOjpOZXcoInpvbyIp
KTsKIAotICAgIGNoZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlU3RyaW5nKCJteU5ld0tleSIp
LCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShvYmplY3QpLCAiYmFyIik7Ci0gICAgY2hl
Y2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVOdW1iZXIoMTIzNCksIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKG9iamVjdCksICJiYXIiKTsKKyAgICBTY3JpcHRWYWx1ZSBmb296b28ob2Jq
ZWN0KTsKKyAgICBjaGVja0luamVjdGlvbihJREJLZXk6OmNyZWF0ZVN0cmluZygibXlOZXdLZXki
KSwgZm9vem9vLCAiYmFyIik7CisgICAgY2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVOdW1i
ZXIoMTIzNCksIGZvb3pvbywgImJhciIpOwogCi0gICAgY2hlY2tJbmplY3Rpb25GYWlscyhJREJL
ZXk6OmNyZWF0ZVN0cmluZygia2V5IiksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG9i
amVjdCksICJmb28uYmFyIik7CisgICAgY2hlY2tJbmplY3Rpb25GYWlscyhJREJLZXk6OmNyZWF0
ZVN0cmluZygia2V5IiksIGZvb3pvbywgImZvby5iYXIiKTsKIH0KIAogVEVTVChJbmplY3RJREJL
ZXlUZXN0LCBTdWJQcm9wZXJ0eSkKQEAgLTE1OCwxNSArMTU5LDE2IEBAIFRFU1QoSW5qZWN0SURC
S2V5VGVzdCwgU3ViUHJvcGVydHkpCiAgICAgc3ViUHJvcGVydHktPlNldCh2ODo6U3RyaW5nOjpO
ZXcoImJhciIpLCB2ODo6U3RyaW5nOjpOZXcoInplZSIpKTsKICAgICBvYmplY3QtPlNldCh2ODo6
U3RyaW5nOjpOZXcoImZvbyIpLCBzdWJQcm9wZXJ0eSk7CiAKLSAgICBjaGVja0luamVjdGlvbihJ
REJLZXk6OmNyZWF0ZVN0cmluZygibXlOZXdLZXkiKSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUob2JqZWN0KSwgImZvby5iYXoiKTsKLSAgICBjaGVja0luamVjdGlvbihJREJLZXk6OmNy
ZWF0ZU51bWJlcig3ODkpLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShvYmplY3QpLCAi
Zm9vLmJheiIpOwotICAgIGNoZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlRGF0ZSg0NTY3KSwg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUob2JqZWN0KSwgImZvby5iYXoiKTsKLSAgICBj
aGVja0luamVjdGlvbihJREJLZXk6OmNyZWF0ZURhdGUoNDU2NyksIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKG9iamVjdCksICJiYXIiKTsKLSAgICBjaGVja0luamVjdGlvbihJREJLZXk6
OmNyZWF0ZUFycmF5KElEQktleTo6S2V5QXJyYXkoKSksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKG9iamVjdCksICJmb28uYmF6Iik7Ci0gICAgY2hlY2tJbmplY3Rpb24oSURCS2V5Ojpj
cmVhdGVBcnJheShJREJLZXk6OktleUFycmF5KCkpLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShvYmplY3QpLCAiYmFyIik7CisgICAgU2NyaXB0VmFsdWUgc2NyaXB0T2JqZWN0KG9iamVj
dCk7CisgICAgY2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVTdHJpbmcoIm15TmV3S2V5Iiks
IHNjcmlwdE9iamVjdCwgImZvby5iYXoiKTsKKyAgICBjaGVja0luamVjdGlvbihJREJLZXk6OmNy
ZWF0ZU51bWJlcig3ODkpLCBzY3JpcHRPYmplY3QsICJmb28uYmF6Iik7CisgICAgY2hlY2tJbmpl
Y3Rpb24oSURCS2V5OjpjcmVhdGVEYXRlKDQ1NjcpLCBzY3JpcHRPYmplY3QsICJmb28uYmF6Iik7
CisgICAgY2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVEYXRlKDQ1NjcpLCBzY3JpcHRPYmpl
Y3QsICJiYXIiKTsKKyAgICBjaGVja0luamVjdGlvbihJREJLZXk6OmNyZWF0ZUFycmF5KElEQktl
eTo6S2V5QXJyYXkoKSksIHNjcmlwdE9iamVjdCwgImZvby5iYXoiKTsKKyAgICBjaGVja0luamVj
dGlvbihJREJLZXk6OmNyZWF0ZUFycmF5KElEQktleTo6S2V5QXJyYXkoKSksIHNjcmlwdE9iamVj
dCwgImJhciIpOwogCi0gICAgY2hlY2tJbmplY3Rpb25GYWlscyhJREJLZXk6OmNyZWF0ZVN0cmlu
Zygiem9vIiksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG9iamVjdCksICJmb28uYmFy
LmJheiIpOwotICAgIGNoZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlU3RyaW5nKCJ6b28iKSwg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUob2JqZWN0KSwgImZvby54eXouZm9vIik7Cisg
ICAgY2hlY2tJbmplY3Rpb25GYWlscyhJREJLZXk6OmNyZWF0ZVN0cmluZygiem9vIiksIHNjcmlw
dE9iamVjdCwgImZvby5iYXIuYmF6Iik7CisgICAgY2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVh
dGVTdHJpbmcoInpvbyIpLCBzY3JpcHRPYmplY3QsICJmb28ueHl6LmZvbyIpOwogfQogCiB9IC8v
IG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJL
ZXlQYXRoVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQktleVBhdGhU
ZXN0LmNwcAppbmRleCBjM2Q0N2Q3ODg3ODNhNWU0NjFlMmFhNWI4N2MxNmFhNzFkNTBlZmI5Li5j
ZDI0MGNjOTQ1MjZlOTE5MzgwYTFmZWQ1YzAzOTg1MGEzNzQ5YmM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQktleVBhdGhUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQktleVBhdGhUZXN0LmNwcApAQCAtMTI3LDkyICsxMjcs
NiBAQCBURVNUKElEQktleVBhdGhUZXN0LCBJbnZhbGlkS2V5UGF0aDUpCiAgICAgY2hlY2tLZXlQ
YXRoKGtleVBhdGgsIGV4cGVjdGVkLCAzKTsKIH0KIAotVEVTVChJREJLZXlQYXRoVGVzdCwgRXh0
cmFjdCkKLXsKLSAgICBJREJLZXlQYXRoIGtleVBhdGgoImZvbyIpOwotICAgIFJlZlB0cjxJREJL
ZXk+IHN0cmluZ1pvb0tleShJREJLZXk6OmNyZWF0ZVN0cmluZygiem9vIikpOwotICAgIFJlZlB0
cjxJREJLZXk+IGludmFsaWRLZXkoSURCS2V5OjpjcmVhdGVJbnZhbGlkKCkpOwotICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNzdjsKLSAgICBSZWZQdHI8SURCS2V5PiByZXN1bHQ7
Ci0KLSAgICAvLyBrZXlwYXRoOiAiZm9vIiwgdmFsdWU6IHtmb286ICJ6b28ifSwgZXhwZWN0ZWQ6
ICJ6b28iCi0gICAgVUNoYXIgZGF0YUZvb1pvb1tdID0gezB4MDM1MywgMHg2ZjY2LCAweDUzNmYs
IDB4N2EwMywgMHg2ZjZmLCAweDAxN2J9OwotICAgIHNzdiA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlRnJvbVdpcmUoU3RyaW5nKGRhdGFGb29ab28sIFdURl9BUlJBWV9MRU5HVEgoZGF0
YUZvb1pvbykpKTsKLSAgICByZXN1bHQgPSBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVl
QW5kS2V5UGF0aChzc3YsIGtleVBhdGgpOwotICAgIEVYUEVDVF9UUlVFKHN0cmluZ1pvb0tleS0+
aXNFcXVhbChyZXN1bHQuZ2V0KCkpKTsKLQotICAgIC8vIGtleXBhdGg6ICJmb28iLCB2YWx1ZTog
e2ZvbzogbnVsbH0sIGV4cGVjdGVkOiBpbnZhbGlkCi0gICAgVUNoYXIgZGF0YUZvb051bGxbXSA9
IHsweDAzNTMsIDB4NmY2NiwgMHgzMDZmLCAweDAxN2J9OwotICAgIHNzdiA9IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmUoU3RyaW5nKGRhdGFGb29OdWxsLCBXVEZfQVJSQVlf
TEVOR1RIKGRhdGFGb29OdWxsKSkpOwotICAgIHJlc3VsdCA9IGNyZWF0ZUlEQktleUZyb21TZXJp
YWxpemVkVmFsdWVBbmRLZXlQYXRoKHNzdiwga2V5UGF0aCk7Ci0gICAgRVhQRUNUX0ZBTFNFKHJl
c3VsdC0+aXNWYWxpZCgpKTsKLQotICAgIC8vIGtleXBhdGg6ICJmb28iLCB2YWx1ZToge30sIGV4
cGVjdGVkOiBudWxsCi0gICAgVUNoYXIgZGF0YU9iamVjdFtdID0gezB4MDE3Yn07Ci0gICAgc3N2
ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZShTdHJpbmcoZGF0YU9iamVj
dCwgV1RGX0FSUkFZX0xFTkdUSChkYXRhT2JqZWN0KSkpOwotICAgIHJlc3VsdCA9IGNyZWF0ZUlE
QktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKHNzdiwga2V5UGF0aCk7Ci0gICAgRVhQ
RUNUX0VRKDAsIHJlc3VsdC5nZXQoKSk7Ci0KLSAgICAvLyBrZXlwYXRoOiAiZm9vIiwgdmFsdWU6
IG51bGwsIGV4cGVjdGVkOiBudWxsCi0gICAgc3N2ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpu
dWxsVmFsdWUoKTsKLSAgICByZXN1bHQgPSBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVl
QW5kS2V5UGF0aChzc3YsIGtleVBhdGgpOwotICAgIEVYUEVDVF9FUSgwLCByZXN1bHQuZ2V0KCkp
OwotfQotCi1URVNUKElEQktleVBhdGhUZXN0LCBJREJLZXlQYXRoUHJvcGVydHlOb3RBdmFpbGFi
bGUpCi17Ci0gICAgSURCS2V5UGF0aCBrZXlQYXRoKCJQcm9wZXJ0eU5vdEF2YWlsYWJsZSIpOwot
ICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNzdjsKLSAgICAvLyB7Zm9vOiAiem9v
IiwgYmFyOiBudWxsfQotICAgIFVDaGFyIGRhdGFbXSA9IHsweDAzNTMsIDB4NmY2NiwgMHg1MzZm
LCAweDdhMDMsIDB4NmY2ZiwgMHgwMzUzLCAweDYxNjIsCi0gICAgICAgICAgICAgICAgICAgIDB4
MzA3MiwgMHgwMjdifTsKLSAgICBzc3YgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZy
b21XaXJlKFN0cmluZyhkYXRhLCBXVEZfQVJSQVlfTEVOR1RIKGRhdGEpKSk7Ci0gICAgUmVmUHRy
PElEQktleT4gcmVzdWx0ID0gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBh
dGgoc3N2LCBrZXlQYXRoKTsKLSAgICBFWFBFQ1RfRVEoMCwgcmVzdWx0LmdldCgpKTsKLQotICAg
IC8vIG51bGwKLSAgICBzc3YgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpOwot
ICAgIHJlc3VsdCA9IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKHNz
diwga2V5UGF0aCk7Ci0gICAgRVhQRUNUX0VRKDAsIHJlc3VsdC5nZXQoKSk7Ci19Ci0KLVRFU1Qo
SURCS2V5UGF0aFRlc3QsIEluamVjdElEQktleSkKLXsKLSAgICAvLyB7Zm9vOiAnem9vJ30KLSAg
ICBjb25zdCBVQ2hhciBpbml0aWFsRGF0YVtdID0gezB4MDM1MywgMHg2ZjY2LCAweDUzNmYsIDB4
N2EwMywgMHg2ZjZmLCAweDAxN2J9OwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZShTdHJpbmcoaW5p
dGlhbERhdGEsIFdURl9BUlJBWV9MRU5HVEgoaW5pdGlhbERhdGEpKSk7Ci0KLSAgICBSZWZQdHI8
SURCS2V5PiBrZXkgPSBJREJLZXk6OmNyZWF0ZVN0cmluZygibXlOZXdLZXkiKTsKLSAgICBJREJL
ZXlQYXRoIGtleVBhdGgoImJhciIpOwotCi0gICAgLy8ge2ZvbzogJ3pvbycsIGJhcjogJ215TmV3
S2V5J30KLSAgICBjb25zdCBVQ2hhciBleHBlY3RlZERhdGFbXSA9IHsweDAxZmYsIDB4MDAzZiwg
MHgzZjZmLCAweDUzMDEsIDB4NjYwMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDZmNmYsIDB4MDEzZiwgMHgwMzUzLCAweDZmN2EsIDB4M2Y2ZiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDUzMDEsIDB4NjIwMywgMHg3MjYxLCAweDAxM2YsIDB4MDg1
MywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5NmQsIDB4NjU0ZSwgMHg0
Yjc3LCAweDc5NjUsIDB4MDI3Yn07Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
ZXhwZWN0ZWRWYWx1ZSA9IAotICAgICAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGVGcm9tV2lyZShTdHJpbmcoZXhwZWN0ZWREYXRhLCBXVEZfQVJSQVlfTEVOR1RIKGV4cGVjdGVk
RGF0YSkpKTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiByZXN1bHQgPSBpbmpl
Y3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKGtleSwgdmFsdWUsIGtleVBhdGgpOwotICAgIEVY
UEVDVF9FUShleHBlY3RlZFZhbHVlLT50b1dpcmVTdHJpbmcoKSwgcmVzdWx0LT50b1dpcmVTdHJp
bmcoKSk7Ci0KLSAgICAvLyBTaG91bGQgZmFpbCAtIGNhbid0IGFwcGx5IHByb3BlcnRpZXMgdG8g
c3RyaW5nIHZhbHVlIG9mIGtleSBmb28KLSAgICBrZXlQYXRoID0gSURCS2V5UGF0aCgiZm9vLmJh
ZC5wYXRoIik7Ci0gICAgcmVzdWx0ID0gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShr
ZXksIHZhbHVlLCBrZXlQYXRoKTsKLSAgICBFWFBFQ1RfRVEoMCwgcmVzdWx0LmdldCgpKTsKLQot
ICAgIC8vIHtmb286ICd6b28nLCBiYXI6IHtiYXo6ICdteU5ld0tleSd9fQotICAgIGNvbnN0IFVD
aGFyIGV4cGVjdGVkRGF0YTJbXSA9IHsweDAxZmYsIDB4MDAzZiwgMHgzZjZmLCAweDUzMDEsIDB4
NjYwMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZjZmLCAweDAxM2Ys
IDB4MDM1MywgMHg2ZjdhLCAweDNmNmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4NTMwMSwgMHg2MjAzLCAweDcyNjEsIDB4MDEzZiwgMHgzZjZmLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDUzMDIsIDB4NjIwMywgMHg3YTYxLCAweDAyM2YsIDB4
MDg1MywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3OTZkLCAweDY1NGUs
IDB4NGI3NywgMHg3OTY1LCAweDAxN2IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4MDI3Yn07Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZXhwZWN0ZWRW
YWx1ZTIgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlKFN0cmluZyhleHBl
Y3RlZERhdGEyLCBXVEZfQVJSQVlfTEVOR1RIKGV4cGVjdGVkRGF0YTIpKSk7Ci0gICAga2V5UGF0
aCA9IElEQktleVBhdGgoImJhci5iYXoiKTsKLSAgICByZXN1bHQgPSBpbmplY3RJREJLZXlJbnRv
U2VyaWFsaXplZFZhbHVlKGtleSwgdmFsdWUsIGtleVBhdGgpOwotICAgIEVYUEVDVF9FUShleHBl
Y3RlZFZhbHVlMi0+dG9XaXJlU3RyaW5nKCksIHJlc3VsdC0+dG9XaXJlU3RyaW5nKCkpOwotfQot
CiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164423</attachid>
            <date>2012-09-17 11:25:08 -0700</date>
            <delta_ts>2012-09-17 11:41:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-95409-20120917112436.patch</filename>
            <type>text/plain</type>
            <size>38655</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTFiNTZmZjI0NTdhNDY0
ZjQyMjcyNzhhODNlMjYzNzc1NzM4ZjczOS4uMjdjYWJlOWU1MDYyOThlMGRhM2M1NDlmOGEwZDJm
NDNmNzU2NDQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTA5LTE0ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFVz
ZSBTY3JpcHRWYWx1ZSBpbnN0ZWFkIG9mIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBmb3IgZ2V0L29w
ZW5DdXJzb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk1NDA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudGFybyBIYXJhLgorCisgICAgICAgIFRo
aXMgcmVkdWNlcyBhIGJ1bmNoIG9mIHNlcmlhbGl6YXRpb24vZGVzZXJpYWxpemF0aW9uIHdoZW4g
d3JpdGluZworICAgICAgICB0byBvYmplY3RzdG9yZXMgd2l0aCBpbmRleGVzLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgYXMgdGhpcyBjb3ZlcnMgY29yZSBmdW5jdGlvbmFsaXR5IG9mIEluZGV4
ZWREQiwgYW5kCisgICAgICAgIGFsbW9zdCBldmVyeSB0ZXN0IHdvdWxkIGZhaWwuIFNvbWUgbGlr
ZWx5IHRlc3RzIHRoYXQgd291bGQgZmFpbAorICAgICAgICBmdW5kYW1lbnRhbGx5IGluY2x1ZGU6
CisKKyAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwKKyAg
ICAgICAgc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWJhc2ljcy5odG1sCisgICAgICAgIHN0b3Jh
Z2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJBbnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQW55OjpzY3JpcHRWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJBbnk6OmludGVnZXIpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJBbnk6OnNldCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCQW55Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKElEQkFueSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJBbnk6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6c2V0VmFs
dWVSZWFkeSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKElEQkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6
OnZlcnNpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJl
cXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6c2V0UmVzdWx0Q3Vyc29y
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzc0ludGVybmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKElEQlJlcXVlc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmg6
CisgICAgICAgICogYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpkZXNlcmlhbGl6ZUlEQlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmluamVj
dElEQktleUludG9TY3JpcHRWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvSURCQmluZGlu
Z1V0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorCiAy
MDEyLTA5LTE3ICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CiAKICAgICAgICAgTWFr
ZSBTVkdQYXRoU2VnTGlzdC5hcHBlbmRJdGVtIE8oMSkgaW5zdGVhZCBvZiBPKG4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDY4NWRhMzhhNjQ2ZjVmMTFjZjUyYzM0MzZjN2UxYWVmMTY2
MGQ2MTkuLjUxMmNiNjQ1OTg2M2NkNDUwMmIzYTkyNWY4NTlhNTNiNjkzYjI5ZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDktMTQgIEFsZWMgRmxl
dHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogVXNlIFNj
cmlwdFZhbHVlIGluc3RlYWQgb2YgU2VyaWFsaXplZFNjcmlwdFZhbHVlIGZvciBnZXQvb3BlbkN1
cnNvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0
MDkKKworICAgICAgICBSZXZpZXdlZCBieSBLZW50YXJvIEhhcmEuCisKKyAgICAgICAgVGhpcyBy
ZW1vdmVzIGEgYnVuY2ggb2YgdGVzdHMgdGhhdCBoYXZlIGJlZW4gbWlncmF0ZWQgdG8KKyAgICAg
ICAgTGF5b3V0VGVzdHMsIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NjgxOC4KKworICAgICAgICAqIHRlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNoZWNrS2V5RnJvbVZhbHVlQW5kS2V5UGF0aEludGVybmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OmNoZWNrS2V5UGF0aE51bGxWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjppbmplY3RLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tJbmplY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Y2hlY2tJbmplY3Rpb25GYWlscyk6CisgICAgICAgIChXZWJDb3JlOjpj
aGVja0tleVBhdGhTdHJpbmdWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0tleVBhdGhO
dW1iZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9J
REJLZXlQYXRoVGVzdC5jcHA6CisKIDIwMTItMDktMTQgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5
c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogT3duUHRyIGFuZCBSZWZQ
dHIgcmVwb3J0ZWQgYnkgcG9pbnRlciBjYW4gYmUgZG91YmxlIGNvdW50ZWQgYnkgdGhlIG1lbW9y
eSBpbnN0cnVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkFueS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJB
bnkuY3BwCmluZGV4IDJjZDhhMDk0YzAyM2NjM2Y3MDRmZWI4YmQwZGU3NTliNzU4YjY4NjkuLmM2
MDMyNTVhN2U3YzA4YjA3NjZhMzU1ZDBmOTg1ZGZmZGExMjJhYWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1
ZGUgIklEQkluZGV4LmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklEQk9i
amVjdFN0b3JlLmgiCi0jaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMTIwLDEwICsxMTksMTAgQEAgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbj4gSURCQW55OjppZGJUcmFuc2FjdGlvbigpCiAgICAgcmV0dXJuIG1faWRiVHJhbnNh
Y3Rpb247CiB9CiAKLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJREJBbnk6OnNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSgpCitTY3JpcHRWYWx1ZSBJREJBbnk6OnNjcmlwdFZhbHVlKCkK
IHsKLSAgICBBU1NFUlQobV90eXBlID09IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVR5cGUpOwotICAg
IHJldHVybiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKyAgICBBU1NFUlQobV90eXBlID09IFNj
cmlwdFZhbHVlVHlwZSk7CisgICAgcmV0dXJuIG1fc2NyaXB0VmFsdWU7CiB9CiAKIGNvbnN0IFN0
cmluZyYgSURCQW55OjpzdHJpbmcoKQpAQCAtMTMyLDYgKzEzMSwxMiBAQCBjb25zdCBTdHJpbmcm
IElEQkFueTo6c3RyaW5nKCkKICAgICByZXR1cm4gbV9zdHJpbmc7CiB9CiAKK2ludDY0X3QgSURC
QW55OjppbnRlZ2VyKCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IEludGVnZXJUeXBlKTsKKyAg
ICByZXR1cm4gbV9pbnRlZ2VyOworfQorCiB2b2lkIElEQkFueTo6c2V0TnVsbCgpCiB7CiAgICAg
QVNTRVJUKG1fdHlwZSA9PSBVbmRlZmluZWRUeXBlKTsKQEAgLTIwMSwxMSArMjA2LDExIEBAIHZv
aWQgSURCQW55OjpzZXQoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gdmFsdWUpCiAgICAgbV9p
ZGJPYmplY3RTdG9yZSA9IHZhbHVlOwogfQogCi12b2lkIElEQkFueTo6c2V0KFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSkKK3ZvaWQgSURCQW55OjpzZXQoY29uc3QgU2Ny
aXB0VmFsdWUmIHZhbHVlKQogewogICAgIEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7
Ci0gICAgbV90eXBlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlVHlwZTsKLSAgICBtX3NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSA9IHZhbHVlOworICAgIG1fdHlwZSA9IFNjcmlwdFZhbHVlVHlwZTsKKyAg
ICBtX3NjcmlwdFZhbHVlID0gdmFsdWU7CiB9CiAKIHZvaWQgSURCQW55OjpzZXQoY29uc3QgSURC
S2V5UGF0aCYgdmFsdWUpCkBAIC0yMzYsNiArMjQxLDEzIEBAIHZvaWQgSURCQW55OjpzZXQoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKICAgICBtX3N0cmluZyA9IHZhbHVlOwogfQogCit2b2lkIElEQkFu
eTo6c2V0KGludDY0X3QgdmFsdWUpCit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmRlZmluZWRU
eXBlKTsKKyAgICBtX3R5cGUgPSBJbnRlZ2VyVHlwZTsKKyAgICBtX2ludGVnZXIgPSB2YWx1ZTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQW55LmgKaW5kZXggZDg3ODNkMjA1OWM3ZTE2ZDk5ZmYzZjg2NzNi
ZWY4MmEwMTg3YzBmMS4uYTc3YmIxNzZkMWQ2MjU0MTE1ODYwNWQzN2RmMTY5ZjliNzBjMDQ1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiU2NyaXB0
VmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDUsNyArNDYsNiBAQCBjbGFz
cyBJREJLZXk7CiBjbGFzcyBJREJLZXlQYXRoOwogY2xhc3MgSURCT2JqZWN0U3RvcmU7CiBjbGFz
cyBJREJUcmFuc2FjdGlvbjsKLWNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogY2xhc3Mg
SURCQW55IDogcHVibGljIFJlZkNvdW50ZWQ8SURCQW55PiB7CiBwdWJsaWM6CkBAIC01OSwxMCAr
NTksMTEgQEAgcHVibGljOgogICAgICAgICBhbnktPnNldChpZGJPYmplY3QpOwogICAgICAgICBy
ZXR1cm4gYW55LnJlbGVhc2UoKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQW55
PiBjcmVhdGUoY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkFueT4gY3JlYXRlKGNvbnN0IFQmIGlkYk9i
amVjdCkKICAgICB7CiAgICAgICAgIFJlZlB0cjxJREJBbnk+IGFueSA9IElEQkFueTo6Y3JlYXRl
SW52YWxpZCgpOwotICAgICAgICBhbnktPnNldChrZXlQYXRoKTsKKyAgICAgICAgYW55LT5zZXQo
aWRiT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIGFueS5yZWxlYXNlKCk7CiAgICAgfQogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC03Miw2ICs3MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIGFu
eS0+c2V0KGlkYk9iamVjdCk7CiAgICAgICAgIHJldHVybiBhbnkucmVsZWFzZSgpOwogICAgIH0K
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJBbnk+IGNyZWF0ZShpbnQ2NF90IHZhbHVlKQorICAg
IHsKKyAgICAgICAgUmVmUHRyPElEQkFueT4gYW55ID0gSURCQW55OjpjcmVhdGVJbnZhbGlkKCk7
CisgICAgICAgIGFueS0+c2V0KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGFueS5yZWxlYXNlKCk7
CisgICAgfQogICAgIH5JREJBbnkoKTsKIAogICAgIGVudW0gVHlwZSB7CkBAIC04Niw3ICs5Myw4
IEBAIHB1YmxpYzoKICAgICAgICAgSURCS2V5VHlwZSwKICAgICAgICAgSURCT2JqZWN0U3RvcmVU
eXBlLAogICAgICAgICBJREJUcmFuc2FjdGlvblR5cGUsCi0gICAgICAgIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZVR5cGUsCisgICAgICAgIFNjcmlwdFZhbHVlVHlwZSwKKyAgICAgICAgSW50ZWdlclR5
cGUsCiAgICAgICAgIFN0cmluZ1R5cGUsCiAgICAgfTsKIApAQCAtMTAxLDcgKzEwOSw4IEBAIHB1
YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQktleT4gaWRiS2V5KCk7CiAgICAgUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUoKTsKICAgICBQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uPiBpZGJUcmFuc2FjdGlvbigpOwotICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsdWUoKTsKKyAgICBTY3JpcHRWYWx1ZSBzY3JpcHRW
YWx1ZSgpOworICAgIGludDY0X3QgaW50ZWdlcigpOwogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5n
KCk7CiAKICAgICAvLyBTZXQgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuCkBAIC0xMTUsOSArMTI0
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldChQYXNzUmVmUHRyPElEQktleT4pOwogICAgIHZv
aWQgc2V0KFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+KTsKICAgICB2b2lkIHNldChQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uPik7Ci0gICAgdm9pZCBzZXQoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+KTsKICAgICB2b2lkIHNldChjb25zdCBJREJLZXlQYXRoJik7CiAgICAgdm9p
ZCBzZXQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXQoY29uc3QgU2NyaXB0VmFsdWUmKTsK
KyAgICB2b2lkIHNldChpbnQ2NF90KTsKIAogcHJpdmF0ZToKICAgICBJREJBbnkoKTsKQEAgLTEz
NCw4ICsxNDQsOSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJREJLZXk+IG1faWRiS2V5OwogICAg
IFJlZlB0cjxJREJPYmplY3RTdG9yZT4gbV9pZGJPYmplY3RTdG9yZTsKICAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb24+IG1faWRiVHJhbnNhY3Rpb247Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gbV9zZXJpYWxpemVkU2NyaXB0VmFsdWU7CisgICAgU2NyaXB0VmFsdWUgbV9zY3Jp
cHRWYWx1ZTsKICAgICBTdHJpbmcgbV9zdHJpbmc7CisgICAgaW50NjRfdCBtX2ludGVnZXI7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCA5NmZlODJmNzZkNmQzY2I3MTJiODY0ZjJmYzVl
MGRlNDRjMGU5ZmZmLi5jNTFmN2Y1NjU5YTdiYWNjZjVkNjdiYTQzMmJmMzA1ZDdjZTcyMGE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAg
LTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVkZSAiSURCVHJh
bnNhY3Rpb24uaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MjYwLDI4ICsyNTksMjUgQEAgdm9pZCBJREJDdXJzb3I6OmNsb3NlKCkKICAgICBtX3JlcXVlc3Qu
Y2xlYXIoKTsKIH0KIAotdm9pZCBJREJDdXJzb3I6OnNldFZhbHVlUmVhZHkoUGFzc1JlZlB0cjxJ
REJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSkKK3ZvaWQgSURCQ3Vyc29yOjpzZXRWYWx1ZVJl
YWR5KFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5
LCBTY3JpcHRWYWx1ZSYgdmFsdWUpCiB7CiAgICAgbV9jdXJyZW50S2V5ID0ga2V5OwogICAgIG1f
Y3VycmVudFByaW1hcnlLZXkgPSBwcmltYXJ5S2V5OwogCi0gICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gdmFsdWUgPSBwcnBWYWx1ZTsKICAgICBpZiAoIWlzS2V5Q3Vyc29yKCkpIHsK
ICAgICAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IGVmZmVjdGl2ZU9i
amVjdFN0b3JlKCk7CiAgICAgICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgbWV0YWRh
dGEgPSBvYmplY3RTdG9yZS0+bWV0YWRhdGEoKTsKICAgICAgICAgaWYgKG1ldGFkYXRhLmF1dG9J
bmNyZW1lbnQgJiYgIW1ldGFkYXRhLmtleVBhdGguaXNOdWxsKCkpIHsKICNpZm5kZWYgTkRFQlVH
Ci0gICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBleHBlY3RlZEtleSA9IGNyZWF0ZUlEQktleUZy
b21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKHZhbHVlLCBtZXRhZGF0YS5rZXlQYXRoKTsKKyAg
ICAgICAgICAgIFJlZlB0cjxJREJLZXk+IGV4cGVjdGVkS2V5ID0gY3JlYXRlSURCS2V5RnJvbVNj
cmlwdFZhbHVlQW5kS2V5UGF0aCh2YWx1ZSwgbWV0YWRhdGEua2V5UGF0aCk7CiAgICAgICAgICAg
ICBBU1NFUlQoIWV4cGVjdGVkS2V5IHx8IGV4cGVjdGVkS2V5LT5pc0VxdWFsKG1fY3VycmVudFBy
aW1hcnlLZXkuZ2V0KCkpKTsKICNlbmRpZgotICAgICAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gdmFsdWVBZnRlckluamVjdGlvbiA9IGluamVjdElEQktleUludG9TZXJpYWxp
emVkVmFsdWUobV9jdXJyZW50UHJpbWFyeUtleSwgdmFsdWUsIG1ldGFkYXRhLmtleVBhdGgpOwot
ICAgICAgICAgICAgQVNTRVJUKHZhbHVlQWZ0ZXJJbmplY3Rpb24pOworICAgICAgICAgICAgYm9v
bCBpbmplY3RlZCA9IGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShtX2N1cnJlbnRQcmltYXJ5
S2V5LCB2YWx1ZSwgbWV0YWRhdGEua2V5UGF0aCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhl
cmUgaXMgbm8gd2F5IHRvIHJlcG9ydCBlcnJvcnMgaGVyZS4gTW92ZSB0aGlzIGludG8gb25TdWNj
ZXNzV2l0aENvbnRpbnVhdGlvbiBzbyB0aGF0IHdlIGNhbiBhYm9ydCB0aGUgdHJhbnNhY3Rpb24g
dGhlcmUuIFNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMjc4
Ci0gICAgICAgICAgICBpZiAodmFsdWVBZnRlckluamVjdGlvbikKLSAgICAgICAgICAgICAgICB2
YWx1ZSA9IHZhbHVlQWZ0ZXJJbmplY3Rpb247CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGlu
amVjdGVkLCBpbmplY3RlZCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgbV9jdXJyZW50VmFsdWUg
PSBJREJBbnk6OmNyZWF0ZSh2YWx1ZS5yZWxlYXNlKCkpOworICAgIG1fY3VycmVudFZhbHVlID0g
SURCQW55OjpjcmVhdGUodmFsdWUpOwogCiAgICAgbV9nb3RWYWx1ZSA9IHRydWU7CiAgICAgbV92
YWx1ZUlzRGlydHkgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3IuaAppbmRleCAxYjYxOTM1M2ZlZGI1MmJiYmUxMDIxZjliY2E4YTk5NjUwMTJhN2U2
Li45YTk1MTQ3NTc4NmViN2EzM2NlN2ZmMzI1MDdjNTlkMTM3YmM3NGEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaApAQCAtNDEsNyArNDEsNiBAQCBj
bGFzcyBJREJDYWxsYmFja3M7CiBjbGFzcyBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOwogY2xh
c3MgSURCUmVxdWVzdDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTZXJp
YWxpemVkU2NyaXB0VmFsdWU7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKQEAgLTgy
LDcgKzgxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFj
aygpOwogICAgIHZvaWQgY2xvc2UoKTsKLSAgICB2b2lkIHNldFZhbHVlUmVhZHkoUGFzc1JlZlB0
cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+KTsKKyAgICB2b2lkIHNldFZhbHVlUmVhZHkoUGFzc1JlZlB0cjxJ
REJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgU2NyaXB0VmFsdWUmKTsKIAog
ICAgIC8vIFRoZSBzcGVjIHJlcXVpcmVzIHRoYXQgdGhlIHNjcmlwdCBvYmplY3QgdGhhdCB3cmFw
cyB0aGUgdmFsdWUKICAgICAvLyBiZSB1bmNoYW5nZWQgdW50aWwgdGhlIHZhbHVlIGNoYW5nZXMg
YXMgYSByZXN1bHQgb2YgdGhlIGN1cnNvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IGQ2NDFkMDRhNDM2ZTFmZmY1ZjY0MTg0ZmQ4
MzQyZjQyZDVjMDM3NDkuLjhlMGMzYWQ1NjQyMmQ4Zjg5NDgxM2M0MTgyMjlhNzY3NzFlY2Y4MTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5j
cHAKQEAgLTExNyw3ICsxMTcsNyBAQCBQYXNzUmVmUHRyPElEQkFueT4gSURCRGF0YWJhc2U6OnZl
cnNpb24oKSBjb25zdAogICAgIGludDY0X3QgaW50VmVyc2lvbiA9IG1fbWV0YWRhdGEuaW50VmVy
c2lvbjsKICAgICBpZiAoaW50VmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZl
cnNpb24pCiAgICAgICAgIHJldHVybiBJREJBbnk6OmNyZWF0ZVN0cmluZyhtX21ldGFkYXRhLnZl
cnNpb24pOwotICAgIHJldHVybiBJREJBbnk6OmNyZWF0ZShTZXJpYWxpemVkU2NyaXB0VmFsdWU6
Om51bWJlclZhbHVlKGludFZlcnNpb24pKTsKKyAgICByZXR1cm4gSURCQW55OjpjcmVhdGUoaW50
VmVyc2lvbik7CiB9CiAKIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IERpY3Rpb25hcnkmIG9w
dGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IDVmZmMxY2JhOWUxMGUxMzZhMWI4
NzZhMTNjNjg2YzQyYzI2NjRmM2UuLmNjNmMyOGVmMjg0ZWZkNzNmYTY1MzFjZjBkNWE5OTBjZTNh
OTdjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHAKQEAgLTM0MCw5ICszNDAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
UmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9IGN1cnNvci0+cHJpbWFyeUtleSgpOwogICAgICAg
ICAgICAgUmVmUHRyPElEQkFueT4gdmFsdWVBbnkgPSBjdXJzb3ItPnZhbHVlKCk7CiAKLSAgICAg
ICAgICAgIEFTU0VSVCh2YWx1ZUFueS0+dHlwZSgpID09IElEQkFueTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlVHlwZSk7Ci0gICAgICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBz
ZXJpYWxpemVkVmFsdWUgPSB2YWx1ZUFueS0+c2VyaWFsaXplZFNjcmlwdFZhbHVlKCk7Ci0gICAg
ICAgICAgICBTY3JpcHRWYWx1ZSB2YWx1ZShkZXNlcmlhbGl6ZUlEQlZhbHVlKGNvbnRleHQsIHNl
cmlhbGl6ZWRWYWx1ZSkpOworICAgICAgICAgICAgQVNTRVJUKHZhbHVlQW55LT50eXBlKCkgPT0g
SURCQW55OjpTY3JpcHRWYWx1ZVR5cGUpOworICAgICAgICAgICAgU2NyaXB0VmFsdWUgdmFsdWUg
PSB2YWx1ZUFueS0+c2NyaXB0VmFsdWUoKTsKIAogICAgICAgICAgICAgSURCT2JqZWN0U3RvcmU6
OkluZGV4S2V5cyBpbmRleEtleXM7CiAgICAgICAgICAgICBnZW5lcmF0ZUluZGV4S2V5c0ZvclZh
bHVlKG1faW5kZXhNZXRhZGF0YSwgdmFsdWUsICZpbmRleEtleXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCA0M2YyNWE4YzNjZWFl
NjZhY2MwMzFkZDc4NTAwMWNjYzBkZWI5MWI2Li4yY2U4NmFmNWViNGM5Y2UxMGFhZTc4YTc2ZjRm
MzNkMDQzMzI0MWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJSZXF1ZXN0LmNwcApAQCAtMjE0LDcgKzIxNCw3IEBAIFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBJ
REJSZXF1ZXN0OjpnZXRSZXN1bHRDdXJzb3IoKQogICAgIHJldHVybiAwOwogfQogCi12b2lkIElE
QlJlcXVlc3Q6OnNldFJlc3VsdEN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvcj4gY3Vyc29yLCBQ
YXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlKQordm9pZCBJREJSZXF1ZXN0Ojpz
ZXRSZXN1bHRDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3I+IGN1cnNvciwgUGFzc1JlZlB0cjxJ
REJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIGNvbnN0IFNjcmlwdFZh
bHVlJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IFBFTkRJTkcpOwogICAg
IG1fY3Vyc29yS2V5ID0ga2V5OwpAQCAtMjc2LDEyICsyNzYsMTMgQEAgdm9pZCBJREJSZXF1ZXN0
OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBkb21TdHJpbmdMaXN0KQogICAg
IGVucXVldWVFdmVudChjcmVhdGVTdWNjZXNzRXZlbnQoKSk7CiB9CiAKLXZvaWQgSURCUmVxdWVz
dDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2Vu
ZCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXks
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSkKK3ZvaWQgSURCUmVxdWVz
dDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2Vu
ZCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXks
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUpCiB7CiAg
ICAgSURCX1RSQUNFKCJJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoSURCQ3Vyc29yKSIpOwogICAgIGlm
ICghc2hvdWxkRW5xdWV1ZUV2ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIFNjcmlwdFZh
bHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IHNlcmlhbGl6ZWRWYWx1ZSk7CiAgICAgQVNTRVJUKG1fY3Vyc29yVHlwZSAhPSBJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlOjpJbnZhbGlkQ3Vyc29yVHlwZSk7CiAgICAgUmVmUHRyPElEQkN1cnNv
cj4gY3Vyc29yOwogICAgIGlmIChtX2N1cnNvclR5cGUgPT0gSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZTo6SW5kZXhLZXlDdXJzb3IpCkBAIC0zMDIsNyArMzAzLDcgQEAgdm9pZCBJREJSZXF1ZXN0
OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+IGlkYktleSkKICAgICBpZiAoaWRiS2V5ICYm
IGlkYktleS0+aXNWYWxpZCgpKQogICAgICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGlk
YktleSk7CiAgICAgZWxzZQotICAgICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6dW5kZWZpbmVkVmFsdWUoKSk7CisgICAgICAgIG1fcmVzdWx0ID0g
SURCQW55OjpjcmVhdGVJbnZhbGlkKCk7CiAgICAgZW5xdWV1ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NF
dmVudCgpKTsKIH0KIApAQCAtMzM3LDkgKzMzOCw4IEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNj
ZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFs
CiAgICAgaWYgKCFzaG91bGRFbnF1ZXVlRXZlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUpOwotICAgIG1f
cGVuZGluZ0N1cnNvci5jbGVhcigpOwotICAgIGVucXVldWVFdmVudChjcmVhdGVTdWNjZXNzRXZl
bnQoKSk7CisgICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKKyAgICBvblN1Y2Nl
c3NJbnRlcm5hbCh2YWx1ZSk7CiB9CiAKICNpZm5kZWYgTkRFQlVHCkBAIC0zNjQsMzAgKzM2NCwz
MiBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gcHJwU2VyaWFsaXplZFNjcmlwdAogI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQo
a2V5UGF0aCA9PSBlZmZlY3RpdmVPYmplY3RTdG9yZShtX3NvdXJjZSktPmtleVBhdGgoKSk7CiAj
ZW5kaWYKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IHBycFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTsKKyAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURC
VmFsdWUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBwcnBTZXJpYWxpemVkU2NyaXB0VmFsdWUp
OwogCiAgICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9IHBycFByaW1hcnlLZXk7CiAjaWZu
ZGVmIE5ERUJVRwotICAgIFJlZlB0cjxJREJLZXk+IGV4cGVjdGVkS2V5ID0gY3JlYXRlSURCS2V5
RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgodmFsdWUsIGtleVBhdGgpOworICAgIFJlZlB0
cjxJREJLZXk+IGV4cGVjdGVkS2V5ID0gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5
UGF0aCh2YWx1ZSwga2V5UGF0aCk7CiAgICAgQVNTRVJUKCFleHBlY3RlZEtleSB8fCBleHBlY3Rl
ZEtleS0+aXNFcXVhbChwcmltYXJ5S2V5LmdldCgpKSk7CiAjZW5kaWYKLSAgICBSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZUFmdGVySW5qZWN0aW9uID0gaW5qZWN0SURCS2V5SW50
b1NlcmlhbGl6ZWRWYWx1ZShwcmltYXJ5S2V5LCB2YWx1ZSwga2V5UGF0aCk7Ci0gICAgQVNTRVJU
KHZhbHVlQWZ0ZXJJbmplY3Rpb24pOwotICAgIGlmICghdmFsdWVBZnRlckluamVjdGlvbikgewot
ICAgICAgICAvLyBDaGVja3MgaW4gcHV0KCkgZW5zdXJlIHRoaXMgc2hvdWxkIG9ubHkgaGFwcGVu
IGlmIEkvTyBlcnJvciBvY2N1cnMuCi0gICAgICAgIG9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9y
IGluc2VydGluZyBnZW5lcmF0ZWQga2V5IGludG8gdGhlIG9iamVjdC4iKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgdmFsdWUgPSB2YWx1ZUFmdGVySW5qZWN0aW9uOwotICAgIG9uU3Vj
Y2Vzcyh2YWx1ZS5yZWxlYXNlKCkpOworICAgIGJvb2wgaW5qZWN0ZWQgPSBpbmplY3RJREJLZXlJ
bnRvU2NyaXB0VmFsdWUocHJpbWFyeUtleSwgdmFsdWUsIGtleVBhdGgpOworICAgIEFTU0VSVChp
bmplY3RlZCk7CisgICAgb25TdWNjZXNzSW50ZXJuYWwodmFsdWUpOworfQorCit2b2lkIElEQlJl
cXVlc3Q6Om9uU3VjY2Vzc0ludGVybmFsKGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSkKK3sKKyAg
ICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKHZhbHVlKTsKKyAgICBtX3BlbmRpbmdDdXJzb3Iu
Y2xlYXIoKTsKKyAgICBlbnF1ZXVlRXZlbnQoY3JlYXRlU3VjY2Vzc0V2ZW50KCkpOwogfQogCi12
b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVm
UHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHZhbHVlKQordm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+IGtl
eSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUpCiB7CiAgICAgSURCX1RSQUNFKCJJREJSZXF1ZXN0
OjpvblN1Y2Nlc3Moa2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSkiKTsKICAgICBpZiAoIXNob3VsZEVu
cXVldWVFdmVudCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9
IGRlc2VyaWFsaXplSURCVmFsdWUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzZXJpYWxpemVk
VmFsdWUpOwogICAgIEFTU0VSVChtX3BlbmRpbmdDdXJzb3IpOwogICAgIHNldFJlc3VsdEN1cnNv
cihtX3BlbmRpbmdDdXJzb3IucmVsZWFzZSgpLCBrZXksIHByaW1hcnlLZXksIHZhbHVlKTsKICAg
ICBlbnF1ZXVlRXZlbnQoY3JlYXRlU3VjY2Vzc0V2ZW50KCkpOwpAQCAtNDU2LDcgKzQ1OCw3IEBA
IGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkK
ICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50KSB7CiAg
ICAgICAgIGN1cnNvclRvTm90aWZ5ID0gZ2V0UmVzdWx0Q3Vyc29yKCk7CiAgICAgICAgIGlmIChj
dXJzb3JUb05vdGlmeSkKLSAgICAgICAgICAgIGN1cnNvclRvTm90aWZ5LT5zZXRWYWx1ZVJlYWR5
KG1fY3Vyc29yS2V5LnJlbGVhc2UoKSwgbV9jdXJzb3JQcmltYXJ5S2V5LnJlbGVhc2UoKSwgbV9j
dXJzb3JWYWx1ZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgY3Vyc29yVG9Ob3RpZnktPnNldFZh
bHVlUmVhZHkobV9jdXJzb3JLZXkucmVsZWFzZSgpLCBtX2N1cnNvclByaW1hcnlLZXkucmVsZWFz
ZSgpLCBtX2N1cnNvclZhbHVlKTsKICAgICB9CiAKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBl
dmVudE5hbWVzKCkudXBncmFkZW5lZWRlZEV2ZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKaW5kZXggN2Y5OTkyNDg1M2VmODA2N2MxMjI2YjRl
OGE1NzYwZmE3ZjdiMDMyNC4uZDgyZmFjNzIwN2MxMWVlYmU0MmY3MTNlMGU5MDBjN2ZhZGU0OGQ3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaApA
QCAtMTEzLDYgKzExMyw3IEBAIHByb3RlY3RlZDoKICAgICBJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbiopOwogICAgIHZvaWQgZW5x
dWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5x
dWV1ZUV2ZW50KCkgY29uc3Q7CisgICAgdm9pZCBvblN1Y2Nlc3NJbnRlcm5hbChjb25zdCBTY3Jp
cHRWYWx1ZSYpOwogCiAgICAgUmVmUHRyPElEQkFueT4gbV9yZXN1bHQ7CiAgICAgdW5zaWduZWQg
c2hvcnQgbV9lcnJvckNvZGU7CkBAIC0xMzEsNyArMTMyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CiAKICAgICBQYXNz
UmVmUHRyPElEQkN1cnNvcj4gZ2V0UmVzdWx0Q3Vyc29yKCk7Ci0gICAgdm9pZCBzZXRSZXN1bHRD
dXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3I+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQ
dHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4p
OworICAgIHZvaWQgc2V0UmVzdWx0Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPiwgUGFzc1Jl
ZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgY29uc3QgU2NyaXB0
VmFsdWUmKTsKIAogICAgIFJlZlB0cjxJREJBbnk+IG1fc291cmNlOwogICAgIGNvbnN0IElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgbV90YXNrVHlwZTsKQEAgLTE0Niw3
ICsxNDcsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJREJDdXJzb3I+IG1fcGVuZGluZ0N1cnNv
cjsKICAgICBSZWZQdHI8SURCS2V5PiBtX2N1cnNvcktleTsKICAgICBSZWZQdHI8SURCS2V5PiBt
X2N1cnNvclByaW1hcnlLZXk7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9j
dXJzb3JWYWx1ZTsKKyAgICBTY3JpcHRWYWx1ZSBtX2N1cnNvclZhbHVlOwogICAgIGJvb2wgbV9k
aWRGaXJlVXBncmFkZU5lZWRlZEV2ZW50OwogCiAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRU
YXJnZXREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgKaW5kZXggOGQ5MDZhNmViODJjNTkxM2I2YzAw
ZTFkY2NlZTRlNzhlYzJmZmU5Zi4uMTg5ODg2ZjliY2UyZDg4Nzk2OWFkMmQxN2U0NjEzMTA3NDVj
M2IyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb25DYWxsYmFja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oCkBAIC0zMSw3ICszMSw2IEBACiAKICNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAK
aW5kZXggNDE3NGI3MDUyODJiYTczZGU1MDFkMTI2NDU2NzBiNjc1MDRiMDlhMS4uMWYzMDA4ZTc4
MzdhZjk1MjkwZjYxMDU5YWYzOWMyYWZmOTQ0MWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTIwOSwyNSArMjA5LDYg
QEAgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBh
dGgoY29uc3QgU2NyaXB0VmFsdWUmIHZhbHUKICAgICByZXR1cm4gY3JlYXRlSURCS2V5RnJvbVNj
cmlwdFZhbHVlQW5kS2V5UGF0aCh2YWx1ZSwga2V5UGF0aC5zdHJpbmcoKSk7CiB9CiAKLXN0YXRp
YyBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtl
eVBhdGgoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgpCi17Ci0gICAgVmVjdG9yPFN0cmluZz4ga2V5UGF0aEVsZW1lbnRzOwot
ICAgIElEQktleVBhdGhQYXJzZUVycm9yIGVycm9yOwotICAgIElEQlBhcnNlS2V5UGF0aChrZXlQ
YXRoLCBrZXlQYXRoRWxlbWVudHMsIGVycm9yKTsKLSAgICBBU1NFUlQoZXJyb3IgPT0gSURCS2V5
UGF0aFBhcnNlRXJyb3JOb25lKTsKLQotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHZhbHVlID0gcHJwVmFsdWU7Ci0KLSAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0g
ICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+
ZW5zdXJlQXV4aWxpYXJ5Q29udGV4dCgpKTsKLQotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
OFZhbHVlKHZhbHVlLT5kZXNlcmlhbGl6ZSgpKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
djhLZXkoZ2V0TnRoVmFsdWVPbktleVBhdGgodjhWYWx1ZSwga2V5UGF0aEVsZW1lbnRzLCBrZXlQ
YXRoRWxlbWVudHMuc2l6ZSgpKSk7Ci0gICAgaWYgKHY4S2V5LklzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgcmV0dXJuIGNyZWF0ZUlEQktleUZyb21WYWx1ZSh2OEtleSk7Ci19Ci0K
IC8vIEZJWE1FOiBUaGUgb25seSByZWFzb24gdGhpcyBleGlzdHMgaXMgYmVjYXVzZSB3ZSBuZWVk
IGEgdjg6OkNvbnRleHQgYW5kIHNjb3BlIGluc2lkZSBhIHRpbWVyLiBJcyB0aGVyZSBhIGJldHRl
ciAvIG1vcmUgZ2VuZXJhbCB3YXkgdG8gZG8gdGhpcz8KIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXpl
SURCVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCwgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlKQogewpAQCAtMjM2LDMyICsyMTcsOSBA
QCBTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdENvbnRleHQsIFBhc3NSZWZQdAogICAgIHJldHVybiBTY3JpcHRWYWx1ZShwcnBWYWx1
ZS0+ZGVzZXJpYWxpemUoKSk7CiB9CiAKLVBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlG
cm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gcHJwVmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCi17Ci0gICAgSURCX1RS
QUNFKCJjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aCIpOwotICAgIEFT
U0VSVCgha2V5UGF0aC5pc051bGwoKSk7Ci0KLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiB2YWx1ZSA9IHBycFZhbHVlOwotCi0gICAgaWYgKGtleVBhdGgudHlwZSgpID09IElEQktl
eVBhdGg6OkFycmF5VHlwZSkgewotICAgICAgICBJREJLZXk6OktleUFycmF5IHJlc3VsdDsKLSAg
ICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFycmF5ID0ga2V5UGF0aC5hcnJheSgpOwotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5LnNpemUoKTsgKytpKSB7Ci0gICAgICAg
ICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVl
QW5kS2V5UGF0aCh2YWx1ZSwgYXJyYXlbaV0pOwotICAgICAgICAgICAgaWYgKCFrZXkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGtleSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlQXJyYXkocmVzdWx0KTsKLSAg
ICB9Ci0KLSAgICBBU1NFUlQoa2V5UGF0aC50eXBlKCkgPT0gSURCS2V5UGF0aDo6U3RyaW5nVHlw
ZSk7Ci0gICAgcmV0dXJuIGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRo
KHZhbHVlLCBrZXlQYXRoLnN0cmluZygpKTsKLX0KLQotUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJL
ZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBJ
REJLZXlQYXRoJiBrZXlQYXRoKQorYm9vbCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoUGFz
c1JlZlB0cjxJREJLZXk+IGtleSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBJREJLZXlQYXRo
JiBrZXlQYXRoKQogewotICAgIElEQl9UUkFDRSgiaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRW
YWx1ZSIpOworICAgIElEQl9UUkFDRSgiaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlIik7CiAK
ICAgICBBU1NFUlQoa2V5UGF0aC50eXBlKCkgPT0gSURCS2V5UGF0aDo6U3RyaW5nVHlwZSk7CiAg
ICAgVmVjdG9yPFN0cmluZz4ga2V5UGF0aEVsZW1lbnRzOwpAQCAtMjc1LDE1ICsyMzMsMTUgQEAg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdElEQktleUludG9TZXJpYWxp
emVkVmFsdWUoUGFzc1JlZlB0cjxJREIKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7
CiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQo
KS0+ZW5zdXJlQXV4aWxpYXJ5Q29udGV4dCgpKTsKIAotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2OFZhbHVlKHZhbHVlLT5kZXNlcmlhbGl6ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdjhWYWx1ZSh2YWx1ZS52OFZhbHVlKCkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBw
YXJlbnQoZW5zdXJlTnRoVmFsdWVPbktleVBhdGgodjhWYWx1ZSwga2V5UGF0aEVsZW1lbnRzLCBr
ZXlQYXRoRWxlbWVudHMuc2l6ZSgpIC0gMSkpOwogICAgIGlmIChwYXJlbnQuSXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFzZXQo
cGFyZW50LCBrZXlQYXRoRWxlbWVudHMubGFzdCgpLCB0b1Y4KGtleS5nZXQoKSkpKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHY4VmFsdWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiBi
b29sIGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShjb25zdCBTY3JpcHRWYWx1ZSYgc2Ny
aXB0VmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmgKaW5kZXggYjJiNjI5ZjU4MTlmOWEx
YTdlMDA1ZmY5MzA0NjllZWYyM2Q3YzQ3ZC4uYTQ4MmRjOTc0MWIyOWFlYzhhNWUxMTEzY2Y3ZmU1
ZjM3YWZhZjRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmlu
ZGluZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRp
bmdVdGlsaXRpZXMuaApAQCAtNDAsMTAgKzQwLDcgQEAgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOwogCiBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVZhbHVlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPik7CiAKLS8vIEZJWE1FOiByZW1vdmUgdGhlIFNlcmlhbGl6ZWRWYWx1ZSB2
ZXJzaW9ucyB3aGVuIHRoZWlyIHVzZSBpcyBmaW5hbGx5IHJlbW92ZWQgaW4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDA5LgotUGFzc1JlZlB0cjxJREJLZXk+IGNy
ZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiwgY29uc3QgSURCS2V5UGF0aCYpOwotUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0
cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IElEQktl
eVBhdGgmKTsKLQorYm9vbCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoUGFzc1JlZlB0cjxJ
REJLZXk+LCBTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKIFBhc3NSZWZQdHI8SURC
S2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKGNvbnN0IFNjcmlwdFZh
bHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwogYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0
VmFsdWUoY29uc3QgU2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7CiBTY3JpcHRWYWx1
ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3RvbS5jcHAKaW5kZXggZTYyNTdlZWMzN2Y2YTExMmMw
NjUzODRhMjAxZDlmYWE3ZTgzNjdiMC4uNWQ3MWU0MjllYTQ2N2M1NGJiZDE0MjY3YWNmNzAwNWJj
Yzk2ZjBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SURCQW55Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhJREJBbnlDdXN0b20uY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRlICJWOElEQkFu
eS5oIgogCi0jaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiU2Ny
aXB0VmFsdWUuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOERPTVN0cmlu
Z0xpc3QuaCIKICNpbmNsdWRlICJWOElEQkN1cnNvci5oIgpAQCAtNzMsMTAgKzczLDEyIEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KElEQkFueSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsCiAgICAgICAgIHJldHVybiB0b1Y4KGltcGwtPmlkYk9iamVj
dFN0b3JlKCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAgICAgY2FzZSBJREJBbnk6OklE
QlRyYW5zYWN0aW9uVHlwZToKICAgICAgICAgcmV0dXJuIHRvVjgoaW1wbC0+aWRiVHJhbnNhY3Rp
b24oKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLSAgICBjYXNlIElEQkFueTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlVHlwZToKLSAgICAgICAgcmV0dXJuIGltcGwtPnNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSgpLT5kZXNlcmlhbGl6ZSgwLCBpc29sYXRlKTsKKyAgICBjYXNlIElEQkFueTo6U2Ny
aXB0VmFsdWVUeXBlOgorICAgICAgICByZXR1cm4gaW1wbC0+c2NyaXB0VmFsdWUoKS52OFZhbHVl
KCk7CiAgICAgY2FzZSBJREJBbnk6OlN0cmluZ1R5cGU6CiAgICAgICAgIHJldHVybiB2OFN0cmlu
ZyhpbXBsLT5zdHJpbmcoKSwgaXNvbGF0ZSk7CisgICAgY2FzZSBJREJBbnk6OkludGVnZXJUeXBl
OgorICAgICAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KGltcGwtPmludGVnZXIoKSk7CiAgICAg
fQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCmluZGV4IGMyZDVl
NzU0MTA4ZDY4YjM2NDM4MDZlMmNkODFkZDcwMTU0NmVmOTIuLjQ2NzEwZTc0NTY4YTc0ZmFjNWZl
NWY1MDc5M2FjMmM5YTljMmZiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3QuY3BwCkBAIC0yNyw3ICsyNyw2IEBA
CiAjaW5jbHVkZSAiSURCQmluZGluZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIklEQktleS5oIgog
I2luY2x1ZGUgIklEQktleVBhdGguaCIKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCIKICNpbmNsdWRlICJWOFBlcklzb2xhdGVEYXRhLmgiCiAjaW5jbHVkZSAiVjhVdGlsaXRpZXMu
aCIKIApAQCAtNDAsNDEgKzM5LDQyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgewogCi1QYXNzUmVmUHRyPElEQktleT4gY2hlY2tLZXlGcm9tVmFsdWVBbmRLZXlQYXRo
SW50ZXJuYWwoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoKQorUGFzc1JlZlB0cjxJREJLZXk+IGNoZWNrS2V5RnJvbVZhbHVlQW5kS2V5UGF0aEludGVy
bmFsKGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewog
ICAgIElEQktleVBhdGggaWRiS2V5UGF0aChrZXlQYXRoKTsKICAgICBFWFBFQ1RfVFJVRShpZGJL
ZXlQYXRoLmlzVmFsaWQoKSk7Ci0gICAgcmV0dXJuIGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVk
VmFsdWVBbmRLZXlQYXRoKHZhbHVlLCBpZGJLZXlQYXRoKTsKKyAgICAKKyAgICByZXR1cm4gY3Jl
YXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCh2YWx1ZSwgaWRiS2V5UGF0aCk7CiB9
CiAKLXZvaWQgY2hlY2tLZXlQYXRoTnVsbFZhbHVlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFs
dWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK3ZvaWQgY2hlY2tLZXlQYXRoTnVsbFZhbHVlKGNv
bnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewogICAgIFJl
ZlB0cjxJREJLZXk+IGlkYktleSA9IGNoZWNrS2V5RnJvbVZhbHVlQW5kS2V5UGF0aEludGVybmFs
KHZhbHVlLCBrZXlQYXRoKTsKICAgICBBU1NFUlRfRkFMU0UoaWRiS2V5LmdldCgpKTsKIH0KIAot
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdEtleShQYXNzUmVmUHRyPElE
QktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0
IFN0cmluZyYga2V5UGF0aCkKK2Jvb2wgaW5qZWN0S2V5KFBhc3NSZWZQdHI8SURCS2V5PiBrZXks
IFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewogICAgIElEQktl
eVBhdGggaWRiS2V5UGF0aChrZXlQYXRoKTsKICAgICBFWFBFQ1RfVFJVRShpZGJLZXlQYXRoLmlz
VmFsaWQoKSk7Ci0gICAgcmV0dXJuIGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoa2V5
LCB2YWx1ZSwgaWRiS2V5UGF0aCk7CisgICAgcmV0dXJuIGluamVjdElEQktleUludG9TY3JpcHRW
YWx1ZShrZXksIHZhbHVlLCBpZGJLZXlQYXRoKTsKIH0KIAotdm9pZCBjaGVja0luamVjdGlvbihQ
YXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK3ZvaWQgY2hlY2tJbmplY3Rpb24oUGFz
c1JlZlB0cjxJREJLZXk+IHBycEtleSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgpCiB7CiAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gcHJwS2V5OwotICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG5ld1ZhbHVlID0gaW5qZWN0S2V5KGtleSwgdmFsdWUs
IGtleVBhdGgpOwotICAgIEFTU0VSVF9UUlVFKG5ld1ZhbHVlKTsKLSAgICBSZWZQdHI8SURCS2V5
PiBleHRyYWN0ZWRLZXkgPSBjaGVja0tleUZyb21WYWx1ZUFuZEtleVBhdGhJbnRlcm5hbChuZXdW
YWx1ZS5nZXQoKSwga2V5UGF0aCk7CisgICAgYm9vbCByZXN1bHQgPSBpbmplY3RLZXkoa2V5LCB2
YWx1ZSwga2V5UGF0aCk7CisgICAgQVNTRVJUX1RSVUUocmVzdWx0KTsKKyAgICBSZWZQdHI8SURC
S2V5PiBleHRyYWN0ZWRLZXkgPSBjaGVja0tleUZyb21WYWx1ZUFuZEtleVBhdGhJbnRlcm5hbCh2
YWx1ZSwga2V5UGF0aCk7CiAgICAgRVhQRUNUX1RSVUUoa2V5LT5pc0VxdWFsKGV4dHJhY3RlZEtl
eS5nZXQoKSkpOwogfQogCi12b2lkIGNoZWNrSW5qZWN0aW9uRmFpbHMoUGFzc1JlZlB0cjxJREJL
ZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgpCit2b2lkIGNoZWNrSW5qZWN0aW9uRmFpbHMoUGFzc1JlZlB0cjxJREJL
ZXk+IGtleSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiB7CiAg
ICAgRVhQRUNUX0ZBTFNFKGluamVjdEtleShrZXksIHZhbHVlLCBrZXlQYXRoKSk7CiB9CiAKLXZv
aWQgY2hlY2tLZXlQYXRoU3RyaW5nVmFsdWUoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkKQordm9pZCBjaGVj
a0tleVBhdGhTdHJpbmdWYWx1ZShjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCwgY29uc3QgU3RyaW5nJiBleHBlY3RlZCkKIHsKICAgICBSZWZQdHI8SURCS2V5
PiBpZGJLZXkgPSBjaGVja0tleUZyb21WYWx1ZUFuZEtleVBhdGhJbnRlcm5hbCh2YWx1ZSwga2V5
UGF0aCk7CiAgICAgQVNTRVJUX1RSVUUoaWRiS2V5LmdldCgpKTsKQEAgLTgyLDcgKzgyLDcgQEAg
dm9pZCBjaGVja0tleVBhdGhTdHJpbmdWYWx1ZShTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVl
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgKICAgICBBU1NFUlRfVFJVRShleHBlY3RlZCA9PSBpZGJL
ZXktPnN0cmluZygpKTsKIH0KIAotdm9pZCBjaGVja0tleVBhdGhOdW1iZXJWYWx1ZShTZXJpYWxp
emVkU2NyaXB0VmFsdWUqIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGludCBleHBlY3Rl
ZCkKK3ZvaWQgY2hlY2tLZXlQYXRoTnVtYmVyVmFsdWUoY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVl
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGludCBleHBlY3RlZCkKIHsKICAgICBSZWZQdHI8SURC
S2V5PiBpZGJLZXkgPSBjaGVja0tleUZyb21WYWx1ZUFuZEtleVBhdGhJbnRlcm5hbCh2YWx1ZSwg
a2V5UGF0aCk7CiAgICAgQVNTRVJUX1RSVUUoaWRiS2V5LmdldCgpKTsKQEAgLTk4LDEwICs5OCwx
MCBAQCBURVNUKElEQktleUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0LCBUb3BMZXZlbFByb3BlcnR5
U3RyaW5nVmFsdWUpCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpPYmpl
Y3Q6Ok5ldygpOwogICAgIG9iamVjdC0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiZm9vIiksIHY4OjpT
dHJpbmc6Ok5ldygiem9vIikpOwogCi0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
c2VyaWFsaXplZFNjcmlwdFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUob2Jq
ZWN0KTsKKyAgICBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZShvYmplY3QpOwogCi0gICAgY2hlY2tL
ZXlQYXRoU3RyaW5nVmFsdWUoc2VyaWFsaXplZFNjcmlwdFZhbHVlLmdldCgpLCAiZm9vIiwgInpv
byIpOwotICAgIGNoZWNrS2V5UGF0aE51bGxWYWx1ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUuZ2V0
KCksICJiYXIiKTsKKyAgICBjaGVja0tleVBhdGhTdHJpbmdWYWx1ZShzY3JpcHRWYWx1ZSwgImZv
byIsICJ6b28iKTsKKyAgICBjaGVja0tleVBhdGhOdWxsVmFsdWUoc2NyaXB0VmFsdWUsICJiYXIi
KTsKIH0KIAogVEVTVChJREJLZXlGcm9tVmFsdWVBbmRLZXlQYXRoVGVzdCwgVG9wTGV2ZWxQcm9w
ZXJ0eU51bWJlclZhbHVlKQpAQCAtMTEyLDEwICsxMTIsMTAgQEAgVEVTVChJREJLZXlGcm9tVmFs
dWVBbmRLZXlQYXRoVGVzdCwgVG9wTGV2ZWxQcm9wZXJ0eU51bWJlclZhbHVlKQogICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6T2JqZWN0OjpOZXcoKTsKICAgICBvYmplY3Qt
PlNldCh2ODo6U3RyaW5nOjpOZXcoImZvbyIpLCB2ODo6TnVtYmVyOjpOZXcoNDU2KSk7CiAKLSAg
ICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsdWUgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShvYmplY3QpOworICAgIFNjcmlwdFZhbHVlIHNj
cmlwdFZhbHVlKG9iamVjdCk7CiAKLSAgICBjaGVja0tleVBhdGhOdW1iZXJWYWx1ZShzZXJpYWxp
emVkU2NyaXB0VmFsdWUuZ2V0KCksICJmb28iLCA0NTYpOwotICAgIGNoZWNrS2V5UGF0aE51bGxW
YWx1ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUuZ2V0KCksICJiYXIiKTsKKyAgICBjaGVja0tleVBh
dGhOdW1iZXJWYWx1ZShzY3JpcHRWYWx1ZSwgImZvbyIsIDQ1Nik7CisgICAgY2hlY2tLZXlQYXRo
TnVsbFZhbHVlKHNjcmlwdFZhbHVlLCAiYmFyIik7CiB9CiAKIFRFU1QoSURCS2V5RnJvbVZhbHVl
QW5kS2V5UGF0aFRlc3QsIFN1YlByb3BlcnR5KQpAQCAtMTI4LDEwICsxMjgsMTAgQEAgVEVTVChJ
REJLZXlGcm9tVmFsdWVBbmRLZXlQYXRoVGVzdCwgU3ViUHJvcGVydHkpCiAgICAgc3ViUHJvcGVy
dHktPlNldCh2ODo6U3RyaW5nOjpOZXcoImJhciIpLCB2ODo6U3RyaW5nOjpOZXcoInplZSIpKTsK
ICAgICBvYmplY3QtPlNldCh2ODo6U3RyaW5nOjpOZXcoImZvbyIpLCBzdWJQcm9wZXJ0eSk7CiAK
LSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsdWUg
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShvYmplY3QpOworICAgIFNjcmlwdFZhbHVl
IHNjcmlwdFZhbHVlKG9iamVjdCk7CiAKLSAgICBjaGVja0tleVBhdGhTdHJpbmdWYWx1ZShzZXJp
YWxpemVkU2NyaXB0VmFsdWUuZ2V0KCksICJmb28uYmFyIiwgInplZSIpOwotICAgIGNoZWNrS2V5
UGF0aE51bGxWYWx1ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUuZ2V0KCksICJiYXIiKTsKKyAgICBj
aGVja0tleVBhdGhTdHJpbmdWYWx1ZShzY3JpcHRWYWx1ZSwgImZvby5iYXIiLCAiemVlIik7Cisg
ICAgY2hlY2tLZXlQYXRoTnVsbFZhbHVlKHNjcmlwdFZhbHVlLCAiYmFyIik7CiB9CiAKIFRFU1Qo
SW5qZWN0SURCS2V5VGVzdCwgVG9wTGV2ZWxQcm9wZXJ0eVN0cmluZ1ZhbHVlKQpAQCAtMTQyLDEw
ICsxNDIsMTEgQEAgVEVTVChJbmplY3RJREJLZXlUZXN0LCBUb3BMZXZlbFByb3BlcnR5U3RyaW5n
VmFsdWUpCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpPYmplY3Q6Ok5l
dygpOwogICAgIG9iamVjdC0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiZm9vIiksIHY4OjpTdHJpbmc6
Ok5ldygiem9vIikpOwogCi0gICAgY2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVTdHJpbmco
Im15TmV3S2V5IiksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG9iamVjdCksICJiYXIi
KTsKLSAgICBjaGVja0luamVjdGlvbihJREJLZXk6OmNyZWF0ZU51bWJlcigxMjM0KSwgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUob2JqZWN0KSwgImJhciIpOworICAgIFNjcmlwdFZhbHVl
IGZvb3pvbyhvYmplY3QpOworICAgIGNoZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlU3RyaW5n
KCJteU5ld0tleSIpLCBmb296b28sICJiYXIiKTsKKyAgICBjaGVja0luamVjdGlvbihJREJLZXk6
OmNyZWF0ZU51bWJlcigxMjM0KSwgZm9vem9vLCAiYmFyIik7CiAKLSAgICBjaGVja0luamVjdGlv
bkZhaWxzKElEQktleTo6Y3JlYXRlU3RyaW5nKCJrZXkiKSwgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUob2JqZWN0KSwgImZvby5iYXIiKTsKKyAgICBjaGVja0luamVjdGlvbkZhaWxzKElE
QktleTo6Y3JlYXRlU3RyaW5nKCJrZXkiKSwgZm9vem9vLCAiZm9vLmJhciIpOwogfQogCiBURVNU
KEluamVjdElEQktleVRlc3QsIFN1YlByb3BlcnR5KQpAQCAtMTU4LDE1ICsxNTksMTYgQEAgVEVT
VChJbmplY3RJREJLZXlUZXN0LCBTdWJQcm9wZXJ0eSkKICAgICBzdWJQcm9wZXJ0eS0+U2V0KHY4
OjpTdHJpbmc6Ok5ldygiYmFyIiksIHY4OjpTdHJpbmc6Ok5ldygiemVlIikpOwogICAgIG9iamVj
dC0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiZm9vIiksIHN1YlByb3BlcnR5KTsKIAotICAgIGNoZWNr
SW5qZWN0aW9uKElEQktleTo6Y3JlYXRlU3RyaW5nKCJteU5ld0tleSIpLCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShvYmplY3QpLCAiZm9vLmJheiIpOwotICAgIGNoZWNrSW5qZWN0aW9u
KElEQktleTo6Y3JlYXRlTnVtYmVyKDc4OSksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KG9iamVjdCksICJmb28uYmF6Iik7Ci0gICAgY2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVE
YXRlKDQ1NjcpLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShvYmplY3QpLCAiZm9vLmJh
eiIpOwotICAgIGNoZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlRGF0ZSg0NTY3KSwgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUob2JqZWN0KSwgImJhciIpOwotICAgIGNoZWNrSW5qZWN0
aW9uKElEQktleTo6Y3JlYXRlQXJyYXkoSURCS2V5OjpLZXlBcnJheSgpKSwgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUob2JqZWN0KSwgImZvby5iYXoiKTsKLSAgICBjaGVja0luamVjdGlv
bihJREJLZXk6OmNyZWF0ZUFycmF5KElEQktleTo6S2V5QXJyYXkoKSksIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKG9iamVjdCksICJiYXIiKTsKKyAgICBTY3JpcHRWYWx1ZSBzY3JpcHRP
YmplY3Qob2JqZWN0KTsKKyAgICBjaGVja0luamVjdGlvbihJREJLZXk6OmNyZWF0ZVN0cmluZygi
bXlOZXdLZXkiKSwgc2NyaXB0T2JqZWN0LCAiZm9vLmJheiIpOworICAgIGNoZWNrSW5qZWN0aW9u
KElEQktleTo6Y3JlYXRlTnVtYmVyKDc4OSksIHNjcmlwdE9iamVjdCwgImZvby5iYXoiKTsKKyAg
ICBjaGVja0luamVjdGlvbihJREJLZXk6OmNyZWF0ZURhdGUoNDU2NyksIHNjcmlwdE9iamVjdCwg
ImZvby5iYXoiKTsKKyAgICBjaGVja0luamVjdGlvbihJREJLZXk6OmNyZWF0ZURhdGUoNDU2Nyks
IHNjcmlwdE9iamVjdCwgImJhciIpOworICAgIGNoZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRl
QXJyYXkoSURCS2V5OjpLZXlBcnJheSgpKSwgc2NyaXB0T2JqZWN0LCAiZm9vLmJheiIpOworICAg
IGNoZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlQXJyYXkoSURCS2V5OjpLZXlBcnJheSgpKSwg
c2NyaXB0T2JqZWN0LCAiYmFyIik7CiAKLSAgICBjaGVja0luamVjdGlvbkZhaWxzKElEQktleTo6
Y3JlYXRlU3RyaW5nKCJ6b28iKSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUob2JqZWN0
KSwgImZvby5iYXIuYmF6Iik7Ci0gICAgY2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVTdHJp
bmcoInpvbyIpLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShvYmplY3QpLCAiZm9vLnh5
ei5mb28iKTsKKyAgICBjaGVja0luamVjdGlvbkZhaWxzKElEQktleTo6Y3JlYXRlU3RyaW5nKCJ6
b28iKSwgc2NyaXB0T2JqZWN0LCAiZm9vLmJhci5iYXoiKTsKKyAgICBjaGVja0luamVjdGlvbihJ
REJLZXk6OmNyZWF0ZVN0cmluZygiem9vIiksIHNjcmlwdE9iamVjdCwgImZvby54eXouZm9vIik7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQktleVBhdGhUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SURCS2V5UGF0aFRlc3QuY3BwCmluZGV4IGMzZDQ3ZDc4ODc4M2E1ZTQ2MWUyYWE1Yjg3YzE2YWE3
MWQ1MGVmYjkuLmNkMjQwY2M5NDUyNmU5MTkzODBhMWZlZDVjMDM5ODUwYTM3NDliYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCS2V5UGF0aFRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCS2V5UGF0aFRlc3QuY3BwCkBAIC0x
MjcsOTIgKzEyNyw2IEBAIFRFU1QoSURCS2V5UGF0aFRlc3QsIEludmFsaWRLZXlQYXRoNSkKICAg
ICBjaGVja0tleVBhdGgoa2V5UGF0aCwgZXhwZWN0ZWQsIDMpOwogfQogCi1URVNUKElEQktleVBh
dGhUZXN0LCBFeHRyYWN0KQotewotICAgIElEQktleVBhdGgga2V5UGF0aCgiZm9vIik7Ci0gICAg
UmVmUHRyPElEQktleT4gc3RyaW5nWm9vS2V5KElEQktleTo6Y3JlYXRlU3RyaW5nKCJ6b28iKSk7
Ci0gICAgUmVmUHRyPElEQktleT4gaW52YWxpZEtleShJREJLZXk6OmNyZWF0ZUludmFsaWQoKSk7
Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3N2OwotICAgIFJlZlB0cjxJREJL
ZXk+IHJlc3VsdDsKLQotICAgIC8vIGtleXBhdGg6ICJmb28iLCB2YWx1ZToge2ZvbzogInpvbyJ9
LCBleHBlY3RlZDogInpvbyIKLSAgICBVQ2hhciBkYXRhRm9vWm9vW10gPSB7MHgwMzUzLCAweDZm
NjYsIDB4NTM2ZiwgMHg3YTAzLCAweDZmNmYsIDB4MDE3Yn07Ci0gICAgc3N2ID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZShTdHJpbmcoZGF0YUZvb1pvbywgV1RGX0FSUkFZ
X0xFTkdUSChkYXRhRm9vWm9vKSkpOwotICAgIHJlc3VsdCA9IGNyZWF0ZUlEQktleUZyb21TZXJp
YWxpemVkVmFsdWVBbmRLZXlQYXRoKHNzdiwga2V5UGF0aCk7Ci0gICAgRVhQRUNUX1RSVUUoc3Ry
aW5nWm9vS2V5LT5pc0VxdWFsKHJlc3VsdC5nZXQoKSkpOwotCi0gICAgLy8ga2V5cGF0aDogImZv
byIsIHZhbHVlOiB7Zm9vOiBudWxsfSwgZXhwZWN0ZWQ6IGludmFsaWQKLSAgICBVQ2hhciBkYXRh
Rm9vTnVsbFtdID0gezB4MDM1MywgMHg2ZjY2LCAweDMwNmYsIDB4MDE3Yn07Ci0gICAgc3N2ID0g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZShTdHJpbmcoZGF0YUZvb051bGws
IFdURl9BUlJBWV9MRU5HVEgoZGF0YUZvb051bGwpKSk7Ci0gICAgcmVzdWx0ID0gY3JlYXRlSURC
S2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoc3N2LCBrZXlQYXRoKTsKLSAgICBFWFBF
Q1RfRkFMU0UocmVzdWx0LT5pc1ZhbGlkKCkpOwotCi0gICAgLy8ga2V5cGF0aDogImZvbyIsIHZh
bHVlOiB7fSwgZXhwZWN0ZWQ6IG51bGwKLSAgICBVQ2hhciBkYXRhT2JqZWN0W10gPSB7MHgwMTdi
fTsKLSAgICBzc3YgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlKFN0cmlu
ZyhkYXRhT2JqZWN0LCBXVEZfQVJSQVlfTEVOR1RIKGRhdGFPYmplY3QpKSk7Ci0gICAgcmVzdWx0
ID0gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoc3N2LCBrZXlQYXRo
KTsKLSAgICBFWFBFQ1RfRVEoMCwgcmVzdWx0LmdldCgpKTsKLQotICAgIC8vIGtleXBhdGg6ICJm
b28iLCB2YWx1ZTogbnVsbCwgZXhwZWN0ZWQ6IG51bGwKLSAgICBzc3YgPSBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6Om51bGxWYWx1ZSgpOwotICAgIHJlc3VsdCA9IGNyZWF0ZUlEQktleUZyb21TZXJp
YWxpemVkVmFsdWVBbmRLZXlQYXRoKHNzdiwga2V5UGF0aCk7Ci0gICAgRVhQRUNUX0VRKDAsIHJl
c3VsdC5nZXQoKSk7Ci19Ci0KLVRFU1QoSURCS2V5UGF0aFRlc3QsIElEQktleVBhdGhQcm9wZXJ0
eU5vdEF2YWlsYWJsZSkKLXsKLSAgICBJREJLZXlQYXRoIGtleVBhdGgoIlByb3BlcnR5Tm90QXZh
aWxhYmxlIik7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3N2OwotICAgIC8v
IHtmb286ICJ6b28iLCBiYXI6IG51bGx9Ci0gICAgVUNoYXIgZGF0YVtdID0gezB4MDM1MywgMHg2
ZjY2LCAweDUzNmYsIDB4N2EwMywgMHg2ZjZmLCAweDAzNTMsIDB4NjE2MiwKLSAgICAgICAgICAg
ICAgICAgICAgMHgzMDcyLCAweDAyN2J9OwotICAgIHNzdiA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlRnJvbVdpcmUoU3RyaW5nKGRhdGEsIFdURl9BUlJBWV9MRU5HVEgoZGF0YSkpKTsK
LSAgICBSZWZQdHI8SURCS2V5PiByZXN1bHQgPSBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZh
bHVlQW5kS2V5UGF0aChzc3YsIGtleVBhdGgpOwotICAgIEVYUEVDVF9FUSgwLCByZXN1bHQuZ2V0
KCkpOwotCi0gICAgLy8gbnVsbAotICAgIHNzdiA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVs
bFZhbHVlKCk7Ci0gICAgcmVzdWx0ID0gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFu
ZEtleVBhdGgoc3N2LCBrZXlQYXRoKTsKLSAgICBFWFBFQ1RfRVEoMCwgcmVzdWx0LmdldCgpKTsK
LX0KLQotVEVTVChJREJLZXlQYXRoVGVzdCwgSW5qZWN0SURCS2V5KQotewotICAgIC8vIHtmb286
ICd6b28nfQotICAgIGNvbnN0IFVDaGFyIGluaXRpYWxEYXRhW10gPSB7MHgwMzUzLCAweDZmNjYs
IDB4NTM2ZiwgMHg3YTAzLCAweDZmNmYsIDB4MDE3Yn07Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gdmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJl
KFN0cmluZyhpbml0aWFsRGF0YSwgV1RGX0FSUkFZX0xFTkdUSChpbml0aWFsRGF0YSkpKTsKLQot
ICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IElEQktleTo6Y3JlYXRlU3RyaW5nKCJteU5ld0tleSIp
OwotICAgIElEQktleVBhdGgga2V5UGF0aCgiYmFyIik7Ci0KLSAgICAvLyB7Zm9vOiAnem9vJywg
YmFyOiAnbXlOZXdLZXknfQotICAgIGNvbnN0IFVDaGFyIGV4cGVjdGVkRGF0YVtdID0gezB4MDFm
ZiwgMHgwMDNmLCAweDNmNmYsIDB4NTMwMSwgMHg2NjAzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4NmY2ZiwgMHgwMTNmLCAweDAzNTMsIDB4NmY3YSwgMHgzZjZmLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMwMSwgMHg2MjAzLCAweDcyNjEsIDB4
MDEzZiwgMHgwODUzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Nzk2ZCwg
MHg2NTRlLCAweDRiNzcsIDB4Nzk2NSwgMHgwMjdifTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBleHBlY3RlZFZhbHVlID0gCi0gICAgICAgICAgICBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZUZyb21XaXJlKFN0cmluZyhleHBlY3RlZERhdGEsIFdURl9BUlJBWV9MRU5H
VEgoZXhwZWN0ZWREYXRhKSkpOwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHJl
c3VsdCA9IGluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoa2V5LCB2YWx1ZSwga2V5UGF0
aCk7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVkVmFsdWUtPnRvV2lyZVN0cmluZygpLCByZXN1bHQt
PnRvV2lyZVN0cmluZygpKTsKLQotICAgIC8vIFNob3VsZCBmYWlsIC0gY2FuJ3QgYXBwbHkgcHJv
cGVydGllcyB0byBzdHJpbmcgdmFsdWUgb2Yga2V5IGZvbwotICAgIGtleVBhdGggPSBJREJLZXlQ
YXRoKCJmb28uYmFkLnBhdGgiKTsKLSAgICByZXN1bHQgPSBpbmplY3RJREJLZXlJbnRvU2VyaWFs
aXplZFZhbHVlKGtleSwgdmFsdWUsIGtleVBhdGgpOwotICAgIEVYUEVDVF9FUSgwLCByZXN1bHQu
Z2V0KCkpOwotCi0gICAgLy8ge2ZvbzogJ3pvbycsIGJhcjoge2JhejogJ215TmV3S2V5J319Ci0g
ICAgY29uc3QgVUNoYXIgZXhwZWN0ZWREYXRhMltdID0gezB4MDFmZiwgMHgwMDNmLCAweDNmNmYs
IDB4NTMwMSwgMHg2NjAzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDZm
NmYsIDB4MDEzZiwgMHgwMzUzLCAweDZmN2EsIDB4M2Y2ZiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg1MzAxLCAweDYyMDMsIDB4NzI2MSwgMHgwMTNmLCAweDNmNmYsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTMwMiwgMHg2MjAzLCAweDdhNjEs
IDB4MDIzZiwgMHgwODUzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5
NmQsIDB4NjU0ZSwgMHg0Yjc3LCAweDc5NjUsIDB4MDE3YiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHgwMjdifTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBleHBlY3RlZFZhbHVlMiA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmUo
U3RyaW5nKGV4cGVjdGVkRGF0YTIsIFdURl9BUlJBWV9MRU5HVEgoZXhwZWN0ZWREYXRhMikpKTsK
LSAgICBrZXlQYXRoID0gSURCS2V5UGF0aCgiYmFyLmJheiIpOwotICAgIHJlc3VsdCA9IGluamVj
dElEQktleUludG9TZXJpYWxpemVkVmFsdWUoa2V5LCB2YWx1ZSwga2V5UGF0aCk7Ci0gICAgRVhQ
RUNUX0VRKGV4cGVjdGVkVmFsdWUyLT50b1dpcmVTdHJpbmcoKSwgcmVzdWx0LT50b1dpcmVTdHJp
bmcoKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164425</attachid>
            <date>2012-09-17 11:41:13 -0700</date>
            <delta_ts>2012-09-17 12:03:16 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-95409-20120917114041.patch</filename>
            <type>text/plain</type>
            <size>38672</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTFiNTZmZjI0NTdhNDY0
ZjQyMjcyNzhhODNlMjYzNzc1NzM4ZjczOS4uMjdjYWJlOWU1MDYyOThlMGRhM2M1NDlmOGEwZDJm
NDNmNzU2NDQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTA5LTE0ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFVz
ZSBTY3JpcHRWYWx1ZSBpbnN0ZWFkIG9mIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBmb3IgZ2V0L29w
ZW5DdXJzb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk1NDA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudGFybyBIYXJhLgorCisgICAgICAgIFRo
aXMgcmVkdWNlcyBhIGJ1bmNoIG9mIHNlcmlhbGl6YXRpb24vZGVzZXJpYWxpemF0aW9uIHdoZW4g
d3JpdGluZworICAgICAgICB0byBvYmplY3RzdG9yZXMgd2l0aCBpbmRleGVzLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgYXMgdGhpcyBjb3ZlcnMgY29yZSBmdW5jdGlvbmFsaXR5IG9mIEluZGV4
ZWREQiwgYW5kCisgICAgICAgIGFsbW9zdCBldmVyeSB0ZXN0IHdvdWxkIGZhaWwuIFNvbWUgbGlr
ZWx5IHRlc3RzIHRoYXQgd291bGQgZmFpbAorICAgICAgICBmdW5kYW1lbnRhbGx5IGluY2x1ZGU6
CisKKyAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwKKyAg
ICAgICAgc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWJhc2ljcy5odG1sCisgICAgICAgIHN0b3Jh
Z2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJBbnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQW55OjpzY3JpcHRWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJBbnk6OmludGVnZXIpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJBbnk6OnNldCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCQW55Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKElEQkFueSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJBbnk6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6c2V0VmFs
dWVSZWFkeSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKElEQkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6
OnZlcnNpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJl
cXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6c2V0UmVzdWx0Q3Vyc29y
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzc0ludGVybmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKElEQlJlcXVlc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmg6
CisgICAgICAgICogYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpkZXNlcmlhbGl6ZUlEQlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmluamVj
dElEQktleUludG9TY3JpcHRWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvSURCQmluZGlu
Z1V0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorCiAy
MDEyLTA5LTE3ICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CiAKICAgICAgICAgTWFr
ZSBTVkdQYXRoU2VnTGlzdC5hcHBlbmRJdGVtIE8oMSkgaW5zdGVhZCBvZiBPKG4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDY4NWRhMzhhNjQ2ZjVmMTFjZjUyYzM0MzZjN2UxYWVmMTY2
MGQ2MTkuLjUxMmNiNjQ1OTg2M2NkNDUwMmIzYTkyNWY4NTlhNTNiNjkzYjI5ZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDktMTQgIEFsZWMgRmxl
dHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogVXNlIFNj
cmlwdFZhbHVlIGluc3RlYWQgb2YgU2VyaWFsaXplZFNjcmlwdFZhbHVlIGZvciBnZXQvb3BlbkN1
cnNvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0
MDkKKworICAgICAgICBSZXZpZXdlZCBieSBLZW50YXJvIEhhcmEuCisKKyAgICAgICAgVGhpcyBy
ZW1vdmVzIGEgYnVuY2ggb2YgdGVzdHMgdGhhdCBoYXZlIGJlZW4gbWlncmF0ZWQgdG8KKyAgICAg
ICAgTGF5b3V0VGVzdHMsIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NjgxOC4KKworICAgICAgICAqIHRlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNoZWNrS2V5RnJvbVZhbHVlQW5kS2V5UGF0aEludGVybmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OmNoZWNrS2V5UGF0aE51bGxWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjppbmplY3RLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tJbmplY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Y2hlY2tJbmplY3Rpb25GYWlscyk6CisgICAgICAgIChXZWJDb3JlOjpj
aGVja0tleVBhdGhTdHJpbmdWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0tleVBhdGhO
dW1iZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9J
REJLZXlQYXRoVGVzdC5jcHA6CisKIDIwMTItMDktMTQgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5
c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogT3duUHRyIGFuZCBSZWZQ
dHIgcmVwb3J0ZWQgYnkgcG9pbnRlciBjYW4gYmUgZG91YmxlIGNvdW50ZWQgYnkgdGhlIG1lbW9y
eSBpbnN0cnVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkFueS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJB
bnkuY3BwCmluZGV4IDJjZDhhMDk0YzAyM2NjM2Y3MDRmZWI4YmQwZGU3NTliNzU4YjY4NjkuLmM2
MDMyNTVhN2U3YzA4YjA3NjZhMzU1ZDBmOTg1ZGZmZGExMjJhYWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1
ZGUgIklEQkluZGV4LmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklEQk9i
amVjdFN0b3JlLmgiCi0jaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMTIwLDEwICsxMTksMTAgQEAgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbj4gSURCQW55OjppZGJUcmFuc2FjdGlvbigpCiAgICAgcmV0dXJuIG1faWRiVHJhbnNh
Y3Rpb247CiB9CiAKLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJREJBbnk6OnNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSgpCitTY3JpcHRWYWx1ZSBJREJBbnk6OnNjcmlwdFZhbHVlKCkK
IHsKLSAgICBBU1NFUlQobV90eXBlID09IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVR5cGUpOwotICAg
IHJldHVybiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKyAgICBBU1NFUlQobV90eXBlID09IFNj
cmlwdFZhbHVlVHlwZSk7CisgICAgcmV0dXJuIG1fc2NyaXB0VmFsdWU7CiB9CiAKIGNvbnN0IFN0
cmluZyYgSURCQW55OjpzdHJpbmcoKQpAQCAtMTMyLDYgKzEzMSwxMiBAQCBjb25zdCBTdHJpbmcm
IElEQkFueTo6c3RyaW5nKCkKICAgICByZXR1cm4gbV9zdHJpbmc7CiB9CiAKK2ludDY0X3QgSURC
QW55OjppbnRlZ2VyKCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IEludGVnZXJUeXBlKTsKKyAg
ICByZXR1cm4gbV9pbnRlZ2VyOworfQorCiB2b2lkIElEQkFueTo6c2V0TnVsbCgpCiB7CiAgICAg
QVNTRVJUKG1fdHlwZSA9PSBVbmRlZmluZWRUeXBlKTsKQEAgLTIwMSwxMSArMjA2LDExIEBAIHZv
aWQgSURCQW55OjpzZXQoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gdmFsdWUpCiAgICAgbV9p
ZGJPYmplY3RTdG9yZSA9IHZhbHVlOwogfQogCi12b2lkIElEQkFueTo6c2V0KFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSkKK3ZvaWQgSURCQW55OjpzZXQoY29uc3QgU2Ny
aXB0VmFsdWUmIHZhbHVlKQogewogICAgIEFTU0VSVChtX3R5cGUgPT0gVW5kZWZpbmVkVHlwZSk7
Ci0gICAgbV90eXBlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlVHlwZTsKLSAgICBtX3NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSA9IHZhbHVlOworICAgIG1fdHlwZSA9IFNjcmlwdFZhbHVlVHlwZTsKKyAg
ICBtX3NjcmlwdFZhbHVlID0gdmFsdWU7CiB9CiAKIHZvaWQgSURCQW55OjpzZXQoY29uc3QgSURC
S2V5UGF0aCYgdmFsdWUpCkBAIC0yMzYsNiArMjQxLDEzIEBAIHZvaWQgSURCQW55OjpzZXQoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKICAgICBtX3N0cmluZyA9IHZhbHVlOwogfQogCit2b2lkIElEQkFu
eTo6c2V0KGludDY0X3QgdmFsdWUpCit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmRlZmluZWRU
eXBlKTsKKyAgICBtX3R5cGUgPSBJbnRlZ2VyVHlwZTsKKyAgICBtX2ludGVnZXIgPSB2YWx1ZTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQW55LmgKaW5kZXggZDg3ODNkMjA1OWM3ZTE2ZDk5ZmYzZjg2NzNi
ZWY4MmEwMTg3YzBmMS4uYTc3YmIxNzZkMWQ2MjU0MTE1ODYwNWQzN2RmMTY5ZjliNzBjMDQ1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiU2NyaXB0
VmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDUsNyArNDYsNiBAQCBjbGFz
cyBJREJLZXk7CiBjbGFzcyBJREJLZXlQYXRoOwogY2xhc3MgSURCT2JqZWN0U3RvcmU7CiBjbGFz
cyBJREJUcmFuc2FjdGlvbjsKLWNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogY2xhc3Mg
SURCQW55IDogcHVibGljIFJlZkNvdW50ZWQ8SURCQW55PiB7CiBwdWJsaWM6CkBAIC01OSwxMCAr
NTksMTEgQEAgcHVibGljOgogICAgICAgICBhbnktPnNldChpZGJPYmplY3QpOwogICAgICAgICBy
ZXR1cm4gYW55LnJlbGVhc2UoKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQW55
PiBjcmVhdGUoY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkFueT4gY3JlYXRlKGNvbnN0IFQmIGlkYk9i
amVjdCkKICAgICB7CiAgICAgICAgIFJlZlB0cjxJREJBbnk+IGFueSA9IElEQkFueTo6Y3JlYXRl
SW52YWxpZCgpOwotICAgICAgICBhbnktPnNldChrZXlQYXRoKTsKKyAgICAgICAgYW55LT5zZXQo
aWRiT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIGFueS5yZWxlYXNlKCk7CiAgICAgfQogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC03Miw2ICs3MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIGFu
eS0+c2V0KGlkYk9iamVjdCk7CiAgICAgICAgIHJldHVybiBhbnkucmVsZWFzZSgpOwogICAgIH0K
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJBbnk+IGNyZWF0ZShpbnQ2NF90IHZhbHVlKQorICAg
IHsKKyAgICAgICAgUmVmUHRyPElEQkFueT4gYW55ID0gSURCQW55OjpjcmVhdGVJbnZhbGlkKCk7
CisgICAgICAgIGFueS0+c2V0KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGFueS5yZWxlYXNlKCk7
CisgICAgfQogICAgIH5JREJBbnkoKTsKIAogICAgIGVudW0gVHlwZSB7CkBAIC04Niw3ICs5Myw4
IEBAIHB1YmxpYzoKICAgICAgICAgSURCS2V5VHlwZSwKICAgICAgICAgSURCT2JqZWN0U3RvcmVU
eXBlLAogICAgICAgICBJREJUcmFuc2FjdGlvblR5cGUsCi0gICAgICAgIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZVR5cGUsCisgICAgICAgIFNjcmlwdFZhbHVlVHlwZSwKKyAgICAgICAgSW50ZWdlclR5
cGUsCiAgICAgICAgIFN0cmluZ1R5cGUsCiAgICAgfTsKIApAQCAtMTAxLDcgKzEwOSw4IEBAIHB1
YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQktleT4gaWRiS2V5KCk7CiAgICAgUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUoKTsKICAgICBQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uPiBpZGJUcmFuc2FjdGlvbigpOwotICAgIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsdWUoKTsKKyAgICBTY3JpcHRWYWx1ZSBzY3JpcHRW
YWx1ZSgpOworICAgIGludDY0X3QgaW50ZWdlcigpOwogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5n
KCk7CiAKICAgICAvLyBTZXQgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuCkBAIC0xMTUsOSArMTI0
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldChQYXNzUmVmUHRyPElEQktleT4pOwogICAgIHZv
aWQgc2V0KFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+KTsKICAgICB2b2lkIHNldChQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uPik7Ci0gICAgdm9pZCBzZXQoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+KTsKICAgICB2b2lkIHNldChjb25zdCBJREJLZXlQYXRoJik7CiAgICAgdm9p
ZCBzZXQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXQoY29uc3QgU2NyaXB0VmFsdWUmKTsK
KyAgICB2b2lkIHNldChpbnQ2NF90KTsKIAogcHJpdmF0ZToKICAgICBJREJBbnkoKTsKQEAgLTEz
NCw4ICsxNDQsOSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJREJLZXk+IG1faWRiS2V5OwogICAg
IFJlZlB0cjxJREJPYmplY3RTdG9yZT4gbV9pZGJPYmplY3RTdG9yZTsKICAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb24+IG1faWRiVHJhbnNhY3Rpb247Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gbV9zZXJpYWxpemVkU2NyaXB0VmFsdWU7CisgICAgU2NyaXB0VmFsdWUgbV9zY3Jp
cHRWYWx1ZTsKICAgICBTdHJpbmcgbV9zdHJpbmc7CisgICAgaW50NjRfdCBtX2ludGVnZXI7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCA5NmZlODJmNzZkNmQzY2I3MTJiODY0ZjJmYzVl
MGRlNDRjMGU5ZmZmLi5jNTFmN2Y1NjU5YTdiYWNjZjVkNjdiYTQzMmJmMzA1ZDdjZTcyMGE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAg
LTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVkZSAiSURCVHJh
bnNhY3Rpb24uaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MjYwLDI4ICsyNTksMjUgQEAgdm9pZCBJREJDdXJzb3I6OmNsb3NlKCkKICAgICBtX3JlcXVlc3Qu
Y2xlYXIoKTsKIH0KIAotdm9pZCBJREJDdXJzb3I6OnNldFZhbHVlUmVhZHkoUGFzc1JlZlB0cjxJ
REJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSkKK3ZvaWQgSURCQ3Vyc29yOjpzZXRWYWx1ZVJl
YWR5KFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5
LCBTY3JpcHRWYWx1ZSYgdmFsdWUpCiB7CiAgICAgbV9jdXJyZW50S2V5ID0ga2V5OwogICAgIG1f
Y3VycmVudFByaW1hcnlLZXkgPSBwcmltYXJ5S2V5OwogCi0gICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gdmFsdWUgPSBwcnBWYWx1ZTsKICAgICBpZiAoIWlzS2V5Q3Vyc29yKCkpIHsK
ICAgICAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IGVmZmVjdGl2ZU9i
amVjdFN0b3JlKCk7CiAgICAgICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgbWV0YWRh
dGEgPSBvYmplY3RTdG9yZS0+bWV0YWRhdGEoKTsKICAgICAgICAgaWYgKG1ldGFkYXRhLmF1dG9J
bmNyZW1lbnQgJiYgIW1ldGFkYXRhLmtleVBhdGguaXNOdWxsKCkpIHsKICNpZm5kZWYgTkRFQlVH
Ci0gICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBleHBlY3RlZEtleSA9IGNyZWF0ZUlEQktleUZy
b21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKHZhbHVlLCBtZXRhZGF0YS5rZXlQYXRoKTsKKyAg
ICAgICAgICAgIFJlZlB0cjxJREJLZXk+IGV4cGVjdGVkS2V5ID0gY3JlYXRlSURCS2V5RnJvbVNj
cmlwdFZhbHVlQW5kS2V5UGF0aCh2YWx1ZSwgbWV0YWRhdGEua2V5UGF0aCk7CiAgICAgICAgICAg
ICBBU1NFUlQoIWV4cGVjdGVkS2V5IHx8IGV4cGVjdGVkS2V5LT5pc0VxdWFsKG1fY3VycmVudFBy
aW1hcnlLZXkuZ2V0KCkpKTsKICNlbmRpZgotICAgICAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gdmFsdWVBZnRlckluamVjdGlvbiA9IGluamVjdElEQktleUludG9TZXJpYWxp
emVkVmFsdWUobV9jdXJyZW50UHJpbWFyeUtleSwgdmFsdWUsIG1ldGFkYXRhLmtleVBhdGgpOwot
ICAgICAgICAgICAgQVNTRVJUKHZhbHVlQWZ0ZXJJbmplY3Rpb24pOworICAgICAgICAgICAgYm9v
bCBpbmplY3RlZCA9IGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShtX2N1cnJlbnRQcmltYXJ5
S2V5LCB2YWx1ZSwgbWV0YWRhdGEua2V5UGF0aCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhl
cmUgaXMgbm8gd2F5IHRvIHJlcG9ydCBlcnJvcnMgaGVyZS4gTW92ZSB0aGlzIGludG8gb25TdWNj
ZXNzV2l0aENvbnRpbnVhdGlvbiBzbyB0aGF0IHdlIGNhbiBhYm9ydCB0aGUgdHJhbnNhY3Rpb24g
dGhlcmUuIFNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMjc4
Ci0gICAgICAgICAgICBpZiAodmFsdWVBZnRlckluamVjdGlvbikKLSAgICAgICAgICAgICAgICB2
YWx1ZSA9IHZhbHVlQWZ0ZXJJbmplY3Rpb247CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGlu
amVjdGVkLCBpbmplY3RlZCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgbV9jdXJyZW50VmFsdWUg
PSBJREJBbnk6OmNyZWF0ZSh2YWx1ZS5yZWxlYXNlKCkpOworICAgIG1fY3VycmVudFZhbHVlID0g
SURCQW55OjpjcmVhdGUodmFsdWUpOwogCiAgICAgbV9nb3RWYWx1ZSA9IHRydWU7CiAgICAgbV92
YWx1ZUlzRGlydHkgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3IuaAppbmRleCAxYjYxOTM1M2ZlZGI1MmJiYmUxMDIxZjliY2E4YTk5NjUwMTJhN2U2
Li45YTk1MTQ3NTc4NmViN2EzM2NlN2ZmMzI1MDdjNTlkMTM3YmM3NGEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaApAQCAtNDEsNyArNDEsNiBAQCBj
bGFzcyBJREJDYWxsYmFja3M7CiBjbGFzcyBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOwogY2xh
c3MgSURCUmVxdWVzdDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTZXJp
YWxpemVkU2NyaXB0VmFsdWU7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKQEAgLTgy
LDcgKzgxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFj
aygpOwogICAgIHZvaWQgY2xvc2UoKTsKLSAgICB2b2lkIHNldFZhbHVlUmVhZHkoUGFzc1JlZlB0
cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+KTsKKyAgICB2b2lkIHNldFZhbHVlUmVhZHkoUGFzc1JlZlB0cjxJ
REJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgU2NyaXB0VmFsdWUmKTsKIAog
ICAgIC8vIFRoZSBzcGVjIHJlcXVpcmVzIHRoYXQgdGhlIHNjcmlwdCBvYmplY3QgdGhhdCB3cmFw
cyB0aGUgdmFsdWUKICAgICAvLyBiZSB1bmNoYW5nZWQgdW50aWwgdGhlIHZhbHVlIGNoYW5nZXMg
YXMgYSByZXN1bHQgb2YgdGhlIGN1cnNvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IGQ2NDFkMDRhNDM2ZTFmZmY1ZjY0MTg0ZmQ4
MzQyZjQyZDVjMDM3NDkuLjhlMGMzYWQ1NjQyMmQ4Zjg5NDgxM2M0MTgyMjlhNzY3NzFlY2Y4MTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5j
cHAKQEAgLTExNyw3ICsxMTcsNyBAQCBQYXNzUmVmUHRyPElEQkFueT4gSURCRGF0YWJhc2U6OnZl
cnNpb24oKSBjb25zdAogICAgIGludDY0X3QgaW50VmVyc2lvbiA9IG1fbWV0YWRhdGEuaW50VmVy
c2lvbjsKICAgICBpZiAoaW50VmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZl
cnNpb24pCiAgICAgICAgIHJldHVybiBJREJBbnk6OmNyZWF0ZVN0cmluZyhtX21ldGFkYXRhLnZl
cnNpb24pOwotICAgIHJldHVybiBJREJBbnk6OmNyZWF0ZShTZXJpYWxpemVkU2NyaXB0VmFsdWU6
Om51bWJlclZhbHVlKGludFZlcnNpb24pKTsKKyAgICByZXR1cm4gSURCQW55OjpjcmVhdGUoaW50
VmVyc2lvbik7CiB9CiAKIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IERpY3Rpb25hcnkmIG9w
dGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IDVmZmMxY2JhOWUxMGUxMzZhMWI4
NzZhMTNjNjg2YzQyYzI2NjRmM2UuLmNjNmMyOGVmMjg0ZWZkNzNmYTY1MzFjZjBkNWE5OTBjZTNh
OTdjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHAKQEAgLTM0MCw5ICszNDAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
UmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9IGN1cnNvci0+cHJpbWFyeUtleSgpOwogICAgICAg
ICAgICAgUmVmUHRyPElEQkFueT4gdmFsdWVBbnkgPSBjdXJzb3ItPnZhbHVlKCk7CiAKLSAgICAg
ICAgICAgIEFTU0VSVCh2YWx1ZUFueS0+dHlwZSgpID09IElEQkFueTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlVHlwZSk7Ci0gICAgICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBz
ZXJpYWxpemVkVmFsdWUgPSB2YWx1ZUFueS0+c2VyaWFsaXplZFNjcmlwdFZhbHVlKCk7Ci0gICAg
ICAgICAgICBTY3JpcHRWYWx1ZSB2YWx1ZShkZXNlcmlhbGl6ZUlEQlZhbHVlKGNvbnRleHQsIHNl
cmlhbGl6ZWRWYWx1ZSkpOworICAgICAgICAgICAgQVNTRVJUKHZhbHVlQW55LT50eXBlKCkgPT0g
SURCQW55OjpTY3JpcHRWYWx1ZVR5cGUpOworICAgICAgICAgICAgU2NyaXB0VmFsdWUgdmFsdWUg
PSB2YWx1ZUFueS0+c2NyaXB0VmFsdWUoKTsKIAogICAgICAgICAgICAgSURCT2JqZWN0U3RvcmU6
OkluZGV4S2V5cyBpbmRleEtleXM7CiAgICAgICAgICAgICBnZW5lcmF0ZUluZGV4S2V5c0ZvclZh
bHVlKG1faW5kZXhNZXRhZGF0YSwgdmFsdWUsICZpbmRleEtleXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCA0M2YyNWE4YzNjZWFl
NjZhY2MwMzFkZDc4NTAwMWNjYzBkZWI5MWI2Li4xNDA3MmFlZDlmMjkxNGQzODUyNGZhYWQxMDc3
MGU5NmQ1YTIyZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJSZXF1ZXN0LmNwcApAQCAtMjE0LDcgKzIxNCw3IEBAIFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBJ
REJSZXF1ZXN0OjpnZXRSZXN1bHRDdXJzb3IoKQogICAgIHJldHVybiAwOwogfQogCi12b2lkIElE
QlJlcXVlc3Q6OnNldFJlc3VsdEN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvcj4gY3Vyc29yLCBQ
YXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlKQordm9pZCBJREJSZXF1ZXN0Ojpz
ZXRSZXN1bHRDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3I+IGN1cnNvciwgUGFzc1JlZlB0cjxJ
REJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIGNvbnN0IFNjcmlwdFZh
bHVlJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRlID09IFBFTkRJTkcpOwogICAg
IG1fY3Vyc29yS2V5ID0ga2V5OwpAQCAtMjc2LDEyICsyNzYsMTMgQEAgdm9pZCBJREJSZXF1ZXN0
OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBkb21TdHJpbmdMaXN0KQogICAg
IGVucXVldWVFdmVudChjcmVhdGVTdWNjZXNzRXZlbnQoKSk7CiB9CiAKLXZvaWQgSURCUmVxdWVz
dDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2Vu
ZCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXks
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSkKK3ZvaWQgSURCUmVxdWVz
dDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2Vu
ZCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXks
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUpCiB7CiAg
ICAgSURCX1RSQUNFKCJJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoSURCQ3Vyc29yKSIpOwogICAgIGlm
ICghc2hvdWxkRW5xdWV1ZUV2ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIFNjcmlwdFZh
bHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IHNlcmlhbGl6ZWRWYWx1ZSk7CiAgICAgQVNTRVJUKG1fY3Vyc29yVHlwZSAhPSBJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlOjpJbnZhbGlkQ3Vyc29yVHlwZSk7CiAgICAgUmVmUHRyPElEQkN1cnNv
cj4gY3Vyc29yOwogICAgIGlmIChtX2N1cnNvclR5cGUgPT0gSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZTo6SW5kZXhLZXlDdXJzb3IpCkBAIC0zMDIsNyArMzAzLDcgQEAgdm9pZCBJREJSZXF1ZXN0
OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+IGlkYktleSkKICAgICBpZiAoaWRiS2V5ICYm
IGlkYktleS0+aXNWYWxpZCgpKQogICAgICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGlk
YktleSk7CiAgICAgZWxzZQotICAgICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6dW5kZWZpbmVkVmFsdWUoKSk7CisgICAgICAgIG1fcmVzdWx0ID0g
SURCQW55OjpjcmVhdGVJbnZhbGlkKCk7CiAgICAgZW5xdWV1ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NF
dmVudCgpKTsKIH0KIApAQCAtMzM3LDkgKzMzOCw4IEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNj
ZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFs
CiAgICAgaWYgKCFzaG91bGRFbnF1ZXVlRXZlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUpOwotICAgIG1f
cGVuZGluZ0N1cnNvci5jbGVhcigpOwotICAgIGVucXVldWVFdmVudChjcmVhdGVTdWNjZXNzRXZl
bnQoKSk7CisgICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKKyAgICBvblN1Y2Nl
c3NJbnRlcm5hbCh2YWx1ZSk7CiB9CiAKICNpZm5kZWYgTkRFQlVHCkBAIC0zNjQsMzAgKzM2NCwz
MiBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gcHJwU2VyaWFsaXplZFNjcmlwdAogI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQo
a2V5UGF0aCA9PSBlZmZlY3RpdmVPYmplY3RTdG9yZShtX3NvdXJjZSktPmtleVBhdGgoKSk7CiAj
ZW5kaWYKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IHBycFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTsKKyAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURC
VmFsdWUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBwcnBTZXJpYWxpemVkU2NyaXB0VmFsdWUp
OwogCiAgICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9IHBycFByaW1hcnlLZXk7CiAjaWZu
ZGVmIE5ERUJVRwotICAgIFJlZlB0cjxJREJLZXk+IGV4cGVjdGVkS2V5ID0gY3JlYXRlSURCS2V5
RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgodmFsdWUsIGtleVBhdGgpOworICAgIFJlZlB0
cjxJREJLZXk+IGV4cGVjdGVkS2V5ID0gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5
UGF0aCh2YWx1ZSwga2V5UGF0aCk7CiAgICAgQVNTRVJUKCFleHBlY3RlZEtleSB8fCBleHBlY3Rl
ZEtleS0+aXNFcXVhbChwcmltYXJ5S2V5LmdldCgpKSk7CiAjZW5kaWYKLSAgICBSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZUFmdGVySW5qZWN0aW9uID0gaW5qZWN0SURCS2V5SW50
b1NlcmlhbGl6ZWRWYWx1ZShwcmltYXJ5S2V5LCB2YWx1ZSwga2V5UGF0aCk7Ci0gICAgQVNTRVJU
KHZhbHVlQWZ0ZXJJbmplY3Rpb24pOwotICAgIGlmICghdmFsdWVBZnRlckluamVjdGlvbikgewot
ICAgICAgICAvLyBDaGVja3MgaW4gcHV0KCkgZW5zdXJlIHRoaXMgc2hvdWxkIG9ubHkgaGFwcGVu
IGlmIEkvTyBlcnJvciBvY2N1cnMuCi0gICAgICAgIG9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9y
IGluc2VydGluZyBnZW5lcmF0ZWQga2V5IGludG8gdGhlIG9iamVjdC4iKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgdmFsdWUgPSB2YWx1ZUFmdGVySW5qZWN0aW9uOwotICAgIG9uU3Vj
Y2Vzcyh2YWx1ZS5yZWxlYXNlKCkpOworICAgIGJvb2wgaW5qZWN0ZWQgPSBpbmplY3RJREJLZXlJ
bnRvU2NyaXB0VmFsdWUocHJpbWFyeUtleSwgdmFsdWUsIGtleVBhdGgpOworICAgIEFTU0VSVF9V
TlVTRUQoaW5qZWN0ZWQsIGluamVjdGVkKTsKKyAgICBvblN1Y2Nlc3NJbnRlcm5hbCh2YWx1ZSk7
Cit9CisKK3ZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzSW50ZXJuYWwoY29uc3QgU2NyaXB0VmFs
dWUmIHZhbHVlKQoreworICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVhdGUodmFsdWUpOworICAg
IG1fcGVuZGluZ0N1cnNvci5jbGVhcigpOworICAgIGVucXVldWVFdmVudChjcmVhdGVTdWNjZXNz
RXZlbnQoKSk7CiB9CiAKLXZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURC
S2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUpCit2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSkKIHsKICAgICBJREJf
VFJBQ0UoIklEQlJlcXVlc3Q6Om9uU3VjY2VzcyhrZXksIHByaW1hcnlLZXksIHZhbHVlKSIpOwog
ICAgIGlmICghc2hvdWxkRW5xdWV1ZUV2ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIFNj
cmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIHNlcmlhbGl6ZWRWYWx1ZSk7CiAgICAgQVNTRVJUKG1fcGVuZGluZ0N1cnNvcik7CiAg
ICAgc2V0UmVzdWx0Q3Vyc29yKG1fcGVuZGluZ0N1cnNvci5yZWxlYXNlKCksIGtleSwgcHJpbWFy
eUtleSwgdmFsdWUpOwogICAgIGVucXVldWVFdmVudChjcmVhdGVTdWNjZXNzRXZlbnQoKSk7CkBA
IC00NTYsNyArNDU4LDcgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2ZW50KQogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5z
dWNjZXNzRXZlbnQpIHsKICAgICAgICAgY3Vyc29yVG9Ob3RpZnkgPSBnZXRSZXN1bHRDdXJzb3Io
KTsKICAgICAgICAgaWYgKGN1cnNvclRvTm90aWZ5KQotICAgICAgICAgICAgY3Vyc29yVG9Ob3Rp
ZnktPnNldFZhbHVlUmVhZHkobV9jdXJzb3JLZXkucmVsZWFzZSgpLCBtX2N1cnNvclByaW1hcnlL
ZXkucmVsZWFzZSgpLCBtX2N1cnNvclZhbHVlLnJlbGVhc2UoKSk7CisgICAgICAgICAgICBjdXJz
b3JUb05vdGlmeS0+c2V0VmFsdWVSZWFkeShtX2N1cnNvcktleS5yZWxlYXNlKCksIG1fY3Vyc29y
UHJpbWFyeUtleS5yZWxlYXNlKCksIG1fY3Vyc29yVmFsdWUpOwogICAgIH0KIAogICAgIGlmIChl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS51cGdyYWRlbmVlZGVkRXZlbnQpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAppbmRleCA3Zjk5OTI0
ODUzZWY4MDY3YzEyMjZiNGU4YTU3NjBmYTdmN2IwMzI0Li5kODJmYWM3MjA3YzExZWViZTQyZjcx
M2UwZTkwMGM3ZmFkZTQ4ZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5oCkBAIC0xMTMsNiArMTEzLDcgQEAgcHJvdGVjdGVkOgogICAgIElEQlJl
cXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2Us
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIElEQlRyYW5zYWN0aW9u
Kik7CiAgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRFbnF1ZXVlRXZlbnQoKSBjb25zdDsKKyAgICB2b2lkIG9uU3VjY2Vzc0lu
dGVybmFsKGNvbnN0IFNjcmlwdFZhbHVlJik7CiAKICAgICBSZWZQdHI8SURCQW55PiBtX3Jlc3Vs
dDsKICAgICB1bnNpZ25lZCBzaG9ydCBtX2Vycm9yQ29kZTsKQEAgLTEzMSw3ICsxMzIsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERh
dGEoKTsKIAogICAgIFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBnZXRSZXN1bHRDdXJzb3IoKTsKLSAg
ICB2b2lkIHNldFJlc3VsdEN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvcj4sIFBhc3NSZWZQdHI8
SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPik7CisgICAgdm9pZCBzZXRSZXN1bHRDdXJzb3IoUGFzc1JlZlB0cjxJ
REJDdXJzb3I+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5
S2V5LCBjb25zdCBTY3JpcHRWYWx1ZSYpOwogCiAgICAgUmVmUHRyPElEQkFueT4gbV9zb3VyY2U7
CiAgICAgY29uc3QgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSBtX3Rh
c2tUeXBlOwpAQCAtMTQ2LDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQkN1cnNv
cj4gbV9wZW5kaW5nQ3Vyc29yOwogICAgIFJlZlB0cjxJREJLZXk+IG1fY3Vyc29yS2V5OwogICAg
IFJlZlB0cjxJREJLZXk+IG1fY3Vyc29yUHJpbWFyeUtleTsKLSAgICBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBtX2N1cnNvclZhbHVlOworICAgIFNjcmlwdFZhbHVlIG1fY3Vyc29yVmFs
dWU7CiAgICAgYm9vbCBtX2RpZEZpcmVVcGdyYWRlTmVlZGVkRXZlbnQ7CiAKICAgICBFdmVudFRh
cmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaAppbmRleCA4ZDkw
NmE2ZWI4MmM1OTEzYjZjMDBlMWRjY2VlNGU3OGVjMmZmZTlmLi4xODk4ODZmOWJjZTJkODg3OTY5
YWQyZDE3ZTQ2MTMxMDc0NWMzYjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgKQEAgLTMxLDcgKzMx
LDYgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURC
QmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5k
aW5nVXRpbGl0aWVzLmNwcAppbmRleCA0MTc0YjcwNTI4MmJhNzNkZTUwMWQxMjY0NTY3MGI2NzUw
NGIwOWExLi4xZjMwMDhlNzgzN2FmOTUyOTBmNjEwNTlhZjM5YzJhZmY5NDQxZjE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApA
QCAtMjA5LDI1ICsyMDksNiBAQCBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNj
cmlwdFZhbHVlQW5kS2V5UGF0aChjb25zdCBTY3JpcHRWYWx1ZSYgdmFsdQogICAgIHJldHVybiBj
cmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKHZhbHVlLCBrZXlQYXRoLnN0cmlu
ZygpKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2Vy
aWFsaXplZFZhbHVlQW5kS2V5UGF0aChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
cHJwVmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKLXsKLSAgICBWZWN0b3I8U3RyaW5nPiBr
ZXlQYXRoRWxlbWVudHM7Ci0gICAgSURCS2V5UGF0aFBhcnNlRXJyb3IgZXJyb3I7Ci0gICAgSURC
UGFyc2VLZXlQYXRoKGtleVBhdGgsIGtleVBhdGhFbGVtZW50cywgZXJyb3IpOwotICAgIEFTU0VS
VChlcnJvciA9PSBJREJLZXlQYXRoUGFyc2VFcnJvck5vbmUpOwotCi0gICAgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUgPSBwcnBWYWx1ZTsKLQotICAgIHY4OjpIYW5kbGVTY29w
ZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoVjhQZXJJc29sYXRl
RGF0YTo6Y3VycmVudCgpLT5lbnN1cmVBdXhpbGlhcnlDb250ZXh0KCkpOwotCi0gICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHY4VmFsdWUodmFsdWUtPmRlc2VyaWFsaXplKCkpOwotICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2OEtleShnZXROdGhWYWx1ZU9uS2V5UGF0aCh2OFZhbHVlLCBrZXlQ
YXRoRWxlbWVudHMsIGtleVBhdGhFbGVtZW50cy5zaXplKCkpKTsKLSAgICBpZiAodjhLZXkuSXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gY3JlYXRlSURCS2V5RnJvbVZh
bHVlKHY4S2V5KTsKLX0KLQogLy8gRklYTUU6IFRoZSBvbmx5IHJlYXNvbiB0aGlzIGV4aXN0cyBp
cyBiZWNhdXNlIHdlIG5lZWQgYSB2ODo6Q29udGV4dCBhbmQgc2NvcGUgaW5zaWRlIGEgdGltZXIu
IElzIHRoZXJlIGEgYmV0dGVyIC8gbW9yZSBnZW5lcmFsIHdheSB0byBkbyB0aGlzPwogU2NyaXB0
VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRD
b250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUpCiB7CkBA
IC0yMzYsMzIgKzIxNyw5IEBAIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCwgUGFzc1JlZlB0CiAgICAgcmV0dXJuIFNj
cmlwdFZhbHVlKHBycFZhbHVlLT5kZXNlcmlhbGl6ZSgpKTsKIH0KIAotUGFzc1JlZlB0cjxJREJL
ZXk+IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0
aCkKLXsKLSAgICBJREJfVFJBQ0UoImNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRL
ZXlQYXRoIik7Ci0gICAgQVNTRVJUKCFrZXlQYXRoLmlzTnVsbCgpKTsKLQotICAgIFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlID0gcHJwVmFsdWU7Ci0KLSAgICBpZiAoa2V5UGF0
aC50eXBlKCkgPT0gSURCS2V5UGF0aDo6QXJyYXlUeXBlKSB7Ci0gICAgICAgIElEQktleTo6S2V5
QXJyYXkgcmVzdWx0OwotICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJyYXkgPSBrZXlQ
YXRoLmFycmF5KCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXkuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IGNyZWF0ZUlEQktleUZy
b21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKHZhbHVlLCBhcnJheVtpXSk7Ci0gICAgICAgICAg
ICBpZiAoIWtleSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoa2V5KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVB
cnJheShyZXN1bHQpOwotICAgIH0KLQotICAgIEFTU0VSVChrZXlQYXRoLnR5cGUoKSA9PSBJREJL
ZXlQYXRoOjpTdHJpbmdUeXBlKTsKLSAgICByZXR1cm4gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6
ZWRWYWx1ZUFuZEtleVBhdGgodmFsdWUsIGtleVBhdGguc3RyaW5nKCkpOwotfQotCi1QYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1
ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCitib29sIGluamVjdElEQktleUlu
dG9TY3JpcHRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBTY3JpcHRWYWx1ZSYgdmFsdWUs
IGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7Ci0gICAgSURCX1RSQUNFKCJpbmplY3RJREJL
ZXlJbnRvU2VyaWFsaXplZFZhbHVlIik7CisgICAgSURCX1RSQUNFKCJpbmplY3RJREJLZXlJbnRv
U2NyaXB0VmFsdWUiKTsKIAogICAgIEFTU0VSVChrZXlQYXRoLnR5cGUoKSA9PSBJREJLZXlQYXRo
OjpTdHJpbmdUeXBlKTsKICAgICBWZWN0b3I8U3RyaW5nPiBrZXlQYXRoRWxlbWVudHM7CkBAIC0y
NzUsMTUgKzIzMywxNSBAQCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0
SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQgogICAgIHY4OjpIYW5kbGVT
Y29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoVjhQZXJJc29s
YXRlRGF0YTo6Y3VycmVudCgpLT5lbnN1cmVBdXhpbGlhcnlDb250ZXh0KCkpOwogCi0gICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHY4VmFsdWUodmFsdWUtPmRlc2VyaWFsaXplKCkpOworICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2OFZhbHVlKHZhbHVlLnY4VmFsdWUoKSk7CiAgICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHBhcmVudChlbnN1cmVOdGhWYWx1ZU9uS2V5UGF0aCh2OFZhbHVlLCBr
ZXlQYXRoRWxlbWVudHMsIGtleVBhdGhFbGVtZW50cy5zaXplKCkgLSAxKSk7CiAgICAgaWYgKHBh
cmVudC5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAoIXNldChwYXJlbnQsIGtleVBhdGhFbGVtZW50cy5sYXN0KCksIHRvVjgoa2V5
LmdldCgpKSkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUodjhWYWx1ZSk7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIGJvb2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKGNvbnN0
IFNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuaAppbmRl
eCBiMmI2MjlmNTgxOWY5YTFhN2UwMDVmZjkzMDQ2OWVlZjIzZDdjNDdkLi5hNDgyZGM5NzQxYjI5
YWVjOGE1ZTExMTNjZjdmZTVmMzdhZmFmNGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5oCkBAIC00MCwxMCArNDAsNyBAQCBjbGFzcyBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlG
cm9tVmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+KTsKIAotLy8gRklYTUU6IHJlbW92ZSB0aGUg
U2VyaWFsaXplZFZhbHVlIHZlcnNpb25zIHdoZW4gdGhlaXIgdXNlIGlzIGZpbmFsbHkgcmVtb3Zl
ZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0MDkuCi1QYXNz
UmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBJREJLZXlQYXRoJik7Ci1Q
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6
ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiwgY29uc3QgSURCS2V5UGF0aCYpOwotCitib29sIGluamVjdElEQktleUludG9TY3JpcHRW
YWx1ZShQYXNzUmVmUHRyPElEQktleT4sIFNjcmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYp
OwogUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBh
dGgoY29uc3QgU2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7CiBib29sIGNhbkluamVj
dElEQktleUludG9TY3JpcHRWYWx1ZShjb25zdCBTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBh
dGgmKTsKIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcAppbmRleCBl
NjI1N2VlYzM3ZjZhMTEyYzA2NTM4NGEyMDFkOWZhYTdlODM2N2IwLi41ZDcxZTQyOWVhNDY3YzU0
YmJkMTQyNjdhY2Y3MDA1YmNjOTZmMGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3RvbS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAog
I2luY2x1ZGUgIlY4SURCQW55LmgiCiAKLSNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2lu
Y2x1ZGUgIlY4RE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIlY4SURCQ3Vyc29yLmgiCkBAIC03
MywxMCArNzMsMTIgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSURCQW55KiBpbXBsLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwKICAgICAgICAgcmV0dXJuIHRv
VjgoaW1wbC0+aWRiT2JqZWN0U3RvcmUoKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKICAg
ICBjYXNlIElEQkFueTo6SURCVHJhbnNhY3Rpb25UeXBlOgogICAgICAgICByZXR1cm4gdG9WOChp
bXBsLT5pZGJUcmFuc2FjdGlvbigpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwotICAgIGNh
c2UgSURCQW55OjpTZXJpYWxpemVkU2NyaXB0VmFsdWVUeXBlOgotICAgICAgICByZXR1cm4gaW1w
bC0+c2VyaWFsaXplZFNjcmlwdFZhbHVlKCktPmRlc2VyaWFsaXplKDAsIGlzb2xhdGUpOworICAg
IGNhc2UgSURCQW55OjpTY3JpcHRWYWx1ZVR5cGU6CisgICAgICAgIHJldHVybiBpbXBsLT5zY3Jp
cHRWYWx1ZSgpLnY4VmFsdWUoKTsKICAgICBjYXNlIElEQkFueTo6U3RyaW5nVHlwZToKICAgICAg
ICAgcmV0dXJuIHY4U3RyaW5nKGltcGwtPnN0cmluZygpLCBpc29sYXRlKTsKKyAgICBjYXNlIElE
QkFueTo6SW50ZWdlclR5cGU6CisgICAgICAgIHJldHVybiB2ODo6TnVtYmVyOjpOZXcoaW1wbC0+
aW50ZWdlcigpKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQmluZGluZ1V0aWxpdGllc1Rlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVz
dC5jcHAKaW5kZXggYzJkNWU3NTQxMDhkNjhiMzY0MzgwNmUyY2Q4MWRkNzAxNTQ2ZWY5Mi4uNDY3
MTBlNzQ1NjhhNzRmYWM1ZmU1ZjUwNzkzYWMyYzlhOWMyZmIwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVzVGVzdC5jcHAK
QEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJJREJCaW5kaW5nVXRpbGl0aWVzLmgiCiAjaW5j
bHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgotI2luY2x1ZGUgIlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlY4UGVySXNvbGF0ZURhdGEuaCIKICNpbmNs
dWRlICJWOFV0aWxpdGllcy5oIgogCkBAIC00MCw0MSArMzksNDIgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSB7CiAKLVBhc3NSZWZQdHI8SURCS2V5PiBjaGVja0tleUZy
b21WYWx1ZUFuZEtleVBhdGhJbnRlcm5hbChTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgpCitQYXNzUmVmUHRyPElEQktleT4gY2hlY2tLZXlGcm9tVmFs
dWVBbmRLZXlQYXRoSW50ZXJuYWwoY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgpCiB7CiAgICAgSURCS2V5UGF0aCBpZGJLZXlQYXRoKGtleVBhdGgpOwogICAg
IEVYUEVDVF9UUlVFKGlkYktleVBhdGguaXNWYWxpZCgpKTsKLSAgICByZXR1cm4gY3JlYXRlSURC
S2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgodmFsdWUsIGlkYktleVBhdGgpOworICAg
IAorICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKHZhbHVl
LCBpZGJLZXlQYXRoKTsKIH0KIAotdm9pZCBjaGVja0tleVBhdGhOdWxsVmFsdWUoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQordm9pZCBjaGVja0tl
eVBhdGhOdWxsVmFsdWUoY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtl
eVBhdGgpCiB7CiAgICAgUmVmUHRyPElEQktleT4gaWRiS2V5ID0gY2hlY2tLZXlGcm9tVmFsdWVB
bmRLZXlQYXRoSW50ZXJuYWwodmFsdWUsIGtleVBhdGgpOwogICAgIEFTU0VSVF9GQUxTRShpZGJL
ZXkuZ2V0KCkpOwogfQogCi1QYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0
S2V5KFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorYm9vbCBpbmplY3RLZXkoUGFzc1Jl
ZlB0cjxJREJLZXk+IGtleSwgU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBh
dGgpCiB7CiAgICAgSURCS2V5UGF0aCBpZGJLZXlQYXRoKGtleVBhdGgpOwogICAgIEVYUEVDVF9U
UlVFKGlkYktleVBhdGguaXNWYWxpZCgpKTsKLSAgICByZXR1cm4gaW5qZWN0SURCS2V5SW50b1Nl
cmlhbGl6ZWRWYWx1ZShrZXksIHZhbHVlLCBpZGJLZXlQYXRoKTsKKyAgICByZXR1cm4gaW5qZWN0
SURCS2V5SW50b1NjcmlwdFZhbHVlKGtleSwgdmFsdWUsIGlkYktleVBhdGgpOwogfQogCi12b2lk
IGNoZWNrSW5qZWN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQordm9pZCBj
aGVja0luamVjdGlvbihQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBTY3JpcHRWYWx1ZSYgdmFs
dWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsKICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBw
cnBLZXk7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbmV3VmFsdWUgPSBpbmpl
Y3RLZXkoa2V5LCB2YWx1ZSwga2V5UGF0aCk7Ci0gICAgQVNTRVJUX1RSVUUobmV3VmFsdWUpOwot
ICAgIFJlZlB0cjxJREJLZXk+IGV4dHJhY3RlZEtleSA9IGNoZWNrS2V5RnJvbVZhbHVlQW5kS2V5
UGF0aEludGVybmFsKG5ld1ZhbHVlLmdldCgpLCBrZXlQYXRoKTsKKyAgICBib29sIHJlc3VsdCA9
IGluamVjdEtleShrZXksIHZhbHVlLCBrZXlQYXRoKTsKKyAgICBBU1NFUlRfVFJVRShyZXN1bHQp
OworICAgIFJlZlB0cjxJREJLZXk+IGV4dHJhY3RlZEtleSA9IGNoZWNrS2V5RnJvbVZhbHVlQW5k
S2V5UGF0aEludGVybmFsKHZhbHVlLCBrZXlQYXRoKTsKICAgICBFWFBFQ1RfVFJVRShrZXktPmlz
RXF1YWwoZXh0cmFjdGVkS2V5LmdldCgpKSk7CiB9CiAKLXZvaWQgY2hlY2tJbmplY3Rpb25GYWls
cyhQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK3ZvaWQgY2hlY2tJbmplY3Rpb25GYWls
cyhQYXNzUmVmUHRyPElEQktleT4ga2V5LCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCkKIHsKICAgICBFWFBFQ1RfRkFMU0UoaW5qZWN0S2V5KGtleSwgdmFsdWUsIGtl
eVBhdGgpKTsKIH0KIAotdm9pZCBjaGVja0tleVBhdGhTdHJpbmdWYWx1ZShTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGNvbnN0IFN0cmluZyYgZXhw
ZWN0ZWQpCit2b2lkIGNoZWNrS2V5UGF0aFN0cmluZ1ZhbHVlKGNvbnN0IFNjcmlwdFZhbHVlJiB2
YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkKQogewog
ICAgIFJlZlB0cjxJREJLZXk+IGlkYktleSA9IGNoZWNrS2V5RnJvbVZhbHVlQW5kS2V5UGF0aElu
dGVybmFsKHZhbHVlLCBrZXlQYXRoKTsKICAgICBBU1NFUlRfVFJVRShpZGJLZXkuZ2V0KCkpOwpA
QCAtODIsNyArODIsNyBAQCB2b2lkIGNoZWNrS2V5UGF0aFN0cmluZ1ZhbHVlKFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aAogICAgIEFTU0VSVF9UUlVF
KGV4cGVjdGVkID09IGlkYktleS0+c3RyaW5nKCkpOwogfQogCi12b2lkIGNoZWNrS2V5UGF0aE51
bWJlclZhbHVlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCwgaW50IGV4cGVjdGVkKQordm9pZCBjaGVja0tleVBhdGhOdW1iZXJWYWx1ZShjb25zdCBT
Y3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgaW50IGV4cGVjdGVkKQog
ewogICAgIFJlZlB0cjxJREJLZXk+IGlkYktleSA9IGNoZWNrS2V5RnJvbVZhbHVlQW5kS2V5UGF0
aEludGVybmFsKHZhbHVlLCBrZXlQYXRoKTsKICAgICBBU1NFUlRfVFJVRShpZGJLZXkuZ2V0KCkp
OwpAQCAtOTgsMTAgKzk4LDEwIEBAIFRFU1QoSURCS2V5RnJvbVZhbHVlQW5kS2V5UGF0aFRlc3Qs
IFRvcExldmVsUHJvcGVydHlTdHJpbmdWYWx1ZSkKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4g
b2JqZWN0ID0gdjg6Ok9iamVjdDo6TmV3KCk7CiAgICAgb2JqZWN0LT5TZXQodjg6OlN0cmluZzo6
TmV3KCJmb28iKSwgdjg6OlN0cmluZzo6TmV3KCJ6b28iKSk7CiAKLSAgICBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZShvYmplY3QpOworICAgIFNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlKG9iamVj
dCk7CiAKLSAgICBjaGVja0tleVBhdGhTdHJpbmdWYWx1ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUu
Z2V0KCksICJmb28iLCAiem9vIik7Ci0gICAgY2hlY2tLZXlQYXRoTnVsbFZhbHVlKHNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5nZXQoKSwgImJhciIpOworICAgIGNoZWNrS2V5UGF0aFN0cmluZ1ZhbHVl
KHNjcmlwdFZhbHVlLCAiZm9vIiwgInpvbyIpOworICAgIGNoZWNrS2V5UGF0aE51bGxWYWx1ZShz
Y3JpcHRWYWx1ZSwgImJhciIpOwogfQogCiBURVNUKElEQktleUZyb21WYWx1ZUFuZEtleVBhdGhU
ZXN0LCBUb3BMZXZlbFByb3BlcnR5TnVtYmVyVmFsdWUpCkBAIC0xMTIsMTAgKzExMiwxMCBAQCBU
RVNUKElEQktleUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0LCBUb3BMZXZlbFByb3BlcnR5TnVtYmVy
VmFsdWUpCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpPYmplY3Q6Ok5l
dygpOwogICAgIG9iamVjdC0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiZm9vIiksIHY4OjpOdW1iZXI6
Ok5ldyg0NTYpKTsKIAotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG9iamVjdCk7Cisg
ICAgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUob2JqZWN0KTsKIAotICAgIGNoZWNrS2V5UGF0aE51
bWJlclZhbHVlKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5nZXQoKSwgImZvbyIsIDQ1Nik7Ci0gICAg
Y2hlY2tLZXlQYXRoTnVsbFZhbHVlKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5nZXQoKSwgImJhciIp
OworICAgIGNoZWNrS2V5UGF0aE51bWJlclZhbHVlKHNjcmlwdFZhbHVlLCAiZm9vIiwgNDU2KTsK
KyAgICBjaGVja0tleVBhdGhOdWxsVmFsdWUoc2NyaXB0VmFsdWUsICJiYXIiKTsKIH0KIAogVEVT
VChJREJLZXlGcm9tVmFsdWVBbmRLZXlQYXRoVGVzdCwgU3ViUHJvcGVydHkpCkBAIC0xMjgsMTAg
KzEyOCwxMCBAQCBURVNUKElEQktleUZyb21WYWx1ZUFuZEtleVBhdGhUZXN0LCBTdWJQcm9wZXJ0
eSkKICAgICBzdWJQcm9wZXJ0eS0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiYmFyIiksIHY4OjpTdHJp
bmc6Ok5ldygiemVlIikpOwogICAgIG9iamVjdC0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiZm9vIiks
IHN1YlByb3BlcnR5KTsKIAotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG9iamVjdCk7
CisgICAgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUob2JqZWN0KTsKIAotICAgIGNoZWNrS2V5UGF0
aFN0cmluZ1ZhbHVlKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5nZXQoKSwgImZvby5iYXIiLCAiemVl
Iik7Ci0gICAgY2hlY2tLZXlQYXRoTnVsbFZhbHVlKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5nZXQo
KSwgImJhciIpOworICAgIGNoZWNrS2V5UGF0aFN0cmluZ1ZhbHVlKHNjcmlwdFZhbHVlLCAiZm9v
LmJhciIsICJ6ZWUiKTsKKyAgICBjaGVja0tleVBhdGhOdWxsVmFsdWUoc2NyaXB0VmFsdWUsICJi
YXIiKTsKIH0KIAogVEVTVChJbmplY3RJREJLZXlUZXN0LCBUb3BMZXZlbFByb3BlcnR5U3RyaW5n
VmFsdWUpCkBAIC0xNDIsMTAgKzE0MiwxMSBAQCBURVNUKEluamVjdElEQktleVRlc3QsIFRvcExl
dmVsUHJvcGVydHlTdHJpbmdWYWx1ZSkKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0
ID0gdjg6Ok9iamVjdDo6TmV3KCk7CiAgICAgb2JqZWN0LT5TZXQodjg6OlN0cmluZzo6TmV3KCJm
b28iKSwgdjg6OlN0cmluZzo6TmV3KCJ6b28iKSk7CiAKLSAgICBjaGVja0luamVjdGlvbihJREJL
ZXk6OmNyZWF0ZVN0cmluZygibXlOZXdLZXkiKSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUob2JqZWN0KSwgImJhciIpOwotICAgIGNoZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlTnVt
YmVyKDEyMzQpLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShvYmplY3QpLCAiYmFyIik7
CisgICAgU2NyaXB0VmFsdWUgZm9vem9vKG9iamVjdCk7CisgICAgY2hlY2tJbmplY3Rpb24oSURC
S2V5OjpjcmVhdGVTdHJpbmcoIm15TmV3S2V5IiksIGZvb3pvbywgImJhciIpOworICAgIGNoZWNr
SW5qZWN0aW9uKElEQktleTo6Y3JlYXRlTnVtYmVyKDEyMzQpLCBmb296b28sICJiYXIiKTsKIAot
ICAgIGNoZWNrSW5qZWN0aW9uRmFpbHMoSURCS2V5OjpjcmVhdGVTdHJpbmcoImtleSIpLCBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShvYmplY3QpLCAiZm9vLmJhciIpOworICAgIGNoZWNr
SW5qZWN0aW9uRmFpbHMoSURCS2V5OjpjcmVhdGVTdHJpbmcoImtleSIpLCBmb296b28sICJmb28u
YmFyIik7CiB9CiAKIFRFU1QoSW5qZWN0SURCS2V5VGVzdCwgU3ViUHJvcGVydHkpCkBAIC0xNTgs
MTUgKzE1OSwxNiBAQCBURVNUKEluamVjdElEQktleVRlc3QsIFN1YlByb3BlcnR5KQogICAgIHN1
YlByb3BlcnR5LT5TZXQodjg6OlN0cmluZzo6TmV3KCJiYXIiKSwgdjg6OlN0cmluZzo6TmV3KCJ6
ZWUiKSk7CiAgICAgb2JqZWN0LT5TZXQodjg6OlN0cmluZzo6TmV3KCJmb28iKSwgc3ViUHJvcGVy
dHkpOwogCi0gICAgY2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVTdHJpbmcoIm15TmV3S2V5
IiksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG9iamVjdCksICJmb28uYmF6Iik7Ci0g
ICAgY2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVOdW1iZXIoNzg5KSwgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUob2JqZWN0KSwgImZvby5iYXoiKTsKLSAgICBjaGVja0luamVjdGlv
bihJREJLZXk6OmNyZWF0ZURhdGUoNDU2NyksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KG9iamVjdCksICJmb28uYmF6Iik7Ci0gICAgY2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVE
YXRlKDQ1NjcpLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShvYmplY3QpLCAiYmFyIik7
Ci0gICAgY2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVBcnJheShJREJLZXk6OktleUFycmF5
KCkpLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShvYmplY3QpLCAiZm9vLmJheiIpOwot
ICAgIGNoZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlQXJyYXkoSURCS2V5OjpLZXlBcnJheSgp
KSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUob2JqZWN0KSwgImJhciIpOworICAgIFNj
cmlwdFZhbHVlIHNjcmlwdE9iamVjdChvYmplY3QpOworICAgIGNoZWNrSW5qZWN0aW9uKElEQktl
eTo6Y3JlYXRlU3RyaW5nKCJteU5ld0tleSIpLCBzY3JpcHRPYmplY3QsICJmb28uYmF6Iik7Cisg
ICAgY2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVOdW1iZXIoNzg5KSwgc2NyaXB0T2JqZWN0
LCAiZm9vLmJheiIpOworICAgIGNoZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlRGF0ZSg0NTY3
KSwgc2NyaXB0T2JqZWN0LCAiZm9vLmJheiIpOworICAgIGNoZWNrSW5qZWN0aW9uKElEQktleTo6
Y3JlYXRlRGF0ZSg0NTY3KSwgc2NyaXB0T2JqZWN0LCAiYmFyIik7CisgICAgY2hlY2tJbmplY3Rp
b24oSURCS2V5OjpjcmVhdGVBcnJheShJREJLZXk6OktleUFycmF5KCkpLCBzY3JpcHRPYmplY3Qs
ICJmb28uYmF6Iik7CisgICAgY2hlY2tJbmplY3Rpb24oSURCS2V5OjpjcmVhdGVBcnJheShJREJL
ZXk6OktleUFycmF5KCkpLCBzY3JpcHRPYmplY3QsICJiYXIiKTsKIAotICAgIGNoZWNrSW5qZWN0
aW9uRmFpbHMoSURCS2V5OjpjcmVhdGVTdHJpbmcoInpvbyIpLCBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZShvYmplY3QpLCAiZm9vLmJhci5iYXoiKTsKLSAgICBjaGVja0luamVjdGlvbihJ
REJLZXk6OmNyZWF0ZVN0cmluZygiem9vIiksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KG9iamVjdCksICJmb28ueHl6LmZvbyIpOworICAgIGNoZWNrSW5qZWN0aW9uRmFpbHMoSURCS2V5
OjpjcmVhdGVTdHJpbmcoInpvbyIpLCBzY3JpcHRPYmplY3QsICJmb28uYmFyLmJheiIpOworICAg
IGNoZWNrSW5qZWN0aW9uKElEQktleTo6Y3JlYXRlU3RyaW5nKCJ6b28iKSwgc2NyaXB0T2JqZWN0
LCAiZm9vLnh5ei5mb28iKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCS2V5UGF0aFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9JREJLZXlQYXRoVGVzdC5jcHAKaW5kZXggYzNkNDdkNzg4NzgzYTVl
NDYxZTJhYTViODdjMTZhYTcxZDUwZWZiOS4uY2QyNDBjYzk0NTI2ZTkxOTM4MGExZmVkNWMwMzk4
NTBhMzc0OWJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJL
ZXlQYXRoVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJLZXlQ
YXRoVGVzdC5jcHAKQEAgLTEyNyw5MiArMTI3LDYgQEAgVEVTVChJREJLZXlQYXRoVGVzdCwgSW52
YWxpZEtleVBhdGg1KQogICAgIGNoZWNrS2V5UGF0aChrZXlQYXRoLCBleHBlY3RlZCwgMyk7CiB9
CiAKLVRFU1QoSURCS2V5UGF0aFRlc3QsIEV4dHJhY3QpCi17Ci0gICAgSURCS2V5UGF0aCBrZXlQ
YXRoKCJmb28iKTsKLSAgICBSZWZQdHI8SURCS2V5PiBzdHJpbmdab29LZXkoSURCS2V5OjpjcmVh
dGVTdHJpbmcoInpvbyIpKTsKLSAgICBSZWZQdHI8SURCS2V5PiBpbnZhbGlkS2V5KElEQktleTo6
Y3JlYXRlSW52YWxpZCgpKTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzc3Y7
Ci0gICAgUmVmUHRyPElEQktleT4gcmVzdWx0OwotCi0gICAgLy8ga2V5cGF0aDogImZvbyIsIHZh
bHVlOiB7Zm9vOiAiem9vIn0sIGV4cGVjdGVkOiAiem9vIgotICAgIFVDaGFyIGRhdGFGb29ab29b
XSA9IHsweDAzNTMsIDB4NmY2NiwgMHg1MzZmLCAweDdhMDMsIDB4NmY2ZiwgMHgwMTdifTsKLSAg
ICBzc3YgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlKFN0cmluZyhkYXRh
Rm9vWm9vLCBXVEZfQVJSQVlfTEVOR1RIKGRhdGFGb29ab28pKSk7Ci0gICAgcmVzdWx0ID0gY3Jl
YXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoc3N2LCBrZXlQYXRoKTsKLSAg
ICBFWFBFQ1RfVFJVRShzdHJpbmdab29LZXktPmlzRXF1YWwocmVzdWx0LmdldCgpKSk7Ci0KLSAg
ICAvLyBrZXlwYXRoOiAiZm9vIiwgdmFsdWU6IHtmb286IG51bGx9LCBleHBlY3RlZDogaW52YWxp
ZAotICAgIFVDaGFyIGRhdGFGb29OdWxsW10gPSB7MHgwMzUzLCAweDZmNjYsIDB4MzA2ZiwgMHgw
MTdifTsKLSAgICBzc3YgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlKFN0
cmluZyhkYXRhRm9vTnVsbCwgV1RGX0FSUkFZX0xFTkdUSChkYXRhRm9vTnVsbCkpKTsKLSAgICBy
ZXN1bHQgPSBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aChzc3YsIGtl
eVBhdGgpOwotICAgIEVYUEVDVF9GQUxTRShyZXN1bHQtPmlzVmFsaWQoKSk7Ci0KLSAgICAvLyBr
ZXlwYXRoOiAiZm9vIiwgdmFsdWU6IHt9LCBleHBlY3RlZDogbnVsbAotICAgIFVDaGFyIGRhdGFP
YmplY3RbXSA9IHsweDAxN2J9OwotICAgIHNzdiA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlRnJvbVdpcmUoU3RyaW5nKGRhdGFPYmplY3QsIFdURl9BUlJBWV9MRU5HVEgoZGF0YU9iamVj
dCkpKTsKLSAgICByZXN1bHQgPSBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5
UGF0aChzc3YsIGtleVBhdGgpOwotICAgIEVYUEVDVF9FUSgwLCByZXN1bHQuZ2V0KCkpOwotCi0g
ICAgLy8ga2V5cGF0aDogImZvbyIsIHZhbHVlOiBudWxsLCBleHBlY3RlZDogbnVsbAotICAgIHNz
diA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCk7Ci0gICAgcmVzdWx0ID0gY3Jl
YXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoc3N2LCBrZXlQYXRoKTsKLSAg
ICBFWFBFQ1RfRVEoMCwgcmVzdWx0LmdldCgpKTsKLX0KLQotVEVTVChJREJLZXlQYXRoVGVzdCwg
SURCS2V5UGF0aFByb3BlcnR5Tm90QXZhaWxhYmxlKQotewotICAgIElEQktleVBhdGgga2V5UGF0
aCgiUHJvcGVydHlOb3RBdmFpbGFibGUiKTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBzc3Y7Ci0gICAgLy8ge2ZvbzogInpvbyIsIGJhcjogbnVsbH0KLSAgICBVQ2hhciBkYXRh
W10gPSB7MHgwMzUzLCAweDZmNjYsIDB4NTM2ZiwgMHg3YTAzLCAweDZmNmYsIDB4MDM1MywgMHg2
MTYyLAotICAgICAgICAgICAgICAgICAgICAweDMwNzIsIDB4MDI3Yn07Ci0gICAgc3N2ID0gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZShTdHJpbmcoZGF0YSwgV1RGX0FSUkFZ
X0xFTkdUSChkYXRhKSkpOwotICAgIFJlZlB0cjxJREJLZXk+IHJlc3VsdCA9IGNyZWF0ZUlEQktl
eUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKHNzdiwga2V5UGF0aCk7Ci0gICAgRVhQRUNU
X0VRKDAsIHJlc3VsdC5nZXQoKSk7Ci0KLSAgICAvLyBudWxsCi0gICAgc3N2ID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKTsKLSAgICByZXN1bHQgPSBjcmVhdGVJREJLZXlGcm9t
U2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aChzc3YsIGtleVBhdGgpOwotICAgIEVYUEVDVF9FUSgw
LCByZXN1bHQuZ2V0KCkpOwotfQotCi1URVNUKElEQktleVBhdGhUZXN0LCBJbmplY3RJREJLZXkp
Ci17Ci0gICAgLy8ge2ZvbzogJ3pvbyd9Ci0gICAgY29uc3QgVUNoYXIgaW5pdGlhbERhdGFbXSA9
IHsweDAzNTMsIDB4NmY2NiwgMHg1MzZmLCAweDdhMDMsIDB4NmY2ZiwgMHgwMTdifTsKLSAgICBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlRnJvbVdpcmUoU3RyaW5nKGluaXRpYWxEYXRhLCBXVEZfQVJSQVlfTEVOR1RIKGlu
aXRpYWxEYXRhKSkpOwotCi0gICAgUmVmUHRyPElEQktleT4ga2V5ID0gSURCS2V5OjpjcmVhdGVT
dHJpbmcoIm15TmV3S2V5Iik7Ci0gICAgSURCS2V5UGF0aCBrZXlQYXRoKCJiYXIiKTsKLQotICAg
IC8vIHtmb286ICd6b28nLCBiYXI6ICdteU5ld0tleSd9Ci0gICAgY29uc3QgVUNoYXIgZXhwZWN0
ZWREYXRhW10gPSB7MHgwMWZmLCAweDAwM2YsIDB4M2Y2ZiwgMHg1MzAxLCAweDY2MDMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2ZjZmLCAweDAxM2YsIDB4MDM1MywgMHg2
ZjdhLCAweDNmNmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MzAxLCAw
eDYyMDMsIDB4NzI2MSwgMHgwMTNmLCAweDA4NTMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg3OTZkLCAweDY1NGUsIDB4NGI3NywgMHg3OTY1LCAweDAyN2J9OwotICAgIFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGV4cGVjdGVkVmFsdWUgPSAKLSAgICAgICAgICAg
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmUoU3RyaW5nKGV4cGVjdGVkRGF0
YSwgV1RGX0FSUkFZX0xFTkdUSChleHBlY3RlZERhdGEpKSk7Ci0gICAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gcmVzdWx0ID0gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShr
ZXksIHZhbHVlLCBrZXlQYXRoKTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRWYWx1ZS0+dG9XaXJl
U3RyaW5nKCksIHJlc3VsdC0+dG9XaXJlU3RyaW5nKCkpOwotCi0gICAgLy8gU2hvdWxkIGZhaWwg
LSBjYW4ndCBhcHBseSBwcm9wZXJ0aWVzIHRvIHN0cmluZyB2YWx1ZSBvZiBrZXkgZm9vCi0gICAg
a2V5UGF0aCA9IElEQktleVBhdGgoImZvby5iYWQucGF0aCIpOwotICAgIHJlc3VsdCA9IGluamVj
dElEQktleUludG9TZXJpYWxpemVkVmFsdWUoa2V5LCB2YWx1ZSwga2V5UGF0aCk7Ci0gICAgRVhQ
RUNUX0VRKDAsIHJlc3VsdC5nZXQoKSk7Ci0KLSAgICAvLyB7Zm9vOiAnem9vJywgYmFyOiB7YmF6
OiAnbXlOZXdLZXknfX0KLSAgICBjb25zdCBVQ2hhciBleHBlY3RlZERhdGEyW10gPSB7MHgwMWZm
LCAweDAwM2YsIDB4M2Y2ZiwgMHg1MzAxLCAweDY2MDMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4NmY2ZiwgMHgwMTNmLCAweDAzNTMsIDB4NmY3YSwgMHgzZjZmLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzMDEsIDB4NjIwMywgMHg3MjYxLCAw
eDAxM2YsIDB4M2Y2ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MzAy
LCAweDYyMDMsIDB4N2E2MSwgMHgwMjNmLCAweDA4NTMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4Nzk2ZCwgMHg2NTRlLCAweDRiNzcsIDB4Nzk2NSwgMHgwMTdiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyN2J9OwotICAgIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGV4cGVjdGVkVmFsdWUyID0gU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGVGcm9tV2lyZShTdHJpbmcoZXhwZWN0ZWREYXRhMiwgV1RGX0FSUkFZX0xFTkdUSChl
eHBlY3RlZERhdGEyKSkpOwotICAgIGtleVBhdGggPSBJREJLZXlQYXRoKCJiYXIuYmF6Iik7Ci0g
ICAgcmVzdWx0ID0gaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShrZXksIHZhbHVlLCBr
ZXlQYXRoKTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRWYWx1ZTItPnRvV2lyZVN0cmluZygpLCBy
ZXN1bHQtPnRvV2lyZVN0cmluZygpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UKIAogI2VuZGlmIC8v
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>