<?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>151402</bug_id>
          
          <creation_ts>2015-11-18 13:32:09 -0800</creation_ts>
          <short_desc>[WK2][Cache] We should not speculatively revalidate transient resources</short_desc>
          <delta_ts>2015-11-30 11:06:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>150856</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>barraclough</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1142955</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-11-18 13:32:09 -0800</bug_when>
    <thetext>We should not speculatively revalidate transient resources and avoid unnecessary network requests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142956</commentid>
    <comment_count>1</comment_count>
      <attachid>265773</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-11-18 13:33:22 -0800</bug_when>
    <thetext>Created attachment 265773
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142957</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-18 13:35:45 -0800</bug_when>
    <thetext>Attachment 265773 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h:63:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:131:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:316:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:322:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:361:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:47:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 6 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143208</commentid>
    <comment_count>3</comment_count>
      <attachid>265851</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-11-18 23:38:46 -0800</bug_when>
    <thetext>Created attachment 265851
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143209</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-18 23:41:01 -0800</bug_when>
    <thetext>Attachment 265851 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:156:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:354:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:359:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:47:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 5 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143495</commentid>
    <comment_count>5</comment_count>
      <attachid>265918</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-11-19 16:39:43 -0800</bug_when>
    <thetext>Created attachment 265918
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143496</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-19 16:41:20 -0800</bug_when>
    <thetext>Attachment 265918 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:156:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:359:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:47:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 4 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143825</commentid>
    <comment_count>7</comment_count>
      <attachid>265999</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-11-20 14:28:51 -0800</bug_when>
    <thetext>Created attachment 265999
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143828</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-20 14:30:11 -0800</bug_when>
    <thetext>Attachment 265999 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:159:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:362:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h:61:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:47:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 4 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143829</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-11-20 14:30:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/23092196&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144839</commentid>
    <comment_count>10</comment_count>
      <attachid>265999</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-30 11:06:27 -0800</bug_when>
    <thetext>Comment on attachment 265999
Patch

Clearing flags on attachment: 265999

Committed r192807: &lt;http://trac.webkit.org/changeset/192807&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144840</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-30 11:06:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265773</attachid>
            <date>2015-11-18 13:33:22 -0800</date>
            <delta_ts>2015-11-18 23:38:46 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>speculativeLoad_better_prediction_wip.patch</filename>
            <type>text/plain</type>
            <size>15491</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKaW5kZXgg
