<?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>122713</bug_id>
          
          <creation_ts>2013-10-12 23:03:00 -0700</creation_ts>
          <short_desc>Get rid of the toHTMLElement helper for casting FormAssociatedElement to HTMLElement</short_desc>
          <delta_ts>2013-10-12 23:53:22 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>939194</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-12 23:03:00 -0700</bug_when>
    <thetext>Get rid of the toHTMLAttribute helper for casting FormAssociatedElement to HTMLElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939197</commentid>
    <comment_count>1</comment_count>
      <attachid>214083</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-12 23:15:14 -0700</bug_when>
    <thetext>Created attachment 214083
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939204</commentid>
    <comment_count>2</comment_count>
      <attachid>214083</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-10-12 23:37:32 -0700</bug_when>
    <thetext>Comment on attachment 214083
Patch

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

Setting cq- since there&apos;s some build breakage in here.

&gt; Source/WebCore/html/HTMLFormControlElement.h:147
&gt; +    virtual HTMLElement&amp; asHTMLElement() OVERRIDE FINAL { return *this; }
&gt; +    virtual const HTMLElement&amp; asHTMLElement() const OVERRIDE FINAL { return *this; }

Could use a tighter covariant return type for these.

&gt; Source/WebCore/html/HTMLFormElement.cpp:235
&gt; +        if (element.isFocusable() &amp;&amp; element.inDocument()) {

This check should be reversed so the virtual dispatch goes last.

&gt; Source/WebCore/html/HTMLFormElement.cpp:249
&gt; +            if (element.isFocusable() &amp;&amp; element.inDocument())

Same here.

&gt; Source/WebCore/html/HTMLImageElement.h:117
&gt; +    virtual HTMLElement&amp; asHTMLElement() OVERRIDE FINAL { return *this; }
&gt; +    virtual const HTMLElement&amp; asHTMLElement() const OVERRIDE FINAL { return *this; }

Could use a tighter covariant return type for these.

&gt; Source/WebCore/html/HTMLObjectElement.h:105
&gt; +    virtual HTMLElement&amp; asHTMLElement() OVERRIDE FINAL { return *this; }
&gt; +    virtual const HTMLElement&amp; asHTMLElement() const OVERRIDE FINAL { return *this; }

Could use a tighter covariant return type for these.

&gt; Source/WebKit/blackberry/WebKitSupport/InputHandler.cpp:973
&gt; -        Element* element = const_cast&lt;HTMLElement*&gt;(toHTMLElement(formElementList[focusElementId]));
&gt; +        Element* element = formElementList[focusElementId]-&gt;asHTMLElement();

Missing &amp; here since you&apos;re assignin to an Element*.

&gt; Source/WebKit/blackberry/WebKitSupport/InputHandler.cpp:986
&gt; -                    Element* prevElement = const_cast&lt;HTMLElement*&gt;(toHTMLElement(formElementList[previousElementId]));
&gt; +                    Element* prevElement = formElementList[previousElementId]-&gt;asHTMLElement();

Ditto.

&gt; Source/WebKit/blackberry/WebKitSupport/InputHandler.cpp:998
&gt; -                    Element* nextElement = const_cast&lt;HTMLElement*&gt;(toHTMLElement(formElementList[nextElementId]));
&gt; +                    Element* nextElement = formElementList[nextElementId]-&gt;asHTMLElement();

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939207</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-12 23:53:22 -0700</bug_when>
    <thetext>Committed r157357: &lt;http://trac.webkit.org/changeset/157357&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214083</attachid>
            <date>2013-10-12 23:15:14 -0700</date>
            <delta_ts>2013-10-12 23:37:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122713-20131012231514.patch</filename>
            <type>text/plain</type>
            <size>39559</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTdmMDZhOTkyN2I1NjE4
YmJmMDNlNGI1MDI1NGRkMGZiN2JkM2QwZi4uYjhjYWIwNDdhZTE0ODk4ZWJmMmRjMWYyNWI0MDJj
MWUwMDZkMTY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDcyIEBACiAyMDEzLTEwLTEyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAorICAgICAgICBHZXQgcmlkIG9mIHRoZSB0b0hU
TUxFbGVtZW50IGhlbHBlciBmb3IgY2FzdGluZyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQgdG8gSFRN
TEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMjcxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNpbmNlIHdlIGFyZSB1c2luZyB0aGUgZnVuY3Rpb24gbmFtZSB0b0hUTUxFbGVtZW50IGZvciBj
YXN0aW5nIHRvIGFuIEhUTUxFbGVtZW50CisgICAgICAgIGZyb20gYSBOb2RlIG9yIEVsZW1lbnQs
IGl0J3MgYXdrd2FyZCB0byBhbHNvIHVzZSBpdCBmb3IgYSBxdWl0ZSBkaWZmZXJlbnQgdHlwZSBv
ZgorICAgICAgICB0eXBlIGNvbnZlcnNpb24gb24gYSBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuIFdl
IGFscmVhZHkgaGF2ZSBhbiBhc0hUTUxFbGVtZW50IG1lbWJlcgorICAgICAgICBmdW5jdGlvbiwg
c28gbGV0cyB1c2UgdGhhdC4KKworICAgICAgICAqIGh0bWwvRE9NRm9ybURhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NRm9ybURhdGE6OkRPTUZvcm1EYXRhKTogVXNlIHJlZmVyZW5jZXMg
aW5zdGVhZCBvZiBwb2ludGVycywgYW5kCisgICAgICAgIGFzSFRNTEVsZW1lbnQgaW5zdGVhZCBv
ZiB0b0hUTUxFbGVtZW50LgorCisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQu
Y3BwOiBNYWRlIEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciBGSU5BTCwgbWFkZQorICAgICAg
ICBpdHMgcHJpdmF0ZSBpbmhlcml0YW5jZSBleHBsaWNpdCwgbWFkZSBpdHMgY29uc3RydWN0b3Ig
cHVibGljIHNvIHdlIGNhbiB1c2UgaXQKKyAgICAgICAgd2l0aCBtYWtlX3VuaXF1ZSBhbmQgZ290
IHJpZCBvZiBpdHMgY3JlYXRpb24gZnVuY3Rpb24uIEFsc28gdXNlIHJlZmVyZW5jZSBpbnN0ZWFk
CisgICAgICAgIG9mIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVk
RWxlbWVudDo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50KTogVXNlIG51bGxwdHIuCisgICAgICAgIChX
ZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6On5Gb3JtQXNzb2NpYXRlZEVsZW1lbnQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92ZVRv
TmV3RG9jdW1lbnQpOiBVc2UgYXNIVE1MRWxlbWVudCBpbnN0ZWFkCisgICAgICAgIG9mIHRvSFRN
TEVsZW1lbnQgYW5kIHVzZSBhIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KKyAgICAg
ICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJlbW92ZWRGcm9tKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZvcm1SZW1v
dmVkRnJvbVRyZWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6cmVzZXRGb3JtT3duZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Y3VzdG9tRXJyb3IpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmVzZXRGb3JtQXR0cmlidXRlVGFy
Z2V0T2JzZXJ2ZXIpOiBVc2UgbWFrZV91bmlxdWUKKyAgICAgICAgaW5zdGVhZCBvZiBjcmVhdGUg
aGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6bmFtZSk6IFVz
ZSBhc0hUTUxFbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUF0dHJpYnV0ZVRhcmdldE9i
c2VydmVyOjpGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjo6aWRUYXJnZXRDaGFuZ2VkKTogVXBk
YXRlZCBzaW5jZSBtX2VsZW1lbnQgaXMKKyAgICAgICAgbm93IGEgcmVmZXJlbmNlLgorCisgICAg
ICAgICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaDogUmVtb3ZlZCBzb21lIHVubmVlZGVk
IGNsYXNzIGRlY2xhcmF0aW9ucy4KKyAgICAgICAgTWFkZSBpc0Zvcm1Bc3NvY2lhdGVkRWxlbWVu
dCBjb25zdC4gVXNlIHN0ZDo6dW5pcXVlX3B0ciBpbnN0ZWFkIG9mIE93blB0ci4KKworICAgICAg
ICAqIGh0bWwvRm9ybU5hbWVkSXRlbS5oOiBNYWRlIGFzSFRNTEVsZW1lbnQgcmV0dXJuIGEgcmVm
ZXJlbmNlLCBhbmQgb3ZlcmxvYWRlZCBpdAorICAgICAgICBmb3IgYm90aCBjb25zdCBhbmQgbm9u
LWNvbnN0LiBNYWRlIGlzRm9ybUFzc29jaWF0ZWRFbGVtZW50IGNvbnN0LgorCisgICAgICAgICog
aHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6IFVwZGF0ZWQgZm9yIEZvcm1OYW1lZEl0ZW0g
Y2hhbmdlcy4gUmVtb3ZlZCBhbgorICAgICAgICB1bm5lZWRlZCBjbGFzcyBkZWNsYXJhdGlvbi4K
KworICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnZpcnR1YWxJdGVtQWZ0ZXIp
OiBVc2UgcmVmZXJlbmNlcywgYXNIVE1MRWxlbWVudCwKKyAgICAgICAgYW5kIG51bGxwdHIuCisg
ICAgICAgIChXZWJDb3JlOjpmaXJzdE5hbWVkSXRlbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRlbSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVDYWNoZSk6
IERpdHRvLgorCisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojp2YWxpZGF0ZUludGVyYWN0aXZlbHkpOiBVc2UgYXNI
VE1MRWxlbWVudCBhbmQgcmVmZXJlbmNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxl
bWVudDo6Z2V0VGV4dEZpZWxkVmFsdWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1M
Rm9ybUVsZW1lbnQ6OmZvcm1FbGVtZW50SW5kZXhXaXRoRm9ybUF0dHJpYnV0ZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmFzc2VydEl0ZW1DYW5CZUlu
UGFzdE5hbWVzTWFwKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6
OmVsZW1lbnRGcm9tUGFzdE5hbWVzTWFwKTogRGl0dG8sIGFuZCBudWxscHRyLgorCisgICAgICAg
ICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6IFVwZGF0ZWQgZm9yIEZvcm1OYW1lZEl0ZW0gY2hh
bmdlcy4KKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50Lmg6IERpdHRvLgorCisgICAg
ICAgICogbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1T
dWJtaXNzaW9uOjpjcmVhdGUpOiBVc2UgYXNIVE1MRWxlbWVudCBhbmQgcmVmZXJlbmNlcy4KKwor
MjAxMy0xMC0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKICAgICAgICAgUmVt
b3ZlIHRoZSBub3QtbXVjaC11c2VkIGlzU2hhZG93SG9zdCBmdW5jdGlvbiBmcm9tIEVsZW1lbnQu
aAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNzEw
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IGMxZjVmZmJiN2JhZGU2ZTIxNGNh
ZmI0ZGViMTVmYjE3M2RmNDA2YWYuLjk2YjNmY2RkYjRkYWVlYjlhMDM1ZmM2OTI3Y2U3ZDExYzBl
MjliMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDEzLTEwLTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBHZXQg
cmlkIG9mIHRoZSB0b0hUTUxFbGVtZW50IGhlbHBlciBmb3IgY2FzdGluZyBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQgdG8gSFRNTEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMjcxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3BwOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnVwZGF0ZUZvcm1TdGF0ZSk6IFVz
ZSBhc0hUTUxFbGVtZW50LgorCiAyMDEzLTA5LTMwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIERPTUZpbGVTeXN0ZW0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCAzOGU0ZDRjMGI1M2M0NmUzYmFmODgxNTVhYzA1YWViZmI0NDFmY2ZlLi5lMjc2
YTA2ZWZiOWFhNTI0OTMxNWEwOGJlNjRmZmEyNWJkNGM1ZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTMtMTAtMTIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIEdldCByaWQgb2YgdGhlIHRvSFRNTEVsZW1lbnQgaGVscGVyIGZvciBjYXN0
aW5nIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCB0byBIVE1MRWxlbWVudAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNzEzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGVsZW1lbnRXaXRo
TmFtZTppbkZvcm06XSk6IFVzZSBhc0hUTUxFbGVtZW50LgorICAgICAgICAoLVtXZWJIVE1MUmVw
cmVzZW50YXRpb24gY29udHJvbHNJbkZvcm06XSk6IERpdHRvLgorCiAyMDEzLTEwLTEyICBBZGFt
IFJvYmVuICA8YXJvYmVuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgV2ViVmlld3MgaW5zaWRlIE9T
IFggc2NyZWVuIHNhdmVycyBoYXZlIGxhcmdlIGNhY2hlcywgYnV0IHNob3VsZCBub3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwppbmRleCAxNWI1YTU1NGYyMTkxZjU4MGY1MjI5ZDE5NTljYTcxNDQ4YjQ3ZmYwLi4z
NTg2ZDJiNDNkYmJhODAxNjI3MmI2ODMwMTVlMmNhMThiNTlmMjAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CkBAIC0xLDUgKzEsMTUgQEAKIDIwMTMtMTAtMTIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgogCisgICAgICAgIEdldCByaWQgb2YgdGhlIHRvSFRNTEVsZW1lbnQgaGVscGVyIGZvciBj
YXN0aW5nIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCB0byBIVE1MRWxlbWVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNzEzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAg
ICAgIChXZWJGcmFtZTo6Y29udHJvbHNJbkZvcm0pOiBVc2UgYXNIVE1MRWxlbWVudC4KKworMjAx
My0xMC0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKICAgICAgICAgVXNlIHVu
aXF1ZV9wdHIgaW5zdGVhZCBvZiBkZWxldGUgaW4gYSBmZXcgcGxhY2VzCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI2MzkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9ET01Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RPTUZvcm1EYXRhLmNwcAppbmRleCBiZmRlOTFiODNhODk4ODMyYjYxZGZiNDI5NmI5ZTlhN2I1
YmRlYTIwLi41YmI2OWU4YWNiODM4YmQzNTUwODk0N2RlNzIwZGViM2I2NzIzZjdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTUZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RPTUZvcm1EYXRhLmNwcApAQCAtNTEsOSArNTEsOSBAQCBET01Gb3JtRGF0YTo6
RE9NRm9ybURhdGEoSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogICAgICAgICByZXR1cm47CiAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZm9ybS0+YXNzb2NpYXRlZEVsZW1lbnRzKCkuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBlbGVtZW50ID0gZm9y
bS0+YXNzb2NpYXRlZEVsZW1lbnRzKClbaV07Ci0gICAgICAgIGlmICghdG9IVE1MRWxlbWVudChl
bGVtZW50KS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCi0gICAgICAgICAgICBlbGVtZW50LT5h
cHBlbmRGb3JtRGF0YSgqdGhpcywgdHJ1ZSk7CisgICAgICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dCYgZWxlbWVudCA9ICpmb3JtLT5hc3NvY2lhdGVkRWxlbWVudHMoKVtpXTsKKyAgICAgICAgaWYg
KCFlbGVtZW50LmFzSFRNTEVsZW1lbnQoKS5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKKyAgICAg
ICAgICAgIGVsZW1lbnQuYXBwZW5kRm9ybURhdGEoKnRoaXMsIHRydWUpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCmluZGV4IDky
YjU5NGU2NDE0MGUwYTM1ZGNmMjE5ZDEzOWQ1OWY0ZjcwZmIyODIuLjhhYzExOTU2ZjJkMjcyYmZm
YzBjN2EzNjY2YzYxMmUyYTRhYTg1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Rm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1B
c3NvY2lhdGVkRWxlbWVudC5jcHAKQEAgLTM4LDMyICszOCwzMSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLWNsYXNzIEZvcm1BdHRyaWJ1dGVU
YXJnZXRPYnNlcnZlciA6IElkVGFyZ2V0T2JzZXJ2ZXIgeworY2xhc3MgRm9ybUF0dHJpYnV0ZVRh
cmdldE9ic2VydmVyIEZJTkFMIDogcHJpdmF0ZSBJZFRhcmdldE9ic2VydmVyIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgT3duUHRyPEZvcm1BdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlcj4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIEZvcm1B
c3NvY2lhdGVkRWxlbWVudCopOwotICAgIHZpcnR1YWwgdm9pZCBpZFRhcmdldENoYW5nZWQoKSBP
VkVSUklERTsKKyAgICBGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBpZCwgRm9ybUFzc29jaWF0ZWRFbGVtZW50Jik7CiAKIHByaXZhdGU6Ci0gICAgRm9ybUF0
dHJpYnV0ZVRhcmdldE9ic2VydmVyKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIEZvcm1Bc3NvY2lh
dGVkRWxlbWVudCopOworICAgIHZpcnR1YWwgdm9pZCBpZFRhcmdldENoYW5nZWQoKSBPVkVSUklE
RTsKIAotICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogbV9lbGVtZW50OworICAgIEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudCYgbV9lbGVtZW50OwogfTsKIAogRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpG
b3JtQXNzb2NpYXRlZEVsZW1lbnQoKQotICAgIDogbV9mb3JtKDApCisgICAgOiBtX2Zvcm0obnVs
bHB0cikKIHsKIH0KIAogRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp+Rm9ybUFzc29jaWF0ZWRFbGVt
ZW50KCkKIHsKLSAgICBzZXRGb3JtKDApOworICAgIHNldEZvcm0obnVsbHB0cik7CiB9CiAKIHZv
aWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCog
b2xkRG9jdW1lbnQpCiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50
KHRoaXMpOwotICAgIGlmIChvbGREb2N1bWVudCAmJiBlbGVtZW50LT5mYXN0SGFzQXR0cmlidXRl
KGZvcm1BdHRyKSkKKyAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGFzSFRNTEVsZW1lbnQoKTsK
KyAgICBpZiAob2xkRG9jdW1lbnQgJiYgZWxlbWVudC5mYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRy
KSkKICAgICAgICAgcmVzZXRGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoKTsKIH0KIApAQCAt
NzMsMTkgKzcyLDE5IEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjppbnNlcnRlZEludG8o
Q29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiAgICAgaWYgKCFpbnNlcnRpb25Qb2ludC5p
bkRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50
ID0gdG9IVE1MRWxlbWVudCh0aGlzKTsKLSAgICBpZiAoZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0
ZShmb3JtQXR0cikpCisgICAgSFRNTEVsZW1lbnQmIGVsZW1lbnQgPSBhc0hUTUxFbGVtZW50KCk7
CisgICAgaWYgKGVsZW1lbnQuZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpCiAgICAgICAgIHJl
c2V0Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCk7CiB9CiAKIHZvaWQgRm9ybUFzc29jaWF0
ZWRFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIHsK
LSAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQodGhpcyk7Ci0gICAgaWYg
KGluc2VydGlvblBvaW50LmluRG9jdW1lbnQoKSAmJiBlbGVtZW50LT5mYXN0SGFzQXR0cmlidXRl
KGZvcm1BdHRyKSkKKyAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGFzSFRNTEVsZW1lbnQoKTsK
KyAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaW5Eb2N1bWVudCgpICYmIGVsZW1lbnQuZmFzdEhhc0F0
dHJpYnV0ZShmb3JtQXR0cikpCiAgICAgICAgIG1fZm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVy
ID0gbnVsbHB0cjsKICAgICAvLyBJZiB0aGUgZm9ybSBhbmQgZWxlbWVudCBhcmUgYm90aCBpbiB0
aGUgc2FtZSB0cmVlLCBwcmVzZXJ2ZSB0aGUgY29ubmVjdGlvbiB0byB0aGUgZm9ybS4KICAgICAv
LyBPdGhlcndpc2UsIG51bGwgb3V0IG91ciBmb3JtIGFuZCByZW1vdmUgb3Vyc2VsdmVzIGZyb20g
dGhlIGZvcm0ncyBsaXN0IG9mIGVsZW1lbnRzLgotICAgIGlmIChtX2Zvcm0gJiYgZWxlbWVudC0+
aGlnaGVzdEFuY2VzdG9yKCkgIT0gbV9mb3JtLT5oaWdoZXN0QW5jZXN0b3IoKSkKKyAgICBpZiAo
bV9mb3JtICYmIGVsZW1lbnQuaGlnaGVzdEFuY2VzdG9yKCkgIT0gbV9mb3JtLT5oaWdoZXN0QW5j
ZXN0b3IoKSkKICAgICAgICAgc2V0Rm9ybSgwKTsKIH0KIApAQCAtMTEzLDcgKzExMiw3IEBAIEhU
TUxGb3JtRWxlbWVudCogRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpmaW5kQXNzb2NpYXRlZEZvcm0o
Y29uc3QgSFRNTEVsZW1lbnQqIGVsCiB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybVJl
bW92ZWRGcm9tVHJlZShjb25zdCBOb2RlKiBmb3JtUm9vdCkKIHsKICAgICBBU1NFUlQobV9mb3Jt
KTsKLSAgICBpZiAodG9IVE1MRWxlbWVudCh0aGlzKS0+aGlnaGVzdEFuY2VzdG9yKCkgIT0gZm9y
bVJvb3QpCisgICAgaWYgKGFzSFRNTEVsZW1lbnQoKS5oaWdoZXN0QW5jZXN0b3IoKSAhPSBmb3Jt
Um9vdCkKICAgICAgICAgc2V0Rm9ybSgwKTsKIH0KIApAQCAtMTUxLDM0ICsxNTAsMzIgQEAgdm9p
ZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZvcm1XaWxsQmVEZXN0cm95ZWQoKQogdm9pZCBGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQ6OnJlc2V0Rm9ybU93bmVyKCkKIHsKICAgICBIVE1MRm9ybUVsZW1l
bnQqIG9yaWdpbmFsRm9ybSA9IG1fZm9ybTsKLSAgICBzZXRGb3JtKGZpbmRBc3NvY2lhdGVkRm9y
bSh0b0hUTUxFbGVtZW50KHRoaXMpLCBtX2Zvcm0pKTsKLSAgICBIVE1MRWxlbWVudCogZWxlbWVu
dCA9IHRvSFRNTEVsZW1lbnQodGhpcyk7ICAgICAKKyAgICBzZXRGb3JtKGZpbmRBc3NvY2lhdGVk
Rm9ybSgmYXNIVE1MRWxlbWVudCgpLCBtX2Zvcm0pKTsKKyAgICBIVE1MRWxlbWVudCYgZWxlbWVu
dCA9IGFzSFRNTEVsZW1lbnQoKTsKICAgICBpZiAobV9mb3JtICYmIG1fZm9ybSAhPSBvcmlnaW5h
bEZvcm0gJiYgbV9mb3JtLT5pbkRvY3VtZW50KCkpCi0gICAgICAgIGVsZW1lbnQtPmRvY3VtZW50
KCkuZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2woZWxlbWVudCk7CisgICAgICAgIGVsZW1lbnQuZG9j
dW1lbnQoKS5kaWRBc3NvY2lhdGVGb3JtQ29udHJvbCgmZWxlbWVudCk7CiB9CiAKIHZvaWQgRm9y
bUFzc29jaWF0ZWRFbGVtZW50Ojpmb3JtQXR0cmlidXRlQ2hhbmdlZCgpCiB7Ci0gICAgSFRNTEVs
ZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KHRoaXMpOwotICAgIGlmICghZWxlbWVudC0+
ZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpIHsKKyAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9
IGFzSFRNTEVsZW1lbnQoKTsKKyAgICBpZiAoIWVsZW1lbnQuZmFzdEhhc0F0dHJpYnV0ZShmb3Jt
QXR0cikpIHsKICAgICAgICAgLy8gVGhlIGZvcm0gYXR0cmlidXRlIHJlbW92ZWQuIFdlIG5lZWQg
dG8gcmVzZXQgZm9ybSBvd25lciBoZXJlLgogICAgICAgICBIVE1MRm9ybUVsZW1lbnQqIG9yaWdp
bmFsRm9ybSA9IG1fZm9ybTsKLSAgICAgICAgc2V0Rm9ybShIVE1MRm9ybUVsZW1lbnQ6OmZpbmRD
bG9zZXN0Rm9ybUFuY2VzdG9yKCplbGVtZW50KSk7Ci0gICAgICAgIEhUTUxFbGVtZW50KiBlbGVt
ZW50ID0gdG9IVE1MRWxlbWVudCh0aGlzKTsKKyAgICAgICAgc2V0Rm9ybShIVE1MRm9ybUVsZW1l
bnQ6OmZpbmRDbG9zZXN0Rm9ybUFuY2VzdG9yKGVsZW1lbnQpKTsKICAgICAgICAgaWYgKG1fZm9y
bSAmJiBtX2Zvcm0gIT0gb3JpZ2luYWxGb3JtICYmIG1fZm9ybS0+aW5Eb2N1bWVudCgpKQotICAg
ICAgICAgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS5kaWRBc3NvY2lhdGVGb3JtQ29udHJvbChlbGVt
ZW50KTsKKyAgICAgICAgICAgIGVsZW1lbnQuZG9jdW1lbnQoKS5kaWRBc3NvY2lhdGVGb3JtQ29u
dHJvbCgmZWxlbWVudCk7CiAgICAgICAgIG1fZm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0g
bnVsbHB0cjsKICAgICB9IGVsc2UgewogICAgICAgICByZXNldEZvcm1Pd25lcigpOwotICAgICAg
ICBpZiAoZWxlbWVudC0+aW5Eb2N1bWVudCgpKQorICAgICAgICBpZiAoZWxlbWVudC5pbkRvY3Vt
ZW50KCkpCiAgICAgICAgICAgICByZXNldEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpOwog
ICAgIH0KIH0KIAogYm9vbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmN1c3RvbUVycm9yKCkgY29u
c3QKIHsKLSAgICBjb25zdCBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQodGhp
cyk7Ci0gICAgcmV0dXJuIGVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpICYmICFtX2N1c3RvbVZhbGlk
YXRpb25NZXNzYWdlLmlzRW1wdHkoKTsKKyAgICByZXR1cm4gYXNIVE1MRWxlbWVudCgpLndpbGxW
YWxpZGF0ZSgpICYmICFtX2N1c3RvbVZhbGlkYXRpb25NZXNzYWdlLmlzRW1wdHkoKTsKIH0KIAog
Ym9vbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6Omhhc0JhZElucHV0KCkgY29uc3QKQEAgLTI0NSw3
ICsyNDIsNyBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHko
Y29uc3QgU3RyaW5nJiBlcnJvcikKIAogdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJlc2V0
Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCkKIHsKLSAgICBtX2Zvcm1BdHRyaWJ1dGVUYXJn
ZXRPYnNlcnZlciA9IEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjo6Y3JlYXRlKHRvSFRNTEVs
ZW1lbnQodGhpcyktPmZhc3RHZXRBdHRyaWJ1dGUoZm9ybUF0dHIpLCB0aGlzKTsKKyAgICBtX2Zv
cm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUF0dHJpYnV0
ZVRhcmdldE9ic2VydmVyPihhc0hUTUxFbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShmb3JtQXR0
ciksICp0aGlzKTsKIH0KIAogdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZvcm1BdHRyaWJ1
dGVUYXJnZXRDaGFuZ2VkKCkKQEAgLTI1NSw3ICsyNTIsNyBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVk
RWxlbWVudDo6Zm9ybUF0dHJpYnV0ZVRhcmdldENoYW5nZWQoKQogCiBjb25zdCBBdG9taWNTdHJp
bmcmIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6bmFtZSgpIGNvbnN0CiB7Ci0gICAgY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lID0gdG9IVE1MRWxlbWVudCh0aGlzKS0+Z2V0TmFtZUF0dHJpYnV0ZSgp
OworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IGFzSFRNTEVsZW1lbnQoKS5nZXROYW1l
QXR0cmlidXRlKCk7CiAgICAgcmV0dXJuIG5hbWUuaXNOdWxsKCkgPyBlbXB0eUF0b20gOiBuYW1l
OwogfQogCkBAIC0yNjQsMjAgKzI2MSwxNSBAQCBib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6
aXNGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotT3duUHRyPEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4gRm9ybUF0dHJpYnV0ZVRh
cmdldE9ic2VydmVyOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgRm9ybUFzc29jaWF0
ZWRFbGVtZW50KiBlbGVtZW50KQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgRm9ybUF0dHJp
YnV0ZVRhcmdldE9ic2VydmVyKGlkLCBlbGVtZW50KSk7Ci19Ci0KLUZvcm1BdHRyaWJ1dGVUYXJn
ZXRPYnNlcnZlcjo6Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWQsIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogZWxlbWVudCkKLSAgICA6IElkVGFyZ2V0T2Jz
ZXJ2ZXIodG9IVE1MRWxlbWVudChlbGVtZW50KS0+dHJlZVNjb3BlKCkuaWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5KCksIGlkKQorRm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyOjpGb3JtQXR0cmli
dXRlVGFyZ2V0T2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgRm9ybUFzc29jaWF0ZWRF
bGVtZW50JiBlbGVtZW50KQorICAgIDogSWRUYXJnZXRPYnNlcnZlcihlbGVtZW50LmFzSFRNTEVs
ZW1lbnQoKS50cmVlU2NvcGUoKS5pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoKSwgaWQpCiAgICAg
LCBtX2VsZW1lbnQoZWxlbWVudCkKIHsKIH0KIAogdm9pZCBGb3JtQXR0cmlidXRlVGFyZ2V0T2Jz
ZXJ2ZXI6OmlkVGFyZ2V0Q2hhbmdlZCgpCiB7Ci0gICAgbV9lbGVtZW50LT5mb3JtQXR0cmlidXRl
VGFyZ2V0Q2hhbmdlZCgpOworICAgIG1fZWxlbWVudC5mb3JtQXR0cmlidXRlVGFyZ2V0Q2hhbmdl
ZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJjb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
b3JtQXNzb2NpYXRlZEVsZW1lbnQuaAppbmRleCBlOWVhOWVmZDJjZmVmMDIwY2I3ZmMwYjRiMGFk
N2RiZjI4NDAxM2Y3Li5kMzFlNjZhNTQ5MjkzOWE2Y2M4MWE2YjMwOTJlYTg2Yjc3ZWUxOTlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgKQEAgLTM2LDkg
KzM2LDcgQEAgY2xhc3MgRm9ybURhdGFMaXN0OwogY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBI
VE1MRm9ybUVsZW1lbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2U7CiBj
bGFzcyBWYWxpZGl0eVN0YXRlOwotY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKIAogY2xhc3MgRm9y
bUFzc29jaWF0ZWRFbGVtZW50IDogcHVibGljIEZvcm1OYW1lZEl0ZW0gewogcHVibGljOgpAQCAt
MTE0LDIzICsxMTIsMTMgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVzZXRGb3JtQXR0cmlidXRl
VGFyZ2V0T2JzZXJ2ZXIoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0Zvcm1Bc3NvY2lhdGVkRWxl
bWVudCgpIE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiB0
cnVlOyB9CiAKLSAgICBPd25QdHI8Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyPiBtX2Zvcm1B
dHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybUF0dHJpYnV0
ZVRhcmdldE9ic2VydmVyPiBtX2Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjsKICAgICBIVE1M
Rm9ybUVsZW1lbnQqIG1fZm9ybTsKICAgICBTdHJpbmcgbV9jdXN0b21WYWxpZGF0aW9uTWVzc2Fn
ZTsKIH07CiAKLWlubGluZSBjb25zdCBIVE1MRWxlbWVudCogdG9IVE1MRWxlbWVudChjb25zdCBG
b3JtQXNzb2NpYXRlZEVsZW1lbnQqIGFzc29jaWF0ZWRFbGVtZW50KQotewotICAgIHJldHVybiBj
b25zdF9jYXN0PEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+KGFzc29jaWF0ZWRFbGVtZW50KS0+YXNI
VE1MRWxlbWVudCgpOwotfQotCi1pbmxpbmUgSFRNTEVsZW1lbnQqIHRvSFRNTEVsZW1lbnQoRm9y
bUFzc29jaWF0ZWRFbGVtZW50KiBhc3NvY2lhdGVkRWxlbWVudCkKLXsKLSAgICByZXR1cm4gYXNz
b2NpYXRlZEVsZW1lbnQtPmFzSFRNTEVsZW1lbnQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UKIAog
I2VuZGlmIC8vIEZvcm1Bc3NvY2lhdGVkRWxlbWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Zvcm1OYW1lZEl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybU5hbWVk
SXRlbS5oCmluZGV4IGUxYThlMmU1MGRlMTZhMjI4YmQ0MGZjMDQ1ODkxZjg4YzJlMDYxNTguLjBl
MmNlZjI0ZTI5ZDEzMmU4NTBhOGZjOTM5NmRkZTQ3NDdhNDEwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRm9ybU5hbWVkSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Rm9ybU5hbWVkSXRlbS5oCkBAIC0yOCw4ICsyOCw5IEBAIGNsYXNzIEhUTUxFbGVtZW50OwogY2xh
c3MgRm9ybU5hbWVkSXRlbSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Rm9ybU5hbWVkSXRlbSgp
IHsgfQotICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIGFzSFRNTEVsZW1lbnQoKSA9IDA7Ci0gICAg
dmlydHVhbCBib29sIGlzRm9ybUFzc29jaWF0ZWRFbGVtZW50KCkgPSAwOworICAgIHZpcnR1YWwg
SFRNTEVsZW1lbnQmIGFzSFRNTEVsZW1lbnQoKSA9IDA7CisgICAgdmlydHVhbCBjb25zdCBIVE1M
RWxlbWVudCYgYXNIVE1MRWxlbWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNG
b3JtQXNzb2NpYXRlZEVsZW1lbnQoKSBjb25zdCA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IDg0OWQxNWMwZDk1YTE3NzBj
MDVkMzZhYmZlN2QzZmUxZjEzNTNlZTguLjgxZmI0MWMzOWVkMTU2Y2ZhN2M0YzNlNGFlZTJlNGFj
ZDgwYjJjZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5oCkBAIC0zNCw3ICszNCw2IEBAIGNsYXNzIEhUTUxGaWVsZFNldEVsZW1lbnQ7CiBjbGFzcyBI
VE1MRm9ybUVsZW1lbnQ7CiBjbGFzcyBIVE1MTGVnZW5kRWxlbWVudDsKIGNsYXNzIFZhbGlkYXRp
b25NZXNzYWdlOwotY2xhc3MgVmFsaWRpdHlTdGF0ZTsKIAogLy8gSFRNTEZvcm1Db250cm9sRWxl
bWVudCBpcyB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBGb3JtQXNzb2NpYXRlZEVsZW1l
bnQsCiAvLyBhbmQgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnQgaW1wbGVtZW50YXRpb25zIHNob3Vs
ZCB1c2UgSFRNTEZvcm1Db250cm9sRWxlbWVudApAQCAtMTQ0LDcgKzE0Myw4IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWRGb3JtQ29udHJvbEVsZW1lbnQoKSBPVkVSUklERTsK
ICAgICB2b2lkIHVwZGF0ZUFuY2VzdG9yRGlzYWJsZWRTdGF0ZSgpIGNvbnN0OwogCi0gICAgdmly
dHVhbCBIVE1MRWxlbWVudCogYXNIVE1MRWxlbWVudCgpIE9WRVJSSURFIEZJTkFMIHsgcmV0dXJu
IHRoaXM7IH0KKyAgICB2aXJ0dWFsIEhUTUxFbGVtZW50JiBhc0hUTUxFbGVtZW50KCkgT1ZFUlJJ
REUgRklOQUwgeyByZXR1cm4gKnRoaXM7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEhUTUxFbGVtZW50
JiBhc0hUTUxFbGVtZW50KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gKnRoaXM7IH0K
ICAgICB2aXJ0dWFsIEZvcm1OYW1lZEl0ZW0qIGFzRm9ybU5hbWVkSXRlbSgpIE9WRVJSSURFIEZJ
TkFMIHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIE93blB0cjxWYWxpZGF0aW9uTWVzc2FnZT4gbV92
YWxpZGF0aW9uTWVzc2FnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbi5jcHAKaW5kZXggOWY3ODIyN2U1YWVmOTJiNjdmZGEwYWVkMmM0MWUz
ZGYzNDRhN2EyNy4uMTY2ZjYxMTFhOTdjYmNhNjk3YzZjZGNlM2Y0OTdjMDA2YzY3NDYyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5j
cHAKQEAgLTcxLDEyICs3MSwxMiBAQCBFbGVtZW50KiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bjo6dmlydHVhbEl0ZW1BZnRlcih1bnNpZ25lZCYgb2Zmc2V0LCBFbGVtZW50KgogICAgIGlmIChw
cmV2aW91c0l0ZW0pCiAgICAgICAgIG9mZnNldCsrOwogICAgIHdoaWxlIChvZmZzZXQgPCBlbGVt
ZW50c0FycmF5LnNpemUoKSkgewotICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGVsZW1l
bnQgPSBlbGVtZW50c0FycmF5W29mZnNldF07Ci0gICAgICAgIGlmIChlbGVtZW50LT5pc0VudW1l
cmF0YWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHRvSFRNTEVsZW1lbnQoZWxlbWVudCk7Cisg
ICAgICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCYgZWxlbWVudCA9ICplbGVtZW50c0FycmF5W29m
ZnNldF07CisgICAgICAgIGlmIChlbGVtZW50LmlzRW51bWVyYXRhYmxlKCkpCisgICAgICAgICAg
ICByZXR1cm4gJmVsZW1lbnQuYXNIVE1MRWxlbWVudCgpOwogICAgICAgICBvZmZzZXQrKzsKICAg
ICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHN0YXRpYyBIVE1M
RWxlbWVudCogZmlyc3ROYW1lZEl0ZW0oY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dCo+JiBlbGVtZW50c0FycmF5LApAQCAtODUsMjEgKzg1LDIxIEBAIHN0YXRpYyBIVE1MRWxlbWVu
dCogZmlyc3ROYW1lZEl0ZW0oY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBl
bGVtZW50CiAgICAgQVNTRVJUKGF0dHJOYW1lID09IGlkQXR0ciB8fCBhdHRyTmFtZSA9PSBuYW1l
QXR0cik7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxlbWVudHNBcnJheS5zaXpl
KCk7ICsraSkgewotICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQo
ZWxlbWVudHNBcnJheVtpXSk7Ci0gICAgICAgIGlmIChlbGVtZW50c0FycmF5W2ldLT5pc0VudW1l
cmF0YWJsZSgpICYmIGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoYXR0ck5hbWUpID09IG5hbWUp
Ci0gICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgSFRNTEVsZW1lbnQmIGVsZW1l
bnQgPSBlbGVtZW50c0FycmF5W2ldLT5hc0hUTUxFbGVtZW50KCk7CisgICAgICAgIGlmIChlbGVt
ZW50c0FycmF5W2ldLT5pc0VudW1lcmF0YWJsZSgpICYmIGVsZW1lbnQuZmFzdEdldEF0dHJpYnV0
ZShhdHRyTmFtZSkgPT0gbmFtZSkKKyAgICAgICAgICAgIHJldHVybiAmZWxlbWVudDsKICAgICB9
CiAKICAgICBpZiAoIWltYWdlRWxlbWVudHNBcnJheSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW1hZ2VFbGVtZW50c0FycmF5LT5zaXplKCk7ICsr
aSkgewotICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBlbGVtZW50ID0gKCppbWFnZUVsZW1lbnRz
QXJyYXkpW2ldOwotICAgICAgICBpZiAoZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShhdHRyTmFt
ZSkgPT0gbmFtZSkKLSAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICBIVE1MSW1h
Z2VFbGVtZW50JiBlbGVtZW50ID0gKigqaW1hZ2VFbGVtZW50c0FycmF5KVtpXTsKKyAgICAgICAg
aWYgKGVsZW1lbnQuZmFzdEdldEF0dHJpYnV0ZShhdHRyTmFtZSkgPT0gbmFtZSkKKyAgICAgICAg
ICAgIHJldHVybiAmZWxlbWVudDsKICAgICB9CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAogTm9kZSogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRl
bShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CkBAIC0xMDksNyArMTA5LDcgQEAgTm9k
ZSogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpIGNvbnN0CiAgICAgLy8gYXR0cmlidXRlLiBJZiBhIG1hdGNoIGlzIG5vdCBmb3Vu
ZCwgdGhlIG1ldGhvZCB0aGVuIHNlYXJjaGVzIGZvciBhbgogICAgIC8vIG9iamVjdCB3aXRoIGEg
bWF0Y2hpbmcgbmFtZSBhdHRyaWJ1dGUsIGJ1dCBvbmx5IG9uIHRob3NlIGVsZW1lbnRzCiAgICAg
Ly8gdGhhdCBhcmUgYWxsb3dlZCBhIG5hbWUgYXR0cmlidXRlLgotICAgIGNvbnN0IFZlY3RvcjxI
VE1MSW1hZ2VFbGVtZW50Kj4qIGltYWdlc0VsZW1lbnRzID0gb3duZXJOb2RlKCkuaGFzVGFnTmFt
ZShmaWVsZHNldFRhZykgPyAwIDogJmZvcm1JbWFnZUVsZW1lbnRzKCk7CisgICAgY29uc3QgVmVj
dG9yPEhUTUxJbWFnZUVsZW1lbnQqPiogaW1hZ2VzRWxlbWVudHMgPSBvd25lck5vZGUoKS5oYXNU
YWdOYW1lKGZpZWxkc2V0VGFnKSA/IG51bGxwdHIgOiAmZm9ybUltYWdlRWxlbWVudHMoKTsKICAg
ICBpZiAoSFRNTEVsZW1lbnQqIGl0ZW0gPSBmaXJzdE5hbWVkSXRlbShmb3JtQ29udHJvbEVsZW1l
bnRzKCksIGltYWdlc0VsZW1lbnRzLCBpZEF0dHIsIG5hbWUpKQogICAgICAgICByZXR1cm4gaXRl
bTsKIApAQCAtMTI2LDE3ICsxMjYsMTcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bjo6dXBkYXRlTmFtZUNhY2hlKCkgY29uc3QKICAgICBjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0
ZWRFbGVtZW50Kj4mIGVsZW1lbnRzQXJyYXkgPSBmb3JtQ29udHJvbEVsZW1lbnRzKCk7CiAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxlbWVudHNBcnJheS5zaXplKCk7ICsraSkgewot
ICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGFzc29jaWF0ZWRFbGVtZW50ID0gZWxlbWVu
dHNBcnJheVtpXTsKLSAgICAgICAgaWYgKGFzc29jaWF0ZWRFbGVtZW50LT5pc0VudW1lcmF0YWJs
ZSgpKSB7Ci0gICAgICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQo
YXNzb2NpYXRlZEVsZW1lbnQpOwotICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZEF0
dHJWYWwgPSBlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpOwotICAgICAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lQXR0clZhbCA9IGVsZW1lbnQtPmdldE5hbWVBdHRyaWJ1dGUoKTsKKyAg
ICAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50JiBhc3NvY2lhdGVkRWxlbWVudCA9ICplbGVtZW50
c0FycmF5W2ldOworICAgICAgICBpZiAoYXNzb2NpYXRlZEVsZW1lbnQuaXNFbnVtZXJhdGFibGUo
KSkgeworICAgICAgICAgICAgSFRNTEVsZW1lbnQmIGVsZW1lbnQgPSBhc3NvY2lhdGVkRWxlbWVu
dC5hc0hUTUxFbGVtZW50KCk7CisgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkQXR0
clZhbCA9IGVsZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZUF0dHJWYWwgPSBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKTsKICAgICAg
ICAgICAgIGlmICghaWRBdHRyVmFsLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIGFwcGVu
ZElkQ2FjaGUoaWRBdHRyVmFsLCBlbGVtZW50KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRJZENh
Y2hlKGlkQXR0clZhbCwgJmVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGZvdW5kSW5wdXRFbGVt
ZW50cy5hZGQoaWRBdHRyVmFsLmltcGwoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAoIW5hbWVBdHRyVmFsLmlzRW1wdHkoKSAmJiBpZEF0dHJWYWwgIT0gbmFtZUF0dHJWYWwpIHsK
LSAgICAgICAgICAgICAgICBhcHBlbmROYW1lQ2FjaGUobmFtZUF0dHJWYWwsIGVsZW1lbnQpOwor
ICAgICAgICAgICAgICAgIGFwcGVuZE5hbWVDYWNoZShuYW1lQXR0clZhbCwgJmVsZW1lbnQpOwog
ICAgICAgICAgICAgICAgIGZvdW5kSW5wdXRFbGVtZW50cy5hZGQobmFtZUF0dHJWYWwuaW1wbCgp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTQ1LDEzICsxNDUsMTMgQEAgdm9pZCBI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTmFtZUNhY2hlKCkgY29uc3QKICAgICBp
ZiAoaXNIVE1MRm9ybUVsZW1lbnQob3duZXJOb2RlKCkpKSB7CiAgICAgICAgIGNvbnN0IFZlY3Rv
cjxIVE1MSW1hZ2VFbGVtZW50Kj4mIGltYWdlRWxlbWVudHNBcnJheSA9IGZvcm1JbWFnZUVsZW1l
bnRzKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbWFnZUVsZW1lbnRzQXJy
YXkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIEhUTUxJbWFnZUVsZW1lbnQqIGVsZW1lbnQg
PSBpbWFnZUVsZW1lbnRzQXJyYXlbaV07Ci0gICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGlkQXR0clZhbCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCk7Ci0gICAgICAgICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWVBdHRyVmFsID0gZWxlbWVudC0+Z2V0TmFtZUF0dHJpYnV0ZSgp
OworICAgICAgICAgICAgSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCA9ICppbWFnZUVsZW1lbnRz
QXJyYXlbaV07CisgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkQXR0clZhbCA9IGVs
ZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZUF0dHJWYWwgPSBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKTsKICAgICAgICAgICAgIGlm
ICghaWRBdHRyVmFsLmlzRW1wdHkoKSAmJiAhZm91bmRJbnB1dEVsZW1lbnRzLmNvbnRhaW5zKGlk
QXR0clZhbC5pbXBsKCkpKQotICAgICAgICAgICAgICAgIGFwcGVuZElkQ2FjaGUoaWRBdHRyVmFs
LCBlbGVtZW50KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRJZENhY2hlKGlkQXR0clZhbCwgJmVs
ZW1lbnQpOwogICAgICAgICAgICAgaWYgKCFuYW1lQXR0clZhbC5pc0VtcHR5KCkgJiYgaWRBdHRy
VmFsICE9IG5hbWVBdHRyVmFsICYmICFmb3VuZElucHV0RWxlbWVudHMuY29udGFpbnMobmFtZUF0
dHJWYWwuaW1wbCgpKSkKLSAgICAgICAgICAgICAgICBhcHBlbmROYW1lQ2FjaGUobmFtZUF0dHJW
YWwsIGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGFwcGVuZE5hbWVDYWNoZShuYW1lQXR0clZh
bCwgJmVsZW1lbnQpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtRWxlbWVudC5jcHAKaW5kZXggMzFjZjc1ZDU5YzEzMWI3ZWJkOWI1MTQ3NjY2NGJiZDdjYWYw
NzE4OS4uYTAwOTljMTljN2IyMzRiMjgyM2MxNjMyMWQxMThjMmNkYThiNDM0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtMjI4LDMwICsyMjgsMzIgQEAgYm9v
bCBIVE1MRm9ybUVsZW1lbnQ6OnZhbGlkYXRlSW50ZXJhY3RpdmVseShFdmVudCogZXZlbnQpCiAg
ICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAog
ICAgIFJlZjxIVE1MRm9ybUVsZW1lbnQ+IHByb3RlY3QoKnRoaXMpOworCiAgICAgLy8gRm9jdXMg
b24gdGhlIGZpcnN0IGZvY3VzYWJsZSBjb250cm9sIGFuZCBzaG93IGEgdmFsaWRhdGlvbiBtZXNz
YWdlLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB1bmhhbmRsZWRJbnZhbGlkQ29udHJv
bHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KiB1bmhhbmRs
ZWRBc3NvY2lhdGVkRWxlbWVudCA9IHVuaGFuZGxlZEludmFsaWRDb250cm9sc1tpXS5nZXQoKTsK
LSAgICAgICAgSFRNTEVsZW1lbnQqIHVuaGFuZGxlZCA9IHRvSFRNTEVsZW1lbnQodW5oYW5kbGVk
QXNzb2NpYXRlZEVsZW1lbnQpOwotICAgICAgICBpZiAodW5oYW5kbGVkLT5pc0ZvY3VzYWJsZSgp
ICYmIHVuaGFuZGxlZC0+aW5Eb2N1bWVudCgpKSB7Ci0gICAgICAgICAgICB1bmhhbmRsZWQtPnNj
cm9sbEludG9WaWV3SWZOZWVkZWQoZmFsc2UpOwotICAgICAgICAgICAgdW5oYW5kbGVkLT5mb2N1
cygpOwotICAgICAgICAgICAgaWYgKHVuaGFuZGxlZC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkK
LSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4odW5o
YW5kbGVkKS0+dXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCk7CisgICAgICAgIEhUTUxF
bGVtZW50JiBlbGVtZW50ID0gdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzW2ldLT5hc0hUTUxFbGVt
ZW50KCk7CisgICAgICAgIGlmIChlbGVtZW50LmlzRm9jdXNhYmxlKCkgJiYgZWxlbWVudC5pbkRv
Y3VtZW50KCkpIHsKKyAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChm
YWxzZSk7CisgICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7CisgICAgICAgICAgICBpZiAoZWxl
bWVudC5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQorICAgICAgICAgICAgICAgIHRvSFRNTEZvcm1D
b250cm9sRWxlbWVudChlbGVtZW50KS51cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCiAgICAgLy8gV2FybiBhYm91
dCBhbGwgb2YgdW5mb2N1c2FibGUgY29udHJvbHMuCiAgICAgaWYgKGRvY3VtZW50KCkuZnJhbWUo
KSkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdW5oYW5kbGVkSW52YWxpZENv
bnRyb2xzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQq
IHVuaGFuZGxlZEFzc29jaWF0ZWRFbGVtZW50ID0gdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzW2ld
LmdldCgpOwotICAgICAgICAgICAgSFRNTEVsZW1lbnQqIHVuaGFuZGxlZCA9IHRvSFRNTEVsZW1l
bnQodW5oYW5kbGVkQXNzb2NpYXRlZEVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKHVuaGFuZGxl
ZC0+aXNGb2N1c2FibGUoKSAmJiB1bmhhbmRsZWQtPmluRG9jdW1lbnQoKSkKKyAgICAgICAgICAg
IEZvcm1Bc3NvY2lhdGVkRWxlbWVudCYgY29udHJvbCA9ICp1bmhhbmRsZWRJbnZhbGlkQ29udHJv
bHNbaV07CisgICAgICAgICAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGNvbnRyb2wuYXNIVE1M
RWxlbWVudCgpOworICAgICAgICAgICAgaWYgKGVsZW1lbnQuaXNGb2N1c2FibGUoKSAmJiBlbGVt
ZW50LmluRG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IFN0cmluZyBtZXNzYWdlKCJBbiBpbnZhbGlkIGZvcm0gY29udHJvbCB3aXRoIG5hbWU9JyVuYW1l
JyBpcyBub3QgZm9jdXNhYmxlLiIpOwotICAgICAgICAgICAgbWVzc2FnZS5yZXBsYWNlKCIlbmFt
ZSIsIHVuaGFuZGxlZEFzc29jaWF0ZWRFbGVtZW50LT5uYW1lKCkpOworICAgICAgICAgICAgbWVz
c2FnZS5yZXBsYWNlKCIlbmFtZSIsIGNvbnRyb2wubmFtZSgpKTsKICAgICAgICAgICAgIGRvY3Vt
ZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoUmVuZGVyaW5nTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsIG1lc3NhZ2UpOwogICAgICAgICB9CiAgICAgfQorCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCkBAIC0zMDIsMTYgKzMwNCwxNCBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6Z2V0VGV4
dEZpZWxkVmFsdWVzKFN0cmluZ1BhaXJWZWN0b3ImIGZpZWxkTmFtZXNBbmRWYWx1ZXMpCiAKICAg
ICBmaWVsZE5hbWVzQW5kVmFsdWVzLnJlc2VydmVDYXBhY2l0eShtX2Fzc29jaWF0ZWRFbGVtZW50
cy5zaXplKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Fzc29jaWF0ZWRFbGVt
ZW50cy5zaXplKCk7ICsraSkgewotICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGNvbnRy
b2wgPSBtX2Fzc29jaWF0ZWRFbGVtZW50c1tpXTsKLSAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1l
bnQgPSB0b0hUTUxFbGVtZW50KGNvbnRyb2wpOworICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1l
bnQmIGNvbnRyb2wgPSAqbV9hc3NvY2lhdGVkRWxlbWVudHNbaV07CisgICAgICAgIEhUTUxFbGVt
ZW50JiBlbGVtZW50ID0gY29udHJvbC5hc0hUTUxFbGVtZW50KCk7CiAgICAgICAgIGlmICghaXNI
VE1MSW5wdXRFbGVtZW50KGVsZW1lbnQpKQogICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSB0b0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCk7
Ci0gICAgICAgIGlmICghaW5wdXQtPmlzVGV4dEZpZWxkKCkpCisgICAgICAgIEhUTUxJbnB1dEVs
ZW1lbnQmIGlucHV0ID0gdG9IVE1MSW5wdXRFbGVtZW50KGVsZW1lbnQpOworICAgICAgICBpZiAo
IWlucHV0LmlzVGV4dEZpZWxkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBm
aWVsZE5hbWVzQW5kVmFsdWVzLmFwcGVuZChtYWtlX3BhaXIoaW5wdXQtPm5hbWUoKS5zdHJpbmco
KSwgaW5wdXQtPnZhbHVlKCkpKTsKKyAgICAgICAgZmllbGROYW1lc0FuZFZhbHVlcy5hcHBlbmQo
bWFrZV9wYWlyKGlucHV0Lm5hbWUoKS5zdHJpbmcoKSwgaW5wdXQudmFsdWUoKSkpOwogICAgIH0K
IH0KIApAQCAtNDMxLDcgKzQzMSw3IEBAIHVuc2lnbmVkIEhUTUxGb3JtRWxlbWVudDo6Zm9ybUVs
ZW1lbnRJbmRleFdpdGhGb3JtQXR0cmlidXRlKEVsZW1lbnQqIGVsZW1lbnQsIHVuCiAgICAgd2hp
bGUgKGxlZnQgIT0gcmlnaHQpIHsKICAgICAgICAgdW5zaWduZWQgbWlkZGxlID0gbGVmdCArICgo
cmlnaHQgLSBsZWZ0KSAvIDIpOwogICAgICAgICBBU1NFUlQobWlkZGxlIDwgbV9hc3NvY2lhdGVk
RWxlbWVudHNCZWZvcmVJbmRleCB8fCBtaWRkbGUgPj0gbV9hc3NvY2lhdGVkRWxlbWVudHNBZnRl
ckluZGV4KTsKLSAgICAgICAgcG9zaXRpb24gPSBlbGVtZW50LT5jb21wYXJlRG9jdW1lbnRQb3Np
dGlvbih0b0hUTUxFbGVtZW50KG1fYXNzb2NpYXRlZEVsZW1lbnRzW21pZGRsZV0pKTsKKyAgICAg
ICAgcG9zaXRpb24gPSBlbGVtZW50LT5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbigmbV9hc3NvY2lh
dGVkRWxlbWVudHNbbWlkZGxlXS0+YXNIVE1MRWxlbWVudCgpKTsKICAgICAgICAgaWYgKHBvc2l0
aW9uICYgRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HKQogICAgICAgICAgICAgcmlnaHQgPSBt
aWRkbGU7CiAgICAgICAgIGVsc2UKQEAgLTQzOSw3ICs0MzksNyBAQCB1bnNpZ25lZCBIVE1MRm9y
bUVsZW1lbnQ6OmZvcm1FbGVtZW50SW5kZXhXaXRoRm9ybUF0dHJpYnV0ZShFbGVtZW50KiBlbGVt
ZW50LCB1bgogICAgIH0KICAgICAKICAgICBBU1NFUlQobGVmdCA8IG1fYXNzb2NpYXRlZEVsZW1l
bnRzQmVmb3JlSW5kZXggfHwgbGVmdCA+PSBtX2Fzc29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXgp
OwotICAgIHBvc2l0aW9uID0gZWxlbWVudC0+Y29tcGFyZURvY3VtZW50UG9zaXRpb24odG9IVE1M
RWxlbWVudChtX2Fzc29jaWF0ZWRFbGVtZW50c1tsZWZ0XSkpOworICAgIHBvc2l0aW9uID0gZWxl
bWVudC0+Y29tcGFyZURvY3VtZW50UG9zaXRpb24oJm1fYXNzb2NpYXRlZEVsZW1lbnRzW2xlZnRd
LT5hc0hUTUxFbGVtZW50KCkpOwogICAgIGlmIChwb3NpdGlvbiAmIERPQ1VNRU5UX1BPU0lUSU9O
X0ZPTExPV0lORykKICAgICAgICAgcmV0dXJuIGxlZnQ7CiAgICAgcmV0dXJuIGxlZnQgKyAxOwpA
QCAtNDQ3LDI4ICs0NDcsMzEgQEAgdW5zaWduZWQgSFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVu
dEluZGV4V2l0aEZvcm1BdHRyaWJ1dGUoRWxlbWVudCogZWxlbWVudCwgdW4KIAogdW5zaWduZWQg
SFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4KEZvcm1Bc3NvY2lhdGVkRWxlbWVudCog
YXNzb2NpYXRlZEVsZW1lbnQpCiB7Ci0gICAgSFRNTEVsZW1lbnQqIGFzc29jaWF0ZWRIVE1MRWxl
bWVudCA9IHRvSFRNTEVsZW1lbnQoYXNzb2NpYXRlZEVsZW1lbnQpOworICAgIEFTU0VSVChhc3Nv
Y2lhdGVkRWxlbWVudCk7CisKKyAgICBIVE1MRWxlbWVudCYgYXNzb2NpYXRlZEhUTUxFbGVtZW50
ID0gYXNzb2NpYXRlZEVsZW1lbnQtPmFzSFRNTEVsZW1lbnQoKTsKKwogICAgIC8vIFRyZWF0cyBz
ZXBhcmF0ZWx5IHRoZSBjYXNlIHdoZXJlIHRoaXMgZWxlbWVudCBoYXMgdGhlIGZvcm0gYXR0cmli
dXRlCiAgICAgLy8gZm9yIHBlcmZvcm1hbmNlIGNvbnNpZGVyYXRpb24uCi0gICAgaWYgKGFzc29j
aWF0ZWRIVE1MRWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikpIHsKLSAgICAgICAg
dW5zaWduZWQgc2hvcnQgcG9zaXRpb24gPSBjb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhc3NvY2lh
dGVkSFRNTEVsZW1lbnQpOworICAgIGlmIChhc3NvY2lhdGVkSFRNTEVsZW1lbnQuZmFzdEhhc0F0
dHJpYnV0ZShmb3JtQXR0cikpIHsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9zaXRpb24gPSBj
b21wYXJlRG9jdW1lbnRQb3NpdGlvbigmYXNzb2NpYXRlZEhUTUxFbGVtZW50KTsKICAgICAgICAg
aWYgKHBvc2l0aW9uICYgRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HKSB7CiAgICAgICAgICAg
ICArK21fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXg7CiAgICAgICAgICAgICArK21fYXNz
b2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleDsKLSAgICAgICAgICAgIHJldHVybiBIVE1MRm9ybUVs
ZW1lbnQ6OmZvcm1FbGVtZW50SW5kZXhXaXRoRm9ybUF0dHJpYnV0ZShhc3NvY2lhdGVkSFRNTEVs
ZW1lbnQsIDAsIG1fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXggLSAxKTsKKyAgICAgICAg
ICAgIHJldHVybiBIVE1MRm9ybUVsZW1lbnQ6OmZvcm1FbGVtZW50SW5kZXhXaXRoRm9ybUF0dHJp
YnV0ZSgmYXNzb2NpYXRlZEhUTUxFbGVtZW50LCAwLCBtX2Fzc29jaWF0ZWRFbGVtZW50c0JlZm9y
ZUluZGV4IC0gMSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHBvc2l0aW9uICYgRE9DVU1FTlRf
UE9TSVRJT05fRk9MTE9XSU5HICYmICEocG9zaXRpb24gJiBET0NVTUVOVF9QT1NJVElPTl9DT05U
QUlORURfQlkpKQotICAgICAgICAgICAgcmV0dXJuIEhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1l
bnRJbmRleFdpdGhGb3JtQXR0cmlidXRlKGFzc29jaWF0ZWRIVE1MRWxlbWVudCwgbV9hc3NvY2lh
dGVkRWxlbWVudHNBZnRlckluZGV4LCBtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCkpOworICAg
ICAgICAgICAgcmV0dXJuIEhUTUxGb3JtRWxlbWVudDo6Zm9ybUVsZW1lbnRJbmRleFdpdGhGb3Jt
QXR0cmlidXRlKCZhc3NvY2lhdGVkSFRNTEVsZW1lbnQsIG1fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0
ZXJJbmRleCwgbV9hc3NvY2lhdGVkRWxlbWVudHMuc2l6ZSgpKTsKICAgICB9CiAKICAgICAvLyBD
aGVjayBmb3IgdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGlzIGVsZW1lbnQgaXMgdGhlIHZlcnkg
bGFzdCB0aGluZyBpbgogICAgIC8vIHRoZSBmb3JtJ3MgdHJlZSBvZiBjaGlsZHJlbjsgd2UgZG9u
J3Qgd2FudCB0byB3YWxrIHRoZSBlbnRpcmUgdHJlZSBpbiB0aGF0CiAgICAgLy8gY29tbW9uIGNh
c2UgdGhhdCBvY2N1cnMgZHVyaW5nIHBhcnNpbmc7IGluc3RlYWQgd2UnbGwganVzdCByZXR1cm4g
YSB2YWx1ZQogICAgIC8vIHRoYXQgc2F5cyAiYWRkIHRoaXMgZm9ybSBlbGVtZW50IHRvIHRoZSBl
bmQgb2YgdGhlIGFycmF5Ii4KLSAgICBpZiAoRWxlbWVudFRyYXZlcnNhbDo6bmV4dChhc3NvY2lh
dGVkSFRNTEVsZW1lbnQsIHRoaXMpKSB7CisgICAgaWYgKEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQo
JmFzc29jaWF0ZWRIVE1MRWxlbWVudCwgdGhpcykpIHsKICAgICAgICAgdW5zaWduZWQgaSA9IG1f
YXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXg7CiAgICAgICAgIGZvciAoRWxlbWVudCogZWxl
bWVudCA9IHRoaXM7IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KGVs
ZW1lbnQsIHRoaXMpKSB7Ci0gICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBhc3NvY2lhdGVkSFRN
TEVsZW1lbnQpIHsKKyAgICAgICAgICAgIGlmIChlbGVtZW50ID09ICZhc3NvY2lhdGVkSFRNTEVs
ZW1lbnQpIHsKICAgICAgICAgICAgICAgICArK21fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRl
eDsKICAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgICAgIH0KQEAgLTYxNiwxNiAr
NjE5LDE3IEBAIGJvb2wgSFRNTEZvcm1FbGVtZW50OjpjaGVja0ludmFsaWRDb250cm9sc0FuZENv
bGxlY3RVbmhhbmRsZWQoVmVjdG9yPFJlZlB0cjxGb3JtCiAjaWZuZGVmIE5ERUJVRwogdm9pZCBI
VE1MRm9ybUVsZW1lbnQ6OmFzc2VydEl0ZW1DYW5CZUluUGFzdE5hbWVzTWFwKEZvcm1OYW1lZEl0
ZW0qIGl0ZW0pIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBpdGVtLT5hc0hU
TUxFbGVtZW50KCk7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oZWxlbWVu
dCk7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oZWxlbWVudC0+Zm9ybSgp
ID09IHRoaXMpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGl0ZW0pOwor
ICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0gaXRlbS0+YXNIVE1MRWxlbWVudCgpOworICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGVsZW1lbnQuZm9ybSgpID09IHRoaXMpOwor
CiAgICAgaWYgKGl0ZW0tPmlzRm9ybUFzc29jaWF0ZWRFbGVtZW50KCkpIHsKICAgICAgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04obV9hc3NvY2lhdGVkRWxlbWVudHMuZmluZChz
dGF0aWNfY2FzdDxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPihpdGVtKSkgIT0gbm90Rm91bmQpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oZWxlbWVudC0+aGFzVGFnTmFtZShpbWdUYWcpKTsKLSAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTihtX2ltYWdlRWxlbWVudHMuZmluZCh0b0hUTUxJbWFnZUVsZW1lbnQo
ZWxlbWVudCkpICE9IG5vdEZvdW5kKTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihlbGVtZW50Lmhhc1RhZ05hbWUoaW1nVGFnKSk7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04obV9pbWFnZUVsZW1lbnRzLmZpbmQoJnRvSFRNTEltYWdlRWxlbWVudChl
bGVtZW50KSkgIT0gbm90Rm91bmQpOwogfQogI2Vsc2UKIGlubGluZSB2b2lkIEhUTUxGb3JtRWxl
bWVudDo6YXNzZXJ0SXRlbUNhbkJlSW5QYXN0TmFtZXNNYXAoRm9ybU5hbWVkSXRlbSopIGNvbnN0
CkBAIC02MzYsMTIgKzY0MCwxMiBAQCBpbmxpbmUgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmFzc2Vy
dEl0ZW1DYW5CZUluUGFzdE5hbWVzTWFwKEZvcm1OYW1lZEl0ZW0qKSBjb25zdAogSFRNTEVsZW1l
bnQqIEhUTUxGb3JtRWxlbWVudDo6ZWxlbWVudEZyb21QYXN0TmFtZXNNYXAoY29uc3QgQXRvbWlj
U3RyaW5nJiBwYXN0TmFtZSkgY29uc3QKIHsKICAgICBpZiAocGFzdE5hbWUuaXNFbXB0eSgpIHx8
ICFtX3Bhc3ROYW1lc01hcCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIEZvcm1OYW1lZEl0ZW0qIGl0ZW0gPSBtX3Bhc3ROYW1lc01hcC0+Z2V0KHBhc3RO
YW1lLmltcGwoKSk7CiAgICAgaWYgKCFpdGVtKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgYXNzZXJ0SXRlbUNhbkJlSW5QYXN0TmFtZXNNYXAoaXRlbSk7
Ci0gICAgcmV0dXJuIGl0ZW0tPmFzSFRNTEVsZW1lbnQoKTsKKyAgICByZXR1cm4gJml0ZW0tPmFz
SFRNTEVsZW1lbnQoKTsKIH0KIAogdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmFkZFRvUGFzdE5hbWVz
TWFwKEZvcm1OYW1lZEl0ZW0qIGl0ZW0sIGNvbnN0IEF0b21pY1N0cmluZyYgcGFzdE5hbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IDBiYjIxNGZlZTYyNmJjOTA3
YzYyYTY3OTcwZWNiOTE3ZTljMTdkYTQuLjhkNDA2NWMxOGMzMDJiNWFmNzcyMWQwNzYxYTM3Y2M4
ZmNmOGM0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCkBAIC0xMTEs
OSArMTExLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25S
ZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBPVkVSUklERTsKIAotICAgIHZpcnR1
YWwgYm9vbCBpc0Zvcm1Bc3NvY2lhdGVkRWxlbWVudCgpIE9WRVJSSURFIEZJTkFMIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzRm9ybUFzc29jaWF0ZWRFbGVtZW50KCkgY29u
c3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIEZvcm1OYW1l
ZEl0ZW0qIGFzRm9ybU5hbWVkSXRlbSgpIE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIHRoaXM7IH0K
LSAgICB2aXJ0dWFsIEhUTUxFbGVtZW50KiBhc0hUTUxFbGVtZW50KCkgT1ZFUlJJREUgRklOQUwg
eyByZXR1cm4gdGhpczsgfQorICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQmIGFzSFRNTEVsZW1lbnQo
KSBPVkVSUklERSBGSU5BTCB7IHJldHVybiAqdGhpczsgfQorICAgIHZpcnR1YWwgY29uc3QgSFRN
TEVsZW1lbnQmIGFzSFRNTEVsZW1lbnQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiAq
dGhpczsgfQogCiAgICAgSFRNTEltYWdlTG9hZGVyIG1faW1hZ2VMb2FkZXI7CiAgICAgSFRNTEZv
cm1FbGVtZW50KiBtX2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
YmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgK
aW5kZXggMzgxN2YzODE3ZjY3ZGQ4YmQzMmMyMTk3MzcwMzEyNWQ3YWY0Njk2Ny4uYjc5ZTY5OTFk
MmMwNjUzYjIwM2Q5NjQzYjZjYWRmODNjNTU4YzNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuaApAQCAtMTAxLDcgKzEwMSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBIVE1MRm9ybUVsZW1lbnQqIHZpcnR1YWxGb3JtKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIEZv
cm1OYW1lZEl0ZW0qIGFzRm9ybU5hbWVkSXRlbSgpIE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIHRo
aXM7IH0KLSAgICB2aXJ0dWFsIEhUTUxFbGVtZW50KiBhc0hUTUxFbGVtZW50KCkgT1ZFUlJJREUg
RklOQUwgeyByZXR1cm4gdGhpczsgfQorICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQmIGFzSFRNTEVs
ZW1lbnQoKSBPVkVSUklERSBGSU5BTCB7IHJldHVybiAqdGhpczsgfQorICAgIHZpcnR1YWwgY29u
c3QgSFRNTEVsZW1lbnQmIGFzSFRNTEVsZW1lbnQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJl
dHVybiAqdGhpczsgfQogCiAgICAgU3RyaW5nIG1fY2xhc3NJZDsKICAgICBib29sIG1fZG9jTmFt
ZWRJdGVtIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4
IDNjNDFlZmUxMjY3YjJhYmQ2NDE0N2UxNGEwZDlmMTgyNjc2MWNiZjUuLmNkY2Q5Yzc2MDk0MWFl
ZTQ3YzBlZjNlZDljNTU0NzY1Nzg0ODdjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1T
dWJtaXNzaW9uLmNwcApAQCAtMTg1LDE3ICsxODUsMTcgQEAgUGFzc1JlZlB0cjxGb3JtU3VibWlz
c2lvbj4gRm9ybVN1Ym1pc3Npb246OmNyZWF0ZShIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGNvbnN0
IEEKIAogICAgIGJvb2wgY29udGFpbnNQYXNzd29yZERhdGEgPSBmYWxzZTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZm9ybS0+YXNzb2NpYXRlZEVsZW1lbnRzKCkuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBjb250cm9sID0gZm9ybS0+YXNzb2Np
YXRlZEVsZW1lbnRzKClbaV07Ci0gICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1M
RWxlbWVudChjb250cm9sKTsKLSAgICAgICAgaWYgKCFlbGVtZW50LT5pc0Rpc2FibGVkRm9ybUNv
bnRyb2woKSkKLSAgICAgICAgICAgIGNvbnRyb2wtPmFwcGVuZEZvcm1EYXRhKCpkb21Gb3JtRGF0
YSwgaXNNdWx0aVBhcnRGb3JtKTsKKyAgICAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50JiBjb250
cm9sID0gKmZvcm0tPmFzc29jaWF0ZWRFbGVtZW50cygpW2ldOworICAgICAgICBIVE1MRWxlbWVu
dCYgZWxlbWVudCA9IGNvbnRyb2wuYXNIVE1MRWxlbWVudCgpOworICAgICAgICBpZiAoIWVsZW1l
bnQuaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCisgICAgICAgICAgICBjb250cm9sLmFwcGVuZEZv
cm1EYXRhKCpkb21Gb3JtRGF0YSwgaXNNdWx0aVBhcnRGb3JtKTsKICAgICAgICAgaWYgKGlzSFRN
TElucHV0RWxlbWVudChlbGVtZW50KSkgewotICAgICAgICAgICAgSFRNTElucHV0RWxlbWVudCog
aW5wdXQgPSB0b0hUTUxJbnB1dEVsZW1lbnQoZWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAoaW5w
dXQtPmlzVGV4dEZpZWxkKCkpIHsKLSAgICAgICAgICAgICAgICBmb3JtVmFsdWVzLmFwcGVuZChw
YWlyPFN0cmluZywgU3RyaW5nPihpbnB1dC0+bmFtZSgpLnN0cmluZygpLCBpbnB1dC0+dmFsdWUo
KSkpOwotICAgICAgICAgICAgICAgIGlucHV0LT5hZGRTZWFyY2hSZXN1bHQoKTsKKyAgICAgICAg
ICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gdG9IVE1MSW5wdXRFbGVtZW50KGVsZW1lbnQp
OworICAgICAgICAgICAgaWYgKGlucHV0LmlzVGV4dEZpZWxkKCkpIHsKKyAgICAgICAgICAgICAg
ICBmb3JtVmFsdWVzLmFwcGVuZChwYWlyPFN0cmluZywgU3RyaW5nPihpbnB1dC5uYW1lKCkuc3Ry
aW5nKCksIGlucHV0LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICBpbnB1dC5hZGRTZWFyY2hS
ZXN1bHQoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpbnB1dC0+aXNQYXNzd29y
ZEZpZWxkKCkgJiYgIWlucHV0LT52YWx1ZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGlmIChp
bnB1dC5pc1Bhc3N3b3JkRmllbGQoKSAmJiAhaW5wdXQudmFsdWUoKS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICAgICAgY29udGFpbnNQYXNzd29yZERhdGEgPSB0cnVlOwogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5w
dXRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lu
cHV0SGFuZGxlci5jcHAKaW5kZXggYzg1ODkwMjNmYTAyOTlmODk0OGE3YzgzN2IyMWVjMWU4ZTI1
N2M5Ni4uZDhhYWFhOTNiZDJlN2U3MzYzNWE4OTk2YjcwOTY1NTg1N2MyYjljNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRs
ZXIuY3BwCkBAIC05NzAsNyArOTcwLDcgQEAgdm9pZCBJbnB1dEhhbmRsZXI6OnVwZGF0ZUZvcm1T
dGF0ZSgpCiAgICAgICAgIC8vIENoZWNrIGZvciB0aGUgZm9jdXNlZCBlbGVtZW50LCBhbmQgaWYg
d2UgZG9uJ3QgaGF2ZSBhbnkgdGFyZ2V0IG5vZGVzLCB1c2UgdGhlIGZvcm0gb3JkZXIgbmV4dAog
ICAgICAgICAvLyBhbmQgcHJldmlvdXMgYXMgcGxhY2Vob2xkZXJzLiBJbiBhIGZvcm0gd2l0aG91
dCBwcm92aWRlZCB0YWIgaW5kaWNlcywgdGhpcyB3aWxsIGRldGVybWluZSB0aGUKICAgICAgICAg
Ly8gY29udHJvbCBmaWVsZHMuCi0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBjb25zdF9jYXN0
PEhUTUxFbGVtZW50Kj4odG9IVE1MRWxlbWVudChmb3JtRWxlbWVudExpc3RbZm9jdXNFbGVtZW50
SWRdKSk7CisgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBmb3JtRWxlbWVudExpc3RbZm9jdXNF
bGVtZW50SWRdLT5hc0hUTUxFbGVtZW50KCk7CiAgICAgICAgIGlmIChlbGVtZW50ID09IG1fY3Vy
cmVudEZvY3VzRWxlbWVudCkgewogICAgICAgICAgICAgSW5wdXRMb2coUGxhdGZvcm06OkxvZ0xl
dmVsSW5mbywgIklucHV0SGFuZGxlcjo6dXBkYXRlRm9ybVN0YXRlIGZvdW5kIGZvY3VzZWQgZWxl
bWVudC4iKTsKIApAQCAtOTgzLDcgKzk4Myw3IEBAIHZvaWQgSW5wdXRIYW5kbGVyOjp1cGRhdGVG
b3JtU3RhdGUoKQogICAgICAgICAgICAgLy8gUHJldmlvdXMKICAgICAgICAgICAgIGlmICghbV9w
cmV2aW91c0ZvY3VzYWJsZVRleHRFbGVtZW50KSB7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQg
cHJldmlvdXNFbGVtZW50SWQgPSBmb2N1c0VsZW1lbnRJZCAtIDE7IHByZXZpb3VzRWxlbWVudElk
ID49IDA7IHByZXZpb3VzRWxlbWVudElkLS0pIHsKLSAgICAgICAgICAgICAgICAgICAgRWxlbWVu
dCogcHJldkVsZW1lbnQgPSBjb25zdF9jYXN0PEhUTUxFbGVtZW50Kj4odG9IVE1MRWxlbWVudChm
b3JtRWxlbWVudExpc3RbcHJldmlvdXNFbGVtZW50SWRdKSk7CisgICAgICAgICAgICAgICAgICAg
IEVsZW1lbnQqIHByZXZFbGVtZW50ID0gZm9ybUVsZW1lbnRMaXN0W3ByZXZpb3VzRWxlbWVudElk
XS0+YXNIVE1MRWxlbWVudCgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoRE9NU3VwcG9ydDo6
aXNUZXh0QmFzZWRDb250ZW50RWRpdGFibGVFbGVtZW50KHByZXZFbGVtZW50KSAmJiAhRE9NU3Vw
cG9ydDo6aXNFbGVtZW50UmVhZE9ubHkocHJldkVsZW1lbnQpICYmICFzdGF0aWNfY2FzdDxOb2Rl
Kj4ocHJldkVsZW1lbnQpLT50YWJJbmRleCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBt
X3ByZXZpb3VzRm9jdXNhYmxlVGV4dEVsZW1lbnQgPSBwcmV2RWxlbWVudDsKICAgICAgICAgICAg
ICAgICAgICAgICAgIElucHV0TG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRs
ZXI6OnVwZGF0ZUZvcm1TdGF0ZSBmb3VuZCBwcmV2aW91cyBlbGVtZW50Iik7CkBAIC05OTUsNyAr
OTk1LDcgQEAgdm9pZCBJbnB1dEhhbmRsZXI6OnVwZGF0ZUZvcm1TdGF0ZSgpCiAgICAgICAgICAg
ICAvLyBOZXh0CiAgICAgICAgICAgICBpZiAoIW1fbmV4dEZvY3VzYWJsZVRleHRFbGVtZW50KSB7
CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgbmV4dEVsZW1lbnRJZCA9IGZvY3VzRWxlbWVudElk
ICsgMTsgbmV4dEVsZW1lbnRJZCA8IGZvcm1FbGVtZW50Q291bnQ7IG5leHRFbGVtZW50SWQrKykg
ewotICAgICAgICAgICAgICAgICAgICBFbGVtZW50KiBuZXh0RWxlbWVudCA9IGNvbnN0X2Nhc3Q8
SFRNTEVsZW1lbnQqPih0b0hUTUxFbGVtZW50KGZvcm1FbGVtZW50TGlzdFtuZXh0RWxlbWVudElk
XSkpOworICAgICAgICAgICAgICAgICAgICBFbGVtZW50KiBuZXh0RWxlbWVudCA9IGZvcm1FbGVt
ZW50TGlzdFtuZXh0RWxlbWVudElkXS0+YXNIVE1MRWxlbWVudCgpOwogICAgICAgICAgICAgICAg
ICAgICBpZiAoRE9NU3VwcG9ydDo6aXNUZXh0QmFzZWRDb250ZW50RWRpdGFibGVFbGVtZW50KG5l
eHRFbGVtZW50KSAmJiAhRE9NU3VwcG9ydDo6aXNFbGVtZW50UmVhZE9ubHkobmV4dEVsZW1lbnQp
ICYmICFzdGF0aWNfY2FzdDxOb2RlKj4obmV4dEVsZW1lbnQpLT50YWJJbmRleCgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBtX25leHRGb2N1c2FibGVUZXh0RWxlbWVudCA9IG5leHRFbGVt
ZW50OwogICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRMb2coUGxhdGZvcm06OkxvZ0xldmVs
SW5mbywgIklucHV0SGFuZGxlcjo6dXBkYXRlRm9ybVN0YXRlIGZvdW5kIG5leHQgZWxlbWVudCIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5tbQppbmRleCAwYzY1MzhmNWU0MzdjZDI5NTY4NmY2YTA5YzZkNDNlOGFkM2QyZDFjLi5iYzM4
MDg2OGZiOGYzOTFkOGE5MzZhMmFmMDRmNTg5ZDgxNTNjMzk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAtMjkxLDkgKzI5
MSw5IEBAIC0gKERPTUVsZW1lbnQgKillbGVtZW50V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZSBp
bkZvcm06KERPTUVsZW1lbnQgKilmb3JtCiAgICAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVk
RWxlbWVudCo+JiBlbGVtZW50cyA9IGZvcm1FbGVtZW50LT5hc3NvY2lhdGVkRWxlbWVudHMoKTsK
ICAgICBBdG9taWNTdHJpbmcgdGFyZ2V0TmFtZSA9IG5hbWU7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGVsZW1lbnRzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEZvcm1Bc3NvY2lhdGVk
RWxlbWVudCogZWx0ID0gZWxlbWVudHNbaV07Ci0gICAgICAgIGlmIChlbHQtPm5hbWUoKSA9PSB0
YXJnZXROYW1lKQotICAgICAgICAgICAgcmV0dXJuIGtpdCh0b0hUTUxFbGVtZW50KGVsdCkpOwor
ICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQmIGVsZW1lbnQgPSAqZWxlbWVudHNbaV07Cisg
ICAgICAgIGlmIChlbGVtZW50Lm5hbWUoKSA9PSB0YXJnZXROYW1lKQorICAgICAgICAgICAgcmV0
dXJuIGtpdCgmZWxlbWVudC5hc0hUTUxFbGVtZW50KCkpOwogICAgIH0KICAgICByZXR1cm4gbmls
OwogfQpAQCAtMzM5LDExICszMzksMTEgQEAgLSAoTlNBcnJheSAqKWNvbnRyb2xzSW5Gb3JtOihE
T01FbGVtZW50ICopZm9ybQogICAgIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQq
PiYgZWxlbWVudHMgPSBmb3JtRWxlbWVudC0+YXNzb2NpYXRlZEVsZW1lbnRzKCk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW1lbnRzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGlm
IChlbGVtZW50c1tpXS0+aXNFbnVtZXJhdGFibGUoKSkgeyAvLyBTa2lwIG9wdGlvbiBlbGVtZW50
cywgb3RoZXIgZHVkcwotICAgICAgICAgICAgRE9NRWxlbWVudCogZGUgPSBraXQodG9IVE1MRWxl
bWVudChlbGVtZW50c1tpXSkpOworICAgICAgICAgICAgRE9NRWxlbWVudCAqZWxlbWVudCA9IGtp
dCgmZWxlbWVudHNbaV0tPmFzSFRNTEVsZW1lbnQoKSk7CiAgICAgICAgICAgICBpZiAoIXJlc3Vs
dHMpCi0gICAgICAgICAgICAgICAgcmVzdWx0cyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhP
YmplY3Q6ZGVdOworICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBbTlNNdXRhYmxlQXJyYXkgYXJy
YXlXaXRoT2JqZWN0OmVsZW1lbnRdOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IFtyZXN1bHRzIGFkZE9iamVjdDpkZV07CisgICAgICAgICAgICAgICAgW3Jlc3VsdHMgYWRkT2Jq
ZWN0OmVsZW1lbnRdOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXN1bHRzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93
aW4vV2ViRnJhbWUuY3BwCmluZGV4IDBjNGE4MTY5N2JiYWQyNjU2YWQxM2Q3NmQxYzgzMGFlMGY1
MjA0NjQuLmVhOGJkMTg4MDc1OGE1MTc2MTA5ZWMyYTZiM2FlYjNhNzFiMzk0MmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJGcmFtZS5jcHAKQEAgLTEzMzYsNyArMTMzNiw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmNv
bnRyb2xzSW5Gb3JtKElET01FbGVtZW50KiBmb3JtLCBJRE9NRWxlbWVudCoqIGNvbnRyb2xzLCBp
bnQqCiAgICAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBlbGVtZW50cyA9
IGZvcm1FbGVtZW50LT5hc3NvY2lhdGVkRWxlbWVudHMoKTsKICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgaWYgKGVsZW1lbnRzLmF0KGkpLT5pc0VudW1lcmF0
YWJsZSgpKSB7IC8vIFNraXAgb3B0aW9uIGVsZW1lbnRzLCBvdGhlciBkdWRzCi0gICAgICAgICAg
ICBjb250cm9sc1sqY0NvbnRyb2xzXSA9IERPTUVsZW1lbnQ6OmNyZWF0ZUluc3RhbmNlKHRvSFRN
TEVsZW1lbnQoZWxlbWVudHMuYXQoaSkpKTsKKyAgICAgICAgICAgIGNvbnRyb2xzWypjQ29udHJv
bHNdID0gRE9NRWxlbWVudDo6Y3JlYXRlSW5zdGFuY2UoJmVsZW1lbnRzLmF0KGkpLT5hc0hUTUxF
bGVtZW50KCkpOwogICAgICAgICAgICAgKCpjQ29udHJvbHMpKys7CiAgICAgICAgIH0KICAgICB9
Cg==
</data>
<flag name="review"
          id="236580"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="236581"
          type_id="3"
          status="-"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>