<?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>149651</bug_id>
          
          <creation_ts>2015-09-29 16:08:37 -0700</creation_ts>
          <short_desc>Move WebKit2 AsyncTask to WebCore CrossThreadTask</short_desc>
          <delta_ts>2015-09-29 23:31:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>Safari 9</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149117</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1129436</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-09-29 16:08:37 -0700</bug_when>
    <thetext>Move WebKit2 AsyncTask to WebCore CrossThreadTask

1 - It&apos;ll be needed in WebCore for IndexedDB.
2 - It&apos;s really only used for an asynchronous task that enforces cross-thread copying, so that&apos;s a better name for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129437</commentid>
    <comment_count>1</comment_count>
      <attachid>262117</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-09-29 16:10:18 -0700</bug_when>
    <thetext>Created attachment 262117
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129438</commentid>
    <comment_count>2</comment_count>
      <attachid>262118</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-09-29 16:16:22 -0700</bug_when>
    <thetext>Created attachment 262118
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129440</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-29 16:18:08 -0700</bug_when>
    <thetext>Attachment 262118 did not pass style-queue:


ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:311:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:141:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/CrossThreadTask.h:37:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/CrossThreadTask.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 4 in 8 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>1129442</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-09-29 16:29:49 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/190331</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129448</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-09-29 17:17:01 -0700</bug_when>
    <thetext>Followup in https://trac.webkit.org/changeset/190332</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262117</attachid>
            <date>2015-09-29 16:10:18 -0700</date>
            <delta_ts>2015-09-29 16:16:22 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>67195</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NDQ3MWIyLi5jNjM1OWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTUtMDktMjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIE1vdmUgV2ViS2l0MiBBc3luY1Rhc2sgdG8gV2ViQ29yZSBDcm9zc1RocmVhZFRhc2suCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk2NTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMgKE5vIGNoYW5nZSBpbiBiZWhhdmlvcikuCisgICAgICAgIAorICAgICAgICBJdCB3aWxsIGJl
