<?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>120599</bug_id>
          
          <creation_ts>2013-09-02 05:11:58 -0700</creation_ts>
          <short_desc>Clean up ContainerNode::childrenChanged</short_desc>
          <delta_ts>2013-09-02 08:19:57 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>923662</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-02 05:11:58 -0700</bug_when>
    <thetext>make it better</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923667</commentid>
    <comment_count>1</comment_count>
      <attachid>210276</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-02 05:23:40 -0700</bug_when>
    <thetext>Created attachment 210276
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923696</commentid>
    <comment_count>2</comment_count>
      <attachid>210276</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-02 07:17:31 -0700</bug_when>
    <thetext>Comment on attachment 210276
patch

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

r=me. Way cool.

&gt; Source/WebCore/html/HTMLElement.h:111
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

OVERRIDE plz

&gt; Source/WebCore/html/HTMLObjectElement.h:79
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

OVERRIDE

&gt; Source/WebCore/html/HTMLOptGroupElement.h:52
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

OVERRIDE

&gt; Source/WebCore/html/HTMLOptionElement.h:82
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

OVERRIDE

&gt; Source/WebCore/html/HTMLOutputElement.h:62
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

OVERRIDE

&gt; Source/WebCore/html/HTMLScriptElement.h:49
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

OVERRIDE

&gt; Source/WebCore/html/HTMLSelectElement.h:182
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

OVERRIDE

&gt; Source/WebCore/html/HTMLStyleElement.h:69
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

OVERRIDE

&gt; Source/WebCore/html/HTMLTextAreaElement.h:99
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

OVERRIDE

&gt; Source/WebCore/svg/SVGClipPathElement.h:49
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

OVERRIDE

&gt; Source/WebCore/svg/SVGElement.h:163
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

OVERRIDE!!!!

&gt; Source/WebCore/svg/SVGFELightElement.h:47
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

Another OVERRIDE

&gt; Source/WebCore/svg/SVGFilterElement.h:55
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

Yep, OVERRIDE

&gt; Source/WebCore/svg/SVGFontFaceElement.h:60
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

OVERRIDE!

&gt; Source/WebCore/svg/SVGFontFaceFormatElement.h:35
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

UNDER... wait no OVERRIDE

&gt; Source/WebCore/svg/SVGFontFaceSrcElement.h:39
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

OVERRIDE

&gt; Source/WebCore/svg/SVGFontFaceUriElement.h:44
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

OVERRIDE

&gt; Source/WebCore/svg/SVGGradientElement.h:100
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

Maximum OVERRIDE

&gt; Source/WebCore/svg/SVGMarkerElement.h:131
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

override

&gt; Source/WebCore/svg/SVGMaskElement.h:50
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

OVERRIDE

&gt; Source/WebCore/svg/SVGPatternElement.h:64
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

OvErRiDe

&gt; Source/WebCore/svg/SVGScriptElement.h:51
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

O-Ride

&gt; Source/WebCore/svg/SVGStyleElement.h:57
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

overRide

&gt; Source/WebCore/svg/SVGTitleElement.h:39
&gt; +    virtual void childrenChanged(const ChildChange&amp;);

o-v-e-r-r-i-d-e</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923722</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-02 08:19:25 -0700</bug_when>
    <thetext>https://trac.webkit.org/r154957</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923723</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-02 08:19:57 -0700</bug_when>
    <thetext>with MAXIMUM OVERRIDE</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210276</attachid>
            <date>2013-09-02 05:23:40 -0700</date>
            <delta_ts>2013-09-02 07:17:31 -0700</delta_ts>
            <desc>patch</desc>
            <filename>childrenchanged-refactor.patch</filename>
            <type>text/plain</type>
            <size>77180</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NDk0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MiBAQAorMjAxMy0wOS0wMiAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgQ29udGFpbmVy
