<?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>163189</bug_id>
          
          <creation_ts>2016-10-09 17:39:54 -0700</creation_ts>
          <short_desc>MessageEvent.ports should be nullable</short_desc>
          <delta_ts>2016-10-10 15:33:32 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc>https://www.w3.org/Bugs/Public/show_bug.cgi?id=23176</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>163187</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1238141</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-09 17:39:54 -0700</bug_when>
    <thetext>MessageEvent.ports should be nullable:
- https://html.spec.whatwg.org/multipage/comms.html#the-messageevent-interfaces

Firefox and Chrome agree with the specification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238168</commentid>
    <comment_count>1</comment_count>
      <attachid>291059</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-09 21:45:05 -0700</bug_when>
    <thetext>Created attachment 291059
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238175</commentid>
    <comment_count>2</comment_count>
      <attachid>291059</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-10-09 22:20:52 -0700</bug_when>
    <thetext>Comment on attachment 291059
Patch

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

&gt; Source/WebCore/dom/MessageEvent.h:44
&gt; +    std::unique_ptr&lt;MessagePortArray&gt; ports;

Can this be Optional&lt;MessagePortArray&gt; instead? Do you have any memory of why this is a unique_ptr in MessageEvent itself? (Doesn&apos;t seem like the overhead of an empty Vector would worth it for a transient event).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238180</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-09 22:31:14 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 291059 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=291059&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/MessageEvent.h:44
&gt; &gt; +    std::unique_ptr&lt;MessagePortArray&gt; ports;
&gt; 
&gt; Can this be Optional&lt;MessagePortArray&gt; instead? Do you have any memory of
&gt; why this is a unique_ptr in MessageEvent itself? (Doesn&apos;t seem like the
&gt; overhead of an empty Vector would worth it for a transient event).

I do not know why the implementation is using unique_ptr&lt;&gt;. I guess it is possible we did not have Optional&lt;&gt; at the time. Anyway, I&apos;ll look into using Optional&lt;&gt; tomorrow. Hopefully this is not too much refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238184</commentid>
    <comment_count>4</comment_count>
      <attachid>291059</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-09 23:06:14 -0700</bug_when>
    <thetext>Comment on attachment 291059
Patch

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

