<?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>97071</bug_id>
          
          <creation_ts>2012-09-18 22:42:24 -0700</creation_ts>
          <short_desc>[V8] Move WorkerContextExecutionProxy::initializeIfNeeded() to WorkerScriptController</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>DUPLICATE</resolution>
          <dup_id>103210</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>97057</blocked>
          <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>723283</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-18 22:42:24 -0700</bug_when>
    <thetext>To kill WorkerContextExecutionProxy, we move WorkerContextExecutionProxy::initializeIfNeeded() to WorkerScriptController. This requires to move a couple of related methods and member variables at the same time. Although the patch is big, it&apos;s a bit difficult to split it into pieces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723285</commentid>
    <comment_count>1</comment_count>
      <attachid>164662</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-18 22:45:33 -0700</bug_when>
    <thetext>Created attachment 164662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723688</commentid>
    <comment_count>2</comment_count>
      <attachid>164662</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-19 11:37:54 -0700</bug_when>
    <thetext>Comment on attachment 164662
Patch

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

&gt; Source/WebCore/bindings/v8/WorkerScriptController.h:104
&gt; +        v8::Persistent&lt;v8::Context&gt; m_context;
&gt; +        OwnPtr&lt;V8PerContextData&gt; m_perContextData;
&gt; +        bool m_disableEvalPending;
&gt; +        Vector&lt;Event*&gt; m_events;

On the main thread, this sort of stuff is handled by the WindowShell.  I worry slightly about WorkerScriptController becoming a giant object of doom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723689</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-19 11:38:43 -0700</bug_when>
    <thetext>Maybe we need a V8WorkerContext object to handle setting up and tearing down the v8::Context for the worker?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724063</commentid>
    <comment_count>4</comment_count>
      <attachid>164662</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-19 18:53:08 -0700</bug_when>
    <thetext>Comment on attachment 164662
Patch

Removing r? as I want to move initialization methods to V8Initializer.{h,cpp} first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724068</commentid>
    <comment_count>5</comment_count>
      <attachid>164662</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-19 18:55:54 -0700</bug_when>
    <thetext>Comment on attachment 164662
Patch

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

&gt; Source/WebCore/bindings/v8/WorkerContextExecutionProxy.cpp:-149
&gt; -    // Setup the security handlers and message listener. This only has
&gt; -    // to be done once.
&gt; -    static bool isV8Initialized = false;
&gt; -    if (!isV8Initialized)
&gt; -        v8::V8::AddMessageListener(&amp;v8MessageHandler);

BTW this code looks really strange:

- Per the comment, &apos;isV8Initialized = true&apos; should be added.
- However, if I add &apos;isV8Initialized = true&apos;, fast/workers/worker-script-error.html and fast/workers/worker-close.html begin to fail.

Will take a look in detail later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724622</commentid>
    <comment_count>6</comment_count>
      <attachid>164662</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-20 10:43:58 -0700</bug_when>
    <thetext>Comment on attachment 164662
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/WorkerContextExecutionProxy.cpp:-149
&gt;&gt; -        v8::V8::AddMessageListener(&amp;v8MessageHandler);
&gt; 
&gt; BTW this code looks really strange:
&gt; 
&gt; - Per the comment, &apos;isV8Initialized = true&apos; should be added.
&gt; - However, if I add &apos;isV8Initialized = true&apos;, fast/workers/worker-script-error.html and fast/workers/worker-close.html begin to fail.
&gt; 
&gt; Will take a look in detail later.

I would assume we&apos;d need to do it once per isolate rather than once across the entire process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776091</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-26 17:04:00 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 103210 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164662</attachid>
            <date>2012-09-18 22:45:33 -0700</date>
            <delta_ts>2012-09-20 10:43:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97071-20120919144458.patch</filename>
            <type>text/plain</type>
            <size>19300</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4ODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjMwMmI4MWQ1MWFjMjk2
