<?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>103210</bug_id>
          
          <creation_ts>2012-11-25 16:42:12 -0800</creation_ts>
          <short_desc>[V8] Remove WorkerContextExecutionProxy</short_desc>
          <delta_ts>2012-11-26 17:04:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>775050</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-25 16:42:12 -0800</bug_when>
    <thetext>We can move methods of WorkerContextExecutionProxy to WorkerScriptController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775065</commentid>
    <comment_count>1</comment_count>
      <attachid>175900</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-25 17:05:53 -0800</bug_when>
    <thetext>Created attachment 175900
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775071</commentid>
    <comment_count>2</comment_count>
      <attachid>175900</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-25 17:28:07 -0800</bug_when>
    <thetext>Comment on attachment 175900
Patch

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

&gt; Source/WebCore/bindings/v8/V8WorkerContextEventListener.cpp:64
&gt; +    WorkerScriptController* script = static_cast&lt;WorkerContext*&gt;(context)-&gt;script();

We lost the ASSERT here.  We should add it back.

&gt; Source/WebCore/bindings/v8/WorkerScriptController.cpp:62
&gt; +    , m_disableEvalPending(String())

No need for this line.  The compiler will init this variable for you.

&gt; Source/WebCore/bindings/v8/WorkerScriptController.cpp:97
&gt; +    // Bail out if the context has already been initialized.

I&apos;d remove this comment.

&gt; Source/WebCore/bindings/v8/WorkerScriptController.cpp:101
&gt; +    // Create a new environment

This one too

&gt; Source/WebCore/bindings/v8/WorkerScriptController.cpp:129
&gt; +    // Bail out if allocation failed.

ditto

&gt; Source/WebCore/bindings/v8/WorkerScriptController.cpp:135
&gt; +    // Wrap the object.

ditto

&gt; Source/WebCore/bindings/v8/WorkerScriptController.cpp:149
&gt; +    v8::HandleScope hs;

hs -&gt; handleScope

&gt; Source/WebCore/bindings/v8/WorkerScriptController.cpp:160
&gt; +    v8::Context::Scope scope(m_context.get());

I&apos;m surprised we don&apos;t need to create a new local handle here, but that&apos;s something to worry about in the future.

&gt; Source/WebCore/bindings/v8/WorkerScriptController.cpp:162
&gt; +    v8::TryCatch exceptionCatcher;

exceptionCatcher -&gt; block

&gt; Source/WebCore/bindings/v8/WorkerScriptController.h:101
&gt;      private:

Please add a blank line above this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775072</commentid>
    <comment_count>3</comment_count>
      <attachid>175903</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-25 17:32:23 -0800</bug_when>
    <thetext>Created attachment 175903
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775073</commentid>
    <comment_count>4</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-25 17:32:42 -0800</bug_when>
    <thetext>All comments addressed. Thanks for reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775318</commentid>
    <comment_count>5</comment_count>
      <attachid>175903</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-26 03:21:36 -0800</bug_when>
    <thetext>Comment on attachment 175903
patch for landing

Clearing flags on attachment: 175903

Committed r135703: &lt;http://trac.webkit.org/changeset/135703&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775319</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-26 03:21:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776092</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-26 17:04:00 -0800</bug_when>
    <thetext>*** Bug 97071 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175900</attachid>
            <date>2012-11-25 17:05:53 -0800</date>
            <delta_ts>2012-11-25 17:32:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103210-20121126100332.patch</filename>
            <type>text/plain</type>
            <size>25906</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1Njc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI0MDhlNjQ3NTc3ODFi
