<?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>193236</bug_id>
          
          <creation_ts>2019-01-08 08:06:31 -0800</creation_ts>
          <short_desc>Stop using NetworkStorageSession in WebProcess</short_desc>
          <delta_ts>2019-01-09 16:12:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1492597</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-08 08:06:31 -0800</bug_when>
    <thetext>Stop using NetworkStorageSession in WebProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492598</commentid>
    <comment_count>1</comment_count>
      <attachid>358591</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-08 08:07:45 -0800</bug_when>
    <thetext>Created attachment 358591
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492599</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-08 08:10:36 -0800</bug_when>
    <thetext>Attachment 358591 did not pass style-queue:


ERROR: Source/WebKitLegacy/mac/WebView/WebView.mm:3671:  The parameter name &quot;storageSession&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 12 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>1492609</commentid>
    <comment_count>3</comment_count>
      <attachid>358596</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-08 08:47:33 -0800</bug_when>
    <thetext>Created attachment 358596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492610</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-08 08:50:38 -0800</bug_when>
    <thetext>Attachment 358596 did not pass style-queue:


ERROR: Source/WebKitLegacy/mac/WebView/WebView.mm:3671:  The parameter name &quot;storageSession&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 15 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>1492619</commentid>
    <comment_count>5</comment_count>
      <attachid>358602</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-08 09:15:30 -0800</bug_when>
    <thetext>Created attachment 358602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492621</commentid>
    <comment_count>6</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2019-01-08 09:27:00 -0800</bug_when>
    <thetext>Any other ports require any work for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492622</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-08 09:27:54 -0800</bug_when>
    <thetext>(In reply to Don Olmstead from comment #6)
&gt; Any other ports require any work for this?
I believe I already did this work for them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492639</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-08 10:09:10 -0800</bug_when>
    <thetext>http://trac.webkit.org/r239727</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492642</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-08 10:10:42 -0800</bug_when>
    <thetext>&lt;rdar://problem/47118630&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492691</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-08 12:13:29 -0800</bug_when>
    <thetext>Rolled out in http://trac.webkit.org/r239735</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492692</commentid>
    <comment_count>11</comment_count>
      <attachid>358602</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-08 12:14:04 -0800</bug_when>
    <thetext>Comment on attachment 358602
Patch

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

&gt; Source/WebCore/loader/CookieJar.cpp:57
&gt; -    return context ? context-&gt;storageSession() : NetworkStorageSession::defaultStorageSession();
&gt; +    return context ? *context-&gt;storageSession() : NetworkStorageSession::defaultStorageSession();

This was causing crashes like this:

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   exc handler [54915]

VM Regions Near 0:
--&gt; 
    __TEXT                 0000000104339000-000000010433c000 [   12K] r-x/rwx SM=COW  /Users/USER/*/WebKit.framework/Versions/A/XPCServices/com.apple.WebKit.WebContent.xpc/Contents/MacOS/com.apple.WebKit.WebContent.Development

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebKit              	0x0000000230294cfc WebCore::NetworkStorageSession::sessionID() const + 12 (NetworkStorageSession.h:87)
1   com.apple.WebKit              	0x0000000230ee1d3b WebKit::WebPlatformStrategies::setCookiesFromDOM(WebCore::NetworkStorageSession const&amp;, WTF::URL const&amp;, WebCore::SameSiteInfo const&amp;, WTF::URL const&amp;, WTF::Optional&lt;unsigned long long&gt;, WTF::Optional&lt;unsigned long long&gt;, WTF::String const&amp;) + 91 (WebPlatformStrategies.cpp:122)
2   com.apple.WebKit              	0x0000000230ee1f4f non-virtual thunk to WebKit::WebPlatformStrategies::setCookiesFromDOM(WebCore::NetworkStorageSession const&amp;, WTF::URL const&amp;, WebCore::SameSiteInfo const&amp;, WTF::URL const&amp;, WTF::Optional&lt;unsigned long long&gt;, WTF::Optional&lt;unsigned long long&gt;, WTF::String const&amp;) + 95
3   com.apple.WebCore             	0x000000023a53227c WebCore::setCookies(WebCore::Document&amp;, WTF::URL const&amp;, WTF::String const&amp;) + 300 (CookieJar.cpp:112)
4   com.apple.WebCore             	0x0000000239c75365 WebCore::Document::setCookie(WTF::String const&amp;) + 405 (Document.cpp:4801)
5   com.apple.WebCore             	0x00000002382a21ce WebCore::setJSDocumentCookieSetter(JSC::ExecState&amp;, WebCore::JSDocument&amp;, JSC::JSValue, JSC::ThrowScope&amp;)::&apos;lambda&apos;()::operator()() const + 62 (JSDocument.cpp:1357)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492698</commentid>
    <comment_count>12</comment_count>
      <attachid>358623</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-08 12:39:29 -0800</bug_when>
    <thetext>Created attachment 358623
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492703</commentid>
    <comment_count>13</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-08 12:49:52 -0800</bug_when>
    <thetext>http://trac.webkit.org/r239737</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493151</commentid>
    <comment_count>14</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-09 16:12:40 -0800</bug_when>
    <thetext>This caused https://bugs.webkit.org/show_bug.cgi?id=193307</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358591</attachid>
            <date>2019-01-08 08:07:45 -0800</date>
            <delta_ts>2019-01-08 08:47:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193236-20190108080744.patch</filename>
            <type>text/plain</type>
            <size>29298</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzOTcyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE5LTAxLTA4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2lu
ZyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gaW4gV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMjM2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLiAgU29t
ZSBjb2RlIHdhcyBvbmx5IHVzZWQgZm9yIFJlc291cmNlSGFuZGxlLCB3aGljaCBpc24ndCB1c2Vk
IGluIG1vZGVybiBXZWJLaXQsCisgICAgICAgIGFuZCBmb3IgY29va2llcywgd2hpY2ggYXJlIGhh
bmRsZWQgaW4gdGhlIE5ldHdvcmtQcm9jZXNzIGluIG1vZGVybiBXZWJLaXQuCisKKyAgICAgICAg
KiBsb2FkZXIvQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0b3JhZ2VTZXNzaW9u
KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6Y3JlYXRlTlNVUkxDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cGxhdGZv
cm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKToKKwogMjAxOS0wMS0wOCAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1v
dmUgV2luZG93cy1zcGVjaWZpYyBjb2RlIGZyb20gTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQu
Y3BwIHRvIGl0cyBvd24gZmlsZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUph
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAJ
KHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBOZXR3b3JraW5nQ29udGV4
dCogbmV0d29ya2luZ0NvbnQKIGlubGluZSBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VT
ZXNzaW9uKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCA9IG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KTsKLSAgICByZXR1cm4gY29u
dGV4dCA/IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkgOiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOworICAgIHJldHVybiBjb250ZXh0ID8gKmNvbnRleHQt
PnN0b3JhZ2VTZXNzaW9uKCkgOiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpOwogfQogCiBzdGF0aWMgSW5jbHVkZVNlY3VyZUNvb2tpZXMgc2hvdWxkSW5jbHVk
ZVNlY3VyZUNvb2tpZXMoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShyZXZpc2lvbiAyMzk2
NzApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHByaXZhdGU6CiAgICAgRW1wdHlGcmFtZU5ldHdvcmtp
bmdDb250ZXh0KCk7CiAKICAgICBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7IH0KKyAgICBOZXR3b3JrU3RvcmFnZVNl
c3Npb24qIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gJk5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7IH0KIAogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIGJvb2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTdHJpbmcgc291cmNl
QXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQog
Ci0gICAgdmlydHVhbCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lv
bigpIGNvbnN0ID0gMDsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFsIFJlc291cmNl
RXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0ID0gMDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlSGFuZGxlTWFjLm1tCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTU3LDEyICsxNTcsMTIgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25u
ZWN0aQogICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBkLT5tX3Bhc3MuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNzE3NDA1MD4gLSBGb3IgVVJM
cyB0aGF0IG1hdGNoIHRoZSBwYXRocyBvZiB0aG9zZSBwcmV2aW91c2x5IGNoYWxsZW5nZWQgZm9y
IEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24sIAogICAgICAgICAgICAgLy8gdHJ5IGFuZCByZXVz
ZSB0aGUgY3JlZGVudGlhbCBwcmVlbXB0aXZlbHksIGFzIGFsbG93ZWQgYnkgUkZDIDI2MTcuCi0g
ICAgICAgICAgICBkLT5tX2luaXRpYWxDcmVkZW50aWFsID0gZC0+bV9jb250ZXh0LT5zdG9yYWdl
U2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuZ2V0KGZpcnN0UmVxdWVzdCgpLmNhY2hlUGFy
dGl0aW9uKCksIGZpcnN0UmVxdWVzdCgpLnVybCgpKTsKKyAgICAgICAgICAgIGQtPm1faW5pdGlh
bENyZWRlbnRpYWwgPSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxT
dG9yYWdlKCkuZ2V0KGZpcnN0UmVxdWVzdCgpLmNhY2hlUGFydGl0aW9uKCksIGZpcnN0UmVxdWVz
dCgpLnVybCgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlz
IGFscmVhZHkgYSBwcm90ZWN0aW9uIHNwYWNlIGtub3duIGZvciB0aGUgVVJMLCB1cGRhdGUgc3Rv
cmVkIGNyZWRlbnRpYWxzIGJlZm9yZSBzZW5kaW5nIGEgcmVxdWVzdC4KICAgICAgICAgICAgIC8v
IFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IGxvZ291dCBieSBzZW5kaW5nIGFu
IFhNTEh0dHBSZXF1ZXN0IHdpdGgga25vd24gaW5jb3JyZWN0IGNyZWRlbnRpYWxzLCBhbmQgYWJv
cnRpbmcgaXQgaW1tZWRpYXRlbHkKICAgICAgICAgICAgIC8vIChzbyB0aGF0IGFuIGF1dGhlbnRp
Y2F0aW9uIGRpYWxvZyBkb2Vzbid0IHBvcCB1cCkuCi0gICAgICAgICAgICBkLT5tX2NvbnRleHQt
PnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQoZmlyc3RSZXF1ZXN0KCku
Y2FjaGVQYXJ0aXRpb24oKSwgQ3JlZGVudGlhbChkLT5tX3VzZXIsIGQtPm1fcGFzcywgQ3JlZGVu
dGlhbFBlcnNpc3RlbmNlTm9uZSksIGZpcnN0UmVxdWVzdCgpLnVybCgpKTsKKyAgICAgICAgICAg
IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQo
Zmlyc3RSZXF1ZXN0KCkuY2FjaGVQYXJ0aXRpb24oKSwgQ3JlZGVudGlhbChkLT5tX3VzZXIsIGQt
Pm1fcGFzcywgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSksIGZpcnN0UmVxdWVzdCgpLnVybCgp
KTsKICAgICAgICAgfQogICAgIH0KICAgICAgICAgCkBAIC0yNDAsNyArMjQwLDcgQEAgYm9vbCBS
ZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogICAgIGlmICghZC0+bV9jb250ZXh0LT5pc1ZhbGlkKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGQtPm1fc3RvcmFnZVNlc3Npb24gPSBkLT5t
X2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7CisgICAgZC0+bV9z
dG9yYWdlU2Vzc2lvbiA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+cGxhdGZvcm1T
ZXNzaW9uKCk7CiAKICAgICAvLyBGSVhNRTogRG8gbm90IHVzZSB0aGUgc3luYyB2ZXJzaW9uIG9m
IHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlIHdoZW4gdGhlIGNsaWVudCByZXR1cm5zIHRydWUg
ZnJvbSB1c2VzQXN5bmNDYWxsYmFja3MuCiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZSA9ICFjbGllbnQoKSB8fCBjbGllbnQoKS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Uo
dGhpcyk7CkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1M
b2FkUmVzb3VyYwogICAgIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYgPSB0cnVlOwog
ICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFuZGxlID0gYWRvcHRSZWYobmV3IFJlc291cmNl
SGFuZGxlKGNvbnRleHQsIHJlcXVlc3QsICZjbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENv
bnRlbnRTbmlmZiwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpKTsKIAotICAgIGhhbmRsZS0+
ZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1T
ZXNzaW9uKCk7CisgICAgaGFuZGxlLT5kLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3Rv
cmFnZVNlc3Npb24oKS0+cGxhdGZvcm1TZXNzaW9uKCk7CiAKICAgICBpZiAoY29udGV4dCAmJiBo
YW5kbGUtPmQtPm1fc2NoZWR1bGVkRmFpbHVyZVR5cGUgIT0gTm9GYWlsdXJlKSB7CiAgICAgICAg
IGVycm9yID0gY29udGV4dC0+YmxvY2tlZEVycm9yKHJlcXVlc3QpOwpAQCAtNDQ5LDcgKzQ0OSw3
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICAgICAgLy8g
T25seSBjb25zaWRlciBhcHBseWluZyBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscyBpZiB0aGlz
IGlzIGFjdHVhbGx5IGEgcmVkaXJlY3QgYW5kIHRoZSByZWRpcmVjdAogICAgICAgICAvLyBVUkwg
ZGlkbid0IGluY2x1ZGUgY3JlZGVudGlhbHMgb2YgaXRzIG93bi4KICAgICAgICAgaWYgKGQtPm1f
dXNlci5pc0VtcHR5KCkgJiYgZC0+bV9wYXNzLmlzRW1wdHkoKSAmJiAhcmVkaXJlY3RSZXNwb25z
ZS5pc051bGwoKSkgewotICAgICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gZC0+bV9j
b250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuZ2V0KHJlcXVlc3Qu
Y2FjaGVQYXJ0aXRpb24oKSwgcmVxdWVzdC51cmwoKSk7CisgICAgICAgICAgICBDcmVkZW50aWFs
IGNyZWRlbnRpYWwgPSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxT
dG9yYWdlKCkuZ2V0KHJlcXVlc3QuY2FjaGVQYXJ0aXRpb24oKSwgcmVxdWVzdC51cmwoKSk7CiAg
ICAgICAgICAgICBpZiAoIWNyZWRlbnRpYWwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAg
ZC0+bV9pbml0aWFsQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWw7CiAgICAgICAgICAgICAgICAgCkBA
IC01NDAsMTYgKzU0MCwxNiBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29y
ZEJhCiAgICAgICAgICAgICAvLyBUaGUgc3RvcmVkIGNyZWRlbnRpYWwgd2Fzbid0IGFjY2VwdGVk
LCBzdG9wIHVzaW5nIGl0LgogICAgICAgICAgICAgLy8gVGhlcmUgaXMgYSByYWNlIGNvbmRpdGlv
biBoZXJlLCBzaW5jZSBhIGRpZmZlcmVudCBjcmVkZW50aWFsIG1pZ2h0IGhhdmUgYWxyZWFkeSBi
ZWVuIHN0b3JlZCBieSBhbm90aGVyIFJlc291cmNlSGFuZGxlLAogICAgICAgICAgICAgLy8gYnV0
IHRoZSBvYnNlcnZhYmxlIGVmZmVjdCBzaG91bGQgYmUgdmVyeSBtaW5vciwgaWYgYW55LgotICAg
ICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdl
KCkucmVtb3ZlKGQtPm1fcGFydGl0aW9uLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOwor
ICAgICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50aWFsU3Rv
cmFnZSgpLnJlbW92ZShkLT5tX3BhcnRpdGlvbiwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgp
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghY2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNv
dW50KCkpIHsKLSAgICAgICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IGQtPm1fY29udGV4
dC0+c3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLmdldChkLT5tX3BhcnRpdGlv
biwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKTsKKyAgICAgICAgICAgIENyZWRlbnRpYWwg
Y3JlZGVudGlhbCA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0
b3JhZ2UoKS5nZXQoZC0+bV9wYXJ0aXRpb24sIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSk7
CiAgICAgICAgICAgICBpZiAoIWNyZWRlbnRpYWwuaXNFbXB0eSgpICYmIGNyZWRlbnRpYWwgIT0g
ZC0+bV9pbml0aWFsQ3JlZGVudGlhbCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChjcmVkZW50
aWFsLnBlcnNpc3RlbmNlKCkgPT0gQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7CiAgICAgICAg
ICAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgp
ID09IDQwMSkgewogICAgICAgICAgICAgICAgICAgICAvLyBTdG9yZSB0aGUgY3JlZGVudGlhbCBi
YWNrLCBwb3NzaWJseSBhZGRpbmcgaXQgYXMgYSBkZWZhdWx0IGZvciB0aGlzIGRpcmVjdG9yeS4K
LSAgICAgICAgICAgICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNyZWRl
bnRpYWxTdG9yYWdlKCkuc2V0KGQtPm1fcGFydGl0aW9uLCBjcmVkZW50aWFsLCBjaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlKCksIGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVu
dGlhbFN0b3JhZ2UoKS5zZXQoZC0+bV9wYXJ0aXRpb24sIGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5w
cm90ZWN0aW9uU3BhY2UoKSwgY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgW2NoYWxsZW5nZS5zZW5kZXIoKSB1c2VD
cmVkZW50aWFsOmNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkgZm9yQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6bWFjKGNoYWxsZW5nZSldOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
NTkxLDcgKzU5MSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCgK
ICAgICAgICAgVVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJl
c3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCiAgICAgICAgICAgICB1cmxUb1N0b3Jl
ID0gY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwotICAgICAgICBkLT5tX2NvbnRl
eHQtPnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQoZC0+bV9wYXJ0aXRp
b24sIHdlYkNyZWRlbnRpYWwsIFByb3RlY3Rpb25TcGFjZShbZC0+bV9jdXJyZW50TWFjQ2hhbGxl
bmdlIHByb3RlY3Rpb25TcGFjZV0pLCB1cmxUb1N0b3JlKTsKKyAgICAgICAgZC0+bV9jb250ZXh0
LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChkLT5tX3BhcnRpdGlv
biwgd2ViQ3JlZGVudGlhbCwgUHJvdGVjdGlvblNwYWNlKFtkLT5tX2N1cnJlbnRNYWNDaGFsbGVu
Z2UgcHJvdGVjdGlvblNwYWNlXSksIHVybFRvU3RvcmUpOwogICAgICAgICBbW2QtPm1fY3VycmVu
dE1hY0NoYWxsZW5nZSBzZW5kZXJdIHVzZUNyZWRlbnRpYWw6d2ViQ3JlZGVudGlhbC5uc0NyZWRl
bnRpYWwoKSBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpkLT5tX2N1cnJlbnRNYWNDaGFsbGVu
Z2VdOwogICAgIH0gZWxzZQogICAgICAgICBbW2QtPm1fY3VycmVudE1hY0NoYWxsZW5nZSBzZW5k
ZXJdIHVzZUNyZWRlbnRpYWw6Y3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSBmb3JBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTpkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2VdOwpJbmRleDogU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzOTcyNCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMzkgQEAKKzIwMTktMDEtMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBTdG9wIHVzaW5nIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiBpbiBXZWJQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTMyMzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAg
ICAgICAqIFNoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZVBvbGljaWVzRGF0YTo6YXBwbHlUb0RvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp0cnlUYWtlUHJld2FybWVkUHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2ViUHJvY2Vz
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNp
dGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVz
aW5nV2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpw
cm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVX
ZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnNldFNlc3Npb25JRCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRlc3Ryb3lTZXNzaW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMTktMDEtMDggIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBPcHRp
b25zR1RLLmNtYWtlIGFuZCBORVdTIGZvciAyLjIzLjIgcmVsZWFzZQpJbmRleDogU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJ
KHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw2IEBAIHZvaWQg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKICAgICBlbmNvZGVyIDw8IHNob3Vs
ZENhcHR1cmVWaWRlb0luVUlQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxkQ2FwdHVyZURp
c3BsYXlJblVJUHJvY2VzczsKICNlbmRpZgotICAgIGVuY29kZXIgPDwgc2hvdWxkVXNlVGVzdGlu
Z05ldHdvcmtTZXNzaW9uOwogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0Vt
cHR5RG9jdW1lbnQ7CiAgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzU2VjdXJl
OwogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRT
ZWN1cml0eVBvbGljeTsKQEAgLTI2Nyw4ICsyNjYsNiBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnM6OmRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNo
b3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAj
ZW5kaWYKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGlu
Z05ldHdvcmtTZXNzaW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzRW1wdHlEb2N1bWVudCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc1NlY3VyZSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAy
Mzk2NzApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNiBAQCBzdHJ1Y3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBkb3VibGUgZGVmYXVsdFJlcXVlc3RUaW1lb3V0
SW50ZXJ2YWwgeyBJTlRfTUFYIH07CiAKLSAgICBib29sIHNob3VsZFVzZVRlc3RpbmdOZXR3b3Jr
U2Vzc2lvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRBbHdheXNVc2VDb21wbGV4VGV4dENv
ZGVQYXRoIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZEVuYWJsZU1lbW9yeVByZXNzdXJlUmVs
aWVmTG9nZ2luZyB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRTdXBwcmVzc01lbW9yeVByZXNz
dXJlSGFuZGxlciB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
UG9saWNpZXNEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJz
aXRlUG9saWNpZXNEYXRhLmNwcAkocmV2aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSwxMSAr
MTYxLDggQEAgdm9pZCBXZWJzaXRlUG9saWNpZXNEYXRhOjphcHBseVRvRG9jdW1lbgogCiAgICAg
aWYgKHdlYnNpdGVQb2xpY2llcy53ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycykgewogICAgICAg
ICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudExvYWRlci5mcmFtZSgpKSB7Ci0gICAgICAgICAg
ICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRv
IHNlc3Npb25JRCA9IHdlYnNpdGVQb2xpY2llcy53ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy0+
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRDsKLSAgICAgICAgICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5hZGRXZWJzaXRlRGF0YVN0b3JlKFdURk1vdmUoKndlYnNpdGVQ
b2xpY2llcy53ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycykpOwotICAgICAgICAgICAgICAgIHBh
Z2UtPnNldFNlc3Npb25JRChzZXNzaW9uSUQpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQorICAgICAgICAgICAgICAgIHBhZ2UtPnNl
dFNlc3Npb25JRCh3ZWJzaXRlUG9saWNpZXMud2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMtPm5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQpOwogICAgICAgICB9CiAgICAgfQogfQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNp
b24gMjM5NjcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02ODksMTAgKzY4OSw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnNldEFueVBhZ2VHcm91cE1pZ2gKIHsKICAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkg
ewogICAgICAgICBzZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmxlZ2Fj
eVByaXZhdGVTZXNzaW9uUGFyYW1ldGVycygpKSk7Ci0gICAgICAgIHNlbmRUb0FsbFByb2Nlc3Nl
cyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVyczo6bGVnYWN5UHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKCkpKTsKICAgICB9
IGVsc2UgewogICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5yZW1vdmVTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwotICAgICAgICBzZW5kVG9BbGxQcm9j
ZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklE
OjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpKTsKICAgICB9CiB9CiAKQEAgLTc2NSw4ICs3NjMs
NiBAQCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6CiAKICAgICBBU1NF
UlQobV9wcmV3YXJtZWRQcm9jZXNzLT5pc1ByZXdhcm1lZCgpKTsKICAgICBtX3ByZXdhcm1lZFBy
b2Nlc3MtPm1hcmtJc05vTG9uZ2VySW5QcmV3YXJtZWRQb29sKCk7Ci0gICAgaWYgKCZtX3ByZXdh
cm1lZFByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmd2Vic2l0ZURhdGFTdG9yZSkKLSAg
ICAgICAgbV9wcmV3YXJtZWRQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBZGRX
ZWJzaXRlRGF0YVN0b3JlKHdlYnNpdGVEYXRhU3RvcmUucGFyYW1ldGVycygpKSwgMCk7CiAKICAg
ICByZXR1cm4gc3RkOjpleGNoYW5nZShtX3ByZXdhcm1lZFByb2Nlc3MsIG51bGxwdHIpOwogfQpA
QCAtODU0LDggKzg1MCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQ
cm8KICAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNv
bHZpbmdQYXRoKHBhcmFtZXRlcnMuamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnksIFNh
bmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5qYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgfQogCi0gICAgcGFyYW1l
dGVycy5zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24gPSBtX3Nob3VsZFVzZVRlc3RpbmdO
ZXR3b3JrU2Vzc2lvbjsKLQogICAgIHBhcmFtZXRlcnMuY2FjaGVNb2RlbCA9IGNhY2hlTW9kZWwo
KTsKICAgICBwYXJhbWV0ZXJzLmxhbmd1YWdlcyA9IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsK
IApAQCAtOTQyLDkgKzkzNiw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdX
ZWJQcm8KICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFFPUyh3ZWJQ
cm9jZXNzTGF0ZW5jeVFPUygpLCB3ZWJQcm9jZXNzVGhyb3VnaHB1dFFPUygpKSwgMCk7CiAjZW5k
aWYKIAotICAgIGlmIChXZWJQcmVmZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93
c2luZygpKQotICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkFkZFdl
YnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmxlZ2FjeVByaXZhdGVT
ZXNzaW9uUGFyYW1ldGVycygpKSwgMCk7Ci0KICAgICBpZiAobV9hdXRvbWF0aW9uU2Vzc2lvbikK
ICAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVBdXRvbWF0
aW9uU2Vzc2lvblByb3h5KG1fYXV0b21hdGlvblNlc3Npb24tPnNlc3Npb25JZGVudGlmaWVyKCkp
LCAwKTsKIApAQCAtMTE4OCwxMiArMTE3OSwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdl
QmVnaW5Vc2luZ1dlYnNpCiAgICAgICAgIEFTU0VSVChwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5w
YXJhbWV0ZXJzKCkubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRCA9PSBzZXNzaW9u
SUQpOwogICAgICAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKICAgICAgICAgICAgIG1fbmV0d29y
a1Byb2Nlc3MtPmFkZFNlc3Npb24obWFrZVJlZihwYWdlLndlYnNpdGVEYXRhU3RvcmUoKSkpOwot
ICAgICAgICBwYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBZGRXZWJz
aXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpwcml2YXRlU2Vzc2lvblBh
cmFtZXRlcnMoc2Vzc2lvbklEKSksIDApOwogICAgICAgICBwYWdlLndlYnNpdGVEYXRhU3RvcmUo
KS5jbGVhclBlbmRpbmdDb29raWVzKCk7CiAgICAgfSBlbHNlIGlmIChzZXNzaW9uSUQgIT0gUEFM
OjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkgewogICAgICAgICBpZiAobV9uZXR3b3Jr
UHJvY2VzcykKICAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmFkZFNlc3Npb24obWFrZVJl
ZihwYWdlLndlYnNpdGVEYXRhU3RvcmUoKSkpOwotICAgICAgICBwYWdlLnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKHBhZ2Uud2Vic2l0ZURh
dGFTdG9yZSgpLnBhcmFtZXRlcnMoKSksIDApOwogICAgICAgICBwYWdlLndlYnNpdGVEYXRhU3Rv
cmUoKS5jbGVhclBlbmRpbmdDb29raWVzKCk7CiAgICAgfQogCkBAIC0xMjI0LDcgKzEyMTMsNiBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlRW5kVXNpbmdXZWJzaXRlCiAgICAgICAgIC8vIFRo
ZSBsYXN0IHVzZXIgb2YgdGhpcyBub24tZGVmYXVsdCBQQUw6OlNlc3Npb25JRCBpcyBnb25lLCBz
byBjbGVhbiBpdCB1cCBpbiB0aGUgY2hpbGQgcHJvY2Vzc2VzLgogICAgICAgICBpZiAobmV0d29y
a1Byb2Nlc3MoKSkKICAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnJlbW92ZVNlc3Npb24o
c2Vzc2lvbklEKTsKLSAgICAgICAgcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6RGVzdHJveVNlc3Npb24oc2Vzc2lvbklEKSwgMCk7CiAgICAgfQogfQogCkBAIC0yMjM4
LDkgKzIyMjYsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvCiAg
ICAgICAgIGlmICgmKCppdCktPnBhZ2UoKSA9PSAmcGFnZSkKICAgICAgICAgICAgIG1fc3VzcGVu
ZGVkUGFnZXMucmVtb3ZlKGl0KTsKIAotICAgICAgICBpZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRh
U3RvcmUoKSAhPSAmcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpCi0gICAgICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKHBhZ2Uud2Vi
c2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMoKSksIDApOwotCiAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHByb2Nlc3MpLCBudWxscHRyLCByZWFzb24pOwogICAgIH0K
IApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24g
MjM5NjcxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zODEsOSArMzgxLDYgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXpl
V2ViUHJvY2VzcyhXZQogCiAgICAgc2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhwYXJhbWV0ZXJz
LnNob3VsZFVzZUZvbnRTbW9vdGhpbmcpOwogCi0gICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNl
VGVzdGluZ05ldHdvcmtTZXNzaW9uKQotICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3
aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKLQogICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpOwogCiAgICAgc2V0VGVybWluYXRpb25UaW1lb3V0KHBhcmFtZXRlcnMudGVybWlu
YXRpb25UaW1lb3V0KTsKQEAgLTU0MCwxNiArNTM3LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpmdWxs
S2V5Ym9hcmRBY2Nlc3NNb2RlQwogICAgIG1fZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA9IGZ1
bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQ7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6YWRkV2Vic2l0
ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCi17Ci0g
ICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Np
b24oV1RGTW92ZShwYXJhbWV0ZXJzKSk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJveVNl
c3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotewotICAgIFNlc3Npb25UcmFja2VyOjpk
ZXN0cm95U2Vzc2lvbihzZXNzaW9uSUQpOwotfQotCiB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZUxl
Z2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb25Jbk5ldHdvcmtQcm9jZXNzKCkKIHsKICAgICBlbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oKSwgMCk7CkBAIC0xMjk0LDExICsxMjgxLDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpm
ZXRjaFdlYnNpdGVEYXRhKFBBTDo6UwogICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IE1lbW9y
eUNhY2hlOjpzaW5nbGV0b24oKS5vcmlnaW5zV2l0aENhY2hlKHNlc3Npb25JRCkpCiAgICAgICAg
ICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBvcmln
aW4tPmRhdGEoKSwgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSwgMCB9KTsKICAgICB9Ci0K
LSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRl
bnRpYWxzKSkgewotICAgICAgICBpZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vz
c2lvbihzZXNzaW9uSUQpKQotICAgICAgICAgICAgd2Vic2l0ZURhdGEub3JpZ2luc1dpdGhDcmVk
ZW50aWFscyA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5vcmlnaW5zV2l0aENyZWRlbnRpYWxzKCk7Ci0gICAgfQog
fQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgV2Fs
bFRpbWUgbW9kaWZpZWRTaW5jZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAkocmV2aXNpb24gMjM5NjgzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDggKzE3OCw2IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCk7CiAKICAgICB2b2lkIGVuc3VyZUxlZ2FjeVBy
aXZhdGVCcm93c2luZ1Nlc3Npb25Jbk5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgdm9pZCBhZGRXZWJz
aXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpOwotICAgIHZvaWQgZGVz
dHJveVNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgdm9pZCBwYWdlRGlkRW50ZXJXaW5k
b3codWludDY0X3QgcGFnZUlEKTsKICAgICB2b2lkIHBhZ2VXaWxsTGVhdmVXaW5kb3codWludDY0
X3QgcGFnZUlEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMzk2NzEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNTMsOSArNTMs
NiBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIENsZWFy
Q2FjaGVkQ3JlZGVudGlhbHMoKQogCi0gICAgQWRkV2Vic2l0ZURhdGFTdG9yZShzdHJ1Y3QgV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cyk7Ci0gICAgRGVzdHJveVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotCiAgICAg
IyBQbHVnLWlucy4KICAgICBEaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHVpbnQzMl90
IGhhc2gsIFdhbGxUaW1lIGV4cGlyYXRpb25UaW1lLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CiAgICAgUmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5EZWZhdWx0SGFzaGVzKEhhc2hNYXA8dWlu
dDMyX3QsV2FsbFRpbWU+IGhhc2hlcykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkocmV2aXNp
b24gMjM5NjcwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU3LDcgKzM1Nyw2IEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0UKICAgICBBU1NFUlQoIWhhc1Byb2Nl
c3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwogICAg
IGlmIChlbmFibGVkKSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUxl
Z2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb25Jbk5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgICAgIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpsZWdhY3lQcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMo
KSk7CiAgICAgfSBlbHNlCiAgICAgICAgIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihQ
QUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKIApJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDIzOTY3MCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHByaXZh
dGU6CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEo
KSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVy
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IG92
ZXJyaWRlOworICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Np
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiB9OwogCiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAy
Mzk2ODMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQzLDIwICs0Myw2
IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lk
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9u
KFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKLXsKLSAgICBBU1NFUlQo
IWhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2ll
cykpOwotICAgIGF1dG8gc2Vzc2lvbklEID0gcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMuc2Vzc2lvbklEOwotICAgIGlmIChOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFN0cmluZyBiYXNlID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcigpOwotICAg
IGlmIChiYXNlLmlzTnVsbCgpKQotICAgICAgICBiYXNlID0gW1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBidW5kbGVJZGVudGlmaWVyXTsKLQotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZW5zdXJl
U2Vzc2lvbihzZXNzaW9uSUQsIGJhc2UgKyAnLicgKyBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQu
c2Vzc2lvbklEKCkpKTsKLX0KLQogYm9vbCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpsb2Nh
bEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gZnJhbWUo
KSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLmxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQo
KTsKQEAgLTg0LDE5ICs3MCw2IEBAIFJlc291cmNlRXJyb3IgV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDoKICAgICByZXR1cm4gZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkuYmxvY2tlZEVycm9y
KHJlcXVlc3QpOwogfQogCi1OZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwotICAgIEFTU0VSVCghaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmls
ZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7Ci0gICAgaWYgKGZyYW1lKCkpIHsKLSAgICAgICAg
aWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzdG9yYWdlU2Vzc2lvbihmcmFtZSgpLT5wYWdlKCktPnNlc3Npb25JRCgpKSkKLSAgICAgICAg
ICAgIHJldHVybiAqc3RvcmFnZVNlc3Npb247Ci0gICAgICAgIC8vIFNvbWUgcmVxdWVzdHMgbWF5
IHN0aWxsIGJlIGNvbWluZyBzaG9ydGx5IGFmdGVyIFdlYlByb2Nlc3Mgd2FzIHRvbGQgdG8gZGVz
dHJveSBpdHMgc2Vzc2lvbi4KLSAgICAgICAgTE9HX0VSUk9SKCJXRUIgSW52YWxpZCBzZXNzaW9u
IElELiBQbGVhc2UgZmlsZSBhIGJ1ZyB1bmxlc3MgeW91IGp1c3QgZGlzYWJsZWQgcHJpdmF0ZSBi
cm93c2luZywgaW4gd2hpY2ggY2FzZSBpdCdzIGFuIGV4cGVjdGVkIHJhY2UuIik7Ci0gICAgfQot
ICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigp
OwotfQotCiBXZWJGcmFtZUxvYWRlckNsaWVudCogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6
d2ViRnJhbWVMb2FkZXJDbGllbnQoKSBjb25zdAogewogICAgIGlmICghZnJhbWUoKSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lv
biAyMzk2NzApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAzOCw4ICszMDM4LDYgQEAgdm9pZCBXZWJQYWdlOjpzZXRM
YXllckhvc3RpbmdNb2RlKExheWVySAogCiB2b2lkIFdlYlBhZ2U6OnNldFNlc3Npb25JRChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgaWYgKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgp
KQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRXZWJzaXRlRGF0YVN0b3JlKFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpwcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoc2Vzc2lv
bklEKSk7CiAgICAgbV9wYWdlLT5zZXRTZXNzaW9uSUQoc2Vzc2lvbklEKTsKIH0KIApJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTktMDEtMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBTdG9wIHVzaW5nIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiBpbiBXZWJQcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMyMzYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAoV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24gY29uc3QpOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfY2FjaGVkUmVzcG9uc2VGb3JVUkw6
XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2NsZWFyQ3JlZGVudGlhbHNdKToKKwogMjAxOS0wMS0w
NCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFByb2dyZXNzIHRvd2FyZHMgZml4aW5nIE1hYyBDTWFrZSBidWlsZApJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw1ICs0OSw1IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRy
PENGRGF0YVJlZj4gc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBjb25zdCBvdmVycmlk
ZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0JKHJldmlz
aW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTkwLDE0ICs5MCwx
NCBAQCBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6CiAgICAgcmV0dXJu
IGZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsKIH0KIAot
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdl
U2Vzc2lvbigpIGNvbnN0CitOZXR3b3JrU3RvcmFnZVNlc3Npb24qIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnBhZ2UoKSAmJiBmcmFtZSgpLT5w
YWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lv
bklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpKQotICAgICAgICAgICAgcmV0dXJuICpzZXNz
aW9uOworICAgICAgICAgICAgcmV0dXJuIHNlc3Npb247CiAgICAgICAgIC8vIFNvbWUgcmVxdWVz
dHMgbWF5IHN0aWxsIGJlIGNvbWluZyBzaG9ydGx5IGJlZm9yZSBXZWJDb3JlIHVwZGF0ZXMgdGhl
IHNlc3Npb24gSUQgYW5kIGFmdGVyIFdlYktpdCBkZXN0cm95cyB0aGUgcHJpdmF0ZSBicm93c2lu
ZyBzZXNzaW9uLgogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgc2Vzc2lvbiBJRC4gUGxlYXNl
IGZpbGUgYSBidWcgdW5sZXNzIHlvdSBqdXN0IGRpc2FibGVkIHByaXZhdGUgYnJvd3NpbmcsIGlu
IHdoaWNoIGNhc2UgaXQncyBhbiBleHBlY3RlZCByYWNlLiIpOwogICAgIH0KLSAgICByZXR1cm4g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKKyAgICByZXR1
cm4gJk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lv
biAyMzk2NzApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM2NjgsNyArMzY2OCw3IEBAIC0gKE5TQ2FjaGVkVVJMUmVzcG9u
c2UgKilfY2FjaGVkUmVzcG9uc2UKICAgICBpZiAoIV9wcml2YXRlLT5wYWdlKQogICAgICAgICBy
ZXR1cm4gbmlsOwogCi0gICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Np
b24gPSBfcHJpdmF0ZS0+cGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkubmV0d29ya2luZ0NvbnRl
eHQoKS0+c3RvcmFnZVNlc3Npb24oKS5wbGF0Zm9ybVNlc3Npb24oKSkKKyAgICBpZiAoQ0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbiA9IF9wcml2YXRlLT5wYWdlLT5tYWluRnJh
bWUoKS5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpLT5wbGF0
Zm9ybVNlc3Npb24oKSkKICAgICAgICAgY2FjaGVkUmVzcG9uc2UgPSBjYWNoZWRSZXNwb25zZUZv
clJlcXVlc3Qoc3RvcmFnZVNlc3Npb24sIHJlcXVlc3QuZ2V0KCkpOwogICAgIGVsc2UKICAgICAg
ICAgY2FjaGVkUmVzcG9uc2UgPSBbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIGNhY2hlZFJl
c3BvbnNlRm9yUmVxdWVzdDpyZXF1ZXN0LmdldCgpXTsKQEAgLTkyNTEsNyArOTI1MSw3IEBAIC0g
KHZvaWQpX2NsZWFyQ3JlZGVudGlhbHMKICAgICBpZiAoIW5ldHdvcmtpbmdDb250ZXh0KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBuZXR3b3JraW5nQ29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5j
cmVkZW50aWFsU3RvcmFnZSgpLmNsZWFyQ3JlZGVudGlhbHMoKTsKKyAgICBuZXR3b3JraW5nQ29u
dGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5jbGVhckNyZWRlbnRp
YWxzKCk7CiB9CiAKIC0gKEJPT0wpX25lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358596</attachid>
            <date>2019-01-08 08:47:33 -0800</date>
            <delta_ts>2019-01-08 09:15:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193236-20190108084732.patch</filename>
            <type>text/plain</type>
            <size>38186</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzOTcyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE5LTAxLTA4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2lu
ZyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gaW4gV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMjM2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLiAgU29t
ZSBjb2RlIHdhcyBvbmx5IHVzZWQgZm9yIFJlc291cmNlSGFuZGxlLCB3aGljaCBpc24ndCB1c2Vk
IGluIG1vZGVybiBXZWJLaXQsCisgICAgICAgIGFuZCBmb3IgY29va2llcywgd2hpY2ggYXJlIGhh
bmRsZWQgaW4gdGhlIE5ldHdvcmtQcm9jZXNzIGluIG1vZGVybiBXZWJLaXQuCisKKyAgICAgICAg
KiBsb2FkZXIvQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0b3JhZ2VTZXNzaW9u
KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6Y3JlYXRlTlNVUkxDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cGxhdGZv
cm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKToKKwogMjAxOS0wMS0wOCAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1v
dmUgV2luZG93cy1zcGVjaWZpYyBjb2RlIGZyb20gTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQu
Y3BwIHRvIGl0cyBvd24gZmlsZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUph
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAJ
KHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBOZXR3b3JraW5nQ29udGV4
dCogbmV0d29ya2luZ0NvbnQKIGlubGluZSBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VT
ZXNzaW9uKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCA9IG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KTsKLSAgICByZXR1cm4gY29u
dGV4dCA/IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkgOiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOworICAgIHJldHVybiBjb250ZXh0ID8gKmNvbnRleHQt
PnN0b3JhZ2VTZXNzaW9uKCkgOiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpOwogfQogCiBzdGF0aWMgSW5jbHVkZVNlY3VyZUNvb2tpZXMgc2hvdWxkSW5jbHVk
ZVNlY3VyZUNvb2tpZXMoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShyZXZpc2lvbiAyMzk2
NzApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHByaXZhdGU6CiAgICAgRW1wdHlGcmFtZU5ldHdvcmtp
bmdDb250ZXh0KCk7CiAKICAgICBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7IH0KKyAgICBOZXR3b3JrU3RvcmFnZVNl
c3Npb24qIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gJk5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7IH0KIAogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIGJvb2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTdHJpbmcgc291cmNl
QXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQog
Ci0gICAgdmlydHVhbCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lv
bigpIGNvbnN0ID0gMDsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFsIFJlc291cmNl
RXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0ID0gMDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5l
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkocmV2aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQ5LDEyICsxNDksMTIgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZV
UkxDb25uZWN0aQogICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBkLT5tX3Bhc3Mu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNzE3NDA1MD4gLSBG
b3IgVVJMcyB0aGF0IG1hdGNoIHRoZSBwYXRocyBvZiB0aG9zZSBwcmV2aW91c2x5IGNoYWxsZW5n
ZWQgZm9yIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24sIAogICAgICAgICAgICAgLy8gdHJ5IGFu
ZCByZXVzZSB0aGUgY3JlZGVudGlhbCBwcmVlbXB0aXZlbHksIGFzIGFsbG93ZWQgYnkgUkZDIDI2
MTcuCi0gICAgICAgICAgICBkLT5tX2luaXRpYWxDcmVkZW50aWFsID0gZC0+bV9jb250ZXh0LT5z
dG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuZ2V0KHBhcnRpdGlvbiwgZmlyc3RS
ZXF1ZXN0KCkudXJsKCkpOworICAgICAgICAgICAgZC0+bV9pbml0aWFsQ3JlZGVudGlhbCA9IGQt
Pm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQocGFy
dGl0aW9uLCBmaXJzdFJlcXVlc3QoKS51cmwoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAvLyBJZiB0aGVyZSBpcyBhbHJlYWR5IGEgcHJvdGVjdGlvbiBzcGFjZSBrbm93biBmb3Ig
dGhlIFVSTCwgdXBkYXRlIHN0b3JlZCBjcmVkZW50aWFscyBiZWZvcmUgc2VuZGluZyBhIHJlcXVl
c3QuCiAgICAgICAgICAgICAvLyBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBs
b2dvdXQgYnkgc2VuZGluZyBhbiBYTUxIdHRwUmVxdWVzdCB3aXRoIGtub3duIGluY29ycmVjdCBj
cmVkZW50aWFscywgYW5kIGFib3J0aW5nIGl0IGltbWVkaWF0ZWx5CiAgICAgICAgICAgICAvLyAo
c28gdGhhdCBhbiBhdXRoZW50aWNhdGlvbiBkaWFsb2cgZG9lc24ndCBwb3AgdXApLgotICAgICAg
ICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCku
c2V0KHBhcnRpdGlvbiwgQ3JlZGVudGlhbChkLT5tX3VzZXIsIGQtPm1fcGFzcywgQ3JlZGVudGlh
bFBlcnNpc3RlbmNlTm9uZSksIGZpcnN0UmVxdWVzdCgpLnVybCgpKTsKKyAgICAgICAgICAgIGQt
Pm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQocGFy
dGl0aW9uLCBDcmVkZW50aWFsKGQtPm1fdXNlciwgZC0+bV9wYXNzLCBDcmVkZW50aWFsUGVyc2lz
dGVuY2VOb25lKSwgZmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgICAgICB9CiAgICAgfQogICAg
ICAgICAKQEAgLTI2MSw3ICsyNjEsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAg
ICAgaWYgKCFkLT5tX2NvbnRleHQtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24o
KS5wbGF0Zm9ybVNlc3Npb24oKTsKKyAgICBkLT5tX3N0b3JhZ2VTZXNzaW9uID0gZC0+bV9jb250
ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5wbGF0Zm9ybVNlc3Npb24oKTsKIAogICAgIGJvb2wgc2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPSAhY2xpZW50KCkgfHwgY2xpZW50KCktPnNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMpOwogCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlcwogICAgICAgICAvLyBPbmx5IGNvbnNpZGVy
IGFwcGx5aW5nIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzIGlmIHRoaXMgaXMgYWN0dWFsbHkg
YSByZWRpcmVjdCBhbmQgdGhlIHJlZGlyZWN0CiAgICAgICAgIC8vIFVSTCBkaWRuJ3QgaW5jbHVk
ZSBjcmVkZW50aWFscyBvZiBpdHMgb3duLgogICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHko
KSAmJiBkLT5tX3Bhc3MuaXNFbXB0eSgpICYmICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7
Ci0gICAgICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBkLT5tX2NvbnRleHQtPnN0b3Jh
Z2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQocGFydGl0aW9uLCByZXF1ZXN0LnVy
bCgpKTsKKyAgICAgICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IGQtPm1fY29udGV4dC0+
c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQocGFydGl0aW9uLCByZXF1
ZXN0LnVybCgpKTsKICAgICAgICAgICAgIGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgICAgICAgICBkLT5tX2luaXRpYWxDcmVkZW50aWFsID0gY3JlZGVudGlhbDsKICAgICAg
ICAgICAgICAgICAKQEAgLTM4Miw3ICszODIsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0cnlI
YW5kbGVQYXNzd29yZEJhCiAgICAgICAgIFVSTCB1cmxUb1N0b3JlOwogICAgICAgICBpZiAoY2hh
bGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKQogICAgICAg
ICAgICAgdXJsVG9TdG9yZSA9IGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKTsKLSAg
ICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCku
c2V0KHBhcnRpdGlvbiwgY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCB1
cmxUb1N0b3JlKTsKKyAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVk
ZW50aWFsU3RvcmFnZSgpLnNldChwYXJ0aXRpb24sIGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7CiAgICAgICAgIAogICAgICAgICBDRlVSTENvbm5l
Y3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdl
dCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwogICAgICAgICBkLT5tX3Vz
ZXIgPSBTdHJpbmcoKTsKQEAgLTM5NiwxNiArMzk2LDE2IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6
OnRyeUhhbmRsZVBhc3N3b3JkQmEKICAgICAgICAgICAgIC8vIFRoZSBzdG9yZWQgY3JlZGVudGlh
bCB3YXNuJ3QgYWNjZXB0ZWQsIHN0b3AgdXNpbmcgaXQuCiAgICAgICAgICAgICAvLyBUaGVyZSBp
cyBhIHJhY2UgY29uZGl0aW9uIGhlcmUsIHNpbmNlIGEgZGlmZmVyZW50IGNyZWRlbnRpYWwgbWln
aHQgaGF2ZSBhbHJlYWR5IGJlZW4gc3RvcmVkIGJ5IGFub3RoZXIgUmVzb3VyY2VIYW5kbGUsCiAg
ICAgICAgICAgICAvLyBidXQgdGhlIG9ic2VydmFibGUgZWZmZWN0IHNob3VsZCBiZSB2ZXJ5IG1p
bm9yLCBpZiBhbnkuCi0gICAgICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCku
Y3JlZGVudGlhbFN0b3JhZ2UoKS5yZW1vdmUocGFydGl0aW9uLCBjaGFsbGVuZ2UucHJvdGVjdGlv
blNwYWNlKCkpOworICAgICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5j
cmVkZW50aWFsU3RvcmFnZSgpLnJlbW92ZShwYXJ0aXRpb24sIGNoYWxsZW5nZS5wcm90ZWN0aW9u
U3BhY2UoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWNoYWxsZW5nZS5wcmV2aW91c0Zh
aWx1cmVDb3VudCgpKSB7Ci0gICAgICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBkLT5t
X2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQocGFydGl0
aW9uLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOworICAgICAgICAgICAgQ3JlZGVudGlh
bCBjcmVkZW50aWFsID0gZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50aWFs
U3RvcmFnZSgpLmdldChwYXJ0aXRpb24sIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSk7CiAg
ICAgICAgICAgICBpZiAoIWNyZWRlbnRpYWwuaXNFbXB0eSgpICYmIGNyZWRlbnRpYWwgIT0gZC0+
bV9pbml0aWFsQ3JlZGVudGlhbCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChjcmVkZW50aWFs
LnBlcnNpc3RlbmNlKCkgPT0gQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7CiAgICAgICAgICAg
ICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09
IDQwMSkgewogICAgICAgICAgICAgICAgICAgICAvLyBTdG9yZSB0aGUgY3JlZGVudGlhbCBiYWNr
LCBwb3NzaWJseSBhZGRpbmcgaXQgYXMgYSBkZWZhdWx0IGZvciB0aGlzIGRpcmVjdG9yeS4KLSAg
ICAgICAgICAgICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRp
YWxTdG9yYWdlKCkuc2V0KHBhcnRpdGlvbiwgY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rp
b25TcGFjZSgpLCBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCkpOworICAgICAgICAg
ICAgICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxTdG9y
YWdlKCkuc2V0KHBhcnRpdGlvbiwgY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFj
ZSgpLCBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCkpOwogICAgICAgICAgICAgICAg
IH0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25V
c2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRp
YWwoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKQEAgLTQ1NSw3ICs0NTUs
NyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoCiAgICAgICAgIGlm
IChjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCiAg
ICAgICAgICAgICB1cmxUb1N0b3JlID0gY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgp
OyAKIAotICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0
b3JhZ2UoKS5zZXQoZmlyc3RSZXF1ZXN0KCkuY2FjaGVQYXJ0aXRpb24oKSwgd2ViQ3JlZGVudGlh
bCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCB1cmxUb1N0b3JlKTsKKyAgICAgICAgZC0+
bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChmaXJz
dFJlcXVlc3QoKS5jYWNoZVBhcnRpdGlvbigpLCB3ZWJDcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJv
dGVjdGlvblNwYWNlKCksIHVybFRvU3RvcmUpOwogCiAgICAgICAgIGlmIChkLT5tX2Nvbm5lY3Rp
b24pIHsKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTU3MSw3ICs1NzEsNyBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjCiAgICAgYm9vbCBzaG91bGRDb250ZW50RW5j
b2RpbmdTbmlmZiA9IHRydWU7CiAgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBh
ZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGUoY29udGV4dCwgcmVxdWVzdCwgJmNsaWVudCwgZGVm
ZXJzTG9hZGluZywgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlm
ZikpOwogCi0gICAgaGFuZGxlLT5kLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFn
ZVNlc3Npb24oKS5wbGF0Zm9ybVNlc3Npb24oKTsKKyAgICBoYW5kbGUtPmQtPm1fc3RvcmFnZVNl
c3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5wbGF0Zm9ybVNlc3Npb24oKTsKIAog
ICAgIGlmIChoYW5kbGUtPmQtPm1fc2NoZWR1bGVkRmFpbHVyZVR5cGUgIT0gTm9GYWlsdXJlKSB7
CiAgICAgICAgIGVycm9yID0gY29udGV4dC0+YmxvY2tlZEVycm9yKHJlcXVlc3QpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VIYW5kbGVNYWMubW0JKHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTcsMTIgKzE1NywxMiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rp
CiAgICAgICAgIGlmIChkLT5tX3VzZXIuaXNFbXB0eSgpICYmIGQtPm1fcGFzcy5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83MTc0MDUwPiAtIEZvciBVUkxzIHRo
YXQgbWF0Y2ggdGhlIHBhdGhzIG9mIHRob3NlIHByZXZpb3VzbHkgY2hhbGxlbmdlZCBmb3IgSFRU
UCBCYXNpYyBhdXRoZW50aWNhdGlvbiwgCiAgICAgICAgICAgICAvLyB0cnkgYW5kIHJldXNlIHRo
ZSBjcmVkZW50aWFsIHByZWVtcHRpdmVseSwgYXMgYWxsb3dlZCBieSBSRkMgMjYxNy4KLSAgICAg
ICAgICAgIGQtPm1faW5pdGlhbENyZWRlbnRpYWwgPSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNz
aW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQoZmlyc3RSZXF1ZXN0KCkuY2FjaGVQYXJ0aXRp
b24oKSwgZmlyc3RSZXF1ZXN0KCkudXJsKCkpOworICAgICAgICAgICAgZC0+bV9pbml0aWFsQ3Jl
ZGVudGlhbCA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3Jh
Z2UoKS5nZXQoZmlyc3RSZXF1ZXN0KCkuY2FjaGVQYXJ0aXRpb24oKSwgZmlyc3RSZXF1ZXN0KCku
dXJsKCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYWxy
ZWFkeSBhIHByb3RlY3Rpb24gc3BhY2Uga25vd24gZm9yIHRoZSBVUkwsIHVwZGF0ZSBzdG9yZWQg
Y3JlZGVudGlhbHMgYmVmb3JlIHNlbmRpbmcgYSByZXF1ZXN0LgogICAgICAgICAgICAgLy8gVGhp
cyBtYWtlcyBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgbG9nb3V0IGJ5IHNlbmRpbmcgYW4gWE1M
SHR0cFJlcXVlc3Qgd2l0aCBrbm93biBpbmNvcnJlY3QgY3JlZGVudGlhbHMsIGFuZCBhYm9ydGlu
ZyBpdCBpbW1lZGlhdGVseQogICAgICAgICAgICAgLy8gKHNvIHRoYXQgYW4gYXV0aGVudGljYXRp
b24gZGlhbG9nIGRvZXNuJ3QgcG9wIHVwKS4KLSAgICAgICAgICAgIGQtPm1fY29udGV4dC0+c3Rv
cmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChmaXJzdFJlcXVlc3QoKS5jYWNo
ZVBhcnRpdGlvbigpLCBDcmVkZW50aWFsKGQtPm1fdXNlciwgZC0+bV9wYXNzLCBDcmVkZW50aWFs
UGVyc2lzdGVuY2VOb25lKSwgZmlyc3RSZXF1ZXN0KCkudXJsKCkpOworICAgICAgICAgICAgZC0+
bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChmaXJz
dFJlcXVlc3QoKS5jYWNoZVBhcnRpdGlvbigpLCBDcmVkZW50aWFsKGQtPm1fdXNlciwgZC0+bV9w
YXNzLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSwgZmlyc3RSZXF1ZXN0KCkudXJsKCkpOwog
ICAgICAgICB9CiAgICAgfQogICAgICAgICAKQEAgLTI0MCw3ICsyNDAsNyBAQCBib29sIFJlc291
cmNlSGFuZGxlOjpzdGFydCgpCiAgICAgaWYgKCFkLT5tX2NvbnRleHQtPmlzVmFsaWQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGQtPm1fY29u
dGV4dC0+c3RvcmFnZVNlc3Npb24oKS5wbGF0Zm9ybVNlc3Npb24oKTsKKyAgICBkLT5tX3N0b3Jh
Z2VTZXNzaW9uID0gZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5wbGF0Zm9ybVNlc3Np
b24oKTsKIAogICAgIC8vIEZJWE1FOiBEbyBub3QgdXNlIHRoZSBzeW5jIHZlcnNpb24gb2Ygc2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Ugd2hlbiB0aGUgY2xpZW50IHJldHVybnMgdHJ1ZSBmcm9t
IHVzZXNBc3luY0NhbGxiYWNrcy4KICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
ID0gIWNsaWVudCgpIHx8IGNsaWVudCgpLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSh0aGlz
KTsKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRS
ZXNvdXJjCiAgICAgYm9vbCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiA9IHRydWU7CiAgICAg
UmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5k
bGUoY29udGV4dCwgcmVxdWVzdCwgJmNsaWVudCwgZGVmZXJzTG9hZGluZywgc2hvdWxkQ29udGVu
dFNuaWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZikpOwogCi0gICAgaGFuZGxlLT5kLT5t
X3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5wbGF0Zm9ybVNlc3Np
b24oKTsKKyAgICBoYW5kbGUtPmQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5zdG9yYWdl
U2Vzc2lvbigpLT5wbGF0Zm9ybVNlc3Npb24oKTsKIAogICAgIGlmIChjb250ZXh0ICYmIGhhbmRs
ZS0+ZC0+bV9zY2hlZHVsZWRGYWlsdXJlVHlwZSAhPSBOb0ZhaWx1cmUpIHsKICAgICAgICAgZXJy
b3IgPSBjb250ZXh0LT5ibG9ja2VkRXJyb3IocmVxdWVzdCk7CkBAIC00NDksNyArNDQ5LDcgQEAg
dm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlcwogICAgICAgICAvLyBPbmx5
IGNvbnNpZGVyIGFwcGx5aW5nIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzIGlmIHRoaXMgaXMg
YWN0dWFsbHkgYSByZWRpcmVjdCBhbmQgdGhlIHJlZGlyZWN0CiAgICAgICAgIC8vIFVSTCBkaWRu
J3QgaW5jbHVkZSBjcmVkZW50aWFscyBvZiBpdHMgb3duLgogICAgICAgICBpZiAoZC0+bV91c2Vy
LmlzRW1wdHkoKSAmJiBkLT5tX3Bhc3MuaXNFbXB0eSgpICYmICFyZWRpcmVjdFJlc3BvbnNlLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBkLT5tX2NvbnRl
eHQtPnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQocmVxdWVzdC5jYWNo
ZVBhcnRpdGlvbigpLCByZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgICAgIENyZWRlbnRpYWwgY3Jl
ZGVudGlhbCA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3Jh
Z2UoKS5nZXQocmVxdWVzdC5jYWNoZVBhcnRpdGlvbigpLCByZXF1ZXN0LnVybCgpKTsKICAgICAg
ICAgICAgIGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBkLT5t
X2luaXRpYWxDcmVkZW50aWFsID0gY3JlZGVudGlhbDsKICAgICAgICAgICAgICAgICAKQEAgLTU0
MCwxNiArNTQwLDE2IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmEK
ICAgICAgICAgICAgIC8vIFRoZSBzdG9yZWQgY3JlZGVudGlhbCB3YXNuJ3QgYWNjZXB0ZWQsIHN0
b3AgdXNpbmcgaXQuCiAgICAgICAgICAgICAvLyBUaGVyZSBpcyBhIHJhY2UgY29uZGl0aW9uIGhl
cmUsIHNpbmNlIGEgZGlmZmVyZW50IGNyZWRlbnRpYWwgbWlnaHQgaGF2ZSBhbHJlYWR5IGJlZW4g
c3RvcmVkIGJ5IGFub3RoZXIgUmVzb3VyY2VIYW5kbGUsCiAgICAgICAgICAgICAvLyBidXQgdGhl
IG9ic2VydmFibGUgZWZmZWN0IHNob3VsZCBiZSB2ZXJ5IG1pbm9yLCBpZiBhbnkuCi0gICAgICAg
ICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5y
ZW1vdmUoZC0+bV9wYXJ0aXRpb24sIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSk7CisgICAg
ICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxTdG9yYWdl
KCkucmVtb3ZlKGQtPm1fcGFydGl0aW9uLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKCFjaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQo
KSkgewotICAgICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gZC0+bV9jb250ZXh0LT5z
dG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuZ2V0KGQtPm1fcGFydGl0aW9uLCBj
aGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOworICAgICAgICAgICAgQ3JlZGVudGlhbCBjcmVk
ZW50aWFsID0gZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50aWFsU3RvcmFn
ZSgpLmdldChkLT5tX3BhcnRpdGlvbiwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKTsKICAg
ICAgICAgICAgIGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkgJiYgY3JlZGVudGlhbCAhPSBkLT5t
X2luaXRpYWxDcmVkZW50aWFsKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGNyZWRlbnRpYWwu
cGVyc2lzdGVuY2UoKSA9PSBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKTsKICAgICAgICAgICAg
ICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0g
NDAxKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFN0b3JlIHRoZSBjcmVkZW50aWFsIGJhY2ss
IHBvc3NpYmx5IGFkZGluZyBpdCBhcyBhIGRlZmF1bHQgZm9yIHRoaXMgZGlyZWN0b3J5LgotICAg
ICAgICAgICAgICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlh
bFN0b3JhZ2UoKS5zZXQoZC0+bV9wYXJ0aXRpb24sIGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UoKSwgY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50aWFs
U3RvcmFnZSgpLnNldChkLT5tX3BhcnRpdGlvbiwgY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZSgpLCBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCkpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBbY2hhbGxlbmdlLnNlbmRlcigpIHVzZUNyZWRl
bnRpYWw6Y3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTptYWMoY2hhbGxlbmdlKV07CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01OTEs
NyArNTkxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKAogICAg
ICAgICBVUkwgdXJsVG9TdG9yZTsKICAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9u
c2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQwMSkKICAgICAgICAgICAgIHVybFRvU3RvcmUgPSBj
aGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCk7Ci0gICAgICAgIGQtPm1fY29udGV4dC0+
c3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChkLT5tX3BhcnRpdGlvbiwg
d2ViQ3JlZGVudGlhbCwgUHJvdGVjdGlvblNwYWNlKFtkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2Ug
cHJvdGVjdGlvblNwYWNlXSksIHVybFRvU3RvcmUpOworICAgICAgICBkLT5tX2NvbnRleHQtPnN0
b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KGQtPm1fcGFydGl0aW9uLCB3
ZWJDcmVkZW50aWFsLCBQcm90ZWN0aW9uU3BhY2UoW2QtPm1fY3VycmVudE1hY0NoYWxsZW5nZSBw
cm90ZWN0aW9uU3BhY2VdKSwgdXJsVG9TdG9yZSk7CiAgICAgICAgIFtbZC0+bV9jdXJyZW50TWFj
Q2hhbGxlbmdlIHNlbmRlcl0gdXNlQ3JlZGVudGlhbDp3ZWJDcmVkZW50aWFsLm5zQ3JlZGVudGlh
bCgpIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmQtPm1fY3VycmVudE1hY0NoYWxsZW5nZV07
CiAgICAgfSBlbHNlCiAgICAgICAgIFtbZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlIHNlbmRlcl0g
dXNlQ3JlZGVudGlhbDpjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpIGZvckF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOmQtPm1fY3VycmVudE1hY0NoYWxsZW5nZV07CkluZGV4OiBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNp
b24gMjM5NzI1KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwzOSBAQAorMjAxOS0wMS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIFN0b3AgdXNpbmcgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
IGluIFdlYlByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MzIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAg
ICogU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlUG9saWNpZXNEYXRhOjphcHBseVRvRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRyeVRha2VQcmV3YXJtZWRQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURh
dGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwYWdlRW5kVXNpbmdX
ZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nl
c3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW06
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNp
dGVEYXRhU3RvcmVTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6c2V0U2Vzc2lvbklEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24pOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAxOS0wMS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFsd2F5cyBjYWxsIENvbXBsZXRpb25IYW5k
bGVyIGluIENhY2hlOjpzdG9yZQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDIzOTY3MCkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw2IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVyczo6ZW5jb2QKICAgICBlbmNvZGVyIDw8IHNob3VsZENhcHR1cmVWaWRlb0luVUlQcm9j
ZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzczsKICNl
bmRpZgotICAgIGVuY29kZXIgPDwgc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uOwogICAg
IGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0VtcHR5RG9jdW1lbnQ7CiAgICAgZW5j
b2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzU2VjdXJlOwogICAgIGVuY29kZXIgPDwgdXJs
U2NoZW1lc1JlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeTsKQEAgLTI2
Nyw4ICsyNjYsNiBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZENhcHR1cmVEaXNwbGF5SW5V
SVByb2Nlc3MpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51
cmxTY2hlbWVzUmVnaXN0ZXJlZEFzRW1wdHlEb2N1bWVudCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVy
ZWRBc1NlY3VyZSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNCw3ICsxMjQsNiBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7
CiAKICAgICBkb3VibGUgZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwgeyBJTlRfTUFYIH07
CiAKLSAgICBib29sIHNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbiB7IGZhbHNlIH07CiAg
ICAgYm9vbCBzaG91bGRBbHdheXNVc2VDb21wbGV4VGV4dENvZGVQYXRoIHsgZmFsc2UgfTsKICAg
ICBib29sIHNob3VsZEVuYWJsZU1lbW9yeVByZXNzdXJlUmVsaWVmTG9nZ2luZyB7IGZhbHNlIH07
CiAgICAgYm9vbCBzaG91bGRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciB7IGZhbHNlIH07
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmNwcAko
cmV2aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVz
RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSwxMSArMTYxLDggQEAgdm9pZCBXZWJzaXRl
UG9saWNpZXNEYXRhOjphcHBseVRvRG9jdW1lbgogCiAgICAgaWYgKHdlYnNpdGVQb2xpY2llcy53
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycykgewogICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBk
b2N1bWVudExvYWRlci5mcmFtZSgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogcGFnZSA9IGZy
YW1lLT5wYWdlKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHNlc3Npb25JRCA9IHdlYnNpdGVQ
b2xpY2llcy53ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy0+bmV0d29ya1Nlc3Npb25QYXJhbWV0
ZXJzLnNlc3Npb25JRDsKLSAgICAgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5h
ZGRXZWJzaXRlRGF0YVN0b3JlKFdURk1vdmUoKndlYnNpdGVQb2xpY2llcy53ZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycykpOwotICAgICAgICAgICAgICAgIHBhZ2UtPnNldFNlc3Npb25JRChzZXNz
aW9uSUQpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFt
ZS0+cGFnZSgpKQorICAgICAgICAgICAgICAgIHBhZ2UtPnNldFNlc3Npb25JRCh3ZWJzaXRlUG9s
aWNpZXMud2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMtPm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVy
cy5zZXNzaW9uSUQpOwogICAgICAgICB9CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjM5NjcwKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
ODksMTAgKzY4OSw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEFueVBhZ2VHcm91cE1pZ2gK
IHsKICAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgewogICAgICAgICBzZW5kVG9OZXR3
b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3Rv
cmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmxlZ2FjeVByaXZhdGVTZXNzaW9uUGFyYW1l
dGVycygpKSk7Ci0gICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vz
czo6QWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKCkpKTsKICAgICB9IGVsc2UgewogICAgICAgICBuZXR3
b3JrUHJvY2VzcygpLT5yZW1vdmVTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRl
U2Vzc2lvbklEKCkpOwotICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OkRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lv
bklEKCkpKTsKICAgICB9CiB9CiAKQEAgLTc2NSw4ICs3NjMsNiBAQCBSZWZQdHI8V2ViUHJvY2Vz
c1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6CiAKICAgICBBU1NFUlQobV9wcmV3YXJtZWRQcm9jZXNz
LT5pc1ByZXdhcm1lZCgpKTsKICAgICBtX3ByZXdhcm1lZFByb2Nlc3MtPm1hcmtJc05vTG9uZ2Vy
SW5QcmV3YXJtZWRQb29sKCk7Ci0gICAgaWYgKCZtX3ByZXdhcm1lZFByb2Nlc3MtPndlYnNpdGVE
YXRhU3RvcmUoKSAhPSAmd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgbV9wcmV3YXJtZWRQcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKHdlYnNp
dGVEYXRhU3RvcmUucGFyYW1ldGVycygpKSwgMCk7CiAKICAgICByZXR1cm4gc3RkOjpleGNoYW5n
ZShtX3ByZXdhcm1lZFByb2Nlc3MsIG51bGxwdHIpOwogfQpAQCAtODU0LDggKzg1MCw2IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQcm8KICAgICAgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMu
amF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6
OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7CiAgICAgfQogCi0gICAgcGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5n
TmV0d29ya1Nlc3Npb24gPSBtX3Nob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsKLQogICAg
IHBhcmFtZXRlcnMuY2FjaGVNb2RlbCA9IGNhY2hlTW9kZWwoKTsKICAgICBwYXJhbWV0ZXJzLmxh
bmd1YWdlcyA9IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKIApAQCAtOTQyLDkgKzkzNiw2IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQcm8KICAgICBwcm9jZXNzLnNl
bmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFFPUyh3ZWJQcm9jZXNzTGF0ZW5jeVFPUygpLCB3
ZWJQcm9jZXNzVGhyb3VnaHB1dFFPUygpKSwgMCk7CiAjZW5kaWYKIAotICAgIGlmIChXZWJQcmVm
ZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpKQotICAgICAgICBwcm9j
ZXNzLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmxlZ2FjeVByaXZhdGVTZXNzaW9uUGFyYW1ldGVycygpKSwg
MCk7Ci0KICAgICBpZiAobV9hdXRvbWF0aW9uU2Vzc2lvbikKICAgICAgICAgcHJvY2Vzcy5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVBdXRvbWF0aW9uU2Vzc2lvblByb3h5KG1fYXV0
b21hdGlvblNlc3Npb24tPnNlc3Npb25JZGVudGlmaWVyKCkpLCAwKTsKIApAQCAtMTE4OCwxMiAr
MTE3OSwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpCiAgICAg
ICAgIEFTU0VSVChwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkubmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRCA9PSBzZXNzaW9uSUQpOwogICAgICAgICBpZiAobV9u
ZXR3b3JrUHJvY2VzcykKICAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmFkZFNlc3Npb24o
bWFrZVJlZihwYWdlLndlYnNpdGVEYXRhU3RvcmUoKSkpOwotICAgICAgICBwYWdlLnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzOjpwcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoc2Vzc2lvbklEKSks
IDApOwogICAgICAgICBwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5jbGVhclBlbmRpbmdDb29raWVz
KCk7CiAgICAgfSBlbHNlIGlmIChzZXNzaW9uSUQgIT0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKSkgewogICAgICAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKICAgICAgICAgICAg
IG1fbmV0d29ya1Byb2Nlc3MtPmFkZFNlc3Npb24obWFrZVJlZihwYWdlLndlYnNpdGVEYXRhU3Rv
cmUoKSkpOwotICAgICAgICBwYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpBZGRXZWJzaXRlRGF0YVN0b3JlKHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMo
KSksIDApOwogICAgICAgICBwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5jbGVhclBlbmRpbmdDb29r
aWVzKCk7CiAgICAgfQogCkBAIC0xMjI0LDcgKzEyMTMsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpwYWdlRW5kVXNpbmdXZWJzaXRlCiAgICAgICAgIC8vIFRoZSBsYXN0IHVzZXIgb2YgdGhpcyBu
b24tZGVmYXVsdCBQQUw6OlNlc3Npb25JRCBpcyBnb25lLCBzbyBjbGVhbiBpdCB1cCBpbiB0aGUg
Y2hpbGQgcHJvY2Vzc2VzLgogICAgICAgICBpZiAobmV0d29ya1Byb2Nlc3MoKSkKICAgICAgICAg
ICAgIG5ldHdvcmtQcm9jZXNzKCktPnJlbW92ZVNlc3Npb24oc2Vzc2lvbklEKTsKLSAgICAgICAg
cGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVzdHJveVNlc3Npb24o
c2Vzc2lvbklEKSwgMCk7CiAgICAgfQogfQogCkBAIC0yMjM4LDkgKzIyMjYsNiBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvCiAgICAgICAgIGlmICgmKCppdCktPnBh
Z2UoKSA9PSAmcGFnZSkKICAgICAgICAgICAgIG1fc3VzcGVuZGVkUGFnZXMucmVtb3ZlKGl0KTsK
IAotICAgICAgICBpZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmcGFnZS53ZWJz
aXRlRGF0YVN0b3JlKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFt
ZXRlcnMoKSksIDApOwotCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHByb2Nlc3MpLCBudWxscHRyLCByZWFzb24pOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjM5NjcxKQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODEsOSAr
MzgxLDYgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZQogCiAgICAg
c2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhwYXJhbWV0ZXJzLnNob3VsZFVzZUZvbnRTbW9vdGhp
bmcpOwogCi0gICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9u
KQotICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Np
b24oKTsKLQogICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpOwogCiAgICAgc2V0
VGVybWluYXRpb25UaW1lb3V0KHBhcmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0KTsKQEAgLTU0
MCwxNiArNTM3LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQwog
ICAgIG1fZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA9IGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJs
ZWQ7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCi17Ci0gICAgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV1RGTW92ZShwYXJhbWV0ZXJz
KSk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQotewotICAgIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihzZXNzaW9u
SUQpOwotfQotCiB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nl
c3Npb25Jbk5ldHdvcmtQcm9jZXNzKCkKIHsKICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgMCk7CkBAIC0x
Mjk0LDExICsxMjgxLDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6
UwogICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5v
cmlnaW5zV2l0aENhY2hlKHNlc3Npb25JRCkpCiAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRy
aWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW4tPmRhdGEoKSwgV2Vic2l0ZURh
dGFUeXBlOjpNZW1vcnlDYWNoZSwgMCB9KTsKICAgICB9Ci0KLSAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkgewotICAgICAgICBp
ZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAg
ICAgICAgICAgd2Vic2l0ZURhdGEub3JpZ2luc1dpdGhDcmVkZW50aWFscyA9IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKS0+Y3JlZGVudGlhbFN0b3JhZ2Uo
KS5vcmlnaW5zV2l0aENyZWRlbnRpYWxzKCk7Ci0gICAgfQogfQogCiB2b2lkIFdlYlByb2Nlc3M6
OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjM5Njgz
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5
KQpAQCAtMTc4LDggKzE3OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhY2hlTW9kZWwoQ2Fj
aGVNb2RlbCk7CiAKICAgICB2b2lkIGVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb25J
bk5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgdm9pZCBhZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzJiYpOwotICAgIHZvaWQgZGVzdHJveVNlc3Npb24oUEFMOjpTZXNz
aW9uSUQpOwogCiAgICAgdm9pZCBwYWdlRGlkRW50ZXJXaW5kb3codWludDY0X3QgcGFnZUlEKTsK
ICAgICB2b2lkIHBhZ2VXaWxsTGVhdmVXaW5kb3codWludDY0X3QgcGFnZUlEKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZp
c2lvbiAyMzk2NzEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNTMsOSArNTMsNiBAQCBtZXNzYWdlcyAtPiBXZWJQ
cm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIENsZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKQog
Ci0gICAgQWRkV2Vic2l0ZURhdGFTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycyB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyk7Ci0gICAgRGVzdHJveVNlc3Np
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotCiAgICAgIyBQbHVnLWlucy4KICAgICBEaWRB
ZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHVpbnQzMl90IGhhc2gsIFdhbGxUaW1lIGV4cGly
YXRpb25UaW1lLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgUmVzZXRQbHVnSW5BdXRv
U3RhcnRPcmlnaW5EZWZhdWx0SGFzaGVzKEhhc2hNYXA8dWludDMyX3QsV2FsbFRpbWU+IGhhc2hl
cykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkocmV2aXNpb24gMjM5NjcwKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzU3LDcgKzM1Nyw2IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFBy
aXZhdGVCcm93c2luZ0UKICAgICBBU1NFUlQoIWhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwogICAgIGlmIChlbmFibGVkKSB7CiAgICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nl
c3Npb25Jbk5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzOjpsZWdhY3lQcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoKSk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25JRCgpKTsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2N1cmwvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2N1cmwvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJsL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxNSArNTYsNiBAQCBXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0OjpXZWJGcmFtZU5ldHdvCiB7CiB9CiAKLU5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAotewotICAg
IGlmIChmcmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oZnJhbWUoKS0+cGFnZSgpLT5zZXNzaW9u
SUQoKSkpCi0gICAgICAgICAgICByZXR1cm4gKnN0b3JhZ2VTZXNzaW9uOwotICAgIH0KLSAgICBy
ZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKLX0K
LQogV2ViRnJhbWVMb2FkZXJDbGllbnQqIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OndlYkZy
YW1lTG9hZGVyQ2xpZW50KCkgY29uc3QKIHsKICAgICBpZiAoIWZyYW1lKCkpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvY3VybC9XZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2N1cmwvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAyMzk2
NzApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvY3VybC9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KFdlYkZyYW1l
Kik7CiAKLSAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9u
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBz
dG9yYWdlU2Vzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KIH07CiAK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShy
ZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNTYs
NyArNTYsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHNvdXJjZUFwcGxp
Y2F0aW9uQXVkaXREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHNvdXJjZUFwcGxp
Y2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0
IG92ZXJyaWRlOwotICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNl
c3Npb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24qIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQog
fTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5tbQkocmV2aXNpb24gMjM5NjgzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00MywyMCArNDMsNiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRl
RGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
Ci17Ci0gICAgQVNTRVJUKCFoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNh
bkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKLSAgICBhdXRvIHNlc3Npb25JRCA9IHBhcmFtZXRlcnMubmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRDsKLSAgICBpZiAoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBTdHJpbmcgYmFzZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVpUHJvY2Vzc0J1bmRsZUlk
ZW50aWZpZXIoKTsKLSAgICBpZiAoYmFzZS5pc051bGwoKSkKLSAgICAgICAgYmFzZSA9IFtbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07Ci0KLSAgICBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmVuc3VyZVNlc3Npb24oc2Vzc2lvbklELCBiYXNlICsgJy4nICsgU3RyaW5nOjpu
dW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSk7Ci19Ci0KIGJvb2wgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6bG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS5sb2NhbEZpbGVDb250ZW50
U25pZmZpbmdFbmFibGVkKCk7CkBAIC04NCwxOSArNzAsNiBAQCBSZXNvdXJjZUVycm9yIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6CiAgICAgcmV0dXJuIGZyYW1lKCktPmxvYWRlcigpLmNsaWVu
dCgpLmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsKIH0KIAotTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBBU1NFUlQoIWhhc1Byb2Nlc3NQcml2aWxl
Z2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotICAgIGlmIChmcmFt
ZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oZnJhbWUoKS0+cGFnZSgpLT5zZXNzaW9u
SUQoKSkpCi0gICAgICAgICAgICByZXR1cm4gKnN0b3JhZ2VTZXNzaW9uOwotICAgICAgICAvLyBT
b21lIHJlcXVlc3RzIG1heSBzdGlsbCBiZSBjb21pbmcgc2hvcnRseSBhZnRlciBXZWJQcm9jZXNz
IHdhcyB0b2xkIHRvIGRlc3Ryb3kgaXRzIHNlc3Npb24uCi0gICAgICAgIExPR19FUlJPUigiV0VC
IEludmFsaWQgc2Vzc2lvbiBJRC4gUGxlYXNlIGZpbGUgYSBidWcgdW5sZXNzIHlvdSBqdXN0IGRp
c2FibGVkIHByaXZhdGUgYnJvd3NpbmcsIGluIHdoaWNoIGNhc2UgaXQncyBhbiBleHBlY3RlZCBy
YWNlLiIpOwotICAgIH0KLSAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0
U3RvcmFnZVNlc3Npb24oKTsKLX0KLQogV2ViRnJhbWVMb2FkZXJDbGllbnQqIFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQ6OndlYkZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3QKIHsKICAgICBpZiAo
IWZyYW1lKCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
c291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmNwcAkocmV2aXNpb24gMjM5NjgwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU4LDE1ICs1OCw2IEBAIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6Oldl
YkZyYW1lTmV0d28KIHsKIH0KIAotTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0Ci17Ci0gICAgaWYgKGZyYW1lKCkp
IHsKLSAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzdG9yYWdlU2Vzc2lvbihmcmFtZSgpLT5wYWdlKCktPnNlc3Npb25JRCgpKSkKLSAgICAg
ICAgICAgIHJldHVybiAqc3RvcmFnZVNlc3Npb247Ci0gICAgfQotICAgIHJldHVybiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwotfQotCiBXZWJGcmFtZUxv
YWRlckNsaWVudCogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6d2ViRnJhbWVMb2FkZXJDbGll
bnQoKSBjb25zdAogewogICAgIGlmICghZnJhbWUoKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291
cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQoV2ViRnJhbWUqKTsKIAotICAgIFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHN0b3JhZ2VTZXNzaW9u
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogfTsKIAogfQpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDIz
OTY3MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDM4LDggKzMwMzgsNiBAQCB2b2lkIFdlYlBhZ2U6OnNldExheWVy
SG9zdGluZ01vZGUoTGF5ZXJICiAKIHZvaWQgV2ViUGFnZTo6c2V0U2Vzc2lvbklEKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0g
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnM6OnByaXZhdGVTZXNzaW9uUGFyYW1ldGVycyhzZXNzaW9uSUQp
KTsKICAgICBtX3BhZ2UtPnNldFNlc3Npb25JRChzZXNzaW9uSUQpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAx
OS0wMS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFN0b3AgdXNpbmcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIGluIFdlYlByb2Nlc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzIzNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW06CisgICAgICAgIChXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jYWNoZWRSZXNwb25zZUZvclVSTDpdKToK
KyAgICAgICAgKC1bV2ViVmlldyBfY2xlYXJDcmVkZW50aWFsc10pOgorCiAyMDE5LTAxLTA0ICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUHJv
Z3Jlc3MgdG93YXJkcyBmaXhpbmcgTWFjIENNYWtlIGJ1aWxkCkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ5LDUgKzQ5LDUgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSBjb25zdCBvdmVycmlkZTsKLSAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IG92ZXJyaWRlOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQkocmV2aXNpb24g
MjM5NjcwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtOTAsMTQgKzkwLDE0IEBA
IFJlc291cmNlRXJyb3IgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDoKICAgICByZXR1cm4gZnJh
bWUoKS0+bG9hZGVyKCkuY2xpZW50KCkuYmxvY2tlZEVycm9yKHJlcXVlc3QpOwogfQogCi1OZXR3
b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNz
aW9uKCkgY29uc3QKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiogV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+cGFnZSgpICYmIGZyYW1lKCktPnBhZ2Uo
KS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkgewogICAgICAgICBpZiAoYXV0byogc2Vzc2lv
biA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQ6
OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSkpCi0gICAgICAgICAgICByZXR1cm4gKnNlc3Npb247
CisgICAgICAgICAgICByZXR1cm4gc2Vzc2lvbjsKICAgICAgICAgLy8gU29tZSByZXF1ZXN0cyBt
YXkgc3RpbGwgYmUgY29taW5nIHNob3J0bHkgYmVmb3JlIFdlYkNvcmUgdXBkYXRlcyB0aGUgc2Vz
c2lvbiBJRCBhbmQgYWZ0ZXIgV2ViS2l0IGRlc3Ryb3lzIHRoZSBwcml2YXRlIGJyb3dzaW5nIHNl
c3Npb24uCiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBzZXNzaW9uIElELiBQbGVhc2UgZmls
ZSBhIGJ1ZyB1bmxlc3MgeW91IGp1c3QgZGlzYWJsZWQgcHJpdmF0ZSBicm93c2luZywgaW4gd2hp
Y2ggY2FzZSBpdCdzIGFuIGV4cGVjdGVkIHJhY2UuIik7CiAgICAgfQotICAgIHJldHVybiBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOworICAgIHJldHVybiAm
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDIz
OTY3MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzY2OCw3ICszNjY4LDcgQEAgLSAoTlNDYWNoZWRVUkxSZXNwb25zZSAq
KV9jYWNoZWRSZXNwb25zZQogICAgIGlmICghX3ByaXZhdGUtPnBhZ2UpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbiA9
IF9wcml2YXRlLT5wYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgp
LT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vzc2lvbigpKQorICAgIGlmIChDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uID0gX3ByaXZhdGUtPnBhZ2UtPm1haW5GcmFtZSgp
LmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCktPnBsYXRmb3Jt
U2Vzc2lvbigpKQogICAgICAgICBjYWNoZWRSZXNwb25zZSA9IGNhY2hlZFJlc3BvbnNlRm9yUmVx
dWVzdChzdG9yYWdlU2Vzc2lvbiwgcmVxdWVzdC5nZXQoKSk7CiAgICAgZWxzZQogICAgICAgICBj
YWNoZWRSZXNwb25zZSA9IFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gY2FjaGVkUmVzcG9u
c2VGb3JSZXF1ZXN0OnJlcXVlc3QuZ2V0KCldOwpAQCAtOTI1MSw3ICs5MjUxLDcgQEAgLSAodm9p
ZClfY2xlYXJDcmVkZW50aWFscwogICAgIGlmICghbmV0d29ya2luZ0NvbnRleHQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG5ldHdvcmtpbmdDb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNyZWRl
bnRpYWxTdG9yYWdlKCkuY2xlYXJDcmVkZW50aWFscygpOworICAgIG5ldHdvcmtpbmdDb250ZXh0
LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50aWFsU3RvcmFnZSgpLmNsZWFyQ3JlZGVudGlhbHMo
KTsKIH0KIAogLSAoQk9PTClfbmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358602</attachid>
            <date>2019-01-08 09:15:30 -0800</date>
            <delta_ts>2019-01-08 12:39:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193236-20190108091530.patch</filename>
            <type>text/plain</type>
            <size>39770</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzOTcyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE5LTAxLTA4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2lu
ZyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gaW4gV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMjM2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLiAgU29t
ZSBjb2RlIHdhcyBvbmx5IHVzZWQgZm9yIFJlc291cmNlSGFuZGxlLCB3aGljaCBpc24ndCB1c2Vk
IGluIG1vZGVybiBXZWJLaXQsCisgICAgICAgIGFuZCBmb3IgY29va2llcywgd2hpY2ggYXJlIGhh
bmRsZWQgaW4gdGhlIE5ldHdvcmtQcm9jZXNzIGluIG1vZGVybiBXZWJLaXQuCisKKyAgICAgICAg
KiBsb2FkZXIvQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0b3JhZ2VTZXNzaW9u
KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6Y3JlYXRlTlNVUkxDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cGxhdGZv
cm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGU6OnRyeUhhbmRsZVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKToKKwogMjAxOS0wMS0wOCAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1v
dmUgV2luZG93cy1zcGVjaWZpYyBjb2RlIGZyb20gTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQu
Y3BwIHRvIGl0cyBvd24gZmlsZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUph
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAJ
KHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBOZXR3b3JraW5nQ29udGV4
dCogbmV0d29ya2luZ0NvbnQKIGlubGluZSBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VT
ZXNzaW9uKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCA9IG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KTsKLSAgICByZXR1cm4gY29u
dGV4dCA/IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkgOiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOworICAgIHJldHVybiBjb250ZXh0ID8gKmNvbnRleHQt
PnN0b3JhZ2VTZXNzaW9uKCkgOiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpOwogfQogCiBzdGF0aWMgSW5jbHVkZVNlY3VyZUNvb2tpZXMgc2hvdWxkSW5jbHVk
ZVNlY3VyZUNvb2tpZXMoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShyZXZpc2lvbiAyMzk2
NzApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHByaXZhdGU6CiAgICAgRW1wdHlGcmFtZU5ldHdvcmtp
bmdDb250ZXh0KCk7CiAKICAgICBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7IH0KKyAgICBOZXR3b3JrU3RvcmFnZVNl
c3Npb24qIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gJk5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7IH0KIAogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIGJvb2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTdHJpbmcgc291cmNl
QXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQog
Ci0gICAgdmlydHVhbCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lv
bigpIGNvbnN0ID0gMDsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFsIFJlc291cmNl
RXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0ID0gMDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5l
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkocmV2aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQ5LDEyICsxNDksMTIgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZV
UkxDb25uZWN0aQogICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBkLT5tX3Bhc3Mu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNzE3NDA1MD4gLSBG
b3IgVVJMcyB0aGF0IG1hdGNoIHRoZSBwYXRocyBvZiB0aG9zZSBwcmV2aW91c2x5IGNoYWxsZW5n
ZWQgZm9yIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24sIAogICAgICAgICAgICAgLy8gdHJ5IGFu
ZCByZXVzZSB0aGUgY3JlZGVudGlhbCBwcmVlbXB0aXZlbHksIGFzIGFsbG93ZWQgYnkgUkZDIDI2
MTcuCi0gICAgICAgICAgICBkLT5tX2luaXRpYWxDcmVkZW50aWFsID0gZC0+bV9jb250ZXh0LT5z
dG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuZ2V0KHBhcnRpdGlvbiwgZmlyc3RS
ZXF1ZXN0KCkudXJsKCkpOworICAgICAgICAgICAgZC0+bV9pbml0aWFsQ3JlZGVudGlhbCA9IGQt
Pm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQocGFy
dGl0aW9uLCBmaXJzdFJlcXVlc3QoKS51cmwoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAvLyBJZiB0aGVyZSBpcyBhbHJlYWR5IGEgcHJvdGVjdGlvbiBzcGFjZSBrbm93biBmb3Ig
dGhlIFVSTCwgdXBkYXRlIHN0b3JlZCBjcmVkZW50aWFscyBiZWZvcmUgc2VuZGluZyBhIHJlcXVl
c3QuCiAgICAgICAgICAgICAvLyBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBs
b2dvdXQgYnkgc2VuZGluZyBhbiBYTUxIdHRwUmVxdWVzdCB3aXRoIGtub3duIGluY29ycmVjdCBj
cmVkZW50aWFscywgYW5kIGFib3J0aW5nIGl0IGltbWVkaWF0ZWx5CiAgICAgICAgICAgICAvLyAo
c28gdGhhdCBhbiBhdXRoZW50aWNhdGlvbiBkaWFsb2cgZG9lc24ndCBwb3AgdXApLgotICAgICAg
ICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCku
c2V0KHBhcnRpdGlvbiwgQ3JlZGVudGlhbChkLT5tX3VzZXIsIGQtPm1fcGFzcywgQ3JlZGVudGlh
bFBlcnNpc3RlbmNlTm9uZSksIGZpcnN0UmVxdWVzdCgpLnVybCgpKTsKKyAgICAgICAgICAgIGQt
Pm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQocGFy
dGl0aW9uLCBDcmVkZW50aWFsKGQtPm1fdXNlciwgZC0+bV9wYXNzLCBDcmVkZW50aWFsUGVyc2lz
dGVuY2VOb25lKSwgZmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgICAgICB9CiAgICAgfQogICAg
ICAgICAKQEAgLTI2MSw3ICsyNjEsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAg
ICAgaWYgKCFkLT5tX2NvbnRleHQtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24o
KS5wbGF0Zm9ybVNlc3Npb24oKTsKKyAgICBkLT5tX3N0b3JhZ2VTZXNzaW9uID0gZC0+bV9jb250
ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5wbGF0Zm9ybVNlc3Npb24oKTsKIAogICAgIGJvb2wgc2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPSAhY2xpZW50KCkgfHwgY2xpZW50KCktPnNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMpOwogCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlcwogICAgICAgICAvLyBPbmx5IGNvbnNpZGVy
IGFwcGx5aW5nIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzIGlmIHRoaXMgaXMgYWN0dWFsbHkg
YSByZWRpcmVjdCBhbmQgdGhlIHJlZGlyZWN0CiAgICAgICAgIC8vIFVSTCBkaWRuJ3QgaW5jbHVk
ZSBjcmVkZW50aWFscyBvZiBpdHMgb3duLgogICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHko
KSAmJiBkLT5tX3Bhc3MuaXNFbXB0eSgpICYmICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7
Ci0gICAgICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBkLT5tX2NvbnRleHQtPnN0b3Jh
Z2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQocGFydGl0aW9uLCByZXF1ZXN0LnVy
bCgpKTsKKyAgICAgICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IGQtPm1fY29udGV4dC0+
c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQocGFydGl0aW9uLCByZXF1
ZXN0LnVybCgpKTsKICAgICAgICAgICAgIGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgICAgICAgICBkLT5tX2luaXRpYWxDcmVkZW50aWFsID0gY3JlZGVudGlhbDsKICAgICAg
ICAgICAgICAgICAKQEAgLTM4Miw3ICszODIsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0cnlI
YW5kbGVQYXNzd29yZEJhCiAgICAgICAgIFVSTCB1cmxUb1N0b3JlOwogICAgICAgICBpZiAoY2hh
bGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKQogICAgICAg
ICAgICAgdXJsVG9TdG9yZSA9IGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKTsKLSAg
ICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCku
c2V0KHBhcnRpdGlvbiwgY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCB1
cmxUb1N0b3JlKTsKKyAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVk
ZW50aWFsU3RvcmFnZSgpLnNldChwYXJ0aXRpb24sIGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7CiAgICAgICAgIAogICAgICAgICBDRlVSTENvbm5l
Y3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdl
dCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwogICAgICAgICBkLT5tX3Vz
ZXIgPSBTdHJpbmcoKTsKQEAgLTM5NiwxNiArMzk2LDE2IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6
OnRyeUhhbmRsZVBhc3N3b3JkQmEKICAgICAgICAgICAgIC8vIFRoZSBzdG9yZWQgY3JlZGVudGlh
bCB3YXNuJ3QgYWNjZXB0ZWQsIHN0b3AgdXNpbmcgaXQuCiAgICAgICAgICAgICAvLyBUaGVyZSBp
cyBhIHJhY2UgY29uZGl0aW9uIGhlcmUsIHNpbmNlIGEgZGlmZmVyZW50IGNyZWRlbnRpYWwgbWln
aHQgaGF2ZSBhbHJlYWR5IGJlZW4gc3RvcmVkIGJ5IGFub3RoZXIgUmVzb3VyY2VIYW5kbGUsCiAg
ICAgICAgICAgICAvLyBidXQgdGhlIG9ic2VydmFibGUgZWZmZWN0IHNob3VsZCBiZSB2ZXJ5IG1p
bm9yLCBpZiBhbnkuCi0gICAgICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCku
Y3JlZGVudGlhbFN0b3JhZ2UoKS5yZW1vdmUocGFydGl0aW9uLCBjaGFsbGVuZ2UucHJvdGVjdGlv
blNwYWNlKCkpOworICAgICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5j
cmVkZW50aWFsU3RvcmFnZSgpLnJlbW92ZShwYXJ0aXRpb24sIGNoYWxsZW5nZS5wcm90ZWN0aW9u
U3BhY2UoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWNoYWxsZW5nZS5wcmV2aW91c0Zh
aWx1cmVDb3VudCgpKSB7Ci0gICAgICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBkLT5t
X2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQocGFydGl0
aW9uLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOworICAgICAgICAgICAgQ3JlZGVudGlh
bCBjcmVkZW50aWFsID0gZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50aWFs
U3RvcmFnZSgpLmdldChwYXJ0aXRpb24sIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSk7CiAg
ICAgICAgICAgICBpZiAoIWNyZWRlbnRpYWwuaXNFbXB0eSgpICYmIGNyZWRlbnRpYWwgIT0gZC0+
bV9pbml0aWFsQ3JlZGVudGlhbCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChjcmVkZW50aWFs
LnBlcnNpc3RlbmNlKCkgPT0gQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7CiAgICAgICAgICAg
ICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09
IDQwMSkgewogICAgICAgICAgICAgICAgICAgICAvLyBTdG9yZSB0aGUgY3JlZGVudGlhbCBiYWNr
LCBwb3NzaWJseSBhZGRpbmcgaXQgYXMgYSBkZWZhdWx0IGZvciB0aGlzIGRpcmVjdG9yeS4KLSAg
ICAgICAgICAgICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRp
YWxTdG9yYWdlKCkuc2V0KHBhcnRpdGlvbiwgY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rp
b25TcGFjZSgpLCBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCkpOworICAgICAgICAg
ICAgICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxTdG9y
YWdlKCkuc2V0KHBhcnRpdGlvbiwgY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFj
ZSgpLCBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCkpOwogICAgICAgICAgICAgICAg
IH0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25V
c2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY3JlZGVudGlhbC5jZkNyZWRlbnRp
YWwoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKQEAgLTQ1NSw3ICs0NTUs
NyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoCiAgICAgICAgIGlm
IChjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCiAg
ICAgICAgICAgICB1cmxUb1N0b3JlID0gY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgp
OyAKIAotICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0
b3JhZ2UoKS5zZXQoZmlyc3RSZXF1ZXN0KCkuY2FjaGVQYXJ0aXRpb24oKSwgd2ViQ3JlZGVudGlh
bCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCB1cmxUb1N0b3JlKTsKKyAgICAgICAgZC0+
bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChmaXJz
dFJlcXVlc3QoKS5jYWNoZVBhcnRpdGlvbigpLCB3ZWJDcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJv
dGVjdGlvblNwYWNlKCksIHVybFRvU3RvcmUpOwogCiAgICAgICAgIGlmIChkLT5tX2Nvbm5lY3Rp
b24pIHsKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTU3MSw3ICs1NzEsNyBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjCiAgICAgYm9vbCBzaG91bGRDb250ZW50RW5j
b2RpbmdTbmlmZiA9IHRydWU7CiAgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBh
ZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGUoY29udGV4dCwgcmVxdWVzdCwgJmNsaWVudCwgZGVm
ZXJzTG9hZGluZywgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlm
ZikpOwogCi0gICAgaGFuZGxlLT5kLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFn
ZVNlc3Npb24oKS5wbGF0Zm9ybVNlc3Npb24oKTsKKyAgICBoYW5kbGUtPmQtPm1fc3RvcmFnZVNl
c3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5wbGF0Zm9ybVNlc3Npb24oKTsKIAog
ICAgIGlmIChoYW5kbGUtPmQtPm1fc2NoZWR1bGVkRmFpbHVyZVR5cGUgIT0gTm9GYWlsdXJlKSB7
CiAgICAgICAgIGVycm9yID0gY29udGV4dC0+YmxvY2tlZEVycm9yKHJlcXVlc3QpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VIYW5kbGVNYWMubW0JKHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTcsMTIgKzE1NywxMiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rp
CiAgICAgICAgIGlmIChkLT5tX3VzZXIuaXNFbXB0eSgpICYmIGQtPm1fcGFzcy5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83MTc0MDUwPiAtIEZvciBVUkxzIHRo
YXQgbWF0Y2ggdGhlIHBhdGhzIG9mIHRob3NlIHByZXZpb3VzbHkgY2hhbGxlbmdlZCBmb3IgSFRU
UCBCYXNpYyBhdXRoZW50aWNhdGlvbiwgCiAgICAgICAgICAgICAvLyB0cnkgYW5kIHJldXNlIHRo
ZSBjcmVkZW50aWFsIHByZWVtcHRpdmVseSwgYXMgYWxsb3dlZCBieSBSRkMgMjYxNy4KLSAgICAg
ICAgICAgIGQtPm1faW5pdGlhbENyZWRlbnRpYWwgPSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNz
aW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQoZmlyc3RSZXF1ZXN0KCkuY2FjaGVQYXJ0aXRp
b24oKSwgZmlyc3RSZXF1ZXN0KCkudXJsKCkpOworICAgICAgICAgICAgZC0+bV9pbml0aWFsQ3Jl
ZGVudGlhbCA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3Jh
Z2UoKS5nZXQoZmlyc3RSZXF1ZXN0KCkuY2FjaGVQYXJ0aXRpb24oKSwgZmlyc3RSZXF1ZXN0KCku
dXJsKCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYWxy
ZWFkeSBhIHByb3RlY3Rpb24gc3BhY2Uga25vd24gZm9yIHRoZSBVUkwsIHVwZGF0ZSBzdG9yZWQg
Y3JlZGVudGlhbHMgYmVmb3JlIHNlbmRpbmcgYSByZXF1ZXN0LgogICAgICAgICAgICAgLy8gVGhp
cyBtYWtlcyBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgbG9nb3V0IGJ5IHNlbmRpbmcgYW4gWE1M
SHR0cFJlcXVlc3Qgd2l0aCBrbm93biBpbmNvcnJlY3QgY3JlZGVudGlhbHMsIGFuZCBhYm9ydGlu
ZyBpdCBpbW1lZGlhdGVseQogICAgICAgICAgICAgLy8gKHNvIHRoYXQgYW4gYXV0aGVudGljYXRp
b24gZGlhbG9nIGRvZXNuJ3QgcG9wIHVwKS4KLSAgICAgICAgICAgIGQtPm1fY29udGV4dC0+c3Rv
cmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChmaXJzdFJlcXVlc3QoKS5jYWNo
ZVBhcnRpdGlvbigpLCBDcmVkZW50aWFsKGQtPm1fdXNlciwgZC0+bV9wYXNzLCBDcmVkZW50aWFs
UGVyc2lzdGVuY2VOb25lKSwgZmlyc3RSZXF1ZXN0KCkudXJsKCkpOworICAgICAgICAgICAgZC0+
bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChmaXJz
dFJlcXVlc3QoKS5jYWNoZVBhcnRpdGlvbigpLCBDcmVkZW50aWFsKGQtPm1fdXNlciwgZC0+bV9w
YXNzLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSwgZmlyc3RSZXF1ZXN0KCkudXJsKCkpOwog
ICAgICAgICB9CiAgICAgfQogICAgICAgICAKQEAgLTI0MCw3ICsyNDAsNyBAQCBib29sIFJlc291
cmNlSGFuZGxlOjpzdGFydCgpCiAgICAgaWYgKCFkLT5tX2NvbnRleHQtPmlzVmFsaWQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGQtPm1fY29u
dGV4dC0+c3RvcmFnZVNlc3Npb24oKS5wbGF0Zm9ybVNlc3Npb24oKTsKKyAgICBkLT5tX3N0b3Jh
Z2VTZXNzaW9uID0gZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5wbGF0Zm9ybVNlc3Np
b24oKTsKIAogICAgIC8vIEZJWE1FOiBEbyBub3QgdXNlIHRoZSBzeW5jIHZlcnNpb24gb2Ygc2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Ugd2hlbiB0aGUgY2xpZW50IHJldHVybnMgdHJ1ZSBmcm9t
IHVzZXNBc3luY0NhbGxiYWNrcy4KICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
ID0gIWNsaWVudCgpIHx8IGNsaWVudCgpLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSh0aGlz
KTsKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRS
ZXNvdXJjCiAgICAgYm9vbCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiA9IHRydWU7CiAgICAg
UmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5k
bGUoY29udGV4dCwgcmVxdWVzdCwgJmNsaWVudCwgZGVmZXJzTG9hZGluZywgc2hvdWxkQ29udGVu
dFNuaWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZikpOwogCi0gICAgaGFuZGxlLT5kLT5t
X3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5wbGF0Zm9ybVNlc3Np
b24oKTsKKyAgICBoYW5kbGUtPmQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5zdG9yYWdl
U2Vzc2lvbigpLT5wbGF0Zm9ybVNlc3Npb24oKTsKIAogICAgIGlmIChjb250ZXh0ICYmIGhhbmRs
ZS0+ZC0+bV9zY2hlZHVsZWRGYWlsdXJlVHlwZSAhPSBOb0ZhaWx1cmUpIHsKICAgICAgICAgZXJy
b3IgPSBjb250ZXh0LT5ibG9ja2VkRXJyb3IocmVxdWVzdCk7CkBAIC00NDksNyArNDQ5LDcgQEAg
dm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlcwogICAgICAgICAvLyBPbmx5
IGNvbnNpZGVyIGFwcGx5aW5nIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzIGlmIHRoaXMgaXMg
YWN0dWFsbHkgYSByZWRpcmVjdCBhbmQgdGhlIHJlZGlyZWN0CiAgICAgICAgIC8vIFVSTCBkaWRu
J3QgaW5jbHVkZSBjcmVkZW50aWFscyBvZiBpdHMgb3duLgogICAgICAgICBpZiAoZC0+bV91c2Vy
LmlzRW1wdHkoKSAmJiBkLT5tX3Bhc3MuaXNFbXB0eSgpICYmICFyZWRpcmVjdFJlc3BvbnNlLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBkLT5tX2NvbnRl
eHQtPnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQocmVxdWVzdC5jYWNo
ZVBhcnRpdGlvbigpLCByZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgICAgIENyZWRlbnRpYWwgY3Jl
ZGVudGlhbCA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3Jh
Z2UoKS5nZXQocmVxdWVzdC5jYWNoZVBhcnRpdGlvbigpLCByZXF1ZXN0LnVybCgpKTsKICAgICAg
ICAgICAgIGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBkLT5t
X2luaXRpYWxDcmVkZW50aWFsID0gY3JlZGVudGlhbDsKICAgICAgICAgICAgICAgICAKQEAgLTU0
MCwxNiArNTQwLDE2IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnRyeUhhbmRsZVBhc3N3b3JkQmEK
ICAgICAgICAgICAgIC8vIFRoZSBzdG9yZWQgY3JlZGVudGlhbCB3YXNuJ3QgYWNjZXB0ZWQsIHN0
b3AgdXNpbmcgaXQuCiAgICAgICAgICAgICAvLyBUaGVyZSBpcyBhIHJhY2UgY29uZGl0aW9uIGhl
cmUsIHNpbmNlIGEgZGlmZmVyZW50IGNyZWRlbnRpYWwgbWlnaHQgaGF2ZSBhbHJlYWR5IGJlZW4g
c3RvcmVkIGJ5IGFub3RoZXIgUmVzb3VyY2VIYW5kbGUsCiAgICAgICAgICAgICAvLyBidXQgdGhl
IG9ic2VydmFibGUgZWZmZWN0IHNob3VsZCBiZSB2ZXJ5IG1pbm9yLCBpZiBhbnkuCi0gICAgICAg
ICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5y
ZW1vdmUoZC0+bV9wYXJ0aXRpb24sIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSk7CisgICAg
ICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxTdG9yYWdl
KCkucmVtb3ZlKGQtPm1fcGFydGl0aW9uLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKCFjaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQo
KSkgewotICAgICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gZC0+bV9jb250ZXh0LT5z
dG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuZ2V0KGQtPm1fcGFydGl0aW9uLCBj
aGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOworICAgICAgICAgICAgQ3JlZGVudGlhbCBjcmVk
ZW50aWFsID0gZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50aWFsU3RvcmFn
ZSgpLmdldChkLT5tX3BhcnRpdGlvbiwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKTsKICAg
ICAgICAgICAgIGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkgJiYgY3JlZGVudGlhbCAhPSBkLT5t
X2luaXRpYWxDcmVkZW50aWFsKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGNyZWRlbnRpYWwu
cGVyc2lzdGVuY2UoKSA9PSBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKTsKICAgICAgICAgICAg
ICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0g
NDAxKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFN0b3JlIHRoZSBjcmVkZW50aWFsIGJhY2ss
IHBvc3NpYmx5IGFkZGluZyBpdCBhcyBhIGRlZmF1bHQgZm9yIHRoaXMgZGlyZWN0b3J5LgotICAg
ICAgICAgICAgICAgICAgICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlh
bFN0b3JhZ2UoKS5zZXQoZC0+bV9wYXJ0aXRpb24sIGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UoKSwgY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50aWFs
U3RvcmFnZSgpLnNldChkLT5tX3BhcnRpdGlvbiwgY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZSgpLCBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCkpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBbY2hhbGxlbmdlLnNlbmRlcigpIHVzZUNyZWRl
bnRpYWw6Y3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTptYWMoY2hhbGxlbmdlKV07CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01OTEs
NyArNTkxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKAogICAg
ICAgICBVUkwgdXJsVG9TdG9yZTsKICAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9u
c2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQwMSkKICAgICAgICAgICAgIHVybFRvU3RvcmUgPSBj
aGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCk7Ci0gICAgICAgIGQtPm1fY29udGV4dC0+
c3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChkLT5tX3BhcnRpdGlvbiwg
d2ViQ3JlZGVudGlhbCwgUHJvdGVjdGlvblNwYWNlKFtkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2Ug
cHJvdGVjdGlvblNwYWNlXSksIHVybFRvU3RvcmUpOworICAgICAgICBkLT5tX2NvbnRleHQtPnN0
b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KGQtPm1fcGFydGl0aW9uLCB3
ZWJDcmVkZW50aWFsLCBQcm90ZWN0aW9uU3BhY2UoW2QtPm1fY3VycmVudE1hY0NoYWxsZW5nZSBw
cm90ZWN0aW9uU3BhY2VdKSwgdXJsVG9TdG9yZSk7CiAgICAgICAgIFtbZC0+bV9jdXJyZW50TWFj
Q2hhbGxlbmdlIHNlbmRlcl0gdXNlQ3JlZGVudGlhbDp3ZWJDcmVkZW50aWFsLm5zQ3JlZGVudGlh
bCgpIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmQtPm1fY3VycmVudE1hY0NoYWxsZW5nZV07
CiAgICAgfSBlbHNlCiAgICAgICAgIFtbZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlIHNlbmRlcl0g
dXNlQ3JlZGVudGlhbDpjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpIGZvckF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOmQtPm1fY3VycmVudE1hY0NoYWxsZW5nZV07CkluZGV4OiBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNp
b24gMjM5NzI1KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwzOSBAQAorMjAxOS0wMS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIFN0b3AgdXNpbmcgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
IGluIFdlYlByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MzIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAg
ICogU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlUG9saWNpZXNEYXRhOjphcHBseVRvRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRyeVRha2VQcmV3YXJtZWRQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURh
dGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwYWdlRW5kVXNpbmdX
ZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nl
c3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW06
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNp
dGVEYXRhU3RvcmVTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6c2V0U2Vzc2lvbklEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24pOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAxOS0wMS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFsd2F5cyBjYWxsIENvbXBsZXRpb25IYW5k
bGVyIGluIENhY2hlOjpzdG9yZQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDIzOTY3MCkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw2IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVyczo6ZW5jb2QKICAgICBlbmNvZGVyIDw8IHNob3VsZENhcHR1cmVWaWRlb0luVUlQcm9j
ZXNzOwogICAgIGVuY29kZXIgPDwgc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzczsKICNl
bmRpZgotICAgIGVuY29kZXIgPDwgc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uOwogICAg
IGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0VtcHR5RG9jdW1lbnQ7CiAgICAgZW5j
b2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzU2VjdXJlOwogICAgIGVuY29kZXIgPDwgdXJs
U2NoZW1lc1JlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeTsKQEAgLTI2
Nyw4ICsyNjYsNiBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZENhcHR1cmVEaXNwbGF5SW5V
SVByb2Nlc3MpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51
cmxTY2hlbWVzUmVnaXN0ZXJlZEFzRW1wdHlEb2N1bWVudCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVy
ZWRBc1NlY3VyZSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNCw3ICsxMjQsNiBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7
CiAKICAgICBkb3VibGUgZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwgeyBJTlRfTUFYIH07
CiAKLSAgICBib29sIHNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbiB7IGZhbHNlIH07CiAg
ICAgYm9vbCBzaG91bGRBbHdheXNVc2VDb21wbGV4VGV4dENvZGVQYXRoIHsgZmFsc2UgfTsKICAg
ICBib29sIHNob3VsZEVuYWJsZU1lbW9yeVByZXNzdXJlUmVsaWVmTG9nZ2luZyB7IGZhbHNlIH07
CiAgICAgYm9vbCBzaG91bGRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciB7IGZhbHNlIH07
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmNwcAko
cmV2aXNpb24gMjM5NjcwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVz
RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSwxMSArMTYxLDggQEAgdm9pZCBXZWJzaXRl
UG9saWNpZXNEYXRhOjphcHBseVRvRG9jdW1lbgogCiAgICAgaWYgKHdlYnNpdGVQb2xpY2llcy53
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycykgewogICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBk
b2N1bWVudExvYWRlci5mcmFtZSgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogcGFnZSA9IGZy
YW1lLT5wYWdlKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHNlc3Npb25JRCA9IHdlYnNpdGVQ
b2xpY2llcy53ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy0+bmV0d29ya1Nlc3Npb25QYXJhbWV0
ZXJzLnNlc3Npb25JRDsKLSAgICAgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5h
ZGRXZWJzaXRlRGF0YVN0b3JlKFdURk1vdmUoKndlYnNpdGVQb2xpY2llcy53ZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycykpOwotICAgICAgICAgICAgICAgIHBhZ2UtPnNldFNlc3Npb25JRChzZXNz
aW9uSUQpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFt
ZS0+cGFnZSgpKQorICAgICAgICAgICAgICAgIHBhZ2UtPnNldFNlc3Npb25JRCh3ZWJzaXRlUG9s
aWNpZXMud2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMtPm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVy
cy5zZXNzaW9uSUQpOwogICAgICAgICB9CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjM5NjcwKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
ODksMTAgKzY4OSw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEFueVBhZ2VHcm91cE1pZ2gK
IHsKICAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgewogICAgICAgICBzZW5kVG9OZXR3
b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3Rv
cmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmxlZ2FjeVByaXZhdGVTZXNzaW9uUGFyYW1l
dGVycygpKSk7Ci0gICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vz
czo6QWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKCkpKTsKICAgICB9IGVsc2UgewogICAgICAgICBuZXR3
b3JrUHJvY2VzcygpLT5yZW1vdmVTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRl
U2Vzc2lvbklEKCkpOwotICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OkRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lv
bklEKCkpKTsKICAgICB9CiB9CiAKQEAgLTc2NSw4ICs3NjMsNiBAQCBSZWZQdHI8V2ViUHJvY2Vz
c1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6CiAKICAgICBBU1NFUlQobV9wcmV3YXJtZWRQcm9jZXNz
LT5pc1ByZXdhcm1lZCgpKTsKICAgICBtX3ByZXdhcm1lZFByb2Nlc3MtPm1hcmtJc05vTG9uZ2Vy
SW5QcmV3YXJtZWRQb29sKCk7Ci0gICAgaWYgKCZtX3ByZXdhcm1lZFByb2Nlc3MtPndlYnNpdGVE
YXRhU3RvcmUoKSAhPSAmd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgbV9wcmV3YXJtZWRQcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKHdlYnNp
dGVEYXRhU3RvcmUucGFyYW1ldGVycygpKSwgMCk7CiAKICAgICByZXR1cm4gc3RkOjpleGNoYW5n
ZShtX3ByZXdhcm1lZFByb2Nlc3MsIG51bGxwdHIpOwogfQpAQCAtODU0LDggKzg1MCw2IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQcm8KICAgICAgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMu
amF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6
OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7CiAgICAgfQogCi0gICAgcGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5n
TmV0d29ya1Nlc3Npb24gPSBtX3Nob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsKLQogICAg
IHBhcmFtZXRlcnMuY2FjaGVNb2RlbCA9IGNhY2hlTW9kZWwoKTsKICAgICBwYXJhbWV0ZXJzLmxh
bmd1YWdlcyA9IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKIApAQCAtOTQyLDkgKzkzNiw2IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQcm8KICAgICBwcm9jZXNzLnNl
bmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFFPUyh3ZWJQcm9jZXNzTGF0ZW5jeVFPUygpLCB3
ZWJQcm9jZXNzVGhyb3VnaHB1dFFPUygpKSwgMCk7CiAjZW5kaWYKIAotICAgIGlmIChXZWJQcmVm
ZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpKQotICAgICAgICBwcm9j
ZXNzLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmxlZ2FjeVByaXZhdGVTZXNzaW9uUGFyYW1ldGVycygpKSwg
MCk7Ci0KICAgICBpZiAobV9hdXRvbWF0aW9uU2Vzc2lvbikKICAgICAgICAgcHJvY2Vzcy5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVBdXRvbWF0aW9uU2Vzc2lvblByb3h5KG1fYXV0
b21hdGlvblNlc3Npb24tPnNlc3Npb25JZGVudGlmaWVyKCkpLCAwKTsKIApAQCAtMTE4OCwxMiAr
MTE3OSwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpCiAgICAg
ICAgIEFTU0VSVChwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkubmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRCA9PSBzZXNzaW9uSUQpOwogICAgICAgICBpZiAobV9u
ZXR3b3JrUHJvY2VzcykKICAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmFkZFNlc3Npb24o
bWFrZVJlZihwYWdlLndlYnNpdGVEYXRhU3RvcmUoKSkpOwotICAgICAgICBwYWdlLnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzOjpwcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoc2Vzc2lvbklEKSks
IDApOwogICAgICAgICBwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5jbGVhclBlbmRpbmdDb29raWVz
KCk7CiAgICAgfSBlbHNlIGlmIChzZXNzaW9uSUQgIT0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKSkgewogICAgICAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKICAgICAgICAgICAg
IG1fbmV0d29ya1Byb2Nlc3MtPmFkZFNlc3Npb24obWFrZVJlZihwYWdlLndlYnNpdGVEYXRhU3Rv
cmUoKSkpOwotICAgICAgICBwYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpBZGRXZWJzaXRlRGF0YVN0b3JlKHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMo
KSksIDApOwogICAgICAgICBwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5jbGVhclBlbmRpbmdDb29r
aWVzKCk7CiAgICAgfQogCkBAIC0xMjI0LDcgKzEyMTMsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpwYWdlRW5kVXNpbmdXZWJzaXRlCiAgICAgICAgIC8vIFRoZSBsYXN0IHVzZXIgb2YgdGhpcyBu
b24tZGVmYXVsdCBQQUw6OlNlc3Npb25JRCBpcyBnb25lLCBzbyBjbGVhbiBpdCB1cCBpbiB0aGUg
Y2hpbGQgcHJvY2Vzc2VzLgogICAgICAgICBpZiAobmV0d29ya1Byb2Nlc3MoKSkKICAgICAgICAg
ICAgIG5ldHdvcmtQcm9jZXNzKCktPnJlbW92ZVNlc3Npb24oc2Vzc2lvbklEKTsKLSAgICAgICAg
cGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVzdHJveVNlc3Npb24o
c2Vzc2lvbklEKSwgMCk7CiAgICAgfQogfQogCkBAIC0yMjM4LDkgKzIyMjYsNiBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvCiAgICAgICAgIGlmICgmKCppdCktPnBh
Z2UoKSA9PSAmcGFnZSkKICAgICAgICAgICAgIG1fc3VzcGVuZGVkUGFnZXMucmVtb3ZlKGl0KTsK
IAotICAgICAgICBpZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmcGFnZS53ZWJz
aXRlRGF0YVN0b3JlKCkpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFt
ZXRlcnMoKSksIDApOwotCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHByb2Nlc3MpLCBudWxscHRyLCByZWFzb24pOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjM5NjcxKQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODEsOSAr
MzgxLDYgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZQogCiAgICAg
c2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhwYXJhbWV0ZXJzLnNob3VsZFVzZUZvbnRTbW9vdGhp
bmcpOwogCi0gICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9u
KQotICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Np
b24oKTsKLQogICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpOwogCiAgICAgc2V0
VGVybWluYXRpb25UaW1lb3V0KHBhcmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0KTsKQEAgLTU0
MCwxNiArNTM3LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQwog
ICAgIG1fZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA9IGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJs
ZWQ7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCi17Ci0gICAgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV1RGTW92ZShwYXJhbWV0ZXJz
KSk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJveVNlc3Npb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQotewotICAgIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihzZXNzaW9u
SUQpOwotfQotCiB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nl
c3Npb25Jbk5ldHdvcmtQcm9jZXNzKCkKIHsKICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgMCk7CkBAIC0x
Mjk0LDExICsxMjgxLDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6
UwogICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5v
cmlnaW5zV2l0aENhY2hlKHNlc3Npb25JRCkpCiAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRy
aWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW4tPmRhdGEoKSwgV2Vic2l0ZURh
dGFUeXBlOjpNZW1vcnlDYWNoZSwgMCB9KTsKICAgICB9Ci0KLSAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkgewotICAgICAgICBp
ZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAg
ICAgICAgICAgd2Vic2l0ZURhdGEub3JpZ2luc1dpdGhDcmVkZW50aWFscyA9IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKS0+Y3JlZGVudGlhbFN0b3JhZ2Uo
KS5vcmlnaW5zV2l0aENyZWRlbnRpYWxzKCk7Ci0gICAgfQogfQogCiB2b2lkIFdlYlByb2Nlc3M6
OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjM5Njgz
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5
KQpAQCAtMTc4LDggKzE3OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhY2hlTW9kZWwoQ2Fj
aGVNb2RlbCk7CiAKICAgICB2b2lkIGVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb25J
bk5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgdm9pZCBhZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzJiYpOwotICAgIHZvaWQgZGVzdHJveVNlc3Npb24oUEFMOjpTZXNz
aW9uSUQpOwogCiAgICAgdm9pZCBwYWdlRGlkRW50ZXJXaW5kb3codWludDY0X3QgcGFnZUlEKTsK
ICAgICB2b2lkIHBhZ2VXaWxsTGVhdmVXaW5kb3codWludDY0X3QgcGFnZUlEKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZp
c2lvbiAyMzk2NzEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNTMsOSArNTMsNiBAQCBtZXNzYWdlcyAtPiBXZWJQ
cm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIENsZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKQog
Ci0gICAgQWRkV2Vic2l0ZURhdGFTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycyB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyk7Ci0gICAgRGVzdHJveVNlc3Np
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotCiAgICAgIyBQbHVnLWlucy4KICAgICBEaWRB
ZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHVpbnQzMl90IGhhc2gsIFdhbGxUaW1lIGV4cGly
YXRpb25UaW1lLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgUmVzZXRQbHVnSW5BdXRv
U3RhcnRPcmlnaW5EZWZhdWx0SGFzaGVzKEhhc2hNYXA8dWludDMyX3QsV2FsbFRpbWU+IGhhc2hl
cykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkocmV2aXNpb24gMjM5NjcwKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzU3LDcgKzM1Nyw2IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFBy
aXZhdGVCcm93c2luZ0UKICAgICBBU1NFUlQoIWhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwogICAgIGlmIChlbmFibGVkKSB7CiAgICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nl
c3Npb25Jbk5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzOjpsZWdhY3lQcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoKSk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25JRCgpKTsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2N1cmwvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2N1cmwvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJsL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxNSArNTYsNiBAQCBXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0OjpXZWJGcmFtZU5ldHdvCiB7CiB9CiAKLU5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAotewotICAg
IGlmIChmcmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oZnJhbWUoKS0+cGFnZSgpLT5zZXNzaW9u
SUQoKSkpCi0gICAgICAgICAgICByZXR1cm4gKnN0b3JhZ2VTZXNzaW9uOwotICAgIH0KLSAgICBy
ZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKLX0K
LQogV2ViRnJhbWVMb2FkZXJDbGllbnQqIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OndlYkZy
YW1lTG9hZGVyQ2xpZW50KCkgY29uc3QKIHsKICAgICBpZiAoIWZyYW1lKCkpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvY3VybC9XZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2N1cmwvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAyMzk2
NzApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvY3VybC9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KFdlYkZyYW1l
Kik7CiAKLSAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9u
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBz
dG9yYWdlU2Vzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KIH07CiAK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShy
ZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNTYs
NyArNTYsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHNvdXJjZUFwcGxp
Y2F0aW9uQXVkaXREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHNvdXJjZUFwcGxp
Y2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0
IG92ZXJyaWRlOwotICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNl
c3Npb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24qIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQog
fTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5tbQkocmV2aXNpb24gMjM5NjgzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00MywyMCArNDMsNiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRl
RGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
Ci17Ci0gICAgQVNTRVJUKCFoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNh
bkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKLSAgICBhdXRvIHNlc3Npb25JRCA9IHBhcmFtZXRlcnMubmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRDsKLSAgICBpZiAoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBTdHJpbmcgYmFzZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVpUHJvY2Vzc0J1bmRsZUlk
ZW50aWZpZXIoKTsKLSAgICBpZiAoYmFzZS5pc051bGwoKSkKLSAgICAgICAgYmFzZSA9IFtbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07Ci0KLSAgICBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmVuc3VyZVNlc3Npb24oc2Vzc2lvbklELCBiYXNlICsgJy4nICsgU3RyaW5nOjpu
dW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSk7Ci19Ci0KIGJvb2wgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6bG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS5sb2NhbEZpbGVDb250ZW50
U25pZmZpbmdFbmFibGVkKCk7CkBAIC04NCwxOSArNzAsNiBAQCBSZXNvdXJjZUVycm9yIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6CiAgICAgcmV0dXJuIGZyYW1lKCktPmxvYWRlcigpLmNsaWVu
dCgpLmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsKIH0KIAotTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBBU1NFUlQoIWhhc1Byb2Nlc3NQcml2aWxl
Z2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotICAgIGlmIChmcmFt
ZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oZnJhbWUoKS0+cGFnZSgpLT5zZXNzaW9u
SUQoKSkpCi0gICAgICAgICAgICByZXR1cm4gKnN0b3JhZ2VTZXNzaW9uOwotICAgICAgICAvLyBT
b21lIHJlcXVlc3RzIG1heSBzdGlsbCBiZSBjb21pbmcgc2hvcnRseSBhZnRlciBXZWJQcm9jZXNz
IHdhcyB0b2xkIHRvIGRlc3Ryb3kgaXRzIHNlc3Npb24uCi0gICAgICAgIExPR19FUlJPUigiV0VC
IEludmFsaWQgc2Vzc2lvbiBJRC4gUGxlYXNlIGZpbGUgYSBidWcgdW5sZXNzIHlvdSBqdXN0IGRp
c2FibGVkIHByaXZhdGUgYnJvd3NpbmcsIGluIHdoaWNoIGNhc2UgaXQncyBhbiBleHBlY3RlZCBy
YWNlLiIpOwotICAgIH0KLSAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0
U3RvcmFnZVNlc3Npb24oKTsKLX0KLQogV2ViRnJhbWVMb2FkZXJDbGllbnQqIFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQ6OndlYkZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3QKIHsKICAgICBpZiAo
IWZyYW1lKCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
c291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmNwcAkocmV2aXNpb24gMjM5NjgwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU4LDE1ICs1OCw2IEBAIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6Oldl
YkZyYW1lTmV0d28KIHsKIH0KIAotTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0Ci17Ci0gICAgaWYgKGZyYW1lKCkp
IHsKLSAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzdG9yYWdlU2Vzc2lvbihmcmFtZSgpLT5wYWdlKCktPnNlc3Npb25JRCgpKSkKLSAgICAg
ICAgICAgIHJldHVybiAqc3RvcmFnZVNlc3Npb247Ci0gICAgfQotICAgIHJldHVybiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwotfQotCiBXZWJGcmFtZUxv
YWRlckNsaWVudCogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6d2ViRnJhbWVMb2FkZXJDbGll
bnQoKSBjb25zdAogewogICAgIGlmICghZnJhbWUoKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291
cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQoV2ViRnJhbWUqKTsKIAotICAgIFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHN0b3JhZ2VTZXNzaW9u
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogfTsKIAogfQpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDIz
OTY3MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDM4LDggKzMwMzgsNiBAQCB2b2lkIFdlYlBhZ2U6OnNldExheWVy
SG9zdGluZ01vZGUoTGF5ZXJICiAKIHZvaWQgV2ViUGFnZTo6c2V0U2Vzc2lvbklEKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0g
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnM6OnByaXZhdGVTZXNzaW9uUGFyYW1ldGVycyhzZXNzaW9uSUQp
KTsKICAgICBtX3BhZ2UtPnNldFNlc3Npb25JRChzZXNzaW9uSUQpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAx
OS0wMS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFN0b3AgdXNpbmcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIGluIFdlYlByb2Nlc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzIzNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW06CisgICAgICAgIChXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jYWNoZWRSZXNwb25zZUZvclVSTDpdKToK
KyAgICAgICAgKC1bV2ViVmlldyBfY2xlYXJDcmVkZW50aWFsc10pOgorCiAyMDE5LTAxLTA0ICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUHJv
Z3Jlc3MgdG93YXJkcyBmaXhpbmcgTWFjIENNYWtlIGJ1aWxkCkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAyMzk2NzApCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ5LDUgKzQ5LDUgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSBjb25zdCBvdmVycmlkZTsKLSAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IG92ZXJyaWRlOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQkocmV2aXNpb24g
MjM5NjcwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtOTAsMTQgKzkwLDE0IEBA
IFJlc291cmNlRXJyb3IgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDoKICAgICByZXR1cm4gZnJh
bWUoKS0+bG9hZGVyKCkuY2xpZW50KCkuYmxvY2tlZEVycm9yKHJlcXVlc3QpOwogfQogCi1OZXR3
b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNz
aW9uKCkgY29uc3QKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiogV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+cGFnZSgpICYmIGZyYW1lKCktPnBhZ2Uo
KS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkgewogICAgICAgICBpZiAoYXV0byogc2Vzc2lv
biA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQ6
OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSkpCi0gICAgICAgICAgICByZXR1cm4gKnNlc3Npb247
CisgICAgICAgICAgICByZXR1cm4gc2Vzc2lvbjsKICAgICAgICAgLy8gU29tZSByZXF1ZXN0cyBt
YXkgc3RpbGwgYmUgY29taW5nIHNob3J0bHkgYmVmb3JlIFdlYkNvcmUgdXBkYXRlcyB0aGUgc2Vz
c2lvbiBJRCBhbmQgYWZ0ZXIgV2ViS2l0IGRlc3Ryb3lzIHRoZSBwcml2YXRlIGJyb3dzaW5nIHNl
c3Npb24uCiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBzZXNzaW9uIElELiBQbGVhc2UgZmls
ZSBhIGJ1ZyB1bmxlc3MgeW91IGp1c3QgZGlzYWJsZWQgcHJpdmF0ZSBicm93c2luZywgaW4gd2hp
Y2ggY2FzZSBpdCdzIGFuIGV4cGVjdGVkIHJhY2UuIik7CiAgICAgfQotICAgIHJldHVybiBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOworICAgIHJldHVybiAm
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDIz
OTY3MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzY2OCw3ICszNjY4LDcgQEAgLSAoTlNDYWNoZWRVUkxSZXNwb25zZSAq
KV9jYWNoZWRSZXNwb25zZQogICAgIGlmICghX3ByaXZhdGUtPnBhZ2UpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbiA9
IF9wcml2YXRlLT5wYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgp
LT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vzc2lvbigpKQorICAgIGlmIChhdXRvIHN0b3Jh
Z2VTZXNzaW9uID0gX3ByaXZhdGUtPnBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLm5ldHdvcmtp
bmdDb250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCktPnBsYXRmb3JtU2Vzc2lvbigpKQogICAgICAg
ICBjYWNoZWRSZXNwb25zZSA9IGNhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdChzdG9yYWdlU2Vzc2lv
biwgcmVxdWVzdC5nZXQoKSk7CiAgICAgZWxzZQogICAgICAgICBjYWNoZWRSZXNwb25zZSA9IFtb
TlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gY2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0OnJlcXVl
c3QuZ2V0KCldOwpAQCAtOTI1MSw3ICs5MjUxLDcgQEAgLSAodm9pZClfY2xlYXJDcmVkZW50aWFs
cwogICAgIGlmICghbmV0d29ya2luZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG5l
dHdvcmtpbmdDb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuY2xl
YXJDcmVkZW50aWFscygpOworICAgIG5ldHdvcmtpbmdDb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigp
LT5jcmVkZW50aWFsU3RvcmFnZSgpLmNsZWFyQ3JlZGVudGlhbHMoKTsKIH0KIAogLSAoQk9PTClf
bmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbgpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05OSwxMiArOTksMTIgQEAgUmVzb3VyY2VFcnJvciBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OgogICAgIHJldHVybiBmcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQo
KS5ibG9ja2VkRXJyb3IocmVxdWVzdCk7CiB9CiAKLU5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAorTmV0d29ya1N0
b3JhZ2VTZXNzaW9uKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmIChmcmFtZSgp
ICYmIGZyYW1lKCktPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKLSAgICAgICAgcmV0
dXJuICpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklE
OjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOworICAgICAgICByZXR1cm4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNl
c3Npb25JRCgpKTsKIAotICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpOworICAgIHJldHVybiAmTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZh
dWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmgJKHJldmlzaW9uIDIzOTY3MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDcsNSArNDcsNSBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0
IG92ZXJyaWRlOwotICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNl
c3Npb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24qIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358623</attachid>
            <date>2019-01-08 12:39:29 -0800</date>
            <delta_ts>2019-01-08 12:44:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193236-20190108123928.patch</filename>
            <type>text/plain</type>
            <size>74741</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzOTczNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE5LTAxLTA4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2lu
ZyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gaW4gV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMjM2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRG9uIE9sbXN0ZWFkLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4gIFNvbWUg
Y29kZSB3YXMgb25seSB1c2VkIGZvciBSZXNvdXJjZUhhbmRsZSwgd2hpY2ggaXNuJ3QgdXNlZCBp
biBtb2Rlcm4gV2ViS2l0LAorICAgICAgICBhbmQgZm9yIGNvb2tpZXMsIHdoaWNoIGFyZSBoYW5k
bGVkIGluIHRoZSBOZXR3b3JrUHJvY2VzcyBpbiBtb2Rlcm4gV2ViS2l0LgorCisgICAgICAgICog
bG9hZGVyL0Nvb2tpZUphci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdG9yYWdlU2Vzc2lvbik6
CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnBsYXRmb3Jt
TG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Ojp0cnlIYW5kbGVQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCk6CisKIDIwMTktMDEtMDggIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMjM5NzI3LgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tp
ZUphci5jcHAJKHJldmlzaW9uIDIzOTczNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29r
aWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwyMiArNDEsNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2luZ0NvbnRleHQo
Y29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQotewotICAgIC8vIEZJWE1FOiBSZXR1cm5pbmcgMCBt
ZWFucyBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdCBjb250ZXh0LiBUaGF0J3Mgbm90IGEgY2hvaWNl
IHRoYXQgaXMgYXBwcm9wcmlhdGUgdG8gZG8gYXQgcnVudGltZQotICAgIEZyYW1lKiBmcmFtZSA9
IGRvY3VtZW50LmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICByZXR1cm4gZnJhbWUtPmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCk7Ci19
Ci0KLWlubGluZSBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKGNvbnN0IERv
Y3VtZW50JiBkb2N1bWVudCkKLXsKLSAgICBOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCA9IG5l
dHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KTsKLSAgICByZXR1cm4gY29udGV4dCA/IGNvbnRleHQt
PnN0b3JhZ2VTZXNzaW9uKCkgOiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpOwotfQotCiBzdGF0aWMgSW5jbHVkZVNlY3VyZUNvb2tpZXMgc2hvdWxkSW5jbHVk
ZVNlY3VyZUNvb2tpZXMoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkK
IHsKICAgICByZXR1cm4gKHVybC5wcm90b2NvbElzKCJodHRwcyIpICYmICFkb2N1bWVudC5mb3Vu
ZE1peGVkQ29udGVudCgpLmNvbnRhaW5zKFNlY3VyaXR5Q29udGV4dDo6TWl4ZWRDb250ZW50VHlw
ZTo6QWN0aXZlKSkgPyBJbmNsdWRlU2VjdXJlQ29va2llczo6WWVzIDogSW5jbHVkZVNlY3VyZUNv
b2tpZXM6Ok5vOwpAQCAtNzgsOSArNjIsOSBAQCBTdHJpbmcgY29va2llcyhEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0CiAgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gcmVzdWx0OwogICAgIGF1
dG8gZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwogICAgIGlmIChmcmFtZSkKLSAgICAgICAgcmVz
dWx0ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29raWVzRm9y
RE9NKHN0b3JhZ2VTZXNzaW9uKGRvY3VtZW50KSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tp
ZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZS0+bG9hZGVyKCkuY2xpZW50
KCkuZnJhbWVJRCgpLCBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCksIGluY2x1ZGVT
ZWN1cmVDb29raWVzKTsKKyAgICAgICAgcmVzdWx0ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNv
b2tpZXNTdHJhdGVneSgpLT5jb29raWVzRm9yRE9NKGRvY3VtZW50LnNlc3Npb25JRCgpLCBkb2N1
bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmws
IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCksIGZyYW1lLT5sb2FkZXIoKS5jbGll
bnQoKS5wYWdlSUQoKSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogICAgIGVsc2UKLSAgICAgICAg
cmVzdWx0ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29raWVz
Rm9yRE9NKHN0b3JhZ2VTZXNzaW9uKGRvY3VtZW50KSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBXVEY6Om51bGxvcHQsIFdURjo6
bnVsbG9wdCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOworICAgICAgICByZXN1bHQgPSBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZXNGb3JET00oZG9jdW1lbnQu
c2Vzc2lvbklEKCksIGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5m
byhkb2N1bWVudCksIHVybCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIGluY2x1ZGVTZWN1
cmVDb29raWVzKTsKIAogICAgIGlmIChyZXN1bHQuc2Vjb25kKQogICAgICAgICBkb2N1bWVudC5z
ZXRTZWN1cmVDb29raWVzQWNjZXNzZWQoKTsKQEAgLTkzLDcgKzc3LDcgQEAgQ29va2llUmVxdWVz
dEhlYWRlckZpZWxkUHJveHkgY29va2llUmVxdQogICAgIFRyYWNlU2NvcGUgc2NvcGUoRmV0Y2hD
b29raWVzU3RhcnQsIEZldGNoQ29va2llc0VuZCk7CiAKICAgICBDb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRQcm94eSBwcm94eTsKLSAgICBwcm94eS5zZXNzaW9uSUQgPSBzdG9yYWdlU2Vzc2lvbihk
b2N1bWVudCkuc2Vzc2lvbklEKCk7CisgICAgcHJveHkuc2Vzc2lvbklEID0gZG9jdW1lbnQuc2Vz
c2lvbklEKCk7CiAgICAgcHJveHkuZmlyc3RQYXJ0eSA9IGRvY3VtZW50LmZpcnN0UGFydHlGb3JD
b29raWVzKCk7CiAgICAgcHJveHkuc2FtZVNpdGVJbmZvID0gc2FtZVNpdGVJbmZvKGRvY3VtZW50
KTsKICAgICBwcm94eS51cmwgPSB1cmw7CkBAIC0xMDksMTQgKzkzLDE0IEBAIHZvaWQgc2V0Q29v
a2llcyhEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnMKIHsKICAgICBhdXRvIGZyYW1lID0gZG9jdW1l
bnQuZnJhbWUoKTsKICAgICBpZiAoZnJhbWUpCi0gICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5jb29raWVzU3RyYXRlZ3koKS0+c2V0Q29va2llc0Zyb21ET00oc3RvcmFnZVNlc3Npb24oZG9j
dW1lbnQpLCBkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9j
dW1lbnQpLCB1cmwsIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCksIGZyYW1lLT5s
b2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKSwgY29va2llU3RyaW5nKTsKKyAgICAgICAgcGxhdGZv
cm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5zZXRDb29raWVzRnJvbURPTShkb2N1
bWVudC5zZXNzaW9uSUQoKSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNp
dGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgp
LCBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCksIGNvb2tpZVN0cmluZyk7CiAgICAg
ZWxzZQotICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPnNl
dENvb2tpZXNGcm9tRE9NKHN0b3JhZ2VTZXNzaW9uKGRvY3VtZW50KSwgZG9jdW1lbnQuZmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCwgY29va2llU3RyaW5nKTsKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5zZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5zZXNz
aW9uSUQoKSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRv
Y3VtZW50KSwgdXJsLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgY29va2llU3RyaW5nKTsK
IH0KIAogYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0g
ICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+Y29va2ll
c0VuYWJsZWQoc3RvcmFnZVNlc3Npb24oZG9jdW1lbnQpKTsKKyAgICByZXR1cm4gcGxhdGZvcm1T
dHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29raWVzRW5hYmxlZChkb2N1bWVudC5z
ZXNzaW9uSUQoKSk7CiB9CiAKIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKQpAQCAtMTI2LDkgKzExMCw5IEBAIFN0
cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShEb2MKICAgICBzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiByZXN1bHQ7CiAgICAgYXV0byBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CiAg
ICAgaWYgKGZyYW1lKQotICAgICAgICByZXN1bHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29v
a2llc1N0cmF0ZWd5KCktPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHN0b3JhZ2VTZXNz
aW9uKGRvY3VtZW50KSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJ
bmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpLCBm
cmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCksIGluY2x1ZGVTZWN1cmVDb29raWVzKTsK
KyAgICAgICAgcmVzdWx0ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgp
LT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShkb2N1bWVudC5zZXNzaW9uSUQoKSwgZG9j
dW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJs
LCBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpLCBmcmFtZS0+bG9hZGVyKCkuY2xp
ZW50KCkucGFnZUlEKCksIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKICAgICBlbHNlCi0gICAgICAg
IHJlc3VsdCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc3RvcmFnZVNlc3Npb24oZG9jdW1lbnQpLCBkb2N1bWVu
dC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CisgICAgICAg
IHJlc3VsdCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZG9jdW1lbnQuc2Vzc2lvbklEKCksIGRvY3VtZW50LmZp
cnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIAogICAgIGlmIChy
ZXN1bHQuc2Vjb25kKQogICAgICAgICBkb2N1bWVudC5zZXRTZWN1cmVDb29raWVzQWNjZXNzZWQo
KTsKQEAgLTE0MCwxNCArMTI0LDE0IEBAIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVu
dCYgZG9jdW0KIHsKICAgICBhdXRvIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKICAgICBpZiAo
ZnJhbWUpCi0gICAgICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0
ZWd5KCktPmdldFJhd0Nvb2tpZXMoc3RvcmFnZVNlc3Npb24oZG9jdW1lbnQpLCBkb2N1bWVudC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1l
LT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCksIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5w
YWdlSUQoKSwgY29va2llcyk7CisgICAgICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
Y29va2llc1N0cmF0ZWd5KCktPmdldFJhd0Nvb2tpZXMoZG9jdW1lbnQuc2Vzc2lvbklEKCksIGRv
Y3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVy
bCwgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKSwgZnJhbWUtPmxvYWRlcigpLmNs
aWVudCgpLnBhZ2VJRCgpLCBjb29raWVzKTsKIAotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmdldFJhd0Nvb2tpZXMoc3RvcmFnZVNlc3Npb24oZG9j
dW1lbnQpLCBkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9j
dW1lbnQpLCB1cmwsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBjb29raWVzKTsKKyAgICBy
ZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5nZXRSYXdDb29r
aWVzKGRvY3VtZW50LnNlc3Npb25JRCgpLCBkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygp
LCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0
LCBjb29raWVzKTsKIH0KIAogdm9pZCBkZWxldGVDb29raWUoY29uc3QgRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+ZGVsZXRlQ29va2llKHN0b3Jh
Z2VTZXNzaW9uKGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmRlbGV0ZUNvb2tpZShkb2N1bWVudC5zZXNzaW9u
SUQoKSwgdXJsLCBjb29raWVOYW1lKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAJKHJldmlzaW9uIDIzOTczNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODcsNyArMjg3LDcgQEAg
cHJpdmF0ZToKICAgICBFbXB0eUZyYW1lTmV0d29ya2luZ0NvbnRleHQoKTsKIAogICAgIGJvb2wg
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKTsgfQorICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBj
b25zdCBmaW5hbCB7IHJldHVybiAmTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKTsgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBsb2NhbEZpbGVD
b250ZW50U25pZmZpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZXNTdHJhdGVneS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZXNTdHJhdGVneS5oCShyZXZpc2lvbiAyMzk3MzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAkod29ya2luZyBj
b3B5KQpAQCAtNDAsMjkgKzQwLDE1IEBAIGVudW0gY2xhc3MgSW5jbHVkZVNlY3VyZUNvb2tpZXMg
OiBib29sIHsKIAogY2xhc3MgQ29va2llc1N0cmF0ZWd5IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFs
IHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBj
b29raWVTdHJpbmcpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJikgPSAwOwotICAgIHZpcnR1YWwgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpID0gMDsKLSAgICB2aXJ0dWFsIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBJbmNsdWRlU2VjdXJlQ29va2llcykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29r
aWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKSA9IDA7CisgICAgdmlydHVhbCBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFBBTDo6U2Vzc2lvbklE
JiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
SW5jbHVkZVNlY3VyZUNvb2tpZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zy
b21ET00oY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBQQUw6OlNlc3Npb25JRCYp
ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBQQUw6OlNlc3Npb25J
RCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IFZlY3RvcjxDb29raWU+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29u
c3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUp
ID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkNvb2tpZXNTdHJhdGVneSgpID0gZGVm
YXVsdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci0K
LXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tp
ZXM+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcywKLSAgICAgICAgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tp
ZXM6Ok5vLAotICAgICAgICBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llczo6WWVzCi0gICAg
PjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCShy
ZXZpc2lvbiAyMzk3MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKIAor
I2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1ZGUgPHBhbC9TZXNz
aW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UHJvY2Vzc1ByaXZpbGVnZS5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNpb24gMjM5NzM1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgU3RyaW5nIHNv
dXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
IH0KIAotICAgIHZpcnR1YWwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNl
c3Npb24oKSBjb25zdCA9IDA7CiAKICNpZiBQTEFURk9STShXSU4pCiAgICAgdmlydHVhbCBSZXNv
dXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCA9IDA7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAJKHJldmlzaW9uIDIzOTczNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0OSwxMiArMTQ5LDEyIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0
ZUNGVVJMQ29ubmVjdGkKICAgICAgICAgaWYgKGQtPm1fdXNlci5pc0VtcHR5KCkgJiYgZC0+bV9w
YXNzLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzcxNzQwNTA+
IC0gRm9yIFVSTHMgdGhhdCBtYXRjaCB0aGUgcGF0aHMgb2YgdGhvc2UgcHJldmlvdXNseSBjaGFs
bGVuZ2VkIGZvciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uLCAKICAgICAgICAgICAgIC8vIHRy
eSBhbmQgcmV1c2UgdGhlIGNyZWRlbnRpYWwgcHJlZW1wdGl2ZWx5LCBhcyBhbGxvd2VkIGJ5IFJG
QyAyNjE3LgotICAgICAgICAgICAgZC0+bV9pbml0aWFsQ3JlZGVudGlhbCA9IGQtPm1fY29udGV4
dC0+c3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLmdldChwYXJ0aXRpb24sIGZp
cnN0UmVxdWVzdCgpLnVybCgpKTsKKyAgICAgICAgICAgIGQtPm1faW5pdGlhbENyZWRlbnRpYWwg
PSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxTdG9yYWdlKCkuZ2V0
KHBhcnRpdGlvbiwgZmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYWxyZWFkeSBhIHByb3RlY3Rpb24gc3BhY2Uga25vd24g
Zm9yIHRoZSBVUkwsIHVwZGF0ZSBzdG9yZWQgY3JlZGVudGlhbHMgYmVmb3JlIHNlbmRpbmcgYSBy
ZXF1ZXN0LgogICAgICAgICAgICAgLy8gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBpbXBsZW1l
bnQgbG9nb3V0IGJ5IHNlbmRpbmcgYW4gWE1MSHR0cFJlcXVlc3Qgd2l0aCBrbm93biBpbmNvcnJl
Y3QgY3JlZGVudGlhbHMsIGFuZCBhYm9ydGluZyBpdCBpbW1lZGlhdGVseQogICAgICAgICAgICAg
Ly8gKHNvIHRoYXQgYW4gYXV0aGVudGljYXRpb24gZGlhbG9nIGRvZXNuJ3QgcG9wIHVwKS4KLSAg
ICAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFn
ZSgpLnNldChwYXJ0aXRpb24sIENyZWRlbnRpYWwoZC0+bV91c2VyLCBkLT5tX3Bhc3MsIENyZWRl
bnRpYWxQZXJzaXN0ZW5jZU5vbmUpLCBmaXJzdFJlcXVlc3QoKS51cmwoKSk7CisgICAgICAgICAg
ICBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0
KHBhcnRpdGlvbiwgQ3JlZGVudGlhbChkLT5tX3VzZXIsIGQtPm1fcGFzcywgQ3JlZGVudGlhbFBl
cnNpc3RlbmNlTm9uZSksIGZpcnN0UmVxdWVzdCgpLnVybCgpKTsKICAgICAgICAgfQogICAgIH0K
ICAgICAgICAgCkBAIC0yNjEsNyArMjYxLDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQo
KQogICAgIGlmICghZC0+bV9jb250ZXh0LT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGQtPm1fc3RvcmFnZVNlc3Npb24gPSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNz
aW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7CisgICAgZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGQtPm1f
Y29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+cGxhdGZvcm1TZXNzaW9uKCk7CiAKICAgICBib29s
IHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlID0gIWNsaWVudCgpIHx8IGNsaWVudCgpLT5zaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZSh0aGlzKTsKIApAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICAgICAgLy8gT25seSBjb25z
aWRlciBhcHBseWluZyBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscyBpZiB0aGlzIGlzIGFjdHVh
bGx5IGEgcmVkaXJlY3QgYW5kIHRoZSByZWRpcmVjdAogICAgICAgICAvLyBVUkwgZGlkbid0IGlu
Y2x1ZGUgY3JlZGVudGlhbHMgb2YgaXRzIG93bi4KICAgICAgICAgaWYgKGQtPm1fdXNlci5pc0Vt
cHR5KCkgJiYgZC0+bV9wYXNzLmlzRW1wdHkoKSAmJiAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwo
KSkgewotICAgICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gZC0+bV9jb250ZXh0LT5z
dG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuZ2V0KHBhcnRpdGlvbiwgcmVxdWVz
dC51cmwoKSk7CisgICAgICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBkLT5tX2NvbnRl
eHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxTdG9yYWdlKCkuZ2V0KHBhcnRpdGlvbiwg
cmVxdWVzdC51cmwoKSk7CiAgICAgICAgICAgICBpZiAoIWNyZWRlbnRpYWwuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICAgICAgZC0+bV9pbml0aWFsQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWw7CiAg
ICAgICAgICAgICAgICAgCkBAIC0zODIsNyArMzgyLDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6
dHJ5SGFuZGxlUGFzc3dvcmRCYQogICAgICAgICBVUkwgdXJsVG9TdG9yZTsKICAgICAgICAgaWYg
KGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQwMSkKICAg
ICAgICAgICAgIHVybFRvU3RvcmUgPSBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCk7
Ci0gICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFn
ZSgpLnNldChwYXJ0aXRpb24sIGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uo
KSwgdXJsVG9TdG9yZSk7CisgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+
Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQocGFydGl0aW9uLCBjcmVkZW50aWFsLCBjaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlKCksIHVybFRvU3RvcmUpOwogICAgICAgICAKICAgICAgICAgQ0ZVUkxD
b25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlh
bC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAgICAgICAgZC0+
bV91c2VyID0gU3RyaW5nKCk7CkBAIC0zOTYsMTYgKzM5NiwxNiBAQCBib29sIFJlc291cmNlSGFu
ZGxlOjp0cnlIYW5kbGVQYXNzd29yZEJhCiAgICAgICAgICAgICAvLyBUaGUgc3RvcmVkIGNyZWRl
bnRpYWwgd2Fzbid0IGFjY2VwdGVkLCBzdG9wIHVzaW5nIGl0LgogICAgICAgICAgICAgLy8gVGhl
cmUgaXMgYSByYWNlIGNvbmRpdGlvbiBoZXJlLCBzaW5jZSBhIGRpZmZlcmVudCBjcmVkZW50aWFs
IG1pZ2h0IGhhdmUgYWxyZWFkeSBiZWVuIHN0b3JlZCBieSBhbm90aGVyIFJlc291cmNlSGFuZGxl
LAogICAgICAgICAgICAgLy8gYnV0IHRoZSBvYnNlcnZhYmxlIGVmZmVjdCBzaG91bGQgYmUgdmVy
eSBtaW5vciwgaWYgYW55LgotICAgICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lv
bigpLmNyZWRlbnRpYWxTdG9yYWdlKCkucmVtb3ZlKHBhcnRpdGlvbiwgY2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZSgpKTsKKyAgICAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24o
KS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5yZW1vdmUocGFydGl0aW9uLCBjaGFsbGVuZ2UucHJvdGVj
dGlvblNwYWNlKCkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFjaGFsbGVuZ2UucHJldmlv
dXNGYWlsdXJlQ291bnQoKSkgewotICAgICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0g
ZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuZ2V0KHBh
cnRpdGlvbiwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKTsKKyAgICAgICAgICAgIENyZWRl
bnRpYWwgY3JlZGVudGlhbCA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVu
dGlhbFN0b3JhZ2UoKS5nZXQocGFydGl0aW9uLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkp
OwogICAgICAgICAgICAgaWYgKCFjcmVkZW50aWFsLmlzRW1wdHkoKSAmJiBjcmVkZW50aWFsICE9
IGQtPm1faW5pdGlhbENyZWRlbnRpYWwpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoY3JlZGVu
dGlhbC5wZXJzaXN0ZW5jZSgpID09IENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOwogICAgICAg
ICAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUo
KSA9PSA0MDEpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGNyZWRlbnRpYWwg
YmFjaywgcG9zc2libHkgYWRkaW5nIGl0IGFzIGEgZGVmYXVsdCBmb3IgdGhpcyBkaXJlY3Rvcnku
Ci0gICAgICAgICAgICAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5jcmVk
ZW50aWFsU3RvcmFnZSgpLnNldChwYXJ0aXRpb24sIGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UoKSwgY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50aWFs
U3RvcmFnZSgpLnNldChwYXJ0aXRpb24sIGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90ZWN0aW9u
U3BhY2UoKSwgY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpKTsKICAgICAgICAgICAg
ICAgICB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgICAgICAgICAgQ0ZVUkxDb25uZWN0
aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNyZWRlbnRpYWwuY2ZDcmVk
ZW50aWFsKCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CkBAIC00NTUsNyAr
NDU1LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKAogICAgICAg
ICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAx
KQogICAgICAgICAgICAgdXJsVG9TdG9yZSA9IGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51
cmwoKTsgCiAKLSAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRp
YWxTdG9yYWdlKCkuc2V0KGZpcnN0UmVxdWVzdCgpLmNhY2hlUGFydGl0aW9uKCksIHdlYkNyZWRl
bnRpYWwsIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7CisgICAgICAg
IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQo
Zmlyc3RSZXF1ZXN0KCkuY2FjaGVQYXJ0aXRpb24oKSwgd2ViQ3JlZGVudGlhbCwgY2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZSgpLCB1cmxUb1N0b3JlKTsKIAogICAgICAgICBpZiAoZC0+bV9jb25u
ZWN0aW9uKSB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC01NzEsNyArNTcxLDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyYwogICAgIGJvb2wgc2hvdWxkQ29udGVu
dEVuY29kaW5nU25pZmYgPSB0cnVlOwogICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFuZGxl
ID0gYWRvcHRSZWYobmV3IFJlc291cmNlSGFuZGxlKGNvbnRleHQsIHJlcXVlc3QsICZjbGllbnQs
IGRlZmVyc0xvYWRpbmcsIHNob3VsZENvbnRlbnRTbmlmZiwgc2hvdWxkQ29udGVudEVuY29kaW5n
U25pZmYpKTsKIAotICAgIGhhbmRsZS0+ZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0
b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7CisgICAgaGFuZGxlLT5kLT5tX3N0b3Jh
Z2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+cGxhdGZvcm1TZXNzaW9uKCk7
CiAKICAgICBpZiAoaGFuZGxlLT5kLT5tX3NjaGVkdWxlZEZhaWx1cmVUeXBlICE9IE5vRmFpbHVy
ZSkgewogICAgICAgICBlcnJvciA9IGNvbnRleHQtPmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlSGFuZGxlTWFjLm1tCShyZXZpc2lvbiAyMzk3MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTU3LDEyICsxNTcsMTIgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25u
ZWN0aQogICAgICAgICBpZiAoZC0+bV91c2VyLmlzRW1wdHkoKSAmJiBkLT5tX3Bhc3MuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNzE3NDA1MD4gLSBGb3IgVVJM
cyB0aGF0IG1hdGNoIHRoZSBwYXRocyBvZiB0aG9zZSBwcmV2aW91c2x5IGNoYWxsZW5nZWQgZm9y
IEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24sIAogICAgICAgICAgICAgLy8gdHJ5IGFuZCByZXVz
ZSB0aGUgY3JlZGVudGlhbCBwcmVlbXB0aXZlbHksIGFzIGFsbG93ZWQgYnkgUkZDIDI2MTcuCi0g
ICAgICAgICAgICBkLT5tX2luaXRpYWxDcmVkZW50aWFsID0gZC0+bV9jb250ZXh0LT5zdG9yYWdl
U2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuZ2V0KGZpcnN0UmVxdWVzdCgpLmNhY2hlUGFy
dGl0aW9uKCksIGZpcnN0UmVxdWVzdCgpLnVybCgpKTsKKyAgICAgICAgICAgIGQtPm1faW5pdGlh
bENyZWRlbnRpYWwgPSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxT
dG9yYWdlKCkuZ2V0KGZpcnN0UmVxdWVzdCgpLmNhY2hlUGFydGl0aW9uKCksIGZpcnN0UmVxdWVz
dCgpLnVybCgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlz
IGFscmVhZHkgYSBwcm90ZWN0aW9uIHNwYWNlIGtub3duIGZvciB0aGUgVVJMLCB1cGRhdGUgc3Rv
cmVkIGNyZWRlbnRpYWxzIGJlZm9yZSBzZW5kaW5nIGEgcmVxdWVzdC4KICAgICAgICAgICAgIC8v
IFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IGxvZ291dCBieSBzZW5kaW5nIGFu
IFhNTEh0dHBSZXF1ZXN0IHdpdGgga25vd24gaW5jb3JyZWN0IGNyZWRlbnRpYWxzLCBhbmQgYWJv
cnRpbmcgaXQgaW1tZWRpYXRlbHkKICAgICAgICAgICAgIC8vIChzbyB0aGF0IGFuIGF1dGhlbnRp
Y2F0aW9uIGRpYWxvZyBkb2Vzbid0IHBvcCB1cCkuCi0gICAgICAgICAgICBkLT5tX2NvbnRleHQt
PnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQoZmlyc3RSZXF1ZXN0KCku
Y2FjaGVQYXJ0aXRpb24oKSwgQ3JlZGVudGlhbChkLT5tX3VzZXIsIGQtPm1fcGFzcywgQ3JlZGVu
dGlhbFBlcnNpc3RlbmNlTm9uZSksIGZpcnN0UmVxdWVzdCgpLnVybCgpKTsKKyAgICAgICAgICAg
IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQo
Zmlyc3RSZXF1ZXN0KCkuY2FjaGVQYXJ0aXRpb24oKSwgQ3JlZGVudGlhbChkLT5tX3VzZXIsIGQt
Pm1fcGFzcywgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSksIGZpcnN0UmVxdWVzdCgpLnVybCgp
KTsKICAgICAgICAgfQogICAgIH0KICAgICAgICAgCkBAIC0yNDAsNyArMjQwLDcgQEAgYm9vbCBS
ZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogICAgIGlmICghZC0+bV9jb250ZXh0LT5pc1ZhbGlkKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGQtPm1fc3RvcmFnZVNlc3Npb24gPSBkLT5t
X2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7CisgICAgZC0+bV9z
dG9yYWdlU2Vzc2lvbiA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+cGxhdGZvcm1T
ZXNzaW9uKCk7CiAKICAgICAvLyBGSVhNRTogRG8gbm90IHVzZSB0aGUgc3luYyB2ZXJzaW9uIG9m
IHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlIHdoZW4gdGhlIGNsaWVudCByZXR1cm5zIHRydWUg
ZnJvbSB1c2VzQXN5bmNDYWxsYmFja3MuCiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZSA9ICFjbGllbnQoKSB8fCBjbGllbnQoKS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Uo
dGhpcyk7CkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1M
b2FkUmVzb3VyYwogICAgIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYgPSB0cnVlOwog
ICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFuZGxlID0gYWRvcHRSZWYobmV3IFJlc291cmNl
SGFuZGxlKGNvbnRleHQsIHJlcXVlc3QsICZjbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENv
bnRlbnRTbmlmZiwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpKTsKIAotICAgIGhhbmRsZS0+
ZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1T
ZXNzaW9uKCk7CisgICAgaGFuZGxlLT5kLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3Rv
cmFnZVNlc3Npb24oKS0+cGxhdGZvcm1TZXNzaW9uKCk7CiAKICAgICBpZiAoY29udGV4dCAmJiBo
YW5kbGUtPmQtPm1fc2NoZWR1bGVkRmFpbHVyZVR5cGUgIT0gTm9GYWlsdXJlKSB7CiAgICAgICAg
IGVycm9yID0gY29udGV4dC0+YmxvY2tlZEVycm9yKHJlcXVlc3QpOwpAQCAtNDQ5LDcgKzQ0OSw3
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICAgICAgLy8g
T25seSBjb25zaWRlciBhcHBseWluZyBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscyBpZiB0aGlz
IGlzIGFjdHVhbGx5IGEgcmVkaXJlY3QgYW5kIHRoZSByZWRpcmVjdAogICAgICAgICAvLyBVUkwg
ZGlkbid0IGluY2x1ZGUgY3JlZGVudGlhbHMgb2YgaXRzIG93bi4KICAgICAgICAgaWYgKGQtPm1f
dXNlci5pc0VtcHR5KCkgJiYgZC0+bV9wYXNzLmlzRW1wdHkoKSAmJiAhcmVkaXJlY3RSZXNwb25z
ZS5pc051bGwoKSkgewotICAgICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gZC0+bV9j
b250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdlKCkuZ2V0KHJlcXVlc3Qu
Y2FjaGVQYXJ0aXRpb24oKSwgcmVxdWVzdC51cmwoKSk7CisgICAgICAgICAgICBDcmVkZW50aWFs
IGNyZWRlbnRpYWwgPSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNyZWRlbnRpYWxT
dG9yYWdlKCkuZ2V0KHJlcXVlc3QuY2FjaGVQYXJ0aXRpb24oKSwgcmVxdWVzdC51cmwoKSk7CiAg
ICAgICAgICAgICBpZiAoIWNyZWRlbnRpYWwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAg
ZC0+bV9pbml0aWFsQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWw7CiAgICAgICAgICAgICAgICAgCkBA
IC01NDAsMTYgKzU0MCwxNiBAQCBib29sIFJlc291cmNlSGFuZGxlOjp0cnlIYW5kbGVQYXNzd29y
ZEJhCiAgICAgICAgICAgICAvLyBUaGUgc3RvcmVkIGNyZWRlbnRpYWwgd2Fzbid0IGFjY2VwdGVk
LCBzdG9wIHVzaW5nIGl0LgogICAgICAgICAgICAgLy8gVGhlcmUgaXMgYSByYWNlIGNvbmRpdGlv
biBoZXJlLCBzaW5jZSBhIGRpZmZlcmVudCBjcmVkZW50aWFsIG1pZ2h0IGhhdmUgYWxyZWFkeSBi
ZWVuIHN0b3JlZCBieSBhbm90aGVyIFJlc291cmNlSGFuZGxlLAogICAgICAgICAgICAgLy8gYnV0
IHRoZSBvYnNlcnZhYmxlIGVmZmVjdCBzaG91bGQgYmUgdmVyeSBtaW5vciwgaWYgYW55LgotICAg
ICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNyZWRlbnRpYWxTdG9yYWdl
KCkucmVtb3ZlKGQtPm1fcGFydGl0aW9uLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOwor
ICAgICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50aWFsU3Rv
cmFnZSgpLnJlbW92ZShkLT5tX3BhcnRpdGlvbiwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgp
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghY2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNv
dW50KCkpIHsKLSAgICAgICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IGQtPm1fY29udGV4
dC0+c3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLmdldChkLT5tX3BhcnRpdGlv
biwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKTsKKyAgICAgICAgICAgIENyZWRlbnRpYWwg
Y3JlZGVudGlhbCA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0
b3JhZ2UoKS5nZXQoZC0+bV9wYXJ0aXRpb24sIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSk7
CiAgICAgICAgICAgICBpZiAoIWNyZWRlbnRpYWwuaXNFbXB0eSgpICYmIGNyZWRlbnRpYWwgIT0g
ZC0+bV9pbml0aWFsQ3JlZGVudGlhbCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChjcmVkZW50
aWFsLnBlcnNpc3RlbmNlKCkgPT0gQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7CiAgICAgICAg
ICAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgp
ID09IDQwMSkgewogICAgICAgICAgICAgICAgICAgICAvLyBTdG9yZSB0aGUgY3JlZGVudGlhbCBi
YWNrLCBwb3NzaWJseSBhZGRpbmcgaXQgYXMgYSBkZWZhdWx0IGZvciB0aGlzIGRpcmVjdG9yeS4K
LSAgICAgICAgICAgICAgICAgICAgZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNyZWRl
bnRpYWxTdG9yYWdlKCkuc2V0KGQtPm1fcGFydGl0aW9uLCBjcmVkZW50aWFsLCBjaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlKCksIGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVu
dGlhbFN0b3JhZ2UoKS5zZXQoZC0+bV9wYXJ0aXRpb24sIGNyZWRlbnRpYWwsIGNoYWxsZW5nZS5w
cm90ZWN0aW9uU3BhY2UoKSwgY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgW2NoYWxsZW5nZS5zZW5kZXIoKSB1c2VD
cmVkZW50aWFsOmNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkgZm9yQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6bWFjKGNoYWxsZW5nZSldOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
NTkxLDcgKzU5MSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCgK
ICAgICAgICAgVVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJl
c3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCiAgICAgICAgICAgICB1cmxUb1N0b3Jl
ID0gY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwotICAgICAgICBkLT5tX2NvbnRl
eHQtPnN0b3JhZ2VTZXNzaW9uKCkuY3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQoZC0+bV9wYXJ0aXRp
b24sIHdlYkNyZWRlbnRpYWwsIFByb3RlY3Rpb25TcGFjZShbZC0+bV9jdXJyZW50TWFjQ2hhbGxl
bmdlIHByb3RlY3Rpb25TcGFjZV0pLCB1cmxUb1N0b3JlKTsKKyAgICAgICAgZC0+bV9jb250ZXh0
LT5zdG9yYWdlU2Vzc2lvbigpLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChkLT5tX3BhcnRpdGlv
biwgd2ViQ3JlZGVudGlhbCwgUHJvdGVjdGlvblNwYWNlKFtkLT5tX2N1cnJlbnRNYWNDaGFsbGVu
Z2UgcHJvdGVjdGlvblNwYWNlXSksIHVybFRvU3RvcmUpOwogICAgICAgICBbW2QtPm1fY3VycmVu
dE1hY0NoYWxsZW5nZSBzZW5kZXJdIHVzZUNyZWRlbnRpYWw6d2ViQ3JlZGVudGlhbC5uc0NyZWRl
bnRpYWwoKSBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpkLT5tX2N1cnJlbnRNYWNDaGFsbGVu
Z2VdOwogICAgIH0gZWxzZQogICAgICAgICBbW2QtPm1fY3VycmVudE1hY0NoYWxsZW5nZSBzZW5k
ZXJdIHVzZUNyZWRlbnRpYWw6Y3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSBmb3JBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTpkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2VdOwpJbmRleDogU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzOTczNSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMzkgQEAKKzIwMTktMDEtMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBTdG9wIHVzaW5nIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiBpbiBXZWJQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTMyMzYKKworICAgICAgICBSZXZpZXdlZCBieSBEb24gT2xtc3RlYWQuCisK
KyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6
CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAg
ICAgKiBTaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVQb2xpY2llc0RhdGE6OmFwcGx5VG9Eb2N1bWVudExvYWRlcik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dHJ5VGFrZVByZXdhcm1lZFByb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNpbmdXZWJzaXRl
RGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBhZ2VFbmRVc2lu
Z1dlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJv
Y2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vi
c2l0ZURhdGFTdG9yZVNlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkZXN0cm95U2Vzc2lvbik6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE5LTAxLTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjIzOTcyNy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyMzk3MzUpCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzIsNyArNzIsNiBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVu
Y29kCiAgICAgZW5jb2RlciA8PCBzaG91bGRDYXB0dXJlVmlkZW9JblVJUHJvY2VzczsKICAgICBl
bmNvZGVyIDw8IHNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3M7CiAjZW5kaWYKLSAgICBl
bmNvZGVyIDw8IHNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsKICAgICBlbmNvZGVyIDw8
IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNFbXB0eURvY3VtZW50OwogICAgIGVuY29kZXIgPDwgdXJs
U2NoZW1lc1JlZ2lzdGVyZWRBc1NlY3VyZTsKICAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdp
c3RlcmVkQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3k7CkBAIC0yNjcsOCArMjY2LDYg
QEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRDYXB0dXJlRGlzcGxheUluVUlQcm9jZXNzKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXJsU2NoZW1lc1Jl
Z2lzdGVyZWRBc0VtcHR5RG9jdW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNTZWN1cmUp
KQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjM5NzM1KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyAr
MTI0LDYgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgZG91
YmxlIGRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsIHsgSU5UX01BWCB9OwogCi0gICAgYm9v
bCBzaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24geyBmYWxzZSB9OwogICAgIGJvb2wgc2hv
dWxkQWx3YXlzVXNlQ29tcGxleFRleHRDb2RlUGF0aCB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91
bGRFbmFibGVNZW1vcnlQcmVzc3VyZVJlbGllZkxvZ2dpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wg
c2hvdWxkU3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIgeyBmYWxzZSB9OwpJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAJKHJldmlzaW9uIDIz
OTczNSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjEsMTEgKzE2MSw4IEBAIHZvaWQgV2Vic2l0ZVBvbGljaWVzRGF0
YTo6YXBwbHlUb0RvY3VtZW4KIAogICAgIGlmICh3ZWJzaXRlUG9saWNpZXMud2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMpIHsKICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnRMb2Fk
ZXIuZnJhbWUoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgp
KSB7Ci0gICAgICAgICAgICAgICAgYXV0byBzZXNzaW9uSUQgPSB3ZWJzaXRlUG9saWNpZXMud2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMtPm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9u
SUQ7Ci0gICAgICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkV2Vic2l0ZURh
dGFTdG9yZShXVEZNb3ZlKCp3ZWJzaXRlUG9saWNpZXMud2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMpKTsKLSAgICAgICAgICAgICAgICBwYWdlLT5zZXRTZXNzaW9uSUQoc2Vzc2lvbklEKTsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkK
KyAgICAgICAgICAgICAgICBwYWdlLT5zZXRTZXNzaW9uSUQod2Vic2l0ZVBvbGljaWVzLndlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzLT5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklE
KTsKICAgICAgICAgfQogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDIzOTczNSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjg5LDEwICs2ODks
OCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBbnlQYWdlR3JvdXBNaWdoCiB7CiAgICAgaWYg
KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKICAgICAgICAgc2VuZFRvTmV0d29ya2luZ1Byb2Nl
c3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzOjpsZWdhY3lQcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoKSkpOwot
ICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkFkZFdlYnNp
dGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmxlZ2FjeVByaXZhdGVTZXNz
aW9uUGFyYW1ldGVycygpKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbmV0d29ya1Byb2Nlc3Mo
KS0+cmVtb3ZlU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgp
KTsKLSAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEZXN0
cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSk7CiAg
ICAgfQogfQogCkBAIC03NjUsOCArNzYzLDYgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2Vi
UHJvY2Vzc1Bvb2w6OgogCiAgICAgQVNTRVJUKG1fcHJld2FybWVkUHJvY2Vzcy0+aXNQcmV3YXJt
ZWQoKSk7CiAgICAgbV9wcmV3YXJtZWRQcm9jZXNzLT5tYXJrSXNOb0xvbmdlckluUHJld2FybWVk
UG9vbCgpOwotICAgIGlmICgmbV9wcmV3YXJtZWRQcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkg
IT0gJndlYnNpdGVEYXRhU3RvcmUpCi0gICAgICAgIG1fcHJld2FybWVkUHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0b3Jl
LnBhcmFtZXRlcnMoKSksIDApOwogCiAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9wcmV3YXJt
ZWRQcm9jZXNzLCBudWxscHRyKTsKIH0KQEAgLTg1NCw4ICs4NTAsNiBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjppbml0aWFsaXplTmV3V2ViUHJvCiAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLmphdmFTY3JpcHRD
b25maWd1cmF0aW9uRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUs
IHBhcmFtZXRlcnMuamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpOwogICAgIH0KIAotICAgIHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNz
aW9uID0gbV9zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb247Ci0KICAgICBwYXJhbWV0ZXJz
LmNhY2hlTW9kZWwgPSBjYWNoZU1vZGVsKCk7CiAgICAgcGFyYW1ldGVycy5sYW5ndWFnZXMgPSB1
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CiAKQEAgLTk0Miw5ICs5MzYsNiBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2ViUHJvCiAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpTZXRRT1Mod2ViUHJvY2Vzc0xhdGVuY3lRT1MoKSwgd2ViUHJvY2Vzc1Ro
cm91Z2hwdXRRT1MoKSksIDApOwogI2VuZGlmCiAKLSAgICBpZiAoV2ViUHJlZmVyZW5jZXM6OmFu
eVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSkKLSAgICAgICAgcHJvY2Vzcy5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzOjpsZWdhY3lQcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoKSksIDApOwotCiAgICAg
aWYgKG1fYXV0b21hdGlvblNlc3Npb24pCiAgICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6
V2ViUHJvY2Vzczo6RW5zdXJlQXV0b21hdGlvblNlc3Npb25Qcm94eShtX2F1dG9tYXRpb25TZXNz
aW9uLT5zZXNzaW9uSWRlbnRpZmllcigpKSwgMCk7CiAKQEAgLTExODgsMTIgKzExNzksMTAgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNpbmdXZWJzaQogICAgICAgICBBU1NFUlQo
cGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycy5zZXNzaW9uSUQgPT0gc2Vzc2lvbklEKTsKICAgICAgICAgaWYgKG1fbmV0d29ya1Byb2Nl
c3MpCiAgICAgICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5hZGRTZXNzaW9uKG1ha2VSZWYocGFn
ZS53ZWJzaXRlRGF0YVN0b3JlKCkpKTsKLSAgICAgICAgcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVyczo6cHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKHNlc3Npb25JRCkpLCAwKTsKICAgICAg
ICAgcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkuY2xlYXJQZW5kaW5nQ29va2llcygpOwogICAgIH0g
ZWxzZSBpZiAoc2Vzc2lvbklEICE9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkp
IHsKICAgICAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCiAgICAgICAgICAgICBtX25ldHdvcmtQ
cm9jZXNzLT5hZGRTZXNzaW9uKG1ha2VSZWYocGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpKTsKLSAg
ICAgICAgcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6QWRkV2Vic2l0
ZURhdGFTdG9yZShwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkpLCAwKTsKICAg
ICAgICAgcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkuY2xlYXJQZW5kaW5nQ29va2llcygpOwogICAg
IH0KIApAQCAtMTIyNCw3ICsxMjEzLDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVz
aW5nV2Vic2l0ZQogICAgICAgICAvLyBUaGUgbGFzdCB1c2VyIG9mIHRoaXMgbm9uLWRlZmF1bHQg
UEFMOjpTZXNzaW9uSUQgaXMgZ29uZSwgc28gY2xlYW4gaXQgdXAgaW4gdGhlIGNoaWxkIHByb2Nl
c3Nlcy4KICAgICAgICAgaWYgKG5ldHdvcmtQcm9jZXNzKCkpCiAgICAgICAgICAgICBuZXR3b3Jr
UHJvY2VzcygpLT5yZW1vdmVTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgICAgIHBhZ2UucHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlc3Ryb3lTZXNzaW9uKHNlc3Npb25JRCks
IDApOwogICAgIH0KIH0KIApAQCAtMjIzOCw5ICsyMjI2LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cHJvY2Vzc0Zvck5hdmlnYXRpbwogICAgICAgICBpZiAoJigqaXQpLT5wYWdlKCkgPT0gJnBh
Z2UpCiAgICAgICAgICAgICBtX3N1c3BlbmRlZFBhZ2VzLnJlbW92ZShpdCk7CiAKLSAgICAgICAg
aWYgKCZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJnBhZ2Uud2Vic2l0ZURhdGFTdG9y
ZSgpKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6QWRk
V2Vic2l0ZURhdGFTdG9yZShwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkpLCAw
KTsKLQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShwcm9jZXNzKSwg
bnVsbHB0ciwgcmVhc29uKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIzOTczNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgxLDkgKzM4MSw2IEBAIHZv
aWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2UKIAogICAgIHNldFNob3VsZFVz
ZUZvbnRTbW9vdGhpbmcocGFyYW1ldGVycy5zaG91bGRVc2VGb250U21vb3RoaW5nKTsKIAotICAg
IGlmIChwYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKLSAgICAgICAg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7Ci0KICAg
ICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogICAgIHNldFRlcm1pbmF0aW9u
VGltZW91dChwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCk7CkBAIC01NDAsMTYgKzUzNyw2
IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZnVsbEtleWJvYXJkQWNjZXNzTW9kZUMKICAgICBtX2Z1bGxL
ZXlib2FyZEFjY2Vzc0VuYWJsZWQgPSBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkOwogfQogCi12
b2lkIFdlYlByb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzKQotewotICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVu
c3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdURk1vdmUocGFyYW1ldGVycykpOwotfQotCi12
b2lkIFdlYlByb2Nlc3M6OmRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
LXsKLSAgICBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24oc2Vzc2lvbklEKTsKLX0KLQog
dm9pZCBXZWJQcm9jZXNzOjplbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uSW5OZXR3
b3JrUHJvY2VzcygpCiB7CiAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpF
bnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIDApOwpAQCAtMTI5NCwxMSArMTI4
MSw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlMKICAgICAgICAg
Zm9yIChhdXRvJiBvcmlnaW4gOiBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkub3JpZ2luc1dpdGhD
YWNoZShzZXNzaW9uSUQpKQogICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQo
V2Vic2l0ZURhdGE6OkVudHJ5IHsgb3JpZ2luLT5kYXRhKCksIFdlYnNpdGVEYXRhVHlwZTo6TWVt
b3J5Q2FjaGUsIDAgfSk7CiAgICAgfQotCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFp
bnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpIHsKLSAgICAgICAgaWYgKE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgICAgIHdl
YnNpdGVEYXRhLm9yaWdpbnNXaXRoQ3JlZGVudGlhbHMgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCktPmNyZWRlbnRpYWxTdG9yYWdlKCkub3JpZ2luc1dp
dGhDcmVkZW50aWFscygpOwotICAgIH0KIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpkZWxldGVXZWJz
aXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDIzOTczNSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw4
ICsxNzgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwpOwog
CiAgICAgdm9pZCBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uSW5OZXR3b3JrUHJv
Y2VzcygpOwotICAgIHZvaWQgYWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyYmKTsKLSAgICB2b2lkIGRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKIAog
ICAgIHZvaWQgcGFnZURpZEVudGVyV2luZG93KHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgdm9pZCBw
YWdlV2lsbExlYXZlV2luZG93KHVpbnQ2NF90IHBhZ2VJRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjM5NzM1
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTUzLDkgKzUzLDYgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAKICAgICBDbGVhckNhY2hlZENyZWRlbnRpYWxzKCkKIAotICAgIEFkZFdl
YnNpdGVEYXRhU3RvcmUoc3RydWN0IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMg
d2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpOwotICAgIERlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKLQogICAgICMgUGx1Zy1pbnMuCiAgICAgRGlkQWRkUGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaCh1aW50MzJfdCBoYXNoLCBXYWxsVGltZSBleHBpcmF0aW9uVGltZSwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIFJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
RGVmYXVsdEhhc2hlcyhIYXNoTWFwPHVpbnQzMl90LFdhbGxUaW1lPiBoYXNoZXMpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDIzOTczNSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1Nyw3ICszNTcsNiBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRQcml2YXRlQnJvd3Np
bmdFCiAgICAgQVNTRVJUKCFoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNh
bkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKICAgICBpZiAoZW5hYmxlZCkgewogICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uSW5OZXR3
b3JrUHJvY2VzcygpOwotICAgICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVX
ZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKCkpOwogICAgIH0gZWxzZQogICAgICAgICBTZXNzaW9u
VHJhY2tlcjo6ZGVzdHJveVNlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNz
aW9uSUQoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZp
c2lvbiAyMzk3MzMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDM1ICsxMDcs
MzAgQEAgQmxvYlJlZ2lzdHJ5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZQogCiAvLyBDb29r
aWVzU3RyYXRlZ3kKIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykK
K3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0Zv
ckRPTShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKQogewogICAgIFN0cmluZyBjb29r
aWVTdHJpbmc7CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBp
ZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkNvb2tpZXNGb3JET00oc2Vzc2lvbi5zZXNzaW9uSUQoKSwgZmlyc3RQYXJ0eSwg
c2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMp
LCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006
OlJlcGx5KGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vzc2VkKSwgMCkpCisgICAgaWYg
KCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpDb29raWVzRm9yRE9NKHNlc3Npb25JRCwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpLCBNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KGNvb2tp
ZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vzc2VkKSwgMCkpCiAgICAgICAgIHJldHVybiB7IFN0
cmluZygpLCBmYWxzZSB9OwogCiAgICAgcmV0dXJuIHsgY29va2llU3RyaW5nLCBzZWN1cmVDb29r
aWVzQWNjZXNzZWQgfTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tp
ZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vz
c2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5n
KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbi5zZXNzaW9uSUQoKSwgZmlyc3RQ
YXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2llU3RyaW5nKSwg
MCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShzZXNzaW9uSUQsIGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGNvb2tpZVN0cmluZyksIDApOwogfQogCi1i
b29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tp
ZXNFbmFibGVkKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCiB7CiAgICAgYm9vbCBy
ZXN1bHQ7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZChzZXNzaW9uLnNlc3Npb25JRCgp
KSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxl
ZDo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZChzZXNz
aW9uSUQpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNF
bmFibGVkOjpSZXBseShyZXN1bHQpLCAwKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKQotewotICAgIHJldHVybiBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShzZXNzaW9uLnNlc3Npb25JRCgpLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7Ci19Ci0KLXN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKQorc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVT
ZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKQogewogICAgIFN0cmluZyBjb29raWVT
dHJpbmc7CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKQEAgLTE0NCwx
NiArMTM5LDE2IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IFdlYlBsYXRmb3JtU3RyYXQKICAg
ICByZXR1cm4geyBjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCB9OwogfQogCi1i
b29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nv
b2tpZXMpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25zdCBQ
QUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiBy
YXdDb29raWVzKQogewotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhzZXNzaW9uLnNlc3Np
b25JRCgpLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlEKSwg
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzOjpS
ZXBseShyYXdDb29raWVzKSwgMCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzKHNlc3Np
b25JRCwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCksIE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVw
bHkocmF3Q29va2llcyksIDApKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tp
ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RGVsZXRlQ29va2llKHNlc3Npb24uc2Vzc2lv
bklEKCksIHVybCwgY29va2llTmFtZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RGVsZXRlQ29va2llKHNlc3Npb25J
RCwgdXJsLCBjb29raWVOYW1lKSwgMCk7CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJldmlzaW9uIDIzOTczMykKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTMgKzQ3LDEyIEBAIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6QmxvYlJlZ2lzdHJ5KiBjcmVhdGVCbG9iUmVnaXN0cnkoKSBvdmVycmlkZTsKIAogICAgIC8v
IFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQotICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNv
b2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
V2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mKSBvdmVycmlkZTsKLSAgICBzdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29v
a2llcykgb3ZlcnJpZGU7Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVT
ZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
KyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFBBTDo6U2Vz
c2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYs
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFBB
TDo6U2Vzc2lvbklEJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYs
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBX
ZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRSYXdD
b29raWVzKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBQQUw6OlNlc3Npb25J
RCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgLy8gV2ViQ29y
ZTo6UGFzdGVib2FyZFN0cmF0ZWd5CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJsL1dlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9jdXJsL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCShyZXZpc2lv
biAyMzk3MzUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvY3Vy
bC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTUg
KzU2LDYgQEAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6V2ViRnJhbWVOZXR3bwogewogfQog
Ci1OZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3Jh
Z2VTZXNzaW9uKCkgY29uc3QKLXsKLSAgICBpZiAoZnJhbWUoKSkgewotICAgICAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KGZyYW1lKCktPnBhZ2UoKS0+c2Vzc2lvbklEKCkpKQotICAgICAgICAgICAgcmV0dXJuICpzdG9y
YWdlU2Vzc2lvbjsKLSAgICB9Ci0gICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCk7Ci19Ci0KIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0Ojp3ZWJGcmFtZUxvYWRlckNsaWVudCgpIGNvbnN0CiB7CiAgICAg
aWYgKCFmcmFtZSgpKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2N1cmwvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJsL1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuaAkocmV2aXNpb24gMjM5NzM1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2N1cmwvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dChXZWJGcmFtZSopOwogCi0gICAgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBudWxscHRyOyB9CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNpb24gMjM5NzM1KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBvdmVycmlkZTsKLSAgICBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0JKHJldmlzaW9uIDIzOTczNSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDMsMjAgKzQzLDYgQEAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQotewotICAgIEFTU0VSVCghaGFzUHJvY2Vzc1ByaXZp
bGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7Ci0gICAgYXV0byBz
ZXNzaW9uSUQgPSBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQ7
Ci0gICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU3RyaW5nIGJhc2UgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKCk7Ci0gICAgaWYgKGJhc2UuaXNOdWxs
KCkpCi0gICAgICAgIGJhc2UgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZp
ZXJdOwotCi0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVTZXNzaW9uKHNlc3Npb25J
RCwgYmFzZSArICcuJyArIFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRC5zZXNzaW9uSUQoKSkpOwot
fQotCiBib29sIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmxvY2FsRmlsZUNvbnRlbnRTbmlm
ZmluZ0VuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBmcmFtZSgpICYmIGZyYW1lKCktPnNl
dHRpbmdzKCkubG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCgpOwpAQCAtODQsMTkgKzcw
LDYgQEAgUmVzb3VyY2VFcnJvciBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OgogICAgIHJldHVy
biBmcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5ibG9ja2VkRXJyb3IocmVxdWVzdCk7CiB9CiAK
LU5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFn
ZVNlc3Npb24oKSBjb25zdAotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAg
QVNTRVJUKCFoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jh
d0Nvb2tpZXMpKTsKLSAgICBpZiAoZnJhbWUoKSkgewotICAgICAgICBpZiAoYXV0byogc3RvcmFn
ZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KGZyYW1lKCktPnBhZ2UoKS0+c2Vzc2lvbklEKCkpKQotICAgICAgICAgICAgcmV0dXJuICpzdG9y
YWdlU2Vzc2lvbjsKLSAgICAgICAgLy8gU29tZSByZXF1ZXN0cyBtYXkgc3RpbGwgYmUgY29taW5n
IHNob3J0bHkgYWZ0ZXIgV2ViUHJvY2VzcyB3YXMgdG9sZCB0byBkZXN0cm95IGl0cyBzZXNzaW9u
LgotICAgICAgICBMT0dfRVJST1IoIldFQiBJbnZhbGlkIHNlc3Npb24gSUQuIFBsZWFzZSBmaWxl
IGEgYnVnIHVubGVzcyB5b3UganVzdCBkaXNhYmxlZCBwcml2YXRlIGJyb3dzaW5nLCBpbiB3aGlj
aCBjYXNlIGl0J3MgYW4gZXhwZWN0ZWQgcmFjZS4iKTsKLSAgICB9Ci0gICAgcmV0dXJuIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7Ci19Ci0KIFdlYkZyYW1l
TG9hZGVyQ2xpZW50KiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojp3ZWJGcmFtZUxvYWRlckNs
aWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKCFmcmFtZSgpKQpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDIzOTczNSkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxNSArNTgsNiBAQCBXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0OjpXZWJGcmFtZU5ldHdvCiB7CiB9CiAKLU5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBj
b25zdAotewotICAgIGlmIChmcmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vz
c2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oZnJhbWUoKS0+cGFn
ZSgpLT5zZXNzaW9uSUQoKSkpCi0gICAgICAgICAgICByZXR1cm4gKnN0b3JhZ2VTZXNzaW9uOwot
ICAgIH0KLSAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKTsKLX0KLQogV2ViRnJhbWVMb2FkZXJDbGllbnQqIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OndlYkZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3QKIHsKICAgICBpZiAoIWZyYW1lKCkp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShy
ZXZpc2lvbiAyMzk3MzUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUx
LDcgKzUxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0KFdlYkZyYW1lKik7CiAKLSAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0
b3JhZ2VTZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxw
dHI7IH0KIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMzk3MzUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0Myw4ICszMDQzLDYg
QEAgdm9pZCBXZWJQYWdlOjpzZXRMYXllckhvc3RpbmdNb2RlKExheWVySAogCiB2b2lkIFdlYlBh
Z2U6OnNldFNlc3Npb25JRChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgaWYgKHNl
c3Npb25JRC5pc0VwaGVtZXJhbCgpKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5h
ZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpwcml2YXRlU2Vz
c2lvblBhcmFtZXRlcnMoc2Vzc2lvbklEKSk7CiAgICAgbV9wYWdlLT5zZXRTZXNzaW9uSUQoc2Vz
c2lvbklEKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24g
MjM5NzM2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMDEtMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBTdG9wIHVzaW5nIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiBpbiBXZWJQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTMyMzYKKworICAgICAgICBSZXZpZXdlZCBieSBEb24gT2xtc3RlYWQu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbToK
KyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uIGNvbnN0
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAg
IChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00pOgorICAgICAgICAoV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTSk6CisgICAgICAgIChXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAgICAoV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dlYlZpZXcgX2NhY2hlZFJlc3BvbnNlRm9yVVJMOl0pOgorICAgICAgICAoLVtXZWJW
aWV3IF9jbGVhckNyZWRlbnRpYWxzXSk6CisKIDIwMTktMDEtMDggIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMjM5NzI3LgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAko
cmV2aXNpb24gMjM5NzM1KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw1ICs0
OSw1IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc291cmNlQXBwbGljYXRp
b25BdWRpdERhdGEoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgc291cmNlQXBwbGljYXRp
b25JZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lv
bigpIGNvbnN0IG92ZXJyaWRlOworICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiog
c3RvcmFnZVNlc3Npb24oKSBjb25zdCBvdmVycmlkZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQubW0JKHJldmlzaW9uIDIzOTczNSkKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0J
KHdvcmtpbmcgY29weSkKQEAgLTkwLDE0ICs5MCwxNCBAQCBSZXNvdXJjZUVycm9yIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6CiAgICAgcmV0dXJuIGZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgp
LmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsKIH0KIAotTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CitOZXR3b3JrU3Rv
cmFnZVNlc3Npb24qIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChmcmFtZSgpICYm
IGZyYW1lKCktPnBhZ2UoKSAmJiBmcmFtZSgpLT5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1l
cmFsKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklE
KCkpKQotICAgICAgICAgICAgcmV0dXJuICpzZXNzaW9uOworICAgICAgICAgICAgcmV0dXJuIHNl
c3Npb247CiAgICAgICAgIC8vIFNvbWUgcmVxdWVzdHMgbWF5IHN0aWxsIGJlIGNvbWluZyBzaG9y
dGx5IGJlZm9yZSBXZWJDb3JlIHVwZGF0ZXMgdGhlIHNlc3Npb24gSUQgYW5kIGFmdGVyIFdlYktp
dCBkZXN0cm95cyB0aGUgcHJpdmF0ZSBicm93c2luZyBzZXNzaW9uLgogICAgICAgICBMT0dfRVJS
T1IoIkludmFsaWQgc2Vzc2lvbiBJRC4gUGxlYXNlIGZpbGUgYSBidWcgdW5sZXNzIHlvdSBqdXN0
IGRpc2FibGVkIHByaXZhdGUgYnJvd3NpbmcsIGluIHdoaWNoIGNhc2UgaXQncyBhbiBleHBlY3Rl
ZCByYWNlLiIpOwogICAgIH0KLSAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZh
dWx0U3RvcmFnZVNlc3Npb24oKTsKKyAgICByZXR1cm4gJk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaAkocmV2aXNpb24gMjM5NzMzKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEz
ICs0OCwxMiBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3JlYXRlQmxv
YlJlZ2lzdHJ5KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kK
LSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29r
aWVzKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwot
ICAgIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJikgb3ZlcnJpZGU7Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOwotICAgIHN0ZDo6
cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gY29va2llc0ZvckRPTShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6Oklu
Y2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBQQUw6OlNlc3Npb25JRCYpIG92ZXJyaWRlOwor
ICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tp
ZXMpIG92ZXJyaWRlOworICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBQQUw6OlNlc3Npb25J
RCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKIAogICAgIC8vIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneQogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1t
CShyZXZpc2lvbiAyMzk3MzMpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTcyLDM5ICs3
MiwzOSBAQCBCbG9iUmVnaXN0cnkqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlCiAgICAgcmV0
dXJuIG5ldyBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29r
aWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKQorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNv
b2tpZXMpCiB7CisgICAgYXV0byYgc2Vzc2lvbiA9IHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8g
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigp
IDogTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKICAgICBy
ZXR1cm4gc2Vzc2lvbi5jb29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJs
LCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAotdm9pZCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmlu
ZykKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBQ
QUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29v
a2llU3RyaW5nKQogeworICAgIGF1dG8mIHNlc3Npb24gPSBzZXNzaW9uSUQuaXNFcGhlbWVyYWwo
KSA/IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oKSA6IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiAg
ICAgc2Vzc2lvbi5zZXRDb29raWVzRnJvbURPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKGNvbnN0
IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCiB7CisgICAgYXV0byYgc2Vzc2lvbiA9IHNlc3Np
b25JRC5pc0VwaGVtZXJhbCgpID8gV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpIDogTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3Rv
cmFnZVNlc3Npb24oKTsKICAgICByZXR1cm4gc2Vzc2lvbi5jb29raWVzRW5hYmxlZCgpOwogfQog
Ci1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5m
bywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2ll
cykKLXsKLSAgICByZXR1cm4gc2Vzc2lvbi5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShm
aXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2Vj
dXJlQ29va2llcyk7Ci19Ci0KLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzKQorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lv
bklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29r
aWVzKQogewogICAgIGF1dG8mIHNlc3Npb24gPSBzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSA6
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiAgICAgcmV0
dXJuIHNlc3Npb24uY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2Ft
ZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwog
fQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4m
IHJhd0Nvb2tpZXMpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhj
b25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKQogeworICAgIGF1dG8mIHNlc3Npb24gPSBzZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSA/IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oKSA6IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCk7CiAgICAgcmV0dXJuIHNlc3Npb24uZ2V0UmF3Q29va2llcyhmaXJzdFBhcnR5LCBzYW1lU2l0
ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKGNvbnN0IFBBTDo6U2Vzc2lv
bklEJiBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUp
CiB7CisgICAgYXV0byYgc2Vzc2lvbiA9IHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8gV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpIDogTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKICAgICBzZXNzaW9u
LmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyMzk3MzUpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM2NjgsNyArMzY2OCw3IEBAIC0gKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKilfY2FjaGVkUmVzcG9u
c2UKICAgICBpZiAoIV9wcml2YXRlLT5wYWdlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
aWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24gPSBfcHJpdmF0ZS0+cGFn
ZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkubmV0d29ya2luZ0NvbnRleHQoKS0+c3RvcmFnZVNlc3Np
b24oKS5wbGF0Zm9ybVNlc3Npb24oKSkKKyAgICBpZiAoYXV0byBzdG9yYWdlU2Vzc2lvbiA9IF9w
cml2YXRlLT5wYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpLT5z
dG9yYWdlU2Vzc2lvbigpLT5wbGF0Zm9ybVNlc3Npb24oKSkKICAgICAgICAgY2FjaGVkUmVzcG9u
c2UgPSBjYWNoZWRSZXNwb25zZUZvclJlcXVlc3Qoc3RvcmFnZVNlc3Npb24sIHJlcXVlc3QuZ2V0
KCkpOwogICAgIGVsc2UKICAgICAgICAgY2FjaGVkUmVzcG9uc2UgPSBbW05TVVJMQ2FjaGUgc2hh
cmVkVVJMQ2FjaGVdIGNhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdDpyZXF1ZXN0LmdldCgpXTsKQEAg
LTkyNTEsNyArOTI1MSw3IEBAIC0gKHZvaWQpX2NsZWFyQ3JlZGVudGlhbHMKICAgICBpZiAoIW5l
dHdvcmtpbmdDb250ZXh0KQogICAgICAgICByZXR1cm47CiAKLSAgICBuZXR3b3JraW5nQ29udGV4
dC0+c3RvcmFnZVNlc3Npb24oKS5jcmVkZW50aWFsU3RvcmFnZSgpLmNsZWFyQ3JlZGVudGlhbHMo
KTsKKyAgICBuZXR3b3JraW5nQ29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS0+Y3JlZGVudGlhbFN0
b3JhZ2UoKS5jbGVhckNyZWRlbnRpYWxzKCk7CiB9CiAKIC0gKEJPT0wpX25lZWRzT25lU2hvdERy
YXdpbmdTeW5jaHJvbml6YXRpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzOTczNSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE5LTAxLTA4ICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2luZyBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24gaW4gV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRG9uIE9s
bXN0ZWFkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vz
c2lvbiBjb25zdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHA6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00pOgor
ICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTSk6CisgICAg
ICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKwogMjAxOS0wMS0wOCAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyMzk3MjcuCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmNwcAkocmV2aXNpb24gMjM5NzM1KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk5LDEyICs5OSwxMiBAQCBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6CiAgICAgcmV0dXJuIGZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmJsb2NrZWRFcnJvcihy
ZXF1ZXN0KTsKIH0KIAotTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CitOZXR3b3JrU3RvcmFnZVNlc3Npb24qIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+cGFn
ZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQotICAgICAgICByZXR1cm4gKk5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVT
ZXNzaW9uSUQoKSk7CisgICAgICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3Jh
Z2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwogCi0g
ICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7
CisgICAgcmV0dXJuICZOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lv
bigpOwogfQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNp
b24gMjM5NzM1KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw1ICs0Nyw1IEBA
IHByaXZhdGU6CiAgICAgfQogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IG92
ZXJyaWRlOworICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Np
b24oKSBjb25zdCBvdmVycmlkZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAJKHJldmlzaW9uIDIzOTczMykKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5
LDM4ICs2OSwzOCBAQCBCbG9iUmVnaXN0cnkqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlCiAg
ICAgcmV0dXJuIG5ldyBCbG9iUmVnaXN0cnlJbXBsOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzKQorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMpCiB7CisgICAgYXV0byYgc2Vzc2lvbiA9IHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8gV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpIDog
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKICAgICByZXR1
cm4gc2Vzc2lvbi5jb29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBm
cmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAotdm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykK
K3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBQQUw6
OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyaW5nKQogeworICAgIGF1dG8mIHNlc3Npb24gPSBzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
KSA6IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiAgICAg
c2Vzc2lvbi5zZXRDb29raWVzRnJvbURPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwg
ZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKGNvbnN0IFBB
TDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCiB7CisgICAgYXV0byYgc2Vzc2lvbiA9IHNlc3Npb25J
RC5pc0VwaGVtZXJhbCgpID8gV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbigpIDogTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKTsKICAgICByZXR1cm4gc2Vzc2lvbi5jb29raWVzRW5hYmxlZCgpOwogfQogCi1z
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykK
LXsKLSAgICByZXR1cm4gc2Vzc2lvbi5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJz
dFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJl
Q29va2llcyk7Ci19Ci0KLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29r
aWVzKQorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklE
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
KQogewogICAgIGF1dG8mIHNlc3Npb24gPSBzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSA6IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiAgICAgcmV0dXJu
IHNlc3Npb24uY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNp
dGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQog
Ci1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJh
d0Nvb2tpZXMpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25z
dCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+
JiByYXdDb29raWVzKQogeworICAgIGF1dG8mIHNlc3Npb24gPSBzZXNzaW9uSUQuaXNFcGhlbWVy
YWwoKSA/IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oKSA6IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7
CiAgICAgcmV0dXJuIHNlc3Npb24uZ2V0UmF3Q29va2llcyhmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKGNvbnN0IFBBTDo6U2Vzc2lvbklE
JiBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7
CisgICAgYXV0byYgc2Vzc2lvbiA9IHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8gV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpIDogTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKICAgICBzZXNzaW9uLmRl
bGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpOwogfQpJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgJKHJldmlzaW9uIDIzOTczMykKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NSwxMSArNDUsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkJsb2JSZWdpc3Ry
eSogY3JlYXRlQmxvYlJlZ2lzdHJ5KCk7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRl
Z3kKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVD
b29raWVzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJik7
Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYpOwotICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBvdmVycmlkZTsKLSAgICBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNl
c3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmlydHVh
bCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBjb29raWVzRm9yRE9NKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVz
RnJvbURPTShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYpOworICAg
IHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBQQUw6OlNlc3Npb25JRCYpOworICAg
IHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFBBTDo6U2Vz
c2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJik7CiB9Owo=
</data>
<flag name="review"
          id="375444"
          type_id="1"
          status="+"
          setter="don.olmstead"
    />
          </attachment>
      

    </bug>

</bugzilla>