<?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>178751</bug_id>
          
          <creation_ts>2017-10-24 14:25:34 -0700</creation_ts>
          <short_desc>Merge NetworkProcess::EnsurePrivateBrowsingSession and NetworkProcess::AddWebsiteDataStore into one message type</short_desc>
          <delta_ts>2017-11-30 21:32:44 -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>berto</cc>
    
    <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>danw</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1363903</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-24 14:25:34 -0700</bug_when>
    <thetext>Merge NetworkProcess::EnsurePrivateBrowsingSession and NetworkProcess::AddWebsiteDataStore into one message type</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363909</commentid>
    <comment_count>1</comment_count>
      <attachid>324724</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-24 14:28:28 -0700</bug_when>
    <thetext>Created attachment 324724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363949</commentid>
    <comment_count>2</comment_count>
      <attachid>324734</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-24 15:11:01 -0700</bug_when>
    <thetext>Created attachment 324734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363972</commentid>
    <comment_count>3</comment_count>
      <attachid>324741</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-24 15:49:51 -0700</bug_when>
    <thetext>Created attachment 324741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364008</commentid>
    <comment_count>4</comment_count>
      <attachid>324753</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-24 16:45:18 -0700</bug_when>
    <thetext>Created attachment 324753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364010</commentid>
    <comment_count>5</comment_count>
      <attachid>324755</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-24 16:46:30 -0700</bug_when>
    <thetext>Created attachment 324755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364302</commentid>
    <comment_count>6</comment_count>
      <attachid>324848</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-25 10:43:13 -0700</bug_when>
    <thetext>Created attachment 324848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371137</commentid>
    <comment_count>7</comment_count>
      <attachid>326818</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-11-13 15:47:10 -0800</bug_when>
    <thetext>Created attachment 326818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371138</commentid>
    <comment_count>8</comment_count>
      <attachid>326818</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-11-13 15:48:28 -0800</bug_when>
    <thetext>Comment on attachment 326818
Patch

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

&gt; Source/WebKit/NetworkProcess/mac/RemoteNetworkingContext.mm:99
&gt; +    if (!sessionID.isEphemeral()) {
&gt; +        bool result = SandboxExtension::consumePermanently(parameters.cookieStoragePathExtensionHandle);
&gt; +        ASSERT_UNUSED(result, result);
&gt; +    }

I reworked this part to only consume sandbox extensions if it&apos;s a persistent session because consuming empty sandbox extensions was succeeding and asserting.

&gt; Source/WebKit/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:62
&gt; +        bool result = SandboxExtension::consumePermanently(parameters.cookieStoragePathExtensionHandle);

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371139</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-11-13 15:51:04 -0800</bug_when>
    <thetext>http://trac.webkit.org/r224791</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371404</commentid>
    <comment_count>10</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-11-14 09:35:14 -0800</bug_when>
    <thetext>API test IndexedDB.StructuredCloneBackwardCompatibility is failing an assertion added with this change:

ASSERTION FAILED: result
/Volumes/Data/slave/highsierra-debug/build/Source/WebKit/NetworkProcess/mac/RemoteNetworkingContext.mm(98) : static void WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession(WebKit::WebsiteDataStoreParameters &amp;&amp;)
1   0x10e680b9d WTFCrash
2   0x10783ce78 WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession(WebKit::WebsiteDataStoreParameters&amp;&amp;)
3   0x1075d9ad1 WebKit::NetworkProcess::addWebsiteDataStore(WebKit::WebsiteDataStoreParameters&amp;&amp;)
4   0x10760dcba void IPC::callMemberFunctionImpl&lt;WebKit::NetworkProcess, void (WebKit::NetworkProcess::*)(WebKit::WebsiteDataStoreParameters&amp;&amp;), std::__1::tuple&lt;WebKit::WebsiteDataStoreParameters&gt;, 0ul&gt;(WebKit::NetworkProcess*, void (WebKit::NetworkProcess::*)(WebKit::WebsiteDataStoreParameters&amp;&amp;), std::__1::tuple&lt;WebKit::WebsiteDataStoreParameters&gt;&amp;&amp;, std::__1::integer_sequence&lt;unsigned long, 0ul&gt;)
5   0x10760da30 void IPC::callMemberFunction&lt;WebKit::NetworkProcess, void (WebKit::NetworkProcess::*)(WebKit::WebsiteDataStoreParameters&amp;&amp;), std::__1::tuple&lt;WebKit::WebsiteDataStoreParameters&gt;, std::__1::integer_sequence&lt;unsigned long, 0ul&gt; &gt;(std::__1::tuple&lt;WebKit::WebsiteDataStoreParameters&gt;&amp;&amp;, WebKit::NetworkProcess*, void (WebKit::NetworkProcess::*)(WebKit::WebsiteDataStoreParameters&amp;&amp;))
6   0x10760a9ef void IPC::handleMessage&lt;Messages::NetworkProcess::AddWebsiteDataStore, WebKit::NetworkProcess, void (WebKit::NetworkProcess::*)(WebKit::WebsiteDataStoreParameters&amp;&amp;)&gt;(IPC::Decoder&amp;, WebKit::NetworkProcess*, void (WebKit::NetworkProcess::*)(WebKit::WebsiteDataStoreParameters&amp;&amp;))
7   0x1076097d6 WebKit::NetworkProcess::didReceiveNetworkProcessMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
8   0x1075d86cb WebKit::NetworkProcess::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
9   0x10738e2f3 IPC::Connection::dispatchMessage(IPC::Decoder&amp;)
10  0x1073838d8 IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)
11  0x10738e8fa IPC::Connection::dispatchOneMessage()
12  0x1073a6bdd IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_14::operator()()
13  0x1073a6b39 WTF::Function&lt;void ()&gt;::CallableWrapper&lt;IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_14&gt;::call()
14  0x10e6b61fb WTF::Function&lt;void ()&gt;::operator()() const
15  0x10e6d824d WTF::RunLoop::performWork()
16  0x10e6d89e4 WTF::RunLoop::performWork(void*)
17  0x7fff41f6b941 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
18  0x7fff4202333c __CFRunLoopDoSource0
19  0x7fff41f4e930 __CFRunLoopDoSources0
20  0x7fff41f4ddad __CFRunLoopRun
21  0x7fff41f4d607 CFRunLoopRunSpecific
22  0x7fff440143f6 -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
23  0x7fff440142ce -[NSRunLoop(NSRunLoop) run]
24  0x7fff69821f07 _xpc_objc_main
25  0x7fff69820b86 xpc_main
26  0x10724712b main
27  0x7fff69556145 start

https://build.webkit.org/builders/Apple%20High%20Sierra%20Debug%20WK2%20%28Tests%29/builds/809</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371500</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-11-14 11:50:43 -0800</bug_when>
    <thetext>http://trac.webkit.org/r224827</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371972</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 09:42:48 -0800</bug_when>
    <thetext>&lt;rdar://problem/35562290&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376715</commentid>
    <comment_count>13</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-11-30 21:32:44 -0800</bug_when>
    <thetext>Regression fixed in https://bugs.webkit.org/show_bug.cgi?id=180235</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324724</attachid>
            <date>2017-10-24 14:28:28 -0700</date>
            <delta_ts>2017-10-24 15:10:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178751-20171024142828.patch</filename>
            <type>text/plain</type>
            <size>26284</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzkwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE3LTEwLTI0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWVyZ2UgTmV0
d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24gYW5kIE5ldHdvcmtQcm9j
ZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlIGludG8gb25lIG1lc3NhZ2UgdHlwZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NzUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGNyZWF0aW9uIG9mIHBy
aXZhdGUgYnJvd3Npbmcgc2Vzc2lvbnMgYW5kIHBlcnNpc3RlbnQgYnJvd3Npbmcgc2Vzc2lvbnMg
aGFzIGV2b2x2ZWQgdG8gYmUgdGhlIHNhbWUgdGhpbmcKKyAgICAgICAgd2l0aCBkaWZmZXJlbmNl
cyBpbiBwYXJhbWV0ZXJzLCBsaWtlIG5vIHNhbmRib3ggZXh0ZW5zaW9ucyBvciBwYXRocyB0byBw
ZXJzaXN0ZW50IHN0b3JhZ2UgbG9jYXRpb25zIGZvciBwcml2YXRlIGJyb3dzaW5nLgorICAgICAg
ICBUaGVzZSBzaG91bGQgYmUgdW5pdGVkIHRvIHNpbXBsaWZ5IGZ1dHVyZSBkZXZlbG9wbWVudCBv
ZiBXZWJzaXRlRGF0YVN0b3JlIGNvbnN0cnVjdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Tb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZW5z
dXJlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEZWxldGVkLgorCiAyMDE3LTEwLTI0ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQXBwbHkg
Y3VzdG9tIGhlYWRlciBmaWVsZHMgZnJvbSBXZWJzaXRlUG9saWNpZXMgdG8gc2FtZS1kb21haW4g
cmVxdWVzdHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAkocmV2aXNpb24gMjIzODU4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjMsNyArNjMsNiBAQCBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gewog
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IGRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBOZXR3
b3JrU3RvcmFnZVNlc3Npb24qIHN0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlID0gU3RyaW5nKCkpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGVuc3VyZVNlc3Npb24oUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckJhc2UgPSBTdHJpbmcoKSk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgZGVzdHJveVNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGZvckVhY2goY29uc3QgV1RGOjpGdW5jdGlvbjx2
b2lkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpPiYpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5l
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsMTIgKzEwOCw2IEBAIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgTmV0d29ya1N0b3JhZ2VTZXMKICAgICByZXR1cm4gKmRlZmF1bHROZXR3b3JrU3RvcmFn
ZVNlc3Npb24oKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXJCYXNlKQotewotICAgIEFTU0VSVChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7
Ci0gICAgZW5zdXJlU2Vzc2lvbihzZXNzaW9uSUQsIGlkZW50aWZpZXJCYXNlKTsKLX0KLQogdm9p
ZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlLCBSZXRhaW5QdHI8Q0ZIVFRQQ29v
a2llU3RvcmFnZVJlZj4mJiBjb29raWVTdG9yYWdlKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0g
Z2xvYmFsU2Vzc2lvbk1hcCgpLmFkZChzZXNzaW9uSUQsIG51bGxwdHIpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAkocmV2aXNpb24gMjIzODU4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxOCArNzksMTIgQEAgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBOZXR3b3JrU3RvcmFnZVNlcwogICAgIHJldHVybiAqZGVmYXVsdFNlc3Npb24oKTsKIH0K
IAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmKQordm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmVuc3VyZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgQVNTRVJUKHNlc3Npb25JRCAhPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpKTsKICAgICBBU1NFUlQoIWdsb2JhbFNlc3Npb25NYXAoKS5jb250YWlucyhzZXNz
aW9uSUQpKTsKICAgICBnbG9iYWxTZXNzaW9uTWFwKCkuYWRkKHNlc3Npb25JRCwgc3RkOjptYWtl
X3VuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwgc3RkOjptYWtlX3VuaXF1
ZTxTb3VwTmV0d29ya1Nlc3Npb24+KHNlc3Npb25JRCkpKTsKIH0KIAotdm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmVuc3VyZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYp
Ci17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudAotfQotCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCiB7CiAgICAgZGVmYXVsdFNlc3Npb24o
KSA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBzdGQ6Om1ha2VfdW5pcXVlPFNvdXBOZXR3b3JrU2Vzc2lv
bj4oKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjIzOTIyKQorKysgU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MSBAQAorMjAxNy0xMC0yNCAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1lcmdl
IE5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uIGFuZCBOZXR3b3Jr
UHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZSBpbnRvIG9uZSBtZXNzYWdlIHR5cGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODc1MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW06
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRl
RGF0YVN0b3JlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250
ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBT
aGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6bGVnYWN5UHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJz
KToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBhZ2VBZGRlZFRvUHJvY2Vzcyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFi
bGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFNlc3Npb25JRCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorCiAyMDE3LTEwLTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIGluaXRpYWwgaW1wbGVtZW50YXRpb24gZm9yIHNlcnZpY2VXb3Jr
ZXIucG9zdE1lc3NhZ2UoKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjgsNyArNDY4LDcgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0QwogCiB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KCkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbih7IHsgfSwgeyB9LCB7IH0sIHsgfSwgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhLCB7IH0sIHsgUEFMOjpTZXNzaW9uSUQ6OmxlZ2Fj
eVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7IH0sIEFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXMg
fX0pOworICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRXZWJzaXRlRGF0YVN0b3Jl
KFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpsZWdhY3lQcml2YXRlU2Vzc2lvblBhcmFtZXRl
cnMoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIyMzg1OCkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlh
bGl6ZU5ldHdvcmtQcgogCiAgICAgLy8gRklYTUU6IGluc3RlYWQgb2YgaGFuZGxpbmcgdGhpcyBo
ZXJlLCBhIG1lc3NhZ2Ugc2hvdWxkIGJlIHNlbnQgbGF0ZXIgKHNjYWxlcyB0byBtdWx0aXBsZSBz
ZXNzaW9ucykKICAgICBpZiAocGFyYW1ldGVycy5wcml2YXRlQnJvd3NpbmdFbmFibGVkKQotICAg
ICAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bih7IHsgfSwgeyB9LCB7IH0sIHsgfSwgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3Rv
cmFnZVBlck9yaWdpblF1b3RhLCB7IH0sIHsgUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVT
ZXNzaW9uSUQoKSwgeyB9LCB7IH0sICBBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVzIH19KTsKKyAg
ICAgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNz
aW9uKHsgeyB9LCB7IH0sIHsgfSwgeyB9LCBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVT
dG9yYWdlUGVyT3JpZ2luUXVvdGEsIHsgfSwgeyBQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0
ZVNlc3Npb25JRCgpLCB7IH0sIHsgfSwgIEFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXMgfX0pOwog
CiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKQogICAg
ICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsK
QEAgLTI5NywxMSArMjk3LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJDYWNoZWRDcmVk
ZW50aQogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQotewot
ICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KFdURk1vdmUocGFyYW1ldGVycykpOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRXZWJz
aXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsK
ICAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Np
b24oV1RGTW92ZShwYXJhbWV0ZXJzKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEz
Miw3ICsxMzIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmlu
ZyYpOwogCi0gICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzJiYpOworICAgIHZvaWQgYWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKIAogICAgIHZvaWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9u
c1RvU3RvcmFnZVByb2Nlc3NGb3JCbG9icyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVz
LCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIApAQCAtMTg3LDcgKzE4
Nyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoKTsKLSAgICB2b2lkIGFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBkZXN0cm95U2Vzc2lvbihQQUw6OlNl
c3Npb25JRCk7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlv
bj4sIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAy
MjM4NTgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBAIG1lc3NhZ2VzIC0+IE5l
dHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmUKIAogICAgIENsZWFyQ2FjaGVkQ3JlZGVudGlhbHMo
KQogCi0gICAgRW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzdHJ1Y3QgV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycykKICAgICBB
ZGRXZWJzaXRlRGF0YVN0b3JlKHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzIHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKTsKICAgICBEZXN0cm95U2Vzc2lvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDIyMzg1
OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+UmVtb3RlTmV0d29ya2luZ0NvbnRleHQoKTsKIAogICAgIC8vIEZJWE1FOiBSZW1vdmUgcGxh
dGZvcm0tc3BlY2lmaWMgY29kZSBhbmQgdXNlIFNlc3Npb25UcmFja2VyLgotICAgIHN0YXRpYyB2
b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMmJik7CiAgICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CiAKICAgICBib29sIHNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Q7IH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tCShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtODEs
MzIgKzgxLDYgQEAgUmVzb3VyY2VFcnJvciBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6YgogICAg
IHJldHVybiBXZWJLaXQ6OmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsKIH0KIAotdm9pZCBSZW1vdGVO
ZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCi17Ci0gICAgYXV0byBzZXNzaW9uSUQgPSBw
YXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQ7Ci0gICAgQVNTRVJU
KHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKLQotICAgIGlmIChOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFN0
cmluZyBiYXNlOwotICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKS5p
c051bGwoKSkKLSAgICAgICAgYmFzZSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRl
bnRpZmllcl07Ci0gICAgZWxzZQotICAgICAgICBiYXNlID0gU2Vzc2lvblRyYWNrZXI6OmdldElk
ZW50aWZpZXJCYXNlKCk7Ci0KLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklELCBiYXNlICsgJy4nICsgU3RyaW5nOjpudW1iZXIo
c2Vzc2lvbklELnNlc3Npb25JRCgpKSk7Ci0KLSAgICBhdXRvKiBzZXNzaW9uID0gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGZvciAoY29uc3Qg
YXV0byYgY29va2llIDogcGFyYW1ldGVycy5wZW5kaW5nQ29va2llcykKLSAgICAgICAgc2Vzc2lv
bi0+c2V0Q29va2llKGNvb2tpZSk7Ci0KLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIHBh
cmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmxlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlciA9IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PExlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlcj4oKTsKLSAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihzZXNz
aW9uSUQsIE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLm5ldHdvcmtT
ZXNzaW9uUGFyYW1ldGVycykpKTsKLSNlbmRpZgotfQotCiB2b2lkIFJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJz
Lm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQ7CkBAIC0xMTksNyArOTMsOCBAQCB2
b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzCiAgICAgZWxzZQogICAgICAg
ICBiYXNlID0gU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCk7CiAKLSAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5jb29raWVTdG9yYWdl
UGF0aEV4dGVuc2lvbkhhbmRsZSk7CisgICAgYm9vbCByZXN1bHQgPSBTYW5kYm94RXh0ZW5zaW9u
Ojpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lv
bkhhbmRsZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9ICFzZXNzaW9uSUQu
aXNFcGhlbWVyYWwoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4g
dWlQcm9jZXNzQ29va2llU3RvcmFnZTsKICAgICBpZiAoIXBhcmFtZXRlcnMudWlQcm9jZXNzQ29v
a2llU3RvcmFnZUlkZW50aWZpZXIuaXNFbXB0eSgpKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjIz
ODU4KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMuaCIKIAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
QEAgLTc3LDUgKzc4LDkgQEAgYm9vbCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2Rl
KAogICAgIHJldHVybiB0cnVlOwogfQogCitXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6bGVnYWN5UHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKCkK
K3sKKyAgICByZXR1cm4geyB7IH0sIHsgfSwgeyB9LCB7IH0sIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSwgeyB9LCB7IFBBTDo6U2Vzc2lvbklEOjps
ZWdhY3lQcml2YXRlU2Vzc2lvbklEKCksIHsgfSwgeyB9LCB7IH19fTsKK30KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDYgKzQzLDcgQEAgc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHsKICAgICBXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycygpID0gZGVmYXVsdDsKICAgICBXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycyhXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKSA9IGRlZmF1bHQ7CiAgICAg
fldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKCk7CisgICAgc3RhdGljIFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzIGxlZ2FjeVByaXZhdGVTZXNzaW9uUGFyYW1ldGVycygpOwogICAgIAogICAg
IHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBib29sIGRlY29k
ZShJUEM6OkRlY29kZXImLCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYpOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjIzODU4
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MzAsMTMgKzYzMCwxMyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBbnlQ
YWdlR3JvdXBNaWdoCiB7CiAgICAgaWYgKG5ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgaWYg
KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bih7IHsgfSwgeyB9LCB7IH0sIHsgfSwgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3Rv
cmFnZVBlck9yaWdpblF1b3RhLCB7IH0sIHsgUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVT
ZXNzaW9uSUQoKSwgeyB9LCB7IH0sIEFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXMgfX0pLCAwKTsK
KyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpsZWdh
Y3lQcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoKSksIDApOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVz
dHJveVNlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSksIDAp
OwogICAgIH0KIAogICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKQotICAgICAgICBzZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSkpOworICAg
ICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkFkZFdlYnNpdGVE
YXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmxlZ2FjeVByaXZhdGVTZXNzaW9u
UGFyYW1ldGVycygpKSk7CiAgICAgZWxzZQogICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OkRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQ
cml2YXRlU2Vzc2lvbklEKCkpKTsKIH0KQEAgLTgyMCw3ICs4MjAsNyBAQCBXZWJQcm9jZXNzUHJv
eHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOCiAjZW5kaWYKIAogICAgIGlmIChXZWJQcmVmZXJl
bmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpKQotICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpLCAwKTsKKyAgICAgICAg
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZShX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6bGVnYWN5UHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJz
KCkpLCAwKTsKIAogICAgIGlmIChtX2F1dG9tYXRpb25TZXNzaW9uKQogICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVBdXRvbWF0aW9uU2Vzc2lvblByb3h5
KG1fYXV0b21hdGlvblNlc3Npb24tPnNlc3Npb25JZGVudGlmaWVyKCkpLCAwKTsKQEAgLTEwMDUs
MTEgKzEwMDUsOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQWRkZWRUb1Byb2Nlc3MoCiAK
ICAgICBhdXRvIHNlc3Npb25JRCA9IHBhZ2Uuc2Vzc2lvbklEKCk7CiAgICAgaWYgKHNlc3Npb25J
RC5pc0VwaGVtZXJhbCgpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBNZXJnZSBOZXR3b3JrUHJvY2Vz
czo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbiBhbmQgTmV0d29ya1Byb2Nlc3M6OkFkZFdl
YnNpdGVEYXRhU3RvcmUgaW50byBvbmUgbWVzc2FnZSB0eXBlLgotICAgICAgICAvLyBUaGV5IGRv
IGJhc2ljYWxseSB0aGUgc2FtZSB0aGluZy4KICAgICAgICAgQVNTRVJUKHBhZ2Uud2Vic2l0ZURh
dGFTdG9yZSgpLnBhcmFtZXRlcnMoKS5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklE
ID09IHNlc3Npb25JRCk7Ci0gICAgICAgIHNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihwYWdlLndlYnNp
dGVEYXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkpKTsKLSAgICAgICAgcGFnZS5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNz
aW9uSUQpLCAwKTsKKyAgICAgICAgc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgp
LnBhcmFtZXRlcnMoKSkpOworICAgICAgICBwYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKHt7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwg
eyB9LCB7IHNlc3Npb25JRCwgeyB9LCB7IH0sIHsgfX19KSwgMCk7CiAgICAgfSBlbHNlIGlmIChz
ZXNzaW9uSUQgIT0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkgewogICAgICAg
ICBzZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFkZFdl
YnNpdGVEYXRhU3RvcmUocGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygpKSk7CiAg
ICAgICAgIHBhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkFkZFdlYnNp
dGVEYXRhU3RvcmUocGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygpKSwgMCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMjM4
NTgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUxNSwxMSArNTE1LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpmdWxsS2V5Ym9hcmRB
Y2Nlc3NNb2RlQwogICAgIG1fZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA9IGZ1bGxLZXlib2Fy
ZEFjY2Vzc0VuYWJsZWQ7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi17Ci0gICAgV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih7IHsgfSwgeyB9LCB7
IH0sIHsgfSwgeyB9LCB7IH0sIHsgc2Vzc2lvbklELCB7IH0sIHsgfSwgQWxsb3dzQ2VsbHVsYXJB
Y2Nlc3M6OlllcyB9fSk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9y
ZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV1RGTW92
ZShwYXJhbWV0ZXJzKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJ
KHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OSw3ICsxNzksNiBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNldENhY2hlTW9kZWwodWludDMyX3QpOwogCi0gICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIGVuc3VyZUxlZ2FjeVByaXZhdGVC
cm93c2luZ1Nlc3Npb25Jbk5ldHdvcmtQcm9jZXNzKCk7CiAgICAgdm9pZCBhZGRXZWJzaXRlRGF0
YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgZGVzdHJveVNl
c3Npb24oUEFMOjpTZXNzaW9uSUQpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw3ICs0Nyw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewog
CiAgICAgQ2xlYXJDYWNoZWRDcmVkZW50aWFscygpCiAKLSAgICBFbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICBBZGRXZWJzaXRlRGF0YVN0
b3JlKHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHdlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzKTsKICAgICBEZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkocmV2aXNpb24gMjIzODU4KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6
OnNldFByaXZhdGVCcm93c2luZ0UKIHsKICAgICBpZiAoZW5hYmxlZCkgewogICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uSW5O
ZXR3b3JrUHJvY2VzcygpOwotICAgICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHsgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwg
eyBQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpLCB7IH0sIHsgfSwgQWxs
b3dzQ2VsbHVsYXJBY2Nlc3M6OlllcyB9fSk7CisgICAgICAgIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKHsgeyB9LCB7IH0sIHsgfSwgeyB9
LCB7IH0sIHsgfSwgeyBQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpLCB7
IH0sIHsgfSwgQWxsb3dzQ2VsbHVsYXJBY2Nlc3M6OlllcyB9fSk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25JRCgpKTsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBG
SVhNRTogcmVtb3ZlIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgYW5kIHVzZSBTZXNzaW9uVHJhY2tl
cgotICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMmJik7CiAgICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vic2l0ZURhdGFT
dG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CiAKICAgICBzdGF0aWMg
dm9pZCBzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhIVFRQQ29va2llQWNjZXB0
UG9saWN5KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQubW0JKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5
KQpAQCAtNDUsMjYgKzQ1LDYgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKLSAgICAKLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMpCi17Ci0gICAgYXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9u
UGFyYW1ldGVycy5zZXNzaW9uSUQ7Ci0gICAgQVNTRVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgp
KTsKLQotICAgIGlmIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNz
aW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFN0cmluZyBiYXNlOwotICAg
IGlmIChTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKS5pc051bGwoKSkKLSAgICAg
ICAgYmFzZSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07Ci0gICAg
ZWxzZQotICAgICAgICBiYXNlID0gU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCk7
Ci0KLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oc2Vzc2lvbklELCBiYXNlICsgJy4nICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Np
b25JRCgpKSk7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBTZXNzaW9uVHJhY2tlcjo6
c2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUoV1RGTW92ZShwYXJh
bWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsKLSNlbmRpZgotfQogCiB2b2lkIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKQEAgLTc4LDkgKzU4LDE0
IEBAIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2UKICAgICBlbHNlCiAg
ICAgICAgIGJhc2UgPSBTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKTsKIAotICAg
IFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmNvb2tpZVN0
b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBib29sIHJlc3VsdCA9IFNhbmRib3hFeHRl
bnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRoRXh0
ZW5zaW9uSGFuZGxlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID0gIXNlc3Np
b25JRC5pc0VwaGVtZXJhbCgpKTsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiB1aVByb2Nlc3NDb29raWVTdG9yYWdlID0gY29va2llU3RvcmFnZUZyb21JZGVudGlmeWlu
Z0RhdGEocGFyYW1ldGVycy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllcik7CisgICAg
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2U7
CisgICAgaWYgKCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgdWlQcm9jZXNzQ29v
a2llU3RvcmFnZSA9IGNvb2tpZVN0b3JhZ2VGcm9tSWRlbnRpZnlpbmdEYXRhKHBhcmFtZXRlcnMu
dWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIpOworICAgIGVsc2UKKyAgICAgICAgQVNT
RVJUKHBhcmFtZXRlcnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIuaXNFbXB0eSgp
KTsKIAogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZW5zdXJlU2Vzc2lvbihzZXNzaW9uSUQs
IGJhc2UgKyAnLicgKyBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQuc2Vzc2lvbklEKCkpLCBXVEZN
b3ZlKHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2UpKTsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjEsNiArMTIxLDcgQEAKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIKICNpbmNsdWRlICJXZWJWYWxpZGF0aW9u
TWVzc2FnZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNv
dXJjZS5oPgpAQCAtMjczMCw3ICsyNzMxLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRMYXllckhvc3Rp
bmdNb2RlKExheWVySAogdm9pZCBXZWJQYWdlOjpzZXRTZXNzaW9uSUQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQogewogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNz
aW9uSUQpOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRXZWJzaXRlRGF0YVN0
b3JlKHt7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IHNlc3Npb25JRCwgeyB9LCB7IH0s
IHsgfX19KTsKICAgICBtX3BhZ2UtPnNldFNlc3Npb25JRChzZXNzaW9uSUQpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAxNy0xMC0yNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIE1lcmdlIE5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uIGFuZCBOZXR3b3JrUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZSBpbnRvIG9uZSBt
ZXNzYWdlIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3ODc1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAg
ICAgKFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24pOgorCiAyMDE3LTEwLTIwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAK
ICAgICAgICAgW1dlYiBBbmltYXRpb25zXSBQcm92aWRlIGJhc2ljIHRpbWVsaW5lIGFuZCBhbmlt
YXRpb24gaW50ZXJmYWNlcwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
Lm1tCShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw3ICs0Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVn
YWN5UHJpdmF0ZVNlc3Npb25JRCgpLCBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50
aWZpZXJdKTsKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVNlc3Npb24oUEFMOjpT
ZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgW1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBidW5kbGVJZGVudGlmaWVyXSk7CiAgICAgcmV0dXJuICpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnN0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkp
OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324734</attachid>
            <date>2017-10-24 15:11:01 -0700</date>
            <delta_ts>2017-10-24 15:49:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178751-20171024151100.patch</filename>
            <type>text/plain</type>
            <size>26294</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzkwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE3LTEwLTI0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWVyZ2UgTmV0
