<?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>165802</bug_id>
          
          <creation_ts>2016-12-13 09:53:45 -0800</creation_ts>
          <short_desc>IndexedDB 2.0: Massively speedup IDBIndex.get()</short_desc>
          <delta_ts>2016-12-14 12:57:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>165803</dependson>
          <blocked>160306</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1259413</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-12-13 09:53:45 -0800</bug_when>
    <thetext>IndexedDB 2.0: Don&apos;t use a cursor internally for IDBIndex.get()

I put together a perf test that benchmarks IDBIndex.get(), and using a cursor to do it was extremely hot in profiles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259416</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-12-13 09:56:42 -0800</bug_when>
    <thetext>I&apos;m going to try to land the test first and give the bots at least 1 cycle on it, so we have a record of the speedup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259827</commentid>
    <comment_count>2</comment_count>
      <attachid>297107</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-12-14 11:41:27 -0800</bug_when>
    <thetext>Created attachment 297107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259834</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-12-14 11:57:43 -0800</bug_when>
    <thetext>&lt;rdar://problem/29666094&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259856</commentid>
    <comment_count>4</comment_count>
      <attachid>297107</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-14 12:57:26 -0800</bug_when>
    <thetext>Comment on attachment 297107
Patch

Clearing flags on attachment: 297107

Committed r209824: &lt;http://trac.webkit.org/changeset/209824&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259857</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-14 12:57:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297107</attachid>
            <date>2016-12-14 11:41:27 -0800</date>
            <delta_ts>2016-12-14 12:57:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165802-20161214114036.patch</filename>
            <type>text/plain</type>
            <size>42254</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5NzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjlmM2ZkNzIxZDA1ZGE3