&gt; Source/WebCore/bindings/js/JSMessageEventCustom.cpp:79
&gt;          if (RefPtr&lt;SerializedScriptValue&gt; serializedValue = event.dataAsSerializedScriptValue()) {

Should use auto.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:5442
&gt; +    Ref&lt;${interfaceName}&gt; event = ${interfaceName}::createForBindings(eventType, WTFMove(eventInit));

Should use auto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238336</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-10 09:39:17 -0700</bug_when>
    <thetext>I filed a bug against the spec to see if it would be possible to make the attribute non-nullable in the specification instead:
- https://github.com/whatwg/html/issues/1882

Making this attribute nullable is not really useful (except for aligning with other browsers).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238572</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-10 15:33:32 -0700</bug_when>
    <thetext>I updated the specification instead via https://github.com/whatwg/html/commit/df2c0c448612d5b8ab85ad3c6ce0255ee11c0b01</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291059</attachid>
            <date>2016-10-09 21:45:05 -0700</date>
            <delta_ts>2016-10-09 22:31:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163189-20161009214144.patch</filename>
            <type>text/plain</type>
            <size>28660</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmE2MmQ4MTNmYTU3MmFk
MDA1YTAzYmE1ZGM0MGFmNjQ1ZTVmODUyYi4uOGZmZGVmMDMxMTVlODU4MjAzMjMzNTVjYTRlMTEz
MjI1MzdmYWZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU1IEBACiAyMDE2LTEwLTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTWVzc2FnZUV2ZW50LnBvcnRz
IHNob3VsZCBiZSBudWxsYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYzMTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTWVzc2FnZUV2ZW50LnBvcnRzIHNob3VsZCBiZSBudWxsYWJsZSBhcyBwZXIg
dGhlIHNwZWNpZmljYXRpb246CisgICAgICAgIC0gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2UvY29tbXMuaHRtbCN0aGUtbWVzc2FnZWV2ZW50LWludGVyZmFjZXMKKworICAg
ICAgICBXaGlsZSB0aGlzIGlzIG5vdCB0ZXJyaWJseSB1c2VmdWwsIGxldCdzIGFsaWduIG91ciBi
ZWhhdmlvciB3aXRoCisgICAgICAgIHRoZSBzcGVjaWZpY2F0aW9uIGFuZCB3aXRoIEZpcmVmb3gg
YW5kIENocm9tZS4KKworICAgICAgICBSZWxldmFudCBkaXNjdXNzaW9uIGF0OgorICAgICAgICAt
IGh0dHBzOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNzYKKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIHVwZGF0ZWQgZXhpc3RpbmcgdGVzdC4KKworICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6anNBcnJheSk6
CisgICAgICAgIChXZWJDb3JlOjpqc0Zyb3plbkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OnBv
cHVsYXRlUmVmUHRyTmF0aXZlQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6dG9SZWZQdHJOYXRp
dmVBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjp0b051bGxhYmxlUmVmUHRyTmF0aXZlQXJyYXkp
OgorICAgICAgICAoV2ViQ29yZTo6dG9SZWZOYXRpdmVBcnJheSk6IERlbGV0ZWQuCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGlj
dGlvbmFyeTo6Y29udmVydFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RpY3Rpb25h
cnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGljdGlvbmFyeTo6SWRlbnRpdHlTZXR0ZXI6Omlk
ZW50aXR5U2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRGljdGlvbmFyeTo6dHJ5R2V0UHJv
cGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNEaWN0aW9uYXJ5Ojp0cnlHZXRQcm9wZXJ0eUFu
ZFJlc3VsdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzZXRFbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0VGltZW91dCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRNYXhpbXVtQWdlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU01lc3NhZ2VFdmVudDo6ZGF0YSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5p
dGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNv
bnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpjcmVhdGVGb3JCaW5kaW5ncyk6CisgICAgICAgICogZG9t
L01lc3NhZ2VFdmVudC5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaWRsOgorICAgICAg
ICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6
ZGlzZW50YW5nbGVQb3J0cyk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZW50YW5n
bGVQb3J0cyk6CisKKzIwMTYtMTAtMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KwogICAgICAgICBVcGRhdGUgZ2VuZXJhdGVkIGJpbmRpbmdzIGNvZGUgc28gdGhhdCBkaWN0aW9u
YXJ5IHN0cnVjdHVyZXMgbm8gbG9uZ2VyIG5lZWQgZXhwbGljaXQgY29uc3RydWN0b3JzCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMxODgKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCBhMTJmMWRlNWIwZGEy
YWRlYzhiZjEyZjc0OTQyYjk4YzU0YzNkY2M3Li41Mjc3MjFhN2MwMzlmNDIxNTQ2MTk4MjQ1MDcz
YWU0OWEzMTk5ZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
aApAQCAtMjgzLDYgKzI4Myw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTSXRlcmF0b3JFbmQoSlNDOjpF
eGVjU3RhdGUmKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4g
SlNDOjpKU1ZhbHVlIGpzQXJyYXkoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCos
IGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gSlNDOjpKU1ZhbHVlIGpzQXJyYXkoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4q
KTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gSlNDOjpKU1Zh
bHVlIGpzRnJvemVuQXJyYXkoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIGNv
bnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4mKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eT4gSlNDOjpKU1ZhbHVlIGpzRnJvemVuQXJyYXkoSlNDOjpFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eT4qKTsKIAogSlNDOjpKU1ZhbHVlIGpzUGFpcihKU0M6OkV4ZWNTdGF0ZSYsIEpTRE9NR2xvYmFs
T2JqZWN0KiwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8dHlwZW5hbWUg
Rmlyc3RUeXBlLCB0eXBlbmFtZSBTZWNvbmRUeXBlPiBKU0M6OkpTVmFsdWUganNQYWlyKEpTQzo6
RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmplY3QqLCBjb25zdCBGaXJzdFR5cGUmLCBjb25zdCBT
ZWNvbmRUeXBlJik7CkBAIC0yOTksNyArMzAwLDggQEAgUmVmUHRyPEpTQzo6RmxvYXQzMkFycmF5
PiB0b0Zsb2F0MzJBcnJheShKU0M6OkpTVmFsdWUpOwogUmVmUHRyPEpTQzo6RmxvYXQ2NEFycmF5
PiB0b0Zsb2F0NjRBcnJheShKU0M6OkpTVmFsdWUpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBKU1R5cGU+IFZlY3RvcjxSZWY8VD4+IHRvUmVmTmF0aXZlQXJyYXkoSlNDOjpFeGVj
U3RhdGUmLCBKU0M6OkpTVmFsdWUpOwotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSlNU
eXBlPiBWZWN0b3I8UmVmUHRyPFQ+PiB0b1JlZlB0ck5hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRl
JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEpTVHlwZSwg
dHlwZW5hbWUgVmVjdG9yVHlwZSA9IFZlY3RvcjxSZWZQdHI8VD4+PiBWZWN0b3JUeXBlIHRvUmVm
UHRyTmF0aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwordGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgSlNUeXBlLCB0eXBlbmFtZSBWZWN0b3JUeXBlID0gVmVjdG9y
PFJlZlB0cjxUPj4+IHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3JUeXBlPiB0b051bGxhYmxlUmVmUHRy
TmF0aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpT
VmFsdWUpOwogYm9vbCBoYXNJdGVyYXRvck1ldGhvZChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNW
YWx1ZSk7CiAKQEAgLTcwOCw5ICs3MTAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHk+IEpTQzo6SlNWYWx1ZSBqc0FycmF5KEpTQzo6RXhlY1N0YXRlKgogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBKU0M6OkpT
VmFsdWUganNBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiogdmVjdG9yKQogewot
ICAgIGlmICghdmVjdG9yKQotICAgICAgICByZXR1cm4gSlNDOjpjb25zdHJ1Y3RFbXB0eUFycmF5
KGV4ZWMsIG51bGxwdHIsIGdsb2JhbE9iamVjdCwgMCk7Ci0gICAgcmV0dXJuIGpzQXJyYXkoZXhl
YywgZ2xvYmFsT2JqZWN0LCAqdmVjdG9yKTsKKyAgICByZXR1cm4gdmVjdG9yID8ganNBcnJheShl
eGVjLCBnbG9iYWxPYmplY3QsICp2ZWN0b3IpIDogSlNDOjpqc051bGwoKTsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PiBKU0M6OkpTVmFsdWUganNGcm96
ZW5BcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKQpAQCAtNzI4LDYg
KzcyOCwxMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IEpT
Qzo6SlNWYWx1ZSBqc0Zyb3plbkFycmF5KEpTQzo6RXhlYwogICAgIHJldHVybiBKU0M6Om9iamVj
dENvbnN0cnVjdG9yRnJlZXplKGV4ZWMsIGFycmF5KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PiBpbmxpbmUgSlNDOjpKU1ZhbHVlIGpzRnJvemVuQXJy
YXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4qIHZlY3RvcikKK3sKKyAgICByZXR1cm4g
dmVjdG9yID8ganNGcm96ZW5BcnJheShleGVjLCBnbG9iYWxPYmplY3QsICp2ZWN0b3IpIDogSlND
Ojpqc051bGwoKTsKK30KKwogaW5saW5lIEpTQzo6SlNWYWx1ZSBqc1BhaXIoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
dmFsdWUxLCBKU0M6OkpTVmFsdWUgdmFsdWUyKQogewogICAgIEpTQzo6TWFya2VkQXJndW1lbnRC
dWZmZXIgYXJnczsKQEAgLTgyMywyNSArODI4LDQ4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEpTVD4gaW5saW5lIFZlY3RvcjxSZWY8VD4+IHRvUmVmTmF0aXZlQXJyYXkoSlNDOjpF
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
SlNUPiBWZWN0b3I8UmVmUHRyPFQ+PiB0b1JlZlB0ck5hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRl
JiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBKU1R5cGUsIHR5cGVuYW1lIFZlY3RvclR5cGU+IHN0YXRpYyBpbmxpbmUgdm9pZCBwb3B1bGF0
ZVJlZlB0ck5hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZh
bHVlLCBWZWN0b3JUeXBlJiByZXN1bHQpCiB7Ci0gICAgSlNDOjpWTSYgdm0gPSBleGVjLnZtKCk7
CisgICAgZm9yRWFjaEluSXRlcmFibGUoJnN0YXRlLCB2YWx1ZSwgWyZyZXN1bHRdKEpTQzo6Vk0m
IHZtLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlKSB7CisgICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAgICBpZiAo
anNWYWx1ZS5pbmhlcml0cyhKU1R5cGU6OmluZm8oKSkpCisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKEpTVHlwZTo6dG9XcmFwcGVkKGpzVmFsdWUpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgdGhyb3dBcnJheUVsZW1lbnRUeXBlRXJyb3IoKnN0YXRlLCBzY29wZSk7CisgICAgfSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEpTVHlwZSwgdHlwZW5hbWUgVmVjdG9y
VHlwZT4gVmVjdG9yVHlwZSB0b1JlZlB0ck5hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQoreworICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIXZh
bHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CisgICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlKTsKICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBWZWN0b3I8UmVmUHRyPFQ+PiByZXN1bHQ7
Ci0gICAgZm9yRWFjaEluSXRlcmFibGUoJmV4ZWMsIHZhbHVlLCBbJnJlc3VsdF0oSlNDOjpWTSYg
dm0sIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIGpzVmFsdWUpIHsKLSAgICAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFZlY3RvclR5cGUg
cmVzdWx0OworICAgIHBvcHVsYXRlUmVmUHRyTmF0aXZlQXJyYXk8VCwgSlNUeXBlPihzdGF0ZSwg
dmFsdWUsIHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KIAotICAgICAgICBpZiAoanNW
YWx1ZS5pbmhlcml0cyhKU1Q6OmluZm8oKSkpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKEpT
VDo6dG9XcmFwcGVkKGpzVmFsdWUpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3dB
cnJheUVsZW1lbnRUeXBlRXJyb3IoKnN0YXRlLCBzY29wZSk7Ci0gICAgfSk7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBKU1R5cGUsIHR5cGVuYW1lIFZlY3RvclR5cGU+IHN0ZDo6dW5p
cXVlX3B0cjxWZWN0b3JUeXBlPiB0b051bGxhYmxlUmVmUHRyTmF0aXZlQXJyYXkoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgSlNDOjpWTSYgdm0gPSBz
dGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd1NlcXVlbmNl
VHlwZUVycm9yKHN0YXRlLCBzY29wZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KworICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3JUeXBlPigpOworICAg
IHBvcHVsYXRlUmVmUHRyTmF0aXZlQXJyYXk8VCwgSlNUeXBlPihzdGF0ZSwgdmFsdWUsICpyZXN1
bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RpY3Rpb25hcnkuY3BwCmluZGV4IDIwNzFkNjhjYzE2NDZlZWY4MGU1YmI5NTdjOTQxNDRh
YjU1ZWUxN2EuLjhlZWYyMTJhOTgxODVlOTkwNmIxZjJjNDY4YjdiYzA4ZjA2ZGQzNTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcApAQCAtMzAsOSArMzAs
MTEgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAj
aW5jbHVkZSAiSlNDU1NGb250RmFjZVJ1bGUuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIK
ICNpbmNsdWRlICJKU0RPTUVycm9yLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNs
dWRlICJKU0V2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiSlNNZXNzYWdlUG9ydC5oIgogI2luY2x1
ZGUgIkpTTWVzc2FnZVBvcnRDdXN0b20uaCIKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRl
ICJKU1N0b3JhZ2UuaCIKQEAgLTIxNCw2ICsyMTYsMTEgQEAgdm9pZCBKU0RpY3Rpb25hcnk6OmNv
bnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIE1lc3NhZ2VQb3J0QXJy
YXkKICAgICBmaWxsTWVzc2FnZVBvcnRBcnJheSgqZXhlYywgdmFsdWUsIHJlc3VsdCwgYXJyYXlC
dWZmZXJzKTsKIH0KIAordm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBv
cnRBcnJheT4mIHJlc3VsdCkKK3sKKyAgICByZXN1bHQgPSB0b051bGxhYmxlUmVmUHRyTmF0aXZl
QXJyYXk8TWVzc2FnZVBvcnQsIEpTTWVzc2FnZVBvcnQsIE1lc3NhZ2VQb3J0QXJyYXk+KCpleGVj
LCB2YWx1ZSk7Cit9CisKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiB2b2lkIEpTRGljdGlvbmFy
eTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdmFsdWUsIFJlZlB0cjxUcmFja0Jh
c2U+JiByZXN1bHQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5o
CmluZGV4IGJkMmZmZjg4MjczMTNjMTU3ZDhlMTFiNzNkZTY1ZTkzZGEwNjg0NDcuLjVmZGE1NGEz
NTc4MWVkNDc0ZjRiMWI3MzAzNzhkZjE4YTM0MzY0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRGljdGlvbmFyeS5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgogICAgIGJvb2wgdHJ5R2V0UHJvcGVydHkoY29uc3QgY2hh
ciogcHJvcGVydHlOYW1lLCBSZXN1bHQmKSBjb25zdDsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgUmVzdWx0PgotICAgIGJvb2wgdHJ5R2V0UHJvcGVydHkoY29uc3QgY2hhciog
cHJvcGVydHlOYW1lLCBUKiBjb250ZXh0LCB2b2lkICgqc2V0dGVyKShUKiBjb250ZXh0LCBjb25z
dCBSZXN1bHQmKSkgY29uc3Q7CisgICAgYm9vbCB0cnlHZXRQcm9wZXJ0eShjb25zdCBjaGFyKiBw
cm9wZXJ0eU5hbWUsIFQqIGNvbnRleHQsIHZvaWQgKCpzZXR0ZXIpKFQqIGNvbnRleHQsIFJlc3Vs
dCYmKSkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3BlcnR5IHdhcyBm
b3VuZCBpbiB0aGUgZGljdGlvbmFyeSwgYW5kIHRoZSB2YWx1ZSBjb3VsZCBiZSBjb252ZXJ0ZWQg
dG8gdGhlIGRlc2lyZWQgdHlwZS4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgpAQCAt
ODksOSArODksOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBS
ZXN1bHQ+CiAgICAgc3RydWN0IElkZW50aXR5U2V0dGVyIHsKLSAgICAgICAgc3RhdGljIHZvaWQg
aWRlbnRpdHlTZXR0ZXIoUmVzdWx0KiBjb250ZXh0LCBjb25zdCBSZXN1bHQmIHJlc3VsdCkKKyAg
ICAgICAgc3RhdGljIHZvaWQgaWRlbnRpdHlTZXR0ZXIoUmVzdWx0KiBjb250ZXh0LCBSZXN1bHQm
JiByZXN1bHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgICpjb250ZXh0ID0gcmVzdWx0OworICAg
ICAgICAgICAgKmNvbnRleHQgPSBXVEZNb3ZlKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9Owog
CkBAIC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIAogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBSZXN1bHQ+Ci0gICAgR2V0UHJvcGVydHlSZXN1bHQgdHJ5
R2V0UHJvcGVydHlBbmRSZXN1bHQoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBUKiBjb250ZXh0
LCB2b2lkICgqc2V0dGVyKShUKiBjb250ZXh0LCBjb25zdCBSZXN1bHQmKSkgY29uc3Q7CisgICAg
R2V0UHJvcGVydHlSZXN1bHQgdHJ5R2V0UHJvcGVydHlBbmRSZXN1bHQoY29uc3QgY2hhciogcHJv
cGVydHlOYW1lLCBUKiBjb250ZXh0LCB2b2lkICgqc2V0dGVyKShUKiBjb250ZXh0LCBSZXN1bHQm
JikpIGNvbnN0OwogICAgIEdldFByb3BlcnR5UmVzdWx0IHRyeUdldFByb3BlcnR5KGNvbnN0IGNo
YXIqIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlJikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KQEAgLTEzNyw2ICsxMzcsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lk
IGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgUmVmUHRyPE5vZGU+
JiByZXN1bHQpOwogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNWYWx1ZSwgUmVmUHRyPFN0b3JhZ2U+JiByZXN1bHQpOwogICAgIHN0YXRpYyB2b2lk
IGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgTWVzc2FnZVBvcnRB
cnJheSYgcmVzdWx0KTsKKyAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTVmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiYgcmVz
dWx0KTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgc3RhdGljIHZvaWQgY29udmVydFZh
bHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBSZWZQdHI8VHJhY2tCYXNlPiYgcmVz
dWx0KTsKICNlbmRpZgpAQCAtMTc3LDcgKzE3OCw3IEBAIHByaXZhdGU6CiB9OwogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUmVzdWx0PgotYm9vbCBKU0RpY3Rpb25hcnk6OnRyeUdl
dFByb3BlcnR5KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgVCogY29udGV4dCwgdm9pZCAoKnNl
dHRlcikoVCogY29udGV4dCwgY29uc3QgUmVzdWx0JikpIGNvbnN0Citib29sIEpTRGljdGlvbmFy
eTo6dHJ5R2V0UHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBUKiBjb250ZXh0LCB2
b2lkICgqc2V0dGVyKShUKiBjb250ZXh0LCBSZXN1bHQmJikpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHRyeUdldFByb3BlcnR5QW5kUmVzdWx0KHByb3BlcnR5TmFtZSwgY29udGV4dCwgc2V0dGVyKSAh
PSBFeGNlcHRpb25UaHJvd247CiB9CkBAIC0yMDEsNyArMjAyLDcgQEAgaW5saW5lIGJvb2wgSlNE
aWN0aW9uYXJ5OjpnZXQoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUmIGZp
bmFsUmVzdWwKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFJlc3VsdD4KLUpT
RGljdGlvbmFyeTo6R2V0UHJvcGVydHlSZXN1bHQgSlNEaWN0aW9uYXJ5Ojp0cnlHZXRQcm9wZXJ0
eUFuZFJlc3VsdChjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIFQqIGNvbnRleHQsIHZvaWQgKCpz
ZXR0ZXIpKFQqIGNvbnRleHQsIGNvbnN0IFJlc3VsdCYpKSBjb25zdAorSlNEaWN0aW9uYXJ5OjpH
ZXRQcm9wZXJ0eVJlc3VsdCBKU0RpY3Rpb25hcnk6OnRyeUdldFByb3BlcnR5QW5kUmVzdWx0KGNv
bnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgVCogY29udGV4dCwgdm9pZCAoKnNldHRlcikoVCogY29u
dGV4dCwgUmVzdWx0JiYpKSBjb25zdAogewogICAgIEpTQzo6Vk0mIHZtID0gbV9leGVjLT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTIxNyw3ICsy
MTgsNyBAQCBKU0RpY3Rpb25hcnk6OkdldFByb3BlcnR5UmVzdWx0IEpTRGljdGlvbmFyeTo6dHJ5
R2V0UHJvcGVydHlBbmRSZXN1bHQoY29uc3QgY2hhcgogCiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEV4Y2VwdGlvblRocm93bik7CiAKLSAgICAgICAgc2V0dGVyKGNvbnRleHQs
IHJlc3VsdCk7CisgICAgICAgIHNldHRlcihjb250ZXh0LCBXVEZNb3ZlKHJlc3VsdCkpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBOb1Byb3BlcnR5Rm91bmQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCmluZGV4IDMw
MWY1ZWNiYjhlYTM4OGE5NWYzYWUyM2I4MGJlNzgxYmZlMDM4NjAuLmExOTk5YzUzZTBmM2Q0NTYz
ZjZiN2M3NTI2NWRmMmIxZDM1OTEzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCkBAIC00MywxMiArNDMsMTIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAvLyBKU0RpY3Rpb25hcnkgaGVscGVyIGZ1bmN0aW9ucwogCi1zdGF0
aWMgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koUG9zaXRpb25PcHRpb25zKiBvcHRpb25zLCBj
b25zdCBib29sJiBlbmFibGVIaWdoQWNjdXJhY3kpCitzdGF0aWMgdm9pZCBzZXRFbmFibGVIaWdo
QWNjdXJhY3koUG9zaXRpb25PcHRpb25zKiBvcHRpb25zLCBib29sJiYgZW5hYmxlSGlnaEFjY3Vy
YWN5KQogewogICAgIG9wdGlvbnMtPnNldEVuYWJsZUhpZ2hBY2N1cmFjeShlbmFibGVIaWdoQWNj
dXJhY3kpOwogfQogCi1zdGF0aWMgdm9pZCBzZXRUaW1lb3V0KFBvc2l0aW9uT3B0aW9ucyogb3B0
aW9ucywgY29uc3QgZG91YmxlJiB0aW1lb3V0KQorc3RhdGljIHZvaWQgc2V0VGltZW91dChQb3Np
dGlvbk9wdGlvbnMqIG9wdGlvbnMsIGRvdWJsZSYmIHRpbWVvdXQpCiB7CiAgICAgLy8gSWYgdGhl
IHZhbHVlIGlzIHBvc2l0aXZlIGluZmluaXR5LCB0aGVyZSdzIG5vdGhpbmcgdG8gZG8uCiAgICAg
aWYgKCEoc3RkOjppc2luZih0aW1lb3V0KSAmJiAodGltZW91dCA+IDApKSkgewpAQCAtNTcsNyAr
NTcsNyBAQCBzdGF0aWMgdm9pZCBzZXRUaW1lb3V0KFBvc2l0aW9uT3B0aW9ucyogb3B0aW9ucywg
Y29uc3QgZG91YmxlJiB0aW1lb3V0KQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgc2V0TWF4aW11
bUFnZShQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMsIGNvbnN0IGRvdWJsZSYgbWF4aW11bUFnZSkK
K3N0YXRpYyB2b2lkIHNldE1heGltdW1BZ2UoUG9zaXRpb25PcHRpb25zKiBvcHRpb25zLCBkb3Vi
bGUmJiBtYXhpbXVtQWdlKQogewogICAgIGlmIChzdGQ6OmlzaW5mKG1heGltdW1BZ2UpICYmICht
YXhpbXVtQWdlID4gMCkpIHsKICAgICAgICAgLy8gSWYgdGhlIHZhbHVlIGlzIHBvc2l0aXZlIGlu
ZmluaXR5LCBjbGVhciBtYXhpbXVtQWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCmluZGV4IDg1NmQ3Njk4ZTJlZmM1NWY3YjI5
M2JmZThiMjhkZWY2YzNmYmIzMmYuLjk3YWEwZTcwODE5NDBmMzYyNTA3ZjRlZTBmMTU4ZmEwZDEw
NzYyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2
ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VF
dmVudEN1c3RvbS5jcHAKQEAgLTc3LDkgKzc3LDggQEAgSlNWYWx1ZSBKU01lc3NhZ2VFdmVudDo6
ZGF0YShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiAgICAgY2FzZSBNZXNzYWdlRXZlbnQ6OkRh
dGFUeXBlU2VyaWFsaXplZFNjcmlwdFZhbHVlOgogICAgICAgICBpZiAoUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gZXZlbnQuZGF0YUFzU2VyaWFsaXplZFNj
cmlwdFZhbHVlKCkpIHsKLSAgICAgICAgICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHMgPSB3cmFw
cGVkKCkucG9ydHMoKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXaHkgZG9lcyB0aGlzIHN1cHBy
ZXNzIGV4Y2VwdGlvbnM/Ci0gICAgICAgICAgICByZXN1bHQgPSBzZXJpYWxpemVkVmFsdWUtPmRl
c2VyaWFsaXplKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksICZwb3J0cywgTm9uVGhyb3dpbmcpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gc2VyaWFsaXplZFZhbHVlLT5kZXNlcmlhbGl6ZSgmc3RhdGUs
IGdsb2JhbE9iamVjdCgpLCB3cmFwcGVkKCkucG9ydHMoKSwgTm9uVGhyb3dpbmcpOwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIHJlc3VsdCA9IGpzTnVsbCgpOwogICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KaW5kZXggM2Y3OGUyMDdiOTgyZDA0MWNlM2Y4ZjU3OTUxZTBhNzE5NDk4NDQ0Ni4uMTdjOTUx
N2RmNzdmOWNiOGY0OGUzZTk5N2RkMzAxMmJiNjBlYTZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTU0MzksNyArNTQz
OSw3IEBAIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVj
dG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0KEV4ZWNTCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIFJlZjwke2ludGVyZmFjZU5h
bWV9PiBldmVudCA9ICR7aW50ZXJmYWNlTmFtZX06OmNyZWF0ZUZvckJpbmRpbmdzKGV2ZW50VHlw
ZSwgZXZlbnRJbml0KTsKKyAgICBSZWY8JHtpbnRlcmZhY2VOYW1lfT4gZXZlbnQgPSAke2ludGVy
ZmFjZU5hbWV9OjpjcmVhdGVGb3JCaW5kaW5ncyhldmVudFR5cGUsIFdURk1vdmUoZXZlbnRJbml0
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjcmVhdGVXcmFwcGVyPCR7aW50ZXJmYWNl
TmFtZX0+KGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKGV2ZW50KSkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggM2E0NWMyODg2MjVm
ZjNkMzcyYjg4NWVmMWE0NDFhNzVmZTMzNGZmOC4uYmYyOGU4MTAyODNjZWIzYzZmOGNjYjI3ZGQw
NTM3NTAxNjllYzA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAt
MTAzLDcgKzEwMyw3IEBAIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmNvbnN0CiAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIFJlZjxUZXN0
RXZlbnRDb25zdHJ1Y3Rvcj4gZXZlbnQgPSBUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlRm9y
QmluZGluZ3MoZXZlbnRUeXBlLCBldmVudEluaXQpOworICAgIFJlZjxUZXN0RXZlbnRDb25zdHJ1
Y3Rvcj4gZXZlbnQgPSBUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlRm9yQmluZGluZ3MoZXZl
bnRUeXBlLCBXVEZNb3ZlKGV2ZW50SW5pdCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y3JlYXRlV3JhcHBlcjxUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4oanNDb25zdHJ1Y3Rvci0+Z2xvYmFs
T2JqZWN0KCksIFdURk1vdmUoZXZlbnQpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVu
dC5jcHAKaW5kZXggYTNmZThkZGZjMzc3MjVlODhjNmI3M2U4ODFhZTg3NmNmYTg4OTlmZC4uZWMz
NWNkNDdjOTUzNjdhNGMxMWUzZDY2N2U5NzIxMWZlYjFjNzJiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VFdmVudC5jcHAKQEAgLTQ1LDE0ICs0NSwxNCBAQCBpbmxpbmUgTWVzc2FnZUV2ZW50OjpN
ZXNzYWdlRXZlbnQoKQogewogfQogCi1pbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZXNzYWdlRXZlbnRJbml0JiBpbml0aWFs
aXplcikKK2lubGluZSBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIE1lc3NhZ2VFdmVudEluaXQmJiBpbml0aWFsaXplcikKICAgICA6IEV2ZW50KHR5
cGUsIGluaXRpYWxpemVyKQogICAgICwgbV9kYXRhVHlwZShEYXRhVHlwZVNjcmlwdFZhbHVlKQog
ICAgICwgbV9kYXRhQXNTY3JpcHRWYWx1ZShpbml0aWFsaXplci5kYXRhKQogICAgICwgbV9vcmln
aW4oaW5pdGlhbGl6ZXIub3JpZ2luKQogICAgICwgbV9sYXN0RXZlbnRJZChpbml0aWFsaXplci5s
YXN0RXZlbnRJZCkKICAgICAsIG1fc291cmNlKGlzVmFsaWRTb3VyY2UoaW5pdGlhbGl6ZXIuc291
cmNlLmdldCgpKSA/IGluaXRpYWxpemVyLnNvdXJjZSA6IG51bGxwdHIpCi0gICAgLCBtX3BvcnRz
KHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZVBvcnRBcnJheT4oaW5pdGlhbGl6ZXIucG9ydHMpKQor
ICAgICwgbV9wb3J0cyhXVEZNb3ZlKGluaXRpYWxpemVyLnBvcnRzKSkKIHsKIH0KIApAQCAtMTMx
LDkgKzEzMSw5IEBAIFJlZjxNZXNzYWdlRXZlbnQ+IE1lc3NhZ2VFdmVudDo6Y3JlYXRlRm9yQmlu
ZGluZ3MoKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudCk7CiB9CiAKLVJl
ZjxNZXNzYWdlRXZlbnQ+IE1lc3NhZ2VFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZXNzYWdlRXZlbnRJbml0JiBpbml0aWFsaXplcikKK1Jl
ZjxNZXNzYWdlRXZlbnQ+IE1lc3NhZ2VFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBNZXNzYWdlRXZlbnRJbml0JiYgaW5pdGlhbGl6ZXIpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50KHR5cGUsIGluaXRpYWxpemVyKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50KHR5cGUsIFdURk1vdmUoaW5pdGlh
bGl6ZXIpKSk7CiB9CiAKIE1lc3NhZ2VFdmVudDo6fk1lc3NhZ2VFdmVudCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmgKaW5kZXggYmZjNjgwMjVhNGI0ZWQyZTljMmE4NTc5ZGViNTVhMmQ3NjRk
NTE2Yi4uZGRkMDVmNzIyN2I3MjQ5YzkxNDFiNWRiNjQyZmQzODA1N2U5MzE0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgTWVzc2FnZUV2ZW50
SW5pdCA6IHB1YmxpYyBFdmVudEluaXQgewogICAgIFN0cmluZyBvcmlnaW47CiAgICAgU3RyaW5n
IGxhc3RFdmVudElkOwogICAgIFJlZlB0cjxFdmVudFRhcmdldD4gc291cmNlOwotICAgIE1lc3Nh
Z2VQb3J0QXJyYXkgcG9ydHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0QXJyYXk+
IHBvcnRzOwogfTsKIAogY2xhc3MgTWVzc2FnZUV2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsK
QEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBj
cmVhdGUoUmVmPEJsb2I+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOwogICAgIHN0YXRp
YyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIGRhdGEsIGNvbnN0
IFN0cmluZyYgb3JpZ2luID0geyB9KTsKICAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3Jl
YXRlRm9yQmluZGluZ3MoKTsKLSAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlRm9y
QmluZGluZ3MoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBNZXNzYWdlRXZlbnRJbml0
Jik7CisgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgTWVzc2FnZUV2ZW50SW5pdCYmKTsKICAgICB2aXJ0dWFsIH5N
ZXNzYWdlRXZlbnQoKTsKIAogICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNz
YWdlUG9ydEFycmF5Pik7CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJp
bmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgY29uc3QgU3RyaW5n
JiBsYXN0RXZlbnRJZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEV2ZW50SWQ7IH0KICAgICBFdmVu
dFRhcmdldCogc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KLSAgICBN
ZXNzYWdlUG9ydEFycmF5IHBvcnRzKCkgY29uc3QgeyByZXR1cm4gbV9wb3J0cyA/ICptX3BvcnRz
IDogTWVzc2FnZVBvcnRBcnJheSgpOyB9CisgICAgTWVzc2FnZVBvcnRBcnJheSogcG9ydHMoKSBj
b25zdCB7IHJldHVybiBtX3BvcnRzLmdldCgpOyB9CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRo
aXMgd2hlbiB3ZSBoYXZlIGN1c3RvbSBPYmpDIGJpbmRpbmcgc3VwcG9ydC4KICAgICBTZXJpYWxp
emVkU2NyaXB0VmFsdWUqIGRhdGEoKSBjb25zdDsKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgog
ICAgIAogcHJpdmF0ZToKICAgICBNZXNzYWdlRXZlbnQoKTsKLSAgICBNZXNzYWdlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiwgY29uc3QgTWVzc2FnZUV2ZW50SW5pdCYpOworICAgIE1lc3NhZ2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBNZXNzYWdlRXZlbnRJbml0JiYpOwogICAgIE1lc3Nh
Z2VFdmVudChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBFdmVudFRhcmdldCogc291cmNl
LCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRBcnJheT4pOwogICAgIE1lc3NhZ2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQpOwog
ICAgIE1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsIGIvU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwKaW5kZXggNGI2ZTUwM2Q4YjM5Zjk5NjEx
ODJhNzc5NTVhMjk2NGMxYzE1ZDU1Yy4uMmUyY2YzYzI2M2NlZTIwNjEzZTQ3NmVmODNlNmQwZDVk
NjljYTcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwKQEAgLTM0LDcgKzM0LDcg
QEAKICAgICBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3JdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBFdmVudFRhcmdldCBzb3VyY2U7IC8vIE1heSBiZSBhIERPTVdpbmRvdyBvciBhIE1lc3NhZ2VQ
b3J0LgogCiAgICAgW0luaXRpYWxpemVkQnlFdmVudENvbnN0cnVjdG9yLCBDYWNoZWRBdHRyaWJ1
dGUsIEN1c3RvbUdldHRlcl0gcmVhZG9ubHkgYXR0cmlidXRlIGFueSBkYXRhOwotICAgIFtJbml0
aWFsaXplZEJ5RXZlbnRDb25zdHJ1Y3Rvcl0gcmVhZG9ubHkgYXR0cmlidXRlIHNlcXVlbmNlPE1l
c3NhZ2VQb3J0PiBwb3J0czsKKyAgICBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3JdIHJl
YWRvbmx5IGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxNZXNzYWdlUG9ydD4/IHBvcnRzOwogCiAgICAg
W0N1c3RvbV0gdm9pZCBpbml0TWVzc2FnZUV2ZW50KG9wdGlvbmFsIERPTVN0cmluZyB0eXBlQXJn
LCBvcHRpb25hbCBib29sZWFuIGNhbkJ1YmJsZUFyZywgb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxh
YmxlQXJnLAogICAgICAgICBvcHRpb25hbCBhbnkgZGF0YUFyZywgb3B0aW9uYWwgVVNWU3RyaW5n
IG9yaWdpbkFyZywgb3B0aW9uYWwgRE9NU3RyaW5nIGxhc3RFdmVudElkQXJnLCBvcHRpb25hbCBE
T01XaW5kb3cgc291cmNlQXJnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggNzlh
ODBlZDM0MDk4Y2Y3OGRkZDk2NGMyYWNjN2NiNmRjZTc0NDY2Mi4uYzQ5YTQzMzNjNmY2NmVjY2Qx
NDAwYjc1MzRhNjk0NjlhYzM2MzlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBA
IC0xNzYsNyArMTc2LDcgQEAgTWVzc2FnZVBvcnQqIE1lc3NhZ2VQb3J0Ojpsb2NhbGx5RW50YW5n
bGVkUG9ydCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gTWVz
c2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMoY29uc3QgTWVzc2FnZVBvcnRBcnJheSogcG9ydHMs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghcG9ydHMgfHwgIXBvcnRzLT5zaXplKCkp
CisgICAgaWYgKCFwb3J0cykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBIYXNo
U2V0IHVzZWQgdG8gZWZmaWNpZW50bHkgY2hlY2sgZm9yIGR1cGxpY2F0ZXMgaW4gdGhlIHBhc3Nl
ZC1pbiBhcnJheS4KQEAgLTIwMiw3ICsyMDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBv
cnRDaGFubmVsQXJyYXk+IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKGNvbnN0IE1lcwog
CiBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRBcnJheT4gTWVzc2FnZVBvcnQ6OmVudGFuZ2xl
UG9ydHMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPE1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKIHsKLSAgICBpZiAoIWNoYW5uZWxzIHx8
ICFjaGFubmVscy0+c2l6ZSgpKQorICAgIGlmICghY2hhbm5lbHMpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgYXV0byBwb3J0QXJyYXkgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VQ
b3J0QXJyYXk+KGNoYW5uZWxzLT5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDYyOGU4OThlYzExNjk0ZDE4Njg3
YmE0YjA4ZDc3MWE0NzBlMjdlYjAuLmQzYTc5MDk3NWNiNTA5NzQyYTMzN2EwM2M3Y2YzOGEyNGIw
MDRhYTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNyBAQAogMjAxNi0xMC0wOSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIE1lc3NhZ2VFdmVudC5wb3J0cyBzaG91bGQgYmUg
bnVsbGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MzE4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSBleGlzdGluZyB0ZXN0IHRvIHJlZmxlY3QgYmVoYXZpb3IgY2hhbmdlLgorCisgICAg
ICAgICogZmFzdC9ldmVudHMvY29uc3RydWN0b3JzL21lc3NhZ2UtZXZlbnQtY29uc3RydWN0b3It
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9tZXNzYWdl
LWV2ZW50LWNvbnN0cnVjdG9yLmh0bWw6CisKKzIwMTYtMTAtMDkgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBVcGRhdGUgS2V5Ym9hcmRFdmVudCB0byBzdG9wIHVz
aW5nIGxlZ2FjeSBbQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudF0KICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzE3NgogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvbWVzc2FnZS1ldmVudC1jb25zdHJ1Y3Rv
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvbWVz
c2FnZS1ldmVudC1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKaW5kZXggOTdkNDEwMjc2ODIzMGIw
ZWE5OGZlYzllMWFlZDdkNTQwYmU3ZTQ0YS4uM2QzMTRiYzM2NmQ2NTYxOTJlYjIwODdmOWM3M2Yz
ZDM5OTFjMjEzYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvY29uc3RydWN0
b3JzL21lc3NhZ2UtZXZlbnQtY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9tZXNzYWdlLWV2ZW50LWNvbnN0cnVjdG9yLWV4
cGVjdGVkLnR4dApAQCAtOSw3ICs5LDcgQEAgUEFTUyBuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5
cGUnKS5kYXRhIGlzIG51bGwKIFBBU1MgbmV3IE1lc3NhZ2VFdmVudCgnZXZlbnRUeXBlJykub3Jp
Z2luIGlzICIiCiBQQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScpLmxhc3RFdmVudElk
IGlzICIiCiBQQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScpLnNvdXJjZSBpcyBudWxs
Ci1QQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScpLnBvcnRzIGlzIFtdCitQQVNTIG5l
dyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScpLnBvcnRzIGlzIG51bGwKIFBBU1MgbmV3IE1lc3Nh
Z2VFdmVudCgnZXZlbnRUeXBlJywgeyBidWJibGVzOiBmYWxzZSB9KS5idWJibGVzIGlzIGZhbHNl
CiBQQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScsIHsgYnViYmxlczogdHJ1ZSB9KS5i
dWJibGVzIGlzIHRydWUKIFBBU1MgbmV3IE1lc3NhZ2VFdmVudCgnZXZlbnRUeXBlJywgeyBjYW5j
ZWxhYmxlOiBmYWxzZSB9KS5jYW5jZWxhYmxlIGlzIGZhbHNlCkBAIC04MCwxMSArODAsMTEgQEAg
UEFTUyBuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IHBvcnRzOiBbY2hhbm5lbC5wb3J0
MSwgY2hhbm5lbC5wb3J0MiwgY2hhbm4KIFBBU1MgbmV3IE1lc3NhZ2VFdmVudCgnZXZlbnRUeXBl
JywgeyBwb3J0czogW2NoYW5uZWwucG9ydDEsIGNoYW5uZWwucG9ydDIsIGNoYW5uZWwyLnBvcnQx
XSB9KS5wb3J0c1sxXSBpcyBjaGFubmVsLnBvcnQyCiBQQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2
ZW50VHlwZScsIHsgcG9ydHM6IFtjaGFubmVsLnBvcnQxLCBjaGFubmVsLnBvcnQyLCBjaGFubmVs
Mi5wb3J0MV0gfSkucG9ydHNbMl0gaXMgY2hhbm5lbDIucG9ydDEKIFBBU1MgbmV3IE1lc3NhZ2VF
dmVudCgnZXZlbnRUeXBlJywgeyBwb3J0czogW10gfSkucG9ydHMgaXMgW10KLVBBU1MgbmV3IE1l
c3NhZ2VFdmVudCgnZXZlbnRUeXBlJywgeyBwb3J0czogdW5kZWZpbmVkIH0pLnBvcnRzIGlzIFtd
Ci1QQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScsIHsgcG9ydHM6IG51bGwgfSkucG9y
dHMgaXMgW10KLVBBU1MgbmV3IE1lc3NhZ2VFdmVudCgnZXZlbnRUeXBlJywgeyBwb3J0czogWzEs
IDIsIDNdIH0pLnBvcnRzWzJdIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3Iu
Ci1QQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScsIHsgcG9ydHM6IHRlc3Rfb2JqZWN0
IH0pLnBvcnRzIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBhIHNlcXVl
bmNlLgotUEFTUyBuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IHBvcnRzOiBkb2N1bWVu
dCB9KS5wb3J0cyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1
ZW5jZS4KK1BBU1MgbmV3IE1lc3NhZ2VFdmVudCgnZXZlbnRUeXBlJywgeyBwb3J0czogdW5kZWZp
bmVkIH0pLnBvcnRzIGlzIG51bGwKK1BBU1MgbmV3IE1lc3NhZ2VFdmVudCgnZXZlbnRUeXBlJywg
eyBwb3J0czogbnVsbCB9KS5wb3J0cyBpcyBudWxsCitQQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2
ZW50VHlwZScsIHsgcG9ydHM6IFsxLCAyLCAzXSB9KS5wb3J0c1syXSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBJbnZhbGlkIEFycmF5IGVsZW1lbnQgdHlwZS4KK1BBU1MgbmV3IE1lc3NhZ2VF
dmVudCgnZXZlbnRUeXBlJywgeyBwb3J0czogdGVzdF9vYmplY3QgfSkucG9ydHMgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgbmV3IE1lc3NhZ2VFdmVudCgnZXZl
bnRUeXBlJywgeyBwb3J0czogZG9jdW1lbnQgfSkucG9ydHMgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4KIFBBU1MgbmV3IE1lc3NhZ2VFdmVudCgnZXZlbnRUeXBlJywgeyBw
b3J0czogZmFsc2UgfSkucG9ydHMgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUgaXMg
bm90IGEgc2VxdWVuY2UuCiBQQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScsIHsgcG9y
dHM6IHRydWUgfSkucG9ydHMgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUgaXMgbm90
IGEgc2VxdWVuY2UuCiBQQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScsIHsgcG9ydHM6
ICcnIH0pLnBvcnRzIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFZhbHVlIGlzIG5vdCBhIHNl
cXVlbmNlLgpAQCAtOTQsNyArOTQsNyBAQCBQQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlw
ZScsIHsgcG9ydHM6IDE4NDQ2NzQ0MDczNzA5NTUxNjE1IH0pLnBvcnRzIHRocmV3CiBQQVNTIG5l
dyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScsIHsgcG9ydHM6IE5hTiB9KS5wb3J0cyB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZS4KIFBBU1MgbmV3IE1l
c3NhZ2VFdmVudCgnZXZlbnRUeXBlJywgeyBnZXQgcG9ydHMoKSB7IHJldHVybiAxMjM7IH0gfSku
cG9ydHMgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVmFsdWUgaXMgbm90IGEgc2VxdWVuY2Uu
CiBQQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScsIHsgZ2V0IHBvcnRzKCkgeyB0aHJv
dyAnTWVzc2FnZUV2ZW50IEVycm9yJzsgfSB9KSB0aHJldyBleGNlcHRpb24gTWVzc2FnZUV2ZW50
IEVycm9yLgotUEFTUyBuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IHBvcnRzOiB7dmFs
dWVPZjogZnVuY3Rpb24gKCkgeyByZXR1cm4gW2NoYW5uZWwucG9ydDEsIGNoYW5uZWwucG9ydDIs
IGNoYW5uZWwucG9ydDJdOyB9IH0gfSkucG9ydHNbMF0gdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UuCitQQVNTIG5ldyBNZXNzYWdlRXZlbnQoJ2V2ZW50
VHlwZScsIHsgcG9ydHM6IHt2YWx1ZU9mOiBmdW5jdGlvbiAoKSB7IHJldHVybiBbY2hhbm5lbC5w
b3J0MSwgY2hhbm5lbC5wb3J0MiwgY2hhbm5lbC5wb3J0Ml07IH0gfSB9KS5wb3J0c1swXSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyBuZXcgTWVzc2FnZUV2ZW50
KCdldmVudFR5cGUnLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUsIGRhdGE6IHRl
c3Rfb2JqZWN0LCBvcmlnaW46ICd3b25kZXJmdWwnLCBsYXN0RXZlbnRJZDogJ2V4Y2VsbGVudCcs
IHNvdXJjZTogd2luZG93LCBwb3J0czogW2NoYW5uZWwucG9ydDEsIGNoYW5uZWwucG9ydDIsIGNo
YW5uZWwyLnBvcnQxXSB9KS5idWJibGVzIGlzIHRydWUKIFBBU1MgbmV3IE1lc3NhZ2VFdmVudCgn
ZXZlbnRUeXBlJywgeyBidWJibGVzOiB0cnVlLCBjYW5jZWxhYmxlOiB0cnVlLCBkYXRhOiB0ZXN0
X29iamVjdCwgb3JpZ2luOiAnd29uZGVyZnVsJywgbGFzdEV2ZW50SWQ6ICdleGNlbGxlbnQnLCBz
b3VyY2U6IHdpbmRvdywgcG9ydHM6IFtjaGFubmVsLnBvcnQxLCBjaGFubmVsLnBvcnQyLCBjaGFu
bmVsMi5wb3J0MV0gfSkuY2FuY2VsYWJsZSBpcyB0cnVlCiBQQVNTIG5ldyBNZXNzYWdlRXZlbnQo
J2V2ZW50VHlwZScsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSwgZGF0YTogdGVz
dF9vYmplY3QsIG9yaWdpbjogJ3dvbmRlcmZ1bCcsIGxhc3RFdmVudElkOiAnZXhjZWxsZW50Jywg
c291cmNlOiB3aW5kb3csIHBvcnRzOiBbY2hhbm5lbC5wb3J0MSwgY2hhbm5lbC5wb3J0MiwgY2hh
bm5lbDIucG9ydDFdIH0pLmRhdGEgaXMgdGVzdF9vYmplY3QKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9tZXNzYWdlLWV2ZW50LWNvbnN0cnVjdG9yLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvbWVzc2FnZS1ldmVudC1j
b25zdHJ1Y3Rvci5odG1sCmluZGV4IDZkNDEyN2E1ZDZjNzIxMTQxMTJlZDExMTYzM2M5ZTRlOGNm
MzBkZWEuLjQ2ZDE4N2QwZDlmMTk3MmNlMWU5YTBlYzkyYTM1NjY5YjE0YTczMDQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9tZXNzYWdlLWV2ZW50LWNv
bnN0cnVjdG9yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvY29uc3RydWN0b3Jz
L21lc3NhZ2UtZXZlbnQtY29uc3RydWN0b3IuaHRtbApAQCAtMTcsNyArMTcsNyBAQCBzaG91bGRC
ZSgibmV3IE1lc3NhZ2VFdmVudCgnZXZlbnRUeXBlJykuZGF0YSIsICJudWxsIik7CiBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoIm5ldyBNZXNzYWdlRXZlbnQoJ2V2ZW50VHlwZScpLm9yaWdpbiIsICIi
KTsKIHNob3VsZEJlRXF1YWxUb1N0cmluZygibmV3IE1lc3NhZ2VFdmVudCgnZXZlbnRUeXBlJyku
bGFzdEV2ZW50SWQiLCAiIik7CiBzaG91bGRCZSgibmV3IE1lc3NhZ2VFdmVudCgnZXZlbnRUeXBl
Jykuc291cmNlIiwgIm51bGwiKTsKLXNob3VsZEJlKCJuZXcgTWVzc2FnZUV2ZW50KCdldmVudFR5
cGUnKS5wb3J0cyIsICJbXSIpOworc2hvdWxkQmVOdWxsKCJuZXcgTWVzc2FnZUV2ZW50KCdldmVu
dFR5cGUnKS5wb3J0cyIpOwogCiAvLyBidWJibGVzIGlzIHBhc3NlZC4KIHNob3VsZEJlKCJuZXcg
TWVzc2FnZUV2ZW50KCdldmVudFR5cGUnLCB7IGJ1YmJsZXM6IGZhbHNlIH0pLmJ1YmJsZXMiLCAi
ZmFsc2UiKTsKQEAgLTEwMCw4ICsxMDAsOCBAQCBzaG91bGRCZSgibmV3IE1lc3NhZ2VFdmVudCgn
ZXZlbnRUeXBlJywgeyBwb3J0czogW2NoYW5uZWwucG9ydDEsIGNoYW5uZWwucG9ydDIsCiBzaG91
bGRCZSgibmV3IE1lc3NhZ2VFdmVudCgnZXZlbnRUeXBlJywgeyBwb3J0czogW2NoYW5uZWwucG9y
dDEsIGNoYW5uZWwucG9ydDIsIGNoYW5uZWwyLnBvcnQxXSB9KS5wb3J0c1sxXSIsICJjaGFubmVs
LnBvcnQyIik7CiBzaG91bGRCZSgibmV3IE1lc3NhZ2VFdmVudCgnZXZlbnRUeXBlJywgeyBwb3J0
czogW2NoYW5uZWwucG9ydDEsIGNoYW5uZWwucG9ydDIsIGNoYW5uZWwyLnBvcnQxXSB9KS5wb3J0
c1syXSIsICJjaGFubmVsMi5wb3J0MSIpOwogc2hvdWxkQmUoIm5ldyBNZXNzYWdlRXZlbnQoJ2V2
ZW50VHlwZScsIHsgcG9ydHM6IFtdIH0pLnBvcnRzIiwgIltdIik7Ci1zaG91bGRCZSgibmV3IE1l
c3NhZ2VFdmVudCgnZXZlbnRUeXBlJywgeyBwb3J0czogdW5kZWZpbmVkIH0pLnBvcnRzIiwgIltd
Iik7Ci1zaG91bGRCZSgibmV3IE1lc3NhZ2VFdmVudCgnZXZlbnRUeXBlJywgeyBwb3J0czogbnVs
bCB9KS5wb3J0cyIsICJbXSIpOworc2hvdWxkQmVOdWxsKCJuZXcgTWVzc2FnZUV2ZW50KCdldmVu
dFR5cGUnLCB7IHBvcnRzOiB1bmRlZmluZWQgfSkucG9ydHMiKTsKK3Nob3VsZEJlTnVsbCgibmV3
IE1lc3NhZ2VFdmVudCgnZXZlbnRUeXBlJywgeyBwb3J0czogbnVsbCB9KS5wb3J0cyIpOwogCiAv
LyBJbnZhbGlkIG1lc3NhZ2UgcG9ydHMuCiBzaG91bGRUaHJvdygibmV3IE1lc3NhZ2VFdmVudCgn
ZXZlbnRUeXBlJywgeyBwb3J0czogWzEsIDIsIDNdIH0pLnBvcnRzWzJdIik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>