MDgyMjdhNC4uNjJhZTgxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkTWFuYWdlci5jcHAKQEAgLTU2LDYgKzU2LDE5IEBAIHN0YXRpYyBpbmxpbmUgS2V5IG1ha2VT
dWJyZXNvdXJjZXNLZXkoY29uc3QgS2V5JiByZXNvdXJjZUtleSkKICAgICByZXR1cm4gS2V5KHJl
c291cmNlS2V5LnBhcnRpdGlvbigpLCBzdWJyZXNvdXJjZXNUeXBlKCksIHJlc291cmNlS2V5LnJh
bmdlKCksIHJlc291cmNlS2V5LmlkZW50aWZpZXIoKSk7CiB9CiAKK3N0cnVjdCBTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyOjpVcGRhdGVPcGVyYXRpb24geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIFVwZGF0ZU9wZXJhdGlvbihLZXkmJiBtYWluUmVzb3VyY2VLZXks
IEhhc2hTZXQ8S2V5PiYmIHN1YnJlc291cmNlS2V5cykKKyAgICAgICAgOiBtYWluUmVzb3VyY2VL
ZXkoV1RGOjptb3ZlKG1haW5SZXNvdXJjZUtleSkpCisgICAgICAgICwgc3VicmVzb3VyY2VLZXlz
KFdURjo6bW92ZShzdWJyZXNvdXJjZUtleXMpKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBL
ZXkgbWFpblJlc291cmNlS2V5OworICAgIGNvbnN0IEhhc2hTZXQ8S2V5PiBzdWJyZXNvdXJjZUtl
eXM7Cit9OworCiBzdGF0aWMgaW5saW5lIFJlc291cmNlUmVxdWVzdCBjb25zdHJ1Y3RSZXZhbGlk
YXRpb25SZXF1ZXN0KGNvbnN0IEVudHJ5JiBlbnRyeSkKIHsKICAgICBSZXNvdXJjZVJlcXVlc3Qg
cmV2YWxpZGF0aW9uUmVxdWVzdChlbnRyeS5rZXkoKS5pZGVudGlmaWVyKCkpOwpAQCAtMTEyLDEw
ICsxMjUsMTAgQEAgcHJpdmF0ZToKIGNsYXNzIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OlBlbmRp
bmdGcmFtZUxvYWQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IFBlbmRpbmdGcmFtZUxvYWQoY29uc3QgS2V5JiBtYWluUmVzb3VyY2VLZXksIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIFBlbmRpbmdGcmFtZUxvYWQoY29u
c3QgS2V5JiBtYWluUmVzb3VyY2VLZXksIHN0ZDo6ZnVuY3Rpb248dm9pZChLZXkmJiwgSGFzaFNl
dDxLZXk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICA6IG1fbWFpblJlc291cmNl
S2V5KG1haW5SZXNvdXJjZUtleSkKICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURjo6
bW92ZShjb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgICwgbV9sb2FkSHlzdGVyZXNpc0FjdGl2
aXR5KFt0aGlzXShIeXN0ZXJlc2lzU3RhdGUgc3RhdGUpIHsgaWYgKHN0YXRlID09IEh5c3RlcmVz
aXNTdGF0ZTo6U3RvcHBlZCkgbV9jb21wbGV0aW9uSGFuZGxlcigpOyB9KQorICAgICAgICAsIG1f
bG9hZEh5c3RlcmVzaXNBY3Rpdml0eShbdGhpc10oSHlzdGVyZXNpc1N0YXRlIHN0YXRlKSB7IGlm
IChzdGF0ZSA9PSBIeXN0ZXJlc2lzU3RhdGU6OlN0b3BwZWQpIG1hcmtBc0NvbXBsZXRlZCgpOyB9
KQogICAgIHsgfQogCiAgICAgdm9pZCByZWdpc3RlclN1YnJlc291cmNlKGNvbnN0IEtleSYgc3Vi
cmVzb3VyY2VLZXkpCkBAIC0xMjUsNDAgKzEzOCwyMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fbG9h
ZEh5c3RlcmVzaXNBY3Rpdml0eS5pbXB1bHNlKCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8U3Rv
cmFnZTo6UmVjb3JkPiBlbmNvZGVBc1N1YnJlc291cmNlc1JlY29yZCgpCi0gICAgewotICAgICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBpZiAobV9zdWJyZXNvdXJjZUtl
eXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgICAgICBhdXRvIHN1
YnJlc291cmNlc1N0b3JhZ2VLZXkgPSBtYWtlU3VicmVzb3VyY2VzS2V5KG1fbWFpblJlc291cmNl
S2V5KTsKLSAgICAgICAgVmVjdG9yPEtleT4gc3VicmVzb3VyY2VLZXlzOwotICAgICAgICBjb3B5
VG9WZWN0b3IobV9zdWJyZXNvdXJjZUtleXMsIHN1YnJlc291cmNlS2V5cyk7Ci0KLSNpZiAhTE9H
X0RJU0FCTEVECi0gICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcs
ICIoTmV0d29ya1Byb2Nlc3MpIFNhdmluZyB0byBkaXNrIGxpc3Qgb2Ygc3VicmVzb3VyY2VzIGZv
ciAnJXMnOiIsIG1fbWFpblJlc291cmNlS2V5LmlkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsK
LSAgICAgICAgZm9yIChhdXRvJiBzdWJyZXNvdXJjZUtleSA6IHN1YnJlc291cmNlS2V5cykKLSAg
ICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29y
a1Byb2Nlc3MpICogU3VicmVzb3VyY2U6ICclcycuIiwgc3VicmVzb3VyY2VLZXkuaWRlbnRpZmll
cigpLnV0ZjgoKS5kYXRhKCkpOwotI2VuZGlmCi0KLSAgICAgICAgcmV0dXJuIFN1YnJlc291cmNl
c0VudHJ5KHN1YnJlc291cmNlc1N0b3JhZ2VLZXksIFdURjo6bW92ZShzdWJyZXNvdXJjZUtleXMp
KS5lbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKTsKLSAgICB9Ci0KICAgICB2b2lkIG1hcmtBc0NvbXBs
ZXRlZCgpCiAgICAgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAg
ICBtX2NvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoV1RG
Ojptb3ZlKG1fbWFpblJlc291cmNlS2V5KSwgV1RGOjptb3ZlKG1fc3VicmVzb3VyY2VLZXlzKSk7
CiAgICAgfQogCiBwcml2YXRlOgogICAgIEtleSBtX21haW5SZXNvdXJjZUtleTsKICAgICBIYXNo
U2V0PEtleT4gbV9zdWJyZXNvdXJjZUtleXM7Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1f
Y29tcGxldGlvbkhhbmRsZXI7CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKEtleSYmLCBIYXNoU2V0
PEtleT4mJik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiAgICAgSHlzdGVyZXNpc0FjdGl2aXR5IG1f
bG9hZEh5c3RlcmVzaXNBY3Rpdml0eTsKIH07CiAKIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OlNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXIoU3RvcmFnZSYgc3RvcmFnZSkKICAgICA6IG1fc3RvcmFnZShz
dG9yYWdlKQorICAgICwgbV91cGRhdGVPcGVyYXRpb25EaXNwYXRjaFRpbWVyKCp0aGlzLCAmU3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlcjo6ZGlzcGF0Y2hQZW5kaW5nVXBkYXRlT3BlcmF0aW9ucykKIHsK
IH0KIApAQCAtMjAyLDEzICsxOTcsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpy
ZWdpc3RlckxvYWQoY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgY29uc3QgUmUKICAgICAg
ICAgaWYgKGF1dG8qIHBlbmRpbmdGcmFtZUxvYWQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLmdldChm
cmFtZUlEKSkKICAgICAgICAgICAgIHBlbmRpbmdGcmFtZUxvYWQtPm1hcmtBc0NvbXBsZXRlZCgp
OwogCisgICAgICAgIEFTU0VSVCghbV9wZW5kaW5nRnJhbWVMb2Fkcy5jb250YWlucyhmcmFtZUlE
KSk7CisKICAgICAgICAgLy8gU3RhcnQgdHJhY2tpbmcgbG9hZHMgaW4gdGhpcyBmcmFtZS4KLSAg
ICAgICAgbV9wZW5kaW5nRnJhbWVMb2Fkcy5hZGQoZnJhbWVJRCwgc3RkOjptYWtlX3VuaXF1ZTxQ
ZW5kaW5nRnJhbWVMb2FkPihyZXNvdXJjZUtleSwgW3RoaXMsIGZyYW1lSURdKCkgewotICAgICAg
ICAgICAgYXV0byBmcmFtZUxvYWQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLnRha2UoZnJhbWVJRCk7
Ci0gICAgICAgICAgICBhdXRvIG9wdGlvbmFsUmVjb3JkID0gZnJhbWVMb2FkLT5lbmNvZGVBc1N1
YnJlc291cmNlc1JlY29yZCgpOwotICAgICAgICAgICAgaWYgKCFvcHRpb25hbFJlY29yZCkKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX3N0b3JhZ2Uuc3RvcmUob3B0aW9u
YWxSZWNvcmQudmFsdWUoKSwgW10oY29uc3QgRGF0YSYpIHsgfSk7CisgICAgICAgIG1fcGVuZGlu
Z0ZyYW1lTG9hZHMuYWRkKGZyYW1lSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0ZyYW1lTG9h
ZD4ocmVzb3VyY2VLZXksIFt0aGlzLCBmcmFtZUlEXShLZXkmJiBtYWluUmVzb3VyY2VLZXksIEhh
c2hTZXQ8S2V5PiYmIHN1YnJlc291cmNlS2V5cykgeworICAgICAgICAgICAgYXV0byBjb21wbGV0
ZWRGcmFtZUxvYWQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLnRha2UoZnJhbWVJRCk7CisgICAgICAg
ICAgICBBU1NFUlQoY29tcGxldGVkRnJhbWVMb2FkKTsKKyAgICAgICAgICAgIHVwZGF0ZVN1YnJl
c291cmNlcyhXVEY6Om1vdmUobWFpblJlc291cmNlS2V5KSwgV1RGOjptb3ZlKHN1YnJlc291cmNl
S2V5cykpOwogICAgICAgICB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMTEsMjMg
KzMwNiw5NiBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0U3BlY3VsYXRpdmVS
ZXZhbGlkYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgIGlmIChvcmlnaW5hbFJlcXVl
c3QucmVxdWVzdGVyKCkgIT0gUmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6Ok1haW4pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGF1dG8gc3VicmVzb3VyY2VzU3RvcmFnZUtleSA9IG1ha2VTdWJy
ZXNvdXJjZXNLZXkoc3RvcmFnZUtleSk7CisgICAgcmV0cmlldmVTdWJyZXNvdXJjZXNFbnRyeShz
dG9yYWdlS2V5LCBSZXNvdXJjZUxvYWRQcmlvcml0eTo6TWVkaXVtLCBbdGhpcywgZnJhbWVJRF0o
c3RkOjp1bmlxdWVfcHRyPFN1YnJlc291cmNlc0VudHJ5PiBlbnRyeSkgeworICAgICAgICBpZiAo
IWVudHJ5KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAoYXV0byYgc3VicmVz
b3VyY2UgOiBlbnRyeS0+c3VicmVzb3VyY2VzKCkpIHsKKyAgICAgICAgICAgIGlmICghc3VicmVz
b3VyY2UudmFsdWUuaXNUcmFuc2llbnQpCisgICAgICAgICAgICAgICAgcHJlbG9hZEVudHJ5KHN1
YnJlc291cmNlLmtleSwgZnJhbWVJRCk7CisgICAgICAgICAgICAvL2Vsc2UKKyAgICAgICAgICAg
IC8vICAgIFdURkxvZ0Fsd2F5cygiQ0hSSVM6IE5vdCBsb2FkaW5nICVzIGJlY2F1c2UgaXQgaXMg
dHJhbnNpZW50ISEhXG4iLCBzdWJyZXNvdXJjZS5rZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICB9CisgICAgfSk7Cit9CiAKLSAgICBtX3N0b3JhZ2UucmV0cmlldmUoc3Vi
cmVzb3VyY2VzU3RvcmFnZUtleSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlc291cmNlTG9hZFBy
aW9yaXR5OjpNZWRpdW0pLCBbdGhpcywgZnJhbWVJRF0oc3RkOjp1bmlxdWVfcHRyPFN0b3JhZ2U6
OlJlY29yZD4gcmVjb3JkKSB7Ci0gICAgICAgIGlmICghcmVjb3JkKQordm9pZCBTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyOjpyZXRyaWV2ZVN1YnJlc291cmNlc0VudHJ5KGNvbnN0IEtleSYgc3RvcmFn
ZUtleSwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHksIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
c3RkOjp1bmlxdWVfcHRyPFN1YnJlc291cmNlc0VudHJ5Pik+IGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIEFTU0VSVChzdG9yYWdlS2V5LnR5cGUoKSA9PSAicmVzb3VyY2UiKTsKKyAgICBhdXRv
IHN1YnJlc291cmNlc1N0b3JhZ2VLZXkgPSBtYWtlU3VicmVzb3VyY2VzS2V5KHN0b3JhZ2VLZXkp
OworICAgIG1fc3RvcmFnZS5yZXRyaWV2ZShzdWJyZXNvdXJjZXNTdG9yYWdlS2V5LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocHJpb3JpdHkpLCBbY29tcGxldGlvbkhhbmRsZXJdKHN0ZDo6dW5pcXVl
X3B0cjxTdG9yYWdlOjpSZWNvcmQ+IHJlY29yZCkgeworICAgICAgICBpZiAoIXJlY29yZCkgewor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KIAogICAgICAgICBhdXRvIHN1YnJlc291cmNlc0VudHJ5ID0g
U3VicmVzb3VyY2VzRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoKnJlY29yZCk7Ci0gICAgICAg
IGlmICghc3VicmVzb3VyY2VzRW50cnkpCisgICAgICAgIGlmICghc3VicmVzb3VyY2VzRW50cnkp
IHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CiAKLSAgICAgICAgZm9yIChhdXRvJiBzdWJyZXNvdXJj
ZUtleSA6IHN1YnJlc291cmNlc0VudHJ5LT5zdWJyZXNvdXJjZUtleXMoKSkKLSAgICAgICAgICAg
IHByZWxvYWRFbnRyeShzdWJyZXNvdXJjZUtleSwgZnJhbWVJRCk7Ci0KKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGOjptb3ZlKHN1YnJlc291cmNlc0VudHJ5KSk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0pOwogfQogCit2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmRpc3Bh
dGNoUGVuZGluZ1VwZGF0ZU9wZXJhdGlvbnMoKQoreworICAgIGNvbnN0IGludCBtYXhpbXVtQWN0
aXZlVXBkYXRlT3BlcmF0aW9uQ291bnQgeyAzIH07CisKKyAgICB3aGlsZSAoIW1fcGVuZGluZ1Vw
ZGF0ZU9wZXJhdGlvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChtX2FjdGl2ZVVwZGF0ZU9w
ZXJhdGlvbnMuc2l6ZSgpID49IG1heGltdW1BY3RpdmVVcGRhdGVPcGVyYXRpb25Db3VudCkgewor
ICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihOZXR3
b3JrUHJvY2VzcykgbGltaXRpbmcgcGFyYWxsZWwgdXBkYXRlcyIpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIGRpc3BhdGNoVXBkYXRlT3BlcmF0aW9uKG1fcGVuZGlu
Z1VwZGF0ZU9wZXJhdGlvbnMudGFrZUxhc3QoKSk7CisgICAgfQorfQorCit2b2lkIFNwZWN1bGF0
aXZlTG9hZE1hbmFnZXI6OmRpc3BhdGNoVXBkYXRlT3BlcmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxV
cGRhdGVPcGVyYXRpb24+IHVwZGF0ZU9wZXJhdGlvblB0cikKK3sKKyAgICBhdXRvJiB1cGRhdGVP
cGVyYXRpb24gPSAqdXBkYXRlT3BlcmF0aW9uUHRyOworICAgIG1fYWN0aXZlVXBkYXRlT3BlcmF0
aW9ucy5hZGQoV1RGOjptb3ZlKHVwZGF0ZU9wZXJhdGlvblB0cikpOworCisgICAgLy9XVEZMb2dB
bHdheXMoIkNIUklTOiBkaXNwYXRjaFVwZGF0ZU9wZXJhdGlvbiglcykiLCB1cGRhdGVPcGVyYXRp
b24ubWFpblJlc291cmNlS2V5LmlkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIHJl
dHJpZXZlU3VicmVzb3VyY2VzRW50cnkodXBkYXRlT3BlcmF0aW9uLm1haW5SZXNvdXJjZUtleSwg
UmVzb3VyY2VMb2FkUHJpb3JpdHk6OlZlcnlMb3csIFt0aGlzLCAmdXBkYXRlT3BlcmF0aW9uXShz
dGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3VyY2VzRW50cnk+IGV4aXN0aW5nRW50cnkpIHsKKyAgICAg
ICAgaWYgKGV4aXN0aW5nRW50cnkpIHsKKyAgICAgICAgICAgIGV4aXN0aW5nRW50cnktPnVwZGF0
ZVN1YnJlc291cmNlS2V5cyh1cGRhdGVPcGVyYXRpb24uc3VicmVzb3VyY2VLZXlzKTsKKyAgICAg
ICAgICAgIG1fc3RvcmFnZS5zdG9yZShleGlzdGluZ0VudHJ5LT5lbmNvZGVBc1N0b3JhZ2VSZWNv
cmQoKSwgW10oY29uc3QgRGF0YSYpIHsgfSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBTdWJyZXNvdXJjZXNFbnRyeSBlbnRyeShtYWtlU3VicmVzb3VyY2VzS2V5KHVwZGF0ZU9wZXJh
dGlvbi5tYWluUmVzb3VyY2VLZXkpLCB1cGRhdGVPcGVyYXRpb24uc3VicmVzb3VyY2VLZXlzKTsK
KyAgICAgICAgICAgIG1fc3RvcmFnZS5zdG9yZShlbnRyeS5lbmNvZGVBc1N0b3JhZ2VSZWNvcmQo
KSwgW10oY29uc3QgRGF0YSYpIHsgfSk7CisgICAgICAgIH0KKyAgICAgICAgbV9hY3RpdmVVcGRh
dGVPcGVyYXRpb25zLnJlbW92ZSgmdXBkYXRlT3BlcmF0aW9uKTsKKyAgICAgICAgZGlzcGF0Y2hQ
ZW5kaW5nVXBkYXRlT3BlcmF0aW9ucygpOworICAgIH0pOworfQorCit2b2lkIFNwZWN1bGF0aXZl
TG9hZE1hbmFnZXI6OnVwZGF0ZVN1YnJlc291cmNlcyhLZXkmJiBtYWluUmVzb3VyY2VLZXksIEhh
c2hTZXQ8S2V5PiYmIHN1YnJlc291cmNlS2V5cykKK3sKKyAgICBBU1NFUlQobWFpblJlc291cmNl
S2V5LnR5cGUoKSA9PSAicmVzb3VyY2UiKTsKKworICAgIGlmIChzdWJyZXNvdXJjZUtleXMuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgTE9HKE5l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihOZXR3b3JrUHJvY2VzcykgU2F2aW5n
IHRvIGRpc2sgbGlzdCBvZiBzdWJyZXNvdXJjZXMgZm9yICclcyc6IiwgbWFpblJlc291cmNlS2V5
LmlkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBmb3IgKGF1dG8mIHN1YnJlc291cmNl
S2V5IDogc3VicmVzb3VyY2VLZXlzKQorICAgICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSAqIFN1YnJlc291cmNlOiAnJXMnLiIsIHN1
YnJlc291cmNlS2V5LmlkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgorCisgICAg
bV9wZW5kaW5nVXBkYXRlT3BlcmF0aW9ucy5wcmVwZW5kKHN0ZDo6bWFrZV91bmlxdWU8VXBkYXRl
T3BlcmF0aW9uPihXVEY6Om1vdmUobWFpblJlc291cmNlS2V5KSwgV1RGOjptb3ZlKHN1YnJlc291
cmNlS2V5cykpKTsKKworICAgIGJvb2wgaXNJbml0aWFsVXBkYXRlID0gbV9wZW5kaW5nVXBkYXRl
T3BlcmF0aW9ucy5zaXplKCkgPT0gMTsKKyAgICBpZiAoIWlzSW5pdGlhbFVwZGF0ZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgc3RhdGljIGNvbnN0IGF1dG8gaW5pdGlhbFVwZGF0ZURlbGF5ID0g
MV9zOworICAgIG1fdXBkYXRlT3BlcmF0aW9uRGlzcGF0Y2hUaW1lci5zdGFydE9uZVNob3QoaW5p
dGlhbFVwZGF0ZURlbGF5KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgTmV0d29ya0NhY2hlCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlci5oCmluZGV4IDM2NGM1OGMuLmViNmFiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIE5l
dHdvcmtDYWNoZSB7CiAKIGNsYXNzIEVudHJ5OwogY2xhc3MgU3BlY3VsYXRpdmVMb2FkOworY2xh
c3MgU3VicmVzb3VyY2VzRW50cnk7CiAKIGNsYXNzIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXIgewog
cHVibGljOgpAQCAtNTksNiArNjAsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJldHJpZXZlRW50
cnlGcm9tU3RvcmFnZShjb25zdCBLZXkmLCBjb25zdCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVy
Jik7CiAgICAgdm9pZCByZXZhbGlkYXRlRW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiwgY29u
c3QgR2xvYmFsRnJhbWVJRCYpOwogICAgIGJvb2wgc2F0aXNmeVBlbmRpbmdSZXF1ZXN0cyhjb25z
dCBLZXkmLCBFbnRyeSopOworICAgIHZvaWQgcmV0cmlldmVTdWJyZXNvdXJjZXNFbnRyeShjb25z
dCBLZXkmIHN0b3JhZ2VLZXksIFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5LCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKHN0ZDo6dW5pcXVlX3B0cjxTdWJyZXNvdXJjZXNFbnRyeT4pPik7CisgICAg
dm9pZCB1cGRhdGVTdWJyZXNvdXJjZXMoS2V5JiYgbWFpblJlc291cmNlS2V5LCBIYXNoU2V0PEtl
eT4mJiBzdWJyZXNvdXJjZUtleXMpOworCisgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdVcGRhdGVP
cGVyYXRpb25zKCk7CisgICAgc3RydWN0IFVwZGF0ZU9wZXJhdGlvbjsKKyAgICB2b2lkIGRpc3Bh
dGNoVXBkYXRlT3BlcmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxVcGRhdGVPcGVyYXRpb24+KTsKIAog
ICAgIFN0b3JhZ2UmIG1fc3RvcmFnZTsKIApAQCAtNzAsNiArNzcsMTAgQEAgcHJpdmF0ZToKIAog
ICAgIGNsYXNzIFByZWxvYWRlZEVudHJ5OwogICAgIEhhc2hNYXA8S2V5LCBzdGQ6OnVuaXF1ZV9w
dHI8UHJlbG9hZGVkRW50cnk+PiBtX3ByZWxvYWRlZEVudHJpZXM7CisKKyAgICBEZXF1ZTxzdGQ6
OnVuaXF1ZV9wdHI8VXBkYXRlT3BlcmF0aW9uPj4gbV9wZW5kaW5nVXBkYXRlT3BlcmF0aW9uczsK
KyAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxVcGRhdGVPcGVyYXRpb24+PiBtX2FjdGl2ZVVw
ZGF0ZU9wZXJhdGlvbnM7CisgICAgV2ViQ29yZTo6VGltZXIgbV91cGRhdGVPcGVyYXRpb25EaXNw
YXRjaFRpbWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgTmV0d29ya0NhY2hlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNv
dXJjZXNFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKaW5kZXggNzdkZDAwMC4uNTVmNmVmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3VicmVzb3VyY2VzRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcApAQCAtMzksNyArMzksNyBA
QCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIFN0b3JhZ2U6OlJlY29yZCBTdWJyZXNvdXJjZXNF
bnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIHsKICAgICBFbmNvZGVyIGVuY29k
ZXI7Ci0gICAgZW5jb2RlciA8PCBtX3N1YnJlc291cmNlS2V5czsKKyAgICBlbmNvZGVyIDw8IG1f
c3VicmVzb3VyY2VzOwogCiAgICAgZW5jb2Rlci5lbmNvZGVDaGVja3N1bSgpOwogCkBAIC01MSw3
ICs1MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTdWJyZXNvdXJjZXNFbnRyeT4gU3VicmVzb3VyY2Vz
RW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoY29uc3QKICAgICBhdXRvIGVudHJ5ID0gc3RkOjpt
YWtlX3VuaXF1ZTxTdWJyZXNvdXJjZXNFbnRyeT4oc3RvcmFnZUVudHJ5KTsKIAogICAgIERlY29k
ZXIgZGVjb2RlcihzdG9yYWdlRW50cnkuaGVhZGVyLmRhdGEoKSwgc3RvcmFnZUVudHJ5LmhlYWRl
ci5zaXplKCkpOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZW50cnktPm1fc3VicmVzb3VyY2VL
ZXlzKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVudHJ5LT5tX3N1YnJlc291cmNlcykpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFkZWNvZGVyLnZlcmlmeUNoZWNrc3Vt
KCkpIHsKQEAgLTY5LDEyICs2OSwyNCBAQCBTdWJyZXNvdXJjZXNFbnRyeTo6U3VicmVzb3VyY2Vz
RW50cnkoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlRW50cnkpCiAgICAgQVNTRVJUKG1f
a2V5LnR5cGUoKSA9PSAic3VicmVzb3VyY2VzIik7CiB9CiAKLVN1YnJlc291cmNlc0VudHJ5OjpT
dWJyZXNvdXJjZXNFbnRyeShjb25zdCBLZXkmIGtleSwgVmVjdG9yPEtleT4mJiBzdWJyZXNvdXJj
ZUtleXMpCitTdWJyZXNvdXJjZXNFbnRyeTo6U3VicmVzb3VyY2VzRW50cnkoY29uc3QgS2V5JiBr
ZXksIGNvbnN0IEhhc2hTZXQ8S2V5PiYgc3VicmVzb3VyY2VLZXlzKQogICAgIDogbV9rZXkoa2V5
KQogICAgICwgbV90aW1lU3RhbXAoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkpCi0g
ICAgLCBtX3N1YnJlc291cmNlS2V5cyhXVEY6Om1vdmUoc3VicmVzb3VyY2VLZXlzKSkKIHsKICAg
ICBBU1NFUlQobV9rZXkudHlwZSgpID09ICJzdWJyZXNvdXJjZXMiKTsKKyAgICBmb3IgKGF1dG8m
IGtleSA6IHN1YnJlc291cmNlS2V5cykKKyAgICAgICAgbV9zdWJyZXNvdXJjZXMuYWRkKGtleSwg
U3VicmVzb3VyY2VJbmZvKCkpOworfQorCit2b2lkIFN1YnJlc291cmNlc0VudHJ5Ojp1cGRhdGVT
dWJyZXNvdXJjZUtleXMoY29uc3QgSGFzaFNldDxLZXk+JiBzdWJyZXNvdXJjZUtleXMpCit7Cisg
ICAgYXV0byBvbGRTdWJyZXNvdXJjZXMgPSBXVEY6Om1vdmUobV9zdWJyZXNvdXJjZXMpOworCisg
ICAgLy8gTWFyayBrZXlzIHRoYXQgYXJlIGNvbW1vbiB3aXRoIGxhc3QgbG9hZCBhcyBub24tVHJh
bnNpZW50LgorICAgIGZvciAoYXV0byYga2V5IDogc3VicmVzb3VyY2VLZXlzKSB7CisgICAgICAg
IGF1dG8gaXNUcmFuc2llbnQgPSAhb2xkU3VicmVzb3VyY2VzLmNvbnRhaW5zKGtleSk7CisgICAg
ICAgIG1fc3VicmVzb3VyY2VzLmFkZChrZXksIFN1YnJlc291cmNlSW5mbyhpc1RyYW5zaWVudCkp
OworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRy
eS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Vi
cmVzb3VyY2VzRW50cnkuaAppbmRleCBiZWFkYmQyLi40MWM3NzYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNF
bnRyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN1YnJlc291cmNlc0VudHJ5LmgKQEAgLTI4LDcgKzI4LDEwIEBACiAKICNpZiBFTkFCTEUo
TkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAKKyNpbmNsdWRlICJOZXR3
b3JrQ2FjaGVEZWNvZGVyLmgiCisjaW5jbHVkZSAiTmV0d29ya0NhY2hlRW5jb2Rlci5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewpAQCAtMzYsNyAr
MzksMTYgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBjbGFzcyBTdWJyZXNvdXJjZXNFbnRy
eSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3VicmVzb3VyY2VzRW50cnkpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTdWJyZXNvdXJjZXNFbnRyeShjb25zdCBL
ZXkmLCBWZWN0b3I8S2V5PiYmIHN1YnJlc291cmNlS2V5cyk7CisgICAgc3RydWN0IFN1YnJlc291
cmNlSW5mbyB7CisgICAgICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0IHsg
ZW5jb2RlciA8PCBpc1RyYW5zaWVudDsgfQorICAgICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgU3VicmVzb3VyY2VJbmZvJiBpbmZvKSB7IHJldHVybiBkZWNvZGVyLmRl
Y29kZShpbmZvLmlzVHJhbnNpZW50KTsgfQorCisgICAgICAgIFN1YnJlc291cmNlSW5mbygpID0g
ZGVmYXVsdDsKKyAgICAgICAgU3VicmVzb3VyY2VJbmZvKGJvb2wgaXNUcmFuc2llbnQpIDogaXNU
cmFuc2llbnQoaXNUcmFuc2llbnQpIHsgfQorCisgICAgICAgIGJvb2wgaXNUcmFuc2llbnQgeyBm
YWxzZSB9OworICAgIH07CisgICAgU3VicmVzb3VyY2VzRW50cnkoY29uc3QgS2V5JiwgY29uc3Qg
SGFzaFNldDxLZXk+JiBzdWJyZXNvdXJjZUtleXMpOwogICAgIGV4cGxpY2l0IFN1YnJlc291cmNl
c0VudHJ5KGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYpOwogCiAgICAgU3RvcmFnZTo6UmVjb3JkIGVu
Y29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0OwpAQCAtNDQsMTMgKzU2LDE0IEBAIHB1YmxpYzoK
IAogICAgIGNvbnN0IEtleSYga2V5KCkgY29uc3QgeyByZXR1cm4gbV9rZXk7IH0KICAgICBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWVTdGFtcCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGltZVN0YW1wOyB9Ci0gICAgY29uc3QgVmVjdG9yPEtleT4mIHN1YnJlc291cmNlS2V5
cygpIGNvbnN0IHsgcmV0dXJuIG1fc3VicmVzb3VyY2VLZXlzOyB9CisgICAgY29uc3QgSGFzaE1h
cDxLZXksIFN1YnJlc291cmNlSW5mbz4mIHN1YnJlc291cmNlcygpIGNvbnN0IHsgcmV0dXJuIG1f
c3VicmVzb3VyY2VzOyB9CisKKyAgICB2b2lkIHVwZGF0ZVN1YnJlc291cmNlS2V5cyhjb25zdCBI
YXNoU2V0PEtleT4mKTsKIAogcHJpdmF0ZToKICAgICBLZXkgbV9rZXk7CiAgICAgc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtX3RpbWVTdGFtcDsKLSAgICBTdG9yYWdlOjpS
ZWNvcmQgbV9zb3VyY2VTdG9yYWdlUmVjb3JkOwotICAgIFZlY3RvcjxLZXk+IG1fc3VicmVzb3Vy
Y2VLZXlzOworICAgIEhhc2hNYXA8S2V5LCBTdWJyZXNvdXJjZUluZm8+IG1fc3VicmVzb3VyY2Vz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IGZkMTA4M2YuLjM4
YzcwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tCkBAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGljIHZvaWQgcmVnaXN0
ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpCiAgICAgW3JlZ2lzdHJhdGlvbkRpY3Rpb25hcnkgc2V0
T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdIGZvcktleTpXZWJLaXROZXR3b3Jr
Q2FjaGVFbmFibGVkRGVmYXVsdHNLZXldOwogICAgIFtyZWdpc3RyYXRpb25EaWN0aW9uYXJ5IHNl
dE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dIGZvcktleTpXZWJLaXROZXR3b3Jr
Q2FjaGVFZmZpY2FjeUxvZ2dpbmdFbmFibGVkRGVmYXVsdHNLZXldOwogI2lmIEVOQUJMRShORVRX
T1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKLSAgICBbcmVnaXN0cmF0aW9uRGlj
dGlvbmFyeSBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSBmb3JLZXk6V2Vi
S2l0TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb25FbmFibGVkRGVmYXVsdHNLZXld
OworICAgIFtyZWdpc3RyYXRpb25EaWN0aW9uYXJ5IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVy
V2l0aEJvb2w6WUVTXSBmb3JLZXk6V2ViS2l0TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlk
YXRpb25FbmFibGVkRGVmYXVsdHNLZXldOwogI2VuZGlmCiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265851</attachid>
            <date>2015-11-18 23:38:46 -0800</date>
            <delta_ts>2015-11-19 16:39:43 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>speculativeLoad_better_prediction_wip.patch</filename>
            <type>text/plain</type>
            <size>15856</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuY3BwCmluZGV4IDU1NWNkNTUuLjE3NGI2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtMzU2LDEyICszNTYs