MDE1MWYzNjYyNTVjMzQ0YmQ1YjJmM2RiYS4uNDY4NjY0ZGFhYWI3NDVhZjg5NDUyMjA0NjEzZDk3
YTJjNTk3ODI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE2LTEyLTE0ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBJbmRleGVkREIgMi4wOiBN
YXNzaXZlbHkgc3BlZWR1cCBJREJJbmRleC5nZXQoKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTgwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoTm8gYmVoYXZpb3IgY2hhbmdl
IHRvIEphdmFzY3JpcHQsIHRhYmxlIHVwZ3JhZGUgY2hhbmdlIGNvdmVyZWQgYnkgQVBJIHRlc3Qp
LgorCisgICAgICAgIFRoaXMgY2hhbmdlIHVwZ3JhZGVzIHRoZSBJbmRleFJlY29yZHMgc2NoZW1h
IHRvIGluY2x1ZGUgdGhlIE9iamVjdFN0b3JlIHJlY29yZCBJRCBmb3IgdGhlIHJlZmVyZW5jZWQg
cmVjb3JkLgorICAgICAgICBJdCBhbHNvIGFkZHMgYSBTUUxpdGUgSW5kZXgtYnkta2V5IG9uIElu
ZGV4UmVjb3Jkcy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgc3BlZWRzIHVwIFBlcmZvcm1hbmNl
VGVzdHMvSW5kZXhlZERCL2luZGV4LWdldC5odG1sIGJ5IDE1LTIweC4KKyAgICAgICAgCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OnYzSW5kZXhSZWNvcmRzVGFibGVTY2hlbWEp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjp2M0luZGV4UmVjb3Jkc1RhYmxlU2NoZW1h
QWx0ZXJuYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6djFJbmRleFJlY29yZHNJ
bmRleFNjaGVtYSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNUYWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29y
ZHNJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRl
eEtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVwZGF0ZU9uZUluZGV4Rm9yQWRkUmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1cGRhdGVB
bGxJbmRleGVzRm9yQWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldEluZGV4UmVjb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRl
eFJlY29yZEZvck9uZUtleSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkN1cnNvcjo6bWFya0FzRXJyb3JlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxBZHZhbmNlT25jZSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmN1cnJlbnRSZWNvcmRSb3dJRCk6CisKIDIw
MTYtMTItMTMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtl
IG9wYXF1ZSByb290IHNjYW5uaW5nIHRydWx5IGNvbnN0cmFpbnQtYmFzZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMDM5OGEzOGY5ODdmYzNlOWIyZTI0Yzc4NWIzM2M0
ZjZjY2U4YzcwNi4uNThjYTkzNGRhMTBhZTY4MzZkYjU3YTE0ODM3YTgyNzY4ZTVmM2U5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTE3MSw2ICsxNzEsMjkgQEAgc3Rh
dGljIGNvbnN0IFN0cmluZyYgdjJJbmRleFJlY29yZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSgpCiAg
ICAgcmV0dXJuIHYySW5kZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmc7CiB9CiAKK3N0YXRpYyBj
b25zdCBTdHJpbmcgdjNJbmRleFJlY29yZHNUYWJsZVNjaGVtYShjb25zdCBTdHJpbmcmIHRhYmxl
TmFtZSkKK3sKKyAgICByZXR1cm4gbWFrZVN0cmluZygiQ1JFQVRFIFRBQkxFICIsIHRhYmxlTmFt
ZSwgIiAoaW5kZXhJRCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIG9iamVjdFN0
b3JlSUQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBrZXkgVEVYVCBDT0xMQVRF
IElEQktFWSBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCB2YWx1ZSBURVhUIENPTExBVEUgSURC
S0VZIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIG9iamVjdFN0b3JlUmVjb3JkSUQgSU5URUdF
UiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSIpOworfQorCitzdGF0aWMgY29uc3QgU3RyaW5n
IHYzSW5kZXhSZWNvcmRzVGFibGVTY2hlbWEoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxXVEY6OlN0cmluZz4gaW5kZXhSZWNvcmRzVGFibGVTY2hlbWFTdHJpbmcgPSB2M0luZGV4UmVj
b3Jkc1RhYmxlU2NoZW1hKCJJbmRleFJlY29yZHMiKTsKKyAgICByZXR1cm4gaW5kZXhSZWNvcmRz
VGFibGVTY2hlbWFTdHJpbmc7Cit9CisKK3N0YXRpYyBjb25zdCBTdHJpbmcgdjNJbmRleFJlY29y
ZHNUYWJsZVNjaGVtYUFsdGVybmF0ZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdU
Rjo6U3RyaW5nPiBpbmRleFJlY29yZHNUYWJsZVNjaGVtYVN0cmluZyA9IHYzSW5kZXhSZWNvcmRz
VGFibGVTY2hlbWEoIlwiSW5kZXhSZWNvcmRzXCIiKTsKKyAgICByZXR1cm4gaW5kZXhSZWNvcmRz
VGFibGVTY2hlbWFTdHJpbmc7Cit9CisKK3N0YXRpYyBjb25zdCBTdHJpbmcmIHYxSW5kZXhSZWNv
cmRzSW5kZXhTY2hlbWEoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OlN0cmlu
Zz4gaW5kZXhSZWNvcmRzSW5kZXhTY2hlbWFTdHJpbmcoIkNSRUFURSBJTkRFWCBJbmRleFJlY29y
ZHNJbmRleCBPTiBJbmRleFJlY29yZHMgKGtleSkiKTsKKyAgICByZXR1cm4gaW5kZXhSZWNvcmRz
SW5kZXhTY2hlbWFTdHJpbmc7Cit9CisKIHN0YXRpYyBjb25zdCBTdHJpbmcgYmxvYlJlY29yZHNU
YWJsZVNjaGVtYShjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkKIHsKICAgICByZXR1cm4gbWFrZVN0
cmluZygiQ1JFQVRFIFRBQkxFICIsIHRhYmxlTmFtZSwgIiAob2JqZWN0U3RvcmVSb3cgSU5URUdF
UiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBibG9iVVJMIFRFWFQgTk9UIE5VTEwgT04gQ09O
RkxJQ1QgRkFJTCkiKTsKQEAgLTQyOCw3ICs0NTEsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6ZW5zdXJlVmFsaWRJbmRleFJlY29yZHNUYWJsZSgpCiAKICAgICAgICAgLy8gSWYgdGhl
cmUgaXMgbm8gSW5kZXhSZWNvcmRzIHRhYmxlIGF0IGFsbCwgY3JlYXRlIGl0IGFuZCB0aGVuIGJh
aWwuCiAgICAgICAgIGlmIChzcWxpdGVSZXN1bHQgPT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAg
ICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQodjJJbmRleFJlY29yZHNUYWJsZVNj
aGVtYSgpKSkgeworICAgICAgICAgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCh2
M0luZGV4UmVjb3Jkc1RhYmxlU2NoZW1hKCkpKSB7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9S
KCJDb3VsZCBub3QgY3JlYXRlIEluZGV4UmVjb3JkcyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0g
JXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkp
OwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KQEAgLTQ0Nywy
NCArNDcwLDI1IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZEluZGV4
UmVjb3Jkc1RhYmxlKCkKICAgICBBU1NFUlQoIWN1cnJlbnRTY2hlbWEuaXNFbXB0eSgpKTsKIAog
ICAgIC8vIElmIHRoZSBzY2hlbWEgaW4gdGhlIGJhY2tpbmcgc3RvcmUgaXMgdGhlIGN1cnJlbnQg
c2NoZW1hLCB3ZSdyZSBkb25lLgotICAgIGlmIChjdXJyZW50U2NoZW1hID09IHYySW5kZXhSZWNv
cmRzVGFibGVTY2hlbWEoKSB8fCBjdXJyZW50U2NoZW1hID09IHYySW5kZXhSZWNvcmRzVGFibGVT
Y2hlbWFBbHRlcm5hdGUoKSkKKyAgICBpZiAoY3VycmVudFNjaGVtYSA9PSB2M0luZGV4UmVjb3Jk
c1RhYmxlU2NoZW1hKCkgfHwgY3VycmVudFNjaGVtYSA9PSB2M0luZGV4UmVjb3Jkc1RhYmxlU2No
ZW1hQWx0ZXJuYXRlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gSWYgdGhlIHJl
Y29yZCB0YWJsZSBpcyBub3QgdGhlIGN1cnJlbnQgc2NoZW1hIHRoZW4gaXQgbXVzdCBiZSBvbmUg
b2YgdGhlIHByZXZpb3VzIHNjaGVtYXMuCiAgICAgLy8gSWYgaXQgaXMgbm90IHRoZW4gdGhlIGRh
dGFiYXNlIGlzIGluIGFuIHVucmVjb3ZlcmFibGUgc3RhdGUgYW5kIHRoaXMgc2hvdWxkIGJlIGNv
bnNpZGVyZWQgYSBmYXRhbCBlcnJvci4KLSAgICBpZiAoY3VycmVudFNjaGVtYSAhPSB2MUluZGV4
UmVjb3Jkc1RhYmxlU2NoZW1hKCkgJiYgY3VycmVudFNjaGVtYSAhPSB2MUluZGV4UmVjb3Jkc1Rh
YmxlU2NoZW1hQWx0ZXJuYXRlKCkpCisgICAgaWYgKGN1cnJlbnRTY2hlbWEgIT0gdjFJbmRleFJl
Y29yZHNUYWJsZVNjaGVtYSgpICYmIGN1cnJlbnRTY2hlbWEgIT0gdjFJbmRleFJlY29yZHNUYWJs
ZVNjaGVtYUFsdGVybmF0ZSgpCisgICAgICAgICYmIGN1cnJlbnRTY2hlbWEgIT0gdjJJbmRleFJl
Y29yZHNUYWJsZVNjaGVtYSgpICYmIGN1cnJlbnRTY2hlbWEgIT0gdjJJbmRleFJlY29yZHNUYWJs
ZVNjaGVtYUFsdGVybmF0ZSgpKQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogCiAgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRlREIpOwogICAg
IHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKICAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgdGFibGUg
d2l0aCB0aGUgY29ycmVjdCBzY2hlbWEgYW5kIG1pZ3JhdGUgYWxsIGV4aXN0aW5nIGNvbnRlbnQg
b3Zlci4KLSAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKHYySW5kZXhSZWNvcmRz
VGFibGVTY2hlbWEoIl9UZW1wX0luZGV4UmVjb3JkcyIpKSkgeworICAgIGlmICghbV9zcWxpdGVE
Qi0+ZXhlY3V0ZUNvbW1hbmQodjNJbmRleFJlY29yZHNUYWJsZVNjaGVtYSgiX1RlbXBfSW5kZXhS
ZWNvcmRzIikpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSB0ZW1wb3Jh
cnkgaW5kZXggcmVjb3JkcyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX3NxbGl0ZURC
LT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgi
SU5TRVJUIElOVE8gX1RlbXBfSW5kZXhSZWNvcmRzIFNFTEVDVCAqIEZST00gSW5kZXhSZWNvcmRz
IikpIHsKKyAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKCJJTlNFUlQgSU5UTyBf
VGVtcF9JbmRleFJlY29yZHMgU0VMRUNUIEluZGV4UmVjb3Jkcy5pbmRleElELCBJbmRleFJlY29y
ZHMub2JqZWN0U3RvcmVJRCwgSW5kZXhSZWNvcmRzLmtleSwgSW5kZXhSZWNvcmRzLnZhbHVlLCBS
ZWNvcmRzLnJvd2lkIEZST00gSW5kZXhSZWNvcmRzIElOTkVSIEpPSU4gUmVjb3JkcyBPTiBSZWNv
cmRzLmtleSA9IEluZGV4UmVjb3Jkcy52YWx1ZSBBTkQgUmVjb3Jkcy5vYmplY3RTdG9yZUlEID0g
SW5kZXhSZWNvcmRzLm9iamVjdFN0b3JlSUQiKSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxk
IG5vdCBtaWdyYXRlIGV4aXN0aW5nIEluZGV4UmVjb3JkcyBjb250ZW50ICglaSkgLSAlcyIsIG1f
c3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC00ODQsNiArNTA4LDUwIEBAIGJvb2wgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZEluZGV4UmVjb3Jkc1RhYmxlKCkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkSW5k
ZXhSZWNvcmRzSW5kZXgoKQoreworICAgIEFTU0VSVChtX3NxbGl0ZURCKTsKKyAgICBBU1NFUlQo
bV9zcWxpdGVEQi0+aXNPcGVuKCkpOworCisgICAgU3RyaW5nIGN1cnJlbnRTY2hlbWE7CisgICAg
eworICAgICAgICAvLyBGZXRjaCB0aGUgc2NoZW1hIGZvciBhbiBleGlzdGluZyBpbmRleCByZWNv
cmQgaW5kZXguCisgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQoKm1fc3FsaXRlREIs
ICJTRUxFQ1Qgc3FsIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSBuYW1lPSdJbmRleFJlY29yZHNJ
bmRleCciKTsKKyAgICAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7
CisgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBwcmVwYXJlIHN0YXRlbWVudCB0byBm
ZXRjaCBzY2hlbWEgZm9yIHRoZSBJbmRleFJlY29yZHNJbmRleCBpbmRleC4iKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBzcWxpdGVSZXN1bHQg
PSBzdGF0ZW1lbnQuc3RlcCgpOworCisgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIEluZGV4UmVj
b3Jkc0luZGV4IGluZGV4IGF0IGFsbCwgY3JlYXRlIGl0IGFuZCB0aGVuIGJhaWwuCisgICAgICAg
IGlmIChzcWxpdGVSZXN1bHQgPT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgICAgIGlmICghbV9z
cWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQodjFJbmRleFJlY29yZHNJbmRleFNjaGVtYSgpKSkgewor
ICAgICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBJbmRleFJlY29yZHNJ
bmRleCBpbmRleCBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3Io
KSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoc3FsaXRlUmVzdWx0ICE9IFNRTElURV9ST1cpIHsKKyAgICAgICAg
ICAgIExPR19FUlJPUigiRXJyb3IgZXhlY3V0aW5nIHN0YXRlbWVudCB0byBmZXRjaCBzY2hlbWEg
Zm9yIHRoZSBJbmRleFJlY29yZHNJbmRleCBpbmRleC4iKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGN1cnJlbnRTY2hlbWEgPSBzdGF0ZW1lbnQuZ2V0
Q29sdW1uVGV4dCgwKTsKKyAgICB9CisKKyAgICBBU1NFUlQoIWN1cnJlbnRTY2hlbWEuaXNFbXB0
eSgpKTsKKworICAgIC8vIElmIHRoZSBzY2hlbWEgaW4gdGhlIGJhY2tpbmcgc3RvcmUgaXMgdGhl
IGN1cnJlbnQgc2NoZW1hLCB3ZSdyZSBkb25lLgorICAgIGlmIChjdXJyZW50U2NoZW1hID09IHYx
SW5kZXhSZWNvcmRzSW5kZXhTY2hlbWEoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAv
LyBUaGVyZSBpcyBjdXJyZW50bHkgbm8gb3V0ZGF0ZWQgc2NoZW1hIGZvciB0aGUgSW5kZXhSZWNv
cmRzSW5kZXgsIHNvIGFueSBvdGhlciBleGlzdGluZyBzY2hlbWEgbWVhbnMgdGhpcyBkYXRhYmFz
ZSBpcyBpbnZhbGlkLgorICAgIHJldHVybiBmYWxzZTsKK30KKwogc3RkOjp1bmlxdWVfcHRyPElE
QkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVBbmRQb3B1bGF0ZUlu
aXRpYWxEYXRhYmFzZUluZm8oKQogewogICAgIEFTU0VSVChtX3NxbGl0ZURCKTsKQEAgLTc0NCw2
ICs4MTIsMTIgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlz
aERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8KICAgICAgICAgcmV0dXJuIHsgSURC
RGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJFcnJvciBjcmVh
dGluZyBvciBtaWdyYXRpbmcgSW5kZXggUmVjb3JkcyB0YWJsZSBpbiBkYXRhYmFzZSIpIH07CiAg
ICAgfQogCisgICAgaWYgKCFlbnN1cmVWYWxpZEluZGV4UmVjb3Jkc0luZGV4KCkpIHsKKyAgICAg
ICAgTE9HX0VSUk9SKCJFcnJvciBjcmVhdGluZyBvciBtaWdyYXRpbmcgSW5kZXggUmVjb3JkcyBp
bmRleCBpbiBkYXRhYmFzZSIpOworICAgICAgICBjbG9zZVNRTGl0ZURCKCk7CisgICAgICAgIHJl
dHVybiB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
RXJyb3IgY3JlYXRpbmcgb3IgbWlncmF0aW5nIEluZGV4IFJlY29yZHMgaW5kZXggaW4gZGF0YWJh
c2UiKSB9OworICAgIH0KKwogICAgIGlmICghZW5zdXJlVmFsaWRCbG9iVGFibGVzKCkpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJFcnJvciBjcmVhdGluZyBvciBjb25maXJtaW5nIEJsb2IgUmVjb3Jk
cyB0YWJsZXMgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgY2xvc2VTUUxpdGVEQigpOwpAQCAtMTEw
Nyw3ICsxMTgxLDkgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRl
eChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAgYXV0byogdmFs
dWUgPSBjdXJzb3ItPmN1cnJlbnRWYWx1ZSgpOwogICAgICAgICBUaHJlYWRTYWZlRGF0YUJ1ZmZl
ciB2YWx1ZUJ1ZmZlciA9IHZhbHVlID8gdmFsdWUtPmRhdGEoKSA6IFRocmVhZFNhZmVEYXRhQnVm
ZmVyKCk7CiAKLSAgICAgICAgSURCRXJyb3IgZXJyb3IgPSB1cGRhdGVPbmVJbmRleEZvckFkZFJl
Y29yZChpbmZvLCBrZXksIHZhbHVlQnVmZmVyKTsKKyAgICAgICAgQVNTRVJUKGN1cnNvci0+Y3Vy
cmVudFJlY29yZFJvd0lEKCkpOworCisgICAgICAgIElEQkVycm9yIGVycm9yID0gdXBkYXRlT25l
SW5kZXhGb3JBZGRSZWNvcmQoaW5mbywga2V5LCB2YWx1ZUJ1ZmZlciwgY3Vyc29yLT5jdXJyZW50
UmVjb3JkUm93SUQoKSk7CiAgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKICAgICAgICAg
ICAgIGF1dG8qIHNxbCA9IGNhY2hlZFN0YXRlbWVudChTUUw6OkRlbGV0ZUluZGV4SW5mbywgQVND
SUlMaXRlcmFsKCJERUxFVEUgRlJPTSBJbmRleEluZm8gV0hFUkUgaWQgPSA/IEFORCBvYmplY3RT
dG9yZUlEID0gPzsiKSk7CiAgICAgICAgICAgICBpZiAoIXNxbApAQCAtMTE2Nyw3ICsxMjQzLDcg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29y
ZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KICAgICByZXR1cm4geyB9OwogfQogCi1JREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4S2V5KGNvbnN0IElEQklu
ZGV4SW5mbyYgaW5mbywgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJbmRleEtleSYgaW5k
ZXhLZXkpCitJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4
S2V5KGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbywgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25z
dCBJbmRleEtleSYgaW5kZXhLZXksIGludDY0X3QgcmVjb3JkSUQpCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhLZXkgLSAoJSIg
UFJJdTY0ICIpICVzLCAlcyIsIGluZm8uaWRlbnRpZmllcigpLCBrZXkubG9nZ2luZ1N0cmluZygp
LnV0ZjgoKS5kYXRhKCksIGluZGV4S2V5LmFzT25lS2V5KCkubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogCkBAIC0xMTk0LDcgKzEyNzAsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4S2V5KGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbywg
YwogICAgIGZvciAoYXV0byYgaW5kZXhLZXkgOiBpbmRleEtleXMpIHsKICAgICAgICAgaWYgKCFp
bmRleEtleS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYXV0byBl
cnJvciA9IHVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKGluZm8ub2JqZWN0U3RvcmVJZGVudGlmaWVy
KCksIGluZm8uaWRlbnRpZmllcigpLCBrZXksIGluZGV4S2V5KTsKKyAgICAgICAgYXV0byBlcnJv
ciA9IHVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKGluZm8ub2JqZWN0U3RvcmVJZGVudGlmaWVyKCks
IGluZm8uaWRlbnRpZmllcigpLCBrZXksIGluZGV4S2V5LCByZWNvcmRJRCk7CiAgICAgICAgIGlm
ICghZXJyb3IuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHB1
dCBpbmRleCByZWNvcmQgZm9yIG5ld2x5IGNyZWF0ZWQgaW5kZXgiKTsKICAgICAgICAgICAgIHJl
dHVybiBlcnJvcjsKQEAgLTEyMDQsNyArMTI4MCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhLZXkoY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvLCBj
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1
bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5k
ZXhJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYga2V5VmFsdWUsIGNvbnN0IFdlYkNvcmU6
OklEQktleURhdGEmIGluZGV4S2V5KQorSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1
bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5k
ZXhJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYga2V5VmFsdWUsIGNvbnN0IFdlYkNvcmU6
OklEQktleURhdGEmIGluZGV4S2V5LCBpbnQ2NF90IHJlY29yZElEKQogewogICAgIExPRyhJbmRl
eGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkIC0g
JXMsICVzIiwga2V5VmFsdWUubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGluZGV4S2V5
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIApAQCAtMTIyMSwxMiArMTI5NywxMyBA
QCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3Jk
KGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogICAgIH0KIAogICAgIHsKLSAgICAgICAgYXV0byog
c3FsID0gY2FjaGVkU3RhdGVtZW50KFNRTDo6UHV0SW5kZXhSZWNvcmQsIEFTQ0lJTGl0ZXJhbCgi
SU5TRVJUIElOVE8gSW5kZXhSZWNvcmRzIFZBTFVFUyAoPywgPywgQ0FTVCg/IEFTIFRFWFQpLCBD
QVNUKD8gQVMgVEVYVCkpOyIpKTsKKyAgICAgICAgYXV0byogc3FsID0gY2FjaGVkU3RhdGVtZW50
KFNRTDo6UHV0SW5kZXhSZWNvcmQsIEFTQ0lJTGl0ZXJhbCgiSU5TRVJUIElOVE8gSW5kZXhSZWNv
cmRzIFZBTFVFUyAoPywgPywgQ0FTVCg/IEFTIFRFWFQpLCBDQVNUKD8gQVMgVEVYVCksID8pOyIp
KTsKICAgICAgICAgaWYgKCFzcWwKICAgICAgICAgICAgIHx8IHNxbC0+YmluZEludDY0KDEsIGlu
ZGV4SUQpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQoMiwgb2Jq
ZWN0U3RvcmVJRCkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDMs
IGluZGV4S2V5QnVmZmVyLT5kYXRhKCksIGluZGV4S2V5QnVmZmVyLT5zaXplKCkpICE9IFNRTElU
RV9PSwogICAgICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYig0LCB2YWx1ZUJ1ZmZlci0+ZGF0YSgp
LCB2YWx1ZUJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC0+
YmluZEludDY0KDUsIHJlY29yZElEKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC0+
c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5v
dCBwdXQgaW5kZXggcmVjb3JkIGZvciBpbmRleCAlIiBQUklpNjQgIiBpbiBvYmplY3Qgc3RvcmUg
JSIgUFJJaTY0ICIgaW4gUmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBpbmRleElELCBvYmplY3RT
dG9yZUlELCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNn
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25F
cnJvciwgQVNDSUlMaXRlcmFsKCJFcnJvciBwdXR0aW5nIGluZGV4IHJlY29yZCBpbnRvIGRhdGFi
YXNlIikgfTsKQEAgLTE1NjMsNyArMTY0MCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6ZGVsZXRlUmFuZ2UoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAg
ICAgcmV0dXJuIGVycm9yOwogfQogCi1JREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVw
ZGF0ZU9uZUluZGV4Rm9yQWRkUmVjb3JkKGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbywgY29uc3Qg
SURCS2V5RGF0YSYga2V5LCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWUpCitJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVwZGF0ZU9uZUluZGV4Rm9yQWRkUmVjb3JkKGNv
bnN0IElEQkluZGV4SW5mbyYgaW5mbywgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBUaHJl
YWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWUsIGludDY0X3QgcmVjb3JkSUQpCiB7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2tlcih2bSgpKTsKIApAQCAtMTU3NywxMCArMTY1NCwxMCBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OnVwZGF0ZU9uZUluZGV4Rm9yQWRkUmVjb3JkKGNvbnN0IElE
QkluZGV4SW5mbyYgaQogICAgIGlmIChpbmRleEtleS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
IHsgfTsKIAotICAgIHJldHVybiB1bmNoZWNrZWRQdXRJbmRleEtleShpbmZvLCBrZXksIGluZGV4
S2V5KTsKKyAgICByZXR1cm4gdW5jaGVja2VkUHV0SW5kZXhLZXkoaW5mbywga2V5LCBpbmRleEtl
eSwgcmVjb3JkSUQpOwogfQogCi1JREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVwZGF0
ZUFsbEluZGV4ZXNGb3JBZGRSZWNvcmQoY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvLCBj
b25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZSkK
K0lEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dXBkYXRlQWxsSW5kZXhlc0ZvckFkZFJl
Y29yZChjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8sIGNvbnN0IElEQktleURhdGEmIGtl
eSwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlLCBpbnQ2NF90IHJlY29yZElEKQog
ewogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0oKSk7CiAKQEAgLTE1OTcsNyArMTY3NCw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dXBkYXRlQWxsSW5kZXhlc0ZvckFkZFJl
Y29yZChjb25zdCBJREJPYmplY3RTdG9yCiAgICAgICAgIGlmIChpbmRleEtleS5pc051bGwoKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGVycm9yID0gdW5jaGVja2VkUHV0SW5k
ZXhLZXkoaW5kZXgsIGtleSwgaW5kZXhLZXkpOworICAgICAgICBlcnJvciA9IHVuY2hlY2tlZFB1
dEluZGV4S2V5KGluZGV4LCBrZXksIGluZGV4S2V5LCByZWNvcmRJRCk7CiAgICAgICAgIGlmICgh
ZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgICAgICBicmVhazsKIApAQCAtMTY2MSw3ICsxNzM4LDcg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICAgICAgcmVjb3JkSUQgPSBtX3NxbGl0ZURC
LT5sYXN0SW5zZXJ0Um93SUQoKTsKICAgICB9CiAKLSAgICBhdXRvIGVycm9yID0gdXBkYXRlQWxs
SW5kZXhlc0ZvckFkZFJlY29yZChvYmplY3RTdG9yZUluZm8sIGtleURhdGEsIHZhbHVlLmRhdGEo
KSk7CisgICAgYXV0byBlcnJvciA9IHVwZGF0ZUFsbEluZGV4ZXNGb3JBZGRSZWNvcmQob2JqZWN0
U3RvcmVJbmZvLCBrZXlEYXRhLCB2YWx1ZS5kYXRhKCksIHJlY29yZElEKTsKIAogICAgIGlmICgh
ZXJyb3IuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byogc3FsID0gY2FjaGVkU3RhdGVtZW50KFNR
TDo6RGVsZXRlT2JqZWN0U3RvcmVSZWNvcmQsIEFTQ0lJTGl0ZXJhbCgiREVMRVRFIEZST00gUmVj
b3JkcyBXSEVSRSBvYmplY3RTdG9yZUlEID0gPyBBTkQga2V5ID0gQ0FTVCg/IEFTIFRFWFQpOyIp
KTsKQEAgLTIxMTIsNiArMjE4OSw5IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Z2V0SW5kZXhSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuCiAgICAgICAg
IHJldHVybiB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJh
bCgiQXR0ZW1wdCB0byBnZXQgYW4gaW5kZXggcmVjb3JkIGZyb20gZGF0YWJhc2Ugd2l0aG91dCBh
biBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpIH07CiAgICAgfQogCisgICAgaWYgKHJhbmdlLmlz
RXhhY3RseU9uZUtleSgpKQorICAgICAgICByZXR1cm4gdW5jaGVja2VkR2V0SW5kZXhSZWNvcmRG
b3JPbmVLZXkoaW5kZXhJRCwgb2JqZWN0U3RvcmVJRCwgdHlwZSwgcmFuZ2UubG93ZXJLZXksIGdl
dFJlc3VsdCk7CisKICAgICBhdXRvIGN1cnNvciA9IHRyYW5zYWN0aW9uLT5tYXliZU9wZW5CYWNr
aW5nU3RvcmVDdXJzb3Iob2JqZWN0U3RvcmVJRCwgaW5kZXhJRCwgcmFuZ2UpOwogICAgIGlmICgh
Y3Vyc29yKSB7CiAgICAgICAgIExPR19FUlJPUigiQ2Fubm90IG9wZW4gY3Vyc29yIHRvIHBlcmZv
cm0gaW5kZXggZ2V0IGluIGRhdGFiYXNlIik7CkBAIC0yMTM1LDYgKzIyMTUsNjUgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRJbmRleFJlY29yZChjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW4KICAgICByZXR1cm4geyB9OwogfQogCitJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGludDY0X3Qg
aW5kZXhJRCwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlw
ZSB0eXBlLCBjb25zdCBJREJLZXlEYXRhJiBrZXksIElEQkdldFJlc3VsdCYgZ2V0UmVzdWx0KQor
eworICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdl
dEluZGV4UmVjb3JkRm9yT25lS2V5Iik7CisKKyAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSAmJiBr
ZXkudHlwZSgpICE9IEtleVR5cGU6Ok1heCAmJiBrZXkudHlwZSgpICE9IEtleVR5cGU6Ok1pbik7
CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleSk7CisgICAgaWYgKCFidWZmZXIpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
c2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQiKTsKKyAgICAgICAg
cmV0dXJuIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFs
KCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQi
KSB9OworICAgIH0KKworICAgIGF1dG8qIHNxbCA9IGNhY2hlZFN0YXRlbWVudChTUUw6OkdldElu
ZGV4UmVjb3JkRm9yT25lS2V5LCBBU0NJSUxpdGVyYWwoIlNFTEVDVCBJbmRleFJlY29yZHMudmFs
dWUsIFJlY29yZHMudmFsdWUsIFJlY29yZHMucmVjb3JkSUQgRlJPTSBSZWNvcmRzIElOTkVSIEpP
SU4gSW5kZXhSZWNvcmRzIE9OIFJlY29yZHMucmVjb3JkSUQgPSBJbmRleFJlY29yZHMub2JqZWN0
U3RvcmVSZWNvcmRJRCBXSEVSRSBJbmRleFJlY29yZHMuaW5kZXhJRCA9ID8gQU5EIEluZGV4UmVj
b3Jkcy5vYmplY3RTdG9yZUlEID0gPyBBTkQgSW5kZXhSZWNvcmRzLmtleSA9IENBU1QoPyBBUyBU
RVhUKSBPUkRFUiBCWSBJbmRleFJlY29yZHMua2V5LCBJbmRleFJlY29yZHMudmFsdWUiKSk7CisK
KyAgICBpZiAoIXNxbAorICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgxLCBpbmRleElEKSAhPSBT
UUxJVEVfT0sKKyAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQoMiwgb2JqZWN0U3RvcmVJRCkgIT0g
U1FMSVRFX09LCisgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoMywgYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gbG9va3VwIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSIpOworICAgICAgICByZXR1cm4geyBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0
byBsb29rdXAgaW5kZXggcmVjb3JkIGluIGRhdGFiYXNlIikgfTsKKyAgICB9CisKKyAgICBpbnQg
cmVzdWx0ID0gc3FsLT5zdGVwKCk7CisgICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfUk9XICYmIHJl
c3VsdCAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBsb29r
dXAgaW5kZXggcmVjb3JkIGluIGRhdGFiYXNlIik7CisgICAgICAgIHJldHVybiB7IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGxvb2t1
cCBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiKSB9OworICAgIH0KKworICAgIGlmIChyZXN1bHQg
PT0gU1FMSVRFX0RPTkUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBJREJLZXlEYXRhIG9i
amVjdFN0b3JlS2V5OworICAgIFZlY3Rvcjx1aW50OF90PiBrZXlWZWN0b3I7CisgICAgc3FsLT5n
ZXRDb2x1bW5CbG9iQXNWZWN0b3IoMCwga2V5VmVjdG9yKTsKKworICAgIGlmICghZGVzZXJpYWxp
emVJREJLZXlEYXRhKGtleVZlY3Rvci5kYXRhKCksIGtleVZlY3Rvci5zaXplKCksIG9iamVjdFN0
b3JlS2V5KSkgeworICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBrZXkg
bG9va2luZyB1cCBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiKTsKKyAgICAgICAgcmV0dXJuIHsg
SURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJVbmFibGUg
dG8gZGVzZXJpYWxpemUga2V5IGxvb2tpbmcgdXAgaW5kZXggcmVjb3JkIGluIGRhdGFiYXNlIikg
fTsKKyAgICB9CisKKyAgICBpZiAodHlwZSA9PSBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZTo6
S2V5KSB7CisgICAgICAgIGdldFJlc3VsdCA9IHsgb2JqZWN0U3RvcmVLZXkgfTsKKyAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBzcWwtPmdldENvbHVtbkJsb2JBc1ZlY3RvcigxLCBr
ZXlWZWN0b3IpOworCisgICAgaW50NjRfdCByZWNvcmRJRCA9IHNxbC0+Z2V0Q29sdW1uSW50NjQo
Mik7CisgICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHM7CisgICAgYXV0
byBlcnJvciA9IGdldEJsb2JSZWNvcmRzRm9yT2JqZWN0U3RvcmVSZWNvcmQocmVjb3JkSUQsIGJs
b2JVUkxzLCBibG9iRmlsZVBhdGhzKTsKKyAgICBBU1NFUlQoYmxvYlVSTHMuc2l6ZSgpID09IGJs
b2JGaWxlUGF0aHMuc2l6ZSgpKTsKKworICAgIGlmICghZXJyb3IuaXNOdWxsKCkpCisgICAgICAg
IHJldHVybiBlcnJvcjsKKworICAgIGdldFJlc3VsdCA9IHsgeyBUaHJlYWRTYWZlRGF0YUJ1ZmZl
cjo6YWRvcHRWZWN0b3Ioa2V5VmVjdG9yKSwgV1RGTW92ZShibG9iVVJMcyksIFdURk1vdmUoYmxv
YkZpbGVQYXRocykgfSwgb2JqZWN0U3RvcmVLZXkgfTsKKyAgICByZXR1cm4geyB9OworfQorCiBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRh
JiByYW5nZSwgdWludDY0X3QmIG91dENvdW50KQogewogICAgIExPRyhJbmRleGVkREIsICJTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50IC0gb2JqZWN0IHN0b3JlICUiIFBSSXU2NCwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAppbmRleCAy
MTExZDk1NDQ5YzFkNDRmNzY1MmFhYTY1MGJiMzJkOTBmMmE5NjcxLi4wMmU2OTg3OTFjYWVjZTM3
NTEyZDRiMDAwNTMzZjg2YmNmMjk1MjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5o
CkBAIC05OCw2ICs5OCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGVuc3VyZVZhbGlkUmVjb3Jk
c1RhYmxlKCk7CiAgICAgYm9vbCBlbnN1cmVWYWxpZEluZGV4UmVjb3Jkc1RhYmxlKCk7CisgICAg
Ym9vbCBlbnN1cmVWYWxpZEluZGV4UmVjb3Jkc0luZGV4KCk7CiAgICAgYm9vbCBlbnN1cmVWYWxp
ZEJsb2JUYWJsZXMoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBjcmVh
dGVBbmRQb3B1bGF0ZUluaXRpYWxEYXRhYmFzZUluZm8oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SURCRGF0YWJhc2VJbmZvPiBleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUluZm8oKTsKQEAgLTEwNiwx
MSArMTA3LDEyIEBAIHByaXZhdGU6CiAgICAgSURCRXJyb3IgdW5jaGVja2VkR2V0S2V5R2VuZXJh
dG9yVmFsdWUoaW50NjRfdCBvYmplY3RTdG9yZUlELCB1aW50NjRfdCYgb3V0VmFsdWUpOwogICAg
IElEQkVycm9yIHVuY2hlY2tlZFNldEtleUdlbmVyYXRvclZhbHVlKGludDY0X3Qgb2JqZWN0U3Rv
cmVJRCwgdWludDY0X3QgdmFsdWUpOwogCi0gICAgSURCRXJyb3IgdXBkYXRlQWxsSW5kZXhlc0Zv
ckFkZFJlY29yZChjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBjb25zdCBJREJLZXlEYXRhJiwg
Y29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlKTsKLSAgICBJREJFcnJvciB1cGRhdGVP
bmVJbmRleEZvckFkZFJlY29yZChjb25zdCBJREJJbmRleEluZm8mLCBjb25zdCBJREJLZXlEYXRh
JiwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlKTsKLSAgICBJREJFcnJvciB1bmNo
ZWNrZWRQdXRJbmRleEtleShjb25zdCBJREJJbmRleEluZm8mLCBjb25zdCBJREJLZXlEYXRhJiBr
ZXlWYWx1ZSwgY29uc3QgSW5kZXhLZXkmKTsKLSAgICBJREJFcnJvciB1bmNoZWNrZWRQdXRJbmRl
eFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5kZXhJRCwgY29uc3QgSURC
S2V5RGF0YSYga2V5VmFsdWUsIGNvbnN0IElEQktleURhdGEmIGluZGV4S2V5KTsKKyAgICBJREJF
cnJvciB1cGRhdGVBbGxJbmRleGVzRm9yQWRkUmVjb3JkKGNvbnN0IElEQk9iamVjdFN0b3JlSW5m
byYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWUs
IGludDY0X3QgcmVjb3JkSUQpOworICAgIElEQkVycm9yIHVwZGF0ZU9uZUluZGV4Rm9yQWRkUmVj
b3JkKGNvbnN0IElEQkluZGV4SW5mbyYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBUaHJlYWRT
YWZlRGF0YUJ1ZmZlciYgdmFsdWUsIGludDY0X3QgcmVjb3JkSUQpOworICAgIElEQkVycm9yIHVu
Y2hlY2tlZFB1dEluZGV4S2V5KGNvbnN0IElEQkluZGV4SW5mbyYsIGNvbnN0IElEQktleURhdGEm
IGtleVZhbHVlLCBjb25zdCBJbmRleEtleSYsIGludDY0X3QgcmVjb3JkSUQpOworICAgIElEQkVy
cm9yIHVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRf
dCBpbmRleElELCBjb25zdCBJREJLZXlEYXRhJiBrZXlWYWx1ZSwgY29uc3QgSURCS2V5RGF0YSYg
aW5kZXhLZXksIGludDY0X3QgcmVjb3JkSUQpOwogICAgIElEQkVycm9yIHVuY2hlY2tlZEhhc0lu
ZGV4UmVjb3JkKGNvbnN0IElEQkluZGV4SW5mbyYsIGNvbnN0IElEQktleURhdGEmLCBib29sJiBo
YXNSZWNvcmQpOworICAgIElEQkVycm9yIHVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5
KGludDY0X3QgaW5kZXhlSUQsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgSW5kZXhlZERCOjpJbmRl
eFJlY29yZFR5cGUsIGNvbnN0IElEQktleURhdGEmLCBJREJHZXRSZXN1bHQmKTsKIAogICAgIElE
QkVycm9yIGRlbGV0ZVVudXNlZEJsb2JGaWxlUmVjb3JkcyhTUUxpdGVJREJUcmFuc2FjdGlvbiYp
OwogCkBAIC0xMzUsNiArMTM3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRGVsZXRlSW5kZXhJbmZv
LAogICAgICAgICBIYXNJbmRleFJlY29yZCwKICAgICAgICAgUHV0SW5kZXhSZWNvcmQsCisgICAg
ICAgIEdldEluZGV4UmVjb3JkRm9yT25lS2V5LAogICAgICAgICBEZWxldGVJbmRleFJlY29yZHMs
CiAgICAgICAgIFJlbmFtZUluZGV4LAogICAgICAgICBLZXlFeGlzdHNJbk9iamVjdFN0b3JlLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQ3Vyc29yLmNwcAppbmRleCBlZjc1OTY1NDg2ZWI4NzRlZmE4MjJkNDFhN2ZkNWE1
MDZkM2IxYmZkLi45NWM4OWU4Y2MxZGMxYjhlYzkwNWExMzRjMzJjNmIwOGZhNWM4MWU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
Q3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQ3Vyc29yLmNwcApAQCAtMzQzLDYgKzM0MywxMyBAQCBib29sIFNRTGl0ZUlEQkN1
cnNvcjo6YWR2YW5jZU9uY2UoKQogICAgIHJldHVybiByZXN1bHQgPT0gQWR2YW5jZVJlc3VsdDo6
U3VjY2VzczsKIH0KIAordm9pZCBTUUxpdGVJREJDdXJzb3I6Om1hcmtBc0Vycm9yZWQoKQorewor
ICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKKyAgICBtX2Vycm9yZWQgPSB0cnVlOworICAgIG1fY3Vy
cmVudFJlY29yZFJvd0lEID0gMDsKK30KKwogU1FMaXRlSURCQ3Vyc29yOjpBZHZhbmNlUmVzdWx0
IFNRTGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxBZHZhbmNlT25jZSgpCiB7CiAgICAgQVNTRVJUKG1f
dHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCkpOwpAQCAtMzU5LDQyICszNjYsNDAgQEAg
U1FMaXRlSURCQ3Vyc29yOjpBZHZhbmNlUmVzdWx0IFNRTGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxB
ZHZhbmNlT25jZSgpCiAgICAgICAgIG1fY3VycmVudEtleSA9IElEQktleURhdGEoKTsKICAgICAg
ICAgbV9jdXJyZW50UHJpbWFyeUtleSA9IElEQktleURhdGEoKTsKICAgICAgICAgbV9jdXJyZW50
VmFsdWUgPSBudWxscHRyOworICAgICAgICBtX2N1cnJlbnRSZWNvcmRSb3dJRCA9IDA7CiAKICAg
ICAgICAgcmV0dXJuIEFkdmFuY2VSZXN1bHQ6OlN1Y2Nlc3M7CiAgICAgfQogCiAgICAgaWYgKHJl
c3VsdCAhPSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIExPR19FUlJPUigiRXJyb3IgYWR2YW5jaW5n
IGN1cnNvciAtICglaSkgJXMiLCByZXN1bHQsIG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0
aW9uKCktPmRhdGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBtX2NvbXBsZXRlZCA9
IHRydWU7Ci0gICAgICAgIG1fZXJyb3JlZCA9IHRydWU7CisgICAgICAgIG1hcmtBc0Vycm9yZWQo
KTsKICAgICAgICAgcmV0dXJuIEFkdmFuY2VSZXN1bHQ6OkZhaWx1cmU7CiAgICAgfQogCisgICAg
bV9jdXJyZW50UmVjb3JkUm93SUQgPSBtX3N0YXRlbWVudC0+Z2V0Q29sdW1uSW50NjQoMCk7Cisg
ICAgQVNTRVJUKG1fY3VycmVudFJlY29yZFJvd0lEKTsKKwogICAgIFZlY3Rvcjx1aW50OF90PiBr
ZXlEYXRhOwogICAgIG1fc3RhdGVtZW50LT5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMSwga2V5RGF0
YSk7CiAKICAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhLmRhdGEoKSwga2V5
RGF0YS5zaXplKCksIG1fY3VycmVudEtleSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gZGVzZXJpYWxpemUga2V5IGRhdGEgZnJvbSBkYXRhYmFzZSB3aGlsZSBhZHZhbmNpbmcgY3Vy
c29yIik7Ci0gICAgICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKLSAgICAgICAgbV9lcnJvcmVkID0g
dHJ1ZTsKKyAgICAgICAgbWFya0FzRXJyb3JlZCgpOwogICAgICAgICByZXR1cm4gQWR2YW5jZVJl
c3VsdDo6RmFpbHVyZTsKICAgICB9CiAKICAgICBtX3N0YXRlbWVudC0+Z2V0Q29sdW1uQmxvYkFz
VmVjdG9yKDIsIGtleURhdGEpOwogCi0gICAgaW50NjRfdCByZWNvcmRJRCA9IG1fc3RhdGVtZW50
LT5nZXRDb2x1bW5JbnQ2NCgwKTsKLSAgICBBU1NFUlQocmVjb3JkSUQpOwotCiAgICAgLy8gVGhl
IHByaW1hcnlLZXkgb2YgYW4gT2JqZWN0U3RvcmUgY3Vyc29yIGlzIHRoZSBzYW1lIGFzIGl0cyBr
ZXkuCiAgICAgaWYgKG1faW5kZXhJRCA9PSBJREJJbmRleEluZm86OkludmFsaWRJZCkgewogICAg
ICAgICBtX2N1cnJlbnRQcmltYXJ5S2V5ID0gbV9jdXJyZW50S2V5OwogCiAgICAgICAgIFZlY3Rv
cjxTdHJpbmc+IGJsb2JVUkxzLCBibG9iRmlsZVBhdGhzOwotICAgICAgICBhdXRvIGVycm9yID0g
bV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlKCkuZ2V0QmxvYlJlY29yZHNGb3JPYmplY3RTdG9y
ZVJlY29yZChyZWNvcmRJRCwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMpOworICAgICAgICBhdXRv
IGVycm9yID0gbV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlKCkuZ2V0QmxvYlJlY29yZHNGb3JP
YmplY3RTdG9yZVJlY29yZChtX2N1cnJlbnRSZWNvcmRSb3dJRCwgYmxvYlVSTHMsIGJsb2JGaWxl
UGF0aHMpOwogICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBmZXRjaCBibG9iIHJlY29yZHMgZnJvbSBkYXRhYmFzZSB3aGlsZSBh
ZHZhbmNpbmcgY3Vyc29yIik7Ci0gICAgICAgICAgICBtX2NvbXBsZXRlZCA9IHRydWU7Ci0gICAg
ICAgICAgICBtX2Vycm9yZWQgPSB0cnVlOworICAgICAgICAgICAgbWFya0FzRXJyb3JlZCgpOwog
ICAgICAgICAgICAgcmV0dXJuIEFkdmFuY2VSZXN1bHQ6OkZhaWx1cmU7CiAgICAgICAgIH0KIApA
QCAtNDAzLDggKzQwOCw3IEBAIFNRTGl0ZUlEQkN1cnNvcjo6QWR2YW5jZVJlc3VsdCBTUUxpdGVJ
REJDdXJzb3I6OmludGVybmFsQWR2YW5jZU9uY2UoKQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
ICghZGVzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEuZGF0YSgpLCBrZXlEYXRhLnNpemUoKSwg
bV9jdXJyZW50UHJpbWFyeUtleSkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRv
IGRlc2VyaWFsaXplIHZhbHVlIGRhdGEgZnJvbSBkYXRhYmFzZSB3aGlsZSBhZHZhbmNpbmcgaW5k
ZXggY3Vyc29yIik7Ci0gICAgICAgICAgICBtX2NvbXBsZXRlZCA9IHRydWU7Ci0gICAgICAgICAg
ICBtX2Vycm9yZWQgPSB0cnVlOworICAgICAgICAgICAgbWFya0FzRXJyb3JlZCgpOwogICAgICAg
ICAgICAgcmV0dXJuIEFkdmFuY2VSZXN1bHQ6OkZhaWx1cmU7CiAgICAgICAgIH0KIApAQCAtNDE0
LDggKzQxOCw3IEBAIFNRTGl0ZUlEQkN1cnNvcjo6QWR2YW5jZVJlc3VsdCBTUUxpdGVJREJDdXJz
b3I6OmludGVybmFsQWR2YW5jZU9uY2UoKQogICAgICAgICAgICAgfHwgb2JqZWN0U3RvcmVTdGF0
ZW1lbnQuYmluZEJsb2IoMSwga2V5RGF0YS5kYXRhKCksIGtleURhdGEuc2l6ZSgpKSAhPSBTUUxJ
VEVfT0sKICAgICAgICAgICAgIHx8IG9iamVjdFN0b3JlU3RhdGVtZW50LmJpbmRJbnQ2NCgyLCBt
X29iamVjdFN0b3JlSUQpICE9IFNRTElURV9PSykgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJD
b3VsZCBub3QgY3JlYXRlIGluZGV4IGN1cnNvciBzdGF0ZW1lbnQgaW50byBvYmplY3Qgc3RvcmUg
cmVjb3JkcyAoJWkpICclcyciLCBtX3N0YXRlbWVudC0+ZGF0YWJhc2UoKS5sYXN0RXJyb3IoKSwg
bV9zdGF0ZW1lbnQtPmRhdGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwotICAgICAgICAgICAgbV9j
b21wbGV0ZWQgPSB0cnVlOwotICAgICAgICAgICAgbV9lcnJvcmVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgIG1hcmtBc0Vycm9yZWQoKTsKICAgICAgICAgICAgIHJldHVybiBBZHZhbmNlUmVzdWx0OjpG
YWlsdXJlOwogICAgICAgICB9CiAKQEAgLTQzMCw4ICs0MzMsNyBAQCBTUUxpdGVJREJDdXJzb3I6
OkFkdmFuY2VSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEFkdmFuY2VPbmNlKCkKICAg
ICAgICAgICAgIHJldHVybiBBZHZhbmNlUmVzdWx0OjpTaG91bGRBZHZhbmNlQWdhaW47CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBzdGVwIGluZGV4
IGN1cnNvciBzdGF0ZW1lbnQgaW50byBvYmplY3Qgc3RvcmUgcmVjb3JkcyAoJWkpICclcyciLCBt
X3N0YXRlbWVudC0+ZGF0YWJhc2UoKS5sYXN0RXJyb3IoKSwgbV9zdGF0ZW1lbnQtPmRhdGFiYXNl
KCkubGFzdEVycm9yTXNnKCkpOwotICAgICAgICAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwotICAg
ICAgICAgICAgbV9lcnJvcmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIG1hcmtBc0Vycm9yZWQoKTsK
ICAgICAgICAgICAgIHJldHVybiBBZHZhbmNlUmVzdWx0OjpGYWlsdXJlOwogCiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJDdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJDdXJzb3IuaAppbmRleCAwNDNkZTRkNWY5NzE0ZmI4MWUzNDA4MjM0YzgwM2NmYzNk
YzQ2NGY5Li42YzU2YTk1Yzc3OWE4OGFhYzZjYzA3M2EwNDhjZGMyY2UyNjkxMmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vy
c29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkN1cnNvci5oCkBAIC01OSw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICBTUUxpdGVJREJUcmFu
c2FjdGlvbiogdHJhbnNhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3RyYW5zYWN0aW9uOyB9CiAK
ICAgICBpbnQ2NF90IG9iamVjdFN0b3JlSUQoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFN0b3Jl
SUQ7IH0KKyAgICBpbnQ2NF90IGN1cnJlbnRSZWNvcmRSb3dJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VycmVudFJlY29yZFJvd0lEOyB9CiAKICAgICBjb25zdCBJREJLZXlEYXRhJiBjdXJyZW50S2V5
KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50S2V5OyB9CiAgICAgY29uc3QgSURCS2V5RGF0YSYg
Y3VycmVudFByaW1hcnlLZXkoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRQcmltYXJ5S2V5OyB9
CkBAIC04MSw2ICs4Miw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlc2V0QW5kUmViaW5kU3Rh
dGVtZW50KCk7CiAKKyAgICB2b2lkIG1hcmtBc0Vycm9yZWQoKTsKKwogICAgIGVudW0gY2xhc3Mg
QWR2YW5jZVJlc3VsdCB7CiAgICAgICAgIFN1Y2Nlc3MsCiAgICAgICAgIEZhaWx1cmUsCkBAIC0x
MTQsNiArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZXJyb3JlZCB7IGZhbHNlIH07CiAK
ICAgICBib29sIG1fYmFja2luZ1N0b3JlQ3Vyc29yIHsgZmFsc2UgfTsKKyAgICBpbnQ2NF90IG1f
Y3VycmVudFJlY29yZFJvd0lEIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVy
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWE4
OTQ5M2VlYzM2NGYyMGE2MzVmYTU2OTFhYTRjYWM2MDRhYWM4Ni4uNTc0NzdhYWVhMmU3NmU2NTk1
ZGRjNGIwYWMyZmU4NzI2M2M4ZmRkZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE2LTEyLTE0ICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBJbmRleGVkREIgMi4wOiBNYXNzaXZl
bHkgc3BlZWR1cCBJREJJbmRleC5nZXQoKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NTgwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
Q29jb2EvSURCSW5kZXhVcGdyYWRlVG9WMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9JREJJbmRleFVwZ3JhZGVUb1YyLm1tOiBBZGRlZC4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9JbmRleFVwZ3JhZGUu
YmxvYjogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2Ev
SW5kZXhVcGdyYWRlLnNxbGl0ZTM6IEFkZGVkLgorCiAyMDE2LTEyLTEyICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1dlYklETF0gUmVtb3ZlIHVzZSBvZiBEaWN0aW9u
YXJ5IGluIEFwcGxlUGF5U2Vzc2lvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1MDc3NzRk
ZmE2MzU4NjFjODAyYmFiMTYwYTI0ZDNiYTdjZjdjZDcxLi4wMTZhYTY5NGY5NDlhMjM4MTAyODIw
ZTUyNzRiYTBkMzEyM2M0MmQyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE5LDYgKzEx
OSwxMCBAQAogCQk1MTA0Nzc3NDFEMjk4REREMDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3Zlcnku
c3FsaXRlMy13YWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTEwNDc3NzExRDI5OEQ4NTAwOTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5LnNx
bGl0ZTMtd2FsICovOyB9OwogCQk1MTA0Nzc3NzFEMjk4RTcyMDA5NzQ3RUIgLyogSURCRGVsZXRl
UmVjb3ZlcnkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTA0Nzc3NjFEMjk4RTU3MDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3Zlcnku
aHRtbCAqLzsgfTsKIAkJNTEwNDc3NzgxRDI5OTIzQjAwOTc0N0VCIC8qIElEQkRlbGV0ZVJlY292
ZXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEw
NDc3NzUxRDI5OEUwMzAwOTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5Lm1tICovOyB9OworCQk1
MTEwRkNGMTFFMDFDRDY0MDA2RjhEMEIgLyogSURCSW5kZXhVcGdyYWRlVG9WMi5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTBGQ0Yw
MUUwMUNENTMwMDZGOEQwQiAvKiBJREJJbmRleFVwZ3JhZGVUb1YyLmh0bWwgKi87IH07CisJCTUx
MTBGQ0Y2MUUwMUNEODMwMDZGOEQwQiAvKiBJbmRleFVwZ3JhZGUuc3FsaXRlMyBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTEwRkNGMzFFMDFD
RDc3MDA2RjhEMEIgLyogSW5kZXhVcGdyYWRlLnNxbGl0ZTMgKi87IH07CisJCTUxMTBGQ0Y5MUUw
MUNEOEEwMDZGOEQwQiAvKiBJbmRleFVwZ3JhZGUuYmxvYiBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTEwRkNGMjFFMDFDRDc3MDA2RjhEMEIg
LyogSW5kZXhVcGdyYWRlLmJsb2IgKi87IH07CisJCTUxMTBGQ0ZBMUUwMUNEQjgwMDZGOEQwQiAv
KiBJREJJbmRleFVwZ3JhZGVUb1YyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTExMEZDRUYxRTAxQ0JBQTAwNkY4RDBCIC8qIElEQkluZGV4VXBncmFk
ZVRvVjIubW0gKi87IH07CiAJCTUxMzkzRTIyMTUyMzk1MkQwMDVGMzlDNSAvKiBET01XaW5kb3dF
eHRlbnNpb25CYXNpY19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEzOTNFMUQxNTIzOTQ0QTAwNUYzOUM1IC8qIERPTVdpbmRvd0V4dGVu
c2lvbkJhc2ljX0J1bmRsZS5jcHAgKi87IH07CiAJCTUxNDJCMjczMTUxN0M4QzgwMEMzMkIxOSAv
KiBDb250ZXh0TWVudUNhbkNvcHlVUkwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQyQjI3MjE1MTdDODkxMDBDMzJCMTkgLyogQ29u
dGV4dE1lbnVDYW5Db3B5VVJMLmh0bWwgKi87IH07CiAJCTUxNUJFMTZGMUQ0MjhCQjEwMEREN0M2
OCAvKiBTdG9yZUJsb2JUb0JlRGVsZXRlZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMTZFMUQ0Mjg4RkYwMEREN0M2OCAvKiBT
dG9yZUJsb2JUb0JlRGVsZXRlZC5odG1sICovOyB9OwpAQCAtNTg4LDYgKzU5Miw5IEBACiAJCQlk
c3RQYXRoID0gVGVzdFdlYktpdEFQSS5yZXNvdXJjZXM7CiAJCQlkc3RTdWJmb2xkZXJTcGVjID0g
NzsKIAkJCWZpbGVzID0gKAorCQkJCTUxMTBGQ0Y5MUUwMUNEOEEwMDZGOEQwQiAvKiBJbmRleFVw
Z3JhZGUuYmxvYiBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQk1MTEwRkNGNjFFMDFDRDgzMDA2
RjhEMEIgLyogSW5kZXhVcGdyYWRlLnNxbGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJ
NTExMEZDRjExRTAxQ0Q2NDAwNkY4RDBCIC8qIElEQkluZGV4VXBncmFkZVRvVjIuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKIAkJCQk1QzlFNTY4NzFERjkxNEFFMDBDOUVFMzMgLyogY29udGVu
dEJsb2NrZXJDaGVjay5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTA3NDkyQjNDMURG
OEI4NjYwMDYzM0RFMSAvKiBlbnVtZXJhdGVNZWRpYURldmljZXMuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQk5QjI3MEZFRTFEREMyQzBCMDAyRDUzRjMgLyogY2xvc2VkLXNoYWRvdy10
cmVlLXRlc3QuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTkxNyw2ICs5MjQsMTAgQEAK
IAkJNTEwNDc3NzExRDI5OEQ4NTAwOTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5LnNxbGl0ZTMt
d2FsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmls
ZTsgcGF0aCA9ICJJREJEZWxldGVSZWNvdmVyeS5zcWxpdGUzLXdhbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxMDQ3Nzc1MUQyOThFMDMwMDk3NDdFQiAvKiBJREJEZWxldGVSZWNv
dmVyeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IElEQkRlbGV0
ZVJlY292ZXJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTA0Nzc3NjFEMjk4
RTU3MDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3ZlcnkuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9IElEQkRlbGV0ZVJlY292ZXJ5Lmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUxMTBGQ0VGMUUwMUNCQUEwMDZGOEQwQiAvKiBJREJJbmRleFVwZ3JhZGVUb1YyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSURCSW5kZXhVcGdyYWRl
VG9WMi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTExMEZDRjAxRTAxQ0Q1MzAw
NkY4RDBCIC8qIElEQkluZGV4VXBncmFkZVRvVjIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9IElEQkluZGV4VXBncmFkZVRvVjIuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTExMEZDRjIxRTAxQ0Q3NzAwNkY4RDBCIC8qIEluZGV4VXBncmFkZS5ibG9iICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IEluZGV4VXBncmFkZS5ibG9iOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MTEwRkNGMzFFMDFDRDc3MDA2RjhEMEIgLyogSW5kZXhVcGdyYWRlLnNxbGl0
ZTMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxl
OyBwYXRoID0gSW5kZXhVcGdyYWRlLnNxbGl0ZTM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxMzkzRTFEMTUyMzk0NEEwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpY19C
dW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93
RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTEzOTNFMUUxNTIzOTQ0QTAwNUYzOUM1IC8qIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lvbkJh
c2ljLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0MkIyNzAxNTE3Qzg4QjAw
QzMyQjE5IC8qIENvbnRleHRNZW51Q2FuQ29weVVSTC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IENvbnRleHRNZW51Q2FuQ29weVVSTC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NTEsNiArMTQ2Miw3IEBACiAJCQkJM0YxQjUyNjgxRDNENzEy
OTAwOEQ2MEM0IC8qIEZ1bGxzY3JlZW5MYXlvdXRDb25zdHJhaW50cy5tbSAqLywKIAkJCQlDREUx
OTVCMzFDRkUwQURFMDA1M0QyNTYgLyogRnVsbHNjcmVlblRvcENvbnRlbnRJbnNldC5tbSAqLywK
IAkJCQk1MTA0Nzc3NTFEMjk4RTAzMDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3ZlcnkubW0gKi8s
CisJCQkJNTExMEZDRUYxRTAxQ0JBQTAwNkY4RDBCIC8qIElEQkluZGV4VXBncmFkZVRvVjIubW0g
Ki8sCiAJCQkJNTFBNTg3ODQxRDI3MkVGMzAwNEJBOUFGIC8qIEluZGV4ZWREQkRhdGFiYXNlUHJv
Y2Vzc0tpbGwubW0gKi8sCiAJCQkJNTFCQ0VFNDkxQzg0RjRBRjAwNDJDODJFIC8qIEluZGV4ZWRE
Qk11bHRpUHJvY2Vzcy5tbSAqLywKIAkJCQk1MUIxRUU4RDFDODBGNTg4MDA2NEZCOTggLyogSW5k
ZXhlZERCUGVyc2lzdGVuY2UubW0gKi8sCkBAIC0xNjE4LDYgKzE2MzAsOSBAQAogCQkJCTUxMDQ3
NzZGMUQyOThEODUwMDk3NDdFQiAvKiBJREJEZWxldGVSZWNvdmVyeS5zcWxpdGUzICovLAogCQkJ
CTUxMDQ3NzcwMUQyOThEODUwMDk3NDdFQiAvKiBJREJEZWxldGVSZWNvdmVyeS5zcWxpdGUzLXNo
bSAqLywKIAkJCQk1MTA0Nzc3MTFEMjk4RDg1MDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3Zlcnku
c3FsaXRlMy13YWwgKi8sCisJCQkJNTExMEZDRjAxRTAxQ0Q1MzAwNkY4RDBCIC8qIElEQkluZGV4
VXBncmFkZVRvVjIuaHRtbCAqLywKKwkJCQk1MTEwRkNGMjFFMDFDRDc3MDA2RjhEMEIgLyogSW5k
ZXhVcGdyYWRlLmJsb2IgKi8sCisJCQkJNTExMEZDRjMxRTAxQ0Q3NzAwNkY4RDBCIC8qIEluZGV4
VXBncmFkZS5zcWxpdGUzICovLAogCQkJCTUxQTU4NzgyMUQyNzJFQjUwMDRCQTlBRiAvKiBJbmRl
eGVkREJEYXRhYmFzZVByb2Nlc3NLaWxsLTEuaHRtbCAqLywKIAkJCQk1MUJDRUU0QzFDODRGNTJD
MDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTEuaHRtbCAqLywKIAkJCQk1MUJDRUU0
RDFDODRGNTJDMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLTIuaHRtbCAqLywKQEAg
LTI2NTEsNiArMjY2Niw3IEBACiAJCQkJN0NDRTdGMjExQTQxMUFFNjAwNDQ3QzRDIC8qIFdLUHJl
ZmVyZW5jZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQjUxRDBBNjQ5MzAwRkVCQ0Yz
IC8qIFdLUmV0YWluUHRyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlDNjREQzMyMUQ3NjE5OEEw
MDRCNTk4RSAvKiBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTExMEZDRkExRTAxQ0RCODAwNkY4RDBCIC8qIElEQkluZGV4VXBncmFkZVRvVjIubW0gaW4g
U291cmNlcyAqLywKIAkJCQk1RTRCMUQyRTFENDA0QzYxMDAwNTM2MjEgLyogV0tTY3JvbGxWaWV3
RGVsZWdhdGVDcmFzaC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjIyMUE0MTFBRTYwMDQ0
N0M0QyAvKiBXS1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YxRTFBNDExQUU2
MDA0NDdDNEMgLyogV0tTdHJpbmdKU1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0lEQkluZGV4VXBncmFk
ZVRvVjIuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0lEQklu
ZGV4VXBncmFkZVRvVjIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTNiYmQ4NTIyMDE2ZTI5MGQwNzVjMWNk
YThhZGNiMjc1NTc5ZjJkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyQ29jb2EvSURCSW5kZXhVcGdyYWRlVG9WMi5odG1sCkBAIC0wLDAgKzEsMjEg
QEAKKzxzY3JpcHQ+CisKK3ZhciBkYXRhYmFzZU5hbWUgPSAiaW5kZXgtdXBncmFkZS10ZXN0IjsK
K3ZhciBvcGVuUmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRhdGFiYXNlTmFtZSk7Cit2YXIgZGI7
CitvcGVuUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgIHdp
bmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdVbmV4
cGVjdGVkIHVwZ3JhZGUgbmVlZGVkJyk7Cit9CisKK29wZW5SZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgdmFyIHJlcSA9IGV2ZW50LnRhcmdldC5yZXN1bHQudHJhbnNh
Y3Rpb24oJ3N0b3JlJykub2JqZWN0U3RvcmUoJ3N0b3JlJykuaW5kZXgoJ2luZGV4JykuZ2V0KCJp
bmRleGtleSEiKTsKKyAgICAKKyAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7
CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RN
ZXNzYWdlKCJPYmplY3QgZXhwZWN0ZWQgdG8gYmUgYSBibG9iOiAiICsgIGV2ZW50LnRhcmdldC5y
ZXN1bHQudGVzdCk7CisgICAgfQorICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKGV2ZW50KSB7
CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RN
ZXNzYWdlKCJVbmV4cGVjdGVkIGdldCBlcnJvciIpOworICAgIH0KK30KKworPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9JREJJbmRl
eFVwZ3JhZGVUb1YyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2Ev
SURCSW5kZXhVcGdyYWRlVG9WMi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNmM0NzlkNzU1ZTU1OGFmODg0ZjJh
NTFkYTEzNDE0N2E4NzYxYzAwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyQ29jb2EvSURCSW5kZXhVcGdyYWRlVG9WMi5tbQpAQCAtMCwwICsxLDg1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNz
UG9vbFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1VzZXJDb250ZW50Q29udHJvbGxlclBy
aXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5o
PgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJTdHlsZVNoZWV0Lmg+
CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCitzdGF0
aWMgYm9vbCByZWNlaXZlZFNjcmlwdE1lc3NhZ2U7CitzdGF0aWMgUmV0YWluUHRyPFdLU2NyaXB0
TWVzc2FnZT4gbGFzdFNjcmlwdE1lc3NhZ2U7CisKK0BpbnRlcmZhY2UgSURCSW5kZXhVcGdyYWRl
VG9WMk1lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CitA
ZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBJREJJbmRleFVwZ3JhZGVUb1YyTWVzc2FnZUhhbmRsZXIK
KworLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVy
ICopdXNlckNvbnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1Njcmlw
dE1lc3NhZ2UgKiltZXNzYWdlCit7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gdHJ1ZTsK
KyAgICBsYXN0U2NyaXB0TWVzc2FnZSA9IG1lc3NhZ2U7Cit9CisKK0BlbmQKKworVEVTVChJbmRl
eGVkREIsIEluZGV4VXBncmFkZVRvVjIpCit7CisgICAgUmV0YWluUHRyPElEQkluZGV4VXBncmFk
ZVRvVjJNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tJREJJbmRleFVwZ3JhZGVU
b1YyTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVz
dEhhbmRsZXIiXTsKKworICAgIFtjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sIF90ZXJt
aW5hdGVEYXRhYmFzZVByb2Nlc3NdOworCisgICAgLy8gQ29weSB0aGUgaW5jb25zaXN0ZW50IGRh
dGFiYXNlIGZpbGVzIHRvIHRoZSBkYXRhYmFzZSBkaXJlY3RvcnkKKyAgICBOU1VSTCAqdXJsMSA9
IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJJbmRleFVwZ3JhZGUiIHdp
dGhFeHRlbnNpb246QCJzcWxpdGUzIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291
cmNlcyJdOworICAgIE5TVVJMICp1cmwyID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAIkluZGV4VXBncmFkZSIgd2l0aEV4dGVuc2lvbjpAImJsb2IiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBOU1VSTCAqdGFyZ2V0VVJMID0g
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L1Rlc3RXZWJLaXRBUEkv
V2Vic2l0ZURhdGEvSW5kZXhlZERCL2ZpbGVfXzAvaW5kZXgtdXBncmFkZS10ZXN0IiBzdHJpbmdC
eUV4cGFuZGluZ1RpbGRlSW5QYXRoXV07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSByZW1vdmVJdGVtQXRVUkw6dGFyZ2V0VVJMIGVycm9yOm5pbF07CisgICAgW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp0YXJnZXRVUkwgd2l0
aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOwor
CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb3B5SXRlbUF0VVJMOnVybDEg
dG9VUkw6W3RhcmdldFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJbmRleGVkREIu
c3FsaXRlMyJdIGVycm9yOm5pbF07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBjb3B5SXRlbUF0VVJMOnVybDIgdG9VUkw6W3RhcmdldFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCIxLmJsb2IiXSBlcnJvcjpuaWxdOworCisgICAgUmV0YWluUHRyPFdLV2ViVmll
dz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7CisKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJJREJJbmRleFVw
Z3JhZGVUb1YyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXMiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJPYmplY3QgZXhwZWN0ZWQgdG8gYmUgYSBibG9iOiBbb2Jq
ZWN0IEJsb2JdIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9JbmRleFVwZ3Jh
ZGUuYmxvYiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0luZGV4VXBn
cmFkZS5ibG9iCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjNTFmYjExNWY3MWU1NzRmM2VjOTI4M2MyZDNkZDA2ZDhl
NTZlMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJDb2NvYS9JbmRleFVwZ3JhZGUuYmxvYgpAQCAtMCwwICsxIEBACitmdW4gdGltZXMgYWxsIGFy
b3VuZCEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9JbmRleFVwZ3JhZGUuc3FsaXRlMyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0luZGV4VXBncmFkZS5zcWxpdGUzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJjM2I2Mzg4OGYyNDVlMzBiZDBmYjgzNjE5MmVjNzFjZjVjMzMzNzMKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDY1NTM2CnpjbWVJKiV9PzhBOTAlfntpOS0/dCE1UXJxUlk8RiY0
bllQUHF8aD58cTdfSjVTJWlkISg2dU0oa2NUZDlhQTt5Vwp6STgxR197dDNKOC1nfVIkZFozcnly
bWNyd184Jn19d283fHhyfHEkd3FfSWFKTU8hUTI4fWFmeXdqY1pYZWYtI3UKejk+MmlpPHdSYSpA
QGxjUHJ0MHotMkBzY3lUIyNpI2g+TCMqXzs+dnlAYFNzZDtsRjg5eD5lRmVCN2QjPntVSVdHCnox
NFIwPz1jI3wmQU1VMnp6ankhOCkhVmYjUElvQCp7TGFfdTRTMFdTd0YqcCEwMGJaYTBTTnM2MCtz
VlUtciZGaAp6dHhvN193IXI0dCkrTUh+bEJ5Uj1XbWBzP09+PEQqYVhCK1JsWmVaPFNAS3twZHl9
b2BpQFhxMVZ6UUZWIzRwOXUKemF4I15YbFNfJCZvSnp7R3NwUTNrR01rWXZQQWRze0RYQ211aXJj
MkE7fHEhRCs0ISkkdlFhOEFQM0skS2Rxdj8lCnokckdGKHBkXyM1Kms8ezVmJW9tcD5We3I0XlVK
bmNFPU8oSUt5fT5qNFcyd24/Xn1eOCN1XmxEd2IpNFgqZGxJQgp6bUl3Mj55PXlpc1l3OC00R3g0
azNwcTBiMHtGWlJUQC00UXRwejJAQUdsfHM5WlkkMjBtJGR4dDRjMU9nKkVSfXoKektDYkRkY0Vx
YS1vITtRazVXV0FVKjxleWxkIUZNdHZSeVZwJDRuZEtMUnkpaFBHNkpmO0A0Vi13TnR3PitFWktE
Cnp0cVpxbllCVmZHVFdPMF88ISNBbVA7REZ5O2kreTxAYlhack0oantxS0pBI2BwWHojPjshI0tP
P249YUc/JEdLNwp6PF89WTJHY2xFPylHey1WMjc2WXQ/Tkc8RUAqdFBvcXNpfkk3YUU4RDlrc3cp
P0MhQCpjdUwkWVR0fTZicW1CdWsKem01QzFYdSYrKjs7bSNDXypeQnVDRD5vN3pUWm9PeEA/ZSVQ
eHxCfXJRTk51NndBJHpALSVON3ZsUn5RJWdyaTxoCnpGbitSQ0dpZytHYEUoPWNpK2I4QzVeV1Vt
QC1EfGBiVVQlZyt9X30rUT95Y1VJSGxRMnY2TTVWWVJRZyZTPURDUAp6eGBjR2A+dm9Rcl9JJCV0
TEdUOXFge31vZSluMUxtdGhRRDJrZ0tLTHd5SEpIO3BkJXA1NiU2WnBzZn0lbkBTeyUKejR3RTsp
VH5CSm1hI09RIXdAfj1IaXpEPldpcjxXN2h4bW5Ce0kjeEROeWckPTw+dXYjLW5XKnc/Slhye19B
PXFoCnpCSn5GUWBlXmtWKTQ4XjI/VSYxQHlZcCg9KzJAVERNIVNMNndSWSlLT0oqfXxJYGNPNUVu
ej16K0VtZ0F8SDIwWAp6NVAkIyNBT0hhZkttWTt8ZkIqeV8wRD1FUnBkd0xeN14tIz5CM3RZRzt8
bVdAeGNGYExkcGF4WShqLXE5Kkx9X3oKektrfU4rTn01X1lIIT9DWkktIW9MPEt5RnokK0h0PGtA
M31SRTsxUk5JMXxaIW87IVBYWTstakBkUztCVG1hazx+CnpBNllNYGRGe2htanJyQjlkKigldklr
cHd4X3djT0B6dDlsK259MnYyS0t9b2NAR3BFSTAwOVU8MDBJenowMGJaYQp6MFNHXzwwdVZTWDB6
R2FxQikrLSlWQlA8SlBOZTZEQnx5WGgwU0dfPDB1WD16MVJ3d2IydFdWPTVJOGFkMUdHYUYKenIk
WGVxQHpRPnRYZTM3JSooQTY0Jm4qJmFkaT1sfHw4RW0lYF5lWkpQelhRKDB1WD16MVJ3d2IydFdW
PTVQLWt8Cno2Z1c9PkAkU0NnOEwtQ3hrQkljPjBFVWgjTGpWRjBmQip5XzAwOVU8MDBJenowMGZT
Snp6aH1jcDRqKXVLbCsoYgp6KU8hRV8zNlkqMDBXZ0ZKMFNHXzwwdVg9ejFSd3diMnRXVj01SURG
Mz1ZX2xDek9NcFU8TnBeI2RVMD84UDsmQEMKejAwSXp6MDBiWmEwU0dfPDB1WD16MWE9WS1nJWhI
NnxLRTgyLXp8TWxxK2d8eyhuRnJXMkxjZCkwMGJaYTBTR188CnowdVg9ejFSd3hgY1BudCpFa3ZZ
d2J1KlF7JHlXNDV5O3gjT0VQNn4zaE5QSVB0Njg8b3VDUCkkVSh9KUBtKFUtcgp6UGZWKDclPjAq
c2smWDJtQntqeikjeT1ONE10UWs7cm1IeiN3cURNLXxMPkxfNjZxSW57UXVqIzRHPiN7MDBiWmEK
ejBTR188MHVYPXoxUnd3YjJ0YzVQejtQaSRvZmllJSRBbHFUQU82P0lfQ2k0RFolaXtUM0FsUU5B
PD1PRyEyMGB0CnprQlJpUyNudnp4MHVYPXoxUnd3YjJ0V1Y9NVAkIyNBT0x+KUVPM0UoTmJydSZT
Mmk5RSRnVVVpV3Fvdz9DK2Y9Ugp6VGs5LTlkfGQmbmZ8Uy1PRG1XX0tZclgmZm5uPHI1YkM4N3Ex
Und3YjJ0V1Y9NVAkIyNBT0hhZks7VGRhMiFiZUQKejxOdWRMZFUrXjlMSiR5dTAwYlphMFNHXzww
dVg9ejFSd3diMilxJlMyfD58KFh1eHtAe3tmTDZ5cVNwPDFSd3diCnoydFdWPTVQJCMjQU9IYWZL
bVk+b044ayRlaTl4YVF2Q243elZaWnZie3kkVGY7NU1LM3pmI3NxZEZAN2tVTnNrKAp6Vl9RQ2Q/
fTxMRXd2RmZpSX49d0QjMld2PEJHTjB6OUFxSD8wU0dfPDB1WD16MVJ3d2IydFdWPTVJNzcxMHVA
OWIKai12MilneUFtLSMwMEl6ejAwYlphMFNHXzwwdVg9ejFYPkZpQEJqWTs7KTAhNQoKbGl0ZXJh
bCAwCkhjbVY/ZDAwMDAxCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>