d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24gYW5kIE5ldHdvcmtQcm9j
ZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlIGludG8gb25lIG1lc3NhZ2UgdHlwZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NzUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGNyZWF0aW9uIG9mIHBy
aXZhdGUgYnJvd3Npbmcgc2Vzc2lvbnMgYW5kIHBlcnNpc3RlbnQgYnJvd3Npbmcgc2Vzc2lvbnMg
aGFzIGV2b2x2ZWQgdG8gYmUgdGhlIHNhbWUgdGhpbmcKKyAgICAgICAgd2l0aCBkaWZmZXJlbmNl
cyBpbiBwYXJhbWV0ZXJzLCBsaWtlIG5vIHNhbmRib3ggZXh0ZW5zaW9ucyBvciBwYXRocyB0byBw
ZXJzaXN0ZW50IHN0b3JhZ2UgbG9jYXRpb25zIGZvciBwcml2YXRlIGJyb3dzaW5nLgorICAgICAg
ICBUaGVzZSBzaG91bGQgYmUgdW5pdGVkIHRvIHNpbXBsaWZ5IGZ1dHVyZSBkZXZlbG9wbWVudCBv
ZiBXZWJzaXRlRGF0YVN0b3JlIGNvbnN0cnVjdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Tb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZW5z
dXJlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEZWxldGVkLgorCiAyMDE3LTEwLTI0ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQXBwbHkg
Y3VzdG9tIGhlYWRlciBmaWVsZHMgZnJvbSBXZWJzaXRlUG9saWNpZXMgdG8gc2FtZS1kb21haW4g
cmVxdWVzdHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAkocmV2aXNpb24gMjIzODU4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjMsNyArNjMsNiBAQCBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gewog
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IGRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBOZXR3
b3JrU3RvcmFnZVNlc3Npb24qIHN0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlID0gU3RyaW5nKCkpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGVuc3VyZVNlc3Npb24oUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckJhc2UgPSBTdHJpbmcoKSk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgZGVzdHJveVNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGZvckVhY2goY29uc3QgV1RGOjpGdW5jdGlvbjx2
b2lkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpPiYpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5l
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsMTIgKzEwOCw2IEBAIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgTmV0d29ya1N0b3JhZ2VTZXMKICAgICByZXR1cm4gKmRlZmF1bHROZXR3b3JrU3RvcmFn
ZVNlc3Npb24oKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXJCYXNlKQotewotICAgIEFTU0VSVChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7
Ci0gICAgZW5zdXJlU2Vzc2lvbihzZXNzaW9uSUQsIGlkZW50aWZpZXJCYXNlKTsKLX0KLQogdm9p
ZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlLCBSZXRhaW5QdHI8Q0ZIVFRQQ29v
a2llU3RvcmFnZVJlZj4mJiBjb29raWVTdG9yYWdlKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0g
Z2xvYmFsU2Vzc2lvbk1hcCgpLmFkZChzZXNzaW9uSUQsIG51bGxwdHIpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAkocmV2aXNpb24gMjIzODU4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxOCArNzksMTIgQEAgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBOZXR3b3JrU3RvcmFnZVNlcwogICAgIHJldHVybiAqZGVmYXVsdFNlc3Npb24oKTsKIH0K
IAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmKQordm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmVuc3VyZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmKQogewotICAgIEFTU0VSVChzZXNzaW9uSUQgIT0gUEFMOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgQVNTRVJUKCFnbG9iYWxTZXNzaW9uTWFwKCkuY29u
dGFpbnMoc2Vzc2lvbklEKSk7CiAgICAgZ2xvYmFsU2Vzc2lvbk1hcCgpLmFkZChzZXNzaW9uSUQs
IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQsIHN0ZDo6
bWFrZV91bmlxdWU8U291cE5ldHdvcmtTZXNzaW9uPihzZXNzaW9uSUQpKSk7CiB9CiAKLXZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKLX0KLQogdm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQogewogICAgIGRlZmF1
bHRTZXNzaW9uKCkgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFM
OjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgc3RkOjptYWtlX3VuaXF1ZTxTb3VwTmV0
d29ya1Nlc3Npb24+KCkpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzkyMikKKysrIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTct
MTAtMjQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBNZXJnZSBOZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbiBh
bmQgTmV0d29ya1Byb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUgaW50byBvbmUgbWVzc2FnZSB0
eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg3
NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuc3VyZUxlZ2FjeVByaXZh
dGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3
b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjplbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5z
dXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVOZXR3
b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6IERlbGV0ZWQuCisg
ICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmxlZ2FjeVByaXZhdGVTZXNzaW9u
UGFyYW1ldGVycyk6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93
c2luZ0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3
V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwYWdlQWRkZWRU
b1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRTZXNzaW9u
SUQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAxNy0xMC0yNCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBpbml0aWFsIGltcGxlbWVudGF0aW9uIGZvciBz
ZXJ2aWNlV29ya2VyLnBvc3RNZXNzYWdlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY4LDcg
KzQ2OCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldEMKIAogdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbigpCiB7Ci0gICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oeyB7IH0sIHsgfSwgeyB9LCB7IH0sIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSwgeyB9LCB7IFBBTDo6U2Vzc2lv
bklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCksIHsgfSwgeyB9LCBBbGxvd3NDZWxsdWxhckFj
Y2Vzczo6WWVzIH19KTsKKyAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkV2Vic2l0
ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6bGVnYWN5UHJpdmF0ZVNlc3Np
b25QYXJhbWV0ZXJzKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lv
biAyMjM4NTgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmluaXRpYWxpemVOZXR3b3JrUHIKIAogICAgIC8vIEZJWE1FOiBpbnN0ZWFkIG9mIGhhbmRs
aW5nIHRoaXMgaGVyZSwgYSBtZXNzYWdlIHNob3VsZCBiZSBzZW50IGxhdGVyIChzY2FsZXMgdG8g
bXVsdGlwbGUgc2Vzc2lvbnMpCiAgICAgaWYgKHBhcmFtZXRlcnMucHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCkKLSAgICAgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oeyB7IH0sIHsgfSwgeyB9LCB7IH0sIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSwgeyB9LCB7IFBBTDo6U2Vzc2lvbklEOjpsZWdh
Y3lQcml2YXRlU2Vzc2lvbklEKCksIHsgfSwgeyB9LCAgQWxsb3dzQ2VsbHVsYXJBY2Nlc3M6Olll
cyB9fSk7CisgICAgICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0
YVN0b3JlU2Vzc2lvbih7IHsgfSwgeyB9LCB7IH0sIHsgfSwgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhLCB7IH0sIHsgUEFMOjpTZXNzaW9uSUQ6Omxl
Z2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7IH0sICBBbGxvd3NDZWxsdWxhckFjY2Vzczo6
WWVzIH19KTsKIAogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vz
c2lvbikKICAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdT
ZXNzaW9uKCk7CkBAIC0yOTcsMTEgKzI5Nyw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFy
Q2FjaGVkQ3JlZGVudGkKICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjplbnN1cmVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycykKLXsKLSAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbihXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6YWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMpCiB7CiAgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRh
U3RvcmVTZXNzaW9uKFdURk1vdmUocGFyYW1ldGVycykpOwpJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMjIzODU4KQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBwcmVmZXRjaEROUyhj
b25zdCBTdHJpbmcmKTsKIAotICAgIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKKyAgICB2b2lkIGFkZFdlYnNpdGVEYXRhU3Rv
cmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CiAKICAgICB2b2lkIGdyYW50U2FuZGJv
eEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGZpbGVuYW1lcywgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAKQEAg
LTE4Nyw3ICsxODcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNOZXR3b3Jr
UHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKICAgICB2b2lkIGluaXRpYWxpemVOZXR3b3JrUHJvY2Vz
cyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGNyZWF0ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7Ci0gICAgdm9pZCBhZGRXZWJzaXRlRGF0YVN0
b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgZGVzdHJveVNlc3Np
b24oUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
RmV0Y2hPcHRpb24+LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgko
cmV2aXNpb24gMjIzODU4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQCBtZXNz
YWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlCiAKICAgICBDbGVhckNhY2hlZENy
ZWRlbnRpYWxzKCkKIAotICAgIEVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc3RydWN0IFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMpCiAgICAgQWRkV2Vic2l0ZURhdGFTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycyB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyk7CiAgICAgRGVzdHJveVNl
c3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZp
c2lvbiAyMjM4NTgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdv
cmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAKICAgICAvLyBGSVhNRTog
UmVtb3ZlIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgYW5kIHVzZSBTZXNzaW9uVHJhY2tlci4KLSAg
ICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzJiYpOwogICAgIHN0YXRpYyB2b2lkIGVuc3VyZVdlYnNpdGVEYXRhU3RvcmVT
ZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpOwogCiAgICAgYm9vbCBzaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0OyB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVO
ZXR3b3JraW5nQ29udGV4dC5tbQkocmV2aXNpb24gMjIzODU4KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTgxLDMyICs4MSw2IEBAIFJlc291cmNlRXJyb3IgUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQ6OmIKICAgICByZXR1cm4gV2ViS2l0OjpibG9ja2VkRXJyb3IocmVxdWVzdCk7CiB9CiAKLXZv
aWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQotewotICAgIGF1dG8gc2Vz
c2lvbklEID0gcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklEOwot
ICAgIEFTU0VSVChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7Ci0KLSAgICBpZiAoTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBTdHJpbmcgYmFzZTsKLSAgICBpZiAoU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZp
ZXJCYXNlKCkuaXNOdWxsKCkpCi0gICAgICAgIGJhc2UgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVd
IGJ1bmRsZUlkZW50aWZpZXJdOwotICAgIGVsc2UKLSAgICAgICAgYmFzZSA9IFNlc3Npb25UcmFj
a2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpOwotCi0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCwgYmFzZSArICcuJyArIFN0cmlu
Zzo6bnVtYmVyKHNlc3Npb25JRC5zZXNzaW9uSUQoKSkpOwotCi0gICAgYXV0byogc2Vzc2lvbiA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBm
b3IgKGNvbnN0IGF1dG8mIGNvb2tpZSA6IHBhcmFtZXRlcnMucGVuZGluZ0Nvb2tpZXMpCi0gICAg
ICAgIHNlc3Npb24tPnNldENvb2tpZShjb29raWUpOwotCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lP
TikKLSAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5sZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXIgPSBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxM
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI+KCk7Ci0gICAgU2Vzc2lvblRyYWNrZXI6OnNldFNl
c3Npb24oc2Vzc2lvbklELCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVy
cy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpKSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBSZW1vdGVO
ZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIGF1dG8gc2Vzc2lvbklEID0g
cGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklEOwpAQCAtMTE5LDcg
KzkzLDggQEAgdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2VicwogICAgIGVs
c2UKICAgICAgICAgYmFzZSA9IFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpOwog
Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuY29v
a2llU3RvcmFnZVBhdGhFeHRlbnNpb25IYW5kbGUpOworICAgIGJvb2wgcmVzdWx0ID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuY29va2llU3RvcmFnZVBh
dGhFeHRlbnNpb25IYW5kbGUpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPSAh
c2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwogCiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0
b3JhZ2VSZWY+IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2U7CiAgICAgaWYgKCFwYXJhbWV0ZXJzLnVp
UHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyLmlzRW1wdHkoKSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAJKHJl
dmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
IldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCiAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCkBAIC03Nyw1ICs3OCw5IEBAIGJvb2wgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnM6OmRlY29kZSgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmxlZ2FjeVByaXZhdGVTZXNzaW9uUGFy
YW1ldGVycygpCit7CisgICAgcmV0dXJuIHsgeyB9LCB7IH0sIHsgfSwgeyB9LCBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEsIHsgfSwgeyBQQUw6OlNl
c3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpLCB7IH0sIHsgfSwgeyB9fX07Cit9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw2ICs0Myw3IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyB7
CiAgICAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMoKSA9IGRlZmF1bHQ7CiAgICAgV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJikgPSBkZWZh
dWx0OwogICAgIH5XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycygpOworICAgIHN0YXRpYyBXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyBsZWdhY3lQcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoKTsK
ICAgICAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMg
Ym9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlz
aW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjMwLDEzICs2MzAsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c2V0QW55UGFnZUdyb3VwTWlnaAogewogICAgIGlmIChuZXR3b3JrUHJvY2VzcygpKSB7CiAg
ICAgICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKQotICAgICAgICAgICAgbmV0d29ya1By
b2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oeyB7IH0sIHsgfSwgeyB9LCB7IH0sIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSwgeyB9LCB7IFBBTDo6U2Vzc2lvbklEOjpsZWdh
Y3lQcml2YXRlU2Vzc2lvbklEKCksIHsgfSwgeyB9LCBBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVz
IH19KSwgMCk7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVyczo6bGVnYWN5UHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKCkpLCAwKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OkRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lv
bklEKCkpLCAwKTsKICAgICB9CiAKICAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLSAg
ICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklE
KCkpKTsKKyAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpB
ZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpsZWdhY3lQcml2
YXRlU2Vzc2lvblBhcmFtZXRlcnMoKSkpOwogICAgIGVsc2UKICAgICAgICAgc2VuZFRvQWxsUHJv
Y2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25J
RDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSk7CiB9CkBAIC04MjAsNyArODIwLDcgQEAgV2Vi
UHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTgogI2VuZGlmCiAKICAgICBpZiAo
V2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSkKLSAgICAg
ICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSwgMCk7
CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkFkZFdlYnNpdGVE
YXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmxlZ2FjeVByaXZhdGVTZXNzaW9u
UGFyYW1ldGVycygpKSwgMCk7CiAKICAgICBpZiAobV9hdXRvbWF0aW9uU2Vzc2lvbikKICAgICAg
ICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RW5zdXJlQXV0b21hdGlvblNl
c3Npb25Qcm94eShtX2F1dG9tYXRpb25TZXNzaW9uLT5zZXNzaW9uSWRlbnRpZmllcigpKSwgMCk7
CkBAIC0xMDA1LDExICsxMDA1LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUFkZGVkVG9Q
cm9jZXNzKAogCiAgICAgYXV0byBzZXNzaW9uSUQgPSBwYWdlLnNlc3Npb25JRCgpOwogICAgIGlm
IChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewotICAgICAgICAvLyBGSVhNRTogTWVyZ2UgTmV0
d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24gYW5kIE5ldHdvcmtQcm9j
ZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlIGludG8gb25lIG1lc3NhZ2UgdHlwZS4KLSAgICAgICAg
Ly8gVGhleSBkbyBiYXNpY2FsbHkgdGhlIHNhbWUgdGhpbmcuCiAgICAgICAgIEFTU0VSVChwYWdl
LndlYnNpdGVEYXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnNlc3Npb25JRCA9PSBzZXNzaW9uSUQpOwotICAgICAgICBzZW5kVG9OZXR3b3JraW5nUHJvY2Vz
cyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
cGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygpKSk7Ci0gICAgICAgIHBhZ2UucHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oc2Vzc2lvbklEKSwgMCk7CisgICAgICAgIHNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZShwYWdlLndlYnNpdGVE
YXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkpKTsKKyAgICAgICAgcGFnZS5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZSh7eyB9LCB7IH0sIHsgfSwg
eyB9LCB7IH0sIHsgfSwgeyBzZXNzaW9uSUQsIHsgfSwgeyB9LCB7IH19fSksIDApOwogICAgIH0g
ZWxzZSBpZiAoc2Vzc2lvbklEICE9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkp
IHsKICAgICAgICAgc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRl
cnMoKSkpOwogICAgICAgICBwYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpBZGRXZWJzaXRlRGF0YVN0b3JlKHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMo
KSksIDApOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2
aXNpb24gMjIzODU4KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MTUsMTEgKzUxNSw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZnVs
bEtleWJvYXJkQWNjZXNzTW9kZUMKICAgICBtX2Z1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQgPSBm
dWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotewotICAgIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oeyB7
IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IHNlc3Npb25JRCwgeyB9LCB7IH0sIEFsbG93
c0NlbGx1bGFyQWNjZXNzOjpZZXMgfX0pOwotfQotCiB2b2lkIFdlYlByb2Nlc3M6OmFkZFdlYnNp
dGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewog
ICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNz
aW9uKFdURk1vdmUocGFyYW1ldGVycykpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksNyArMTc5LDYgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKHVpbnQzMl90KTsKIAotICAgIHZvaWQgZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCBlbnN1cmVMZWdh
Y3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uSW5OZXR3b3JrUHJvY2VzcygpOwogICAgIHZvaWQgYWRk
V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKICAgICB2b2lk
IGRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMjM4NTgpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJl
Y2VpdmVyIHsKIAogICAgIENsZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKQogCi0gICAgRW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgQWRkV2Vi
c2l0ZURhdGFTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyB3
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyk7CiAgICAgRGVzdHJveVNlc3Npb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDIy
Mzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIEluamVj
dGVkQnVuZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdFCiB7CiAgICAgaWYgKGVuYWJsZWQpIHsKICAg
ICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbkluTmV0d29ya1Byb2Nlc3MoKTsKLSAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih7IHsgfSwgeyB9LCB7IH0sIHsgfSwg
eyB9LCB7IH0sIHsgUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9
LCB7IH0sIEFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXMgfX0pOworICAgICAgICBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbih7IHsgfSwgeyB9
LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNz
aW9uSUQoKSwgeyB9LCB7IH0sIEFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXMgfX0pOwogICAgIH0g
ZWxzZQogICAgICAgICBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24oUEFMOjpTZXNzaW9u
SUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgLy8gRklYTUU6IHJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGFuZCB1c2UgU2Vz
c2lvblRyYWNrZXIKLSAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpOwogICAgIHN0YXRpYyB2b2lkIGVuc3VyZVdl
YnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpOwogCiAg
ICAgc3RhdGljIHZvaWQgc2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoSFRUUENv
b2tpZUFjY2VwdFBvbGljeSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0JKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDI2ICs0NSw2IEBACiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7Ci0gICAgCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQotewotICAgIGF1dG8gc2Vzc2lvbklEID0gcGFyYW1ldGVycy5uZXR3
b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklEOwotICAgIEFTU0VSVChzZXNzaW9uSUQuaXNF
cGhlbWVyYWwoKSk7Ci0KLSAgICBpZiAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
dG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmcg
YmFzZTsKLSAgICBpZiAoU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCkuaXNOdWxs
KCkpCi0gICAgICAgIGJhc2UgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZp
ZXJdOwotICAgIGVsc2UKLSAgICAgICAgYmFzZSA9IFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlm
aWVyQmFzZSgpOwotCi0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKHNlc3Npb25JRCwgYmFzZSArICcuJyArIFN0cmluZzo6bnVtYmVyKHNlc3Np
b25JRC5zZXNzaW9uSUQoKSkpOwotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgU2Vzc2lv
blRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKFdU
Rk1vdmUocGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpKSk7Ci0jZW5kaWYKLX0K
IAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3Jl
U2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CkBAIC03
OCw5ICs1OCwxNCBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlCiAg
ICAgZWxzZQogICAgICAgICBiYXNlID0gU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNl
KCk7CiAKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVy
cy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CisgICAgYm9vbCByZXN1bHQgPSBT
YW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5jb29raWVTdG9y
YWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dCA9ICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29v
a2llU3RvcmFnZVJlZj4gdWlQcm9jZXNzQ29va2llU3RvcmFnZSA9IGNvb2tpZVN0b3JhZ2VGcm9t
SWRlbnRpZnlpbmdEYXRhKHBhcmFtZXRlcnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZp
ZXIpOworICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiB1aVByb2Nlc3NDb29r
aWVTdG9yYWdlOworICAgIGlmICghc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCisgICAgICAgIHVp
UHJvY2Vzc0Nvb2tpZVN0b3JhZ2UgPSBjb29raWVTdG9yYWdlRnJvbUlkZW50aWZ5aW5nRGF0YShw
YXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyKTsKKyAgICBlbHNlCisg
ICAgICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVy
LmlzRW1wdHkoKSk7CiAKICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVNlc3Npb24o
c2Vzc2lvbklELCBiYXNlICsgJy4nICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25J
RCgpKSwgV1RGTW92ZSh1aVByb2Nlc3NDb29raWVTdG9yYWdlKSk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMjM4NTgp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIxLDYgKzEyMSw3IEBACiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
VmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9B
cmNoaXZlUmVzb3VyY2UuaD4KQEAgLTI3MzAsNyArMjczMSw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0
TGF5ZXJIb3N0aW5nTW9kZShMYXllckgKIHZvaWQgV2ViUGFnZTo6c2V0U2Vzc2lvbklEKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkp
Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oc2Vzc2lvbklEKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkV2Vi
c2l0ZURhdGFTdG9yZSh7eyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyBzZXNzaW9uSUQs
IHsgfSwgeyB9LCB7IH19fSk7CiAgICAgbV9wYWdlLT5zZXRTZXNzaW9uSUQoc2Vzc2lvbklEKTsK
IH0KIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjIzODU4KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTctMTAtMjQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBNZXJnZSBOZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbiBhbmQgTmV0d29ya1Byb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUg
aW50byBvbmUgbWVzc2FnZSB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzg3NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
bW06CisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKToKKwogMjAxNy0xMC0yMCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBw
bGUuY29tPgogCiAgICAgICAgIFtXZWIgQW5pbWF0aW9uc10gUHJvdmlkZSBiYXNpYyB0aW1lbGlu
ZSBhbmQgYW5pbWF0aW9uIGludGVyZmFjZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5tbQkocmV2aXNpb24gMjIzODU4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBj
b3B5KQpAQCAtNDYsNyArNDYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oUEFMOjpTZXNz
aW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBi
dW5kbGVJZGVudGlmaWVyXSk7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVTZXNz
aW9uKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCksIFtbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pOwogICAgIHJldHVybiAqTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNl
c3Npb25JRCgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324741</attachid>
            <date>2017-10-24 15:49:51 -0700</date>
            <delta_ts>2017-10-24 16:45:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178751-20171024154949.patch</filename>
            <type>text/plain</type>
            <size>27746</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzkzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE3LTEwLTI0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWVyZ2UgTmV0
