<?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>184400</bug_id>
          
          <creation_ts>2018-04-08 10:03:45 -0700</creation_ts>
          <short_desc>[JSC] Introduce @putByIdDirectPrivate</short_desc>
          <delta_ts>2018-04-13 02:00:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1412730</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-08 10:03:45 -0700</bug_when>
    <thetext>[JSC] Introduce @putByIdDirectPrivate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412731</commentid>
    <comment_count>1</comment_count>
      <attachid>337460</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-08 10:04:57 -0700</bug_when>
    <thetext>Created attachment 337460
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412927</commentid>
    <comment_count>2</comment_count>
      <attachid>337460</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-04-09 11:06:23 -0700</bug_when>
    <thetext>Comment on attachment 337460
Patch

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

r=me

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:994
&gt; +RegisterID* BytecodeIntrinsicNode::emit_intrinsic_putByIdDirect(BytecodeGenerator&amp; generator, RegisterID* dst)

Do we need this since it&apos;s unused?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412928</commentid>
    <comment_count>3</comment_count>
      <attachid>337460</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-04-09 11:06:56 -0700</bug_when>
    <thetext>Comment on attachment 337460
Patch

Would also be good to add a test that shows how this fixes the property being in the prototype chain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412929</commentid>
    <comment_count>4</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2018-04-09 11:08:45 -0700</bug_when>
    <thetext>I think it would be good explain in the ChangeLog the reason for introduction of this new intrinsic. It is not straight forward figure out that just looking into the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413107</commentid>
    <comment_count>5</comment_count>
      <attachid>337460</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-09 17:58:25 -0700</bug_when>
    <thetext>Comment on attachment 337460
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:994
&gt;&gt; +RegisterID* BytecodeIntrinsicNode::emit_intrinsic_putByIdDirect(BytecodeGenerator&amp; generator, RegisterID* dst)
&gt; 
&gt; Do we need this since it&apos;s unused?

