<?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>199557</bug_id>
          
          <creation_ts>2019-07-06 16:30:49 -0700</creation_ts>
          <short_desc>Fix thread safety issue in Database::scheduleTransactionCallback()</short_desc>
          <delta_ts>2019-07-08 11:39:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>199517</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1550677</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-06 16:30:49 -0700</bug_when>
    <thetext>Fix thread safety issue in Database::scheduleTransactionCallback():
Thread 17 Crashed:: WebCore: Database
0   com.apple.JavaScriptCore      	0x000000012f5a735e WTFCrash + 14 (Assertions.cpp:305)
1   com.apple.WebCore             	0x00000001183c23eb WTFCrashWithInfo(int, char const*, char const*, int) + 27
2   com.apple.WebCore             	0x0000000119b5d14c WebCore::ContainerNode::WeakValueType* WTF::WeakPtrImpl::get&lt;WebCore::ContainerNode&gt;() + 140 (WeakPtr.h:65)
3   com.apple.WebCore             	0x0000000119b5cf7a WTF::WeakPtrFactory&lt;WebCore::ContainerNode&gt;::createWeakPtr(WebCore::ContainerNode&amp;) const + 138 (WeakPtr.h:142)
4   com.apple.WebCore             	0x0000000119b530ff WTF::WeakPtr&lt;WebCore::Document&gt; WTF::makeWeakPtr&lt;WebCore::Document&gt;(WebCore::Document&amp;) + 63 (WeakPtr.h:212)
5   com.apple.WebCore             	0x000000011a91e1a0 WebCore::Document::postTask(WebCore::ScriptExecutionContext::Task&amp;&amp;) + 32 (Document.cpp:6121)
6   com.apple.WebCore             	0x000000011a027bc0 WebCore::Database::scheduleTransactionCallback(WebCore::SQLTransaction*) + 128 (Database.cpp:711)
7   com.apple.WebCore             	0x000000011a0729a7 WebCore::SQLTransaction::scheduleCallback(void (WebCore::SQLTransaction::*)()) + 151 (SQLTransaction.cpp:207)
8   com.apple.WebCore             	0x000000011a07338d WebCore::SQLTransaction::openTransactionAndPreflight() + 1981 (SQLTransaction.cpp:284)
9   com.apple.WebCore             	0x000000011a075219 WebCore::SQLTransactionBackend::openTransactionAndPreflight() + 25 (SQLTransactionBackend.cpp:486)
10  com.apple.WebCore             	0x000000011a070f72 WebCore::SQLTransactionStateMachine&lt;WebCore::SQLTransactionBackend&gt;::runStateMachine() + 418 (SQLTransactionStateMachine.h:105)
11  com.apple.WebCore             	0x000000011a070c07 WebCore::SQLTransaction::performNextStep() + 55 (SQLTransaction.cpp:107)
12  com.apple.WebCore             	0x000000011a040bfb WebCore::DatabaseTransactionTask::doPerformTask() + 43 (DatabaseTask.cpp:160)
13  com.apple.WebCore             	0x000000011a0406f0 WebCore::DatabaseTask::performTask() + 176 (DatabaseTask.cpp:78)
14  com.apple.WebCore             	0x000000011a0413d2 WebCore::DatabaseThread::databaseThread() + 194 (DatabaseThread.cpp:102)
15  com.apple.WebCore             	0x000000011a0557c8 WebCore::DatabaseThread::start()::$_1::operator()() const + 24 (DatabaseThread.cpp:68)
16  com.apple.WebCore             	0x000000011a055789 WTF::Detail::CallableWrapper&lt;WebCore::DatabaseThread::start()::$_1, void&gt;::call() + 25 (Function.h:52)
17  com.apple.JavaScriptCore      	0x000000012f5d1d6a WTF::Function&lt;void ()&gt;::operator()() const + 138 (Function.h:79)
18  com.apple.JavaScriptCore      	0x000000012f6692f0 WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) + 416 (Threading.cpp:149)
19  com.apple.JavaScriptCore      	0x000000012f671725 WTF::wtfThreadEntryPoint(void*) + 21 (ThreadingPOSIX.cpp:200)
20  libsystem_pthread.dylib       	0x00007fff6dd36daa _pthread_start + 125
21  libsystem_pthread.dylib       	0x00007fff6dd336af thread_start + 15

It calls makeWeakPtr() on a Document from a background database thread, which is not safe because the Document is a main thread object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550679</commentid>
    <comment_count>1</comment_count>
      <attachid>373587</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-06 16:35:27 -0700</bug_when>
    <thetext>Created attachment 373587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550680</commentid>
    <comment_count>2</comment_count>
      <attachid>373588</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-06 17:05:04 -0700</bug_when>
    <thetext>Created attachment 373588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550903</commentid>
    <comment_count>3</comment_count>
      <attachid>373588</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-08 11:38:38 -0700</bug_when>
    <thetext>Comment on attachment 373588
Patch

Clearing flags on attachment: 373588

Committed r247219: &lt;https://trac.webkit.org/changeset/247219&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550904</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-08 11:38:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373587</attachid>
            <date>2019-07-06 16:35:27 -0700</date>
            <delta_ts>2019-07-06 17:05:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199557-20190706163523.patch</filename>
            <type>text/plain</type>
            <size>27603</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODA3MGViNTI5NWYzZWNm