d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24gYW5kIE5ldHdvcmtQcm9j
ZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlIGludG8gb25lIG1lc3NhZ2UgdHlwZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NzUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGNyZWF0aW9uIG9mIHBy
aXZhdGUgYnJvd3Npbmcgc2Vzc2lvbnMgYW5kIHBlcnNpc3RlbnQgYnJvd3Npbmcgc2Vzc2lvbnMg
aGFzIGV2b2x2ZWQgdG8gYmUgdGhlIHNhbWUgdGhpbmcKKyAgICAgICAgd2l0aCBkaWZmZXJlbmNl
cyBpbiBwYXJhbWV0ZXJzLCBsaWtlIG5vIHNhbmRib3ggZXh0ZW5zaW9ucyBvciBwYXRocyB0byBw
ZXJzaXN0ZW50IHN0b3JhZ2UgbG9jYXRpb25zIGZvciBwcml2YXRlIGJyb3dzaW5nLgorICAgICAg
ICBUaGVzZSBzaG91bGQgYmUgdW5pdGVkIHRvIHNpbXBsaWZ5IGZ1dHVyZSBkZXZlbG9wbWVudCBv
ZiBXZWJzaXRlRGF0YVN0b3JlIGNvbnN0cnVjdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Tb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZW5z
dXJlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEZWxldGVkLgorCiAyMDE3LTEwLTI0ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgT3B0aW9u
YWxseSBzdG9yZSBlbnRpcmUgUmVzb3VyY2VSZXF1ZXN0IGZvciBwaW5nIGxvYWRzCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmgJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcg
KzYzLDYgQEAgY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsKIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
KiBzdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSA9IFN0cmluZygpKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgdm9pZCBlbnN1cmVTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXJCYXNlID0gU3RyaW5nKCkpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIGRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdm9pZCBmb3JFYWNoKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mKT4mKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA4LDEyICsxMDgsNiBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtTdG9y
YWdlU2VzCiAgICAgcmV0dXJuICpkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7CiB9CiAK
LXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSkK
LXsKLSAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwotICAgIGVuc3VyZVNlc3Np
b24oc2Vzc2lvbklELCBpZGVudGlmaWVyQmFzZSk7Ci19Ci0KIHZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjplbnN1cmVTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyQmFzZSwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiYg
Y29va2llU3RvcmFnZSkKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IGdsb2JhbFNlc3Npb25NYXAo
KS5hZGQoc2Vzc2lvbklELCBudWxscHRyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uU291cC5jcHAJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzksMTggKzc5LDEyIEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3Jh
Z2VTZXMKICAgICByZXR1cm4gKmRlZmF1bHRTZXNzaW9uKCk7CiB9CiAKLXZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJikKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpl
bnN1cmVTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICBBU1NFUlQoc2Vzc2lvbklEICE9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpOwogICAgIEFTU0VSVCghZ2xvYmFsU2Vzc2lvbk1hcCgpLmNvbnRhaW5zKHNlc3Npb25JRCkp
OwogICAgIGdsb2JhbFNlc3Npb25NYXAoKS5hZGQoc2Vzc2lvbklELCBzdGQ6Om1ha2VfdW5pcXVl
PE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklELCBzdGQ6Om1ha2VfdW5pcXVlPFNvdXBO
ZXR3b3JrU2Vzc2lvbj4oc2Vzc2lvbklEKSkpOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZW5zdXJlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJikKLXsKLSAg
ICAvLyBGSVhNRTogSW1wbGVtZW50Ci19Ci0KIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
d2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKIHsKICAgICBkZWZhdWx0U2Vzc2lvbigpID0gc3Rk
OjptYWtlX3VuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCksIHN0ZDo6bWFrZV91bmlxdWU8U291cE5ldHdvcmtTZXNzaW9uPigpKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjM5MzQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE3LTEwLTI0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWVyZ2UgTmV0d29y
a1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24gYW5kIE5ldHdvcmtQcm9jZXNz
OjpBZGRXZWJzaXRlRGF0YVN0b3JlIGludG8gb25lIG1lc3NhZ2UgdHlwZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NzUxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bik6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3Rv
cmVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9X
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzOjpsZWdhY3lQcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGFnZUFkZGVkVG9Qcm9jZXNzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0U2Vzc2lvbklEKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW46CisKIDIwMTctMTAtMjQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBTZWxlY3RpbmcgYW5kIHJpZ2h0LWNsaWNraW5nIFVSTC1saWtl
IHN0cmluZ3Mgd2l0aCBJRE5BLWRpc2FsbG93ZWQgY2hhcmFjdGVycyBpbiBob3N0IG9yIGF1dGhv
cml0eSBjYXVzZXMgcmVuZGVyaW5nIGVuZ2luZSBjcmFzaApJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NjgsNyArNDY4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0
QwogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnN1cmVMZWdhY3lQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih7IHsgfSwgeyB9LCB7IH0sIHsgfSwgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhLCB7IH0sIHsgUEFM
OjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7IH0sIEFsbG93c0Nl
bGx1bGFyQWNjZXNzOjpZZXMgfX0pOworICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5h
ZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpsZWdhY3lQcml2
YXRlU2Vzc2lvblBhcmFtZXRlcnMoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJ
KHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcgogCiAgICAgLy8gRklYTUU6IGluc3RlYWQg
b2YgaGFuZGxpbmcgdGhpcyBoZXJlLCBhIG1lc3NhZ2Ugc2hvdWxkIGJlIHNlbnQgbGF0ZXIgKHNj
YWxlcyB0byBtdWx0aXBsZSBzZXNzaW9ucykKICAgICBpZiAocGFyYW1ldGVycy5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKQotICAgICAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbih7IHsgfSwgeyB9LCB7IH0sIHsgfSwgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhLCB7IH0sIHsgUEFMOjpTZXNzaW9u
SUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7IH0sICBBbGxvd3NDZWxsdWxhckFj
Y2Vzczo6WWVzIH19KTsKKyAgICAgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdl
YnNpdGVEYXRhU3RvcmVTZXNzaW9uKHsgeyB9LCB7IH0sIHsgfSwgeyB9LCBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEsIHsgfSwgeyBQQUw6OlNlc3Np
b25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpLCB7IH0sIHsgfSwgIEFsbG93c0NlbGx1bGFy
QWNjZXNzOjpZZXMgfX0pOwogCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05l
dHdvcmtTZXNzaW9uKQogICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3
VGVzdGluZ1Nlc3Npb24oKTsKQEAgLTI5NywxMSArMjk3LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6Y2xlYXJDYWNoZWRDcmVkZW50aQogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6
OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQotewotICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKFdURk1vdmUocGFyYW1ldGVycykpOwotfQotCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKIHsKICAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vi
c2l0ZURhdGFTdG9yZVNlc3Npb24oV1RGTW92ZShwYXJhbWV0ZXJzKSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAyMjM4
NTgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByZWZl
dGNoRE5TKGNvbnN0IFN0cmluZyYpOwogCi0gICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpOworICAgIHZvaWQgYWRkV2Vic2l0
ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKIAogICAgIHZvaWQgZ3Jh
bnRTYW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nlc3NGb3JCbG9icyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZmlsZW5hbWVzLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KTsKIApAQCAtMTg3LDcgKzE4Nyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQg
Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsKLSAgICB2b2lkIGFkZFdlYnNp
dGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBkZXN0
cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEo
UEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFGZXRjaE9wdGlvbj4sIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluCShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2
IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmUKIAogICAgIENsZWFy
Q2FjaGVkQ3JlZGVudGlhbHMoKQogCi0gICAgRW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihz
dHJ1Y3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyB3ZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycykKICAgICBBZGRXZWJzaXRlRGF0YVN0b3JlKHN0cnVjdCBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKTsKICAgICBE
ZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
LmgJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlTmV0d29ya2luZ0NvbnRleHQoKTsKIAogICAgIC8v
IEZJWE1FOiBSZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBhbmQgdXNlIFNlc3Npb25UcmFj
a2VyLgotICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CiAgICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vic2l0ZURh
dGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CiAKICAgICBib29s
IHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Q7IH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFj
L1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQkod29y
a2luZyBjb3B5KQpAQCAtODEsMzIgKzgxLDYgQEAgUmVzb3VyY2VFcnJvciBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6YgogICAgIHJldHVybiBXZWJLaXQ6OmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsK
IH0KIAotdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCi17Ci0gICAg
YXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNz
aW9uSUQ7Ci0gICAgQVNTRVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKLQotICAgIGlmIChO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFN0cmluZyBiYXNlOwotICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6Z2V0
SWRlbnRpZmllckJhc2UoKS5pc051bGwoKSkKLSAgICAgICAgYmFzZSA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07Ci0gICAgZWxzZQotICAgICAgICBiYXNlID0gU2Vz
c2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCk7Ci0KLSAgICBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklELCBiYXNlICsgJy4n
ICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSk7Ci0KLSAgICBhdXRvKiBz
ZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQp
OwotICAgIGZvciAoY29uc3QgYXV0byYgY29va2llIDogcGFyYW1ldGVycy5wZW5kaW5nQ29va2ll
cykKLSAgICAgICAgc2Vzc2lvbi0+c2V0Q29va2llKGNvb2tpZSk7Ci0KLSNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQotICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmxlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlciA9IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBw
bGVtZW50PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcj4oKTsKLSAgICBTZXNzaW9uVHJhY2tl
cjo6c2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUoV1RGTW92ZShw
YXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsKLSNlbmRpZgotfQotCiB2b2lk
IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byBzZXNz
aW9uSUQgPSBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQ7CkBA
IC0xMTksNyArOTMsOCBAQCB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJz
CiAgICAgZWxzZQogICAgICAgICBiYXNlID0gU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJC
YXNlKCk7CiAKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1l
dGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CisgICAgYm9vbCByZXN1bHQg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5jb29raWVT
dG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCA9ICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gdWlQcm9jZXNzQ29va2llU3RvcmFnZTsKICAgICBpZiAoIXBhcmFt
ZXRlcnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIuaXNFbXB0eSgpKQpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
U291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNv
dXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwyMyArNDgsMTYgQEAgYm9vbCBSZW1vdGVOZXR3
b3JraW5nQ29udGV4dDo6aXNWYWxpZCgpIAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK3ZvaWQgUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBhdXRvIHNlc3Npb25JRCA9IHBhcmFtZXRl
cnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRDsKLSAgICBBU1NFUlQoc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkpOwotCiAgICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCwgU3Ry
aW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSk7CisgICAgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjplbnN1cmVTZXNzaW9uKHNlc3Npb25JRCwgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklE
LnNlc3Npb25JRCgpKSk7CiAgICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklE
LCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMpKSk7CiB9CiAKLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpCi17
Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4KLX0KLQogTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewogICAgIGlm
IChhdXRvIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKG1f
c2Vzc2lvbklEKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgi
CiAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJzaXRl
RGF0YVN0b3JlLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC03Nyw1ICs3OCw5IEBAIGJv
b2wgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZSgKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnM6OmxlZ2FjeVByaXZhdGVTZXNzaW9uUGFyYW1ldGVycygpCit7CisgICAgcmV0dXJuIHsgeyB9
LCB7IH0sIHsgfSwgeyB9LCBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlUGVy
T3JpZ2luUXVvdGEsIHsgfSwgeyBQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25J
RCgpLCB7IH0sIHsgfSwgeyB9fX07Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
U291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5o
CShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIHN0cnVjdCBX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyB7CiAgICAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMoKSA9IGRlZmF1bHQ7CiAgICAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMoV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMmJikgPSBkZWZhdWx0OwogICAgIH5XZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycygpOworICAgIHN0YXRpYyBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBsZWdhY3lQ
cml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoKTsKICAgICAKICAgICB2b2lkIGVuY29kZShJUEM6OkVu
Y29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMwLDEzICs2
MzAsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QW55UGFnZUdyb3VwTWlnaAogewogICAg
IGlmIChuZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFi
bGVkKQotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oeyB7IH0sIHsgfSwgeyB9LCB7
IH0sIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSwg
eyB9LCB7IFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCksIHsgfSwgeyB9
LCBBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVzIH19KSwgMCk7CisgICAgICAgICAgICBuZXR3b3Jr
UHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFT
dG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6bGVnYWN5UHJpdmF0ZVNlc3Npb25QYXJh
bWV0ZXJzKCkpLCAwKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3Mo
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpLCAwKTsKICAgICB9CiAKICAgICBpZiAo
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLSAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFBBTDo6U2Vzc2lv
bklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpKTsKKyAgICAgICAgc2VuZFRvQWxsUHJvY2Vz
c2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzOjpsZWdhY3lQcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoKSkpOwogICAg
IGVsc2UKICAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpE
ZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSk7
CiB9CkBAIC04MjAsNyArODIwLDcgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6
Y3JlYXRlTgogI2VuZGlmCiAKICAgICBpZiAoV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VzQXJlVXNp
bmdQcml2YXRlQnJvd3NpbmcoKSkKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVn
YWN5UHJpdmF0ZVNlc3Npb25JRCgpKSwgMCk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnM6OmxlZ2FjeVByaXZhdGVTZXNzaW9uUGFyYW1ldGVycygpKSwgMCk7CiAKICAgICBpZiAo
bV9hdXRvbWF0aW9uU2Vzc2lvbikKICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6RW5zdXJlQXV0b21hdGlvblNlc3Npb25Qcm94eShtX2F1dG9tYXRpb25TZXNzaW9u
LT5zZXNzaW9uSWRlbnRpZmllcigpKSwgMCk7CkBAIC0xMDA1LDExICsxMDA1LDkgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cGFnZUFkZGVkVG9Qcm9jZXNzKAogCiAgICAgYXV0byBzZXNzaW9uSUQg
PSBwYWdlLnNlc3Npb25JRCgpOwogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewot
ICAgICAgICAvLyBGSVhNRTogTWVyZ2UgTmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24gYW5kIE5ldHdvcmtQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlIGludG8g
b25lIG1lc3NhZ2UgdHlwZS4KLSAgICAgICAgLy8gVGhleSBkbyBiYXNpY2FsbHkgdGhlIHNhbWUg
dGhpbmcuCiAgICAgICAgIEFTU0VSVChwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5wYXJhbWV0ZXJz
KCkubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRCA9PSBzZXNzaW9uSUQpOwotICAg
ICAgICBzZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24ocGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1l
dGVycygpKSk7Ci0gICAgICAgIHBhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKSwgMCk7CisgICAgICAg
IHNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QWRkV2Vi
c2l0ZURhdGFTdG9yZShwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkpKTsKKyAg
ICAgICAgcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6QWRkV2Vic2l0
ZURhdGFTdG9yZSh7eyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyBzZXNzaW9uSUQsIHsg
fSwgeyB9LCB7IH19fSksIDApOwogICAgIH0gZWxzZSBpZiAoc2Vzc2lvbklEICE9IFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpIHsKICAgICAgICAgc2VuZFRvTmV0d29ya2luZ1By
b2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKHBhZ2Uu
d2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMoKSkpOwogICAgICAgICBwYWdlLnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKHBhZ2Uud2Vi
c2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMoKSksIDApOwpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjIzODU4KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTUsMTEgKzUx
NSw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZnVsbEtleWJvYXJkQWNjZXNzTW9kZUMKICAgICBtX2Z1
bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQgPSBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkOwogfQog
Ci12b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQotewotICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oeyB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7
IHNlc3Npb25JRCwgeyB9LCB7IH0sIEFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXMgfX0pOwotfQot
CiB2b2lkIFdlYlByb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdURk1vdmUocGFyYW1ldGVycykpOwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyMjM4NTgpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzksNyArMTc5LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKHVpbnQz
Ml90KTsKIAotICAgIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCk7CiAgICAgdm9pZCBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uSW5OZXR3
b3JrUHJvY2VzcygpOwogICAgIHZvaWQgYWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklE
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCBtZXNz
YWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIENsZWFyQ2FjaGVkQ3Jl
ZGVudGlhbHMoKQogCi0gICAgRW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCiAgICAgQWRkV2Vic2l0ZURhdGFTdG9yZShzdHJ1Y3QgV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyk7CiAg
ICAgRGVzdHJveVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyMSw3ICszMjEsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdF
CiB7CiAgICAgaWYgKGVuYWJsZWQpIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkluTmV0d29ya1Byb2Nlc3MoKTsKLSAg
ICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbih7IHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgUEFMOjpTZXNzaW9uSUQ6Omxl
Z2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7IH0sIEFsbG93c0NlbGx1bGFyQWNjZXNzOjpZ
ZXMgfX0pOworICAgICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRl
RGF0YVN0b3JlU2Vzc2lvbih7IHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgUEFMOjpT
ZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7IH0sIEFsbG93c0NlbGx1
bGFyQWNjZXNzOjpZZXMgfX0pOwogICAgIH0gZWxzZQogICAgICAgICBTZXNzaW9uVHJhY2tlcjo6
ZGVzdHJveVNlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShy
ZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIs
NyArNDIsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gRklYTUU6IHJlbW92ZSBwbGF0Zm9y
bS1zcGVjaWZpYyBjb2RlIGFuZCB1c2UgU2Vzc2lvblRyYWNrZXIKLSAgICBzdGF0aWMgdm9pZCBl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYp
OwogICAgIHN0YXRpYyB2b2lkIGVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzJiYpOwogCiAgICAgc3RhdGljIHZvaWQgc2V0Q29va2llQWNjZXB0
UG9saWN5Rm9yQWxsQ29udGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAyMjM4
NTgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1LDI2ICs0NSw2IEBA
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci0gICAgCi12
b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQotewotICAgIGF1dG8g
c2Vzc2lvbklEID0gcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklE
OwotICAgIEFTU0VSVChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7Ci0KLSAgICBpZiAoV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmcgYmFzZTsKLSAgICBpZiAoU2Vzc2lvblRyYWNrZXI6
OmdldElkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkpCi0gICAgICAgIGJhc2UgPSBbW05TQnVuZGxl
IG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdOwotICAgIGVsc2UKLSAgICAgICAgYmFzZSA9
IFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpOwotCi0gICAgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCwgYmFzZSAr
ICcuJyArIFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRC5zZXNzaW9uSUQoKSkpOwotI2lmIFVTRShO
RVRXT1JLX1NFU1NJT04pCi0gICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklE
LCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMpKSk7Ci0jZW5kaWYKLX0KIAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMpCiB7CkBAIC03OCw5ICs1OCwxNCBAQCB2b2lkIFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlCiAgICAgZWxzZQogICAgICAgICBiYXNlID0gU2Vzc2lv
blRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCk7CiAKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
b25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhh
bmRsZSk7CisgICAgYm9vbCByZXN1bHQgPSBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFu
ZW50bHkocGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CisgICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9ICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7
CiAKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gdWlQcm9jZXNzQ29va2ll
U3RvcmFnZSA9IGNvb2tpZVN0b3JhZ2VGcm9tSWRlbnRpZnlpbmdEYXRhKHBhcmFtZXRlcnMudWlQ
cm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIpOworICAgIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiB1aVByb2Nlc3NDb29raWVTdG9yYWdlOworICAgIGlmICghc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkpCisgICAgICAgIHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2UgPSBjb29raWVT
dG9yYWdlRnJvbUlkZW50aWZ5aW5nRGF0YShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3Jh
Z2VJZGVudGlmaWVyKTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVpUHJv
Y2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyLmlzRW1wdHkoKSk7CiAKICAgICBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmVuc3VyZVNlc3Npb24oc2Vzc2lvbklELCBiYXNlICsgJy4nICsgU3RyaW5n
OjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSwgV1RGTW92ZSh1aVByb2Nlc3NDb29raWVT
dG9yYWdlKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDYgKzEyMSw3IEBACiAj
aW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViVXNlck1l
ZGlhQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCIKKyNp
bmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BcmNoaXZlUmVzb3VyY2UuaD4KQEAgLTI3MzAsNyAr
MjczMSw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckgKIHZvaWQg
V2ViUGFnZTo6c2V0U2Vzc2lvbklEKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBp
ZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkV2Vic2l0ZURhdGFTdG9yZSh7eyB9LCB7IH0sIHsgfSwg
eyB9LCB7IH0sIHsgfSwgeyBzZXNzaW9uSUQsIHsgfSwgeyB9LCB7IH19fSk7CiAgICAgbV9wYWdl
LT5zZXRTZXNzaW9uSUQoc2Vzc2lvbklEKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwkocmV2aXNpb24gMjIzODU4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMTAtMjQgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNZXJnZSBO
ZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbiBhbmQgTmV0d29ya1By
b2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUgaW50byBvbmUgbWVzc2FnZSB0eXBlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg3NTEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW06CisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKwogMjAxNy0xMC0yMCAg
QW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQW5pbWF0
aW9uc10gUHJvdmlkZSBiYXNpYyB0aW1lbGluZSBhbmQgYW5pbWF0aW9uIGludGVyZmFjZXMKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQkocmV2aXNpb24gMjIzODU4
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQo
KSwgW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CisgICAgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2
YXRlU2Vzc2lvbklEKCksIFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0p
OwogICAgIHJldHVybiAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihQQUw6
OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324753</attachid>
            <date>2017-10-24 16:45:18 -0700</date>
            <delta_ts>2017-10-24 16:46:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178751-20171024164517.patch</filename>
            <type>text/plain</type>
            <size>29167</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzkzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE3LTEwLTI0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWVyZ2UgTmV0