IG5lZWRlZCBpbiBXZWJDb3JlIHRvIHN1cHBvcnQgSW5kZXhlZERCLgorCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL0Nyb3Nz
VGhyZWFkVGFzay5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5jVGFz
ay5oLgorICAgICAgICAoV2ViS2l0OjpDcm9zc1RocmVhZFRhc2s6OkNyb3NzVGhyZWFkVGFzayk6
CisgICAgICAgIChXZWJLaXQ6OkNyb3NzVGhyZWFkVGFzazo6cGVyZm9ybVRhc2spOgorICAgICAg
ICAoV2ViS2l0OjpjcmVhdGVDcm9zc1RocmVhZFRhc2spOgorCiAyMDE1LTA5LTI4ICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYW4gSURCIFNlcnZlciB0
aGF0IGNhbiByb3VuZHRyaXAgYSByZXF1ZXN0IGJhY2sgdG8gdGhlIGNsaWVudC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3OWU4
MWQ0Li4zOWE5MmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yMTU1LDYgKzIxNTUsNyBAQAogCQk1MUUzRjlENjBEQTA1RTFE
MDAyNTA5MTEgLyogSlNTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxRTNGOUQ0MERBMDVFMUQwMDI1MDkxMSAvKiBKU1N0b3JhZ2UuY3Bw
ICovOyB9OwogCQk1MUU0MTQzNDE2QTY1OTYzMDBDNjMzQzcgLyogUmVzb3VyY2VIYW5kbGVUeXBl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFNDE0
MzIxNkE2NTk1MTAwQzYzM0M3IC8qIFJlc291cmNlSGFuZGxlVHlwZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUU2ODIxMDE2Mzg3MzAyMDAz
QkJGM0MgLyogTG9hZGVyU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxRTY4MjBGMTYzODczMDIwMDNCQkYzQyAvKiBMb2FkZXJTdHJhdGVn
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUx
RTZGQTdDMUJCQjRGQzMwMDg3MDBEOSAvKiBDcm9zc1RocmVhZFRhc2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTZGQTdCMUJCQjRGQjUwMDg3MDBE
OSAvKiBDcm9zc1RocmVhZFRhc2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MUVDOTI2NTBDRTkwREQ0MDBGOTAzMDggLyogSlNDdXN0b21TUUxT
dGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxRUM5MjVEMENFOTBERDQwMEY5MDMwOCAvKiBKU0N1c3RvbVNRTFN0
YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwICovOyB9OwogCQk1MUVFN0IzODFBQTUwQjA1MDBGOTJC
MjEgLyogUmVzb3VyY2VMb2FkSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFFRTdCMzcxQUE1MEIwNTAwRjkyQjIxIC8qIFJlc291cmNlTG9hZElu
Zm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
MUVFN0IzQTFBQTUxMjMxMDBGOTJCMjEgLyogUmVzb3VyY2VMb2FkSW5mby5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVFN0IzOTFBQTUxMjMxMDBG
OTJCMjEgLyogUmVzb3VyY2VMb2FkSW5mby5jcHAgKi87IH07CkBAIC05NTE1LDYgKzk1MTYsNyBA
QAogCQk1MUUzRjlENTBEQTA1RTFEMDAyNTA5MTEgLyogSlNTdG9yYWdlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUU0MTQzMjE2QTY1OTUxMDBDNjMzQzcgLyogUmVzb3VyY2VIYW5kbGVUeXBlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUhhbmRsZVR5cGVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTY4MjBGMTYzODczMDIwMDNCQkYzQyAv
KiBMb2FkZXJTdHJhdGVneS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2Fk
ZXJTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUU2RkE3QjFCQkI0
RkI1MDA4NzAwRDkgLyogQ3Jvc3NUaHJlYWRUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENyb3NzVGhyZWFkVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MUVBQzVCMDE4MTYzRjRFMDA0RjFCQTQgLyogSURCUmVjb3JkSWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJSZWNvcmRJZGVudGlmaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRUM5MjVEMENFOTBERDQwMEY5MDMwOCAvKiBKU0N1
c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFRTdCMzcxQUE1MEIwNTAwRjkyQjIxIC8qIFJl
c291cmNlTG9hZEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3Vy
Y2VMb2FkSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIxNjAsNiArMjIx
NjIsNyBAQAogCQkJCTg2MkYxMjlEMThDMTU3MkMwMDVDNTRBRiAvKiBDb3VudGVkVXNlckFjdGl2
aXR5LmggKi8sCiAJCQkJMkU0MzQ2NTYwRjU0NkE5OTAwQjBGMUJBIC8qIENyb3NzVGhyZWFkQ29w
aWVyLmNwcCAqLywKIAkJCQkyRTQzNDY1NzBGNTQ2QTk5MDBCMEYxQkEgLyogQ3Jvc3NUaHJlYWRD
b3BpZXIuaCAqLywKKwkJCQk1MUU2RkE3QjFCQkI0RkI1MDA4NzAwRDkgLyogQ3Jvc3NUaHJlYWRU
YXNrLmggKi8sCiAJCQkJRTExQUYxNTAxMUI5QTFBMzAwODA1MTAzIC8qIEN1cnNvci5jcHAgKi8s
CiAJCQkJRjU4Nzg2ODQwMkRFM0I4NjAxRUE0MTIyIC8qIEN1cnNvci5oICovLAogCQkJCUE1NzMy
QjA4MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5jcHAgKi8sCkBAIC0yNTUxMyw2
ICsyNTUxNiw3IEBACiAJCQkJMDczNjdEREYxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTE2QzU5NTE3
Q0ZFMTcyMDA4NTJDMDQgLyogSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLywK
IAkJCQlEQjIzQzJDQzBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuaCBp
biBIZWFkZXJzICovLAorCQkJCTUxRTZGQTdDMUJCQjRGQzMwMDg3MDBEOSAvKiBDcm9zc1RocmVh
ZFRhc2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZGNUU1MEExNTVBMDUwMDBBNDIzNCAvKiBJ
bmxpbmVCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUI1N0NCNTJFMTgyQTNFRkMwMDc5QTY0NyAv
KiBJbmxpbmVFbGVtZW50Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjVFMzBBMTU1QTA1
MDAwQTQyMzQgLyogSW5saW5lRmxvd0JveC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZFRhc2suaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0Nyb3NzVGhyZWFkVGFzay5oCmluZGV4IDM2ZDg1M2MuLmVkNDBmNTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkVGFzay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkVGFzay5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxOCArMjMsMTggQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEFzeW5j
VGFza19oCi0jZGVmaW5lIEFzeW5jVGFza19oCisjaWZuZGVmIENyb3NzVGhyZWFkVGFza19oCisj
ZGVmaW5lIENyb3NzVGhyZWFkVGFza19oCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzVGhyZWFk
Q29waWVyLmg+CisjaW5jbHVkZSAiQ3Jvc3NUaHJlYWRDb3BpZXIuaCIKICNpbmNsdWRlIDxmdW5j
dGlvbmFsPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgQXN5bmNUYXNrIHsKLSAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShBc3luY1Rhc2spOworY2xhc3MgQ3Jvc3NUaHJlYWRUYXNrIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDcm9zc1RocmVhZFRhc2spOwogcHVibGljOgotICAg
IEFzeW5jVGFzayhjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IHRhc2tGdW5jdGlvbikKKyAg
ICBDcm9zc1RocmVhZFRhc2soY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiB0YXNrRnVuY3Rp
b24pCiAgICAgICAgIDogbV90YXNrRnVuY3Rpb24odGFza0Z1bmN0aW9uKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKHRhc2tGdW5jdGlvbik7CkBAIC00NiwxNSArNDYsMTUgQEAgcHVibGljOgogICAg
IH0KIAogcHJvdGVjdGVkOgotICAgIEFzeW5jVGFzaygpIHsgfQorICAgIENyb3NzVGhyZWFkVGFz
aygpIHsgfQogCiAgICAgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBtX3Rhc2tGdW5jdGlvbjsKIH07
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci1jbGFzcyBB
c3luY1Rhc2tJbXBsIGZpbmFsIDogcHVibGljIEFzeW5jVGFzayB7CitjbGFzcyBDcm9zc1RocmVh
ZFRhc2tJbXBsIGZpbmFsIDogcHVibGljIENyb3NzVGhyZWFkVGFzayB7CiBwdWJsaWM6Ci0gICAg
QXN5bmNUYXNrSW1wbChUKiBjYWxsZWUsIHZvaWQgKFQ6OiptZXRob2QpKEFyZ3VtZW50cy4uLiks
IEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICBDcm9zc1RocmVhZFRhc2tJbXBsKFQqIGNh
bGxlZSwgdm9pZCAoVDo6Km1ldGhvZCkoQXJndW1lbnRzLi4uKSwgQXJndW1lbnRzJiYuLi4gYXJn
dW1lbnRzKQogICAgIHsKICAgICAgICAgbV90YXNrRnVuY3Rpb24gPSBbY2FsbGVlLCBtZXRob2Qs
IGFyZ3VtZW50cy4uLl0gewogICAgICAgICAgICAgKGNhbGxlZS0+Km1ldGhvZCkoYXJndW1lbnRz
Li4uKTsKQEAgLTYzLDMzICs2MywzMyBAQCBwdWJsaWM6CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4gY3JlYXRlQXN5bmNUYXNrKAorc3RkOjp1
bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogICAgIFQm
IGNhbGxlZSwKICAgICB2b2lkIChUOjoqbWV0aG9kKSgpKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEFzeW5jVGFza0ltcGw8VD4+KCZjYWxsZWUsIG1ldGhvZCk7CisgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrSW1wbDxUPj4oJmNhbGxlZSwgbWV0aG9k
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMT4K
LXN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IGNyZWF0ZUFzeW5jVGFzaygKK3N0ZDo6dW5pcXVl
X3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBUJiBjYWxs
ZWUsCiAgICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVy
MSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Rhc2tJbXBsPFQsIE1QMT4+
KAorICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAx
Pj4oCiAgICAgICAgICZjYWxsZWUsCiAgICAgICAgIG1ldGhvZCwKICAgICAgICAgV2ViQ29yZTo6
Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpKTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVu
YW1lIE1QMj4KLXN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IGNyZWF0ZUFzeW5jVGFzaygKK3N0
ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAg
ICBUJiBjYWxsZWUsCiAgICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBNUDIpLAogICAgIGNvbnN0
IFAxJiBwYXJhbWV0ZXIxLAogICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIyKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jVGFza0ltcGw8VCwgTVAxLCBNUDI+PigKKyAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyPj4oCiAg
ICAgICAgICZjYWxsZWUsCiAgICAgICAgIG1ldGhvZCwKICAgICAgICAgV2ViQ29yZTo6Q3Jvc3NU
aHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLApAQCAtOTgsMTQgKzk4LDE0IEBAIHN0
ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IGNyZWF0ZUFzeW5jVGFzaygKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVu
YW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMz4KLXN0ZDo6dW5pcXVlX3B0cjxBc3lu
Y1Rhc2s+IGNyZWF0ZUFzeW5jVGFzaygKK3N0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+
IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBUJiBjYWxsZWUsCiAgICAgdm9pZCAoVDo6Km1l
dGhvZCkoTVAxLCBNUDIsIE1QMyksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsCiAgICAgY29u
c3QgUDImIHBhcmFtZXRlcjIsCiAgICAgY29uc3QgUDMmIHBhcmFtZXRlcjMpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzPj4oCisg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBNUDEsIE1Q
MiwgTVAzPj4oCiAgICAgICAgICZjYWxsZWUsCiAgICAgICAgIG1ldGhvZCwKICAgICAgICAgV2Vi
Q29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLApAQCAtMTE0LDcg
KzExNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IGNyZWF0ZUFzeW5jVGFzaygKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5h
bWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUg
UDQsIHR5cGVuYW1lIE1QND4KLXN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IGNyZWF0ZUFzeW5j
VGFzaygKK3N0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFk
VGFzaygKICAgICBUJiBjYWxsZWUsCiAgICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBNUDIsIE1Q
MywgTVA0KSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKQEAgLTEyMiw3ICsxMjIsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiBjcmVhdGVBc3luY1Rhc2soCiAgICAgY29uc3QgUDMm
IHBhcmFtZXRlcjMsCiAgICAgY29uc3QgUDQmIHBhcmFtZXRlcjQpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8QXN5bmNUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzLCBNUDQ+PigKKyAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAy
LCBNUDMsIE1QND4+KAogICAgICAgICAmY2FsbGVlLAogICAgICAgICBtZXRob2QsCiAgICAgICAg
IFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKQEAgLTEz
Miw3ICsxMzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiBjcmVhdGVBc3luY1Rhc2so
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5
cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVu
YW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDU+Ci1zdGQ6OnVu
aXF1ZV9wdHI8QXN5bmNUYXNrPiBjcmVhdGVBc3luY1Rhc2soCitzdGQ6OnVuaXF1ZV9wdHI8Q3Jv
c3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiAgICAgVCYgY2FsbGVlLAogICAg
IHZvaWQgKFQ6OiptZXRob2QpKE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1KSwKICAgICBjb25zdCBQ
MSYgcGFyYW1ldGVyMSwKQEAgLTE0MSw3ICsxNDEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNU
YXNrPiBjcmVhdGVBc3luY1Rhc2soCiAgICAgY29uc3QgUDQmIHBhcmFtZXRlcjQsCiAgICAgY29u
c3QgUDUmIHBhcmFtZXRlcjUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNU
YXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNT4+KAorICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDU+
PigKICAgICAgICAgJmNhbGxlZSwKICAgICAgICAgbWV0aG9kLAogICAgICAgICBXZWJDb3JlOjpD
cm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCkBAIC0xNTIsNyArMTUyLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4gY3JlYXRlQXN5bmNUYXNrKAogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwg
dHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlw
ZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5h
bWUgTVA2Pgotc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4gY3JlYXRlQXN5bmNUYXNrKAorc3Rk
Ojp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogICAg
IFQmIGNhbGxlZSwKICAgICB2b2lkIChUOjoqbWV0aG9kKShNUDEsIE1QMiwgTVAzLCBNUDQsIE1Q
NSwgTVA2KSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKQEAgLTE2Miw3ICsxNjIsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiBjcmVhdGVBc3luY1Rhc2soCiAgICAgY29uc3QgUDUm
IHBhcmFtZXRlcjUsCiAgICAgY29uc3QgUDYmIHBhcmFtZXRlcjYpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8QXN5bmNUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwg
TVA2Pj4oCisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrSW1wbDxU
LCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2Pj4oCiAgICAgICAgICZjYWxsZWUsCiAgICAg
ICAgIG1ldGhvZCwKICAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5
KHBhcmFtZXRlcjEpLApAQCAtMTc0LDcgKzE3NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rh
c2s+IGNyZWF0ZUFzeW5jVGFzaygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
UDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMs
IHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5
cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNiwgdHlwZW5hbWUgUDcsIHR5cGVu
YW1lIE1QNz4KLXN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IGNyZWF0ZUFzeW5jVGFzaygKK3N0
ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAg
ICBUJiBjYWxsZWUsCiAgICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0LCBN
UDUsIE1QNiwgTVA3KSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKQEAgLTE4NSw3ICsxODUs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiBjcmVhdGVBc3luY1Rhc2soCiAgICAgY29u
c3QgUDYmIHBhcmFtZXRlcjYsCiAgICAgY29uc3QgUDcmIHBhcmFtZXRlcjcpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzLCBNUDQs
IE1QNSwgTVA2LCBNUDc+PigKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVh
ZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNz4+KAogICAgICAg
ICAmY2FsbGVlLAogICAgICAgICBtZXRob2QsCiAgICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFk
Q29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKQEAgLTE5OCw3ICsxOTgsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8QXN5bmNUYXNrPiBjcmVhdGVBc3luY1Rhc2soCiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBN
UDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQs
IHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDYsIHR5
cGVuYW1lIFA3LCB0eXBlbmFtZSBNUDcsIHR5cGVuYW1lIFA4LCB0eXBlbmFtZSBNUDg+Ci1zdGQ6
OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiBjcmVhdGVBc3luY1Rhc2soCitzdGQ6OnVuaXF1ZV9wdHI8
Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiAgICAgVCYgY2FsbGVlLAog
ICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNywg
TVA4KSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKQEAgLTIxMCw3ICsyMTAsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiBjcmVhdGVBc3luY1Rhc2soCiAgICAgY29uc3QgUDcmIHBh
cmFtZXRlcjcsCiAgICAgY29uc3QgUDgmIHBhcmFtZXRlcjgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8QXN5bmNUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2
LCBNUDcsIE1QOD4+KAorICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFkVGFz
a0ltcGw8VCwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3LCBNUDg+PigKICAgICAg
ICAgJmNhbGxlZSwKICAgICAgICAgbWV0aG9kLAogICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVh
ZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCkBAIC0yMjUsNCArMjI1LDQgQEAgc3RkOjp1
bmlxdWVfcHRyPEFzeW5jVGFzaz4gY3JlYXRlQXN5bmNUYXNrKAogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAotI2VuZGlmIC8vIEFzeW5jVGFza19oCisjZW5kaWYgLy8gQ3Jvc3NUaHJlYWRUYXNr
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCBiNDI1Mjg3Li44ZTk1YTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjcgQEAKKzIwMTUtMDktMjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisg
ICAgICAgIE1vdmUgV2ViS2l0MiBBc3luY1Rhc2sgdG8gV2ViQ29yZSBDcm9zc1RocmVhZFRhc2su
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk2NTEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERhdGFi
YXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFz
ZVByb2Nlc3M6OmVuc3VyZUluZGV4ZWREYXRhYmFzZVJlbGF0aXZlUGF0aEV4aXN0cyk6CisgICAg
ICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6cG9zdERhdGFiYXNlVGFzayk6CisgICAgICAg
IChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6cGVyZm9ybU5leHREYXRhYmFzZVRhc2spOgorICAg
ICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgor
ICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaDoKKyAgICAgICAgKiBE
YXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OnNodXRkb3duKToKKyAgICAgICAgKFdlYktpdDo6
VW5pcXVlSURCRGF0YWJhc2U6OnNodXRkb3duQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktp
dDo6VW5pcXVlSURCRGF0YWJhc2U6OmdldE9yRXN0YWJsaXNoSURCRGF0YWJhc2VNZXRhZGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQmFja2luZ1N0b3JlQW5k
UmVhZE1ldGFkYXRhKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6Om9wZW5U
cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpiZWdpblRy
YW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRy
YW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OnJlc2V0VHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6cm9sbGJhY2tU
cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0VHJh
bnNhY3Rpb25PcGVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6
Y2hhbmdlRGF0YWJhc2VWZXJzaW9uKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJh
c2U6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJh
c2U6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJh
c2U6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFz
ZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVs
ZXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3Jk
KToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCk6CisgICAg
ICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdl
YktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmN1cnNvckFkdmFuY2UpOgorICAgICAgICAoV2ViS2l0
OjpVbmlxdWVJREJEYXRhYmFzZTo6Y3Vyc29ySXRlcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVu
aXF1ZUlEQkRhdGFiYXNlOjpjb3VudCk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFi
YXNlOjpkZWxldGVSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpv
cGVuQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJE
YXRhYmFzZTo6YmVnaW5CYWNraW5nU3RvcmVUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OlVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRCYWNraW5nU3RvcmVUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpyZXNldEJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OnJvbGxiYWNrQmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6
Y2hhbmdlRGF0YWJhc2VWZXJzaW9uSW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpV
bmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSk6CisgICAg
ICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZUluQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0
U3RvcmVJbkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNl
OjpjcmVhdGVJbmRleEluQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURC
RGF0YWJhc2U6OmRlbGV0ZUluZGV4SW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpV
bmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkSW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2Vi
S2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkRnJvbUJhY2tpbmdTdG9yZSk6CisgICAg
ICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29ySW5CYWNraW5nU3RvcmUp
OgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6YWR2YW5jZUN1cnNvckluQmFj
a2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVD
dXJzb3JJbkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNl
Ojpjb3VudEluQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJh
c2U6OmRlbGV0ZVJhbmdlSW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJ
REJEYXRhYmFzZTo6cG9zdE1haW5UaHJlYWRUYXNrKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVl
SURCRGF0YWJhc2U6OnBlcmZvcm1OZXh0TWFpblRocmVhZFRhc2spOgorICAgICAgICAoV2ViS2l0
OjpVbmlxdWVJREJEYXRhYmFzZTo6cG9zdERhdGFiYXNlVGFzayk6CisgICAgICAgIChXZWJLaXQ6
OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtTmV4dERhdGFiYXNlVGFzayk6CisgICAgICAgICog
RGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5oOgorICAgICAgICAq
IFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNS0wOS0yOCAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBFeHBvc2UgJ2dlb21ldHJ5
RmxpcHBlZCcgc3RhdGUgZm9yIGRlYnVnZ2luZy9sb2dnaW5nIHB1cnBvc2VzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCmluZGV4IGM4
ZDhhM2MuLjQxMWZmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9EYXRhYmFzZVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9EYXRhYmFzZVByb2Nlc3MuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoREFU
QUJBU0VfUFJPQ0VTUykKIAotI2luY2x1ZGUgIkFzeW5jVGFzay5oIgogI2luY2x1ZGUgIkRhdGFi
YXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vz
c01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgpA
QCAtMzYsNiArMzUsNyBAQAogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCiAjaW5jbHVk
ZSAiV2ViQ3Jvc3NUaHJlYWRDb3BpZXIuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ3Jvc3NUaHJlYWRUYXNrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2Vzc2lvbklELmg+CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBEYXRhYmFzZVBy
b2Nlc3M6OmluaXRpYWxpemVEYXRhYmFzZVByb2Nlc3MoY29uc3QgRGF0YWJhc2VQcm9jZXNzQ3Jl
YXRpb25QYXIKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIHZvaWQgRGF0YWJhc2VQcm9j
ZXNzOjplbnN1cmVJbmRleGVkRGF0YWJhc2VSZWxhdGl2ZVBhdGhFeGlzdHMoY29uc3QgU3RyaW5n
JiByZWxhdGl2ZVBhdGgpCiB7Ci0gICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2so
KnRoaXMsICZEYXRhYmFzZVByb2Nlc3M6OmVuc3VyZVBhdGhFeGlzdHMsIGFic29sdXRlSW5kZXhl
ZERhdGFiYXNlUGF0aEZyb21EYXRhYmFzZVJlbGF0aXZlUGF0aChyZWxhdGl2ZVBhdGgpKSk7Cisg
ICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZEYXRhYmFz
ZVByb2Nlc3M6OmVuc3VyZVBhdGhFeGlzdHMsIGFic29sdXRlSW5kZXhlZERhdGFiYXNlUGF0aEZy
b21EYXRhYmFzZVJlbGF0aXZlUGF0aChyZWxhdGl2ZVBhdGgpKSk7CiB9CiAjZW5kaWYKIApAQCAt
MTU1LDcgKzE1NSw3IEBAIFN0cmluZyBEYXRhYmFzZVByb2Nlc3M6OmFic29sdXRlSW5kZXhlZERh
dGFiYXNlUGF0aEZyb21EYXRhYmFzZVJlbGF0aXZlUGF0aChjb25zCiB9CiAjZW5kaWYKIAotdm9p
ZCBEYXRhYmFzZVByb2Nlc3M6OnBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlxdWVfcHRyPEFzeW5j
VGFzaz4gdGFzaykKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzOjpwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6
dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IHRhc2spCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKIApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpw
ZXJmb3JtTmV4dERhdGFiYXNlVGFzaygpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiB0YXNrOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IHRhc2s7CiAgICAgewogICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2RhdGFiYXNlVGFza011dGV4KTsKICAgICAgICAgQVNTRVJUKCFtX2RhdGFiYXNl
VGFza3MuaXNFbXB0eSgpKTsKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vz
czo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQsIHVpbnQ2NF90IHdlYnNpdGVEYXRhVHlwZXMs
IHVpbgogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzICYgV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBQaWNrIHRoZSByaWdodCBkYXRhYmFzZSBzdG9yZSBiYXNlZCBvbiB0aGUgc2Vzc2lvbiBJ
RC4KLSAgICAgICAgcG9zdERhdGFiYXNlVGFzayhzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jVGFzaz4o
W2NhbGxiYWNrQWdncmVnYXRvciwgd2Vic2l0ZURhdGFUeXBlcywgdGhpc10geworICAgICAgICBw
b3N0RGF0YWJhc2VUYXNrKHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrPihbY2FsbGJh
Y2tBZ2dyZWdhdG9yLCB3ZWJzaXRlRGF0YVR5cGVzLCB0aGlzXSB7CiAKICAgICAgICAgICAgIFZl
Y3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBzZWN1cml0eU9yaWdpbnMgPSBpbmRleGVkRGF0
YWJhc2VPcmlnaW5zKCk7CiAKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vz
czo6ZGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCB3ZWJzaXRl
RGF0YQogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgaWYgKHdlYnNpdGVEYXRh
VHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMpIHsKLSAgICAgICAgcG9z
dERhdGFiYXNlVGFzayhzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jVGFzaz4oW3RoaXMsIGNhbGxiYWNr
QWdncmVnYXRvciwgbW9kaWZpZWRTaW5jZV0geworICAgICAgICBwb3N0RGF0YWJhc2VUYXNrKHN0
ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrPihbdGhpcywgY2FsbGJhY2tBZ2dyZWdhdG9y
LCBtb2RpZmllZFNpbmNlXSB7CiAKICAgICAgICAgICAgIGRlbGV0ZUluZGV4ZWREYXRhYmFzZUVu
dHJpZXNNb2RpZmllZFNpbmNlKG1vZGlmaWVkU2luY2UpOwogICAgICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CkBAIC0zMDksNyArMzA5
LDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhX
ZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHcKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBz
ZWN1cml0eU9yaWdpbkRhdGEgOiBzZWN1cml0eU9yaWdpbkRhdGFzKQogICAgICAgICAgICAgc2Vj
dXJpdHlPcmlnaW5zLmFwcGVuZChzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSk7
CiAKLSAgICAgICAgcG9zdERhdGFiYXNlVGFzayhzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jVGFzaz4o
W3RoaXMsIHNlY3VyaXR5T3JpZ2lucywgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgIHBv
c3REYXRhYmFzZVRhc2soc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2s+KFt0aGlzLCBz
ZWN1cml0eU9yaWdpbnMsIGNhbGxiYWNrQWdncmVnYXRvcl0gewogICAgICAgICAgICAgZGVsZXRl
SW5kZXhlZERhdGFiYXNlRW50cmllc0Zvck9yaWdpbnMoc2VjdXJpdHlPcmlnaW5zKTsKIAogICAg
ICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNz
LmgKaW5kZXggM2YwYTE1MC4uZWM0Nzc5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0
YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgU2Vj
dXJpdHlPcmlnaW5EYXRhOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgQXN5bmNUYXNr
OworY2xhc3MgQ3Jvc3NUaHJlYWRUYXNrOwogY2xhc3MgRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25u
ZWN0aW9uOwogY2xhc3MgVW5pcXVlSURCRGF0YWJhc2U7CiAKQEAgLTY0LDcgKzY0LDcgQEAgcHVi
bGljOgogCiAgICAgV29ya1F1ZXVlJiBxdWV1ZSgpIHsgcmV0dXJuIG1fcXVldWUuZ2V0KCk7IH0K
IAotICAgIHZvaWQgcG9zdERhdGFiYXNlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPik7
CisgICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRh
c2s+KTsKIAogcHJpdmF0ZToKICAgICBEYXRhYmFzZVByb2Nlc3MoKTsKQEAgLTExMiw3ICsxMTIs
NyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8VW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyLCBS
ZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+PiBtX2lkYkRhdGFiYXNlczsKICNlbmRpZgogCi0gICAg
RGVxdWU8c3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4+IG1fZGF0YWJhc2VUYXNrczsKKyAgICBE
ZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPj4gbV9kYXRhYmFzZVRhc2tzOwog
ICAgIExvY2sgbV9kYXRhYmFzZVRhc2tNdXRleDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFz
ZS5jcHAKaW5kZXggNTZkZDg2ZS4uYmEwYTg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5j
cHAKQEAgLTI5LDEzICsyOSwxMyBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBF
TkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkFzeW5jUmVxdWVzdC5oIgotI2lu
Y2x1ZGUgIkFzeW5jVGFzay5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJEYXRhYmFzZVByb2Nlc3MuaCIKICNpbmNsdWRlICJEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNl
QmFja2luZ1N0b3JlU1FMaXRlLmgiCiAjaW5jbHVkZSAiV2ViQ3Jvc3NUaHJlYWRDb3BpZXIuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzVGhyZWFkVGFzay5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURCRGF0YWJhc2VNZXRhZGF0YS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSURCR2V0UmVzdWx0Lmg+CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6c2h1dGRvd24oVW5pcXVlSURCRGF0YWJhc2VTaHV0ZG93blR5
cGUgdHlwZSkKICAgICAgICAgbV9kYXRhYmFzZVRhc2tzLmNsZWFyKCk7CiAgICAgfQogCi0gICAg
cG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFz
ZTo6c2h1dGRvd25CYWNraW5nU3RvcmUsIHR5cGUsIGFic29sdXRlRGF0YWJhc2VEaXJlY3Rvcnko
KSksIERhdGFiYXNlVGFza1R5cGU6OlNodXRkb3duKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKGNy
ZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpzaHV0ZG93bkJh
Y2tpbmdTdG9yZSwgdHlwZSwgYWJzb2x1dGVEYXRhYmFzZURpcmVjdG9yeSgpKSwgRGF0YWJhc2VU
YXNrVHlwZTo6U2h1dGRvd24pOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpzaHV0ZG93
bkJhY2tpbmdTdG9yZShVbmlxdWVJREJEYXRhYmFzZVNodXRkb3duVHlwZSB0eXBlLCBjb25zdCBT
dHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnNodXRkb3duQmFja2luZ1N0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlU2h1dGRv
d25UeXBlIHR5cGUsCiAgICAgICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGRhdGFiYXNlRGlyZWN0
b3J5KTsKICAgICB9CiAKLSAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0
aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFNodXRkb3duQmFja2luZ1N0b3JlLCB0eXBlKSwg
RGF0YWJhc2VUYXNrVHlwZTo6U2h1dGRvd24pOworICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVh
dGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkU2h1dGRvd25C
YWNraW5nU3RvcmUsIHR5cGUpLCBEYXRhYmFzZVRhc2tUeXBlOjpTaHV0ZG93bik7CiB9CiAKIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFNodXRkb3duQmFja2luZ1N0b3JlKFVuaXF1ZUlEQkRh
dGFiYXNlU2h1dGRvd25UeXBlIHR5cGUpCkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6Z2V0T3JFc3RhYmxpc2hJREJEYXRhYmFzZU1ldGFkYXRhKHN0ZDo6ZnVuY3Rp
b248dm9pZCAoYm8KICAgICBtX3BlbmRpbmdNZXRhZGF0YVJlcXVlc3RzLmFwcGVuZChyZXF1ZXN0
LnJlbGVhc2UoKSk7CiAKICAgICBpZiAoc2hvdWxkT3BlbkJhY2tpbmdTdG9yZSkKLSAgICAgICAg
cG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFz
ZTo6b3BlbkJhY2tpbmdTdG9yZUFuZFJlYWRNZXRhZGF0YSwgbV9pZGVudGlmaWVyLCBhYnNvbHV0
ZURhdGFiYXNlRGlyZWN0b3J5KCkpKTsKKyAgICAgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVD
cm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9y
ZUFuZFJlYWRNZXRhZGF0YSwgbV9pZGVudGlmaWVyLCBhYnNvbHV0ZURhdGFiYXNlRGlyZWN0b3J5
KCkpKTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZUFuZFJl
YWRNZXRhZGF0YShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpCkBAIC0yNjQsNyArMjY0LDcgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZUFuZFJlYWRNZXRhZGF0YShjb25z
dCBVbmlxdWVJREJEYXRhYmFzZUkKICAgICBtX2JhY2tpbmdTdG9yZSA9IFVuaXF1ZUlEQkRhdGFi
YXNlQmFja2luZ1N0b3JlU1FMaXRlOjpjcmVhdGUoaWRlbnRpZmllciwgZGF0YWJhc2VEaXJlY3Rv
cnkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZU1ldGFkYXRhPiBtZXRhZGF0YSA9
IG1fYmFja2luZ1N0b3JlLT5nZXRPckVzdGFibGlzaE1ldGFkYXRhKCk7CiAKLSAgICBwb3N0TWFp
blRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRp
ZE9wZW5CYWNraW5nU3RvcmVBbmRSZWFkTWV0YWRhdGEsIG1ldGFkYXRhID8gKm1ldGFkYXRhIDog
SURCRGF0YWJhc2VNZXRhZGF0YSgpLCAhIW1ldGFkYXRhKSk7CisgICAgcG9zdE1haW5UaHJlYWRU
YXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRP
cGVuQmFja2luZ1N0b3JlQW5kUmVhZE1ldGFkYXRhLCBtZXRhZGF0YSA/ICptZXRhZGF0YSA6IElE
QkRhdGFiYXNlTWV0YWRhdGEoKSwgISFtZXRhZGF0YSkpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpkaWRPcGVuQmFja2luZ1N0b3JlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IElEQkRhdGFi
YXNlTWV0YWRhdGEmIG1ldGFkYXRhLCBib29sIHN1Y2Nlc3MpCkBAIC0yODUsMzAgKzI4NSwzMCBA
QCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQmFja2luZ1N0b3JlQW5kUmVhZE1ldGFk
YXRhKGNvbnN0IElEQkRhdGFiYXNlTWV0YQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVu
VHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSURzLCBJbmRleGVkREI6OlRyYW5zYWN0
aW9uTW9kZSBtb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2sp
CiB7Ci0gICAgcG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
Y3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5CYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlEcywgbW9k
ZSksIHN1Y2Nlc3NDYWxsYmFjayk7CisgICAgcG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURC
RGF0YWJhc2U6Om9wZW5CYWNraW5nU3RvcmVUcmFuc2FjdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBvYmplY3RTdG9yZUlEcywgbW9kZSksIHN1Y2Nlc3NDYWxsYmFjayk7CiB9CiAKIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmJlZ2luVHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNjZXNz
Q2FsbGJhY2spCiB7Ci0gICAgcG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmJlZ2lu
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uSWRlbnRpZmllciksIHN1Y2Nlc3ND
YWxsYmFjayk7CisgICAgcG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmJl
Z2luQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uSWRlbnRpZmllciksIHN1Y2Nl
c3NDYWxsYmFjayk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0
aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgc3RkOjpmdW5j
dGlvbjx2b2lkIChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKQogewotICAgIHBvc3RUcmFuc2FjdGlv
bk9wZXJhdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNyZWF0ZUFzeW5jVGFzaygqdGhpcywg
JlVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiwgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyKSwgc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBwb3N0VHJhbnNhY3Rpb25P
cGVyYXRpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRo
aXMsICZVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24sIHRy
YW5zYWN0aW9uSWRlbnRpZmllciksIHN1Y2Nlc3NDYWxsYmFjayk7CiB9CiAKIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnJlc2V0VHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNjZXNzQ2FsbGJh
Y2spCiB7Ci0gICAgcG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnJlc2V0QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uSWRlbnRpZmllciksIHN1Y2Nlc3NDYWxsYmFj
ayk7CisgICAgcG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
Y3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnJlc2V0QmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uSWRlbnRpZmllciksIHN1Y2Nlc3NDYWxs
YmFjayk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJvbGxiYWNrVHJhbnNhY3Rpb24o
Y29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spCiB7Ci0gICAgcG9zdFRyYW5zYWN0aW9uT3Bl
cmF0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5p
cXVlSURCRGF0YWJhc2U6OnJvbGxiYWNrQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24sIHRyYW5zYWN0
aW9uSWRlbnRpZmllciksIHN1Y2Nlc3NDYWxsYmFjayk7CisgICAgcG9zdFRyYW5zYWN0aW9uT3Bl
cmF0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlz
LCAmVW5pcXVlSURCRGF0YWJhc2U6OnJvbGxiYWNrQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24sIHRy
YW5zYWN0aW9uSWRlbnRpZmllciksIHN1Y2Nlc3NDYWxsYmFjayk7CiB9CiAKLXZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnBvc3RUcmFuc2FjdGlvbk9wZXJhdGlvbihjb25zdCBJREJJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IHRhc2ss
IHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKK3ZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnBvc3RUcmFuc2FjdGlvbk9wZXJhdGlvbihjb25zdCBJREJJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+
IHRhc2ssIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0zNzEsNyArMzcxLDcgQEAgdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6Y2hhbmdlRGF0YWJhc2VWZXJzaW9uKGNvbnN0IElEQklkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWQKICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5yZXF1
ZXN0SUQoKTsKICAgICBtX3BlbmRpbmdEYXRhYmFzZVRhc2tzLmFkZChyZXF1ZXN0SUQsIHJlcXVl
c3QucmVsZWFzZSgpKTsKIAotICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0
aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmNoYW5nZURhdGFiYXNlVmVyc2lvbkluQmFja2luZ1N0
b3JlLCByZXF1ZXN0SUQsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgbmV3VmVyc2lvbikpOworICAg
IHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURC
RGF0YWJhc2U6OmNoYW5nZURhdGFiYXNlVmVyc2lvbkluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQs
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgbmV3VmVyc2lvbikpOwogfQogCiB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpkaWRDaGFuZ2VEYXRhYmFzZVZlcnNpb24odWludDY0X3QgcmVxdWVzdElELCBi
b29sIHN1Y2Nlc3MpCkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGkK
ICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5yZXF1ZXN0SUQoKTsKICAgICBtX3Bl
bmRpbmdEYXRhYmFzZVRhc2tzLmFkZChyZXF1ZXN0SUQsIHJlcXVlc3QucmVsZWFzZSgpKTsKIAot
ICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0
YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBtZXRhZGF0YSkpOworICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRl
Q3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0
b3JlSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBtZXRh
ZGF0YSkpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShj
b25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0
U3RvcmVJRCwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKQpAQCAt
NDYxLDcgKzQ2MSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3Jl
KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpCiAgICAgdWludDY0X3QgcmVx
dWVzdElEID0gcmVxdWVzdC0+cmVxdWVzdElEKCk7CiAgICAgbV9wZW5kaW5nRGF0YWJhc2VUYXNr
cy5hZGQocmVxdWVzdElELCByZXF1ZXN0LnJlbGVhc2UoKSk7CiAKLSAgICBwb3N0RGF0YWJhc2VU
YXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmpl
Y3RTdG9yZUluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
b2JqZWN0U3RvcmVJRCkpOworICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRU
YXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlSW5CYWNraW5n
U3RvcmUsIHJlcXVlc3RJRCwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlEKSk7
CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURC
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQs
IHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKQEAgLTQ4NCw3ICs0
ODQsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKGNvbnN0IElE
QklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZgogICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9
IHJlcXVlc3QtPnJlcXVlc3RJRCgpOwogICAgIG1fcGVuZGluZ0RhdGFiYXNlVGFza3MuYWRkKHJl
cXVlc3RJRCwgcmVxdWVzdC5yZWxlYXNlKCkpOwogCi0gICAgcG9zdERhdGFiYXNlVGFzayhjcmVh
dGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJPYmplY3RTdG9yZUlu
QmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3Rv
cmVJRCkpOworICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlz
LCAmVW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSwgcmVx
dWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSUQpKTsKIH0KIAogdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IElEQkluZGV4
TWV0YWRhdGEmIG1ldGFkYXRhLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNjZXNzQ2Fs
bGJhY2spCkBAIC01MTgsNyArNTE4LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRl
SW5kZXgoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLAogICAgIHVp
bnQ2NF90IHJlcXVlc3RJRCA9IHJlcXVlc3QtPnJlcXVlc3RJRCgpOwogICAgIG1fcGVuZGluZ0Rh
dGFiYXNlVGFza3MuYWRkKHJlcXVlc3RJRCwgcmVxdWVzdC5yZWxlYXNlKCkpOwogCi0gICAgcG9z
dERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6
Y3JlYXRlSW5kZXhJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIG9iamVjdFN0b3JlSUQsIG1ldGFkYXRhKSk7CisgICAgcG9zdERhdGFiYXNlVGFzayhjcmVh
dGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXhJ
bkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0
b3JlSUQsIG1ldGFkYXRhKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUlu
ZGV4KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBv
YmplY3RTdG9yZUlELCBpbnQ2NF90IGluZGV4SUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+
IHN1Y2Nlc3NDYWxsYmFjaykKQEAgLTU1Miw3ICs1NTIsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpkZWxldGVJbmRleChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsCiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gcmVxdWVzdC0+cmVxdWVzdElEKCk7CiAgICAg
bV9wZW5kaW5nRGF0YWJhc2VUYXNrcy5hZGQocmVxdWVzdElELCByZXF1ZXN0LnJlbGVhc2UoKSk7
CiAKLSAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlE
QkRhdGFiYXNlOjpkZWxldGVJbmRleEluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCkpOworICAgIHBvc3REYXRhYmFz
ZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRl
bGV0ZUluZGV4SW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBvYmplY3RTdG9yZUlELCBpbmRleElEKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OnB1dFJlY29yZChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiB2YWx1ZSwgaW50NjRfdCBwdXRNb2RlLCBjb25zdCBWZWN0b3I8aW50
NjRfdD4mIGluZGV4SURzLCBjb25zdCBWZWN0b3I8VmVjdG9yPElEQktleURhdGE+PiYgaW5kZXhL
ZXlzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IElEQktleURhdGEmLCB1aW50MzJfdCwgY29u
c3QgU3RyaW5nJik+IGNhbGxiYWNrKQpAQCAtNTc1LDcgKzU3NSw3IEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OnB1dFJlY29yZChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIGluCiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gcmVxdWVzdC0+cmVxdWVzdElEKCk7
CiAgICAgbV9wZW5kaW5nRGF0YWJhc2VUYXNrcy5hZGQocmVxdWVzdElELCByZXF1ZXN0LnJlbGVh
c2UoKSk7CiAKLSAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVu
aXF1ZUlEQkRhdGFiYXNlOjpwdXRSZWNvcmRJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIG1fbWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5nZXQob2JqZWN0U3Rv
cmVJRCksIGtleURhdGEsIHZhbHVlLnZlY3RvcigpLCBwdXRNb2RlLCBpbmRleElEcywgaW5kZXhL
ZXlzKSk7CisgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMs
ICZVbmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBtX21ldGFkYXRhLT5vYmplY3RTdG9yZXMuZ2V0KG9iamVj
dFN0b3JlSUQpLCBrZXlEYXRhLCB2YWx1ZS52ZWN0b3IoKSwgcHV0TW9kZSwgaW5kZXhJRHMsIGlu
ZGV4S2V5cykpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQoY29uc3Qg
SURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SUQsIGludDY0X3QgaW5kZXhJRCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEs
IEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNv
bnN0IElEQkdldFJlc3VsdCYsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2spCkBA
IC01OTgsNyArNTk4LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkKGNvbnN0
IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW4KICAgICB1aW50NjRfdCBy
ZXF1ZXN0SUQgPSByZXF1ZXN0LT5yZXF1ZXN0SUQoKTsKICAgICBtX3BlbmRpbmdEYXRhYmFzZVRh
c2tzLmFkZChyZXF1ZXN0SUQsIHJlcXVlc3QucmVsZWFzZSgpKTsKIAotICAgIHBvc3REYXRhYmFz
ZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29y
ZEZyb21CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBtX21l
dGFkYXRhLT5vYmplY3RTdG9yZXMuZ2V0KG9iamVjdFN0b3JlSUQpLCBpbmRleElELCBrZXlSYW5n
ZURhdGEsIGN1cnNvclR5cGUpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhy
ZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmRGcm9tQmFja2luZ1N0
b3JlLCByZXF1ZXN0SUQsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgbV9tZXRhZGF0YS0+b2JqZWN0
U3RvcmVzLmdldChvYmplY3RTdG9yZUlEKSwgaW5kZXhJRCwga2V5UmFuZ2VEYXRhLCBjdXJzb3JU
eXBlKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3IoY29uc3QgSURC
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQs
IGludDY0X3QgaW5kZXhJRCwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gY3Vyc29yRGlyZWN0
aW9uLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5k
OjpUYXNrVHlwZSB0YXNrVHlwZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEs
IHN0ZDo6ZnVuY3Rpb248dm9pZCAoaW50NjRfdCwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElE
QktleURhdGEmLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIHVpbnQzMl90LCBjb25zdCBTdHJp
bmcmKT4gY2FsbGJhY2spCkBAIC02MjEsNyArNjIxLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6b3BlbkN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IGkKICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5yZXF1ZXN0SUQoKTsKICAgICBt
X3BlbmRpbmdEYXRhYmFzZVRhc2tzLmFkZChyZXF1ZXN0SUQsIHJlcXVlc3QucmVsZWFzZSgpKTsK
IAotICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURC
RGF0YWJhc2U6Om9wZW5DdXJzb3JJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIGN1cnNvckRpcmVjdGlvbiwgY3Vy
c29yVHlwZSwgdGFza1R5cGUsIGtleVJhbmdlRGF0YSkpOworICAgIHBvc3REYXRhYmFzZVRhc2so
Y3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJz
b3JJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVj
dFN0b3JlSUQsIGluZGV4SUQsIGN1cnNvckRpcmVjdGlvbiwgY3Vyc29yVHlwZSwgdGFza1R5cGUs
IGtleVJhbmdlRGF0YSkpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjdXJzb3JBZHZh
bmNlKGNvbnN0IElEQklkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIHVpbnQ2NF90IGNvdW50
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJLZXlEYXRh
JiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJik+IGNh
bGxiYWNrKQpAQCAtNjQyLDcgKzY0Miw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmN1cnNv
ckFkdmFuY2UoY29uc3QgSURCSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgdWluCiAgICAg
dWludDY0X3QgcmVxdWVzdElEID0gcmVxdWVzdC0+cmVxdWVzdElEKCk7CiAgICAgbV9wZW5kaW5n
RGF0YWJhc2VUYXNrcy5hZGQocmVxdWVzdElELCByZXF1ZXN0LnJlbGVhc2UoKSk7CiAKLSAgICBw
b3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNl
OjphZHZhbmNlQ3Vyc29ySW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgY3Vyc29ySWRlbnRpZmll
ciwgY291bnQpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygq
dGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjphZHZhbmNlQ3Vyc29ySW5CYWNraW5nU3RvcmUsIHJl
cXVlc3RJRCwgY3Vyc29ySWRlbnRpZmllciwgY291bnQpKTsKIH0KIAogdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6Y3Vyc29ySXRlcmF0ZShjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlm
aWVyLCBjb25zdCBJREJLZXlEYXRhJiBrZXksIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgSURC
S2V5RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIHVp
bnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2spCkBAIC02NjMsNyArNjYzLDcgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3Vyc29ySXRlcmF0ZShjb25zdCBJREJJZGVudGlmaWVyJiBj
dXJzb3JJZGVudGlmaWVyLCBjb24KICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5y
ZXF1ZXN0SUQoKTsKICAgICBtX3BlbmRpbmdEYXRhYmFzZVRhc2tzLmFkZChyZXF1ZXN0SUQsIHJl
cXVlc3QucmVsZWFzZSgpKTsKIAotICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNr
KCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3JJbkJhY2tpbmdTdG9yZSwg
cmVxdWVzdElELCBjdXJzb3JJZGVudGlmaWVyLCBrZXkpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNr
KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjppdGVyYXRl
Q3Vyc29ySW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgY3Vyc29ySWRlbnRpZmllciwga2V5KSk7
CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvdW50KGNvbnN0IElEQklkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2NF90IGlu
ZGV4SUQsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKGludDY0X3QsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2spCkBAIC02
ODQsNyArNjg0LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y291bnQoY29uc3QgSURCSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF8KICAgICB1aW50NjRfdCByZXF1
ZXN0SUQgPSByZXF1ZXN0LT5yZXF1ZXN0SUQoKTsKICAgICBtX3BlbmRpbmdEYXRhYmFzZVRhc2tz
LmFkZChyZXF1ZXN0SUQsIHJlcXVlc3QucmVsZWFzZSgpKTsKIAotICAgIHBvc3REYXRhYmFzZVRh
c2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmNvdW50SW5CYWNr
aW5nU3RvcmUsIHJlcXVlc3RJRCwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlE
LCBpbmRleElELCBrZXlSYW5nZURhdGEpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNy
b3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpjb3VudEluQmFja2luZ1N0
b3JlLCByZXF1ZXN0SUQsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRCwgaW5k
ZXhJRCwga2V5UmFuZ2VEYXRhKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0
ZVJhbmdlKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRf
dCBvYmplY3RTdG9yZUlELCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgc3Rk
OjpmdW5jdGlvbjx2b2lkICh1aW50MzJfdCwgY29uc3QgU3RyaW5nJik+IGNhbGxiYWNrKQpAQCAt
NzA1LDcgKzcwNSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJhbmdlKGNvbnN0
IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwKICAgICB1aW50NjRfdCByZXF1
ZXN0SUQgPSByZXF1ZXN0LT5yZXF1ZXN0SUQoKTsKICAgICBtX3BlbmRpbmdEYXRhYmFzZVRhc2tz
LmFkZChyZXF1ZXN0SUQsIHJlcXVlc3QucmVsZWFzZSgpKTsKIAotICAgIHBvc3REYXRhYmFzZVRh
c2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJhbmdl
SW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RT
dG9yZUlELCBrZXlSYW5nZURhdGEpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3Nz
VGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSYW5nZUluQmFja2lu
Z1N0b3JlLCByZXF1ZXN0SUQsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRCwg
a2V5UmFuZ2VEYXRhKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5CYWNraW5n
U3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJRHMsIEluZGV4ZWREQjo6VHJh
bnNhY3Rpb25Nb2RlIG1vZGUpCkBAIC03MTUsOCArNzE1LDggQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6b3BlbkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRy
YW5zYWMKIAogICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5lc3RhYmxpc2hUcmFu
c2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSURzLCBtb2RlKTsKIAot
ICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkRXN0YWJsaXNoVHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
c3VjY2VzcykpOwotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMs
ICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlvbiwgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBzdWNjZXNzKSk7CisgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNy
ZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRFc3RhYmxp
c2hUcmFuc2FjdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdWNjZXNzKSk7CisgICAgcG9z
dE1haW5UaHJlYWRUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRh
dGFiYXNlOjpkaWRDb21wbGV0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uLCB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIHN1Y2Nlc3MpKTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YmVnaW5CYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIpCkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YmVnaW5C
YWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2EKIAogICAg
IGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5iZWdpblRyYW5zYWN0aW9uKHRyYW5zYWN0
aW9uSWRlbnRpZmllcik7CiAKLSAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNr
KCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZENvbXBsZXRlVHJhbnNhY3Rpb25PcGVyYXRp
b24sIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgc3VjY2VzcykpOworICAgIHBvc3RNYWluVGhyZWFk
VGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlk
Q29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdWNj
ZXNzKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdEJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKQEAg
LTczNiw3ICs3MzYsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRCYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFucwogCiAgICAgYm9vbCBzdWNj
ZXNzID0gbV9iYWNraW5nU3RvcmUtPmNvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRp
Zmllcik7CiAKLSAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAm
VW5pcXVlSURCRGF0YWJhc2U6OmRpZENvbXBsZXRlVHJhbnNhY3Rpb25PcGVyYXRpb24sIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgc3VjY2VzcykpOworICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVh
dGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ29tcGxldGVU
cmFuc2FjdGlvbk9wZXJhdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdWNjZXNzKSk7CiB9
CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlc2V0QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24o
Y29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQpAQCAtNzQ2LDggKzc0
Niw4IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlc2V0QmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhCiAKICAgICBib29sIHN1Y2Nlc3MgPSBtX2Jh
Y2tpbmdTdG9yZS0+cmVzZXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogCi0g
ICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRh
dGFiYXNlOjpkaWRSZXNldFRyYW5zYWN0aW9uLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHN1Y2Nl
c3MpKTsKLSAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5p
cXVlSURCRGF0YWJhc2U6OmRpZENvbXBsZXRlVHJhbnNhY3Rpb25PcGVyYXRpb24sIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgc3VjY2VzcykpOworICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVD
cm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUmVzZXRUcmFuc2Fj
dGlvbiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdWNjZXNzKSk7CisgICAgcG9zdE1haW5UaHJl
YWRUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpk
aWRDb21wbGV0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHN1
Y2Nlc3MpKTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cm9sbGJhY2tCYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIp
CkBAIC03NTcsNyArNzU3LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cm9sbGJhY2tCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmEKIAogICAgIGJvb2wg
c3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5yb2xsYmFja1RyYW5zYWN0aW9uKHRyYW5zYWN0aW9u
SWRlbnRpZmllcik7CiAKLSAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0
aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZENvbXBsZXRlVHJhbnNhY3Rpb25PcGVyYXRpb24s
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgc3VjY2VzcykpOworICAgIHBvc3RNYWluVGhyZWFkVGFz
ayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ29t
cGxldGVUcmFuc2FjdGlvbk9wZXJhdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdWNjZXNz
KSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNoYW5nZURhdGFiYXNlVmVyc2lvbklu
QmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBuZXdWZXJzaW9uKQpAQCAtNzY3LDcgKzc2Nyw3
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNoYW5nZURhdGFiYXNlVmVyc2lvbkluQmFja2lu
Z1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwKIAogICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2lu
Z1N0b3JlLT5jaGFuZ2VEYXRhYmFzZVZlcnNpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBuZXdW
ZXJzaW9uKTsKIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMs
ICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ2hhbmdlRGF0YWJhc2VWZXJzaW9uLCByZXF1ZXN0SUQs
IHN1Y2Nlc3MpKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNr
KCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZENoYW5nZURhdGFiYXNlVmVyc2lvbiwgcmVx
dWVzdElELCBzdWNjZXNzKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9i
amVjdFN0b3JlSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRh
dGEmIG1ldGFkYXRhKQpAQCAtNzc3LDcgKzc3Nyw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OmNyZWF0ZU9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25z
CiAKICAgICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlT2JqZWN0U3RvcmUo
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBtZXRhZGF0YSk7CiAKLSAgICBwb3N0TWFpblRocmVhZFRh
c2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZENyZWF0ZU9i
amVjdFN0b3JlLCByZXF1ZXN0SUQsIHN1Y2Nlc3MpKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2so
Y3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZENyZWF0
ZU9iamVjdFN0b3JlLCByZXF1ZXN0SUQsIHN1Y2Nlc3MpKTsKIH0KIAogdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0
SUQsIGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBv
YmplY3RTdG9yZUlEKQpAQCAtNzg3LDcgKzc4Nyw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OmRlbGV0ZU9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25z
CiAKICAgICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlT2JqZWN0U3RvcmUo
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlEKTsKIAotICAgIHBvc3RNYWluVGhy
ZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVs
ZXRlT2JqZWN0U3RvcmUsIHJlcXVlc3RJRCwgc3VjY2VzcykpOworICAgIHBvc3RNYWluVGhyZWFk
VGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlk
RGVsZXRlT2JqZWN0U3RvcmUsIHJlcXVlc3RJRCwgc3VjY2VzcykpOwogfQogCiB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVx
dWVzdElELCBjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0
X3Qgb2JqZWN0U3RvcmVJRCkKQEAgLTc5Nyw3ICs3OTcsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpjbGVhck9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBj
b25zdAogCiAgICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmNsZWFyT2JqZWN0U3Rv
cmUodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlEKTsKIAotICAgIHBvc3RNYWlu
VGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlk
Q2xlYXJPYmplY3RTdG9yZSwgcmVxdWVzdElELCBzdWNjZXNzKSk7CisgICAgcG9zdE1haW5UaHJl
YWRUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpk
aWRDbGVhck9iamVjdFN0b3JlLCByZXF1ZXN0SUQsIHN1Y2Nlc3MpKTsKIH0KIAogdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXhJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0
SUQsIGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBv
YmplY3RTdG9yZUlELCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBtZXRhZGF0YSkKQEAgLTgwNyw3
ICs4MDcsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleEluQmFja2luZ1N0
b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSQogCiAgICAgYm9vbCBzdWNjZXNzID0g
bV9iYWNraW5nU3RvcmUtPmNyZWF0ZUluZGV4KHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0
U3RvcmVJRCwgbWV0YWRhdGEpOwogCi0gICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5j
VGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRDcmVhdGVJbmRleCwgcmVxdWVzdElE
LCBzdWNjZXNzKSk7CisgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFz
aygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRDcmVhdGVJbmRleCwgcmVxdWVzdElELCBz
dWNjZXNzKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4SW5CYWNr
aW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElEKQpA
QCAtODE3LDcgKzgxNyw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4SW5C
YWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJCiAKICAgICBib29sIHN1
Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlSW5kZXgodHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBvYmplY3RTdG9yZUlELCBpbmRleElEKTsKIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVh
dGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVsZXRlSW5kZXgsIHJl
cXVlc3RJRCwgc3VjY2VzcykpOworICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVsZXRlSW5kZXgsIHJlcXVl
c3RJRCwgc3VjY2VzcykpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRSZWNvcmRJ
bkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQklkZW50aWZpZXImIHRy
YW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1ldGFk
YXRhLCBjb25zdCBJREJLZXlEYXRhJiBpbnB1dEtleURhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgdmFsdWUsIGludDY0X3QgcHV0TW9kZSwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElE
cywgY29uc3QgVmVjdG9yPFZlY3RvcjxJREJLZXlEYXRhPj4mIGluZGV4S2V5cykKQEAgLTgzMSw3
ICs4MzEsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRSZWNvcmRJbkJhY2tpbmdTdG9y
ZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQklkZQogCiAgICAgaWYgKHB1dE1vZGUgIT0g
SURCRGF0YWJhc2VCYWNrZW5kOjpDdXJzb3JVcGRhdGUgJiYgb2JqZWN0U3RvcmVNZXRhZGF0YS5h
dXRvSW5jcmVtZW50ICYmIGlucHV0S2V5RGF0YS5pc051bGwpIHsKICAgICAgICAgaWYgKCFtX2Jh
Y2tpbmdTdG9yZS0+Z2VuZXJhdGVLZXlOdW1iZXIodHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlTWV0
YWRhdGEuaWQsIGtleU51bWJlcikpIHsKLSAgICAgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhj
cmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUHV0UmVjb3JkSW5C
YWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCS2V5RGF0YSgpLCBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkludGVybmFsIGJhY2tpbmcgc3RvcmUgZXJy
b3IgY2hlY2tpbmcgZm9yIGtleSBleGlzdGVuY2UiKSkpOworICAgICAgICAgICAgcG9zdE1haW5U
aHJlYWRUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNl
OjpkaWRQdXRSZWNvcmRJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBJREJLZXlEYXRhKCksIElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwg
YmFja2luZyBzdG9yZSBlcnJvciBjaGVja2luZyBmb3Iga2V5IGV4aXN0ZW5jZSIpKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAga2V5LnNldE51bWJlclZhbHVlKGtl
eU51bWJlcik7CkBAIC04NDIsMTEgKzg0MiwxMSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpw
dXRSZWNvcmRJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQklkZQog
ICAgIGlmIChwdXRNb2RlID09IElEQkRhdGFiYXNlQmFja2VuZDo6QWRkT25seSkgewogICAgICAg
ICBib29sIGtleUV4aXN0czsKICAgICAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+a2V5RXhpc3Rz
SW5PYmplY3RTdG9yZSh0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVNZXRhZGF0YS5pZCwga2V5LCBr
ZXlFeGlzdHMpKSB7Ci0gICAgICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNU
YXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFB1dFJlY29yZEluQmFja2luZ1N0b3Jl
LCByZXF1ZXN0SUQsIElEQktleURhdGEoKSwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25F
cnJvciwgQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBiYWNraW5nIHN0b3JlIGVycm9yIGNoZWNraW5n
IGZvciBrZXkgZXhpc3RlbmNlIikpKTsKKyAgICAgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhj
cmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUHV0UmVj
b3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCS2V5RGF0YSgpLCBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkludGVybmFsIGJhY2tpbmcgc3Rv
cmUgZXJyb3IgY2hlY2tpbmcgZm9yIGtleSBleGlzdGVuY2UiKSkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChrZXlFeGlzdHMpIHsKLSAgICAgICAgICAgIHBv
c3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFz
ZTo6ZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCS2V5RGF0YSgpLCBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yLCBBU0NJSUxpdGVyYWwoIktleSBh
bHJlYWR5IGV4aXN0cyBpbiB0aGUgb2JqZWN0IHN0b3JlIikpKTsKKyAgICAgICAgICAgIHBvc3RN
YWluVGhyZWFkVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRh
YmFzZTo6ZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCS2V5RGF0YSgp
LCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yLCBBU0NJSUxpdGVyYWwoIktl
eSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgb2JqZWN0IHN0b3JlIikpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTg1NCwxMiArODU0LDEyIEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnB1dFJlY29yZEluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwg
Y29uc3QgSURCSWRlCiAgICAgLy8gVGhlIHNwZWMgc2F5cyB0aGF0IGV2ZW4gaWYgd2UncmUgYWJv
dXQgdG8gb3ZlcndyaXRlIHRoZSByZWNvcmQsIHBlcmZvcm0gdGhlIHN0ZXBzIHRvIGRlbGV0ZSBp
dCBmaXJzdC4KICAgICAvLyBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGZvcm1hbGx5IGRlbGV0
aW5nIGl0IGZyb20gZnJvbSB0aGUgb2JqZWN0IHN0b3JlIGFsc28gcmVtb3ZlcyBpdCBmcm9tIHRo
ZSBhcHByb3ByaWF0ZSBpbmRleGVzLgogICAgIGlmICghbV9iYWNraW5nU3RvcmUtPmRlbGV0ZVJl
Y29yZCh0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVNZXRhZGF0YS5pZCwga2V5KSkgewotICAgICAg
ICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0
YWJhc2U6OmRpZFB1dFJlY29yZEluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIElEQktleURhdGEo
KSwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJSZXBs
YWNpbmcgYW4gZXhpc3Rpbmcga2V5IGluIGJhY2tpbmcgc3RvcmUsIHVuYWJsZSB0byBkZWxldGUg
cHJldmlvdXMgcmVjb3JkLiIpKSk7CisgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVD
cm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUHV0UmVjb3JkSW5C
YWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCS2V5RGF0YSgpLCBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIlJlcGxhY2luZyBhbiBleGlzdGluZyBrZXkg
aW4gYmFja2luZyBzdG9yZSwgdW5hYmxlIHRvIGRlbGV0ZSBwcmV2aW91cyByZWNvcmQuIikpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghbV9iYWNraW5nU3RvcmUtPnB1dFJl
Y29yZCh0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVNZXRhZGF0YS5pZCwga2V5LCB2YWx1ZS5kYXRh
KCksIHZhbHVlLnNpemUoKSkpIHsKLSAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFz
eW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQdXRSZWNvcmRJbkJhY2tpbmdT
dG9yZSwgcmVxdWVzdElELCBJREJLZXlEYXRhKCksIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtu
b3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgYmFja2luZyBzdG9yZSBlcnJvciBwdXR0
aW5nIGEgcmVjb3JkIikpKTsKKyAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUNyb3Nz
VGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQdXRSZWNvcmRJbkJhY2tp
bmdTdG9yZSwgcmVxdWVzdElELCBJREJLZXlEYXRhKCksIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpV
bmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgYmFja2luZyBzdG9yZSBlcnJvciBw
dXR0aW5nIGEgcmVjb3JkIikpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODY3LDcg
Kzg2Nyw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dFJlY29yZEluQmFja2luZ1N0b3Jl
KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSWRlCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBpbmRleElEcy5zaXplKCk7ICsraSkgewogICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsg
aiA8IGluZGV4S2V5c1tpXS5zaXplKCk7ICsraikgewogICAgICAgICAgICAgaWYgKCFtX2JhY2tp
bmdTdG9yZS0+cHV0SW5kZXhSZWNvcmQodHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlTWV0YWRhdGEu
aWQsIGluZGV4SURzW2ldLCBrZXksIGluZGV4S2V5c1tpXVtqXSkpIHsKLSAgICAgICAgICAgICAg
ICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0
YWJhc2U6OmRpZFB1dFJlY29yZEluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIElEQktleURhdGEo
KSwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJJbnRl
cm5hbCBiYWNraW5nIHN0b3JlIGVycm9yIHdyaXRpbmcgaW5kZXgga2V5IikpKTsKKyAgICAgICAg
ICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAm
VW5pcXVlSURCRGF0YWJhc2U6OmRpZFB1dFJlY29yZEluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQs
IElEQktleURhdGEoKSwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlM
aXRlcmFsKCJJbnRlcm5hbCBiYWNraW5nIHN0b3JlIGVycm9yIHdyaXRpbmcgaW5kZXgga2V5Iikp
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTg3NywxMiArODc3LDEyIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dFJlY29yZEluQmFj
a2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSWRlCiAKICAgICBpZiAocHV0
TW9kZSAhPSBJREJEYXRhYmFzZUJhY2tlbmQ6OkN1cnNvclVwZGF0ZSAmJiBvYmplY3RTdG9yZU1l
dGFkYXRhLmF1dG9JbmNyZW1lbnQgJiYga2V5LnR5cGUgPT0gS2V5VHlwZTo6TnVtYmVyKSB7CiAg
ICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUtPnVwZGF0ZUtleUdlbmVyYXRvck51bWJlcih0cmFu
c2FjdGlvbiwgb2JqZWN0U3RvcmVNZXRhZGF0YS5pZCwga2V5TnVtYmVyLCBrZXlXYXNHZW5lcmF0
ZWQpKSB7Ci0gICAgICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0
aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFB1dFJlY29yZEluQmFja2luZ1N0b3JlLCByZXF1
ZXN0SUQsIElEQktleURhdGEoKSwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwg
QVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBiYWNraW5nIHN0b3JlIGVycm9yIHVwZGF0aW5nIGtleSBn
ZW5lcmF0b3IiKSkpOworICAgICAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUNyb3Nz
VGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQdXRSZWNvcmRJbkJhY2tp
bmdTdG9yZSwgcmVxdWVzdElELCBJREJLZXlEYXRhKCksIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpV
bmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgYmFja2luZyBzdG9yZSBlcnJvciB1
cGRhdGluZyBrZXkgZ2VuZXJhdG9yIikpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0KIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMs
ICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJ
RCwga2V5LCAwLCBTdHJpbmcoU3RyaW5nSW1wbDo6ZW1wdHkoKSkpKTsKKyAgICBwb3N0TWFpblRo
cmVhZFRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6
OmRpZFB1dFJlY29yZEluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIGtleSwgMCwgU3RyaW5nKFN0
cmluZ0ltcGw6OmVtcHR5KCkpKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFB1
dFJlY29yZEluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCS2V5RGF0
YSYga2V5RGF0YSwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSkKQEAgLTg5OCw3ICs4OTgsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmRG
cm9tQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSQogICAgIFJlZlB0
cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBrZXlSYW5nZURhdGEubWF5YmVDcmVhdGVJREJLZXlS
YW5nZSgpOwogICAgIEFTU0VSVChrZXlSYW5nZSk7CiAgICAgaWYgKCFrZXlSYW5nZSkgewotICAg
ICAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURC
RGF0YWJhc2U6OmRpZEdldFJlY29yZEZyb21CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCR2V0
UmVzdWx0KCksIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJh
bCgiSW52YWxpZCBJREJLZXlSYW5nZSByZXF1ZXN0ZWQgZnJvbSBiYWNraW5nIHN0b3JlIikpKTsK
KyAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywg
JlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRHZXRSZWNvcmRGcm9tQmFja2luZ1N0b3JlLCByZXF1ZXN0
SUQsIElEQkdldFJlc3VsdCgpLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBB
U0NJSUxpdGVyYWwoIkludmFsaWQgSURCS2V5UmFuZ2UgcmVxdWVzdGVkIGZyb20gYmFja2luZyBz
dG9yZSIpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkwOCwxMCArOTA4LDEwIEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZEZyb21CYWNraW5nU3RvcmUodWludDY0
X3QgcmVxdWVzdElELCBjb25zdCBJREJJCiAKICAgICAgICAgaWYgKGtleVJhbmdlLT5pc09ubHlL
ZXkoKSkgewogICAgICAgICAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+Z2V0S2V5UmVjb3JkRnJv
bU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU1ldGFkYXRhLmlkLCAqa2V5UmFu
Z2UtPmxvd2VyKCksIHJlc3VsdCkpCi0gICAgICAgICAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNr
KGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRHZXRSZWNvcmRG
cm9tQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIElEQkdldFJlc3VsdCgpLCBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBnZXQga2V5IHJl
Y29yZCBmcm9tIG9iamVjdCBzdG9yZSBpbiBiYWNraW5nIHN0b3JlIikpKTsKKyAgICAgICAgICAg
ICAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5p
cXVlSURCRGF0YWJhc2U6OmRpZEdldFJlY29yZEZyb21CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwg
SURCR2V0UmVzdWx0KCksIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiRmFpbGVkIHRvIGdldCBrZXkgcmVjb3JkIGZyb20gb2JqZWN0IHN0b3JlIGluIGJh
Y2tpbmcgc3RvcmUiKSkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgSURC
R2V0UmVzdWx0IGdldFJlc3VsdCA9IHJlc3VsdCA/IElEQkdldFJlc3VsdChyZXN1bHQucmVsZWFz
ZSgpLCBrZXlSYW5nZS0+bG93ZXIoKSwgb2JqZWN0U3RvcmVNZXRhZGF0YS5rZXlQYXRoKSA6IElE
QkdldFJlc3VsdCgpOwotICAgICAgICAgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVB
c3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkR2V0UmVjb3JkRnJvbUJhY2tp
bmdTdG9yZSwgcmVxdWVzdElELCBnZXRSZXN1bHQsIDAsIFN0cmluZyhTdHJpbmdJbXBsOjplbXB0
eSgpKSkpOworICAgICAgICAgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkR2V0UmVjb3JkRnJvbUJhY2tp
bmdTdG9yZSwgcmVxdWVzdElELCBnZXRSZXN1bHQsIDAsIFN0cmluZyhTdHJpbmdJbXBsOjplbXB0
eSgpKSkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICByZXR1cm47CkBAIC05MjAsMTAg
KzkyMCwxMCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmRGcm9tQmFja2luZ1N0
b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSQogICAgICAgICBSZWZQdHI8SURCS2V5
PiByZXN1bHRLZXk7CiAKICAgICAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+Z2V0S2V5UmFuZ2VS
ZWNvcmRGcm9tT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlTWV0YWRhdGEuaWQs
ICprZXlSYW5nZSwgcmVzdWx0LCByZXN1bHRLZXkpKQotICAgICAgICAgICAgcG9zdE1haW5UaHJl
YWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRHZXRS
ZWNvcmRGcm9tQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIElEQkdldFJlc3VsdCgpLCBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBnZXQg
a2V5IHJhbmdlIHJlY29yZCBmcm9tIG9iamVjdCBzdG9yZSBpbiBiYWNraW5nIHN0b3JlIikpKTsK
KyAgICAgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRo
aXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkR2V0UmVjb3JkRnJvbUJhY2tpbmdTdG9yZSwgcmVx
dWVzdElELCBJREJHZXRSZXN1bHQoKSwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJv
ciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZ2V0IGtleSByYW5nZSByZWNvcmQgZnJvbSBvYmpl
Y3Qgc3RvcmUgaW4gYmFja2luZyBzdG9yZSIpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgSURCR2V0UmVzdWx0IGdldFJlc3VsdCA9IHJlc3VsdCA/IElEQkdldFJlc3VsdChyZXN1bHQu
cmVsZWFzZSgpLCByZXN1bHRLZXkucmVsZWFzZSgpLCBvYmplY3RTdG9yZU1ldGFkYXRhLmtleVBh
dGgpIDogSURCR2V0UmVzdWx0KCk7Ci0gICAgICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soY3Jl
YXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZEdldFJlY29yZEZyb21C
YWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgZ2V0UmVzdWx0LCAwLCBTdHJpbmcoU3RyaW5nSW1wbDo6
ZW1wdHkoKSkpKTsKKyAgICAgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkR2V0UmVjb3JkRnJvbUJhY2tp
bmdTdG9yZSwgcmVxdWVzdElELCBnZXRSZXN1bHQsIDAsIFN0cmluZyhTdHJpbmdJbXBsOjplbXB0
eSgpKSkpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuOwpAQCAtOTMzLDE0ICs5MzMsMTQg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkRnJvbUJhY2tpbmdTdG9yZSh1aW50
NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQkkKIAogICAgIElEQkdldFJlc3VsdCByZXN1bHQ7CiAg
ICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+Z2V0SW5kZXhSZWNvcmQodHJhbnNhY3Rpb24sIG9iamVj
dFN0b3JlTWV0YWRhdGEuaWQsIGluZGV4SUQsIGtleVJhbmdlRGF0YSwgY3Vyc29yVHlwZSwgcmVz
dWx0KSkgewotICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlz
LCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZEdldFJlY29yZEZyb21CYWNraW5nU3RvcmUsIHJlcXVl
c3RJRCwgSURCR2V0UmVzdWx0KCksIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGdldCBpbmRleCByZWNvcmQgZnJvbSBiYWNraW5nIHN0
b3JlIikpKTsKKyAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFz
aygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRHZXRSZWNvcmRGcm9tQmFja2luZ1N0b3Jl
LCByZXF1ZXN0SUQsIElEQkdldFJlc3VsdCgpLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93
bkVycm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBnZXQgaW5kZXggcmVjb3JkIGZyb20gYmFj
a2luZyBzdG9yZSIpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBXZSBtdXN0
IHJldHVybiBhIGtleSBwYXRoIHRvIGtub3cgaG93IHRvIGluamVjdCB0aGUgcmVzdWx0IGtleSBp
bnRvIHRoZSByZXN1bHQgdmFsdWUgb2JqZWN0LgogICAgIHJlc3VsdC5rZXlQYXRoID0gb2JqZWN0
U3RvcmVNZXRhZGF0YS5rZXlQYXRoOwogCi0gICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFz
eW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRHZXRSZWNvcmRGcm9tQmFja2lu
Z1N0b3JlLCByZXF1ZXN0SUQsIHJlc3VsdCwgMCwgU3RyaW5nKFN0cmluZ0ltcGw6OmVtcHR5KCkp
KSk7CisgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywg
JlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRHZXRSZWNvcmRGcm9tQmFja2luZ1N0b3JlLCByZXF1ZXN0
SUQsIHJlc3VsdCwgMCwgU3RyaW5nKFN0cmluZ0ltcGw6OmVtcHR5KCkpKSk7CiB9CiAKIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmRpZEdldFJlY29yZEZyb21CYWNraW5nU3RvcmUodWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCBJREJHZXRSZXN1bHQmIHJlc3VsdCwgdWludDMyX3QgZXJyb3JDb2Rl
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKQEAgLTk2Niw3ICs5NjYsNyBAQCB2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29ySW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVz
dElELCBjb25zdCBJREJJZAogICAgICAgICBlcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVu
a25vd24gZXJyb3Igb3BlbmluZyBjdXJzb3IgaW4gYmFja2luZyBzdG9yZSIpOwogICAgIH0KIAot
ICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkT3BlbkN1cnNvckluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIGN1cnNvcklE
LCBrZXksIHByaW1hcnlLZXksIHZhbHVlQnVmZmVyLCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSkp
OworICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZV
bmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkN1cnNvckluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQs
IGN1cnNvcklELCBrZXksIHByaW1hcnlLZXksIHZhbHVlQnVmZmVyLCBlcnJvckNvZGUsIGVycm9y
TWVzc2FnZSkpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQ3Vyc29ySW5C
YWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IGN1cnNvcklELCBjb25zdCBJ
REJLZXlEYXRhJiBrZXksIGNvbnN0IElEQktleURhdGEmIHByaW1hcnlLZXksIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgdmFsdWVCdWZmZXIsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpCkBAIC05ODgsNyArOTg4LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6YWR2YW5jZUN1cnNvckluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3Qg
SUQKICAgICAgICAgZXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJVbmtub3duIGVycm9yIGFk
dmFuY2luZyBjdXJzb3IgaW4gYmFja2luZyBzdG9yZSIpOwogICAgIH0KIAotICAgIHBvc3RNYWlu
VGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlk
QWR2YW5jZUN1cnNvckluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIGtleSwgcHJpbWFyeUtleSwg
dmFsdWVCdWZmZXIsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKSk7CisgICAgcG9zdE1haW5UaHJl
YWRUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpk
aWRBZHZhbmNlQ3Vyc29ySW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwga2V5LCBwcmltYXJ5S2V5
LCB2YWx1ZUJ1ZmZlciwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpKTsKIH0KIAogdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6ZGlkQWR2YW5jZUN1cnNvckluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5
S2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHZhbHVlQnVmZmVyLCB1aW50MzJfdCBlcnJvckNv
ZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpAQCAtMTAxMCw3ICsxMDEwLDcgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvckluQmFja2luZ1N0b3JlKHVpbnQ2NF90
IHJlcXVlc3RJRCwgY29uc3QgSUQKICAgICAgICAgZXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFs
KCJVbmtub3duIGVycm9yIGl0ZXJhdGluZyBjdXJzb3IgaW4gYmFja2luZyBzdG9yZSIpOwogICAg
IH0KIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlx
dWVJREJEYXRhYmFzZTo6ZGlkSXRlcmF0ZUN1cnNvckluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQs
IGtleSwgcHJpbWFyeUtleSwgdmFsdWVCdWZmZXIsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKSk7
CisgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVu
aXF1ZUlEQkRhdGFiYXNlOjpkaWRJdGVyYXRlQ3Vyc29ySW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJ
RCwga2V5LCBwcmltYXJ5S2V5LCB2YWx1ZUJ1ZmZlciwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2Up
KTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkSXRlcmF0ZUN1cnNvckluQmFja2lu
Z1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJ
REJLZXlEYXRhJiBwcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHZhbHVlQnVmZmVy
LCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpAQCAtMTAy
NCwxMiArMTAyNCwxMiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb3VudEluQmFja2luZ1N0
b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSWRlbnRpZgogCiAgICAgaWYgKCFtX2Jh
Y2tpbmdTdG9yZS0+Y291bnQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlELCBp
bmRleElELCBrZXlSYW5nZURhdGEsIGNvdW50KSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBnZXQgY291bnQgZnJvbSBiYWNraW5nIHN0b3JlLiIpOwotICAgICAgICBwb3N0TWFpblRo
cmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZENv
dW50SW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgMCwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVu
a25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZ2V0IGNvdW50IGZyb20gYmFja2lu
ZyBzdG9yZSIpKSk7CisgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVDcm9zc1RocmVh
ZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ291bnRJbkJhY2tpbmdTdG9yZSwg
cmVxdWVzdElELCAwLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxp
dGVyYWwoIkZhaWxlZCB0byBnZXQgY291bnQgZnJvbSBiYWNraW5nIHN0b3JlIikpKTsKIAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5j
VGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRDb3VudEluQmFja2luZ1N0b3JlLCBy
ZXF1ZXN0SUQsIGNvdW50LCAwLCBTdHJpbmcoU3RyaW5nSW1wbDo6ZW1wdHkoKSkpKTsKKyAgICBw
b3N0TWFpblRocmVhZFRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURC
RGF0YWJhc2U6OmRpZENvdW50SW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgY291bnQsIDAsIFN0
cmluZyhTdHJpbmdJbXBsOjplbXB0eSgpKSkpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpkaWRDb3VudEluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCBjb3Vu
dCwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKQEAgLTEw
NDEsMTQgKzEwNDEsMTQgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmFuZ2VJbkJh
Y2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQkkKIHsKICAgICBpZiAoIW1f
YmFja2luZ1N0b3JlLT5kZWxldGVSYW5nZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0
b3JlSUQsIGtleVJhbmdlRGF0YSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVs
ZXRlIHJhbmdlIGZyb20gYmFja2luZyBzdG9yZS4iKTsKLSAgICAgICAgcG9zdE1haW5UaHJlYWRU
YXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxldGVS
YW5nZUluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtu
b3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGdldCBjb3VudCBmcm9tIGJhY2tpbmcg
c3RvcmUiKSkpOworICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRU
YXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZERlbGV0ZVJhbmdlSW5CYWNraW5nU3Rv
cmUsIHJlcXVlc3RJRCwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlM
aXRlcmFsKCJGYWlsZWQgdG8gZ2V0IGNvdW50IGZyb20gYmFja2luZyBzdG9yZSIpKSk7CiAKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fYmFja2luZ1N0b3JlLT5ub3RpZnlDdXJzb3Jz
T2ZDaGFuZ2VzKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRCk7CiAKLSAgICBw
b3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJh
c2U6OmRpZERlbGV0ZVJhbmdlSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgMCwgU3RyaW5nKFN0
cmluZ0ltcGw6OmVtcHR5KCkpKSk7CisgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUNyb3Nz
VGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxldGVSYW5nZUluQmFj
a2luZ1N0b3JlLCByZXF1ZXN0SUQsIDAsIFN0cmluZyhTdHJpbmdJbXBsOjplbXB0eSgpKSkpOwog
fQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxldGVSYW5nZUluQmFja2luZ1N0b3Jl
KHVpbnQ2NF90IHJlcXVlc3RJRCwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSkKQEAgLTExMTgsNyArMTExOCw3IEBAIFN0cmluZyBVbmlxdWVJREJEYXRhYmFz
ZTo6YWJzb2x1dGVEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgcmV0dXJuIERhdGFiYXNl
UHJvY2Vzczo6c2luZ2xldG9uKCkuYWJzb2x1dGVJbmRleGVkRGF0YWJhc2VQYXRoRnJvbURhdGFi
YXNlUmVsYXRpdmVQYXRoKG1fZGF0YWJhc2VSZWxhdGl2ZURpcmVjdG9yeSk7CiB9CiAKLXZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OnBvc3RNYWluVGhyZWFkVGFzayhzdGQ6OnVuaXF1ZV9wdHI8QXN5
bmNUYXNrPiB0YXNrLCBEYXRhYmFzZVRhc2tUeXBlIHRhc2tUeXBlKQordm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6cG9zdE1haW5UaHJlYWRUYXNrKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRh
c2s+IHRhc2ssIERhdGFiYXNlVGFza1R5cGUgdGFza1R5cGUpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAKQEAgLTExNDEsNyArMTE0MSw3IEBAIGJvb2wgVW5pcXVlSURCRGF0
YWJhc2U6OnBlcmZvcm1OZXh0TWFpblRocmVhZFRhc2soKQogCiAgICAgYm9vbCBtb3JlVGFza3M7
CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiB0YXNrOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxDcm9zc1RocmVhZFRhc2s+IHRhc2s7CiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX21haW5UaHJlYWRUYXNrTXV0ZXgpOwogCkBAIC0xMTU4LDcgKzExNTgsNyBAQCBib29s
IFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtTmV4dE1haW5UaHJlYWRUYXNrKCkKICAgICByZXR1
cm4gbW9yZVRhc2tzOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0RGF0YWJhc2VU
YXNrKHN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IHRhc2ssIERhdGFiYXNlVGFza1R5cGUgdGFz
a1R5cGUpCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6dW5p
cXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IHRhc2ssIERhdGFiYXNlVGFza1R5cGUgdGFza1R5cGUp
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMTE4NCw3ICsxMTg0LDcg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybU5leHREYXRhYmFzZVRhc2soKQogICAg
IC8vIFdlIHRha2UgYSByZWYoKSB0byBtYWtlIHN1cmUgdGhlIGRhdGFiYXNlIGlzIHN0aWxsIGxp
dmUgd2hpbGUgdGhpcyBsYXN0IHRhc2sgaXMgcGVyZm9ybWVkLgogICAgIFJlZlB0cjxVbmlxdWVJ
REJEYXRhYmFzZT4gcHJvdGVjdG9yKHRoaXMpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFzeW5j
VGFzaz4gdGFzazsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiB0YXNrOwog
ICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZVRhc2tNdXRleCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5p
cXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVk
REIvVW5pcXVlSURCRGF0YWJhc2UuaAppbmRleCBlZTMzNGUzLi40NDE2MTNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFi
YXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9Vbmlx
dWVJREJEYXRhYmFzZS5oCkBAIC01Niw3ICs1Niw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRh
dGE7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBBc3luY1Rhc2s7CitjbGFzcyBDcm9z
c1RocmVhZFRhc2s7CiBjbGFzcyBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOwogY2xhc3Mg
VW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmU7CiAKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2
YXRlOgogICAgICAgICBOb3JtYWwsCiAgICAgICAgIFNodXRkb3duCiAgICAgfTsKLSAgICB2b2lk
IHBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4sIERhdGFiYXNlVGFz
a1R5cGUgPSBEYXRhYmFzZVRhc2tUeXBlOjpOb3JtYWwpOworICAgIHZvaWQgcG9zdERhdGFiYXNl
VGFzayhzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiwgRGF0YWJhc2VUYXNrVHlwZSA9
IERhdGFiYXNlVGFza1R5cGU6Ok5vcm1hbCk7CiAKICAgICB2b2lkIHNodXRkb3duKFVuaXF1ZUlE
QkRhdGFiYXNlU2h1dGRvd25UeXBlKTsKIApAQCAtMTM4LDExICsxMzgsMTEgQEAgcHJpdmF0ZToK
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBvcmlnaW4gY2FuIHVzZSB0aGUgc2FtZSBkYXRh
YmFzZXMgYXMgdGhlIGdpdmVuIG9yaWdpbi4KICAgICBib29sIGNhblNoYXJlRGF0YWJhc2VzKGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYpIGNvbnN0OwogCi0gICAgdm9pZCBwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24o
Y29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8QXN5bmNUYXNrPiwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gc3VjY2Vzc0NhbGxiYWNr
KTsKKyAgICB2b2lkIHBvc3RUcmFuc2FjdGlvbk9wZXJhdGlvbihjb25zdCBJREJJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spOwogICAgIAogICAg
IC8vIFRvIGJlIGNhbGxlZCBmcm9tIHRoZSBkYXRhYmFzZSB3b3JrcXVldWUgdGhyZWFkIG9ubHkK
ICAgICB2b2lkIHBlcmZvcm1OZXh0RGF0YWJhc2VUYXNrKCk7Ci0gICAgdm9pZCBwb3N0TWFpblRo
cmVhZFRhc2soc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4sIERhdGFiYXNlVGFza1R5cGUgPSBE
YXRhYmFzZVRhc2tUeXBlOjpOb3JtYWwpOworICAgIHZvaWQgcG9zdE1haW5UaHJlYWRUYXNrKHN0
ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+LCBEYXRhYmFzZVRhc2tUeXBlID0gRGF0YWJh
c2VUYXNrVHlwZTo6Tm9ybWFsKTsKICAgICB2b2lkIG9wZW5CYWNraW5nU3RvcmVBbmRSZWFkTWV0
YWRhdGEoY29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZURpcmVjdG9yeSk7CiAgICAgdm9pZCBvcGVuQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24o
Y29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8
aW50NjRfdD4mIG9iamVjdFN0b3JlSURzLCBXZWJDb3JlOjpJbmRleGVkREI6OlRyYW5zYWN0aW9u
TW9kZSk7CiAgICAgdm9pZCBiZWdpbkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKGNvbnN0IElEQklk
ZW50aWZpZXImKTsKQEAgLTIwOCwxMCArMjA4LDEwIEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8
VW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmU+IG1fYmFja2luZ1N0b3JlOwogCi0gICAgRGVx
dWU8c3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4+IG1fZGF0YWJhc2VUYXNrczsKKyAgICBEZXF1
ZTxzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPj4gbV9kYXRhYmFzZVRhc2tzOwogICAg
IExvY2sgbV9kYXRhYmFzZVRhc2tNdXRleDsKIAotICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxB
c3luY1Rhc2s+PiBtX21haW5UaHJlYWRUYXNrczsKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8
Q3Jvc3NUaHJlYWRUYXNrPj4gbV9tYWluVGhyZWFkVGFza3M7CiAgICAgTG9jayBtX21haW5UaHJl
YWRUYXNrTXV0ZXg7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTQ2OTI1My4uYWFmYzRhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTg1LDcgKzk4
NSw2IEBACiAJCTUxQUQzNTczMUFEMkYzOTQwMDU3QjM4RSAvKiBXZWJIaXRUZXN0UmVzdWx0Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBRDM1NzIx
QUQyRjM3NTAwNTdCMzhFIC8qIFdlYkhpdFRlc3RSZXN1bHQubW0gKi87IH07CiAJCTUxQjE1QTg0
MTM4NDNBMzkwMDMyMUFEOCAvKiBFbnZpcm9ubWVudFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIxNUE4MjEzODQzQTM5MDAzMjFB
RDggLyogRW52aXJvbm1lbnRVdGlsaXRpZXMuY3BwICovOyB9OwogCQk1MUIxNUE4NTEzODQzQTM5
MDAzMjFBRDggLyogRW52aXJvbm1lbnRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjE1QTgzMTM4NDNBMzkwMDMyMUFEOCAvKiBFbnZp
cm9ubWVudFV0aWxpdGllcy5oICovOyB9OwotCQk1MUJBMjQ0NDE4NThFRTMwMDBFQTI4MTEgLyog
QXN5bmNUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUJBMjQ0MzE4NThFRTMwMDBFQTI4MTEgLyogQXN5bmNUYXNrLmggKi87IH07CiAJCTUxQkEy
NDQ2MTg1OEY1NUQwMEVBMjgxMSAvKiBXZWJDcm9zc1RocmVhZENvcGllci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBMjQ0NTE4NThGNDE1MDBF
QTI4MTEgLyogV2ViQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovOyB9OwogCQk1MUM5NjExODE4M0Qy
OTQ3MDBEMjAwMkUgLyogV2ViSURCU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM5NjExNjE4
M0QyOTQ3MDBEMjAwMkUgLyogV2ViSURCU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5j
cHAgKi87IH07CiAJCTUxQzk2MTE5MTgzRDI5NDcwMEQyMDAyRSAvKiBXZWJJREJTZXJ2ZXJDb25u
ZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQzk2MTE3MTgzRDI5NDcwMEQyMDAyRSAvKiBXZWJJREJTZXJ2ZXJDb25uZWN0aW9u
TWVzc2FnZXMuaCAqLzsgfTsKQEAgLTMxNjEsNyArMzE2MCw2IEBACiAJCTUxQUQzNTcyMUFEMkYz
NzUwMDU3QjM4RSAvKiBXZWJIaXRUZXN0UmVzdWx0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViSGl0VGVzdFJlc3VsdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMTVB
ODIxMzg0M0EzOTAwMzIxQUQ4IC8qIEVudmlyb25tZW50VXRpbGl0aWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEVudmlyb25tZW50VXRpbGl0aWVzLmNwcDsgcGF0
aCA9IHVuaXgvRW52aXJvbm1lbnRVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUIxNUE4MzEzODQzQTM5MDAzMjFBRDggLyogRW52aXJvbm1lbnRVdGlsaXRpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRW52aXJvbm1lbnRVdGlsaXRpZXMu
aDsgcGF0aCA9IHVuaXgvRW52aXJvbm1lbnRVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNTFCQTI0NDMxODU4RUUzMDAwRUEyODExIC8qIEFzeW5jVGFzay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY1Rhc2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTFCQTI0NDUxODU4RjQxNTAwRUEyODExIC8qIFdlYkNyb3NzVGhyZWFk
Q29waWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNyb3NzVGhyZWFkQ29waWVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDOTYxMTUxODNDOTVGRjAwRDIwMDJFIC8q
IFdlYklEQlNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViSURCU2VydmVyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDOTYx
MTYxODNEMjk0NzAwRDIwMDJFIC8qIFdlYklEQlNlcnZlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSURCU2VydmVy
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC00NjgxLDcgKzQ2NzksNiBAQAogCQkJCUM1OUM0QTU3MThCODExNzQwMDdCRENCNiAvKiBB
c3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oICovLAogCQkJCTUxNUU3NzI1MTgzREQ2RjYwMDA3MjAz
RiAvKiBBc3luY1JlcXVlc3QuY3BwICovLAogCQkJCTUxNUU3NzI2MTgzREQ2RjYwMDA3MjAzRiAv
KiBBc3luY1JlcXVlc3QuaCAqLywKLQkJCQk1MUJBMjQ0MzE4NThFRTMwMDBFQTI4MTEgLyogQXN5
bmNUYXNrLmggKi8sCiAJCQkJRTE2NEEyRUYxOTFBRjE0RTAwMTA3MzdEIC8qIEJsb2JEYXRhRmls
ZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcCAqLywKIAkJCQlFMTY0QTJGMDE5MUFG
MTRFMDAxMDczN0QgLyogQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24u
aCAqLywKIAkJCQk0RjYwMTQzMDE1NUM1QTMyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1h
cC5oICovLApAQCAtNzU5Myw3ICs3NTkwLDYgQEAKIAkJCQlDRTFBMEJEMjFBNDhFNkM2MDA1NEVG
NzQgLyogQXNzZXJ0aW9uU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1OUM0QTU5
MThCODExNzQwMDdCRENCNiAvKiBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE1RTc3MjgxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNTFCQTI0NDQxODU4RUUzMDAwRUEyODExIC8qIEFzeW5jVGFzay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNFRTk2NkQxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxQTMxNzMyMTM0Q0VBNkMwMDdDOUE0RiAvKiBBdHRyaWJ1
dGVkU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNTg5NzEyQTg4Mzg4MDA2Mjk1MzAg
LyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCg==
</data>
<flag name="review"
          id="287292"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262118</attachid>
            <date>2015-09-29 16:16:22 -0700</date>
            <delta_ts>2015-09-29 16:21:33 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>76816</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MmQ0N2QzLi43NGQxMWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTUtMDktMjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIE1vdmUgV2ViS2l0MiBBc3luY1Rhc2sgdG8gV2ViQ29yZSBDcm9zc1RocmVhZFRhc2suCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk2NTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMgKE5vIGNoYW5nZSBpbiBiZWhhdmlvcikuCisgICAgICAgIAorICAgICAgICBJdCB3aWxsIGJl