YTg5M2Y3NjExNmE5OTNmZDhlNjY4MGEyYi4uYmU3MjU5N2M5ZTM4NzY5ZDNiZTU2YWE5N2Y3Njk0
YTcwNmQyY2VjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTA5LTE4ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIE1vdmUgV29y
a2VyQ29udGV4dEV4ZWN1dGlvblByb3h5Ojppbml0aWFsaXplSWZOZWVkZWQoKSB0byBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NzA3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRvIGtpbGwgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LCB0aGlzIHBhdGNoIG1v
dmVzCisgICAgICAgIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6aW5pdGlhbGl6ZUlmTmVl
ZGVkKCkgdG8gV29ya2VyU2NyaXB0Q29udHJvbGxlci4KKyAgICAgICAgVGhpcyBwYXRjaCBtb3Zl
cyBhIGNvdXBsZSBvZiBvdGhlciBtZXRob2RzIGFuZCBtZW1iZXIgdmFyaWFibGVzIGFzc29jaWF0
ZWQKKyAgICAgICAgd2l0aCBpbml0aWFsaXplSWZOZWVkZWQoKS4KKworICAgICAgICBObyB0ZXN0
cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogYmluZGluZ3MvdjgvVjhXb3Jr
ZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdvcmtlckNv
bnRleHRFdmVudExpc3RlbmVyOjpjYWxsTGlzdGVuZXJGdW5jdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6V29ya2VyQ29udGV4dEV4ZWN1dGlvblBy
b3h5KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6fldv
cmtlckNvbnRleHRFeGVjdXRpb25Qcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250
ZXh0RXhlY3V0aW9uUHJveHk6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5Ojpjb250ZXh0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaDoKKyAgICAgICAg
KFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eSk6CisgICAgICAgICogYmluZGluZ3MvdjgvV29y
a2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2OE1lc3NhZ2VIYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0
Q29udHJvbGxlcjo6V29ya2VyU2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJTY3JpcHRDb250cm9sbGVyOjp+V29ya2VyU2NyaXB0Q29udHJvbGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXplSWZOZWVkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZGlzcG9zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpmb3JnZXRWOEV2ZW50T2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVFdmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OnRyYWNrRXZlbnQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KFdvcmtlclNjcmlwdENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0
Q29udHJvbGxlcjo6Y29udGV4dCk6CisKIDIwMTItMDktMTcgIEtlbnQgVGFtdXJhICA8dGtlbnRA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEV4cG9ydCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpp
c0xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkIGNvcnJlY3RseQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0
ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVu
dExpc3RlbmVyLmNwcAppbmRleCA2MjE0MWQ2NzY0MzNkM2IxN2I4ODQwYmIwMGIzMzVmZjNkY2Vh
NDU2Li5mNTU4NjMxZDBiZjBkMjMxNDA3ZDJhZDMzZTMwZjZkYjc5MDQzMWVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVu
dExpc3RlbmVyLmNwcApAQCAtMTEwLDggKzExMCw3IEBAIHY4OjpMb2NhbDx2ODo6VmFsdWU+IFY4
V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXI6OmNhbGxMaXN0ZW5lckZ1bmN0aW9uKFNjcmlwdEV4
CiAgICAgVjhSZWN1cnNpb25TY29wZSByZWN1cnNpb25TY29wZShjb250ZXh0KTsKICAgICB2ODo6
TG9jYWw8djg6OlZhbHVlPiByZXN1bHQgPSBoYW5kbGVyRnVuY3Rpb24tPkNhbGwocmVjZWl2ZXIs
IDEsIHBhcmFtZXRlcnMpOwogCi0gICAgaWYgKFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eSog
cHJveHkgPSB3b3JrZXJQcm94eShjb250ZXh0KSkKLSAgICAgICAgcHJveHktPnRyYWNrRXZlbnQo
ZXZlbnQpOworICAgIHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihjb250ZXh0KS0+c2NyaXB0
KCktPnRyYWNrRXZlbnQoZXZlbnQpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDYWxsRnVuY3Rpb24oY29va2llKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKaW5kZXggNjc2ZmFl
ZDA2ODI2MzkyYjQzNGFlZjYwOWE2ZDU4MzM4NmQ5NzYyOC4uMGEyYTk3ZDRhYWU3ZDNkYzU5ZWVl
NGJiOGY5Y2Y5NTY2NDM0ZjU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCkBAIC02NCw1NSArNjQs
MTQgQEAgc3RhdGljIHZvaWQgcmVwb3J0RmF0YWxFcnJvckluVjgoY29uc3QgY2hhciogbG9jYXRp
b24sIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiAgICAgQ1JBU0goKTsKIH0KIAotc3RhdGljIHZvaWQg
djhNZXNzYWdlSGFuZGxlcih2ODo6SGFuZGxlPHY4OjpNZXNzYWdlPiBtZXNzYWdlLCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gZGF0YSkKLXsKLSAgICBzdGF0aWMgYm9vbCBpc1JlcG9ydGluZ0V4Y2Vw
dGlvbiA9IGZhbHNlOwotICAgIC8vIEV4Y2VwdGlvbnMgdGhhdCBvY2N1ciBpbiBlcnJvciBoYW5k
bGVyIHNob3VsZCBiZSBpZ25vcmVkIHNpbmNlIGluIHRoYXQgY2FzZQotICAgIC8vIFdvcmtlckNv
bnRleHQ6OnJlcG9ydEV4Y2VwdGlvbiB3aWxsIHNlbmQgdGhlIGV4Y2VwdGlvbiB0byB0aGUgd29y
a2VyIG9iamVjdC4KLSAgICBpZiAoaXNSZXBvcnRpbmdFeGNlcHRpb24pCi0gICAgICAgIHJldHVy
bjsKLSAgICBpc1JlcG9ydGluZ0V4Y2VwdGlvbiA9IHRydWU7Ci0KLSAgICAvLyBEdXJpbmcgdGhl
IGZyYW1lIHRlYXJkb3duLCB0aGVyZSBtYXkgbm90IGJlIGEgdmFsaWQgY29udGV4dC4KLSAgICBp
ZiAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkgewotICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gdG9XZWJDb3JlU3RyaW5n
KG1lc3NhZ2UtPkdldCgpKTsKLSAgICAgICAgaW50IGxpbmVOdW1iZXIgPSBtZXNzYWdlLT5HZXRM
aW5lTnVtYmVyKCk7Ci0gICAgICAgIFN0cmluZyBzb3VyY2VVUkwgPSB0b1dlYkNvcmVTdHJpbmco
bWVzc2FnZS0+R2V0U2NyaXB0UmVzb3VyY2VOYW1lKCkpOwotICAgICAgICBjb250ZXh0LT5yZXBv
cnRFeGNlcHRpb24oZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwsIDApOwotICAg
IH0KLQotICAgIGlzUmVwb3J0aW5nRXhjZXB0aW9uID0gZmFsc2U7Ci19Ci0KIFdvcmtlckNvbnRl
eHRFeGVjdXRpb25Qcm94eTo6V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5KFdvcmtlckNvbnRl
eHQqIHdvcmtlckNvbnRleHQpCiAgICAgOiBtX3dvcmtlckNvbnRleHQod29ya2VyQ29udGV4dCkK
LSAgICAsIG1fZGlzYWJsZUV2YWxQZW5kaW5nKGZhbHNlKQogewogICAgIGluaXRJc29sYXRlKCk7
CiB9CiAKIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6fldvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eSgpCiB7Ci0gICAgZGlzcG9zZSgpOwotfQotCi12b2lkIFdvcmtlckNvbnRleHRFeGVj
dXRpb25Qcm94eTo6ZGlzcG9zZSgpCi17Ci0gICAgLy8gRGV0YWNoIGFsbCBldmVudHMgZnJvbSB0
aGVpciBKUyB3cmFwcGVycy4KLSAgICBmb3IgKHNpemVfdCBldmVudEluZGV4ID0gMDsgZXZlbnRJ
bmRleCA8IG1fZXZlbnRzLnNpemUoKTsgKytldmVudEluZGV4KSB7Ci0gICAgICAgIEV2ZW50KiBl
dmVudCA9IG1fZXZlbnRzW2V2ZW50SW5kZXhdOwotICAgICAgICBpZiAoZm9yZ2V0VjhFdmVudE9i
amVjdChldmVudCkpCi0gICAgICAgICAgZXZlbnQtPmRlcmVmKCk7Ci0gICAgfQotICAgIG1fZXZl
bnRzLmNsZWFyKCk7Ci0KLSAgICBtX3BlckNvbnRleHREYXRhLmNsZWFyKCk7Ci0KLSAgICAvLyBE
aXNwb3NlIHRoZSBjb250ZXh0LgotICAgIGlmICghbV9jb250ZXh0LklzRW1wdHkoKSkgewotICAg
ICAgICBtX2NvbnRleHQuRGlzcG9zZSgpOwotICAgICAgICBtX2NvbnRleHQuQ2xlYXIoKTsKLSAg
ICB9CiB9CiAKIHZvaWQgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5Ojppbml0SXNvbGF0ZSgp
CkBAIC0xMzYsODkgKzk1LDggQEAgdm9pZCBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6Omlu
aXRJc29sYXRlKCkKICAgICBWOFBlcklzb2xhdGVEYXRhOjplbnN1cmVJbml0aWFsaXplZCh2ODo6
SXNvbGF0ZTo6R2V0Q3VycmVudCgpKTsKIH0KIAotYm9vbCBXb3JrZXJDb250ZXh0RXhlY3V0aW9u
UHJveHk6OmluaXRpYWxpemVJZk5lZWRlZCgpCi17Ci0gICAgLy8gQmFpbCBvdXQgaWYgdGhlIGNv
bnRleHQgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZC4KLSAgICBpZiAoIW1fY29udGV4dC5J
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gU2V0dXAgdGhlIHNlY3Vy
aXR5IGhhbmRsZXJzIGFuZCBtZXNzYWdlIGxpc3RlbmVyLiBUaGlzIG9ubHkgaGFzCi0gICAgLy8g
dG8gYmUgZG9uZSBvbmNlLgotICAgIHN0YXRpYyBib29sIGlzVjhJbml0aWFsaXplZCA9IGZhbHNl
OwotICAgIGlmICghaXNWOEluaXRpYWxpemVkKQotICAgICAgICB2ODo6Vjg6OkFkZE1lc3NhZ2VM
aXN0ZW5lcigmdjhNZXNzYWdlSGFuZGxlcik7Ci0KLSAgICAvLyBDcmVhdGUgYSBuZXcgZW52aXJv
bm1lbnQKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+IGdsb2JhbFRlbXBs
YXRlOwotICAgIG1fY29udGV4dCA9IHY4OjpDb250ZXh0OjpOZXcoMCwgZ2xvYmFsVGVtcGxhdGUp
OwotICAgIGlmIChtX2NvbnRleHQuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICAvLyBTdGFydGluZyBmcm9tIG5vdywgdXNlIGxvY2FsIGNvbnRleHQgb25seS4KLSAgICB2
ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpO
ZXcobV9jb250ZXh0KTsKLQotICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShjb250ZXh0KTsK
LQotICAgIG1fcGVyQ29udGV4dERhdGEgPSBWOFBlckNvbnRleHREYXRhOjpjcmVhdGUobV9jb250
ZXh0KTsKLSAgICBpZiAoIW1fcGVyQ29udGV4dERhdGEtPmluaXQoKSkgewotICAgICAgICBkaXNw
b3NlKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBTZXQgRGVidWdJ
ZCBmb3IgdGhlIG5ldyBjb250ZXh0LgotICAgIGNvbnRleHQtPlNldERhdGEodjg6OlN0cmluZzo6
TmV3KCJ3b3JrZXIiKSk7Ci0KLSAgICAvLyBDcmVhdGUgYSBuZXcgSlMgb2JqZWN0IGFuZCB1c2Ug
aXQgYXMgdGhlIHByb3RvdHlwZSBmb3IgdGhlIHNoYWRvdyBnbG9iYWwgb2JqZWN0LgotICAgIFdy
YXBwZXJUeXBlSW5mbyogY29udGV4dFR5cGUgPSAmVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpp
bmZvOwotI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKLSAgICBpZiAoIW1fd29ya2VyQ29udGV4
dC0+aXNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkpCi0gICAgICAgIGNvbnRleHRUeXBlID0gJlY4
U2hhcmVkV29ya2VyQ29udGV4dDo6aW5mbzsKLSNlbmRpZgotICAgIHY4OjpIYW5kbGU8djg6OkZ1
bmN0aW9uPiB3b3JrZXJDb250ZXh0Q29uc3RydWN0b3IgPSBtX3BlckNvbnRleHREYXRhLT5jb25z
dHJ1Y3RvckZvclR5cGUoY29udGV4dFR5cGUpOwotICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBq
c1dvcmtlckNvbnRleHQgPSBWOE9iamVjdENvbnN0cnVjdG9yOjpuZXdJbnN0YW5jZSh3b3JrZXJD
b250ZXh0Q29uc3RydWN0b3IpOwotICAgIC8vIEJhaWwgb3V0IGlmIGFsbG9jYXRpb24gZmFpbGVk
LgotICAgIGlmIChqc1dvcmtlckNvbnRleHQuSXNFbXB0eSgpKSB7Ci0gICAgICAgIGRpc3Bvc2Uo
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIFdyYXAgdGhlIG9iamVj
dC4KLSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoanNXb3JrZXJDb250ZXh0LCBjb250
ZXh0VHlwZSwgbV93b3JrZXJDb250ZXh0KTsKLQotICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFw
cGVyRm9yRE9NT2JqZWN0KFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4obV93b3JrZXJDb250ZXh0
KSwganNXb3JrZXJDb250ZXh0KTsKLQotICAgIC8vIEluc2VydCB0aGUgb2JqZWN0IGluc3RhbmNl
IGFzIHRoZSBwcm90b3R5cGUgb2YgdGhlIHNoYWRvdyBvYmplY3QuCi0gICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBnbG9iYWxPYmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KG1f
Y29udGV4dC0+R2xvYmFsKCktPkdldFByb3RvdHlwZSgpKTsKLSAgICBnbG9iYWxPYmplY3QtPlNl
dFByb3RvdHlwZShqc1dvcmtlckNvbnRleHQpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5Ojpmb3JnZXRWOEV2ZW50T2JqZWN0KEV2ZW50
KiBldmVudCkKLXsKLSAgICBpZiAoZ2V0RE9NT2JqZWN0TWFwKCkuY29udGFpbnMoZXZlbnQpKSB7
Ci0gICAgICAgIGdldERPTU9iamVjdE1hcCgpLmZvcmdldChldmVudCk7Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIFNjcmlwdFZhbHVlIFdvcmtl
ckNvbnRleHRFeGVjdXRpb25Qcm94eTo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3Np
dGlvbiwgV29ya2VyQ29udGV4dEV4ZWN1dGlvblN0YXRlKiBzdGF0ZSkKIHsKLSAgICBWOEdDQ29u
dHJvbGxlcjo6Y2hlY2tNZW1vcnlVc2FnZSgpOwotCi0gICAgdjg6OkhhbmRsZVNjb3BlIGhzOwot
Ci0gICAgaWYgKCFpbml0aWFsaXplSWZOZWVkZWQoKSkKLSAgICAgICAgcmV0dXJuIFNjcmlwdFZh
bHVlKCk7Ci0KLSAgICBpZiAobV9kaXNhYmxlRXZhbFBlbmRpbmcpIHsKLSAgICAgICAgbV9jb250
ZXh0LT5BbGxvd0NvZGVHZW5lcmF0aW9uRnJvbVN0cmluZ3MoZmFsc2UpOwotICAgICAgICBtX2Rp
c2FibGVFdmFsUGVuZGluZyA9IGZhbHNlOwotICAgIH0KLQotICAgIHY4OjpDb250ZXh0OjpTY29w
ZSBzY29wZShtX2NvbnRleHQpOwotCiAgICAgdjg6OlRyeUNhdGNoIGV4Y2VwdGlvbkNhdGNoZXI7
CiAKICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gc2NyaXB0U3RyaW5nID0gdjhFeHRlcm5hbFN0
cmluZyhzY3JpcHQpOwpAQCAtMjUxLDExICsxMjksNiBAQCBTY3JpcHRWYWx1ZSBXb3JrZXJDb250
ZXh0RXhlY3V0aW9uUHJveHk6OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBT
dAogICAgIHJldHVybiBTY3JpcHRWYWx1ZShyZXN1bHQpOwogfQogCi12b2lkIFdvcmtlckNvbnRl
eHRFeGVjdXRpb25Qcm94eTo6c2V0RXZhbEFsbG93ZWQoYm9vbCBlbmFibGUpCi17Ci0gICAgbV9k
aXNhYmxlRXZhbFBlbmRpbmcgPSAhZW5hYmxlOwotfQotCiB2ODo6TG9jYWw8djg6OlZhbHVlPiBX
b3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OnJ1blNjcmlwdCh2ODo6SGFuZGxlPHY4OjpTY3Jp
cHQ+IHNjcmlwdCkKIHsKICAgICBpZiAoc2NyaXB0LklzRW1wdHkoKSkKQEAgLTI4Nyw5ICsxNjAs
MTAgQEAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5Ojpy
dW5TY3JpcHQodjg6OkhhbmRsZTx2ODo6U2NyaXAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12
b2lkIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6dHJhY2tFdmVudChFdmVudCogZXZlbnQp
CisvLyBGSVhNRTogVGhpcyB3aWxsIGJlIHNvb24gcmVtb3ZlZCB3aGVuIFdvcmtlckNvbnRleHRF
eGVjdXRpb25Qcm94eSBpcyBraWxsZWQuCit2ODo6TG9jYWw8djg6OkNvbnRleHQ+IFdvcmtlckNv
bnRleHRFeGVjdXRpb25Qcm94eTo6Y29udGV4dCgpCiB7Ci0gICAgbV9ldmVudHMuYXBwZW5kKGV2
ZW50KTsKKyAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KG1fd29ya2VyQ29u
dGV4dC0+c2NyaXB0KCktPmNvbnRleHQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVj
dXRpb25Qcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4
ZWN1dGlvblByb3h5LmgKaW5kZXggODEyOGFiODdhZTY2NWE0ZWQ2YjBmNWVkMWU3ZThmMzU4MjMz
YjA1Yy4uZjA4YzQ1MzhkMGY4YmRlOWU2YTdhMDE0ZWY3NDhiYzU4NjA4N2FmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlv
blByb3h5LmgKQEAgLTYzLDQwICs2MywyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eShXb3JrZXJDb250ZXh0Kik7CiAgICAgICAgIH5X
b3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkoKTsKIAotICAgICAgICAvLyBUcmFjayB0aGUgZXZl
bnQgc28gdGhhdCB3ZSBjYW4gZGV0YWNoIGl0IGZyb20gdGhlIEpTIHdyYXBwZXIgd2hlbiBhIHdv
cmtlcgotICAgICAgICAvLyB0ZXJtaW5hdGVzLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHdlIG5l
ZWQgdG8gYmUgYWJsZSB0byBkaXNwb3NlIHRoZXNlCi0gICAgICAgIC8vIGV2ZW50cyBhbmQgcmVs
ZWFzZXMgcmVmZXJlbmNlcyB0byB0aGVpciBldmVudCB0YXJnZXRzOiBXb3JrZXJDb250ZXh0Lgot
ICAgICAgICB2b2lkIHRyYWNrRXZlbnQoRXZlbnQqKTsKLQotICAgICAgICAvLyBBbG93IHVzZSBv
ZiBldmFsKCkgYW5kIGlzIGVxdWl2YWxlbnRzIGluIHNjcmlwdHMuCi0gICAgICAgIHZvaWQgc2V0
RXZhbEFsbG93ZWQoYm9vbCBlbmFibGUpOwotCiAgICAgICAgIC8vIEV2YWx1YXRlIGEgc2NyaXB0
IGZpbGUgaW4gdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGVudmlyb25tZW50LgogICAgICAgICBTY3Jp
cHRWYWx1ZSBldmFsdWF0ZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9uLCBXb3JrZXJDb250
ZXh0RXhlY3V0aW9uU3RhdGUqKTsKIAogICAgICAgICAvLyBSZXR1cm5zIGEgbG9jYWwgaGFuZGxl
IG9mIHRoZSBjb250ZXh0LgotICAgICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQo
KSB7IHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcobV9jb250ZXh0KTsgfQorICAg
ICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQoKTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIHZvaWQgaW5pdElzb2xhdGUoKTsKLSAgICAgICAgYm9vbCBpbml0aWFsaXplSWZOZWVk
ZWQoKTsKLSAgICAgICAgdm9pZCBkaXNwb3NlKCk7CiAKICAgICAgICAgLy8gUnVuIGFuIGFscmVh
ZHkgY29tcGlsZWQgc2NyaXB0LgogICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBydW5TY3Jp
cHQodjg6OkhhbmRsZTx2ODo6U2NyaXB0Pik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZm9yZ2V0
VjhFdmVudE9iamVjdChFdmVudCopOwotCiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga1dvcmtl
ck1heFN0YWNrU2l6ZSA9IDUwMCAqIDEwMjQ7CiAKICAgICAgICAgV29ya2VyQ29udGV4dCogbV93
b3JrZXJDb250ZXh0OwotICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gbV9jb250
ZXh0OwotCi0gICAgICAgIFZlY3RvcjxFdmVudCo+IG1fZXZlbnRzOwotCi0gICAgICAgIE93blB0
cjxWOFBlckNvbnRleHREYXRhPiBtX3BlckNvbnRleHREYXRhOwotCi0gICAgICAgIGJvb2wgbV9k
aXNhYmxlRXZhbFBlbmRpbmc7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcAppbmRleCA3MDIwOGUxZmVlNDBmNjA3ZDMzZGIzZTNkYjdjZWVhMDgyZjU4ZjEwLi45NjNi
ZTkwNjUyYTlmOWZiMDllOTIxZDc2YTc0OTcwMmJhOWFkMTljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzks
NiArMzksOSBAQAogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTY3Jp
cHRWYWx1ZS5oIgogI2luY2x1ZGUgIlY4RE9NTWFwLmgiCisjaW5jbHVkZSAiVjhEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0LmgiCisjaW5jbHVkZSAiVjhHQ0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJW
OFNoYXJlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJWOFdvcmtlckNvbnRleHQuaCIKICNp
bmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlv
blByb3h5LmgiCkBAIC01MywxMSArNTYsMzIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitz
dGF0aWMgdm9pZCB2OE1lc3NhZ2VIYW5kbGVyKHY4OjpIYW5kbGU8djg6Ok1lc3NhZ2U+IG1lc3Nh
Z2UsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkYXRhKQoreworICAgIHN0YXRpYyBib29sIGlzUmVw
b3J0aW5nRXhjZXB0aW9uID0gZmFsc2U7CisgICAgLy8gRXhjZXB0aW9ucyB0aGF0IG9jY3VyIGlu
IGVycm9yIGhhbmRsZXIgc2hvdWxkIGJlIGlnbm9yZWQgc2luY2UgaW4gdGhhdCBjYXNlCisgICAg
Ly8gV29ya2VyQ29udGV4dDo6cmVwb3J0RXhjZXB0aW9uIHdpbGwgc2VuZCB0aGUgZXhjZXB0aW9u
IHRvIHRoZSB3b3JrZXIgb2JqZWN0LgorICAgIGlmIChpc1JlcG9ydGluZ0V4Y2VwdGlvbikKKyAg
ICAgICAgcmV0dXJuOworICAgIGlzUmVwb3J0aW5nRXhjZXB0aW9uID0gdHJ1ZTsKKworICAgIC8v
IER1cmluZyB0aGUgZnJhbWUgdGVhcmRvd24sIHRoZXJlIG1heSBub3QgYmUgYSB2YWxpZCBjb250
ZXh0LgorICAgIGlmIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKSB7CisgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSB0b1dl
YkNvcmVTdHJpbmcobWVzc2FnZS0+R2V0KCkpOworICAgICAgICBpbnQgbGluZU51bWJlciA9IG1l
c3NhZ2UtPkdldExpbmVOdW1iZXIoKTsKKyAgICAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IHRvV2Vi
Q29yZVN0cmluZyhtZXNzYWdlLT5HZXRTY3JpcHRSZXNvdXJjZU5hbWUoKSk7CisgICAgICAgIGNv
bnRleHQtPnJlcG9ydEV4Y2VwdGlvbihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVS
TCwgMCk7CisgICAgfQorCisgICAgaXNSZXBvcnRpbmdFeGNlcHRpb24gPSBmYWxzZTsKK30KKwog
V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6V29ya2VyU2NyaXB0Q29udHJvbGxlcihXb3JrZXJDb250
ZXh0KiB3b3JrZXJDb250ZXh0KQogICAgIDogbV93b3JrZXJDb250ZXh0KHdvcmtlckNvbnRleHQp
CiAgICAgLCBtX2lzb2xhdGUodjg6Oklzb2xhdGU6Ok5ldygpKQogICAgICwgbV9leGVjdXRpb25G
b3JiaWRkZW4oZmFsc2UpCiAgICAgLCBtX2V4ZWN1dGlvblNjaGVkdWxlZFRvVGVybWluYXRlKGZh
bHNlKQorICAgICwgbV9kaXNhYmxlRXZhbFBlbmRpbmcoZmFsc2UpCiB7CiAgICAgVjhQZXJJc29s
YXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmNyZWF0ZShtX2lzb2xhdGUpOwogICAg
IGRhdGEtPmFsbFN0b3JlcygpLmFwcGVuZCgmbV9ET01EYXRhU3RvcmUpOwpAQCAtNjgsNiArOTIs
NyBAQCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyKFdvcmtl
ckNvbnRleHQqIHdvcmtlckNvbnRleHQpCiAKIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6On5Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyKCkKIHsKKyAgICBkaXNwb3NlKCk7CiAgICAgcmVtb3ZlQWxsRE9N
T2JqZWN0cygpOwogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIC8vIFRoZSBjb3JyZXNwb25k
aW5nIGNhbGwgdG8gZGlkU3RhcnRXb3JrZXJSdW5Mb29wIGlzIGluCkBAIC04MSw2ICsxMDYsOTIg
QEAgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6fldvcmtlclNjcmlwdENvbnRyb2xsZXIoKQogICAg
IG1faXNvbGF0ZS0+RGlzcG9zZSgpOwogfQogCitib29sIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6
OmluaXRpYWxpemVJZk5lZWRlZCgpCit7CisgICAgLy8gQmFpbCBvdXQgaWYgdGhlIGNvbnRleHQg
aGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZC4KKyAgICBpZiAoIW1fY29udGV4dC5Jc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gU2V0dXAgdGhlIHNlY3VyaXR5IGhh
bmRsZXJzIGFuZCBtZXNzYWdlIGxpc3RlbmVyLiBUaGlzIG9ubHkgaGFzCisgICAgLy8gdG8gYmUg
ZG9uZSBvbmNlLgorICAgIHN0YXRpYyBib29sIGlzVjhJbml0aWFsaXplZCA9IGZhbHNlOworICAg
IGlmICghaXNWOEluaXRpYWxpemVkKQorICAgICAgICB2ODo6Vjg6OkFkZE1lc3NhZ2VMaXN0ZW5l
cigmdjhNZXNzYWdlSGFuZGxlcik7CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgZW52aXJvbm1lbnQK
KyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+IGdsb2JhbFRlbXBsYXRlOwor
ICAgIG1fY29udGV4dCA9IHY4OjpDb250ZXh0OjpOZXcoMCwgZ2xvYmFsVGVtcGxhdGUpOworICAg
IGlmIChtX2NvbnRleHQuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBTdGFydGluZyBmcm9tIG5vdywgdXNlIGxvY2FsIGNvbnRleHQgb25seS4KKyAgICB2ODo6TG9j
YWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcobV9j
b250ZXh0KTsKKworICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShjb250ZXh0KTsKKworICAg
IG1fcGVyQ29udGV4dERhdGEgPSBWOFBlckNvbnRleHREYXRhOjpjcmVhdGUobV9jb250ZXh0KTsK
KyAgICBpZiAoIW1fcGVyQ29udGV4dERhdGEtPmluaXQoKSkgeworICAgICAgICBkaXNwb3NlKCk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBTZXQgRGVidWdJZCBmb3Ig
dGhlIG5ldyBjb250ZXh0LgorICAgIGNvbnRleHQtPlNldERhdGEodjg6OlN0cmluZzo6TmV3KCJ3
b3JrZXIiKSk7CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgSlMgb2JqZWN0IGFuZCB1c2UgaXQgYXMg
dGhlIHByb3RvdHlwZSBmb3IgdGhlIHNoYWRvdyBnbG9iYWwgb2JqZWN0LgorICAgIFdyYXBwZXJU
eXBlSW5mbyogY29udGV4dFR5cGUgPSAmVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjppbmZvOwor
I2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyAgICBpZiAoIW1fd29ya2VyQ29udGV4dC0+aXNE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkpCisgICAgICAgIGNvbnRleHRUeXBlID0gJlY4U2hhcmVk
V29ya2VyQ29udGV4dDo6aW5mbzsKKyNlbmRpZgorICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
PiB3b3JrZXJDb250ZXh0Q29uc3RydWN0b3IgPSBtX3BlckNvbnRleHREYXRhLT5jb25zdHJ1Y3Rv
ckZvclR5cGUoY29udGV4dFR5cGUpOworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBqc1dvcmtl
ckNvbnRleHQgPSBWOE9iamVjdENvbnN0cnVjdG9yOjpuZXdJbnN0YW5jZSh3b3JrZXJDb250ZXh0
Q29uc3RydWN0b3IpOworICAgIC8vIEJhaWwgb3V0IGlmIGFsbG9jYXRpb24gZmFpbGVkLgorICAg
IGlmIChqc1dvcmtlckNvbnRleHQuSXNFbXB0eSgpKSB7CisgICAgICAgIGRpc3Bvc2UoKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFdyYXAgdGhlIG9iamVjdC4KKyAg
ICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoanNXb3JrZXJDb250ZXh0LCBjb250ZXh0VHlw
ZSwgbV93b3JrZXJDb250ZXh0KTsKKworICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9y
RE9NT2JqZWN0KFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4obV93b3JrZXJDb250ZXh0KSwganNX
b3JrZXJDb250ZXh0KTsKKworICAgIC8vIEluc2VydCB0aGUgb2JqZWN0IGluc3RhbmNlIGFzIHRo
ZSBwcm90b3R5cGUgb2YgdGhlIHNoYWRvdyBvYmplY3QuCisgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBnbG9iYWxPYmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KG1fY29udGV4
dC0+R2xvYmFsKCktPkdldFByb3RvdHlwZSgpKTsKKyAgICBnbG9iYWxPYmplY3QtPlNldFByb3Rv
dHlwZShqc1dvcmtlckNvbnRleHQpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6ZGlzcG9zZSgpCit7CisgICAgLy8gRGV0YWNoIGFsbCBldmVu
dHMgZnJvbSB0aGVpciBKUyB3cmFwcGVycy4KKyAgICBmb3IgKHNpemVfdCBldmVudEluZGV4ID0g
MDsgZXZlbnRJbmRleCA8IG1fZXZlbnRzLnNpemUoKTsgKytldmVudEluZGV4KSB7CisgICAgICAg
IEV2ZW50KiBldmVudCA9IG1fZXZlbnRzW2V2ZW50SW5kZXhdOworICAgICAgICBpZiAoZm9yZ2V0
VjhFdmVudE9iamVjdChldmVudCkpCisgICAgICAgICAgZXZlbnQtPmRlcmVmKCk7CisgICAgfQor
ICAgIG1fZXZlbnRzLmNsZWFyKCk7CisKKyAgICBtX3BlckNvbnRleHREYXRhLmNsZWFyKCk7CisK
KyAgICAvLyBEaXNwb3NlIHRoZSBjb250ZXh0LgorICAgIGlmICghbV9jb250ZXh0LklzRW1wdHko
KSkgeworICAgICAgICBtX2NvbnRleHQuRGlzcG9zZSgpOworICAgICAgICBtX2NvbnRleHQuQ2xl
YXIoKTsKKyAgICB9Cit9CisKK2Jvb2wgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6Zm9yZ2V0VjhF
dmVudE9iamVjdChFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGdldERPTU9iamVjdE1hcCgpLmNv
bnRhaW5zKGV2ZW50KSkgeworICAgICAgICBnZXRET01PYmplY3RNYXAoKS5mb3JnZXQoZXZlbnQp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2
b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNv
ZGUmIHNvdXJjZUNvZGUpCiB7CiAgICAgZXZhbHVhdGUoc291cmNlQ29kZSwgMCk7CkBAIC05MSw2
ICsyMDIsMjAgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBTY3JpcHQKICAgICBpZiAoaXNFeGVjdXRpb25G
b3JiaWRkZW4oKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgVjhHQ0NvbnRyb2xsZXI6OmNoZWNr
TWVtb3J5VXNhZ2UoKTsKKworICAgIHY4OjpIYW5kbGVTY29wZSBoczsKKworICAgIGlmICghaW5p
dGlhbGl6ZUlmTmVlZGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2Rpc2FibGVF
dmFsUGVuZGluZykgeworICAgICAgICBtX2NvbnRleHQtPkFsbG93Q29kZUdlbmVyYXRpb25Gcm9t
U3RyaW5ncyhmYWxzZSk7CisgICAgICAgIG1fZGlzYWJsZUV2YWxQZW5kaW5nID0gZmFsc2U7Cisg
ICAgfQorCisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKG1fY29udGV4dCk7CisKICAgICBX
b3JrZXJDb250ZXh0RXhlY3V0aW9uU3RhdGUgc3RhdGU7CiAgICAgbV9wcm94eS0+ZXZhbHVhdGUo
c291cmNlQ29kZS5zb3VyY2UoKSwgc291cmNlQ29kZS51cmwoKS5zdHJpbmcoKSwgc291cmNlQ29k
ZS5zdGFydFBvc2l0aW9uKCksICZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbikg
ewpAQCAtMTM0LDcgKzI1OSw3IEBAIGJvb2wgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aXNFeGVj
dXRpb25Gb3JiaWRkZW4oKSBjb25zdAogCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmRp
c2FibGVFdmFsKGNvbnN0IFN0cmluZyYgLyogZXJyb3JNZXNzYWdlICovKQogewotICAgIG1fcHJv
eHktPnNldEV2YWxBbGxvd2VkKGZhbHNlKTsKKyAgICBtX2Rpc2FibGVFdmFsUGVuZGluZyA9IHRy
dWU7CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0RXhjZXB0aW9uKGNvbnN0
IFNjcmlwdFZhbHVlJiBleGNlcHRpb24pCkBAIC0xNDIsNiArMjY3LDEyIEBAIHZvaWQgV29ya2Vy
U2NyaXB0Q29udHJvbGxlcjo6c2V0RXhjZXB0aW9uKGNvbnN0IFNjcmlwdFZhbHVlJiBleGNlcHRp
b24pCiAgICAgdGhyb3dFcnJvcigqZXhjZXB0aW9uLnY4VmFsdWUoKSk7CiB9CiAKKwordm9pZCBX
b3JrZXJTY3JpcHRDb250cm9sbGVyOjp0cmFja0V2ZW50KEV2ZW50KiBldmVudCkKK3sKKyAgICBt
X2V2ZW50cy5hcHBlbmQoZXZlbnQpOworfQorCiBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBXb3Jr
ZXJTY3JpcHRDb250cm9sbGVyOjpjb250cm9sbGVyRm9yQ29udGV4dCgpCiB7CiAgICAgLy8gSGFw
cGVucyBvbiBmcmFtZSBkZXN0cnVjdGlvbiwgY2hlY2sgb3RoZXJ3aXNlIEdldEN1cnJlbnQoKSB3
aWxsIGNyYXNoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5oCmluZGV4IDY4Y2U4OWFhZTA3ZmYzODY1OTBiYWY4Yjk5Nzg0NjYyODYw
ODdjMGMuLmRiZmFiOGE2OGNkNmU0ZDgyOTA2ZWY5YzgzMjhhZmEzZTU1YTg1MmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgK
QEAgLTc4LDcgKzc4LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gUmV0dXJu
cyBXb3JrZXJTY3JpcHRDb250cm9sbGVyIGZvciB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBjb250
ZXh0LiAwIHdpbGwgYmUgcmV0dXJuZWQgaWYgdGhlIGN1cnJlbnQgZXhlY3V0aW5nIGNvbnRleHQg
aXMgbm90IHRoZSB3b3JrZXIgY29udGV4dC4KICAgICAgICAgc3RhdGljIFdvcmtlclNjcmlwdENv
bnRyb2xsZXIqIGNvbnRyb2xsZXJGb3JDb250ZXh0KCk7CiAKKyAgICAgICAgLy8gVHJhY2sgdGhl
IGV2ZW50IHNvIHRoYXQgd2UgY2FuIGRldGFjaCBpdCBmcm9tIHRoZSBKUyB3cmFwcGVyIHdoZW4g
YSB3b3JrZXIKKyAgICAgICAgLy8gdGVybWluYXRlcy4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSB3
ZSBuZWVkIHRvIGJlIGFibGUgdG8gZGlzcG9zZSB0aGVzZQorICAgICAgICAvLyBldmVudHMgYW5k
IHJlbGVhc2VzIHJlZmVyZW5jZXMgdG8gdGhlaXIgZXZlbnQgdGFyZ2V0czogV29ya2VyQ29udGV4
dC4KKyAgICAgICAgdm9pZCB0cmFja0V2ZW50KEV2ZW50Kik7CisKKyAgICAgICAgLy8gRklYTUU6
IFRoaXMgd2lsbCBiZSBzb29uIHJlbW92ZWQgd2hlbiBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJv
eHkgaXMga2lsbGVkLgorICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gY29udGV4
dCgpIHsgcmV0dXJuIG1fY29udGV4dDsgfQorCiAgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBp
bml0aWFsaXplSWZOZWVkZWQoKTsKKyAgICAgICAgdm9pZCBkaXNwb3NlKCk7CisgICAgICAgIHN0
YXRpYyBib29sIGZvcmdldFY4RXZlbnRPYmplY3QoRXZlbnQqKTsKKwogICAgICAgICBXb3JrZXJD
b250ZXh0KiBtX3dvcmtlckNvbnRleHQ7CiAgICAgICAgIE93blB0cjxXb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHk+IG1fcHJveHk7CiAgICAgICAgIHY4OjpJc29sYXRlKiBtX2lzb2xhdGU7CkBA
IC04Niw2ICs5OCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9leGVj
dXRpb25Gb3JiaWRkZW47CiAgICAgICAgIGJvb2wgbV9leGVjdXRpb25TY2hlZHVsZWRUb1Rlcm1p
bmF0ZTsKICAgICAgICAgbXV0YWJsZSBNdXRleCBtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0ZXg7
CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBtX2NvbnRleHQ7CisgICAgICAg
IE93blB0cjxWOFBlckNvbnRleHREYXRhPiBtX3BlckNvbnRleHREYXRhOworICAgICAgICBib29s
IG1fZGlzYWJsZUV2YWxQZW5kaW5nOworICAgICAgICBWZWN0b3I8RXZlbnQqPiBtX2V2ZW50czsK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>