d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24gYW5kIE5ldHdvcmtQcm9j
ZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlIGludG8gb25lIG1lc3NhZ2UgdHlwZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NzUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGNyZWF0aW9uIG9mIHBy
aXZhdGUgYnJvd3Npbmcgc2Vzc2lvbnMgYW5kIHBlcnNpc3RlbnQgYnJvd3Npbmcgc2Vzc2lvbnMg
aGFzIGV2b2x2ZWQgdG8gYmUgdGhlIHNhbWUgdGhpbmcKKyAgICAgICAgd2l0aCBkaWZmZXJlbmNl
cyBpbiBwYXJhbWV0ZXJzLCBsaWtlIG5vIHNhbmRib3ggZXh0ZW5zaW9ucyBvciBwYXRocyB0byBw
ZXJzaXN0ZW50IHN0b3JhZ2UgbG9jYXRpb25zIGZvciBwcml2YXRlIGJyb3dzaW5nLgorICAgICAg
ICBUaGVzZSBzaG91bGQgYmUgdW5pdGVkIHRvIHNpbXBsaWZ5IGZ1dHVyZSBkZXZlbG9wbWVudCBv
ZiBXZWJzaXRlRGF0YVN0b3JlIGNvbnN0cnVjdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Tb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZW5z
dXJlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEZWxldGVkLgorCiAyMDE3LTEwLTI0ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgT3B0aW9u
YWxseSBzdG9yZSBlbnRpcmUgUmVzb3VyY2VSZXF1ZXN0IGZvciBwaW5nIGxvYWRzCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmgJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcg
KzYzLDYgQEAgY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsKIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
KiBzdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSA9IFN0cmluZygpKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgdm9pZCBlbnN1cmVTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXJCYXNlID0gU3RyaW5nKCkpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIGRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdm9pZCBmb3JFYWNoKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mKT4mKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA4LDEyICsxMDgsNiBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtTdG9y
YWdlU2VzCiAgICAgcmV0dXJuICpkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7CiB9CiAK
LXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSkK
LXsKLSAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwotICAgIGVuc3VyZVNlc3Np
b24oc2Vzc2lvbklELCBpZGVudGlmaWVyQmFzZSk7Ci19Ci0KIHZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjplbnN1cmVTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyQmFzZSwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiYg
Y29va2llU3RvcmFnZSkKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IGdsb2JhbFNlc3Npb25NYXAo
KS5hZGQoc2Vzc2lvbklELCBudWxscHRyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uU291cC5jcHAJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzksMTggKzc5LDEyIEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3Jh
Z2VTZXMKICAgICByZXR1cm4gKmRlZmF1bHRTZXNzaW9uKCk7CiB9CiAKLXZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJikKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpl
bnN1cmVTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICBBU1NFUlQoc2Vzc2lvbklEICE9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpOwogICAgIEFTU0VSVCghZ2xvYmFsU2Vzc2lvbk1hcCgpLmNvbnRhaW5zKHNlc3Npb25JRCkp
OwogICAgIGdsb2JhbFNlc3Npb25NYXAoKS5hZGQoc2Vzc2lvbklELCBzdGQ6Om1ha2VfdW5pcXVl
PE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklELCBzdGQ6Om1ha2VfdW5pcXVlPFNvdXBO
ZXR3b3JrU2Vzc2lvbj4oc2Vzc2lvbklEKSkpOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZW5zdXJlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJikKLXsKLSAg
ICAvLyBGSVhNRTogSW1wbGVtZW50Ci19Ci0KIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
d2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKIHsKICAgICBkZWZhdWx0U2Vzc2lvbigpID0gc3Rk
OjptYWtlX3VuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCksIHN0ZDo6bWFrZV91bmlxdWU8U291cE5ldHdvcmtTZXNzaW9uPigpKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjM5MzQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE3LTEwLTI0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWVyZ2UgTmV0d29y
a1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24gYW5kIE5ldHdvcmtQcm9jZXNz
OjpBZGRXZWJzaXRlRGF0YVN0b3JlIGludG8gb25lIG1lc3NhZ2UgdHlwZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NzUxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bik6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3Rv
cmVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9X
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzOjpsZWdhY3lQcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGFnZUFkZGVkVG9Qcm9jZXNzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0U2Vzc2lvbklEKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW46CisKIDIwMTctMTAtMjQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBTZWxlY3RpbmcgYW5kIHJpZ2h0LWNsaWNraW5nIFVSTC1saWtl
IHN0cmluZ3Mgd2l0aCBJRE5BLWRpc2FsbG93ZWQgY2hhcmFjdGVycyBpbiBob3N0IG9yIGF1dGhv
cml0eSBjYXVzZXMgcmVuZGVyaW5nIGVuZ2luZSBjcmFzaApJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NjgsNyArNDY4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0
QwogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnN1cmVMZWdhY3lQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih7IHsgfSwgeyB9LCB7IH0sIHsgfSwgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhLCB7IH0sIHsgUEFM
OjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7IH0sIEFsbG93c0Nl
bGx1bGFyQWNjZXNzOjpZZXMgfX0pOworICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5h
ZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpsZWdhY3lQcml2
YXRlU2Vzc2lvblBhcmFtZXRlcnMoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJ
KHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcgogCiAgICAgLy8gRklYTUU6IGluc3RlYWQg
b2YgaGFuZGxpbmcgdGhpcyBoZXJlLCBhIG1lc3NhZ2Ugc2hvdWxkIGJlIHNlbnQgbGF0ZXIgKHNj
YWxlcyB0byBtdWx0aXBsZSBzZXNzaW9ucykKICAgICBpZiAocGFyYW1ldGVycy5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKQotICAgICAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbih7IHsgfSwgeyB9LCB7IH0sIHsgfSwgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhLCB7IH0sIHsgUEFMOjpTZXNzaW9u
SUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7IH0sICBBbGxvd3NDZWxsdWxhckFj
Y2Vzczo6WWVzIH19KTsKKyAgICAgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdl
YnNpdGVEYXRhU3RvcmVTZXNzaW9uKHsgeyB9LCB7IH0sIHsgfSwgeyB9LCBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEsIHsgfSwgeyBQQUw6OlNlc3Np
b25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpLCB7IH0sIHsgfSwgIEFsbG93c0NlbGx1bGFy
QWNjZXNzOjpZZXMgfX0pOwogCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05l
dHdvcmtTZXNzaW9uKQogICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3
VGVzdGluZ1Nlc3Npb24oKTsKQEAgLTI5NywxMSArMjk3LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6Y2xlYXJDYWNoZWRDcmVkZW50aQogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6
OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQotewotICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKFdURk1vdmUocGFyYW1ldGVycykpOwotfQotCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKIHsKICAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vi
c2l0ZURhdGFTdG9yZVNlc3Npb24oV1RGTW92ZShwYXJhbWV0ZXJzKSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAyMjM4
NTgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByZWZl
dGNoRE5TKGNvbnN0IFN0cmluZyYpOwogCi0gICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpOworICAgIHZvaWQgYWRkV2Vic2l0
ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKIAogICAgIHZvaWQgZ3Jh
bnRTYW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nlc3NGb3JCbG9icyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZmlsZW5hbWVzLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KTsKIApAQCAtMTg3LDcgKzE4Nyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQg
Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsKLSAgICB2b2lkIGFkZFdlYnNp
dGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBkZXN0
cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEo
UEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFGZXRjaE9wdGlvbj4sIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluCShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2
IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmUKIAogICAgIENsZWFy
Q2FjaGVkQ3JlZGVudGlhbHMoKQogCi0gICAgRW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihz
dHJ1Y3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyB3ZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycykKICAgICBBZGRXZWJzaXRlRGF0YVN0b3JlKHN0cnVjdCBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKTsKICAgICBE
ZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
LmgJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlTmV0d29ya2luZ0NvbnRleHQoKTsKIAogICAgIC8v
IEZJWE1FOiBSZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBhbmQgdXNlIFNlc3Npb25UcmFj
a2VyLgotICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CiAgICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vic2l0ZURh
dGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CiAKICAgICBib29s
IHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Q7IH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFj
L1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQkod29y
a2luZyBjb3B5KQpAQCAtODEsMzIgKzgxLDYgQEAgUmVzb3VyY2VFcnJvciBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6YgogICAgIHJldHVybiBXZWJLaXQ6OmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsK
IH0KIAotdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCi17Ci0gICAg
YXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNz
aW9uSUQ7Ci0gICAgQVNTRVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKLQotICAgIGlmIChO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFN0cmluZyBiYXNlOwotICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6Z2V0
SWRlbnRpZmllckJhc2UoKS5pc051bGwoKSkKLSAgICAgICAgYmFzZSA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07Ci0gICAgZWxzZQotICAgICAgICBiYXNlID0gU2Vz
c2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCk7Ci0KLSAgICBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklELCBiYXNlICsgJy4n
ICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSk7Ci0KLSAgICBhdXRvKiBz
ZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQp
OwotICAgIGZvciAoY29uc3QgYXV0byYgY29va2llIDogcGFyYW1ldGVycy5wZW5kaW5nQ29va2ll
cykKLSAgICAgICAgc2Vzc2lvbi0+c2V0Q29va2llKGNvb2tpZSk7Ci0KLSNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQotICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmxlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlciA9IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBw
bGVtZW50PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcj4oKTsKLSAgICBTZXNzaW9uVHJhY2tl
cjo6c2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUoV1RGTW92ZShw
YXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsKLSNlbmRpZgotfQotCiB2b2lk
IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byBzZXNz
aW9uSUQgPSBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQ7CkBA
IC0xMTksNyArOTMsOCBAQCB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJz
CiAgICAgZWxzZQogICAgICAgICBiYXNlID0gU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJC
YXNlKCk7CiAKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1l
dGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CisgICAgYm9vbCByZXN1bHQg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5jb29raWVT
dG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCA9ICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gdWlQcm9jZXNzQ29va2llU3RvcmFnZTsKICAgICBpZiAoIXBhcmFt
ZXRlcnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIuaXNFbXB0eSgpKQpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
U291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNv
dXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwyMyArNDgsMTYgQEAgYm9vbCBSZW1vdGVOZXR3
b3JraW5nQ29udGV4dDo6aXNWYWxpZCgpIAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK3ZvaWQgUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBhdXRvIHNlc3Npb25JRCA9IHBhcmFtZXRl
cnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRDsKLSAgICBBU1NFUlQoc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkpOwotCiAgICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCwgU3Ry
aW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSk7CisgICAgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjplbnN1cmVTZXNzaW9uKHNlc3Npb25JRCwgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklE
LnNlc3Npb25JRCgpKSk7CiAgICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklE
LCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMpKSk7CiB9CiAKLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpCi17
Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4KLX0KLQogTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewogICAgIGlm
IChhdXRvIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKG1f
c2Vzc2lvbklEKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgi
CiAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJzaXRl
RGF0YVN0b3JlLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC03Nyw1ICs3OCw5IEBAIGJv
b2wgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZSgKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnM6OmxlZ2FjeVByaXZhdGVTZXNzaW9uUGFyYW1ldGVycygpCit7CisgICAgcmV0dXJuIHsgeyB9
LCB7IH0sIHsgfSwgeyB9LCBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlUGVy
T3JpZ2luUXVvdGEsIHsgfSwgeyBQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25J
RCgpLCB7IH0sIHsgfSwgeyB9fX07Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
U291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5o
CShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIHN0cnVjdCBX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyB7CiAgICAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMoKSA9IGRlZmF1bHQ7CiAgICAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMoV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMmJikgPSBkZWZhdWx0OwogICAgIH5XZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycygpOworICAgIHN0YXRpYyBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBsZWdhY3lQ
cml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoKTsKICAgICAKICAgICB2b2lkIGVuY29kZShJUEM6OkVu
Y29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMwLDEzICs2
MzAsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QW55UGFnZUdyb3VwTWlnaAogewogICAg
IGlmIChuZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFi
bGVkKQotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oeyB7IH0sIHsgfSwgeyB9LCB7
IH0sIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSwg
eyB9LCB7IFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCksIHsgfSwgeyB9
LCBBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVzIH19KSwgMCk7CisgICAgICAgICAgICBuZXR3b3Jr
UHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFT
dG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6bGVnYWN5UHJpdmF0ZVNlc3Npb25QYXJh
bWV0ZXJzKCkpLCAwKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3Mo
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpLCAwKTsKICAgICB9CiAKICAgICBpZiAo
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLSAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFBBTDo6U2Vzc2lv
bklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpKTsKKyAgICAgICAgc2VuZFRvQWxsUHJvY2Vz
c2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzOjpsZWdhY3lQcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoKSkpOwogICAg
IGVsc2UKICAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpE
ZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSk7
CiB9CkBAIC04MjAsNyArODIwLDcgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6
Y3JlYXRlTgogI2VuZGlmCiAKICAgICBpZiAoV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VzQXJlVXNp
bmdQcml2YXRlQnJvd3NpbmcoKSkKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVn
YWN5UHJpdmF0ZVNlc3Npb25JRCgpKSwgMCk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnM6OmxlZ2FjeVByaXZhdGVTZXNzaW9uUGFyYW1ldGVycygpKSwgMCk7CiAKICAgICBpZiAo
bV9hdXRvbWF0aW9uU2Vzc2lvbikKICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6RW5zdXJlQXV0b21hdGlvblNlc3Npb25Qcm94eShtX2F1dG9tYXRpb25TZXNzaW9u
LT5zZXNzaW9uSWRlbnRpZmllcigpKSwgMCk7CkBAIC0xMDA1LDExICsxMDA1LDkgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cGFnZUFkZGVkVG9Qcm9jZXNzKAogCiAgICAgYXV0byBzZXNzaW9uSUQg
PSBwYWdlLnNlc3Npb25JRCgpOwogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewot
ICAgICAgICAvLyBGSVhNRTogTWVyZ2UgTmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24gYW5kIE5ldHdvcmtQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlIGludG8g
b25lIG1lc3NhZ2UgdHlwZS4KLSAgICAgICAgLy8gVGhleSBkbyBiYXNpY2FsbHkgdGhlIHNhbWUg
dGhpbmcuCiAgICAgICAgIEFTU0VSVChwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5wYXJhbWV0ZXJz
KCkubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRCA9PSBzZXNzaW9uSUQpOwotICAg
ICAgICBzZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24ocGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1l
dGVycygpKSk7Ci0gICAgICAgIHBhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKSwgMCk7CisgICAgICAg
IHNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QWRkV2Vi
c2l0ZURhdGFTdG9yZShwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkpKTsKKyAg
ICAgICAgcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6QWRkV2Vic2l0
ZURhdGFTdG9yZSh7eyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyBzZXNzaW9uSUQsIHsg
fSwgeyB9LCB7IH19fSksIDApOwogICAgIH0gZWxzZSBpZiAoc2Vzc2lvbklEICE9IFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpIHsKICAgICAgICAgc2VuZFRvTmV0d29ya2luZ1By
b2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKHBhZ2Uu
d2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMoKSkpOwogICAgICAgICBwYWdlLnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKHBhZ2Uud2Vi
c2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMoKSksIDApOwpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjIzODU4KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTUsMTEgKzUx
NSw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZnVsbEtleWJvYXJkQWNjZXNzTW9kZUMKICAgICBtX2Z1
bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQgPSBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkOwogfQog
Ci12b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQotewotICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oeyB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7
IHNlc3Npb25JRCwgeyB9LCB7IH0sIEFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXMgfX0pOwotfQot
CiB2b2lkIFdlYlByb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdURk1vdmUocGFyYW1ldGVycykpOwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyMjM4NTgpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzksNyArMTc5LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKHVpbnQz
Ml90KTsKIAotICAgIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCk7CiAgICAgdm9pZCBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uSW5OZXR3
b3JrUHJvY2VzcygpOwogICAgIHZvaWQgYWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklE
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQCBtZXNz
YWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIENsZWFyQ2FjaGVkQ3Jl
ZGVudGlhbHMoKQogCi0gICAgRW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCiAgICAgQWRkV2Vic2l0ZURhdGFTdG9yZShzdHJ1Y3QgV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyk7CiAg
ICAgRGVzdHJveVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyMSw3ICszMjEsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdF
CiB7CiAgICAgaWYgKGVuYWJsZWQpIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkluTmV0d29ya1Byb2Nlc3MoKTsKLSAg
ICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbih7IHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgUEFMOjpTZXNzaW9uSUQ6Omxl
Z2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7IH0sIEFsbG93c0NlbGx1bGFyQWNjZXNzOjpZ
ZXMgfX0pOworICAgICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRl
RGF0YVN0b3JlU2Vzc2lvbih7IHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgUEFMOjpT
ZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7IH0sIEFsbG93c0NlbGx1
bGFyQWNjZXNzOjpZZXMgfX0pOwogICAgIH0gZWxzZQogICAgICAgICBTZXNzaW9uVHJhY2tlcjo6
ZGVzdHJveVNlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShy
ZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIs
NyArNDIsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gRklYTUU6IHJlbW92ZSBwbGF0Zm9y
bS1zcGVjaWZpYyBjb2RlIGFuZCB1c2UgU2Vzc2lvblRyYWNrZXIKLSAgICBzdGF0aWMgdm9pZCBl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYp
OwogICAgIHN0YXRpYyB2b2lkIGVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzJiYpOwogCiAgICAgc3RhdGljIHZvaWQgc2V0Q29va2llQWNjZXB0
UG9saWN5Rm9yQWxsQ29udGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAyMjM4
NTgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1LDI2ICs0NSw2IEBA
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci0gICAgCi12
b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQotewotICAgIGF1dG8g
c2Vzc2lvbklEID0gcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklE
OwotICAgIEFTU0VSVChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7Ci0KLSAgICBpZiAoV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmcgYmFzZTsKLSAgICBpZiAoU2Vzc2lvblRyYWNrZXI6
OmdldElkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkpCi0gICAgICAgIGJhc2UgPSBbW05TQnVuZGxl
IG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdOwotICAgIGVsc2UKLSAgICAgICAgYmFzZSA9
IFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpOwotCi0gICAgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCwgYmFzZSAr
ICcuJyArIFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRC5zZXNzaW9uSUQoKSkpOwotI2lmIFVTRShO
RVRXT1JLX1NFU1NJT04pCi0gICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklE
LCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMpKSk7Ci0jZW5kaWYKLX0KIAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMpCiB7CkBAIC03OCw5ICs1OCwxNCBAQCB2b2lkIFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlCiAgICAgZWxzZQogICAgICAgICBiYXNlID0gU2Vzc2lv
blRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCk7CiAKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
b25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhh
bmRsZSk7CisgICAgYm9vbCByZXN1bHQgPSBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFu
ZW50bHkocGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CisgICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9ICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7
CiAKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gdWlQcm9jZXNzQ29va2ll
U3RvcmFnZSA9IGNvb2tpZVN0b3JhZ2VGcm9tSWRlbnRpZnlpbmdEYXRhKHBhcmFtZXRlcnMudWlQ
cm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIpOworICAgIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiB1aVByb2Nlc3NDb29raWVTdG9yYWdlOworICAgIGlmICghc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkpCisgICAgICAgIHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2UgPSBjb29raWVT
dG9yYWdlRnJvbUlkZW50aWZ5aW5nRGF0YShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3Jh
Z2VJZGVudGlmaWVyKTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVpUHJv
Y2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyLmlzRW1wdHkoKSk7CiAKICAgICBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmVuc3VyZVNlc3Npb24oc2Vzc2lvbklELCBiYXNlICsgJy4nICsgU3RyaW5n
OjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSwgV1RGTW92ZSh1aVByb2Nlc3NDb29raWVT
dG9yYWdlKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuY3BwCShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDMsMjQgKzQzLDE4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKK3ZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0
ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQogewogICAgIGF1dG8gc2Vzc2lvbklEID0gcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMuc2Vzc2lvbklEOwogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgQVNT
RVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKLQorICAgIAogICAgIGlmIChOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHJldHVybjsK
LQotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihzZXNzaW9uSUQsIFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRC5zZXNzaW9uSUQoKSkpOworICAg
IAorICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZW5zdXJlU2Vzc2lvbihzZXNzaW9uSUQsIFN0
cmluZzo6bnVtYmVyKHNlc3Npb25JRC5zZXNzaW9uSUQoKSkpOwogICAgIFNlc3Npb25UcmFja2Vy
OjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShXVEZNb3ZlKHBh
cmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzKSkpOwogfQogCi12b2lkIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzJiYpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudAotfQotCiBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KFdlYkZy
YW1lKiBmcmFtZSkKICAgICA6IEZyYW1lTmV0d29ya2luZ0NvbnRleHQoZnJhbWUtPmNvcmVGcmFt
ZSgpKQogewpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNiArMTIxLDcgQEAKICNpbmNs
dWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXZWJVc2VyTWVkaWFD
bGllbnQuaCIKICNpbmNsdWRlICJXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudC5oIgorI2luY2x1
ZGUgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNvdXJjZS5oPgpAQCAtMjczMCw3ICsyNzMx
LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRMYXllckhvc3RpbmdNb2RlKExheWVySAogdm9pZCBXZWJQ
YWdlOjpzZXRTZXNzaW9uSUQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIGlmIChz
ZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQpOworICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5hZGRXZWJzaXRlRGF0YVN0b3JlKHt7IH0sIHsgfSwgeyB9LCB7IH0s
IHsgfSwgeyB9LCB7IHNlc3Npb25JRCwgeyB9LCB7IH0sIHsgfX19KTsKICAgICBtX3BhZ2UtPnNl
dFNlc3Npb25JRChzZXNzaW9uSUQpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0xMC0yNCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1lcmdlIE5ldHdv
cmtQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uIGFuZCBOZXR3b3JrUHJvY2Vz
czo6QWRkV2Vic2l0ZURhdGFTdG9yZSBpbnRvIG9uZSBtZXNzYWdlIHR5cGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODc1MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorCiAyMDE3LTEwLTIwICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBQcm92aWRlIGJhc2ljIHRpbWVsaW5lIGFuZCBhbmltYXRpb24gaW50ZXJmYWNlcwpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAyMjM4NTgpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZW5zdXJlUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpLCBb
W05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKKyAgICBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmVuc3VyZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVT
ZXNzaW9uSUQoKSwgW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CiAg
ICAgcmV0dXJuICpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324755</attachid>
            <date>2017-10-24 16:46:30 -0700</date>
            <delta_ts>2017-10-25 10:43:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178751-20171024164629.patch</filename>
            <type>text/plain</type>
            <size>29052</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzkzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE3LTEwLTI0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWVyZ2UgTmV0