OCBAQCB2b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVxdWVzdCwgY29uc3QgR2xvYgogICAgIEtleSBzdG9yYWdlS2V5ID0gbWFrZUNh
Y2hlS2V5KG9yaWdpbmFsUmVxdWVzdCk7CiAKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVD
VUxBVElWRV9SRVZBTElEQVRJT04pCi0gICAgaWYgKG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlcikg
eworICAgIGlmIChtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIpCiAgICAgICAgIG1fc3BlY3VsYXRp
dmVMb2FkTWFuYWdlci0+cmVnaXN0ZXJMb2FkKGZyYW1lSUQsIG9yaWdpbmFsUmVxdWVzdCwgc3Rv
cmFnZUtleSk7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgb3JpZ2lu
YWxSZXF1ZXN0LCBmcmFtZUlELCBzdG9yYWdlS2V5XSB7Ci0gICAgICAgICAgICBtX3NwZWN1bGF0
aXZlTG9hZE1hbmFnZXItPnN0YXJ0U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24ob3JpZ2luYWxSZXF1
ZXN0LCBmcmFtZUlELCBzdG9yYWdlS2V5KTsKLSAgICAgICAgfSk7Ci0gICAgfQogI2VuZGlmCiAK
ICAgICBhdXRvIHJldHJpZXZlRGVjaXNpb24gPSBtYWtlUmV0cmlldmVEZWNpc2lvbihvcmlnaW5h
bFJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
LmNwcAppbmRleCAwNDEyYmE2Li4xNDhiYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk5l
dHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9IeXN0ZXJl
c2lzQWN0aXZpdHkuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtMTA5LDUyICsxMTAsODMgQEAgcHJpdmF0ZToKICAgICBzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gbV9saWZldGltZVJlYWNoZWRIYW5kbGVyOwogfTsKIAotY2xhc3MgU3BlY3Vs
YXRpdmVMb2FkTWFuYWdlcjo6UGVuZGluZ0ZyYW1lTG9hZCB7Ci0gICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitjbGFzcyBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2Fk
IDogcHVibGljIFJlZkNvdW50ZWQ8UGVuZGluZ0ZyYW1lTG9hZD4gewogcHVibGljOgotICAgIFBl
bmRpbmdGcmFtZUxvYWQoY29uc3QgS2V5JiBtYWluUmVzb3VyY2VLZXksIHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICA6IG1fbWFpblJlc291cmNlS2V5
KG1haW5SZXNvdXJjZUtleSkKLSAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURjo6bW92
ZShjb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgICwgbV9sb2FkSHlzdGVyZXNpc0FjdGl2aXR5
KFt0aGlzXShIeXN0ZXJlc2lzU3RhdGUgc3RhdGUpIHsgaWYgKHN0YXRlID09IEh5c3RlcmVzaXNT
dGF0ZTo6U3RvcHBlZCkgbV9jb21wbGV0aW9uSGFuZGxlcigpOyB9KQotICAgIHsgfQorICAgIHN0
YXRpYyBSZWY8UGVuZGluZ0ZyYW1lTG9hZD4gY3JlYXRlKFN0b3JhZ2UmIHN0b3JhZ2UsIGNvbnN0
IEtleSYgbWFpblJlc291cmNlS2V5LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBsb2FkQ29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQZW5kaW5n
RnJhbWVMb2FkKHN0b3JhZ2UsIG1haW5SZXNvdXJjZUtleSwgV1RGOjptb3ZlKGxvYWRDb21wbGV0
aW9uSGFuZGxlcikpKTsKKyAgICB9CisKKyAgICB+UGVuZGluZ0ZyYW1lTG9hZCgpCisgICAgewor
ICAgICAgICBBU1NFUlQobV9kaWRGaW5pc2hMb2FkKTsKKyAgICAgICAgQVNTRVJUKG1fZGlkUmV0
cmlldmVFeGlzdGluZ0VudHJ5KTsKKyAgICB9CiAKICAgICB2b2lkIHJlZ2lzdGVyU3VicmVzb3Vy
Y2UoY29uc3QgS2V5JiBzdWJyZXNvdXJjZUtleSkKICAgICB7CiAgICAgICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7Ci0gICAgICAgIG1fc3VicmVzb3VyY2VLZXlzLmFkZChzdWJyZXNvdXJj
ZUtleSk7CisgICAgICAgIG1fc3VicmVzb3VyY2VLZXlzLmFwcGVuZChzdWJyZXNvdXJjZUtleSk7
CiAgICAgICAgIG1fbG9hZEh5c3RlcmVzaXNBY3Rpdml0eS5pbXB1bHNlKCk7CiAgICAgfQogCi0g
ICAgT3B0aW9uYWw8U3RvcmFnZTo6UmVjb3JkPiBlbmNvZGVBc1N1YnJlc291cmNlc1JlY29yZCgp
CisgICAgdm9pZCBtYXJrTG9hZEFzQ29tcGxldGVkKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIGlmIChtX3N1YnJlc291cmNlS2V5cy5pc0VtcHR5
KCkpCi0gICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBpZiAobV9kaWRGaW5pc2hMb2Fk
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fZGlkRmluaXNoTG9hZCA9IHRydWU7
CisgICAgICAgIHNhdmVUb0Rpc2tJZlJlYWR5KCk7CisgICAgICAgIG1fbG9hZENvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgfQorCisgICAgdm9pZCBzZXRFeGlzdGluZ1N1YnJlc291cmNlc0VudHJ5
KHN0ZDo6dW5pcXVlX3B0cjxTdWJyZXNvdXJjZXNFbnRyeT4gZW50cnkpCisgICAgeworICAgICAg
ICBtX2V4aXN0aW5nRW50cnkgPSBXVEY6Om1vdmUoZW50cnkpOworICAgICAgICBtX2RpZFJldHJp
ZXZlRXhpc3RpbmdFbnRyeSA9IHRydWU7CisgICAgICAgIHNhdmVUb0Rpc2tJZlJlYWR5KCk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFBlbmRpbmdGcmFtZUxvYWQoU3RvcmFnZSYgc3RvcmFnZSwg
Y29uc3QgS2V5JiBtYWluUmVzb3VyY2VLZXksIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGxvYWRD
b21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgOiBtX3N0b3JhZ2Uoc3RvcmFnZSkKKyAgICAgICAg
LCBtX21haW5SZXNvdXJjZUtleShtYWluUmVzb3VyY2VLZXkpCisgICAgICAgICwgbV9sb2FkQ29t
cGxldGlvbkhhbmRsZXIoV1RGOjptb3ZlKGxvYWRDb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAg
ICwgbV9sb2FkSHlzdGVyZXNpc0FjdGl2aXR5KFt0aGlzXShIeXN0ZXJlc2lzU3RhdGUgc3RhdGUp
IHsgaWYgKHN0YXRlID09IEh5c3RlcmVzaXNTdGF0ZTo6U3RvcHBlZCkgbWFya0xvYWRBc0NvbXBs
ZXRlZCgpOyB9KQorICAgIHsgfQorCisgICAgdm9pZCBzYXZlVG9EaXNrSWZSZWFkeSgpCisgICAg
eworICAgICAgICBpZiAoIW1fZGlkRmluaXNoTG9hZCB8fCAhbV9kaWRSZXRyaWV2ZUV4aXN0aW5n
RW50cnkpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBzdWJyZXNvdXJjZXNT
dG9yYWdlS2V5ID0gbWFrZVN1YnJlc291cmNlc0tleShtX21haW5SZXNvdXJjZUtleSk7Ci0gICAg
ICAgIFZlY3RvcjxLZXk+IHN1YnJlc291cmNlS2V5czsKLSAgICAgICAgY29weVRvVmVjdG9yKG1f
c3VicmVzb3VyY2VLZXlzLCBzdWJyZXNvdXJjZUtleXMpOworICAgICAgICBpZiAobV9zdWJyZXNv
dXJjZUtleXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOwogCiAjaWYgIUxPR19ESVNB
QkxFRAogICAgICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5l
dHdvcmtQcm9jZXNzKSBTYXZpbmcgdG8gZGlzayBsaXN0IG9mIHN1YnJlc291cmNlcyBmb3IgJyVz
JzoiLCBtX21haW5SZXNvdXJjZUtleS5pZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAg
ICAgIGZvciAoYXV0byYgc3VicmVzb3VyY2VLZXkgOiBzdWJyZXNvdXJjZUtleXMpCisgICAgICAg
IGZvciAoYXV0byYgc3VicmVzb3VyY2VLZXkgOiBtX3N1YnJlc291cmNlS2V5cykKICAgICAgICAg
ICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nl
c3MpICogU3VicmVzb3VyY2U6ICclcycuIiwgc3VicmVzb3VyY2VLZXkuaWRlbnRpZmllcigpLnV0
ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAKLSAgICAgICAgcmV0dXJuIFN1YnJlc291cmNlc0VudHJ5
KFdURjo6bW92ZShzdWJyZXNvdXJjZXNTdG9yYWdlS2V5KSwgV1RGOjptb3ZlKHN1YnJlc291cmNl
S2V5cykpLmVuY29kZUFzU3RvcmFnZVJlY29yZCgpOwotICAgIH0KLQotICAgIHZvaWQgbWFya0Fz
Q29tcGxldGVkKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0g
ICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgaWYgKG1fZXhpc3RpbmdFbnRy
eSkgeworICAgICAgICAgICAgbV9leGlzdGluZ0VudHJ5LT51cGRhdGVTdWJyZXNvdXJjZUtleXMo
bV9zdWJyZXNvdXJjZUtleXMpOworICAgICAgICAgICAgbV9zdG9yYWdlLnN0b3JlKG1fZXhpc3Rp
bmdFbnRyeS0+ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCksIFtdKGNvbnN0IERhdGEmKSB7IH0pOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU3VicmVzb3VyY2VzRW50cnkgZW50cnkobWFr
ZVN1YnJlc291cmNlc0tleShtX21haW5SZXNvdXJjZUtleSksIG1fc3VicmVzb3VyY2VLZXlzKTsK
KyAgICAgICAgICAgIG1fc3RvcmFnZS5zdG9yZShlbnRyeS5lbmNvZGVBc1N0b3JhZ2VSZWNvcmQo
KSwgW10oY29uc3QgRGF0YSYpIHsgfSk7CisgICAgICAgIH0KICAgICB9CiAKLXByaXZhdGU6Cisg
ICAgU3RvcmFnZSYgbV9zdG9yYWdlOwogICAgIEtleSBtX21haW5SZXNvdXJjZUtleTsKLSAgICBI
YXNoU2V0PEtleT4gbV9zdWJyZXNvdXJjZUtleXM7Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+
IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAgVmVjdG9yPEtleT4gbV9zdWJyZXNvdXJjZUtleXM7
CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fbG9hZENvbXBsZXRpb25IYW5kbGVyOwogICAg
IEh5c3RlcmVzaXNBY3Rpdml0eSBtX2xvYWRIeXN0ZXJlc2lzQWN0aXZpdHk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFN1YnJlc291cmNlc0VudHJ5PiBtX2V4aXN0aW5nRW50cnk7CisgICAgYm9vbCBt
X2RpZEZpbmlzaExvYWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9kaWRSZXRyaWV2ZUV4aXN0aW5n
RW50cnkgeyBmYWxzZSB9OwogfTsKIAogU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6U3BlY3VsYXRp
dmVMb2FkTWFuYWdlcihTdG9yYWdlJiBzdG9yYWdlKQpAQCAtMjAwLDE2ICsyMzIsMjQgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZWdpc3RlckxvYWQoY29uc3QgR2xvYmFsRnJhbWVJ
RCYgZnJhbWVJRCwgY29uc3QgUmUKICAgICBpZiAoaXNNYWluUmVzb3VyY2UpIHsKICAgICAgICAg
Ly8gTWFyayBwcmV2aW91cyBsb2FkIGluIHRoaXMgZnJhbWUgYXMgY29tcGxldGVkIGlmIG5lY2Vz
c2FyeS4KICAgICAgICAgaWYgKGF1dG8qIHBlbmRpbmdGcmFtZUxvYWQgPSBtX3BlbmRpbmdGcmFt
ZUxvYWRzLmdldChmcmFtZUlEKSkKLSAgICAgICAgICAgIHBlbmRpbmdGcmFtZUxvYWQtPm1hcmtB
c0NvbXBsZXRlZCgpOworICAgICAgICAgICAgcGVuZGluZ0ZyYW1lTG9hZC0+bWFya0xvYWRBc0Nv
bXBsZXRlZCgpOworCisgICAgICAgIEFTU0VSVCghbV9wZW5kaW5nRnJhbWVMb2Fkcy5jb250YWlu
cyhmcmFtZUlEKSk7CiAKICAgICAgICAgLy8gU3RhcnQgdHJhY2tpbmcgbG9hZHMgaW4gdGhpcyBm
cmFtZS4KLSAgICAgICAgbV9wZW5kaW5nRnJhbWVMb2Fkcy5hZGQoZnJhbWVJRCwgc3RkOjptYWtl
X3VuaXF1ZTxQZW5kaW5nRnJhbWVMb2FkPihyZXNvdXJjZUtleSwgW3RoaXMsIGZyYW1lSURdKCkg
ewotICAgICAgICAgICAgYXV0byBmcmFtZUxvYWQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLnRha2Uo
ZnJhbWVJRCk7Ci0gICAgICAgICAgICBhdXRvIG9wdGlvbmFsUmVjb3JkID0gZnJhbWVMb2FkLT5l
bmNvZGVBc1N1YnJlc291cmNlc1JlY29yZCgpOwotICAgICAgICAgICAgaWYgKCFvcHRpb25hbFJl
Y29yZCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX3N0b3JhZ2Uuc3Rv
cmUob3B0aW9uYWxSZWNvcmQudmFsdWUoKSwgW10oY29uc3QgRGF0YSYpIHsgfSk7Ci0gICAgICAg
IH0pKTsKKyAgICAgICAgUmVmUHRyPFBlbmRpbmdGcmFtZUxvYWQ+IHBlbmRpbmdGcmFtZUxvYWQg
PSBQZW5kaW5nRnJhbWVMb2FkOjpjcmVhdGUobV9zdG9yYWdlLCByZXNvdXJjZUtleSwgW3RoaXMs
IGZyYW1lSURdIHsKKyAgICAgICAgICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG1fcGVuZGluZ0ZyYW1l
TG9hZHMucmVtb3ZlKGZyYW1lSUQpOworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh3YXNSZW1v
dmVkLCB3YXNSZW1vdmVkKTsKKyAgICAgICAgfSk7CisgICAgICAgIG1fcGVuZGluZ0ZyYW1lTG9h
ZHMuYWRkKGZyYW1lSUQsIHBlbmRpbmdGcmFtZUxvYWQpOworCisgICAgICAgIC8vIFJldHJpZXZl
IHRoZSBzdWJyZXNvdXJjZXMgZW50cnkgaWYgaXQgZXhpc3RzIHRvIHN0YXJ0IHNwZWN1bGF0aXZl
IHJldmFsaWRhdGlvbiBhbmQgdG8gdXBkYXRlIGl0LgorICAgICAgICByZXRyaWV2ZVN1YnJlc291
cmNlc0VudHJ5KHJlc291cmNlS2V5LCBbdGhpcywgZnJhbWVJRCwgcGVuZGluZ0ZyYW1lTG9hZF0o
c3RkOjp1bmlxdWVfcHRyPFN1YnJlc291cmNlc0VudHJ5PiBlbnRyeSkgeworICAgICAgICAgICAg
aWYgKGVudHJ5KQorICAgICAgICAgICAgICAgIHN0YXJ0U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24o
ZnJhbWVJRCwgKmVudHJ5KTsKKworICAgICAgICAgICAgcGVuZGluZ0ZyYW1lTG9hZC0+c2V0RXhp
c3RpbmdTdWJyZXNvdXJjZXNFbnRyeShXVEY6Om1vdmUoZW50cnkpKTsKKyAgICAgICAgfSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMwNiwyNCArMzQ2LDMzIEBAIHZvaWQgU3BlY3Vs
YXRpdmVMb2FkTWFuYWdlcjo6cHJlbG9hZEVudHJ5KGNvbnN0IEtleSYga2V5LCBjb25zdCBHbG9i
YWxGcmFtZUlEJiBmCiAgICAgfSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6
c3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgY29uc3QgS2V5JiBzdG9y
YWdlS2V5KQordm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2
YWxpZGF0aW9uKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIFN1YnJlc291cmNlc0VudHJ5
JiBlbnRyeSkKIHsKLSAgICBpZiAob3JpZ2luYWxSZXF1ZXN0LnJlcXVlc3RlcigpICE9IFJlc291
cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNYWluKQotICAgICAgICByZXR1cm47CisgICAgZm9yIChh
dXRvJiBzdWJyZXNvdXJjZSA6IGVudHJ5LnN1YnJlc291cmNlcygpKSB7CisgICAgICAgIGlmICgh
c3VicmVzb3VyY2UudmFsdWUuaXNUcmFuc2llbnQpCisgICAgICAgICAgICBwcmVsb2FkRW50cnko
c3VicmVzb3VyY2Uua2V5LCBmcmFtZUlEKTsKKyAgICAgICAgLy9lbHNlCisgICAgICAgIC8vICAg
IFdURkxvZ0Fsd2F5cygiQ0hSSVM6IE5vdCBsb2FkaW5nICVzIGJlY2F1c2UgaXQgaXMgdHJhbnNp
ZW50ISEhXG4iLCBzdWJyZXNvdXJjZS5rZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIH0KK30KIAordm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXRyaWV2ZVN1YnJlc291
cmNlc0VudHJ5KGNvbnN0IEtleSYgc3RvcmFnZUtleSwgc3RkOjpmdW5jdGlvbjx2b2lkIChzdGQ6
OnVuaXF1ZV9wdHI8U3VicmVzb3VyY2VzRW50cnk+KT4gY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgQVNTRVJUKHN0b3JhZ2VLZXkudHlwZSgpID09ICJyZXNvdXJjZSIpOwogICAgIGF1dG8gc3Vi
cmVzb3VyY2VzU3RvcmFnZUtleSA9IG1ha2VTdWJyZXNvdXJjZXNLZXkoc3RvcmFnZUtleSk7Ci0K
LSAgICBtX3N0b3JhZ2UucmV0cmlldmUoc3VicmVzb3VyY2VzU3RvcmFnZUtleSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFJlc291cmNlTG9hZFByaW9yaXR5OjpNZWRpdW0pLCBbdGhpcywgZnJhbWVJ
RF0oc3RkOjp1bmlxdWVfcHRyPFN0b3JhZ2U6OlJlY29yZD4gcmVjb3JkKSB7Ci0gICAgICAgIGlm
ICghcmVjb3JkKQorICAgIG1fc3RvcmFnZS5yZXRyaWV2ZShzdWJyZXNvdXJjZXNTdG9yYWdlS2V5
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVzb3VyY2VMb2FkUHJpb3JpdHk6Ok1lZGl1bSksIFtj
b21wbGV0aW9uSGFuZGxlcl0oc3RkOjp1bmlxdWVfcHRyPFN0b3JhZ2U6OlJlY29yZD4gcmVjb3Jk
KSB7CisgICAgICAgIGlmICghcmVjb3JkKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogCiAgICAg
ICAgIGF1dG8gc3VicmVzb3VyY2VzRW50cnkgPSBTdWJyZXNvdXJjZXNFbnRyeTo6ZGVjb2RlU3Rv
cmFnZVJlY29yZCgqcmVjb3JkKTsKLSAgICAgICAgaWYgKCFzdWJyZXNvdXJjZXNFbnRyeSkKKyAg
ICAgICAgaWYgKCFzdWJyZXNvdXJjZXNFbnRyeSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KIAot
ICAgICAgICBmb3IgKGF1dG8mIHN1YnJlc291cmNlS2V5IDogc3VicmVzb3VyY2VzRW50cnktPnN1
YnJlc291cmNlS2V5cygpKQotICAgICAgICAgICAgcHJlbG9hZEVudHJ5KHN1YnJlc291cmNlS2V5
LCBmcmFtZUlEKTsKLQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om1vdmUoc3VicmVz
b3VyY2VzRW50cnkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmgKaW5kZXggMzY0YzU4Yy4uMjFj
ZTVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaApA
QCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAogY2xhc3MgRW50cnk7
CiBjbGFzcyBTcGVjdWxhdGl2ZUxvYWQ7CitjbGFzcyBTdWJyZXNvdXJjZXNFbnRyeTsKIAogY2xh
c3MgU3BlY3VsYXRpdmVMb2FkTWFuYWdlciB7CiBwdWJsaWM6CkBAIC01MSwxOSArNTIsMTkgQEAg
cHVibGljOgogICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkIChzdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+KT4gUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlcjsKICAgICBib29sIHJldHJpZXZlKGNv
bnN0IEtleSYgc3RvcmFnZUtleSwgY29uc3QgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYpOwog
Ci0gICAgdm9pZCBzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBjb25zdCBLZXkmIHN0b3JhZ2VL
ZXkpOwotCiBwcml2YXRlOgogICAgIHZvaWQgYWRkUHJlbG9hZGVkRW50cnkoc3RkOjp1bmlxdWVf
cHRyPEVudHJ5Pik7CiAgICAgdm9pZCBwcmVsb2FkRW50cnkoY29uc3QgS2V5JiwgY29uc3QgR2xv
YmFsRnJhbWVJRCYpOwogICAgIHZvaWQgcmV0cmlldmVFbnRyeUZyb21TdG9yYWdlKGNvbnN0IEtl
eSYsIGNvbnN0IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImKTsKICAgICB2b2lkIHJldmFsaWRh
dGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25zdCBHbG9iYWxGcmFtZUlEJik7CiAg
ICAgYm9vbCBzYXRpc2Z5UGVuZGluZ1JlcXVlc3RzKGNvbnN0IEtleSYsIEVudHJ5Kik7CisgICAg
dm9pZCByZXRyaWV2ZVN1YnJlc291cmNlc0VudHJ5KGNvbnN0IEtleSYgc3RvcmFnZUtleSwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChzdGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3VyY2VzRW50cnk+KT4pOwor
ICAgIHZvaWQgc3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbihjb25zdCBHbG9iYWxGcmFtZUlE
JiwgU3VicmVzb3VyY2VzRW50cnkmKTsKIAogICAgIFN0b3JhZ2UmIG1fc3RvcmFnZTsKIAogICAg
IGNsYXNzIFBlbmRpbmdGcmFtZUxvYWQ7Ci0gICAgSGFzaE1hcDxHbG9iYWxGcmFtZUlELCBzdGQ6
OnVuaXF1ZV9wdHI8UGVuZGluZ0ZyYW1lTG9hZD4+IG1fcGVuZGluZ0ZyYW1lTG9hZHM7CisgICAg
SGFzaE1hcDxHbG9iYWxGcmFtZUlELCBSZWZQdHI8UGVuZGluZ0ZyYW1lTG9hZD4+IG1fcGVuZGlu
Z0ZyYW1lTG9hZHM7CiAKICAgICBIYXNoTWFwPEtleSwgc3RkOjp1bmlxdWVfcHRyPFNwZWN1bGF0
aXZlTG9hZD4+IG1fcGVuZGluZ1ByZWxvYWRzOwogICAgIEhhc2hNYXA8S2V5LCBzdGQ6OnVuaXF1
ZV9wdHI8VmVjdG9yPFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI+Pj4gbV9wZW5kaW5nUmV0cmll
dmVSZXF1ZXN0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcAppbmRl
eCA2Y2IxMWQwLi4yZWI3ZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50
cnkuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogU3RvcmFn
ZTo6UmVjb3JkIFN1YnJlc291cmNlc0VudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25z
dAogewogICAgIEVuY29kZXIgZW5jb2RlcjsKLSAgICBlbmNvZGVyIDw8IG1fc3VicmVzb3VyY2VL
ZXlzOworICAgIGVuY29kZXIgPDwgbV9zdWJyZXNvdXJjZXM7CiAKICAgICBlbmNvZGVyLmVuY29k
ZUNoZWNrc3VtKCk7CiAKQEAgLTUxLDcgKzUxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFN1YnJlc291
cmNlc0VudHJ5PiBTdWJyZXNvdXJjZXNFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZChjb25zdAog
ICAgIGF1dG8gZW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1YnJlc291cmNlc0VudHJ5PihzdG9y
YWdlRW50cnkpOwogCiAgICAgRGVjb2RlciBkZWNvZGVyKHN0b3JhZ2VFbnRyeS5oZWFkZXIuZGF0
YSgpLCBzdG9yYWdlRW50cnkuaGVhZGVyLnNpemUoKSk7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShlbnRyeS0+bV9zdWJyZXNvdXJjZUtleXMpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZW50
cnktPm1fc3VicmVzb3VyY2VzKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAo
IWRlY29kZXIudmVyaWZ5Q2hlY2tzdW0oKSkgewpAQCAtNjksMTIgKzY5LDI0IEBAIFN1YnJlc291
cmNlc0VudHJ5OjpTdWJyZXNvdXJjZXNFbnRyeShjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3Jh
Z2VFbnRyeSkKICAgICBBU1NFUlQobV9rZXkudHlwZSgpID09ICJzdWJyZXNvdXJjZXMiKTsKIH0K
IAotU3VicmVzb3VyY2VzRW50cnk6OlN1YnJlc291cmNlc0VudHJ5KEtleSYmIGtleSwgVmVjdG9y
PEtleT4mJiBzdWJyZXNvdXJjZUtleXMpCitTdWJyZXNvdXJjZXNFbnRyeTo6U3VicmVzb3VyY2Vz
RW50cnkoS2V5JiYga2V5LCBjb25zdCBWZWN0b3I8S2V5PiYgc3VicmVzb3VyY2VLZXlzKQogICAg
IDogbV9rZXkoV1RGOjptb3ZlKGtleSkpCiAgICAgLCBtX3RpbWVTdGFtcChzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjpub3coKSkKLSAgICAsIG1fc3VicmVzb3VyY2VLZXlzKFdURjo6bW92ZShz
dWJyZXNvdXJjZUtleXMpKQogewogICAgIEFTU0VSVChtX2tleS50eXBlKCkgPT0gInN1YnJlc291
cmNlcyIpOworICAgIGZvciAoYXV0byYga2V5IDogc3VicmVzb3VyY2VLZXlzKQorICAgICAgICBt
X3N1YnJlc291cmNlcy5hZGQoa2V5LCBTdWJyZXNvdXJjZUluZm8oKSk7Cit9CisKK3ZvaWQgU3Vi
cmVzb3VyY2VzRW50cnk6OnVwZGF0ZVN1YnJlc291cmNlS2V5cyhjb25zdCBWZWN0b3I8S2V5PiYg
c3VicmVzb3VyY2VLZXlzKQoreworICAgIGF1dG8gb2xkU3VicmVzb3VyY2VzID0gV1RGOjptb3Zl
KG1fc3VicmVzb3VyY2VzKTsKKworICAgIC8vIE1hcmsga2V5cyB0aGF0IGFyZSBjb21tb24gd2l0
aCBsYXN0IGxvYWQgYXMgbm9uLVRyYW5zaWVudC4KKyAgICBmb3IgKGF1dG8mIGtleSA6IHN1YnJl
c291cmNlS2V5cykgeworICAgICAgICBib29sIGlzVHJhbnNpZW50ID0gIW9sZFN1YnJlc291cmNl
cy5jb250YWlucyhrZXkpOworICAgICAgICBtX3N1YnJlc291cmNlcy5hZGQoa2V5LCBTdWJyZXNv
dXJjZUluZm8oaXNUcmFuc2llbnQpKTsKKyAgICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmgKaW5kZXggOTczZjJhNC4uZDEy
MjgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oCkBAIC0yOCw3ICsy
OCwxMCBAQAogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFU
SU9OKQogCisjaW5jbHVkZSAiTmV0d29ya0NhY2hlRGVjb2Rlci5oIgorI2luY2x1ZGUgIk5ldHdv
cmtDYWNoZUVuY29kZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdG9yYWdlLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBuYW1lc3BhY2UgTmV0
d29ya0NhY2hlIHsKQEAgLTM2LDcgKzM5LDE2IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewog
Y2xhc3MgU3VicmVzb3VyY2VzRW50cnkgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN1YnJl
c291cmNlc0VudHJ5KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU3Vi
cmVzb3VyY2VzRW50cnkoS2V5JiYsIFZlY3RvcjxLZXk+JiYgc3VicmVzb3VyY2VLZXlzKTsKKyAg
ICBzdHJ1Y3QgU3VicmVzb3VyY2VJbmZvIHsKKyAgICAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QgeyBlbmNvZGVyIDw8IGlzVHJhbnNpZW50OyB9CisgICAgICAgIHN0YXRp
YyBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTdWJyZXNvdXJjZUluZm8mIGluZm8pIHsg
cmV0dXJuIGRlY29kZXIuZGVjb2RlKGluZm8uaXNUcmFuc2llbnQpOyB9CisKKyAgICAgICAgU3Vi
cmVzb3VyY2VJbmZvKCkgPSBkZWZhdWx0OworICAgICAgICBTdWJyZXNvdXJjZUluZm8oYm9vbCBp
c1RyYW5zaWVudCkgOiBpc1RyYW5zaWVudChpc1RyYW5zaWVudCkgeyB9CisKKyAgICAgICAgYm9v
bCBpc1RyYW5zaWVudCB7IGZhbHNlIH07CisgICAgfTsKKyAgICBTdWJyZXNvdXJjZXNFbnRyeShL
ZXkmJiwgY29uc3QgVmVjdG9yPEtleT4mIHN1YnJlc291cmNlS2V5cyk7CiAgICAgZXhwbGljaXQg
U3VicmVzb3VyY2VzRW50cnkoY29uc3QgU3RvcmFnZTo6UmVjb3JkJik7CiAKICAgICBTdG9yYWdl
OjpSZWNvcmQgZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3Q7CkBAIC00NCwxMiArNTYsMTQg
QEAgcHVibGljOgogCiAgICAgY29uc3QgS2V5JiBrZXkoKSBjb25zdCB7IHJldHVybiBtX2tleTsg
fQogICAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZVN0YW1wKCkg
Y29uc3QgeyByZXR1cm4gbV90aW1lU3RhbXA7IH0KLSAgICBjb25zdCBWZWN0b3I8S2V5PiYgc3Vi
cmVzb3VyY2VLZXlzKCkgY29uc3QgeyByZXR1cm4gbV9zdWJyZXNvdXJjZUtleXM7IH0KKyAgICBj
b25zdCBIYXNoTWFwPEtleSwgU3VicmVzb3VyY2VJbmZvPiYgc3VicmVzb3VyY2VzKCkgY29uc3Qg
eyByZXR1cm4gbV9zdWJyZXNvdXJjZXM7IH0KKworICAgIHZvaWQgdXBkYXRlU3VicmVzb3VyY2VL
ZXlzKGNvbnN0IFZlY3RvcjxLZXk+Jik7CiAKIHByaXZhdGU6CiAgICAgS2V5IG1fa2V5OwogICAg
IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbV90aW1lU3RhbXA7Ci0gICAg
VmVjdG9yPEtleT4gbV9zdWJyZXNvdXJjZUtleXM7CisgICAgSGFzaE1hcDxLZXksIFN1YnJlc291
cmNlSW5mbz4gbV9zdWJyZXNvdXJjZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW0KaW5kZXggZmQxMDgzZi4uMzhjNzBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTExMCw3ICsxMTAs
NyBAQCBzdGF0aWMgdm9pZCByZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKCkKICAgICBbcmVn
aXN0cmF0aW9uRGljdGlvbmFyeSBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOllF
U10gZm9yS2V5OldlYktpdE5ldHdvcmtDYWNoZUVuYWJsZWREZWZhdWx0c0tleV07CiAgICAgW3Jl
Z2lzdHJhdGlvbkRpY3Rpb25hcnkgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoQm9vbDpO
T10gZm9yS2V5OldlYktpdE5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZ0VuYWJsZWREZWZhdWx0
c0tleV07CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9O
KQotICAgIFtyZWdpc3RyYXRpb25EaWN0aW9uYXJ5IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVy
V2l0aEJvb2w6Tk9dIGZvcktleTpXZWJLaXROZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRh
dGlvbkVuYWJsZWREZWZhdWx0c0tleV07CisgICAgW3JlZ2lzdHJhdGlvbkRpY3Rpb25hcnkgc2V0
T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdIGZvcktleTpXZWJLaXROZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbkVuYWJsZWREZWZhdWx0c0tleV07CiAjZW5kaWYK
ICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265918</attachid>
            <date>2015-11-19 16:39:43 -0800</date>
            <delta_ts>2015-11-20 14:28:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>speculativeLoad_better_prediction.patch</filename>
            <type>text/plain</type>
            <size>18201</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5Mjg2NjVmLi4yYWRiZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkg
QEAKKzIwMTUtMTEtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBbV0syXVtDYWNoZV0gV2Ugc2hvdWxkIG5vdCBzcGVjdWxhdGl2ZWx5IHJldmFsaWRhdGUgdHJh
bnNpZW50IHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUxNDAyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMzA5MjE5Nj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBzaG91bGQgbm90
IHNwZWN1bGF0aXZlbHkgcmV2YWxpZGF0ZSB0cmFuc2llbnQgcmVzb3VyY2VzLiBUaGlzIHBhdGNo
CisgICAgICAgIGFkZHMgYSBzaW1wbGUgYW5kIGNvbnNlcnZhdGl2ZSBhbGdvcml0aG0gdG8gZGV0
ZWN0IHRoYXQgYSBzdWJyZXNvdXJjZSBpcworICAgICAgICB0cmFuc2llbnQgYW5kIHRoZW4gaWdu
b3JlcyB0aG9zZSB3aGVuIGRvaW5nIHRoZSBzcGVjdWxhdGl2ZSByZXZhbGlkYXRpb24uCisKKyAg
ICAgICAgVGhlIGFsZ29yaXRobSBpcyBxdWVzdGlvbiBtYXJrcyBhcyB0cmFuc2llbnQgYWxsIHN1
YnJlc291cmNlcyB0aGF0IGFyZQorICAgICAgICBub3QgY29tbW9uIHRvIHRoZSAyIGxhc3QgbG9h
ZHMgb2YgYSBtYWluIHJlc291cmNlLgorCisgICAgICAgIFRoaXMgaXMgbm90IHBlcmZlY3QgYXMg
SSBzZWUgdGhlIG51bWJlciBvZiBub24tc3BlY3VsYXRpdmUgcmV2YWxpZGF0aW9ucworICAgICAg
ICBnb2luZyB1cCB0byAxMS0xMiBmcm9tIDkgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHdhcm0gUExU
LiBIb3dldmVyLCBpdCBpcworICAgICAgICBiZXN0IHRvIGJlIGNvbnNlcnZhdGl2ZSBhdCBmaXJz
dCBhbmQgd2UgY2FuIGltcHJvdmUgdGhpcyBsYXRlci4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6Q2FjaGU6OnJldHJpZXZlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkOjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXI6OlBlbmRpbmdGcmFtZUxvYWQ6On5QZW5kaW5nRnJhbWVMb2FkKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2Fk
OjpyZWdpc3RlclN1YnJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpT
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkOjptYXJrTG9hZEFzQ29tcGxl
dGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyOjpQZW5kaW5nRnJhbWVMb2FkOjpzZXRFeGlzdGluZ1N1YnJlc291cmNlc0VudHJ5KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5k
aW5nRnJhbWVMb2FkOjpQZW5kaW5nRnJhbWVMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkOjpzYXZlVG9E
aXNrSWZSZWFkeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkTWFuYWdlcjo6cmVnaXN0ZXJMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpy
ZXRyaWV2ZVN1YnJlc291cmNlc0VudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXRyaWV2ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV2YWxpZGF0ZUVu
dHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlc0VudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlc0VudHJ5OjpkZWNvZGVT
dG9yYWdlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdWJyZXNvdXJj
ZXNFbnRyeTo6U3VicmVzb3VyY2VzRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OlN1YnJlc291cmNlc0VudHJ5Ojp1cGRhdGVTdWJyZXNvdXJjZUtleXMpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVzb3VyY2VzRW50cnk6OlN1YnJlc291
cmNlSW5mbzo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdWJyZXNv
dXJjZXNFbnRyeTo6U3VicmVzb3VyY2VJbmZvOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlc0VudHJ5OjpTdWJyZXNvdXJjZUluZm86OlN1YnJlc291
cmNlSW5mbyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVzb3VyY2VzRW50
cnk6OnN1YnJlc291cmNlcyk6CisKIDIwMTUtMTEtMTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQcm9ncmVzcyB0b3dhcmRzIGltcGxlbWVu
dGluZyBEb3dubG9hZHMgd2l0aCBORVRXT1JLX1NFU1NJT04KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDU1NWNkNTUu
LjE3NGI2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlLmNwcApAQCAtMzU2LDEyICszNTYsOCBAQCB2b2lkIENhY2hlOjpyZXRy
aWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29u
c3QgR2xvYgogICAgIEtleSBzdG9yYWdlS2V5ID0gbWFrZUNhY2hlS2V5KG9yaWdpbmFsUmVxdWVz
dCk7CiAKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04p
Ci0gICAgaWYgKG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlcikgeworICAgIGlmIChtX3NwZWN1bGF0
aXZlTG9hZE1hbmFnZXIpCiAgICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlci0+cmVnaXN0
ZXJMb2FkKGZyYW1lSUQsIG9yaWdpbmFsUmVxdWVzdCwgc3RvcmFnZUtleSk7Ci0gICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgb3JpZ2luYWxSZXF1ZXN0LCBmcmFtZUlELCBz
dG9yYWdlS2V5XSB7Ci0gICAgICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXItPnN0YXJ0
U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24ob3JpZ2luYWxSZXF1ZXN0LCBmcmFtZUlELCBzdG9yYWdl
S2V5KTsKLSAgICAgICAgfSk7Ci0gICAgfQogI2VuZGlmCiAKICAgICBhdXRvIHJldHJpZXZlRGVj
aXNpb24gPSBtYWtlUmV0cmlldmVEZWNpc2lvbihvcmlnaW5hbFJlcXVlc3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAppbmRleCAwNDEyYmE2Li40
OWFkOGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN1YnJlc291cmNl
c0VudHJ5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9IeXN0ZXJlc2lzQWN0aXZpdHkuaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTA5LDUy
ICsxMTAsODMgQEAgcHJpdmF0ZToKICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9saWZldGlt
ZVJlYWNoZWRIYW5kbGVyOwogfTsKIAotY2xhc3MgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UGVu
ZGluZ0ZyYW1lTG9hZCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitjbGFzcyBTcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkIDogcHVibGljIFJlZkNvdW50ZWQ8
UGVuZGluZ0ZyYW1lTG9hZD4gewogcHVibGljOgotICAgIFBlbmRpbmdGcmFtZUxvYWQoY29uc3Qg
S2V5JiBtYWluUmVzb3VyY2VLZXksIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQotICAgICAgICA6IG1fbWFpblJlc291cmNlS2V5KG1haW5SZXNvdXJjZUtleSkKLSAg
ICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURjo6bW92ZShjb21wbGV0aW9uSGFuZGxlcikp
Ci0gICAgICAgICwgbV9sb2FkSHlzdGVyZXNpc0FjdGl2aXR5KFt0aGlzXShIeXN0ZXJlc2lzU3Rh
dGUgc3RhdGUpIHsgaWYgKHN0YXRlID09IEh5c3RlcmVzaXNTdGF0ZTo6U3RvcHBlZCkgbV9jb21w
bGV0aW9uSGFuZGxlcigpOyB9KQotICAgIHsgfQorICAgIHN0YXRpYyBSZWY8UGVuZGluZ0ZyYW1l
TG9hZD4gY3JlYXRlKFN0b3JhZ2UmIHN0b3JhZ2UsIGNvbnN0IEtleSYgbWFpblJlc291cmNlS2V5
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBsb2FkQ29tcGxldGlvbkhhbmRsZXIpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQZW5kaW5nRnJhbWVMb2FkKHN0b3JhZ2UsIG1h
aW5SZXNvdXJjZUtleSwgV1RGOjptb3ZlKGxvYWRDb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICB9
CisKKyAgICB+UGVuZGluZ0ZyYW1lTG9hZCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9kaWRG
aW5pc2hMb2FkKTsKKyAgICAgICAgQVNTRVJUKG1fZGlkUmV0cmlldmVFeGlzdGluZ0VudHJ5KTsK
KyAgICB9CiAKICAgICB2b2lkIHJlZ2lzdGVyU3VicmVzb3VyY2UoY29uc3QgS2V5JiBzdWJyZXNv
dXJjZUtleSkKICAgICB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAg
ICAgIG1fc3VicmVzb3VyY2VLZXlzLmFkZChzdWJyZXNvdXJjZUtleSk7CisgICAgICAgIG1fc3Vi
cmVzb3VyY2VLZXlzLmFwcGVuZChzdWJyZXNvdXJjZUtleSk7CiAgICAgICAgIG1fbG9hZEh5c3Rl
cmVzaXNBY3Rpdml0eS5pbXB1bHNlKCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8U3RvcmFnZTo6
UmVjb3JkPiBlbmNvZGVBc1N1YnJlc291cmNlc1JlY29yZCgpCisgICAgdm9pZCBtYXJrTG9hZEFz
Q29tcGxldGVkKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0g
ICAgICAgIGlmIChtX3N1YnJlc291cmNlS2V5cy5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1
cm4geyB9OworICAgICAgICBpZiAobV9kaWRGaW5pc2hMb2FkKQorICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGF1dG8gc3VicmVzb3VyY2VzU3RvcmFnZUtleSA9IG1ha2VTdWJyZXNvdXJj
ZXNLZXkobV9tYWluUmVzb3VyY2VLZXkpOwotICAgICAgICBWZWN0b3I8S2V5PiBzdWJyZXNvdXJj
ZUtleXM7Ci0gICAgICAgIGNvcHlUb1ZlY3RvcihtX3N1YnJlc291cmNlS2V5cywgc3VicmVzb3Vy
Y2VLZXlzKTsKKyAgICAgICAgbV9kaWRGaW5pc2hMb2FkID0gdHJ1ZTsKKyAgICAgICAgc2F2ZVRv
RGlza0lmUmVhZHkoKTsKKyAgICAgICAgbV9sb2FkQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9
CisKKyAgICB2b2lkIHNldEV4aXN0aW5nU3VicmVzb3VyY2VzRW50cnkoc3RkOjp1bmlxdWVfcHRy
PFN1YnJlc291cmNlc0VudHJ5PiBlbnRyeSkKKyAgICB7CisgICAgICAgIG1fZXhpc3RpbmdFbnRy
eSA9IFdURjo6bW92ZShlbnRyeSk7CisgICAgICAgIG1fZGlkUmV0cmlldmVFeGlzdGluZ0VudHJ5
ID0gdHJ1ZTsKKyAgICAgICAgc2F2ZVRvRGlza0lmUmVhZHkoKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgUGVuZGluZ0ZyYW1lTG9hZChTdG9yYWdlJiBzdG9yYWdlLCBjb25zdCBLZXkmIG1haW5S
ZXNvdXJjZUtleSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgbG9hZENvbXBsZXRpb25IYW5kbGVy
KQorICAgICAgICA6IG1fc3RvcmFnZShzdG9yYWdlKQorICAgICAgICAsIG1fbWFpblJlc291cmNl
S2V5KG1haW5SZXNvdXJjZUtleSkKKyAgICAgICAgLCBtX2xvYWRDb21wbGV0aW9uSGFuZGxlcihX
VEY6Om1vdmUobG9hZENvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgLCBtX2xvYWRIeXN0ZXJl
c2lzQWN0aXZpdHkoW3RoaXNdKEh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBpZiAoc3RhdGUgPT0g
SHlzdGVyZXNpc1N0YXRlOjpTdG9wcGVkKSBtYXJrTG9hZEFzQ29tcGxldGVkKCk7IH0pCisgICAg
eyB9CisKKyAgICB2b2lkIHNhdmVUb0Rpc2tJZlJlYWR5KCkKKyAgICB7CisgICAgICAgIGlmICgh
bV9kaWRGaW5pc2hMb2FkIHx8ICFtX2RpZFJldHJpZXZlRXhpc3RpbmdFbnRyeSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBpZiAobV9zdWJyZXNvdXJjZUtleXMuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgcmV0dXJuOwogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgICAgICBMT0coTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBTYXZpbmcg
dG8gZGlzayBsaXN0IG9mIHN1YnJlc291cmNlcyBmb3IgJyVzJzoiLCBtX21haW5SZXNvdXJjZUtl
eS5pZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIGZvciAoYXV0byYgc3VicmVz
b3VyY2VLZXkgOiBzdWJyZXNvdXJjZUtleXMpCisgICAgICAgIGZvciAoYXV0byYgc3VicmVzb3Vy
Y2VLZXkgOiBtX3N1YnJlc291cmNlS2V5cykKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpICogU3VicmVzb3VyY2U6ICcl
cycuIiwgc3VicmVzb3VyY2VLZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlm
CiAKLSAgICAgICAgcmV0dXJuIFN1YnJlc291cmNlc0VudHJ5KFdURjo6bW92ZShzdWJyZXNvdXJj
ZXNTdG9yYWdlS2V5KSwgV1RGOjptb3ZlKHN1YnJlc291cmNlS2V5cykpLmVuY29kZUFzU3RvcmFn
ZVJlY29yZCgpOwotICAgIH0KLQotICAgIHZvaWQgbWFya0FzQ29tcGxldGVkKCkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIG1fY29tcGxldGlvbkhh
bmRsZXIoKTsKKyAgICAgICAgaWYgKG1fZXhpc3RpbmdFbnRyeSkgeworICAgICAgICAgICAgbV9l
eGlzdGluZ0VudHJ5LT51cGRhdGVTdWJyZXNvdXJjZUtleXMobV9zdWJyZXNvdXJjZUtleXMpOwor
ICAgICAgICAgICAgbV9zdG9yYWdlLnN0b3JlKG1fZXhpc3RpbmdFbnRyeS0+ZW5jb2RlQXNTdG9y
YWdlUmVjb3JkKCksIFtdKGNvbnN0IERhdGEmKSB7IH0pOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgU3VicmVzb3VyY2VzRW50cnkgZW50cnkobWFrZVN1YnJlc291cmNlc0tleShtX21h
aW5SZXNvdXJjZUtleSksIG1fc3VicmVzb3VyY2VLZXlzKTsKKyAgICAgICAgICAgIG1fc3RvcmFn
ZS5zdG9yZShlbnRyeS5lbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSwgW10oY29uc3QgRGF0YSYpIHsg
fSk7CisgICAgICAgIH0KICAgICB9CiAKLXByaXZhdGU6CisgICAgU3RvcmFnZSYgbV9zdG9yYWdl
OwogICAgIEtleSBtX21haW5SZXNvdXJjZUtleTsKLSAgICBIYXNoU2V0PEtleT4gbV9zdWJyZXNv
dXJjZUtleXM7Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fY29tcGxldGlvbkhhbmRsZXI7
CisgICAgVmVjdG9yPEtleT4gbV9zdWJyZXNvdXJjZUtleXM7CisgICAgc3RkOjpmdW5jdGlvbjx2
b2lkKCk+IG1fbG9hZENvbXBsZXRpb25IYW5kbGVyOwogICAgIEh5c3RlcmVzaXNBY3Rpdml0eSBt
X2xvYWRIeXN0ZXJlc2lzQWN0aXZpdHk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN1YnJlc291cmNl
c0VudHJ5PiBtX2V4aXN0aW5nRW50cnk7CisgICAgYm9vbCBtX2RpZEZpbmlzaExvYWQgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9kaWRSZXRyaWV2ZUV4aXN0aW5nRW50cnkgeyBmYWxzZSB9OwogfTsK
IAogU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcihTdG9yYWdl
JiBzdG9yYWdlKQpAQCAtMjAwLDE2ICsyMzIsMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyOjpyZWdpc3RlckxvYWQoY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgY29uc3QgUmUK
ICAgICBpZiAoaXNNYWluUmVzb3VyY2UpIHsKICAgICAgICAgLy8gTWFyayBwcmV2aW91cyBsb2Fk
IGluIHRoaXMgZnJhbWUgYXMgY29tcGxldGVkIGlmIG5lY2Vzc2FyeS4KICAgICAgICAgaWYgKGF1
dG8qIHBlbmRpbmdGcmFtZUxvYWQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLmdldChmcmFtZUlEKSkK
LSAgICAgICAgICAgIHBlbmRpbmdGcmFtZUxvYWQtPm1hcmtBc0NvbXBsZXRlZCgpOworICAgICAg
ICAgICAgcGVuZGluZ0ZyYW1lTG9hZC0+bWFya0xvYWRBc0NvbXBsZXRlZCgpOworCisgICAgICAg
IEFTU0VSVCghbV9wZW5kaW5nRnJhbWVMb2Fkcy5jb250YWlucyhmcmFtZUlEKSk7CiAKICAgICAg
ICAgLy8gU3RhcnQgdHJhY2tpbmcgbG9hZHMgaW4gdGhpcyBmcmFtZS4KLSAgICAgICAgbV9wZW5k
aW5nRnJhbWVMb2Fkcy5hZGQoZnJhbWVJRCwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRnJhbWVM
b2FkPihyZXNvdXJjZUtleSwgW3RoaXMsIGZyYW1lSURdKCkgewotICAgICAgICAgICAgYXV0byBm
cmFtZUxvYWQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLnRha2UoZnJhbWVJRCk7Ci0gICAgICAgICAg
ICBhdXRvIG9wdGlvbmFsUmVjb3JkID0gZnJhbWVMb2FkLT5lbmNvZGVBc1N1YnJlc291cmNlc1Jl
Y29yZCgpOwotICAgICAgICAgICAgaWYgKCFvcHRpb25hbFJlY29yZCkKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICBtX3N0b3JhZ2Uuc3RvcmUob3B0aW9uYWxSZWNvcmQudmFs
dWUoKSwgW10oY29uc3QgRGF0YSYpIHsgfSk7Ci0gICAgICAgIH0pKTsKKyAgICAgICAgUmVmUHRy
PFBlbmRpbmdGcmFtZUxvYWQ+IHBlbmRpbmdGcmFtZUxvYWQgPSBQZW5kaW5nRnJhbWVMb2FkOjpj
cmVhdGUobV9zdG9yYWdlLCByZXNvdXJjZUtleSwgW3RoaXMsIGZyYW1lSURdIHsKKyAgICAgICAg
ICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG1fcGVuZGluZ0ZyYW1lTG9hZHMucmVtb3ZlKGZyYW1lSUQp
OworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh3YXNSZW1vdmVkLCB3YXNSZW1vdmVkKTsKKyAg
ICAgICAgfSk7CisgICAgICAgIG1fcGVuZGluZ0ZyYW1lTG9hZHMuYWRkKGZyYW1lSUQsIHBlbmRp
bmdGcmFtZUxvYWQpOworCisgICAgICAgIC8vIFJldHJpZXZlIHRoZSBzdWJyZXNvdXJjZXMgZW50
cnkgaWYgaXQgZXhpc3RzIHRvIHN0YXJ0IHNwZWN1bGF0aXZlIHJldmFsaWRhdGlvbiBhbmQgdG8g
dXBkYXRlIGl0LgorICAgICAgICByZXRyaWV2ZVN1YnJlc291cmNlc0VudHJ5KHJlc291cmNlS2V5
LCBbdGhpcywgZnJhbWVJRCwgcGVuZGluZ0ZyYW1lTG9hZF0oc3RkOjp1bmlxdWVfcHRyPFN1YnJl
c291cmNlc0VudHJ5PiBlbnRyeSkgeworICAgICAgICAgICAgaWYgKGVudHJ5KQorICAgICAgICAg
ICAgICAgIHN0YXJ0U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24oZnJhbWVJRCwgKmVudHJ5KTsKKwor
ICAgICAgICAgICAgcGVuZGluZ0ZyYW1lTG9hZC0+c2V0RXhpc3RpbmdTdWJyZXNvdXJjZXNFbnRy
eShXVEY6Om1vdmUoZW50cnkpKTsKKyAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTMwNiwyNCArMzQ2LDMzIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cHJl
bG9hZEVudHJ5KGNvbnN0IEtleSYga2V5LCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmCiAgICAgfSk7
CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6c3RhcnRTcGVjdWxhdGl2ZVJldmFs
aWRhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29uc3QgR2xv
YmFsRnJhbWVJRCYgZnJhbWVJRCwgY29uc3QgS2V5JiBzdG9yYWdlS2V5KQordm9pZCBTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKGNvbnN0IEdsb2Jh
bEZyYW1lSUQmIGZyYW1lSUQsIFN1YnJlc291cmNlc0VudHJ5JiBlbnRyeSkKIHsKLSAgICBpZiAo
b3JpZ2luYWxSZXF1ZXN0LnJlcXVlc3RlcigpICE9IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVy
OjpNYWluKQotICAgICAgICByZXR1cm47CisgICAgZm9yIChhdXRvJiBzdWJyZXNvdXJjZSA6IGVu
dHJ5LnN1YnJlc291cmNlcygpKSB7CisgICAgICAgIGlmICghc3VicmVzb3VyY2UudmFsdWUuaXNU
cmFuc2llbnQpCisgICAgICAgICAgICBwcmVsb2FkRW50cnkoc3VicmVzb3VyY2Uua2V5LCBmcmFt
ZUlEKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlUHJlbG9hZGluZywgIihOZXR3b3JrUHJvY2VzcykgTm90IHByZWxvYWRpbmcgJyVzJyBiZWNh
dXNlIGl0IGlzIG1hcmtlZCBhcyB0cmFuc2llbnQiLCBzdWJyZXNvdXJjZS5rZXkuaWRlbnRpZmll
cigpLnV0ZjgoKS5kYXRhKCkpOworICAgIH0KK30KIAordm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyOjpyZXRyaWV2ZVN1YnJlc291cmNlc0VudHJ5KGNvbnN0IEtleSYgc3RvcmFnZUtleSwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChzdGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3VyY2VzRW50cnk+KT4gY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKHN0b3JhZ2VLZXkudHlwZSgpID09ICJyZXNv
dXJjZSIpOwogICAgIGF1dG8gc3VicmVzb3VyY2VzU3RvcmFnZUtleSA9IG1ha2VTdWJyZXNvdXJj
ZXNLZXkoc3RvcmFnZUtleSk7Ci0KLSAgICBtX3N0b3JhZ2UucmV0cmlldmUoc3VicmVzb3VyY2Vz
U3RvcmFnZUtleSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlc291cmNlTG9hZFByaW9yaXR5OjpN
ZWRpdW0pLCBbdGhpcywgZnJhbWVJRF0oc3RkOjp1bmlxdWVfcHRyPFN0b3JhZ2U6OlJlY29yZD4g
cmVjb3JkKSB7Ci0gICAgICAgIGlmICghcmVjb3JkKQorICAgIG1fc3RvcmFnZS5yZXRyaWV2ZShz
dWJyZXNvdXJjZXNTdG9yYWdlS2V5LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVzb3VyY2VMb2Fk
UHJpb3JpdHk6Ok1lZGl1bSksIFtjb21wbGV0aW9uSGFuZGxlcl0oc3RkOjp1bmlxdWVfcHRyPFN0
b3JhZ2U6OlJlY29yZD4gcmVjb3JkKSB7CisgICAgICAgIGlmICghcmVjb3JkKSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQogCiAgICAgICAgIGF1dG8gc3VicmVzb3VyY2VzRW50cnkgPSBTdWJyZXNv
dXJjZXNFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZCgqcmVjb3JkKTsKLSAgICAgICAgaWYgKCFz
dWJyZXNvdXJjZXNFbnRyeSkKKyAgICAgICAgaWYgKCFzdWJyZXNvdXJjZXNFbnRyeSkgeworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KIAotICAgICAgICBmb3IgKGF1dG8mIHN1YnJlc291cmNlS2V5IDog
c3VicmVzb3VyY2VzRW50cnktPnN1YnJlc291cmNlS2V5cygpKQotICAgICAgICAgICAgcHJlbG9h
ZEVudHJ5KHN1YnJlc291cmNlS2V5LCBmcmFtZUlEKTsKLQorICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEY6Om1vdmUoc3VicmVzb3VyY2VzRW50cnkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
LmgKaW5kZXggMzY0YzU4Yy4uMjFjZTVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZE1hbmFnZXIuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgTmV0d29ya0Nh
Y2hlIHsKIAogY2xhc3MgRW50cnk7CiBjbGFzcyBTcGVjdWxhdGl2ZUxvYWQ7CitjbGFzcyBTdWJy
ZXNvdXJjZXNFbnRyeTsKIAogY2xhc3MgU3BlY3VsYXRpdmVMb2FkTWFuYWdlciB7CiBwdWJsaWM6
CkBAIC01MSwxOSArNTIsMTkgQEAgcHVibGljOgogICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2
b2lkIChzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+KT4gUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlcjsK
ICAgICBib29sIHJldHJpZXZlKGNvbnN0IEtleSYgc3RvcmFnZUtleSwgY29uc3QgUmV0cmlldmVD
b21wbGV0aW9uSGFuZGxlciYpOwogCi0gICAgdm9pZCBzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0
aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQm
LCBjb25zdCBLZXkmIHN0b3JhZ2VLZXkpOwotCiBwcml2YXRlOgogICAgIHZvaWQgYWRkUHJlbG9h
ZGVkRW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik7CiAgICAgdm9pZCBwcmVsb2FkRW50cnko
Y29uc3QgS2V5JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYpOwogICAgIHZvaWQgcmV0cmlldmVFbnRy
eUZyb21TdG9yYWdlKGNvbnN0IEtleSYsIGNvbnN0IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIm
KTsKICAgICB2b2lkIHJldmFsaWRhdGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25z
dCBHbG9iYWxGcmFtZUlEJik7CiAgICAgYm9vbCBzYXRpc2Z5UGVuZGluZ1JlcXVlc3RzKGNvbnN0
IEtleSYsIEVudHJ5Kik7CisgICAgdm9pZCByZXRyaWV2ZVN1YnJlc291cmNlc0VudHJ5KGNvbnN0
IEtleSYgc3RvcmFnZUtleSwgc3RkOjpmdW5jdGlvbjx2b2lkIChzdGQ6OnVuaXF1ZV9wdHI8U3Vi
cmVzb3VyY2VzRW50cnk+KT4pOworICAgIHZvaWQgc3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlv
bihjb25zdCBHbG9iYWxGcmFtZUlEJiwgU3VicmVzb3VyY2VzRW50cnkmKTsKIAogICAgIFN0b3Jh
Z2UmIG1fc3RvcmFnZTsKIAogICAgIGNsYXNzIFBlbmRpbmdGcmFtZUxvYWQ7Ci0gICAgSGFzaE1h
cDxHbG9iYWxGcmFtZUlELCBzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0ZyYW1lTG9hZD4+IG1fcGVu
ZGluZ0ZyYW1lTG9hZHM7CisgICAgSGFzaE1hcDxHbG9iYWxGcmFtZUlELCBSZWZQdHI8UGVuZGlu
Z0ZyYW1lTG9hZD4+IG1fcGVuZGluZ0ZyYW1lTG9hZHM7CiAKICAgICBIYXNoTWFwPEtleSwgc3Rk
Ojp1bmlxdWVfcHRyPFNwZWN1bGF0aXZlTG9hZD4+IG1fcGVuZGluZ1ByZWxvYWRzOwogICAgIEhh
c2hNYXA8S2V5LCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJldHJpZXZlQ29tcGxldGlvbkhhbmRs
ZXI+Pj4gbV9wZW5kaW5nUmV0cmlldmVSZXF1ZXN0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJl
c291cmNlc0VudHJ5LmNwcAppbmRleCA2Y2IxMWQwLi4yZWI3ZmFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNF
bnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBO
ZXR3b3JrQ2FjaGUgewogU3RvcmFnZTo6UmVjb3JkIFN1YnJlc291cmNlc0VudHJ5OjplbmNvZGVB
c1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogewogICAgIEVuY29kZXIgZW5jb2RlcjsKLSAgICBlbmNv
ZGVyIDw8IG1fc3VicmVzb3VyY2VLZXlzOworICAgIGVuY29kZXIgPDwgbV9zdWJyZXNvdXJjZXM7
CiAKICAgICBlbmNvZGVyLmVuY29kZUNoZWNrc3VtKCk7CiAKQEAgLTUxLDcgKzUxLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFN1YnJlc291cmNlc0VudHJ5PiBTdWJyZXNvdXJjZXNFbnRyeTo6ZGVjb2Rl
U3RvcmFnZVJlY29yZChjb25zdAogICAgIGF1dG8gZW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1
YnJlc291cmNlc0VudHJ5PihzdG9yYWdlRW50cnkpOwogCiAgICAgRGVjb2RlciBkZWNvZGVyKHN0
b3JhZ2VFbnRyeS5oZWFkZXIuZGF0YSgpLCBzdG9yYWdlRW50cnkuaGVhZGVyLnNpemUoKSk7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbnRyeS0+bV9zdWJyZXNvdXJjZUtleXMpKQorICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZW50cnktPm1fc3VicmVzb3VyY2VzKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBpZiAoIWRlY29kZXIudmVyaWZ5Q2hlY2tzdW0oKSkgewpAQCAtNjks
MTIgKzY5LDI0IEBAIFN1YnJlc291cmNlc0VudHJ5OjpTdWJyZXNvdXJjZXNFbnRyeShjb25zdCBT
dG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2VFbnRyeSkKICAgICBBU1NFUlQobV9rZXkudHlwZSgpID09
ICJzdWJyZXNvdXJjZXMiKTsKIH0KIAotU3VicmVzb3VyY2VzRW50cnk6OlN1YnJlc291cmNlc0Vu
dHJ5KEtleSYmIGtleSwgVmVjdG9yPEtleT4mJiBzdWJyZXNvdXJjZUtleXMpCitTdWJyZXNvdXJj
ZXNFbnRyeTo6U3VicmVzb3VyY2VzRW50cnkoS2V5JiYga2V5LCBjb25zdCBWZWN0b3I8S2V5PiYg
c3VicmVzb3VyY2VLZXlzKQogICAgIDogbV9rZXkoV1RGOjptb3ZlKGtleSkpCiAgICAgLCBtX3Rp
bWVTdGFtcChzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKSkKLSAgICAsIG1fc3VicmVz
b3VyY2VLZXlzKFdURjo6bW92ZShzdWJyZXNvdXJjZUtleXMpKQogewogICAgIEFTU0VSVChtX2tl
eS50eXBlKCkgPT0gInN1YnJlc291cmNlcyIpOworICAgIGZvciAoYXV0byYga2V5IDogc3VicmVz
b3VyY2VLZXlzKQorICAgICAgICBtX3N1YnJlc291cmNlcy5hZGQoa2V5LCBTdWJyZXNvdXJjZUlu
Zm8oKSk7Cit9CisKK3ZvaWQgU3VicmVzb3VyY2VzRW50cnk6OnVwZGF0ZVN1YnJlc291cmNlS2V5
cyhjb25zdCBWZWN0b3I8S2V5PiYgc3VicmVzb3VyY2VLZXlzKQoreworICAgIGF1dG8gb2xkU3Vi
cmVzb3VyY2VzID0gV1RGOjptb3ZlKG1fc3VicmVzb3VyY2VzKTsKKworICAgIC8vIE1hcmsga2V5
cyB0aGF0IGFyZSBjb21tb24gd2l0aCBsYXN0IGxvYWQgYXMgbm9uLVRyYW5zaWVudC4KKyAgICBm
b3IgKGF1dG8mIGtleSA6IHN1YnJlc291cmNlS2V5cykgeworICAgICAgICBib29sIGlzVHJhbnNp
ZW50ID0gIW9sZFN1YnJlc291cmNlcy5jb250YWlucyhrZXkpOworICAgICAgICBtX3N1YnJlc291
cmNlcy5hZGQoa2V5LCBTdWJyZXNvdXJjZUluZm8oaXNUcmFuc2llbnQpKTsKKyAgICB9CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaCBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5
LmgKaW5kZXggOTczZjJhNC4uZDEyMjgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJj
ZXNFbnRyeS5oCkBAIC0yOCw3ICsyOCwxMCBAQAogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVf
U1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogCisjaW5jbHVkZSAiTmV0d29ya0NhY2hlRGVjb2Rl
ci5oIgorI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUVuY29kZXIuaCIKICNpbmNsdWRlICJOZXR3b3Jr
Q2FjaGVTdG9yYWdlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKQEAgLTM2LDcgKzM5LDE2IEBAIG5hbWVz
cGFjZSBOZXR3b3JrQ2FjaGUgewogY2xhc3MgU3VicmVzb3VyY2VzRW50cnkgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFN1YnJlc291cmNlc0VudHJ5KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgU3VicmVzb3VyY2VzRW50cnkoS2V5JiYsIFZlY3RvcjxLZXk+JiYg
c3VicmVzb3VyY2VLZXlzKTsKKyAgICBzdHJ1Y3QgU3VicmVzb3VyY2VJbmZvIHsKKyAgICAgICAg
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QgeyBlbmNvZGVyIDw8IGlzVHJhbnNp
ZW50OyB9CisgICAgICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTdWJy
ZXNvdXJjZUluZm8mIGluZm8pIHsgcmV0dXJuIGRlY29kZXIuZGVjb2RlKGluZm8uaXNUcmFuc2ll
bnQpOyB9CisKKyAgICAgICAgU3VicmVzb3VyY2VJbmZvKCkgPSBkZWZhdWx0OworICAgICAgICBT
dWJyZXNvdXJjZUluZm8oYm9vbCBpc1RyYW5zaWVudCkgOiBpc1RyYW5zaWVudChpc1RyYW5zaWVu
dCkgeyB9CisKKyAgICAgICAgYm9vbCBpc1RyYW5zaWVudCB7IGZhbHNlIH07CisgICAgfTsKKyAg
ICBTdWJyZXNvdXJjZXNFbnRyeShLZXkmJiwgY29uc3QgVmVjdG9yPEtleT4mIHN1YnJlc291cmNl
S2V5cyk7CiAgICAgZXhwbGljaXQgU3VicmVzb3VyY2VzRW50cnkoY29uc3QgU3RvcmFnZTo6UmVj
b3JkJik7CiAKICAgICBTdG9yYWdlOjpSZWNvcmQgZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29u
c3Q7CkBAIC00NCwxMiArNTYsMTQgQEAgcHVibGljOgogCiAgICAgY29uc3QgS2V5JiBrZXkoKSBj
b25zdCB7IHJldHVybiBtX2tleTsgfQogICAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQgdGltZVN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1lU3RhbXA7IH0KLSAgICBj
b25zdCBWZWN0b3I8S2V5PiYgc3VicmVzb3VyY2VLZXlzKCkgY29uc3QgeyByZXR1cm4gbV9zdWJy
ZXNvdXJjZUtleXM7IH0KKyAgICBjb25zdCBIYXNoTWFwPEtleSwgU3VicmVzb3VyY2VJbmZvPiYg
c3VicmVzb3VyY2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdWJyZXNvdXJjZXM7IH0KKworICAgIHZv
aWQgdXBkYXRlU3VicmVzb3VyY2VLZXlzKGNvbnN0IFZlY3RvcjxLZXk+Jik7CiAKIHByaXZhdGU6
CiAgICAgS2V5IG1fa2V5OwogICAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9p
bnQgbV90aW1lU3RhbXA7Ci0gICAgVmVjdG9yPEtleT4gbV9zdWJyZXNvdXJjZUtleXM7CisgICAg
SGFzaE1hcDxLZXksIFN1YnJlc291cmNlSW5mbz4gbV9zdWJyZXNvdXJjZXM7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265999</attachid>
            <date>2015-11-20 14:28:51 -0800</date>
            <delta_ts>2015-11-30 11:06:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151402-20151120142838.patch</filename>
            <type>text/plain</type>
            <size>18688</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDk5YTk5NWYyYTgwOWRj
