<?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>27697</bug_id>
          
          <creation_ts>2009-07-27 00:15:42 -0700</creation_ts>
          <short_desc>WorkerThread needs to be refactored to separate out dedicated-worker functionality</short_desc>
          <delta_ts>2009-07-28 17:35:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrew Wilson">atwilson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>levin</cc>
    
    <cc>pkasting</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>134851</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-27 00:15:42 -0700</bug_when>
    <thetext>The current WorkerThread implementation contains some functionality that is only used for dedicated workers.

We need to factor out this extra functionality into a separate DerivedWorkerThread derived class so we can create SharedWorkerThread using a common base class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134852</commentid>
    <comment_count>1</comment_count>
      <attachid>33522</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-27 00:41:04 -0700</bug_when>
    <thetext>Created attachment 33522
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135142</commentid>
    <comment_count>2</comment_count>
      <attachid>33522</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-28 02:21:17 -0700</bug_when>
    <thetext>Comment on attachment 33522
proposed patch


&gt; diff --git a/WebCore/workers/WorkerThread.h b/WebCore/workers/WorkerThread.h
&gt; +        WorkerContext* workerContext() { return m_workerContext.get(); }

Can this ever return 0?

If not, consider making it return WorkerContext&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135339</commentid>
    <comment_count>3</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-28 13:17:34 -0700</bug_when>
    <thetext>The worker thread can outlive the worker context (and it certainly predates the worker context - see WorkerThread::stop()) so I think returning a (possibly null) pointer from workerThread() is appropriate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135431</commentid>
    <comment_count>4</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-28 17:28:38 -0700</bug_when>
    <thetext>Fixed in r46507.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135435</commentid>
    <comment_count>5</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-28 17:35:10 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/46507

With gtk (only) build fix committed as http://trac.webkit.org/changeset/46509</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33522</attachid>
            <date>2009-07-27 00:41:04 -0700</date>
            <delta_ts>2009-07-28 02:21:17 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>x</filename>
            <type>text/plain</type>
            <size>31638</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzZjZDc5MS4uNjdlYmU5MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OCBAQAorMjAwOS0wNy0yNyAgRHJldyBXaWxzb24g
IDxhdHdpbHNvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlZmFjdG9yZWQgZGVkaWNhdGVkLXdvcmtlci1zcGVjaWZpYyBjb2Rl
IGZyb20gV29ya2VyVGhyZWFkIGludG8gRGVkaWNhdGVkV29ya2VyVGhyZWFkIGNsYXNzLgorCisg
ICAgICAgIFdvcmtlclRocmVhZCBuZWVkcyB0byBiZSByZWZhY3RvcmVkIHRvIHNlcGFyYXRlIG91
dCBkZWRpY2F0ZWQtd29ya2VyIGZ1bmN0aW9uYWxpdHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzY5NworCisgICAgICAgIFRoaXMgaXMganVzdCBh
IHJlZmFjdG9yaW5nLCBzbyBleGlzdGluZyB0ZXN0cyBzdWZmaWNlLgorCisgICAgICAgICogR05V
bWFrZWZpbGUuYW06CisgICAgICAgIEFkZGVkIERlZGljYXRlZFdvcmtlclRocmVhZC5oLy5jcHAK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgIEFkZGVkIERlZGljYXRlZFdvcmtlclRo
cmVhZC5oLy5jcHAKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgQWRkZWQgRGVkaWNh
dGVkV29ya2VyVGhyZWFkLmgvLmNwcAorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qOgorICAgICAgICBBZGRlZCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaC8uY3BwCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGRlZCBE
ZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaC8uY3BwCisgICAgICAgICogYmluZGluZ3MvanMvV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjpldmFsdWF0ZSk6CisgICAgICAgIFJlbW92ZWQgY29kZSB0byB0cmFjayBwZW5kaW5n
IGFjdGl2aXR5IC0gdGhpcyBpcyBoYW5kbGVkIGJ5IERlZGljYXRlZFdvcmtlckNvbnRleHQ6Omlt
cG9ydFNjcmlwdHMoKSBub3cuCisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpl
dmFsdWF0ZSk6CisgICAgICAgIFJlbW92ZWQgY29kZSB0byB0cmFjayBwZW5kaW5nIGFjdGl2aXR5
IC0gdGhpcyBpcyBoYW5kbGVkIGJ5IERlZGljYXRlZFdvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlw
dHMoKSBub3cuCisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckNvbnRleHQ6OkRlZGljYXRlZFdvcmtl
ckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6YWRk
TWVzc2FnZSk6CisgICAgICAgIEZvcndhcmRzIGNvbnNvbGUgbWVzc2FnZXMgdG8gcGFyZW50IGRv
Y3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6aW1wb3J0
U2NyaXB0cyk6CisgICAgICAgIE5vdyBzZW5kcyB0aGUgdXBkYXRlZCBwZW5kaW5nIGFjdGl2aXR5
IHN0YXR1cyBhZnRlciBpbXBvcnRpbmcgc2NyaXB0cy4KKyAgICAgICAgKFdlYkNvcmU6OkRlZGlj
YXRlZFdvcmtlckNvbnRleHQ6OnRocmVhZCk6CisgICAgICAgIEhlbHBlciByb3V0aW5lIHRoYXQg
Y2FzdHMgV29ya2VyVGhyZWFkIHRvIERlZGljYXRlZFdvcmtlclRocmVhZC4KKyAgICAgICAgKiB3
b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZGlj
YXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJUaHJlYWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtl
clRocmVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlclRocmVh
ZDo6RGVkaWNhdGVkV29ya2VyVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdv
cmtlclRocmVhZDo6fkRlZGljYXRlZFdvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpE
ZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckNvbnRleHQpOgorICAgICAgICBJbXBs
ZW1lbnRhdGlvbiBvZiB0aGUgYmFzZSBjbGFzcyBmYWN0b3J5IG1ldGhvZCB0byBjcmVhdGUgdGhl
IGFwcHJvcHJpYXRlIHdvcmtlciBjb250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVk
V29ya2VyVGhyZWFkOjpydW5FdmVudExvb3ApOgorICAgICAgICBSZXBvcnRzIHBlbmRpbmcgYWN0
aXZpdHkgYmVmb3JlIHJ1bm5pbmcgdGhlIGV2ZW50IGxvb3AuCisgICAgICAgICogd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZWRpY2F0
ZWRXb3JrZXJUaHJlYWQ6Ondvcmtlck9iamVjdFByb3h5KToKKyAgICAgICAgTW92ZWQgZnJvbSBi
YXNlIGNsYXNzLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6
c3RhcnRXb3JrZXJDb250ZXh0KToKKyAgICAgICAgTm93IGNyZWF0ZXMgRGVkaWNhdGVkV29ya2Vy
VGhyZWFkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OndvcmtlclRo
cmVhZENyZWF0ZWQpOgorICAgICAgICBOb3cgaXMgcGFzc2VkIGEgRGVkaWNhdGVkV29ya2VyVGhy
ZWFkLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaDoKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJl
YWQ6OldvcmtlclRocmVhZCk6CisgICAgICAgIE1vdmVkIHdvcmtlck9iamVjdFByb3h5IHBhcmFt
IGludG8gZGVyaXZlZCBjbGFzcyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clRocmVhZDo6d29ya2VyVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6
cnVuRXZlbnRMb29wKToKKyAgICAgICAgTW92ZWQgdGhlIGV2ZW50IGxvb3AgZXhlY3V0aW9uIGlu
dG8gYSB2aXJ0dWFsIGZ1bmN0aW9uIHNvIERlZGljYXRlZFdvcmtlclRocmVhZCBjb3VsZCByZXBv
cnQgcGVuZGluZyBhY3Rpdml0eSBmaXJzdC4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVh
ZC5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJDb250ZXh0KToKKwog
MjAwOS0wNy0yNCAgRHJldyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA0OTBiZGNhLi40YjBlMWM1IDEwMDY0
NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KQEAgLTIzNDUsNiArMjM0NSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS93
b3JrZXJzL0Fic3RyYWN0V29ya2VyLmggXAogCVdlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0LmNwcCBcCiAJV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQu
aCBcCisJV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAgXAorCVdlYkNv
cmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaAogCVdlYkNvcmUvd29ya2Vycy9HZW5l
cmljV29ya2VyVGFzay5oIFwKIAlXZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcCBcCiAJV2ViQ29y
ZS93b3JrZXJzL1dvcmtlci5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYjdmODZlNi4uZGU4MTdlZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTMyOTks
NiArMzI5OSw4IEBACiAgICAgICAgICAgICAnd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oJywKICAg
ICAgICAgICAgICd3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwJywKICAgICAgICAg
ICAgICd3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaCcsCisgICAgICAgICAgICAnd29y
a2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwJywKKyAgICAgICAgICAgICd3b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlclRocmVhZC5oJywKICAgICAgICAgICAgICd3b3JrZXJzL0dlbmVyaWNXb3Jr
ZXJUYXNrLmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcCcsCiAgICAg
ICAgICAgICAnd29ya2Vycy9TaGFyZWRXb3JrZXIuaCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA0ZWMyNDU4Li5jYTliNWQ0IDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8K
QEAgLTIwMzEsNiArMjAzMSw4IEBAIEhFQURFUlMgKz0gXAogICAgIHdtbC9XTUxUaW1lckVsZW1l
bnQuaCBcCiAgICAgd21sL1dNTFZhcmlhYmxlcy5oIFwKICAgICB3b3JrZXJzL0Fic3RyYWN0V29y
a2VyLmggXAorICAgIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIFwKKyAgICB3b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oIFwKICAgICB3b3JrZXJzL1NoYXJlZFdvcmtlci5o
IFwKICAgICB3b3JrZXJzL1dvcmtlckNvbnRleHQuaCBcCiAgICAgd29ya2Vycy9Xb3JrZXIuaCBc
CkBAIC0yMzg1LDYgKzIzODcsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV09SS0VSUz0x
KSB7CiAKICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgYmluZGluZ3MvanMvSlNBYnN0cmFjdFdv
cmtlckN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckNv
bnRleHRDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNXb3JrZXJDb25zdHJ1Y3Rv
ci5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcCBcCiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgXApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNzAwYjA3Zi4uODc4NTlkMCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNDA3NSw2ICsyNDA3NSwxNCBAQAogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3b3JrZXJz
XERlZGljYXRlZFdvcmtlclRocmVhZC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3b3JrZXJzXERlZGljYXRlZFdvcmtlclRocmVhZC5o
Ig0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
d29ya2Vyc1xHZW5lcmljV29ya2VyVGFzay5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjBiODVhOC4uZWExODk1
NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY3Myw2
ICs2NzMsOCBAQAogCQk0MThGODgwNDBGRjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MThG
ODgwMjBGRjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5jcHAgKi87IH07CiAJCTQx
OEY4ODA1MEZGOTU3QUYwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MThGODgwMzBGRjk1N0FFMDA4MEYw
NDUgLyogSlNBYnN0cmFjdFdvcmtlci5oICovOyB9OwogCQk0MTk1MzY1MTBGNjgyMjI0MDBEMEM2
NzkgLyogU2NyaXB0T2JqZWN0UXVhcmFudGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5NTM2NTAwRjY4MjIyNDAwRDBDNjc5IC8qIFNjcmlwdE9i
amVjdFF1YXJhbnRpbmUuaCAqLzsgfTsKKwkJNDFBM0Q1OEUxMDFDMTUyRDAwMzE2RDA3IC8qIERl
ZGljYXRlZFdvcmtlclRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUEzRDU4QzEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2Vy
VGhyZWFkLmNwcCAqLzsgfTsKKwkJNDFBM0Q1OEYxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRl
ZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFBM0Q1OEQxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5o
ICovOyB9OwogCQk0MUJGNzAwQjBGRTg2RjQ5MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVs
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQkY3
MDA5MEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuY3BwICovOyB9OwogCQk0
MUJGNzAwQzBGRTg2RjQ5MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGNzAwQTBGRTg2RjQ5MDA1
RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmggKi87IH07CiAJCTQxQkY3MDBGMEZFODZGNjEw
MDVFOERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGNzAwRDBGRTg2RjYxMDA1RThERUMg
LyogUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwICovOyB9OwpAQCAtNTY0MSw2ICs1NjQz
LDggQEAKIAkJNDE4Rjg4MDIwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBYnN0cmFjdFdvcmtlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOEY4ODAzMEZGOTU3QUUwMDgwRjA0
NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTQWJzdHJhY3RXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5NTM2
NTAwRjY4MjIyNDAwRDBDNjc5IC8qIFNjcmlwdE9iamVjdFF1YXJhbnRpbmUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0T2JqZWN0UXVhcmFudGluZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MUEzRDU4QzEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNh
dGVkV29ya2VyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERlZGljYXRlZFdvcmtlclRocmVhZC5jcHA7IHBhdGggPSB3b3JrZXJzL0RlZGljYXRlZFdvcmtl
clRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQTNENThEMTAxQzE1
MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gRGVkaWNhdGVkV29ya2VyVGhyZWFkLmg7IHBhdGggPSB3b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlclRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUJG
NzAwOTBGRTg2RjQ5MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQkY3MDBBMEZFODZGNDkwMDVFOERFQyAvKiBNZXNz
YWdlUG9ydENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2Fn
ZVBvcnRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQkY3MDBEMEZF
ODZGNjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5j
cHA7IHBhdGggPSBkZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5MjMsNiArOTkyNyw4IEBACiAJCTJFNDM0NjMxMEY1
NDZBNjgwMEIwRjFCQSAvKiB3b3JrZXJzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk0MUEzRDU4QzEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29y
a2VyVGhyZWFkLmNwcCAqLywKKwkJCQk0MUEzRDU4RDEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNh
dGVkV29ya2VyVGhyZWFkLmggKi8sCiAJCQkJNDE2MkE0NEQxMDExNDVBRTAwREZGM0VEIC8qIERl
ZGljYXRlZFdvcmtlckNvbnRleHQuY3BwICovLAogCQkJCTQxNjJBNDRFMTAxMTQ1QUUwMERGRjNF
RCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggKi8sCiAJCQkJNDE2MkE0NEYxMDExNDVBRTAw
REZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsICovLApAQCAtMTcwNDgsNiArMTcw
NTQsNyBAQAogCQkJCTJFQ0Y3QUUyMTAxNjJCNTgwMDQyN0RFNyAvKiBFcnJvckV2ZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOEVEQjAzRDEwMTY4NDk0MDBGRTgxMTMgLyogRE9NT2JqZWN0V2l0
aFNWR0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFNTRGRDM4MTAxNkQ5QTYwMDhCNDRD
OCAvKiBTY3JpcHRTb3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFBM0Q1OEYx
MDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0xOTA4Nyw2ICsxOTA5NCw3IEBACiAJCQkJMkVDRjdBREMxMDE2MkIzODAwNDI3REU3IC8q
IEpTRXJyb3JFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRUNGN0FFMTEwMTYyQjU4MDA0
MjdERTcgLyogRXJyb3JFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0FFRkNBRTEwMTZD
RTRBMDA0MEQzNEUgLyogRE9NUkdCQ29sb3IubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MUEzRDU4
RTEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9s
bGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAK
aW5kZXggZmFmNDMyMy4uNmIzYzhjNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xMTMsOCArMTEzLDYgQEAgU2NyaXB0VmFsdWUgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291
cmNlQ29kZSwKICAgICBDb21wbGV0aW9uIGNvbXAgPSBKU0M6OmV2YWx1YXRlKGV4ZWMsIGV4ZWMt
PmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+Z2xvYmFsU2NvcGVDaGFpbigpLCBzb3VyY2VDb2RlLmpz
U291cmNlQ29kZSgpLCBtX3dvcmtlckNvbnRleHRXcmFwcGVyKTsKICAgICBtX3dvcmtlckNvbnRl
eHRXcmFwcGVyLT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKIAotICAgIG1f
d29ya2VyQ29udGV4dC0+dGhyZWFkKCktPndvcmtlck9iamVjdFByb3h5KCkucmVwb3J0UGVuZGlu
Z0FjdGl2aXR5KG1fd29ya2VyQ29udGV4dC0+aGFzUGVuZGluZ0FjdGl2aXR5KCkpOwotCiAgICAg
aWYgKGNvbXAuY29tcGxUeXBlKCkgPT0gTm9ybWFsIHx8IGNvbXAuY29tcGxUeXBlKCkgPT0gUmV0
dXJuVmFsdWUpCiAgICAgICAgIHJldHVybiBjb21wLnZhbHVlKCk7CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDk5MzE2ZGEuLmYyMzEx
YmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNw
cApAQCAtODIsOCArODIsNiBAQCBTY3JpcHRWYWx1ZSBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpl
dmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLAogICAgICAgICAgICAg
bV93b3JrZXJDb250ZXh0LT5yZXBvcnRFeGNlcHRpb24oc3RhdGUuZXJyb3JNZXNzYWdlLCBzdGF0
ZS5saW5lTnVtYmVyLCBzdGF0ZS5zb3VyY2VVUkwpOwogICAgIH0KIAotICAgIG1fd29ya2VyQ29u
dGV4dC0+dGhyZWFkKCktPndvcmtlck9iamVjdFByb3h5KCkucmVwb3J0UGVuZGluZ0FjdGl2aXR5
KG1fd29ya2VyQ29udGV4dC0+aGFzUGVuZGluZ0FjdGl2aXR5KCkpOwotCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNv
bnRleHQuY3BwIGIvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCmlu
ZGV4IGRhYjg1ODcuLjJhODUwODEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0
ZWRXb3JrZXJDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5jcHAKQEAgLTM0LDE0ICszNCwxNCBAQAogCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29y
a2VyQ29udGV4dC5oIgogCisjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgiCiAjaW5j
bHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAi
V29ya2VyT2JqZWN0UHJveHkuaCIKLSNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1EZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdvcmtlclRo
cmVhZCogdGhyZWFkKQorRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6RGVkaWNhdGVkV29ya2VyQ29u
dGV4dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBEZWRpY2F0ZWRX
b3JrZXJUaHJlYWQqIHRocmVhZCkKICAgICA6IFdvcmtlckNvbnRleHQodXJsLCB1c2VyQWdlbnQs
IHRocmVhZCkKIHsKIH0KQEAgLTU3LDYgKzU3LDExIEBAIHZvaWQgRGVkaWNhdGVkV29ya2VyQ29u
dGV4dDo6cmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGlu
CiAgICAgdGhyZWFkKCktPndvcmtlck9iamVjdFByb3h5KCkucG9zdEV4Y2VwdGlvblRvV29ya2Vy
T2JqZWN0KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAordm9pZCBE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjphZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiBkZXN0
aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VM
ZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICB0aHJlYWQoKS0+d29ya2VyT2JqZWN0UHJv
eHkoKS5wb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChkZXN0aW5hdGlvbiwgc291cmNl
LCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKK30KKwogdm9p
ZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIDAsIGVj
KTsKQEAgLTkwLDYgKzk1LDE3IEBAIHZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6ZGlzcGF0
Y2hNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgUGFzc1JlZlB0cjxNCiAgICAgQVNTRVJU
KCFlYyk7CiB9CiAKK3ZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0cyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgY29uc3QgU3RyaW5nJiBjYWxsZXJVUkwsIGludCBj
YWxsZXJMaW5lLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBCYXNlOjppbXBvcnRTY3JpcHRz
KHVybHMsIGNhbGxlclVSTCwgY2FsbGVyTGluZSwgZWMpOworICAgIHRocmVhZCgpLT53b3JrZXJP
YmplY3RQcm94eSgpLnJlcG9ydFBlbmRpbmdBY3Rpdml0eShoYXNQZW5kaW5nQWN0aXZpdHkoKSk7
Cit9CisKK0RlZGljYXRlZFdvcmtlclRocmVhZCogRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6dGhy
ZWFkKCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGVkaWNhdGVkV29ya2VyVGhyZWFkKj4o
QmFzZTo6dGhyZWFkKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJDb250ZXh0LmggYi9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5o
CmluZGV4IGUzN2MxM2YuLjA2ZjZjOWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9EZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0LmgKKysrIGIvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtl
ckNvbnRleHQuaApAQCAtMzUsMTUgKzM1LDIzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
ICAgIGNsYXNzIERlZGljYXRlZFdvcmtlclRocmVhZDsKKwogICAgIGNsYXNzIERlZGljYXRlZFdv
cmtlckNvbnRleHQgOiBwdWJsaWMgV29ya2VyQ29udGV4dCB7CiAgICAgcHVibGljOgotICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJDb250ZXh0PiBjcmVhdGUoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkKiB0aHJlYWQp
CisgICAgICAgIHR5cGVkZWYgV29ya2VyQ29udGV4dCBCYXNlOworICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJDb250ZXh0PiBjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgRGVkaWNhdGVkV29ya2VyVGhyZWFkKiB0aHJlYWQpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVkaWNhdGVkV29ya2Vy
Q29udGV4dCh1cmwsIHVzZXJBZ2VudCwgdGhyZWFkKSk7CiAgICAgICAgIH0KICAgICAgICAgdmly
dHVhbCB+RGVkaWNhdGVkV29ya2VyQ29udGV4dCgpOwogCisgICAgICAgIC8vIFdvcmtlclV0aWxz
CisgICAgICAgIHZpcnR1YWwgdm9pZCBpbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB1cmxzLCBjb25zdCBTdHJpbmcmIGNhbGxlclVSTCwgaW50IGNhbGxlckxpbmUsIEV4Y2VwdGlv
bkNvZGUmKTsKKworICAgICAgICAvLyBTY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgICAgIHZp
cnR1YWwgdm9pZCByZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGlu
dCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSwgTWVzc2Fn
ZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CiAKICAgICAgICAgLy8gRXZlbnRUYXJn
ZXQKICAgICAgICAgdmlydHVhbCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB0b0RlZGljYXRlZFdv
cmtlckNvbnRleHQoKSB7IHJldHVybiB0aGlzOyB9CkBAIC01NCw4ICs2Miw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShjb25zdCBTdHJpbmcm
LCBQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0Pik7CiAKKyAgICAgICAgRGVkaWNhdGVkV29ya2VyVGhy
ZWFkKiB0aHJlYWQoKTsKICAgICBwcml2YXRlOgotICAgICAgICBEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmLCBXb3JrZXJUaHJlYWQqKTsKKyAgICAgICAg
RGVkaWNhdGVkV29ya2VyQ29udGV4dChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgRGVkaWNh
dGVkV29ya2VyVGhyZWFkKik7CiAgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ubWVz
c2FnZUxpc3RlbmVyOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9EZWRp
Y2F0ZWRXb3JrZXJUaHJlYWQuY3BwIGIvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRo
cmVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkwNTg0MwotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3Bw
CkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV09SS0VS
UykKKworI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlclRocmVhZC5oIgorCisjaW5jbHVkZSAiRGVk
aWNhdGVkV29ya2VyQ29udGV4dC5oIgorI2luY2x1ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ+
IERlZGljYXRlZFdvcmtlclRocmVhZDo6Y3JlYXRlKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9h
ZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3JrZXJPYmplY3RQcm94eSYgd29ya2VyT2Jq
ZWN0UHJveHkpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZWRpY2F0ZWRXb3JrZXJUaHJl
YWQoc2NyaXB0VVJMLCB1c2VyQWdlbnQsIHNvdXJjZUNvZGUsIHdvcmtlckxvYWRlclByb3h5LCB3
b3JrZXJPYmplY3RQcm94eSkpOworfQorCitEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OkRlZGljYXRl
ZFdvcmtlclRocmVhZChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBj
b25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQ
cm94eSwgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5KQorICAgIDogV29ya2Vy
VGhyZWFkKHVybCwgdXNlckFnZW50LCBzb3VyY2VDb2RlLCB3b3JrZXJMb2FkZXJQcm94eSkKKyAg
ICAsIG1fd29ya2VyT2JqZWN0UHJveHkod29ya2VyT2JqZWN0UHJveHkpCit7Cit9CisKK0RlZGlj
YXRlZFdvcmtlclRocmVhZDo6fkRlZGljYXRlZFdvcmtlclRocmVhZCgpCit7Cit9CisKK1Bhc3NS
ZWZQdHI8V29ya2VyQ29udGV4dD4gRGVkaWNhdGVkV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJD
b250ZXh0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCit7CisgICAg
cmV0dXJuIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZSh1cmwsIHVzZXJBZ2VudCwgdGhp
cyk7Cit9CisKK3ZvaWQgRGVkaWNhdGVkV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AoKQorewor
ICAgIC8vIE5vdGlmeSB0aGUgcGFyZW50IG9iamVjdCBvZiBvdXIgY3VycmVudCBhY3RpdmUgc3Rh
dGUgYmVmb3JlIGNhbGxpbmcgdGhlIHN1cGVyY2xhc3MgdG8gcnVuIHRoZSBldmVudCBsb29wLgor
ICAgIG1fd29ya2VyT2JqZWN0UHJveHkucmVwb3J0UGVuZGluZ0FjdGl2aXR5KHdvcmtlckNvbnRl
eHQoKS0+aGFzUGVuZGluZ0FjdGl2aXR5KCkpOworICAgIFdvcmtlclRocmVhZDo6cnVuRXZlbnRM
b29wKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
T1JLRVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVh
ZC5oIGIvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyNTI0M2IKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgKQEAgLTAsMCArMSw2MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVm
IERlZGljYXRlZFdvcmtlclRocmVhZF9oCisjZGVmaW5lIERlZGljYXRlZFdvcmtlclRocmVhZF9o
CisKKyNpZiBFTkFCTEUoV09SS0VSUykKKworI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBXb3JrZXJPYmplY3RQcm94eTsKKworICAg
IGNsYXNzIERlZGljYXRlZFdvcmtlclRocmVhZCA6IHB1YmxpYyBXb3JrZXJUaHJlYWQgeworICAg
IHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2VyVGhyZWFk
PiBjcmVhdGUoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlck9iamVj
dFByb3h5Jik7CisgICAgICAgIFdvcmtlck9iamVjdFByb3h5JiB3b3JrZXJPYmplY3RQcm94eSgp
IGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyT2JqZWN0UHJveHk7IH0KKyAgICAgICAgfkRlZGljYXRl
ZFdvcmtlclRocmVhZCgpOworCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V29ya2VyQ29udGV4dD4gY3JlYXRlV29ya2VyQ29udGV4dChjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJ1bkV2ZW50
TG9vcCgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgRGVkaWNhdGVkV29ya2VyVGhyZWFkKGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VD
b2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlck9iamVjdFByb3h5Jik7CisKKyAgICAgICAg
V29ya2VyT2JqZWN0UHJveHkmIG1fd29ya2VyT2JqZWN0UHJveHk7CisgICAgfTsKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQorCisjZW5kaWYgLy8g
RGVkaWNhdGVkV29ya2VyVGhyZWFkX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAppbmRleCA5
NjVjMGE1Li5kYWU0MTA4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4
dC5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCkBAIC0xMzksMTYg
KzEzOSw2IEBAIGJvb2wgV29ya2VyQ29udGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgV29ya2VyQ29udGV4dDo6cmVwb3J0RXhjZXB0
aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwpCi17Ci0gICAgbV90aHJlYWQtPndvcmtlck9iamVjdFByb3h5KCkucG9z
dEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNl
VVJMKTsKLX0KLQotdm9pZCBXb3JrZXJDb250ZXh0OjphZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5h
dGlvbiBkZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUs
IE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKLXsKLSAgICBtX3RocmVhZC0+d29ya2Vy
T2JqZWN0UHJveHkoKS5wb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChkZXN0aW5hdGlv
biwgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsK
LX0KLQogdm9pZCBXb3JrZXJDb250ZXh0OjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVl
c3QodW5zaWduZWQgbG9uZywgY29uc3QgU2NyaXB0U3RyaW5nJikKIHsKICAgICAvLyBGSVhNRTog
VGhlIGltcGxlbWVudGF0aW9uIGlzIHBlbmRpbmcgdGhlIGZpeGVzIGluIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE3NQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHQuaCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKaW5k
ZXggODI4YzU5Mi4uZjJhZmE0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnRleHQuaAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCkBAIC02Nyw4ICs2
Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRpb24oY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5h
dGlvbiwgTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVl
c3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0
cmluZyk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzY3JpcHRJbXBvcnRlZCh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKIApAQCAtODIsNyArODAs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9uZXJyb3Io
KSBjb25zdCB7IHJldHVybiBtX29uZXJyb3JMaXN0ZW5lci5nZXQoKTsgfQogCiAgICAgICAgIC8v
IFdvcmtlclV0aWxzCi0gICAgICAgIHZvaWQgaW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdXJscywgY29uc3QgU3RyaW5nJiBjYWxsZXJVUkwsIGludCBjYWxsZXJMaW5lLCBFeGNl
cHRpb25Db2RlJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBpbXBvcnRTY3JpcHRzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiB1cmxzLCBjb25zdCBTdHJpbmcmIGNhbGxlclVSTCwgaW50IGNhbGxlckxp
bmUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgV29ya2VyTmF2aWdhdG9yKiBuYXZpZ2F0b3Io
KSBjb25zdDsKIAogICAgICAgICAvLyBUaW1lcnMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2Fn
aW5nUHJveHkuY3BwCmluZGV4IDliYWMyYzguLmYyMmFhYWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMzIsMTMgKzMyLDEzIEBACiAjaW5jbHVkZSAiV29y
a2VyTWVzc2FnaW5nUHJveHkuaCIKIAogI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckNvbnRleHQu
aCIKKyNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkdlbmVyaWNXb3JrZXJUYXNr
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlci5oIgotI2luY2x1ZGUgIldvcmtlclRocmVhZC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIxMiw3ICsyMTIsNyBAQCBXb3JrZXJNZXNz
YWdpbmdQcm94eTo6fldvcmtlck1lc3NhZ2luZ1Byb3h5KCkKIAogdm9pZCBXb3JrZXJNZXNzYWdp
bmdQcm94eTo6c3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSkKIHsKLSAgICBSZWZQ
dHI8V29ya2VyVGhyZWFkPiB0aHJlYWQgPSBXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzY3JpcHRVUkws
IHVzZXJBZ2VudCwgc291cmNlQ29kZSwgKnRoaXMsICp0aGlzKTsKKyAgICBSZWZQdHI8RGVkaWNh
dGVkV29ya2VyVGhyZWFkPiB0aHJlYWQgPSBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShz
Y3JpcHRVUkwsIHVzZXJBZ2VudCwgc291cmNlQ29kZSwgKnRoaXMsICp0aGlzKTsKICAgICB3b3Jr
ZXJUaHJlYWRDcmVhdGVkKHRocmVhZCk7CiAgICAgdGhyZWFkLT5zdGFydCgpOwogfQpAQCAtMjY3
LDcgKzI2Nyw3IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RDb25zb2xlTWVzc2Fn
ZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VEZXN0aW5hdGlvbiBkCiAgICAgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RDb25zb2xlTWVzc2Fn
ZVRhc2ssIHRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBs
aW5lTnVtYmVyLCBzb3VyY2VVUkwpKTsKIH0KIAotdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6
d29ya2VyVGhyZWFkQ3JlYXRlZChQYXNzUmVmUHRyPFdvcmtlclRocmVhZD4gd29ya2VyVGhyZWFk
KQordm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyVGhyZWFkQ3JlYXRlZChQYXNzUmVm
UHRyPERlZGljYXRlZFdvcmtlclRocmVhZD4gd29ya2VyVGhyZWFkKQogewogICAgIG1fd29ya2Vy
VGhyZWFkID0gd29ya2VyVGhyZWFkOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyTWVzc2FnaW5nUHJveHkuaCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94
eS5oCmluZGV4IGUxM2ViMTEuLjZlMTg4MGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5oCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5oCkBAIC00MSwxMSArNDEsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisg
ICAgY2xhc3MgRGVkaWNhdGVkV29ya2VyVGhyZWFkOwogICAgIGNsYXNzIE1lc3NhZ2VQb3J0Q2hh
bm5lbDsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgIGNsYXNzIFN0cmlu
ZzsKICAgICBjbGFzcyBXb3JrZXI7Ci0gICAgY2xhc3MgV29ya2VyVGhyZWFkOwogCiAgICAgY2xh
c3MgV29ya2VyTWVzc2FnaW5nUHJveHkgOiBwdWJsaWMgV29ya2VyQ29udGV4dFByb3h5LCBwdWJs
aWMgV29ya2VyT2JqZWN0UHJveHksIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVibGljIE5v
bmNvcHlhYmxlIHsKICAgICBwdWJsaWM6CkBAIC03NCw3ICs3NCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoUGFzc1JlZlB0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0
VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoUGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKIAotICAgICAgICB2b2lkIHdvcmtlclRo
cmVhZENyZWF0ZWQoUGFzc1JlZlB0cjxXb3JrZXJUaHJlYWQ+KTsKKyAgICAgICAgdm9pZCB3b3Jr
ZXJUaHJlYWRDcmVhdGVkKFBhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2VyVGhyZWFkPik7CiAKICAg
ICAgICAgLy8gT25seSB1c2UgdGhpcyBtZXRob2Qgb24gdGhlIHdvcmtlciBvYmplY3QgdGhyZWFk
LgogICAgICAgICBib29sIGFza2VkVG9UZXJtaW5hdGUoKSBjb25zdCB7IHJldHVybiBtX2Fza2Vk
VG9UZXJtaW5hdGU7IH0KQEAgLTkyLDcgKzkyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiAgICAgICAgIFdvcmtlciogbV93b3JrZXJPYmplY3Q7Ci0gICAgICAgIFJlZlB0cjxX
b3JrZXJUaHJlYWQ+IG1fd29ya2VyVGhyZWFkOworICAgICAgICBSZWZQdHI8RGVkaWNhdGVkV29y
a2VyVGhyZWFkPiBtX3dvcmtlclRocmVhZDsKIAogICAgICAgICB1bnNpZ25lZCBtX3VuY29uZmly
bWVkTWVzc2FnZUNvdW50OyAvLyBVbmNvbmZpcm1lZCBtZXNzYWdlcyBmcm9tIHdvcmtlciBvYmpl
Y3QgdG8gd29ya2VyIHRocmVhZC4KICAgICAgICAgYm9vbCBtX3dvcmtlclRocmVhZEhhZFBlbmRp
bmdBY3Rpdml0eTsgLy8gVGhlIGxhdGVzdCBjb25maXJtYXRpb24gZnJvbSB3b3JrZXIgdGhyZWFk
IHJlcG9ydGVkIHRoYXQgaXQgd2FzIHN0aWxsIGFjdGl2ZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5j
cHAKaW5kZXggNWQ1OGVlYS4uODZhNWZhOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclRocmVhZC5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAg
LTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNj
cmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgIldv
cmtlck9iamVjdFByb3h5LmgiCiAKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgpAQCAtNjIsMTUgKzYxLDkgQEAgV29ya2VyVGhyZWFkU3RhcnR1cERhdGE6
OldvcmtlclRocmVhZFN0YXJ0dXBEYXRhKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3QK
IHsKIH0KIAotUGFzc1JlZlB0cjxXb3JrZXJUaHJlYWQ+IFdvcmtlclRocmVhZDo6Y3JlYXRlKGNv
bnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmlu
ZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3Jr
ZXJPYmplY3RQcm94eSYgd29ya2VyT2JqZWN0UHJveHkpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXb3JrZXJUaHJlYWQoc2NyaXB0VVJMLCB1c2VyQWdlbnQsIHNvdXJjZUNvZGUsIHdvcmtl
ckxvYWRlclByb3h5LCB3b3JrZXJPYmplY3RQcm94eSkpOwotfQotCi1Xb3JrZXJUaHJlYWQ6Oldv
cmtlclRocmVhZChjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50
LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2Fk
ZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5KQorV29ya2VyVGhy
ZWFkOjpXb3JrZXJUaHJlYWQoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29y
a2VyTG9hZGVyUHJveHkpCiAgICAgOiBtX3RocmVhZElEKDApCiAgICAgLCBtX3dvcmtlckxvYWRl
clByb3h5KHdvcmtlckxvYWRlclByb3h5KQotICAgICwgbV93b3JrZXJPYmplY3RQcm94eSh3b3Jr
ZXJPYmplY3RQcm94eSkKICAgICAsIG1fc3RhcnR1cERhdGEoV29ya2VyVGhyZWFkU3RhcnR1cERh
dGE6OmNyZWF0ZShzY3JpcHRVUkwsIHVzZXJBZ2VudCwgc291cmNlQ29kZSkpCiB7CiB9CkBAIC0x
MDEsNyArOTQsOCBAQCB2b2lkKiBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCgpCiB7CiAgICAg
ewogICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7Ci0gICAg
ICAgIG1fd29ya2VyQ29udGV4dCA9IERlZGljYXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZShtX3N0
YXJ0dXBEYXRhLT5tX3NjcmlwdFVSTCwgbV9zdGFydHVwRGF0YS0+bV91c2VyQWdlbnQsIHRoaXMp
OworICAgICAgICBtX3dvcmtlckNvbnRleHQgPSBjcmVhdGVXb3JrZXJDb250ZXh0KG1fc3RhcnR1
cERhdGEtPm1fc2NyaXB0VVJMLCBtX3N0YXJ0dXBEYXRhLT5tX3VzZXJBZ2VudCk7CisKICAgICAg
ICAgaWYgKG1fcnVuTG9vcC50ZXJtaW5hdGVkKCkpIHsKICAgICAgICAgICAgIC8vIFRoZSB3b3Jr
ZXIgd2FzIHRlcm1pbmF0ZWQgYmVmb3JlIHRoZSB0aHJlYWQgaGFkIGEgY2hhbmNlIHRvIHJ1bi4g
U2luY2UgdGhlIGNvbnRleHQgZGlkbid0IGV4aXN0IHlldCwKICAgICAgICAgICAgIC8vIGZvcmJp
ZEV4ZWN1dGlvbigpIGNvdWxkbid0IGJlIGNhbGxlZCBmcm9tIHN0b3AoKS4KQEAgLTExNiwxMCAr
MTEwLDcgQEAgdm9pZCogV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQoKQogICAgIC8vIFdvcmtl
clRocmVhZDo6fldvcmtlclRocmVhZCBoYXBwZW5zIG9uIGEgZGlmZmVyZW50IHRocmVhZCB3aGVy
ZSBpdCB3YXMgY3JlYXRlZC4KICAgICBtX3N0YXJ0dXBEYXRhLmNsZWFyKCk7CiAKLSAgICBtX3dv
cmtlck9iamVjdFByb3h5LnJlcG9ydFBlbmRpbmdBY3Rpdml0eShtX3dvcmtlckNvbnRleHQtPmhh
c1BlbmRpbmdBY3Rpdml0eSgpKTsKLQotICAgIC8vIEJsb2NrcyB1bnRpbCB0ZXJtaW5hdGVkLgot
ICAgIG1fcnVuTG9vcC5ydW4obV93b3JrZXJDb250ZXh0LmdldCgpKTsKKyAgICBydW5FdmVudExv
b3AoKTsKIAogICAgIFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQgPSBtX3RocmVhZElEOwogCkBA
IC0xMzYsNiArMTI3LDEyIEBAIHZvaWQqIFdvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKCkKICAg
ICByZXR1cm4gMDsKIH0KIAordm9pZCBXb3JrZXJUaHJlYWQ6OnJ1bkV2ZW50TG9vcCgpCit7Cisg
ICAgLy8gRG9lcyBub3QgcmV0dXJuIHVudGlsIHRlcm1pbmF0ZWQuCisgICAgbV9ydW5Mb29wLnJ1
bihtX3dvcmtlckNvbnRleHQuZ2V0KCkpOworfQorCiB2b2lkIFdvcmtlclRocmVhZDo6c3RvcCgp
CiB7CiAgICAgLy8gTXV0ZXggcHJvdGVjdGlvbiBpcyBuZWNlc3NhcnkgYmVjYXVzZSBzdG9wKCkg
Y2FuIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGNvbnRleHQgaXMgZnVsbHkgY3JlYXRlZC4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuaAppbmRleCA4YTFjZTZjLi5hNmIyMmRjIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5oCkBAIC00MCwxMyArNDAsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFN0
cmluZzsKICAgICBjbGFzcyBXb3JrZXJDb250ZXh0OwogICAgIGNsYXNzIFdvcmtlckxvYWRlclBy
b3h5OwotICAgIGNsYXNzIFdvcmtlck9iamVjdFByb3h5OwogICAgIHN0cnVjdCBXb3JrZXJUaHJl
YWRTdGFydHVwRGF0YTsKIAogICAgIGNsYXNzIFdvcmtlclRocmVhZCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdvcmtlclRocmVhZD4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8V29ya2VyVGhyZWFkPiBjcmVhdGUoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94
eSYsIFdvcmtlck9iamVjdFByb3h5Jik7Ci0gICAgICAgIH5Xb3JrZXJUaHJlYWQoKTsKKyAgICAg
ICAgdmlydHVhbCB+V29ya2VyVGhyZWFkKCk7CiAKICAgICAgICAgYm9vbCBzdGFydCgpOwogICAg
ICAgICB2b2lkIHN0b3AoKTsKQEAgLTU0LDE4ICs1MiwyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQoKSBjb25zdCB7IHJldHVybiBtX3Ro
cmVhZElEOyB9CiAgICAgICAgIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AoKSB7IHJldHVybiBtX3J1
bkxvb3A7IH0KICAgICAgICAgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5KCkg
Y29uc3QgeyByZXR1cm4gbV93b3JrZXJMb2FkZXJQcm94eTsgfQotICAgICAgICBXb3JrZXJPYmpl
Y3RQcm94eSYgd29ya2VyT2JqZWN0UHJveHkoKSBjb25zdCB7IHJldHVybiBtX3dvcmtlck9iamVj
dFByb3h5OyB9CiAKLSAgICBwcml2YXRlOgotICAgICAgICBXb3JrZXJUaHJlYWQoY29uc3QgS1VS
TCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdv
cmtlckxvYWRlclByb3h5JiwgV29ya2VyT2JqZWN0UHJveHkmKTsKKyAgICBwcm90ZWN0ZWQ6Cisg
ICAgICAgIFdvcmtlclRocmVhZChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQs
IGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmKTsKKworICAgICAg
ICAvLyBGYWN0b3J5IG1ldGhvZCBmb3IgY3JlYXRpbmcgYSBuZXcgd29ya2VyIGNvbnRleHQgZm9y
IHRoZSB0aHJlYWQuCisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PiBj
cmVhdGVXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQpID0gMDsKKworICAgICAgICAvLyBFeGVjdXRlcyB0aGUgZXZlbnQgbG9vcCBmb3IgdGhlIHdv
cmtlciB0aHJlYWQuIERlcml2ZWQgY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdG8gcGVyZm9ybSBhY3Rp
b25zIGJlZm9yZS9hZnRlciBlbnRlcmluZyB0aGUgZXZlbnQgbG9vcC4KKyAgICAgICAgdmlydHVh
bCB2b2lkIHJ1bkV2ZW50TG9vcCgpOwogCisgICAgICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNv
bnRleHQoKSB7IHJldHVybiBtX3dvcmtlckNvbnRleHQuZ2V0KCk7IH0KKworICAgIHByaXZhdGU6
CisgICAgICAgIC8vIFN0YXRpYyBmdW5jdGlvbiBleGVjdXRlZCBhcyB0aGUgY29yZSByb3V0aW5l
IG9uIHRoZSBuZXcgdGhyZWFkLiBQYXNzZWQgYSBwb2ludGVyIHRvIGEgV29ya2VyVGhyZWFkIG9i
amVjdC4KICAgICAgICAgc3RhdGljIHZvaWQqIHdvcmtlclRocmVhZFN0YXJ0KHZvaWQqKTsKICAg
ICAgICAgdm9pZCogd29ya2VyVGhyZWFkKCk7CiAKICAgICAgICAgVGhyZWFkSWRlbnRpZmllciBt
X3RocmVhZElEOwogICAgICAgICBXb3JrZXJSdW5Mb29wIG1fcnVuTG9vcDsKICAgICAgICAgV29y
a2VyTG9hZGVyUHJveHkmIG1fd29ya2VyTG9hZGVyUHJveHk7Ci0gICAgICAgIFdvcmtlck9iamVj
dFByb3h5JiBtX3dvcmtlck9iamVjdFByb3h5OwogCiAgICAgICAgIFJlZlB0cjxXb3JrZXJDb250
ZXh0PiBtX3dvcmtlckNvbnRleHQ7CiAgICAgICAgIE11dGV4IG1fdGhyZWFkQ3JlYXRpb25NdXRl
eDsK
</data>
<flag name="review"
          id="17787"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>