d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24gYW5kIE5ldHdvcmtQcm9j
ZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlIGludG8gb25lIG1lc3NhZ2UgdHlwZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NzUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGNyZWF0aW9uIG9mIHBy
aXZhdGUgYnJvd3Npbmcgc2Vzc2lvbnMgYW5kIHBlcnNpc3RlbnQgYnJvd3Npbmcgc2Vzc2lvbnMg
aGFzIGV2b2x2ZWQgdG8gYmUgdGhlIHNhbWUgdGhpbmcKKyAgICAgICAgd2l0aCBkaWZmZXJlbmNl
cyBpbiBwYXJhbWV0ZXJzLCBsaWtlIG5vIHNhbmRib3ggZXh0ZW5zaW9ucyBvciBwYXRocyB0byBw
ZXJzaXN0ZW50IHN0b3JhZ2UgbG9jYXRpb25zIGZvciBwcml2YXRlIGJyb3dzaW5nLgorICAgICAg
ICBUaGVzZSBzaG91bGQgYmUgdW5pdGVkIHRvIHNpbXBsaWZ5IGZ1dHVyZSBkZXZlbG9wbWVudCBv
ZiBXZWJzaXRlRGF0YVN0b3JlIGNvbnN0cnVjdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Tb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZW5z
dXJlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEZWxldGVkLgorCiAyMDE3LTEwLTI0ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgT3B0aW9u
YWxseSBzdG9yZSBlbnRpcmUgUmVzb3VyY2VSZXF1ZXN0IGZvciBwaW5nIGxvYWRzCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmgJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcg
KzYzLDYgQEAgY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsKIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
KiBzdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSA9IFN0cmluZygpKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgdm9pZCBlbnN1cmVTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXJCYXNlID0gU3RyaW5nKCkpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIGRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdm9pZCBmb3JFYWNoKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mKT4mKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ0ZOZXQuY3BwCShyZXZpc2lvbiAyMjM4NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA4LDEyICsxMDgsNiBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtTdG9y
YWdlU2VzCiAgICAgcmV0dXJuICpkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7CiB9CiAK
LXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSkK
LXsKLSAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwotICAgIGVuc3VyZVNlc3Np
b24oc2Vzc2lvbklELCBpZGVudGlmaWVyQmFzZSk7Ci19Ci0KIHZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjplbnN1cmVTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyQmFzZSwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiYg
Y29va2llU3RvcmFnZSkKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IGdsb2JhbFNlc3Npb25NYXAo
KS5hZGQoc2Vzc2lvbklELCBudWxscHRyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uU291cC5jcHAJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzksMTggKzc5LDEyIEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3Jh
Z2VTZXMKICAgICByZXR1cm4gKmRlZmF1bHRTZXNzaW9uKCk7CiB9CiAKLXZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJikKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpl
bnN1cmVTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICBBU1NFUlQoc2Vzc2lvbklEICE9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpOwogICAgIEFTU0VSVCghZ2xvYmFsU2Vzc2lvbk1hcCgpLmNvbnRhaW5zKHNlc3Npb25JRCkp
OwogICAgIGdsb2JhbFNlc3Npb25NYXAoKS5hZGQoc2Vzc2lvbklELCBzdGQ6Om1ha2VfdW5pcXVl
PE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklELCBzdGQ6Om1ha2VfdW5pcXVlPFNvdXBO
ZXR3b3JrU2Vzc2lvbj4oc2Vzc2lvbklEKSkpOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZW5zdXJlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJikKLXsKLSAg
ICAvLyBGSVhNRTogSW1wbGVtZW50Ci19Ci0KIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
d2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKIHsKICAgICBkZWZhdWx0U2Vzc2lvbigpID0gc3Rk
OjptYWtlX3VuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCksIHN0ZDo6bWFrZV91bmlxdWU8U291cE5ldHdvcmtTZXNzaW9uPigpKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjM5MzQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE3LTEwLTI0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWVyZ2UgTmV0d29y
a1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24gYW5kIE5ldHdvcmtQcm9jZXNz
OjpBZGRXZWJzaXRlRGF0YVN0b3JlIGludG8gb25lIG1lc3NhZ2UgdHlwZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NzUxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bik6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3Rv
cmVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9X
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzOjpsZWdhY3lQcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGFnZUFkZGVkVG9Qcm9jZXNzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0U2Vzc2lvbklEKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW46CisKIDIwMTctMTAtMjQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBTZWxlY3RpbmcgYW5kIHJpZ2h0LWNsaWNraW5nIFVSTC1saWtl
IHN0cmluZ3Mgd2l0aCBJRE5BLWRpc2FsbG93ZWQgY2hhcmFjdGVycyBpbiBob3N0IG9yIGF1dGhv
cml0eSBjYXVzZXMgcmVuZGVyaW5nIGVuZ2luZSBjcmFzaApJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NjgsNyArNDY4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0
QwogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnN1cmVMZWdhY3lQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih7IHsgfSwgeyB9LCB7IH0sIHsgfSwgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhLCB7IH0sIHsgUEFM
OjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7IH0sIEFsbG93c0Nl
bGx1bGFyQWNjZXNzOjpZZXMgfX0pOworICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5h
ZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpsZWdhY3lQcml2
YXRlU2Vzc2lvblBhcmFtZXRlcnMoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJ
KHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcgogCiAgICAgLy8gRklYTUU6IGluc3RlYWQg
b2YgaGFuZGxpbmcgdGhpcyBoZXJlLCBhIG1lc3NhZ2Ugc2hvdWxkIGJlIHNlbnQgbGF0ZXIgKHNj
YWxlcyB0byBtdWx0aXBsZSBzZXNzaW9ucykKICAgICBpZiAocGFyYW1ldGVycy5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKQotICAgICAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbih7IHsgfSwgeyB9LCB7IH0sIHsgfSwgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhLCB7IH0sIHsgUEFMOjpTZXNzaW9u
SUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7IH0sICBBbGxvd3NDZWxsdWxhckFj
Y2Vzczo6WWVzIH19KTsKKyAgICAgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdl
YnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpsZWdhY3lQ
cml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoKSk7CiAKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRV
c2VUZXN0aW5nTmV0d29ya1Nlc3Npb24pCiAgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwpAQCAtMjk3LDExICsyOTcsNiBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCi17Ci0gICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6
OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV1RGTW92ZShwYXJhbWV0ZXJzKSk7Ci19Ci0K
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJl
dmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJik7CiAKLSAgICB2b2lkIGVuc3VyZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CisgICAgdm9p
ZCBhZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpOwogCiAg
ICAgdm9pZCBncmFudFNhbmRib3hFeHRlbnNpb25zVG9TdG9yYWdlUHJvY2Vzc0ZvckJsb2JzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpOwogCkBAIC0xODcsNyArMTg3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZFJlY2VpdmVTeW5jTmV0d29ya1Byb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CiAgICAgdm9pZCBpbml0
aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJik7
CiAgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpOwotICAgIHZv
aWQgYWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKICAg
ICB2b2lkIGRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIHZvaWQgZmV0Y2hX
ZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9w
dGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTM1LDcgKzM1LDYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZQog
CiAgICAgQ2xlYXJDYWNoZWRDcmVkZW50aWFscygpCiAKLSAgICBFbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzKQogICAgIEFkZFdlYnNpdGVEYXRhU3RvcmUoc3RydWN0IFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMpOwogICAgIERlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIApJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQuaAkocmV2aXNpb24gMjIzODU4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3
ICs0Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVOZXR3b3JraW5nQ29udGV4dCgp
OwogCiAgICAgLy8gRklYTUU6IFJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGFuZCB1c2Ug
U2Vzc2lvblRyYWNrZXIuCi0gICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKICAgICBzdGF0aWMgdm9pZCBlbnN1
cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsK
IAogICAgIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdDsgfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0JKHJldmlzaW9uIDIyMzg1OCkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250
ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC04MSwzMiArODEsNiBAQCBSZXNvdXJjZUVycm9yIFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0OjpiCiAgICAgcmV0dXJuIFdlYktpdDo6YmxvY2tlZEVycm9y
KHJlcXVlc3QpOwogfQogCi12b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKLXsKLSAgICBhdXRvIHNlc3Npb25JRCA9IHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLnNlc3Npb25JRDsKLSAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwot
Ci0gICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU3RyaW5nIGJhc2U7Ci0gICAgaWYgKFNlc3Npb25U
cmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpKQotICAgICAgICBiYXNlID0gW1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXTsKLSAgICBlbHNlCi0gICAgICAg
IGJhc2UgPSBTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKTsKLQotICAgIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQs
IGJhc2UgKyAnLicgKyBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQuc2Vzc2lvbklEKCkpKTsKLQot
ICAgIGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBjb29raWUgOiBwYXJhbWV0ZXJzLnBl
bmRpbmdDb29raWVzKQotICAgICAgICBzZXNzaW9uLT5zZXRDb29raWUoY29va2llKTsKLQotI2lm
IFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMubGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyID0gTmV0d29ya1Byb2Nlc3M6OnNpbmds
ZXRvbigpLnN1cHBsZW1lbnQ8TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyPigpOwotICAgIFNl
c3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0
ZShXVEZNb3ZlKHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzKSkpOwotI2VuZGlm
Ci19Ci0KIHZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3Rv
cmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAg
ICBhdXRvIHNlc3Npb25JRCA9IHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNl
c3Npb25JRDsKQEAgLTExOSw3ICs5Myw4IEBAIHZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6
OmVuc3VyZVdlYnMKICAgICBlbHNlCiAgICAgICAgIGJhc2UgPSBTZXNzaW9uVHJhY2tlcjo6Z2V0
SWRlbnRpZmllckJhc2UoKTsKIAotICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5l
bnRseShwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBi
b29sIHJlc3VsdCA9IFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0
ZXJzLmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0ID0gIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKIAogICAgIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiB1aVByb2Nlc3NDb29raWVTdG9yYWdlOwogICAg
IGlmICghcGFyYW1ldGVycy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllci5pc0VtcHR5
KCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29y
a2luZ0NvbnRleHRTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAkocmV2aXNpb24gMjIz
ODU4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtp
bmdDb250ZXh0U291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDIzICs0OCwxNiBAQCBib29s
IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojppc1ZhbGlkKCkgCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQordm9pZCBSZW1v
dGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIGF1dG8gc2Vzc2lvbklE
ID0gcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklEOwotICAgIEFT
U0VSVChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7Ci0KICAgICBpZiAoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vz
c2lvbklELCBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQuc2Vzc2lvbklEKCkpKTsKKyAgICBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVNlc3Npb24oc2Vzc2lvbklELCBTdHJpbmc6Om51bWJl
cihzZXNzaW9uSUQuc2Vzc2lvbklEKCkpKTsKICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lv
bihzZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLm5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsKIH0KIAotdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMmJikKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgotfQotCiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0
CiB7CiAgICAgaWYgKGF1dG8gc2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFn
ZVNlc3Npb24obV9zZXNzaW9uSUQpKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjIzODU4KQorKysg
U291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMuaCIKIAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1
ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTc3LDUg
Kzc4LDkgQEAgYm9vbCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKAogICAgIHJl
dHVybiB0cnVlOwogfQogCitXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVyczo6bGVnYWN5UHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKCkKK3sKKyAgICBy
ZXR1cm4geyB7IH0sIHsgfSwgeyB9LCB7IH0sIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNo
ZVN0b3JhZ2VQZXJPcmlnaW5RdW90YSwgeyB9LCB7IFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2
YXRlU2Vzc2lvbklEKCksIHsgfSwgeyB9LCB7IH19fTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzLmgJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcg
QEAgc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHsKICAgICBXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycygpID0gZGVmYXVsdDsKICAgICBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cyhXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKSA9IGRlZmF1bHQ7CiAgICAgfldlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzKCk7CisgICAgc3RhdGljIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzIGxlZ2FjeVByaXZhdGVTZXNzaW9uUGFyYW1ldGVycygpOwogICAgIAogICAgIHZvaWQgZW5j
b2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkRl
Y29kZXImLCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjIzODU4KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MzAsMTMgKzYzMCwxMyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBbnlQYWdlR3JvdXBN
aWdoCiB7CiAgICAgaWYgKG5ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgaWYgKHByaXZhdGVC
cm93c2luZ0VuYWJsZWQpCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih7IHsgfSwg
eyB9LCB7IH0sIHsgfSwgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9y
aWdpblF1b3RhLCB7IH0sIHsgUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQo
KSwgeyB9LCB7IH0sIEFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXMgfX0pLCAwKTsKKyAgICAgICAg
ICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBZGRX
ZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpsZWdhY3lQcml2YXRl
U2Vzc2lvblBhcmFtZXRlcnMoKSksIDApOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBuZXR3
b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVNlc3Np
b24oUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSksIDApOwogICAgIH0K
IAogICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKQotICAgICAgICBzZW5kVG9BbGxQcm9j
ZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
UEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSkpOworICAgICAgICBzZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUo
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmxlZ2FjeVByaXZhdGVTZXNzaW9uUGFyYW1ldGVy
cygpKSk7CiAgICAgZWxzZQogICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6Oldl
YlByb2Nlc3M6OkRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vz
c2lvbklEKCkpKTsKIH0KQEAgLTgyMCw3ICs4MjAsNyBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlBy
b2Nlc3NQb29sOjpjcmVhdGVOCiAjZW5kaWYKIAogICAgIGlmIChXZWJQcmVmZXJlbmNlczo6YW55
UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpLCAwKTsKKyAgICAgICAgcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVyczo6bGVnYWN5UHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKCkpLCAwKTsK
IAogICAgIGlmIChtX2F1dG9tYXRpb25TZXNzaW9uKQogICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVBdXRvbWF0aW9uU2Vzc2lvblByb3h5KG1fYXV0b21h
dGlvblNlc3Npb24tPnNlc3Npb25JZGVudGlmaWVyKCkpLCAwKTsKQEAgLTEwMDUsMTEgKzEwMDUs
OSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQWRkZWRUb1Byb2Nlc3MoCiAKICAgICBhdXRv
IHNlc3Npb25JRCA9IHBhZ2Uuc2Vzc2lvbklEKCk7CiAgICAgaWYgKHNlc3Npb25JRC5pc0VwaGVt
ZXJhbCgpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBNZXJnZSBOZXR3b3JrUHJvY2Vzczo6RW5zdXJl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbiBhbmQgTmV0d29ya1Byb2Nlc3M6OkFkZFdlYnNpdGVEYXRh
U3RvcmUgaW50byBvbmUgbWVzc2FnZSB0eXBlLgotICAgICAgICAvLyBUaGV5IGRvIGJhc2ljYWxs
eSB0aGUgc2FtZSB0aGluZy4KICAgICAgICAgQVNTRVJUKHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgp
LnBhcmFtZXRlcnMoKS5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklEID09IHNlc3Np
b25JRCk7Ci0gICAgICAgIHNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihwYWdlLndlYnNpdGVEYXRhU3Rv
cmUoKS5wYXJhbWV0ZXJzKCkpKTsKLSAgICAgICAgcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQpLCAw
KTsKKyAgICAgICAgc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRl
cnMoKSkpOworICAgICAgICBwYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpBZGRXZWJzaXRlRGF0YVN0b3JlKHt7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IHNl
c3Npb25JRCwgeyB9LCB7IH0sIHsgfX19KSwgMCk7CiAgICAgfSBlbHNlIGlmIChzZXNzaW9uSUQg
IT0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkgewogICAgICAgICBzZW5kVG9O
ZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFkZFdlYnNpdGVEYXRh
U3RvcmUocGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygpKSk7CiAgICAgICAgIHBh
Z2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3Rv
cmUocGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygpKSwgMCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMjM4NTgpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxNSwxMSArNTE1LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpmdWxsS2V5Ym9hcmRBY2Nlc3NNb2Rl
QwogICAgIG1fZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA9IGZ1bGxLZXlib2FyZEFjY2Vzc0Vu
YWJsZWQ7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi17Ci0gICAgV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih7IHsgfSwgeyB9LCB7IH0sIHsgfSwg
eyB9LCB7IH0sIHsgc2Vzc2lvbklELCB7IH0sIHsgfSwgQWxsb3dzQ2VsbHVsYXJBY2Nlc3M6Olll
cyB9fSk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV1RGTW92ZShwYXJhbWV0
ZXJzKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9u
IDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE3OSw3ICsxNzksNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldENhY2hl
TW9kZWwodWludDMyX3QpOwogCi0gICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIGVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nl
c3Npb25Jbk5ldHdvcmtQcm9jZXNzKCk7CiAgICAgdm9pZCBhZGRXZWJzaXRlRGF0YVN0b3JlKFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgZGVzdHJveVNlc3Npb24oUEFM
OjpTZXNzaW9uSUQpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0
Nyw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgQ2xl
YXJDYWNoZWRDcmVkZW50aWFscygpCiAKLSAgICBFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICBBZGRXZWJzaXRlRGF0YVN0b3JlKHN0cnVj
dCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzKTsKICAgICBEZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkocmV2aXNpb24gMjIzODU4KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFByaXZh
dGVCcm93c2luZ0UKIHsKICAgICBpZiAoZW5hYmxlZCkgewogICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uSW5OZXR3b3JrUHJv
Y2VzcygpOwotICAgICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKHsgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyBQQUw6OlNl
c3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpLCB7IH0sIHsgfSwgQWxsb3dzQ2VsbHVs
YXJBY2Nlc3M6OlllcyB9fSk7CisgICAgICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVu
c3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKHsgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsg
fSwgeyBQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpLCB7IH0sIHsgfSwg
QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6OlllcyB9fSk7CiAgICAgfSBlbHNlCiAgICAgICAgIFNlc3Np
b25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNl
c3Npb25JRCgpKTsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmgJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw3ICs0Miw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBGSVhNRTogcmVt
b3ZlIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgYW5kIHVzZSBTZXNzaW9uVHJhY2tlcgotICAgIHN0
YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMmJik7CiAgICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Np
b24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CiAKICAgICBzdGF0aWMgdm9pZCBzZXRD
b29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhIVFRQQ29va2llQWNjZXB0UG9saWN5KTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0JKHJl
dmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDUs
MjYgKzQ1LDYgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKLSAgICAKLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCi17
Ci0gICAgYXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVy
cy5zZXNzaW9uSUQ7Ci0gICAgQVNTRVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKLQotICAg
IGlmIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25JRCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFN0cmluZyBiYXNlOwotICAgIGlmIChTZXNz
aW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKS5pc051bGwoKSkKLSAgICAgICAgYmFzZSA9
IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07Ci0gICAgZWxzZQotICAg
ICAgICBiYXNlID0gU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCk7Ci0KLSAgICBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lv
bklELCBiYXNlICsgJy4nICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSk7
Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lv
bihzZXNzaW9uSUQsIE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLm5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycykpKTsKLSNlbmRpZgotfQogCiB2b2lkIFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKQEAgLTc4LDkgKzU4LDE0IEBAIHZvaWQg
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2UKICAgICBlbHNlCiAgICAgICAgIGJh
c2UgPSBTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKTsKIAotICAgIFNhbmRib3hF
eHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRo
RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBib29sIHJlc3VsdCA9IFNhbmRib3hFeHRlbnNpb246OmNv
bnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFu
ZGxlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID0gIXNlc3Npb25JRC5pc0Vw
aGVtZXJhbCgpKTsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiB1aVBy
b2Nlc3NDb29raWVTdG9yYWdlID0gY29va2llU3RvcmFnZUZyb21JZGVudGlmeWluZ0RhdGEocGFy
YW1ldGVycy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllcik7CisgICAgUmV0YWluUHRy
PENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2U7CisgICAgaWYg
KCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgdWlQcm9jZXNzQ29va2llU3RvcmFn
ZSA9IGNvb2tpZVN0b3JhZ2VGcm9tSWRlbnRpZnlpbmdEYXRhKHBhcmFtZXRlcnMudWlQcm9jZXNz
Q29va2llU3RvcmFnZUlkZW50aWZpZXIpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKHBhcmFt
ZXRlcnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIuaXNFbXB0eSgpKTsKIAogICAg
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZW5zdXJlU2Vzc2lvbihzZXNzaW9uSUQsIGJhc2UgKyAn
LicgKyBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQuc2Vzc2lvbklEKCkpLCBXVEZNb3ZlKHVpUHJv
Y2Vzc0Nvb2tpZVN0b3JhZ2UpKTsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MywyNCArNDMsMTggQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQordm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpl
bnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJzLm5ldHdvcmtT
ZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQ7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKLSAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwogCiAgICAgaWYgKE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKHNlc3Npb25JRCwgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSk7
CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVTZXNzaW9uKHNlc3Npb25JRCwgU3Ry
aW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSk7CiAgICAgU2Vzc2lvblRyYWNrZXI6
OnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKFdURk1vdmUocGFy
YW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMmJikKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50Ci19Ci0KIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQoV2ViRnJh
bWUqIGZyYW1lKQogICAgIDogRnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFtZS0+Y29yZUZyYW1l
KCkpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAkocmV2aXNpb24gMjIzODU4KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw2ICsxMjEsNyBAQAogI2luY2x1
ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNs
aWVudC5oIgogI2luY2x1ZGUgIldlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmgiCisjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQXJjaGl2ZVJlc291cmNlLmg+CkBAIC0yNzMwLDcgKzI3MzEs
NyBAQCB2b2lkIFdlYlBhZ2U6OnNldExheWVySG9zdGluZ01vZGUoTGF5ZXJICiB2b2lkIFdlYlBh
Z2U6OnNldFNlc3Npb25JRChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgaWYgKHNl
c3Npb25JRC5pc0VwaGVtZXJhbCgpKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmFkZFdlYnNpdGVEYXRhU3RvcmUoe3sgfSwgeyB9LCB7IH0sIHsgfSwg
eyB9LCB7IH0sIHsgc2Vzc2lvbklELCB7IH0sIHsgfSwgeyB9fX0pOwogICAgIG1fcGFnZS0+c2V0
U2Vzc2lvbklEKHNlc3Npb25JRCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIyMzg1OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE3LTEwLTI0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWVyZ2UgTmV0d29y
a1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24gYW5kIE5ldHdvcmtQcm9jZXNz
OjpBZGRXZWJzaXRlRGF0YVN0b3JlIGludG8gb25lIG1lc3NhZ2UgdHlwZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NzUxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAoV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisKIDIwMTctMTAtMjAgIEFudG9p
bmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNd
IFByb3ZpZGUgYmFzaWMgdGltZWxpbmUgYW5kIGFuaW1hdGlvbiBpbnRlcmZhY2VzCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0JKHJldmlzaW9uIDIyMzg1OCkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCksIFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pOworICAgIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZW5zdXJlU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNl
c3Npb25JRCgpLCBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKICAg
ICByZXR1cm4gKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oUEFMOjpTZXNz
aW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324848</attachid>
            <date>2017-10-25 10:43:13 -0700</date>
            <delta_ts>2017-11-13 15:47:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178751-20171025104311.patch</filename>
            <type>text/plain</type>
            <size>29662</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzk0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE3LTEwLTI1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWVyZ2UgTmV0