MDRkMmQ1ZTIxZWFkNzEyMjdmMTdiZWQ3My4uOTI2YTUyYjFhMjkwNzRmNGEyM2Q1N2ZiMDliOTM5
MDUwYTJiYWQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE1LTExLTIwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl1bQ2FjaGVdIFdlIHNo
b3VsZCBub3Qgc3BlY3VsYXRpdmVseSByZXZhbGlkYXRlIHRyYW5zaWVudCByZXNvdXJjZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTQwMgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMjMwOTIxOTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCBzcGVjdWxhdGl2ZWx5IHJldmFs
aWRhdGUgdHJhbnNpZW50IHJlc291cmNlcy4gVGhpcyBwYXRjaAorICAgICAgICBhZGRzIGEgc2lt
cGxlIGFuZCBjb25zZXJ2YXRpdmUgYWxnb3JpdGhtIHRvIGRldGVjdCB0aGF0IGEgc3VicmVzb3Vy
Y2UgaXMKKyAgICAgICAgdHJhbnNpZW50IGFuZCB0aGVuIGlnbm9yZXMgdGhvc2Ugd2hlbiBkb2lu
ZyB0aGUgc3BlY3VsYXRpdmUgcmV2YWxpZGF0aW9uLgorCisgICAgICAgIFRoZSBhbGdvcml0aG0g
aXMgcXVlc3Rpb24gbWFya3MgYXMgdHJhbnNpZW50IGFsbCBzdWJyZXNvdXJjZXMgdGhhdCBhcmUK
KyAgICAgICAgbm90IGNvbW1vbiB0byB0aGUgMiBsYXN0IGxvYWRzIG9mIGEgbWFpbiByZXNvdXJj
ZS4KKworICAgICAgICBUaGlzIGlzIG5vdCBwZXJmZWN0IGFzIEkgc2VlIHRoZSBudW1iZXIgb2Yg
bm9uLXNwZWN1bGF0aXZlIHJldmFsaWRhdGlvbnMKKyAgICAgICAgZ29pbmcgdXAgdG8gMTEtMTIg
ZnJvbSA5IGluIHRoZSBjb250ZXh0IG9mIHRoZSB3YXJtIFBMVC4gSG93ZXZlciwgaXQgaXMKKyAg
ICAgICAgYmVzdCB0byBiZSBjb25zZXJ2YXRpdmUgYXQgZmlyc3QgYW5kIHdlIGNhbiBpbXByb3Zl
IHRoaXMgbGF0ZXIuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpyZXRyaWV2ZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRp
dmVMb2FkTWFuYWdlcjo6UGVuZGluZ0ZyYW1lTG9hZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2Fk
Ojp+UGVuZGluZ0ZyYW1lTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlcjo6UGVuZGluZ0ZyYW1lTG9hZDo6cmVnaXN0ZXJTdWJyZXNvdXJj
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdl
cjo6UGVuZGluZ0ZyYW1lTG9hZDo6bWFya0xvYWRBc0NvbXBsZXRlZCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UGVuZGluZ0ZyYW1lTG9h
ZDo6c2V0RXhpc3RpbmdTdWJyZXNvdXJjZXNFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UGVuZGluZ0ZyYW1lTG9hZDo6UGVuZGlu
Z0ZyYW1lTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkTWFuYWdlcjo6UGVuZGluZ0ZyYW1lTG9hZDo6c2F2ZVRvRGlza0lmUmVhZHkpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJlZ2lzdGVy
TG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFu
YWdlcjo6c3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmVTdWJyZXNvdXJjZXNF
bnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFu
YWdlcjo6cmV0cmlldmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldmFsaWRhdGVFbnRyeSk6IERlbGV0ZWQuCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFu
YWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJl
c291cmNlc0VudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdWJyZXNv
dXJjZXNFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTdWJyZXNvdXJjZXNFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVzb3VyY2VzRW50cnk6OlN1YnJlc291cmNl
c0VudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdWJyZXNvdXJjZXNFbnRy
eTo6dXBkYXRlU3VicmVzb3VyY2VLZXlzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OlN1YnJlc291cmNlc0VudHJ5OjpTdWJyZXNvdXJjZUluZm86OmVuY29kZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVzb3VyY2VzRW50cnk6OlN1YnJlc291
cmNlSW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdWJyZXNv
dXJjZXNFbnRyeTo6U3VicmVzb3VyY2VJbmZvOjpTdWJyZXNvdXJjZUluZm8pOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlc0VudHJ5OjpzdWJyZXNvdXJjZXMpOgor
CiAyMDE1LTExLTE5ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTkyNjY3IGFuZCByMTkyNjY4LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5j
cHAKaW5kZXggNTU1Y2Q1NTI3MzBhYmU5Mzc1OTZkNzQ0ODg3ZDk2NjJlY2NiYjIxMi4uMTc0YjYy
YWMwZmI5M2ZlZTAwMjI4NGVkMTJlZTgyOTE5YzJmNzkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC0zNTYsMTIg
KzM1Niw4IEBAIHZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBjb25zdCBHbG9iCiAgICAgS2V5IHN0b3JhZ2VLZXkgPSBt
YWtlQ2FjaGVLZXkob3JpZ2luYWxSZXF1ZXN0KTsKIAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hF
X1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKLSAgICBpZiAobV9zcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyKSB7CisgICAgaWYgKG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlcikKICAgICAgICAgbV9zcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyLT5yZWdpc3RlckxvYWQoZnJhbWVJRCwgb3JpZ2luYWxSZXF1ZXN0
LCBzdG9yYWdlS2V5KTsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBv
cmlnaW5hbFJlcXVlc3QsIGZyYW1lSUQsIHN0b3JhZ2VLZXldIHsKLSAgICAgICAgICAgIG1fc3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlci0+c3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbihvcmlnaW5h
bFJlcXVlc3QsIGZyYW1lSUQsIHN0b3JhZ2VLZXkpOwotICAgICAgICB9KTsKLSAgICB9CiAjZW5k
aWYKIAogICAgIGF1dG8gcmV0cmlldmVEZWNpc2lvbiA9IG1ha2VSZXRyaWV2ZURlY2lzaW9uKG9y
aWdpbmFsUmVxdWVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1h
bmFnZXIuY3BwCmluZGV4IDA0MTJiYTY5MWIxMjA5ZTIwMjM3ZjUyZjVmYzBiNjY3NzgxODg4Njgu
LjQ0NDk2NjgzMWJmMzA2YjEwZGFkNWE2YmJkYjQ2M2VjNjAwNjE2YzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0h5c3RlcmVzaXNBY3Rpdml0eS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMDksNTIgKzExMCw4NiBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBtX2xpZmV0aW1lUmVhY2hlZEhhbmRsZXI7CiB9Owog
Ci1jbGFzcyBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkIHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNzIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OlBl
bmRpbmdGcmFtZUxvYWQgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5kaW5nRnJhbWVMb2FkPiB7CiBw
dWJsaWM6Ci0gICAgUGVuZGluZ0ZyYW1lTG9hZChjb25zdCBLZXkmIG1haW5SZXNvdXJjZUtleSwg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgIDogbV9t
YWluUmVzb3VyY2VLZXkobWFpblJlc291cmNlS2V5KQotICAgICAgICAsIG1fY29tcGxldGlvbkhh
bmRsZXIoV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAgLCBtX2xvYWRIeXN0
ZXJlc2lzQWN0aXZpdHkoW3RoaXNdKEh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBpZiAoc3RhdGUg
PT0gSHlzdGVyZXNpc1N0YXRlOjpTdG9wcGVkKSBtX2NvbXBsZXRpb25IYW5kbGVyKCk7IH0pCi0g
ICAgeyB9CisgICAgc3RhdGljIFJlZjxQZW5kaW5nRnJhbWVMb2FkPiBjcmVhdGUoU3RvcmFnZSYg
c3RvcmFnZSwgY29uc3QgS2V5JiBtYWluUmVzb3VyY2VLZXksIHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PiYmIGxvYWRDb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFBlbmRpbmdGcmFtZUxvYWQoc3RvcmFnZSwgbWFpblJlc291cmNlS2V5LCBXVEY6Om1v
dmUobG9hZENvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIH0KKworICAgIH5QZW5kaW5nRnJhbWVM
b2FkKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2RpZEZpbmlzaExvYWQpOworICAgICAgICBB
U1NFUlQobV9kaWRSZXRyaWV2ZUV4aXN0aW5nRW50cnkpOworICAgIH0KIAogICAgIHZvaWQgcmVn
aXN0ZXJTdWJyZXNvdXJjZShjb25zdCBLZXkmIHN1YnJlc291cmNlS2V5KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgbV9zdWJyZXNvdXJjZUtleXMu
YWRkKHN1YnJlc291cmNlS2V5KTsKKyAgICAgICAgbV9zdWJyZXNvdXJjZUtleXMuYXBwZW5kKHN1
YnJlc291cmNlS2V5KTsKICAgICAgICAgbV9sb2FkSHlzdGVyZXNpc0FjdGl2aXR5LmltcHVsc2Uo
KTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxTdG9yYWdlOjpSZWNvcmQ+IGVuY29kZUFzU3VicmVz
b3VyY2VzUmVjb3JkKCkKKyAgICB2b2lkIG1hcmtMb2FkQXNDb21wbGV0ZWQoKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgaWYgKG1fc3VicmVzb3Vy
Y2VLZXlzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGlmICht
X2RpZEZpbmlzaExvYWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9kaWRGaW5p
c2hMb2FkID0gdHJ1ZTsKKyAgICAgICAgc2F2ZVRvRGlza0lmUmVhZHkoKTsKKyAgICAgICAgbV9s
b2FkQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9CisKKyAgICB2b2lkIHNldEV4aXN0aW5nU3Vi
cmVzb3VyY2VzRW50cnkoc3RkOjp1bmlxdWVfcHRyPFN1YnJlc291cmNlc0VudHJ5PiBlbnRyeSkK
KyAgICB7CisgICAgICAgIEFTU0VSVCghbV9leGlzdGluZ0VudHJ5KTsKKyAgICAgICAgQVNTRVJU
KCFtX2RpZFJldHJpZXZlRXhpc3RpbmdFbnRyeSk7CisKKyAgICAgICAgbV9leGlzdGluZ0VudHJ5
ID0gV1RGOjptb3ZlKGVudHJ5KTsKKyAgICAgICAgbV9kaWRSZXRyaWV2ZUV4aXN0aW5nRW50cnkg
PSB0cnVlOworICAgICAgICBzYXZlVG9EaXNrSWZSZWFkeSgpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBQZW5kaW5nRnJhbWVMb2FkKFN0b3JhZ2UmIHN0b3JhZ2UsIGNvbnN0IEtleSYgbWFpblJl
c291cmNlS2V5LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBsb2FkQ29tcGxldGlvbkhhbmRsZXIp
CisgICAgICAgIDogbV9zdG9yYWdlKHN0b3JhZ2UpCisgICAgICAgICwgbV9tYWluUmVzb3VyY2VL
ZXkobWFpblJlc291cmNlS2V5KQorICAgICAgICAsIG1fbG9hZENvbXBsZXRpb25IYW5kbGVyKFdU
Rjo6bW92ZShsb2FkQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICAsIG1fbG9hZEh5c3RlcmVz
aXNBY3Rpdml0eShbdGhpc10oSHlzdGVyZXNpc1N0YXRlIHN0YXRlKSB7IGlmIChzdGF0ZSA9PSBI
eXN0ZXJlc2lzU3RhdGU6OlN0b3BwZWQpIG1hcmtMb2FkQXNDb21wbGV0ZWQoKTsgfSkKKyAgICB7
IH0KKworICAgIHZvaWQgc2F2ZVRvRGlza0lmUmVhZHkoKQorICAgIHsKKyAgICAgICAgaWYgKCFt
X2RpZEZpbmlzaExvYWQgfHwgIW1fZGlkUmV0cmlldmVFeGlzdGluZ0VudHJ5KQorICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gc3VicmVzb3VyY2VzU3RvcmFnZUtleSA9IG1ha2VT
dWJyZXNvdXJjZXNLZXkobV9tYWluUmVzb3VyY2VLZXkpOwotICAgICAgICBWZWN0b3I8S2V5PiBz
dWJyZXNvdXJjZUtleXM7Ci0gICAgICAgIGNvcHlUb1ZlY3RvcihtX3N1YnJlc291cmNlS2V5cywg
c3VicmVzb3VyY2VLZXlzKTsKKyAgICAgICAgaWYgKG1fc3VicmVzb3VyY2VLZXlzLmlzRW1wdHko
KSkKKyAgICAgICAgICAgIHJldHVybjsKIAogI2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgTE9H
KE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihOZXR3b3JrUHJvY2VzcykgU2F2
aW5nIHRvIGRpc2sgbGlzdCBvZiBzdWJyZXNvdXJjZXMgZm9yICclcyc6IiwgbV9tYWluUmVzb3Vy
Y2VLZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBmb3IgKGF1dG8mIHN1
YnJlc291cmNlS2V5IDogc3VicmVzb3VyY2VLZXlzKQorICAgICAgICBmb3IgKGF1dG8mIHN1YnJl
c291cmNlS2V5IDogbV9zdWJyZXNvdXJjZUtleXMpCiAgICAgICAgICAgICBMT0coTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSAqIFN1YnJlc291cmNl
OiAnJXMnLiIsIHN1YnJlc291cmNlS2V5LmlkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKICNl
bmRpZgogCi0gICAgICAgIHJldHVybiBTdWJyZXNvdXJjZXNFbnRyeShXVEY6Om1vdmUoc3VicmVz
b3VyY2VzU3RvcmFnZUtleSksIFdURjo6bW92ZShzdWJyZXNvdXJjZUtleXMpKS5lbmNvZGVBc1N0
b3JhZ2VSZWNvcmQoKTsKLSAgICB9Ci0KLSAgICB2b2lkIG1hcmtBc0NvbXBsZXRlZCgpCi0gICAg
ewotICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBtX2NvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgICAgIGlmIChtX2V4aXN0aW5nRW50cnkpIHsKKyAgICAgICAgICAg
IG1fZXhpc3RpbmdFbnRyeS0+dXBkYXRlU3VicmVzb3VyY2VLZXlzKG1fc3VicmVzb3VyY2VLZXlz
KTsKKyAgICAgICAgICAgIG1fc3RvcmFnZS5zdG9yZShtX2V4aXN0aW5nRW50cnktPmVuY29kZUFz
U3RvcmFnZVJlY29yZCgpLCBbXShjb25zdCBEYXRhJikgeyB9KTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIFN1YnJlc291cmNlc0VudHJ5IGVudHJ5KG1ha2VTdWJyZXNvdXJjZXNLZXko
bV9tYWluUmVzb3VyY2VLZXkpLCBtX3N1YnJlc291cmNlS2V5cyk7CisgICAgICAgICAgICBtX3N0
b3JhZ2Uuc3RvcmUoZW50cnkuZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCksIFtdKGNvbnN0IERhdGEm
KSB7IH0pOworICAgICAgICB9CiAgICAgfQogCi1wcml2YXRlOgorICAgIFN0b3JhZ2UmIG1fc3Rv
cmFnZTsKICAgICBLZXkgbV9tYWluUmVzb3VyY2VLZXk7Ci0gICAgSGFzaFNldDxLZXk+IG1fc3Vi
cmVzb3VyY2VLZXlzOwotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBtX2NvbXBsZXRpb25IYW5k
bGVyOworICAgIFZlY3RvcjxLZXk+IG1fc3VicmVzb3VyY2VLZXlzOworICAgIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBtX2xvYWRDb21wbGV0aW9uSGFuZGxlcjsKICAgICBIeXN0ZXJlc2lzQWN0aXZp
dHkgbV9sb2FkSHlzdGVyZXNpc0FjdGl2aXR5OworICAgIHN0ZDo6dW5pcXVlX3B0cjxTdWJyZXNv
dXJjZXNFbnRyeT4gbV9leGlzdGluZ0VudHJ5OworICAgIGJvb2wgbV9kaWRGaW5pc2hMb2FkIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fZGlkUmV0cmlldmVFeGlzdGluZ0VudHJ5IHsgZmFsc2UgfTsK
IH07CiAKIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXIoU3Rv
cmFnZSYgc3RvcmFnZSkKQEAgLTIwMCwxNiArMjM1LDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlcjo6cmVnaXN0ZXJMb2FkKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIGNvbnN0
IFJlCiAgICAgaWYgKGlzTWFpblJlc291cmNlKSB7CiAgICAgICAgIC8vIE1hcmsgcHJldmlvdXMg
bG9hZCBpbiB0aGlzIGZyYW1lIGFzIGNvbXBsZXRlZCBpZiBuZWNlc3NhcnkuCiAgICAgICAgIGlm
IChhdXRvKiBwZW5kaW5nRnJhbWVMb2FkID0gbV9wZW5kaW5nRnJhbWVMb2Fkcy5nZXQoZnJhbWVJ
RCkpCi0gICAgICAgICAgICBwZW5kaW5nRnJhbWVMb2FkLT5tYXJrQXNDb21wbGV0ZWQoKTsKKyAg
ICAgICAgICAgIHBlbmRpbmdGcmFtZUxvYWQtPm1hcmtMb2FkQXNDb21wbGV0ZWQoKTsKKworICAg
ICAgICBBU1NFUlQoIW1fcGVuZGluZ0ZyYW1lTG9hZHMuY29udGFpbnMoZnJhbWVJRCkpOwogCiAg
ICAgICAgIC8vIFN0YXJ0IHRyYWNraW5nIGxvYWRzIGluIHRoaXMgZnJhbWUuCi0gICAgICAgIG1f
cGVuZGluZ0ZyYW1lTG9hZHMuYWRkKGZyYW1lSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Zy
YW1lTG9hZD4ocmVzb3VyY2VLZXksIFt0aGlzLCBmcmFtZUlEXSgpIHsKLSAgICAgICAgICAgIGF1
dG8gZnJhbWVMb2FkID0gbV9wZW5kaW5nRnJhbWVMb2Fkcy50YWtlKGZyYW1lSUQpOwotICAgICAg
ICAgICAgYXV0byBvcHRpb25hbFJlY29yZCA9IGZyYW1lTG9hZC0+ZW5jb2RlQXNTdWJyZXNvdXJj
ZXNSZWNvcmQoKTsKLSAgICAgICAgICAgIGlmICghb3B0aW9uYWxSZWNvcmQpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9zdG9yYWdlLnN0b3JlKG9wdGlvbmFsUmVjb3Jk
LnZhbHVlKCksIFtdKGNvbnN0IERhdGEmKSB7IH0pOwotICAgICAgICB9KSk7CisgICAgICAgIFJl
ZlB0cjxQZW5kaW5nRnJhbWVMb2FkPiBwZW5kaW5nRnJhbWVMb2FkID0gUGVuZGluZ0ZyYW1lTG9h
ZDo6Y3JlYXRlKG1fc3RvcmFnZSwgcmVzb3VyY2VLZXksIFt0aGlzLCBmcmFtZUlEXSB7CisgICAg
ICAgICAgICBib29sIHdhc1JlbW92ZWQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLnJlbW92ZShmcmFt
ZUlEKTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQod2FzUmVtb3ZlZCwgd2FzUmVtb3ZlZCk7
CisgICAgICAgIH0pOworICAgICAgICBtX3BlbmRpbmdGcmFtZUxvYWRzLmFkZChmcmFtZUlELCBw
ZW5kaW5nRnJhbWVMb2FkKTsKKworICAgICAgICAvLyBSZXRyaWV2ZSB0aGUgc3VicmVzb3VyY2Vz
IGVudHJ5IGlmIGl0IGV4aXN0cyB0byBzdGFydCBzcGVjdWxhdGl2ZSByZXZhbGlkYXRpb24gYW5k
IHRvIHVwZGF0ZSBpdC4KKyAgICAgICAgcmV0cmlldmVTdWJyZXNvdXJjZXNFbnRyeShyZXNvdXJj
ZUtleSwgW3RoaXMsIGZyYW1lSUQsIHBlbmRpbmdGcmFtZUxvYWRdKHN0ZDo6dW5pcXVlX3B0cjxT
dWJyZXNvdXJjZXNFbnRyeT4gZW50cnkpIHsKKyAgICAgICAgICAgIGlmIChlbnRyeSkKKyAgICAg
ICAgICAgICAgICBzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKGZyYW1lSUQsICplbnRyeSk7
CisKKyAgICAgICAgICAgIHBlbmRpbmdGcmFtZUxvYWQtPnNldEV4aXN0aW5nU3VicmVzb3VyY2Vz
RW50cnkoV1RGOjptb3ZlKGVudHJ5KSk7CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0zMDYsMjQgKzM0OSwzMyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6
OnByZWxvYWRFbnRyeShjb25zdCBLZXkmIGtleSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZgogICAg
IH0pOwogfQogCi12b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0U3BlY3VsYXRpdmVS
ZXZhbGlkYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIGNvbnN0
IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIGNvbnN0IEtleSYgc3RvcmFnZUtleSkKK3ZvaWQgU3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlcjo6c3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbihjb25zdCBH
bG9iYWxGcmFtZUlEJiBmcmFtZUlELCBTdWJyZXNvdXJjZXNFbnRyeSYgZW50cnkpCiB7Ci0gICAg
aWYgKG9yaWdpbmFsUmVxdWVzdC5yZXF1ZXN0ZXIoKSAhPSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVl
c3Rlcjo6TWFpbikKLSAgICAgICAgcmV0dXJuOworICAgIGZvciAoYXV0byYgc3VicmVzb3VyY2Ug
OiBlbnRyeS5zdWJyZXNvdXJjZXMoKSkgeworICAgICAgICBpZiAoIXN1YnJlc291cmNlLnZhbHVl
LmlzVHJhbnNpZW50KQorICAgICAgICAgICAgcHJlbG9hZEVudHJ5KHN1YnJlc291cmNlLmtleSwg
ZnJhbWVJRCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpIE5vdCBwcmVsb2FkaW5nICclcycg
YmVjYXVzZSBpdCBpcyBtYXJrZWQgYXMgdHJhbnNpZW50Iiwgc3VicmVzb3VyY2Uua2V5LmlkZW50
aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKKyAgICB9Cit9CiAKK3ZvaWQgU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlcjo6cmV0cmlldmVTdWJyZXNvdXJjZXNFbnRyeShjb25zdCBLZXkmIHN0b3JhZ2VLZXks
IHN0ZDo6ZnVuY3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRyPFN1YnJlc291cmNlc0VudHJ5Pik+
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChzdG9yYWdlS2V5LnR5cGUoKSA9PSAi
cmVzb3VyY2UiKTsKICAgICBhdXRvIHN1YnJlc291cmNlc1N0b3JhZ2VLZXkgPSBtYWtlU3VicmVz
b3VyY2VzS2V5KHN0b3JhZ2VLZXkpOwotCi0gICAgbV9zdG9yYWdlLnJldHJpZXZlKHN1YnJlc291
cmNlc1N0b3JhZ2VLZXksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZXNvdXJjZUxvYWRQcmlvcml0
eTo6TWVkaXVtKSwgW3RoaXMsIGZyYW1lSURdKHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdlOjpSZWNv
cmQ+IHJlY29yZCkgewotICAgICAgICBpZiAoIXJlY29yZCkKKyAgICBtX3N0b3JhZ2UucmV0cmll
dmUoc3VicmVzb3VyY2VzU3RvcmFnZUtleSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlc291cmNl
TG9hZFByaW9yaXR5OjpNZWRpdW0pLCBbY29tcGxldGlvbkhhbmRsZXJdKHN0ZDo6dW5pcXVlX3B0
cjxTdG9yYWdlOjpSZWNvcmQ+IHJlY29yZCkgeworICAgICAgICBpZiAoIXJlY29yZCkgeworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KIAogICAgICAgICBhdXRvIHN1YnJlc291cmNlc0VudHJ5ID0gU3Vi
cmVzb3VyY2VzRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoKnJlY29yZCk7Ci0gICAgICAgIGlm
ICghc3VicmVzb3VyY2VzRW50cnkpCisgICAgICAgIGlmICghc3VicmVzb3VyY2VzRW50cnkpIHsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CiAKLSAgICAgICAgZm9yIChhdXRvJiBzdWJyZXNvdXJjZUtl
eSA6IHN1YnJlc291cmNlc0VudHJ5LT5zdWJyZXNvdXJjZUtleXMoKSkKLSAgICAgICAgICAgIHBy
ZWxvYWRFbnRyeShzdWJyZXNvdXJjZUtleSwgZnJhbWVJRCk7Ci0KKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGOjptb3ZlKHN1YnJlc291cmNlc0VudHJ5KSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFu
YWdlci5oCmluZGV4IDM2NGM1OGNiN2YwYmU2NmEzYmQ4NWZhMDkxNmE3ZGRiM2JjNzkyYjguLjIx
Y2U1YzA3MDFlMzAyZDQ1ZjM4ZDM5MzEzZmU0YWIxNjExZWVlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNw
YWNlIE5ldHdvcmtDYWNoZSB7CiAKIGNsYXNzIEVudHJ5OwogY2xhc3MgU3BlY3VsYXRpdmVMb2Fk
OworY2xhc3MgU3VicmVzb3VyY2VzRW50cnk7CiAKIGNsYXNzIFNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXIgewogcHVibGljOgpAQCAtNTEsMTkgKzUyLDE5IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+IFJldHJpZXZlQ29tcGxl
dGlvbkhhbmRsZXI7CiAgICAgYm9vbCByZXRyaWV2ZShjb25zdCBLZXkmIHN0b3JhZ2VLZXksIGNv
bnN0IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImKTsKIAotICAgIHZvaWQgc3RhcnRTcGVjdWxh
dGl2ZVJldmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBH
bG9iYWxGcmFtZUlEJiwgY29uc3QgS2V5JiBzdG9yYWdlS2V5KTsKLQogcHJpdmF0ZToKICAgICB2
b2lkIGFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4pOwogICAgIHZvaWQg
cHJlbG9hZEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmKTsKICAgICB2b2lk
IHJldHJpZXZlRW50cnlGcm9tU3RvcmFnZShjb25zdCBLZXkmLCBjb25zdCBSZXRyaWV2ZUNvbXBs
ZXRpb25IYW5kbGVyJik7CiAgICAgdm9pZCByZXZhbGlkYXRlRW50cnkoc3RkOjp1bmlxdWVfcHRy
PEVudHJ5PiwgY29uc3QgR2xvYmFsRnJhbWVJRCYpOwogICAgIGJvb2wgc2F0aXNmeVBlbmRpbmdS
ZXF1ZXN0cyhjb25zdCBLZXkmLCBFbnRyeSopOworICAgIHZvaWQgcmV0cmlldmVTdWJyZXNvdXJj
ZXNFbnRyeShjb25zdCBLZXkmIHN0b3JhZ2VLZXksIHN0ZDo6ZnVuY3Rpb248dm9pZCAoc3RkOjp1
bmlxdWVfcHRyPFN1YnJlc291cmNlc0VudHJ5Pik+KTsKKyAgICB2b2lkIHN0YXJ0U3BlY3VsYXRp
dmVSZXZhbGlkYXRpb24oY29uc3QgR2xvYmFsRnJhbWVJRCYsIFN1YnJlc291cmNlc0VudHJ5Jik7
CiAKICAgICBTdG9yYWdlJiBtX3N0b3JhZ2U7CiAKICAgICBjbGFzcyBQZW5kaW5nRnJhbWVMb2Fk
OwotICAgIEhhc2hNYXA8R2xvYmFsRnJhbWVJRCwgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdGcmFt
ZUxvYWQ+PiBtX3BlbmRpbmdGcmFtZUxvYWRzOworICAgIEhhc2hNYXA8R2xvYmFsRnJhbWVJRCwg
UmVmUHRyPFBlbmRpbmdGcmFtZUxvYWQ+PiBtX3BlbmRpbmdGcmFtZUxvYWRzOwogCiAgICAgSGFz
aE1hcDxLZXksIHN0ZDo6dW5pcXVlX3B0cjxTcGVjdWxhdGl2ZUxvYWQ+PiBtX3BlbmRpbmdQcmVs
b2FkczsKICAgICBIYXNoTWFwPEtleSwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSZXRyaWV2ZUNv
bXBsZXRpb25IYW5kbGVyPj4+IG1fcGVuZGluZ1JldHJpZXZlUmVxdWVzdHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNv
dXJjZXNFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKaW5kZXggNmNiMTFkMDRjZTU1MTlmZTRlMWQ1
Y2YwMzk1MWIxOGEyMGE1MDMxNC4uMmViN2ZhZWZhNTdhZTQ4YjlmOGIyMTRhNGZkNzRiMDI0NzMw
OWQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcApAQCAtMzks
NyArMzksNyBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIFN0b3JhZ2U6OlJlY29yZCBTdWJy
ZXNvdXJjZXNFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIHsKICAgICBFbmNv
ZGVyIGVuY29kZXI7Ci0gICAgZW5jb2RlciA8PCBtX3N1YnJlc291cmNlS2V5czsKKyAgICBlbmNv
ZGVyIDw8IG1fc3VicmVzb3VyY2VzOwogCiAgICAgZW5jb2Rlci5lbmNvZGVDaGVja3N1bSgpOwog
CkBAIC01MSw3ICs1MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTdWJyZXNvdXJjZXNFbnRyeT4gU3Vi
cmVzb3VyY2VzRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoY29uc3QKICAgICBhdXRvIGVudHJ5
ID0gc3RkOjptYWtlX3VuaXF1ZTxTdWJyZXNvdXJjZXNFbnRyeT4oc3RvcmFnZUVudHJ5KTsKIAog
ICAgIERlY29kZXIgZGVjb2RlcihzdG9yYWdlRW50cnkuaGVhZGVyLmRhdGEoKSwgc3RvcmFnZUVu
dHJ5LmhlYWRlci5zaXplKCkpOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZW50cnktPm1fc3Vi
cmVzb3VyY2VLZXlzKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVudHJ5LT5tX3N1YnJlc291
cmNlcykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFkZWNvZGVyLnZlcmlm
eUNoZWNrc3VtKCkpIHsKQEAgLTY5LDEyICs2OSwyNCBAQCBTdWJyZXNvdXJjZXNFbnRyeTo6U3Vi
cmVzb3VyY2VzRW50cnkoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlRW50cnkpCiAgICAg
QVNTRVJUKG1fa2V5LnR5cGUoKSA9PSAic3VicmVzb3VyY2VzIik7CiB9CiAKLVN1YnJlc291cmNl
c0VudHJ5OjpTdWJyZXNvdXJjZXNFbnRyeShLZXkmJiBrZXksIFZlY3RvcjxLZXk+JiYgc3VicmVz
b3VyY2VLZXlzKQorU3VicmVzb3VyY2VzRW50cnk6OlN1YnJlc291cmNlc0VudHJ5KEtleSYmIGtl
eSwgY29uc3QgVmVjdG9yPEtleT4mIHN1YnJlc291cmNlS2V5cykKICAgICA6IG1fa2V5KFdURjo6
bW92ZShrZXkpKQogICAgICwgbV90aW1lU3RhbXAoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6
bm93KCkpCi0gICAgLCBtX3N1YnJlc291cmNlS2V5cyhXVEY6Om1vdmUoc3VicmVzb3VyY2VLZXlz
KSkKIHsKICAgICBBU1NFUlQobV9rZXkudHlwZSgpID09ICJzdWJyZXNvdXJjZXMiKTsKKyAgICBm
b3IgKGF1dG8mIGtleSA6IHN1YnJlc291cmNlS2V5cykKKyAgICAgICAgbV9zdWJyZXNvdXJjZXMu
YWRkKGtleSwgU3VicmVzb3VyY2VJbmZvKCkpOworfQorCit2b2lkIFN1YnJlc291cmNlc0VudHJ5
Ojp1cGRhdGVTdWJyZXNvdXJjZUtleXMoY29uc3QgVmVjdG9yPEtleT4mIHN1YnJlc291cmNlS2V5
cykKK3sKKyAgICBhdXRvIG9sZFN1YnJlc291cmNlcyA9IFdURjo6bW92ZShtX3N1YnJlc291cmNl
cyk7CisKKyAgICAvLyBNYXJrIGtleXMgdGhhdCBhcmUgY29tbW9uIHdpdGggbGFzdCBsb2FkIGFz
IG5vbi1UcmFuc2llbnQuCisgICAgZm9yIChhdXRvJiBrZXkgOiBzdWJyZXNvdXJjZUtleXMpIHsK
KyAgICAgICAgYm9vbCBpc1RyYW5zaWVudCA9ICFvbGRTdWJyZXNvdXJjZXMuY29udGFpbnMoa2V5
KTsKKyAgICAgICAgbV9zdWJyZXNvdXJjZXMuYWRkKGtleSwgU3VicmVzb3VyY2VJbmZvKGlzVHJh
bnNpZW50KSk7CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291
cmNlc0VudHJ5LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oCmluZGV4IDk3M2YyYTRlMmY5MGIxMmQ4MWNjZDAyNWNh
MDQxZGQzN2NhYzFlNWMuLmQxMjI4MmZmYTliMjI1ZTY3MmU4MGU3YTI4OGY1MjY4MGMyZjBiMjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN1YnJlc291cmNlc0VudHJ5LmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaApAQCAtMjgsNyArMjgsMTAg
QEAKIAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikK
IAorI2luY2x1ZGUgIk5ldHdvcmtDYWNoZURlY29kZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ2Fj
aGVFbmNvZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3RvcmFnZS5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtD
YWNoZSB7CkBAIC0zNiw3ICszOSwxNiBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIGNsYXNz
IFN1YnJlc291cmNlc0VudHJ5IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdWJyZXNvdXJj
ZXNFbnRyeSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFN1YnJlc291
cmNlc0VudHJ5KEtleSYmLCBWZWN0b3I8S2V5PiYmIHN1YnJlc291cmNlS2V5cyk7CisgICAgc3Ry
dWN0IFN1YnJlc291cmNlSW5mbyB7CisgICAgICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0IHsgZW5jb2RlciA8PCBpc1RyYW5zaWVudDsgfQorICAgICAgICBzdGF0aWMgYm9v
bCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU3VicmVzb3VyY2VJbmZvJiBpbmZvKSB7IHJldHVy
biBkZWNvZGVyLmRlY29kZShpbmZvLmlzVHJhbnNpZW50KTsgfQorCisgICAgICAgIFN1YnJlc291
cmNlSW5mbygpID0gZGVmYXVsdDsKKyAgICAgICAgU3VicmVzb3VyY2VJbmZvKGJvb2wgaXNUcmFu
c2llbnQpIDogaXNUcmFuc2llbnQoaXNUcmFuc2llbnQpIHsgfQorCisgICAgICAgIGJvb2wgaXNU
cmFuc2llbnQgeyBmYWxzZSB9OworICAgIH07CisgICAgU3VicmVzb3VyY2VzRW50cnkoS2V5JiYs
IGNvbnN0IFZlY3RvcjxLZXk+JiBzdWJyZXNvdXJjZUtleXMpOwogICAgIGV4cGxpY2l0IFN1YnJl
c291cmNlc0VudHJ5KGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYpOwogCiAgICAgU3RvcmFnZTo6UmVj
b3JkIGVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0OwpAQCAtNDQsMTIgKzU2LDE0IEBAIHB1
YmxpYzoKIAogICAgIGNvbnN0IEtleSYga2V5KCkgY29uc3QgeyByZXR1cm4gbV9rZXk7IH0KICAg
ICBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWVTdGFtcCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGltZVN0YW1wOyB9Ci0gICAgY29uc3QgVmVjdG9yPEtleT4mIHN1YnJlc291
cmNlS2V5cygpIGNvbnN0IHsgcmV0dXJuIG1fc3VicmVzb3VyY2VLZXlzOyB9CisgICAgY29uc3Qg
SGFzaE1hcDxLZXksIFN1YnJlc291cmNlSW5mbz4mIHN1YnJlc291cmNlcygpIGNvbnN0IHsgcmV0
dXJuIG1fc3VicmVzb3VyY2VzOyB9CisKKyAgICB2b2lkIHVwZGF0ZVN1YnJlc291cmNlS2V5cyhj
b25zdCBWZWN0b3I8S2V5PiYpOwogCiBwcml2YXRlOgogICAgIEtleSBtX2tleTsKICAgICBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1fdGltZVN0YW1wOwotICAgIFZlY3Rv
cjxLZXk+IG1fc3VicmVzb3VyY2VLZXlzOworICAgIEhhc2hNYXA8S2V5LCBTdWJyZXNvdXJjZUlu
Zm8+IG1fc3VicmVzb3VyY2VzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>