ODFhYzI2YjhmYWQ0YzgyMDM0NjdlZmFjZi4uNzEwODQ2OTZlMDhlNGY1ZWJlYmM4YTJjOGMwYzUx
Mjc3ZmQ5NWVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE5LTA3LTA2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRocmVhZCBzYWZldHkg
aXNzdWUgaW4gRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25DYWxsYmFjaygpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk1NTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJIGFtIHdvcmtpbmcgb24g
YWRkaW5nIHRocmVhZGluZyBhc3NlcnRpb25zIHRvIFdlYWtQdHIgYW5kIGZvdW5kIGEgcG90ZW50
aWFsbHkKKyAgICAgICAgdW5zYWZlIGNhbGwgdG8gbWFrZVdlYWtQdHIoKSBvbiBhIERvY3VtZW50
IGZyb20gRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25DYWxsYmFjaygpCisgICAgICAgIHZp
YSBEb2N1bWVudDo6cG9zdFRhc2soKSwgb24gYSBiYWNrZ3JvdW5kIGRhdGFiYXNlIHRocmVhZC4g
RG9jdW1lbnQgaXMgYSBtYWluIHRocmVhZAorICAgICAgICBvYmplY3QgYW5kIHdlIHNob3VsZCB0
aGVyZWZvcmUgbm90IGJlIGludGVyYWN0aW5nIHdpdGggaXQgZnJvbSBhIGJhY2tncm91bmQgdGhy
ZWFkLgorCisgICAgICAgIEZvciBjbGFyaXR5LCB0aGlzIHBhdGNoIGFsc28gc3dpdGNoZXMgdGhl
IHdlYmRhdGFiYXNlIGNvZGUgdG8gdXNlIERvY3VtZW50IGluc3RlYWQKKyAgICAgICAgb2YgU2Ny
aXB0RXhlY3V0aW9uIGFzIHR5cGUgc2luY2UgaXQgaXMgb25seSBleHBvc2VkIHRvIFdpbmRvdyBj
b250ZXh0cywgbm90IHdvcmtlcnMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpEYXRhYmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6fkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlOjpydW5UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6c2No
ZWR1bGVUcmFuc2FjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjps
b2dFcnJvck1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNlY3VyaXR5T3Jp
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpkaWRFeGNlZWRRdW90YSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2U6OmRvY3VtZW50KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUNvbnRleHQ6OkRhdGFi
YXNlQ29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRl
eHQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmRhdGFiYXNlQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpsb2dPcGVuRGF0YWJhc2VFcnJvcik6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFzZUJhY2tlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VNYW5hZ2VyOjp0cnlUb09wZW5EYXRhYmFzZUJhY2tlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VNYW5hZ2VyOjpoYXNPcGVuRGF0YWJhc2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlTWFuYWdlcjo6c3RvcERhdGFiYXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZU1hbmFnZXI6OmxvZ0Vycm9yTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxTdGF0ZW1lbnQ6OlNRTFN0YXRl
bWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6U1FMVHJhbnNhY3Rpb24pOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkRhdGFiYXNlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZXhlY3V0ZVNRTCk6CisKIDIwMTkt
MDctMDUgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0
IGNoYW5nZSB0byBibG9jayBwbGF5YmFjayB3aGVuIHByb2Nlc3MgaXMgb3N0ZW5zaWJseSAic3Vz
cGVuZGVkIi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHAKaW5kZXggNTJiMGEwOGZjM2VlNjU4NzkxZTYxZmFjOWQxZjg4ZWEwNTVlZGM4OS4uMDIx
NDVkMGNjMmU4YzllYWRiMGM4ODI5NDFiODU5ZmMwYWU4MDUyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTE5MywxNSArMTkzLDE1
IEBAIHN0YXRpYyBpbmxpbmUgRGF0YWJhc2VHVUlEIGd1aWRGb3JPcmlnaW5BbmROYW1lKGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpCiB9CiAKIERhdGFiYXNlOjpEYXRhYmFzZShEYXRh
YmFzZUNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBl
eHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcg
bG9uZyBlc3RpbWF0ZWRTaXplKQotICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KCpjb250
ZXh0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1fY29udGV4dFRocmVhZFNlY3Vy
aXR5T3JpZ2luKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+aXNv
bGF0ZWRDb3B5KCkpCi0gICAgLCBtX2RhdGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW4obV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5pc29sYXRlZENvcHkoKSkKKyAg
ICA6IG1fZG9jdW1lbnQoKmNvbnRleHQuZG9jdW1lbnQoKSkKKyAgICAsIG1fY29udGV4dFRocmVh
ZFNlY3VyaXR5T3JpZ2luKG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuaXNvbGF0ZWRDb3B5
KCkpCisgICAgLCBtX2RhdGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW4obV9kb2N1bWVudC0+c2Vj
dXJpdHlPcmlnaW4oKS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fZGF0YWJhc2VDb250ZXh0KGNv
bnRleHQpCiAgICAgLCBtX25hbWUoKG5hbWUuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogbmFt
ZSkuaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX2V4cGVjdGVkVmVyc2lvbihleHBlY3RlZFZlcnNp
b24uaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX2Rpc3BsYXlOYW1lKGRpc3BsYXlOYW1lLmlzb2xh
dGVkQ29weSgpKQogICAgICwgbV9lc3RpbWF0ZWRTaXplKGVzdGltYXRlZFNpemUpCi0gICAgLCBt
X2ZpbGVuYW1lKERhdGFiYXNlTWFuYWdlcjo6c2luZ2xldG9uKCkuZnVsbFBhdGhGb3JEYXRhYmFz
ZSgqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBtX25hbWUpKQor
ICAgICwgbV9maWxlbmFtZShEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpLmZ1bGxQYXRoRm9y
RGF0YWJhc2UobV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgbV9uYW1lKSkKICAgICAsIG1f
ZGF0YWJhc2VBdXRob3JpemVyKERhdGFiYXNlQXV0aG9yaXplcjo6Y3JlYXRlKHVucXVhbGlmaWVk
SW5mb1RhYmxlTmFtZSkpCiB7CiAgICAgewpAQCAtMjI2LDE0ICsyMjYsOSBAQCBEYXRhYmFzZVRo
cmVhZCYgRGF0YWJhc2U6OmRhdGFiYXNlVGhyZWFkKCkKIAogRGF0YWJhc2U6On5EYXRhYmFzZSgp
CiB7Ci0gICAgLy8gVGhlIHJlZmVyZW5jZSB0byB0aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBu
ZWVkcyB0byBiZSBjbGVhcmVkIG9uIHRoZSBKYXZhU2NyaXB0IHRocmVhZC4gIElmIHdlJ3JlIG9u
IHRoYXQgdGhyZWFkIGFscmVhZHksIHdlIGNhbiBqdXN0IGxldCB0aGUgUmVmUHRyJ3MgZGVzdHJ1
Y3Rpb24gZG8gdGhlIGRlcmVmZmluZy4KLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+aXNDb250ZXh0VGhyZWFkKCkpIHsKLSAgICAgICAgYXV0byBwYXNzZWRDb250ZXh0ID0gV1RG
TW92ZShtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgICAgICBhdXRvJiBjb250ZXh0UmVm
ID0gcGFzc2VkQ29udGV4dC5nZXQoKTsKLSAgICAgICAgY29udGV4dFJlZi5wb3N0VGFzayh7U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51cFRhc2ssIFtwYXNzZWRDb250ZXh0ID0g
V1RGTW92ZShwYXNzZWRDb250ZXh0KSwgZGF0YWJhc2VDb250ZXh0ID0gV1RGTW92ZShtX2RhdGFi
YXNlQ29udGV4dCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAg
ICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsICZjb250ZXh0ID09IHBhc3NlZENvbnRleHQucHRy
KCkpOwotICAgICAgICB9fSk7Ci0gICAgfQorICAgIC8vIFRoZSByZWZlcmVuY2UgdG8gdGhlIERv
Y3VtZW50IG5lZWRzIHRvIGJlIGNsZWFyZWQgb24gdGhlIEphdmFTY3JpcHQgdGhyZWFkLiBJZiB3
ZSdyZSBvbiB0aGF0IHRocmVhZCBhbHJlYWR5LCB3ZSBjYW4ganVzdCBsZXQgdGhlIFJlZlB0cidz
IGRlc3RydWN0aW9uIGRvIHRoZSBkZXJlZmZpbmcuCisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkK
KyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZG9jdW1lbnQgPSBXVEZNb3ZlKG1fZG9jdW1lbnQp
LCBkYXRhYmFzZUNvbnRleHQgPSBXVEZNb3ZlKG1fZGF0YWJhc2VDb250ZXh0KV0geyB9KTsKIAog
ICAgIC8vIFNRTGl0ZSBpcyAibXVsdGktdGhyZWFkIHNhZmUiLCBidXQgZWFjaCBkYXRhYmFzZSBo
YW5kbGUgY2FuIG9ubHkgYmUgdXNlZAogICAgIC8vIG9uIGEgc2luZ2xlIHRocmVhZCBhdCBhIHRp
bWUuCkBAIC02OTIsOSArNjg3LDggQEAgdm9pZCBEYXRhYmFzZTo6cnVuVHJhbnNhY3Rpb24oUmVm
UHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+JiYgY2FsbGJhY2ssIFJlZlB0cjwKICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKICAgICBpZiAoIW1f
aXNUcmFuc2FjdGlvblF1ZXVlRW5hYmxlZCkgewogICAgICAgICBpZiAoZXJyb3JDYWxsYmFjaykg
ewotICAgICAgICAgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFja1Byb3RlY3RvciA9IFdURk1vdmUoZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgICAgICBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFtlcnJvckNhbGxiYWNrUHJvdGVjdG9y
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAgICAgICAgICAgIGVycm9yQ2FsbGJh
Y2tQcm90ZWN0b3ItPmhhbmRsZUV2ZW50KFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OlVOS05P
V05fRVJSLCAiZGF0YWJhc2UgaGFzIGJlZW4gY2xvc2VkIikpOworICAgICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbZXJyb3JDYWxsYmFjayA9IG1ha2VSZWYoKmVycm9yQ2FsbGJhY2spXSgpIHsK
KyAgICAgICAgICAgICAgICBlcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChTUUxFcnJvcjo6Y3Jl
YXRlKFNRTEVycm9yOjpVTktOT1dOX0VSUiwgImRhdGFiYXNlIGhhcyBiZWVuIGNsb3NlZCIpKTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKQEAgLTcwNyw5ICs3
MDEsOCBAQCB2b2lkIERhdGFiYXNlOjpydW5UcmFuc2FjdGlvbihSZWZQdHI8U1FMVHJhbnNhY3Rp
b25DYWxsYmFjaz4mJiBjYWxsYmFjaywgUmVmUHRyPAogCiB2b2lkIERhdGFiYXNlOjpzY2hlZHVs
ZVRyYW5zYWN0aW9uQ2FsbGJhY2soU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogewotICAg
IFJlZlB0cjxTUUxUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb25Qcm90ZWN0b3IodHJhbnNhY3Rpb24p
OwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RyYW5zYWN0aW9uUHJv
dGVjdG9yXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgdHJhbnNhY3Rpb25Q
cm90ZWN0b3ItPnBlcmZvcm1QZW5kaW5nQ2FsbGJhY2soKTsKKyAgICBjYWxsT25NYWluVGhyZWFk
KFt0cmFuc2FjdGlvbiA9IG1ha2VSZWZQdHIodHJhbnNhY3Rpb24pXSB7CisgICAgICAgIHRyYW5z
YWN0aW9uLT5wZXJmb3JtUGVuZGluZ0NhbGxiYWNrKCk7CiAgICAgfSk7CiB9CiAKQEAgLTc1Nyw3
ICs3NTAsNyBAQCB2b2lkIERhdGFiYXNlOjppbmNyZW1lbnRhbFZhY3V1bUlmTmVlZGVkKCkKIAog
dm9pZCBEYXRhYmFzZTo6bG9nRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsK
LSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OlN0b3JhZ2UsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UpOworICAgIG1fZG9j
dW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlN0b3JhZ2UsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIG1lc3NhZ2UpOwogfQogCiBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6dGFi
bGVOYW1lcygpCkBAIC03NzksNyArNzcyLDcgQEAgVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OnRh
YmxlTmFtZXMoKQogCiBTZWN1cml0eU9yaWdpbkRhdGEgRGF0YWJhc2U6OnNlY3VyaXR5T3JpZ2lu
KCkKIHsKLSAgICBpZiAobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQo
KSkKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpCiAgICAgICAgIHJldHVybiBtX2NvbnRleHRUaHJl
YWRTZWN1cml0eU9yaWdpbi0+ZGF0YSgpOwogICAgIGlmIChkYXRhYmFzZVRocmVhZCgpLmdldFRo
cmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuIG1fZGF0YWJhc2VU
aHJlYWRTZWN1cml0eU9yaWdpbi0+ZGF0YSgpOwpAQCAtNzk4LDcgKzc5MSw3IEBAIHZvaWQgRGF0
YWJhc2U6OmRpZENvbW1pdFdyaXRlVHJhbnNhY3Rpb24oKQogCiBib29sIERhdGFiYXNlOjpkaWRF
eGNlZWRRdW90YSgpCiB7Ci0gICAgQVNTRVJUKGRhdGFiYXNlQ29udGV4dCgpLnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgYXV0byYgdHJhY2tlciA9IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCk7
CiAgICAgYXV0byBvbGRRdW90YSA9IHRyYWNrZXIucXVvdGEoc2VjdXJpdHlPcmlnaW4oKSk7CiAg
ICAgaWYgKGVzdGltYXRlZFNpemUoKSA8PSBvbGRRdW90YSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oCmluZGV4IDJiZGRlMWQ2ODkxZmYyMmEzZmU5
ZjU0ZWU5ZDM3NTI2ODliNzMwNzguLjk3Yjk2NmM0Zjc3MjIyODJkZmI0MDUzOTg0NDBhMjVmNDM1
OTk1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgRGF0YWJhc2VDYWxsYmFjazsKIGNsYXNzIERhdGFi
YXNlQ29udGV4dDsKIGNsYXNzIERhdGFiYXNlRGV0YWlsczsKIGNsYXNzIERhdGFiYXNlVGhyZWFk
OwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIERvY3VtZW50OwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTUUxUcmFuc2FjdGlvbjsKIGNsYXNzIFNRTFRyYW5zYWN0
aW9uQmFja2VuZDsKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAKICAgICBEYXRhYmFzZUNv
bnRleHQmIGRhdGFiYXNlQ29udGV4dCgpIHsgcmV0dXJuIG1fZGF0YWJhc2VDb250ZXh0OyB9CiAg
ICAgRGF0YWJhc2VUaHJlYWQmIGRhdGFiYXNlVGhyZWFkKCk7Ci0gICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsgfQorICAgIERvY3VtZW50JiBkb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1l
bnQ7IH0KICAgICB2b2lkIGxvZ0Vycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwog
CiAgICAgVmVjdG9yPFN0cmluZz4gdGFibGVOYW1lcygpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHBy
aXZhdGU6CiAgICAgU3RyaW5nIGRhdGFiYXNlRGVidWdOYW1lKCkgY29uc3Q7CiAjZW5kaWYKIAot
ICAgIFJlZjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CisgICAgUmVmPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZjxTZWN1cml0eU9yaWdpbj4g
bV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW47CiAgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBt
X2RhdGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW47CiAgICAgUmVmPERhdGFiYXNlQ29udGV4dD4g
bV9kYXRhYmFzZUNvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKaW5kZXggNDk3MTMxYzI3MGI0OTg4YzI4MDYx
MjM2NGRlNGU5MmM3YmRhNGY5OC4uNDgyMjA0ZTVhYzI0NTRiYjliYTMxYjBhZmI4MDE3YWIzZWE2
NmM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VDb250ZXh0LmNwcApAQCAtOTQsMTQgKzk0LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIC8vIERhdGFiYXNlQ29udGV4dCB3aWxsIG91dGxpdmUgYm90aCByZWdhcmRsZXNzIG9mIHdo
aWNoIG9mIHRoZSAyIGRlc3RydWN0cyBmaXJzdC4KIAogCi1EYXRhYmFzZUNvbnRleHQ6OkRhdGFi
YXNlQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotICAgIDogQWN0aXZl
RE9NT2JqZWN0KCZjb250ZXh0KQorRGF0YWJhc2VDb250ZXh0OjpEYXRhYmFzZUNvbnRleHQoRG9j
dW1lbnQmIGRvY3VtZW50KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQogewogICAg
IC8vIEFjdGl2ZURPTU9iamVjdCBleHBlY3RzIHRoaXMgdG8gYmUgY2FsbGVkIHRvIHNldCBpbnRl
cm5hbCBmbGFncy4KICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIAotICAgIEFTU0VSVCghY29udGV4
dC5kYXRhYmFzZUNvbnRleHQoKSk7Ci0gICAgY29udGV4dC5zZXREYXRhYmFzZUNvbnRleHQodGhp
cyk7CisgICAgQVNTRVJUKCFkb2N1bWVudC5kYXRhYmFzZUNvbnRleHQoKSk7CisgICAgZG9jdW1l
bnQuc2V0RGF0YWJhc2VDb250ZXh0KHRoaXMpOwogfQogCiBEYXRhYmFzZUNvbnRleHQ6On5EYXRh
YmFzZUNvbnRleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VDb250ZXh0LmgKaW5kZXggNGY1MmQ3YTVmYTQyMjNlY2I4YTM2NDZmMGIyY2Fj
ZDFjNDUzMzIyYS4uODI3YTAxZTdjZmJmYzNhNjhhOTQ4NzAzZDA0MzZiMzM3OGM1YjZlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29u
dGV4dC5oCkBAIC02MCwxMyArNjAsMTMgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dEYXRhYmFz
ZUFjY2VzcygpIGNvbnN0OwogICAgIHZvaWQgZGF0YWJhc2VFeGNlZWRlZFF1b3RhKGNvbnN0IFN0
cmluZyYgbmFtZSwgRGF0YWJhc2VEZXRhaWxzKTsKIAotICAgIHVzaW5nIEFjdGl2ZURPTU9iamVj
dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25z
dCB7IHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOyB9CiAgICAgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0
eU9yaWdpbigpIGNvbnN0OwogCiAgICAgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBjb25zdDsKIAog
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBEYXRhYmFzZUNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpOworICAgIGV4cGxpY2l0IERhdGFiYXNlQ29udGV4dChEb2N1bWVudCYpOwogCiAgICAg
dm9pZCBzdG9wRGF0YWJhc2VzKCkgeyBzdG9wRGF0YWJhc2VzKG51bGxwdHIpOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2Vy
LmNwcAppbmRleCAzMzk0MDliNjE2YzNjMDQzYjVlYjVkODkzZjkzNzA4MTljOGJlYTdmLi4wNWRm
YTM3OTJkNDQwYzZhMzFlZGY5Yjg4MWRiZGYxOThlN2I4YzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0z
MSwxMSArMzEsMTEgQEAKICNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJE
YXRhYmFzZVRhc2suaCIKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5E
YXRhLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC05NywzMSArOTcsMzEg
QEAgdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldElzQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxlKQog
ICAgIG1fZGF0YWJhc2VJc0F2YWlsYWJsZSA9IGF2YWlsYWJsZTsKIH0KIAotUmVmPERhdGFiYXNl
Q29udGV4dD4gRGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZUNvbnRleHQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkKK1JlZjxEYXRhYmFzZUNvbnRleHQ+IERhdGFiYXNlTWFuYWdlcjo6
ZGF0YWJhc2VDb250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBpZiAoYXV0byBkYXRh
YmFzZUNvbnRleHQgPSBjb250ZXh0LmRhdGFiYXNlQ29udGV4dCgpKQorICAgIGlmIChhdXRvIGRh
dGFiYXNlQ29udGV4dCA9IGRvY3VtZW50LmRhdGFiYXNlQ29udGV4dCgpKQogICAgICAgICByZXR1
cm4gKmRhdGFiYXNlQ29udGV4dDsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhYmFzZUNv
bnRleHQoY29udGV4dCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFiYXNlQ29udGV4
dChkb2N1bWVudCkpOwogfQogCiAjaWYgTE9HX0RJU0FCTEVECiAKLXN0YXRpYyBpbmxpbmUgdm9p
ZCBsb2dPcGVuRGF0YWJhc2VFcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3Ry
aW5nJikKK3N0YXRpYyBpbmxpbmUgdm9pZCBsb2dPcGVuRGF0YWJhc2VFcnJvcihEb2N1bWVudCYs
IGNvbnN0IFN0cmluZyYpCiB7CiB9CiAKICNlbHNlCiAKLXN0YXRpYyB2b2lkIGxvZ09wZW5EYXRh
YmFzZUVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
bmFtZSkKK3N0YXRpYyB2b2lkIGxvZ09wZW5EYXRhYmFzZUVycm9yKERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2Ug
JXMgZm9yIG9yaWdpbiAlcyBub3QgYWxsb3dlZCB0byBiZSBlc3RhYmxpc2hlZCIsIG5hbWUudXRm
OCgpLmRhdGEoKSwgY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2UgJXMgZm9yIG9yaWdpbiAlcyBu
b3QgYWxsb3dlZCB0byBiZSBlc3RhYmxpc2hlZCIsIG5hbWUudXRmOCgpLmRhdGEoKSwgZG9jdW1l
bnQuc2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQogCiAjZW5k
aWYKIAotRXhjZXB0aW9uT3I8UmVmPERhdGFiYXNlPj4gRGF0YWJhc2VNYW5hZ2VyOjpvcGVuRGF0
YWJhc2VCYWNrZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlz
cGxheU5hbWUsIHVuc2lnbmVkIGVzdGltYXRlZFNpemUsIGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0
YWJhc2UpCitFeGNlcHRpb25PcjxSZWY8RGF0YWJhc2U+PiBEYXRhYmFzZU1hbmFnZXI6Om9wZW5E
YXRhYmFzZUJhY2tlbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1
bnNpZ25lZCBlc3RpbWF0ZWRTaXplLCBib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlKQogewot
ICAgIGF1dG8gYmFja2VuZCA9IHRyeVRvT3BlbkRhdGFiYXNlQmFja2VuZChjb250ZXh0LCBuYW1l
LCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBzZXRWZXJzaW9u
SW5OZXdEYXRhYmFzZSwgRmlyc3RUcnlUb09wZW5EYXRhYmFzZSk7CisgICAgYXV0byBiYWNrZW5k
ID0gdHJ5VG9PcGVuRGF0YWJhc2VCYWNrZW5kKGRvY3VtZW50LCBuYW1lLCBleHBlY3RlZFZlcnNp
b24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwg
Rmlyc3RUcnlUb09wZW5EYXRhYmFzZSk7CiAKICAgICBpZiAoYmFja2VuZC5oYXNFeGNlcHRpb24o
KSkgewogICAgICAgICBpZiAoYmFja2VuZC5leGNlcHRpb24oKS5jb2RlKCkgPT0gUXVvdGFFeGNl
ZWRlZEVycm9yKSB7CkBAIC0xMjksMzkgKzEyOSwzMSBAQCBFeGNlcHRpb25PcjxSZWY8RGF0YWJh
c2U+PiBEYXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFzZUJhY2tlbmQoU2NyaXB0RXhlY3V0aW9u
QwogICAgICAgICAgICAgLy8gVGhlIGNsaWVudCBtYXkgd2FudCB0byBpbmNyZWFzZSB0aGUgcXVv
dGEsIGFuZCB3ZSdsbCBnaXZlIGl0CiAgICAgICAgICAgICAvLyBvbmUgbW9yZSB0cnkgYWZ0ZXIg
aWYgdGhhdCBpcyB0aGUgY2FzZS4KICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBG
SVhNRTogV2hhdCBndWFyYW50ZWVzIGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSBpcyBub24tbnVs
bD8KLSAgICAgICAgICAgICAgICBQcm9wb3NlZERhdGFiYXNlIHByb3Bvc2VkRGF0YWJhc2UgeyAq
dGhpcywgKmNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGlt
YXRlZFNpemUgfTsKLSAgICAgICAgICAgICAgICB0aGlzLT5kYXRhYmFzZUNvbnRleHQoY29udGV4
dCktPmRhdGFiYXNlRXhjZWVkZWRRdW90YShuYW1lLCBwcm9wb3NlZERhdGFiYXNlLmRldGFpbHMo
KSk7CisgICAgICAgICAgICAgICAgUHJvcG9zZWREYXRhYmFzZSBwcm9wb3NlZERhdGFiYXNlIHsg
KnRoaXMsIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCksIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3Rp
bWF0ZWRTaXplIH07CisgICAgICAgICAgICAgICAgdGhpcy0+ZGF0YWJhc2VDb250ZXh0KGRvY3Vt
ZW50KS0+ZGF0YWJhc2VFeGNlZWRlZFF1b3RhKG5hbWUsIHByb3Bvc2VkRGF0YWJhc2UuZGV0YWls
cygpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJhY2tlbmQgPSB0cnlUb09wZW5EYXRh
YmFzZUJhY2tlbmQoY29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwg
ZXN0aW1hdGVkU2l6ZSwgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIFJldHJ5T3BlbkRhdGFiYXNl
KTsKKyAgICAgICAgICAgIGJhY2tlbmQgPSB0cnlUb09wZW5EYXRhYmFzZUJhY2tlbmQoZG9jdW1l
bnQsIG5hbWUsIGV4cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIHNl
dFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBSZXRyeU9wZW5EYXRhYmFzZSk7CiAgICAgICAgIH0KICAg
ICB9CiAKICAgICBpZiAoYmFja2VuZC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBpZiAoYmFj
a2VuZC5leGNlcHRpb24oKS5jb2RlKCkgPT0gSW52YWxpZFN0YXRlRXJyb3IpCi0gICAgICAgICAg
ICBsb2dFcnJvck1lc3NhZ2UoY29udGV4dCwgYmFja2VuZC5leGNlcHRpb24oKS5tZXNzYWdlKCkp
OworICAgICAgICAgICAgbG9nRXJyb3JNZXNzYWdlKGRvY3VtZW50LCBiYWNrZW5kLmV4Y2VwdGlv
bigpLm1lc3NhZ2UoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvZ09wZW5EYXRhYmFz
ZUVycm9yKGNvbnRleHQsIG5hbWUpOworICAgICAgICAgICAgbG9nT3BlbkRhdGFiYXNlRXJyb3Io
ZG9jdW1lbnQsIG5hbWUpOwogICAgIH0KIAogICAgIHJldHVybiBiYWNrZW5kOwogfQogCi1FeGNl
cHRpb25PcjxSZWY8RGF0YWJhc2U+PiBEYXRhYmFzZU1hbmFnZXI6OnRyeVRvT3BlbkRhdGFiYXNl
QmFja2VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRDb250ZXh0LCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRp
c3BsYXlOYW1lLCB1bnNpZ25lZCBlc3RpbWF0ZWRTaXplLCBib29sIHNldFZlcnNpb25Jbk5ld0Rh
dGFiYXNlLAorRXhjZXB0aW9uT3I8UmVmPERhdGFiYXNlPj4gRGF0YWJhc2VNYW5hZ2VyOjp0cnlU
b09wZW5EYXRhYmFzZUJhY2tlbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCB1bnNpZ25lZCBlc3RpbWF0ZWRTaXplLCBib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNl
LAogICAgIE9wZW5BdHRlbXB0IGF0dGVtcHQpCiB7Ci0gICAgaWYgKGlzPERvY3VtZW50Pigmc2Ny
aXB0Q29udGV4dCkpIHsKLSAgICAgICAgYXV0byogcGFnZSA9IGRvd25jYXN0PERvY3VtZW50Pihz
Y3JpcHRDb250ZXh0KS5wYWdlKCk7Ci0gICAgICAgIGlmICghcGFnZSB8fCBwYWdlLT51c2VzRXBo
ZW1lcmFsU2Vzc2lvbigpKQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5
RXJyb3IgfTsKLSAgICB9Ci0KLSAgICBpZiAoc2NyaXB0Q29udGV4dC5pc1dvcmtlckdsb2JhbFNj
b3BlKCkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgYXV0byogcGFnZSA9
IGRvY3VtZW50LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UgfHwgcGFnZS0+dXNlc0VwaGVtZXJhbFNl
c3Npb24oKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKLSAg
ICB9CiAKLSAgICBhdXRvIGJhY2tlbmRDb250ZXh0ID0gdGhpcy0+ZGF0YWJhc2VDb250ZXh0KHNj
cmlwdENvbnRleHQpOworICAgIGF1dG8gYmFja2VuZENvbnRleHQgPSB0aGlzLT5kYXRhYmFzZUNv
bnRleHQoZG9jdW1lbnQpOwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcHJlZmxpZ2h0UmVzdWx0
OwogICAgIHN3aXRjaCAoYXR0ZW1wdCkgewpAQCAtMTk4LDI1ICsxOTAsMjUgQEAgdm9pZCBEYXRh
YmFzZU1hbmFnZXI6OnJlbW92ZVByb3Bvc2VkRGF0YWJhc2UoUHJvcG9zZWREYXRhYmFzZSYgZGF0
YWJhc2UpCiAgICAgbV9wcm9wb3NlZERhdGFiYXNlcy5yZW1vdmUoJmRhdGFiYXNlKTsKIH0KIAot
RXhjZXB0aW9uT3I8UmVmPERhdGFiYXNlPj4gRGF0YWJhc2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5z
aWduZWQgZXN0aW1hdGVkU2l6ZSwgUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+JiYgY3JlYXRpb25D
YWxsYmFjaykKK0V4Y2VwdGlvbk9yPFJlZjxEYXRhYmFzZT4+IERhdGFiYXNlTWFuYWdlcjo6b3Bl
bkRhdGFiYXNlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWdu
ZWQgZXN0aW1hdGVkU2l6ZSwgUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+JiYgY3JlYXRpb25DYWxs
YmFjaykKIHsKICAgICBTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAK
ICAgICBib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlID0gIWNyZWF0aW9uQ2FsbGJhY2s7Ci0g
ICAgYXV0byBvcGVuUmVzdWx0ID0gb3BlbkRhdGFiYXNlQmFja2VuZChjb250ZXh0LCBuYW1lLCBl
eHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBzZXRWZXJzaW9uSW5O
ZXdEYXRhYmFzZSk7CisgICAgYXV0byBvcGVuUmVzdWx0ID0gb3BlbkRhdGFiYXNlQmFja2VuZChk
b2N1bWVudCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6
ZSwgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UpOwogICAgIGlmIChvcGVuUmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gb3BlblJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAK
ICAgICBSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYXNlID0gb3BlblJlc3VsdC5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKIAotICAgIGF1dG8gZGF0YWJhc2VDb250ZXh0ID0gdGhpcy0+ZGF0YWJhc2VDb250
ZXh0KGNvbnRleHQpOworICAgIGF1dG8gZGF0YWJhc2VDb250ZXh0ID0gdGhpcy0+ZGF0YWJhc2VD
b250ZXh0KGRvY3VtZW50KTsKICAgICBkYXRhYmFzZUNvbnRleHQtPnNldEhhc09wZW5EYXRhYmFz
ZXMoKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFzZSgqZGF0
YWJhc2UpOwogCiAgICAgaWYgKGRhdGFiYXNlLT5pc05ldygpICYmIGNyZWF0aW9uQ2FsbGJhY2su
Z2V0KCkpIHsKICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIERhdGFiYXNlQ3Jl
YXRpb25DYWxsYmFja1Rhc2sgZm9yIGRhdGFiYXNlICVwXG4iLCBkYXRhYmFzZS5nZXQoKSk7CiAg
ICAgICAgIGRhdGFiYXNlLT5zZXRIYXNQZW5kaW5nQ3JlYXRpb25FdmVudCh0cnVlKTsKLSAgICAg
ICAgZGF0YWJhc2UtPm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW2NyZWF0aW9u
Q2FsbGJhY2ssIGRhdGFiYXNlXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICAgICAg
ZGF0YWJhc2UtPm1fZG9jdW1lbnQtPnBvc3RUYXNrKFtjcmVhdGlvbkNhbGxiYWNrLCBkYXRhYmFz
ZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgICAgICBjcmVhdGlvbkNhbGxi
YWNrLT5oYW5kbGVFdmVudCgqZGF0YWJhc2UpOwogICAgICAgICAgICAgZGF0YWJhc2UtPnNldEhh
c1BlbmRpbmdDcmVhdGlvbkV2ZW50KGZhbHNlKTsKICAgICAgICAgfSk7CkBAIC0yMjUsMTUgKzIx
NywxNSBAQCBFeGNlcHRpb25PcjxSZWY8RGF0YWJhc2U+PiBEYXRhYmFzZU1hbmFnZXI6Om9wZW5E
YXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JgogICAgIHJldHVybiBkYXRhYmFzZS5yZWxl
YXNlTm9uTnVsbCgpOwogfQogCi1ib29sIERhdGFiYXNlTWFuYWdlcjo6aGFzT3BlbkRhdGFiYXNl
cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQorYm9vbCBEYXRhYmFzZU1hbmFnZXI6
Omhhc09wZW5EYXRhYmFzZXMoRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIGF1dG8gZGF0YWJh
c2VDb250ZXh0ID0gY29udGV4dC5kYXRhYmFzZUNvbnRleHQoKTsKKyAgICBhdXRvIGRhdGFiYXNl
Q29udGV4dCA9IGRvY3VtZW50LmRhdGFiYXNlQ29udGV4dCgpOwogICAgIHJldHVybiBkYXRhYmFz
ZUNvbnRleHQgJiYgZGF0YWJhc2VDb250ZXh0LT5oYXNPcGVuRGF0YWJhc2VzKCk7CiB9CiAKLXZv
aWQgRGF0YWJhc2VNYW5hZ2VyOjpzdG9wRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIERhdGFiYXNlVGFza1N5bmNocm9uaXplciogc3luY2hyb25pemVyKQordm9pZCBE
YXRhYmFzZU1hbmFnZXI6OnN0b3BEYXRhYmFzZXMoRG9jdW1lbnQmIGRvY3VtZW50LCBEYXRhYmFz
ZVRhc2tTeW5jaHJvbml6ZXIqIHN5bmNocm9uaXplcikKIHsKLSAgICBhdXRvIGRhdGFiYXNlQ29u
dGV4dCA9IGNvbnRleHQuZGF0YWJhc2VDb250ZXh0KCk7CisgICAgYXV0byBkYXRhYmFzZUNvbnRl
eHQgPSBkb2N1bWVudC5kYXRhYmFzZUNvbnRleHQoKTsKICAgICBpZiAoIWRhdGFiYXNlQ29udGV4
dCB8fCAhZGF0YWJhc2VDb250ZXh0LT5zdG9wRGF0YWJhc2VzKHN5bmNocm9uaXplcikpIHsKICAg
ICAgICAgaWYgKHN5bmNocm9uaXplcikKICAgICAgICAgICAgIHN5bmNocm9uaXplci0+dGFza0Nv
bXBsZXRlZCgpOwpAQCAtMjY3LDkgKzI1OSw5IEBAIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZU1h
bmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjCiAg
ICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGV0YWlsc0Zvck5hbWVBbmRP
cmlnaW4obmFtZSwgb3JpZ2luLmRhdGEoKSk7CiB9CiAKLXZvaWQgRGF0YWJhc2VNYW5hZ2VyOjps
b2dFcnJvck1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQordm9pZCBEYXRhYmFzZU1hbmFnZXI6OmxvZ0Vycm9yTWVzc2FnZShEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBjb250ZXh0LmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlN0b3JhZ2UsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIG1lc3NhZ2UpOworICAgIGRvY3VtZW50LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OlN0b3JhZ2UsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UpOwogfQogCiAjaWYgIVBM
QVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VNYW5hZ2VyLmgKaW5kZXggOTEzMjJlNWEyMjNkMjRiOTQ1NjI1Nzg1NTMyNzIy
MmFhZDE2ZTdhZS4uYWE0M2ViZWY4OWMyODg0YjExNzhjMmY5ZmZlOWYxYmYwMWZhODgxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFu
YWdlci5oCkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIERhdGFiYXNlQ2FsbGJhY2s7CiBjbGFzcyBE
YXRhYmFzZUNvbnRleHQ7CiBjbGFzcyBEYXRhYmFzZU1hbmFnZXJDbGllbnQ7CiBjbGFzcyBEYXRh
YmFzZVRhc2tTeW5jaHJvbml6ZXI7CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEV4Y2VwdGlvbjsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIHN0
cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiAKIGNsYXNzIERhdGFiYXNlTWFuYWdlciB7CkBAIC01
NSwxNCArNTUsMTQgQEAgcHVibGljOgogICAgIGJvb2wgaXNBdmFpbGFibGUoKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldElzQXZhaWxhYmxlKGJvb2wpOwogCi0gICAgLy8gVGhpcyBnZXRz
IGEgRGF0YWJhc2VDb250ZXh0IGZvciB0aGUgc3BlY2lmaWVkIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuCisgICAgLy8gVGhpcyBnZXRzIGEgRGF0YWJhc2VDb250ZXh0IGZvciB0aGUgc3BlY2lmaWVk
IERvY3VtZW50LgogICAgIC8vIElmIG9uZSBkb2Vzbid0IGFscmVhZHkgZXhpc3QsIGl0IHdpbGwg
Y3JlYXRlIGEgbmV3IG9uZS4KLSAgICBSZWY8RGF0YWJhc2VDb250ZXh0PiBkYXRhYmFzZUNvbnRl
eHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIFJlZjxEYXRhYmFzZUNvbnRleHQ+IGRh
dGFiYXNlQ29udGV4dChEb2N1bWVudCYpOwogCi0gICAgRXhjZXB0aW9uT3I8UmVmPERhdGFiYXNl
Pj4gb3BlbkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCB1bnNpZ25lZCBlc3RpbWF0ZWRTaXplLCBSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4mJik7
CisgICAgRXhjZXB0aW9uT3I8UmVmPERhdGFiYXNlPj4gb3BlbkRhdGFiYXNlKERvY3VtZW50Jiwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3Qg
U3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgZXN0aW1hdGVkU2l6ZSwgUmVmUHRyPERhdGFi
YXNlQ2FsbGJhY2s+JiYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNPcGVuRGF0YWJh
c2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKLSAgICB2b2lkIHN0b3BEYXRhYmFzZXMoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIERhdGFiYXNlVGFza1N5bmNocm9uaXplciopOworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaGFzT3BlbkRhdGFiYXNlcyhEb2N1bWVudCYpOworICAgIHZvaWQg
c3RvcERhdGFiYXNlcyhEb2N1bWVudCYsIERhdGFiYXNlVGFza1N5bmNocm9uaXplciopOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlPcmln
aW4mLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QgPSB0cnVl
KTsKIApAQCAtNzUsMTQgKzc1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpOwogCiAgICAgZW51bSBPcGVuQXR0ZW1w
dCB7IEZpcnN0VHJ5VG9PcGVuRGF0YWJhc2UsIFJldHJ5T3BlbkRhdGFiYXNlIH07Ci0gICAgRXhj
ZXB0aW9uT3I8UmVmPERhdGFiYXNlPj4gb3BlbkRhdGFiYXNlQmFja2VuZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVy
c2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgZXN0aW1hdGVkU2l6ZSwg
Ym9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPERhdGFi
YXNlPj4gdHJ5VG9PcGVuRGF0YWJhc2VCYWNrZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBT
dHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBlc3RpbWF0ZWRTaXplLCBib29sIHNldFZlcnNp
b25Jbk5ld0RhdGFiYXNlLCBPcGVuQXR0ZW1wdCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPERhdGFi
YXNlPj4gb3BlbkRhdGFiYXNlQmFja2VuZChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUs
IHVuc2lnbmVkIGVzdGltYXRlZFNpemUsIGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UpOwor
ICAgIEV4Y2VwdGlvbk9yPFJlZjxEYXRhYmFzZT4+IHRyeVRvT3BlbkRhdGFiYXNlQmFja2VuZChE
b2N1bWVudCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNp
b24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGVzdGltYXRlZFNpemUsIGJv
b2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIE9wZW5BdHRlbXB0KTsKIAogICAgIGNsYXNzIFBy
b3Bvc2VkRGF0YWJhc2U7CiAgICAgdm9pZCBhZGRQcm9wb3NlZERhdGFiYXNlKFByb3Bvc2VkRGF0
YWJhc2UmKTsKICAgICB2b2lkIHJlbW92ZVByb3Bvc2VkRGF0YWJhc2UoUHJvcG9zZWREYXRhYmFz
ZSYpOwogCi0gICAgc3RhdGljIHZvaWQgbG9nRXJyb3JNZXNzYWdlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHN0YXRpYyB2b2lkIGxvZ0Vycm9y
TWVzc2FnZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKICAgICBEYXRhYmFz
ZU1hbmFnZXJDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwogICAgIGJvb2wgbV9kYXRhYmFz
ZUlzQXZhaWxhYmxlIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwCmluZGV4IDdlMTNkMDYwYjM1MTZkMjVlMGIyM2M5
ZGQ2NDA0ZjdhYjA2MzViYjIuLjU3MGMyNzA5MjM2ODNiYTZmZjZmMWMyMzYxZjE4OTQwMjUwNjYy
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3Rh
dGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0
YXRlbWVudC5jcHAKQEAgLTc3LDggKzc3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU1FMU3Rh
dGVtZW50OjpTUUxTdGF0ZW1lbnQoRGF0YWJhc2UmIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIHN0
YXRlbWVudCwgVmVjdG9yPFNRTFZhbHVlPiYmIGFyZ3VtZW50cywgUmVmUHRyPFNRTFN0YXRlbWVu
dENhbGxiYWNrPiYmIGNhbGxiYWNrLCBSZWZQdHI8U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjaz4m
JiBlcnJvckNhbGxiYWNrLCBpbnQgcGVybWlzc2lvbnMpCiAgICAgOiBtX3N0YXRlbWVudChzdGF0
ZW1lbnQuaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX2FyZ3VtZW50cyhXVEZNb3ZlKGFyZ3VtZW50
cykpCi0gICAgLCBtX3N0YXRlbWVudENhbGxiYWNrV3JhcHBlcihXVEZNb3ZlKGNhbGxiYWNrKSwg
JmRhdGFiYXNlLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1fc3RhdGVtZW50RXJy
b3JDYWxsYmFja1dyYXBwZXIoV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgJmRhdGFiYXNlLnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAsIG1fc3RhdGVtZW50Q2FsbGJhY2tXcmFwcGVyKFdU
Rk1vdmUoY2FsbGJhY2spLCAmZGF0YWJhc2UuZG9jdW1lbnQoKSkKKyAgICAsIG1fc3RhdGVtZW50
RXJyb3JDYWxsYmFja1dyYXBwZXIoV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgJmRhdGFiYXNlLmRv
Y3VtZW50KCkpCiAgICAgLCBtX3Blcm1pc3Npb25zKHBlcm1pc3Npb25zKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNw
cAppbmRleCBhMTljNzc2NTY2ZTk3MzM1MTFkMjM4NWUyYmNmZmQwYTkwOTE1NTI1Li4yMGQ2OTcz
NDc3NGRiZmJmMzBiZDhmMzljZTRjNTk1NzIxNGU5MDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNl
VGhyZWFkLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiT3JpZ2luTG9jay5oIgogI2lu
Y2x1ZGUgIlNRTEVycm9yLmgiCkBAIC01OSw5ICs2MCw5IEBAIFJlZjxTUUxUcmFuc2FjdGlvbj4g
U1FMVHJhbnNhY3Rpb246OmNyZWF0ZShSZWY8RGF0YWJhc2U+JiYgZGF0YWJhc2UsIFJlZlB0cjxT
UUxUCiAKIFNRTFRyYW5zYWN0aW9uOjpTUUxUcmFuc2FjdGlvbihSZWY8RGF0YWJhc2U+JiYgZGF0
YWJhc2UsIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrLCBSZWZQdHI8
Vm9pZENhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJy
b3JDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrLCBSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVy
PiYmIHdyYXBwZXIsIGJvb2wgcmVhZE9ubHkpCiAgICAgOiBtX2RhdGFiYXNlKFdURk1vdmUoZGF0
YWJhc2UpKQotICAgICwgbV9jYWxsYmFja1dyYXBwZXIoV1RGTW92ZShjYWxsYmFjayksICZtX2Rh
dGFiYXNlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX3N1Y2Nlc3NDYWxsYmFj
a1dyYXBwZXIoV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCAmbV9kYXRhYmFzZS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9lcnJvckNhbGxiYWNrV3JhcHBlcihXVEZNb3ZlKGVy
cm9yQ2FsbGJhY2spLCAmbV9kYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAg
ICwgbV9jYWxsYmFja1dyYXBwZXIoV1RGTW92ZShjYWxsYmFjayksICZtX2RhdGFiYXNlLT5kb2N1
bWVudCgpKQorICAgICwgbV9zdWNjZXNzQ2FsbGJhY2tXcmFwcGVyKFdURk1vdmUoc3VjY2Vzc0Nh
bGxiYWNrKSwgJm1fZGF0YWJhc2UtPmRvY3VtZW50KCkpCisgICAgLCBtX2Vycm9yQ2FsbGJhY2tX
cmFwcGVyKFdURk1vdmUoZXJyb3JDYWxsYmFjayksICZtX2RhdGFiYXNlLT5kb2N1bWVudCgpKQog
ICAgICwgbV93cmFwcGVyKFdURk1vdmUod3JhcHBlcikpCiAgICAgLCBtX25leHRTdGVwKCZTUUxU
cmFuc2FjdGlvbjo6YWNxdWlyZUxvY2spCiAgICAgLCBtX3JlYWRPbmx5KHJlYWRPbmx5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CmluZGV4IGIyZDE1Y2U4NmRkYWQ2ZGNiYmNlZWI0NDJhNWM5MjZjNjRjYzNmYzYuLjk3OTFhODY1
MGI0OTlmNGIwYmY1ZmJhZDNjYjhhYTZkMzYwZWUyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTEyMDEsNyArMTIw
MSw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lD
YWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkT3BlbkRhdGFiYXNlKERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAgICBG
QVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoYXV0byogaW5zdHJ1
bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGRhdGFiYXNlLnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2Vu
dHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChkYXRhYmFzZS5kb2N1bWVudCgpKSkK
ICAgICAgICAgZGlkT3BlbkRhdGFiYXNlSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZGF0YWJh
c2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCA1ZjczMGIwZDRhODUxMmQwZWJkNTI2
NjI5OTQ5N2NlZjQyZDQ3NjBhLi5jODIxZTA2MmQwZDZiNDg4MTY1OGRmMjkxNDc0NWUxZjc5MDRi
MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKQEAgLTI3OCw5ICsyNzgsOSBAQCB2b2lkIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ6OmV4ZWN1dGVTUUwoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBj
b25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkYXRhYmFzZS0+dHJh
bnNhY3Rpb24oVHJhbnNhY3Rpb25DYWxsYmFjazo6Y3JlYXRlKCZkYXRhYmFzZS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBxdWVyeSwgcmVxdWVzdENhbGxiYWNrLmNvcHlSZWYoKSksCi0gICAg
ICAgIFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazo6Y3JlYXRlKCZkYXRhYmFzZS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCByZXF1ZXN0Q2FsbGJhY2suY29weVJlZigpKSwKLSAgICAgICAgVHJh
bnNhY3Rpb25TdWNjZXNzQ2FsbGJhY2s6OmNyZWF0ZSgmZGF0YWJhc2UtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSkpOworICAgIGRhdGFiYXNlLT50cmFuc2FjdGlvbihUcmFuc2FjdGlvbkNhbGxi
YWNrOjpjcmVhdGUoJmRhdGFiYXNlLT5kb2N1bWVudCgpLCBxdWVyeSwgcmVxdWVzdENhbGxiYWNr
LmNvcHlSZWYoKSksCisgICAgICAgIFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazo6Y3JlYXRlKCZk
YXRhYmFzZS0+ZG9jdW1lbnQoKSwgcmVxdWVzdENhbGxiYWNrLmNvcHlSZWYoKSksCisgICAgICAg
IFRyYW5zYWN0aW9uU3VjY2Vzc0NhbGxiYWNrOjpjcmVhdGUoJmRhdGFiYXNlLT5kb2N1bWVudCgp
KSk7CiB9CiAKIFN0cmluZyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkYXRhYmFzZUlkKERhdGFi
YXNlJiBkYXRhYmFzZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373588</attachid>
            <date>2019-07-06 17:05:04 -0700</date>
            <delta_ts>2019-07-08 11:38:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199557-20190706170500.patch</filename>
            <type>text/plain</type>
            <size>27768</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODA3MGViNTI5NWYzZWNm