d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24gYW5kIE5ldHdvcmtQcm9j
ZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlIGludG8gb25lIG1lc3NhZ2UgdHlwZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NzUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGNyZWF0aW9uIG9mIHBy
aXZhdGUgYnJvd3Npbmcgc2Vzc2lvbnMgYW5kIHBlcnNpc3RlbnQgYnJvd3Npbmcgc2Vzc2lvbnMg
aGFzIGV2b2x2ZWQgdG8gYmUgdGhlIHNhbWUgdGhpbmcKKyAgICAgICAgd2l0aCBkaWZmZXJlbmNl
cyBpbiBwYXJhbWV0ZXJzLCBsaWtlIG5vIHNhbmRib3ggZXh0ZW5zaW9ucyBvciBwYXRocyB0byBw
ZXJzaXN0ZW50IHN0b3JhZ2UgbG9jYXRpb25zIGZvciBwcml2YXRlIGJyb3dzaW5nLgorICAgICAg
ICBUaGVzZSBzaG91bGQgYmUgdW5pdGVkIHRvIHNpbXBsaWZ5IGZ1dHVyZSBkZXZlbG9wbWVudCBv
ZiBXZWJzaXRlRGF0YVN0b3JlIGNvbnN0cnVjdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Tb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZW5z
dXJlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEZWxldGVkLgorCiAyMDE3LTEwLTI0ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IGJ1
aWxkIGFmdGVyIHIyMjM5NDAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAkocmV2aXNpb24gMjIzOTQwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNiBAQCBjbGFzcyBOZXR3b3JrU3RvcmFnZVNl
c3Npb24gewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIGRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHN0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklE
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlID0gU3Ry
aW5nKCkpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGVuc3VyZVNlc3Npb24oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckJhc2UgPSBTdHJpbmcoKSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGVzdHJveVNlc3Npb24oUEFMOjpTZXNzaW9u
SUQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGZvckVhY2goY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpPiYpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJKHJldmlzaW9uIDIyMzk0MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsMTIgKzEwOCw2IEBAIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXMKICAgICByZXR1cm4gKmRlZmF1bHROZXR3
b3JrU3RvcmFnZVNlc3Npb24oKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlKQotewotICAgIEFTU0VSVChzZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSk7Ci0gICAgZW5zdXJlU2Vzc2lvbihzZXNzaW9uSUQsIGlkZW50aWZpZXJCYXNlKTsK
LX0KLQogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVNlc3Npb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlLCBSZXRhaW5QdHI8
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4mJiBjb29raWVTdG9yYWdlKQogewogICAgIGF1dG8gYWRk
UmVzdWx0ID0gZ2xvYmFsU2Vzc2lvbk1hcCgpLmFkZChzZXNzaW9uSUQsIG51bGxwdHIpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAkocmV2aXNpb24gMjIzOTQwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxOCArNzksMTIgQEAgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBOZXR3b3JrU3RvcmFnZVNlcwogICAgIHJldHVybiAqZGVmYXVsdFNlc3Np
b24oKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmKQordm9p
ZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmKQogewotICAgIEFTU0VSVChzZXNzaW9uSUQgIT0gUEFMOjpT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgQVNTRVJUKCFnbG9iYWxTZXNzaW9u
TWFwKCkuY29udGFpbnMoc2Vzc2lvbklEKSk7CiAgICAgZ2xvYmFsU2Vzc2lvbk1hcCgpLmFkZChz
ZXNzaW9uSUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9u
SUQsIHN0ZDo6bWFrZV91bmlxdWU8U291cE5ldHdvcmtTZXNzaW9uPihzZXNzaW9uSUQpKSk7CiB9
CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVTZXNzaW9uKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKLX0KLQogdm9p
ZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQogewog
ICAgIGRlZmF1bHRTZXNzaW9uKCkgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgc3RkOjptYWtlX3VuaXF1
ZTxTb3VwTmV0d29ya1Nlc3Npb24+KCkpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzk0MCkK
KysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTctMTAtMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBNZXJnZSBOZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbiBhbmQgTmV0d29ya1Byb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUgaW50byBvbmUg
bWVzc2FnZSB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzg3NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuc3VyZUxl
Z2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRp
YWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1JlbW90ZU5l
dHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5l
dHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6IERl
bGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmxlZ2FjeVByaXZh
dGVTZXNzaW9uUGFyYW1ldGVycyk6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVBy
aXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
Y3JlYXRlTmV3V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpw
YWdlQWRkZWRUb1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRh
U3RvcmVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpz
ZXRTZXNzaW9uSUQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAxNy0xMC0yNCAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIHNlcnZpY2Ugd29ya2Vy
IHRvIHVzZSBjYWNoZSBzdG9yYWdlIGFwaQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjgsNyAr
NDY4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0QwogCiB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnN1cmVMZWdhY3lQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbih7IHsgfSwgeyB9LCB7IH0sIHsgfSwgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhLCB7IH0sIHsgUEFMOjpTZXNzaW9u
SUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7IH0sIEFsbG93c0NlbGx1bGFyQWNj
ZXNzOjpZZXMgfX0pOworICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRXZWJzaXRl
RGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpsZWdhY3lQcml2YXRlU2Vzc2lv
blBhcmFtZXRlcnMoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9u
IDIyMzk0MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6aW5pdGlhbGl6ZU5ldHdvcmtQcgogCiAgICAgLy8gRklYTUU6IGluc3RlYWQgb2YgaGFuZGxp
bmcgdGhpcyBoZXJlLCBhIG1lc3NhZ2Ugc2hvdWxkIGJlIHNlbnQgbGF0ZXIgKHNjYWxlcyB0byBt
dWx0aXBsZSBzZXNzaW9ucykKICAgICBpZiAocGFyYW1ldGVycy5wcml2YXRlQnJvd3NpbmdFbmFi
bGVkKQotICAgICAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbih7IHsgfSwgeyB9LCB7IH0sIHsgfSwgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhLCB7IH0sIHsgUEFMOjpTZXNzaW9uSUQ6OmxlZ2Fj
eVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7IH0sICBBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVz
IH19KTsKKyAgICAgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRh
U3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpsZWdhY3lQcml2YXRlU2Vz
c2lvblBhcmFtZXRlcnMoKSk7CiAKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5n
TmV0d29ya1Nlc3Npb24pCiAgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9O
ZXdUZXN0aW5nU2Vzc2lvbigpOwpAQCAtMjk3LDExICsyOTcsNiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vz
czo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMpCi17Ci0gICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oV1RGTW92ZShwYXJhbWV0ZXJzKSk7Ci19Ci0KIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogewogICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVX
ZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDIy
Mzk0MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAko
d29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcHJl
ZmV0Y2hETlMoY29uc3QgU3RyaW5nJik7CiAKLSAgICB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CisgICAgdm9pZCBhZGRXZWJz
aXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYpOwogCiAgICAgdm9pZCBn
cmFudFNhbmRib3hFeHRlbnNpb25zVG9TdG9yYWdlUHJvY2Vzc0ZvckJsb2JzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBmaWxlbmFtZXMsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpOwogCkBAIC0xODcsNyArMTg3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jTmV0d29ya1Byb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CiAgICAgdm9pZCBpbml0aWFsaXplTmV0
d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgdm9p
ZCBjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpOwotICAgIHZvaWQgYWRkV2Vi
c2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGRl
c3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0
YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxX
ZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4JKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1
LDYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZQogCiAgICAgQ2xl
YXJDYWNoZWRDcmVkZW50aWFscygpCiAKLSAgICBFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzKQogICAgIEFkZFdlYnNpdGVEYXRhU3RvcmUoc3RydWN0IFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpOwogICAg
IERlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIApJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQuaAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9S
ZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVOZXR3b3JraW5nQ29udGV4dCgpOwogCiAgICAg
Ly8gRklYTUU6IFJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGFuZCB1c2UgU2Vzc2lvblRy
YWNrZXIuCi0gICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKICAgICBzdGF0aWMgdm9pZCBlbnN1cmVXZWJzaXRl
RGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKIAogICAgIGJv
b2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdDsg
fQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9t
YWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0JKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC04MSwzMiArODEsNiBAQCBSZXNvdXJjZUVycm9yIFJlbW90ZU5ldHdv
cmtpbmdDb250ZXh0OjpiCiAgICAgcmV0dXJuIFdlYktpdDo6YmxvY2tlZEVycm9yKHJlcXVlc3Qp
OwogfQogCi12b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKLXsKLSAg
ICBhdXRvIHNlc3Npb25JRCA9IHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNl
c3Npb25JRDsKLSAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwotCi0gICAgaWYg
KE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgU3RyaW5nIGJhc2U7Ci0gICAgaWYgKFNlc3Npb25UcmFja2VyOjpn
ZXRJZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpKQotICAgICAgICBiYXNlID0gW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXTsKLSAgICBlbHNlCi0gICAgICAgIGJhc2UgPSBT
ZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKTsKLQotICAgIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQsIGJhc2UgKyAn
LicgKyBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQuc2Vzc2lvbklEKCkpKTsKLQotICAgIGF1dG8q
IHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25J
RCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBjb29raWUgOiBwYXJhbWV0ZXJzLnBlbmRpbmdDb29r
aWVzKQotICAgICAgICBzZXNzaW9uLT5zZXRDb29raWUoY29va2llKTsKLQotI2lmIFVTRShORVRX
T1JLX1NFU1NJT04pCi0gICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMubGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyID0gTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLnN1
cHBsZW1lbnQ8TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyPigpOwotICAgIFNlc3Npb25UcmFj
a2VyOjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1Nlc3Npb246OmNyZWF0ZShXVEZNb3Zl
KHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzKSkpOwotI2VuZGlmCi19Ci0KIHZv
aWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9u
KFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBhdXRvIHNl
c3Npb25JRCA9IHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRDsK
QEAgLTExOSw3ICs5Myw4IEBAIHZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdl
YnMKICAgICBlbHNlCiAgICAgICAgIGJhc2UgPSBTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmll
ckJhc2UoKTsKIAotICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJh
bWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBib29sIHJlc3Vs
dCA9IFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmNvb2tp
ZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0ID0gIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKIAogICAgIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiB1aVByb2Nlc3NDb29raWVTdG9yYWdlOwogICAgIGlmICghcGFy
YW1ldGVycy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllci5pc0VtcHR5KCkpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHRTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAkocmV2aXNpb24gMjIzOTQwKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
U291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDIzICs0OCwxNiBAQCBib29sIFJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0Ojppc1ZhbGlkKCkgCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQordm9pZCBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIGF1dG8gc2Vzc2lvbklEID0gcGFyYW1l
dGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklEOwotICAgIEFTU0VSVChzZXNz
aW9uSUQuaXNFcGhlbWVyYWwoKSk7Ci0KICAgICBpZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
dG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklELCBT
dHJpbmc6Om51bWJlcihzZXNzaW9uSUQuc2Vzc2lvbklEKCkpKTsKKyAgICBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmVuc3VyZVNlc3Npb24oc2Vzc2lvbklELCBTdHJpbmc6Om51bWJlcihzZXNzaW9u
SUQuc2Vzc2lvbklEKCkpKTsKICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihzZXNzaW9u
SUQsIE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLm5ldHdvcmtTZXNz
aW9uUGFyYW1ldGVycykpKTsKIH0KIAotdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5z
dXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJikK
LXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgotfQotCiBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7CiAgICAg
aWYgKGF1dG8gc2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24o
bV9zZXNzaW9uSUQpKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMu
aCIKIAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYnNp
dGVEYXRhU3RvcmUuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTc3LDUgKzc4LDkgQEAg
Ym9vbCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKAogICAgIHJldHVybiB0cnVl
OwogfQogCitXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVyczo6bGVnYWN5UHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKCkKK3sKKyAgICByZXR1cm4geyB7
IH0sIHsgfSwgeyB9LCB7IH0sIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VQ
ZXJPcmlnaW5RdW90YSwgeyB9LCB7IFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lv
bklEKCksIHsgfSwgeyB9LCB7IH19fTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
LmgJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgc3RydWN0
IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHsKICAgICBXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVycygpID0gZGVmYXVsdDsKICAgICBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycyYmKSA9IGRlZmF1bHQ7CiAgICAgfldlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzKCk7CisgICAgc3RhdGljIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIGxlZ2Fj
eVByaXZhdGVTZXNzaW9uUGFyYW1ldGVycygpOwogICAgIAogICAgIHZvaWQgZW5jb2RlKElQQzo6
RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzAsMTMg
KzYzMCwxMyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBbnlQYWdlR3JvdXBNaWdoCiB7CiAg
ICAgaWYgKG5ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgaWYgKHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQpCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih7IHsgfSwgeyB9LCB7IH0s
IHsgfSwgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3Rh
LCB7IH0sIHsgUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7
IH0sIEFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXMgfX0pLCAwKTsKKyAgICAgICAgICAgIG5ldHdv
cmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBZGRXZWJzaXRlRGF0
YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpsZWdhY3lQcml2YXRlU2Vzc2lvblBh
cmFtZXRlcnMoKSksIDApOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBuZXR3b3JrUHJvY2Vz
cygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGVzdHJveVNlc3Npb24oUEFMOjpT
ZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSksIDApOwogICAgIH0KIAogICAgIGlm
IChwcml2YXRlQnJvd3NpbmdFbmFibGVkKQotICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oUEFMOjpTZXNz
aW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSkpOworICAgICAgICBzZW5kVG9BbGxQcm9j
ZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnM6OmxlZ2FjeVByaXZhdGVTZXNzaW9uUGFyYW1ldGVycygpKSk7CiAg
ICAgZWxzZQogICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OkRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkp
KTsKIH0KQEAgLTgyMCw3ICs4MjAsNyBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29s
OjpjcmVhdGVOCiAjZW5kaWYKIAogICAgIGlmIChXZWJQcmVmZXJlbmNlczo6YW55UGFnZXNBcmVV
c2luZ1ByaXZhdGVCcm93c2luZygpKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjps
ZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpLCAwKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVyczo6bGVnYWN5UHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKCkpLCAwKTsKIAogICAgIGlm
IChtX2F1dG9tYXRpb25TZXNzaW9uKQogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpFbnN1cmVBdXRvbWF0aW9uU2Vzc2lvblByb3h5KG1fYXV0b21hdGlvblNlc3Np
b24tPnNlc3Npb25JZGVudGlmaWVyKCkpLCAwKTsKQEAgLTEwMDUsMTEgKzEwMDUsOSBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpwYWdlQWRkZWRUb1Byb2Nlc3MoCiAKICAgICBhdXRvIHNlc3Npb25J
RCA9IHBhZ2Uuc2Vzc2lvbklEKCk7CiAgICAgaWYgKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiBNZXJnZSBOZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbiBhbmQgTmV0d29ya1Byb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUgaW50
byBvbmUgbWVzc2FnZSB0eXBlLgotICAgICAgICAvLyBUaGV5IGRvIGJhc2ljYWxseSB0aGUgc2Ft
ZSB0aGluZy4KICAgICAgICAgQVNTRVJUKHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRl
cnMoKS5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2Vzc2lvbklEID09IHNlc3Npb25JRCk7Ci0g
ICAgICAgIHNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5wYXJh
bWV0ZXJzKCkpKTsKLSAgICAgICAgcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQpLCAwKTsKKyAgICAg
ICAgc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBZGRX
ZWJzaXRlRGF0YVN0b3JlKHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMoKSkpOwor
ICAgICAgICBwYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBZGRXZWJz
aXRlRGF0YVN0b3JlKHt7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IHNlc3Npb25JRCwg
eyB9LCB7IH0sIHsgfX19KSwgMCk7CiAgICAgfSBlbHNlIGlmIChzZXNzaW9uSUQgIT0gUEFMOjpT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkgewogICAgICAgICBzZW5kVG9OZXR3b3JraW5n
UHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUocGFn
ZS53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygpKSk7CiAgICAgICAgIHBhZ2UucHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUocGFnZS53
ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygpKSwgMCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMjM5NDApCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxNSwxMSAr
NTE1LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQwogICAgIG1f
ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA9IGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQ7CiB9
CiAKLXZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCi17Ci0gICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5z
dXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih7IHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0s
IHsgc2Vzc2lvbklELCB7IH0sIHsgfSwgQWxsb3dzQ2VsbHVsYXJBY2Nlc3M6OlllcyB9fSk7Ci19
Ci0KIHZvaWQgV2ViUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV1RGTW92ZShwYXJhbWV0ZXJzKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDIyMzk0MCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE3OSw3ICsxNzksNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldENhY2hlTW9kZWwodWlu
dDMyX3QpOwogCi0gICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEKTsKICAgICB2b2lkIGVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb25Jbk5l
dHdvcmtQcm9jZXNzKCk7CiAgICAgdm9pZCBhZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgZGVzdHJveVNlc3Npb24oUEFMOjpTZXNzaW9u
SUQpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4JKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw2IEBAIG1l
c3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgQ2xlYXJDYWNoZWRD
cmVkZW50aWFscygpCiAKLSAgICBFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKICAgICBBZGRXZWJzaXRlRGF0YVN0b3JlKHN0cnVjdCBXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKTsK
ICAgICBEZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcAkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2lu
Z0UKIHsKICAgICBpZiAoZW5hYmxlZCkgewogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uSW5OZXR3b3JrUHJvY2VzcygpOwot
ICAgICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKHsgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyBQQUw6OlNlc3Npb25JRDo6
bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpLCB7IH0sIHsgfSwgQWxsb3dzQ2VsbHVsYXJBY2Nlc3M6
OlllcyB9fSk7CisgICAgICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdlYnNp
dGVEYXRhU3RvcmVTZXNzaW9uKHsgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyBQQUw6
OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpLCB7IH0sIHsgfSwgQWxsb3dzQ2Vs
bHVsYXJBY2Nlc3M6OlllcyB9fSk7CiAgICAgfSBlbHNlCiAgICAgICAgIFNlc3Npb25UcmFja2Vy
OjpkZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgp
KTsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJ
KHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw3ICs0Miw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBGSVhNRTogcmVtb3ZlIHBsYXRm
b3JtLXNwZWNpZmljIGNvZGUgYW5kIHVzZSBTZXNzaW9uVHJhY2tlcgotICAgIHN0YXRpYyB2b2lk
IGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMm
Jik7CiAgICAgc3RhdGljIHZvaWQgZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMmJik7CiAKICAgICBzdGF0aWMgdm9pZCBzZXRDb29raWVBY2Nl
cHRQb2xpY3lGb3JBbGxDb250ZXh0cyhIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0JKHJldmlzaW9uIDIy
Mzk0MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDUsMjYgKzQ1LDYg
QEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLSAgICAK
LXZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCi17Ci0gICAgYXV0
byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9u
SUQ7Ci0gICAgQVNTRVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKLQotICAgIGlmIChXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFN0cmluZyBiYXNlOwotICAgIGlmIChTZXNzaW9uVHJhY2tl
cjo6Z2V0SWRlbnRpZmllckJhc2UoKS5pc051bGwoKSkKLSAgICAgICAgYmFzZSA9IFtbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07Ci0gICAgZWxzZQotICAgICAgICBiYXNl
ID0gU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCk7Ci0KLSAgICBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklELCBiYXNl
ICsgJy4nICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSk7Ci0jaWYgVVNF
KE5FVFdPUktfU0VTU0lPTikKLSAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihzZXNzaW9u
SUQsIE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLm5ldHdvcmtTZXNz
aW9uUGFyYW1ldGVycykpKTsKLSNlbmRpZgotfQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKQEAgLTc4LDkgKzU4LDE0IEBAIHZvaWQgV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2UKICAgICBlbHNlCiAgICAgICAgIGJhc2UgPSBTZXNz
aW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKTsKIAotICAgIFNhbmRib3hFeHRlbnNpb246
OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9u
SGFuZGxlKTsKKyAgICBib29sIHJlc3VsdCA9IFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJt
YW5lbnRseShwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID0gIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgp
KTsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiB1aVByb2Nlc3NDb29r
aWVTdG9yYWdlID0gY29va2llU3RvcmFnZUZyb21JZGVudGlmeWluZ0RhdGEocGFyYW1ldGVycy51
aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllcik7CisgICAgUmV0YWluUHRyPENGSFRUUENv
b2tpZVN0b3JhZ2VSZWY+IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2U7CisgICAgaWYgKCFzZXNzaW9u
SUQuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgdWlQcm9jZXNzQ29va2llU3RvcmFnZSA9IGNvb2tp
ZVN0b3JhZ2VGcm9tSWRlbnRpZnlpbmdEYXRhKHBhcmFtZXRlcnMudWlQcm9jZXNzQ29va2llU3Rv
cmFnZUlkZW50aWZpZXIpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKHBhcmFtZXRlcnMudWlQ
cm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIuaXNFbXB0eSgpKTsKIAogICAgIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZW5zdXJlU2Vzc2lvbihzZXNzaW9uSUQsIGJhc2UgKyAnLicgKyBTdHJp
bmc6Om51bWJlcihzZXNzaW9uSUQuc2Vzc2lvbklEKCkpLCBXVEZNb3ZlKHVpUHJvY2Vzc0Nvb2tp
ZVN0b3JhZ2UpKTsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MywyNCArNDMsMTggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQordm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJz
aXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiB7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5zZXNzaW9uSUQ7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBB
U1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwogCiAgICAgaWYgKE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHNl
c3Npb25JRCwgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSk7CisgICAgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVTZXNzaW9uKHNlc3Npb25JRCwgU3RyaW5nOjpudW1i
ZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSk7CiAgICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Np
b24oc2Vzc2lvbklELCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5u
ZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMmJikKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50Ci19Ci0KIFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQoV2ViRnJhbWUqIGZyYW1l
KQogICAgIDogRnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFtZS0+Y29yZUZyYW1lKCkpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2
aXNpb24gMjIzOTQwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw2ICsxMjEsNyBAQAogI2luY2x1ZGUgIldlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVudC5oIgog
I2luY2x1ZGUgIldlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmgiCisjaW5jbHVkZSAiV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQXJjaGl2ZVJlc291cmNlLmg+CkBAIC0yNzMwLDcgKzI3MzEsNyBAQCB2b2lk
IFdlYlBhZ2U6OnNldExheWVySG9zdGluZ01vZGUoTGF5ZXJICiB2b2lkIFdlYlBhZ2U6OnNldFNl
c3Npb25JRChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgaWYgKHNlc3Npb25JRC5p
c0VwaGVtZXJhbCgpKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmFkZFdlYnNpdGVEYXRhU3RvcmUoe3sgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0s
IHsgc2Vzc2lvbklELCB7IH0sIHsgfSwgeyB9fX0pOwogICAgIG1fcGFnZS0+c2V0U2Vzc2lvbklE
KHNlc3Npb25JRCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE3LTEwLTI1ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWVyZ2UgTmV0d29ya1Byb2Nlc3M6
OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24gYW5kIE5ldHdvcmtQcm9jZXNzOjpBZGRXZWJz
aXRlRGF0YVN0b3JlIGludG8gb25lIG1lc3NhZ2UgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NzUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAoV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5z
dXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisKIDIwMTctMTAtMjQgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRW5hYmxl
IFdlYktpdCBsb2dnaW5nIGNvbmZpZ3VyYXRpb24gYW5kIGRpc3BsYXkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQkocmV2aXNpb24gMjIzOTQwKQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgW1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjplbnN1cmVTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklE
KCksIFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pOwogICAgIHJldHVy
biAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6
bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDIyMzk0MCkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2Vi
RnJhbWVOZXR3b3JraW4KICAgICB9IGVsc2UKICAgICAgICAgYmFzZSA9IGlkZW50aWZpZXJCYXNl
KCk7CiAKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgYmFzZSk7Cisg
ICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjps
ZWdhY3lQcml2YXRlU2Vzc2lvbklEKCksIGJhc2UpOwogCiAjZW5kaWYKICAgICByZXR1cm4gKk5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmxlZ2Fj
eVByaXZhdGVTZXNzaW9uSUQoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326818</attachid>
            <date>2017-11-13 15:47:10 -0800</date>
            <delta_ts>2017-11-13 15:48:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178751-20171113154709.patch</filename>
            <type>text/plain</type>
            <size>29799</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNDc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE3LTExLTEzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWVyZ2UgTmV0