MTA3NTMwNDYyMTZjYTc2MjY0ZTQxZjE3ZC4uNmNmOWIyNzJlY2I5Yzc5MTgyNzE4YzVkMzQ1OGUz
MjZlNGE2ZGFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTExLTI1ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlbW92ZSBX
b3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMzIxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbW92ZXMgYWxsIG1ldGhvZHMgaW4gV29ya2Vy
Q29udGV4dEV4ZWN1dGlvblByb3h5CisgICAgICAgIHRvIFdvcmtlclNjcmlwdENvbnRyb2xsZXIu
CisKKyAgICAgICAgRHVlIHRvIHRoZSBkZXBlbmRlbmN5IGJldHdlZW4gV29ya2VyQ29udGV4dEV4
ZWN1dGlvblByb3h5J3MgbWV0aG9kcywKKyAgICAgICAgaXQgaXMgYSBiaXQgZGlmZmljdWx0IHRv
IHNwbGl0IHRoaXMgcGF0Y2ggaW50byBwaWVjZXMuCisgICAgICAgIFRoaXMgcGF0Y2ggc2ltcGx5
IG1vdmVzIG1ldGhvZHMgd2l0aG91dCBjaGFuZ2luZyB0aGVpciBsb2dpYy4KKyAgICAgICAgQWxz
byB0aGlzIHBhdGNoIGRvZXNuJ3QgcmVtb3ZlIGVtcHR5IFdvcmtlckNvbnRleHRFeGVjdXRpb25Q
cm94eS57aCxjcHB9CisgICAgICAgIHRvIGtlZXAgdGhlIGRpZmYgc2FuZS4gSSB3aWxsIGFkZHJl
c3MgdGhlc2UgaXNzdWVzIGluIGEgZm9sbG93LXVwIHBhdGNoLgorCisgICAgICAgIFRlc3RzOiBm
YXN0L3dvcmtlci8qCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzY3JpcHRTdGF0ZUZyb21Xb3JrZXJDb250ZXh0KToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOENvbnRl
eHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lcjo6aGFu
ZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Q
cm94eS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblBy
b3h5Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJTY3JpcHRD
b250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6On5X
b3JrZXJTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENv
bnRyb2xsZXI6OmRpc3Bvc2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXplSWZOZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0RXZhbEFsbG93ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZUV2YWwpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dEV4ZWN1dGlvblN0YXRlOjpXb3JrZXJD
b250ZXh0RXhlY3V0aW9uU3RhdGUpOgorICAgICAgICAoV29ya2VyQ29udGV4dEV4ZWN1dGlvblN0
YXRlKToKKyAgICAgICAgKFdvcmtlclNjcmlwdENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6Y29udGV4dCk6CisgICAgICAgICogYmluZGluZ3Mv
djgvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
U2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldFRp
bWVvdXRPckludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorCiAyMDEyLTExLTIy
ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbVjhdIE1v
dmUgV29ya2VyRXhlY3V0aW9uQ29udGV4dFByb3h5Ojppbml0aWFsaXplSWZOZWVkZWQoKSB0byBW
OEluaXRpYWxpemVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5jcHAK
aW5kZXggOGEwNTgwYmNkODNjNDUxZmZiNDgwMTdlYjViNzczZDUyOGY4MzI1Zi4uNzIyMjMyYTMz
YzNlM2E2MmQwYTUxMWRkZWQ5MmFkYTA4N2E1NjYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdFN0YXRlLmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIlY4SGlk
ZGVuUHJvcGVydHlOYW1lLmgiCiAjaW5jbHVkZSAiVjhXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiV29ya2VyQ29udGV4dC5oIgotI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94
eS5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx2OC5o
PgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0xNDIsMTMgKzE0MSwxMiBAQCBTY3Jp
cHRTdGF0ZSogc2NyaXB0U3RhdGVGcm9tUGFnZShET01XcmFwcGVyV29ybGQqLCBQYWdlKiBwYWdl
KQogI2lmIEVOQUJMRShXT1JLRVJTKQogU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlRnJvbVdvcmtl
ckNvbnRleHQoV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCkKIHsKLSAgICBXb3JrZXJDb250
ZXh0RXhlY3V0aW9uUHJveHkqIHByb3h5ID0gd29ya2VyQ29udGV4dC0+c2NyaXB0KCktPnByb3h5
KCk7Ci0gICAgaWYgKCFwcm94eSkKKyAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQg
PSB3b3JrZXJDb250ZXh0LT5zY3JpcHQoKTsKKyAgICBpZiAoIXNjcmlwdCkKICAgICAgICAgcmV0
dXJuIDA7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0gICAgdjg6OkxvY2Fs
PHY4OjpDb250ZXh0PiBjb250ZXh0ID0gcHJveHktPmNvbnRleHQoKTsKLSAgICByZXR1cm4gU2Ny
aXB0U3RhdGU6OmZvckNvbnRleHQoY29udGV4dCk7CisgICAgcmV0dXJuIFNjcmlwdFN0YXRlOjpm
b3JDb250ZXh0KHNjcmlwdC0+Y29udGV4dCgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCBlNTBkNDY0ZjA1MDg0YjMwNGEwMDcxMjk5
MzA3ODA5ZGIxMjYwYzY1Li5mMTk5MmY5YmY0Y2RmNDE2NzkyNmJmNTQ1ODM2NGNhYWRhYjBmYWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTQ3LDcgKzQ3
LDcgQEAKICNpbmNsdWRlICJWOFhQYXRoTlNSZXNvbHZlci5oIgogI2luY2x1ZGUgIldlYkNvcmVN
ZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCi0jaW5j
bHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmgiCisjaW5jbHVkZSAiV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgogI2luY2x1
ZGUgIlhQYXRoTlNSZXNvbHZlci5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CkBAIC0z
MTEsOCArMzExLDggQEAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiB0b1Y4Q29udGV4dChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBXb3JsZEMKICAgICAgICAgICAgIHJldHVy
biB3b3JsZENvbnRleHQuYWRqdXN0ZWRDb250ZXh0KGZyYW1lLT5zY3JpcHQoKSk7CiAjaWYgRU5B
QkxFKFdPUktFUlMpCiAgICAgfSBlbHNlIGlmIChjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSkg
ewotICAgICAgICBpZiAoV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KiBwcm94eSA9IHN0YXRp
Y19jYXN0PFdvcmtlckNvbnRleHQqPihjb250ZXh0KS0+c2NyaXB0KCktPnByb3h5KCkpCi0gICAg
ICAgICAgICByZXR1cm4gcHJveHktPmNvbnRleHQoKTsKKyAgICAgICAgaWYgKFdvcmtlclNjcmlw
dENvbnRyb2xsZXIqIHNjcmlwdCA9IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihjb250ZXh0
KS0+c2NyaXB0KCkpCisgICAgICAgICAgICByZXR1cm4gc2NyaXB0LT5jb250ZXh0KCk7CiAjZW5k
aWYKICAgICB9CiAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVu
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRM
aXN0ZW5lci5jcHAKaW5kZXggNzRhYTAzYzU3MDMzM2Y3OWViZGI4YjQ2ZjFkYzFmYmQ1MWJjZWU2
NS4uYjhjM2I3MjgzM2E3NDQyOGIwZTQ5NDI4YmU4MTdiNTU4MDMyNWRiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRM
aXN0ZW5lci5jcHAKQEAgLTQxLDE3ICs0MSwxMCBAQAogI2luY2x1ZGUgIlY4R0NDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiVjhSZWN1cnNpb25TY29wZS5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRl
eHQuaCIKLSNpbmNsdWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKKyNpbmNsdWRl
ICJXb3JrZXJTY3JpcHRDb250cm9sbGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3Rh
dGljIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eSogd29ya2VyUHJveHkoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+aXNXb3JrZXJDb250
ZXh0KCkpOwotICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBzdGF0aWNfY2FzdDxX
b3JrZXJDb250ZXh0Kj4oY29udGV4dCk7Ci0gICAgcmV0dXJuIHdvcmtlckNvbnRleHQtPnNjcmlw
dCgpLT5wcm94eSgpOwotfQotCiBWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyOjpWOFdvcmtl
ckNvbnRleHRFdmVudExpc3RlbmVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciwgYm9v
bCBpc0lubGluZSwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQpCiAgICAg
OiBWOEV2ZW50TGlzdGVuZXIobGlzdGVuZXIsIGlzSW5saW5lLCB3b3JsZENvbnRleHQpCiB7CkBA
IC02OCwxMSArNjEsMTEgQEAgdm9pZCBWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyOjpoYW5k
bGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogCiAgICAgdjg6OkhhbmRs
ZVNjb3BlIGhhbmRsZVNjb3BlOwogCi0gICAgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KiBw
cm94eSA9IHdvcmtlclByb3h5KGNvbnRleHQpOwotICAgIGlmICghcHJveHkpCisgICAgV29ya2Vy
U2NyaXB0Q29udHJvbGxlciogc2NyaXB0ID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KGNv
bnRleHQpLT5zY3JpcHQoKTsKKyAgICBpZiAoIXNjcmlwdCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gcHJveHktPmNvbnRleHQoKTsK
KyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OENvbnRleHQgPSBzY3JpcHQtPmNvbnRleHQo
KTsKICAgICBpZiAodjhDb250ZXh0LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9u
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1
dGlvblByb3h5LmNwcAppbmRleCA5YmUzNTk1ODBkNDY2Zjg1NzFmYzY0ZDE1YjRkOTJlYzg5NDY5
NjdiLi4wZjJjMDNjY2FiMDBhZTNkZDdmMGJjODE4MjRlNjViYjY1YjE1NDdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorLy8g
RklYTUU6IFRoaXMgZmlsZSBpcyBnb2luZyB0byBiZSByZW1vdmVkIGluIGEgZm9sbG93LXVwIHBh
dGNoLgogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKQEAgLTU5LDEyOCArNjAsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6V29ya2VyQ29u
dGV4dEV4ZWN1dGlvblByb3h5KFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQpCi0gICAgOiBt
X3dvcmtlckNvbnRleHQod29ya2VyQ29udGV4dCkKLSAgICAsIG1fZGlzYWJsZUV2YWxQZW5kaW5n
KFN0cmluZygpKQotewotICAgIFY4SW5pdGlhbGl6ZXI6OmluaXRpYWxpemVXb3JrZXIoKTsKLX0K
LQotV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5Ojp+V29ya2VyQ29udGV4dEV4ZWN1dGlvblBy
b3h5KCkKLXsKLSAgICBkaXNwb3NlKCk7Ci19Ci0KLXZvaWQgV29ya2VyQ29udGV4dEV4ZWN1dGlv
blByb3h5OjpkaXNwb3NlKCkKLXsKLSAgICBtX3BlckNvbnRleHREYXRhLmNsZWFyKCk7Ci0gICAg
bV9jb250ZXh0LmNsZWFyKCk7Ci19Ci0KLWJvb2wgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5
Ojppbml0aWFsaXplSWZOZWVkZWQoKQotewotICAgIC8vIEJhaWwgb3V0IGlmIHRoZSBjb250ZXh0
IGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQuCi0gICAgaWYgKCFtX2NvbnRleHQuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIENyZWF0ZSBhIG5ldyBlbnZpcm9u
bWVudAotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT4gZ2xvYmFsVGVtcGxh
dGU7Ci0gICAgbV9jb250ZXh0LmFkb3B0KHY4OjpDb250ZXh0OjpOZXcoMCwgZ2xvYmFsVGVtcGxh
dGUpKTsKLSAgICBpZiAobV9jb250ZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgLy8gU3RhcnRpbmcgZnJvbSBub3csIHVzZSBsb2NhbCBjb250ZXh0IG9ubHkuCi0g
ICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gdjg6OkxvY2FsPHY4OjpDb250ZXh0
Pjo6TmV3KG1fY29udGV4dC5nZXQoKSk7Ci0KLSAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUo
Y29udGV4dCk7Ci0KLSAgICBtX3BlckNvbnRleHREYXRhID0gVjhQZXJDb250ZXh0RGF0YTo6Y3Jl
YXRlKG1fY29udGV4dC5nZXQoKSk7Ci0gICAgaWYgKCFtX3BlckNvbnRleHREYXRhLT5pbml0KCkp
IHsKLSAgICAgICAgZGlzcG9zZSgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgLy8gU2V0IERlYnVnSWQgZm9yIHRoZSBuZXcgY29udGV4dC4KLSAgICBjb250ZXh0LT5TZXRF
bWJlZGRlckRhdGEoMCwgdjg6OlN0cmluZzo6TmV3KCJ3b3JrZXIiKSk7Ci0KLSAgICAvLyBDcmVh
dGUgYSBuZXcgSlMgb2JqZWN0IGFuZCB1c2UgaXQgYXMgdGhlIHByb3RvdHlwZSBmb3IgdGhlIHNo
YWRvdyBnbG9iYWwgb2JqZWN0LgotICAgIFdyYXBwZXJUeXBlSW5mbyogY29udGV4dFR5cGUgPSAm
VjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjppbmZvOwotI2lmIEVOQUJMRShTSEFSRURfV09SS0VS
UykKLSAgICBpZiAoIW1fd29ya2VyQ29udGV4dC0+aXNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkp
Ci0gICAgICAgIGNvbnRleHRUeXBlID0gJlY4U2hhcmVkV29ya2VyQ29udGV4dDo6aW5mbzsKLSNl
bmRpZgotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiB3b3JrZXJDb250ZXh0Q29uc3RydWN0
b3IgPSBtX3BlckNvbnRleHREYXRhLT5jb25zdHJ1Y3RvckZvclR5cGUoY29udGV4dFR5cGUpOwot
ICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBqc1dvcmtlckNvbnRleHQgPSBWOE9iamVjdENvbnN0
cnVjdG9yOjpuZXdJbnN0YW5jZSh3b3JrZXJDb250ZXh0Q29uc3RydWN0b3IpOwotICAgIC8vIEJh
aWwgb3V0IGlmIGFsbG9jYXRpb24gZmFpbGVkLgotICAgIGlmIChqc1dvcmtlckNvbnRleHQuSXNF
bXB0eSgpKSB7Ci0gICAgICAgIGRpc3Bvc2UoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLQotICAgIC8vIFdyYXAgdGhlIG9iamVjdC4KLSAgICBWOERPTVdyYXBwZXI6OmNyZWF0ZURP
TVdyYXBwZXIoUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PihtX3dvcmtlckNvbnRleHQpLCBjb250
ZXh0VHlwZSwganNXb3JrZXJDb250ZXh0KTsKLQotICAgIC8vIEluc2VydCB0aGUgb2JqZWN0IGlu
c3RhbmNlIGFzIHRoZSBwcm90b3R5cGUgb2YgdGhlIHNoYWRvdyBvYmplY3QuCi0gICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBnbG9iYWxPYmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KG1fY29udGV4dC0+R2xvYmFsKCktPkdldFByb3RvdHlwZSgpKTsKLSAgICBnbG9iYWxPYmpl
Y3QtPlNldFByb3RvdHlwZShqc1dvcmtlckNvbnRleHQpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLVNjcmlwdFZhbHVlIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6ZXZhbHVhdGUoY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFRleHRQb3Np
dGlvbiYgc2NyaXB0U3RhcnRQb3NpdGlvbiwgV29ya2VyQ29udGV4dEV4ZWN1dGlvblN0YXRlKiBz
dGF0ZSkKLXsKLSAgICBWOEdDQ29udHJvbGxlcjo6Y2hlY2tNZW1vcnlVc2FnZSgpOwotCi0gICAg
djg6OkhhbmRsZVNjb3BlIGhzOwotCi0gICAgaWYgKCFpbml0aWFsaXplSWZOZWVkZWQoKSkKLSAg
ICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7Ci0KLSAgICBpZiAoIW1fZGlzYWJsZUV2YWxQZW5k
aW5nLmlzRW1wdHkoKSkgewotICAgICAgICBtX2NvbnRleHQtPkFsbG93Q29kZUdlbmVyYXRpb25G
cm9tU3RyaW5ncyhmYWxzZSk7Ci0gICAgICAgIG1fY29udGV4dC0+U2V0RXJyb3JNZXNzYWdlRm9y
Q29kZUdlbmVyYXRpb25Gcm9tU3RyaW5ncyh2OFN0cmluZyhtX2Rpc2FibGVFdmFsUGVuZGluZykp
OwotICAgICAgICBtX2Rpc2FibGVFdmFsUGVuZGluZyA9IFN0cmluZygpOwotICAgIH0KLQotICAg
IHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShtX2NvbnRleHQuZ2V0KCkpOwotCi0gICAgdjg6OlRy
eUNhdGNoIGV4Y2VwdGlvbkNhdGNoZXI7Ci0KLSAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gc2Ny
aXB0U3RyaW5nID0gdjhFeHRlcm5hbFN0cmluZyhzY3JpcHQpOwotICAgIHY4OjpIYW5kbGU8djg6
OlNjcmlwdD4gY29tcGlsZWRTY3JpcHQgPSBTY3JpcHRTb3VyY2VDb2RlOjpjb21waWxlU2NyaXB0
KHNjcmlwdFN0cmluZywgZmlsZU5hbWUsIHNjcmlwdFN0YXJ0UG9zaXRpb24pOwotICAgIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHJlc3VsdCA9IFNjcmlwdFJ1bm5lcjo6cnVuQ29tcGlsZWRTY3JpcHQo
Y29tcGlsZWRTY3JpcHQsIG1fd29ya2VyQ29udGV4dCk7Ci0KLSAgICBpZiAoIWV4Y2VwdGlvbkNh
dGNoZXIuQ2FuQ29udGludWUoKSkgewotICAgICAgICBtX3dvcmtlckNvbnRleHQtPnNjcmlwdCgp
LT5mb3JiaWRFeGVjdXRpb24oKTsKLSAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7Ci0gICAg
fQotCi0gICAgaWYgKGV4Y2VwdGlvbkNhdGNoZXIuSGFzQ2F1Z2h0KCkpIHsKLSAgICAgICAgdjg6
OkxvY2FsPHY4OjpNZXNzYWdlPiBtZXNzYWdlID0gZXhjZXB0aW9uQ2F0Y2hlci5NZXNzYWdlKCk7
Ci0gICAgICAgIHN0YXRlLT5oYWRFeGNlcHRpb24gPSB0cnVlOwotICAgICAgICBzdGF0ZS0+ZXJy
b3JNZXNzYWdlID0gdG9XZWJDb3JlU3RyaW5nKG1lc3NhZ2UtPkdldCgpKTsKLSAgICAgICAgc3Rh
dGUtPmxpbmVOdW1iZXIgPSBtZXNzYWdlLT5HZXRMaW5lTnVtYmVyKCk7Ci0gICAgICAgIHN0YXRl
LT5zb3VyY2VVUkwgPSB0b1dlYkNvcmVTdHJpbmcobWVzc2FnZS0+R2V0U2NyaXB0UmVzb3VyY2VO
YW1lKCkpOwotICAgICAgICBpZiAobV93b3JrZXJDb250ZXh0LT5zYW5pdGl6ZVNjcmlwdEVycm9y
KHN0YXRlLT5lcnJvck1lc3NhZ2UsIHN0YXRlLT5saW5lTnVtYmVyLCBzdGF0ZS0+c291cmNlVVJM
KSkKLSAgICAgICAgICAgIHN0YXRlLT5leGNlcHRpb24gPSB0aHJvd0Vycm9yKHY4R2VuZXJhbEVy
cm9yLCBzdGF0ZS0+ZXJyb3JNZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBzdGF0ZS0+ZXhjZXB0aW9uID0gU2NyaXB0VmFsdWUoZXhjZXB0aW9uQ2F0Y2hl
ci5FeGNlcHRpb24oKSk7Ci0KLSAgICAgICAgZXhjZXB0aW9uQ2F0Y2hlci5SZXNldCgpOwotICAg
IH0gZWxzZQotICAgICAgICBzdGF0ZS0+aGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0KLSAgICBpZiAo
cmVzdWx0LklzRW1wdHkoKSB8fCByZXN1bHQtPklzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVy
biBTY3JpcHRWYWx1ZSgpOwotCi0gICAgcmV0dXJuIFNjcmlwdFZhbHVlKHJlc3VsdCk7Ci19Ci0K
LXZvaWQgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OjpzZXRFdmFsQWxsb3dlZChib29sIGVu
YWJsZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgbV9kaXNhYmxlRXZhbFBl
bmRpbmcgPSBlbmFibGUgPyBTdHJpbmcoKSA6IGVycm9yTWVzc2FnZTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5o
CmluZGV4IDg4OTBlY2NkZTFiZTllNzY3YzI2ZTk4N2Q5OTM4Y2M0Y2VlY2YwMmYuLjUxYjg1NGJm
ZWY2YjA1MWY0YzY3ZGNhMTkyMzVjM2M0NWQ0ZTA5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oCkBAIC0y
OCw2ICsyOCw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKy8vIEZJWE1FOiBUaGlzIGZpbGUg
aXMgZ29pbmcgdG8gYmUgcmVtb3ZlZCBpbiBhIGZvbGxvdy11cCBwYXRjaC4KIAogI2lmbmRlZiBX
b3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHlfaAogI2RlZmluZSBXb3JrZXJDb250ZXh0RXhlY3V0
aW9uUHJveHlfaApAQCAtNDIsNTEgKzQzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0g
ICAgY2xhc3MgRXZlbnQ7Ci0gICAgY2xhc3MgRXZlbnRUYXJnZXQ7Ci0gICAgY2xhc3MgVjhQZXJD
b250ZXh0RGF0YTsKLSAgICBjbGFzcyBXb3JrZXJDb250ZXh0OwotICAgIHN0cnVjdCBXcmFwcGVy
VHlwZUluZm87Ci0KLSAgICBzdHJ1Y3QgV29ya2VyQ29udGV4dEV4ZWN1dGlvblN0YXRlIHsKLSAg
ICAgICAgV29ya2VyQ29udGV4dEV4ZWN1dGlvblN0YXRlKCkKLSAgICAgICAgICAgIDogaGFkRXhj
ZXB0aW9uKGZhbHNlKQotICAgICAgICAgICAgLCBsaW5lTnVtYmVyKDApCi0gICAgICAgIHsKLSAg
ICAgICAgfQotCi0gICAgICAgIGJvb2wgaGFkRXhjZXB0aW9uOwotICAgICAgICBTY3JpcHRWYWx1
ZSBleGNlcHRpb247Ci0gICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7Ci0gICAgICAgIGludCBs
aW5lTnVtYmVyOwotICAgICAgICBTdHJpbmcgc291cmNlVVJMOwotICAgIH07Ci0KLSAgICBjbGFz
cyBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhw
bGljaXQgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KFdvcmtlckNvbnRleHQqKTsKLSAgICAg
ICAgfldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eSgpOwotCi0gICAgICAgIC8vIEFsb3cgdXNl
IG9mIGV2YWwoKSBhbmQgaXMgZXF1aXZhbGVudHMgaW4gc2NyaXB0cy4KLSAgICAgICAgdm9pZCBz
ZXRFdmFsQWxsb3dlZChib29sIGVuYWJsZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwot
Ci0gICAgICAgIC8vIEV2YWx1YXRlIGEgc2NyaXB0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZXhlY3V0
aW9uIGVudmlyb25tZW50LgotICAgICAgICBTY3JpcHRWYWx1ZSBldmFsdWF0ZShjb25zdCBTdHJp
bmcmIHNjcmlwdCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBz
Y3JpcHRTdGFydFBvc2l0aW9uLCBXb3JrZXJDb250ZXh0RXhlY3V0aW9uU3RhdGUqKTsKLQotICAg
ICAgICAvLyBSZXR1cm5zIGEgbG9jYWwgaGFuZGxlIG9mIHRoZSBjb250ZXh0LgotICAgICAgICB2
ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQoKSB7IHJldHVybiB2ODo6TG9jYWw8djg6OkNv
bnRleHQ+OjpOZXcobV9jb250ZXh0LmdldCgpKTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAg
dm9pZCBpbml0SXNvbGF0ZSgpOwotICAgICAgICBib29sIGluaXRpYWxpemVJZk5lZWRlZCgpOwot
ICAgICAgICB2b2lkIGRpc3Bvc2UoKTsKLQotICAgICAgICBXb3JrZXJDb250ZXh0KiBtX3dvcmtl
ckNvbnRleHQ7Ci0gICAgICAgIFNjb3BlZFBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+IG1fY29udGV4
dDsKLSAgICAgICAgT3duUHRyPFY4UGVyQ29udGV4dERhdGE+IG1fcGVyQ29udGV4dERhdGE7Ci0g
ICAgICAgIFN0cmluZyBtX2Rpc2FibGVFdmFsUGVuZGluZzsKLSAgICB9OwotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXgg
NjI4ZjUxYjYwZDk1NjRlMjQ5YjE1N2ZhNzM5ZjhiYjdlMGVlY2I2MC4uMWU5MDIwODdmYjBhNWIx
NzI1N2U4NTc1OTQxODlhYjM5OTQzNzgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTM2LDggKzM2LDEyIEBA
CiAKICNpbmNsdWRlICJET01UaW1lci5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgor
I2luY2x1ZGUgIlNjcmlwdFJ1bm5lci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlY4RGVkaWNhdGVkV29ya2VyQ29u
dGV4dC5oIgorI2luY2x1ZGUgIlY4SW5pdGlhbGl6ZXIuaCIKKyNpbmNsdWRlICJWOFNoYXJlZFdv
cmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJWOFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJX
b3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5Lmgi
CkBAIC01NSw2ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdvcmtlclNjcmlwdENvbnRy
b2xsZXI6OldvcmtlclNjcmlwdENvbnRyb2xsZXIoV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4
dCkKICAgICA6IG1fd29ya2VyQ29udGV4dCh3b3JrZXJDb250ZXh0KQogICAgICwgbV9pc29sYXRl
KHY4OjpJc29sYXRlOjpOZXcoKSkKKyAgICAsIG1fZGlzYWJsZUV2YWxQZW5kaW5nKFN0cmluZygp
KQogICAgICwgbV9leGVjdXRpb25Gb3JiaWRkZW4oZmFsc2UpCiAgICAgLCBtX2V4ZWN1dGlvblNj
aGVkdWxlZFRvVGVybWluYXRlKGZhbHNlKQogewpAQCAtNjIsNyArNjcsOCBAQCBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyKFdvcmtlckNvbnRleHQqIHdvcmtl
ckNvbnRleHQpCiAgICAgbV9pc29sYXRlLT5FbnRlcigpOwogICAgIG1fZG9tRGF0YVN0b3JlID0g
YWRvcHRQdHIobmV3IERPTURhdGFTdG9yZShET01EYXRhU3RvcmU6OldvcmtlcikpOwogICAgIGRh
dGEtPnNldERPTURhdGFTdG9yZShtX2RvbURhdGFTdG9yZS5nZXQoKSk7Ci0gICAgbV9wcm94eSA9
IGFkb3B0UHRyKG5ldyBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkod29ya2VyQ29udGV4dCkp
OworCisgICAgVjhJbml0aWFsaXplcjo6aW5pdGlhbGl6ZVdvcmtlcigpOwogfQogCiBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyOjp+V29ya2VyU2NyaXB0Q29udHJvbGxlcigpCkBAIC03NCwxMiArODAs
MTIyIEBAIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6On5Xb3JrZXJTY3JpcHRDb250cm9sbGVyKCkK
ICAgICAvLyBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi84MzEwNCNjMTQgZm9yIHdoeSB0aGlzIGlz
IGhlcmUuCiAgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5kaWRTdG9wV29ya2VyUnVu
TG9vcChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3AoJm1fd29ya2VyQ29udGV4dC0+dGhyZWFkKCkt
PnJ1bkxvb3AoKSkpOwogI2VuZGlmCi0gICAgbV9wcm94eS5jbGVhcigpOworICAgIGRpc3Bvc2Uo
KTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpkaXNwb3NlKG1faXNvbGF0ZSk7CiAgICAgbV9pc29s
YXRlLT5FeGl0KCk7CiAgICAgbV9pc29sYXRlLT5EaXNwb3NlKCk7CiB9CiAKK3ZvaWQgV29ya2Vy
U2NyaXB0Q29udHJvbGxlcjo6ZGlzcG9zZSgpCit7CisgICAgbV9wZXJDb250ZXh0RGF0YS5jbGVh
cigpOworICAgIG1fY29udGV4dC5jbGVhcigpOworfQorCitib29sIFdvcmtlclNjcmlwdENvbnRy
b2xsZXI6OmluaXRpYWxpemVJZk5lZWRlZCgpCit7CisgICAgLy8gQmFpbCBvdXQgaWYgdGhlIGNv
bnRleHQgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZC4KKyAgICBpZiAoIW1fY29udGV4dC5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gQ3JlYXRlIGEgbmV3IGVu
dmlyb25tZW50CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiBnbG9iYWxU
ZW1wbGF0ZTsKKyAgICBtX2NvbnRleHQuYWRvcHQodjg6OkNvbnRleHQ6Ok5ldygwLCBnbG9iYWxU
ZW1wbGF0ZSkpOworICAgIGlmIChtX2NvbnRleHQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAvLyBTdGFydGluZyBmcm9tIG5vdywgdXNlIGxvY2FsIGNvbnRleHQgb25s
eS4KKyAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6TG9jYWw8djg6OkNv
bnRleHQ+OjpOZXcobV9jb250ZXh0LmdldCgpKTsKKworICAgIHY4OjpDb250ZXh0OjpTY29wZSBz
Y29wZShjb250ZXh0KTsKKworICAgIG1fcGVyQ29udGV4dERhdGEgPSBWOFBlckNvbnRleHREYXRh
OjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKKyAgICBpZiAoIW1fcGVyQ29udGV4dERhdGEtPmlu
aXQoKSkgeworICAgICAgICBkaXNwb3NlKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICAvLyBTZXQgRGVidWdJZCBmb3IgdGhlIG5ldyBjb250ZXh0LgorICAgIGNvbnRleHQt
PlNldEVtYmVkZGVyRGF0YSgwLCB2ODo6U3RyaW5nOjpOZXcoIndvcmtlciIpKTsKKworICAgIC8v
IENyZWF0ZSBhIG5ldyBKUyBvYmplY3QgYW5kIHVzZSBpdCBhcyB0aGUgcHJvdG90eXBlIGZvciB0
aGUgc2hhZG93IGdsb2JhbCBvYmplY3QuCisgICAgV3JhcHBlclR5cGVJbmZvKiBjb250ZXh0VHlw
ZSA9ICZWOERlZGljYXRlZFdvcmtlckNvbnRleHQ6OmluZm87CisjaWYgRU5BQkxFKFNIQVJFRF9X
T1JLRVJTKQorICAgIGlmICghbV93b3JrZXJDb250ZXh0LT5pc0RlZGljYXRlZFdvcmtlckNvbnRl
eHQoKSkKKyAgICAgICAgY29udGV4dFR5cGUgPSAmVjhTaGFyZWRXb3JrZXJDb250ZXh0OjppbmZv
OworI2VuZGlmCisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IHdvcmtlckNvbnRleHRDb25z
dHJ1Y3RvciA9IG1fcGVyQ29udGV4dERhdGEtPmNvbnN0cnVjdG9yRm9yVHlwZShjb250ZXh0VHlw
ZSk7CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGpzV29ya2VyQ29udGV4dCA9IFY4T2JqZWN0
Q29uc3RydWN0b3I6Om5ld0luc3RhbmNlKHdvcmtlckNvbnRleHRDb25zdHJ1Y3Rvcik7CisgICAg
Ly8gQmFpbCBvdXQgaWYgYWxsb2NhdGlvbiBmYWlsZWQuCisgICAgaWYgKGpzV29ya2VyQ29udGV4
dC5Jc0VtcHR5KCkpIHsKKyAgICAgICAgZGlzcG9zZSgpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgLy8gV3JhcCB0aGUgb2JqZWN0LgorICAgIFY4RE9NV3JhcHBlcjo6Y3Jl
YXRlRE9NV3JhcHBlcihQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+KG1fd29ya2VyQ29udGV4dCks
IGNvbnRleHRUeXBlLCBqc1dvcmtlckNvbnRleHQpOworCisgICAgLy8gSW5zZXJ0IHRoZSBvYmpl
Y3QgaW5zdGFuY2UgYXMgdGhlIHByb3RvdHlwZSBvZiB0aGUgc2hhZG93IG9iamVjdC4KKyAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdsb2JhbE9iamVjdCA9IHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QobV9jb250ZXh0LT5HbG9iYWwoKS0+R2V0UHJvdG90eXBlKCkpOworICAgIGdsb2Jh
bE9iamVjdC0+U2V0UHJvdG90eXBlKGpzV29ya2VyQ29udGV4dCk7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworU2NyaXB0VmFsdWUgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFRleHRQb3Np
dGlvbiYgc2NyaXB0U3RhcnRQb3NpdGlvbiwgV29ya2VyQ29udGV4dEV4ZWN1dGlvblN0YXRlKiBz
dGF0ZSkKK3sKKyAgICBWOEdDQ29udHJvbGxlcjo6Y2hlY2tNZW1vcnlVc2FnZSgpOworCisgICAg
djg6OkhhbmRsZVNjb3BlIGhzOworCisgICAgaWYgKCFpbml0aWFsaXplSWZOZWVkZWQoKSkKKyAg
ICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CisKKyAgICBpZiAoIW1fZGlzYWJsZUV2YWxQZW5k
aW5nLmlzRW1wdHkoKSkgeworICAgICAgICBtX2NvbnRleHQtPkFsbG93Q29kZUdlbmVyYXRpb25G
cm9tU3RyaW5ncyhmYWxzZSk7CisgICAgICAgIG1fY29udGV4dC0+U2V0RXJyb3JNZXNzYWdlRm9y
Q29kZUdlbmVyYXRpb25Gcm9tU3RyaW5ncyh2OFN0cmluZyhtX2Rpc2FibGVFdmFsUGVuZGluZykp
OworICAgICAgICBtX2Rpc2FibGVFdmFsUGVuZGluZyA9IFN0cmluZygpOworICAgIH0KKworICAg
IHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShtX2NvbnRleHQuZ2V0KCkpOworCisgICAgdjg6OlRy
eUNhdGNoIGV4Y2VwdGlvbkNhdGNoZXI7CisKKyAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gc2Ny
aXB0U3RyaW5nID0gdjhFeHRlcm5hbFN0cmluZyhzY3JpcHQpOworICAgIHY4OjpIYW5kbGU8djg6
OlNjcmlwdD4gY29tcGlsZWRTY3JpcHQgPSBTY3JpcHRTb3VyY2VDb2RlOjpjb21waWxlU2NyaXB0
KHNjcmlwdFN0cmluZywgZmlsZU5hbWUsIHNjcmlwdFN0YXJ0UG9zaXRpb24pOworICAgIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHJlc3VsdCA9IFNjcmlwdFJ1bm5lcjo6cnVuQ29tcGlsZWRTY3JpcHQo
Y29tcGlsZWRTY3JpcHQsIG1fd29ya2VyQ29udGV4dCk7CisKKyAgICBpZiAoIWV4Y2VwdGlvbkNh
dGNoZXIuQ2FuQ29udGludWUoKSkgeworICAgICAgICBtX3dvcmtlckNvbnRleHQtPnNjcmlwdCgp
LT5mb3JiaWRFeGVjdXRpb24oKTsKKyAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CisgICAg
fQorCisgICAgaWYgKGV4Y2VwdGlvbkNhdGNoZXIuSGFzQ2F1Z2h0KCkpIHsKKyAgICAgICAgdjg6
OkxvY2FsPHY4OjpNZXNzYWdlPiBtZXNzYWdlID0gZXhjZXB0aW9uQ2F0Y2hlci5NZXNzYWdlKCk7
CisgICAgICAgIHN0YXRlLT5oYWRFeGNlcHRpb24gPSB0cnVlOworICAgICAgICBzdGF0ZS0+ZXJy
b3JNZXNzYWdlID0gdG9XZWJDb3JlU3RyaW5nKG1lc3NhZ2UtPkdldCgpKTsKKyAgICAgICAgc3Rh
dGUtPmxpbmVOdW1iZXIgPSBtZXNzYWdlLT5HZXRMaW5lTnVtYmVyKCk7CisgICAgICAgIHN0YXRl
LT5zb3VyY2VVUkwgPSB0b1dlYkNvcmVTdHJpbmcobWVzc2FnZS0+R2V0U2NyaXB0UmVzb3VyY2VO
YW1lKCkpOworICAgICAgICBpZiAobV93b3JrZXJDb250ZXh0LT5zYW5pdGl6ZVNjcmlwdEVycm9y
KHN0YXRlLT5lcnJvck1lc3NhZ2UsIHN0YXRlLT5saW5lTnVtYmVyLCBzdGF0ZS0+c291cmNlVVJM
KSkKKyAgICAgICAgICAgIHN0YXRlLT5leGNlcHRpb24gPSB0aHJvd0Vycm9yKHY4R2VuZXJhbEVy
cm9yLCBzdGF0ZS0+ZXJyb3JNZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBzdGF0ZS0+ZXhjZXB0aW9uID0gU2NyaXB0VmFsdWUoZXhjZXB0aW9uQ2F0Y2hl
ci5FeGNlcHRpb24oKSk7CisKKyAgICAgICAgZXhjZXB0aW9uQ2F0Y2hlci5SZXNldCgpOworICAg
IH0gZWxzZQorICAgICAgICBzdGF0ZS0+aGFkRXhjZXB0aW9uID0gZmFsc2U7CisKKyAgICBpZiAo
cmVzdWx0LklzRW1wdHkoKSB8fCByZXN1bHQtPklzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVy
biBTY3JpcHRWYWx1ZSgpOworCisgICAgcmV0dXJuIFNjcmlwdFZhbHVlKHJlc3VsdCk7Cit9CisK
K3ZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0RXZhbEFsbG93ZWQoYm9vbCBlbmFibGUs
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIG1fZGlzYWJsZUV2YWxQZW5kaW5n
ID0gZW5hYmxlID8gU3RyaW5nKCkgOiBlcnJvck1lc3NhZ2U7Cit9CisKIHZvaWQgV29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29k
ZSkKIHsKICAgICBldmFsdWF0ZShzb3VyY2VDb2RlLCAwKTsKQEAgLTkxLDcgKzIwNyw3IEBAIHZv
aWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSwgU2NyaXB0CiAgICAgICAgIHJldHVybjsKIAogICAgIFdvcmtlckNvbnRl
eHRFeGVjdXRpb25TdGF0ZSBzdGF0ZTsKLSAgICBtX3Byb3h5LT5ldmFsdWF0ZShzb3VyY2VDb2Rl
LnNvdXJjZSgpLCBzb3VyY2VDb2RlLnVybCgpLnN0cmluZygpLCBzb3VyY2VDb2RlLnN0YXJ0UG9z
aXRpb24oKSwgJnN0YXRlKTsKKyAgICBldmFsdWF0ZShzb3VyY2VDb2RlLnNvdXJjZSgpLCBzb3Vy
Y2VDb2RlLnVybCgpLnN0cmluZygpLCBzb3VyY2VDb2RlLnN0YXJ0UG9zaXRpb24oKSwgJnN0YXRl
KTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24p
CiAgICAgICAgICAgICAqZXhjZXB0aW9uID0gc3RhdGUuZXhjZXB0aW9uOwpAQCAtMTMzLDcgKzI0
OSw3IEBAIGJvb2wgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25Gb3JiaWRkZW4o
KSBjb25zdAogCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVFdmFsKGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewotICAgIG1fcHJveHktPnNldEV2YWxBbGxvd2VkKGZh
bHNlLCBlcnJvck1lc3NhZ2UpOworICAgIHNldEV2YWxBbGxvd2VkKGZhbHNlLCBlcnJvck1lc3Nh
Z2UpOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbihjb25z
dCBTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGUwOGViOWQ5ZmEzNDVjMTAxOTcy
ZWNkOTlhNzYxYzMyODA2MWI0YjYuLjk4MzVkMGUzN2NkYjQ4ODg5OWVjNTYyNWNmZjAxYmEyYTlm
Mjk5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3Jp
cHRDb250cm9sbGVyLmgKQEAgLTMzLDI1ICszMywzOCBAQAogCiAjaWYgRU5BQkxFKFdPUktFUlMp
CiAKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotCiAj
aW5jbHVkZSA8djguaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogICAgIGNsYXNzIFNj
cmlwdFZhbHVlOwogICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7Ci0gICAgY2xhc3MgV29ya2VyQ29u
dGV4dEV4ZWN1dGlvblByb3h5OworCisgICAgc3RydWN0IFdvcmtlckNvbnRleHRFeGVjdXRpb25T
dGF0ZSB7CisgICAgICAgIFdvcmtlckNvbnRleHRFeGVjdXRpb25TdGF0ZSgpCisgICAgICAgICAg
ICA6IGhhZEV4Y2VwdGlvbihmYWxzZSkKKyAgICAgICAgICAgICwgbGluZU51bWJlcigwKQorICAg
ICAgICB7CisgICAgICAgIH0KKworICAgICAgICBib29sIGhhZEV4Y2VwdGlvbjsKKyAgICAgICAg
U2NyaXB0VmFsdWUgZXhjZXB0aW9uOworICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOworICAg
ICAgICBpbnQgbGluZU51bWJlcjsKKyAgICAgICAgU3RyaW5nIHNvdXJjZVVSTDsKKyAgICB9Owog
CiAgICAgY2xhc3MgV29ya2VyU2NyaXB0Q29udHJvbGxlciB7CiAgICAgcHVibGljOgogICAgICAg
ICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKFdvcmtlckNvbnRleHQqKTsKICAgICAgICAgfldvcmtl
clNjcmlwdENvbnRyb2xsZXIoKTsKIAotICAgICAgICBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJv
eHkqIHByb3h5KCkgeyByZXR1cm4gbV9wcm94eS5nZXQoKTsgfQogICAgICAgICBXb3JrZXJDb250
ZXh0KiB3b3JrZXJDb250ZXh0KCkgeyByZXR1cm4gbV93b3JrZXJDb250ZXh0OyB9CiAKICAgICAg
ICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CkBAIC03NCwxMyArODcs
MjYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgZGlzYWJsZUV2YWwoY29u
c3QgU3RyaW5nJik7CiAKKyAgICAgICAgLy8gQWxvdyB1c2Ugb2YgZXZhbCgpIGFuZCBpcyBlcXVp
dmFsZW50cyBpbiBzY3JpcHRzLgorICAgICAgICB2b2lkIHNldEV2YWxBbGxvd2VkKGJvb2wgZW5h
YmxlLCBjb25zdCBTdHJpbmcmKTsKKwogICAgICAgICAvLyBSZXR1cm5zIFdvcmtlclNjcmlwdENv
bnRyb2xsZXIgZm9yIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIGNvbnRleHQuIDAgd2lsbCBiZSBy
ZXR1cm5lZCBpZiB0aGUgY3VycmVudCBleGVjdXRpbmcgY29udGV4dCBpcyBub3QgdGhlIHdvcmtl
ciBjb250ZXh0LgogICAgICAgICBzdGF0aWMgV29ya2VyU2NyaXB0Q29udHJvbGxlciogY29udHJv
bGxlckZvckNvbnRleHQoKTsKIAorICAgICAgICAvLyBFdmFsdWF0ZSBhIHNjcmlwdCBmaWxlIGlu
IHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4KKyAgICAgICAgU2NyaXB0VmFsdWUg
ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNv
bnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3NpdGlvbiwgV29ya2VyQ29udGV4dEV4ZWN1
dGlvblN0YXRlKik7CisKKyAgICAgICAgLy8gUmV0dXJucyBhIGxvY2FsIGhhbmRsZSBvZiB0aGUg
Y29udGV4dC4KKyAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0KCkgeyByZXR1
cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KG1fY29udGV4dC5nZXQoKSk7IH0KICAgICBw
cml2YXRlOgorICAgICAgICBib29sIGluaXRpYWxpemVJZk5lZWRlZCgpOworICAgICAgICB2b2lk
IGRpc3Bvc2UoKTsKKwogICAgICAgICBXb3JrZXJDb250ZXh0KiBtX3dvcmtlckNvbnRleHQ7Ci0g
ICAgICAgIE93blB0cjxXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk+IG1fcHJveHk7CiAgICAg
ICAgIHY4OjpJc29sYXRlKiBtX2lzb2xhdGU7CisgICAgICAgIFNjb3BlZFBlcnNpc3RlbnQ8djg6
OkNvbnRleHQ+IG1fY29udGV4dDsKKyAgICAgICAgT3duUHRyPFY4UGVyQ29udGV4dERhdGE+IG1f
cGVyQ29udGV4dERhdGE7CisgICAgICAgIFN0cmluZyBtX2Rpc2FibGVFdmFsUGVuZGluZzsKICAg
ICAgICAgT3duUHRyPERPTURhdGFTdG9yZT4gbV9kb21EYXRhU3RvcmU7CiAgICAgICAgIGJvb2wg
bV9leGVjdXRpb25Gb3JiaWRkZW47CiAgICAgICAgIGJvb2wgbV9leGVjdXRpb25TY2hlZHVsZWRU
b1Rlcm1pbmF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtl
clNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtl
clNjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCAzYzI1YWQ4YzU1NmE5ZTViYTIzZDhmMjY5YzYz
ODFlZmQ3YWVlYjY4Li4yOTc3NWZjOGIyOTFlNTkyYjA2YWZhOWNhMjUyNzIwN2I4MjFhOTNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAKICNpbmNsdWRlICJTY3JpcHREZWJ1Z0xp
c3RlbmVyLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgotI2luY2x1ZGUgIldvcmtlckNv
bnRleHRFeGVjdXRpb25Qcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckRlYnVnZ2VyQWdlbnQuaCIK
ICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDx2OC5oPgpAQCAtNjYsMTEgKzY1
LDYgQEAgdm9pZCBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoU2NyaXB0RGVi
dWdMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgQVNTRVJUKCFtX2RlYnVnZ2VyU2NyaXB0LmdldCgp
LT5Jc1VuZGVmaW5lZCgpKTsKICAgICB2ODo6RGVidWc6OlNldERlYnVnRXZlbnRMaXN0ZW5lcjIo
JldvcmtlclNjcmlwdERlYnVnU2VydmVyOjp2OERlYnVnRXZlbnRDYWxsYmFjaywgdjg6OkV4dGVy
bmFsOjpOZXcodGhpcykpOwogICAgIAotICAgIC8vIFRPRE86IFNob3VsZCB3ZSByZW1vdmUgfHBy
b3h5fD8gSXQgbG9va3MgbGlrZSB1bnVzZWQgbm93LgotICAgIFdvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eSogcHJveHkgPSBtX3dvcmtlckNvbnRleHQtPnNjcmlwdCgpLT5wcm94eSgpOwotICAg
IGlmICghcHJveHkpCi0gICAgICAgIHJldHVybjsKLQogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uPiBnZXRTY3JpcHRzRnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdCht
X2RlYnVnZ2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJnZXRXb3JrZXJTY3Jp
cHRzIikpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyB2OFVuZGVmaW5l
ZCgpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gZ2V0U2NyaXB0c0Z1bmN0
aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDAsIGFyZ3YpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3Vz
dG9tLmNwcAppbmRleCA1OGFhMWVhOWRlNGU0Y2VlMTgzZDU2NzM1ODM3Y2Q3NzlhYzljNDQzLi5m
MWUzZTFiNGUwOGI5ZDA4ZmVmNmJiNDQ2OGI3ZmM0OTczYzk4MmU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3Vz
dG9tLmNwcApAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgIlY4V29ya2VyQ29udGV4dEV2ZW50
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKICNpbmNsdWRlICJXb3JrZXJDb250
ZXh0LmgiCi0jaW5jbHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmgiCisjaW5jbHVk
ZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTU5LDExICs1OSwxMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2V0VGltZW91dE9ySW50ZXJ2
YWwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5nbAogICAgIGludDMyX3QgdGlt
ZW91dCA9IGFyZ3VtZW50Q291bnQgPj0gMiA/IGFyZ3NbMV0tPkludDMyVmFsdWUoKSA6IDA7CiAg
ICAgaW50IHRpbWVySWQ7CiAKLSAgICBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkqIHByb3h5
ID0gd29ya2VyQ29udGV4dC0+c2NyaXB0KCktPnByb3h5KCk7Ci0gICAgaWYgKCFwcm94eSkKKyAg
ICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQgPSB3b3JrZXJDb250ZXh0LT5zY3JpcHQo
KTsKKyAgICBpZiAoIXNjcmlwdCkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAot
ICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IHByb3h5LT5jb250ZXh0KCk7
CisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gc2NyaXB0LT5jb250ZXh0
KCk7CiAgICAgaWYgKGZ1bmN0aW9uLT5Jc1N0cmluZygpKSB7CiAgICAgICAgIGlmIChDb250ZW50
U2VjdXJpdHlQb2xpY3kqIHBvbGljeSA9IHdvcmtlckNvbnRleHQtPmNvbnRlbnRTZWN1cml0eVBv
bGljeSgpKSB7CiAgICAgICAgICAgICBpZiAoIXBvbGljeS0+YWxsb3dFdmFsKCkpCkBAIC0xMzQs
MTEgKzEzNCwxMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChXb3JrZXJDb250ZXh0KiBp
bXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQwogICAgIGlmICghaW1wbCkKICAg
ICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKIAotICAgIFdvcmtlckNvbnRl
eHRFeGVjdXRpb25Qcm94eSogcHJveHkgPSBpbXBsLT5zY3JpcHQoKS0+cHJveHkoKTsKLSAgICBp
ZiAoIXByb3h5KQorICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCA9IGltcGwtPnNj
cmlwdCgpOworICAgIGlmICghc2NyaXB0KQogICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNr
KGlzb2xhdGUpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnbG9iYWwgPSBwcm94eS0+
Y29udGV4dCgpLT5HbG9iYWwoKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdsb2JhbCA9
IHNjcmlwdC0+Y29udGV4dCgpLT5HbG9iYWwoKTsKICAgICBBU1NFUlQoIWdsb2JhbC5Jc0VtcHR5
KCkpOwogICAgIHJldHVybiBnbG9iYWw7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175903</attachid>
            <date>2012-11-25 17:32:23 -0800</date>
            <delta_ts>2012-11-26 03:21:36 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-103210-20121126103001.patch</filename>
            <type>text/plain</type>
            <size>25416</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1Njc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI0MDhlNjQ3NTc3ODFi