IG5lZWRlZCBpbiBXZWJDb3JlIHRvIHN1cHBvcnQgSW5kZXhlZERCLgorCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL0Nyb3Nz
VGhyZWFkVGFzay5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5jVGFz
ay5oLgorICAgICAgICAoV2ViS2l0OjpDcm9zc1RocmVhZFRhc2s6OkNyb3NzVGhyZWFkVGFzayk6
CisgICAgICAgIChXZWJLaXQ6OkNyb3NzVGhyZWFkVGFzazo6cGVyZm9ybVRhc2spOgorICAgICAg
ICAoV2ViS2l0OjpjcmVhdGVDcm9zc1RocmVhZFRhc2spOgorCiAyMDE1LTA5LTI5ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFNuYXAgb2Zmc2V0cyBz
aG91bGQgdXBkYXRlIHdoZW4gc3R5bGUgaXMgcHJvZ3JhbW1hdGljYWxseSBjaGFuZ2VkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
Y2EwMjhiYS4uNjA1NWNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE1Niw2ICsyMTU2LDcgQEAKIAkJNTFFM0Y5RDYwREEw
NUUxRDAwMjUwOTExIC8qIEpTU3RvcmFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzRjlENDBEQTA1RTFEMDAyNTA5MTEgLyogSlNTdG9yYWdl
LmNwcCAqLzsgfTsKIAkJNTFFNDE0MzQxNkE2NTk2MzAwQzYzM0M3IC8qIFJlc291cmNlSGFuZGxl
VHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RTQxNDMyMTZBNjU5NTEwMEM2MzNDNyAvKiBSZXNvdXJjZUhhbmRsZVR5cGVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFNjgyMTAxNjM4NzMw
MjAwM0JCRjNDIC8qIExvYWRlclN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUU2ODIwRjE2Mzg3MzAyMDAzQkJGM0MgLyogTG9hZGVyU3Ry
YXRlZ3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk1MUU2RkE3QzFCQkI0RkMzMDA4NzAwRDkgLyogQ3Jvc3NUaHJlYWRUYXNrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUU2RkE3QjFCQkI0RkI1MDA4
NzAwRDkgLyogQ3Jvc3NUaHJlYWRUYXNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFQzkyNjUwQ0U5MERENDAwRjkwMzA4IC8qIEpTQ3VzdG9t
U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVDOTI1RDBDRTkwREQ0MDBGOTAzMDggLyogSlNDdXN0b21T
UUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJNTFFRTdCMzgxQUE1MEIwNTAw
RjkyQjIxIC8qIFJlc291cmNlTG9hZEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUU3QjM3MUFBNTBCMDUwMEY5MkIyMSAvKiBSZXNvdXJjZUxv
YWRJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTFFRTdCM0ExQUE1MTIzMTAwRjkyQjIxIC8qIFJlc291cmNlTG9hZEluZm8uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFRTdCMzkxQUE1MTIz
MTAwRjkyQjIxIC8qIFJlc291cmNlTG9hZEluZm8uY3BwICovOyB9OwpAQCAtOTUxNSw2ICs5NTE2
LDcgQEAKIAkJNTFFM0Y5RDUwREEwNUUxRDAwMjUwOTExIC8qIEpTU3RvcmFnZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTFFNDE0MzIxNkE2NTk1MTAwQzYzM0M3IC8qIFJlc291cmNlSGFuZGxlVHlw
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VIYW5kbGVUeXBl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUU2ODIwRjE2Mzg3MzAyMDAzQkJG
M0MgLyogTG9hZGVyU3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TG9hZGVyU3RyYXRlZ3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFFNkZBN0Ix
QkJCNEZCNTAwODcwMEQ5IC8qIENyb3NzVGhyZWFkVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDcm9zc1RocmVhZFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFFQUM1QjAxODE2M0Y0RTAwNEYxQkE0IC8qIElEQlJlY29yZElkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCUmVjb3JkSWRlbnRpZmllci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUVDOTI1RDBDRTkwREQ0MDBGOTAzMDggLyog
SlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRUU3QjM3MUFBNTBCMDUwMEY5MkIyMSAv
KiBSZXNvdXJjZUxvYWRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
c291cmNlTG9hZEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMTU3LDYg
KzIyMTU5LDcgQEAKIAkJCQk4NjJGMTI5RDE4QzE1NzJDMDA1QzU0QUYgLyogQ291bnRlZFVzZXJB
Y3Rpdml0eS5oICovLAogCQkJCTJFNDM0NjU2MEY1NDZBOTkwMEIwRjFCQSAvKiBDcm9zc1RocmVh
ZENvcGllci5jcHAgKi8sCiAJCQkJMkU0MzQ2NTcwRjU0NkE5OTAwQjBGMUJBIC8qIENyb3NzVGhy
ZWFkQ29waWVyLmggKi8sCisJCQkJNTFFNkZBN0IxQkJCNEZCNTAwODcwMEQ5IC8qIENyb3NzVGhy
ZWFkVGFzay5oICovLAogCQkJCUUxMUFGMTUwMTFCOUExQTMwMDgwNTEwMyAvKiBDdXJzb3IuY3Bw
ICovLAogCQkJCUY1ODc4Njg0MDJERTNCODYwMUVBNDEyMiAvKiBDdXJzb3IuaCAqLywKIAkJCQlB
NTczMkIwODEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuY3BwICovLApAQCAtMjU1
MTAsNiArMjU1MTMsNyBAQAogCQkJCTA3MzY3RERGMTcyQ0E2N0YwMEQ4NjFCOSAvKiBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkUxNkM1
OTUxN0NGRTE3MjAwODUyQzA0IC8qIEluYmFuZFdlYlZUVFRleHRUcmFjay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJREIyM0MyQ0MwQTUwOEQyOTAwMjQ4OUVCIC8qIEluZGVudE91dGRlbnRDb21tYW5k
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUU2RkE3QzFCQkI0RkMzMDA4NzAwRDkgLyogQ3Jvc3NU
aHJlYWRUYXNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjVFNTBBMTU1QTA1MDAwQTQyMzQg
LyogSW5saW5lQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTdDQjUyRTE4MkEzRUZDMDA3OUE2
NDcgLyogSW5saW5lRWxlbWVudEJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkY1RTMwQTE1
NUEwNTAwMEE0MjM0IC8qIElubGluZUZsb3dCb3guaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRUYXNrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZFRhc2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5lZDQwZjU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ3Jvc3NUaHJlYWRUYXNrLmgKQEAgLTAsMCArMSwyMjggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIENyb3NzVGhyZWFkVGFza19oCisjZGVmaW5lIENyb3NzVGhyZWFkVGFza19o
CisKKyNpbmNsdWRlICJDcm9zc1RocmVhZENvcGllci5oIgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDcm9zc1RocmVhZFRhc2sgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKENyb3NzVGhyZWFkVGFzayk7CitwdWJsaWM6CisgICAgQ3Jvc3NU
aHJlYWRUYXNrKGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gdGFza0Z1bmN0aW9uKQorICAg
ICAgICA6IG1fdGFza0Z1bmN0aW9uKHRhc2tGdW5jdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VS
VCh0YXNrRnVuY3Rpb24pOworICAgIH0KKworICAgIHZvaWQgcGVyZm9ybVRhc2soKQorICAgIHsK
KyAgICAgICAgbV90YXNrRnVuY3Rpb24oKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBDcm9z
c1RocmVhZFRhc2soKSB7IH0KKworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gbV90YXNrRnVu
Y3Rpb247Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRz
PgorY2xhc3MgQ3Jvc3NUaHJlYWRUYXNrSW1wbCBmaW5hbCA6IHB1YmxpYyBDcm9zc1RocmVhZFRh
c2sgeworcHVibGljOgorICAgIENyb3NzVGhyZWFkVGFza0ltcGwoVCogY2FsbGVlLCB2b2lkIChU
OjoqbWV0aG9kKShBcmd1bWVudHMuLi4pLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCisgICAg
eworICAgICAgICBtX3Rhc2tGdW5jdGlvbiA9IFtjYWxsZWUsIG1ldGhvZCwgYXJndW1lbnRzLi4u
XSB7CisgICAgICAgICAgICAoY2FsbGVlLT4qbWV0aG9kKShhcmd1bWVudHMuLi4pOworICAgICAg
ICB9OworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdGQ6OnVuaXF1ZV9wdHI8
Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCisgICAgVCYgY2FsbGVlLAor
ICAgIHZvaWQgKFQ6OiptZXRob2QpKCkpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Q3Jvc3NUaHJlYWRUYXNrSW1wbDxUPj4oJmNhbGxlZSwgbWV0aG9kKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMT4KK3N0ZDo6dW5pcXVlX3B0cjxD
cm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKKyAgICBUJiBjYWxsZWUsCisg
ICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxKSwKKyAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSkKK3sK
KyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMT4+
KAorICAgICAgICAmY2FsbGVlLAorICAgICAgICBtZXRob2QsCisgICAgICAgIFdlYkNvcmU6OkNy
b3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFt
ZSBNUDI+CitzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVh
ZFRhc2soCisgICAgVCYgY2FsbGVlLAorICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSwgTVAyKSwK
KyAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKKyAgICBjb25zdCBQMiYgcGFyYW1ldGVyMikKK3sK
KyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwg
TVAyPj4oCisgICAgICAgICZjYWxsZWUsCisgICAgICAgIG1ldGhvZCwKKyAgICAgICAgV2ViQ29y
ZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAorICAgICAgICBXZWJD
b3JlOjpDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMikpOworCit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAy
LCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDM+CitzdGQ6OnVuaXF1ZV9w
dHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCisgICAgVCYgY2FsbGVl
LAorICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSwgTVAyLCBNUDMpLAorICAgIGNvbnN0IFAxJiBw
YXJhbWV0ZXIxLAorICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLAorICAgIGNvbnN0IFAzJiBwYXJh
bWV0ZXIzKQoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFkVGFza0lt
cGw8VCwgTVAxLCBNUDIsIE1QMz4+KAorICAgICAgICAmY2FsbGVlLAorICAgICAgICBtZXRob2Qs
CisgICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIx
KSwKKyAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRl
cjIpLAorICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1l
dGVyMykpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUg
TVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAz
LCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0Pgorc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFk
VGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAorICAgIFQmIGNhbGxlZSwKKyAgICB2b2lkIChU
OjoqbWV0aG9kKShNUDEsIE1QMiwgTVAzLCBNUDQpLAorICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIx
LAorICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLAorICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLAor
ICAgIGNvbnN0IFA0JiBwYXJhbWV0ZXI0KQoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMywgTVA0Pj4oCisgICAgICAgICZj
YWxsZWUsCisgICAgICAgIG1ldGhvZCwKKyAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3Bp
ZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAorICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENv
cGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCisgICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFk
Q29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwKKyAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJl
YWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwg
dHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlw
ZW5hbWUgUDUsIHR5cGVuYW1lIE1QNT4KK3N0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+
IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKKyAgICBUJiBjYWxsZWUsCisgICAgdm9pZCAoVDo6Km1l
dGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUpLAorICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIx
LAorICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLAorICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLAor
ICAgIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LAorICAgIGNvbnN0IFA1JiBwYXJhbWV0ZXI1KQorewor
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBN
UDIsIE1QMywgTVA0LCBNUDU+PigKKyAgICAgICAgJmNhbGxlZSwKKyAgICAgICAgbWV0aG9kLAor
ICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSks
CisgICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIy
KSwKKyAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRl
cjMpLAorICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1l
dGVyNCksCisgICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFA1Pjo6Y29weShwYXJh
bWV0ZXI1KSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFt
ZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBN
UDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUs
IHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDY+CitzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRU
YXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCisgICAgVCYgY2FsbGVlLAorICAgIHZvaWQgKFQ6
OiptZXRob2QpKE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYpLAorICAgIGNvbnN0IFAxJiBw
YXJhbWV0ZXIxLAorICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLAorICAgIGNvbnN0IFAzJiBwYXJh
bWV0ZXIzLAorICAgIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LAorICAgIGNvbnN0IFA1JiBwYXJhbWV0
ZXI1LAorICAgIGNvbnN0IFA2JiBwYXJhbWV0ZXI2KQoreworICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1Q
Nj4+KAorICAgICAgICAmY2FsbGVlLAorICAgICAgICBtZXRob2QsCisgICAgICAgIFdlYkNvcmU6
OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKKyAgICAgICAgV2ViQ29y
ZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAorICAgICAgICBXZWJD
b3JlOjpDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyksCisgICAgICAgIFdl
YkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShwYXJhbWV0ZXI0KSwKKyAgICAgICAg
V2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDU+Ojpjb3B5KHBhcmFtZXRlcjUpLAorICAgICAg
ICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQNj46OmNvcHkocGFyYW1ldGVyNikpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFt
ZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQ
NCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwg
dHlwZW5hbWUgTVA2LCB0eXBlbmFtZSBQNywgdHlwZW5hbWUgTVA3Pgorc3RkOjp1bmlxdWVfcHRy
PENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAorICAgIFQmIGNhbGxlZSwK
KyAgICB2b2lkIChUOjoqbWV0aG9kKShNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcp
LAorICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAorICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLAor
ICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLAorICAgIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LAorICAg
IGNvbnN0IFA1JiBwYXJhbWV0ZXI1LAorICAgIGNvbnN0IFA2JiBwYXJhbWV0ZXI2LAorICAgIGNv
bnN0IFA3JiBwYXJhbWV0ZXI3KQoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyb3Nz
VGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3Pj4oCisg
ICAgICAgICZjYWxsZWUsCisgICAgICAgIG1ldGhvZCwKKyAgICAgICAgV2ViQ29yZTo6Q3Jvc3NU
aHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAorICAgICAgICBXZWJDb3JlOjpDcm9z
c1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCisgICAgICAgIFdlYkNvcmU6OkNy
b3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwKKyAgICAgICAgV2ViQ29yZTo6
Q3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLAorICAgICAgICBXZWJDb3Jl
OjpDcm9zc1RocmVhZENvcGllcjxQNT46OmNvcHkocGFyYW1ldGVyNSksCisgICAgICAgIFdlYkNv
cmU6OkNyb3NzVGhyZWFkQ29waWVyPFA2Pjo6Y29weShwYXJhbWV0ZXI2KSwKKyAgICAgICAgV2Vi
Q29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDc+Ojpjb3B5KHBhcmFtZXRlcjcpKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIs
IHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5
cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVu
YW1lIE1QNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNywgdHlwZW5hbWUgUDgsIHR5cGVuYW1l
IE1QOD4KK3N0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFk
VGFzaygKKyAgICBUJiBjYWxsZWUsCisgICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBNUDIsIE1Q
MywgTVA0LCBNUDUsIE1QNiwgTVA3LCBNUDgpLAorICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAor
ICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLAorICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLAorICAg
IGNvbnN0IFA0JiBwYXJhbWV0ZXI0LAorICAgIGNvbnN0IFA1JiBwYXJhbWV0ZXI1LAorICAgIGNv
bnN0IFA2JiBwYXJhbWV0ZXI2LAorICAgIGNvbnN0IFA3JiBwYXJhbWV0ZXI3LAorICAgIGNvbnN0
IFA4JiBwYXJhbWV0ZXI4KQoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhy
ZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3LCBNUDg+PigK
KyAgICAgICAgJmNhbGxlZSwKKyAgICAgICAgbWV0aG9kLAorICAgICAgICBXZWJDb3JlOjpDcm9z
c1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCisgICAgICAgIFdlYkNvcmU6OkNy
b3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKKyAgICAgICAgV2ViQ29yZTo6
Q3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLAorICAgICAgICBXZWJDb3Jl
OjpDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCisgICAgICAgIFdlYkNv
cmU6OkNyb3NzVGhyZWFkQ29waWVyPFA1Pjo6Y29weShwYXJhbWV0ZXI1KSwKKyAgICAgICAgV2Vi
Q29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDY+Ojpjb3B5KHBhcmFtZXRlcjYpLAorICAgICAgICBX
ZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQNz46OmNvcHkocGFyYW1ldGVyNyksCisgICAgICAg
IFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFA4Pjo6Y29weShwYXJhbWV0ZXI4KSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gQ3Jvc3NUaHJlYWRUYXNrX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCAwODg3NWYwLi4zYTcwNDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAK
KzIwMTUtMDktMjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAg
IE1vdmUgV2ViS2l0MiBBc3luY1Rhc2sgdG8gV2ViQ29yZSBDcm9zc1RocmVhZFRhc2suCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk2NTEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERhdGFiYXNlUHJv
Y2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nl
c3M6OmVuc3VyZUluZGV4ZWREYXRhYmFzZVJlbGF0aXZlUGF0aEV4aXN0cyk6CisgICAgICAgIChX
ZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6cG9zdERhdGFiYXNlVGFzayk6CisgICAgICAgIChXZWJL
aXQ6OkRhdGFiYXNlUHJvY2Vzczo6cGVyZm9ybU5leHREYXRhYmFzZVRhc2spOgorICAgICAgICAo
V2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpEYXRhYmFzZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6RGF0YWJhc2VQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAg
ICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaDoKKyAgICAgICAgKiBEYXRhYmFz
ZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6VW5pcXVlSURCRGF0YWJhc2U6OnNodXRkb3duKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVl
SURCRGF0YWJhc2U6OnNodXRkb3duQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5p
cXVlSURCRGF0YWJhc2U6OmdldE9yRXN0YWJsaXNoSURCRGF0YWJhc2VNZXRhZGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQmFja2luZ1N0b3JlQW5kUmVhZE1l
dGFkYXRhKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6Om9wZW5UcmFuc2Fj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpiZWdpblRyYW5zYWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OnJlc2V0VHJhbnNhY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6cm9sbGJhY2tUcmFuc2Fj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0VHJhbnNhY3Rp
b25PcGVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6Y2hhbmdl
RGF0YWJhc2VWZXJzaW9uKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmNy
ZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmRl
bGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmNs
ZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6Y3Jl
YXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5k
ZXgpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkKToKKyAg
ICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZCk6CisgICAgICAgIChX
ZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6
VW5pcXVlSURCRGF0YWJhc2U6OmN1cnNvckFkdmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpVbmlx
dWVJREJEYXRhYmFzZTo6Y3Vyc29ySXRlcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlE
QkRhdGFiYXNlOjpjb3VudCk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpk
ZWxldGVSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFz
ZTo6YmVnaW5CYWNraW5nU3RvcmVUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1
ZUlEQkRhdGFiYXNlOjpjb21taXRCYWNraW5nU3RvcmVUcmFuc2FjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpyZXNldEJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OnJvbGxiYWNrQmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6Y2hhbmdl
RGF0YWJhc2VWZXJzaW9uSW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJ
REJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChX
ZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZUluQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmVJ
bkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVh
dGVJbmRleEluQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJh
c2U6OmRlbGV0ZUluZGV4SW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJ
REJEYXRhYmFzZTo6cHV0UmVjb3JkSW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpV
bmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkRnJvbUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChX
ZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29ySW5CYWNraW5nU3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6YWR2YW5jZUN1cnNvckluQmFja2luZ1N0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3JJ
bkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjb3Vu
dEluQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmRl
bGV0ZVJhbmdlSW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRh
YmFzZTo6cG9zdE1haW5UaHJlYWRUYXNrKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0
YWJhc2U6OnBlcmZvcm1OZXh0TWFpblRocmVhZFRhc2spOgorICAgICAgICAoV2ViS2l0OjpVbmlx
dWVJREJEYXRhYmFzZTo6cG9zdERhdGFiYXNlVGFzayk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1
ZUlEQkRhdGFiYXNlOjpwZXJmb3JtTmV4dERhdGFiYXNlVGFzayk6CisgICAgICAgICogRGF0YWJh
c2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5oOgorICAgICAgICAqIFdlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNS0wOS0yOSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE1lbW9yeSBjYWNoZSByZXZhbGlkYXRpb25z
IHNob3VsZCByZWZyZXNoIHRoZSBuZXR3b3JrIGRpc2sgY2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKaW5kZXggYzhkOGEzYy4u
NDExZmZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFi
YXNlUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFi
YXNlUHJvY2Vzcy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShEQVRBQkFTRV9Q
Uk9DRVNTKQogCi0jaW5jbHVkZSAiQXN5bmNUYXNrLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJEYXRhYmFzZVByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCkBAIC0zNiw2
ICszNSw3IEBACiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJXZWJD
cm9zc1RocmVhZENvcGllci5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9Dcm9zc1RocmVhZFRhc2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZXNzaW9uSUQuaD4KQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6
aW5pdGlhbGl6ZURhdGFiYXNlUHJvY2Vzcyhjb25zdCBEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBh
cgogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmVu
c3VyZUluZGV4ZWREYXRhYmFzZVJlbGF0aXZlUGF0aEV4aXN0cyhjb25zdCBTdHJpbmcmIHJlbGF0
aXZlUGF0aCkKIHsKLSAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywg
JkRhdGFiYXNlUHJvY2Vzczo6ZW5zdXJlUGF0aEV4aXN0cywgYWJzb2x1dGVJbmRleGVkRGF0YWJh
c2VQYXRoRnJvbURhdGFiYXNlUmVsYXRpdmVQYXRoKHJlbGF0aXZlUGF0aCkpKTsKKyAgICBwb3N0
RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJkRhdGFiYXNlUHJvY2Vz
czo6ZW5zdXJlUGF0aEV4aXN0cywgYWJzb2x1dGVJbmRleGVkRGF0YWJhc2VQYXRoRnJvbURhdGFi
YXNlUmVsYXRpdmVQYXRoKHJlbGF0aXZlUGF0aCkpKTsKIH0KICNlbmRpZgogCkBAIC0xNTUsNyAr
MTU1LDcgQEAgU3RyaW5nIERhdGFiYXNlUHJvY2Vzczo6YWJzb2x1dGVJbmRleGVkRGF0YWJhc2VQ
YXRoRnJvbURhdGFiYXNlUmVsYXRpdmVQYXRoKGNvbnMKIH0KICNlbmRpZgogCi12b2lkIERhdGFi
YXNlUHJvY2Vzczo6cG9zdERhdGFiYXNlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiB0
YXNrKQordm9pZCBEYXRhYmFzZVByb2Nlc3M6OnBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlxdWVf
cHRyPENyb3NzVGhyZWFkVGFzaz4gdGFzaykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OnBlcmZvcm1O
ZXh0RGF0YWJhc2VUYXNrKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IHRhc2s7CisgICAgc3RkOjp1bmlxdWVfcHRy
PENyb3NzVGhyZWFkVGFzaz4gdGFzazsKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fZGF0YWJhc2VUYXNrTXV0ZXgpOwogICAgICAgICBBU1NFUlQoIW1fZGF0YWJhc2VUYXNrcy5p
c0VtcHR5KCkpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpmZXRj
aFdlYnNpdGVEYXRhKFNlc3Npb25JRCwgdWludDY0X3Qgd2Vic2l0ZURhdGFUeXBlcywgdWluCiAj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMgJiBX
ZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMpIHsKICAgICAgICAgLy8gRklYTUU6IFBp
Y2sgdGhlIHJpZ2h0IGRhdGFiYXNlIHN0b3JlIGJhc2VkIG9uIHRoZSBzZXNzaW9uIElELgotICAg
ICAgICBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNUYXNrPihbY2FsbGJh
Y2tBZ2dyZWdhdG9yLCB3ZWJzaXRlRGF0YVR5cGVzLCB0aGlzXSB7CisgICAgICAgIHBvc3REYXRh
YmFzZVRhc2soc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2s+KFtjYWxsYmFja0FnZ3Jl
Z2F0b3IsIHdlYnNpdGVEYXRhVHlwZXMsIHRoaXNdIHsKIAogICAgICAgICAgICAgVmVjdG9yPFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4+IHNlY3VyaXR5T3JpZ2lucyA9IGluZGV4ZWREYXRhYmFzZU9y
aWdpbnMoKTsKIApAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpkZWxl
dGVXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHdlYnNpdGVEYXRhCiAK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcyAm
IFdlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcykgewotICAgICAgICBwb3N0RGF0YWJh
c2VUYXNrKHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNUYXNrPihbdGhpcywgY2FsbGJhY2tBZ2dyZWdh
dG9yLCBtb2RpZmllZFNpbmNlXSB7CisgICAgICAgIHBvc3REYXRhYmFzZVRhc2soc3RkOjptYWtl
X3VuaXF1ZTxDcm9zc1RocmVhZFRhc2s+KFt0aGlzLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIG1vZGlm
aWVkU2luY2VdIHsKIAogICAgICAgICAgICAgZGVsZXRlSW5kZXhlZERhdGFiYXNlRW50cmllc01v
ZGlmaWVkU2luY2UobW9kaWZpZWRTaW5jZSk7CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKQEAgLTMwOSw3ICszMDksNyBAQCB2
b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6
OlNlc3Npb25JRCwgdWludDY0X3QgdwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlY3VyaXR5
T3JpZ2luRGF0YSA6IHNlY3VyaXR5T3JpZ2luRGF0YXMpCiAgICAgICAgICAgICBzZWN1cml0eU9y
aWdpbnMuYXBwZW5kKHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKTsKIAotICAg
ICAgICBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNUYXNrPihbdGhpcywg
c2VjdXJpdHlPcmlnaW5zLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgcG9zdERhdGFi
YXNlVGFzayhzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFkVGFzaz4oW3RoaXMsIHNlY3VyaXR5
T3JpZ2lucywgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CiAgICAgICAgICAgICBkZWxldGVJbmRleGVk
RGF0YWJhc2VFbnRyaWVzRm9yT3JpZ2lucyhzZWN1cml0eU9yaWdpbnMpOwogCiAgICAgICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaAppbmRl
eCAzZjBhMTUwLi5lYzQ3Nzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVBy
b2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9j
ZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBTZWN1cml0eU9y
aWdpbkRhdGE7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBBc3luY1Rhc2s7CitjbGFz
cyBDcm9zc1RocmVhZFRhc2s7CiBjbGFzcyBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb247
CiBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZTsKIApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAK
ICAgICBXb3JrUXVldWUmIHF1ZXVlKCkgeyByZXR1cm4gbV9xdWV1ZS5nZXQoKTsgfQogCi0gICAg
dm9pZCBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+KTsKKyAgICB2
b2lkIHBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4pOwog
CiBwcml2YXRlOgogICAgIERhdGFiYXNlUHJvY2VzcygpOwpAQCAtMTEyLDcgKzExMiw3IEBAIHBy
aXZhdGU6CiAgICAgSGFzaE1hcDxVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIsIFJlZlB0cjxV
bmlxdWVJREJEYXRhYmFzZT4+IG1faWRiRGF0YWJhc2VzOwogI2VuZGlmCiAKLSAgICBEZXF1ZTxz
dGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPj4gbV9kYXRhYmFzZVRhc2tzOworICAgIERlcXVlPHN0
ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+PiBtX2RhdGFiYXNlVGFza3M7CiAgICAgTG9j
ayBtX2RhdGFiYXNlVGFza011dGV4OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApp
bmRleCA1NmRkODZlLi5iYTBhODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAt
MjksMTMgKzI5LDEzIEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpICYmIEVOQUJMRShE
QVRBQkFTRV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiQXN5bmNSZXF1ZXN0LmgiCi0jaW5jbHVkZSAi
QXN5bmNUYXNrLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRhdGFi
YXNlUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VCYWNraW5n
U3RvcmVTUUxpdGUuaCIKICNpbmNsdWRlICJXZWJDcm9zc1RocmVhZENvcGllci5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvQ3Jvc3NUaHJlYWRUYXNrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJEYXRhYmFzZU1ldGFkYXRhLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9JREJHZXRSZXN1bHQuaD4KQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpzaHV0ZG93bihVbmlxdWVJREJEYXRhYmFzZVNodXRkb3duVHlwZSB0eXBl
KQogICAgICAgICBtX2RhdGFiYXNlVGFza3MuY2xlYXIoKTsKICAgICB9CiAKLSAgICBwb3N0RGF0
YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpzaHV0
ZG93bkJhY2tpbmdTdG9yZSwgdHlwZSwgYWJzb2x1dGVEYXRhYmFzZURpcmVjdG9yeSgpKSwgRGF0
YWJhc2VUYXNrVHlwZTo6U2h1dGRvd24pOworICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jv
c3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnNodXRkb3duQmFja2luZ1N0
b3JlLCB0eXBlLCBhYnNvbHV0ZURhdGFiYXNlRGlyZWN0b3J5KCkpLCBEYXRhYmFzZVRhc2tUeXBl
OjpTaHV0ZG93bik7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnNodXRkb3duQmFja2lu
Z1N0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlU2h1dGRvd25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VEaXJlY3RvcnkpCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6c2h1dGRvd25CYWNraW5nU3RvcmUoVW5pcXVlSURCRGF0YWJhc2VTaHV0ZG93blR5cGUg
dHlwZSwKICAgICAgICAgZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGF0YWJhc2VEaXJlY3RvcnkpOwog
ICAgIH0KIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZV
bmlxdWVJREJEYXRhYmFzZTo6ZGlkU2h1dGRvd25CYWNraW5nU3RvcmUsIHR5cGUpLCBEYXRhYmFz
ZVRhc2tUeXBlOjpTaHV0ZG93bik7CisgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUNyb3Nz
VGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRTaHV0ZG93bkJhY2tpbmdT
dG9yZSwgdHlwZSksIERhdGFiYXNlVGFza1R5cGU6OlNodXRkb3duKTsKIH0KIAogdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6ZGlkU2h1dGRvd25CYWNraW5nU3RvcmUoVW5pcXVlSURCRGF0YWJhc2VT
aHV0ZG93blR5cGUgdHlwZSkKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpnZXRPckVzdGFibGlzaElEQkRhdGFiYXNlTWV0YWRhdGEoc3RkOjpmdW5jdGlvbjx2b2lk
IChibwogICAgIG1fcGVuZGluZ01ldGFkYXRhUmVxdWVzdHMuYXBwZW5kKHJlcXVlc3QucmVsZWFz
ZSgpKTsKIAogICAgIGlmIChzaG91bGRPcGVuQmFja2luZ1N0b3JlKQotICAgICAgICBwb3N0RGF0
YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVu
QmFja2luZ1N0b3JlQW5kUmVhZE1ldGFkYXRhLCBtX2lkZW50aWZpZXIsIGFic29sdXRlRGF0YWJh
c2VEaXJlY3RvcnkoKSkpOworICAgICAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhy
ZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQmFja2luZ1N0b3JlQW5kUmVh
ZE1ldGFkYXRhLCBtX2lkZW50aWZpZXIsIGFic29sdXRlRGF0YWJhc2VEaXJlY3RvcnkoKSkpOwog
fQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQmFja2luZ1N0b3JlQW5kUmVhZE1ldGFk
YXRhKGNvbnN0IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSkKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpvcGVuQmFja2luZ1N0b3JlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IFVuaXF1
ZUlEQkRhdGFiYXNlSQogICAgIG1fYmFja2luZ1N0b3JlID0gVW5pcXVlSURCRGF0YWJhc2VCYWNr
aW5nU3RvcmVTUUxpdGU6OmNyZWF0ZShpZGVudGlmaWVyLCBkYXRhYmFzZURpcmVjdG9yeSk7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlTWV0YWRhdGE+IG1ldGFkYXRhID0gbV9iYWNr
aW5nU3RvcmUtPmdldE9yRXN0YWJsaXNoTWV0YWRhdGEoKTsKIAotICAgIHBvc3RNYWluVGhyZWFk
VGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkJh
Y2tpbmdTdG9yZUFuZFJlYWRNZXRhZGF0YSwgbWV0YWRhdGEgPyAqbWV0YWRhdGEgOiBJREJEYXRh
YmFzZU1ldGFkYXRhKCksICEhbWV0YWRhdGEpKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2soY3Jl
YXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNr
aW5nU3RvcmVBbmRSZWFkTWV0YWRhdGEsIG1ldGFkYXRhID8gKm1ldGFkYXRhIDogSURCRGF0YWJh
c2VNZXRhZGF0YSgpLCAhIW1ldGFkYXRhKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OmRpZE9wZW5CYWNraW5nU3RvcmVBbmRSZWFkTWV0YWRhdGEoY29uc3QgSURCRGF0YWJhc2VNZXRh
ZGF0YSYgbWV0YWRhdGEsIGJvb2wgc3VjY2VzcykKQEAgLTI4NSwzMCArMjg1LDMwIEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmVBbmRSZWFkTWV0YWRhdGEoY29u
c3QgSURCRGF0YWJhc2VNZXRhCiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5UcmFuc2Fj
dGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFZl
Y3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJRHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2Rl
IG1vZGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKLSAg
ICBwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjcmVhdGVB
c3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSURzLCBtb2RlKSwgc3Vj
Y2Vzc0NhbGxiYWNrKTsKKyAgICBwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24odHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFz
ZTo6b3BlbkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9i
amVjdFN0b3JlSURzLCBtb2RlKSwgc3VjY2Vzc0NhbGxiYWNrKTsKIH0KIAogdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFj
aykKIHsKLSAgICBwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24odHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6YmVnaW5CYWNraW5n
U3RvcmVUcmFuc2FjdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSwgc3VjY2Vzc0NhbGxiYWNr
KTsKKyAgICBwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBj
cmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6YmVnaW5CYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSwgc3VjY2Vzc0NhbGxi
YWNrKTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24oY29u
c3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spCiB7Ci0gICAgcG9zdFRyYW5zYWN0aW9uT3BlcmF0
aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVl
SURCRGF0YWJhc2U6OmNvbW1pdEJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLCB0cmFuc2FjdGlvbklk
ZW50aWZpZXIpLCBzdWNjZXNzQ2FsbGJhY2spOworICAgIHBvc3RUcmFuc2FjdGlvbk9wZXJhdGlv
bih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVu
aXF1ZUlEQkRhdGFiYXNlOjpjb21taXRCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiwgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKSwgc3VjY2Vzc0NhbGxiYWNrKTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6cmVzZXRUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKIHsK
LSAgICBwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjcmVh
dGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cmVzZXRCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSwgc3VjY2Vzc0NhbGxiYWNrKTsKKyAg
ICBwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjcmVhdGVD
cm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cmVzZXRCYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSwgc3VjY2Vzc0NhbGxiYWNrKTsK
IH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cm9sbGJhY2tUcmFuc2FjdGlvbihjb25zdCBJ
REJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
Ym9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKLSAgICBwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24o
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJE
YXRhYmFzZTo6cm9sbGJhY2tCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiwgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyKSwgc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24o
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlx
dWVJREJEYXRhYmFzZTo6cm9sbGJhY2tCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiwgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKSwgc3VjY2Vzc0NhbGxiYWNrKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6cG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4gdGFzaywgc3RkOjpm
dW5jdGlvbjx2b2lkIChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6cG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gdGFzaywg
c3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKQogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM3MSw3ICszNzEsNyBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpjaGFuZ2VEYXRhYmFzZVZlcnNpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZAogICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHJlcXVlc3QtPnJlcXVlc3RJRCgp
OwogICAgIG1fcGVuZGluZ0RhdGFiYXNlVGFza3MuYWRkKHJlcXVlc3RJRCwgcmVxdWVzdC5yZWxl
YXNlKCkpOwogCi0gICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZV
bmlxdWVJREJEYXRhYmFzZTo6Y2hhbmdlRGF0YWJhc2VWZXJzaW9uSW5CYWNraW5nU3RvcmUsIHJl
cXVlc3RJRCwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBuZXdWZXJzaW9uKSk7CisgICAgcG9zdERh
dGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFz
ZTo6Y2hhbmdlRGF0YWJhc2VWZXJzaW9uSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBuZXdWZXJzaW9uKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmRpZENoYW5nZURhdGFiYXNlVmVyc2lvbih1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3Vj
Y2VzcykKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVP
YmplY3RTdG9yZShjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aQogICAgIHVp
bnQ2NF90IHJlcXVlc3RJRCA9IHJlcXVlc3QtPnJlcXVlc3RJRCgpOwogICAgIG1fcGVuZGluZ0Rh
dGFiYXNlVGFza3MuYWRkKHJlcXVlc3RJRCwgcmVxdWVzdC5yZWxlYXNlKCkpOwogCi0gICAgcG9z
dERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6
Y3JlYXRlT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIG1ldGFkYXRhKSk7CisgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmVJbkJh
Y2tpbmdTdG9yZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG1ldGFkYXRhKSk7
CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElE
QklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlE
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spCkBAIC00NjEsNyAr
NDYxLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3Qg
SURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGkKICAgICB1aW50NjRfdCByZXF1ZXN0SUQg
PSByZXF1ZXN0LT5yZXF1ZXN0SUQoKTsKICAgICBtX3BlbmRpbmdEYXRhYmFzZVRhc2tzLmFkZChy
ZXF1ZXN0SUQsIHJlcXVlc3QucmVsZWFzZSgpKTsKIAotICAgIHBvc3REYXRhYmFzZVRhc2soY3Jl
YXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3Jl
SW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RT
dG9yZUlEKSk7CisgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRo
aXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSwg
cmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSUQpKTsKIH0KIAog
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgc3RkOjpm
dW5jdGlvbjx2b2lkIChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKQpAQCAtNDg0LDcgKzQ4NCw3IEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmCiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gcmVxdWVz
dC0+cmVxdWVzdElEKCk7CiAgICAgbV9wZW5kaW5nRGF0YWJhc2VUYXNrcy5hZGQocmVxdWVzdElE
LCByZXF1ZXN0LnJlbGVhc2UoKSk7CiAKLSAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUFzeW5j
VGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlSW5CYWNraW5n
U3RvcmUsIHJlcXVlc3RJRCwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlEKSk7
CisgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlx
dWVJREJEYXRhYmFzZTo6Y2xlYXJPYmplY3RTdG9yZUluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQs
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRCkpOwogfQogCiB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgSURCSW5kZXhNZXRhZGF0
YSYgbWV0YWRhdGEsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykK
QEAgLTUxOCw3ICs1MTgsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChj
b25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsCiAgICAgdWludDY0X3Qg
cmVxdWVzdElEID0gcmVxdWVzdC0+cmVxdWVzdElEKCk7CiAgICAgbV9wZW5kaW5nRGF0YWJhc2VU
YXNrcy5hZGQocmVxdWVzdElELCByZXF1ZXN0LnJlbGVhc2UoKSk7CiAKLSAgICBwb3N0RGF0YWJh
c2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJ
bmRleEluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2Jq
ZWN0U3RvcmVJRCwgbWV0YWRhdGEpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3Nz
VGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleEluQmFja2lu
Z1N0b3JlLCByZXF1ZXN0SUQsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRCwg
bWV0YWRhdGEpKTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoY29u
c3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0
b3JlSUQsIGludDY0X3QgaW5kZXhJRCwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gc3VjY2Vz
c0NhbGxiYWNrKQpAQCAtNTUyLDcgKzU1Miw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRl
bGV0ZUluZGV4KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwKICAg
ICB1aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5yZXF1ZXN0SUQoKTsKICAgICBtX3BlbmRp
bmdEYXRhYmFzZVRhc2tzLmFkZChyZXF1ZXN0SUQsIHJlcXVlc3QucmVsZWFzZSgpKTsKIAotICAg
IHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJh
c2U6OmRlbGV0ZUluZGV4SW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCBvYmplY3RTdG9yZUlELCBpbmRleElEKSk7CisgICAgcG9zdERhdGFiYXNlVGFzayhj
cmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5k
ZXhJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVj
dFN0b3JlSUQsIGluZGV4SUQpKTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0UmVj
b3JkKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBv
YmplY3RTdG9yZUlELCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIHZhbHVlLCBpbnQ2NF90IHB1dE1vZGUsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYg
aW5kZXhJRHMsIGNvbnN0IFZlY3RvcjxWZWN0b3I8SURCS2V5RGF0YT4+JiBpbmRleEtleXMsIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgSURCS2V5RGF0YSYsIHVpbnQzMl90LCBjb25zdCBTdHJp
bmcmKT4gY2FsbGJhY2spCkBAIC01NzUsNyArNTc1LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6cHV0UmVjb3JkKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
aW4KICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5yZXF1ZXN0SUQoKTsKICAgICBt
X3BlbmRpbmdEYXRhYmFzZVRhc2tzLmFkZChyZXF1ZXN0SUQsIHJlcXVlc3QucmVsZWFzZSgpKTsK
IAotICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURC
RGF0YWJhc2U6OnB1dFJlY29yZEluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgbV9tZXRhZGF0YS0+b2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlEKSwg
a2V5RGF0YSwgdmFsdWUudmVjdG9yKCksIHB1dE1vZGUsIGluZGV4SURzLCBpbmRleEtleXMpKTsK
KyAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1
ZUlEQkRhdGFiYXNlOjpwdXRSZWNvcmRJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIG1fbWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5nZXQob2JqZWN0U3RvcmVJ
RCksIGtleURhdGEsIHZhbHVlLnZlY3RvcigpLCBwdXRNb2RlLCBpbmRleElEcywgaW5kZXhLZXlz
KSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50
NjRfdCBpbmRleElELCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgSW5kZXhl
ZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgSURC
R2V0UmVzdWx0JiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYpPiBjYWxsYmFjaykKQEAgLTU5OCw3
ICs1OTgsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQoY29uc3QgSURCSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbgogICAgIHVpbnQ2NF90IHJlcXVlc3RJ
RCA9IHJlcXVlc3QtPnJlcXVlc3RJRCgpOwogICAgIG1fcGVuZGluZ0RhdGFiYXNlVGFza3MuYWRk
KHJlcXVlc3RJRCwgcmVxdWVzdC5yZWxlYXNlKCkpOwogCi0gICAgcG9zdERhdGFiYXNlVGFzayhj
cmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkRnJvbUJh
Y2tpbmdTdG9yZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG1fbWV0YWRhdGEt
Pm9iamVjdFN0b3Jlcy5nZXQob2JqZWN0U3RvcmVJRCksIGluZGV4SUQsIGtleVJhbmdlRGF0YSwg
Y3Vyc29yVHlwZSkpOworICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNr
KCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZEZyb21CYWNraW5nU3RvcmUsIHJl
cXVlc3RJRCwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBtX21ldGFkYXRhLT5vYmplY3RTdG9yZXMu
Z2V0KG9iamVjdFN0b3JlSUQpLCBpbmRleElELCBrZXlSYW5nZURhdGEsIGN1cnNvclR5cGUpKTsK
IH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvcihjb25zdCBJREJJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRf
dCBpbmRleElELCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBjdXJzb3JEaXJlY3Rpb24sIElu
ZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmQ6OlRhc2tU
eXBlIHRhc2tUeXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgc3RkOjpm
dW5jdGlvbjx2b2lkIChpbnQ2NF90LCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCS2V5RGF0
YSYsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYpPiBj
YWxsYmFjaykKQEAgLTYyMSw3ICs2MjEsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVu
Q3Vyc29yKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaQogICAg
IHVpbnQ2NF90IHJlcXVlc3RJRCA9IHJlcXVlc3QtPnJlcXVlc3RJRCgpOwogICAgIG1fcGVuZGlu
Z0RhdGFiYXNlVGFza3MuYWRkKHJlcXVlc3RJRCwgcmVxdWVzdC5yZWxlYXNlKCkpOwogCi0gICAg
cG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFz
ZTo6b3BlbkN1cnNvckluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIHRyYW5zYWN0aW9uSWRlbnRp
Zmllciwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCwgY3Vyc29yRGlyZWN0aW9uLCBjdXJzb3JUeXBl
LCB0YXNrVHlwZSwga2V5UmFuZ2VEYXRhKSk7CisgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVD
cm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvckluQmFj
a2luZ1N0b3JlLCByZXF1ZXN0SUQsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJ
RCwgaW5kZXhJRCwgY3Vyc29yRGlyZWN0aW9uLCBjdXJzb3JUeXBlLCB0YXNrVHlwZSwga2V5UmFu
Z2VEYXRhKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmN1cnNvckFkdmFuY2UoY29u
c3QgSURCSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgdWludDY0X3QgY291bnQsIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2sp
CkBAIC02NDIsNyArNjQyLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3Vyc29yQWR2YW5j
ZShjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCB1aW4KICAgICB1aW50NjRf
dCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5yZXF1ZXN0SUQoKTsKICAgICBtX3BlbmRpbmdEYXRhYmFz
ZVRhc2tzLmFkZChyZXF1ZXN0SUQsIHJlcXVlc3QucmVsZWFzZSgpKTsKIAotICAgIHBvc3REYXRh
YmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmFkdmFu
Y2VDdXJzb3JJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBjdXJzb3JJZGVudGlmaWVyLCBjb3Vu
dCkpOworICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAm
VW5pcXVlSURCRGF0YWJhc2U6OmFkdmFuY2VDdXJzb3JJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElE
LCBjdXJzb3JJZGVudGlmaWVyLCBjb3VudCkpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpjdXJzb3JJdGVyYXRlKGNvbnN0IElEQklkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIGNv
bnN0IElEQktleURhdGEmIGtleSwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBJREJLZXlEYXRh
JiwgY29uc3QgSURCS2V5RGF0YSYsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgdWludDMyX3Qs
IGNvbnN0IFN0cmluZyYpPiBjYWxsYmFjaykKQEAgLTY2Myw3ICs2NjMsNyBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpjdXJzb3JJdGVyYXRlKGNvbnN0IElEQklkZW50aWZpZXImIGN1cnNvcklk
ZW50aWZpZXIsIGNvbgogICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHJlcXVlc3QtPnJlcXVlc3RJ
RCgpOwogICAgIG1fcGVuZGluZ0RhdGFiYXNlVGFza3MuYWRkKHJlcXVlc3RJRCwgcmVxdWVzdC5y
ZWxlYXNlKCkpOwogCi0gICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMs
ICZVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvckluQmFja2luZ1N0b3JlLCByZXF1ZXN0
SUQsIGN1cnNvcklkZW50aWZpZXIsIGtleSkpOworICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRl
Q3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3JJ
bkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBjdXJzb3JJZGVudGlmaWVyLCBrZXkpKTsKIH0KIAog
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y291bnQoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5kZXhJRCwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
aW50NjRfdCwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYpPiBjYWxsYmFjaykKQEAgLTY4NCw3ICs2
ODQsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb3VudChjb25zdCBJREJJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0XwogICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9
IHJlcXVlc3QtPnJlcXVlc3RJRCgpOwogICAgIG1fcGVuZGluZ0RhdGFiYXNlVGFza3MuYWRkKHJl
cXVlc3RJRCwgcmVxdWVzdC5yZWxlYXNlKCkpOwogCi0gICAgcG9zdERhdGFiYXNlVGFzayhjcmVh
dGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6Y291bnRJbkJhY2tpbmdTdG9y
ZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSUQsIGluZGV4
SUQsIGtleVJhbmdlRGF0YSkpOworICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJl
YWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmNvdW50SW5CYWNraW5nU3RvcmUsIHJl
cXVlc3RJRCwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlELCBpbmRleElELCBr
ZXlSYW5nZURhdGEpKTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmFuZ2Uo
Y29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVj
dFN0b3JlSUQsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQgKHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2spCkBAIC03MDUsNyAr
NzA1LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmFuZ2UoY29uc3QgSURCSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLAogICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9
IHJlcXVlc3QtPnJlcXVlc3RJRCgpOwogICAgIG1fcGVuZGluZ0RhdGFiYXNlVGFza3MuYWRkKHJl
cXVlc3RJRCwgcmVxdWVzdC5yZWxlYXNlKCkpOwogCi0gICAgcG9zdERhdGFiYXNlVGFzayhjcmVh
dGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmFuZ2VJbkJhY2tp
bmdTdG9yZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSUQs
IGtleVJhbmdlRGF0YSkpOworICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRU
YXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJhbmdlSW5CYWNraW5nU3RvcmUs
IHJlcXVlc3RJRCwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlELCBrZXlSYW5n
ZURhdGEpKTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29u
c3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlEcywgSW5kZXhlZERCOjpUcmFuc2FjdGlv
bk1vZGUgbW9kZSkKQEAgLTcxNSw4ICs3MTUsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpv
cGVuQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhYwog
CiAgICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmVzdGFibGlzaFRyYW5zYWN0aW9u
KHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRHMsIG1vZGUpOwogCi0gICAgcG9z
dE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNl
OjpkaWRFc3RhYmxpc2hUcmFuc2FjdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdWNjZXNz
KSk7Ci0gICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1
ZUlEQkRhdGFiYXNlOjpkaWRDb21wbGV0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uLCB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIHN1Y2Nlc3MpKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQ3Jv
c3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZEVzdGFibGlzaFRyYW5z
YWN0aW9uLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHN1Y2Nlc3MpKTsKKyAgICBwb3N0TWFpblRo
cmVhZFRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6
OmRpZENvbXBsZXRlVHJhbnNhY3Rpb25PcGVyYXRpb24sIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
c3VjY2VzcykpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpiZWdpbkJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikK
QEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpiZWdpbkJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYQogCiAgICAgYm9vbCBz
dWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmJlZ2luVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVu
dGlmaWVyKTsKIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMs
ICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlvbiwgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBzdWNjZXNzKSk7CisgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNy
ZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRDb21wbGV0
ZVRyYW5zYWN0aW9uT3BlcmF0aW9uLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHN1Y2Nlc3MpKTsK
IH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0QmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQpAQCAtNzM2LDcg
KzczNiw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdEJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zCiAKICAgICBib29sIHN1Y2Nlc3MgPSBt
X2JhY2tpbmdTdG9yZS0+Y29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKTsK
IAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJ
REJEYXRhYmFzZTo6ZGlkQ29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlvbiwgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBzdWNjZXNzKSk7CisgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUNyb3Nz
VGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRDb21wbGV0ZVRyYW5zYWN0
aW9uT3BlcmF0aW9uLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHN1Y2Nlc3MpKTsKIH0KIAogdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVzZXRCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJ
REJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCkBAIC03NDYsOCArNzQ2LDggQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cmVzZXRCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25z
dCBJREJJZGVudGlmaWVyJiB0cmFuc2EKIAogICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0
b3JlLT5yZXNldFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAKLSAgICBwb3N0
TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6
OmRpZFJlc2V0VHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgc3VjY2VzcykpOwot
ICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkQ29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlvbiwgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCBzdWNjZXNzKSk7CisgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUNyb3NzVGhy
ZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRSZXNldFRyYW5zYWN0aW9uLCB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIHN1Y2Nlc3MpKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2so
Y3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZENvbXBs
ZXRlVHJhbnNhY3Rpb25PcGVyYXRpb24sIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgc3VjY2Vzcykp
OwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyb2xsYmFja0JhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKQEAgLTc1
Nyw3ICs3NTcsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyb2xsYmFja0JhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYQogCiAgICAgYm9vbCBzdWNjZXNz
ID0gbV9iYWNraW5nU3RvcmUtPnJvbGxiYWNrVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlm
aWVyKTsKIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZV
bmlxdWVJREJEYXRhYmFzZTo6ZGlkQ29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlvbiwgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBzdWNjZXNzKSk7CisgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0
ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRDb21wbGV0ZVRy
YW5zYWN0aW9uT3BlcmF0aW9uLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHN1Y2Nlc3MpKTsKIH0K
IAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y2hhbmdlRGF0YWJhc2VWZXJzaW9uSW5CYWNraW5n
U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIHVpbnQ2NF90IG5ld1ZlcnNpb24pCkBAIC03NjcsNyArNzY3LDcgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6Y2hhbmdlRGF0YWJhc2VWZXJzaW9uSW5CYWNraW5nU3RvcmUo
dWludDY0X3QgcmVxdWVzdElELAogCiAgICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUt
PmNoYW5nZURhdGFiYXNlVmVyc2lvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIG5ld1ZlcnNpb24p
OwogCi0gICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1
ZUlEQkRhdGFiYXNlOjpkaWRDaGFuZ2VEYXRhYmFzZVZlcnNpb24sIHJlcXVlc3RJRCwgc3VjY2Vz
cykpOworICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMs
ICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ2hhbmdlRGF0YWJhc2VWZXJzaW9uLCByZXF1ZXN0SUQs
IHN1Y2Nlc3MpKTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3Rv
cmVJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQklkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgbWV0
YWRhdGEpCkBAIC03NzcsNyArNzc3LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRl
T2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnMKIAogICAg
IGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5jcmVhdGVPYmplY3RTdG9yZSh0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIG1ldGFkYXRhKTsKIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVh
dGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ3JlYXRlT2JqZWN0U3Rv
cmUsIHJlcXVlc3RJRCwgc3VjY2VzcykpOworICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVD
cm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ3JlYXRlT2JqZWN0
U3RvcmUsIHJlcXVlc3RJRCwgc3VjY2VzcykpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpkZWxldGVPYmplY3RTdG9yZUluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0
b3JlSUQpCkBAIC03ODcsNyArNzg3LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRl
T2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnMKIAogICAg
IGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5kZWxldGVPYmplY3RTdG9yZSh0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSUQpOwogCi0gICAgcG9zdE1haW5UaHJlYWRUYXNr
KGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxldGVPYmpl
Y3RTdG9yZSwgcmVxdWVzdElELCBzdWNjZXNzKSk7CisgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNy
ZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxldGVP
YmplY3RTdG9yZSwgcmVxdWVzdElELCBzdWNjZXNzKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQs
IGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlEKQpAQCAtNzk3LDcgKzc5Nyw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNs
ZWFyT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0CiAK
ICAgICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+Y2xlYXJPYmplY3RTdG9yZSh0cmFu
c2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSUQpOwogCi0gICAgcG9zdE1haW5UaHJlYWRU
YXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRDbGVhck9i
amVjdFN0b3JlLCByZXF1ZXN0SUQsIHN1Y2Nlc3MpKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2so
Y3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZENsZWFy
T2JqZWN0U3RvcmUsIHJlcXVlc3RJRCwgc3VjY2VzcykpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpjcmVhdGVJbmRleEluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0
b3JlSUQsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIG1ldGFkYXRhKQpAQCAtODA3LDcgKzgwNyw3
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4SW5CYWNraW5nU3RvcmUodWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJCiAKICAgICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tp
bmdTdG9yZS0+Y3JlYXRlSW5kZXgodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlE
LCBtZXRhZGF0YSk7CiAKLSAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0
aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZENyZWF0ZUluZGV4LCByZXF1ZXN0SUQsIHN1Y2Nl
c3MpKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlz
LCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZENyZWF0ZUluZGV4LCByZXF1ZXN0SUQsIHN1Y2Nlc3Mp
KTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXhJbkJhY2tpbmdTdG9y
ZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2NF90IGluZGV4SUQpCkBAIC04MTcs
NyArODE3LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXhJbkJhY2tpbmdT
dG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQkkKIAogICAgIGJvb2wgc3VjY2VzcyA9
IG1fYmFja2luZ1N0b3JlLT5kZWxldGVJbmRleCh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVj
dFN0b3JlSUQsIGluZGV4SUQpOwogCi0gICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5j
VGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxldGVJbmRleCwgcmVxdWVzdElE
LCBzdWNjZXNzKSk7CisgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFz
aygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxldGVJbmRleCwgcmVxdWVzdElELCBz
dWNjZXNzKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dFJlY29yZEluQmFja2lu
Z1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rp
b24sIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlTWV0YWRhdGEsIGNv
bnN0IElEQktleURhdGEmIGlucHV0S2V5RGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2YWx1
ZSwgaW50NjRfdCBwdXRNb2RlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SURzLCBjb25z
dCBWZWN0b3I8VmVjdG9yPElEQktleURhdGE+PiYgaW5kZXhLZXlzKQpAQCAtODMxLDcgKzgzMSw3
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dFJlY29yZEluQmFja2luZ1N0b3JlKHVpbnQ2
NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSWRlCiAKICAgICBpZiAocHV0TW9kZSAhPSBJREJEYXRh
YmFzZUJhY2tlbmQ6OkN1cnNvclVwZGF0ZSAmJiBvYmplY3RTdG9yZU1ldGFkYXRhLmF1dG9JbmNy
ZW1lbnQgJiYgaW5wdXRLZXlEYXRhLmlzTnVsbCkgewogICAgICAgICBpZiAoIW1fYmFja2luZ1N0
b3JlLT5nZW5lcmF0ZUtleU51bWJlcih0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVNZXRhZGF0YS5p
ZCwga2V5TnVtYmVyKSkgewotICAgICAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFz
eW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQdXRSZWNvcmRJbkJhY2tpbmdT
dG9yZSwgcmVxdWVzdElELCBJREJLZXlEYXRhKCksIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtu
b3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgYmFja2luZyBzdG9yZSBlcnJvciBjaGVj
a2luZyBmb3Iga2V5IGV4aXN0ZW5jZSIpKSk7CisgICAgICAgICAgICBwb3N0TWFpblRocmVhZFRh
c2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFB1
dFJlY29yZEluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIElEQktleURhdGEoKSwgSURCRGF0YWJh
c2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBiYWNraW5n
IHN0b3JlIGVycm9yIGNoZWNraW5nIGZvciBrZXkgZXhpc3RlbmNlIikpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBrZXkuc2V0TnVtYmVyVmFsdWUoa2V5TnVtYmVy
KTsKQEAgLTg0MiwxMSArODQyLDExIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dFJlY29y
ZEluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSWRlCiAgICAgaWYg
KHB1dE1vZGUgPT0gSURCRGF0YWJhc2VCYWNrZW5kOjpBZGRPbmx5KSB7CiAgICAgICAgIGJvb2wg
a2V5RXhpc3RzOwogICAgICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5rZXlFeGlzdHNJbk9iamVj
dFN0b3JlKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU1ldGFkYXRhLmlkLCBrZXksIGtleUV4aXN0
cykpIHsKLSAgICAgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRo
aXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUsIHJlcXVl
c3RJRCwgSURCS2V5RGF0YSgpLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBB
U0NJSUxpdGVyYWwoIkludGVybmFsIGJhY2tpbmcgc3RvcmUgZXJyb3IgY2hlY2tpbmcgZm9yIGtl
eSBleGlzdGVuY2UiKSkpOworICAgICAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUNy
b3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQdXRSZWNvcmRJbkJh
Y2tpbmdTdG9yZSwgcmVxdWVzdElELCBJREJLZXlEYXRhKCksIElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgYmFja2luZyBzdG9yZSBlcnJv
ciBjaGVja2luZyBmb3Iga2V5IGV4aXN0ZW5jZSIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGtleUV4aXN0cykgewotICAgICAgICAgICAgcG9zdE1haW5U
aHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQ
dXRSZWNvcmRJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBJREJLZXlEYXRhKCksIElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IGFscmVhZHkg
ZXhpc3RzIGluIHRoZSBvYmplY3Qgc3RvcmUiKSkpOworICAgICAgICAgICAgcG9zdE1haW5UaHJl
YWRUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpk
aWRQdXRSZWNvcmRJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBJREJLZXlEYXRhKCksIElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IGFscmVh
ZHkgZXhpc3RzIGluIHRoZSBvYmplY3Qgc3RvcmUiKSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgfQpAQCAtODU0LDEyICs4NTQsMTIgQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6cHV0UmVjb3JkSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJ
REJJZGUKICAgICAvLyBUaGUgc3BlYyBzYXlzIHRoYXQgZXZlbiBpZiB3ZSdyZSBhYm91dCB0byBv
dmVyd3JpdGUgdGhlIHJlY29yZCwgcGVyZm9ybSB0aGUgc3RlcHMgdG8gZGVsZXRlIGl0IGZpcnN0
LgogICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgZm9ybWFsbHkgZGVsZXRpbmcgaXQg
ZnJvbSBmcm9tIHRoZSBvYmplY3Qgc3RvcmUgYWxzbyByZW1vdmVzIGl0IGZyb20gdGhlIGFwcHJv
cHJpYXRlIGluZGV4ZXMuCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlUmVjb3JkKHRy
YW5zYWN0aW9uLCBvYmplY3RTdG9yZU1ldGFkYXRhLmlkLCBrZXkpKSB7Ci0gICAgICAgIHBvc3RN
YWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6
ZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCS2V5RGF0YSgpLCBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIlJlcGxhY2luZyBh
biBleGlzdGluZyBrZXkgaW4gYmFja2luZyBzdG9yZSwgdW5hYmxlIHRvIGRlbGV0ZSBwcmV2aW91
cyByZWNvcmQuIikpKTsKKyAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUNyb3NzVGhy
ZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQdXRSZWNvcmRJbkJhY2tpbmdT
dG9yZSwgcmVxdWVzdElELCBJREJLZXlEYXRhKCksIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtu
b3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUmVwbGFjaW5nIGFuIGV4aXN0aW5nIGtleSBpbiBiYWNr
aW5nIHN0b3JlLCB1bmFibGUgdG8gZGVsZXRlIHByZXZpb3VzIHJlY29yZC4iKSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+cHV0UmVjb3JkKHRy
YW5zYWN0aW9uLCBvYmplY3RTdG9yZU1ldGFkYXRhLmlkLCBrZXksIHZhbHVlLmRhdGEoKSwgdmFs
dWUuc2l6ZSgpKSkgewotICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNr
KCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFB1dFJlY29yZEluQmFja2luZ1N0b3JlLCBy
ZXF1ZXN0SUQsIElEQktleURhdGEoKSwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJv
ciwgQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBiYWNraW5nIHN0b3JlIGVycm9yIHB1dHRpbmcgYSBy
ZWNvcmQiKSkpOworICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRU
YXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFB1dFJlY29yZEluQmFja2luZ1N0b3Jl
LCByZXF1ZXN0SUQsIElEQktleURhdGEoKSwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25F
cnJvciwgQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBiYWNraW5nIHN0b3JlIGVycm9yIHB1dHRpbmcg
YSByZWNvcmQiKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04NjcsNyArODY3LDcg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkSW5CYWNraW5nU3RvcmUodWludDY0
X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGUKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlu
ZGV4SURzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgaW5k
ZXhLZXlzW2ldLnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICBpZiAoIW1fYmFja2luZ1N0b3Jl
LT5wdXRJbmRleFJlY29yZCh0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVNZXRhZGF0YS5pZCwgaW5k
ZXhJRHNbaV0sIGtleSwgaW5kZXhLZXlzW2ldW2pdKSkgewotICAgICAgICAgICAgICAgIHBvc3RN
YWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6
ZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCS2V5RGF0YSgpLCBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkludGVybmFsIGJh
Y2tpbmcgc3RvcmUgZXJyb3Igd3JpdGluZyBpbmRleCBrZXkiKSkpOworICAgICAgICAgICAgICAg
IHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJ
REJEYXRhYmFzZTo6ZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCS2V5
RGF0YSgpLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwo
IkludGVybmFsIGJhY2tpbmcgc3RvcmUgZXJyb3Igd3JpdGluZyBpbmRleCBrZXkiKSkpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtODc3LDEy
ICs4NzcsMTIgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkSW5CYWNraW5nU3Rv
cmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGUKIAogICAgIGlmIChwdXRNb2RlICE9
IElEQkRhdGFiYXNlQmFja2VuZDo6Q3Vyc29yVXBkYXRlICYmIG9iamVjdFN0b3JlTWV0YWRhdGEu
YXV0b0luY3JlbWVudCAmJiBrZXkudHlwZSA9PSBLZXlUeXBlOjpOdW1iZXIpIHsKICAgICAgICAg
aWYgKCFtX2JhY2tpbmdTdG9yZS0+dXBkYXRlS2V5R2VuZXJhdG9yTnVtYmVyKHRyYW5zYWN0aW9u
LCBvYmplY3RTdG9yZU1ldGFkYXRhLmlkLCBrZXlOdW1iZXIsIGtleVdhc0dlbmVyYXRlZCkpIHsK
LSAgICAgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZV
bmlxdWVJREJEYXRhYmFzZTo6ZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwg
SURCS2V5RGF0YSgpLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxp
dGVyYWwoIkludGVybmFsIGJhY2tpbmcgc3RvcmUgZXJyb3IgdXBkYXRpbmcga2V5IGdlbmVyYXRv
ciIpKSk7CisgICAgICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRU
YXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFB1dFJlY29yZEluQmFja2luZ1N0b3Jl
LCByZXF1ZXN0SUQsIElEQktleURhdGEoKSwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25F
cnJvciwgQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBiYWNraW5nIHN0b3JlIGVycm9yIHVwZGF0aW5n
IGtleSBnZW5lcmF0b3IiKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fQogCi0gICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1
ZUlEQkRhdGFiYXNlOjpkaWRQdXRSZWNvcmRJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBrZXks
IDAsIFN0cmluZyhTdHJpbmdJbXBsOjplbXB0eSgpKSkpOworICAgIHBvc3RNYWluVGhyZWFkVGFz
ayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUHV0
UmVjb3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwga2V5LCAwLCBTdHJpbmcoU3RyaW5nSW1w
bDo6ZW1wdHkoKSkpKTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUHV0UmVjb3Jk
SW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJLZXlEYXRhJiBrZXlE
YXRhLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpAQCAt
ODk4LDcgKzg5OCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZEZyb21CYWNr
aW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJCiAgICAgUmVmUHRyPElEQktl
eVJhbmdlPiBrZXlSYW5nZSA9IGtleVJhbmdlRGF0YS5tYXliZUNyZWF0ZUlEQktleVJhbmdlKCk7
CiAgICAgQVNTRVJUKGtleVJhbmdlKTsKICAgICBpZiAoIWtleVJhbmdlKSB7Ci0gICAgICAgIHBv
c3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFz
ZTo6ZGlkR2V0UmVjb3JkRnJvbUJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBJREJHZXRSZXN1bHQo
KSwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJJbnZh
bGlkIElEQktleVJhbmdlIHJlcXVlc3RlZCBmcm9tIGJhY2tpbmcgc3RvcmUiKSkpOworICAgICAg
ICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVl
SURCRGF0YWJhc2U6OmRpZEdldFJlY29yZEZyb21CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURC
R2V0UmVzdWx0KCksIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0
ZXJhbCgiSW52YWxpZCBJREJLZXlSYW5nZSByZXF1ZXN0ZWQgZnJvbSBiYWNraW5nIHN0b3JlIikp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTA4LDEwICs5MDgsMTAgQEAgdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkRnJvbUJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1
ZXN0SUQsIGNvbnN0IElEQkkKIAogICAgICAgICBpZiAoa2V5UmFuZ2UtPmlzT25seUtleSgpKSB7
CiAgICAgICAgICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5nZXRLZXlSZWNvcmRGcm9tT2JqZWN0
U3RvcmUodHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlTWV0YWRhdGEuaWQsICprZXlSYW5nZS0+bG93
ZXIoKSwgcmVzdWx0KSkKLSAgICAgICAgICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRl
QXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZEdldFJlY29yZEZyb21CYWNr
aW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCR2V0UmVzdWx0KCksIElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGdldCBrZXkgcmVjb3JkIGZy
b20gb2JqZWN0IHN0b3JlIGluIGJhY2tpbmcgc3RvcmUiKSkpOworICAgICAgICAgICAgICAgIHBv
c3RNYWluVGhyZWFkVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkR2V0UmVjb3JkRnJvbUJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBJREJHZXRS
ZXN1bHQoKSwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFs
KCJGYWlsZWQgdG8gZ2V0IGtleSByZWNvcmQgZnJvbSBvYmplY3Qgc3RvcmUgaW4gYmFja2luZyBz
dG9yZSIpKSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBJREJHZXRSZXN1
bHQgZ2V0UmVzdWx0ID0gcmVzdWx0ID8gSURCR2V0UmVzdWx0KHJlc3VsdC5yZWxlYXNlKCksIGtl
eVJhbmdlLT5sb3dlcigpLCBvYmplY3RTdG9yZU1ldGFkYXRhLmtleVBhdGgpIDogSURCR2V0UmVz
dWx0KCk7Ci0gICAgICAgICAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFz
aygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRHZXRSZWNvcmRGcm9tQmFja2luZ1N0b3Jl
LCByZXF1ZXN0SUQsIGdldFJlc3VsdCwgMCwgU3RyaW5nKFN0cmluZ0ltcGw6OmVtcHR5KCkpKSk7
CisgICAgICAgICAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFz
aygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRHZXRSZWNvcmRGcm9tQmFja2luZ1N0b3Jl
LCByZXF1ZXN0SUQsIGdldFJlc3VsdCwgMCwgU3RyaW5nKFN0cmluZ0ltcGw6OmVtcHR5KCkpKSk7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHJldHVybjsKQEAgLTkyMCwxMCArOTIwLDEw
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZEZyb21CYWNraW5nU3RvcmUodWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJCiAgICAgICAgIFJlZlB0cjxJREJLZXk+IHJlc3Vs
dEtleTsKIAogICAgICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5nZXRLZXlSYW5nZVJlY29yZEZy
b21PYmplY3RTdG9yZSh0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVNZXRhZGF0YS5pZCwgKmtleVJh
bmdlLCByZXN1bHQsIHJlc3VsdEtleSkpCi0gICAgICAgICAgICBwb3N0TWFpblRocmVhZFRhc2so
Y3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZEdldFJlY29yZEZy
b21CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCR2V0UmVzdWx0KCksIElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGdldCBrZXkgcmFu
Z2UgcmVjb3JkIGZyb20gb2JqZWN0IHN0b3JlIGluIGJhY2tpbmcgc3RvcmUiKSkpOworICAgICAg
ICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVu
aXF1ZUlEQkRhdGFiYXNlOjpkaWRHZXRSZWNvcmRGcm9tQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQs
IElEQkdldFJlc3VsdCgpLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJ
SUxpdGVyYWwoIkZhaWxlZCB0byBnZXQga2V5IHJhbmdlIHJlY29yZCBmcm9tIG9iamVjdCBzdG9y
ZSBpbiBiYWNraW5nIHN0b3JlIikpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBJREJH
ZXRSZXN1bHQgZ2V0UmVzdWx0ID0gcmVzdWx0ID8gSURCR2V0UmVzdWx0KHJlc3VsdC5yZWxlYXNl
KCksIHJlc3VsdEtleS5yZWxlYXNlKCksIG9iamVjdFN0b3JlTWV0YWRhdGEua2V5UGF0aCkgOiBJ
REJHZXRSZXN1bHQoKTsKLSAgICAgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3lu
Y1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkR2V0UmVjb3JkRnJvbUJhY2tpbmdT
dG9yZSwgcmVxdWVzdElELCBnZXRSZXN1bHQsIDAsIFN0cmluZyhTdHJpbmdJbXBsOjplbXB0eSgp
KSkpOworICAgICAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFz
aygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRHZXRSZWNvcmRGcm9tQmFja2luZ1N0b3Jl
LCByZXF1ZXN0SUQsIGdldFJlc3VsdCwgMCwgU3RyaW5nKFN0cmluZ0ltcGw6OmVtcHR5KCkpKSk7
CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm47CkBAIC05MzMsMTQgKzkzMywxNCBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmRGcm9tQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3QgSURCSQogCiAgICAgSURCR2V0UmVzdWx0IHJlc3VsdDsKICAgICBpZiAo
IW1fYmFja2luZ1N0b3JlLT5nZXRJbmRleFJlY29yZCh0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVN
ZXRhZGF0YS5pZCwgaW5kZXhJRCwga2V5UmFuZ2VEYXRhLCBjdXJzb3JUeXBlLCByZXN1bHQpKSB7
Ci0gICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlx
dWVJREJEYXRhYmFzZTo6ZGlkR2V0UmVjb3JkRnJvbUJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBJ
REJHZXRSZXN1bHQoKSwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlM
aXRlcmFsKCJGYWlsZWQgdG8gZ2V0IGluZGV4IHJlY29yZCBmcm9tIGJhY2tpbmcgc3RvcmUiKSkp
OworICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlz
LCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZEdldFJlY29yZEZyb21CYWNraW5nU3RvcmUsIHJlcXVl
c3RJRCwgSURCR2V0UmVzdWx0KCksIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGdldCBpbmRleCByZWNvcmQgZnJvbSBiYWNraW5nIHN0
b3JlIikpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIFdlIG11c3QgcmV0dXJu
IGEga2V5IHBhdGggdG8ga25vdyBob3cgdG8gaW5qZWN0IHRoZSByZXN1bHQga2V5IGludG8gdGhl
IHJlc3VsdCB2YWx1ZSBvYmplY3QuCiAgICAgcmVzdWx0LmtleVBhdGggPSBvYmplY3RTdG9yZU1l
dGFkYXRhLmtleVBhdGg7CiAKLSAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNr
KCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZEdldFJlY29yZEZyb21CYWNraW5nU3RvcmUs
IHJlcXVlc3RJRCwgcmVzdWx0LCAwLCBTdHJpbmcoU3RyaW5nSW1wbDo6ZW1wdHkoKSkpKTsKKyAg
ICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVl
SURCRGF0YWJhc2U6OmRpZEdldFJlY29yZEZyb21CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgcmVz
dWx0LCAwLCBTdHJpbmcoU3RyaW5nSW1wbDo6ZW1wdHkoKSkpKTsKIH0KIAogdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6ZGlkR2V0UmVjb3JkRnJvbUJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0
SUQsIGNvbnN0IElEQkdldFJlc3VsdCYgcmVzdWx0LCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpAQCAtOTY2LDcgKzk2Niw3IEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6Om9wZW5DdXJzb3JJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNv
bnN0IElEQklkCiAgICAgICAgIGVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5rbm93biBl
cnJvciBvcGVuaW5nIGN1cnNvciBpbiBiYWNraW5nIHN0b3JlIik7CiAgICAgfQogCi0gICAgcG9z
dE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNl
OjpkaWRPcGVuQ3Vyc29ySW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgY3Vyc29ySUQsIGtleSwg
cHJpbWFyeUtleSwgdmFsdWVCdWZmZXIsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKSk7CisgICAg
cG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlE
QkRhdGFiYXNlOjpkaWRPcGVuQ3Vyc29ySW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgY3Vyc29y
SUQsIGtleSwgcHJpbWFyeUtleSwgdmFsdWVCdWZmZXIsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdl
KSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5DdXJzb3JJbkJhY2tpbmdT
dG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgY3Vyc29ySUQsIGNvbnN0IElEQktleURh
dGEmIGtleSwgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiB2YWx1ZUJ1ZmZlciwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkKQEAgLTk4OCw3ICs5ODgsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjphZHZh
bmNlQ3Vyc29ySW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJRAogICAg
ICAgICBlcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVua25vd24gZXJyb3IgYWR2YW5jaW5n
IGN1cnNvciBpbiBiYWNraW5nIHN0b3JlIik7CiAgICAgfQogCi0gICAgcG9zdE1haW5UaHJlYWRU
YXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRBZHZhbmNl
Q3Vyc29ySW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwga2V5LCBwcmltYXJ5S2V5LCB2YWx1ZUJ1
ZmZlciwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2so
Y3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZEFkdmFu
Y2VDdXJzb3JJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBrZXksIHByaW1hcnlLZXksIHZhbHVl
QnVmZmVyLCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSkpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpkaWRBZHZhbmNlQ3Vyc29ySW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElE
LCBjb25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IElEQktleURhdGEmIHByaW1hcnlLZXksIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgdmFsdWVCdWZmZXIsIHVpbnQzMl90IGVycm9yQ29kZSwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCkBAIC0xMDEwLDcgKzEwMTAsNyBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29ySW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVz
dElELCBjb25zdCBJRAogICAgICAgICBlcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVua25v
d24gZXJyb3IgaXRlcmF0aW5nIGN1cnNvciBpbiBiYWNraW5nIHN0b3JlIik7CiAgICAgfQogCi0g
ICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRh
dGFiYXNlOjpkaWRJdGVyYXRlQ3Vyc29ySW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwga2V5LCBw
cmltYXJ5S2V5LCB2YWx1ZUJ1ZmZlciwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpKTsKKyAgICBw
b3N0TWFpblRocmVhZFRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURC
RGF0YWJhc2U6OmRpZEl0ZXJhdGVDdXJzb3JJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBrZXks
IHByaW1hcnlLZXksIHZhbHVlQnVmZmVyLCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSkpOwogfQog
CiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRJdGVyYXRlQ3Vyc29ySW5CYWNraW5nU3RvcmUo
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IElEQktleURh
dGEmIHByaW1hcnlLZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdmFsdWVCdWZmZXIsIHVpbnQz
Ml90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCkBAIC0xMDI0LDEyICsx
MDI0LDEyIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvdW50SW5CYWNraW5nU3RvcmUodWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGVudGlmCiAKICAgICBpZiAoIW1fYmFja2luZ1N0
b3JlLT5jb3VudCh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSUQsIGluZGV4SUQs
IGtleVJhbmdlRGF0YSwgY291bnQpKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGdl
dCBjb3VudCBmcm9tIGJhY2tpbmcgc3RvcmUuIik7Ci0gICAgICAgIHBvc3RNYWluVGhyZWFkVGFz
ayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ291bnRJbkJh
Y2tpbmdTdG9yZSwgcmVxdWVzdElELCAwLCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVy
cm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBnZXQgY291bnQgZnJvbSBiYWNraW5nIHN0b3Jl
IikpKTsKKyAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygq
dGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRDb3VudEluQmFja2luZ1N0b3JlLCByZXF1ZXN0
SUQsIDAsIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
RmFpbGVkIHRvIGdldCBjb3VudCBmcm9tIGJhY2tpbmcgc3RvcmUiKSkpOwogCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0
aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZENvdW50SW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJ
RCwgY291bnQsIDAsIFN0cmluZyhTdHJpbmdJbXBsOjplbXB0eSgpKSkpOworICAgIHBvc3RNYWlu
VGhyZWFkVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFz
ZTo6ZGlkQ291bnRJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBjb3VudCwgMCwgU3RyaW5nKFN0
cmluZ0ltcGw6OmVtcHR5KCkpKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZENv
dW50SW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IGNvdW50LCB1aW50
MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpAQCAtMTA0MSwxNCAr
MTA0MSwxNCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSYW5nZUluQmFja2luZ1N0
b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSQogewogICAgIGlmICghbV9iYWNraW5n
U3RvcmUtPmRlbGV0ZVJhbmdlKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRCwg
a2V5UmFuZ2VEYXRhKSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWxldGUgcmFu
Z2UgZnJvbSBiYWNraW5nIHN0b3JlLiIpOwotICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soY3Jl
YXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZERlbGV0ZVJhbmdlSW5C
YWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJv
ciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZ2V0IGNvdW50IGZyb20gYmFja2luZyBzdG9yZSIp
KSk7CisgICAgICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRo
aXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVsZXRlUmFuZ2VJbkJhY2tpbmdTdG9yZSwgcmVx
dWVzdElELCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwo
IkZhaWxlZCB0byBnZXQgY291bnQgZnJvbSBiYWNraW5nIHN0b3JlIikpKTsKIAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgbV9iYWNraW5nU3RvcmUtPm5vdGlmeUN1cnNvcnNPZkNoYW5n
ZXModHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlEKTsKIAotICAgIHBvc3RNYWlu
VGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlk
RGVsZXRlUmFuZ2VJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCAwLCBTdHJpbmcoU3RyaW5nSW1w
bDo6ZW1wdHkoKSkpKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRU
YXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZERlbGV0ZVJhbmdlSW5CYWNraW5nU3Rv
cmUsIHJlcXVlc3RJRCwgMCwgU3RyaW5nKFN0cmluZ0ltcGw6OmVtcHR5KCkpKSk7CiB9CiAKIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZERlbGV0ZVJhbmdlSW5CYWNraW5nU3RvcmUodWludDY0
X3QgcmVxdWVzdElELCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKQpAQCAtMTExOCw3ICsxMTE4LDcgQEAgU3RyaW5nIFVuaXF1ZUlEQkRhdGFiYXNlOjphYnNv
bHV0ZURhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QKICAgICByZXR1cm4gRGF0YWJhc2VQcm9jZXNz
OjpzaW5nbGV0b24oKS5hYnNvbHV0ZUluZGV4ZWREYXRhYmFzZVBhdGhGcm9tRGF0YWJhc2VSZWxh
dGl2ZVBhdGgobV9kYXRhYmFzZVJlbGF0aXZlRGlyZWN0b3J5KTsKIH0KIAotdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6cG9zdE1haW5UaHJlYWRUYXNrKHN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+
IHRhc2ssIERhdGFiYXNlVGFza1R5cGUgdGFza1R5cGUpCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
Ojpwb3N0TWFpblRocmVhZFRhc2soc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gdGFz
aywgRGF0YWJhc2VUYXNrVHlwZSB0YXNrVHlwZSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIApAQCAtMTE0MSw3ICsxMTQxLDcgQEAgYm9vbCBVbmlxdWVJREJEYXRhYmFzZTo6
cGVyZm9ybU5leHRNYWluVGhyZWFkVGFzaygpCiAKICAgICBib29sIG1vcmVUYXNrczsKIAotICAg
IHN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IHRhc2s7CisgICAgc3RkOjp1bmlxdWVfcHRyPENy
b3NzVGhyZWFkVGFzaz4gdGFzazsKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
bWFpblRocmVhZFRhc2tNdXRleCk7CiAKQEAgLTExNTgsNyArMTE1OCw3IEBAIGJvb2wgVW5pcXVl
SURCRGF0YWJhc2U6OnBlcmZvcm1OZXh0TWFpblRocmVhZFRhc2soKQogICAgIHJldHVybiBtb3Jl
VGFza3M7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2soc3Rk
Ojp1bmlxdWVfcHRyPEFzeW5jVGFzaz4gdGFzaywgRGF0YWJhc2VUYXNrVHlwZSB0YXNrVHlwZSkK
K3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlxdWVfcHRy
PENyb3NzVGhyZWFkVGFzaz4gdGFzaywgRGF0YWJhc2VUYXNrVHlwZSB0YXNrVHlwZSkKIHsKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xMTg0LDcgKzExODQsNyBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtTmV4dERhdGFiYXNlVGFzaygpCiAgICAgLy8gV2Ug
dGFrZSBhIHJlZigpIHRvIG1ha2Ugc3VyZSB0aGUgZGF0YWJhc2UgaXMgc3RpbGwgbGl2ZSB3aGls
ZSB0aGlzIGxhc3QgdGFzayBpcyBwZXJmb3JtZWQuCiAgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFi
YXNlPiBwcm90ZWN0b3IodGhpcyk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiB0
YXNrOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IHRhc2s7CiAgICAgewog
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlVGFza011dGV4KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJE
YXRhYmFzZS5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9Vbmlx
dWVJREJEYXRhYmFzZS5oCmluZGV4IGVlMzM0ZTMuLjQ0MTYxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRh
dGFiYXNlLmgKQEAgLTU2LDcgKzU2LDcgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIEFzeW5jVGFzazsKK2NsYXNzIENyb3NzVGhyZWFk
VGFzazsKIGNsYXNzIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb247CiBjbGFzcyBVbmlxdWVJ
REJEYXRhYmFzZUJhY2tpbmdTdG9yZTsKIApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIE5vcm1hbCwKICAgICAgICAgU2h1dGRvd24KICAgICB9OwotICAgIHZvaWQgcG9zdERh
dGFiYXNlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiwgRGF0YWJhc2VUYXNrVHlwZSA9
IERhdGFiYXNlVGFza1R5cGU6Ok5vcm1hbCk7CisgICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrKHN0
ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+LCBEYXRhYmFzZVRhc2tUeXBlID0gRGF0YWJh
c2VUYXNrVHlwZTo6Tm9ybWFsKTsKIAogICAgIHZvaWQgc2h1dGRvd24oVW5pcXVlSURCRGF0YWJh
c2VTaHV0ZG93blR5cGUpOwogCkBAIC0xMzgsMTEgKzEzOCwxMSBAQCBwcml2YXRlOgogICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGlzIG9yaWdpbiBjYW4gdXNlIHRoZSBzYW1lIGRhdGFiYXNlcyBh
cyB0aGUgZ2l2ZW4gb3JpZ2luLgogICAgIGJvb2wgY2FuU2hhcmVEYXRhYmFzZXMoY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJikgY29uc3Q7CiAKLSAgICB2b2lkIHBvc3RUcmFuc2FjdGlvbk9wZXJhdGlvbihjb25zdCBJ
REJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxBc3lu
Y1Rhc2s+LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spOworICAg
IHZvaWQgcG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4sIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjayk7CiAgICAgCiAgICAgLy8gVG8g
YmUgY2FsbGVkIGZyb20gdGhlIGRhdGFiYXNlIHdvcmtxdWV1ZSB0aHJlYWQgb25seQogICAgIHZv
aWQgcGVyZm9ybU5leHREYXRhYmFzZVRhc2soKTsKLSAgICB2b2lkIHBvc3RNYWluVGhyZWFkVGFz
ayhzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiwgRGF0YWJhc2VUYXNrVHlwZSA9IERhdGFiYXNl
VGFza1R5cGU6Ok5vcm1hbCk7CisgICAgdm9pZCBwb3N0TWFpblRocmVhZFRhc2soc3RkOjp1bmlx
dWVfcHRyPENyb3NzVGhyZWFkVGFzaz4sIERhdGFiYXNlVGFza1R5cGUgPSBEYXRhYmFzZVRhc2tU
eXBlOjpOb3JtYWwpOwogICAgIHZvaWQgb3BlbkJhY2tpbmdTdG9yZUFuZFJlYWRNZXRhZGF0YShj
b25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXImLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNl
RGlyZWN0b3J5KTsKICAgICB2b2lkIG9wZW5CYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJ
REJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxpbnQ2NF90
PiYgb2JqZWN0U3RvcmVJRHMsIFdlYkNvcmU6OkluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlKTsK
ICAgICB2b2lkIGJlZ2luQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmll
ciYpOwpAQCAtMjA4LDEwICsyMDgsMTAgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxVbmlxdWVJ
REJEYXRhYmFzZUJhY2tpbmdTdG9yZT4gbV9iYWNraW5nU3RvcmU7CiAKLSAgICBEZXF1ZTxzdGQ6
OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPj4gbV9kYXRhYmFzZVRhc2tzOworICAgIERlcXVlPHN0ZDo6
dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+PiBtX2RhdGFiYXNlVGFza3M7CiAgICAgTG9jayBt
X2RhdGFiYXNlVGFza011dGV4OwogCi0gICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFz
az4+IG1fbWFpblRocmVhZFRhc2tzOworICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1Ro
cmVhZFRhc2s+PiBtX21haW5UaHJlYWRUYXNrczsKICAgICBMb2NrIG1fbWFpblRocmVhZFRhc2tN
dXRleDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3luY1Rhc2su
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3luY1Rhc2suaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzZkODUzYy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QXN5bmNUYXNrLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMjggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgQXN5bmNUYXNrX2gKLSNkZWZpbmUgQXN5bmNUYXNrX2gKLQotI2luY2x1ZGUgPFdl
YkNvcmUvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgQXN5bmNUYXNrIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShBc3luY1Rhc2spOwotcHVibGljOgotICAgIEFzeW5jVGFzayhjb25zdCBzdGQ6OmZ1bmN0
aW9uPHZvaWQgKCk+IHRhc2tGdW5jdGlvbikKLSAgICAgICAgOiBtX3Rhc2tGdW5jdGlvbih0YXNr
RnVuY3Rpb24pCi0gICAgewotICAgICAgICBBU1NFUlQodGFza0Z1bmN0aW9uKTsKLSAgICB9Ci0K
LSAgICB2b2lkIHBlcmZvcm1UYXNrKCkKLSAgICB7Ci0gICAgICAgIG1fdGFza0Z1bmN0aW9uKCk7
Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgQXN5bmNUYXNrKCkgeyB9Ci0KLSAgICBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKCk+IG1fdGFza0Z1bmN0aW9uOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLWNsYXNzIEFzeW5jVGFza0ltcGwgZmluYWwgOiBw
dWJsaWMgQXN5bmNUYXNrIHsKLXB1YmxpYzoKLSAgICBBc3luY1Rhc2tJbXBsKFQqIGNhbGxlZSwg
dm9pZCAoVDo6Km1ldGhvZCkoQXJndW1lbnRzLi4uKSwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRz
KQotICAgIHsKLSAgICAgICAgbV90YXNrRnVuY3Rpb24gPSBbY2FsbGVlLCBtZXRob2QsIGFyZ3Vt
ZW50cy4uLl0gewotICAgICAgICAgICAgKGNhbGxlZS0+Km1ldGhvZCkoYXJndW1lbnRzLi4uKTsK
LSAgICAgICAgfTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RkOjp1bmlx
dWVfcHRyPEFzeW5jVGFzaz4gY3JlYXRlQXN5bmNUYXNrKAotICAgIFQmIGNhbGxlZSwKLSAgICB2
b2lkIChUOjoqbWV0aG9kKSgpKQotewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFzeW5j
VGFza0ltcGw8VD4+KCZjYWxsZWUsIG1ldGhvZCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDE+Ci1zdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiBj
cmVhdGVBc3luY1Rhc2soCi0gICAgVCYgY2FsbGVlLAotICAgIHZvaWQgKFQ6OiptZXRob2QpKE1Q
MSksCi0gICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCi17Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8QXN5bmNUYXNrSW1wbDxULCBNUDE+PigKLSAgICAgICAgJmNhbGxlZSwKLSAgICAgICAg
bWV0aG9kLAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFy
YW1ldGVyMSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5h
bWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyPgotc3RkOjp1bmlxdWVfcHRyPEFzeW5j
VGFzaz4gY3JlYXRlQXN5bmNUYXNrKAotICAgIFQmIGNhbGxlZSwKLSAgICB2b2lkIChUOjoqbWV0
aG9kKShNUDEsIE1QMiksCi0gICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsCi0gICAgY29uc3QgUDIm
IHBhcmFtZXRlcjIpCi17Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNUYXNrSW1w
bDxULCBNUDEsIE1QMj4+KAotICAgICAgICAmY2FsbGVlLAotICAgICAgICBtZXRob2QsCi0gICAg
ICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKLSAg
ICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpKTsK
LQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0
eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzPgotc3Rk
Ojp1bmlxdWVfcHRyPEFzeW5jVGFzaz4gY3JlYXRlQXN5bmNUYXNrKAotICAgIFQmIGNhbGxlZSwK
LSAgICB2b2lkIChUOjoqbWV0aG9kKShNUDEsIE1QMiwgTVAzKSwKLSAgICBjb25zdCBQMSYgcGFy
YW1ldGVyMSwKLSAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKLSAgICBjb25zdCBQMyYgcGFyYW1l
dGVyMykKLXsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Rhc2tJbXBsPFQsIE1Q
MSwgTVAyLCBNUDM+PigKLSAgICAgICAgJmNhbGxlZSwKLSAgICAgICAgbWV0aG9kLAotICAgICAg
ICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCi0gICAg
ICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKLSAg
ICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlw
ZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5h
bWUgUDQsIHR5cGVuYW1lIE1QND4KLXN0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IGNyZWF0ZUFz
eW5jVGFzaygKLSAgICBUJiBjYWxsZWUsCi0gICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBNUDIs
IE1QMywgTVA0KSwKLSAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKLSAgICBjb25zdCBQMiYgcGFy
YW1ldGVyMiwKLSAgICBjb25zdCBQMyYgcGFyYW1ldGVyMywKLSAgICBjb25zdCBQNCYgcGFyYW1l
dGVyNCkKLXsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Rhc2tJbXBsPFQsIE1Q
MSwgTVAyLCBNUDMsIE1QND4+KAotICAgICAgICAmY2FsbGVlLAotICAgICAgICBtZXRob2QsCi0g
ICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwK
LSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIp
LAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVy
MyksCi0gICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShwYXJhbWV0
ZXI0KSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBN
UDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMs
IHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDU+Ci1z
dGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiBjcmVhdGVBc3luY1Rhc2soCi0gICAgVCYgY2FsbGVl
LAotICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1KSwKLSAgICBj
b25zdCBQMSYgcGFyYW1ldGVyMSwKLSAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKLSAgICBjb25z
dCBQMyYgcGFyYW1ldGVyMywKLSAgICBjb25zdCBQNCYgcGFyYW1ldGVyNCwKLSAgICBjb25zdCBQ
NSYgcGFyYW1ldGVyNSkKLXsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Rhc2tJ
bXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1Pj4oCi0gICAgICAgICZjYWxsZWUsCi0gICAg
ICAgIG1ldGhvZCwKLSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5
KHBhcmFtZXRlcjEpLAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQMj46OmNv
cHkocGFyYW1ldGVyMiksCi0gICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFAzPjo6
Y29weShwYXJhbWV0ZXIzKSwKLSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDQ+
Ojpjb3B5KHBhcmFtZXRlcjQpLAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQ
NT46OmNvcHkocGFyYW1ldGVyNSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQ
MywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwg
dHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2Pgotc3RkOjp1bmlxdWVfcHRy
PEFzeW5jVGFzaz4gY3JlYXRlQXN5bmNUYXNrKAotICAgIFQmIGNhbGxlZSwKLSAgICB2b2lkIChU
OjoqbWV0aG9kKShNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2KSwKLSAgICBjb25zdCBQMSYg
cGFyYW1ldGVyMSwKLSAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKLSAgICBjb25zdCBQMyYgcGFy
YW1ldGVyMywKLSAgICBjb25zdCBQNCYgcGFyYW1ldGVyNCwKLSAgICBjb25zdCBQNSYgcGFyYW1l
dGVyNSwKLSAgICBjb25zdCBQNiYgcGFyYW1ldGVyNikKLXsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxBc3luY1Rhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDY+PigK
LSAgICAgICAgJmNhbGxlZSwKLSAgICAgICAgbWV0aG9kLAotICAgICAgICBXZWJDb3JlOjpDcm9z
c1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCi0gICAgICAgIFdlYkNvcmU6OkNy
b3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKLSAgICAgICAgV2ViQ29yZTo6
Q3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLAotICAgICAgICBXZWJDb3Jl
OjpDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCi0gICAgICAgIFdlYkNv
cmU6OkNyb3NzVGhyZWFkQ29waWVyPFA1Pjo6Y29weShwYXJhbWV0ZXI1KSwKLSAgICAgICAgV2Vi
Q29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDY+Ojpjb3B5KHBhcmFtZXRlcjYpKTsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIs
IHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5
cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVu
YW1lIE1QNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNz4KLXN0ZDo6dW5pcXVlX3B0cjxBc3lu
Y1Rhc2s+IGNyZWF0ZUFzeW5jVGFzaygKLSAgICBUJiBjYWxsZWUsCi0gICAgdm9pZCAoVDo6Km1l
dGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3KSwKLSAgICBjb25zdCBQMSYg
cGFyYW1ldGVyMSwKLSAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKLSAgICBjb25zdCBQMyYgcGFy
YW1ldGVyMywKLSAgICBjb25zdCBQNCYgcGFyYW1ldGVyNCwKLSAgICBjb25zdCBQNSYgcGFyYW1l
dGVyNSwKLSAgICBjb25zdCBQNiYgcGFyYW1ldGVyNiwKLSAgICBjb25zdCBQNyYgcGFyYW1ldGVy
NykKLXsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Rhc2tJbXBsPFQsIE1QMSwg
TVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNz4+KAotICAgICAgICAmY2FsbGVlLAotICAgICAg
ICBtZXRob2QsCi0gICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShw
YXJhbWV0ZXIxKSwKLSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5
KHBhcmFtZXRlcjIpLAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQMz46OmNv
cHkocGFyYW1ldGVyMyksCi0gICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFA0Pjo6
Y29weShwYXJhbWV0ZXI0KSwKLSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDU+
Ojpjb3B5KHBhcmFtZXRlcjUpLAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQ
Nj46OmNvcHkocGFyYW1ldGVyNiksCi0gICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVy
PFA3Pjo6Y29weShwYXJhbWV0ZXI3KSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1l
IFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1
LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDYsIHR5cGVuYW1lIFA3LCB0
eXBlbmFtZSBNUDcsIHR5cGVuYW1lIFA4LCB0eXBlbmFtZSBNUDg+Ci1zdGQ6OnVuaXF1ZV9wdHI8
QXN5bmNUYXNrPiBjcmVhdGVBc3luY1Rhc2soCi0gICAgVCYgY2FsbGVlLAotICAgIHZvaWQgKFQ6
OiptZXRob2QpKE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNywgTVA4KSwKLSAgICBj
b25zdCBQMSYgcGFyYW1ldGVyMSwKLSAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKLSAgICBjb25z
dCBQMyYgcGFyYW1ldGVyMywKLSAgICBjb25zdCBQNCYgcGFyYW1ldGVyNCwKLSAgICBjb25zdCBQ
NSYgcGFyYW1ldGVyNSwKLSAgICBjb25zdCBQNiYgcGFyYW1ldGVyNiwKLSAgICBjb25zdCBQNyYg
cGFyYW1ldGVyNywKLSAgICBjb25zdCBQOCYgcGFyYW1ldGVyOCkKLXsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxBc3luY1Rhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBN
UDYsIE1QNywgTVA4Pj4oCi0gICAgICAgICZjYWxsZWUsCi0gICAgICAgIG1ldGhvZCwKLSAgICAg
ICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAotICAg
ICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCi0g
ICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwK
LSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQp
LAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQNT46OmNvcHkocGFyYW1ldGVy
NSksCi0gICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFA2Pjo6Y29weShwYXJhbWV0
ZXI2KSwKLSAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDc+Ojpjb3B5KHBhcmFt
ZXRlcjcpLAotICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQOD46OmNvcHkocGFy
YW1ldGVyOCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEFzeW5j
VGFza19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMTQ2OTI1My4uYWFmYzRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTg1LDcgKzk4NSw2IEBACiAJCTUx
QUQzNTczMUFEMkYzOTQwMDU3QjM4RSAvKiBXZWJIaXRUZXN0UmVzdWx0Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBRDM1NzIxQUQyRjM3NTAwNTdC
MzhFIC8qIFdlYkhpdFRlc3RSZXN1bHQubW0gKi87IH07CiAJCTUxQjE1QTg0MTM4NDNBMzkwMDMy
MUFEOCAvKiBFbnZpcm9ubWVudFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIxNUE4MjEzODQzQTM5MDAzMjFBRDggLyogRW52aXJv
bm1lbnRVdGlsaXRpZXMuY3BwICovOyB9OwogCQk1MUIxNUE4NTEzODQzQTM5MDAzMjFBRDggLyog
RW52aXJvbm1lbnRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQjE1QTgzMTM4NDNBMzkwMDMyMUFEOCAvKiBFbnZpcm9ubWVudFV0aWxp
dGllcy5oICovOyB9OwotCQk1MUJBMjQ0NDE4NThFRTMwMDBFQTI4MTEgLyogQXN5bmNUYXNrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBMjQ0MzE4
NThFRTMwMDBFQTI4MTEgLyogQXN5bmNUYXNrLmggKi87IH07CiAJCTUxQkEyNDQ2MTg1OEY1NUQw
MEVBMjgxMSAvKiBXZWJDcm9zc1RocmVhZENvcGllci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBMjQ0NTE4NThGNDE1MDBFQTI4MTEgLyogV2Vi
Q3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovOyB9OwogCQk1MUM5NjExODE4M0QyOTQ3MDBEMjAwMkUg
LyogV2ViSURCU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM5NjExNjE4M0QyOTQ3MDBEMjAw
MkUgLyogV2ViSURCU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJ
CTUxQzk2MTE5MTgzRDI5NDcwMEQyMDAyRSAvKiBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzk2
MTE3MTgzRDI5NDcwMEQyMDAyRSAvKiBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCAq
LzsgfTsKQEAgLTMxNjEsNyArMzE2MCw2IEBACiAJCTUxQUQzNTcyMUFEMkYzNzUwMDU3QjM4RSAv
KiBXZWJIaXRUZXN0UmVzdWx0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViSGl0VGVzdFJl
c3VsdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMTVBODIxMzg0M0EzOTAw
MzIxQUQ4IC8qIEVudmlyb25tZW50VXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEVudmlyb25tZW50VXRpbGl0aWVzLmNwcDsgcGF0aCA9IHVuaXgvRW52
aXJvbm1lbnRVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIx
NUE4MzEzODQzQTM5MDAzMjFBRDggLyogRW52aXJvbm1lbnRVdGlsaXRpZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRW52aXJvbm1lbnRVdGlsaXRpZXMuaDsgcGF0aCA9IHVu
aXgvRW52aXJvbm1lbnRVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NTFCQTI0NDMxODU4RUUzMDAwRUEyODExIC8qIEFzeW5jVGFzay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBc3luY1Rhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTFCQTI0NDUxODU4RjQxNTAwRUEyODExIC8qIFdlYkNyb3NzVGhyZWFkQ29waWVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNyb3NzVGhyZWFkQ29waWVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTFDOTYxMTUxODNDOTVGRjAwRDIwMDJFIC8qIFdlYklEQlNlcnZl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViSURCU2VydmVyQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDOTYxMTYxODNEMjk0NzAw
RDIwMDJFIC8qIFdlYklEQlNlcnZlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSURCU2VydmVyQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NjgxLDcg
KzQ2NzksNiBAQAogCQkJCUM1OUM0QTU3MThCODExNzQwMDdCRENCNiAvKiBBc3Npc3RlZE5vZGVJ
bmZvcm1hdGlvbi5oICovLAogCQkJCTUxNUU3NzI1MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1Jl
cXVlc3QuY3BwICovLAogCQkJCTUxNUU3NzI2MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVl
c3QuaCAqLywKLQkJCQk1MUJBMjQ0MzE4NThFRTMwMDBFQTI4MTEgLyogQXN5bmNUYXNrLmggKi8s
CiAJCQkJRTE2NEEyRUYxOTFBRjE0RTAwMTA3MzdEIC8qIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdp
dGhTYW5kYm94RXh0ZW5zaW9uLmNwcCAqLywKIAkJCQlFMTY0QTJGMDE5MUFGMTRFMDAxMDczN0Qg
LyogQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaCAqLywKIAkJCQk0
RjYwMTQzMDE1NUM1QTMyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oICovLApAQCAt
NzU5Myw3ICs3NTkwLDYgQEAKIAkJCQlDRTFBMEJEMjFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0
aW9uU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1OUM0QTU5MThCODExNzQwMDdC
RENCNiAvKiBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1
RTc3MjgxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNTFCQTI0NDQxODU4RUUzMDAwRUEyODExIC8qIEFzeW5jVGFzay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNFRTk2NkQxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxQTMxNzMyMTM0Q0VBNkMwMDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5nLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNTg5NzEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCg==
</data>
<flag name="review"
          id="287293"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>