<?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>50093</bug_id>
          
          <creation_ts>2010-11-25 12:27:33 -0800</creation_ts>
          <short_desc>Convert open*Cursor and createIndex over to using OptionsObject</short_desc>
          <delta_ts>2010-11-26 08:52:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>50081</dependson>
          <blocked>50105</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Orlow">jorlow</reporter>
          <assigned_to name="Jeremy Orlow">jorlow</assigned_to>
          <cc>abarth</cc>
    
    <cc>andreip</cc>
    
    <cc>eric</cc>
    
    <cc>hans</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>313841</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-11-25 12:27:33 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313842</commentid>
    <comment_count>1</comment_count>
      <attachid>74893</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-11-25 12:30:45 -0800</bug_when>
    <thetext>Created attachment 74893
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313915</commentid>
    <comment_count>2</comment_count>
      <attachid>74893</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-11-26 01:12:22 -0800</bug_when>
    <thetext>Comment on attachment 74893
patch

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

Looks good except one nit:

&gt; WebCore/storage/IDBIndex.h:32
&gt; +#include &quot;OptionsObject.h&quot;

Include order?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313957</commentid>
    <comment_count>3</comment_count>
      <attachid>74919</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-11-26 04:30:50 -0800</bug_when>
    <thetext>Created attachment 74919
patch

fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313965</commentid>
    <comment_count>4</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-11-26 04:56:14 -0800</bug_when>
    <thetext>LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313977</commentid>
    <comment_count>5</comment_count>
      <attachid>74919</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-11-26 05:18:01 -0800</bug_when>
    <thetext>Comment on attachment 74919
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314033</commentid>
    <comment_count>6</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-11-26 08:33:49 -0800</bug_when>
    <thetext>Committed r72766: &lt;http://trac.webkit.org/changeset/72766&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314043</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-26 08:52:02 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/72766 might have broken Chromium Linux Release</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74893</attachid>
            <date>2010-11-25 12:30:45 -0800</date>
            <delta_ts>2010-11-26 04:30:50 -0800</delta_ts>
            <desc>patch</desc>
            <filename>a</filename>
            <type>text/plain</type>
            <size>24519</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmN2Y1ZWJiLi5kZWNiZDM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjEgQEAKIAogICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBDb252ZXJ0IG9wZW4qQ3Vy