MTA3NTMwNDYyMTZjYTc2MjY0ZTQxZjE3ZC4uMmEyNDY5YWY0ZjQ0OTRjNDhiYmE2MGZjOWJhMDc1
MWNiNDJjZTJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTExLTI1ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlbW92ZSBX
b3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMzIxMAorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFy
dGguCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb3ZlcyBhbGwgbWV0aG9kcyBpbiBXb3JrZXJDb250
ZXh0RXhlY3V0aW9uUHJveHkKKyAgICAgICAgdG8gV29ya2VyU2NyaXB0Q29udHJvbGxlci4KKwor
ICAgICAgICBEdWUgdG8gdGhlIGRlcGVuZGVuY3kgYmV0d2VlbiBXb3JrZXJDb250ZXh0RXhlY3V0
aW9uUHJveHkncyBtZXRob2RzLAorICAgICAgICBpdCBpcyBhIGJpdCBkaWZmaWN1bHQgdG8gc3Bs
aXQgdGhpcyBwYXRjaCBpbnRvIHBpZWNlcy4KKyAgICAgICAgVGhpcyBwYXRjaCBzaW1wbHkgbW92
ZXMgbWV0aG9kcyB3aXRob3V0IGNoYW5naW5nIHRoZWlyIGxvZ2ljLgorICAgICAgICBBbHNvIHRo
aXMgcGF0Y2ggZG9lc24ndCByZW1vdmUgZW1wdHkgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5
LntoLGNwcH0KKyAgICAgICAgdG8ga2VlcCB0aGUgZGlmZiBzYW5lLiBJIHdpbGwgYWRkcmVzcyB0
aGVzZSBpc3N1ZXMgaW4gYSBmb2xsb3ctdXAgcGF0Y2guCisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
d29ya2VyLyoKKworICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdFN0YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNjcmlwdFN0YXRlRnJvbVdvcmtlckNvbnRleHQpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Q29udGV4dCk6
CisgICAgICAgICogYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyOjpoYW5kbGVF
dmVudCk6CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHku
aDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OldvcmtlclNjcmlwdENvbnRy
b2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6fldvcmtl
clNjcmlwdENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJv
bGxlcjo6ZGlzcG9zZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVJZk5lZWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRFdmFsQWxsb3dlZCk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbCk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0RXhlY3V0aW9uU3RhdGU6OldvcmtlckNvbnRl
eHRFeGVjdXRpb25TdGF0ZSk6CisgICAgICAgIChXb3JrZXJDb250ZXh0RXhlY3V0aW9uU3RhdGUp
OgorICAgICAgICAoV29ya2VyU2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJTY3JpcHRDb250cm9sbGVyOjpjb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9X
b3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3Jp
cHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0VGltZW91
dE9ySW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisKIDIwMTItMTEtMjIgIEtl
bnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gTW92ZSBX
b3JrZXJFeGVjdXRpb25Db250ZXh0UHJveHk6OmluaXRpYWxpemVJZk5lZWRlZCgpIHRvIFY4SW5p
dGlhbGl6ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFN0
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFN0YXRlLmNwcAppbmRl
eCA4YTA1ODBiY2Q4M2M0NTFmZmI0ODAxN2ViNWI3NzNkNTI4ZjgzMjVmLi43MjIyMzJhMzNjM2Uz
YTYyZDBhNTExZGRlZDkyYWRhMDg3YTU2NjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0U3RhdGUuY3BwCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiVjhIaWRkZW5Q
cm9wZXJ0eU5hbWUuaCIKICNpbmNsdWRlICJWOFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJX
b3JrZXJDb250ZXh0LmgiCi0jaW5jbHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5Lmgi
CiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPHY4Lmg+CiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTE0MiwxMyArMTQxLDEyIEBAIFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZUZyb21QYWdlKERPTVdyYXBwZXJXb3JsZCosIFBhZ2UqIHBhZ2UpCiAj
aWYgRU5BQkxFKFdPUktFUlMpCiBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGVGcm9tV29ya2VyQ29u
dGV4dChXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0KQogewotICAgIFdvcmtlckNvbnRleHRF
eGVjdXRpb25Qcm94eSogcHJveHkgPSB3b3JrZXJDb250ZXh0LT5zY3JpcHQoKS0+cHJveHkoKTsK
LSAgICBpZiAoIXByb3h5KQorICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCA9IHdv
cmtlckNvbnRleHQtPnNjcmlwdCgpOworICAgIGlmICghc2NyaXB0KQogICAgICAgICByZXR1cm4g
MDsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6TG9jYWw8djg6
OkNvbnRleHQ+IGNvbnRleHQgPSBwcm94eS0+Y29udGV4dCgpOwotICAgIHJldHVybiBTY3JpcHRT
dGF0ZTo6Zm9yQ29udGV4dChjb250ZXh0KTsKKyAgICByZXR1cm4gU2NyaXB0U3RhdGU6OmZvckNv
bnRleHQoc2NyaXB0LT5jb250ZXh0KCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuY3BwCmluZGV4IGU1MGQ0NjRmMDUwODRiMzA0YTAwNzEyOTkzMDc4
MDlkYjEyNjBjNjUuLmYxOTkyZjliZjRjZGY0MTY3OTI2YmY1NDU4MzY0Y2FhZGFiMGZhYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcApAQCAtNDcsNyArNDcsNyBA
QAogI2luY2x1ZGUgIlY4WFBhdGhOU1Jlc29sdmVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9y
eUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKLSNpbmNsdWRl
ICJXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKKyNpbmNsdWRlICJXb3JrZXJTY3JpcHRD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ybGRDb250ZXh0SGFuZGxlLmgiCiAjaW5jbHVkZSAi
WFBhdGhOU1Jlc29sdmVyLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTMxMSw4
ICszMTEsOCBAQCB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHRvVjhDb250ZXh0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFdvcmxkQwogICAgICAgICAgICAgcmV0dXJuIHdv
cmxkQ29udGV4dC5hZGp1c3RlZENvbnRleHQoZnJhbWUtPnNjcmlwdCgpKTsKICNpZiBFTkFCTEUo
V09SS0VSUykKICAgICB9IGVsc2UgaWYgKGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKSB7Ci0g
ICAgICAgIGlmIChXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkqIHByb3h5ID0gc3RhdGljX2Nh
c3Q8V29ya2VyQ29udGV4dCo+KGNvbnRleHQpLT5zY3JpcHQoKS0+cHJveHkoKSkKLSAgICAgICAg
ICAgIHJldHVybiBwcm94eS0+Y29udGV4dCgpOworICAgICAgICBpZiAoV29ya2VyU2NyaXB0Q29u
dHJvbGxlciogc2NyaXB0ID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KGNvbnRleHQpLT5z
Y3JpcHQoKSkKKyAgICAgICAgICAgIHJldHVybiBzY3JpcHQtPmNvbnRleHQoKTsKICNlbmRpZgog
ICAgIH0KICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0PigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3Rl
bmVyLmNwcAppbmRleCA3NGFhMDNjNTcwMzMzZjc5ZWJkYjhiNDZmMWRjMWZiZDUxYmNlZTY1Li4z
YmRhYWYzYzdiMjNhYzgyMjg3YWY0NGIyMjEwMjc4YTE2NTRkYjQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3Rl
bmVyLmNwcApAQCAtNDEsMTcgKzQxLDEwIEBACiAjaW5jbHVkZSAiVjhHQ0NvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5o
IgotI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgorI2luY2x1ZGUgIldv
cmtlclNjcmlwdENvbnRyb2xsZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KiB3b3JrZXJQcm94eShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0LT5pc1dvcmtlckNvbnRleHQo
KSk7Ci0gICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IHN0YXRpY19jYXN0PFdvcmtl
ckNvbnRleHQqPihjb250ZXh0KTsKLSAgICByZXR1cm4gd29ya2VyQ29udGV4dC0+c2NyaXB0KCkt
PnByb3h5KCk7Ci19Ci0KIFY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXI6OlY4V29ya2VyQ29u
dGV4dEV2ZW50TGlzdGVuZXIodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVyLCBib29sIGlz
SW5saW5lLCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4dCkKICAgICA6IFY4
RXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwgaXNJbmxpbmUsIHdvcmxkQ29udGV4dCkKIHsKQEAgLTY4
LDExICs2MSwxMiBAQCB2b2lkIFY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2
ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAKICAgICB2ODo6SGFuZGxlU2Nv
cGUgaGFuZGxlU2NvcGU7CiAKLSAgICBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkqIHByb3h5
ID0gd29ya2VyUHJveHkoY29udGV4dCk7Ci0gICAgaWYgKCFwcm94eSkKKyAgICBBU1NFUlQoY29u
dGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOworICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXIqIHNj
cmlwdCA9IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihjb250ZXh0KS0+c2NyaXB0KCk7Cisg
ICAgaWYgKCFzY3JpcHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+IHY4Q29udGV4dCA9IHByb3h5LT5jb250ZXh0KCk7CisgICAgdjg6OkhhbmRsZTx2ODo6
Q29udGV4dD4gdjhDb250ZXh0ID0gc2NyaXB0LT5jb250ZXh0KCk7CiAgICAgaWYgKHY4Q29udGV4
dC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKaW5kZXgg
OWJlMzU5NTgwZDQ2NmY4NTcxZmM2NGQxNWI0ZDkyZWM4OTQ2OTY3Yi4uMGYyYzAzY2NhYjAwYWUz
ZGQ3ZjBiYzgxODI0ZTY1YmI2NWIxNTQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKy8vIEZJWE1FOiBUaGlzIGZpbGUgaXMg
Z29pbmcgdG8gYmUgcmVtb3ZlZCBpbiBhIGZvbGxvdy11cCBwYXRjaC4KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgogCkBAIC01OSwxMjggKzYwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1X
b3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eShX
b3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0KQotICAgIDogbV93b3JrZXJDb250ZXh0KHdvcmtl
ckNvbnRleHQpCi0gICAgLCBtX2Rpc2FibGVFdmFsUGVuZGluZyhTdHJpbmcoKSkKLXsKLSAgICBW
OEluaXRpYWxpemVyOjppbml0aWFsaXplV29ya2VyKCk7Ci19Ci0KLVdvcmtlckNvbnRleHRFeGVj
dXRpb25Qcm94eTo6fldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eSgpCi17Ci0gICAgZGlzcG9z
ZSgpOwotfQotCi12b2lkIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6ZGlzcG9zZSgpCi17
Ci0gICAgbV9wZXJDb250ZXh0RGF0YS5jbGVhcigpOwotICAgIG1fY29udGV4dC5jbGVhcigpOwot
fQotCi1ib29sIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6aW5pdGlhbGl6ZUlmTmVlZGVk
KCkKLXsKLSAgICAvLyBCYWlsIG91dCBpZiB0aGUgY29udGV4dCBoYXMgYWxyZWFkeSBiZWVuIGlu
aXRpYWxpemVkLgotICAgIGlmICghbV9jb250ZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICAvLyBDcmVhdGUgYSBuZXcgZW52aXJvbm1lbnQKLSAgICB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+IGdsb2JhbFRlbXBsYXRlOwotICAgIG1fY29udGV4dC5h
ZG9wdCh2ODo6Q29udGV4dDo6TmV3KDAsIGdsb2JhbFRlbXBsYXRlKSk7Ci0gICAgaWYgKG1fY29u
dGV4dC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIFN0YXJ0aW5n
IGZyb20gbm93LCB1c2UgbG9jYWwgY29udGV4dCBvbmx5LgotICAgIHY4OjpMb2NhbDx2ODo6Q29u
dGV4dD4gY29udGV4dCA9IHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhtX2NvbnRleHQuZ2V0
KCkpOwotCi0gICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKGNvbnRleHQpOwotCi0gICAgbV9w
ZXJDb250ZXh0RGF0YSA9IFY4UGVyQ29udGV4dERhdGE6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkp
OwotICAgIGlmICghbV9wZXJDb250ZXh0RGF0YS0+aW5pdCgpKSB7Ci0gICAgICAgIGRpc3Bvc2Uo
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIFNldCBEZWJ1Z0lkIGZv
ciB0aGUgbmV3IGNvbnRleHQuCi0gICAgY29udGV4dC0+U2V0RW1iZWRkZXJEYXRhKDAsIHY4OjpT
dHJpbmc6Ok5ldygid29ya2VyIikpOwotCi0gICAgLy8gQ3JlYXRlIGEgbmV3IEpTIG9iamVjdCBh
bmQgdXNlIGl0IGFzIHRoZSBwcm90b3R5cGUgZm9yIHRoZSBzaGFkb3cgZ2xvYmFsIG9iamVjdC4K
LSAgICBXcmFwcGVyVHlwZUluZm8qIGNvbnRleHRUeXBlID0gJlY4RGVkaWNhdGVkV29ya2VyQ29u
dGV4dDo6aW5mbzsKLSNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCi0gICAgaWYgKCFtX3dvcmtl
ckNvbnRleHQtPmlzRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpKQotICAgICAgICBjb250ZXh0VHlw
ZSA9ICZWOFNoYXJlZFdvcmtlckNvbnRleHQ6OmluZm87Ci0jZW5kaWYKLSAgICB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvbj4gd29ya2VyQ29udGV4dENvbnN0cnVjdG9yID0gbV9wZXJDb250ZXh0RGF0
YS0+Y29uc3RydWN0b3JGb3JUeXBlKGNvbnRleHRUeXBlKTsKLSAgICB2ODo6TG9jYWw8djg6Ok9i
amVjdD4ganNXb3JrZXJDb250ZXh0ID0gVjhPYmplY3RDb25zdHJ1Y3Rvcjo6bmV3SW5zdGFuY2Uo
d29ya2VyQ29udGV4dENvbnN0cnVjdG9yKTsKLSAgICAvLyBCYWlsIG91dCBpZiBhbGxvY2F0aW9u
IGZhaWxlZC4KLSAgICBpZiAoanNXb3JrZXJDb250ZXh0LklzRW1wdHkoKSkgewotICAgICAgICBk
aXNwb3NlKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBXcmFwIHRo
ZSBvYmplY3QuCi0gICAgVjhET01XcmFwcGVyOjpjcmVhdGVET01XcmFwcGVyKFBhc3NSZWZQdHI8
V29ya2VyQ29udGV4dD4obV93b3JrZXJDb250ZXh0KSwgY29udGV4dFR5cGUsIGpzV29ya2VyQ29u
dGV4dCk7Ci0KLSAgICAvLyBJbnNlcnQgdGhlIG9iamVjdCBpbnN0YW5jZSBhcyB0aGUgcHJvdG90
eXBlIG9mIHRoZSBzaGFkb3cgb2JqZWN0LgotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xv
YmFsT2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChtX2NvbnRleHQtPkdsb2Jh
bCgpLT5HZXRQcm90b3R5cGUoKSk7Ci0gICAgZ2xvYmFsT2JqZWN0LT5TZXRQcm90b3R5cGUoanNX
b3JrZXJDb250ZXh0KTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1TY3JpcHRWYWx1ZSBXb3Jr
ZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXJ0UG9z
aXRpb24sIFdvcmtlckNvbnRleHRFeGVjdXRpb25TdGF0ZSogc3RhdGUpCi17Ci0gICAgVjhHQ0Nv
bnRyb2xsZXI6OmNoZWNrTWVtb3J5VXNhZ2UoKTsKLQotICAgIHY4OjpIYW5kbGVTY29wZSBoczsK
LQotICAgIGlmICghaW5pdGlhbGl6ZUlmTmVlZGVkKCkpCi0gICAgICAgIHJldHVybiBTY3JpcHRW
YWx1ZSgpOwotCi0gICAgaWYgKCFtX2Rpc2FibGVFdmFsUGVuZGluZy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgbV9jb250ZXh0LT5BbGxvd0NvZGVHZW5lcmF0aW9uRnJvbVN0cmluZ3MoZmFsc2UpOwot
ICAgICAgICBtX2NvbnRleHQtPlNldEVycm9yTWVzc2FnZUZvckNvZGVHZW5lcmF0aW9uRnJvbVN0
cmluZ3ModjhTdHJpbmcobV9kaXNhYmxlRXZhbFBlbmRpbmcpKTsKLSAgICAgICAgbV9kaXNhYmxl
RXZhbFBlbmRpbmcgPSBTdHJpbmcoKTsKLSAgICB9Ci0KLSAgICB2ODo6Q29udGV4dDo6U2NvcGUg
c2NvcGUobV9jb250ZXh0LmdldCgpKTsKLQotICAgIHY4OjpUcnlDYXRjaCBleGNlcHRpb25DYXRj
aGVyOwotCi0gICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IHNjcmlwdFN0cmluZyA9IHY4RXh0ZXJu
YWxTdHJpbmcoc2NyaXB0KTsKLSAgICB2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+IGNvbXBpbGVkU2Ny
aXB0ID0gU2NyaXB0U291cmNlQ29kZTo6Y29tcGlsZVNjcmlwdChzY3JpcHRTdHJpbmcsIGZpbGVO
YW1lLCBzY3JpcHRTdGFydFBvc2l0aW9uKTsKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXN1
bHQgPSBTY3JpcHRSdW5uZXI6OnJ1bkNvbXBpbGVkU2NyaXB0KGNvbXBpbGVkU2NyaXB0LCBtX3dv
cmtlckNvbnRleHQpOwotCi0gICAgaWYgKCFleGNlcHRpb25DYXRjaGVyLkNhbkNvbnRpbnVlKCkp
IHsKLSAgICAgICAgbV93b3JrZXJDb250ZXh0LT5zY3JpcHQoKS0+Zm9yYmlkRXhlY3V0aW9uKCk7
Ci0gICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOwotICAgIH0KLQotICAgIGlmIChleGNlcHRp
b25DYXRjaGVyLkhhc0NhdWdodCgpKSB7Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6TWVzc2FnZT4g
bWVzc2FnZSA9IGV4Y2VwdGlvbkNhdGNoZXIuTWVzc2FnZSgpOwotICAgICAgICBzdGF0ZS0+aGFk
RXhjZXB0aW9uID0gdHJ1ZTsKLSAgICAgICAgc3RhdGUtPmVycm9yTWVzc2FnZSA9IHRvV2ViQ29y
ZVN0cmluZyhtZXNzYWdlLT5HZXQoKSk7Ci0gICAgICAgIHN0YXRlLT5saW5lTnVtYmVyID0gbWVz
c2FnZS0+R2V0TGluZU51bWJlcigpOwotICAgICAgICBzdGF0ZS0+c291cmNlVVJMID0gdG9XZWJD
b3JlU3RyaW5nKG1lc3NhZ2UtPkdldFNjcmlwdFJlc291cmNlTmFtZSgpKTsKLSAgICAgICAgaWYg
KG1fd29ya2VyQ29udGV4dC0+c2FuaXRpemVTY3JpcHRFcnJvcihzdGF0ZS0+ZXJyb3JNZXNzYWdl
LCBzdGF0ZS0+bGluZU51bWJlciwgc3RhdGUtPnNvdXJjZVVSTCkpCi0gICAgICAgICAgICBzdGF0
ZS0+ZXhjZXB0aW9uID0gdGhyb3dFcnJvcih2OEdlbmVyYWxFcnJvciwgc3RhdGUtPmVycm9yTWVz
c2FnZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RhdGUtPmV4
Y2VwdGlvbiA9IFNjcmlwdFZhbHVlKGV4Y2VwdGlvbkNhdGNoZXIuRXhjZXB0aW9uKCkpOwotCi0g
ICAgICAgIGV4Y2VwdGlvbkNhdGNoZXIuUmVzZXQoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgc3Rh
dGUtPmhhZEV4Y2VwdGlvbiA9IGZhbHNlOwotCi0gICAgaWYgKHJlc3VsdC5Jc0VtcHR5KCkgfHwg
cmVzdWx0LT5Jc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKLQot
ICAgIHJldHVybiBTY3JpcHRWYWx1ZShyZXN1bHQpOwotfQotCi12b2lkIFdvcmtlckNvbnRleHRF
eGVjdXRpb25Qcm94eTo6c2V0RXZhbEFsbG93ZWQoYm9vbCBlbmFibGUsIGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlKQotewotICAgIG1fZGlzYWJsZUV2YWxQZW5kaW5nID0gZW5hYmxlID8gU3Ry
aW5nKCkgOiBlcnJvck1lc3NhZ2U7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaAppbmRleCA4ODkwZWNjZGUxYmU5
ZTc2N2MyNmU5ODdkOTkzOGNjNGNlZWNmMDJmLi41MWI4NTRiZmVmNmIwNTFmNGM2N2RjYTE5MjM1
YzNjNDVkNGUwOWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3Jr
ZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCisvLyBGSVhNRTogVGhpcyBmaWxlIGlzIGdvaW5nIHRvIGJlIHJlbW92
ZWQgaW4gYSBmb2xsb3ctdXAgcGF0Y2guCiAKICNpZm5kZWYgV29ya2VyQ29udGV4dEV4ZWN1dGlv
blByb3h5X2gKICNkZWZpbmUgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5X2gKQEAgLTQyLDUx
ICs0Myw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEV2ZW50OwotICAg
IGNsYXNzIEV2ZW50VGFyZ2V0OwotICAgIGNsYXNzIFY4UGVyQ29udGV4dERhdGE7Ci0gICAgY2xh
c3MgV29ya2VyQ29udGV4dDsKLSAgICBzdHJ1Y3QgV3JhcHBlclR5cGVJbmZvOwotCi0gICAgc3Ry
dWN0IFdvcmtlckNvbnRleHRFeGVjdXRpb25TdGF0ZSB7Ci0gICAgICAgIFdvcmtlckNvbnRleHRF
eGVjdXRpb25TdGF0ZSgpCi0gICAgICAgICAgICA6IGhhZEV4Y2VwdGlvbihmYWxzZSkKLSAgICAg
ICAgICAgICwgbGluZU51bWJlcigwKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBi
b29sIGhhZEV4Y2VwdGlvbjsKLSAgICAgICAgU2NyaXB0VmFsdWUgZXhjZXB0aW9uOwotICAgICAg
ICBTdHJpbmcgZXJyb3JNZXNzYWdlOwotICAgICAgICBpbnQgbGluZU51bWJlcjsKLSAgICAgICAg
U3RyaW5nIHNvdXJjZVVSTDsKLSAgICB9OwotCi0gICAgY2xhc3MgV29ya2VyQ29udGV4dEV4ZWN1
dGlvblByb3h5IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IFdvcmtlckNvbnRleHRF
eGVjdXRpb25Qcm94eShXb3JrZXJDb250ZXh0Kik7Ci0gICAgICAgIH5Xb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHkoKTsKLQotICAgICAgICAvLyBBbG93IHVzZSBvZiBldmFsKCkgYW5kIGlzIGVx
dWl2YWxlbnRzIGluIHNjcmlwdHMuCi0gICAgICAgIHZvaWQgc2V0RXZhbEFsbG93ZWQoYm9vbCBl
bmFibGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLQotICAgICAgICAvLyBFdmFsdWF0
ZSBhIHNjcmlwdCBmaWxlIGluIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4KLSAg
ICAgICAgU2NyaXB0VmFsdWUgZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3NpdGlvbiwg
V29ya2VyQ29udGV4dEV4ZWN1dGlvblN0YXRlKik7Ci0KLSAgICAgICAgLy8gUmV0dXJucyBhIGxv
Y2FsIGhhbmRsZSBvZiB0aGUgY29udGV4dC4KLSAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0
PiBjb250ZXh0KCkgeyByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KG1fY29udGV4
dC5nZXQoKSk7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgaW5pdElzb2xhdGUoKTsK
LSAgICAgICAgYm9vbCBpbml0aWFsaXplSWZOZWVkZWQoKTsKLSAgICAgICAgdm9pZCBkaXNwb3Nl
KCk7Ci0KLSAgICAgICAgV29ya2VyQ29udGV4dCogbV93b3JrZXJDb250ZXh0OwotICAgICAgICBT
Y29wZWRQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgICAgIE93blB0cjxW
OFBlckNvbnRleHREYXRhPiBtX3BlckNvbnRleHREYXRhOwotICAgICAgICBTdHJpbmcgbV9kaXNh
YmxlRXZhbFBlbmRpbmc7Ci0gICAgfTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDYyOGY1MWI2MGQ5NTY0ZTI0OWIx
NTdmYTczOWY4YmI3ZTBlZWNiNjAuLjQxNTU0MzlhNTYyMTRjMWNmZWRiNTViZjI0ZmYzMTkxNTgz
MmE5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zNiw4ICszNiwxMiBAQAogCiAjaW5jbHVkZSAiRE9NVGlt
ZXIuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKKyNpbmNsdWRlICJTY3JpcHRSdW5u
ZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFs
dWUuaCIKKyNpbmNsdWRlICJWOERlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRlICJW
OEluaXRpYWxpemVyLmgiCisjaW5jbHVkZSAiVjhTaGFyZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5j
bHVkZSAiVjhXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgpAQCAtNjIsNyArNjYsOCBAQCBX
b3JrZXJTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyKFdvcmtlckNvbnRl
eHQqIHdvcmtlckNvbnRleHQpCiAgICAgbV9pc29sYXRlLT5FbnRlcigpOwogICAgIG1fZG9tRGF0
YVN0b3JlID0gYWRvcHRQdHIobmV3IERPTURhdGFTdG9yZShET01EYXRhU3RvcmU6Oldvcmtlcikp
OwogICAgIGRhdGEtPnNldERPTURhdGFTdG9yZShtX2RvbURhdGFTdG9yZS5nZXQoKSk7Ci0gICAg
bV9wcm94eSA9IGFkb3B0UHRyKG5ldyBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkod29ya2Vy
Q29udGV4dCkpOworCisgICAgVjhJbml0aWFsaXplcjo6aW5pdGlhbGl6ZVdvcmtlcigpOwogfQog
CiBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjp+V29ya2VyU2NyaXB0Q29udHJvbGxlcigpCkBAIC03
NCwxMiArNzksMTE4IEBAIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6On5Xb3JrZXJTY3JpcHRDb250
cm9sbGVyKCkKICAgICAvLyBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi84MzEwNCNjMTQgZm9yIHdo
eSB0aGlzIGlzIGhlcmUuCiAgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5kaWRTdG9w
V29ya2VyUnVuTG9vcChXZWJLaXQ6OldlYldvcmtlclJ1bkxvb3AoJm1fd29ya2VyQ29udGV4dC0+
dGhyZWFkKCktPnJ1bkxvb3AoKSkpOwogI2VuZGlmCi0gICAgbV9wcm94eS5jbGVhcigpOworICAg
IGRpc3Bvc2UoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpkaXNwb3NlKG1faXNvbGF0ZSk7CiAg
ICAgbV9pc29sYXRlLT5FeGl0KCk7CiAgICAgbV9pc29sYXRlLT5EaXNwb3NlKCk7CiB9CiAKK3Zv
aWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZGlzcG9zZSgpCit7CisgICAgbV9wZXJDb250ZXh0
RGF0YS5jbGVhcigpOworICAgIG1fY29udGV4dC5jbGVhcigpOworfQorCitib29sIFdvcmtlclNj
cmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVJZk5lZWRlZCgpCit7CisgICAgaWYgKCFtX2NvbnRl
eHQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3RUZW1wbGF0ZT4gZ2xvYmFsVGVtcGxhdGU7CisgICAgbV9jb250ZXh0LmFkb3B0
KHY4OjpDb250ZXh0OjpOZXcoMCwgZ2xvYmFsVGVtcGxhdGUpKTsKKyAgICBpZiAobV9jb250ZXh0
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gU3RhcnRpbmcgZnJv
bSBub3csIHVzZSBsb2NhbCBjb250ZXh0IG9ubHkuCisgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0
PiBjb250ZXh0ID0gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KG1fY29udGV4dC5nZXQoKSk7
CisKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29udGV4dCk7CisKKyAgICBtX3BlckNv
bnRleHREYXRhID0gVjhQZXJDb250ZXh0RGF0YTo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7Cisg
ICAgaWYgKCFtX3BlckNvbnRleHREYXRhLT5pbml0KCkpIHsKKyAgICAgICAgZGlzcG9zZSgpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gU2V0IERlYnVnSWQgZm9yIHRo
ZSBuZXcgY29udGV4dC4KKyAgICBjb250ZXh0LT5TZXRFbWJlZGRlckRhdGEoMCwgdjg6OlN0cmlu
Zzo6TmV3KCJ3b3JrZXIiKSk7CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgSlMgb2JqZWN0IGFuZCB1
c2UgaXQgYXMgdGhlIHByb3RvdHlwZSBmb3IgdGhlIHNoYWRvdyBnbG9iYWwgb2JqZWN0LgorICAg
IFdyYXBwZXJUeXBlSW5mbyogY29udGV4dFR5cGUgPSAmVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
OjppbmZvOworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyAgICBpZiAoIW1fd29ya2VyQ29u
dGV4dC0+aXNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkpCisgICAgICAgIGNvbnRleHRUeXBlID0g
JlY4U2hhcmVkV29ya2VyQ29udGV4dDo6aW5mbzsKKyNlbmRpZgorICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uPiB3b3JrZXJDb250ZXh0Q29uc3RydWN0b3IgPSBtX3BlckNvbnRleHREYXRhLT5j
b25zdHJ1Y3RvckZvclR5cGUoY29udGV4dFR5cGUpOworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0
PiBqc1dvcmtlckNvbnRleHQgPSBWOE9iamVjdENvbnN0cnVjdG9yOjpuZXdJbnN0YW5jZSh3b3Jr
ZXJDb250ZXh0Q29uc3RydWN0b3IpOworICAgIGlmIChqc1dvcmtlckNvbnRleHQuSXNFbXB0eSgp
KSB7CisgICAgICAgIGRpc3Bvc2UoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihQYXNzUmVmUHRyPFdvcmtlckNvbnRl
eHQ+KG1fd29ya2VyQ29udGV4dCksIGNvbnRleHRUeXBlLCBqc1dvcmtlckNvbnRleHQpOworCisg
ICAgLy8gSW5zZXJ0IHRoZSBvYmplY3QgaW5zdGFuY2UgYXMgdGhlIHByb3RvdHlwZSBvZiB0aGUg
c2hhZG93IG9iamVjdC4KKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdsb2JhbE9iamVjdCA9
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QobV9jb250ZXh0LT5HbG9iYWwoKS0+R2V0UHJv
dG90eXBlKCkpOworICAgIGdsb2JhbE9iamVjdC0+U2V0UHJvdG90eXBlKGpzV29ya2VyQ29udGV4
dCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworU2NyaXB0VmFsdWUgV29ya2VyU2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3NpdGlvbiwgV29ya2VyQ29u
dGV4dEV4ZWN1dGlvblN0YXRlKiBzdGF0ZSkKK3sKKyAgICBWOEdDQ29udHJvbGxlcjo6Y2hlY2tN
ZW1vcnlVc2FnZSgpOworCisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworCisgICAg
aWYgKCFpbml0aWFsaXplSWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7
CisKKyAgICBpZiAoIW1fZGlzYWJsZUV2YWxQZW5kaW5nLmlzRW1wdHkoKSkgeworICAgICAgICBt
X2NvbnRleHQtPkFsbG93Q29kZUdlbmVyYXRpb25Gcm9tU3RyaW5ncyhmYWxzZSk7CisgICAgICAg
IG1fY29udGV4dC0+U2V0RXJyb3JNZXNzYWdlRm9yQ29kZUdlbmVyYXRpb25Gcm9tU3RyaW5ncyh2
OFN0cmluZyhtX2Rpc2FibGVFdmFsUGVuZGluZykpOworICAgICAgICBtX2Rpc2FibGVFdmFsUGVu
ZGluZyA9IFN0cmluZygpOworICAgIH0KKworICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZSht
X2NvbnRleHQuZ2V0KCkpOworCisgICAgdjg6OlRyeUNhdGNoIGJsb2NrOworCisgICAgdjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IHNjcmlwdFN0cmluZyA9IHY4RXh0ZXJuYWxTdHJpbmcoc2NyaXB0KTsK
KyAgICB2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+IGNvbXBpbGVkU2NyaXB0ID0gU2NyaXB0U291cmNl
Q29kZTo6Y29tcGlsZVNjcmlwdChzY3JpcHRTdHJpbmcsIGZpbGVOYW1lLCBzY3JpcHRTdGFydFBv
c2l0aW9uKTsKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXN1bHQgPSBTY3JpcHRSdW5uZXI6
OnJ1bkNvbXBpbGVkU2NyaXB0KGNvbXBpbGVkU2NyaXB0LCBtX3dvcmtlckNvbnRleHQpOworCisg
ICAgaWYgKCFibG9jay5DYW5Db250aW51ZSgpKSB7CisgICAgICAgIG1fd29ya2VyQ29udGV4dC0+
c2NyaXB0KCktPmZvcmJpZEV4ZWN1dGlvbigpOworICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUo
KTsKKyAgICB9CisKKyAgICBpZiAoYmxvY2suSGFzQ2F1Z2h0KCkpIHsKKyAgICAgICAgdjg6Okxv
Y2FsPHY4OjpNZXNzYWdlPiBtZXNzYWdlID0gYmxvY2suTWVzc2FnZSgpOworICAgICAgICBzdGF0
ZS0+aGFkRXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgc3RhdGUtPmVycm9yTWVzc2FnZSA9IHRv
V2ViQ29yZVN0cmluZyhtZXNzYWdlLT5HZXQoKSk7CisgICAgICAgIHN0YXRlLT5saW5lTnVtYmVy
ID0gbWVzc2FnZS0+R2V0TGluZU51bWJlcigpOworICAgICAgICBzdGF0ZS0+c291cmNlVVJMID0g
dG9XZWJDb3JlU3RyaW5nKG1lc3NhZ2UtPkdldFNjcmlwdFJlc291cmNlTmFtZSgpKTsKKyAgICAg
ICAgaWYgKG1fd29ya2VyQ29udGV4dC0+c2FuaXRpemVTY3JpcHRFcnJvcihzdGF0ZS0+ZXJyb3JN
ZXNzYWdlLCBzdGF0ZS0+bGluZU51bWJlciwgc3RhdGUtPnNvdXJjZVVSTCkpCisgICAgICAgICAg
ICBzdGF0ZS0+ZXhjZXB0aW9uID0gdGhyb3dFcnJvcih2OEdlbmVyYWxFcnJvciwgc3RhdGUtPmVy
cm9yTWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3Rh
dGUtPmV4Y2VwdGlvbiA9IFNjcmlwdFZhbHVlKGJsb2NrLkV4Y2VwdGlvbigpKTsKKworICAgICAg
ICBibG9jay5SZXNldCgpOworICAgIH0gZWxzZQorICAgICAgICBzdGF0ZS0+aGFkRXhjZXB0aW9u
ID0gZmFsc2U7CisKKyAgICBpZiAocmVzdWx0LklzRW1wdHkoKSB8fCByZXN1bHQtPklzVW5kZWZp
bmVkKCkpCisgICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOworCisgICAgcmV0dXJuIFNjcmlw
dFZhbHVlKHJlc3VsdCk7Cit9CisKK3ZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0RXZh
bEFsbG93ZWQoYm9vbCBlbmFibGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAg
IG1fZGlzYWJsZUV2YWxQZW5kaW5nID0gZW5hYmxlID8gU3RyaW5nKCkgOiBlcnJvck1lc3NhZ2U7
Cit9CisKIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cmNlQ29kZSkKIHsKICAgICBldmFsdWF0ZShzb3VyY2VDb2RlLCAwKTsK
QEAgLTkxLDcgKzIwMiw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgU2NyaXB0CiAgICAgICAgIHJldHVy
bjsKIAogICAgIFdvcmtlckNvbnRleHRFeGVjdXRpb25TdGF0ZSBzdGF0ZTsKLSAgICBtX3Byb3h5
LT5ldmFsdWF0ZShzb3VyY2VDb2RlLnNvdXJjZSgpLCBzb3VyY2VDb2RlLnVybCgpLnN0cmluZygp
LCBzb3VyY2VDb2RlLnN0YXJ0UG9zaXRpb24oKSwgJnN0YXRlKTsKKyAgICBldmFsdWF0ZShzb3Vy
Y2VDb2RlLnNvdXJjZSgpLCBzb3VyY2VDb2RlLnVybCgpLnN0cmluZygpLCBzb3VyY2VDb2RlLnN0
YXJ0UG9zaXRpb24oKSwgJnN0YXRlKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKSB7CiAg
ICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICAqZXhjZXB0aW9uID0gc3RhdGUuZXhj
ZXB0aW9uOwpAQCAtMTMzLDcgKzI0NCw3IEBAIGJvb2wgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6
aXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdAogCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXI6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewotICAgIG1fcHJv
eHktPnNldEV2YWxBbGxvd2VkKGZhbHNlLCBlcnJvck1lc3NhZ2UpOworICAgIHNldEV2YWxBbGxv
d2VkKGZhbHNlLCBlcnJvck1lc3NhZ2UpOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXI6OnNldEV4Y2VwdGlvbihjb25zdCBTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCmluZGV4
IGUwOGViOWQ5ZmEzNDVjMTAxOTcyZWNkOTlhNzYxYzMyODA2MWI0YjYuLjA4YmQxNDVmYzJlY2Rk
ZTc0NDkyZjdlNGQxNDVkODM0ZjIwZTE0ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKQEAgLTMzLDI1ICszMywzOCBAQAog
CiAjaWYgRU5BQkxFKFdPUktFUlMpCiAKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1
ZGUgIlY4QmluZGluZy5oIgotCiAjaW5jbHVkZSA8djguaD4KICNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQ
b3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTY3JpcHRTb3Vy
Y2VDb2RlOwogICAgIGNsYXNzIFNjcmlwdFZhbHVlOwogICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7
Ci0gICAgY2xhc3MgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OworCisgICAgc3RydWN0IFdv
cmtlckNvbnRleHRFeGVjdXRpb25TdGF0ZSB7CisgICAgICAgIFdvcmtlckNvbnRleHRFeGVjdXRp
b25TdGF0ZSgpCisgICAgICAgICAgICA6IGhhZEV4Y2VwdGlvbihmYWxzZSkKKyAgICAgICAgICAg
ICwgbGluZU51bWJlcigwKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBib29sIGhh
ZEV4Y2VwdGlvbjsKKyAgICAgICAgU2NyaXB0VmFsdWUgZXhjZXB0aW9uOworICAgICAgICBTdHJp
bmcgZXJyb3JNZXNzYWdlOworICAgICAgICBpbnQgbGluZU51bWJlcjsKKyAgICAgICAgU3RyaW5n
IHNvdXJjZVVSTDsKKyAgICB9OwogCiAgICAgY2xhc3MgV29ya2VyU2NyaXB0Q29udHJvbGxlciB7
CiAgICAgcHVibGljOgogICAgICAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKFdvcmtlckNvbnRl
eHQqKTsKICAgICAgICAgfldvcmtlclNjcmlwdENvbnRyb2xsZXIoKTsKIAotICAgICAgICBXb3Jr
ZXJDb250ZXh0RXhlY3V0aW9uUHJveHkqIHByb3h5KCkgeyByZXR1cm4gbV9wcm94eS5nZXQoKTsg
fQogICAgICAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0KCkgeyByZXR1cm4gbV93b3Jr
ZXJDb250ZXh0OyB9CiAKICAgICAgICAgdm9pZCBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJik7CkBAIC03NCwxMyArODcsMjcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHZvaWQgZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJik7CiAKKyAgICAgICAgLy8gQWxvdyB1c2Ug
b2YgZXZhbCgpIGFuZCBpcyBlcXVpdmFsZW50cyBpbiBzY3JpcHRzLgorICAgICAgICB2b2lkIHNl
dEV2YWxBbGxvd2VkKGJvb2wgZW5hYmxlLCBjb25zdCBTdHJpbmcmKTsKKwogICAgICAgICAvLyBS
ZXR1cm5zIFdvcmtlclNjcmlwdENvbnRyb2xsZXIgZm9yIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5n
IGNvbnRleHQuIDAgd2lsbCBiZSByZXR1cm5lZCBpZiB0aGUgY3VycmVudCBleGVjdXRpbmcgY29u
dGV4dCBpcyBub3QgdGhlIHdvcmtlciBjb250ZXh0LgogICAgICAgICBzdGF0aWMgV29ya2VyU2Ny
aXB0Q29udHJvbGxlciogY29udHJvbGxlckZvckNvbnRleHQoKTsKIAorICAgICAgICAvLyBFdmFs
dWF0ZSBhIHNjcmlwdCBmaWxlIGluIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4K
KyAgICAgICAgU2NyaXB0VmFsdWUgZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3NpdGlv
biwgV29ya2VyQ29udGV4dEV4ZWN1dGlvblN0YXRlKik7CisKKyAgICAgICAgLy8gUmV0dXJucyBh
IGxvY2FsIGhhbmRsZSBvZiB0aGUgY29udGV4dC4KKyAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250
ZXh0PiBjb250ZXh0KCkgeyByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KG1fY29u
dGV4dC5nZXQoKSk7IH0KKwogICAgIHByaXZhdGU6CisgICAgICAgIGJvb2wgaW5pdGlhbGl6ZUlm
TmVlZGVkKCk7CisgICAgICAgIHZvaWQgZGlzcG9zZSgpOworCiAgICAgICAgIFdvcmtlckNvbnRl
eHQqIG1fd29ya2VyQ29udGV4dDsKLSAgICAgICAgT3duUHRyPFdvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eT4gbV9wcm94eTsKICAgICAgICAgdjg6Oklzb2xhdGUqIG1faXNvbGF0ZTsKKyAgICAg
ICAgU2NvcGVkUGVyc2lzdGVudDx2ODo6Q29udGV4dD4gbV9jb250ZXh0OworICAgICAgICBPd25Q
dHI8VjhQZXJDb250ZXh0RGF0YT4gbV9wZXJDb250ZXh0RGF0YTsKKyAgICAgICAgU3RyaW5nIG1f
ZGlzYWJsZUV2YWxQZW5kaW5nOwogICAgICAgICBPd25QdHI8RE9NRGF0YVN0b3JlPiBtX2RvbURh
dGFTdG9yZTsKICAgICAgICAgYm9vbCBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsKICAgICAgICAgYm9v
bCBtX2V4ZWN1dGlvblNjaGVkdWxlZFRvVGVybWluYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDNjMjVh
ZDhjNTU2YTllNWJhMjNkOGYyNjljNjM4MWVmZDdhZWViNjguLjI5Nzc1ZmM4YjI5MWU1OTJiMDZh
ZmE5Y2EyNTI3MjA3YjgyMWE5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKIAog
I2luY2x1ZGUgIlNjcmlwdERlYnVnTGlzdGVuZXIuaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0
LmgiCi0jaW5jbHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmgiCiAjaW5jbHVkZSAi
V29ya2VyRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1
ZGUgPHY4Lmg+CkBAIC02NiwxMSArNjUsNiBAQCB2b2lkIFdvcmtlclNjcmlwdERlYnVnU2VydmVy
OjphZGRMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lcikKICAgICBBU1NFUlQo
IW1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPklzVW5kZWZpbmVkKCkpOwogICAgIHY4OjpEZWJ1Zzo6
U2V0RGVidWdFdmVudExpc3RlbmVyMigmV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnY4RGVidWdF
dmVudENhbGxiYWNrLCB2ODo6RXh0ZXJuYWw6Ok5ldyh0aGlzKSk7CiAgICAgCi0gICAgLy8gVE9E
TzogU2hvdWxkIHdlIHJlbW92ZSB8cHJveHl8PyBJdCBsb29rcyBsaWtlIHVudXNlZCBub3cuCi0g
ICAgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KiBwcm94eSA9IG1fd29ya2VyQ29udGV4dC0+
c2NyaXB0KCktPnByb3h5KCk7Ci0gICAgaWYgKCFwcm94eSkKLSAgICAgICAgcmV0dXJuOwotCiAg
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGdldFNjcmlwdHNGdW5jdGlvbiA9IHY4OjpMb2Nh
bDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3Ry
aW5nOjpOZXcoImdldFdvcmtlclNjcmlwdHMiKSkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBhcmd2W10gPSB7IHY4VW5kZWZpbmVkKCkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dmFsdWUgPSBnZXRTY3JpcHRzRnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwg
MCwgYXJndik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCmluZGV4IDU4YWExZWE5ZGU0ZTRjZWUxODNk
NTY3MzU4MzdjZDc3OWFjOWM0NDMuLmYxZTNlMWI0ZTA4YjlkMDhmZWY2YmI0NDY4YjdmYzQ5NzNj
OTgyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdv
cmtlckNvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC00Myw3ICs0Myw3IEBACiAjaW5jbHVk
ZSAiVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIldlYlNvY2tldC5o
IgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKLSNpbmNsdWRlICJXb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHkuaCIKKyNpbmNsdWRlICJXb3JrZXJTY3JpcHRDb250cm9sbGVyLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTksMTEgKzU5LDExIEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBTZXRUaW1lb3V0T3JJbnRlcnZhbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBib29s
IHNpbmdsCiAgICAgaW50MzJfdCB0aW1lb3V0ID0gYXJndW1lbnRDb3VudCA+PSAyID8gYXJnc1sx
XS0+SW50MzJWYWx1ZSgpIDogMDsKICAgICBpbnQgdGltZXJJZDsKIAotICAgIFdvcmtlckNvbnRl
eHRFeGVjdXRpb25Qcm94eSogcHJveHkgPSB3b3JrZXJDb250ZXh0LT5zY3JpcHQoKS0+cHJveHko
KTsKLSAgICBpZiAoIXByb3h5KQorICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCA9
IHdvcmtlckNvbnRleHQtPnNjcmlwdCgpOworICAgIGlmICghc2NyaXB0KQogICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250
ZXh0ID0gcHJveHktPmNvbnRleHQoKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OENv
bnRleHQgPSBzY3JpcHQtPmNvbnRleHQoKTsKICAgICBpZiAoZnVuY3Rpb24tPklzU3RyaW5nKCkp
IHsKICAgICAgICAgaWYgKENvbnRlbnRTZWN1cml0eVBvbGljeSogcG9saWN5ID0gd29ya2VyQ29u
dGV4dC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkpIHsKICAgICAgICAgICAgIGlmICghcG9saWN5
LT5hbGxvd0V2YWwoKSkKQEAgLTEzNCwxMSArMTM0LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4KFdvcmtlckNvbnRleHQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25DCiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xh
dGUpOwogCi0gICAgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KiBwcm94eSA9IGltcGwtPnNj
cmlwdCgpLT5wcm94eSgpOwotICAgIGlmICghcHJveHkpCisgICAgV29ya2VyU2NyaXB0Q29udHJv
bGxlciogc2NyaXB0ID0gaW1wbC0+c2NyaXB0KCk7CisgICAgaWYgKCFzY3JpcHQpCiAgICAgICAg
IHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGdsb2JhbCA9IHByb3h5LT5jb250ZXh0KCktPkdsb2JhbCgpOworICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gZ2xvYmFsID0gc2NyaXB0LT5jb250ZXh0KCktPkdsb2JhbCgpOwogICAg
IEFTU0VSVCghZ2xvYmFsLklzRW1wdHkoKSk7CiAgICAgcmV0dXJuIGdsb2JhbDsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>