ODFhYzI2YjhmYWQ0YzgyMDM0NjdlZmFjZi4uNzEwODQ2OTZlMDhlNGY1ZWJlYmM4YTJjOGMwYzUx
Mjc3ZmQ5NWVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE5LTA3LTA2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRocmVhZCBzYWZldHkg
aXNzdWUgaW4gRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25DYWxsYmFjaygpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk1NTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJIGFtIHdvcmtpbmcgb24g
YWRkaW5nIHRocmVhZGluZyBhc3NlcnRpb25zIHRvIFdlYWtQdHIgYW5kIGZvdW5kIGEgcG90ZW50
aWFsbHkKKyAgICAgICAgdW5zYWZlIGNhbGwgdG8gbWFrZVdlYWtQdHIoKSBvbiBhIERvY3VtZW50
IGZyb20gRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25DYWxsYmFjaygpCisgICAgICAgIHZp
YSBEb2N1bWVudDo6cG9zdFRhc2soKSwgb24gYSBiYWNrZ3JvdW5kIGRhdGFiYXNlIHRocmVhZC4g
RG9jdW1lbnQgaXMgYSBtYWluIHRocmVhZAorICAgICAgICBvYmplY3QgYW5kIHdlIHNob3VsZCB0
aGVyZWZvcmUgbm90IGJlIGludGVyYWN0aW5nIHdpdGggaXQgZnJvbSBhIGJhY2tncm91bmQgdGhy
ZWFkLgorCisgICAgICAgIEZvciBjbGFyaXR5LCB0aGlzIHBhdGNoIGFsc28gc3dpdGNoZXMgdGhl
IHdlYmRhdGFiYXNlIGNvZGUgdG8gdXNlIERvY3VtZW50IGluc3RlYWQKKyAgICAgICAgb2YgU2Ny
aXB0RXhlY3V0aW9uIGFzIHR5cGUgc2luY2UgaXQgaXMgb25seSBleHBvc2VkIHRvIFdpbmRvdyBj
b250ZXh0cywgbm90IHdvcmtlcnMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpEYXRhYmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6fkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlOjpydW5UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6c2No
ZWR1bGVUcmFuc2FjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjps
b2dFcnJvck1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNlY3VyaXR5T3Jp
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpkaWRFeGNlZWRRdW90YSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2U6OmRvY3VtZW50KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUNvbnRleHQ6OkRhdGFi
YXNlQ29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRl
eHQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmRhdGFiYXNlQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpsb2dPcGVuRGF0YWJhc2VFcnJvcik6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFzZUJhY2tlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VNYW5hZ2VyOjp0cnlUb09wZW5EYXRhYmFzZUJhY2tlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VNYW5hZ2VyOjpoYXNPcGVuRGF0YWJhc2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlTWFuYWdlcjo6c3RvcERhdGFiYXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZU1hbmFnZXI6OmxvZ0Vycm9yTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxTdGF0ZW1lbnQ6OlNRTFN0YXRl
bWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6U1FMVHJhbnNhY3Rpb24pOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkRhdGFiYXNlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZXhlY3V0ZVNRTCk6CisKIDIwMTkt
MDctMDUgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0
IGNoYW5nZSB0byBibG9jayBwbGF5YmFjayB3aGVuIHByb2Nlc3MgaXMgb3N0ZW5zaWJseSAic3Vz
cGVuZGVkIi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHAKaW5kZXggNTJiMGEwOGZjM2VlNjU4NzkxZTYxZmFjOWQxZjg4ZWEwNTVlZGM4OS4uMDIx
NDVkMGNjMmU4YzllYWRiMGM4ODI5NDFiODU5ZmMwYWU4MDUyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTE5MywxNSArMTkzLDE1
IEBAIHN0YXRpYyBpbmxpbmUgRGF0YWJhc2VHVUlEIGd1aWRGb3JPcmlnaW5BbmROYW1lKGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpCiB9CiAKIERhdGFiYXNlOjpEYXRhYmFzZShEYXRh
YmFzZUNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBl
eHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcg
bG9uZyBlc3RpbWF0ZWRTaXplKQotICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KCpjb250
ZXh0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1fY29udGV4dFRocmVhZFNlY3Vy
aXR5T3JpZ2luKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+aXNv
bGF0ZWRDb3B5KCkpCi0gICAgLCBtX2RhdGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW4obV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5pc29sYXRlZENvcHkoKSkKKyAg
ICA6IG1fZG9jdW1lbnQoKmNvbnRleHQuZG9jdW1lbnQoKSkKKyAgICAsIG1fY29udGV4dFRocmVh
ZFNlY3VyaXR5T3JpZ2luKG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuaXNvbGF0ZWRDb3B5
KCkpCisgICAgLCBtX2RhdGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW4obV9kb2N1bWVudC0+c2Vj
dXJpdHlPcmlnaW4oKS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fZGF0YWJhc2VDb250ZXh0KGNv
bnRleHQpCiAgICAgLCBtX25hbWUoKG5hbWUuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogbmFt
ZSkuaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX2V4cGVjdGVkVmVyc2lvbihleHBlY3RlZFZlcnNp
b24uaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX2Rpc3BsYXlOYW1lKGRpc3BsYXlOYW1lLmlzb2xh
dGVkQ29weSgpKQogICAgICwgbV9lc3RpbWF0ZWRTaXplKGVzdGltYXRlZFNpemUpCi0gICAgLCBt
X2ZpbGVuYW1lKERhdGFiYXNlTWFuYWdlcjo6c2luZ2xldG9uKCkuZnVsbFBhdGhGb3JEYXRhYmFz
ZSgqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBtX25hbWUpKQor
ICAgICwgbV9maWxlbmFtZShEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpLmZ1bGxQYXRoRm9y
RGF0YWJhc2UobV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgbV9uYW1lKSkKICAgICAsIG1f
ZGF0YWJhc2VBdXRob3JpemVyKERhdGFiYXNlQXV0aG9yaXplcjo6Y3JlYXRlKHVucXVhbGlmaWVk
SW5mb1RhYmxlTmFtZSkpCiB7CiAgICAgewpAQCAtMjI2LDE0ICsyMjYsOSBAQCBEYXRhYmFzZVRo
cmVhZCYgRGF0YWJhc2U6OmRhdGFiYXNlVGhyZWFkKCkKIAogRGF0YWJhc2U6On5EYXRhYmFzZSgp
CiB7Ci0gICAgLy8gVGhlIHJlZmVyZW5jZSB0byB0aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBu
ZWVkcyB0byBiZSBjbGVhcmVkIG9uIHRoZSBKYXZhU2NyaXB0IHRocmVhZC4gIElmIHdlJ3JlIG9u
IHRoYXQgdGhyZWFkIGFscmVhZHksIHdlIGNhbiBqdXN0IGxldCB0aGUgUmVmUHRyJ3MgZGVzdHJ1
Y3Rpb24gZG8gdGhlIGRlcmVmZmluZy4KLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+aXNDb250ZXh0VGhyZWFkKCkpIHsKLSAgICAgICAgYXV0byBwYXNzZWRDb250ZXh0ID0gV1RG
TW92ZShtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgICAgICBhdXRvJiBjb250ZXh0UmVm
ID0gcGFzc2VkQ29udGV4dC5nZXQoKTsKLSAgICAgICAgY29udGV4dFJlZi5wb3N0VGFzayh7U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51cFRhc2ssIFtwYXNzZWRDb250ZXh0ID0g
V1RGTW92ZShwYXNzZWRDb250ZXh0KSwgZGF0YWJhc2VDb250ZXh0ID0gV1RGTW92ZShtX2RhdGFi
YXNlQ29udGV4dCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAg
ICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsICZjb250ZXh0ID09IHBhc3NlZENvbnRleHQucHRy
KCkpOwotICAgICAgICB9fSk7Ci0gICAgfQorICAgIC8vIFRoZSByZWZlcmVuY2UgdG8gdGhlIERv
Y3VtZW50IG5lZWRzIHRvIGJlIGNsZWFyZWQgb24gdGhlIEphdmFTY3JpcHQgdGhyZWFkLiBJZiB3
ZSdyZSBvbiB0aGF0IHRocmVhZCBhbHJlYWR5LCB3ZSBjYW4ganVzdCBsZXQgdGhlIFJlZlB0cidz
IGRlc3RydWN0aW9uIGRvIHRoZSBkZXJlZmZpbmcuCisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkK
KyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZG9jdW1lbnQgPSBXVEZNb3ZlKG1fZG9jdW1lbnQp
LCBkYXRhYmFzZUNvbnRleHQgPSBXVEZNb3ZlKG1fZGF0YWJhc2VDb250ZXh0KV0geyB9KTsKIAog
ICAgIC8vIFNRTGl0ZSBpcyAibXVsdGktdGhyZWFkIHNhZmUiLCBidXQgZWFjaCBkYXRhYmFzZSBo
YW5kbGUgY2FuIG9ubHkgYmUgdXNlZAogICAgIC8vIG9uIGEgc2luZ2xlIHRocmVhZCBhdCBhIHRp
bWUuCkBAIC02OTIsOSArNjg3LDggQEAgdm9pZCBEYXRhYmFzZTo6cnVuVHJhbnNhY3Rpb24oUmVm
UHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+JiYgY2FsbGJhY2ssIFJlZlB0cjwKICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKICAgICBpZiAoIW1f
aXNUcmFuc2FjdGlvblF1ZXVlRW5hYmxlZCkgewogICAgICAgICBpZiAoZXJyb3JDYWxsYmFjaykg
ewotICAgICAgICAgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFja1Byb3RlY3RvciA9IFdURk1vdmUoZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgICAgICBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFtlcnJvckNhbGxiYWNrUHJvdGVjdG9y
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAgICAgICAgICAgIGVycm9yQ2FsbGJh
Y2tQcm90ZWN0b3ItPmhhbmRsZUV2ZW50KFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OlVOS05P
V05fRVJSLCAiZGF0YWJhc2UgaGFzIGJlZW4gY2xvc2VkIikpOworICAgICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbZXJyb3JDYWxsYmFjayA9IG1ha2VSZWYoKmVycm9yQ2FsbGJhY2spXSgpIHsK
KyAgICAgICAgICAgICAgICBlcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChTUUxFcnJvcjo6Y3Jl
YXRlKFNRTEVycm9yOjpVTktOT1dOX0VSUiwgImRhdGFiYXNlIGhhcyBiZWVuIGNsb3NlZCIpKTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKQEAgLTcwNyw5ICs3
MDEsOCBAQCB2b2lkIERhdGFiYXNlOjpydW5UcmFuc2FjdGlvbihSZWZQdHI8U1FMVHJhbnNhY3Rp
b25DYWxsYmFjaz4mJiBjYWxsYmFjaywgUmVmUHRyPAogCiB2b2lkIERhdGFiYXNlOjpzY2hlZHVs
ZVRyYW5zYWN0aW9uQ2FsbGJhY2soU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogewotICAg
IFJlZlB0cjxTUUxUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb25Qcm90ZWN0b3IodHJhbnNhY3Rpb24p
OwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RyYW5zYWN0aW9uUHJv
dGVjdG9yXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgdHJhbnNhY3Rpb25Q
cm90ZWN0b3ItPnBlcmZvcm1QZW5kaW5nQ2FsbGJhY2soKTsKKyAgICBjYWxsT25NYWluVGhyZWFk
KFt0cmFuc2FjdGlvbiA9IG1ha2VSZWZQdHIodHJhbnNhY3Rpb24pXSB7CisgICAgICAgIHRyYW5z
YWN0aW9uLT5wZXJmb3JtUGVuZGluZ0NhbGxiYWNrKCk7CiAgICAgfSk7CiB9CiAKQEAgLTc1Nyw3
ICs3NTAsNyBAQCB2b2lkIERhdGFiYXNlOjppbmNyZW1lbnRhbFZhY3V1bUlmTmVlZGVkKCkKIAog
dm9pZCBEYXRhYmFzZTo6bG9nRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsK
LSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OlN0b3JhZ2UsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UpOworICAgIG1fZG9j
dW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlN0b3JhZ2UsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIG1lc3NhZ2UpOwogfQogCiBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6dGFi
bGVOYW1lcygpCkBAIC03NzksNyArNzcyLDcgQEAgVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OnRh
YmxlTmFtZXMoKQogCiBTZWN1cml0eU9yaWdpbkRhdGEgRGF0YWJhc2U6OnNlY3VyaXR5T3JpZ2lu
KCkKIHsKLSAgICBpZiAobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQo
KSkKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpCiAgICAgICAgIHJldHVybiBtX2NvbnRleHRUaHJl
YWRTZWN1cml0eU9yaWdpbi0+ZGF0YSgpOwogICAgIGlmIChkYXRhYmFzZVRocmVhZCgpLmdldFRo
cmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuIG1fZGF0YWJhc2VU
aHJlYWRTZWN1cml0eU9yaWdpbi0+ZGF0YSgpOwpAQCAtNzk4LDcgKzc5MSw3IEBAIHZvaWQgRGF0
YWJhc2U6OmRpZENvbW1pdFdyaXRlVHJhbnNhY3Rpb24oKQogCiBib29sIERhdGFiYXNlOjpkaWRF
eGNlZWRRdW90YSgpCiB7Ci0gICAgQVNTRVJUKGRhdGFiYXNlQ29udGV4dCgpLnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgYXV0byYgdHJhY2tlciA9IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCk7
CiAgICAgYXV0byBvbGRRdW90YSA9IHRyYWNrZXIucXVvdGEoc2VjdXJpdHlPcmlnaW4oKSk7CiAg
ICAgaWYgKGVzdGltYXRlZFNpemUoKSA8PSBvbGRRdW90YSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oCmluZGV4IDJiZGRlMWQ2ODkxZmYyMmEzZmU5
ZjU0ZWU5ZDM3NTI2ODliNzMwNzguLjk3Yjk2NmM0Zjc3MjIyODJkZmI0MDUzOTg0NDBhMjVmNDM1
OTk1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgRGF0YWJhc2VDYWxsYmFjazsKIGNsYXNzIERhdGFi
YXNlQ29udGV4dDsKIGNsYXNzIERhdGFiYXNlRGV0YWlsczsKIGNsYXNzIERhdGFiYXNlVGhyZWFk
OwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIERvY3VtZW50OwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTUUxUcmFuc2FjdGlvbjsKIGNsYXNzIFNRTFRyYW5zYWN0
aW9uQmFja2VuZDsKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAKICAgICBEYXRhYmFzZUNv
bnRleHQmIGRhdGFiYXNlQ29udGV4dCgpIHsgcmV0dXJuIG1fZGF0YWJhc2VDb250ZXh0OyB9CiAg
ICAgRGF0YWJhc2VUaHJlYWQmIGRhdGFiYXNlVGhyZWFkKCk7Ci0gICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsgfQorICAgIERvY3VtZW50JiBkb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1l
bnQ7IH0KICAgICB2b2lkIGxvZ0Vycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwog
CiAgICAgVmVjdG9yPFN0cmluZz4gdGFibGVOYW1lcygpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHBy
aXZhdGU6CiAgICAgU3RyaW5nIGRhdGFiYXNlRGVidWdOYW1lKCkgY29uc3Q7CiAjZW5kaWYKIAot
ICAgIFJlZjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CisgICAgUmVmPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZjxTZWN1cml0eU9yaWdpbj4g
bV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW47CiAgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBt
X2RhdGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW47CiAgICAgUmVmPERhdGFiYXNlQ29udGV4dD4g
bV9kYXRhYmFzZUNvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKaW5kZXggNDk3MTMxYzI3MGI0OTg4YzI4MDYx
MjM2NGRlNGU5MmM3YmRhNGY5OC4uNDgyMjA0ZTVhYzI0NTRiYjliYTMxYjBhZmI4MDE3YWIzZWE2
NmM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VDb250ZXh0LmNwcApAQCAtOTQsMTQgKzk0LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIC8vIERhdGFiYXNlQ29udGV4dCB3aWxsIG91dGxpdmUgYm90aCByZWdhcmRsZXNzIG9mIHdo
aWNoIG9mIHRoZSAyIGRlc3RydWN0cyBmaXJzdC4KIAogCi1EYXRhYmFzZUNvbnRleHQ6OkRhdGFi
YXNlQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotICAgIDogQWN0aXZl
RE9NT2JqZWN0KCZjb250ZXh0KQorRGF0YWJhc2VDb250ZXh0OjpEYXRhYmFzZUNvbnRleHQoRG9j
dW1lbnQmIGRvY3VtZW50KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQogewogICAg
IC8vIEFjdGl2ZURPTU9iamVjdCBleHBlY3RzIHRoaXMgdG8gYmUgY2FsbGVkIHRvIHNldCBpbnRl
cm5hbCBmbGFncy4KICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIAotICAgIEFTU0VSVCghY29udGV4
dC5kYXRhYmFzZUNvbnRleHQoKSk7Ci0gICAgY29udGV4dC5zZXREYXRhYmFzZUNvbnRleHQodGhp
cyk7CisgICAgQVNTRVJUKCFkb2N1bWVudC5kYXRhYmFzZUNvbnRleHQoKSk7CisgICAgZG9jdW1l
bnQuc2V0RGF0YWJhc2VDb250ZXh0KHRoaXMpOwogfQogCiBEYXRhYmFzZUNvbnRleHQ6On5EYXRh
YmFzZUNvbnRleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VDb250ZXh0LmgKaW5kZXggNGY1MmQ3YTVmYTQyMjNlY2I4YTM2NDZmMGIyY2Fj
ZDFjNDUzMzIyYS4uODI3YTAxZTdjZmJmYzNhNjhhOTQ4NzAzZDA0MzZiMzM3OGM1YjZlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29u
dGV4dC5oCkBAIC02MCwxMyArNjAsMTMgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dEYXRhYmFz
ZUFjY2VzcygpIGNvbnN0OwogICAgIHZvaWQgZGF0YWJhc2VFeGNlZWRlZFF1b3RhKGNvbnN0IFN0
cmluZyYgbmFtZSwgRGF0YWJhc2VEZXRhaWxzKTsKIAotICAgIHVzaW5nIEFjdGl2ZURPTU9iamVj
dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25z
dCB7IHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOyB9CiAgICAgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0
eU9yaWdpbigpIGNvbnN0OwogCiAgICAgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBjb25zdDsKIAog
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBEYXRhYmFzZUNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpOworICAgIGV4cGxpY2l0IERhdGFiYXNlQ29udGV4dChEb2N1bWVudCYpOwogCiAgICAg
dm9pZCBzdG9wRGF0YWJhc2VzKCkgeyBzdG9wRGF0YWJhc2VzKG51bGxwdHIpOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2Vy
LmNwcAppbmRleCAzMzk0MDliNjE2YzNjMDQzYjVlYjVkODkzZjkzNzA4MTljOGJlYTdmLi4wNWRm
YTM3OTJkNDQwYzZhMzFlZGY5Yjg4MWRiZGYxOThlN2I4YzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0z
MSwxMSArMzEsMTEgQEAKICNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJE
YXRhYmFzZVRhc2suaCIKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5E
YXRhLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC05NywzMSArOTcsMzEg
QEAgdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldElzQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxlKQog
ICAgIG1fZGF0YWJhc2VJc0F2YWlsYWJsZSA9IGF2YWlsYWJsZTsKIH0KIAotUmVmPERhdGFiYXNl
Q29udGV4dD4gRGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZUNvbnRleHQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkKK1JlZjxEYXRhYmFzZUNvbnRleHQ+IERhdGFiYXNlTWFuYWdlcjo6
ZGF0YWJhc2VDb250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBpZiAoYXV0byBkYXRh
YmFzZUNvbnRleHQgPSBjb250ZXh0LmRhdGFiYXNlQ29udGV4dCgpKQorICAgIGlmIChhdXRvIGRh
dGFiYXNlQ29udGV4dCA9IGRvY3VtZW50LmRhdGFiYXNlQ29udGV4dCgpKQogICAgICAgICByZXR1
cm4gKmRhdGFiYXNlQ29udGV4dDsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhYmFzZUNv
bnRleHQoY29udGV4dCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFiYXNlQ29udGV4
dChkb2N1bWVudCkpOwogfQogCiAjaWYgTE9HX0RJU0FCTEVECiAKLXN0YXRpYyBpbmxpbmUgdm9p
ZCBsb2dPcGVuRGF0YWJhc2VFcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3Ry
aW5nJikKK3N0YXRpYyBpbmxpbmUgdm9pZCBsb2dPcGVuRGF0YWJhc2VFcnJvcihEb2N1bWVudCYs
IGNvbnN0IFN0cmluZyYpCiB7CiB9CiAKICNlbHNlCiAKLXN0YXRpYyB2b2lkIGxvZ09wZW5EYXRh
YmFzZUVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
bmFtZSkKK3N0YXRpYyB2b2lkIGxvZ09wZW5EYXRhYmFzZUVycm9yKERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2Ug
JXMgZm9yIG9yaWdpbiAlcyBub3QgYWxsb3dlZCB0byBiZSBlc3RhYmxpc2hlZCIsIG5hbWUudXRm
OCgpLmRhdGEoKSwgY29udGV4dC5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2UgJXMgZm9yIG9yaWdpbiAlcyBu
b3QgYWxsb3dlZCB0byBiZSBlc3RhYmxpc2hlZCIsIG5hbWUudXRmOCgpLmRhdGEoKSwgZG9jdW1l
bnQuc2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQogCiAjZW5k
aWYKIAotRXhjZXB0aW9uT3I8UmVmPERhdGFiYXNlPj4gRGF0YWJhc2VNYW5hZ2VyOjpvcGVuRGF0
YWJhc2VCYWNrZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlz
cGxheU5hbWUsIHVuc2lnbmVkIGVzdGltYXRlZFNpemUsIGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0
YWJhc2UpCitFeGNlcHRpb25PcjxSZWY8RGF0YWJhc2U+PiBEYXRhYmFzZU1hbmFnZXI6Om9wZW5E
YXRhYmFzZUJhY2tlbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1
bnNpZ25lZCBlc3RpbWF0ZWRTaXplLCBib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlKQogewot
ICAgIGF1dG8gYmFja2VuZCA9IHRyeVRvT3BlbkRhdGFiYXNlQmFja2VuZChjb250ZXh0LCBuYW1l
LCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBzZXRWZXJzaW9u
SW5OZXdEYXRhYmFzZSwgRmlyc3RUcnlUb09wZW5EYXRhYmFzZSk7CisgICAgYXV0byBiYWNrZW5k
ID0gdHJ5VG9PcGVuRGF0YWJhc2VCYWNrZW5kKGRvY3VtZW50LCBuYW1lLCBleHBlY3RlZFZlcnNp
b24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwg
Rmlyc3RUcnlUb09wZW5EYXRhYmFzZSk7CiAKICAgICBpZiAoYmFja2VuZC5oYXNFeGNlcHRpb24o
KSkgewogICAgICAgICBpZiAoYmFja2VuZC5leGNlcHRpb24oKS5jb2RlKCkgPT0gUXVvdGFFeGNl
ZWRlZEVycm9yKSB7CkBAIC0xMjksMzkgKzEyOSwzMSBAQCBFeGNlcHRpb25PcjxSZWY8RGF0YWJh
c2U+PiBEYXRhYmFzZU1hbmFnZXI6Om9wZW5EYXRhYmFzZUJhY2tlbmQoU2NyaXB0RXhlY3V0aW9u
QwogICAgICAgICAgICAgLy8gVGhlIGNsaWVudCBtYXkgd2FudCB0byBpbmNyZWFzZSB0aGUgcXVv
dGEsIGFuZCB3ZSdsbCBnaXZlIGl0CiAgICAgICAgICAgICAvLyBvbmUgbW9yZSB0cnkgYWZ0ZXIg
aWYgdGhhdCBpcyB0aGUgY2FzZS4KICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBG
SVhNRTogV2hhdCBndWFyYW50ZWVzIGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSBpcyBub24tbnVs
bD8KLSAgICAgICAgICAgICAgICBQcm9wb3NlZERhdGFiYXNlIHByb3Bvc2VkRGF0YWJhc2UgeyAq
dGhpcywgKmNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGlt
YXRlZFNpemUgfTsKLSAgICAgICAgICAgICAgICB0aGlzLT5kYXRhYmFzZUNvbnRleHQoY29udGV4
dCktPmRhdGFiYXNlRXhjZWVkZWRRdW90YShuYW1lLCBwcm9wb3NlZERhdGFiYXNlLmRldGFpbHMo
KSk7CisgICAgICAgICAgICAgICAgUHJvcG9zZWREYXRhYmFzZSBwcm9wb3NlZERhdGFiYXNlIHsg
KnRoaXMsIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCksIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3Rp
bWF0ZWRTaXplIH07CisgICAgICAgICAgICAgICAgdGhpcy0+ZGF0YWJhc2VDb250ZXh0KGRvY3Vt
ZW50KS0+ZGF0YWJhc2VFeGNlZWRlZFF1b3RhKG5hbWUsIHByb3Bvc2VkRGF0YWJhc2UuZGV0YWls
cygpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJhY2tlbmQgPSB0cnlUb09wZW5EYXRh
YmFzZUJhY2tlbmQoY29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwg
ZXN0aW1hdGVkU2l6ZSwgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIFJldHJ5T3BlbkRhdGFiYXNl
KTsKKyAgICAgICAgICAgIGJhY2tlbmQgPSB0cnlUb09wZW5EYXRhYmFzZUJhY2tlbmQoZG9jdW1l
bnQsIG5hbWUsIGV4cGVjdGVkVmVyc2lvbiwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUsIHNl
dFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBSZXRyeU9wZW5EYXRhYmFzZSk7CiAgICAgICAgIH0KICAg
ICB9CiAKICAgICBpZiAoYmFja2VuZC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBpZiAoYmFj
a2VuZC5leGNlcHRpb24oKS5jb2RlKCkgPT0gSW52YWxpZFN0YXRlRXJyb3IpCi0gICAgICAgICAg
ICBsb2dFcnJvck1lc3NhZ2UoY29udGV4dCwgYmFja2VuZC5leGNlcHRpb24oKS5tZXNzYWdlKCkp
OworICAgICAgICAgICAgbG9nRXJyb3JNZXNzYWdlKGRvY3VtZW50LCBiYWNrZW5kLmV4Y2VwdGlv
bigpLm1lc3NhZ2UoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvZ09wZW5EYXRhYmFz
ZUVycm9yKGNvbnRleHQsIG5hbWUpOworICAgICAgICAgICAgbG9nT3BlbkRhdGFiYXNlRXJyb3Io
ZG9jdW1lbnQsIG5hbWUpOwogICAgIH0KIAogICAgIHJldHVybiBiYWNrZW5kOwogfQogCi1FeGNl
cHRpb25PcjxSZWY8RGF0YWJhc2U+PiBEYXRhYmFzZU1hbmFnZXI6OnRyeVRvT3BlbkRhdGFiYXNl
QmFja2VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRDb250ZXh0LCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRp
c3BsYXlOYW1lLCB1bnNpZ25lZCBlc3RpbWF0ZWRTaXplLCBib29sIHNldFZlcnNpb25Jbk5ld0Rh
dGFiYXNlLAorRXhjZXB0aW9uT3I8UmVmPERhdGFiYXNlPj4gRGF0YWJhc2VNYW5hZ2VyOjp0cnlU
b09wZW5EYXRhYmFzZUJhY2tlbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCB1bnNpZ25lZCBlc3RpbWF0ZWRTaXplLCBib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNl
LAogICAgIE9wZW5BdHRlbXB0IGF0dGVtcHQpCiB7Ci0gICAgaWYgKGlzPERvY3VtZW50Pigmc2Ny
aXB0Q29udGV4dCkpIHsKLSAgICAgICAgYXV0byogcGFnZSA9IGRvd25jYXN0PERvY3VtZW50Pihz
Y3JpcHRDb250ZXh0KS5wYWdlKCk7Ci0gICAgICAgIGlmICghcGFnZSB8fCBwYWdlLT51c2VzRXBo
ZW1lcmFsU2Vzc2lvbigpKQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5
RXJyb3IgfTsKLSAgICB9Ci0KLSAgICBpZiAoc2NyaXB0Q29udGV4dC5pc1dvcmtlckdsb2JhbFNj
b3BlKCkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgYXV0byogcGFnZSA9
IGRvY3VtZW50LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UgfHwgcGFnZS0+dXNlc0VwaGVtZXJhbFNl
c3Npb24oKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKLSAg
ICB9CiAKLSAgICBhdXRvIGJhY2tlbmRDb250ZXh0ID0gdGhpcy0+ZGF0YWJhc2VDb250ZXh0KHNj
cmlwdENvbnRleHQpOworICAgIGF1dG8gYmFja2VuZENvbnRleHQgPSB0aGlzLT5kYXRhYmFzZUNv
bnRleHQoZG9jdW1lbnQpOwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcHJlZmxpZ2h0UmVzdWx0
OwogICAgIHN3aXRjaCAoYXR0ZW1wdCkgewpAQCAtMTk4LDI1ICsxOTAsMjUgQEAgdm9pZCBEYXRh
YmFzZU1hbmFnZXI6OnJlbW92ZVByb3Bvc2VkRGF0YWJhc2UoUHJvcG9zZWREYXRhYmFzZSYgZGF0
YWJhc2UpCiAgICAgbV9wcm9wb3NlZERhdGFiYXNlcy5yZW1vdmUoJmRhdGFiYXNlKTsKIH0KIAot
RXhjZXB0aW9uT3I8UmVmPERhdGFiYXNlPj4gRGF0YWJhc2VNYW5hZ2VyOjpvcGVuRGF0YWJhc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5z
aWduZWQgZXN0aW1hdGVkU2l6ZSwgUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+JiYgY3JlYXRpb25D
YWxsYmFjaykKK0V4Y2VwdGlvbk9yPFJlZjxEYXRhYmFzZT4+IERhdGFiYXNlTWFuYWdlcjo6b3Bl
bkRhdGFiYXNlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWdu
ZWQgZXN0aW1hdGVkU2l6ZSwgUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+JiYgY3JlYXRpb25DYWxs
YmFjaykKIHsKICAgICBTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAK
ICAgICBib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlID0gIWNyZWF0aW9uQ2FsbGJhY2s7Ci0g
ICAgYXV0byBvcGVuUmVzdWx0ID0gb3BlbkRhdGFiYXNlQmFja2VuZChjb250ZXh0LCBuYW1lLCBl
eHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBzZXRWZXJzaW9uSW5O
ZXdEYXRhYmFzZSk7CisgICAgYXV0byBvcGVuUmVzdWx0ID0gb3BlbkRhdGFiYXNlQmFja2VuZChk
b2N1bWVudCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6
ZSwgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UpOwogICAgIGlmIChvcGVuUmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gb3BlblJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAK
ICAgICBSZWZQdHI8RGF0YWJhc2U+IGRhdGFiYXNlID0gb3BlblJlc3VsdC5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKIAotICAgIGF1dG8gZGF0YWJhc2VDb250ZXh0ID0gdGhpcy0+ZGF0YWJhc2VDb250
ZXh0KGNvbnRleHQpOworICAgIGF1dG8gZGF0YWJhc2VDb250ZXh0ID0gdGhpcy0+ZGF0YWJhc2VD
b250ZXh0KGRvY3VtZW50KTsKICAgICBkYXRhYmFzZUNvbnRleHQtPnNldEhhc09wZW5EYXRhYmFz
ZXMoKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFzZSgqZGF0
YWJhc2UpOwogCiAgICAgaWYgKGRhdGFiYXNlLT5pc05ldygpICYmIGNyZWF0aW9uQ2FsbGJhY2su
Z2V0KCkpIHsKICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIERhdGFiYXNlQ3Jl
YXRpb25DYWxsYmFja1Rhc2sgZm9yIGRhdGFiYXNlICVwXG4iLCBkYXRhYmFzZS5nZXQoKSk7CiAg
ICAgICAgIGRhdGFiYXNlLT5zZXRIYXNQZW5kaW5nQ3JlYXRpb25FdmVudCh0cnVlKTsKLSAgICAg
ICAgZGF0YWJhc2UtPm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW2NyZWF0aW9u
Q2FsbGJhY2ssIGRhdGFiYXNlXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICAgICAg
ZGF0YWJhc2UtPm1fZG9jdW1lbnQtPnBvc3RUYXNrKFtjcmVhdGlvbkNhbGxiYWNrLCBkYXRhYmFz
ZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgICAgICBjcmVhdGlvbkNhbGxi
YWNrLT5oYW5kbGVFdmVudCgqZGF0YWJhc2UpOwogICAgICAgICAgICAgZGF0YWJhc2UtPnNldEhh
c1BlbmRpbmdDcmVhdGlvbkV2ZW50KGZhbHNlKTsKICAgICAgICAgfSk7CkBAIC0yMjUsMTUgKzIx
NywxNSBAQCBFeGNlcHRpb25PcjxSZWY8RGF0YWJhc2U+PiBEYXRhYmFzZU1hbmFnZXI6Om9wZW5E
YXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JgogICAgIHJldHVybiBkYXRhYmFzZS5yZWxl
YXNlTm9uTnVsbCgpOwogfQogCi1ib29sIERhdGFiYXNlTWFuYWdlcjo6aGFzT3BlbkRhdGFiYXNl
cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQorYm9vbCBEYXRhYmFzZU1hbmFnZXI6
Omhhc09wZW5EYXRhYmFzZXMoRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIGF1dG8gZGF0YWJh
c2VDb250ZXh0ID0gY29udGV4dC5kYXRhYmFzZUNvbnRleHQoKTsKKyAgICBhdXRvIGRhdGFiYXNl
Q29udGV4dCA9IGRvY3VtZW50LmRhdGFiYXNlQ29udGV4dCgpOwogICAgIHJldHVybiBkYXRhYmFz
ZUNvbnRleHQgJiYgZGF0YWJhc2VDb250ZXh0LT5oYXNPcGVuRGF0YWJhc2VzKCk7CiB9CiAKLXZv
aWQgRGF0YWJhc2VNYW5hZ2VyOjpzdG9wRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIERhdGFiYXNlVGFza1N5bmNocm9uaXplciogc3luY2hyb25pemVyKQordm9pZCBE
YXRhYmFzZU1hbmFnZXI6OnN0b3BEYXRhYmFzZXMoRG9jdW1lbnQmIGRvY3VtZW50LCBEYXRhYmFz
ZVRhc2tTeW5jaHJvbml6ZXIqIHN5bmNocm9uaXplcikKIHsKLSAgICBhdXRvIGRhdGFiYXNlQ29u
dGV4dCA9IGNvbnRleHQuZGF0YWJhc2VDb250ZXh0KCk7CisgICAgYXV0byBkYXRhYmFzZUNvbnRl
eHQgPSBkb2N1bWVudC5kYXRhYmFzZUNvbnRleHQoKTsKICAgICBpZiAoIWRhdGFiYXNlQ29udGV4
dCB8fCAhZGF0YWJhc2VDb250ZXh0LT5zdG9wRGF0YWJhc2VzKHN5bmNocm9uaXplcikpIHsKICAg
ICAgICAgaWYgKHN5bmNocm9uaXplcikKICAgICAgICAgICAgIHN5bmNocm9uaXplci0+dGFza0Nv
bXBsZXRlZCgpOwpAQCAtMjY3LDkgKzI1OSw5IEBAIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZU1h
bmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjCiAg
ICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGV0YWlsc0Zvck5hbWVBbmRP
cmlnaW4obmFtZSwgb3JpZ2luLmRhdGEoKSk7CiB9CiAKLXZvaWQgRGF0YWJhc2VNYW5hZ2VyOjps
b2dFcnJvck1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQordm9pZCBEYXRhYmFzZU1hbmFnZXI6OmxvZ0Vycm9yTWVzc2FnZShEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBjb250ZXh0LmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlN0b3JhZ2UsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIG1lc3NhZ2UpOworICAgIGRvY3VtZW50LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OlN0b3JhZ2UsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UpOwogfQogCiAjaWYgIVBM
QVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VNYW5hZ2VyLmgKaW5kZXggOTEzMjJlNWEyMjNkMjRiOTQ1NjI1Nzg1NTMyNzIy
MmFhZDE2ZTdhZS4uYWE0M2ViZWY4OWMyODg0YjExNzhjMmY5ZmZlOWYxYmYwMWZhODgxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFu
YWdlci5oCkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIERhdGFiYXNlQ2FsbGJhY2s7CiBjbGFzcyBE
YXRhYmFzZUNvbnRleHQ7CiBjbGFzcyBEYXRhYmFzZU1hbmFnZXJDbGllbnQ7CiBjbGFzcyBEYXRh
YmFzZVRhc2tTeW5jaHJvbml6ZXI7CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEV4Y2VwdGlvbjsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIHN0
cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiAKIGNsYXNzIERhdGFiYXNlTWFuYWdlciB7CkBAIC01
NSwxNCArNTUsMTQgQEAgcHVibGljOgogICAgIGJvb2wgaXNBdmFpbGFibGUoKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldElzQXZhaWxhYmxlKGJvb2wpOwogCi0gICAgLy8gVGhpcyBnZXRz
IGEgRGF0YWJhc2VDb250ZXh0IGZvciB0aGUgc3BlY2lmaWVkIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuCisgICAgLy8gVGhpcyBnZXRzIGEgRGF0YWJhc2VDb250ZXh0IGZvciB0aGUgc3BlY2lmaWVk
IERvY3VtZW50LgogICAgIC8vIElmIG9uZSBkb2Vzbid0IGFscmVhZHkgZXhpc3QsIGl0IHdpbGwg
Y3JlYXRlIGEgbmV3IG9uZS4KLSAgICBSZWY8RGF0YWJhc2VDb250ZXh0PiBkYXRhYmFzZUNvbnRl
eHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIFJlZjxEYXRhYmFzZUNvbnRleHQ+IGRh
dGFiYXNlQ29udGV4dChEb2N1bWVudCYpOwogCi0gICAgRXhjZXB0aW9uT3I8UmVmPERhdGFiYXNl
Pj4gb3BlbkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCB1bnNpZ25lZCBlc3RpbWF0ZWRTaXplLCBSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4mJik7
CisgICAgRXhjZXB0aW9uT3I8UmVmPERhdGFiYXNlPj4gb3BlbkRhdGFiYXNlKERvY3VtZW50Jiwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3Qg
U3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgZXN0aW1hdGVkU2l6ZSwgUmVmUHRyPERhdGFi
YXNlQ2FsbGJhY2s+JiYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNPcGVuRGF0YWJh
c2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKLSAgICB2b2lkIHN0b3BEYXRhYmFzZXMoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIERhdGFiYXNlVGFza1N5bmNocm9uaXplciopOworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaGFzT3BlbkRhdGFiYXNlcyhEb2N1bWVudCYpOworICAgIHZvaWQg
c3RvcERhdGFiYXNlcyhEb2N1bWVudCYsIERhdGFiYXNlVGFza1N5bmNocm9uaXplciopOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlPcmln
aW4mLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QgPSB0cnVl
KTsKIApAQCAtNzUsMTQgKzc1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpOwogCiAgICAgZW51bSBPcGVuQXR0ZW1w
dCB7IEZpcnN0VHJ5VG9PcGVuRGF0YWJhc2UsIFJldHJ5T3BlbkRhdGFiYXNlIH07Ci0gICAgRXhj
ZXB0aW9uT3I8UmVmPERhdGFiYXNlPj4gb3BlbkRhdGFiYXNlQmFja2VuZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVy
c2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgZXN0aW1hdGVkU2l6ZSwg
Ym9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPERhdGFi
YXNlPj4gdHJ5VG9PcGVuRGF0YWJhc2VCYWNrZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLCBjb25zdCBT
dHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBlc3RpbWF0ZWRTaXplLCBib29sIHNldFZlcnNp
b25Jbk5ld0RhdGFiYXNlLCBPcGVuQXR0ZW1wdCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPERhdGFi
YXNlPj4gb3BlbkRhdGFiYXNlQmFja2VuZChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUs
IHVuc2lnbmVkIGVzdGltYXRlZFNpemUsIGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UpOwor
ICAgIEV4Y2VwdGlvbk9yPFJlZjxEYXRhYmFzZT4+IHRyeVRvT3BlbkRhdGFiYXNlQmFja2VuZChE
b2N1bWVudCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNp
b24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGVzdGltYXRlZFNpemUsIGJv
b2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIE9wZW5BdHRlbXB0KTsKIAogICAgIGNsYXNzIFBy
b3Bvc2VkRGF0YWJhc2U7CiAgICAgdm9pZCBhZGRQcm9wb3NlZERhdGFiYXNlKFByb3Bvc2VkRGF0
YWJhc2UmKTsKICAgICB2b2lkIHJlbW92ZVByb3Bvc2VkRGF0YWJhc2UoUHJvcG9zZWREYXRhYmFz
ZSYpOwogCi0gICAgc3RhdGljIHZvaWQgbG9nRXJyb3JNZXNzYWdlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHN0YXRpYyB2b2lkIGxvZ0Vycm9y
TWVzc2FnZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKICAgICBEYXRhYmFz
ZU1hbmFnZXJDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwogICAgIGJvb2wgbV9kYXRhYmFz
ZUlzQXZhaWxhYmxlIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwCmluZGV4IDdlMTNkMDYwYjM1MTZkMjVlMGIyM2M5
ZGQ2NDA0ZjdhYjA2MzViYjIuLjRjMjk2MTU4YWQyOWRiY2U1ZjA1MDZkY2NlNjcxMjlhMWMzYTk1
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3Rh
dGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0
YXRlbWVudC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJTUUxTdGF0ZW1lbnQuaCIK
IAogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU1FMRXJyb3IuaCIKICNpbmNsdWRlICJTUUxSZXN1bHRT
ZXQuaCIKQEAgLTc3LDggKzc4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU1FMU3RhdGVtZW50
OjpTUUxTdGF0ZW1lbnQoRGF0YWJhc2UmIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIHN0YXRlbWVu
dCwgVmVjdG9yPFNRTFZhbHVlPiYmIGFyZ3VtZW50cywgUmVmUHRyPFNRTFN0YXRlbWVudENhbGxi
YWNrPiYmIGNhbGxiYWNrLCBSZWZQdHI8U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjaz4mJiBlcnJv
ckNhbGxiYWNrLCBpbnQgcGVybWlzc2lvbnMpCiAgICAgOiBtX3N0YXRlbWVudChzdGF0ZW1lbnQu
aXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX2FyZ3VtZW50cyhXVEZNb3ZlKGFyZ3VtZW50cykpCi0g
ICAgLCBtX3N0YXRlbWVudENhbGxiYWNrV3JhcHBlcihXVEZNb3ZlKGNhbGxiYWNrKSwgJmRhdGFi
YXNlLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1fc3RhdGVtZW50RXJyb3JDYWxs
YmFja1dyYXBwZXIoV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgJmRhdGFiYXNlLnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSkKKyAgICAsIG1fc3RhdGVtZW50Q2FsbGJhY2tXcmFwcGVyKFdURk1vdmUo
Y2FsbGJhY2spLCAmZGF0YWJhc2UuZG9jdW1lbnQoKSkKKyAgICAsIG1fc3RhdGVtZW50RXJyb3JD
YWxsYmFja1dyYXBwZXIoV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgJmRhdGFiYXNlLmRvY3VtZW50
KCkpCiAgICAgLCBtX3Blcm1pc3Npb25zKHBlcm1pc3Npb25zKQogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAppbmRl
eCBhMTljNzc2NTY2ZTk3MzM1MTFkMjM4NWUyYmNmZmQwYTkwOTE1NTI1Li4yMGQ2OTczNDc3NGRi
ZmJmMzBiZDhmMzljZTRjNTk1NzIxNGU5MDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFk
LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiT3JpZ2luTG9jay5oIgogI2luY2x1ZGUg
IlNRTEVycm9yLmgiCkBAIC01OSw5ICs2MCw5IEBAIFJlZjxTUUxUcmFuc2FjdGlvbj4gU1FMVHJh
bnNhY3Rpb246OmNyZWF0ZShSZWY8RGF0YWJhc2U+JiYgZGF0YWJhc2UsIFJlZlB0cjxTUUxUCiAK
IFNRTFRyYW5zYWN0aW9uOjpTUUxUcmFuc2FjdGlvbihSZWY8RGF0YWJhc2U+JiYgZGF0YWJhc2Us
IFJlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrLCBSZWZQdHI8Vm9pZENh
bGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxs
YmFjaz4mJiBlcnJvckNhbGxiYWNrLCBSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiYmIHdy
YXBwZXIsIGJvb2wgcmVhZE9ubHkpCiAgICAgOiBtX2RhdGFiYXNlKFdURk1vdmUoZGF0YWJhc2Up
KQotICAgICwgbV9jYWxsYmFja1dyYXBwZXIoV1RGTW92ZShjYWxsYmFjayksICZtX2RhdGFiYXNl
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX3N1Y2Nlc3NDYWxsYmFja1dyYXBw
ZXIoV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCAmbV9kYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKQotICAgICwgbV9lcnJvckNhbGxiYWNrV3JhcHBlcihXVEZNb3ZlKGVycm9yQ2Fs
bGJhY2spLCAmbV9kYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICwgbV9j
YWxsYmFja1dyYXBwZXIoV1RGTW92ZShjYWxsYmFjayksICZtX2RhdGFiYXNlLT5kb2N1bWVudCgp
KQorICAgICwgbV9zdWNjZXNzQ2FsbGJhY2tXcmFwcGVyKFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNr
KSwgJm1fZGF0YWJhc2UtPmRvY3VtZW50KCkpCisgICAgLCBtX2Vycm9yQ2FsbGJhY2tXcmFwcGVy
KFdURk1vdmUoZXJyb3JDYWxsYmFjayksICZtX2RhdGFiYXNlLT5kb2N1bWVudCgpKQogICAgICwg
bV93cmFwcGVyKFdURk1vdmUod3JhcHBlcikpCiAgICAgLCBtX25leHRTdGVwKCZTUUxUcmFuc2Fj
dGlvbjo6YWNxdWlyZUxvY2spCiAgICAgLCBtX3JlYWRPbmx5KHJlYWRPbmx5KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4
IGIyZDE1Y2U4NmRkYWQ2ZGNiYmNlZWI0NDJhNWM5MjZjNjRjYzNmYzYuLjk3OTFhODY1MGI0OTlm
NGIwYmY1ZmJhZDNjYjhhYTZkMzYwZWUyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTEyMDEsNyArMTIwMSw3IEBA
IGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lDYWNoZWRS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkT3BlbkRhdGFiYXNlKERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAgICBGQVNUX1JF
VFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoYXV0byogaW5zdHJ1bWVudGlu
Z0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGRhdGFiYXNlLnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkpCisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBp
bnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChkYXRhYmFzZS5kb2N1bWVudCgpKSkKICAgICAg
ICAgZGlkT3BlbkRhdGFiYXNlSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZGF0YWJhc2UpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCA1ZjczMGIwZDRhODUxMmQwZWJkNTI2NjI5OTQ5
N2NlZjQyZDQ3NjBhLi5jODIxZTA2MmQwZDZiNDg4MTY1OGRmMjkxNDc0NWUxZjc5MDRiMjJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFi
YXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudC5jcHAKQEAgLTI3OCw5ICsyNzgsOSBAQCB2b2lkIEluc3BlY3RvckRh
dGFiYXNlQWdlbnQ6OmV4ZWN1dGVTUUwoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBjb25zdCBT
dHJpbmcmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkYXRhYmFzZS0+dHJhbnNhY3Rp
b24oVHJhbnNhY3Rpb25DYWxsYmFjazo6Y3JlYXRlKCZkYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBxdWVyeSwgcmVxdWVzdENhbGxiYWNrLmNvcHlSZWYoKSksCi0gICAgICAgIFRy
YW5zYWN0aW9uRXJyb3JDYWxsYmFjazo6Y3JlYXRlKCZkYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCByZXF1ZXN0Q2FsbGJhY2suY29weVJlZigpKSwKLSAgICAgICAgVHJhbnNhY3Rp
b25TdWNjZXNzQ2FsbGJhY2s6OmNyZWF0ZSgmZGF0YWJhc2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSkpOworICAgIGRhdGFiYXNlLT50cmFuc2FjdGlvbihUcmFuc2FjdGlvbkNhbGxiYWNrOjpj
cmVhdGUoJmRhdGFiYXNlLT5kb2N1bWVudCgpLCBxdWVyeSwgcmVxdWVzdENhbGxiYWNrLmNvcHlS
ZWYoKSksCisgICAgICAgIFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazo6Y3JlYXRlKCZkYXRhYmFz
ZS0+ZG9jdW1lbnQoKSwgcmVxdWVzdENhbGxiYWNrLmNvcHlSZWYoKSksCisgICAgICAgIFRyYW5z
YWN0aW9uU3VjY2Vzc0NhbGxiYWNrOjpjcmVhdGUoJmRhdGFiYXNlLT5kb2N1bWVudCgpKSk7CiB9
CiAKIFN0cmluZyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkYXRhYmFzZUlkKERhdGFiYXNlJiBk
YXRhYmFzZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>