d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24gYW5kIE5ldHdvcmtQcm9j
ZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlIGludG8gb25lIG1lc3NhZ2UgdHlwZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NzUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgIFRoZSBjcmVhdGlvbiBvZiBwcml2
YXRlIGJyb3dzaW5nIHNlc3Npb25zIGFuZCBwZXJzaXN0ZW50IGJyb3dzaW5nIHNlc3Npb25zIGhh
cyBldm9sdmVkIHRvIGJlIHRoZSBzYW1lIHRoaW5nCisgICAgICAgIHdpdGggZGlmZmVyZW5jZXMg
aW4gcGFyYW1ldGVycywgbGlrZSBubyBzYW5kYm94IGV4dGVuc2lvbnMgb3IgcGF0aHMgdG8gcGVy
c2lzdGVudCBzdG9yYWdlIGxvY2F0aW9ucyBmb3IgcHJpdmF0ZSBicm93c2luZy4KKyAgICAgICAg
VGhlc2Ugc2hvdWxkIGJlIHVuaXRlZCB0byBzaW1wbGlmeSBmdXR1cmUgZGV2ZWxvcG1lbnQgb2Yg
V2Vic2l0ZURhdGFTdG9yZSBjb25zdHJ1Y3Rpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
U291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3Vy
ZVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKTogRGVsZXRlZC4KKwogMjAxNy0xMS0wNyAgQnJpYW4g
QnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgQXV0b21hdGlvbjogaW5WaWV3
Q2VudGVyUG9pbnQgc2hvdWxkIG5vdCBpbmNsdWRlIHRvcENvbnRlbnRJbnNldCB3aGVuIGNvbXB1
dGVkIGluIHZpZXdwb3J0IGNvb3JkaW5hdGVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHJldmlzaW9u
IDIyNDc1NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDYgQEAgY2xhc3MgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uIHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbihQQUw6
OlNlc3Npb25JRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
QmFzZSA9IFN0cmluZygpKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBlbnN1cmVT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlID0gU3Ry
aW5nKCkpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRlc3Ryb3lTZXNzaW9uKFBB
TDo6U2Vzc2lvbklEKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBmb3JFYWNoKGNv
bnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mKT4mKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCShyZXZpc2lv
biAyMjQ3NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDEyICsxMDgsNiBA
QCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtTdG9yYWdlU2VzCiAgICAgcmV0dXJuICpk
ZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSkKLXsKLSAgICBBU1NFUlQoc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkpOwotICAgIGVuc3VyZVNlc3Npb24oc2Vzc2lvbklELCBpZGVudGlm
aWVyQmFzZSk7Ci19Ci0KIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSwg
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiYgY29va2llU3RvcmFnZSkKIHsKICAg
ICBhdXRvIGFkZFJlc3VsdCA9IGdsb2JhbFNlc3Npb25NYXAoKS5hZGQoc2Vzc2lvbklELCBudWxs
cHRyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25Tb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAJKHJldmlzaW9u
IDIyNDc1NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25Tb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksMTggKzc5LDEyIEBA
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXMKICAgICByZXR1cm4gKmRl
ZmF1bHRTZXNzaW9uKCk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJikKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBBU1NFUlQoc2Vzc2lvbklE
ICE9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogICAgIEFTU0VSVCghZ2xv
YmFsU2Vzc2lvbk1hcCgpLmNvbnRhaW5zKHNlc3Npb25JRCkpOwogICAgIGdsb2JhbFNlc3Npb25N
YXAoKS5hZGQoc2Vzc2lvbklELCBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bj4oc2Vzc2lvbklELCBzdGQ6Om1ha2VfdW5pcXVlPFNvdXBOZXR3b3JrU2Vzc2lvbj4oc2Vzc2lv
bklEKSkpOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZW5zdXJlU2Vzc2lvbihQ
QUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50
Ci19Ci0KIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNz
aW9uKCkKIHsKICAgICBkZWZhdWx0U2Vzc2lvbigpID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3Jr
U3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIHN0ZDo6
bWFrZV91bmlxdWU8U291cE5ldHdvcmtTZXNzaW9uPigpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMjQ3OTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDQxIEBACisyMDE3LTExLTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWVyZ2UgTmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24gYW5kIE5ldHdvcmtQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3Jl
IGludG8gb25lIG1lc3NhZ2UgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc4NzUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29u
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMv
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdv
cmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6bGVn
YWN5UHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBTaGFyZWQvV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0QW55UGFnZUdyb3VwTWln
aHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnBhZ2VBZGRlZFRvUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vi
c2l0ZURhdGFTdG9yZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNldFNlc3Npb25JRCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE3LTExLTEzICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRk
IGxvZ3MgdG8gZGVidWcgY29udGVudCBleHRlbnNpb24gdGVzdCBmYWlsdXJlcwpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIyNDc1NykKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6c2V0QwogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnN1
cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih7IHsgfSwgeyB9LCB7IH0s
IHsgfSwgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3Rh
LCB7IH0sIHsgUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7
IH0sIEFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXMgfX0pOworICAgIE5ldHdvcmtQcm9jZXNzOjpz
aW5nbGV0b24oKS5hZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
OjpsZWdhY3lQcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIyNDc1NykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNyArMjM4LDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcgogCiAgICAgLy8gRklY
TUU6IGluc3RlYWQgb2YgaGFuZGxpbmcgdGhpcyBoZXJlLCBhIG1lc3NhZ2Ugc2hvdWxkIGJlIHNl
bnQgbGF0ZXIgKHNjYWxlcyB0byBtdWx0aXBsZSBzZXNzaW9ucykKICAgICBpZiAocGFyYW1ldGVy
cy5wcml2YXRlQnJvd3NpbmdFbmFibGVkKQotICAgICAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4
dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih7IHsgfSwgeyB9LCB7IH0sIHsgfSwgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1b3RhLCB7IH0sIHsg
UEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7IH0sICBBbGxv
d3NDZWxsdWxhckFjY2Vzczo6WWVzIH19KTsKKyAgICAgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzOjpsZWdhY3lQcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoKSk7CiAKICAgICBpZiAocGFyYW1l
dGVycy5zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24pCiAgICAgICAgIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwpAQCAtMjk3LDExICsyOTcs
NiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckNhY2hlZENyZWRlbnRpCiAjZW5kaWYKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCi17Ci0gICAgUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV1RGTW92ZShwYXJhbWV0
ZXJzKSk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIFJlbW90ZU5ldHdv
cmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXVEZNb3ZlKHBhcmFt
ZXRlcnMpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgJKHJldmlzaW9uIDIyNDc1NykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJik7CiAKLSAgICB2b2lk
IGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMm
Jik7CisgICAgdm9pZCBhZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzJiYpOwogCiAgICAgdm9pZCBncmFudFNhbmRib3hFeHRlbnNpb25zVG9TdG9yYWdlUHJvY2Vz
c0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIEZ1bmN0aW9uPHZvaWQg
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCkBAIC0xODcsNyArMTg3LDYgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTmV0d29ya1Byb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CiAg
ICAgdm9pZCBpbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmJik7CiAgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cygpOwotICAgIHZvaWQgYWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVycyYmKTsKICAgICB2b2lkIGRlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKIAogICAg
IHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgdWludDY0X3QgY2Fs
bGJhY2tJRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyNDc1NykKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVn
YWN5UmVjZWl2ZQogCiAgICAgQ2xlYXJDYWNoZWRDcmVkZW50aWFscygpCiAKLSAgICBFbnN1cmVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzIHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKQogICAgIEFkZFdlYnNpdGVEYXRhU3Rv
cmUoc3RydWN0IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgd2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMpOwogICAgIERlc3Ryb3lTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNpb24gMjI0NzU3KQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw3ICs0Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dCgpOwogCiAgICAgLy8gRklYTUU6IFJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBj
b2RlIGFuZCB1c2UgU2Vzc2lvblRyYWNrZXIuCi0gICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKICAgICBzdGF0
aWMgdm9pZCBlbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyYmKTsKIAogICAgIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdDsgfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0JKHJldmlz
aW9uIDIyNDc1NykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5l
dHdvcmtpbmdDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC04MSwzMiArODEsNiBAQCBSZXNv
dXJjZUVycm9yIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpiCiAgICAgcmV0dXJuIFdlYktpdDo6
YmxvY2tlZEVycm9yKHJlcXVlc3QpOwogfQogCi12b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKLXsKLSAgICBhdXRvIHNlc3Npb25JRCA9IHBhcmFtZXRlcnMubmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRDsKLSAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBo
ZW1lcmFsKCkpOwotCi0gICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Np
b24oc2Vzc2lvbklEKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU3RyaW5nIGJhc2U7Ci0gICAg
aWYgKFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpKQotICAgICAg
ICBiYXNlID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXTsKLSAgICBl
bHNlCi0gICAgICAgIGJhc2UgPSBTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKTsK
LQotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihzZXNzaW9uSUQsIGJhc2UgKyAnLicgKyBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQuc2Vzc2lv
bklEKCkpKTsKLQotICAgIGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBjb29raWUgOiBw
YXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzKQotICAgICAgICBzZXNzaW9uLT5zZXRDb29raWUoY29v
a2llKTsKLQotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgcGFyYW1ldGVycy5uZXR3b3Jr
U2Vzc2lvblBhcmFtZXRlcnMubGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyID0gTmV0d29ya1By
b2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
PigpOwotICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1Nl
c3Npb246OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
KSkpOwotI2VuZGlmCi19Ci0KIHZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVdl
YnNpdGVEYXRhU3RvcmVTZXNzaW9uKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycykKIHsKICAgICBhdXRvIHNlc3Npb25JRCA9IHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLnNlc3Npb25JRDsKQEAgLTExOSw3ICs5MywxMCBAQCB2b2lkIFJlbW90ZU5ldHdv
cmtpbmdDb250ZXh0OjplbnN1cmVXZWJzCiAgICAgZWxzZQogICAgICAgICBiYXNlID0gU2Vzc2lv
blRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCk7CiAKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
b25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhh
bmRsZSk7CisgICAgaWYgKCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgeworICAgICAgICBib29s
IHJlc3VsdCA9IFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJz
LmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdCk7CisgICAgfQogCiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0
b3JhZ2VSZWY+IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2U7CiAgICAgaWYgKCFwYXJhbWV0ZXJzLnVp
UHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyLmlzRW1wdHkoKSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVO
ZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCShyZXZpc2lvbiAyMjQ3NTcpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDgsMjMgKzQ4LDE2IEBAIGJvb2wgUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQ6OmlzVmFsaWQoKSAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBSZW1vdGVOZXR3
b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCit2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJzLm5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQ7Ci0gICAgQVNTRVJUKHNlc3Npb25JRC5pc0Vw
aGVtZXJhbCgpKTsKLQogICAgIGlmIChOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNz
aW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQsIFN0cmluZzo6bnVt
YmVyKHNlc3Npb25JRC5zZXNzaW9uSUQoKSkpOworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZW5zdXJlU2Vzc2lvbihzZXNzaW9uSUQsIFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRC5zZXNzaW9u
SUQoKSkpOwogICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29y
a1Nlc3Npb246OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0
ZXJzKSkpOwogfQogCi12b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJzaXRl
RGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKQotewotICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQuCi19Ci0KIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgUmVtb3RlTmV0
d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKICAgICBpZiAoYXV0byBz
ZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25J
RCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyMjQ3NTcpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgogCiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9y
ZS5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNzcsNSArNzgsOSBAQCBib29sIFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUoCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1dl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOjpsZWdh
Y3lQcml2YXRlU2Vzc2lvblBhcmFtZXRlcnMoKQoreworICAgIHJldHVybiB7IHsgfSwgeyB9LCB7
IH0sIHsgfSwgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZVBlck9yaWdpblF1
b3RhLCB7IH0sIHsgUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9
LCB7IH0sIHsgfX19OworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaAkocmV2aXNp
b24gMjI0NzU3KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBzdHJ1Y3QgV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMgewogICAgIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKCkgPSBk
ZWZhdWx0OwogICAgIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzJiYpID0gZGVmYXVsdDsKICAgICB+V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMo
KTsKKyAgICBzdGF0aWMgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgbGVnYWN5UHJpdmF0ZVNl
c3Npb25QYXJhbWV0ZXJzKCk7CiAgICAgCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikg
Y29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIFdlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyMjQ3NTcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzNCwxMyArNjM0LDEzIEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEFueVBhZ2VHcm91cE1pZ2gKIHsKICAgICBpZiAobmV0
d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLSAg
ICAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHsgeyB9LCB7IH0sIHsgfSwgeyB9LCBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlUGVyT3JpZ2luUXVvdGEsIHsgfSwgeyBQ
QUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpLCB7IH0sIHsgfSwgQWxsb3dz
Q2VsbHVsYXJBY2Nlc3M6OlllcyB9fSksIDApOworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3Mo
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmxlZ2FjeVByaXZhdGVTZXNzaW9uUGFyYW1ldGVycygp
KSwgMCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6
bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSwgMCk7CiAgICAgfQogCiAgICAgaWYgKHByaXZhdGVC
cm93c2luZ0VuYWJsZWQpCi0gICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVn
YWN5UHJpdmF0ZVNlc3Npb25JRCgpKSk7CisgICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNz
YWdlczo6V2ViUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVyczo6bGVnYWN5UHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKCkpKTsKICAgICBlbHNlCiAg
ICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVzdHJveVNl
c3Npb24oUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSkpOwogfQpAQCAt
ODMxLDcgKzgzMSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQcm8K
ICNlbmRpZgogCiAgICAgaWYgKFdlYlByZWZlcmVuY2VzOjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0
ZUJyb3dzaW5nKCkpCi0gICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6
RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0
ZVNlc3Npb25JRCgpKSwgMCk7CisgICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczo6bGVn
YWN5UHJpdmF0ZVNlc3Npb25QYXJhbWV0ZXJzKCkpLCAwKTsKIAogICAgIGlmIChtX2F1dG9tYXRp
b25TZXNzaW9uKQogICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVu
c3VyZUF1dG9tYXRpb25TZXNzaW9uUHJveHkobV9hdXRvbWF0aW9uU2Vzc2lvbi0+c2Vzc2lvbklk
ZW50aWZpZXIoKSksIDApOwpAQCAtMTAyMSwxMSArMTAyMSw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnBhZ2VBZGRlZFRvUHJvY2VzcygKIAogICAgIGF1dG8gc2Vzc2lvbklEID0gcGFnZS5zZXNz
aW9uSUQoKTsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKLSAgICAgICAgLy8g
RklYTUU6IE1lcmdlIE5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
IGFuZCBOZXR3b3JrUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZSBpbnRvIG9uZSBtZXNzYWdl
IHR5cGUuCi0gICAgICAgIC8vIFRoZXkgZG8gYmFzaWNhbGx5IHRoZSBzYW1lIHRoaW5nLgogICAg
ICAgICBBU1NFUlQocGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygpLm5ldHdvcmtT
ZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQgPT0gc2Vzc2lvbklEKTsKLSAgICAgICAgc2VuZFRv
TmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMoKSkpOwot
ICAgICAgICBwYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCksIDApOworICAgICAgICBzZW5kVG9OZXR3
b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3Rv
cmUocGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygpKSk7CisgICAgICAgIHBhZ2Uu
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkFkZFdlYnNpdGVEYXRhU3RvcmUo
e3sgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgc2Vzc2lvbklELCB7IH0sIHsgfSwgeyB9
fX0pLCAwKTsKICAgICB9IGVsc2UgaWYgKHNlc3Npb25JRCAhPSBQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpKSB7CiAgICAgICAgIHNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZShwYWdlLndlYnNpdGVEYXRh
U3RvcmUoKS5wYXJhbWV0ZXJzKCkpKTsKICAgICAgICAgcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZShwYWdlLndlYnNpdGVEYXRhU3Rv
cmUoKS5wYXJhbWV0ZXJzKCkpLCAwKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIyNDc1NykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE1LDExICs1MTUsNiBAQCB2b2lk
IFdlYlByb2Nlc3M6OmZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDCiAgICAgbV9mdWxsS2V5Ym9hcmRB
Y2Nlc3NFbmFibGVkID0gZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZDsKIH0KIAotdm9pZCBXZWJQ
cm9jZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkKLXsKLSAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKHsgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyBzZXNzaW9uSUQs
IHsgfSwgeyB9LCBBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVzIH19KTsKLX0KLQogdm9pZCBXZWJQ
cm9jZXNzOjphZGRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKIHsKICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVXZWJz
aXRlRGF0YVN0b3JlU2Vzc2lvbihXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjI0NzU3KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3
OCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbCh1aW50MzJfdCk7CiAKLSAg
ICB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogICAg
IHZvaWQgZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkluTmV0d29ya1Byb2Nlc3Mo
KTsKICAgICB2b2lkIGFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMmJik7CiAgICAgdm9pZCBkZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMjI0NzU3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAgbWVzc2FnZXMgLT4gV2Vi
UHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBDbGVhckNhY2hlZENyZWRlbnRpYWxzKCkK
IAotICAgIEVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKQogICAgIEFkZFdlYnNpdGVEYXRhU3RvcmUoc3RydWN0IFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMgd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpOwogICAgIERlc3Ryb3lT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIApJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCShyZXZpc2lvbiAyMjQ3NTcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjEsNyArMzIx
LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRQogewogICAgIGlm
IChlbmFibGVkKSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUxlZ2Fj
eVByaXZhdGVCcm93c2luZ1Nlc3Npb25Jbk5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgICAgIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oeyB7IH0s
IHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRl
U2Vzc2lvbklEKCksIHsgfSwgeyB9LCBBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVzIH19KTsKKyAg
ICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNl
c3Npb24oeyB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IFBBTDo6U2Vzc2lvbklEOjps
ZWdhY3lQcml2YXRlU2Vzc2lvbklEKCksIHsgfSwgeyB9LCBBbGxvd3NDZWxsdWxhckFjY2Vzczo6
WWVzIH19KTsKICAgICB9IGVsc2UKICAgICAgICAgU2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNz
aW9uKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNpb24gMjI0
NzU3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDYgQEAg
cHVibGljOgogICAgIH0KIAogICAgIC8vIEZJWE1FOiByZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMg
Y29kZSBhbmQgdXNlIFNlc3Npb25UcmFja2VyCi0gICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKICAgICBzdGF0
aWMgdm9pZCBlbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyYmKTsKIAogICAgIHN0YXRpYyB2b2lkIHNldENvb2tpZUFjY2VwdFBvbGljeUZvckFs
bENvbnRleHRzKEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQkocmV2aXNpb24gMjI0NzU3KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NSwyNiArNDUsNiBAQAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotICAgIAotdm9pZCBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKLXsKLSAgICBhdXRvIHNlc3Npb25JRCA9
IHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNlc3Npb25JRDsKLSAgICBBU1NF
UlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwotCi0gICAgaWYgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgU3RyaW5nIGJhc2U7Ci0gICAgaWYgKFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlm
aWVyQmFzZSgpLmlzTnVsbCgpKQotICAgICAgICBiYXNlID0gW1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBidW5kbGVJZGVudGlmaWVyXTsKLSAgICBlbHNlCi0gICAgICAgIGJhc2UgPSBTZXNzaW9uVHJh
Y2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKTsKLQotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQsIGJhc2UgKyAnLicgKyBTdHJp
bmc6Om51bWJlcihzZXNzaW9uSUQuc2Vzc2lvbklEKCkpKTsKLSNpZiBVU0UoTkVUV09SS19TRVNT
SU9OKQotICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1Nl
c3Npb246OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
KSkpOwotI2VuZGlmCi19CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJl
V2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzKQogewpAQCAtNzgsOSArNTgsMTYgQEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjplbnN1cmVXZQogICAgIGVsc2UKICAgICAgICAgYmFzZSA9IFNlc3Npb25UcmFja2VyOjpn
ZXRJZGVudGlmaWVyQmFzZSgpOwogCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1h
bmVudGx5KHBhcmFtZXRlcnMuY29va2llU3RvcmFnZVBhdGhFeHRlbnNpb25IYW5kbGUpOworICAg
IGlmICghc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBT
YW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5jb29raWVTdG9y
YWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQpOworICAgIH0KIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiB1
aVByb2Nlc3NDb29raWVTdG9yYWdlID0gY29va2llU3RvcmFnZUZyb21JZGVudGlmeWluZ0RhdGEo
cGFyYW1ldGVycy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllcik7CisgICAgUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2U7CisgICAg
aWYgKCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgdWlQcm9jZXNzQ29va2llU3Rv
cmFnZSA9IGNvb2tpZVN0b3JhZ2VGcm9tSWRlbnRpZnlpbmdEYXRhKHBhcmFtZXRlcnMudWlQcm9j
ZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKHBh
cmFtZXRlcnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIuaXNFbXB0eSgpKTsKIAog
ICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZW5zdXJlU2Vzc2lvbihzZXNzaW9uSUQsIGJhc2Ug
KyAnLicgKyBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQuc2Vzc2lvbklEKCkpLCBXVEZNb3ZlKHVp
UHJvY2Vzc0Nvb2tpZVN0b3JhZ2UpKTsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDIyNDc1NykKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MywyNCArNDMsMTggQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQordm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OjplbnN1cmVXZWJzaXRlRGF0YVN0b3JlU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBwYXJhbWV0ZXJzLm5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycy5zZXNzaW9uSUQ7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKLSAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwogCiAgICAgaWYgKE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKHNlc3Npb25JRCwgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgp
KSk7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjplbnN1cmVTZXNzaW9uKHNlc3Npb25JRCwg
U3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSk7CiAgICAgU2Vzc2lvblRyYWNr
ZXI6OnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKFdURk1vdmUo
cGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpKSk7CiB9CiAKLXZvaWQgV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURhdGFTdG9yZVNlc3Npb24oV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMmJikKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50Ci19Ci0K
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQoV2Vi
RnJhbWUqIGZyYW1lKQogICAgIDogRnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFtZS0+Y29yZUZy
YW1lKCkpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAkocmV2aXNpb24gMjI0NzU3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw2ICsxMjEsNyBAQAogI2lu
Y2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYlVzZXJNZWRp
YUNsaWVudC5oIgogI2luY2x1ZGUgIldlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmgiCisjaW5j
bHVkZSAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXJjaGl2ZVJlc291cmNlLmg+CkBAIC0yNzQwLDcgKzI3
NDEsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldExheWVySG9zdGluZ01vZGUoTGF5ZXJICiB2b2lkIFdl
YlBhZ2U6OnNldFNlc3Npb25JRChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgaWYg
KHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmFkZFdlYnNpdGVEYXRhU3RvcmUoe3sgfSwgeyB9LCB7IH0sIHsg
fSwgeyB9LCB7IH0sIHsgc2Vzc2lvbklELCB7IH0sIHsgfSwgeyB9fX0pOwogICAgIG1fcGFnZS0+
c2V0U2Vzc2lvbklEKHNlc3Npb25JRCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIyNDc5MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE3LTExLTEzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWVyZ2UgTmV0
d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24gYW5kIE5ldHdvcmtQcm9j
ZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlIGludG8gb25lIG1lc3NhZ2UgdHlwZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NzUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorCiAyMDE3LTExLTA4ICBLZWl0
aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFzeW5jIGl0ZXJh
dGlvbiBzaG91bGQgb25seSBmZXRjaCB0aGUgbmV4dCBtZXRob2Qgb25jZSBhbmQgYWRkIGZlYXR1
cmUgZmxhZwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZp
c2lvbiAyMjQ3NTcpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0
ZVNlc3Npb25JRCgpLCBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsK
KyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQ6
OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJ
ZGVudGlmaWVyXSk7CiAgICAgcmV0dXJuICpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjI0
NzU3KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbgogICAgIH0gZWxzZQogICAgICAg
ICBiYXNlID0gaWRlbnRpZmllckJhc2UoKTsKIAotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0
ZVNlc3Npb25JRCgpLCBiYXNlKTsKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmVuc3VyZVNl
c3Npb24oUEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgYmFzZSk7CiAK
ICNlbmRpZgogICAgIHJldHVybiAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lv
bihQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>