I&apos;ll keep this to test this feature easily.
I added the test for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413108</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-09 17:58:35 -0700</bug_when>
    <thetext>(In reply to Caio Lima from comment #4)
&gt; I think it would be good explain in the ChangeLog the reason for
&gt; introduction of this new intrinsic. It is not straight forward figure out
&gt; that just looking into the code.

Added</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413112</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-09 18:05:48 -0700</bug_when>
    <thetext>Committed r230459: &lt;https://trac.webkit.org/changeset/230459&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413113</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-09 18:06:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/39300783&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413508</commentid>
    <comment_count>9</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-04-10 18:35:33 -0700</bug_when>
    <thetext>This or https://bugs.webkit.org/show_bug.cgi?id=184372 seems to have caused a 3% Kraken regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413513</commentid>
    <comment_count>10</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-04-10 18:42:05 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #9)
&gt; This or https://bugs.webkit.org/show_bug.cgi?id=184372 seems to have caused
&gt; a 3% Kraken regression.

Ignore me, surprisingly, it seems this is responsible: https://bugs.webkit.org/show_bug.cgi?id=184322</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414276</commentid>
    <comment_count>11</comment_count>
      <attachid>337460</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-04-12 19:26:22 -0700</bug_when>
    <thetext>Comment on attachment 337460
Patch

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

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1022
&gt; +    return generator.moveToDestinationIfNeeded(dst, generator.emitDirectPutById(base.get(), *ident, value.get(), PropertyNode::KnownDirect));

I just thought of this: We should probably make emitDirectPutById talk to the static property analyzer since we use this inside constructors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414349</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-13 02:00:17 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #11)
&gt; Comment on attachment 337460 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=337460&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1022
&gt; &gt; +    return generator.moveToDestinationIfNeeded(dst, generator.emitDirectPutById(base.get(), *ident, value.get(), PropertyNode::KnownDirect));
&gt; 
&gt; I just thought of this: We should probably make emitDirectPutById talk to
&gt; the static property analyzer since we use this inside constructors

emitDirectPutById contacts with StaticPropertyAnalyzer :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337460</attachid>
            <date>2018-04-08 10:04:57 -0700</date>
            <delta_ts>2018-04-09 11:06:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184400-20180409020455.patch</filename>
            <type>text/plain</type>
            <size>25963</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
OGYyNTU0MzBmODYyYzgwNGM2MzAyY2MxZWVkN2VhZGQ4ZGQ3YmQyLi4wZDAzZjM4NTJkNTI5MTI1
ZmZjMTU5ZjllMzFjMThmNmU4YzZiMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxOC0wNC0wOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBJbnRyb2R1Y2UgQHB1dEJ5SWREaXJlY3RQcml2YXRlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ0MDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IGFkZHMgQHB1dEJ5SWREaXJlY3RQcml2YXRlKCkgdG8gdXNlIGl0IGZvciBidWlsdGluIEpTLgor
ICAgICAgICBAZ2V0QnlJZERpcmVjdFByaXZhdGUgYW5kIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZSBh
cmUgcGFpciBvZiBpbnRyaW5zaWNzCisgICAgICAgIGFjY2Vzc2luZyB0byBFQ01BU2NyaXB0IGlu
dGVybmFsIGZpZWxkcy4KKworICAgICAgICAqIGJ1aWx0aW5zL0FycmF5SXRlcmF0b3JQcm90b3R5
cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmFycmF5SXRlcmF0b3JWYWx1ZU5leHQpOgor
ICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hcnJheUl0ZXJhdG9yS2V5TmV4dCk6CisgICAgICAgIChn
bG9iYWxQcml2YXRlLmFycmF5SXRlcmF0b3JLZXlWYWx1ZU5leHQpOgorICAgICAgICAqIGJ1aWx0
aW5zL0FycmF5UHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5jcmVhdGVBcnJh
eUl0ZXJhdG9yKToKKyAgICAgICAgKiBidWlsdGlucy9Bc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90
b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLkFzeW5jRnJvbVN5bmNJdGVyYXRvckNv
bnN0cnVjdG9yKToKKyAgICAgICAgKiBidWlsdGlucy9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpz
OgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hc3luY0Z1bmN0aW9uUmVzdW1lKToKKyAgICAgICAg
KiBidWlsdGlucy9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5qczoKKyAgICAgICAgKGdsb2JhbFBy
aXZhdGUuYXN5bmNHZW5lcmF0b3JRdWV1ZUVucXVldWUpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0
ZS5hc3luY0dlbmVyYXRvclF1ZXVlRGVxdWV1ZSk6CisgICAgICAgIChhc3luY0dlbmVyYXRvcllp
ZWxkQXdhaXRlZCk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmFzeW5jR2VuZXJhdG9yWWllbGQp
OgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5kb0FzeW5jR2VuZXJhdG9yQm9keUNhbGwpOgorICAg
ICAgICAoZ2xvYmFsUHJpdmF0ZS5hc3luY0dlbmVyYXRvclJlc3VtZU5leHQpOgorICAgICAgICAq
IGJ1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUu
Z2VuZXJhdG9yUmVzdW1lKToKKyAgICAgICAgKiBidWlsdGlucy9NYXBJdGVyYXRvclByb3RvdHlw
ZS5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUubWFwSXRlcmF0b3JOZXh0KToKKyAgICAgICAg
KiBidWlsdGlucy9NYXBQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmNyZWF0
ZU1hcEl0ZXJhdG9yKToKKyAgICAgICAgKiBidWlsdGlucy9Nb2R1bGVMb2FkZXJQcm90b3R5cGUu
anM6CisgICAgICAgIChmb3JjZUZ1bGZpbGxQcm9taXNlKToKKyAgICAgICAgKiBidWlsdGlucy9Q
cm9taXNlT3BlcmF0aW9ucy5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUubmV3SGFuZGxlZFJl
amVjdGVkUHJvbWlzZSk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLnJlamVjdFByb21pc2UpOgor
ICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5mdWxmaWxsUHJvbWlzZSk6CisgICAgICAgIChnbG9iYWxQ
cml2YXRlLmluaXRpYWxpemVQcm9taXNlKToKKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNlUHJv
dG90eXBlLmpzOgorICAgICAgICAodGhlbik6CisgICAgICAgICogYnVpbHRpbnMvU2V0SXRlcmF0
b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLnNldEl0ZXJhdG9yTmV4dCk6
CisgICAgICAgICogYnVpbHRpbnMvU2V0UHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJp
dmF0ZS5jcmVhdGVTZXRJdGVyYXRvcik6CisgICAgICAgICogYnVpbHRpbnMvU3RyaW5nSXRlcmF0
b3JQcm90b3R5cGUuanM6CisgICAgICAgIChuZXh0KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRy
aW5zaWNfcHV0QnlJZERpcmVjdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6ZW1pdF9pbnRyaW5zaWNfcHV0QnlJZERpcmVjdFByaXZhdGUpOgorCiAyMDE4LTA0LTA4ICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtKU0NdIElu
dHJvZHVjZSBvcF9nZXRfYnlfaWRfZGlyZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IDZkYzFlNWE0
NjZiYzNlZjZiY2JlYjQ4YzMzZTE4ZTk1YTFjOWRkYTkuLmRjYjA2MTM4NTgzYmE4ODVjOWY2NzUx
MjI1YTA5ZTdmYjk3NzBlODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmpzCkBAIC00OSwxMCArNDksMTAgQEAg
ZnVuY3Rpb24gYXJyYXlJdGVyYXRvclZhbHVlTmV4dCgpCiAgICAgaWYgKCFAZ2V0QnlJZERpcmVj
dFByaXZhdGUodGhpcywgImFycmF5SXRlcmF0b3JJc0RvbmUiKSkgewogICAgICAgICB2YXIgaW5k
ZXggPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgImFycmF5SXRlcmF0b3JOZXh0SW5kZXgi
KTsKICAgICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA+Pj4gMDsKLSAgICAgICAgaWYg
KGluZGV4ID49IGxlbmd0aCkgewotICAgICAgICAgICAgdGhpcy5AYXJyYXlJdGVyYXRvcklzRG9u
ZSA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLkBhcnJheUl0ZXJh
dG9yTmV4dEluZGV4ID0gaW5kZXggKyAxOworICAgICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKQor
ICAgICAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJhcnJheUl0ZXJhdG9ySXNE
b25lIiwgdHJ1ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQHB1dEJ5SWREaXJlY3RQ
cml2YXRlKHRoaXMsICJhcnJheUl0ZXJhdG9yTmV4dEluZGV4IiwgaW5kZXggKyAxKTsKICAgICAg
ICAgICAgIGRvbmUgPSBmYWxzZTsKICAgICAgICAgICAgIHZhbHVlID0gYXJyYXlbaW5kZXhdOwog
ICAgICAgICB9CkBAIC03MiwxMCArNzIsMTAgQEAgZnVuY3Rpb24gYXJyYXlJdGVyYXRvcktleU5l
eHQoKQogICAgIGlmICghQGdldEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJhcnJheUl0ZXJhdG9y
SXNEb25lIikpIHsKICAgICAgICAgdmFyIGluZGV4ID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKHRo
aXMsICJhcnJheUl0ZXJhdG9yTmV4dEluZGV4Iik7CiAgICAgICAgIHZhciBsZW5ndGggPSBhcnJh
eS5sZW5ndGggPj4+IDA7Ci0gICAgICAgIGlmIChpbmRleCA+PSBsZW5ndGgpIHsKLSAgICAgICAg
ICAgIHRoaXMuQGFycmF5SXRlcmF0b3JJc0RvbmUgPSB0cnVlOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgdGhpcy5AYXJyYXlJdGVyYXRvck5leHRJbmRleCA9IGluZGV4ICsgMTsKKyAg
ICAgICAgaWYgKGluZGV4ID49IGxlbmd0aCkKKyAgICAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJp
dmF0ZSh0aGlzLCAiYXJyYXlJdGVyYXRvcklzRG9uZSIsIHRydWUpOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAiYXJyYXlJdGVyYXRvck5l
eHRJbmRleCIsIGluZGV4ICsgMSk7CiAgICAgICAgICAgICBkb25lID0gZmFsc2U7CiAgICAgICAg
ICAgICB2YWx1ZSA9IGluZGV4OwogICAgICAgICB9CkBAIC05NSwxMCArOTUsMTAgQEAgZnVuY3Rp
b24gYXJyYXlJdGVyYXRvcktleVZhbHVlTmV4dCgpCiAgICAgaWYgKCFAZ2V0QnlJZERpcmVjdFBy
aXZhdGUodGhpcywgImFycmF5SXRlcmF0b3JJc0RvbmUiKSkgewogICAgICAgICB2YXIgaW5kZXgg
PSBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgImFycmF5SXRlcmF0b3JOZXh0SW5kZXgiKTsK
ICAgICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA+Pj4gMDsKLSAgICAgICAgaWYgKGlu
ZGV4ID49IGxlbmd0aCkgewotICAgICAgICAgICAgdGhpcy5AYXJyYXlJdGVyYXRvcklzRG9uZSA9
IHRydWU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLkBhcnJheUl0ZXJhdG9y
TmV4dEluZGV4ID0gaW5kZXggKyAxOworICAgICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKQorICAg
ICAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJhcnJheUl0ZXJhdG9ySXNEb25l
IiwgdHJ1ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2
YXRlKHRoaXMsICJhcnJheUl0ZXJhdG9yTmV4dEluZGV4IiwgaW5kZXggKyAxKTsKICAgICAgICAg
ICAgIGRvbmUgPSBmYWxzZTsKICAgICAgICAgICAgIHZhbHVlID0gWyBpbmRleCwgYXJyYXlbaW5k
ZXhdIF07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9BcnJheVByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9B
cnJheVByb3RvdHlwZS5qcwppbmRleCBiMTcxOGE0YTIxNTZkNzMxNzRiMGYwZDY2Yjc0NzE1Zjll
NjUzYmZkLi5hM2MxN2NlMjYyZjBiODBmZGFhZWI5ZWQyMGY0ZDVhNjFmNGUwYmQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCkBAIC0z
MCwxMSArMzAsMTEgQEAgZnVuY3Rpb24gY3JlYXRlQXJyYXlJdGVyYXRvcihpdGVyYXRlZE9iamVj
dCwga2luZCwgaXRlcmF0aW9uRnVuY3Rpb24pCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAg
dGhpcy5AaXRlcmF0ZWRPYmplY3QgPSBpdGVyYXRlZE9iamVjdDsKLSAgICB0aGlzLkBhcnJheUl0
ZXJhdG9yS2luZCA9IGtpbmQ7Ci0gICAgdGhpcy5AYXJyYXlJdGVyYXRvck5leHRJbmRleCA9IDA7
Ci0gICAgdGhpcy5AYXJyYXlJdGVyYXRvck5leHQgPSBpdGVyYXRpb25GdW5jdGlvbjsKLSAgICB0
aGlzLkBhcnJheUl0ZXJhdG9ySXNEb25lID0gZmFsc2U7CisgICAgQHB1dEJ5SWREaXJlY3RQcml2
YXRlKHRoaXMsICJpdGVyYXRlZE9iamVjdCIsIGl0ZXJhdGVkT2JqZWN0KTsKKyAgICBAcHV0QnlJ
ZERpcmVjdFByaXZhdGUodGhpcywgImFycmF5SXRlcmF0b3JLaW5kIiwga2luZCk7CisgICAgQHB1
dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJhcnJheUl0ZXJhdG9yTmV4dEluZGV4IiwgMCk7Cisg
ICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJhcnJheUl0ZXJhdG9yTmV4dCIsIGl0ZXJh
dGlvbkZ1bmN0aW9uKTsKKyAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUodGhpcywgImFycmF5SXRl
cmF0b3JJc0RvbmUiLCBmYWxzZSk7CiB9CiAKIGZ1bmN0aW9uIHZhbHVlcygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJv
dG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnJvbVN5bmNJ
dGVyYXRvclByb3RvdHlwZS5qcwppbmRleCAwNDIxZjU1NzBlMjJhNjc2ZTIyYjQyODdkNDFjYzNm
YjhjYmExYjIwLi5jODRiZjI3NWQ3NTkwY2VmYzhkY2E1Y2IxNzdhMzJlNmZlYWYzNGI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGcm9tU3luY0l0ZXJh
dG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3lu
Y0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuanMKQEAgLTE2MSw2ICsxNjEsNiBAQCBmdW5jdGlv
biBjcmVhdGVBc3luY0Zyb21TeW5jSXRlcmF0b3Ioc3luY0l0ZXJhdG9yLCBuZXh0TWV0aG9kKQog
QGNvbnN0cnVjdG9yCiBmdW5jdGlvbiBBc3luY0Zyb21TeW5jSXRlcmF0b3JDb25zdHJ1Y3Rvcihz
eW5jSXRlcmF0b3IsIG5leHRNZXRob2QpCiB7Ci0gICAgdGhpcy5Ac3luY0l0ZXJhdG9yID0gc3lu
Y0l0ZXJhdG9yOwotICAgIHRoaXMuQG5leHRNZXRob2QgPSBuZXh0TWV0aG9kOworICAgIEBwdXRC
eUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAic3luY0l0ZXJhdG9yIiwgc3luY0l0ZXJhdG9yKTsKKyAg
ICBAcHV0QnlJZERpcmVjdFByaXZhdGUodGhpcywgIm5leHRNZXRob2QiLCBuZXh0TWV0aG9kKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0Z1bmN0
aW9uUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVu
Y3Rpb25Qcm90b3R5cGUuanMKaW5kZXggYTlhNzE1MDcyYzU5YWFiNjUzNjJkZTVjODNjNWQ2ODBh
ZTM4ODAyZC4uYTczNDg3NzJhMjcwZjEzMTM0N2ZjZjVjMjk2OGI1OWEwMzM2OTI0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Q
cm90b3R5cGUuanMKQEAgLTM0LDE1ICszNCwxNSBAQCBmdW5jdGlvbiBhc3luY0Z1bmN0aW9uUmVz
dW1lKGdlbmVyYXRvciwgcHJvbWlzZUNhcGFiaWxpdHksIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZQog
ICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFzeW5jIGZ1bmN0aW9uIGlsbGVnYWxseSByZXN1bWVk
Iik7CiAKICAgICB0cnkgewotICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdl
bmVyYXRvclN0YXRlRXhlY3V0aW5nOworICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2Vu
ZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiLCBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpOwogICAg
ICAgICB2YWx1ZSA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JO
ZXh0IikuQGNhbGwoQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclRo
aXMiKSwgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlLCBAZ2V0QnlJZERp
cmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yRnJhbWUiKSk7CiAgICAgICAgIGlmIChA
Z2V0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiKSA9PT0gQEdl
bmVyYXRvclN0YXRlRXhlY3V0aW5nKSB7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRv
clN0YXRlID0gQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkOworICAgICAgICAgICAgQHB1dEJ5SWRE
aXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEdlbmVyYXRvclN0YXRl
Q29tcGxldGVkKTsKICAgICAgICAgICAgIHByb21pc2VDYXBhYmlsaXR5LkByZXNvbHZlKHZhbHVl
KTsKICAgICAgICAgICAgIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5AcHJvbWlzZTsKICAgICAg
ICAgfQogICAgIH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9y
U3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CisgICAgICAgIEBwdXRCeUlkRGlyZWN0
UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBHZW5lcmF0b3JTdGF0ZUNvbXBs
ZXRlZCk7CiAgICAgICAgIHByb21pc2VDYXBhYmlsaXR5LkByZWplY3QoZXJyb3IpOwogICAgICAg
ICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBl
LmpzCmluZGV4IGY4YmU5MmRlMDRhZjJmOTQ4MWNlZTJmZDkyMmJlODA1OTI3MjE4ZjYuLmY0YjA1
MDI1NTIwMmUyNzk4NTA1MDc2NDFkYjM0OGU1YTJlYmYxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS5qcworKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuanMK
QEAgLTQxLDEzICs0MSwxMyBAQCBmdW5jdGlvbiBhc3luY0dlbmVyYXRvclF1ZXVlRW5xdWV1ZShn
ZW5lcmF0b3IsIGl0ZW0pCiAgICAgaWYgKEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3Is
ICJhc3luY0dlbmVyYXRvclF1ZXVlRmlyc3QiKSA9PT0gbnVsbCkgewogICAgICAgICBAYXNzZXJ0
KEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlTGFz
dCIpID09PSBudWxsKTsKIAotICAgICAgICBnZW5lcmF0b3IuQGFzeW5jR2VuZXJhdG9yUXVldWVG
aXJzdCA9IGl0ZW07Ci0gICAgICAgIGdlbmVyYXRvci5AYXN5bmNHZW5lcmF0b3JRdWV1ZUxhc3Qg
PSBpdGVtOworICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiYXN5bmNH
ZW5lcmF0b3JRdWV1ZUZpcnN0IiwgaXRlbSk7CisgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0
ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlTGFzdCIsIGl0ZW0pOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIHZhciBsYXN0ID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwg
ImFzeW5jR2VuZXJhdG9yUXVldWVMYXN0Iik7Ci0gICAgICAgIGl0ZW0uQGFzeW5jR2VuZXJhdG9y
UXVldWVJdGVtUHJldmlvdXMgPSBsYXN0OwotICAgICAgICBsYXN0LkBhc3luY0dlbmVyYXRvclF1
ZXVlSXRlbU5leHQgPSBpdGVtOwotICAgICAgICBnZW5lcmF0b3IuQGFzeW5jR2VuZXJhdG9yUXVl
dWVMYXN0ID0gaXRlbTsKKyAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKGl0ZW0sICJhc3lu
Y0dlbmVyYXRvclF1ZXVlSXRlbVByZXZpb3VzIiwgbGFzdCk7CisgICAgICAgIEBwdXRCeUlkRGly
ZWN0UHJpdmF0ZShsYXN0LCAiYXN5bmNHZW5lcmF0b3JRdWV1ZUl0ZW1OZXh0IiwgaXRlbSk7Cisg
ICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1
ZXVlTGFzdCIsIGl0ZW0pOwogICAgIH0KIH0KIApAQCAtNjEsMTAgKzYxLDEwIEBAIGZ1bmN0aW9u
IGFzeW5jR2VuZXJhdG9yUXVldWVEZXF1ZXVlKGdlbmVyYXRvcikKICAgICAgICAgcmV0dXJuIG51
bGw7CiAKICAgICB2YXIgdXBkYXRlZEZpcnN0ID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKHJlc3Vs
dCwgImFzeW5jR2VuZXJhdG9yUXVldWVJdGVtTmV4dCIpOwotICAgIGdlbmVyYXRvci5AYXN5bmNH
ZW5lcmF0b3JRdWV1ZUZpcnN0ID0gdXBkYXRlZEZpcnN0OworICAgIEBwdXRCeUlkRGlyZWN0UHJp
dmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlRmlyc3QiLCB1cGRhdGVkRmlyc3Qp
OwogCiAgICAgaWYgKHVwZGF0ZWRGaXJzdCA9PT0gbnVsbCkKLSAgICAgICAgZ2VuZXJhdG9yLkBh
c3luY0dlbmVyYXRvclF1ZXVlTGFzdCA9IG51bGw7CisgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJp
dmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclF1ZXVlTGFzdCIsIG51bGwpOwogCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEzNiwxMSArMTM2LDExIEBAIGZ1bmN0aW9uIGFzeW5jR2Vu
ZXJhdG9yWWllbGQoZ2VuZXJhdG9yLCB2YWx1ZSwgcmVzdW1lTW9kZSkKIAogICAgIGZ1bmN0aW9u
IGFzeW5jR2VuZXJhdG9yWWllbGRBd2FpdGVkKHJlc3VsdCkKICAgICB7Ci0gICAgICAgIGdlbmVy
YXRvci5AYXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uID0gQEFzeW5jR2VuZXJhdG9yU3VzcGVu
ZFJlYXNvbllpZWxkOworICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAi
YXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uIiwgQEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNv
bllpZWxkKTsKICAgICAgICAgQGFzeW5jR2VuZXJhdG9yUmVzb2x2ZShnZW5lcmF0b3IsIHJlc3Vs
dCwgZmFsc2UpOwogICAgIH0KIAotICAgIGdlbmVyYXRvci5AYXN5bmNHZW5lcmF0b3JTdXNwZW5k
UmVhc29uID0gQEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbkF3YWl0OworICAgIEBwdXRCeUlk
RGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJhc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24iLCBA
QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uQXdhaXQpOwogCiAgICAgQGF3YWl0VmFsdWUoZ2Vu
ZXJhdG9yLCB2YWx1ZSwgYXN5bmNHZW5lcmF0b3JZaWVsZEF3YWl0ZWQpOwogCkBAIC0xNzAsMTYg
KzE3MCwxNiBAQCBmdW5jdGlvbiBkb0FzeW5jR2VuZXJhdG9yQm9keUNhbGwoZ2VuZXJhdG9yLCBy
ZXN1bWVWYWx1ZSwgcmVzdW1lTW9kZSkKICAgICBsZXQgdmFsdWUgPSBAdW5kZWZpbmVkOwogICAg
IGxldCBzdGF0ZSA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JT
dGF0ZSIpOwogCi0gICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBBc3luY0dlbmVyYXRv
clN0YXRlRXhlY3V0aW5nOwotICAgIGdlbmVyYXRvci5AYXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVh
c29uID0gQEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbk5vbmU7CisgICAgQHB1dEJ5SWREaXJl
Y3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEFzeW5jR2VuZXJhdG9yU3Rh
dGVFeGVjdXRpbmcpOworICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJhc3lu
Y0dlbmVyYXRvclN1c3BlbmRSZWFzb24iLCBAQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uTm9u
ZSk7CiAKICAgICB0cnkgewogICAgICAgICB2YWx1ZSA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShn
ZW5lcmF0b3IsICJnZW5lcmF0b3JOZXh0IikuQGNhbGwoQGdldEJ5SWREaXJlY3RQcml2YXRlKGdl
bmVyYXRvciwgImdlbmVyYXRvclRoaXMiKSwgZ2VuZXJhdG9yLCBzdGF0ZSwgcmVzdW1lVmFsdWUs
IHJlc3VtZU1vZGUsIEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JG
cmFtZSIpKTsKICAgICAgICAgaWYgKEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJn
ZW5lcmF0b3JTdGF0ZSIpID09PSBAQXN5bmNHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykKLSAgICAg
ICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNv
bXBsZXRlZDsKKyAgICAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJn
ZW5lcmF0b3JTdGF0ZSIsIEBBc3luY0dlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsKICAgICB9IGNh
dGNoIChlcnJvcikgewotICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEFzeW5j
R2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7Ci0gICAgICAgIGdlbmVyYXRvci5AYXN5bmNHZW5lcmF0
b3JTdXNwZW5kUmVhc29uID0gQEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbk5vbmU7CisgICAg
ICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBB
c3luY0dlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsKKyAgICAgICAgQHB1dEJ5SWREaXJlY3RQcml2
YXRlKGdlbmVyYXRvciwgImFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiIsIEBBc3luY0dlbmVy
YXRvclN1c3BlbmRSZWFzb25Ob25lKTsKIAogICAgICAgICByZXR1cm4gQGFzeW5jR2VuZXJhdG9y
UmVqZWN0KGdlbmVyYXRvciwgZXJyb3IpOwogICAgIH0KQEAgLTE5Niw3ICsxOTYsNyBAQCBmdW5j
dGlvbiBkb0FzeW5jR2VuZXJhdG9yQm9keUNhbGwoZ2VuZXJhdG9yLCByZXN1bWVWYWx1ZSwgcmVz
dW1lTW9kZSkKICAgICAgICAgcmV0dXJuIEBhc3luY0dlbmVyYXRvcllpZWxkKGdlbmVyYXRvciwg
dmFsdWUsIHJlc3VtZU1vZGUpOwogCiAgICAgaWYgKEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5l
cmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIpID09PSBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRl
ZCkgewotICAgICAgICBnZW5lcmF0b3IuQGFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiA9IEBB
c3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Ob25lOworICAgICAgICBAcHV0QnlJZERpcmVjdFBy
aXZhdGUoZ2VuZXJhdG9yLCAiYXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uIiwgQEFzeW5jR2Vu
ZXJhdG9yU3VzcGVuZFJlYXNvbk5vbmUpOwogICAgICAgICByZXR1cm4gQGFzeW5jR2VuZXJhdG9y
UmVzb2x2ZShnZW5lcmF0b3IsIHZhbHVlLCB0cnVlKTsKICAgICB9CiAKQEAgLTIyNCwxMyArMjI0
LDEzIEBAIGZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yUmVzdW1lTmV4dChnZW5lcmF0b3IpCiAKICAg
ICBpZiAobmV4dC5yZXN1bWVNb2RlICE9PSBAR2VuZXJhdG9yUmVzdW1lTW9kZU5vcm1hbCkgewog
ICAgICAgICBpZiAoc3RhdGUgPT09IEBBc3luY0dlbmVyYXRvclN0YXRlU3VzcGVuZGVkU3RhcnQp
IHsKLSAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAQXN5bmNHZW5lcmF0
b3JTdGF0ZUNvbXBsZXRlZDsKKyAgICAgICAgICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5l
cmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBBc3luY0dlbmVyYXRvclN0YXRlQ29tcGxldGVkKTsK
ICAgICAgICAgICAgIHN0YXRlID0gQEFzeW5jR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoc3RhdGUgPT09IEBBc3luY0dlbmVyYXRvclN0YXRlQ29tcGxl
dGVkKSB7CiAgICAgICAgICAgICBpZiAobmV4dC5yZXN1bWVNb2RlID09PSBAR2VuZXJhdG9yUmVz
dW1lTW9kZVJldHVybikgewotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3Rh
dGUgPSBAQXN5bmNHZW5lcmF0b3JTdGF0ZUF3YWl0aW5nUmV0dXJuOworICAgICAgICAgICAgICAg
IEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBBc3lu
Y0dlbmVyYXRvclN0YXRlQXdhaXRpbmdSZXR1cm4pOwogCiAgICAgICAgICAgICAgICAgY29uc3Qg
cHJvbWlzZUNhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoQFByb21pc2UpOwogICAg
ICAgICAgICAgICAgIHByb21pc2VDYXBhYmlsaXR5LkByZXNvbHZlLkBjYWxsKEB1bmRlZmluZWQs
IG5leHQudmFsdWUpOwpAQCAtMjM5LDcgKzIzOSw3IEBAIGZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9y
UmVzdW1lTmV4dChnZW5lcmF0b3IpCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyZXN1
bHQpIHsgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBBc3luY0dlbmVyYXRvclN0YXRlQ29t
cGxldGVkOyBAYXN5bmNHZW5lcmF0b3JSZXNvbHZlKGdlbmVyYXRvciwgcmVzdWx0LCB0cnVlKTsg
fSwKICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKGVycm9yKSB7IGdlbmVyYXRvci5AZ2Vu
ZXJhdG9yU3RhdGUgPSBAQXN5bmNHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsgQGFzeW5jR2VuZXJh
dG9yUmVqZWN0KGdlbmVyYXRvciwgZXJyb3IpOyB9KTsKIAotICAgICAgICAgICAgICAgIHRocm93
YXdheUNhcGFiaWxpdHlQcm9taXNlLkBwcm9taXNlSXNIYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUodGhyb3dhd2F5Q2FwYWJpbGl0eVByb21pc2Us
ICJwcm9taXNlSXNIYW5kbGVkIiwgdHJ1ZSk7CiAKICAgICAgICAgICAgICAgICByZXR1cm4gQHVu
ZGVmaW5lZDsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IDc1ZDU1NjJjZjE1OGVlMmQ5NmE4
ZmNmMTZjM2M3NzkwZDNjOWI4ZjIuLjYwNWRlMzRjMzYwMDhkODExMzhlMjQ2YjI3MmEzMTZhNTMz
YTQzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0
b3JQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVy
YXRvclByb3RvdHlwZS5qcwpAQCAtMzQsMTQgKzM0LDE0IEBAIGZ1bmN0aW9uIGdlbmVyYXRvclJl
c3VtZShnZW5lcmF0b3IsIHN0YXRlLCBnZW5lcmF0b3JUaGlzLCBzZW50VmFsdWUsIHZhbHVlLCBy
ZXN1CiAgICAgdmFyIGRvbmUgPSBzdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkOwog
ICAgIGlmICghZG9uZSkgewogICAgICAgICB0cnkgewotICAgICAgICAgICAgZ2VuZXJhdG9yLkBn
ZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZzsKKyAgICAgICAgICAgIEBw
dXRCeUlkRGlyZWN0UHJpdmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JTdGF0ZSIsIEBHZW5lcmF0
b3JTdGF0ZUV4ZWN1dGluZyk7CiAgICAgICAgICAgICB2YWx1ZSA9IEBnZXRCeUlkRGlyZWN0UHJp
dmF0ZShnZW5lcmF0b3IsICJnZW5lcmF0b3JOZXh0IikuQGNhbGwoZ2VuZXJhdG9yVGhpcywgZ2Vu
ZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlLCBAZ2V0QnlJZERpcmVjdFByaXZh
dGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yRnJhbWUiKSk7CiAgICAgICAgICAgICBpZiAoQGdldEJ5
SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIikgPT09IEBHZW5lcmF0
b3JTdGF0ZUV4ZWN1dGluZykgewotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9y
U3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CisgICAgICAgICAgICAgICAgQHB1dEJ5
SWREaXJlY3RQcml2YXRlKGdlbmVyYXRvciwgImdlbmVyYXRvclN0YXRlIiwgQEdlbmVyYXRvclN0
YXRlQ29tcGxldGVkKTsKICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAgICAgICAgIGdlbmVyYXRvci5AZ2Vu
ZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CisgICAgICAgICAgICBAcHV0
QnlJZERpcmVjdFByaXZhdGUoZ2VuZXJhdG9yLCAiZ2VuZXJhdG9yU3RhdGUiLCBAR2VuZXJhdG9y
U3RhdGVDb21wbGV0ZWQpOwogICAgICAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTWFwSXRlcmF0
b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTWFwSXRlcmF0
b3JQcm90b3R5cGUuanMKaW5kZXggM2RiZjkzNTgxZTQ4OTc3OWZjNmJhNTlkY2FjMWQ4Nzg4NmQ1
ODg3OS4uZjEzNjVhNmEzYTY3MGIxMjNlYjVlOWM0Zjg1Nzk5ZTRlNTcxYmZlOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01hcEl0ZXJhdG9yUHJvdG90eXBlLmpz
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9NYXBJdGVyYXRvclByb3RvdHlw
ZS5qcwpAQCAtMzEsNyArMzEsNyBAQCBmdW5jdGlvbiBtYXBJdGVyYXRvck5leHQoYnVja2V0LCBr
aW5kKQogICAgIHZhciB2YWx1ZTsKIAogICAgIGJ1Y2tldCA9IEBtYXBCdWNrZXROZXh0KGJ1Y2tl
dCk7Ci0gICAgdGhpcy5AbWFwQnVja2V0ID0gYnVja2V0OworICAgIEBwdXRCeUlkRGlyZWN0UHJp
dmF0ZSh0aGlzLCAibWFwQnVja2V0IiwgYnVja2V0KTsKICAgICB2YXIgZG9uZSA9IGJ1Y2tldCA9
PT0gQHNlbnRpbmVsTWFwQnVja2V0OwogICAgIGlmICghZG9uZSkgewogICAgICAgICB2YXIga2V5
ID0gQG1hcEJ1Y2tldEtleShidWNrZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL01hcFByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9NYXBQcm90b3R5cGUuanMKaW5kZXggNGVjMDQxYWZhZjY3ZmQ3ZDQ5MTJhYzQwNzQ5NjM5
ODc5NTc5MDNiNi4uYzM1YzVhODFkODdmNmY5ODc4MjQxZGNlNDUwMDAwMmY3ZDQzYzc5MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01hcFByb3RvdHlwZS5qcwor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTWFwUHJvdG90eXBlLmpzCkBAIC0z
MCw5ICszMCw5IEBAIGZ1bmN0aW9uIGNyZWF0ZU1hcEl0ZXJhdG9yKGl0ZXJhdGVkT2JqZWN0LCBr
aW5kKQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIEBhc3NlcnQoQGlzTWFwKGl0ZXJhdGVkT2Jq
ZWN0KSk7Ci0gICAgdGhpcy5AaXRlcmF0ZWRPYmplY3QgPSBpdGVyYXRlZE9iamVjdDsKLSAgICB0
aGlzLkBtYXBJdGVyYXRvcktpbmQgPSBraW5kOwotICAgIHRoaXMuQG1hcEJ1Y2tldCA9IEBtYXBC
dWNrZXRIZWFkKGl0ZXJhdGVkT2JqZWN0KTsKKyAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUodGhp
cywgIml0ZXJhdGVkT2JqZWN0IiwgaXRlcmF0ZWRPYmplY3QpOworICAgIEBwdXRCeUlkRGlyZWN0
UHJpdmF0ZSh0aGlzLCAibWFwSXRlcmF0b3JLaW5kIiwga2luZCk7CisgICAgQHB1dEJ5SWREaXJl
Y3RQcml2YXRlKHRoaXMsICJtYXBCdWNrZXQiLCBAbWFwQnVja2V0SGVhZChpdGVyYXRlZE9iamVj
dCkpOwogfQogCiBmdW5jdGlvbiB2YWx1ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuanMKaW5kZXggYWI0NTdjYWMw
OGNkMGM4Y2VhZGZmZDdmZTZjOGRjZDNmNmYxNmRlOC4uOTNmMjIyNTZkNjczZDYxMjIwODBlMGVi
MWY0NmU2ZGMzMTViY2U0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL01vZHVsZUxvYWRlclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmpzCkBAIC0xMjMsNyArMTIzLDcgQEAgZnVu
Y3Rpb24gZm9yY2VGdWxmaWxsUHJvbWlzZShwcm9taXNlLCB2YWx1ZSkKIHsKICAgICAidXNlIHN0
cmljdCI7CiAKLSAgICBpZiAocHJvbWlzZS5AcHJvbWlzZVN0YXRlID09PSBAcHJvbWlzZVN0YXRl
UGVuZGluZykKKyAgICBpZiAoQGdldEJ5SWREaXJlY3RQcml2YXRlKHByb21pc2UsICJwcm9taXNl
U3RhdGUiKSA9PT0gQHByb21pc2VTdGF0ZVBlbmRpbmcpCiAgICAgICAgIEBmdWxmaWxsUHJvbWlz
ZShwcm9taXNlLCB2YWx1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qcwppbmRleCAyOTQ2OWIyY2I5YjZmNTM1NTljZWI5
YjlmMjQwODRkYWU4OGM5NGE5Li41ZDU2NmVjODg0ODgxOGM1YzA4ODQ2ZGRjZDYwMTkzZTYxM2Rl
NTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZU9w
ZXJhdGlvbnMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VP
cGVyYXRpb25zLmpzCkBAIC04OCw3ICs4OCw3IEBAIGZ1bmN0aW9uIG5ld1Byb21pc2VDYXBhYmls
aXR5KGNvbnN0cnVjdG9yKQogZnVuY3Rpb24gbmV3SGFuZGxlZFJlamVjdGVkUHJvbWlzZShlcnJv
cikKIHsKICAgICBsZXQgcHJvbWlzZSA9IEBQcm9taXNlLkByZWplY3QoZXJyb3IpOwotICAgIHBy
b21pc2UuQHByb21pc2VJc0hhbmRsZWQgPSB0cnVlOworICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0
ZShwcm9taXNlLCAicHJvbWlzZUlzSGFuZGxlZCIsIHRydWUpOwogICAgIHJldHVybiBwcm9taXNl
OwogfQogCkBAIC0xMDcsOSArMTA3LDkgQEAgZnVuY3Rpb24gcmVqZWN0UHJvbWlzZShwcm9taXNl
LCByZWFzb24pCiAgICAgInVzZSBzdHJpY3QiOwogCiAgICAgdmFyIHJlYWN0aW9ucyA9IEBnZXRC
eUlkRGlyZWN0UHJpdmF0ZShwcm9taXNlLCAicHJvbWlzZVJlYWN0aW9ucyIpOwotICAgIHByb21p
c2UuQHByb21pc2VSZXN1bHQgPSByZWFzb247Ci0gICAgcHJvbWlzZS5AcHJvbWlzZVJlYWN0aW9u
cyA9IEB1bmRlZmluZWQ7Ci0gICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHByb21pc2VTdGF0
ZVJlamVjdGVkOworICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShwcm9taXNlLCAicHJvbWlzZVJl
c3VsdCIsIHJlYXNvbik7CisgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHByb21pc2UsICJwcm9t
aXNlUmVhY3Rpb25zIiwgQHVuZGVmaW5lZCk7CisgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHBy
b21pc2UsICJwcm9taXNlU3RhdGUiLCBAcHJvbWlzZVN0YXRlUmVqZWN0ZWQpOwogCiAgICAgQElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9taXNlUmVqZWN0ZWQocHJvbWlzZSwgcmVhc29uLCBy
ZWFjdGlvbnMpOwogCkBAIC0xMjUsOSArMTI1LDkgQEAgZnVuY3Rpb24gZnVsZmlsbFByb21pc2Uo
cHJvbWlzZSwgdmFsdWUpCiAgICAgInVzZSBzdHJpY3QiOwogCiAgICAgdmFyIHJlYWN0aW9ucyA9
IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShwcm9taXNlLCAicHJvbWlzZVJlYWN0aW9ucyIpOwotICAg
IHByb21pc2UuQHByb21pc2VSZXN1bHQgPSB2YWx1ZTsKLSAgICBwcm9taXNlLkBwcm9taXNlUmVh
Y3Rpb25zID0gQHVuZGVmaW5lZDsKLSAgICBwcm9taXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlz
ZVN0YXRlRnVsZmlsbGVkOworICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShwcm9taXNlLCAicHJv
bWlzZVJlc3VsdCIsIHZhbHVlKTsKKyAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUocHJvbWlzZSwg
InByb21pc2VSZWFjdGlvbnMiLCBAdW5kZWZpbmVkKTsKKyAgICBAcHV0QnlJZERpcmVjdFByaXZh
dGUocHJvbWlzZSwgInByb21pc2VTdGF0ZSIsIEBwcm9taXNlU3RhdGVGdWxmaWxsZWQpOwogCiAg
ICAgQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9taXNlRnVsZmlsbGVkKHByb21pc2UsIHZh
bHVlLCByZWFjdGlvbnMpOwogCkBAIC0yMTgsOSArMjE4LDkgQEAgZnVuY3Rpb24gaW5pdGlhbGl6
ZVByb21pc2UoZXhlY3V0b3IpCiAgICAgaWYgKHR5cGVvZiBleGVjdXRvciAhPT0gJ2Z1bmN0aW9u
JykKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJQcm9taXNlIGNvbnN0cnVjdG9yIHRha2VzIGEg
ZnVuY3Rpb24gYXJndW1lbnQiKTsKIAotICAgIHRoaXMuQHByb21pc2VTdGF0ZSA9IEBwcm9taXNl
U3RhdGVQZW5kaW5nOwotICAgIHRoaXMuQHByb21pc2VSZWFjdGlvbnMgPSBbXTsKLSAgICB0aGlz
LkBwcm9taXNlSXNIYW5kbGVkID0gZmFsc2U7CisgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHRo
aXMsICJwcm9taXNlU3RhdGUiLCBAcHJvbWlzZVN0YXRlUGVuZGluZyk7CisgICAgQHB1dEJ5SWRE
aXJlY3RQcml2YXRlKHRoaXMsICJwcm9taXNlUmVhY3Rpb25zIiwgW10pOworICAgIEBwdXRCeUlk
RGlyZWN0UHJpdmF0ZSh0aGlzLCAicHJvbWlzZUlzSGFuZGxlZCIsIGZhbHNlKTsKIAogICAgIHZh
ciByZXNvbHZpbmdGdW5jdGlvbnMgPSBAY3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zKHRoaXMpOwog
ICAgIHRyeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJv
bWlzZVByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNl
UHJvdG90eXBlLmpzCmluZGV4IDYzNDJiNDA0ZWJjOTc0MWRmNjM3ZmE4NjM2ZmU1NzYyMDQ1MmQ1
NWQuLjQ2NDY0MmFmOTgyOGExOGM0ZTM5MGM1ZGVjOTQyYzg5ZTIyZGIwYjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlUHJvdG90eXBlLmpzCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlUHJvdG90eXBlLmpzCkBAIC01
OSw3ICs1OSw3IEBAIGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpCiAgICAg
ICAgIEBlbnF1ZXVlSm9iKEBwcm9taXNlUmVhY3Rpb25Kb2IsIFtzdGF0ZSwgcmVhY3Rpb24sIEBn
ZXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAicHJvbWlzZVJlc3VsdCIpXSk7CiAgICAgfQogCi0g
ICAgdGhpcy5AcHJvbWlzZUlzSGFuZGxlZCA9IHRydWU7CisgICAgQHB1dEJ5SWREaXJlY3RQcml2
YXRlKHRoaXMsICJwcm9taXNlSXNIYW5kbGVkIiwgdHJ1ZSk7CiAKICAgICByZXR1cm4gcmVzdWx0
Q2FwYWJpbGl0eS5AcHJvbWlzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9TZXRJdGVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9TZXRJdGVyYXRvclByb3RvdHlwZS5qcwppbmRleCBhMDZiMmEyZGQxNTI3MjFl
NzFmNjNlY2FmMWJmNTA5N2QyOWUwYmU5Li42ZjA3NGRkYTc1MjRhYmZhM2FhYjMyOWI1YzNjOTFk
MzFmM2QwZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU2V0
SXRlcmF0b3JQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L1NldEl0ZXJhdG9yUHJvdG90eXBlLmpzCkBAIC0zMSw3ICszMSw3IEBAIGZ1bmN0aW9uIHNldEl0
ZXJhdG9yTmV4dChidWNrZXQsIGtpbmQpCiAgICAgdmFyIHZhbHVlOwogCiAgICAgYnVja2V0ID0g
QHNldEJ1Y2tldE5leHQoYnVja2V0KTsKLSAgICB0aGlzLkBzZXRCdWNrZXQgPSBidWNrZXQ7Cisg
ICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJzZXRCdWNrZXQiLCBidWNrZXQpOwogICAg
IHZhciBkb25lID0gYnVja2V0ID09PSBAc2VudGluZWxTZXRCdWNrZXQ7CiAgICAgaWYgKCFkb25l
KSB7CiAgICAgICAgIHZhbHVlID0gQHNldEJ1Y2tldEtleShidWNrZXQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1NldFByb3RvdHlwZS5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9TZXRQcm90b3R5cGUuanMKaW5kZXggYmEzMDE3MDRjNGVi
ZThkMmFhMjM4OGQzNDMyNDYwMDU4ZjE0MDZhYy4uYTY1MGFkZDUzNTZkOGMxMTkwMDc0MGFjMWI1
MDFhMDJlMThjZDhlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L1NldFByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU2V0
UHJvdG90eXBlLmpzCkBAIC0zMCw5ICszMCw5IEBAIGZ1bmN0aW9uIGNyZWF0ZVNldEl0ZXJhdG9y
KGl0ZXJhdGVkT2JqZWN0LCBraW5kKQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIEBhc3NlcnQo
QGlzU2V0KGl0ZXJhdGVkT2JqZWN0KSk7Ci0gICAgdGhpcy5AaXRlcmF0ZWRPYmplY3QgPSBpdGVy
YXRlZE9iamVjdDsKLSAgICB0aGlzLkBzZXRJdGVyYXRvcktpbmQgPSBraW5kOwotICAgIHRoaXMu
QHNldEJ1Y2tldCA9IEBzZXRCdWNrZXRIZWFkKGl0ZXJhdGVkT2JqZWN0KTsKKyAgICBAcHV0QnlJ
ZERpcmVjdFByaXZhdGUodGhpcywgIml0ZXJhdGVkT2JqZWN0IiwgaXRlcmF0ZWRPYmplY3QpOwor
ICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAic2V0SXRlcmF0b3JLaW5kIiwga2luZCk7
CisgICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJzZXRCdWNrZXQiLCBAc2V0QnVja2V0
SGVhZChpdGVyYXRlZE9iamVjdCkpOwogfQogCiBmdW5jdGlvbiB2YWx1ZXMoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlLmpzCmluZGV4IDMzNjBkMmNiODkzMWQzYzliNzA3YjhkODk3YjQ4YmM0MWIzOWMxYTkuLjJk
NTgyMDU0OTZlYTkwOGQ1NDAzOGVhYjc2NTAxZjkxNWQ0YjBmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUu
anMKQEAgLTQwLDkgKzQwLDkgQEAgZnVuY3Rpb24gbmV4dCgpCiAgICAgdmFyIHN0cmluZyA9IEBn
ZXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAiaXRlcmF0ZWRTdHJpbmciKTsKICAgICBpZiAoc3Ry
aW5nICE9PSBAdW5kZWZpbmVkKSB7CiAgICAgICAgIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3Ro
ID4+PiAwOwotICAgICAgICBpZiAocG9zaXRpb24gPj0gbGVuZ3RoKSB7Ci0gICAgICAgICAgICB0
aGlzLkBpdGVyYXRlZFN0cmluZyA9IEB1bmRlZmluZWQ7Ci0gICAgICAgIH0gZWxzZSB7CisgICAg
ICAgIGlmIChwb3NpdGlvbiA+PSBsZW5ndGgpCisgICAgICAgICAgICBAcHV0QnlJZERpcmVjdFBy
aXZhdGUodGhpcywgIml0ZXJhdGVkU3RyaW5nIiwgQHVuZGVmaW5lZCk7CisgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgZG9uZSA9IGZhbHNlOwogCiAgICAgICAgICAgICB2YXIgZmlyc3QgPSBz
dHJpbmcuQGNoYXJDb2RlQXQocG9zaXRpb24pOwpAQCAtNTYsNyArNTYsNyBAQCBmdW5jdGlvbiBu
ZXh0KCkKICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzdHJpbmdbcG9zaXRpb25dICsgc3Ry
aW5nW3Bvc2l0aW9uICsgMV07CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHRoaXMuQHN0
cmluZ0l0ZXJhdG9yTmV4dEluZGV4ID0gcG9zaXRpb24gKyB2YWx1ZS5sZW5ndGg7CisgICAgICAg
ICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUodGhpcywgInN0cmluZ0l0ZXJhdG9yTmV4dEluZGV4
IiwgcG9zaXRpb24gKyB2YWx1ZS5sZW5ndGgpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuaAppbmRleCA4NTUwMTZlYmE5ZjcxNzQ2NzAyMmI2OGY0YjlhMDNkMGIzYzY4NjRl
Li5lZGEzNGVjZDczYmQ3N2FjOTdkNjU4ODhhOTg3MDUxYzAzYjlkMWU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmgKQEAgLTU1LDYgKzU1LDggQEAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBtYWNybyh0
aHJvd1JhbmdlRXJyb3IpIFwKICAgICBtYWNybyh0aHJvd091dE9mTWVtb3J5RXJyb3IpIFwKICAg
ICBtYWNybyh0cnlHZXRCeUlkKSBcCisgICAgbWFjcm8ocHV0QnlJZERpcmVjdCkgXAorICAgIG1h
Y3JvKHB1dEJ5SWREaXJlY3RQcml2YXRlKSBcCiAgICAgbWFjcm8ocHV0QnlWYWxEaXJlY3QpIFwK
ICAgICBtYWNybyh0b051bWJlcikgXAogICAgIG1hY3JvKHRvU3RyaW5nKSBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXgg
NjQwMzk0MjQ2ZDQ5ODRjMDExOTIzOGQwMmY1NmJjMWU3OTRkZjViMi4uMDdhOWM5MDdhN2UyMTMw
YTQyNDRkZmEwMDExZjdjYTUyYjA2ZThhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtOTkxLDYgKzk5MSwzNyBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2FyZ3VtZW50
Q291bnQoQnl0ZWNvZGVHZW5lcmF0bwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFVuYXJ5Tm9E
c3RPcChvcF9hcmd1bWVudF9jb3VudCwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSk7
CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNf
cHV0QnlJZERpcmVjdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCit7CisgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsK
KyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsK
KyAgICBub2RlID0gbm9kZS0+bV9uZXh0OworICAgIEFTU0VSVChub2RlLT5tX2V4cHItPmlzU3Ry
aW5nKCkpOworICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gc3RhdGljX2Nhc3Q8U3RyaW5n
Tm9kZSo+KG5vZGUtPm1fZXhwciktPnZhbHVlKCk7CisgICAgbm9kZSA9IG5vZGUtPm1fbmV4dDsK
KyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7
CisKKyAgICBBU1NFUlQoIW5vZGUtPm1fbmV4dCk7CisKKyAgICByZXR1cm4gZ2VuZXJhdG9yLm1v
dmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQo
YmFzZS5nZXQoKSwgaWRlbnQsIHZhbHVlLmdldCgpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0
KSk7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5z
aWNfcHV0QnlJZERpcmVjdFByaXZhdGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQoreworICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1f
bGlzdE5vZGU7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobm9kZSk7CisgICAgbm9kZSA9IG5vZGUtPm1fbmV4dDsKKyAgICBBU1NFUlQobm9kZS0+bV9l
eHByLT5pc1N0cmluZygpKTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IGdlbmVyYXRv
ci52bSgpLT5wcm9wZXJ0eU5hbWVzLT5sb29rVXBQcml2YXRlTmFtZShzdGF0aWNfY2FzdDxTdHJp
bmdOb2RlKj4obm9kZS0+bV9leHByKS0+dmFsdWUoKSk7CisgICAgQVNTRVJUKGlkZW50KTsKKyAg
ICBub2RlID0gbm9kZS0+bV9uZXh0OworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdl
bmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsKKwor
ICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGdlbmVy
YXRvci5lbWl0RGlyZWN0UHV0QnlJZChiYXNlLmdldCgpLCAqaWRlbnQsIHZhbHVlLmdldCgpLCBQ
cm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KSk7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50
cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHV0QnlWYWxEaXJlY3QoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIEFyZ3VtZW50TGlzdE5vZGUq
IG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7Cg==
</data>
<flag name="review"
          id="355862"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>