Tm9kZTo6Y2hpbGRyZW5DaGFuZ2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjA1OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAtIE1ha2UgY2hpbGRyZW5DaGFuZ2VkIHRha2UgYSBzaW5nbGUgc3RydWN0
IGFyZ3VtZW50IGluc3RlYWQgb2YgYSBsb25nIGxpc3Qgb2YgdGhlbQorICAgICAgICAtIFVzZSBl
bnVtIGluc3RlYWQgb2YgY2hpbGRDb3VudERlbHRhLiBJdCB3YXMgYWx3YXlzIC0xLCAxIG9yIHRo
ZSB0b3RhbCBudW1iZXIgb2YgY2hpbGRyZW4gKGluIGNhc2Ugb2YgcmVtb3ZpbmcgdGhlbSBhbGwp
LgorICAgICAgICAtIFJlbW92ZSB1c2Ugb2YgTm9kZSosIGdpdmUgdGhlIGNoYW5nZSByYW5nZSBh
cyBFbGVtZW50cy4KKyAgICAgICAgLSBSZWxhdGVkIGNsZWFudXBzLgorCisgICAgICAgICogZG9t
L0F0dHIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXR0cjo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAg
ICAgICAgKiBkb20vQXR0ci5oOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OnBhcnNlckFwcGVuZERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6ZGlzcGF0Y2hNb2RpZmllZEV2ZW50KToKKyAgICAg
ICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6ZGV0
ZXJtaW5lQ2hpbGRDaGFuZ2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6
Om5vdGlmeUNoaWxkSW5zZXJ0ZWRPclJlbW92ZWQpOgorICAgICAgICAKKyAgICAgICAgICAgIEFk
ZCBwcml2YXRlIGhlbHBlcnMgZm9yIHNldHRpbmcgdXAgdGhlIHN0cnVjdC4KKworICAgICAgICAo
V2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VySW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250YWluZXJOb2RlOjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjpwYXJzZXJSZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2Rl
OjpyZW1vdmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjphcHBl
bmRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpwYXJzZXJBcHBlbmRD
aGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpjaGlsZHJlbkNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6dXBkYXRlVHJlZUFmdGVySW5zZXJ0
aW9uKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMpOgorICAgICAgICAK
KyAgICAgICAgICAgIENsZWFuIHVwIGFuZCBzaW1wbGlmeS4gU2luY2Ugd2Ugbm93IGdldCBlbGVt
ZW50IHJhbmdlIGF1dG9tYXRpY2FsbHkgd2UgZG9uJ3QgbmVlZCB0byBjb21wdXRlIGl0LgorCisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKToKKyAgICAgICAgKiBkb20vRWxl
bWVudC5oOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd1Jvb3Q6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3Qu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnQ6OmFkanVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkcmVuQ2hhbmdlZCk6Cisg
ICAgICAgIAorICAgICAgICAgICAgVHJ5IHRvIGtlZXAgdGhlIGV4aXN0aW5nIGJlaGF2aW9yLiBU
aGlzIGNvZGUgbmVlZHMgIG1vcmUgY2xlYW51cCB0byBiZSBzYW5lLiBJdCBzaG91bGRuJ3Qgb3Bl
cmF0ZSBvbiBOb2RlcworICAgICAgICAgICAgYXMgaXQgb25seSByZWFsbHkgY2FyZXMgYWJvdXQg
RWxlbWVudHMuCisKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGaWVsZFNl
dEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAg
KiBodG1sL0hUTUxPYmplY3RFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MT3B0R3JvdXBF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRHcm91cEVsZW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
T3B0aW9uRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxPcHRp
b25FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MT3V0cHV0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAg
ICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MU2NyaXB0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Vs
ZWN0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICog
aHRtbC9IVE1MU3R5bGVFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRs
ZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MVGl0bGVFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICog
aHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVMaWdodEVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGaWx0ZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdG
aWx0ZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAgICAgICAqIHN2Zy9TVkdGb250RmFj
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VFbGVtZW50OjpjaGls
ZHJlbkNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGb250RmFjZUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBz
dmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZvbnRGYWNl
U3JjRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250RmFjZVNyY0VsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZvbnRGYWNlU3JjRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRm9udEZhY2VVcmlFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHR3JhZGllbnRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2Vy
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHTWFz
a0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKToKKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdTdHlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RpdGxl
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHVGl0bGVFbGVtZW50
Lmg6CisKIDIwMTMtMDktMDEgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBBZGQgJ2VkZ2VNb2RlJyBhdHRyaWJ1dGUgdG8gU1ZHRkVHYXVzc2lhbkJsdXIKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vQXR0ci5jcHAJKHJldmlzaW9uIDE1NDkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9B
dHRyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wgQXR0cjo6Y2hp
bGRUeXBlQWxsb3dlZChOb2RlVHlwZSB0eXAKICAgICB9CiB9CiAKLXZvaWQgQXR0cjo6Y2hpbGRy
ZW5DaGFuZ2VkKGJvb2wsIE5vZGUqLCBOb2RlKiwgaW50KQordm9pZCBBdHRyOjpjaGlsZHJlbkNo
YW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKQogewogICAgIGlmIChtX2lnbm9yZUNoaWxkcmVuQ2hh
bmdlZCA+IDApCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9BdHRy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaAkocmV2aXNpb24gMTU0
OTM5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaAkod29ya2luZyBjb3B5KQpAQCAtODYs
NyArODYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc0F0dHJpYnV0ZU5vZGUoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQo
Tm9kZVR5cGUpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29s
IGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBh
ZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKKyAgICB2aXJ0dWFsIHZv
aWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJik7CiAKICAgICBBdHRyaWJ1dGUm
IGVsZW1lbnRBdHRyaWJ1dGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3Rl
ckRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmNwcAkocmV2aXNpb24gMTU0OTM5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRh
dGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiQ2hhcmFj
dGVyRGF0YS5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50VHJh
dmVyc2FsLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgpAQCAtOTYsOCArOTcsMTUgQEAgdW5z
aWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YQogICAgIGRvY3VtZW50KCkuaW5j
RE9NVHJlZVZlcnNpb24oKTsKICAgICAvLyBXZSBkb24ndCBjYWxsIGRpc3BhdGNoTW9kaWZpZWRF
dmVudCBoZXJlIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0aGUKICAgICAvLyBwYXJzZXIgdG8gZGlz
cGF0Y2ggRE9NIG11dGF0aW9uIGV2ZW50cy4KLSAgICBpZiAocGFyZW50Tm9kZSgpKQotICAgICAg
ICBwYXJlbnROb2RlKCktPmNoaWxkcmVuQ2hhbmdlZCgpOworICAgIGlmIChwYXJlbnROb2RlKCkp
IHsKKyAgICAgICAgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgY2hhbmdlID0geworICAgICAg
ICAgICAgQ29udGFpbmVyTm9kZTo6VGV4dENoYW5nZWQsCisgICAgICAgICAgICBFbGVtZW50VHJh
dmVyc2FsOjpwcmV2aW91c1NpYmxpbmcodGhpcyksCisgICAgICAgICAgICBFbGVtZW50VHJhdmVy
c2FsOjpuZXh0U2libGluZyh0aGlzKSwKKyAgICAgICAgICAgIENvbnRhaW5lck5vZGU6OkNoaWxk
Q2hhbmdlU291cmNlUGFyc2VyCisgICAgICAgIH07CisgICAgICAgIHBhcmVudE5vZGUoKS0+Y2hp
bGRyZW5DaGFuZ2VkKGNoYW5nZSk7CisgICAgfQogCiAgICAgcmV0dXJuIGNoYXJhY3Rlckxlbmd0
aExpbWl0OwogfQpAQCAtMjA1LDggKzIxMywxNSBAQCB2b2lkIENoYXJhY3RlckRhdGE6OmRpc3Bh
dGNoTW9kaWZpZWRFdmVuCiAgICAgaWYgKE93blB0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cD4gbXV0YXRpb25SZWNpcGllbnRzID0gTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6
OmNyZWF0ZUZvckNoYXJhY3RlckRhdGFNdXRhdGlvbih0aGlzKSkKICAgICAgICAgbXV0YXRpb25S
ZWNpcGllbnRzLT5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUNo
YXJhY3RlckRhdGEodGhpcywgb2xkRGF0YSkpOwogICAgIGlmICghaXNJblNoYWRvd1RyZWUoKSkg
ewotICAgICAgICBpZiAocGFyZW50Tm9kZSgpKQotICAgICAgICAgICAgcGFyZW50Tm9kZSgpLT5j
aGlsZHJlbkNoYW5nZWQoKTsKKyAgICAgICAgaWYgKHBhcmVudE5vZGUoKSkgeworICAgICAgICAg
ICAgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgY2hhbmdlID0geworICAgICAgICAgICAgICAg
IENvbnRhaW5lck5vZGU6OlRleHRDaGFuZ2VkLAorICAgICAgICAgICAgICAgIEVsZW1lbnRUcmF2
ZXJzYWw6OnByZXZpb3VzU2libGluZyh0aGlzKSwKKyAgICAgICAgICAgICAgICBFbGVtZW50VHJh
dmVyc2FsOjpuZXh0U2libGluZyh0aGlzKSwKKyAgICAgICAgICAgICAgICBDb250YWluZXJOb2Rl
OjpDaGlsZENoYW5nZVNvdXJjZUFQSQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHBhcmVu
dE5vZGUoKS0+Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CisgICAgICAgIH0KICAgICAgICAgaWYg
KGRvY3VtZW50KCkuaGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01DSEFSQUNURVJEQVRBTU9E
SUZJRURfTElTVEVORVIpKQogICAgICAgICAgICAgZGlzcGF0Y2hTY29wZWRFdmVudChNdXRhdGlv
bkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTUNoYXJhY3RlckRhdGFNb2RpZmllZEV2ZW50
LCB0cnVlLCAwLCBvbGREYXRhLCBtX2RhdGEpKTsKICAgICAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9k
aWZpZWRFdmVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkocmV2
aXNpb24gMTU0OTM5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKICNpbmNsdWRlICJFZGl0b3Iu
aCIKKyNpbmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKQEAg
LTY2LDcgKzY3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCBkaXNwYXRj
aENoaWxkSW5zZXJ0aW9uRXZlbnRzKE5vZGUqKTsKIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRS
ZW1vdmFsRXZlbnRzKE5vZGUqKTsKLXN0YXRpYyB2b2lkIHVwZGF0ZVRyZWVBZnRlckluc2VydGlv
bihDb250YWluZXJOb2RlKiwgTm9kZSosIEF0dGFjaEJlaGF2aW9yKTsKIAogdHlwZWRlZiBwYWly
PFJlZlB0cjxOb2RlPiwgdW5zaWduZWQ+IENhbGxiYWNrUGFyYW1ldGVyczsKIHR5cGVkZWYgcGFp
cjxOb2RlQ2FsbGJhY2ssIENhbGxiYWNrUGFyYW1ldGVycz4gQ2FsbGJhY2tJbmZvOwpAQCAtMzE1
LDcgKzMxNSw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKFBhc3NSZWYKIAog
ICAgICAgICBpbnNlcnRCZWZvcmVDb21tb24obmV4dC5nZXQoKSwgY2hpbGQpOwogCi0gICAgICAg
IHVwZGF0ZVRyZWVBZnRlckluc2VydGlvbih0aGlzLCBjaGlsZCwgYXR0YWNoQmVoYXZpb3IpOwor
ICAgICAgICB1cGRhdGVUcmVlQWZ0ZXJJbnNlcnRpb24oY2hpbGQsIGF0dGFjaEJlaGF2aW9yKTsK
ICAgICB9CiAKICAgICBkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7CkBAIC0zNDgsNiAr
MzQ4LDI2IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlQ29tbW9uKE4KICAgICBu
ZXdDaGlsZC0+c2V0TmV4dFNpYmxpbmcobmV4dENoaWxkKTsKIH0KIAorQ29udGFpbmVyTm9kZTo6
Q2hpbGRDaGFuZ2VUeXBlIENvbnRhaW5lck5vZGU6OmRldGVybWluZUNoaWxkQ2hhbmdlVHlwZShO
b2RlKiBjaGlsZCwgQ2hpbGRJbnNlcnRpb25PclJlbW92YWwgaW5zZXJ0aW9uT3JSZW1vdmFsKQor
eworICAgIGlmIChjaGlsZC0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gaW5zZXJ0
aW9uT3JSZW1vdmFsID09IENoaWxkUmVtb3ZlZCA/IEVsZW1lbnRSZW1vdmVkIDogRWxlbWVudElu
c2VydGVkOworICAgIGlmIChjaGlsZC0+aXNUZXh0Tm9kZSgpKQorICAgICAgICByZXR1cm4gaW5z
ZXJ0aW9uT3JSZW1vdmFsID09IENoaWxkUmVtb3ZlZCA/IFRleHRSZW1vdmVkIDogVGV4dEluc2Vy
dGVkOworICAgIHJldHVybiBOb25Db250ZW50c0NoaWxkQ2hhbmdlZDsKK30KKwordm9pZCBDb250
YWluZXJOb2RlOjpub3RpZnlDaGlsZEluc2VydGVkT3JSZW1vdmVkKE5vZGUqIGNoaWxkLCBOb2Rl
KiBwcmV2aW91c1NpYmxpbmcsIE5vZGUqIG5leHRTaWJsaW5nLCBDaGlsZEluc2VydGlvbk9yUmVt
b3ZhbCBpbnNlcnRpb25PclJlbW92YWwsIENoaWxkQ2hhbmdlU291cmNlIHNvdXJjZSkKK3sKKyAg
ICBDaGlsZENoYW5nZSBjaGFuZ2U7CisgICAgY2hhbmdlLnR5cGUgPSBkZXRlcm1pbmVDaGlsZENo
YW5nZVR5cGUoY2hpbGQsIGluc2VydGlvbk9yUmVtb3ZhbCk7CisgICAgY2hhbmdlLnByZXZpb3Vz
U2libGluZ0VsZW1lbnQgPSAoIXByZXZpb3VzU2libGluZyB8fCBwcmV2aW91c1NpYmxpbmctPmlz
RWxlbWVudE5vZGUoKSkgPyB0b0VsZW1lbnQocHJldmlvdXNTaWJsaW5nKSA6IEVsZW1lbnRUcmF2
ZXJzYWw6OnByZXZpb3VzU2libGluZyhwcmV2aW91c1NpYmxpbmcpOworICAgIGNoYW5nZS5uZXh0
U2libGluZ0VsZW1lbnQgPSAoIW5leHRTaWJsaW5nIHx8IG5leHRTaWJsaW5nLT5pc0VsZW1lbnRO
b2RlKCkpID8gdG9FbGVtZW50KG5leHRTaWJsaW5nKSA6IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRT
aWJsaW5nKG5leHRTaWJsaW5nKTsKKyAgICBjaGFuZ2Uuc291cmNlID0gc291cmNlOworCisgICAg
Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7Cit9CisKIHZvaWQgQ29udGFpbmVyTm9kZTo6cGFyc2Vy
SW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG5leHRDaGlsZCkK
IHsKICAgICBBU1NFUlQobmV3Q2hpbGQpOwpAQCAtMzcwLDcgKzM5MCw4IEBAIHZvaWQgQ29udGFp
bmVyTm9kZTo6cGFyc2VySW5zZXJ0QmVmb3JlKFAKIAogICAgIENoaWxkTGlzdE11dGF0aW9uU2Nv
cGUodGhpcykuY2hpbGRBZGRlZChuZXdDaGlsZC5nZXQoKSk7CiAKLSAgICBjaGlsZHJlbkNoYW5n
ZWQodHJ1ZSwgbmV3Q2hpbGQtPnByZXZpb3VzU2libGluZygpLCBuZXh0Q2hpbGQsIDEpOworICAg
IG5vdGlmeUNoaWxkSW5zZXJ0ZWRPclJlbW92ZWQobmV3Q2hpbGQuZ2V0KCksIG5ld0NoaWxkLT5w
cmV2aW91c1NpYmxpbmcoKSwgbmV3Q2hpbGQtPm5leHRTaWJsaW5nKCksIENoaWxkSW5zZXJ0ZWQs
IENoaWxkQ2hhbmdlU291cmNlUGFyc2VyKTsKKwogICAgIENoaWxkTm9kZUluc2VydGlvbk5vdGlm
aWVyKHRoaXMpLm5vdGlmeShuZXdDaGlsZC5nZXQoKSk7CiB9CiAKQEAgLTQ1NCw3ICs0NzUsNyBA
QCBib29sIENvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZChQYXNzUmVmCiAgICAgICAgICAgICAg
ICAgYXBwZW5kQ2hpbGRUb0NvbnRhaW5lcihjaGlsZCwgdGhpcyk7CiAgICAgICAgIH0KIAotICAg
ICAgICB1cGRhdGVUcmVlQWZ0ZXJJbnNlcnRpb24odGhpcywgY2hpbGQsIGF0dGFjaEJlaGF2aW9y
KTsKKyAgICAgICAgdXBkYXRlVHJlZUFmdGVySW5zZXJ0aW9uKGNoaWxkLCBhdHRhY2hCZWhhdmlv
cik7CiAgICAgfQogCiAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwpAQCAtNTQ4
LDcgKzU2OSw5IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGQoTm9kZSogb2wKICAg
ICAgICAgTm9kZSogcHJldiA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgTm9k
ZSogbmV4dCA9IGNoaWxkLT5uZXh0U2libGluZygpOwogICAgICAgICByZW1vdmVCZXR3ZWVuKHBy
ZXYsIG5leHQsIGNoaWxkLmdldCgpKTsKLSAgICAgICAgY2hpbGRyZW5DaGFuZ2VkKGZhbHNlLCBw
cmV2LCBuZXh0LCAtMSk7CisKKyAgICAgICAgbm90aWZ5Q2hpbGRJbnNlcnRlZE9yUmVtb3ZlZChj
aGlsZC5nZXQoKSwgcHJldiwgbmV4dCwgQ2hpbGRSZW1vdmVkLCBDaGlsZENoYW5nZVNvdXJjZUFQ
SSk7CisKICAgICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHRoaXMpLm5vdGlmeShjaGls
ZC5nZXQoKSk7CiAgICAgfQogICAgIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoKTsKQEAg
LTU5OSw3ICs2MjIsOCBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlclJlbW92ZUNoaWxkKE5v
CiAKICAgICByZW1vdmVCZXR3ZWVuKHByZXYsIG5leHQsIG9sZENoaWxkKTsKIAotICAgIGNoaWxk
cmVuQ2hhbmdlZCh0cnVlLCBwcmV2LCBuZXh0LCAtMSk7CisgICAgbm90aWZ5Q2hpbGRJbnNlcnRl
ZE9yUmVtb3ZlZChvbGRDaGlsZCwgcHJldiwgbmV4dCwgQ2hpbGRSZW1vdmVkLCBDaGlsZENoYW5n
ZVNvdXJjZVBhcnNlcik7CisKICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIodGhpcykubm90
aWZ5KG9sZENoaWxkKTsKIH0KIApAQCAtNjM2LDcgKzY2MCw4IEBAIHZvaWQgQ29udGFpbmVyTm9k
ZTo6cmVtb3ZlQ2hpbGRyZW4oKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAg
Y2hpbGRyZW5DaGFuZ2VkKGZhbHNlLCAwLCAwLCAtc3RhdGljX2Nhc3Q8aW50PihyZW1vdmVkQ2hp
bGRyZW4uc2l6ZSgpKSk7CisgICAgICAgIENoaWxkQ2hhbmdlIGNoYW5nZSA9IHsgQWxsQ2hpbGRy
ZW5SZW1vdmVkLCBudWxscHRyLCBudWxscHRyLCBDaGlsZENoYW5nZVNvdXJjZUFQSSB9OworICAg
ICAgICBjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcmVtb3ZlZENoaWxkcmVuLnNpemUoKTsgKytpKQogICAgICAgICAgICAg
Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHRoaXMpLm5vdGlmeShyZW1vdmVkQ2hpbGRyZW5baV0u
Z2V0KCkpOwpAQCAtNjk1LDcgKzcyMCw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hp
bGQoUGFzc1JlZlAKICAgICAgICAgICAgIGFwcGVuZENoaWxkVG9Db250YWluZXIoY2hpbGQsIHRo
aXMpOwogICAgICAgICB9CiAKLSAgICAgICAgdXBkYXRlVHJlZUFmdGVySW5zZXJ0aW9uKHRoaXMs
IGNoaWxkLCBhdHRhY2hCZWhhdmlvcik7CisgICAgICAgIHVwZGF0ZVRyZWVBZnRlckluc2VydGlv
bihjaGlsZCwgYXR0YWNoQmVoYXZpb3IpOwogICAgIH0KIAogICAgIGRpc3BhdGNoU3VidHJlZU1v
ZGlmaWVkRXZlbnQoKTsKQEAgLTcyNiw3ICs3NTEsOCBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBh
cnNlckFwcGVuZENoaWxkKFBhCiAKICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlKHRoaXMpLmNo
aWxkQWRkZWQobmV3Q2hpbGQuZ2V0KCkpOwogCi0gICAgY2hpbGRyZW5DaGFuZ2VkKHRydWUsIGxh
c3QsIDAsIDEpOworICAgIG5vdGlmeUNoaWxkSW5zZXJ0ZWRPclJlbW92ZWQobmV3Q2hpbGQuZ2V0
KCksIGxhc3QsIG51bGxwdHIsIENoaWxkSW5zZXJ0ZWQsIENoaWxkQ2hhbmdlU291cmNlUGFyc2Vy
KTsKKwogICAgIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHRoaXMpLm5vdGlmeShuZXdDaGls
ZC5nZXQoKSk7CiB9CiAKQEAgLTgwNCwxMCArODMwLDEwIEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6
c2NoZWR1bGVTZXROZWVkc1N0eWwKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhjaGFuZ2VU
eXBlKTsKIH0KIAotdm9pZCBDb250YWluZXJOb2RlOjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFu
Z2VkQnlQYXJzZXIsIE5vZGUqLCBOb2RlKiwgaW50IGNoaWxkQ291bnREZWx0YSkKK3ZvaWQgQ29u
dGFpbmVyTm9kZTo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiB7
CiAgICAgZG9jdW1lbnQoKS5pbmNET01UcmVlVmVyc2lvbigpOwotICAgIGlmICghY2hhbmdlZEJ5
UGFyc2VyICYmIGNoaWxkQ291bnREZWx0YSkKKyAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGls
ZENoYW5nZVNvdXJjZUFQSSAmJiBjaGFuZ2UudHlwZSAhPSBUZXh0Q2hhbmdlZCkKICAgICAgICAg
ZG9jdW1lbnQoKS51cGRhdGVSYW5nZXNBZnRlckNoaWxkcmVuQ2hhbmdlZCh0aGlzKTsKICAgICBp
bnZhbGlkYXRlTm9kZUxpc3RDYWNoZXNJbkFuY2VzdG9ycygpOwogfQpAQCAtMTAzNiwyMCArMTA2
MiwxOSBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhOCiAgICAgfQog
fQogCi1zdGF0aWMgdm9pZCB1cGRhdGVUcmVlQWZ0ZXJJbnNlcnRpb24oQ29udGFpbmVyTm9kZSog
cGFyZW50LCBOb2RlKiBjaGlsZCwgQXR0YWNoQmVoYXZpb3IgYXR0YWNoQmVoYXZpb3IpCit2b2lk
IENvbnRhaW5lck5vZGU6OnVwZGF0ZVRyZWVBZnRlckluc2VydGlvbihOb2RlKiBjaGlsZCwgQXR0
YWNoQmVoYXZpb3IgYXR0YWNoQmVoYXZpb3IpCiB7Ci0gICAgQVNTRVJUKHBhcmVudC0+cmVmQ291
bnQoKSk7CiAgICAgQVNTRVJUKGNoaWxkLT5yZWZDb3VudCgpKTsKIAotICAgIENoaWxkTGlzdE11
dGF0aW9uU2NvcGUocGFyZW50KS5jaGlsZEFkZGVkKGNoaWxkKTsKKyAgICBDaGlsZExpc3RNdXRh
dGlvblNjb3BlKHRoaXMpLmNoaWxkQWRkZWQoY2hpbGQpOwogCi0gICAgcGFyZW50LT5jaGlsZHJl
bkNoYW5nZWQoZmFsc2UsIGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSwgY2hpbGQtPm5leHRTaWJs
aW5nKCksIDEpOworICAgIG5vdGlmeUNoaWxkSW5zZXJ0ZWRPclJlbW92ZWQoY2hpbGQsIGNoaWxk
LT5wcmV2aW91c1NpYmxpbmcoKSwgY2hpbGQtPm5leHRTaWJsaW5nKCksIENoaWxkSW5zZXJ0ZWQs
IENoaWxkQ2hhbmdlU291cmNlQVBJKTsKIAotICAgIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVy
KHBhcmVudCkubm90aWZ5KGNoaWxkKTsKKyAgICBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcih0
aGlzKS5ub3RpZnkoY2hpbGQpOwogCiAgICAgLy8gRklYTUU6IEF0dGFjaG1lbnQgc2hvdWxkIGJl
IHRoZSBmaXJzdCBvcGVyYXRpb24gaW4gdGhpcyBmdW5jdGlvbiwgYnV0IHNvbWUgY29kZQogICAg
IC8vIChmb3IgZXhhbXBsZSwgSFRNTEZvcm1Db250cm9sRWxlbWVudCdzIGF1dG9mb2N1cyBzdXBw
b3J0KSByZXF1aXJlcyB0aGlzIG9yZGVyaW5nLgotICAgIGlmIChwYXJlbnQtPmF0dGFjaGVkKCkg
JiYgIWNoaWxkLT5hdHRhY2hlZCgpICYmIGNoaWxkLT5wYXJlbnROb2RlKCkgPT0gcGFyZW50KSB7
CisgICAgaWYgKGF0dGFjaGVkKCkgJiYgIWNoaWxkLT5hdHRhY2hlZCgpICYmIGNoaWxkLT5wYXJl
bnROb2RlKCkgPT0gdGhpcykgewogICAgICAgICBpZiAoYXR0YWNoQmVoYXZpb3IgPT0gQXR0YWNo
TGF6aWx5KSB7CiAgICAgICAgICAgICBpZiAoY2hpbGQtPmlzRWxlbWVudE5vZGUoKSkKICAgICAg
ICAgICAgICAgICB0b0VsZW1lbnQoY2hpbGQpLT5sYXp5QXR0YWNoKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmgJKHJldmlzaW9uIDE1NDkzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxMiArMTA5LDE1IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRpbmdCb3goKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVTZXROZWVkc1N0eWxlUmVjYWxjKFN0eWxl
Q2hhbmdlVHlwZSA9IEZ1bGxTdHlsZUNoYW5nZSkgT1ZFUlJJREUgRklOQUw7CiAKLSAgICAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIC8vIE5vdGlmaWNhdGlvbiBvZiBkb2N1bWVudCBzdHJ1
Y3R1cmUgY2hhbmdlcyAoc2VlIE5vZGUuaCBmb3IgbW9yZSBub3RpZmljYXRpb24gbWV0aG9kcykK
LQotICAgIC8vIE5vdGlmaWVzIHRoZSBub2RlIHRoYXQgaXQncyBsaXN0IG9mIGNoaWxkcmVuIGhh
dmUgY2hhbmdlZCAoZWl0aGVyIGJ5IGFkZGluZyBvciByZW1vdmluZyBjaGlsZCBub2RlcyksIG9y
IGEgY2hpbGQKLSAgICAvLyBub2RlIHRoYXQgaXMgb2YgdGhlIHR5cGUgQ0RBVEFfU0VDVElPTl9O
T0RFLCBURVhUX05PREUgb3IgQ09NTUVOVF9OT0RFIGhhcyBjaGFuZ2VkIGl0cyB2YWx1ZS4KLSAg
ICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY3JlYXRlZEJ5UGFyc2VyID0gZmFs
c2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNo
aWxkQ291bnREZWx0YSA9IDApOworICAgIGVudW0gQ2hpbGRDaGFuZ2VUeXBlIHsgRWxlbWVudElu
c2VydGVkLCBFbGVtZW50UmVtb3ZlZCwgVGV4dEluc2VydGVkLCBUZXh0UmVtb3ZlZCwgVGV4dENo
YW5nZWQsIEFsbENoaWxkcmVuUmVtb3ZlZCwgTm9uQ29udGVudHNDaGlsZENoYW5nZWQgfTsKKyAg
ICBlbnVtIENoaWxkQ2hhbmdlU291cmNlIHsgQ2hpbGRDaGFuZ2VTb3VyY2VQYXJzZXIsIENoaWxk
Q2hhbmdlU291cmNlQVBJIH07CisgICAgc3RydWN0IENoaWxkQ2hhbmdlIHsKKyAgICAgICAgQ2hp
bGRDaGFuZ2VUeXBlIHR5cGU7CisgICAgICAgIEVsZW1lbnQqIHByZXZpb3VzU2libGluZ0VsZW1l
bnQ7CisgICAgICAgIEVsZW1lbnQqIG5leHRTaWJsaW5nRWxlbWVudDsKKyAgICAgICAgQ2hpbGRD
aGFuZ2VTb3VyY2Ugc291cmNlOworICAgIH07CisgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChjb25zdCBDaGlsZENoYW5nZSYpOwogCiAgICAgdm9pZCBkaXNjb25uZWN0RGVzY2VuZGFu
dEZyYW1lcygpOwogCkBAIC0xNDcsNiArMTUwLDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBnZXRV
cHBlckxlZnRDb3JuZXIoRmxvYXRQb2ludCYpIGNvbnN0OwogICAgIGJvb2wgZ2V0TG93ZXJSaWdo
dENvcm5lcihGbG9hdFBvaW50JikgY29uc3Q7CiAKKyAgICBlbnVtIENoaWxkSW5zZXJ0aW9uT3JS
ZW1vdmFsIHsgQ2hpbGRJbnNlcnRlZCwgQ2hpbGRSZW1vdmVkIH07CisgICAgdm9pZCBub3RpZnlD
aGlsZEluc2VydGVkT3JSZW1vdmVkKE5vZGUqIGNoaWxkLCBOb2RlKiBwcmV2aW91c1NpYmxpbmcs
IE5vZGUqIG5leHRTaWJsaW5nLCBDaGlsZEluc2VydGlvbk9yUmVtb3ZhbCwgQ2hpbGRDaGFuZ2VT
b3VyY2UpOworICAgIHN0YXRpYyBDaGlsZENoYW5nZVR5cGUgZGV0ZXJtaW5lQ2hpbGRDaGFuZ2VU
eXBlKE5vZGUqIGNoaWxkLCBDaGlsZEluc2VydGlvbk9yUmVtb3ZhbCk7CisKKyAgICB2b2lkIHVw
ZGF0ZVRyZWVBZnRlckluc2VydGlvbihOb2RlKiBjaGlsZCwgQXR0YWNoQmVoYXZpb3IpOworCiAg
ICAgYm9vbCBpc0NvbnRhaW5lck5vZGUoKSBjb25zdCBXVEZfREVMRVRFRF9GVU5DVElPTjsKIAog
ICAgIE5vZGUqIG1fZmlyc3RDaGlsZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2
aXNpb24gMTU0OTM5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzcyLDkgKzc3Miw5IEBAIGJvb2wgRG9jdW1lbnQ6Omhhc01hbmlmZXN0KCkg
Y29uc3QKICAgICByZXR1cm4gZG9jdW1lbnRFbGVtZW50KCkgJiYgZG9jdW1lbnRFbGVtZW50KCkt
Pmhhc1RhZ05hbWUoaHRtbFRhZykgJiYgZG9jdW1lbnRFbGVtZW50KCktPmhhc0F0dHJpYnV0ZSht
YW5pZmVzdEF0dHIpOwogfQogCi12b2lkIERvY3VtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBj
aGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGlu
dCBjaGlsZENvdW50RGVsdGEpCit2b2lkIERvY3VtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3Qg
Q2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKLSAgICBDb250YWluZXJOb2RlOjpjaGlsZHJlbkNoYW5n
ZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50
RGVsdGEpOworICAgIENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogCiAg
ICAgRWxlbWVudCogbmV3RG9jdW1lbnRFbGVtZW50ID0gMDsKICAgICBhdXRvIGZpcnN0RWxlbWVu
dENoaWxkID0gZWxlbWVudENoaWxkcmVuKHRoaXMpLmJlZ2luKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAkocmV2aXNpb24gMTU0OTM5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMDEsNyArMTIwMSw3IEBAIHByaXZhdGU6CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNEb2N1bWVudCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIg
PSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBp
bnQgY2hpbGRDb3VudERlbHRhID0gMCk7CisgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBTdHJpbmcgbm9k
ZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTQ5MzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MzUsNzEgKzE1MzUsNTcg
QEAgc3RhdGljIHZvaWQgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKEVsZQogICAgICAgICBlbGVt
ZW50LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNoZWNrRm9yU2li
bGluZ1N0eWxlQ2hhbmdlcyhFbGVtZW50KiBlLCBSZW5kZXJTdHlsZSogc3R5bGUsIGJvb2wgZmlu
aXNoZWRQYXJzaW5nQ2FsbGJhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291
bnREZWx0YSkKK2VudW0gU2libGluZ0NoZWNrVHlwZSB7IEZpbmlzaGVkUGFyc2luZ0NoaWxkcmVu
LCBTaWJsaW5nRWxlbWVudFJlbW92ZWQsIE90aGVyIH07CisKK3N0YXRpYyB2b2lkIGNoZWNrRm9y
U2libGluZ1N0eWxlQ2hhbmdlcyhFbGVtZW50KiBwYXJlbnQsIFNpYmxpbmdDaGVja1R5cGUgY2hl
Y2tUeXBlLCBFbGVtZW50KiBlbGVtZW50QmVmb3JlQ2hhbmdlLCBFbGVtZW50KiBlbGVtZW50QWZ0
ZXJDaGFuZ2UpCiB7CisgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcGFyZW50LT5yZW5kZXJTdHls
ZSgpOwogICAgIC8vIDplbXB0eSBzZWxlY3Rvci4KLSAgICBjaGVja0ZvckVtcHR5U3R5bGVDaGFu
Z2UoZSwgc3R5bGUpOworICAgIGNoZWNrRm9yRW1wdHlTdHlsZUNoYW5nZShwYXJlbnQsIHN0eWxl
KTsKICAgICAKLSAgICBpZiAoIXN0eWxlIHx8IChlLT5uZWVkc1N0eWxlUmVjYWxjKCkgJiYgZS0+
Y2hpbGRyZW5BZmZlY3RlZEJ5UG9zaXRpb25hbFJ1bGVzKCkpKQorICAgIGlmICghc3R5bGUgfHwg
KHBhcmVudC0+bmVlZHNTdHlsZVJlY2FsYygpICYmIHBhcmVudC0+Y2hpbGRyZW5BZmZlY3RlZEJ5
UG9zaXRpb25hbFJ1bGVzKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyA6Zmlyc3QtY2hp
bGQuICBJbiB0aGUgcGFyc2VyIGNhbGxiYWNrIGNhc2UsIHdlIGRvbid0IGhhdmUgdG8gY2hlY2sg
YW55dGhpbmcsIHNpbmNlIHdlIHdlcmUgcmlnaHQgdGhlIGZpcnN0IHRpbWUuCiAgICAgLy8gSW4g
dGhlIERPTSBjYXNlLCB3ZSBvbmx5IG5lZWQgdG8gZG8gc29tZXRoaW5nIGlmIHxhZnRlckNoYW5n
ZXwgaXMgbm90IDAuCiAgICAgLy8gfGFmdGVyQ2hhbmdlfCBpcyAwIGluIHRoZSBwYXJzZXIgY2Fz
ZSwgc28gaXQgd29ya3Mgb3V0IHRoYXQgd2UnbGwgc2tpcCB0aGlzIGJsb2NrLgotICAgIGlmIChl
LT5jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSAmJiBhZnRlckNoYW5nZSkgewor
ICAgIGlmIChwYXJlbnQtPmNoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpICYmIGVs
ZW1lbnRBZnRlckNoYW5nZSkgewogICAgICAgICAvLyBGaW5kIG91ciBuZXcgZmlyc3QgY2hpbGQu
Ci0gICAgICAgIE5vZGUqIG5ld0ZpcnN0Q2hpbGQgPSAwOwotICAgICAgICBmb3IgKG5ld0ZpcnN0
Q2hpbGQgPSBlLT5maXJzdENoaWxkKCk7IG5ld0ZpcnN0Q2hpbGQgJiYgIW5ld0ZpcnN0Q2hpbGQt
PmlzRWxlbWVudE5vZGUoKTsgbmV3Rmlyc3RDaGlsZCA9IG5ld0ZpcnN0Q2hpbGQtPm5leHRTaWJs
aW5nKCkpIHt9OwotICAgICAgICAKKyAgICAgICAgRWxlbWVudCogbmV3Rmlyc3RFbGVtZW50ID0g
RWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RDaGlsZChwYXJlbnQpOwogICAgICAgICAvLyBGaW5kIHRo
ZSBmaXJzdCBlbGVtZW50IG5vZGUgZm9sbG93aW5nIHxhZnRlckNoYW5nZXwKLSAgICAgICAgTm9k
ZSogZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24gPSAwOwotICAgICAgICBmb3IgKGZpcnN0RWxl
bWVudEFmdGVySW5zZXJ0aW9uID0gYWZ0ZXJDaGFuZ2U7Ci0gICAgICAgICAgICAgZmlyc3RFbGVt
ZW50QWZ0ZXJJbnNlcnRpb24gJiYgIWZpcnN0RWxlbWVudEFmdGVySW5zZXJ0aW9uLT5pc0VsZW1l
bnROb2RlKCk7Ci0gICAgICAgICAgICAgZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24gPSBmaXJz
dEVsZW1lbnRBZnRlckluc2VydGlvbi0+bmV4dFNpYmxpbmcoKSkge307Ci0gICAgICAgIAorCiAg
ICAgICAgIC8vIFRoaXMgaXMgdGhlIGluc2VydC9hcHBlbmQgY2FzZS4KLSAgICAgICAgaWYgKG5l
d0ZpcnN0Q2hpbGQgIT0gZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24gJiYgZmlyc3RFbGVtZW50
QWZ0ZXJJbnNlcnRpb24gJiYgZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24tPmF0dGFjaGVkKCkg
JiYKLSAgICAgICAgICAgIGZpcnN0RWxlbWVudEFmdGVySW5zZXJ0aW9uLT5yZW5kZXJTdHlsZSgp
ICYmIGZpcnN0RWxlbWVudEFmdGVySW5zZXJ0aW9uLT5yZW5kZXJTdHlsZSgpLT5maXJzdENoaWxk
U3RhdGUoKSkKLSAgICAgICAgICAgIGZpcnN0RWxlbWVudEFmdGVySW5zZXJ0aW9uLT5zZXROZWVk
c1N0eWxlUmVjYWxjKCk7CisgICAgICAgIGlmIChuZXdGaXJzdEVsZW1lbnQgIT0gZWxlbWVudEFm
dGVyQ2hhbmdlICYmIGVsZW1lbnRBZnRlckNoYW5nZSAmJiBlbGVtZW50QWZ0ZXJDaGFuZ2UtPmF0
dGFjaGVkKCkKKyAgICAgICAgICAgICYmIGVsZW1lbnRBZnRlckNoYW5nZS0+cmVuZGVyU3R5bGUo
KSAmJiBlbGVtZW50QWZ0ZXJDaGFuZ2UtPnJlbmRlclN0eWxlKCktPmZpcnN0Q2hpbGRTdGF0ZSgp
KQorICAgICAgICAgICAgZWxlbWVudEFmdGVyQ2hhbmdlLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7
CiAgICAgICAgICAgICAKICAgICAgICAgLy8gV2UgYWxzbyBoYXZlIHRvIGhhbmRsZSBub2RlIHJl
bW92YWwuCi0gICAgICAgIGlmIChjaGlsZENvdW50RGVsdGEgPCAwICYmIG5ld0ZpcnN0Q2hpbGQg
PT0gZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24gJiYgbmV3Rmlyc3RDaGlsZCAmJiAoIW5ld0Zp
cnN0Q2hpbGQtPnJlbmRlclN0eWxlKCkgfHwgIW5ld0ZpcnN0Q2hpbGQtPnJlbmRlclN0eWxlKCkt
PmZpcnN0Q2hpbGRTdGF0ZSgpKSkKLSAgICAgICAgICAgIG5ld0ZpcnN0Q2hpbGQtPnNldE5lZWRz
U3R5bGVSZWNhbGMoKTsKKyAgICAgICAgaWYgKGNoZWNrVHlwZSA9PSBTaWJsaW5nRWxlbWVudFJl
bW92ZWQgJiYgbmV3Rmlyc3RFbGVtZW50ID09IGVsZW1lbnRBZnRlckNoYW5nZSAmJiBuZXdGaXJz
dEVsZW1lbnQgJiYgKCFuZXdGaXJzdEVsZW1lbnQtPnJlbmRlclN0eWxlKCkgfHwgIW5ld0ZpcnN0
RWxlbWVudC0+cmVuZGVyU3R5bGUoKS0+Zmlyc3RDaGlsZFN0YXRlKCkpKQorICAgICAgICAgICAg
bmV3Rmlyc3RFbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgfQogCiAgICAgLy8g
Omxhc3QtY2hpbGQuICBJbiB0aGUgcGFyc2VyIGNhbGxiYWNrIGNhc2UsIHdlIGRvbid0IGhhdmUg
dG8gY2hlY2sgYW55dGhpbmcsIHNpbmNlIHdlIHdlcmUgcmlnaHQgdGhlIGZpcnN0IHRpbWUuCiAg
ICAgLy8gSW4gdGhlIERPTSBjYXNlLCB3ZSBvbmx5IG5lZWQgdG8gZG8gc29tZXRoaW5nIGlmIHxh
ZnRlckNoYW5nZXwgaXMgbm90IDAuCi0gICAgaWYgKGUtPmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RD
aGlsZFJ1bGVzKCkgJiYgYmVmb3JlQ2hhbmdlKSB7CisgICAgaWYgKHBhcmVudC0+Y2hpbGRyZW5B
ZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKSAmJiBlbGVtZW50QmVmb3JlQ2hhbmdlKSB7CiAgICAg
ICAgIC8vIEZpbmQgb3VyIG5ldyBsYXN0IGNoaWxkLgotICAgICAgICBOb2RlKiBuZXdMYXN0Q2hp
bGQgPSAwOwotICAgICAgICBmb3IgKG5ld0xhc3RDaGlsZCA9IGUtPmxhc3RDaGlsZCgpOyBuZXdM
YXN0Q2hpbGQgJiYgIW5ld0xhc3RDaGlsZC0+aXNFbGVtZW50Tm9kZSgpOyBuZXdMYXN0Q2hpbGQg
PSBuZXdMYXN0Q2hpbGQtPnByZXZpb3VzU2libGluZygpKSB7fTsKLSAgICAgICAgCi0gICAgICAg
IC8vIEZpbmQgdGhlIGxhc3QgZWxlbWVudCBub2RlIGdvaW5nIGJhY2t3YXJkcyBmcm9tIHxiZWZv
cmVDaGFuZ2V8Ci0gICAgICAgIE5vZGUqIGxhc3RFbGVtZW50QmVmb3JlSW5zZXJ0aW9uID0gMDsK
LSAgICAgICAgZm9yIChsYXN0RWxlbWVudEJlZm9yZUluc2VydGlvbiA9IGJlZm9yZUNoYW5nZTsK
LSAgICAgICAgICAgICBsYXN0RWxlbWVudEJlZm9yZUluc2VydGlvbiAmJiAhbGFzdEVsZW1lbnRC
ZWZvcmVJbnNlcnRpb24tPmlzRWxlbWVudE5vZGUoKTsKLSAgICAgICAgICAgICBsYXN0RWxlbWVu
dEJlZm9yZUluc2VydGlvbiA9IGxhc3RFbGVtZW50QmVmb3JlSW5zZXJ0aW9uLT5wcmV2aW91c1Np
YmxpbmcoKSkge307Ci0gICAgICAgIAotICAgICAgICBpZiAobmV3TGFzdENoaWxkICE9IGxhc3RF
bGVtZW50QmVmb3JlSW5zZXJ0aW9uICYmIGxhc3RFbGVtZW50QmVmb3JlSW5zZXJ0aW9uICYmIGxh
c3RFbGVtZW50QmVmb3JlSW5zZXJ0aW9uLT5hdHRhY2hlZCgpICYmCi0gICAgICAgICAgICBsYXN0
RWxlbWVudEJlZm9yZUluc2VydGlvbi0+cmVuZGVyU3R5bGUoKSAmJiBsYXN0RWxlbWVudEJlZm9y
ZUluc2VydGlvbi0+cmVuZGVyU3R5bGUoKS0+bGFzdENoaWxkU3RhdGUoKSkKLSAgICAgICAgICAg
IGxhc3RFbGVtZW50QmVmb3JlSW5zZXJ0aW9uLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAg
ICAgIEVsZW1lbnQqIG5ld0xhc3RFbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxk
KHBhcmVudCk7CisKKyAgICAgICAgaWYgKG5ld0xhc3RFbGVtZW50ICE9IGVsZW1lbnRCZWZvcmVD
aGFuZ2UgJiYgZWxlbWVudEJlZm9yZUNoYW5nZSAmJiBlbGVtZW50QmVmb3JlQ2hhbmdlLT5hdHRh
Y2hlZCgpCisgICAgICAgICAgICAmJiBlbGVtZW50QmVmb3JlQ2hhbmdlLT5yZW5kZXJTdHlsZSgp
ICYmIGVsZW1lbnRCZWZvcmVDaGFuZ2UtPnJlbmRlclN0eWxlKCktPmxhc3RDaGlsZFN0YXRlKCkp
CisgICAgICAgICAgICBlbGVtZW50QmVmb3JlQ2hhbmdlLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7
CiAgICAgICAgICAgICAKICAgICAgICAgLy8gV2UgYWxzbyBoYXZlIHRvIGhhbmRsZSBub2RlIHJl
bW92YWwuICBUaGUgcGFyc2VyIGNhbGxiYWNrIGNhc2UgaXMgc2ltaWxhciB0byBub2RlIHJlbW92
YWwgYXMgd2VsbCBpbiB0aGF0IHdlIG5lZWQgdG8gY2hhbmdlIHRoZSBsYXN0IGNoaWxkCiAgICAg
ICAgIC8vIHRvIG1hdGNoIG5vdy4KLSAgICAgICAgaWYgKChjaGlsZENvdW50RGVsdGEgPCAwIHx8
IGZpbmlzaGVkUGFyc2luZ0NhbGxiYWNrKSAmJiBuZXdMYXN0Q2hpbGQgPT0gbGFzdEVsZW1lbnRC
ZWZvcmVJbnNlcnRpb24gJiYgbmV3TGFzdENoaWxkICYmICghbmV3TGFzdENoaWxkLT5yZW5kZXJT
dHlsZSgpIHx8ICFuZXdMYXN0Q2hpbGQtPnJlbmRlclN0eWxlKCktPmxhc3RDaGlsZFN0YXRlKCkp
KQotICAgICAgICAgICAgbmV3TGFzdENoaWxkLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAg
ICAgIGlmICgoY2hlY2tUeXBlID09IFNpYmxpbmdFbGVtZW50UmVtb3ZlZCB8fCBjaGVja1R5cGUg
PT0gRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4pICYmIG5ld0xhc3RFbGVtZW50ID09IGVsZW1lbnRC
ZWZvcmVDaGFuZ2UgJiYgbmV3TGFzdEVsZW1lbnQKKyAgICAgICAgICAgICYmICghbmV3TGFzdEVs
ZW1lbnQtPnJlbmRlclN0eWxlKCkgfHwgIW5ld0xhc3RFbGVtZW50LT5yZW5kZXJTdHlsZSgpLT5s
YXN0Q2hpbGRTdGF0ZSgpKSkKKyAgICAgICAgICAgIG5ld0xhc3RFbGVtZW50LT5zZXROZWVkc1N0
eWxlUmVjYWxjKCk7CiAgICAgfQogCiAgICAgLy8gVGhlICsgc2VsZWN0b3IuICBXZSBuZWVkIHRv
IGludmFsaWRhdGUgdGhlIGZpcnN0IGVsZW1lbnQgZm9sbG93aW5nIHRoZSBpbnNlcnRpb24gcG9p
bnQuICBJdCBpcyB0aGUgb25seSBwb3NzaWJsZSBlbGVtZW50CiAgICAgLy8gdGhhdCBjb3VsZCBi
ZSBhZmZlY3RlZCBieSB0aGlzIERPTSBjaGFuZ2UuCi0gICAgaWYgKGUtPmNoaWxkcmVuQWZmZWN0
ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKSAmJiBhZnRlckNoYW5nZSkgewotICAgICAgICBOb2Rl
KiBmaXJzdEVsZW1lbnRBZnRlckluc2VydGlvbiA9IDA7Ci0gICAgICAgIGZvciAoZmlyc3RFbGVt
ZW50QWZ0ZXJJbnNlcnRpb24gPSBhZnRlckNoYW5nZTsKLSAgICAgICAgICAgICBmaXJzdEVsZW1l
bnRBZnRlckluc2VydGlvbiAmJiAhZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24tPmlzRWxlbWVu
dE5vZGUoKTsKLSAgICAgICAgICAgICBmaXJzdEVsZW1lbnRBZnRlckluc2VydGlvbiA9IGZpcnN0
RWxlbWVudEFmdGVySW5zZXJ0aW9uLT5uZXh0U2libGluZygpKSB7fTsKLSAgICAgICAgaWYgKGZp
cnN0RWxlbWVudEFmdGVySW5zZXJ0aW9uICYmIGZpcnN0RWxlbWVudEFmdGVySW5zZXJ0aW9uLT5h
dHRhY2hlZCgpKQotICAgICAgICAgICAgZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24tPnNldE5l
ZWRzU3R5bGVSZWNhbGMoKTsKKyAgICBpZiAocGFyZW50LT5jaGlsZHJlbkFmZmVjdGVkQnlEaXJl
Y3RBZGphY2VudFJ1bGVzKCkgJiYgZWxlbWVudEFmdGVyQ2hhbmdlKSB7CisgICAgICAgIGlmIChl
bGVtZW50QWZ0ZXJDaGFuZ2UtPmF0dGFjaGVkKCkpCisgICAgICAgICAgICBlbGVtZW50QWZ0ZXJD
aGFuZ2UtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICB9CiAKICAgICAvLyBGb3J3YXJkIHBv
c2l0aW9uYWwgc2VsZWN0b3JzIGluY2x1ZGUgdGhlIH4gc2VsZWN0b3IsIG50aC1jaGlsZCwgbnRo
LW9mLXR5cGUsIGZpcnN0LW9mLXR5cGUgYW5kIG9ubHktb2YtdHlwZS4KQEAgLTE2MDksMTggKzE1
OTUsMjAgQEAgc3RhdGljIHZvaWQgY2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKAogICAgIC8v
IHxhZnRlckNoYW5nZXwgaXMgMCBpbiB0aGUgcGFyc2VyIGNhbGxiYWNrIGNhc2UsIHNvIHdlIHdv
bid0IGRvIGFueSB3b3JrIGZvciB0aGUgZm9yd2FyZCBjYXNlIGlmIHdlIGRvbid0IGhhdmUgdG8u
CiAgICAgLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgd2UganVzdCBtYXJrIHRoZSBwYXJlbnQg
bm9kZSBhcyBjaGFuZ2VkLCBzaW5jZSB3ZSBkb24ndCB3YW50IHRvIG1ha2UgY2hpbGRyZW5DaGFu
Z2VkIE8obl4yKSBieSBjcmF3bGluZyBhbGwgb3VyIGtpZHMKICAgICAvLyBoZXJlLiAgcmVjYWxj
U3R5bGUgd2lsbCB0aGVuIGZvcmNlIGEgd2FsayBvZiB0aGUgY2hpbGRyZW4gd2hlbiBpdCBzZWVz
IHRoYXQgdGhpcyBoYXMgaGFwcGVuZWQuCi0gICAgaWYgKChlLT5jaGlsZHJlbkFmZmVjdGVkQnlG
b3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgJiYgYWZ0ZXJDaGFuZ2UpCi0gICAgICAgIHx8IChlLT5j
aGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpICYmIGJlZm9yZUNoYW5n
ZSkpCi0gICAgICAgIGUtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICBpZiAoKHBhcmVudC0+
Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpICYmIGVsZW1lbnRBZnRl
ckNoYW5nZSkKKyAgICAgICAgfHwgKHBhcmVudC0+Y2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQ
b3NpdGlvbmFsUnVsZXMoKSAmJiBlbGVtZW50QmVmb3JlQ2hhbmdlKSkKKyAgICAgICAgcGFyZW50
LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9CiAKLXZvaWQgRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVy
Q2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQordm9pZCBFbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKLSAgICBDb250YWluZXJOb2RlOjpjaGls
ZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBj
aGlsZENvdW50RGVsdGEpOwotICAgIGlmIChjaGFuZ2VkQnlQYXJzZXIpCisgICAgQ29udGFpbmVy
Tm9kZTo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CisgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0g
Q2hpbGRDaGFuZ2VTb3VyY2VQYXJzZXIpCiAgICAgICAgIGNoZWNrRm9yRW1wdHlTdHlsZUNoYW5n
ZSh0aGlzLCByZW5kZXJTdHlsZSgpKTsKLSAgICBlbHNlCi0gICAgICAgIGNoZWNrRm9yU2libGlu
Z1N0eWxlQ2hhbmdlcyh0aGlzLCByZW5kZXJTdHlsZSgpLCBmYWxzZSwgYmVmb3JlQ2hhbmdlLCBh
ZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKKyAgICBlbHNlIHsKKyAgICAgICAgU2libGlu
Z0NoZWNrVHlwZSBjaGVja1R5cGUgPSBjaGFuZ2UudHlwZSA9PSBFbGVtZW50UmVtb3ZlZCA/IFNp
YmxpbmdFbGVtZW50UmVtb3ZlZCA6IE90aGVyOworICAgICAgICBjaGVja0ZvclNpYmxpbmdTdHls
ZUNoYW5nZXModGhpcywgY2hlY2tUeXBlLCBjaGFuZ2UucHJldmlvdXNTaWJsaW5nRWxlbWVudCwg
Y2hhbmdlLm5leHRTaWJsaW5nRWxlbWVudCk7CisgICAgfQogCiAgICAgaWYgKFNoYWRvd1Jvb3Qq
IHNoYWRvd1Jvb3QgPSB0aGlzLT5zaGFkb3dSb290KCkpCiAgICAgICAgIHNoYWRvd1Jvb3QtPmlu
dmFsaWRhdGVEaXN0cmlidXRpb24oKTsKQEAgLTE2NDUsNyArMTYzMyw3IEBAIHZvaWQgRWxlbWVu
dDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKIHsKICAgICBDb250YWluZXJOb2RlOjpmaW5pc2hQ
YXJzaW5nQ2hpbGRyZW4oKTsKICAgICBzZXRJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKCk7Ci0g
ICAgY2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKHRoaXMsIHJlbmRlclN0eWxlKCksIHRydWUs
IGxhc3RDaGlsZCgpLCAwLCAwKTsKKyAgICBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXModGhp
cywgRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4sIEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RDaGlsZCh0
aGlzKSwgbnVsbHB0cik7CiAgICAgaWYgKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBk
b2N1bWVudCgpLnN0eWxlUmVzb2x2ZXJJZkV4aXN0cygpKQogICAgICAgICBzdHlsZVJlc29sdmVy
LT5wb3BQYXJlbnRFbGVtZW50KHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZp
c2lvbiAxNTQ5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NTksNyArNTU5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCBJbnNlcnRp
b25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2Vy
ID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwg
aW50IGNoaWxkQ291bnREZWx0YSA9IDApIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBPVkVSUklERSBGSU5BTDsKIAogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JSZW5kZXJlcigpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAkocmV2aXNpb24gMTU0OTM5KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsMTIgKzE0
OCwxMiBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnNldFJlc2V0U3R5bGVJbmhlcml0YW5jCiAgICAgfQog
fQogCi12b2lkIFNoYWRvd1Jvb3Q6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNl
ciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnRE
ZWx0YSkKK3ZvaWQgU2hhZG93Um9vdDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdl
JiBjaGFuZ2UpCiB7CiAgICAgaWYgKGlzT3JwaGFuKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNo
YW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CisgICAgQ29udGFpbmVyTm9kZTo6
Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiAgICAgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgJKHJldmlzaW9uIDE1NDkzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0IE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIs
IE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVs
dGEpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hp
bGRDaGFuZ2UmKSBPVkVSUklERTsKIAogICAgIC8vIFNoYWRvd1Jvb3RzIHNob3VsZCBuZXZlciBi
ZSBjbG9uZWQuCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sKSBP
VkVSUklERSB7IHJldHVybiAwOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cAkocmV2aXNpb24gMTU0OTQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgwNSwxMCArODA1LDEwIEBAIHN0YXRpYyB2b2lkIHNldEhh
c0RpckF1dG9GbGFnUmVjdXJzaXZlbHkKICAgICB9CiB9CiAKLXZvaWQgSFRNTEVsZW1lbnQ6OmNo
aWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBO
b2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKK3ZvaWQgSFRNTEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogewotICAgIFN0eWxl
ZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwg
YWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7Ci0gICAgYWRqdXN0RGlyZWN0aW9uYWxpdHlJ
Zk5lZWRlZEFmdGVyQ2hpbGRyZW5DaGFuZ2VkKGJlZm9yZUNoYW5nZSwgY2hpbGRDb3VudERlbHRh
KTsKKyAgICBTdHlsZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKKyAgICBhZGp1
c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZHJlbkNoYW5nZWQoY2hhbmdlLnByZXZp
b3VzU2libGluZ0VsZW1lbnQsIGNoYW5nZS50eXBlKTsKIH0KIAogYm9vbCBIVE1MRWxlbWVudDo6
aGFzRGlyZWN0aW9uQXV0bygpIGNvbnN0CkBAIC05MTAsMTEgKzkxMCwxMiBAQCB2b2lkIEhUTUxF
bGVtZW50OjpjYWxjdWxhdGVBbmRBZGp1c3REaXJlCiAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNh
bGMoKTsKIH0KIAotdm9pZCBIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRl
ZEFmdGVyQ2hpbGRyZW5DaGFuZ2VkKE5vZGUqIGJlZm9yZUNoYW5nZSwgaW50IGNoaWxkQ291bnRE
ZWx0YSkKK3ZvaWQgSFRNTEVsZW1lbnQ6OmFkanVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRl
ckNoaWxkcmVuQ2hhbmdlZChFbGVtZW50KiBiZWZvcmVDaGFuZ2UsIENoaWxkQ2hhbmdlVHlwZSBj
aGFuZ2VUeXBlKQogewotICAgIGlmIChkb2N1bWVudCgpLnJlbmRlcmVyKCkgJiYgY2hpbGRDb3Vu
dERlbHRhIDwgMCkgewotICAgICAgICBOb2RlKiBub2RlID0gYmVmb3JlQ2hhbmdlID8gTm9kZVRy
YXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4oYmVmb3JlQ2hhbmdlKSA6IDA7Ci0gICAgICAg
IGZvciAoaW50IGNvdW50ZXIgPSAwOyBub2RlICYmIGNvdW50ZXIgPCBjaGlsZENvdW50RGVsdGE7
IGNvdW50ZXIrKywgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHRTa2lwcGluZ0NoaWxkcmVuKG5v
ZGUpKSB7CisgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gbG9va3Mgc3VzcGljaW91cy4KKyAg
ICBpZiAoZG9jdW1lbnQoKS5yZW5kZXJlcigpICYmIChjaGFuZ2VUeXBlID09IEVsZW1lbnRSZW1v
dmVkIHx8IGNoYW5nZVR5cGUgPT0gVGV4dFJlbW92ZWQpKSB7CisgICAgICAgIE5vZGUqIG5vZGUg
PSBiZWZvcmVDaGFuZ2UgPyBiZWZvcmVDaGFuZ2UtPm5leHRTaWJsaW5nKCkgOiAwOworICAgICAg
ICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgICAg
IGlmIChlbGVtZW50QWZmZWN0c0RpcmVjdGlvbmFsaXR5KG5vZGUpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCkBAIC05MjUsOSArOTI2LDEyIEBAIHZvaWQgSFRNTEVsZW1lbnQ6OmFkanVz
dERpcmVjdGlvbmFsaXR5SWYKICAgICBpZiAoIXNlbGZPckFuY2VzdG9ySGFzRGlyQXV0b0F0dHJp
YnV0ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBOb2RlKiBvbGRNYXJrZWROb2RlID0gYmVm
b3JlQ2hhbmdlID8gTm9kZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4oYmVmb3JlQ2hh
bmdlKSA6IDA7CisgICAgTm9kZSogb2xkTWFya2VkTm9kZSA9IDA7CisgICAgaWYgKGJlZm9yZUNo
YW5nZSkKKyAgICAgICAgb2xkTWFya2VkTm9kZSA9IGNoYW5nZVR5cGUgPT0gRWxlbWVudEluc2Vy
dGVkID8gRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoYmVmb3JlQ2hhbmdlKSA6IGJlZm9y
ZUNoYW5nZS0+bmV4dFNpYmxpbmcoKTsKKwogICAgIHdoaWxlIChvbGRNYXJrZWROb2RlICYmIGVs
ZW1lbnRBZmZlY3RzRGlyZWN0aW9uYWxpdHkob2xkTWFya2VkTm9kZSkpCi0gICAgICAgIG9sZE1h
cmtlZE5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbihvbGRNYXJrZWRO
b2RlLCB0aGlzKTsKKyAgICAgICAgb2xkTWFya2VkTm9kZSA9IG9sZE1hcmtlZE5vZGUtPm5leHRT
aWJsaW5nKCk7CiAgICAgaWYgKG9sZE1hcmtlZE5vZGUpCiAgICAgICAgIHNldEhhc0RpckF1dG9G
bGFnUmVjdXJzaXZlbHkob2xkTWFya2VkTm9kZSwgZmFsc2UpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5oCShyZXZpc2lvbiAxNTQ5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxl
UHJvcGVydHlTZXQqKSBPVkVSUklERTsKICAgICB1bnNpZ25lZCBwYXJzZUJvcmRlcldpZHRoQXR0
cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVD
aGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAw
KTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJik7
CiAgICAgdm9pZCBjYWxjdWxhdGVBbmRBZGp1c3REaXJlY3Rpb25hbGl0eSgpOwogCiAgICAgdmly
dHVhbCBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IE9WRVJSSURF
OwpAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpckF0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgdm9pZCBhZGp1c3REaXJlY3Rpb25hbGl0
eUlmTmVlZGVkQWZ0ZXJDaGlsZEF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudCogY2hpbGQpOwotICAg
IHZvaWQgYWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVyQ2hpbGRyZW5DaGFuZ2VkKE5v
ZGUqIGJlZm9yZUNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSk7CisgICAgdm9pZCBhZGp1c3RE
aXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZHJlbkNoYW5nZWQoRWxlbWVudCogYmVmb3Jl
Q2hhbmdlLCBDaGlsZENoYW5nZVR5cGUpOwogICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uYWxp
dHkoTm9kZSoqIHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGU9IDApIGNvbnN0OwogCiAgICAg
VHJhbnNsYXRlQXR0cmlidXRlTW9kZSB0cmFuc2xhdGVBdHRyaWJ1dGVNb2RlKCkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAJKHJldmlz
aW9uIDE1NDkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDkgKzYzLDkgQEAgdm9pZCBIVE1MRmllbGRTZXRFbGVt
ZW50OjpkaXNhYmxlZEF0dHJpYgogICAgIGludmFsaWRhdGVEaXNhYmxlZFN0YXRlVW5kZXIodGhp
cyk7CiB9CiAKLXZvaWQgSFRNTEZpZWxkU2V0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wg
Y2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBp
bnQgY2hpbGRDb3VudERlbHRhKQordm9pZCBIVE1MRmllbGRTZXRFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKLSAgICBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFm
dGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOworICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogCiAgICAgYXV0byBsZWdlbmRDaGlsZHJlbiA9IGNo
aWxkcmVuT2ZUeXBlPEhUTUxMZWdlbmRFbGVtZW50Pih0aGlzKTsKICAgICBmb3IgKGF1dG8gbGVn
ZW5kID0gbGVnZW5kQ2hpbGRyZW4uYmVnaW4oKSwgZW5kID0gbGVnZW5kQ2hpbGRyZW4uZW5kKCk7
IGxlZ2VuZCAhPSBlbmQ7ICsrbGVnZW5kKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RmllbGRTZXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RmllbGRTZXRFbGVtZW50LmgJKHJldmlzaW9uIDE1NDk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHJlY2FsY1dpbGxWYWxp
ZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVu
Q2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBh
ZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBhcmVBdXRob3JTaGFkb3dzQWxsb3dlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIGZhbHNlOyB9CiAKICAgICBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlRGlzYWJsZWRTdGF0ZVVu
ZGVyKEVsZW1lbnQqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNTQ5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmpl
Y3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ0LDE0ICszNDQsMTQgQEAgdm9pZCBI
VE1MT2JqZWN0RWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udAogICAgIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6cmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwogfQogCi12b2lkIEhUTUxPYmplY3RF
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9y
ZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCit2b2lkIEhU
TUxPYmplY3RFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5n
ZSkKIHsKICAgICB1cGRhdGVEb2NOYW1lZEl0ZW0oKTsKICAgICBpZiAoaW5Eb2N1bWVudCgpICYm
ICF1c2VGYWxsYmFja0NvbnRlbnQoKSkgewogICAgICAgICBzZXROZWVkc1dpZGdldFVwZGF0ZSh0
cnVlKTsKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgIH0KLSAgICBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVD
aGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOworICAgIEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogfQogCiBib29sIEhUTUxPYmplY3RF
bGVtZW50Ojppc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgJKHJldmlzaW9uIDE1
NDkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZE1v
dmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgT1ZFUlJJREU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2Us
IE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxk
Q291bnREZWx0YSA9IDApOworICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3Qg
Q2hpbGRDaGFuZ2UmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBB
dHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAkocmV2aXNpb24gMTU0OTM5KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjYsMTAgKzY2LDEwIEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTE9wdEdyb3VwRWxlbWVu
dDoKICAgICByZXR1cm4gb3B0Z3JvdXA7CiB9CiAKLXZvaWQgSFRNTE9wdEdyb3VwRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2Us
IE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQordm9pZCBIVE1MT3B0R3Jv
dXBFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsK
ICAgICByZWNhbGNTZWxlY3RPcHRpb25zKCk7Ci0gICAgSFRNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291
bnREZWx0YSk7CisgICAgSFRNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogfQog
CiB2b2lkIEhUTUxPcHRHcm91cEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaAkocmV2aXNpb24gMTU0OTM5KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkQXR0YWNoUmVuZGVy
ZXJzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMoKSBP
VkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2Vk
QnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFu
Z2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CisgICAgdmlydHVhbCB2b2lkIGNoaWxk
cmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpOwogCiAgICAgdmlydHVhbCB2b2lkIGFjY2Vz
c0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTQ5MzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUz
LDcgKzI1Myw3IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnNldFNlbGVjdGVkU3RhdGUKICAg
ICAgICAgc2VsZWN0LT5pbnZhbGlkYXRlU2VsZWN0ZWRJdGVtcygpOwogfQogCi12b2lkIEhUTUxP
cHRpb25FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUq
IGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCit2
b2lkIEhUTUxPcHRpb25FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2Um
IGNoYW5nZSkKIHsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICBpZiAoSFRNTERh
dGFMaXN0RWxlbWVudCogZGF0YUxpc3QgPSBvd25lckRhdGFMaXN0RWxlbWVudCgpKQpAQCAtMjYy
LDcgKzI2Miw3IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCgKICNl
bmRpZgogICAgIGlmIChIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0gb3duZXJTZWxlY3RFbGVt
ZW50KCkpCiAgICAgICAgIHNlbGVjdC0+b3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOwot
ICAgIEhUTUxFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVD
aGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOworICAgIEhUTUxFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKIH0KIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5U
KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAkocmV2aXNpb24g
MTU0OTM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBJbnNlcnRp
b25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9k
ZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3Vu
dERlbHRhID0gMCk7CisgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGls
ZENoYW5nZSYpOwogCiAgICAgLy8gPG9wdGlvbj4gbmV2ZXIgaGFzIGEgcmVuZGVyZXIgc28gd2Ug
bWFudWFsbHkgbWFuYWdlIGEgY2FjaGVkIHN0eWxlLgogICAgIHZvaWQgdXBkYXRlTm9uUmVuZGVy
U3R5bGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNTQ5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsMTEgKzgwLDExIEBAIHZvaWQgSFRNTE91dHB1
dEVsZW1lbnQ6OnNldEZvcihjb25zdCBTdHIKICAgICBtX3Rva2Vucy0+c2V0VmFsdWUodmFsdWUp
OwogfQogCi12b2lkIEhUTUxPdXRwdXRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjcmVh
dGVkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBj
aGlsZENvdW50RGVsdGEpCit2b2lkIEhUTUxPdXRwdXRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQo
Y29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
OjpjaGlsZHJlbkNoYW5nZWQoY3JlYXRlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hh
bmdlLCBjaGlsZENvdW50RGVsdGEpOworICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZChjaGFuZ2UpOwogCi0gICAgaWYgKGNyZWF0ZWRCeVBhcnNlciB8fCBtX2lzU2V0
VGV4dENvbnRlbnRJblByb2dyZXNzKSB7CisgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRD
aGFuZ2VTb3VyY2VQYXJzZXIgfHwgbV9pc1NldFRleHRDb250ZW50SW5Qcm9ncmVzcykgewogICAg
ICAgICBtX2lzU2V0VGV4dENvbnRlbnRJblByb2dyZXNzID0gZmFsc2U7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5oCShy
ZXZpc2lvbiAxNTQ5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVh
bCBib29sIHN1cHBvcnRMYWJlbHMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY3JlYXRlZEJ5UGFyc2VyID0gZmFsc2UsIE5v
ZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291
bnREZWx0YSA9IDApOworICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hp
bGRDaGFuZ2UmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKIAogICAgIHZvaWQgc2V0VGV4
dENvbnRlbnRJbnRlcm5hbChjb25zdCBTdHJpbmcmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTQ5MzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsOSAr
NTIsOSBAQCBib29sIEhUTUxTY3JpcHRFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShjCiAgICAgcmV0
dXJuIGF0dHJpYnV0ZS5uYW1lKCkgPT0gc3JjQXR0ciB8fCBIVE1MRWxlbWVudDo6aXNVUkxBdHRy
aWJ1dGUoYXR0cmlidXRlKTsKIH0KIAotdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFm
dGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQordm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiB7Ci0gICAgSFRNTEVs
ZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0
ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CisgICAgSFRNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZChjaGFuZ2UpOwogICAgIFNjcmlwdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCgpOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCShyZXZpc2lvbiAx
NTQ5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2Vy
dGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGNoaWxk
cmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFu
Z2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJik7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3Qg
T1ZFUlJJREU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNTQ5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDEzICszNjksMTMgQEAgdm9pZCBIVE1M
U2VsZWN0RWxlbWVudDo6dXBkYXRlTGlzdEl0ZW1TZQogICAgICAgICByZWNhbGNMaXN0SXRlbXMo
KTsKIH0KIAotdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hh
bmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQg
Y2hpbGRDb3VudERlbHRhKQordm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiB7CiAgICAgc2V0UmVjYWxjTGlzdEl0ZW1zKCk7
CiAgICAgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CiAgICAgbV9sYXN0T25DaGFuZ2VTZWxlY3Rp
b24uY2xlYXIoKTsKIAotICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmNoaWxk
cmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNo
aWxkQ291bnREZWx0YSk7CisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6Y2hp
bGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiB9CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Om9wdGlv
bkVsZW1lbnRDaGlsZHJlbkNoYW5nZWQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuaAkocmV2aXNpb24gMTU0OTM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2VsZWN0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksNyArMTc5LDcgQEAgcHJp
dmF0ZToKICAgICBpbnQgbGFzdFNlbGVjdGFibGVMaXN0SW5kZXgoKSBjb25zdDsKICAgICBpbnQg
bmV4dFNlbGVjdGFibGVMaXN0SW5kZXhQYWdlQXdheShpbnQgc3RhcnRJbmRleCwgU2tpcERpcmVj
dGlvbikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hh
bmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVy
Q2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOworICAgIHZpcnR1YWwgdm9pZCBj
aGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKTsKICAgICB2aXJ0dWFsIGJvb2wgYXJl
QXV0aG9yU2hhZG93c0FsbG93ZWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQog
CiAgICAgLy8gVHlwZUFoZWFkRGF0YVNvdXJjZSBmdW5jdGlvbnMuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NDkzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIw
Niw5ICsyMDYsOSBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhCiAg
ICAgICAgIG1fc3R5bGVTaGVldE93bmVyLnJlbW92ZWRGcm9tRG9jdW1lbnQoJmRvY3VtZW50KCks
IHRoaXMpOwogfQogCi12b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29s
IGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwg
aW50IGNoaWxkQ291bnREZWx0YSkKK3ZvaWQgSFRNTFN0eWxlRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiB7Ci0gICAgSFRNTEVsZW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNo
aWxkQ291bnREZWx0YSk7CisgICAgSFRNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2Up
OwogICAgIG1fc3R5bGVTaGVldE93bmVyLmNoaWxkcmVuQ2hhbmdlZCh0aGlzKTsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmgJKHJldmlzaW9uIDE1NDkzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENv
bnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29u
dGFpbmVyTm9kZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQo
Ym9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9k
ZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CisgICAgdmlydHVh
bCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpOwogCiAgICAgdmlydHVh
bCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NDkzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyOCw5ICsxMjgsOSBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnJlc3RvcmVGb3JtQ29u
CiAgICAgc2V0VmFsdWUoc3RhdGVbMF0pOwogfQogCi12b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdl
LCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKK3ZvaWQgSFRNTFRleHRB
cmVhRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiB7
Ci0gICAgSFRNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9y
ZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CisgICAgSFRNTEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogICAgIHNldExhc3RDaGFuZ2VXYXNOb3RVc2VyRWRp
dCgpOwogICAgIGlmIChtX2lzRGlydHkpCiAgICAgICAgIHNldElubmVyVGV4dFZhbHVlKHZhbHVl
KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgJKHJl
dmlzaW9uIDE1NDkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0
dWFsIGJvb2wgaXNUZXh0Rm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFs
c2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNo
aWxkQ291bnREZWx0YSA9IDApOworICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29u
c3QgQ2hpbGRDaGFuZ2UmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlv
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0
YWJsZVN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGl0bGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTU0OTM5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsOSArNjEs
OSBAQCB2b2lkIEhUTUxUaXRsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhCiAgICAgICAgIGRv
Y3VtZW50KCkucmVtb3ZlVGl0bGUodGhpcyk7CiB9CiAKLXZvaWQgSFRNTFRpdGxlRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2Us
IE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQordm9pZCBIVE1MVGl0bGVF
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKLSAg
ICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hh
bmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKKyAgICBIVE1MRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiAgICAgbV90aXRsZSA9IHRleHRXaXRoRGlyZWN0aW9uKCk7
CiAgICAgaWYgKGluRG9jdW1lbnQoKSkgewogICAgICAgICBpZiAoIWlzSW5TaGFkb3dUcmVlKCkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuaAkocmV2aXNpb24gMTU0
OTM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgSW5zZXJ0aW9u
Tm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9
IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGlu
dCBjaGlsZENvdW50RGVsdGEgPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KGNvbnN0IENoaWxkQ2hhbmdlJik7CiAKICAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIG1fdGl0bGU7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50
LmNwcAkocmV2aXNpb24gMTU0OTM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5z
ZXJ0aW9uUG9pbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsOSArMTA3LDkgQEAgYm9vbCBJ
bnNlcnRpb25Qb2ludDo6cmVuZGVyZXJJc05lZWRlZChjbwogICAgIHJldHVybiAhaXNBY3RpdmUo
KSAmJiBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAKLXZvaWQgSW5z
ZXJ0aW9uUG9pbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSog
YmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKK3Zv
aWQgSW5zZXJ0aW9uUG9pbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hh
bmdlKQogewotICAgIEhUTUxFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2Vy
LCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOworICAgIEhUTUxF
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKICAgICBpZiAoU2hhZG93Um9vdCogcm9v
dCA9IGNvbnRhaW5pbmdTaGFkb3dSb290KCkpCiAgICAgICAgIHJvb3QtPmludmFsaWRhdGVEaXN0
cmlidXRpb24oKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlv
blBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0
aW9uUG9pbnQuaAkocmV2aXNpb24gMTU0OTM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSW5zZXJ0aW9uUG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBwdWJs
aWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW5zZXJ0aW9uUG9pbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVu
ZGVyU3R5bGUmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJv
b2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdl
LCBpbnQgY2hpbGRDb3VudERlbHRhKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hpbGRy
ZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnNl
cnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNJbnNlcnRpb25Qb2ludE5vZGUoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiB0cnVlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBh
dGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBh
dGhFbGVtZW50LmNwcAkocmV2aXNpb24gMTU0OTM5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0NsaXBQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMywxMSArMTAzLDExIEBA
IHZvaWQgU1ZHQ2xpcFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGEKICAgICAgICAgb2JqZWN0
LT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIAotdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OmNo
aWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBO
b2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKK3ZvaWQgU1ZHQ2xpcFBhdGhF
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKLSAg
ICBTVkdHcmFwaGljc0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJl
Zm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CisgICAgU1ZHR3JhcGhp
Y3NFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKIAotICAgIGlmIChjaGFuZ2VkQnlQ
YXJzZXIpCisgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2VTb3VyY2VQYXJzZXIp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRl
cmVyKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCShyZXZp
c2lvbiAxNTQ5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3Vw
cG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hh
bmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVy
Q2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOworICAgIHZpcnR1YWwgdm9pZCBj
aGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKTsKIAogICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NDkzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1NiwxMyAr
MTA1NiwxMyBAQCB2b2lkIFNWR0VsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlc0lmCiAgICAg
fQogfQogCi12b2lkIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBh
cnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291
bnREZWx0YSkKK3ZvaWQgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hh
bmdlJiBjaGFuZ2UpCiB7Ci0gICAgU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5n
ZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsK
KyAgICBTdHlsZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKIAotICAgIC8vIElu
dmFsaWRhdGUgYWxsIFNWR0VsZW1lbnRJbnN0YW5jZXMgYXNzb2NpYXRlZCB3aXRoIHVzCi0gICAg
aWYgKCFjaGFuZ2VkQnlQYXJzZXIpCi0gICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6aW52YWxp
ZGF0ZUFsbEluc3RhbmNlc09mRWxlbWVudCh0aGlzKTsKKyAgICBpZiAoY2hhbmdlLnNvdXJjZSA9
PSBDaGlsZENoYW5nZVNvdXJjZVBhcnNlcikKKyAgICAgICAgcmV0dXJuOworICAgIFNWR0VsZW1l
bnRJbnN0YW5jZTo6aW52YWxpZGF0ZUFsbEluc3RhbmNlc09mRWxlbWVudCh0aGlzKTsKIH0KIAog
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gU1ZHRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9uQXR0cmlidXRl
KGNvbnN0IFN0cmluZyYgbmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAkocmV2aXNp
b24gMTU0OTM5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTYwLDcgKzE2MCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgaXNQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVBy
b3BlcnR5U2V0KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25S
ZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2Rl
KiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50
RGVsdGEgPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxk
Q2hhbmdlJik7CiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3Jt
YXRpb24oKSB7IHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKHNlbGZIYXNSZWxhdGl2
ZUxlbmd0aHMoKSwgdGhpcyk7IH0KICAgICB2b2lkIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9y
bWF0aW9uKGJvb2wgaGFzUmVsYXRpdmVMZW5ndGhzLCBTVkdFbGVtZW50Kik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NDkzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIwNywxNyArMjA3LDE4IEBAIHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdGRUxpZ2h0RWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVD
aGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQordm9pZCBTVkdG
RUxpZ2h0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2Up
CiB7Ci0gICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVm
b3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKKyAgICBTVkdFbGVtZW50
OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKIAotICAgIGlmICghY2hhbmdlZEJ5UGFyc2VyKSB7
Ci0gICAgICAgIGlmIChDb250YWluZXJOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlKCkpIHsKLSAg
ICAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBwYXJlbnQtPnJlbmRlcmVyKCk7Ci0g
ICAgICAgICAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzU1ZHUmVzb3VyY2VGaWx0ZXJQ
cmltaXRpdmUoKSkKLSAgICAgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0Zvckxh
eW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyKTsKLSAgICAgICAgfQot
ICAgIH0KKyAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZVBhcnNlcikK
KyAgICAgICAgcmV0dXJuOworICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGUo
KTsKKyAgICBpZiAoIXBhcmVudCkKKyAgICAgICAgcmV0dXJuOworICAgIFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBwYXJlbnQtPnJlbmRlcmVyKCk7CisgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRl
cmVyLT5pc1NWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKCkpCisgICAgICAgIFJlbmRlclNWR1Jl
c291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVy
ZXIpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaAko
cmV2aXNpb24gMTU0OTM5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlz
U3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wg
Y2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFm
dGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOworICAgIHZpcnR1YWwgdm9p
ZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKTsKIAogICAgIEJFR0lOX0RFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRUxpZ2h0RWxlbWVudCkKICAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9OVU1CRVIoQXppbXV0aCwgYXppbXV0aCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NDkzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDExICsx
NzcsMTEgQEAgdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZwogICAgICAg
ICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCi12b2lkIFNWR0ZpbHRlckVsZW1l
bnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hh
bmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKK3ZvaWQgU1ZHRmls
dGVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiB7
Ci0gICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3Jl
Q2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKKyAgICBTVkdFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKIAotICAgIGlmIChjaGFuZ2VkQnlQYXJzZXIpCisgICAg
aWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2VTb3VyY2VQYXJzZXIpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgJKHJldmlzaW9uIDE1NDkzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFs
c2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNo
aWxkQ291bnREZWx0YSA9IDApOworICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29u
c3QgQ2hpbGRDaGFuZ2UmKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBi
b29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSopIGNvbnN0IE9WRVJSSURF
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJKHJldmlzaW9uIDE1NDkzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTcsMTIgKzExNywxMyBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlCiAgICAgaW52YWxpZGF0ZSgpOwogfQogCi12b2lkIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdl
ZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hp
bGRDb3VudERlbHRhKQordm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogewotICAgIFNWR0Vs
ZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0
ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CisgICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNoYW5nZSk7CiAKLSAgICBpZiAoIWNoYW5nZWRCeVBhcnNlcikKLSAgICAgICAgaW52YWxp
ZGF0ZSgpOworICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291cmNlUGFyc2Vy
KQorICAgICAgICByZXR1cm47CisgICAgaW52YWxpZGF0ZSgpOwogfQogCiB2b2lkIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c2V0U3RhbmRhcmRBdHRyaWJ1dGVzKEZpbHRl
ckVmZmVjdCogZmlsdGVyRWZmZWN0KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkocmV2
aXNpb24gMTU0OTM5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHByb3Rl
Y3RlZDoKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hp
bGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNo
YW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDAp
OworICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKTsK
IAogICAgIGlubGluZSB2b2lkIGludmFsaWRhdGUoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTQ5MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjk2LDkgKzI5Niw5IEBAIHZvaWQgU1ZHRm9udEZhY2VFbGVtZW50OjpyZW1vdmVkRnJvbShDb24K
ICAgICAgICAgQVNTRVJUKCFtX2ZvbnRFbGVtZW50KTsKIH0KIAotdm9pZCBTVkdGb250RmFjZUVs
ZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3Jl
Q2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKK3ZvaWQgU1ZH
Rm9udEZhY2VFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5n
ZSkKIHsKLSAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBi
ZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOworICAgIFNWR0VsZW1l
bnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogICAgIHJlYnVpbGRGb250RmFjZSgpOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5oCShyZXZpc2lvbiAx
NTQ5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
T1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdl
ZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hh
bmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOworICAgIHZpcnR1YWwgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKTsKICAgICB2aXJ0dWFsIEluc2VydGlvbk5v
dGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50
LmNwcAkocmV2aXNpb24gMTU0OTM5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNl
Rm9ybWF0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDkgKzQwLDkgQEAgUGFzc1Jl
ZlB0cjxTVkdGb250RmFjZUZvcm1hdEVsZW1lbnQ+IFNWRwogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZv
aWQgU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2Vk
QnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGls
ZENvdW50RGVsdGEpCit2b2lkIFNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiB7Ci0gICAgU1ZHRWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hp
bGRDb3VudERlbHRhKTsKKyAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsK
IAogICAgIGlmICghcGFyZW50Tm9kZSgpIHx8ICFwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoZm9u
dF9mYWNlX3VyaVRhZykpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmgJKHJldmlzaW9uIDE1NDkzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0ZvbnRGYWNlRm9y
bWF0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9k
ZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3Vu
dERlbHRhID0gMCk7CisgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGls
ZENoYW5nZSYpOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRl
clN0eWxlJikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb250RmFjZVNyY0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVNyY0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTQ5Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VTcmNFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTksOSArNTksOSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gU1ZHRm9u
dEZhY2VTcmNFCiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXZvaWQgU1ZHRm9udEZhY2VTcmNFbGVt
ZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNo
YW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCit2b2lkIFNWR0Zv
bnRGYWNlU3JjRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFu
Z2UpCiB7Ci0gICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwg
YmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKKyAgICBTVkdFbGVt
ZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKICAgICBpZiAocGFyZW50Tm9kZSgpICYmIHBh
cmVudE5vZGUoKS0+aGFzVGFnTmFtZShmb250X2ZhY2VUYWcpKQogICAgICAgICB0b1NWR0ZvbnRG
YWNlRWxlbWVudChwYXJlbnROb2RlKCkpLT5yZWJ1aWxkRm9udEZhY2UoKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVNyY0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VTcmNFbGVtZW50LmgJKHJldmlzaW9uIDE1NDkz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVNyY0VsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0ZvbnRG
YWNlU3JjRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAKLSAg
ICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFs
c2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNo
aWxkQ291bnREZWx0YSA9IDApOworICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29u
c3QgQ2hpbGRDaGFuZ2UmKTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcAkocmV2aXNpb24g
MTU0OTM5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcwLDkgKzcwLDkgQEAgdm9pZCBTVkdGb250RmFjZVVyaUVsZW1l
bnQ6OnBhcnNlQXR0cmlidQogICAgICAgICBTVkdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1l
LCB2YWx1ZSk7CiB9CiAKLXZvaWQgU1ZHRm9udEZhY2VVcmlFbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJD
aGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCit2b2lkIFNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiB7Ci0gICAgU1ZHRWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRl
ckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKKyAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQoY2hhbmdlKTsKIAogICAgIGlmICghcGFyZW50Tm9kZSgpIHx8ICFwYXJlbnROb2RlKCktPmhh
c1RhZ05hbWUoZm9udF9mYWNlX3NyY1RhZykpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmgJKHJldmlzaW9uIDE1NDkzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwcml2YXRlOgogICAgIFNWR0ZvbnRGYWNlVXJpRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFu
Z2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJD
aGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CisgICAgdmlydHVhbCB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpOwogICAgIHZpcnR1YWwgSW5zZXJ0aW9u
Tm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikg
T1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NDkzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsMTEgKzEy
NiwxMSBAQCB2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhCiAgICAgICAg
IG9iamVjdC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9CiAgICAgCi12b2lkIFNWR0dyYWRpZW50
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZv
cmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQordm9pZCBT
VkdHcmFkaWVudEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hh
bmdlKQogewotICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIs
IGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CisgICAgU1ZHRWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiAKLSAgICBpZiAoY2hhbmdlZEJ5UGFyc2Vy
KQorICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291cmNlUGFyc2VyKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigp
KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24g
MTU0OTM5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIG5lZWRzUGVuZGluZ1Jlc291cmNlSGFuZGxpbmcoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRC
eVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5n
ZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hpbGRy
ZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJik7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHR3JhZGllbnRFbGVtZW50KQogICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX0VOVU1FUkFUSU9OKFNwcmVhZE1ldGhvZCwgc3ByZWFkTWV0aG9kLCBTVkdTcHJlYWRNZXRo
b2RUeXBlKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAkocmV2
aXNpb24gMTU0OTM5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzksMTEgKzE3OSwxMSBAQCB2b2lkIFNWR01hcmtlckVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQodHJ1
ZSk7CiB9CiAKLXZvaWQgU1ZHTWFya2VyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hh
bmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQg
Y2hpbGRDb3VudERlbHRhKQordm9pZCBTVkdNYXJrZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQo
Y29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKLSAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENv
dW50RGVsdGEpOworICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogCi0g
ICAgaWYgKGNoYW5nZWRCeVBhcnNlcikKKyAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENo
YW5nZVNvdXJjZVBhcnNlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFJlbmRlck9iamVj
dCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJr
ZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVs
ZW1lbnQuaAkocmV2aXNpb24gMTU0OTM5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtl
ckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAg
dmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9taWNTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAw
LCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKKyAgICB2
aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJik7CiAKICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0
eWxlJikgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNTQ5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsMTEgKzE0NiwxMSBAQCB2b2lkIFNWR01h
c2tFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkCiAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNM
YXlvdXQodHJ1ZSk7CiB9CiAKLXZvaWQgU1ZHTWFza0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChi
b29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5n
ZSwgaW50IGNoaWxkQ291bnREZWx0YSkKK3ZvaWQgU1ZHTWFza0VsZW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogewotICAgIFNWR0VsZW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNo
aWxkQ291bnREZWx0YSk7CisgICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7
CiAKLSAgICBpZiAoY2hhbmdlZEJ5UGFyc2VyKQorICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENo
aWxkQ2hhbmdlU291cmNlUGFyc2VyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoUmVuZGVy
T2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R01hc2tFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tF
bGVtZW50LmgJKHJldmlzaW9uIDE1NDkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNr
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmly
dHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
aWNTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBO
b2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKKyAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJik7CiAKICAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHls
ZSopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE1NDkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSwxMSArMTcxLDExIEBAIHZvaWQgU1ZHUGF0dGVybkVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW4KICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCh0
cnVlKTsKIH0KIAotdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wg
Y2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBp
bnQgY2hpbGRDb3VudERlbHRhKQordm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiB7Ci0gICAgU1ZHRWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hp
bGRDb3VudERlbHRhKTsKKyAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsK
IAotICAgIGlmIChjaGFuZ2VkQnlQYXJzZXIpCisgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hp
bGRDaGFuZ2VTb3VyY2VQYXJzZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChSZW5kZXJP
YmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0dGVybkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
dGVybkVsZW1lbnQuaAkocmV2aXNpb24gMTU0OTM5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdHRlcm5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRy
ZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5n
ZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwor
ICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKTsKIAog
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJl
bmRlclN0eWxlKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5j
cHAJKHJldmlzaW9uIDE1NDkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDkgKzEyNyw5IEBAIE5vZGU6Okluc2VydGlv
bk5vdGlmaWNhdGlvblJlcXVlc3QgU1ZHU2MKICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIH0K
IAotdm9pZCBTVkdTY3JpcHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQ
YXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENv
dW50RGVsdGEpCit2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBD
aGlsZENoYW5nZSYgY2hhbmdlKQogewotICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChj
aGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0
YSk7CisgICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiAgICAgU2NyaXB0
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTY3JpcHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1NjcmlwdEVsZW1lbnQuaAkocmV2aXNpb24gMTU0OTM5KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1NjcmlwdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3Rp
ZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZh
bHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBj
aGlsZENvdW50RGVsdGEgPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNv
bnN0IENoaWxkQ2hhbmdlJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRl
KGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N0eWxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NDkzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsOSArMTU1LDkg
QEAgdm9pZCBTVkdTdHlsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaQogICAgICAgICBtX3N0
eWxlU2hlZXRPd25lci5yZW1vdmVkRnJvbURvY3VtZW50KCZkb2N1bWVudCgpLCB0aGlzKTsKIH0K
IAotdm9pZCBTVkdTdHlsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBh
cnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291
bnREZWx0YSkKK3ZvaWQgU1ZHU3R5bGVFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hp
bGRDaGFuZ2UmIGNoYW5nZSkKIHsKLSAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hh
bmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEp
OworICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogICAgIG1fc3R5bGVT
aGVldE93bmVyLmNoaWxkcmVuQ2hhbmdlZCh0aGlzKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdHlsZUVsZW1lbnQuaAkocmV2aXNpb24gMTU0OTM5KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0eWxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIEluc2VydGlv
bk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIg
PSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBp
bnQgY2hpbGRDb3VudERlbHRhID0gMCk7CisgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYpOwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTU0OTM5KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDkgKzU2LDkgQEAgdm9pZCBTVkdUaXRsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRh
aQogICAgICAgICBkb2N1bWVudCgpLnJlbW92ZVRpdGxlKHRoaXMpOwogfQogCi12b2lkIFNWR1Rp
dGxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBi
ZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQordm9p
ZCBTVkdUaXRsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hh
bmdlKQogewotICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIs
IGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CisgICAgU1ZHRWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiAgICAgaWYgKGluRG9jdW1lbnQoKSkKICAg
ICAgICAgLy8gRklYTUU6IGRvZXMgU1ZHIGhhdmUgdGl0bGUgdGV4dCBkaXJlY3Rpb24/CiAgICAg
ICAgIGRvY3VtZW50KCkuc2V0VGl0bGVFbGVtZW50KFN0cmluZ1dpdGhEaXJlY3Rpb24odGV4dENv
bnRlbnQoKSwgTFRSKSwgdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVu
dC5oCShyZXZpc2lvbiAxNTQ5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVy
Tm9kZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJO
b2RlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNo
YW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRl
ckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJik7CiAKICAgICB2aXJ0dWFsIGJvb2wg
cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIHsgcmV0dXJuIGZhbHNlOyB9CiB9
Owo=
</data>
<flag name="review"
          id="232376"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>