c29yIGFuZCBjcmVhdGVJbmRleCBvdmVyIHRvIHVzaW5nIE9wdGlvbnNPYmplY3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMDkzCisKKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jdXJzb3IuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sOgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWN1cnNvci5odG1sOgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL29wZW4tY3Vyc29yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9vcGVuLWN1cnNvci5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3R1
dG9yaWFsLmh0bWw6CisKKzIwMTAtMTEtMjUgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAg
Q2xlYW4gdXAgSURCRGF0YWJhc2UudHJhbnNhY3Rpb24gYW5kIGFkZCBjaGVja3MgdG8gSURCVHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUwMDgxCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2luZGV4LWN1cnNvci5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
aW5kZXgtY3Vyc29yLmh0bWwKaW5kZXggMjZlYmNhMi4uMjhhOTUwNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY3Vyc29yLmh0bWwKQEAgLTE4Nyw3ICsxODcs
NyBAQCBmdW5jdGlvbiBydW5OZXh0VGVzdCgpCiAgICAgZWxzZQogICAgICAgICBrZXlSYW5nZSA9
IHdlYmtpdElEQktleVJhbmdlLnJpZ2h0Qm91bmQodGVzdERhdGFbdXBwZXJdLCB1cHBlcklzT3Bl
bik7CiAgCi0gICAgdmFyIHJlcXVlc3QgPSBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKGtleVJh
bmdlLCBhc2NlbmRpbmcgPyB3ZWJraXRJREJDdXJzb3IuTkVYVCA6IHdlYmtpdElEQkN1cnNvci5Q
UkVWKTsKKyAgICB2YXIgcmVxdWVzdCA9IGluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3Ioe3Jhbmdl
OiBrZXlSYW5nZSwgZGlyZWN0aW9uOiBhc2NlbmRpbmcgPyB3ZWJraXRJREJDdXJzb3IuTkVYVCA6
IHdlYmtpdElEQkN1cnNvci5QUkVWfSk7CiAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JJ
dGVyYXRpb247CiAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CiB9CkBAIC0yNTQsNyArMjU0LDcgQEAgZnVuY3Rpb24gdGVzdE51bGxLZXlSYW5nZSgpCiAgICAg
ZGVidWcoIiIpOwogICAgIGRlYnVnKHN0cik7CiAgCi0gICAgdmFyIHJlcXVlc3QgPSBpbmRleE9i
amVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIGFzY2VuZGluZyA/IHdlYmtpdElEQkN1cnNvci5ORVhU
IDogd2Via2l0SURCQ3Vyc29yLlBSRVYpOworICAgIHZhciByZXF1ZXN0ID0gaW5kZXhPYmplY3Qu
b3BlbktleUN1cnNvcih7ZGlyZWN0aW9uOiBhc2NlbmRpbmcgPyB3ZWJraXRJREJDdXJzb3IuTkVY
VCA6IHdlYmtpdElEQkN1cnNvci5QUkVWfSk7CiAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJz
b3JJdGVyYXRpb247CiAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3Rz
dG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRleCAzMjUyYmNjLi5iNGFhMGI3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNp
Y3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVj
dHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQKQEAgLTU0LDcgKzU0LDcgQEAgQXNrIGZvciBhbiBp
bmRleCB0aGF0IGRvZXNuJ3QgZXhpc3Q6CiBpbmRleCA9IHN0b3JlLmluZGV4KCdhc2RmJykKIFBB
U1MgRXhjZXB0aW9uIHRocm93bi4KIGNyZWF0ZUluZGV4KCk6Ci1pbmRleCA9IHN0b3JlLmNyZWF0
ZUluZGV4KCdpbmRleE5hbWUnLCAneCcsIHRydWUpCitpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4
KCdpbmRleE5hbWUnLCAneCcsIHt1bmlxdWU6IHRydWV9KQogUEFTUyBpbmRleCAhPT0gbnVsbCBp
cyB0cnVlCiBQQVNTIHN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIGlzIHRy
dWUKIGluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4TmFtZScpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sCmluZGV4IDA1MDFm
MzAuLjAyMjQ0YzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdHN0b3JlLWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L29iamVjdHN0b3JlLWJhc2ljcy5odG1sCkBAIC03Myw3ICs3Myw3IEBAIGZ1bmN0aW9uIGNyZWF0
ZU9iamVjdFN0b3JlKCkKIGZ1bmN0aW9uIGNyZWF0ZUluZGV4KCkKIHsKICAgICBkZWJ1ZygiY3Jl
YXRlSW5kZXgoKToiKTsKLSAgICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3Jl
LmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAneCcsIHRydWUpIik7IC8vIHRydWUgPT0gdW5pcXVl
IHJlcXVpcmVtZW50LgorICAgIHZhciBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUu
Y3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICd4Jywge3VuaXF1ZTogdHJ1ZX0pIik7IC8vIHRydWUg
PT0gdW5pcXVlIHJlcXVpcmVtZW50LgogICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT09IG51bGwi
KTsKICAgICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFt
ZScpIik7CiAgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRl
eE5hbWUnKSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2Jq
ZWN0c3RvcmUtY3Vyc29yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmpl
Y3RzdG9yZS1jdXJzb3IuaHRtbAppbmRleCBkNTYxMzE1Li4xM2Q4NTVjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jdXJzb3IuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jdXJzb3IuaHRtbApA
QCAtMTY1LDcgKzE2NSw3IEBAIGZ1bmN0aW9uIHJ1bk5leHRUZXN0KCkKICAgICBlbHNlCiAgICAg
ICAgIGtleVJhbmdlID0gd2Via2l0SURCS2V5UmFuZ2UucmlnaHRCb3VuZCh0ZXN0RGF0YVt1cHBl
cl0sIHVwcGVySXNPcGVuKTsKICAKLSAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5D
dXJzb3Ioa2V5UmFuZ2UsIGFzY2VuZGluZyA/IHdlYmtpdElEQkN1cnNvci5ORVhUIDogd2Via2l0
SURCQ3Vyc29yLlBSRVYpOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNv
cih7cmFuZ2U6IGtleVJhbmdlLCBkaXJlY3Rpb246IGFzY2VuZGluZyA/IHdlYmtpdElEQkN1cnNv
ci5ORVhUIDogd2Via2l0SURCQ3Vyc29yLlBSRVZ9KTsKICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGN1cnNvckl0ZXJhdGlvbjsKICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKIH0KQEAgLTIzMSw3ICsyMzEsNyBAQCBmdW5jdGlvbiB0ZXN0TnVsbEtleVJhbmdl
KCkKICAgICBkZWJ1ZygiIik7CiAgICAgZGVidWcoc3RyKTsKICAKLSAgICB2YXIgcmVxdWVzdCA9
IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IobnVsbCwgYXNjZW5kaW5nID8gd2Via2l0SURCQ3Vyc29y
Lk5FWFQgOiB3ZWJraXRJREJDdXJzb3IuUFJFVik7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RT
dG9yZS5vcGVuQ3Vyc29yKHtkaXJlY3Rpb246IGFzY2VuZGluZyA/IHdlYmtpdElEQkN1cnNvci5O
RVhUIDogd2Via2l0SURCQ3Vyc29yLlBSRVZ9KTsKICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1
cnNvckl0ZXJhdGlvbjsKICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4t
Y3Vyc29yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4t
Y3Vyc29yLWV4cGVjdGVkLnR4dAppbmRleCBjM2MxYThkLi40NDZhZjMxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWN1cnNvci1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3ItZXhwZWN0ZWQudHh0
CkBAIC01MCw3ICs1MCw3IEBAIFBBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCiBB
biBldmVudCBzaG91bGQgZmlyZSBzaG9ydGx5Li4uCiAKIE9wZW5pbmcgY3Vyc29yCi1ldmVudC5z
b3VyY2Uub3BlbkN1cnNvcihrZXlSYW5nZSkKK2V2ZW50LnNvdXJjZS5vcGVuQ3Vyc29yKHtyYW5n
ZToga2V5UmFuZ2V9KQogUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQogUEFTUyAn
b25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKIFBBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBp
cyB0cnVlCkBAIC03Niw3ICs3Niw3IEBAIFBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byAuY29u
dGludWUoKS4KIFBBU1MgQ2F1Z2h0IGV4Y2VwdGlvbjogRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJS
OiBET00gRXhjZXB0aW9uIDE3CiAKIE9wZW5pbmcgYW4gZW1wdHkgY3Vyc29yLgotb2JqZWN0U3Rv
cmUub3BlbkN1cnNvcihrZXlSYW5nZSkKK29iamVjdFN0b3JlLm9wZW5DdXJzb3Ioe3JhbmdlOiBr
ZXlSYW5nZX0pCiBQQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCiBQQVNTICdvbmVy
cm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQogUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRy
dWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY3Vyc29y
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWN1cnNvci5odG1sCmlu
ZGV4IDgxNWMwMWIuLjEyYTM2ZmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL29wZW4tY3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvb3Blbi1jdXJzb3IuaHRtbApAQCAtMjYsNyArMjYsNyBAQCBmdW5jdGlvbiBvcGVuRW1wdHlD
dXJzb3IoKQogewogICAgIGRlYnVnKCJPcGVuaW5nIGFuIGVtcHR5IGN1cnNvci4iKTsKICAgICBr
ZXlSYW5nZSA9IHdlYmtpdElEQktleVJhbmdlLmxlZnRCb3VuZCgiSW5leGlzdGVudEtleSIpOwot
ICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2Up
Iik7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcih7cmFu
Z2U6IGtleVJhbmdlfSkiKTsKICAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKICAgICByZXN1bHQu
b25zdWNjZXNzID0gZW1wdHlDdXJzb3JTdWNjZXNzOwogICAgIHJlc3VsdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CkBAIC01Niw3ICs1Niw3IEBAIGZ1bmN0aW9uIG9wZW5DdXJz
b3IoKQogewogICAgIGRlYnVnKCJPcGVuaW5nIGN1cnNvciIpOwogICAgIGtleVJhbmdlID0gd2Vi
a2l0SURCS2V5UmFuZ2UubGVmdEJvdW5kKCJteUtleSIpOwotICAgIHJlc3VsdCA9IGV2YWxBbmRM
b2coImV2ZW50LnNvdXJjZS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOworICAgIHJlc3VsdCA9IGV2
YWxBbmRMb2coImV2ZW50LnNvdXJjZS5vcGVuQ3Vyc29yKHtyYW5nZToga2V5UmFuZ2V9KSIpOwog
ICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOwogICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBjdXJzb3JT
dWNjZXNzOwogICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90dXRvcmlhbC5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHV0b3JpYWwuaHRtbAppbmRleCBmMTA5MmU1
Li4yZWZmMTIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90dXRv
cmlhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3R1dG9yaWFsLmh0
bWwKQEAgLTM0Miw3ICszNDIsNyBAQCBmdW5jdGlvbiBvbkdldFN1Y2Nlc3MoKQogICAgIC8vIHJl
dHVybiB1bmlxdWUgZW50aXJlcyAob25seSBhcHBsaWVzIHRvIGluZGV4ZXMgd2l0aCB1bmlxdWUg
c2V0IHRvIGZhbHNlKSwgUFJFViB0byBtb3ZlIGJhY2t3YXJkcywKICAgICAvLyBhbmQgUFJFVl9O
T19EVVBMSUNBVEUuCiAgICAgdmFyIGtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoMSwgMywg
dHJ1ZSwgZmFsc2UpOwotICAgIHZhciByZXF1ZXN0ID0gcGVvcGxlLm9wZW5DdXJzb3Ioa2V5UmFu
Z2UsIElEQkN1cnNvci5ORVhUKTsKKyAgICB2YXIgcmVxdWVzdCA9IHBlb3BsZS5vcGVuQ3Vyc29y
KHtyYW5nZToga2V5UmFuZ2UsIGRpcmVjdGlvbjogSURCQ3Vyc29yLk5FWFR9KTsKICAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9uT2JqZWN0U3RvcmVDdXJzb3I7CiAgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yOwogfQpAQCAtMzk1LDEwICszOTUsMTAgQEAgZnVuY3Rpb24gb25J
bmRleEdldFN1Y2Nlc3MoKQogICAgIC8vIGRpZmZlcmVudCBJREJLZXlSYW5nZXMganVzdCB0byBk
ZW1vbnN0cmF0ZSBob3cgdG8gdXNlIHRoZW0sIGJ1dCB3ZSB3b24ndCBib3RoZXIgdG8gaGFuZGxl
CiAgICAgLy8gdGhlIG9uc3VjY2VzcyBjb25kaXRpb25zLgogICAgIHZhciBsbmFtZSA9IGV2ZW50
LnNvdXJjZTsKLSAgICBsbmFtZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLmxlZnRCb3VuZCgiRG9l
IiwgZmFsc2UpLCBJREJDdXJzb3IuTkVYVF9OT19EVVBMSUNBVEUpOwotICAgIGxuYW1lLm9wZW5D
dXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVZfTk9fRFVQTElDQVRFKTsKLSAgICBsbmFtZS5vcGVu
Q3Vyc29yKElEQktleVJhbmdlLnJpZ2h0Qm91bmQoIlpaWloiKSk7Ci0gICAgbG5hbWUub3BlbkN1
cnNvcihJREJLZXlSYW5nZS5vbmx5KCJEb2UiKSwgSURCQ3Vyc29yLlBSRVYpOworICAgIGxuYW1l
Lm9wZW5DdXJzb3Ioe3JhbmdlOiBJREJLZXlSYW5nZS5sZWZ0Qm91bmQoIkRvZSIsIGZhbHNlKSwg
ZGlyZWN0aW9uOiBJREJDdXJzb3IuTkVYVF9OT19EVVBMSUNBVEV9KTsKKyAgICBsbmFtZS5vcGVu
Q3Vyc29yKHtkaXJlY3Rpb246IElEQkN1cnNvci5QUkVWX05PX0RVUExJQ0FURX0pOworICAgIGxu
YW1lLm9wZW5DdXJzb3Ioe3JhbmdlOiBJREJLZXlSYW5nZS5yaWdodEJvdW5kKCJaWlpaIil9KTsK
KyAgICBsbmFtZS5vcGVuQ3Vyc29yKHtyYW5nZTogSURCS2V5UmFuZ2Uub25seSgiRG9lIiksIGRp
cmVjdGlvbjogSURCQ3Vyc29yLlBSRVZ9KTsKICAgICBsbmFtZS5vcGVuQ3Vyc29yKCk7CiAgICAg
bG5hbWUub3BlbktleUN1cnNvcigpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU3MTNkOTQuLjI1MGI3NjcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMzUgQEAK
IAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBDb252ZXJ0
IG9wZW4qQ3Vyc29yIGFuZCBjcmVhdGVJbmRleCBvdmVyIHRvIHVzaW5nIE9wdGlvbnNPYmplY3QK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMDkzCisK
KyAgICAgICAgQWRkIElEQktleVJhbmdlIHRvIE9wdGlvbnNPYmplY3QncyBwYXJzaW5nIGFiaWxp
dGllcy4gU3dpdGNoCisgICAgICAgIG1vcmUgQVBJcyBvdmVyIHRvIHVzaW5nIGl0LgorCisgICAg
ICAgICogYmluZGluZ3MvdjgvT3B0aW9uc09iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpP
cHRpb25zT2JqZWN0OjpnZXRLZXlET01TdHJpbmdMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
dGlvbnNPYmplY3Q6OmdldEtleUtleVJhbmdlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9PcHRp
b25zT2JqZWN0Lmg6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6b3BlbktleUN1cnNvcik6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SURCSW5kZXg6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURC
SW5kZXg6Om9wZW5LZXlDdXJzb3IpOgorICAgICAgICAqIHN0b3JhZ2UvSURCSW5kZXguaWRsOgor
ICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmg6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IpOgorICAgICAgICAqIHN0b3Jh
Z2UvSURCT2JqZWN0U3RvcmUuaWRsOgorCisyMDEwLTExLTI1ICBKZXJlbXkgT3Jsb3cgIDxqb3Js
b3dAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CiAgICAgICAgIENsZWFuIHVwIElEQkRhdGFiYXNlLnRyYW5zYWN0aW9uIGFuZCBhZGQgY2hlY2tz
IHRvIElEQlRyYW5zYWN0aW9uLm9iamVjdFN0b3JlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDA4MQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L09wdGlvbnNPYmplY3QuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2Jq
ZWN0LmNwcAppbmRleCAxNjg5MjE3Li41YzA4MTczIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L09wdGlvbnNPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0aW9u
c09iamVjdC5jcHAKQEAgLTMwLDYgKzMwLDExIEBACiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1
ZGUgIlY4QmluZGluZy5oIgogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjaW5jbHVk
ZSAiSURCS2V5UmFuZ2UuaCIKKyNpbmNsdWRlICJWOElEQktleVJhbmdlLmgiCisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBPcHRpb25zT2JqZWN0OjpPcHRpb25zT2JqZWN0KCkKQEAg
LTEwNSw3ICsxMTAsNyBAQCBTdHJpbmcgT3B0aW9uc09iamVjdDo6Z2V0S2V5U3RyaW5nKGNvbnN0
IFN0cmluZyYga2V5KSBjb25zdAogICAgIHJldHVybiB2OFZhbHVlVG9XZWJDb3JlU3RyaW5nKHY4
VmFsdWUpOwogfQogCi1SZWZQdHI8RE9NU3RyaW5nTGlzdD4gT3B0aW9uc09iamVjdDo6Z2V0S2V5
RE9NU3RyaW5nTGlzdChjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKK1Bhc3NSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gT3B0aW9uc09iamVjdDo6Z2V0S2V5RE9NU3RyaW5nTGlzdChjb25zdCBTdHJpbmcm
IGtleSkgY29uc3QKIHsKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OFZhbHVlOwogICAgIGlm
ICghZ2V0S2V5KGtleSwgdjhWYWx1ZSkpCkBAIC0xMjUsNiArMTMwLDIyIEBAIFJlZlB0cjxET01T
dHJpbmdMaXN0PiBPcHRpb25zT2JqZWN0OjpnZXRLZXlET01TdHJpbmdMaXN0KGNvbnN0IFN0cmlu
ZyYga2V5KSBjb25zCiAgICAgcmV0dXJuIHJldC5yZWxlYXNlKCk7CiB9CiAKKyNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKKworUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gT3B0aW9uc09iamVj
dDo6Z2V0S2V5S2V5UmFuZ2UoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0Cit7CisgICAgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdjhWYWx1ZTsKKyAgICBpZiAoIWdldEtleShrZXksIHY4VmFsdWUpKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghVjhJREJLZXlSYW5nZTo6SGFzSW5zdGFuY2Uo
djhWYWx1ZSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIFY4SURCS2V5UmFuZ2U6
OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodjhWYWx1ZSkpOworfQorCisj
ZW5kaWYKKwogYm9vbCBPcHRpb25zT2JqZWN0OjpnZXRLZXkoY29uc3QgU3RyaW5nJiBrZXksIHY4
OjpMb2NhbDx2ODo6VmFsdWU+JiB2YWx1ZSkgY29uc3QKIHsKICAgICBpZiAoaXNVbmRlZmluZWRP
ck51bGwoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0aW9uc09iamVjdC5o
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmgKaW5kZXggYTIyZDNhMS4uNGUx
ZWMyZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmgKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmgKQEAgLTMzLDYgKzMzLDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NU3RyaW5nTGlzdDsKK2NsYXNzIElEQktl
eVJhbmdlOwogCiBjbGFzcyBPcHRpb25zT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTQ2LDcgKzQ3LDgg
QEAgcHVibGljOgogICAgIGJvb2wgZ2V0S2V5Qm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCYg
dmFsdWUpIGNvbnN0OwogICAgIGJvb2wgZ2V0S2V5SW50ZWdlcihjb25zdCBTdHJpbmcmIGtleSwg
aW50NjRfdCYgdmFsdWUpIGNvbnN0OwogICAgIFN0cmluZyBnZXRLZXlTdHJpbmcoY29uc3QgU3Ry
aW5nJiBrZXkpIGNvbnN0OwotICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBnZXRLZXlET01TdHJp
bmdMaXN0KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPERPTVN0cmlu
Z0xpc3Q+IGdldEtleURPTVN0cmluZ0xpc3QoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OworICAg
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGdldEtleUtleVJhbmdlKGNvbnN0IFN0cmluZyYga2V5
KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBib29sIGdldEtleShjb25zdCBTdHJpbmcmIGtleSwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFn
ZS9JREJJbmRleC5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguY3BwCmluZGV4IGEwMDg0
NzAuLmFlY2JhMTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5jcHAKKysr
IGIvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURC
SW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAi
SURCS2V5UmFuZ2UuaCIKQEAgLTM3LDYgKzM4LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGVmYXVsdERpcmVjdGlvbiA9IElEQkN1cnNv
cjo6TkVYVDsKKwogSURCSW5kZXg6OklEQkluZGV4KFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5k
SW50ZXJmYWNlPiBiYWNrZW5kLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5z
YWN0aW9uKQogICAgIDogbV9iYWNrZW5kKGJhY2tlbmQpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRy
YW5zYWN0aW9uKQpAQCAtNDksOCArNTIsMTkgQEAgSURCSW5kZXg6On5JREJJbmRleCgpCiB7CiB9
CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2Us
IHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IE9wdGlvbnNPYmplY3QmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogeworICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBvcHRpb25zLmdldEtleUtl
eVJhbmdlKCJyYW5nZSIpOworCisgICAgLy8gQ29udmVydGVkIHRvIGFuIHVuc2lnbmVkIHNob3J0
LgorICAgIGludDY0X3QgZGlyZWN0aW9uID0gZGVmYXVsdERpcmVjdGlvbjsKKyAgICBvcHRpb25z
LmdldEtleUludGVnZXIoImRpcmVjdGlvbiIsIGRpcmVjdGlvbik7CisgICAgaWYgKGRpcmVjdGlv
biAhPSBJREJDdXJzb3I6Ok5FWFQgJiYgZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6TkVYVF9OT19E
VVBMSUNBVEUgJiYgZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6UFJFViAmJiBkaXJlY3Rpb24gIT0g
SURCQ3Vyc29yOjpQUkVWX05PX0RVUExJQ0FURSkgeworICAgICAgICAvLyBGSVhNRTogTWF5IG5l
ZWQgdG8gY2hhbmdlIHdoZW4gc3BlY2NlZDogaHR0cDovL3d3dy53My5vcmcvQnVncy9QdWJsaWMv
c2hvd19idWcuY2dpP2lkPTExNDA2CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OkNPTlNUUkFJTlRfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBSZWZQdHI8
SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6
OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5vcGVu
Q3Vyc29yKGtleVJhbmdlLCBkaXJlY3Rpb24sIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24uZ2V0KCks
IGVjKTsKICAgICBpZiAoZWMpCkBAIC01OCw4ICs3MiwxOSBAQCBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhcwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
QkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24s
IEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3Bl
bktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBPcHRpb25z
T2JqZWN0JiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBSZWZQdHI8SURCS2V5
UmFuZ2U+IGtleVJhbmdlID0gb3B0aW9ucy5nZXRLZXlLZXlSYW5nZSgicmFuZ2UiKTsKKworICAg
IC8vIENvbnZlcnRlZCB0byBhbiB1bnNpZ25lZCBzaG9ydC4KKyAgICBpbnQ2NF90IGRpcmVjdGlv
biA9IGRlZmF1bHREaXJlY3Rpb247CisgICAgb3B0aW9ucy5nZXRLZXlJbnRlZ2VyKCJkaXJlY3Rp
b24iLCBkaXJlY3Rpb24pOworICAgIGlmIChkaXJlY3Rpb24gIT0gSURCQ3Vyc29yOjpORVhUICYm
IGRpcmVjdGlvbiAhPSBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRFICYmIGRpcmVjdGlvbiAh
PSBJREJDdXJzb3I6OlBSRVYgJiYgZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6UFJFVl9OT19EVVBM
SUNBVEUpIHsKKyAgICAgICAgLy8gRklYTUU6IE1heSBuZWVkIHRvIGNoYW5nZSB3aGVuIHNwZWNj
ZWQ6IGh0dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD0xMTQwNgor
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUjsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJ
REJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNh
Y3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+b3BlbktleUN1cnNvcihrZXlSYW5nZSwgZGly
ZWN0aW9uLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLmdldCgpLCBlYyk7CiAgICAgaWYgKGVjKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmggYi9XZWJDb3JlL3N0b3JhZ2Uv
SURCSW5kZXguaAppbmRleCA0YTFhNjY2Li4yOTk3NGRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0
b3JhZ2UvSURCSW5kZXguaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIklEQkN1cnNvci5oIgogI2luY2x1ZGUgIklEQkluZGV4QmFj
a2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCisjaW5jbHVkZSAiT3B0
aW9uc09iamVjdC5oIgogI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC01MiwxMyArNTMsMTEgQEAg
cHVibGljOgogICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT51bmlx
dWUoKTsgfQogCiAgICAgLy8gRklYTUU6IFRyeSB0byBtb2RpZnkgdGhlIGNvZGUgZ2VuZXJhdG9y
IHNvIHRoaXMgaXMgdW5uZWVkZWQuCi0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vy
c29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7
IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIDAsIGVjKTsgfQotICAgIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJu
IG9wZW5DdXJzb3IoY29udGV4dCwga2V5UmFuZ2UsIElEQkN1cnNvcjo6TkVYVCwgZWMpOyB9Ci0g
ICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuS2V5Q3Vyc29y
KGNvbnRleHQsIDAsIGVjKTsgfQotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbktleUN1
cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5LZXlDdXJzb3Io
Y29udGV4dCwga2V5UmFuZ2UsIElEQkN1cnNvcjo6TkVYVCwgZWMpOyB9CisgICAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIE9wdGlvbnNP
YmplY3QoKSwgZWMpOyB9CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29y
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJl
dHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIE9wdGlvbnNPYmplY3QoKSwgZWMpOyB9CiAKLSAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25l
ZCBzaG9ydCBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IE9wdGlvbnNP
YmplY3QmLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVu
S2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBPcHRpb25zT2JqZWN0Jiwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjxJREJLZXk+LCBFeGNlcHRpb25Db2RlJik7CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvc3RvcmFnZS9JREJJbmRleC5pZGwgYi9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaWRsCmlu
ZGV4IDdjMmM5NjIuLmU2YmExZTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRl
eC5pZGwKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmlkbApAQCAtMzMsOSArMzMsOSBA
QCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcg
a2V5UGF0aDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gdW5pcXVlOwogCi0g
ICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IG9wZW5D
dXJzb3IoaW4gW09wdGlvbmFsXSBJREJLZXlSYW5nZSByYW5nZSwgaW4gW09wdGlvbmFsXSB1bnNp
Z25lZCBzaG9ydCBkaXJlY3Rpb24pCisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25D
b250ZXh0XSBJREJSZXF1ZXN0IG9wZW5DdXJzb3IoaW4gW09wdGlvbmFsXSBPcHRpb25zT2JqZWN0
IG9wdGlvbnMpCiAgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKLSAg
ICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3Qgb3Blbktl
eUN1cnNvcihpbiBbT3B0aW9uYWxdIElEQktleVJhbmdlIHJhbmdlLCBpbiBbT3B0aW9uYWxdIHVu
c2lnbmVkIHNob3J0IGRpcmVjdGlvbikKKyAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRdIElEQlJlcXVlc3Qgb3BlbktleUN1cnNvcihpbiBbT3B0aW9uYWxdIE9wdGlvbnNP
YmplY3Qgb3B0aW9ucykKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24p
OwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBn
ZXQoaW4gSURCS2V5IGtleSkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRp
b24pOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBiL1dl
YkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggYzMwMjQzZS4uZTNkNjczZSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9XZWJD
b3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0yNiw4ICsyNiwxMSBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAKKyNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKKwogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRl
ICJJREJBbnkuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUg
IklEQkluZGV4LmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2Uu
aCIKQEAgLTM1LDEwICszOCwxMCBAQAogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCi0jaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IGRlZmF1bHREaXJlY3Rpb24gPSBJREJDdXJzb3I6Ok5FWFQ7CisKIElEQk9iamVjdFN0b3Jl
OjpJREJPYmplY3RTdG9yZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZT4gaWRiT2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNh
Y3Rpb24pCiAgICAgOiBtX29iamVjdFN0b3JlKGlkYk9iamVjdFN0b3JlKQogICAgICwgbV90cmFu
c2FjdGlvbih0cmFuc2FjdGlvbikKQEAgLTEwMCw4ICsxMDMsMTEgQEAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cmVtb3ZlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFAKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAotUGFzc1JlZlB0cjxJREJJbmRleD4g
SURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRy
PElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGNvbnN0IE9wdGlvbnNPYmplY3QmIG9wdGlvbnMsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIGJvb2wgdW5pcXVlID0gZmFsc2U7CisgICAgb3B0aW9u
cy5nZXRLZXlCb29sKCJ1bmlxdWUiLCB1bmlxdWUpOworCiAgICAgUmVmUHRyPElEQkluZGV4QmFj
a2VuZEludGVyZmFjZT4gaW5kZXggPSBtX29iamVjdFN0b3JlLT5jcmVhdGVJbmRleChuYW1lLCBr
ZXlQYXRoLCB1bmlxdWUsIG1fdHJhbnNhY3Rpb24uZ2V0KCksIGVjKTsKICAgICBBU1NFUlQoIWlu
ZGV4ICE9ICFlYyk7IC8vIElmIHdlIGRpZG4ndCBnZXQgYW4gaW5kZXgsIHdlIHNob3VsZCBoYXZl
IGdvdHRlbiBhbiBleGNlcHRpb24gY29kZS4gQW5kIHZpY2UgdmVyc2EuCiAgICAgaWYgKCFpbmRl
eCkKQEAgLTEyMyw4ICsxMjksMTkgQEAgdm9pZCBJREJPYmplY3RTdG9yZTo6cmVtb3ZlSW5kZXgo
Y29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBtX29iamVjdFN0b3Jl
LT5yZW1vdmVJbmRleChuYW1lLCBtX3RyYW5zYWN0aW9uLmdldCgpLCBlYyk7CiB9CiAKLVBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVuc2ln
bmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IE9wdGlvbnNPYmplY3QmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogeworICAgIFJlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UgPSBvcHRpb25zLmdldEtleUtleVJh
bmdlKCJyYW5nZSIpOworCisgICAgLy8gQ29udmVydGVkIHRvIGFuIHVuc2lnbmVkIHNob3J0Lgor
ICAgIGludDY0X3QgZGlyZWN0aW9uID0gZGVmYXVsdERpcmVjdGlvbjsKKyAgICBvcHRpb25zLmdl
dEtleUludGVnZXIoImRpcmVjdGlvbiIsIGRpcmVjdGlvbik7CisgICAgaWYgKGRpcmVjdGlvbiAh
PSBJREJDdXJzb3I6Ok5FWFQgJiYgZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6TkVYVF9OT19EVVBM
SUNBVEUgJiYgZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6UFJFViAmJiBkaXJlY3Rpb24gIT0gSURC
Q3Vyc29yOjpQUkVWX05PX0RVUExJQ0FURSkgeworICAgICAgICAvLyBGSVhNRTogTWF5IG5lZWQg
dG8gY2hhbmdlIHdoZW4gc3BlY2NlZDogaHR0cDovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hv
d19idWcuY2dpP2lkPTExNDA2CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkNP
TlNUUkFJTlRfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBSZWZQdHI8SURC
UmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNy
ZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9vYmplY3RTdG9yZS0+b3Bl
bkN1cnNvcihyYW5nZSwgZGlyZWN0aW9uLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLmdldCgpLCBl
Yyk7CiAgICAgaWYgKGVjKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0
b3JlLmggYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaAppbmRleCBkYzkyMjMzLi41
Njc2MDFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaAorKysg
Yi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIklEQktleVJhbmdlLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCUmVxdWVzdC5oIgorI2luY2x1ZGUgIk9wdGlvbnNPYmpl
Y3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC02MSwyMCArNjIs
MTkgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBUcnkgdG8gbW9kaWZ5IHRoZSBjb2RlIGdlbmVy
YXRvciBzbyB0aGlzIGlzIHVubmVlZGVkLgogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gYWRk
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGFkZChjb250ZXh0
LCB2YWx1ZSwgMCwgZWMpOyAgfQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIHB1dChjb250ZXh0LCB2YWx1
ZSwgMCwgZWMpOyAgfQotICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0ZUluZGV4KGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBFeGNlcHRpb25Db2RlJiBlYykg
eyByZXR1cm4gY3JlYXRlSW5kZXgobmFtZSwga2V5UGF0aCwgZmFsc2UsIGVjKTsgfQotICAgIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCAw
LCBlYyk7IH0KLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2Us
IEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleVJhbmdl
LCBJREJDdXJzb3I6Ok5FWFQsIGVjKTsgfQorICAgIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0
ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBFeGNlcHRp
b25Db2RlJiBlYykgeyByZXR1cm4gY3JlYXRlSW5kZXgobmFtZSwga2V5UGF0aCwgT3B0aW9uc09i
amVjdCgpLCBlYyk7IH0KKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJu
IG9wZW5DdXJzb3IoY29udGV4dCwgT3B0aW9uc09iamVjdCgpLCBlYyk7IH0KIAogICAgIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGFk
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+LCBQYXNzUmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IHB1dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHJlbW92ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgUGFzc1Jl
ZlB0cjxJREJJbmRleD4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0
cjxJREJJbmRleD4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgsIGNvbnN0IE9wdGlvbnNPYmplY3QmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFz
c1JlZlB0cjxJREJJbmRleD4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdm9pZCByZW1vdmVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmKTsKIAotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRp
cmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3Bl
bkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgT3B0aW9uc09iamVjdCYsIEV4
Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0ZToKICAgICBJREJPYmplY3RTdG9yZShQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4sIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSogdHJhbnNhY3Rpb24pOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9i
amVjdFN0b3JlLmlkbCBiL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5pZGwKaW5kZXgg
MzFlYjg2NS4uYjMxMTVlOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0
b3JlLmlkbAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRsCkBAIC00MCw5
ICs0MCw5IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJh
c2VFeGNlcHRpb24pOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0g
SURCUmVxdWVzdCBnZXQoaW4gSURCS2V5IGtleSkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0
YWJhc2VFeGNlcHRpb24pOwotICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dF0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKGluIFtPcHRpb25hbF0gSURCS2V5UmFuZ2UgcmFuZ2Us
IGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uKQorICAgICAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKGluIFtPcHRp
b25hbF0gT3B0aW9uc09iamVjdCBvcHRpb25zKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRh
YmFzZUV4Y2VwdGlvbik7Ci0gICAgICAgIElEQkluZGV4IGNyZWF0ZUluZGV4KGluIERPTVN0cmlu
ZyBuYW1lLCBpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBrZXlQYXRoLCBp
biBbT3B0aW9uYWxdIGJvb2xlYW4gdW5pcXVlKQorICAgICAgICBJREJJbmRleCBjcmVhdGVJbmRl
eChpbiBET01TdHJpbmcgbmFtZSwgaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJp
bmcga2V5UGF0aCwgaW4gW09wdGlvbmFsXSBPcHRpb25zT2JqZWN0IG9wdGlvbnMpCiAgICAgICAg
ICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9uKTsKICAgICAgICAgSURCSW5kZXggaW5k
ZXgoaW4gRE9NU3RyaW5nIG5hbWUpCiAgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhj
ZXB0aW9uKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74919</attachid>
            <date>2010-11-26 04:30:50 -0800</date>
            <delta_ts>2010-11-26 05:18:01 -0800</delta_ts>
            <desc>patch</desc>
            <filename>a</filename>
            <type>text/plain</type>
            <size>23993</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5MzJlYzE1Li4xZjFkMjYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjEgQEAKIAogICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBDb252ZXJ0IG9wZW4qQ3Vy
c29yIGFuZCBjcmVhdGVJbmRleCBvdmVyIHRvIHVzaW5nIE9wdGlvbnNPYmplY3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMDkzCisKKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jdXJzb3IuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sOgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWN1cnNvci5odG1sOgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL29wZW4tY3Vyc29yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9vcGVuLWN1cnNvci5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3R1
dG9yaWFsLmh0bWw6CisKKzIwMTAtMTEtMjUgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAg
Q2xlYW4gdXAgSURCRGF0YWJhc2UudHJhbnNhY3Rpb24gYW5kIGFkZCBjaGVja3MgdG8gSURCVHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUwMDgxCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL2luZGV4LWN1cnNvci5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
aW5kZXgtY3Vyc29yLmh0bWwKaW5kZXggYzdiNjFkYi4uNmE4MTUxNCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtY3Vyc29yLmh0bWwKQEAgLTE4Nyw3ICsxODcs
NyBAQCBmdW5jdGlvbiBydW5OZXh0VGVzdCgpCiAgICAgZWxzZQogICAgICAgICBrZXlSYW5nZSA9
IHdlYmtpdElEQktleVJhbmdlLnJpZ2h0Qm91bmQodGVzdERhdGFbdXBwZXJdLCB1cHBlcklzT3Bl
bik7CiAgCi0gICAgdmFyIHJlcXVlc3QgPSBpbmRleE9iamVjdC5vcGVuS2V5Q3Vyc29yKGtleVJh
bmdlLCBhc2NlbmRpbmcgPyB3ZWJraXRJREJDdXJzb3IuTkVYVCA6IHdlYmtpdElEQkN1cnNvci5Q
UkVWKTsKKyAgICB2YXIgcmVxdWVzdCA9IGluZGV4T2JqZWN0Lm9wZW5LZXlDdXJzb3Ioe3Jhbmdl
OiBrZXlSYW5nZSwgZGlyZWN0aW9uOiBhc2NlbmRpbmcgPyB3ZWJraXRJREJDdXJzb3IuTkVYVCA6
IHdlYmtpdElEQkN1cnNvci5QUkVWfSk7CiAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJzb3JJ
dGVyYXRpb247CiAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CiB9CkBAIC0yNTQsNyArMjU0LDcgQEAgZnVuY3Rpb24gdGVzdE51bGxLZXlSYW5nZSgpCiAgICAg
ZGVidWcoIiIpOwogICAgIGRlYnVnKHN0cik7CiAgCi0gICAgdmFyIHJlcXVlc3QgPSBpbmRleE9i
amVjdC5vcGVuS2V5Q3Vyc29yKG51bGwsIGFzY2VuZGluZyA/IHdlYmtpdElEQkN1cnNvci5ORVhU
IDogd2Via2l0SURCQ3Vyc29yLlBSRVYpOworICAgIHZhciByZXF1ZXN0ID0gaW5kZXhPYmplY3Qu
b3BlbktleUN1cnNvcih7ZGlyZWN0aW9uOiBhc2NlbmRpbmcgPyB3ZWJraXRJREJDdXJzb3IuTkVY
VCA6IHdlYmtpdElEQkN1cnNvci5QUkVWfSk7CiAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjdXJz
b3JJdGVyYXRpb247CiAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3Rz
dG9yZS1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
b2JqZWN0c3RvcmUtYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRleCAwMmNhOTI0Li40NjJiZjg4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNp
Y3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVj
dHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQKQEAgLTU0LDcgKzU0LDcgQEAgQXNrIGZvciBhbiBp
bmRleCB0aGF0IGRvZXNuJ3QgZXhpc3Q6CiBpbmRleCA9IHN0b3JlLmluZGV4KCdhc2RmJykKIFBB
U1MgRXhjZXB0aW9uIHRocm93bi4KIGNyZWF0ZUluZGV4KCk6Ci1pbmRleCA9IHN0b3JlLmNyZWF0
ZUluZGV4KCdpbmRleE5hbWUnLCAneCcsIHRydWUpCitpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4
KCdpbmRleE5hbWUnLCAneCcsIHt1bmlxdWU6IHRydWV9KQogUEFTUyBpbmRleCAhPT0gbnVsbCBp
cyB0cnVlCiBQQVNTIHN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFtZScpIGlzIHRy
dWUKIGluZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4TmFtZScpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sCmluZGV4IGYzZTFl
YTkuLjlkYmY3YTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdHN0b3JlLWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L29iamVjdHN0b3JlLWJhc2ljcy5odG1sCkBAIC03Myw3ICs3Myw3IEBAIGZ1bmN0aW9uIGNyZWF0
ZU9iamVjdFN0b3JlKCkKIGZ1bmN0aW9uIGNyZWF0ZUluZGV4KCkKIHsKICAgICBkZWJ1ZygiY3Jl
YXRlSW5kZXgoKToiKTsKLSAgICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3Jl
LmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAneCcsIHRydWUpIik7IC8vIHRydWUgPT0gdW5pcXVl
IHJlcXVpcmVtZW50LgorICAgIHZhciBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUu
Y3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICd4Jywge3VuaXF1ZTogdHJ1ZX0pIik7IC8vIHRydWUg
PT0gdW5pcXVlIHJlcXVpcmVtZW50LgogICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXggIT09IG51bGwi
KTsKICAgICBzaG91bGRCZVRydWUoInN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoJ2luZGV4TmFt
ZScpIik7CiAgICAgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRl
eE5hbWUnKSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2Jq
ZWN0c3RvcmUtY3Vyc29yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmpl
Y3RzdG9yZS1jdXJzb3IuaHRtbAppbmRleCAyNDk3NDc5Li4yMTVlYzkxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jdXJzb3IuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jdXJzb3IuaHRtbApA
QCAtMTY1LDcgKzE2NSw3IEBAIGZ1bmN0aW9uIHJ1bk5leHRUZXN0KCkKICAgICBlbHNlCiAgICAg
ICAgIGtleVJhbmdlID0gd2Via2l0SURCS2V5UmFuZ2UucmlnaHRCb3VuZCh0ZXN0RGF0YVt1cHBl
cl0sIHVwcGVySXNPcGVuKTsKICAKLSAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLm9wZW5D
dXJzb3Ioa2V5UmFuZ2UsIGFzY2VuZGluZyA/IHdlYmtpdElEQkN1cnNvci5ORVhUIDogd2Via2l0
SURCQ3Vyc29yLlBSRVYpOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNv
cih7cmFuZ2U6IGtleVJhbmdlLCBkaXJlY3Rpb246IGFzY2VuZGluZyA/IHdlYmtpdElEQkN1cnNv
ci5ORVhUIDogd2Via2l0SURCQ3Vyc29yLlBSRVZ9KTsKICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGN1cnNvckl0ZXJhdGlvbjsKICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKIH0KQEAgLTIzMSw3ICsyMzEsNyBAQCBmdW5jdGlvbiB0ZXN0TnVsbEtleVJhbmdl
KCkKICAgICBkZWJ1ZygiIik7CiAgICAgZGVidWcoc3RyKTsKICAKLSAgICB2YXIgcmVxdWVzdCA9
IG9iamVjdFN0b3JlLm9wZW5DdXJzb3IobnVsbCwgYXNjZW5kaW5nID8gd2Via2l0SURCQ3Vyc29y
Lk5FWFQgOiB3ZWJraXRJREJDdXJzb3IuUFJFVik7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RT
dG9yZS5vcGVuQ3Vyc29yKHtkaXJlY3Rpb246IGFzY2VuZGluZyA/IHdlYmtpdElEQkN1cnNvci5O
RVhUIDogd2Via2l0SURCQ3Vyc29yLlBSRVZ9KTsKICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGN1
cnNvckl0ZXJhdGlvbjsKICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4t
Y3Vyc29yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4t
Y3Vyc29yLWV4cGVjdGVkLnR4dAppbmRleCBkZGFhNTFhLi5kNDA0MzZjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWN1cnNvci1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3ItZXhwZWN0ZWQudHh0
CkBAIC01MCw3ICs1MCw3IEBAIFBBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCiBB
biBldmVudCBzaG91bGQgZmlyZSBzaG9ydGx5Li4uCiAKIE9wZW5pbmcgY3Vyc29yCi1ldmVudC5z
b3VyY2Uub3BlbkN1cnNvcihrZXlSYW5nZSkKK2V2ZW50LnNvdXJjZS5vcGVuQ3Vyc29yKHtyYW5n
ZToga2V5UmFuZ2V9KQogUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQogUEFTUyAn
b25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKIFBBU1MgJ3JlYWR5U3RhdGUnIGluIHJlc3VsdCBp
cyB0cnVlCkBAIC03Niw3ICs3Niw3IEBAIFBhc3NpbmcgYW4gaW52YWxpZCBrZXkgaW50byAuY29u
dGludWUoKS4KIFBBU1MgQ2F1Z2h0IGV4Y2VwdGlvbjogRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJS
OiBET00gRXhjZXB0aW9uIDE3CiAKIE9wZW5pbmcgYW4gZW1wdHkgY3Vyc29yLgotb2JqZWN0U3Rv
cmUub3BlbkN1cnNvcihrZXlSYW5nZSkKK29iamVjdFN0b3JlLm9wZW5DdXJzb3Ioe3JhbmdlOiBr
ZXlSYW5nZX0pCiBQQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCiBQQVNTICdvbmVy
cm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQogUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRy
dWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY3Vyc29y
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWN1cnNvci5odG1sCmlu
ZGV4IDdlNmFmOWEuLmM1ZGQ3ZDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL29wZW4tY3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvb3Blbi1jdXJzb3IuaHRtbApAQCAtMjYsNyArMjYsNyBAQCBmdW5jdGlvbiBvcGVuRW1wdHlD
dXJzb3IoKQogewogICAgIGRlYnVnKCJPcGVuaW5nIGFuIGVtcHR5IGN1cnNvci4iKTsKICAgICBr
ZXlSYW5nZSA9IHdlYmtpdElEQktleVJhbmdlLmxlZnRCb3VuZCgiSW5leGlzdGVudEtleSIpOwot
ICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2Up
Iik7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUub3BlbkN1cnNvcih7cmFu
Z2U6IGtleVJhbmdlfSkiKTsKICAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKICAgICByZXN1bHQu
b25zdWNjZXNzID0gZW1wdHlDdXJzb3JTdWNjZXNzOwogICAgIHJlc3VsdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CkBAIC01Niw3ICs1Niw3IEBAIGZ1bmN0aW9uIG9wZW5DdXJz
b3IoKQogewogICAgIGRlYnVnKCJPcGVuaW5nIGN1cnNvciIpOwogICAgIGtleVJhbmdlID0gd2Vi
a2l0SURCS2V5UmFuZ2UubGVmdEJvdW5kKCJteUtleSIpOwotICAgIHJlc3VsdCA9IGV2YWxBbmRM
b2coImV2ZW50LnNvdXJjZS5vcGVuQ3Vyc29yKGtleVJhbmdlKSIpOworICAgIHJlc3VsdCA9IGV2
YWxBbmRMb2coImV2ZW50LnNvdXJjZS5vcGVuQ3Vyc29yKHtyYW5nZToga2V5UmFuZ2V9KSIpOwog
ICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOwogICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBjdXJzb3JT
dWNjZXNzOwogICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90dXRvcmlhbC5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHV0b3JpYWwuaHRtbAppbmRleCAxMzRmOWRl
Li5jOTBhMmJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90dXRv
cmlhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3R1dG9yaWFsLmh0
bWwKQEAgLTM0Miw3ICszNDIsNyBAQCBmdW5jdGlvbiBvbkdldFN1Y2Nlc3MoKQogICAgIC8vIHJl
dHVybiB1bmlxdWUgZW50aXJlcyAob25seSBhcHBsaWVzIHRvIGluZGV4ZXMgd2l0aCB1bmlxdWUg
c2V0IHRvIGZhbHNlKSwgUFJFViB0byBtb3ZlIGJhY2t3YXJkcywKICAgICAvLyBhbmQgUFJFVl9O
T19EVVBMSUNBVEUuCiAgICAgdmFyIGtleVJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQoMSwgMywg
dHJ1ZSwgZmFsc2UpOwotICAgIHZhciByZXF1ZXN0ID0gcGVvcGxlLm9wZW5DdXJzb3Ioa2V5UmFu
Z2UsIElEQkN1cnNvci5ORVhUKTsKKyAgICB2YXIgcmVxdWVzdCA9IHBlb3BsZS5vcGVuQ3Vyc29y
KHtyYW5nZToga2V5UmFuZ2UsIGRpcmVjdGlvbjogSURCQ3Vyc29yLk5FWFR9KTsKICAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IG9uT2JqZWN0U3RvcmVDdXJzb3I7CiAgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yOwogfQpAQCAtMzk1LDEwICszOTUsMTAgQEAgZnVuY3Rpb24gb25J
bmRleEdldFN1Y2Nlc3MoKQogICAgIC8vIGRpZmZlcmVudCBJREJLZXlSYW5nZXMganVzdCB0byBk
ZW1vbnN0cmF0ZSBob3cgdG8gdXNlIHRoZW0sIGJ1dCB3ZSB3b24ndCBib3RoZXIgdG8gaGFuZGxl
CiAgICAgLy8gdGhlIG9uc3VjY2VzcyBjb25kaXRpb25zLgogICAgIHZhciBsbmFtZSA9IGV2ZW50
LnNvdXJjZTsKLSAgICBsbmFtZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLmxlZnRCb3VuZCgiRG9l
IiwgZmFsc2UpLCBJREJDdXJzb3IuTkVYVF9OT19EVVBMSUNBVEUpOwotICAgIGxuYW1lLm9wZW5D
dXJzb3IobnVsbCwgSURCQ3Vyc29yLlBSRVZfTk9fRFVQTElDQVRFKTsKLSAgICBsbmFtZS5vcGVu
Q3Vyc29yKElEQktleVJhbmdlLnJpZ2h0Qm91bmQoIlpaWloiKSk7Ci0gICAgbG5hbWUub3BlbkN1
cnNvcihJREJLZXlSYW5nZS5vbmx5KCJEb2UiKSwgSURCQ3Vyc29yLlBSRVYpOworICAgIGxuYW1l
Lm9wZW5DdXJzb3Ioe3JhbmdlOiBJREJLZXlSYW5nZS5sZWZ0Qm91bmQoIkRvZSIsIGZhbHNlKSwg
ZGlyZWN0aW9uOiBJREJDdXJzb3IuTkVYVF9OT19EVVBMSUNBVEV9KTsKKyAgICBsbmFtZS5vcGVu
Q3Vyc29yKHtkaXJlY3Rpb246IElEQkN1cnNvci5QUkVWX05PX0RVUExJQ0FURX0pOworICAgIGxu
YW1lLm9wZW5DdXJzb3Ioe3JhbmdlOiBJREJLZXlSYW5nZS5yaWdodEJvdW5kKCJaWlpaIil9KTsK
KyAgICBsbmFtZS5vcGVuQ3Vyc29yKHtyYW5nZTogSURCS2V5UmFuZ2Uub25seSgiRG9lIiksIGRp
cmVjdGlvbjogSURCQ3Vyc29yLlBSRVZ9KTsKICAgICBsbmFtZS5vcGVuQ3Vyc29yKCk7CiAgICAg
bG5hbWUub3BlbktleUN1cnNvcigpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDA4Zjk5MTkuLjJmZmY0MjcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMzUgQEAK
IAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBDb252ZXJ0
IG9wZW4qQ3Vyc29yIGFuZCBjcmVhdGVJbmRleCBvdmVyIHRvIHVzaW5nIE9wdGlvbnNPYmplY3QK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMDkzCisK
KyAgICAgICAgQWRkIElEQktleVJhbmdlIHRvIE9wdGlvbnNPYmplY3QncyBwYXJzaW5nIGFiaWxp
dGllcy4gU3dpdGNoCisgICAgICAgIG1vcmUgQVBJcyBvdmVyIHRvIHVzaW5nIGl0LgorCisgICAg
ICAgICogYmluZGluZ3MvdjgvT3B0aW9uc09iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpP
cHRpb25zT2JqZWN0OjpnZXRLZXlET01TdHJpbmdMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
dGlvbnNPYmplY3Q6OmdldEtleUtleVJhbmdlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9PcHRp
b25zT2JqZWN0Lmg6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6b3BlbktleUN1cnNvcik6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SURCSW5kZXg6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURC
SW5kZXg6Om9wZW5LZXlDdXJzb3IpOgorICAgICAgICAqIHN0b3JhZ2UvSURCSW5kZXguaWRsOgor
ICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmg6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IpOgorICAgICAgICAqIHN0b3Jh
Z2UvSURCT2JqZWN0U3RvcmUuaWRsOgorCisyMDEwLTExLTI1ICBKZXJlbXkgT3Jsb3cgIDxqb3Js
b3dAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CiAgICAgICAgIENsZWFuIHVwIElEQkRhdGFiYXNlLnRyYW5zYWN0aW9uIGFuZCBhZGQgY2hlY2tz
IHRvIElEQlRyYW5zYWN0aW9uLm9iamVjdFN0b3JlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDA4MQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L09wdGlvbnNPYmplY3QuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9PcHRpb25zT2Jq
ZWN0LmNwcAppbmRleCA4ZmM0OTRmLi45OWExMmRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L09wdGlvbnNPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0aW9u
c09iamVjdC5jcHAKQEAgLTMwLDYgKzMwLDExIEBACiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAj
aW5jbHVkZSA8bGltaXRzPgogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjaW5jbHVk
ZSAiSURCS2V5UmFuZ2UuaCIKKyNpbmNsdWRlICJWOElEQktleVJhbmdlLmgiCisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBPcHRpb25zT2JqZWN0OjpPcHRpb25zT2JqZWN0KCkKQEAg
LTEyNSw2ICsxMzAsMjIgQEAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBPcHRpb25zT2JqZWN0
OjpnZXRLZXlET01TdHJpbmdMaXN0KGNvbnN0IFN0cmluZyYga2V5KQogICAgIHJldHVybiByZXQu
cmVsZWFzZSgpOwogfQogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK1Bhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+IE9wdGlvbnNPYmplY3Q6OmdldEtleUtleVJhbmdlKGNvbnN0IFN0cmlu
ZyYga2V5KSBjb25zdAoreworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4VmFsdWU7CisgICAg
aWYgKCFnZXRLZXkoa2V5LCB2OFZhbHVlKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAo
IVY4SURCS2V5UmFuZ2U6Okhhc0luc3RhbmNlKHY4VmFsdWUpKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIHJldHVybiBWOElEQktleVJhbmdlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KHY4VmFsdWUpKTsKK30KKworI2VuZGlmCisKIGJvb2wgT3B0aW9uc09iamVjdDo6
Z2V0S2V5KGNvbnN0IFN0cmluZyYga2V5LCB2ODo6TG9jYWw8djg6OlZhbHVlPiYgdmFsdWUpIGNv
bnN0CiB7CiAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKCkpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0aW9u
c09iamVjdC5oCmluZGV4IDkwYjFlZGMuLjFjNjcyMGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvT3B0aW9uc09iamVjdC5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvT3B0aW9u
c09iamVjdC5oCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IERPTVN0cmluZ0xpc3Q7CitjbGFzcyBJREJLZXlSYW5nZTsKIAogY2xhc3MgT3B0aW9uc09iamVj
dCB7CiBwdWJsaWM6CkBAIC00Niw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGdldEtleUlu
dGVnZXIoY29uc3QgU3RyaW5nJiBrZXksIGludDY0X3QmIHZhbHVlKSBjb25zdDsKICAgICBTdHJp
bmcgZ2V0S2V5U3RyaW5nKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKICAgICBQYXNzUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IGdldEtleURPTVN0cmluZ0xpc3QoY29uc3QgU3RyaW5nJiBrZXkpIGNv
bnN0OworICAgIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGdldEtleUtleVJhbmdlKGNvbnN0IFN0
cmluZyYga2V5KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBib29sIGdldEtleShjb25zdCBTdHJp
bmcmIGtleSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvc3RvcmFnZS9JREJJbmRleC5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguY3BwCmlu
ZGV4IGEwMDg0NzAuLmFlY2JhMTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRl
eC5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmNwcApAQCAtMjksNiArMjksNyBA
QAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5j
bHVkZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCiAj
aW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKQEAgLTM3LDYgKzM4LDggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGVmYXVsdERpcmVjdGlvbiA9
IElEQkN1cnNvcjo6TkVYVDsKKwogSURCSW5kZXg6OklEQkluZGV4KFBhc3NSZWZQdHI8SURCSW5k
ZXhCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqIHRyYW5zYWN0aW9uKQogICAgIDogbV9iYWNrZW5kKGJhY2tlbmQpCiAgICAgLCBtX3RyYW5z
YWN0aW9uKHRyYW5zYWN0aW9uKQpAQCAtNDksOCArNTIsMTkgQEAgSURCSW5kZXg6On5JREJJbmRl
eCgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
a2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IE9wdGlvbnNPYmplY3QmIG9wdGlvbnMsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogeworICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBvcHRpb25z
LmdldEtleUtleVJhbmdlKCJyYW5nZSIpOworCisgICAgLy8gQ29udmVydGVkIHRvIGFuIHVuc2ln
bmVkIHNob3J0LgorICAgIGludDY0X3QgZGlyZWN0aW9uID0gZGVmYXVsdERpcmVjdGlvbjsKKyAg
ICBvcHRpb25zLmdldEtleUludGVnZXIoImRpcmVjdGlvbiIsIGRpcmVjdGlvbik7CisgICAgaWYg
KGRpcmVjdGlvbiAhPSBJREJDdXJzb3I6Ok5FWFQgJiYgZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6
TkVYVF9OT19EVVBMSUNBVEUgJiYgZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6UFJFViAmJiBkaXJl
Y3Rpb24gIT0gSURCQ3Vyc29yOjpQUkVWX05PX0RVUExJQ0FURSkgeworICAgICAgICAvLyBGSVhN
RTogTWF5IG5lZWQgdG8gY2hhbmdlIHdoZW4gc3BlY2NlZDogaHR0cDovL3d3dy53My5vcmcvQnVn
cy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTExNDA2CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OkNPTlNUUkFJTlRfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAg
ICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0
LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9iYWNr
ZW5kLT5vcGVuQ3Vyc29yKGtleVJhbmdlLCBkaXJlY3Rpb24sIHJlcXVlc3QsIG1fdHJhbnNhY3Rp
b24uZ2V0KCksIGVjKTsKICAgICBpZiAoZWMpCkBAIC01OCw4ICs3MiwxOSBAQCBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhcwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1QYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBk
aXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJ
bmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBPcHRpb25zT2JqZWN0JiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBSZWZQ
dHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gb3B0aW9ucy5nZXRLZXlLZXlSYW5nZSgicmFuZ2Ui
KTsKKworICAgIC8vIENvbnZlcnRlZCB0byBhbiB1bnNpZ25lZCBzaG9ydC4KKyAgICBpbnQ2NF90
IGRpcmVjdGlvbiA9IGRlZmF1bHREaXJlY3Rpb247CisgICAgb3B0aW9ucy5nZXRLZXlJbnRlZ2Vy
KCJkaXJlY3Rpb24iLCBkaXJlY3Rpb24pOworICAgIGlmIChkaXJlY3Rpb24gIT0gSURCQ3Vyc29y
OjpORVhUICYmIGRpcmVjdGlvbiAhPSBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRFICYmIGRp
cmVjdGlvbiAhPSBJREJDdXJzb3I6OlBSRVYgJiYgZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6UFJF
Vl9OT19EVVBMSUNBVEUpIHsKKyAgICAgICAgLy8gRklYTUU6IE1heSBuZWVkIHRvIGNoYW5nZSB3
aGVuIHNwZWNjZWQ6IGh0dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9p
ZD0xMTQwNgorICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VS
UjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJl
cXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyks
IG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+b3BlbktleUN1cnNvcihrZXlS
YW5nZSwgZGlyZWN0aW9uLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLmdldCgpLCBlYyk7CiAgICAg
aWYgKGVjKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmggYi9XZWJDb3Jl
L3N0b3JhZ2UvSURCSW5kZXguaAppbmRleCA0YTFhNjY2Li43ZjFhYWUzIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXgu
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIklEQkluZGV4QmFja2VuZEludGVyZmFjZS5o
IgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCiAjaW5jbHVkZSAiSURCUmVxdWVzdC5oIgorI2lu
Y2x1ZGUgIk9wdGlvbnNPYmplY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTUyLDEzICs1MywxMSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCB1bmlxdWUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQtPnVuaXF1ZSgpOyB9CiAKICAg
ICAvLyBGSVhNRTogVHJ5IHRvIG1vZGlmeSB0aGUgY29kZSBnZW5lcmF0b3Igc28gdGhpcyBpcyB1
bm5lZWRlZC4KLSAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5D
dXJzb3IoY29udGV4dCwgMCwgZWMpOyB9Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVu
Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IGtleVJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1cnNvcihj
b250ZXh0LCBrZXlSYW5nZSwgSURCQ3Vyc29yOjpORVhULCBlYyk7IH0KLSAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwgMCwg
ZWMpOyB9Ci0gICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdl
LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbktleUN1cnNvcihjb250ZXh0LCBrZXlS
YW5nZSwgSURCQ3Vyc29yOjpORVhULCBlYyk7IH0KKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29k
ZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwgT3B0aW9uc09iamVjdCgpLCBlYyk7
IH0KKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5LZXlD
dXJzb3IoY29udGV4dCwgT3B0aW9uc09iamVjdCgpLCBlYyk7IH0KIAotICAgIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYp
OwotICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVj
dGlvbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1
cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgT3B0aW9uc09iamVjdCYsIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IE9wdGlvbnNPYmplY3QmLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gZ2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
QktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lE
QkluZGV4LmlkbCBiL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5pZGwKaW5kZXggN2MyYzk2Mi4u
ZTZiYTFlNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmlkbAorKysgYi9X
ZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaWRsCkBAIC0zMyw5ICszMyw5IEBAIG1vZHVsZSBzdG9y
YWdlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBrZXlQYXRoOwogICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB1bmlxdWU7CiAKLSAgICAgICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihpbiBbT3B0
aW9uYWxdIElEQktleVJhbmdlIHJhbmdlLCBpbiBbT3B0aW9uYWxdIHVuc2lnbmVkIHNob3J0IGRp
cmVjdGlvbikKKyAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJl
cXVlc3Qgb3BlbkN1cnNvcihpbiBbT3B0aW9uYWxdIE9wdGlvbnNPYmplY3Qgb3B0aW9ucykKICAg
ICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwotICAgICAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBvcGVuS2V5Q3Vyc29yKGluIFtP
cHRpb25hbF0gSURCS2V5UmFuZ2UgcmFuZ2UsIGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQg
ZGlyZWN0aW9uKQorICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURC
UmVxdWVzdCBvcGVuS2V5Q3Vyc29yKGluIFtPcHRpb25hbF0gT3B0aW9uc09iamVjdCBvcHRpb25z
KQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CiAgICAgICAgIFtD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IGdldChpbiBJREJLZXkg
a2V5KQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwIGIvV2ViQ29yZS9zdG9yYWdl
L0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCBjMzAyNDNlLi5lM2Q2NzNlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9J
REJPYmplY3RTdG9yZS5jcHAKQEAgLTI2LDggKzI2LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKIAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQorCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkFueS5oIgor
I2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCSW5kZXguaCIK
ICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgpAQCAtMzUsMTAg
KzM4LDEwIEBACiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8
d3RmL1VudXNlZFBhcmFtLmg+CiAKLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGVmYXVsdERp
cmVjdGlvbiA9IElEQkN1cnNvcjo6TkVYVDsKKwogSURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0
b3JlKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBpZGJPYmplY3RT
dG9yZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKICAgICA6
IG1fb2JqZWN0U3RvcmUoaWRiT2JqZWN0U3RvcmUpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5z
YWN0aW9uKQpAQCAtMTAwLDggKzEwMywxMSBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9i
amVjdFN0b3JlOjpyZW1vdmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUAogICAg
IHJldHVybiByZXF1ZXN0OwogfQogCi1QYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9y
ZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgs
IGJvb2wgdW5pcXVlLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCSW5kZXg+IElE
Qk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCwgY29uc3QgT3B0aW9uc09iamVjdCYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CisgICAgYm9vbCB1bmlxdWUgPSBmYWxzZTsKKyAgICBvcHRpb25zLmdldEtleUJvb2wo
InVuaXF1ZSIsIHVuaXF1ZSk7CisKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNl
PiBpbmRleCA9IG1fb2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgsIHVuaXF1
ZSwgbV90cmFuc2FjdGlvbi5nZXQoKSwgZWMpOwogICAgIEFTU0VSVCghaW5kZXggIT0gIWVjKTsg
Ly8gSWYgd2UgZGlkbid0IGdldCBhbiBpbmRleCwgd2Ugc2hvdWxkIGhhdmUgZ290dGVuIGFuIGV4
Y2VwdGlvbiBjb2RlLiBBbmQgdmljZSB2ZXJzYS4KICAgICBpZiAoIWluZGV4KQpAQCAtMTIzLDgg
KzEyOSwxOSBAQCB2b2lkIElEQk9iamVjdFN0b3JlOjpyZW1vdmVJbmRleChjb25zdCBTdHJpbmcm
IG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIG1fb2JqZWN0U3RvcmUtPnJlbW92ZUluZGV4
KG5hbWUsIG1fdHJhbnNhY3Rpb24uZ2V0KCksIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWduZWQgc2hvcnQgZGly
ZWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2Jq
ZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgT3B0aW9uc09iamVjdCYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgUmVm
UHRyPElEQktleVJhbmdlPiByYW5nZSA9IG9wdGlvbnMuZ2V0S2V5S2V5UmFuZ2UoInJhbmdlIik7
CisKKyAgICAvLyBDb252ZXJ0ZWQgdG8gYW4gdW5zaWduZWQgc2hvcnQuCisgICAgaW50NjRfdCBk
aXJlY3Rpb24gPSBkZWZhdWx0RGlyZWN0aW9uOworICAgIG9wdGlvbnMuZ2V0S2V5SW50ZWdlcigi
ZGlyZWN0aW9uIiwgZGlyZWN0aW9uKTsKKyAgICBpZiAoZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6
TkVYVCAmJiBkaXJlY3Rpb24gIT0gSURCQ3Vyc29yOjpORVhUX05PX0RVUExJQ0FURSAmJiBkaXJl
Y3Rpb24gIT0gSURCQ3Vyc29yOjpQUkVWICYmIGRpcmVjdGlvbiAhPSBJREJDdXJzb3I6OlBSRVZf
Tk9fRFVQTElDQVRFKSB7CisgICAgICAgIC8vIEZJWE1FOiBNYXkgbmVlZCB0byBjaGFuZ2Ugd2hl
biBzcGVjY2VkOiBodHRwOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9
MTE0MDYKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q09OU1RSQUlOVF9FUlI7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1
ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBt
X3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX29iamVjdFN0b3JlLT5vcGVuQ3Vyc29yKHJhbmdl
LCBkaXJlY3Rpb24sIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24uZ2V0KCksIGVjKTsKICAgICBpZiAo
ZWMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaCBiL1dlYkNv
cmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oCmluZGV4IGRjOTIyMzMuLjU2NzYwMWEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oCisrKyBiL1dlYkNvcmUvc3Rv
cmFnZS9JREJPYmplY3RTdG9yZS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSURCS2V5
UmFuZ2UuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNp
bmNsdWRlICJJREJSZXF1ZXN0LmgiCisjaW5jbHVkZSAiT3B0aW9uc09iamVjdC5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgi
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTYxLDIwICs2MiwxOSBAQCBwdWJsaWM6
CiAgICAgLy8gRklYTUU6IFRyeSB0byBtb2RpZnkgdGhlIGNvZGUgZ2VuZXJhdG9yIHNvIHRoaXMg
aXMgdW5uZWVkZWQuCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBhZGQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZh
bHVlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYWRkKGNvbnRleHQsIHZhbHVlLCAwLCBl
Yyk7ICB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBF
eGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gcHV0KGNvbnRleHQsIHZhbHVlLCAwLCBlYyk7ICB9
Ci0gICAgUGFzc1JlZlB0cjxJREJJbmRleD4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBjcmVh
dGVJbmRleChuYW1lLCBrZXlQYXRoLCBmYWxzZSwgZWMpOyB9Ci0gICAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIDAsIGVjKTsgfQotICAg
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5UmFuZ2UsIElEQkN1cnNvcjo6
TkVYVCwgZWMpOyB9CisgICAgUGFzc1JlZlB0cjxJREJJbmRleD4gY3JlYXRlSW5kZXgoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7
IHJldHVybiBjcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCBPcHRpb25zT2JqZWN0KCksIGVjKTsg
fQorICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gb3BlbkN1cnNvcihj
b250ZXh0LCBPcHRpb25zT2JqZWN0KCksIGVjKTsgfQogCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5PiwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gYWRkKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQ
dHI8SURCS2V5PiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
cHV0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gcmVtb3ZlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBQYXNzUmVmUHRyPElEQkluZGV4
PiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwg
Ym9vbCB1bmlxdWUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQkluZGV4PiBj
cmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgY29u
c3QgT3B0aW9uc09iamVjdCYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQklu
ZGV4PiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lk
IHJlbW92ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBFeGNl
cHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBPcHRpb25zT2JqZWN0JiwgRXhjZXB0aW9uQ29kZSYp
OwogCiBwcml2YXRlOgogICAgIElEQk9iamVjdFN0b3JlKFBhc3NSZWZQdHI8SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFu
c2FjdGlvbik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRs
IGIvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmlkbAppbmRleCAzMWViODY1Li5iMzEx
NWU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuaWRsCisrKyBi
L1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5pZGwKQEAgLTQwLDkgKzQwLDkgQEAgbW9k
dWxlIHN0b3JhZ2UgewogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7
CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IGdl
dChpbiBJREJLZXkga2V5KQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlv
bik7Ci0gICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJSZXF1ZXN0
IG9wZW5DdXJzb3IoaW4gW09wdGlvbmFsXSBJREJLZXlSYW5nZSByYW5nZSwgaW4gW09wdGlvbmFs
XSB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24pCisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0XSBJREJSZXF1ZXN0IG9wZW5DdXJzb3IoaW4gW09wdGlvbmFsXSBPcHRpb25z
T2JqZWN0IG9wdGlvbnMpCiAgICAgICAgICAgICByYWlzZXMgKElEQkRhdGFiYXNlRXhjZXB0aW9u
KTsKLSAgICAgICAgSURCSW5kZXggY3JlYXRlSW5kZXgoaW4gRE9NU3RyaW5nIG5hbWUsIGluIFtD
b252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGtleVBhdGgsIGluIFtPcHRpb25hbF0g
Ym9vbGVhbiB1bmlxdWUpCisgICAgICAgIElEQkluZGV4IGNyZWF0ZUluZGV4KGluIERPTVN0cmlu
ZyBuYW1lLCBpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBrZXlQYXRoLCBp
biBbT3B0aW9uYWxdIE9wdGlvbnNPYmplY3Qgb3B0aW9ucykKICAgICAgICAgICAgIHJhaXNlcyAo
SURCRGF0YWJhc2VFeGNlcHRpb24pOwogICAgICAgICBJREJJbmRleCBpbmRleChpbiBET01TdHJp
bmcgbmFtZSkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwo=
</data>
<flag name="review"
          id="65630"
          type_id="1"
          status="+"
          setter="steveblock"
    />
          </attachment>
      

    </bug>

</bugzilla>