<?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>129339</bug_id>
          
          <creation_ts>2014-02-25 14:59:14 -0800</creation_ts>
          <short_desc>Pipe experimental image controls menu up to WebKit2</short_desc>
          <delta_ts>2014-02-26 14:39:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>129028</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>984503</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-25 14:59:14 -0800</bug_when>
    <thetext>Pipe experimental image controls menu up to WebKit2

Doesn&apos;t do anything at the moment, but is an easily reviewable patch separate from the patch that does something with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984504</commentid>
    <comment_count>1</comment_count>
      <attachid>225187</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-25 15:03:45 -0800</bug_when>
    <thetext>Created attachment 225187
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984522</commentid>
    <comment_count>2</comment_count>
      <attachid>225187</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-25 16:09:33 -0800</bug_when>
    <thetext>Comment on attachment 225187
Patch v1

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

&gt; Source/WebCore/html/shadow/mac/ImageControlsRootElementMac.cpp:74
&gt; +        Page* page = document().page();
&gt; +        if (!page)
&gt; +            return;
&gt; +
&gt; +        page-&gt;contextMenuController().showImageControlsMenu(event);

maybe there&apos;s a case for flipping the logic here?

{
    if (Page* page = document().page())
        page-&gt;contextMenuController().showImageControlsMenu(event);

    return;
}

&gt; Source/WebCore/rendering/HitTestResult.cpp:61
&gt; +    , m_isImageControl(false)

I dunno about all this. Needs someone else&apos;s input.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984590</commentid>
    <comment_count>3</comment_count>
      <attachid>225211</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-25 18:44:26 -0800</bug_when>
    <thetext>Created attachment 225211
Patch v2 - Attempted build fixes (and review feedback)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984621</commentid>
    <comment_count>4</comment_count>
      <attachid>225219</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-25 21:09:29 -0800</bug_when>
    <thetext>Created attachment 225219
Patch v3 - More build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984627</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-25 22:09:11 -0800</bug_when>
    <thetext>With some IRC discussion about HitTestResult, I agree that&apos;s the wrong place for it (and that a lot of other out-of-place cruft has been placed there).

New version of the patch coming with a new class to hold &quot;ContextMenu related data&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984645</commentid>
    <comment_count>6</comment_count>
      <attachid>225223</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-25 22:54:58 -0800</bug_when>
    <thetext>Created attachment 225223
Patch v4 - New &quot;ContextMenuContext&quot; class to encompass this notion of data relevant to a ContextMenu invocation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984720</commentid>
    <comment_count>7</comment_count>
      <attachid>225249</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-26 06:11:02 -0800</bug_when>
    <thetext>Created attachment 225249
Patch v6 - Build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984769</commentid>
    <comment_count>8</comment_count>
      <attachid>225249</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-02-26 09:46:05 -0800</bug_when>
    <thetext>Comment on attachment 225249
Patch v6 - Build fixes

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Handle events for the image control starting the context menu process if appropriate:

&quot;context menu process&quot; confused me

&gt; Source/WebCore/page/ContextMenuContext.cpp:2
&gt; + * Copyright (C) 2013 Apple Inc. All rights reserved.

2014

&gt; Source/WebCore/page/ContextMenuContext.h:2
&gt; + * Copyright (C) 2013 Apple Inc. All rights reserved.

2014

&gt; Source/WebCore/page/ContextMenuContext.h:39
&gt; +    ContextMenuContext(const HitTestResult&amp;, bool isImageControl = false);

If we end up adding lots of stuff to ContextMenuContext, this isImageControl param doesn&apos;t seem like a good start for extensibility.

&gt; Source/WebKit2/Shared/ContextMenuContextData.cpp:2
&gt; + * Copyright (C) 2013 Apple Inc. All rights reserved.

2014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984776</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-26 09:55:49 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 225249 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225249&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Handle events for the image control starting the context menu process if appropriate:
&gt; 
&gt; &quot;context menu process&quot; confused me

Edited for clarity.

&gt; &gt; Source/WebCore/page/ContextMenuContext.h:39
&gt; &gt; +    ContextMenuContext(const HitTestResult&amp;, bool isImageControl = false);
&gt; 
&gt; If we end up adding lots of stuff to ContextMenuContext, this isImageControl param doesn&apos;t seem like a good start for extensibility.

Agreed - It will even change in my immediate followup to this patch.

I expect this class will evolve (rapidly) as we move gunk off of HitTestResult that belongs here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984778</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-26 09:57:37 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/164720</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984798</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-02-26 10:31:52 -0800</bug_when>
    <thetext>Plus https://trac.webkit.org/r164723 to fix the release build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984891</commentid>
    <comment_count>12</comment_count>
      <attachid>225249</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-02-26 13:59:25 -0800</bug_when>
    <thetext>Comment on attachment 225249
Patch v6 - Build fixes

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

&gt; Source/WebCore/page/ContextMenuContext.cpp:47
&gt; +    ASSERT_UNUSED(isImageControl, true);

This is wrong. It’s the same as:

    ASSERT(true);

as far as the assertion is concerned. I think you should just remove this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984915</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-26 14:39:14 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 225249 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225249&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/ContextMenuContext.cpp:47
&gt; &gt; +    ASSERT_UNUSED(isImageControl, true);
&gt; 
&gt; This is wrong. It’s the same as:
&gt; 
&gt;     ASSERT(true);
&gt; 
&gt; as far as the assertion is concerned. I think you should just remove this.

Yah, what I was really looking for was UNUSED_PARAM, but I completely drew a blank.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225187</attachid>
            <date>2014-02-25 15:03:45 -0800</date>
            <delta_ts>2014-02-25 18:44:26 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>12693</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmZWI1ZmE0Li40NTY1ZjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTQtMDItMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFBpcGUgZXhwZXJpbWVudGFsIGltYWdlIGNvbnRyb2xzIG1lbnUgdXAgdG8gV2ViS2l0Mgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5MzM5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGFuZGxlIGV2
ZW50cyBmb3IgdGhlIGltYWdlIGNvbnRyb2wgc3RhcnRpbmcgdGhlIGNvbnRleHQgbWVudSBwcm9j
ZXNzIGlmIGFwcHJvcHJpYXRlOgorICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRy
b2xzUm9vdEVsZW1lbnRNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc1Jv
b3RFbGVtZW50TWFjOjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL3NoYWRv
dy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmg6CisKKyAgICAgICAgKiBwYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNv
bnRyb2xsZXI6OmNyZWF0ZUNvbnRleHRNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRN
ZW51Q29udHJvbGxlcjo6cG9wdWxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVD
b250cm9sbGVyOjpzaG93SW1hZ2VDb250cm9sc01lbnUpOgorICAgICAgICAqIHBhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmg6CisKKyAgICAgICAgQWRkIGEgaGl0IHRlc3QgZmxhZyBmb3Igd2hl
dGhlciBvciBub3QgdGhpcyBpcyBhbiBpbWFnZSBjb250cm9sOgorICAgICAgICAqIHJlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6Okhp
dFRlc3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9
KToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdDo6c2V0SXNJbWFnZUNvbnRyb2wpOgorICAgICAgICAoV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdDo6aXNJbWFnZUNvbnRyb2wpOgorCiAyMDE0LTAyLTI0ICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBCcmVhayBvdXQgSW1hZ2VDb250cm9s
cyBzdHlsZSBpbnRvIGFuIGV4dGVybmFsIHN0eWxlc2hlZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1h
Yy5jcHAKaW5kZXggMjVhOGFmZS4uOGMxNDVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5j
cHAKQEAgLTI4LDYgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKIAorI2lu
Y2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNjEsNiArNjQsMjAgQEAgUGFzc1JlZlB0cjxJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM+
IEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYzo6bWF5YmVDcmVhdGUKICAgICByZXR1cm4gY29u
dHJvbHMucmVsZWFzZSgpOwogfQogCit2b2lkIEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYzo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKKyAgICAgICAgUGFnZSogcGFnZSA9IGRv
Y3VtZW50KCkucGFnZSgpOworICAgICAgICBpZiAoIXBhZ2UpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkuc2hvd0ltYWdlQ29udHJv
bHNNZW51KGV2ZW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBIVE1MRGl2
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9DT05UUk9MUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRN
YWMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVs
ZW1lbnRNYWMuaAppbmRleCA4YzFkZjliLi4yODNkMGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1h
Yy5oCkBAIC00MCw2ICs0MCw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBJbWFnZUNvbnRy
b2xzUm9vdEVsZW1lbnRNYWMoRG9jdW1lbnQmKTsKKworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5k
ZXggMGNhNjFjYi4uMGU5ZTM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1l
bnVDb250cm9sbGVyLmNwcApAQCAtMTM4LDkgKzEzOCwxNSBAQCBQYXNzT3duUHRyPENvbnRleHRN
ZW51PiBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNyZWF0ZUNvbnRleHRNZW51KEV2ZW50KiBldmVu
dCkKICAgICBNb3VzZUV2ZW50JiBtb3VzZUV2ZW50ID0gdG9Nb3VzZUV2ZW50KCpldmVudCk7CiAg
ICAgSGl0VGVzdFJlc3VsdCByZXN1bHQobW91c2VFdmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkpOwog
Ci0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IGV2ZW50LT50YXJnZXQoKS0+dG9Ob2RlKCktPmRvY3Vt
ZW50KCkuZnJhbWUoKSkKKyAgICBOb2RlKiBub2RlID0gZXZlbnQtPnRhcmdldCgpLT50b05vZGUo
KTsKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKQogICAg
ICAgICByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQo
bW91c2VFdmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkpOwogCisjaWYgRU5BQkxFKElNQUdFX0NPTlRS
T0xTKQorICAgIGlmIChub2RlLT5pc0ltYWdlQ29udHJvbHNSb290RWxlbWVudCgpKQorICAgICAg
ICByZXN1bHQuc2V0SXNJbWFnZUNvbnRyb2wodHJ1ZSk7CisjZW5kaWYKKyAgICAKICAgICBpZiAo
IXJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
QEAgLTgxNSw2ICs4MjEsMTIgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRl
KCkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKKyNpZiBFTkFCTEUoSU1BR0Vf
Q09OVFJPTFMpCisgICAgLy8gVGhlIGRlZmF1bHQgaW1hZ2UgY29udHJvbCBtZW51IGdldHMgcG9w
dWxhdGVkIHNvbGVseSBieSB0aGUgcGxhdGZvcm0uCisgICAgaWYgKG1faGl0VGVzdFJlc3VsdC5p
c0ltYWdlQ29udHJvbCgpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIGlmICghbV9o
aXRUZXN0UmVzdWx0LmlzQ29udGVudEVkaXRhYmxlKCkpIHsKICAgICAgICAgRnJhbWVMb2FkZXIm
IGxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKTsKICAgICAgICAgVVJMIGxpbmtVUkwgPSBtX2hpdFRl
c3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CkBAIC0xNDExLDYgKzE0MjMsMTUgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OnNob3dDb250ZXh0TWVudUF0KEZyYW1lKiBmcmFtZSwgY29u
c3QgSW50UG9pbnQmIGNsaWMKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xT
KQordm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnNob3dJbWFnZUNvbnRyb2xzTWVudShFdmVu
dCogZXZlbnQpCit7CisgICAgY2xlYXJDb250ZXh0TWVudSgpOworICAgIGhhbmRsZUNvbnRleHRN
ZW51RXZlbnQoZXZlbnQpOworICAgIG1fY2xpZW50LnNob3dDb250ZXh0TWVudSgpOworfQorI2Vu
ZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URVhU
X01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmgKaW5k
ZXggZmVmMTM1My4uNDQ3Yzk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q29udHJvbGxlci5oCkBAIC02OCw2ICs2OCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgc2hvd0NvbnRleHRNZW51QXQoRnJhbWUqLCBjb25zdCBJbnRQb2ludCYgY2xpY2tQ
b2ludCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICAgICAgdm9p
ZCBzaG93SW1hZ2VDb250cm9sc01lbnUoRXZlbnQqKTsKKyNlbmRpZgorCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgUGFzc093blB0cjxDb250ZXh0TWVudT4gY3JlYXRlQ29udGV4dE1lbnUoRXZlbnQq
KTsKICAgICAgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoRXZlbnQqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCA2NDU5ZGE2Li5lODViM2RiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC01Nyw2ICs1Nyw5
IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RS
ZXN1bHQoKQogICAgIDogbV9pc092ZXJXaWRnZXQoZmFsc2UpCisjaWYgRU5BQkxFKElNQUdFX0NP
TlRST0xTKQorICAgICwgbV9pc0ltYWdlQ29udHJvbChmYWxzZSkKKyNlbmRpZgogewogfQogCkBA
IC02NCw2ICs2Nyw5IEBAIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0
UG9pbnQmIHBvaW50KQogICAgIDogbV9oaXRUZXN0TG9jYXRpb24ocG9pbnQpCiAgICAgLCBtX3Bv
aW50SW5Jbm5lck5vZGVGcmFtZShwb2ludCkKICAgICAsIG1faXNPdmVyV2lkZ2V0KGZhbHNlKQor
I2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICAsIG1faXNJbWFnZUNvbnRyb2woZmFsc2Up
CisjZW5kaWYKIHsKIH0KIApAQCAtNzEsNiArNzcsOSBAQCBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0
UmVzdWx0KGNvbnN0IExheW91dFBvaW50JiBjZW50ZXJQb2ludCwgdW5zaWduZWQgdG9wUGFkZGlu
ZwogICAgIDogbV9oaXRUZXN0TG9jYXRpb24oY2VudGVyUG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0
UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpCiAgICAgLCBtX3BvaW50SW5Jbm5l
ck5vZGVGcmFtZShjZW50ZXJQb2ludCkKICAgICAsIG1faXNPdmVyV2lkZ2V0KGZhbHNlKQorI2lm
IEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICAsIG1faXNJbWFnZUNvbnRyb2woZmFsc2UpCisj
ZW5kaWYKIHsKIH0KIApAQCAtNzgsNiArODcsOSBAQCBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVz
dWx0KGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgb3RoZXIpCiAgICAgOiBtX2hpdFRlc3RMb2NhdGlv
bihvdGhlcikKICAgICAsIG1fcG9pbnRJbklubmVyTm9kZUZyYW1lKG1faGl0VGVzdExvY2F0aW9u
LnBvaW50KCkpCiAgICAgLCBtX2lzT3ZlcldpZGdldChmYWxzZSkKKyNpZiBFTkFCTEUoSU1BR0Vf
Q09OVFJPTFMpCisgICAgLCBtX2lzSW1hZ2VDb250cm9sKGZhbHNlKQorI2VuZGlmCiB7CiB9CiAK
QEAgLTkwLDYgKzEwMiwxMCBAQCBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhp
dFRlc3RSZXN1bHQmIG90aGVyKQogICAgICwgbV9pbm5lclVSTEVsZW1lbnQob3RoZXIuVVJMRWxl
bWVudCgpKQogICAgICwgbV9zY3JvbGxiYXIob3RoZXIuc2Nyb2xsYmFyKCkpCiAgICAgLCBtX2lz
T3ZlcldpZGdldChvdGhlci5pc092ZXJXaWRnZXQoKSkKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJP
TFMpCisgICAgLCBtX2lzSW1hZ2VDb250cm9sKG90aGVyLm1faXNJbWFnZUNvbnRyb2wpCisjZW5k
aWYKKwogewogICAgIC8vIE9ubHkgY29weSB0aGUgTm9kZVNldCBpbiBjYXNlIG9mIHJlY3QgaGl0
IHRlc3QuCiAgICAgbV9yZWN0QmFzZWRUZXN0UmVzdWx0ID0gYWRvcHRQdHIob3RoZXIubV9yZWN0
QmFzZWRUZXN0UmVzdWx0ID8gbmV3IE5vZGVTZXQoKm90aGVyLm1fcmVjdEJhc2VkVGVzdFJlc3Vs
dCkgOiAwKTsKQEAgLTEwOSw2ICsxMjUsOSBAQCBIaXRUZXN0UmVzdWx0JiBIaXRUZXN0UmVzdWx0
OjpvcGVyYXRvcj0oY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAgICAgbV9pbm5lclVSTEVs
ZW1lbnQgPSBvdGhlci5VUkxFbGVtZW50KCk7CiAgICAgbV9zY3JvbGxiYXIgPSBvdGhlci5zY3Jv
bGxiYXIoKTsKICAgICBtX2lzT3ZlcldpZGdldCA9IG90aGVyLmlzT3ZlcldpZGdldCgpOworI2lm
IEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICBtX2lzSW1hZ2VDb250cm9sID0gb3RoZXIubV9p
c0ltYWdlQ29udHJvbDsKKyNlbmRpZgogCiAgICAgLy8gT25seSBjb3B5IHRoZSBOb2RlU2V0IGlu
IGNhc2Ugb2YgcmVjdCBoaXQgdGVzdC4KICAgICBtX3JlY3RCYXNlZFRlc3RSZXN1bHQgPSBhZG9w
dFB0cihvdGhlci5tX3JlY3RCYXNlZFRlc3RSZXN1bHQgPyBuZXcgTm9kZVNldCgqb3RoZXIubV9y
ZWN0QmFzZWRUZXN0UmVzdWx0KSA6IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0
UmVzdWx0LmgKaW5kZXggNGQ3MjhhNy4uODE0ZjM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5oCkBAIC0xNDEsNiArMTQxLDExIEBAIHB1YmxpYzoKIAogICAgIE5v
ZGUqIHRhcmdldE5vZGUoKSBjb25zdDsKIAorI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAg
ICB2b2lkIHNldElzSW1hZ2VDb250cm9sKGJvb2wgYikgeyBtX2lzSW1hZ2VDb250cm9sID0gYjsg
fQorICAgIGJvb2wgaXNJbWFnZUNvbnRyb2woKSBjb25zdCB7IHJldHVybiBtX2lzSW1hZ2VDb250
cm9sOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOb2RlU2V0JiBtdXRhYmxlUmVjdEJhc2Vk
VGVzdFJlc3VsdCgpOyAvLyBTZWUgYWJvdmUuCiAKQEAgLTE1OCw2ICsxNjMsMTAgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX3Njcm9sbGJhcjsKICAgICBib29sIG1faXNPdmVy
V2lkZ2V0OyAvLyBSZXR1cm5zIHRydWUgaWYgd2UgYXJlIG92ZXIgYSB3aWRnZXQgKGFuZCBub3Qg
aW4gdGhlIGJvcmRlci9wYWRkaW5nIGFyZWEgb2YgYSBSZW5kZXJXaWRnZXQgZm9yIGV4YW1wbGUp
LgogCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgIGJvb2wgbV9pc0ltYWdlQ29udHJv
bDsKKyNlbmRpZgorCiAgICAgbXV0YWJsZSBPd25QdHI8Tm9kZVNldD4gbV9yZWN0QmFzZWRUZXN0
UmVzdWx0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDcxNGE0YTYuLmUyZTRiZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAxNC0wMi0yNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUGlwZSBleHBlcmltZW50YWwgaW1hZ2UgY29udHJvbHMgbWVudSB1
cCB0byBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjkzMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
SGl0VGVzdFJlc3VsdDo6RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkhpdFRlc3RS
ZXN1bHQ6OkRhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHQ6
OkRhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuaDoKKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmludGVybmFsU2hvd0NvbnRleHRNZW51KTogT25seSBnaXZlIHRoZSBjbGll
bnQgYSBzd2lwZQorICAgICAgICAgIGlmIHRoaXMgaXNu4oCZdCBhbiBpbWFnZSBjb250cm9sIG1l
bnUuCisKIDIwMTQtMDItMjQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIFBERlZpZXdDb250cm9sbGVyLiosIHdoaWNoIGlzIHVudXNlZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDAzYzRkMWUu
LmM2MDY3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVz
dWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5jcHAK
QEAgLTUyLDYgKzUyLDcgQEAgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YTo6RGF0YShjb25zdCBIaXRU
ZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0KQogICAgICwgaXNDb250ZW50RWRpdGFibGUoaGl0VGVz
dFJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSgpKQogICAgICwgZWxlbWVudEJvdW5kaW5nQm94KGVs
ZW1lbnRCb3VuZGluZ0JveEluV2luZG93Q29vcmRpbmF0ZXMoaGl0VGVzdFJlc3VsdCkpCiAgICAg
LCBpc1Njcm9sbGJhcihoaXRUZXN0UmVzdWx0LnNjcm9sbGJhcigpKQorICAgICwgaXNJbWFnZUNv
bnRyb2woaGl0VGVzdFJlc3VsdC5pc0ltYWdlQ29udHJvbCgpKQogewogfQogCkBAIC03MCw2ICs3
MSw3IEBAIHZvaWQgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YTo6ZW5jb2RlKElQQzo6QXJndW1lbnRF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgaXNDb250ZW50RWRpdGFibGU7
CiAgICAgZW5jb2RlciA8PCBlbGVtZW50Qm91bmRpbmdCb3g7CiAgICAgZW5jb2RlciA8PCBpc1Nj
cm9sbGJhcjsKKyAgICBlbmNvZGVyIDw8IGlzSW1hZ2VDb250cm9sOwogfQogCiBib29sIFdlYkhp
dFRlc3RSZXN1bHQ6OkRhdGE6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2Rlciwg
V2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEpCkBAIC04Miw3ICs4NCw4
IEBAIGJvb2wgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YTo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNv
ZGVyJiBkZWNvZGVyLCBXZWJIaXRUZXN0UmVzCiAgICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZSho
aXRUZXN0UmVzdWx0RGF0YS5saW5rVGl0bGUpCiAgICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZSho
aXRUZXN0UmVzdWx0RGF0YS5pc0NvbnRlbnRFZGl0YWJsZSkKICAgICAgICAgfHwgIWRlY29kZXIu
ZGVjb2RlKGhpdFRlc3RSZXN1bHREYXRhLmVsZW1lbnRCb3VuZGluZ0JveCkKLSAgICAgICAgfHwg
IWRlY29kZXIuZGVjb2RlKGhpdFRlc3RSZXN1bHREYXRhLmlzU2Nyb2xsYmFyKSkKKyAgICAgICAg
fHwgIWRlY29kZXIuZGVjb2RlKGhpdFRlc3RSZXN1bHREYXRhLmlzU2Nyb2xsYmFyKQorICAgICAg
ICB8fCAhZGVjb2Rlci5kZWNvZGUoaGl0VGVzdFJlc3VsdERhdGEuaXNJbWFnZUNvbnRyb2wpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5oCmluZGV4IGEyMDc1YWEuLmEyZWI0YzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGU7CiAgICAgICAgIFdlYkNvcmU6Oklu
dFJlY3QgZWxlbWVudEJvdW5kaW5nQm94OwogICAgICAgICBib29sIGlzU2Nyb2xsYmFyOworICAg
ICAgICBib29sIGlzSW1hZ2VDb250cm9sOwogCiAgICAgICAgIERhdGEoKTsKICAgICAgICAgZXhw
bGljaXQgRGF0YShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGM5ZTRlOTguLjEyOTkxYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zMjgwLDEzICszMjgw
LDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnRlcm5hbFNob3dDb250ZXh0TWVudShjb25zdCBJ
bnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBXCiAgICAgLy8gU2luY2Ugc2hvd0NvbnRleHRN
ZW51KCkgY2FuIHNwaW4gYSBuZXN0ZWQgcnVuIGxvb3Agd2UgbmVlZCB0byB0dXJuIG9mZiB0aGUg
cmVzcG9uc2l2ZW5lc3MgdGltZXIuCiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVy
KCktPnN0b3AoKTsKIAotICAgIC8vIEdpdmUgdGhlIFBhZ2VDb250ZXh0TWVudUNsaWVudCBvbmUg
bGFzdCBzd2lwZSBhdCBjaGFuZ2luZyB0aGUgbWVudS4KKyAgICAvLyBVbmxlc3MgdGhpcyBpcyBh
biBpbWFnZSBjb250cm9sLCBnaXZlIHRoZSBQYWdlQ29udGV4dE1lbnVDbGllbnQgb25lIGxhc3Qg
c3dpcGUgYXQgY2hhbmdpbmcgdGhlIG1lbnUuCiAgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRl
bURhdGE+IGl0ZW1zOwotICAgIGlmICghbV9jb250ZXh0TWVudUNsaWVudC5nZXRDb250ZXh0TWVu
dUZyb21Qcm9wb3NlZE1lbnUodGhpcywgcHJvcG9zZWRJdGVtcywgaXRlbXMsIGhpdFRlc3RSZXN1
bHREYXRhLCB1c2VyRGF0YS5nZXQoKSkpIHsKLSAgICAgICAgaWYgKCFtX2NvbnRleHRNZW51Q2xp
ZW50LnNob3dDb250ZXh0TWVudSh0aGlzLCBtZW51TG9jYXRpb24sIHByb3Bvc2VkSXRlbXMpKQot
ICAgICAgICAgICAgbV9hY3RpdmVDb250ZXh0TWVudS0+c2hvd0NvbnRleHRNZW51KG1lbnVMb2Nh
dGlvbiwgcHJvcG9zZWRJdGVtcyk7Ci0gICAgfSBlbHNlIGlmICghbV9jb250ZXh0TWVudUNsaWVu
dC5zaG93Q29udGV4dE1lbnUodGhpcywgbWVudUxvY2F0aW9uLCBpdGVtcykpCi0gICAgICAgIG1f
YWN0aXZlQ29udGV4dE1lbnUtPnNob3dDb250ZXh0TWVudShtZW51TG9jYXRpb24sIGl0ZW1zKTsK
KyAgICBib29sIHVzZVByb3Bvc2VkSXRlbXMgPSB0cnVlOworICAgIGlmICghaGl0VGVzdFJlc3Vs
dERhdGEuaXNJbWFnZUNvbnRyb2wgJiYgbV9jb250ZXh0TWVudUNsaWVudC5nZXRDb250ZXh0TWVu
dUZyb21Qcm9wb3NlZE1lbnUodGhpcywgcHJvcG9zZWRJdGVtcywgaXRlbXMsIGhpdFRlc3RSZXN1
bHREYXRhLCB1c2VyRGF0YS5nZXQoKSkpCisgICAgICAgIHVzZVByb3Bvc2VkSXRlbXMgPSBmYWxz
ZTsKKyAgICAKKyAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1z
VG9TaG93ID0gdXNlUHJvcG9zZWRJdGVtcyA/IHByb3Bvc2VkSXRlbXMgOiBpdGVtczsKKyAgICBp
ZiAoIW1fY29udGV4dE1lbnVDbGllbnQuc2hvd0NvbnRleHRNZW51KHRoaXMsIG1lbnVMb2NhdGlv
biwgaXRlbXNUb1Nob3cpKQorICAgICAgICBtX2FjdGl2ZUNvbnRleHRNZW51LT5zaG93Q29udGV4
dE1lbnUobWVudUxvY2F0aW9uLCBpdGVtc1RvU2hvdyk7CiAgICAgCiAgICAgbV9jb250ZXh0TWVu
dUNsaWVudC5jb250ZXh0TWVudURpc21pc3NlZCh0aGlzKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225211</attachid>
            <date>2014-02-25 18:44:26 -0800</date>
            <delta_ts>2014-02-25 21:09:29 -0800</delta_ts>
            <desc>Patch v2 - Attempted build fixes (and review feedback)</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>12585</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmZWI1ZmE0Li40NTY1ZjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTQtMDItMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFBpcGUgZXhwZXJpbWVudGFsIGltYWdlIGNvbnRyb2xzIG1lbnUgdXAgdG8gV2ViS2l0Mgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5MzM5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGFuZGxlIGV2
ZW50cyBmb3IgdGhlIGltYWdlIGNvbnRyb2wgc3RhcnRpbmcgdGhlIGNvbnRleHQgbWVudSBwcm9j
ZXNzIGlmIGFwcHJvcHJpYXRlOgorICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRy
b2xzUm9vdEVsZW1lbnRNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc1Jv
b3RFbGVtZW50TWFjOjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL3NoYWRv
dy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmg6CisKKyAgICAgICAgKiBwYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNv
bnRyb2xsZXI6OmNyZWF0ZUNvbnRleHRNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRN
ZW51Q29udHJvbGxlcjo6cG9wdWxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVD
b250cm9sbGVyOjpzaG93SW1hZ2VDb250cm9sc01lbnUpOgorICAgICAgICAqIHBhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmg6CisKKyAgICAgICAgQWRkIGEgaGl0IHRlc3QgZmxhZyBmb3Igd2hl
dGhlciBvciBub3QgdGhpcyBpcyBhbiBpbWFnZSBjb250cm9sOgorICAgICAgICAqIHJlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6Okhp
dFRlc3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9
KToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdDo6c2V0SXNJbWFnZUNvbnRyb2wpOgorICAgICAgICAoV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdDo6aXNJbWFnZUNvbnRyb2wpOgorCiAyMDE0LTAyLTI0ICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBCcmVhayBvdXQgSW1hZ2VDb250cm9s
cyBzdHlsZSBpbnRvIGFuIGV4dGVybmFsIHN0eWxlc2hlZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1h
Yy5jcHAKaW5kZXggMjVhOGFmZS4uOGFlYWJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5j
cHAKQEAgLTI4LDYgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKIAorI2lu
Y2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNjEsNiArNjQsMTggQEAgUGFzc1JlZlB0cjxJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM+
IEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYzo6bWF5YmVDcmVhdGUKICAgICByZXR1cm4gY29u
dHJvbHMucmVsZWFzZSgpOwogfQogCit2b2lkIEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYzo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKKyAgICAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSBkb2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgICAgIHBhZ2UtPmNvbnRleHRNZW51Q29udHJv
bGxlcigpLnNob3dJbWFnZUNvbnRyb2xzTWVudShldmVudCk7CisKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKKyAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVu
dCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTUFH
RV9DT05UUk9MUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9J
bWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaAppbmRleCA4YzFkZjliLi4yODNkMGI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9s
c1Jvb3RFbGVtZW50TWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0lt
YWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5oCkBAIC00MCw2ICs0MCw4IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMoRG9jdW1lbnQmKTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
eHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggMGNhNjFjYi4uMGU5ZTM4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMTM4LDkgKzEzOCwx
NSBAQCBQYXNzT3duUHRyPENvbnRleHRNZW51PiBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNyZWF0
ZUNvbnRleHRNZW51KEV2ZW50KiBldmVudCkKICAgICBNb3VzZUV2ZW50JiBtb3VzZUV2ZW50ID0g
dG9Nb3VzZUV2ZW50KCpldmVudCk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQobW91c2VFdmVu
dC5hYnNvbHV0ZUxvY2F0aW9uKCkpOwogCi0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IGV2ZW50LT50
YXJnZXQoKS0+dG9Ob2RlKCktPmRvY3VtZW50KCkuZnJhbWUoKSkKKyAgICBOb2RlKiBub2RlID0g
ZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKTsKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gbm9kZS0+
ZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVy
KCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkpOwog
CisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgIGlmIChub2RlLT5pc0ltYWdlQ29udHJv
bHNSb290RWxlbWVudCgpKQorICAgICAgICByZXN1bHQuc2V0SXNJbWFnZUNvbnRyb2wodHJ1ZSk7
CisjZW5kaWYKKyAgICAKICAgICBpZiAoIXJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTgxNSw2ICs4MjEsMTIgQEAgdm9pZCBDb250ZXh0
TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1
cm47CiAKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgLy8gVGhlIGRlZmF1bHQgaW1h
Z2UgY29udHJvbCBtZW51IGdldHMgcG9wdWxhdGVkIHNvbGVseSBieSB0aGUgcGxhdGZvcm0uCisg
ICAgaWYgKG1faGl0VGVzdFJlc3VsdC5pc0ltYWdlQ29udHJvbCgpKQorICAgICAgICByZXR1cm47
CisjZW5kaWYKKwogICAgIGlmICghbV9oaXRUZXN0UmVzdWx0LmlzQ29udGVudEVkaXRhYmxlKCkp
IHsKICAgICAgICAgRnJhbWVMb2FkZXImIGxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKTsKICAgICAg
ICAgVVJMIGxpbmtVUkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CkBAIC0x
NDExLDYgKzE0MjMsMTUgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnNob3dDb250ZXh0
TWVudUF0KEZyYW1lKiBmcmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWMKIH0KICNlbmRpZgogCisj
aWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQordm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnNo
b3dJbWFnZUNvbnRyb2xzTWVudShFdmVudCogZXZlbnQpCit7CisgICAgY2xlYXJDb250ZXh0TWVu
dSgpOworICAgIGhhbmRsZUNvbnRleHRNZW51RXZlbnQoZXZlbnQpOworICAgIG1fY2xpZW50LnNo
b3dDb250ZXh0TWVudSgpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmgKaW5kZXggZmVmMTM1My4uNDQ3Yzk2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5oCkBAIC02OCw2ICs2OCwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2hvd0NvbnRleHRNZW51QXQoRnJhbWUq
LCBjb25zdCBJbnRQb2ludCYgY2xpY2tQb2ludCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTUFH
RV9DT05UUk9MUykKKyAgICAgICAgdm9pZCBzaG93SW1hZ2VDb250cm9sc01lbnUoRXZlbnQqKTsK
KyNlbmRpZgorCiAgICAgcHJpdmF0ZToKICAgICAgICAgUGFzc093blB0cjxDb250ZXh0TWVudT4g
Y3JlYXRlQ29udGV4dE1lbnUoRXZlbnQqKTsKICAgICAgICAgdm9pZCBzaG93Q29udGV4dE1lbnUo
RXZlbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRl
eCA2NDU5ZGE2Li5lODViM2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuY3BwCkBAIC01Nyw2ICs1Nyw5IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
IEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoKQogICAgIDogbV9pc092ZXJXaWRnZXQoZmFs
c2UpCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgICwgbV9pc0ltYWdlQ29udHJvbChm
YWxzZSkKKyNlbmRpZgogewogfQogCkBAIC02NCw2ICs2Nyw5IEBAIEhpdFRlc3RSZXN1bHQ6Okhp
dFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAgIDogbV9oaXRUZXN0TG9j
YXRpb24ocG9pbnQpCiAgICAgLCBtX3BvaW50SW5Jbm5lck5vZGVGcmFtZShwb2ludCkKICAgICAs
IG1faXNPdmVyV2lkZ2V0KGZhbHNlKQorI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICAs
IG1faXNJbWFnZUNvbnRyb2woZmFsc2UpCisjZW5kaWYKIHsKIH0KIApAQCAtNzEsNiArNzcsOSBA
QCBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50JiBjZW50ZXJQ
b2ludCwgdW5zaWduZWQgdG9wUGFkZGluZwogICAgIDogbV9oaXRUZXN0TG9jYXRpb24oY2VudGVy
UG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRp
bmcpCiAgICAgLCBtX3BvaW50SW5Jbm5lck5vZGVGcmFtZShjZW50ZXJQb2ludCkKICAgICAsIG1f
aXNPdmVyV2lkZ2V0KGZhbHNlKQorI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICAsIG1f
aXNJbWFnZUNvbnRyb2woZmFsc2UpCisjZW5kaWYKIHsKIH0KIApAQCAtNzgsNiArODcsOSBAQCBI
aXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgb3RoZXIp
CiAgICAgOiBtX2hpdFRlc3RMb2NhdGlvbihvdGhlcikKICAgICAsIG1fcG9pbnRJbklubmVyTm9k
ZUZyYW1lKG1faGl0VGVzdExvY2F0aW9uLnBvaW50KCkpCiAgICAgLCBtX2lzT3ZlcldpZGdldChm
YWxzZSkKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgLCBtX2lzSW1hZ2VDb250cm9s
KGZhbHNlKQorI2VuZGlmCiB7CiB9CiAKQEAgLTkwLDYgKzEwMiwxMCBAQCBIaXRUZXN0UmVzdWx0
OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgICwgbV9pbm5l
clVSTEVsZW1lbnQob3RoZXIuVVJMRWxlbWVudCgpKQogICAgICwgbV9zY3JvbGxiYXIob3RoZXIu
c2Nyb2xsYmFyKCkpCiAgICAgLCBtX2lzT3ZlcldpZGdldChvdGhlci5pc092ZXJXaWRnZXQoKSkK
KyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgLCBtX2lzSW1hZ2VDb250cm9sKG90aGVy
Lm1faXNJbWFnZUNvbnRyb2wpCisjZW5kaWYKKwogewogICAgIC8vIE9ubHkgY29weSB0aGUgTm9k
ZVNldCBpbiBjYXNlIG9mIHJlY3QgaGl0IHRlc3QuCiAgICAgbV9yZWN0QmFzZWRUZXN0UmVzdWx0
ID0gYWRvcHRQdHIob3RoZXIubV9yZWN0QmFzZWRUZXN0UmVzdWx0ID8gbmV3IE5vZGVTZXQoKm90
aGVyLm1fcmVjdEJhc2VkVGVzdFJlc3VsdCkgOiAwKTsKQEAgLTEwOSw2ICsxMjUsOSBAQCBIaXRU
ZXN0UmVzdWx0JiBIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0oY29uc3QgSGl0VGVzdFJlc3VsdCYg
b3RoZXIpCiAgICAgbV9pbm5lclVSTEVsZW1lbnQgPSBvdGhlci5VUkxFbGVtZW50KCk7CiAgICAg
bV9zY3JvbGxiYXIgPSBvdGhlci5zY3JvbGxiYXIoKTsKICAgICBtX2lzT3ZlcldpZGdldCA9IG90
aGVyLmlzT3ZlcldpZGdldCgpOworI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICBtX2lz
SW1hZ2VDb250cm9sID0gb3RoZXIubV9pc0ltYWdlQ29udHJvbDsKKyNlbmRpZgogCiAgICAgLy8g
T25seSBjb3B5IHRoZSBOb2RlU2V0IGluIGNhc2Ugb2YgcmVjdCBoaXQgdGVzdC4KICAgICBtX3Jl
Y3RCYXNlZFRlc3RSZXN1bHQgPSBhZG9wdFB0cihvdGhlci5tX3JlY3RCYXNlZFRlc3RSZXN1bHQg
PyBuZXcgTm9kZVNldCgqb3RoZXIubV9yZWN0QmFzZWRUZXN0UmVzdWx0KSA6IDApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5kZXggNGQ3MjhhNy4uODE0ZjM2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC0xNDEsNiArMTQx
LDExIEBAIHB1YmxpYzoKIAogICAgIE5vZGUqIHRhcmdldE5vZGUoKSBjb25zdDsKIAorI2lmIEVO
QUJMRShJTUFHRV9DT05UUk9MUykKKyAgICB2b2lkIHNldElzSW1hZ2VDb250cm9sKGJvb2wgYikg
eyBtX2lzSW1hZ2VDb250cm9sID0gYjsgfQorICAgIGJvb2wgaXNJbWFnZUNvbnRyb2woKSBjb25z
dCB7IHJldHVybiBtX2lzSW1hZ2VDb250cm9sOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBO
b2RlU2V0JiBtdXRhYmxlUmVjdEJhc2VkVGVzdFJlc3VsdCgpOyAvLyBTZWUgYWJvdmUuCiAKQEAg
LTE1OCw2ICsxNjMsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX3Njcm9s
bGJhcjsKICAgICBib29sIG1faXNPdmVyV2lkZ2V0OyAvLyBSZXR1cm5zIHRydWUgaWYgd2UgYXJl
IG92ZXIgYSB3aWRnZXQgKGFuZCBub3QgaW4gdGhlIGJvcmRlci9wYWRkaW5nIGFyZWEgb2YgYSBS
ZW5kZXJXaWRnZXQgZm9yIGV4YW1wbGUpLgogCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQor
ICAgIGJvb2wgbV9pc0ltYWdlQ29udHJvbDsKKyNlbmRpZgorCiAgICAgbXV0YWJsZSBPd25QdHI8
Tm9kZVNldD4gbV9yZWN0QmFzZWRUZXN0UmVzdWx0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDcxNGE0
YTYuLmUyZTRiZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNC0wMi0yNSAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUGlwZSBleHBlcmltZW50
YWwgaW1hZ2UgY29udHJvbHMgbWVudSB1cCB0byBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkzMzkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdDo6RGF0YTo6RGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHQ6OkRhdGE6OmVuY29kZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHQ6OkRhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVk
L1dlYkhpdFRlc3RSZXN1bHQuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmludGVybmFsU2hvd0NvbnRleHRN
ZW51KTogT25seSBnaXZlIHRoZSBjbGllbnQgYSBzd2lwZQorICAgICAgICAgIGlmIHRoaXMgaXNu
4oCZdCBhbiBpbWFnZSBjb250cm9sIG1lbnUuCisKIDIwMTQtMDItMjQgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFBERlZpZXdDb250cm9s
bGVyLiosIHdoaWNoIGlzIHVudXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkhpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkhpdFRlc3RS
ZXN1bHQuY3BwCmluZGV4IDAzYzRkMWUuLjgxYjFkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTUyLDYgKzUyLDkgQEAgV2ViSGl0VGVzdFJlc3Vs
dDo6RGF0YTo6RGF0YShjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0KQogICAgICwg
aXNDb250ZW50RWRpdGFibGUoaGl0VGVzdFJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSgpKQogICAg
ICwgZWxlbWVudEJvdW5kaW5nQm94KGVsZW1lbnRCb3VuZGluZ0JveEluV2luZG93Q29vcmRpbmF0
ZXMoaGl0VGVzdFJlc3VsdCkpCiAgICAgLCBpc1Njcm9sbGJhcihoaXRUZXN0UmVzdWx0LnNjcm9s
bGJhcigpKQorI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICAsIGlzSW1hZ2VDb250cm9s
KGhpdFRlc3RSZXN1bHQuaXNJbWFnZUNvbnRyb2woKSkKKyNlbmRpZgogewogfQogCkBAIC03MCw2
ICs3Myw5IEBAIHZvaWQgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YTo6ZW5jb2RlKElQQzo6QXJndW1l
bnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgaXNDb250ZW50RWRpdGFi
bGU7CiAgICAgZW5jb2RlciA8PCBlbGVtZW50Qm91bmRpbmdCb3g7CiAgICAgZW5jb2RlciA8PCBp
c1Njcm9sbGJhcjsKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgZW5jb2RlciA8PCBp
c0ltYWdlQ29udHJvbDsKKyNlbmRpZgogfQogCiBib29sIFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGE6
OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViSGl0VGVzdFJlc3VsdDo6
RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEpCkBAIC04NSw2ICs5MSwxMSBAQCBib29sIFdlYkhpdFRl
c3RSZXN1bHQ6OkRhdGE6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2Vi
SGl0VGVzdFJlcwogICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUoaGl0VGVzdFJlc3VsdERhdGEu
aXNTY3JvbGxiYXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyNpZiBFTkFCTEUoSU1BR0Vf
Q09OVFJPTFMpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoaXRUZXN0UmVzdWx0RGF0YS5pc0lt
YWdlQ29udHJvbCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0
UmVzdWx0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5oCmluZGV4
IGEyMDc1YWEuLjlhNjI5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJI
aXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkhpdFRlc3RSZXN1
bHQuaApAQCAtNTIsNiArNTIsOSBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXNDb250ZW50RWRp
dGFibGU7CiAgICAgICAgIFdlYkNvcmU6OkludFJlY3QgZWxlbWVudEJvdW5kaW5nQm94OwogICAg
ICAgICBib29sIGlzU2Nyb2xsYmFyOworI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICAg
ICAgYm9vbCBpc0ltYWdlQ29udHJvbDsKKyNlbmRpZgogCiAgICAgICAgIERhdGEoKTsKICAgICAg
ICAgZXhwbGljaXQgRGF0YShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGM5ZTRlOTguLjEyOTkxYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zMjgwLDEz
ICszMjgwLDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnRlcm5hbFNob3dDb250ZXh0TWVudShj
b25zdCBJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBXCiAgICAgLy8gU2luY2Ugc2hvd0Nv
bnRleHRNZW51KCkgY2FuIHNwaW4gYSBuZXN0ZWQgcnVuIGxvb3Agd2UgbmVlZCB0byB0dXJuIG9m
ZiB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIuCiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVz
c1RpbWVyKCktPnN0b3AoKTsKIAotICAgIC8vIEdpdmUgdGhlIFBhZ2VDb250ZXh0TWVudUNsaWVu
dCBvbmUgbGFzdCBzd2lwZSBhdCBjaGFuZ2luZyB0aGUgbWVudS4KKyAgICAvLyBVbmxlc3MgdGhp
cyBpcyBhbiBpbWFnZSBjb250cm9sLCBnaXZlIHRoZSBQYWdlQ29udGV4dE1lbnVDbGllbnQgb25l
IGxhc3Qgc3dpcGUgYXQgY2hhbmdpbmcgdGhlIG1lbnUuCiAgICAgVmVjdG9yPFdlYkNvbnRleHRN
ZW51SXRlbURhdGE+IGl0ZW1zOwotICAgIGlmICghbV9jb250ZXh0TWVudUNsaWVudC5nZXRDb250
ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUodGhpcywgcHJvcG9zZWRJdGVtcywgaXRlbXMsIGhpdFRl
c3RSZXN1bHREYXRhLCB1c2VyRGF0YS5nZXQoKSkpIHsKLSAgICAgICAgaWYgKCFtX2NvbnRleHRN
ZW51Q2xpZW50LnNob3dDb250ZXh0TWVudSh0aGlzLCBtZW51TG9jYXRpb24sIHByb3Bvc2VkSXRl
bXMpKQotICAgICAgICAgICAgbV9hY3RpdmVDb250ZXh0TWVudS0+c2hvd0NvbnRleHRNZW51KG1l
bnVMb2NhdGlvbiwgcHJvcG9zZWRJdGVtcyk7Ci0gICAgfSBlbHNlIGlmICghbV9jb250ZXh0TWVu
dUNsaWVudC5zaG93Q29udGV4dE1lbnUodGhpcywgbWVudUxvY2F0aW9uLCBpdGVtcykpCi0gICAg
ICAgIG1fYWN0aXZlQ29udGV4dE1lbnUtPnNob3dDb250ZXh0TWVudShtZW51TG9jYXRpb24sIGl0
ZW1zKTsKKyAgICBib29sIHVzZVByb3Bvc2VkSXRlbXMgPSB0cnVlOworICAgIGlmICghaGl0VGVz
dFJlc3VsdERhdGEuaXNJbWFnZUNvbnRyb2wgJiYgbV9jb250ZXh0TWVudUNsaWVudC5nZXRDb250
ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUodGhpcywgcHJvcG9zZWRJdGVtcywgaXRlbXMsIGhpdFRl
c3RSZXN1bHREYXRhLCB1c2VyRGF0YS5nZXQoKSkpCisgICAgICAgIHVzZVByb3Bvc2VkSXRlbXMg
PSBmYWxzZTsKKyAgICAKKyAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4m
IGl0ZW1zVG9TaG93ID0gdXNlUHJvcG9zZWRJdGVtcyA/IHByb3Bvc2VkSXRlbXMgOiBpdGVtczsK
KyAgICBpZiAoIW1fY29udGV4dE1lbnVDbGllbnQuc2hvd0NvbnRleHRNZW51KHRoaXMsIG1lbnVM
b2NhdGlvbiwgaXRlbXNUb1Nob3cpKQorICAgICAgICBtX2FjdGl2ZUNvbnRleHRNZW51LT5zaG93
Q29udGV4dE1lbnUobWVudUxvY2F0aW9uLCBpdGVtc1RvU2hvdyk7CiAgICAgCiAgICAgbV9jb250
ZXh0TWVudUNsaWVudC5jb250ZXh0TWVudURpc21pc3NlZCh0aGlzKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225219</attachid>
            <date>2014-02-25 21:09:29 -0800</date>
            <delta_ts>2014-02-25 22:54:58 -0800</delta_ts>
            <desc>Patch v3 - More build fixes</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>12765</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmZWI1ZmE0Li40NTY1ZjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTQtMDItMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFBpcGUgZXhwZXJpbWVudGFsIGltYWdlIGNvbnRyb2xzIG1lbnUgdXAgdG8gV2ViS2l0Mgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5MzM5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGFuZGxlIGV2
ZW50cyBmb3IgdGhlIGltYWdlIGNvbnRyb2wgc3RhcnRpbmcgdGhlIGNvbnRleHQgbWVudSBwcm9j
ZXNzIGlmIGFwcHJvcHJpYXRlOgorICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRy
b2xzUm9vdEVsZW1lbnRNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc1Jv
b3RFbGVtZW50TWFjOjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL3NoYWRv
dy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmg6CisKKyAgICAgICAgKiBwYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNv
bnRyb2xsZXI6OmNyZWF0ZUNvbnRleHRNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRN
ZW51Q29udHJvbGxlcjo6cG9wdWxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVD
b250cm9sbGVyOjpzaG93SW1hZ2VDb250cm9sc01lbnUpOgorICAgICAgICAqIHBhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmg6CisKKyAgICAgICAgQWRkIGEgaGl0IHRlc3QgZmxhZyBmb3Igd2hl
dGhlciBvciBub3QgdGhpcyBpcyBhbiBpbWFnZSBjb250cm9sOgorICAgICAgICAqIHJlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6Okhp
dFRlc3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9
KToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdDo6c2V0SXNJbWFnZUNvbnRyb2wpOgorICAgICAgICAoV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdDo6aXNJbWFnZUNvbnRyb2wpOgorCiAyMDE0LTAyLTI0ICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBCcmVhayBvdXQgSW1hZ2VDb250cm9s
cyBzdHlsZSBpbnRvIGFuIGV4dGVybmFsIHN0eWxlc2hlZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1h
Yy5jcHAKaW5kZXggMjVhOGFmZS4uOGFlYWJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5j
cHAKQEAgLTI4LDYgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKIAorI2lu
Y2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNjEsNiArNjQsMTggQEAgUGFzc1JlZlB0cjxJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM+
IEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYzo6bWF5YmVDcmVhdGUKICAgICByZXR1cm4gY29u
dHJvbHMucmVsZWFzZSgpOwogfQogCit2b2lkIEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYzo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKKyAgICAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSBkb2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgICAgIHBhZ2UtPmNvbnRleHRNZW51Q29udHJv
bGxlcigpLnNob3dJbWFnZUNvbnRyb2xzTWVudShldmVudCk7CisKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKKyAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVu
dCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTUFH
RV9DT05UUk9MUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9J
bWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaAppbmRleCA4YzFkZjliLi4yODNkMGI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9s
c1Jvb3RFbGVtZW50TWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0lt
YWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5oCkBAIC00MCw2ICs0MCw4IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMoRG9jdW1lbnQmKTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
eHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggMGNhNjFjYi4uMGU5ZTM4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMTM4LDkgKzEzOCwx
NSBAQCBQYXNzT3duUHRyPENvbnRleHRNZW51PiBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNyZWF0
ZUNvbnRleHRNZW51KEV2ZW50KiBldmVudCkKICAgICBNb3VzZUV2ZW50JiBtb3VzZUV2ZW50ID0g
dG9Nb3VzZUV2ZW50KCpldmVudCk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQobW91c2VFdmVu
dC5hYnNvbHV0ZUxvY2F0aW9uKCkpOwogCi0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IGV2ZW50LT50
YXJnZXQoKS0+dG9Ob2RlKCktPmRvY3VtZW50KCkuZnJhbWUoKSkKKyAgICBOb2RlKiBub2RlID0g
ZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKTsKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gbm9kZS0+
ZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVy
KCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkpOwog
CisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgIGlmIChub2RlLT5pc0ltYWdlQ29udHJv
bHNSb290RWxlbWVudCgpKQorICAgICAgICByZXN1bHQuc2V0SXNJbWFnZUNvbnRyb2wodHJ1ZSk7
CisjZW5kaWYKKyAgICAKICAgICBpZiAoIXJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTgxNSw2ICs4MjEsMTIgQEAgdm9pZCBDb250ZXh0
TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1
cm47CiAKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgLy8gVGhlIGRlZmF1bHQgaW1h
Z2UgY29udHJvbCBtZW51IGdldHMgcG9wdWxhdGVkIHNvbGVseSBieSB0aGUgcGxhdGZvcm0uCisg
ICAgaWYgKG1faGl0VGVzdFJlc3VsdC5pc0ltYWdlQ29udHJvbCgpKQorICAgICAgICByZXR1cm47
CisjZW5kaWYKKwogICAgIGlmICghbV9oaXRUZXN0UmVzdWx0LmlzQ29udGVudEVkaXRhYmxlKCkp
IHsKICAgICAgICAgRnJhbWVMb2FkZXImIGxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKTsKICAgICAg
ICAgVVJMIGxpbmtVUkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CkBAIC0x
NDExLDYgKzE0MjMsMTUgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnNob3dDb250ZXh0
TWVudUF0KEZyYW1lKiBmcmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWMKIH0KICNlbmRpZgogCisj
aWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQordm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnNo
b3dJbWFnZUNvbnRyb2xzTWVudShFdmVudCogZXZlbnQpCit7CisgICAgY2xlYXJDb250ZXh0TWVu
dSgpOworICAgIGhhbmRsZUNvbnRleHRNZW51RXZlbnQoZXZlbnQpOworICAgIG1fY2xpZW50LnNo
b3dDb250ZXh0TWVudSgpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmgKaW5kZXggZmVmMTM1My4uNDQ3Yzk2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5oCkBAIC02OCw2ICs2OCwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2hvd0NvbnRleHRNZW51QXQoRnJhbWUq
LCBjb25zdCBJbnRQb2ludCYgY2xpY2tQb2ludCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTUFH
RV9DT05UUk9MUykKKyAgICAgICAgdm9pZCBzaG93SW1hZ2VDb250cm9sc01lbnUoRXZlbnQqKTsK
KyNlbmRpZgorCiAgICAgcHJpdmF0ZToKICAgICAgICAgUGFzc093blB0cjxDb250ZXh0TWVudT4g
Y3JlYXRlQ29udGV4dE1lbnUoRXZlbnQqKTsKICAgICAgICAgdm9pZCBzaG93Q29udGV4dE1lbnUo
RXZlbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRl
eCA2NDU5ZGE2Li5lODViM2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuY3BwCkBAIC01Nyw2ICs1Nyw5IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
IEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoKQogICAgIDogbV9pc092ZXJXaWRnZXQoZmFs
c2UpCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgICwgbV9pc0ltYWdlQ29udHJvbChm
YWxzZSkKKyNlbmRpZgogewogfQogCkBAIC02NCw2ICs2Nyw5IEBAIEhpdFRlc3RSZXN1bHQ6Okhp
dFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAgIDogbV9oaXRUZXN0TG9j
YXRpb24ocG9pbnQpCiAgICAgLCBtX3BvaW50SW5Jbm5lck5vZGVGcmFtZShwb2ludCkKICAgICAs
IG1faXNPdmVyV2lkZ2V0KGZhbHNlKQorI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICAs
IG1faXNJbWFnZUNvbnRyb2woZmFsc2UpCisjZW5kaWYKIHsKIH0KIApAQCAtNzEsNiArNzcsOSBA
QCBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50JiBjZW50ZXJQ
b2ludCwgdW5zaWduZWQgdG9wUGFkZGluZwogICAgIDogbV9oaXRUZXN0TG9jYXRpb24oY2VudGVy
UG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRp
bmcpCiAgICAgLCBtX3BvaW50SW5Jbm5lck5vZGVGcmFtZShjZW50ZXJQb2ludCkKICAgICAsIG1f
aXNPdmVyV2lkZ2V0KGZhbHNlKQorI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICAsIG1f
aXNJbWFnZUNvbnRyb2woZmFsc2UpCisjZW5kaWYKIHsKIH0KIApAQCAtNzgsNiArODcsOSBAQCBI
aXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgb3RoZXIp
CiAgICAgOiBtX2hpdFRlc3RMb2NhdGlvbihvdGhlcikKICAgICAsIG1fcG9pbnRJbklubmVyTm9k
ZUZyYW1lKG1faGl0VGVzdExvY2F0aW9uLnBvaW50KCkpCiAgICAgLCBtX2lzT3ZlcldpZGdldChm
YWxzZSkKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgLCBtX2lzSW1hZ2VDb250cm9s
KGZhbHNlKQorI2VuZGlmCiB7CiB9CiAKQEAgLTkwLDYgKzEwMiwxMCBAQCBIaXRUZXN0UmVzdWx0
OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgICwgbV9pbm5l
clVSTEVsZW1lbnQob3RoZXIuVVJMRWxlbWVudCgpKQogICAgICwgbV9zY3JvbGxiYXIob3RoZXIu
c2Nyb2xsYmFyKCkpCiAgICAgLCBtX2lzT3ZlcldpZGdldChvdGhlci5pc092ZXJXaWRnZXQoKSkK
KyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgLCBtX2lzSW1hZ2VDb250cm9sKG90aGVy
Lm1faXNJbWFnZUNvbnRyb2wpCisjZW5kaWYKKwogewogICAgIC8vIE9ubHkgY29weSB0aGUgTm9k
ZVNldCBpbiBjYXNlIG9mIHJlY3QgaGl0IHRlc3QuCiAgICAgbV9yZWN0QmFzZWRUZXN0UmVzdWx0
ID0gYWRvcHRQdHIob3RoZXIubV9yZWN0QmFzZWRUZXN0UmVzdWx0ID8gbmV3IE5vZGVTZXQoKm90
aGVyLm1fcmVjdEJhc2VkVGVzdFJlc3VsdCkgOiAwKTsKQEAgLTEwOSw2ICsxMjUsOSBAQCBIaXRU
ZXN0UmVzdWx0JiBIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0oY29uc3QgSGl0VGVzdFJlc3VsdCYg
b3RoZXIpCiAgICAgbV9pbm5lclVSTEVsZW1lbnQgPSBvdGhlci5VUkxFbGVtZW50KCk7CiAgICAg
bV9zY3JvbGxiYXIgPSBvdGhlci5zY3JvbGxiYXIoKTsKICAgICBtX2lzT3ZlcldpZGdldCA9IG90
aGVyLmlzT3ZlcldpZGdldCgpOworI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICBtX2lz
SW1hZ2VDb250cm9sID0gb3RoZXIubV9pc0ltYWdlQ29udHJvbDsKKyNlbmRpZgogCiAgICAgLy8g
T25seSBjb3B5IHRoZSBOb2RlU2V0IGluIGNhc2Ugb2YgcmVjdCBoaXQgdGVzdC4KICAgICBtX3Jl
Y3RCYXNlZFRlc3RSZXN1bHQgPSBhZG9wdFB0cihvdGhlci5tX3JlY3RCYXNlZFRlc3RSZXN1bHQg
PyBuZXcgTm9kZVNldCgqb3RoZXIubV9yZWN0QmFzZWRUZXN0UmVzdWx0KSA6IDApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5kZXggNGQ3MjhhNy4uODE0ZjM2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC0xNDEsNiArMTQx
LDExIEBAIHB1YmxpYzoKIAogICAgIE5vZGUqIHRhcmdldE5vZGUoKSBjb25zdDsKIAorI2lmIEVO
QUJMRShJTUFHRV9DT05UUk9MUykKKyAgICB2b2lkIHNldElzSW1hZ2VDb250cm9sKGJvb2wgYikg
eyBtX2lzSW1hZ2VDb250cm9sID0gYjsgfQorICAgIGJvb2wgaXNJbWFnZUNvbnRyb2woKSBjb25z
dCB7IHJldHVybiBtX2lzSW1hZ2VDb250cm9sOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBO
b2RlU2V0JiBtdXRhYmxlUmVjdEJhc2VkVGVzdFJlc3VsdCgpOyAvLyBTZWUgYWJvdmUuCiAKQEAg
LTE1OCw2ICsxNjMsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX3Njcm9s
bGJhcjsKICAgICBib29sIG1faXNPdmVyV2lkZ2V0OyAvLyBSZXR1cm5zIHRydWUgaWYgd2UgYXJl
IG92ZXIgYSB3aWRnZXQgKGFuZCBub3QgaW4gdGhlIGJvcmRlci9wYWRkaW5nIGFyZWEgb2YgYSBS
ZW5kZXJXaWRnZXQgZm9yIGV4YW1wbGUpLgogCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQor
ICAgIGJvb2wgbV9pc0ltYWdlQ29udHJvbDsKKyNlbmRpZgorCiAgICAgbXV0YWJsZSBPd25QdHI8
Tm9kZVNldD4gbV9yZWN0QmFzZWRUZXN0UmVzdWx0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDcxNGE0
YTYuLmUyZTRiZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNC0wMi0yNSAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUGlwZSBleHBlcmltZW50
YWwgaW1hZ2UgY29udHJvbHMgbWVudSB1cCB0byBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkzMzkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdDo6RGF0YTo6RGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHQ6OkRhdGE6OmVuY29kZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHQ6OkRhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVk
L1dlYkhpdFRlc3RSZXN1bHQuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmludGVybmFsU2hvd0NvbnRleHRN
ZW51KTogT25seSBnaXZlIHRoZSBjbGllbnQgYSBzd2lwZQorICAgICAgICAgIGlmIHRoaXMgaXNu
4oCZdCBhbiBpbWFnZSBjb250cm9sIG1lbnUuCisKIDIwMTQtMDItMjQgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFBERlZpZXdDb250cm9s
bGVyLiosIHdoaWNoIGlzIHVudXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkhpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkhpdFRlc3RS
ZXN1bHQuY3BwCmluZGV4IDAzYzRkMWUuLjgxYjFkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTUyLDYgKzUyLDkgQEAgV2ViSGl0VGVzdFJlc3Vs
dDo6RGF0YTo6RGF0YShjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0KQogICAgICwg
aXNDb250ZW50RWRpdGFibGUoaGl0VGVzdFJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSgpKQogICAg
ICwgZWxlbWVudEJvdW5kaW5nQm94KGVsZW1lbnRCb3VuZGluZ0JveEluV2luZG93Q29vcmRpbmF0
ZXMoaGl0VGVzdFJlc3VsdCkpCiAgICAgLCBpc1Njcm9sbGJhcihoaXRUZXN0UmVzdWx0LnNjcm9s
bGJhcigpKQorI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICAsIGlzSW1hZ2VDb250cm9s
KGhpdFRlc3RSZXN1bHQuaXNJbWFnZUNvbnRyb2woKSkKKyNlbmRpZgogewogfQogCkBAIC03MCw2
ICs3Myw5IEBAIHZvaWQgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YTo6ZW5jb2RlKElQQzo6QXJndW1l
bnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgaXNDb250ZW50RWRpdGFi
bGU7CiAgICAgZW5jb2RlciA8PCBlbGVtZW50Qm91bmRpbmdCb3g7CiAgICAgZW5jb2RlciA8PCBp
c1Njcm9sbGJhcjsKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgZW5jb2RlciA8PCBp
c0ltYWdlQ29udHJvbDsKKyNlbmRpZgogfQogCiBib29sIFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGE6
OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViSGl0VGVzdFJlc3VsdDo6
RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEpCkBAIC04NSw2ICs5MSwxMSBAQCBib29sIFdlYkhpdFRl
c3RSZXN1bHQ6OkRhdGE6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2Vi
SGl0VGVzdFJlcwogICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUoaGl0VGVzdFJlc3VsdERhdGEu
aXNTY3JvbGxiYXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyNpZiBFTkFCTEUoSU1BR0Vf
Q09OVFJPTFMpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoaXRUZXN0UmVzdWx0RGF0YS5pc0lt
YWdlQ29udHJvbCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0
UmVzdWx0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5oCmluZGV4
IGEyMDc1YWEuLjlhNjI5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJI
aXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkhpdFRlc3RSZXN1
bHQuaApAQCAtNTIsNiArNTIsOSBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXNDb250ZW50RWRp
dGFibGU7CiAgICAgICAgIFdlYkNvcmU6OkludFJlY3QgZWxlbWVudEJvdW5kaW5nQm94OwogICAg
ICAgICBib29sIGlzU2Nyb2xsYmFyOworI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICAg
ICAgYm9vbCBpc0ltYWdlQ29udHJvbDsKKyNlbmRpZgogCiAgICAgICAgIERhdGEoKTsKICAgICAg
ICAgZXhwbGljaXQgRGF0YShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGM5ZTRlOTguLmNlMmRmNTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zMjgwLDEz
ICszMjgwLDIxIEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnRlcm5hbFNob3dDb250ZXh0TWVudShj
b25zdCBJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBXCiAgICAgLy8gU2luY2Ugc2hvd0Nv
bnRleHRNZW51KCkgY2FuIHNwaW4gYSBuZXN0ZWQgcnVuIGxvb3Agd2UgbmVlZCB0byB0dXJuIG9m
ZiB0aGUgcmVzcG9uc2l2ZW5lc3MgdGltZXIuCiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVz
c1RpbWVyKCktPnN0b3AoKTsKIAotICAgIC8vIEdpdmUgdGhlIFBhZ2VDb250ZXh0TWVudUNsaWVu
dCBvbmUgbGFzdCBzd2lwZSBhdCBjaGFuZ2luZyB0aGUgbWVudS4KKyAgICAvLyBVbmxlc3MgdGhp
cyBpcyBhbiBpbWFnZSBjb250cm9sLCBnaXZlIHRoZSBQYWdlQ29udGV4dE1lbnVDbGllbnQgb25l
IGxhc3Qgc3dpcGUgYXQgY2hhbmdpbmcgdGhlIG1lbnUuCiAgICAgVmVjdG9yPFdlYkNvbnRleHRN
ZW51SXRlbURhdGE+IGl0ZW1zOwotICAgIGlmICghbV9jb250ZXh0TWVudUNsaWVudC5nZXRDb250
ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUodGhpcywgcHJvcG9zZWRJdGVtcywgaXRlbXMsIGhpdFRl
c3RSZXN1bHREYXRhLCB1c2VyRGF0YS5nZXQoKSkpIHsKLSAgICAgICAgaWYgKCFtX2NvbnRleHRN
ZW51Q2xpZW50LnNob3dDb250ZXh0TWVudSh0aGlzLCBtZW51TG9jYXRpb24sIHByb3Bvc2VkSXRl
bXMpKQotICAgICAgICAgICAgbV9hY3RpdmVDb250ZXh0TWVudS0+c2hvd0NvbnRleHRNZW51KG1l
bnVMb2NhdGlvbiwgcHJvcG9zZWRJdGVtcyk7Ci0gICAgfSBlbHNlIGlmICghbV9jb250ZXh0TWVu
dUNsaWVudC5zaG93Q29udGV4dE1lbnUodGhpcywgbWVudUxvY2F0aW9uLCBpdGVtcykpCi0gICAg
ICAgIG1fYWN0aXZlQ29udGV4dE1lbnUtPnNob3dDb250ZXh0TWVudShtZW51TG9jYXRpb24sIGl0
ZW1zKTsKKyAgICBib29sIHVzZVByb3Bvc2VkSXRlbXMgPSB0cnVlOworCisjaWYgRU5BQkxFKElN
QUdFX0NPTlRST0xTKQorICAgIGlmICghaGl0VGVzdFJlc3VsdERhdGEuaXNJbWFnZUNvbnRyb2wg
JiYgbV9jb250ZXh0TWVudUNsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUodGhp
cywgcHJvcG9zZWRJdGVtcywgaXRlbXMsIGhpdFRlc3RSZXN1bHREYXRhLCB1c2VyRGF0YS5nZXQo
KSkpIHsKKyNlbHNlCisgICAgaWYgKG1fY29udGV4dE1lbnVDbGllbnQuZ2V0Q29udGV4dE1lbnVG
cm9tUHJvcG9zZWRNZW51KHRoaXMsIHByb3Bvc2VkSXRlbXMsIGl0ZW1zLCBoaXRUZXN0UmVzdWx0
RGF0YSwgdXNlckRhdGEuZ2V0KCkpKSB7CisjZW5kaWYKKyAgICAgICAgdXNlUHJvcG9zZWRJdGVt
cyA9IGZhbHNlOworICAgIH0KKyAgICAKKyAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJ
dGVtRGF0YT4mIGl0ZW1zVG9TaG93ID0gdXNlUHJvcG9zZWRJdGVtcyA/IHByb3Bvc2VkSXRlbXMg
OiBpdGVtczsKKyAgICBpZiAoIW1fY29udGV4dE1lbnVDbGllbnQuc2hvd0NvbnRleHRNZW51KHRo
aXMsIG1lbnVMb2NhdGlvbiwgaXRlbXNUb1Nob3cpKQorICAgICAgICBtX2FjdGl2ZUNvbnRleHRN
ZW51LT5zaG93Q29udGV4dE1lbnUobWVudUxvY2F0aW9uLCBpdGVtc1RvU2hvdyk7CiAgICAgCiAg
ICAgbV9jb250ZXh0TWVudUNsaWVudC5jb250ZXh0TWVudURpc21pc3NlZCh0aGlzKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225223</attachid>
            <date>2014-02-25 22:54:58 -0800</date>
            <delta_ts>2014-02-26 06:11:02 -0800</delta_ts>
            <desc>Patch v4 - New &quot;ContextMenuContext&quot; class to encompass this notion of data relevant to a ContextMenu invocation</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>61456</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZjdhNWE4ZS4uNWM4OWEyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE2OTMsNiArMTY5Myw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwYWdl
L0Nocm9tZS5jcHAKICAgICBwYWdlL0NvbnNvbGUuY3BwCiAgICAgcGFnZS9Db250ZW50U2VjdXJp
dHlQb2xpY3kuY3BwCisgICAgcGFnZS9Db250ZXh0TWVudUNvbnRleHQuY3BwCiAgICAgcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCiAgICAgcGFnZS9DcnlwdG8uY3BwCiAgICAgcGFnZS9E
T01TZWN1cml0eVBvbGljeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmZWI1ZmE0Li4xMjc3MjEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTQtMDItMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIFBpcGUgZXhwZXJpbWVudGFsIGltYWdlIGNvbnRyb2xz
IG1lbnUgdXAgdG8gV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI5MzM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSGFuZGxlIGV2ZW50cyBmb3IgdGhlIGltYWdlIGNvbnRyb2wgc3RhcnRpbmcg
dGhlIGNvbnRleHQgbWVudSBwcm9jZXNzIGlmIGFwcHJvcHJpYXRlOgorICAgICAgICAqIGh0bWwv
c2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjpkZWZhdWx0RXZlbnRIYW5kbGVyKToK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmg6
CisKKyAgICAgICAgQWRkIGEgY2xhc3MgdG8gaG9sZCBhIEhpdFRlc3RSZXN1bHQgYW5kIGFkZGl0
aW9uIGluZm8gYWJvdXQgdGhlIGN1cnJlbnQgQ29udGV4dE1lbnUgaW52b2NhdGlvbjoKKyAgICAg
ICAgKiBwYWdlL0NvbnRleHRNZW51Q29udGV4dC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGV4dE1lbnVDb250ZXh0OjpDb250ZXh0TWVudUNvbnRleHQpOgorICAgICAgICAqIHBh
Z2UvQ29udGV4dE1lbnVDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4
dE1lbnVDb250ZXh0OjpoaXRUZXN0UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRN
ZW51Q29udGV4dDo6aXNJbWFnZUNvbnRyb2wpOgorCisgICAgICAgIFVwZGF0ZSBDb250ZXh0TWVu
dUNvbnRyb2xsZXIgdG8gd29yayB3aXRoIENvbnRleHRNZW51Q29udGV4dCBpbnN0ZWFkIG9mIEhp
dFRlc3RSZXN1bHQgZGlyZWN0bHk6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpzaG93Q29u
dGV4dE1lbnUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpjcmVh
dGVDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6
OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51
Q29udHJvbGxlcjo6cG9wdWxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250
cm9sbGVyOjphZGRJbnNwZWN0RWxlbWVudEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4
dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpzaG93SW1hZ2VDb250cm9sc01lbnUpOgorICAgICAg
ICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
eHRNZW51Q29udHJvbGxlcjo6c2V0Q29udGV4dE1lbnVDb250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmhpdFRlc3RSZXN1bHQpOgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAxNC0wMi0yNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgQnJlYWsgb3V0IEltYWdlQ29udHJvbHMgc3R5bGUgaW50byBh
biBleHRlcm5hbCBzdHlsZXNoZWV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAx
N2E2MGNhLi44NWYyMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQwNTQs
NiArNDA1NCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50
LmggXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250ZXh0LmNwcCBcCisJU291
cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
UHJvdmlkZXIuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvagppbmRleCBhZDVmMTQ1Li4xODY5NDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTY5NjcsNiArNjk2Nyw3IEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXGFuaW1hdGlvblxDb21wb3NpdGVBbmltYXRpb24u
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxDb25zb2xlLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcQ29udGVudFNlY3VyaXR5UG9saWN5LmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcQ29udGV4dE1lbnVDb250ZXh0
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcQ29udGV4dE1lbnVDb250
cm9sbGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcQ3J5cHRvLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcYW5pbWF0aW9uXENTU1Byb3Bl
cnR5QW5pbWF0aW9uLmNwcCIgLz4KQEAgLTE4NjgwLDYgKzE4NjgxLDcgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBhZ2VcQ29uc29sZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGFnZVxDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBhZ2VcQ29udGV4dE1lbnVDbGllbnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBhZ2VcQ29udGV4dE1lbnVDb250ZXh0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwYWdlXENvbnRleHRNZW51Q29udHJvbGxlci5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFnZVxDb250ZXh0TWVudVByb3ZpZGVyLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxwYWdlXENyeXB0by5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhmNjlmNWUuLjFiOGJjOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE3MzcsNiArMTczNyw4IEBACiAJCTUxMDE5NDQ1MTgzNkY3RTUwMDkyNTUyMyAvKiBJ
REJDdXJzb3JCYWNrZW5kT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEwMTk0NDMxODM2RjdFNDAwOTI1NTIzIC8qIElEQkN1cnNvckJh
Y2tlbmRPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTEwNTlEREQxODIwQjE3NjAwREZGOUIxIC8qIElEQlRyYW5zYWN0aW9uQmFj
a2VuZE9wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTEwNTlERDkxODIwQjE3NjAwREZGOUIxIC8qIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZE9wZXJhdGlvbnMuY3BwICovOyB9OwogCQk1MTA1OURERTE4MjBCMTc2MDBERkY5QjEgLyogSURC
VHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNTlEREExODIwQjE3NjAwREZGOUIxIC8qIElEQlRyYW5z
YWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk1MTA2RDdCRDE4QkRCNzZGMDAwQUIxNjYgLyogQ29udGV4dE1l
bnVDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMDZEN0JCMThCREI3NkYwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHQuY3BwICov
OyB9OworCQk1MTA2RDdCRTE4QkRCNzZGMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA2RDdCQzE4
QkRCNzZGMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEwQTMyNkYxODMxODQzMTAwM0M1MzI2
IC8qIElEQlNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMEEzMjZFMTgzMTg0MzEwMDNDNTMyNiAvKiBJREJTZXJ2ZXJDb25u
ZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTEwQjdEQjcxODJEOUY1RDAwOUJGOTU3IC8qIElEQlRyYW5zYWN0aW9uQmFja2VuZC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBCN0RCNTE4
MkQ5RjVEMDA5QkY5NTcgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5kLmNwcCAqLzsgfTsKIAkJNTEw
QjdEQjgxODJEOUY1RDAwOUJGOTU3IC8qIElEQlRyYW5zYWN0aW9uQmFja2VuZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQjdEQjYxODJEOUY1RDAw
OUJGOTU3IC8qIElEQlRyYW5zYWN0aW9uQmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NjI5LDYgKzg2MzEsOCBAQAogCQk1MTAxOTQ0
MzE4MzZGN0U0MDA5MjU1MjMgLyogSURCQ3Vyc29yQmFja2VuZE9wZXJhdGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ3Vyc29yQmFja2VuZE9wZXJhdGlvbnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwNTlERDkxODIwQjE3NjAwREZGOUIxIC8q
IElEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDU5RERBMTgyMEIxNzYwMERGRjlCMSAvKiBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTEwNkQ3QkIxOEJEQjc2RjAwMEFCMTY2IC8qIENvbnRleHRNZW51
Q29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZXh0
TWVudUNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTA2RDdCQzE4
QkRCNzZGMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbnRleHRNZW51Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTBBMzI2RTE4MzE4NDMxMDAzQzUzMjYgLyogSURCU2VydmVyQ29ubmVjdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJTZXJ2ZXJDb25uZWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEI3REI1MTgyRDlGNUQwMDlCRjk1
NyAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTEwQjdEQjYxODJEOUY1RDAwOUJGOTU3IC8qIElEQlRyYW5zYWN0aW9uQmFj
a2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJUcmFuc2FjdGlvbkJh
Y2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MDY2LDYgKzE2MDcwLDgg
QEAKIAkJCQk5N0M0NzFEOTEyRjkyNUJDMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5
LmNwcCAqLywKIAkJCQk5N0M0NzFEQTEyRjkyNUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5
UG9saWN5LmggKi8sCiAJCQkJMDY1QUQ0RjIwQjBDMkVEQTAwNUEyQjFEIC8qIENvbnRleHRNZW51
Q2xpZW50LmggKi8sCisJCQkJNTEwNkQ3QkIxOEJEQjc2RjAwMEFCMTY2IC8qIENvbnRleHRNZW51
Q29udGV4dC5jcHAgKi8sCisJCQkJNTEwNkQ3QkMxOEJEQjc2RjAwMEFCMTY2IC8qIENvbnRleHRN
ZW51Q29udGV4dC5oICovLAogCQkJCTA2NUFENEYzMEIwQzJFREEwMDVBMkIxRCAvKiBDb250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwICovLAogCQkJCTA2NUFENEY0MEIwQzJFREEwMDVBMkIxRCAvKiBD
b250ZXh0TWVudUNvbnRyb2xsZXIuaCAqLywKIAkJCQk3QURFNzIyNTEwQ0JCQjlCMDA2QjNCM0Eg
LyogQ29udGV4dE1lbnVQcm92aWRlci5oICovLApAQCAtMjQ1NDksNiArMjQ1NTUsNyBAQAogCQkJ
CTQ1MENFQkYxMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNDU2RkEyNzExQUQ0QTgzMDAyMEI0MjAgLyogTGFiZWxzTm9kZUxpc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTg1RUM5QUZCMEE3MUEyQzYwMEVFRUFFRCAvKiBMYW5ndWFnZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTEwNkQ3QkUxOEJEQjc2RjAwMEFCMTY2IC8qIENvbnRleHRN
ZW51Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjkxN0I1NjIxNDczNDk2QzAwNTJDOUQw
IC8qIExheWVyRmx1c2hTY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5MTdCNTYzMTQ3
MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk5M0Y3MkFGMzE2NjZFREZDMDAyQTAyQkQgLyogTGF5ZXJQb29sLmggaW4gSGVhZGVy
cyAqLywKQEAgLTI2NDEzLDYgKzI2NDIwLDcgQEAKIAkJCQk4NTAzMUIzQzBBNDRFRkM3MDBGOTky
RTAgLyogQmVmb3JlVW5sb2FkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJDM0RBMjMw
RDAwNkMxRDAwRUY2RjI2IC8qIEJpZGlDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
RTc4OThCMTEyMEU4MDIwMDYwRUNFNSAvKiBCaWRpUnVuLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUxMDZEN0JEMThCREI3NkYwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkQzMTYwOEMxMkIwMjZGNzAwQzFBMzU5IC8qIEJpcXVhZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGRDMxNjAyNDEyQjAyNjc2MDBDMUEzNTkgLyogQmlxdWFkRFNQS2Vy
bmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEQzU0RjA0MTM5OUIwREEwMDhEOTExNyAvKiBC
aXF1YWRGaWx0ZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFj
LmNwcAppbmRleCAyNWE4YWZlLi44YWVhYmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmNw
cApAQCAtMjgsNiArMjgsOSBAQAogCiAjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQogCisjaW5j
bHVkZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC02MSw2ICs2NCwxOCBAQCBQYXNzUmVmUHRyPEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYz4g
SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjptYXliZUNyZWF0ZQogICAgIHJldHVybiBjb250
cm9scy5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjpk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgeworICAgICAgICBpZiAoUGFnZSogcGFnZSA9
IGRvY3VtZW50KCkucGFnZSgpKQorICAgICAgICAgICAgcGFnZS0+Y29udGV4dE1lbnVDb250cm9s
bGVyKCkuc2hvd0ltYWdlQ29udHJvbHNNZW51KGV2ZW50KTsKKworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElNQUdF
X0NPTlRST0xTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0lt
YWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
bWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5oCmluZGV4IDhjMWRmOWIuLjI4M2QwYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xz
Um9vdEVsZW1lbnRNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1h
Z2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmgKQEAgLTQwLDYgKzQwLDggQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYyhEb2N1bWVudCYpOworCisg
ICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29udGV4dE1lbnVDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1l
bnVDb250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzZmNDIx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRl
eHQuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ29udGV4dE1lbnVDb250ZXh0LmgiCisKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitDb250ZXh0TWVudUNvbnRleHQ6OkNvbnRleHRNZW51Q29u
dGV4dCgpCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgIDogbV9pc0ltYWdlQ29udHJv
bChmYWxzZSkKKyNlbmRpZgoreworfQorCitDb250ZXh0TWVudUNvbnRleHQ6OkNvbnRleHRNZW51
Q29udGV4dChjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0LCBib29sIGlzSW1hZ2VD
b250cm9sKQorICAgIDogbV9oaXRUZXN0UmVzdWx0KGhpdFRlc3RSZXN1bHQpCisjaWYgRU5BQkxF
KElNQUdFX0NPTlRST0xTKQorICAgICwgbV9pc0ltYWdlQ29udHJvbChpc0ltYWdlQ29udHJvbCkK
KyNlbmRpZgoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udGV4dC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmNTMzZDQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udGV4dC5oCkBAIC0wLDAg
KzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICoKKyAqLworCisjaWZuZGVmIENvbnRleHRNZW51Q29udGV4dF9oCisjZGVmaW5lIENvbnRl
eHRNZW51Q29udGV4dF9oCisKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKworI2luY2x1ZGUg
IkhpdFRlc3RSZXN1bHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDb250ZXh0
TWVudUNvbnRleHQgeworcHVibGljOgorICAgIENvbnRleHRNZW51Q29udGV4dCgpOworICAgIENv
bnRleHRNZW51Q29udGV4dChjb25zdCBIaXRUZXN0UmVzdWx0JiwgYm9vbCBpc0ltYWdlQ29udHJv
bCA9IGZhbHNlKTsKKworICAgIGNvbnN0IEhpdFRlc3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQoKSBj
b25zdCB7IHJldHVybiBtX2hpdFRlc3RSZXN1bHQ7IH0KKworI2lmIEVOQUJMRShJTUFHRV9DT05U
Uk9MUykKKyAgICBib29sIGlzSW1hZ2VDb250cm9sKCkgY29uc3QgeyByZXR1cm4gbV9pc0ltYWdl
Q29udHJvbDsgfQorI2VuZGlmCisKK3ByaXZhdGU6CisKKyAgICBIaXRUZXN0UmVzdWx0IG1faGl0
VGVzdFJlc3VsdDsKKworI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICBib29sIG1faXNJ
bWFnZUNvbnRyb2w7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQorI2VuZGlmIC8vIENvbnRleHRNZW51Q29udGV4
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5k
ZXggMGNhNjFjYi4uYzYxZThhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1l
bnVDb250cm9sbGVyLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250
cm9sbGVyOjpzaG93Q29udGV4dE1lbnUoRXZlbnQqIGV2ZW50LCBQYXNzUmVmUHRyPENvbnRleHRN
ZW51CiAgICAgfQogCiAgICAgbV9tZW51UHJvdmlkZXItPnBvcHVsYXRlQ29udGV4dE1lbnUobV9j
b250ZXh0TWVudS5nZXQoKSk7Ci0gICAgaWYgKG1faGl0VGVzdFJlc3VsdC5pc1NlbGVjdGVkKCkp
IHsKKyAgICBpZiAobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5pc1NlbGVjdGVkKCkpIHsKICAg
ICAgICAgYXBwZW5kSXRlbSgqc2VwYXJhdG9ySXRlbSgpLCBtX2NvbnRleHRNZW51LmdldCgpKTsK
ICAgICAgICAgcG9wdWxhdGUoKTsKICAgICB9CkBAIC0xMzgsMTMgKzEzOCwxOCBAQCBQYXNzT3du
UHRyPENvbnRleHRNZW51PiBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNyZWF0ZUNvbnRleHRNZW51
KEV2ZW50KiBldmVudCkKICAgICBNb3VzZUV2ZW50JiBtb3VzZUV2ZW50ID0gdG9Nb3VzZUV2ZW50
KCpldmVudCk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQobW91c2VFdmVudC5hYnNvbHV0ZUxv
Y2F0aW9uKCkpOwogCi0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IGV2ZW50LT50YXJnZXQoKS0+dG9O
b2RlKCktPmRvY3VtZW50KCkuZnJhbWUoKSkKKyAgICBOb2RlKiBub2RlID0gZXZlbnQtPnRhcmdl
dCgpLT50b05vZGUoKTsKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5m
cmFtZSgpKQogICAgICAgICByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJl
c3VsdEF0UG9pbnQobW91c2VFdmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkpOwotCisgICAgCiAgICAg
aWYgKCFyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgbV9oaXRUZXN0UmVzdWx0ID0gcmVzdWx0OworI2lmIEVOQUJMRShJTUFHRV9DT05U
Uk9MUykKKyAgICBtX2NvbnRleHQgPSBDb250ZXh0TWVudUNvbnRleHQocmVzdWx0LCBub2RlLT5p
c0ltYWdlQ29udHJvbHNSb290RWxlbWVudCgpKTsKKyNlbHNlCisgICAgbV9jb250ZXh0ID0gQ29u
dGV4dE1lbnVDb250ZXh0KHJlc3VsdCk7CisjZW5kaWYKIAogICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgQ29udGV4dE1lbnUpOwogfQpAQCAtMjA4LDY1ICsyMTMsNjUgQEAgdm9pZCBDb250ZXh0TWVu
dUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRl
bSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEZyYW1lKiBmcmFtZSA9IG1faGl0VGVz
dFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKS0+ZG9jdW1lbnQoKS5mcmFtZSgpOworICAgIEZy
YW1lKiBmcmFtZSA9IG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuaW5uZXJOb25TaGFyZWROb2Rl
KCktPmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47
CiAKICAgICBzd2l0Y2ggKGl0ZW0tPmFjdGlvbigpKSB7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdPcGVuTGlua0luTmV3V2luZG93OgotICAgICAgICBvcGVuTmV3V2luZG93KG1faGl0VGVz
dFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKSwgZnJhbWUpOworICAgICAgICBvcGVuTmV3V2luZG93
KG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVMaW5rVVJMKCksIGZyYW1lKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rp
c2s6CiAgICAgICAgIC8vIEZJWE1FOiBTb21lIGRheSB3ZSBzaG91bGQgYmUgYWJsZSB0byBkbyB0
aGlzIGZyb20gd2l0aGluIFdlYkNvcmUuIChCdWcgMTE3NzA5KQotICAgICAgICBtX2NsaWVudC5k
b3dubG9hZFVSTChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCkpOworICAgICAgICBt
X2NsaWVudC5kb3dubG9hZFVSTChtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlTGlu
a1VSTCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDb3B5
TGlua1RvQ2xpcGJvYXJkOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29weVVSTChtX2hpdFRl
c3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCksIG1faGl0VGVzdFJlc3VsdC50ZXh0Q29udGVudCgp
KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvcHlVUkwobV9jb250ZXh0LmhpdFRlc3RSZXN1
bHQoKS5hYnNvbHV0ZUxpbmtVUkwoKSwgbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS50ZXh0Q29u
dGVudCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdPcGVu
SW1hZ2VJbk5ld1dpbmRvdzoKLSAgICAgICAgb3Blbk5ld1dpbmRvdyhtX2hpdFRlc3RSZXN1bHQu
YWJzb2x1dGVJbWFnZVVSTCgpLCBmcmFtZSk7CisgICAgICAgIG9wZW5OZXdXaW5kb3cobV9jb250
ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUltYWdlVVJMKCksIGZyYW1lKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrOgog
ICAgICAgICAvLyBGSVhNRTogU29tZSBkYXkgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZG8gdGhpcyBm
cm9tIHdpdGhpbiBXZWJDb3JlLiAoQnVnIDExNzcwOSkKLSAgICAgICAgbV9jbGllbnQuZG93bmxv
YWRVUkwobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKSk7CisgICAgICAgIG1fY2xp
ZW50LmRvd25sb2FkVVJMKG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVJbWFnZVVS
TCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1h
Z2VUb0NsaXBib2FyZDoKICAgICAgICAgLy8gRklYTUU6IFRoZSBQYXN0ZWJvYXJkIGNsYXNzIGlz
IG5vdCB3cml0dGVuIHlldAogICAgICAgICAvLyBGb3Igbm93LCBjYWxsIGludG8gdGhlIGNsaWVu
dC4gVGhpcyBpcyB0ZW1wb3JhcnkhCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb3B5SW1hZ2Uo
bV9oaXRUZXN0UmVzdWx0KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvcHlJbWFnZShtX2Nv
bnRleHQuaGl0VGVzdFJlc3VsdCgpKTsKICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShFRkwpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VV
cmxUb0NsaXBib2FyZDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvcHlVUkwobV9oaXRUZXN0
UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKSwgbV9oaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCkp
OworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29weVVSTChtX2NvbnRleHQuaGl0VGVzdFJlc3Vs
dCgpLmFic29sdXRlSW1hZ2VVUkwoKSwgbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS50ZXh0Q29u
dGVudCgpKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ09wZW5NZWRpYUluTmV3V2luZG93OgotICAgICAgICBvcGVuTmV3V2luZG93KG1faGl0VGVz
dFJlc3VsdC5hYnNvbHV0ZU1lZGlhVVJMKCksIGZyYW1lKTsKKyAgICAgICAgb3Blbk5ld1dpbmRv
dyhtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlTWVkaWFVUkwoKSwgZnJhbWUpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTWVkaWFU
b0Rpc2s6CiAgICAgICAgIC8vIEZJWE1FOiBTb21lIGRheSB3ZSBzaG91bGQgYmUgYWJsZSB0byBk
byB0aGlzIGZyb20gd2l0aGluIFdlYkNvcmUuIChCdWcgMTE3NzA5KQotICAgICAgICBtX2NsaWVu
dC5kb3dubG9hZFVSTChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpKTsKKyAgICAg
ICAgbV9jbGllbnQuZG93bmxvYWRVUkwobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0
ZU1lZGlhVVJMKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z0NvcHlNZWRpYUxpbmtUb0NsaXBib2FyZDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvcHlV
UkwobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlTWVkaWFVUkwoKSwgbV9oaXRUZXN0UmVzdWx0LnRl
eHRDb250ZW50KCkpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29weVVSTChtX2NvbnRleHQu
aGl0VGVzdFJlc3VsdCgpLmFic29sdXRlTWVkaWFVUkwoKSwgbV9jb250ZXh0LmhpdFRlc3RSZXN1
bHQoKS50ZXh0Q29udGVudCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVu
dUl0ZW1UYWdUb2dnbGVNZWRpYUNvbnRyb2xzOgotICAgICAgICBtX2hpdFRlc3RSZXN1bHQudG9n
Z2xlTWVkaWFDb250cm9sc0Rpc3BsYXkoKTsKKyAgICAgICAgbV9jb250ZXh0LmhpdFRlc3RSZXN1
bHQoKS50b2dnbGVNZWRpYUNvbnRyb2xzRGlzcGxheSgpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIENvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcDoKLSAgICAgICAgbV9oaXRUZXN0
UmVzdWx0LnRvZ2dsZU1lZGlhTG9vcFBsYXliYWNrKCk7CisgICAgICAgIG1fY29udGV4dC5oaXRU
ZXN0UmVzdWx0KCkudG9nZ2xlTWVkaWFMb29wUGxheWJhY2soKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVWaWRlb0Z1bGxzY3JlZW46Ci0gICAgICAg
IG1faGl0VGVzdFJlc3VsdC50b2dnbGVNZWRpYUZ1bGxzY3JlZW5TdGF0ZSgpOworICAgICAgICBt
X2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLnRvZ2dsZU1lZGlhRnVsbHNjcmVlblN0YXRlKCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRW50ZXJWaWRlb0Z1bGxz
Y3JlZW46Ci0gICAgICAgIG1faGl0VGVzdFJlc3VsdC5lbnRlckZ1bGxzY3JlZW5Gb3JWaWRlbygp
OworICAgICAgICBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmVudGVyRnVsbHNjcmVlbkZvclZp
ZGVvKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTWVkaWFQ
bGF5UGF1c2U6Ci0gICAgICAgIG1faGl0VGVzdFJlc3VsdC50b2dnbGVNZWRpYVBsYXlTdGF0ZSgp
OworICAgICAgICBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLnRvZ2dsZU1lZGlhUGxheVN0YXRl
KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTWVkaWFNdXRl
OgotICAgICAgICBtX2hpdFRlc3RSZXN1bHQudG9nZ2xlTWVkaWFNdXRlU3RhdGUoKTsKKyAgICAg
ICAgbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS50b2dnbGVNZWRpYU11dGVTdGF0ZSgpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3V2lu
ZG93OiB7CiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKTsKQEAgLTM3NiwxMyArMzgxLDEzIEBAIHZvaWQgQ29udGV4dE1lbnVD
b250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0p
CiAgICAgICAgIG1fY2xpZW50Lmxvb2tVcEluRGljdGlvbmFyeShmcmFtZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnT3Blbkxpbms6Ci0gICAgICAgIGlmIChG
cmFtZSogdGFyZ2V0RnJhbWUgPSBtX2hpdFRlc3RSZXN1bHQudGFyZ2V0RnJhbWUoKSkKLSAgICAg
ICAgICAgIHRhcmdldEZyYW1lLT5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJl
cXVlc3QoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVz
dChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCksIGZyYW1lLT5sb2FkZXIoKS5vdXRn
b2luZ1JlZmVycmVyKCkpKSwgZmFsc2UsIGZhbHNlLCAwLCAwLCBNYXliZVNlbmRSZWZlcnJlcik7
CisgICAgICAgIGlmIChGcmFtZSogdGFyZ2V0RnJhbWUgPSBtX2NvbnRleHQuaGl0VGVzdFJlc3Vs
dCgpLnRhcmdldEZyYW1lKCkpCisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCkubG9h
ZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNv
bHV0ZUxpbmtVUkwoKSwgZnJhbWUtPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpLCBmYWxz
ZSwgZmFsc2UsIDAsIDAsIE1heWJlU2VuZFJlZmVycmVyKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgb3Blbk5ld1dpbmRvdyhtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCksIGZy
YW1lKTsKKyAgICAgICAgICAgIG9wZW5OZXdXaW5kb3cobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQo
KS5hYnNvbHV0ZUxpbmtVUkwoKSwgZnJhbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ09wZW5MaW5rSW5UaGlzV2luZG93OgotICAgICAgICBmcmFtZS0+bG9h
ZGVyKCkubG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QobV9oaXRUZXN0UmVzdWx0LmFic29s
dXRlTGlua1VSTCgpLCBmcmFtZS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKSksIGZhbHNl
LCBmYWxzZSwgMCwgMCwgTWF5YmVTZW5kUmVmZXJyZXIpOworICAgICAgICBmcmFtZS0+bG9hZGVy
KCkubG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQo
KS5hYnNvbHV0ZUxpbmtVUkwoKSwgZnJhbWUtPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkp
LCBmYWxzZSwgZmFsc2UsIDAsIDAsIE1heWJlU2VuZFJlZmVycmVyKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdCb2xkOgogICAgICAgICBmcmFtZS0+ZWRpdG9y
KCkuY29tbWFuZCgiVG9nZ2xlQm9sZCIpLmV4ZWN1dGUoKTsKQEAgLTQwMCw3ICs0MDUsNyBAQCB2
b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4
dE1lbnVJdGVtKiBpdGVtKQogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2lu
ZzogewogICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBmcmFtZS0+c2VsZWN0
aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICAgICAgaWYgKCFzZWxlY3RlZFJhbmdlIHx8
IHNlbGVjdGVkUmFuZ2UtPmNvbGxhcHNlZChJR05PUkVfRVhDRVBUSU9OKSkgewotICAgICAgICAg
ICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbV9oaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9k
ZSgpLT5kb2N1bWVudCgpOworICAgICAgICAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbV9jb250
ZXh0LmhpdFRlc3RSZXN1bHQoKS5pbm5lck5vblNoYXJlZE5vZGUoKS0+ZG9jdW1lbnQoKTsKICAg
ICAgICAgICAgIHNlbGVjdGVkUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwogICAgICAg
ICAgICAgc2VsZWN0ZWRSYW5nZS0+c2VsZWN0Tm9kZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQo
KSwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgICAgIH0KQEAgLTQ2OSw3ICs0NzQsNyBAQCB2b2lk
IENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1l
bnVJdGVtKiBpdGVtKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1UYWdDaGFuZ2VCYWNrOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY2hhbmdl
QmFja1RvUmVwbGFjZWRTdHJpbmcobV9oaXRUZXN0UmVzdWx0LnJlcGxhY2VkU3RyaW5nKCkpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcobV9jb250
ZXh0LmhpdFRlc3RSZXN1bHQoKS5yZXBsYWNlZFN0cmluZygpKTsKICAgICAgICAgYnJlYWs7CiAj
ZW5kaWYKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCkBAIC00OTgsNyArNTAz
LDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVk
KENvbnRleHRNZW51SXRlbSogaXRlbSkKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQ6CiAgICAgICAgIGlmIChQYWdlKiBwYWdl
ID0gZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KS5pbnNwZWN0KG1faGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSk7CisgICAgICAg
ICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuaW5zcGVjdChtX2NvbnRleHQuaGl0VGVz
dFJlc3VsdCgpLmlubmVyTm9uU2hhcmVkTm9kZSgpKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYK
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RpY3RhdGlvbkFsdGVybmF0aXZlOgpAQCAtODA0
LDIwICs4MDksMjYgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICAg
ICBDb250ZXh0TWVudUl0ZW0gU2VsZWN0QWxsSXRlbShBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0
ZW1UYWdTZWxlY3RBbGwsIGNvbnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbCgpKTsKICNlbmRpZgog
Ci0gICAgTm9kZSogbm9kZSA9IG1faGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKTsK
KyAgICBOb2RlKiBub2RlID0gbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5pbm5lck5vblNoYXJl
ZE5vZGUoKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKICNpZiBQTEFURk9STShH
VEspCi0gICAgaWYgKCFtX2hpdFRlc3RSZXN1bHQuaXNDb250ZW50RWRpdGFibGUoKSAmJiAobm9k
ZS0+aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChub2RlKS0+aXNGb3JtQ29udHJvbEVsZW1l
bnQoKSkpCisgICAgaWYgKCFtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmlzQ29udGVudEVkaXRh
YmxlKCkgJiYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPmlzRm9y
bUNvbnRyb2xFbGVtZW50KCkpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKICAgICBGcmFtZSog
ZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2hpdFRlc3RSZXN1bHQuaXNDb250ZW50RWRpdGFibGUo
KSkgeworI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICAvLyBUaGUgZGVmYXVsdCBpbWFn
ZSBjb250cm9sIG1lbnUgZ2V0cyBwb3B1bGF0ZWQgc29sZWx5IGJ5IHRoZSBwbGF0Zm9ybS4KKyAg
ICBpZiAobV9jb250ZXh0LmlzSW1hZ2VDb250cm9sKCkpCisgICAgICAgIHJldHVybjsKKyNlbmRp
ZgorCisgICAgaWYgKCFtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmlzQ29udGVudEVkaXRhYmxl
KCkpIHsKICAgICAgICAgRnJhbWVMb2FkZXImIGxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKTsKLSAg
ICAgICAgVVJMIGxpbmtVUkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7Cisg
ICAgICAgIFVSTCBsaW5rVVJMID0gbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUxp
bmtVUkwoKTsKICAgICAgICAgaWYgKCFsaW5rVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
aWYgKGxvYWRlci5jbGllbnQoKS5jYW5IYW5kbGVSZXF1ZXN0KFJlc291cmNlUmVxdWVzdChsaW5r
VVJMKSkpIHsKICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKE9wZW5MaW5rSXRlbSwgbV9jb250
ZXh0TWVudS5nZXQoKSk7CkBAIC04MjcsMjEgKzgzOCwyMSBAQCB2b2lkIENvbnRleHRNZW51Q29u
dHJvbGxlcjo6cG9wdWxhdGUoKQogICAgICAgICAgICAgYXBwZW5kSXRlbShDb3B5TGlua0l0ZW0s
IG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICB9CiAKLSAgICAgICAgVVJMIGltYWdlVVJM
ID0gbV9oaXRUZXN0UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKTsKKyAgICAgICAgVVJMIGltYWdl
VVJMID0gbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUltYWdlVVJMKCk7CiAgICAg
ICAgIGlmICghaW1hZ2VVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAoIWxpbmtVUkwu
aXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwg
bV9jb250ZXh0TWVudS5nZXQoKSk7CiAKICAgICAgICAgICAgIGFwcGVuZEl0ZW0oT3BlbkltYWdl
SW5OZXdXaW5kb3dJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICAgICAgICAgICAgIGFwcGVu
ZEl0ZW0oRG93bmxvYWRJbWFnZUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwotICAgICAgICAg
ICAgaWYgKGltYWdlVVJMLmlzTG9jYWxGaWxlKCkgfHwgbV9oaXRUZXN0UmVzdWx0LmltYWdlKCkp
CisgICAgICAgICAgICBpZiAoaW1hZ2VVUkwuaXNMb2NhbEZpbGUoKSB8fCBtX2NvbnRleHQuaGl0
VGVzdFJlc3VsdCgpLmltYWdlKCkpCiAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShDb3B5SW1h
Z2VJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRG
T1JNKEVGTCkKICAgICAgICAgICAgIGFwcGVuZEl0ZW0oQ29weUltYWdlVXJsSXRlbSwgbV9jb250
ZXh0TWVudS5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAgfQogCi0gICAgICAgIFVSTCBtZWRpYVVS
TCA9IG1faGl0VGVzdFJlc3VsdC5hYnNvbHV0ZU1lZGlhVVJMKCk7CisgICAgICAgIFVSTCBtZWRp
YVVSTCA9IG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVNZWRpYVVSTCgpOwogICAg
ICAgICBpZiAoIW1lZGlhVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKCFsaW5rVVJM
LmlzRW1wdHkoKSB8fCAhaW1hZ2VVUkwuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGFwcGVu
ZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CkBAIC04NjMsNyAr
ODc0LDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChpbWFnZVVSTC5pc0VtcHR5KCkgJiYgbGlua1VSTC5pc0VtcHR5KCkg
JiYgbWVkaWFVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAobV9oaXRUZXN0UmVzdWx0
LmlzU2VsZWN0ZWQoKSkgeworICAgICAgICAgICAgaWYgKG1fY29udGV4dC5oaXRUZXN0UmVzdWx0
KCkuaXNTZWxlY3RlZCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvbkNvbnRhaW5z
UG9zc2libGVXb3JkKGZyYW1lKSkgewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICAgICAg
ICAgICAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlm
aWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkpOwpAQCAtOTU5LDcg
Kzk3MCw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAgLy8gSWYgdGhlIHN0cmluZyB3YXMgYXV0b2NvcnJlY3RlZCwgZ2VuZXJhdGUgYSBjb250ZXh0
dWFsIG1lbnUgaXRlbSBhbGxvd2luZyBpdCB0byBiZSBjaGFuZ2VkIGJhY2suCi0gICAgICAgICAg
ICAgICAgICAgIFN0cmluZyByZXBsYWNlZFN0cmluZyA9IG1faGl0VGVzdFJlc3VsdC5yZXBsYWNl
ZFN0cmluZygpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgcmVwbGFjZWRTdHJpbmcgPSBt
X2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLnJlcGxhY2VkU3RyaW5nKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmICghcmVwbGFjZWRTdHJpbmcuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBDb250ZXh0TWVudUl0ZW0gaXRlbShBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1U
YWdDaGFuZ2VCYWNrLCBjb250ZXh0TWVudUl0ZW1UYWdDaGFuZ2VCYWNrKHJlcGxhY2VkU3RyaW5n
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKGl0ZW0sIG1fY29udGV4dE1l
bnUuZ2V0KCkpOwpAQCAtOTcyLDcgKzk4Myw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVy
Ojpwb3B1bGF0ZSgpCiAKICAgICAgICAgICAgIGlmICghaGF2ZUNvbnRleHRNZW51SXRlbXNGb3JN
aXNzcGVsbGluZ09yR3JhbW1lcikgewogICAgICAgICAgICAgICAgIC8vIFNwZWxsaW5nIGFuZCBn
cmFtbWFyIGNoZWNraW5nIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIGRpY3RhdGlvbiBhbHRl
cm5hdGl2ZXMuCi0gICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJu
YXRpdmVzID0gbV9oaXRUZXN0UmVzdWx0LmRpY3RhdGlvbkFsdGVybmF0aXZlcygpOworICAgICAg
ICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyA9IG1fY29udGV4
dC5oaXRUZXN0UmVzdWx0KCkuZGljdGF0aW9uQWx0ZXJuYXRpdmVzKCk7CiAgICAgICAgICAgICAg
ICAgaWYgKCFkaWN0YXRpb25BbHRlcm5hdGl2ZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLnNpemUo
KTsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gaXRlbShB
Y3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5hdGl2ZSwgZGljdGF0
aW9uQWx0ZXJuYXRpdmVzW2ldKTsKQEAgLTk4NCw3ICs5OTUsNyBAQCB2b2lkIENvbnRleHRNZW51
Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAgICAgICB9CiAKICAgICAgICAgRnJhbWVMb2FkZXIm
IGxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKTsKLSAgICAgICAgVVJMIGxpbmtVUkwgPSBtX2hpdFRl
c3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CisgICAgICAgIFVSTCBsaW5rVVJMID0gbV9jb250
ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUxpbmtVUkwoKTsKICAgICAgICAgaWYgKCFsaW5r
VVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKGxvYWRlci5jbGllbnQoKS5jYW5IYW5k
bGVSZXF1ZXN0KFJlc291cmNlUmVxdWVzdChsaW5rVVJMKSkpIHsKICAgICAgICAgICAgICAgICBh
cHBlbmRJdGVtKE9wZW5MaW5rSXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CkBAIC05OTUsNyAr
MTAwNiw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAgICAg
ICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1faGl0VGVzdFJlc3VsdC5pc1NlbGVjdGVkKCkgJiYg
IWluUGFzc3dvcmRGaWVsZCAmJiBzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFtZSkp
IHsKKyAgICAgICAgaWYgKG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuaXNTZWxlY3RlZCgpICYm
ICFpblBhc3N3b3JkRmllbGQgJiYgc2VsZWN0aW9uQ29udGFpbnNQb3NzaWJsZVdvcmQoZnJhbWUp
KSB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgICAgICBTdHJpbmcgc2VsZWN0ZWRTdHJp
bmcgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9y
KCkuc2VsZWN0ZWRUZXh0KCkpOwogICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIExvb2tVcElu
RGljdGlvbmFyeUl0ZW0oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0
aW9uYXJ5LCBjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoc2VsZWN0ZWRTdHJp
bmcpKTsKQEAgLTEwODQsNyArMTA5NSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpw
b3B1bGF0ZSgpCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIHZvaWQgQ29udGV4dE1lbnVDb250cm9s
bGVyOjphZGRJbnNwZWN0RWxlbWVudEl0ZW0oKQogewotICAgIE5vZGUqIG5vZGUgPSBtX2hpdFRl
c3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CisgICAgTm9kZSogbm9kZSA9IG1fY29udGV4
dC5oaXRUZXN0UmVzdWx0KCkuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAgICAgaWYgKCFub2RlKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTExMTIsNyArMTEyMyw3IEBAIHZvaWQgQ29udGV4dE1lbnVD
b250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBj
b25zdAogICAgIGlmIChpdGVtLnR5cGUoKSA9PSBTZXBhcmF0b3JUeXBlKQogICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgRnJhbWUqIGZyYW1lID0gbV9oaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hh
cmVkTm9kZSgpLT5kb2N1bWVudCgpLmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gbV9jb250
ZXh0LmhpdFRlc3RSZXN1bHQoKS5pbm5lck5vblNoYXJlZE5vZGUoKS0+ZG9jdW1lbnQoKS5mcmFt
ZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTMxMCw0MCArMTMy
MSw0MCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVk
KENvbnRleHRNZW51SXRlbSYgaXRlbSkgY29uc3QKICNlbmRpZgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnT3Blbk1lZGlhSW5OZXdXaW5kb3c6Ci0g
ICAgICAgICAgICBpZiAobV9oaXRUZXN0UmVzdWx0Lm1lZGlhSXNWaWRlbygpKQorICAgICAgICAg
ICAgaWYgKG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkubWVkaWFJc1ZpZGVvKCkpCiAgICAgICAg
ICAgICAgICAgaXRlbS5zZXRUaXRsZShjb250ZXh0TWVudUl0ZW1UYWdPcGVuVmlkZW9Jbk5ld1dp
bmRvdygpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpdGVtLnNldFRpdGxl
KGNvbnRleHRNZW51SXRlbVRhZ09wZW5BdWRpb0luTmV3V2luZG93KCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRNZWRpYVRvRGlz
azoKLSAgICAgICAgICAgIGlmIChtX2hpdFRlc3RSZXN1bHQubWVkaWFJc1ZpZGVvKCkpCisgICAg
ICAgICAgICBpZiAobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5tZWRpYUlzVmlkZW8oKSkKICAg
ICAgICAgICAgICAgICBpdGVtLnNldFRpdGxlKGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkVmlk
ZW9Ub0Rpc2soKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaXRlbS5zZXRU
aXRsZShjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEF1ZGlvVG9EaXNrKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29weU1lZGlhTGlua1Rv
Q2xpcGJvYXJkOgotICAgICAgICAgICAgaWYgKG1faGl0VGVzdFJlc3VsdC5tZWRpYUlzVmlkZW8o
KSkKKyAgICAgICAgICAgIGlmIChtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLm1lZGlhSXNWaWRl
bygpKQogICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnQ29w
eVZpZGVvTGlua1RvQ2xpcGJvYXJkKCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnQ29weUF1ZGlvTGlua1RvQ2xpcGJv
YXJkKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnVG9nZ2xlTWVkaWFDb250cm9sczoKICNpZiBTVVBQT1JUU19UT0dHTEVfU0hPV19ISURFX01F
RElBX0NPTlRST0xTCi0gICAgICAgICAgICBpdGVtLnNldFRpdGxlKG1faGl0VGVzdFJlc3VsdC5t
ZWRpYUNvbnRyb2xzRW5hYmxlZCgpID8gY29udGV4dE1lbnVJdGVtVGFnSGlkZU1lZGlhQ29udHJv
bHMoKSA6IGNvbnRleHRNZW51SXRlbVRhZ1Nob3dNZWRpYUNvbnRyb2xzKCkpOworICAgICAgICAg
ICAgaXRlbS5zZXRUaXRsZShtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLm1lZGlhQ29udHJvbHNF
bmFibGVkKCkgPyBjb250ZXh0TWVudUl0ZW1UYWdIaWRlTWVkaWFDb250cm9scygpIDogY29udGV4
dE1lbnVJdGVtVGFnU2hvd01lZGlhQ29udHJvbHMoKSk7CiAjZWxzZQotICAgICAgICAgICAgc2hv
dWxkQ2hlY2sgPSBtX2hpdFRlc3RSZXN1bHQubWVkaWFDb250cm9sc0VuYWJsZWQoKTsKKyAgICAg
ICAgICAgIHNob3VsZENoZWNrID0gbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5tZWRpYUNvbnRy
b2xzRW5hYmxlZCgpOwogI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUxvb3A6Ci0gICAgICAgICAgICBzaG91bGRDaGVj
ayA9IG1faGl0VGVzdFJlc3VsdC5tZWRpYUxvb3BFbmFibGVkKCk7CisgICAgICAgICAgICBzaG91
bGRDaGVjayA9IG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkubWVkaWFMb29wRW5hYmxlZCgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVG9nZ2xl
VmlkZW9GdWxsc2NyZWVuOgogI2lmIFNVUFBPUlRTX1RPR0dMRV9WSURFT19GVUxMU0NSRUVOCi0g
ICAgICAgICAgICBpdGVtLnNldFRpdGxlKG1faGl0VGVzdFJlc3VsdC5tZWRpYUlzSW5GdWxsc2Ny
ZWVuKCkgPyBjb250ZXh0TWVudUl0ZW1UYWdFeGl0VmlkZW9GdWxsc2NyZWVuKCkgOiBjb250ZXh0
TWVudUl0ZW1UYWdFbnRlclZpZGVvRnVsbHNjcmVlbigpKTsKKyAgICAgICAgICAgIGl0ZW0uc2V0
VGl0bGUobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5tZWRpYUlzSW5GdWxsc2NyZWVuKCkgPyBj
b250ZXh0TWVudUl0ZW1UYWdFeGl0VmlkZW9GdWxsc2NyZWVuKCkgOiBjb250ZXh0TWVudUl0ZW1U
YWdFbnRlclZpZGVvRnVsbHNjcmVlbigpKTsKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAg
ICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRW50ZXJWaWRlb0Z1bGxzY3JlZW46Ci0gICAg
ICAgICAgICBzaG91bGRFbmFibGUgPSBtX2hpdFRlc3RSZXN1bHQubWVkaWFTdXBwb3J0c0Z1bGxz
Y3JlZW4oKTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IG1fY29udGV4dC5oaXRUZXN0UmVz
dWx0KCkubWVkaWFTdXBwb3J0c0Z1bGxzY3JlZW4oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3V2luZG93OgogICAgICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nR3Vlc3M6CkBAIC0xMzgyLDE0ICsxMzkz
LDE0IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQo
Q29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ0RpY3RhdGlvbkFsdGVybmF0aXZlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ29udGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5UGF1c2U6Ci0gICAgICAgICAgICBpZiAobV9o
aXRUZXN0UmVzdWx0Lm1lZGlhUGxheWluZygpKQorICAgICAgICAgICAgaWYgKG1fY29udGV4dC5o
aXRUZXN0UmVzdWx0KCkubWVkaWFQbGF5aW5nKCkpCiAgICAgICAgICAgICAgICAgaXRlbS5zZXRU
aXRsZShjb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBhdXNlKCkpOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5
KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFn
TWVkaWFNdXRlOgotICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gbV9oaXRUZXN0UmVzdWx0Lm1l
ZGlhSGFzQXVkaW8oKTsKLSAgICAgICAgICAgIHNob3VsZENoZWNrID0gc2hvdWxkRW5hYmxlICYm
ICBtX2hpdFRlc3RSZXN1bHQubWVkaWFNdXRlZCgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxl
ID0gbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5tZWRpYUhhc0F1ZGlvKCk7CisgICAgICAgICAg
ICBzaG91bGRDaGVjayA9IHNob3VsZEVuYWJsZSAmJiAgbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQo
KS5tZWRpYU11dGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE0MTEsNiAr
MTQyMiwxNSBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6c2hvd0NvbnRleHRNZW51QXQo
RnJhbWUqIGZyYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpYwogfQogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoSU1BR0VfQ09OVFJPTFMpCit2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6c2hvd0ltYWdl
Q29udHJvbHNNZW51KEV2ZW50KiBldmVudCkKK3sKKyAgICBjbGVhckNvbnRleHRNZW51KCk7Cisg
ICAgaGFuZGxlQ29udGV4dE1lbnVFdmVudChldmVudCk7CisgICAgbV9jbGllbnQuc2hvd0NvbnRl
eHRNZW51KCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnRleHRNZW51Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVu
dUNvbnRyb2xsZXIuaAppbmRleCBmZWYxMzUzLi5lODc4YjEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVO
QUJMRShDT05URVhUX01FTlVTKQogCi0jaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1
ZGUgIkNvbnRleHRNZW51Q29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAt
MzYsNjIgKzM2LDY3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIENvbnRl
eHRNZW51OwotICAgIGNsYXNzIENvbnRleHRNZW51Q2xpZW50OwotICAgIGNsYXNzIENvbnRleHRN
ZW51SXRlbTsKLSAgICBjbGFzcyBDb250ZXh0TWVudVByb3ZpZGVyOwotICAgIGNsYXNzIEV2ZW50
OwotICAgIGNsYXNzIFBhZ2U7CitjbGFzcyBDb250ZXh0TWVudTsKK2NsYXNzIENvbnRleHRNZW51
Q2xpZW50OworY2xhc3MgQ29udGV4dE1lbnVJdGVtOworY2xhc3MgQ29udGV4dE1lbnVQcm92aWRl
cjsKK2NsYXNzIEV2ZW50OworY2xhc3MgUGFnZTsKIAotICAgIGNsYXNzIENvbnRleHRNZW51Q29u
dHJvbGxlciB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbnRleHRNZW51Q29udHJv
bGxlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgQ29u
dGV4dE1lbnVDb250cm9sbGVyKFBhZ2UmLCBDb250ZXh0TWVudUNsaWVudCYpOwotICAgICAgICB+
Q29udGV4dE1lbnVDb250cm9sbGVyKCk7CitjbGFzcyBDb250ZXh0TWVudUNvbnRyb2xsZXIgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbnRleHRNZW51Q29udHJvbGxlcik7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIENvbnRleHRNZW51Q29udHJvbGxlcihQYWdl
JiwgQ29udGV4dE1lbnVDbGllbnQmKTsKKyAgICB+Q29udGV4dE1lbnVDb250cm9sbGVyKCk7CiAK
LSAgICAgICAgQ29udGV4dE1lbnUqIGNvbnRleHRNZW51KCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZXh0TWVudS5nZXQoKTsgfQotICAgICAgICB2b2lkIGNsZWFyQ29udGV4dE1lbnUoKTsKKyAgICBD
b250ZXh0TWVudSogY29udGV4dE1lbnUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRNZW51Lmdl
dCgpOyB9CisgICAgdm9pZCBjbGVhckNvbnRleHRNZW51KCk7CiAKLSAgICAgICAgdm9pZCBoYW5k
bGVDb250ZXh0TWVudUV2ZW50KEV2ZW50Kik7Ci0gICAgICAgIHZvaWQgc2hvd0NvbnRleHRNZW51
KEV2ZW50KiwgUGFzc1JlZlB0cjxDb250ZXh0TWVudVByb3ZpZGVyPik7CisgICAgdm9pZCBoYW5k
bGVDb250ZXh0TWVudUV2ZW50KEV2ZW50Kik7CisgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoRXZl
bnQqLCBQYXNzUmVmUHRyPENvbnRleHRNZW51UHJvdmlkZXI+KTsKIAotICAgICAgICB2b2lkIHBv
cHVsYXRlKCk7Ci0gICAgICAgIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1l
bnVJdGVtKik7Ci0gICAgICAgIHZvaWQgYWRkSW5zcGVjdEVsZW1lbnRJdGVtKCk7CisgICAgdm9p
ZCBwb3B1bGF0ZSgpOworICAgIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1l
bnVJdGVtKik7CisgICAgdm9pZCBhZGRJbnNwZWN0RWxlbWVudEl0ZW0oKTsKIAotICAgICAgICB2
b2lkIGNoZWNrT3JFbmFibGVJZk5lZWRlZChDb250ZXh0TWVudUl0ZW0mKSBjb25zdDsKKyAgICB2
b2lkIGNoZWNrT3JFbmFibGVJZk5lZWRlZChDb250ZXh0TWVudUl0ZW0mKSBjb25zdDsKIAotICAg
ICAgICB2b2lkIHNldEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KSB7
IG1faGl0VGVzdFJlc3VsdCA9IHJlc3VsdDsgfQotICAgICAgICBjb25zdCBIaXRUZXN0UmVzdWx0
JiBoaXRUZXN0UmVzdWx0KCkgeyByZXR1cm4gbV9oaXRUZXN0UmVzdWx0OyB9CisgICAgdm9pZCBz
ZXRDb250ZXh0TWVudUNvbnRleHQoY29uc3QgQ29udGV4dE1lbnVDb250ZXh0JiBjb250ZXh0KSB7
IG1fY29udGV4dCA9IGNvbnRleHQ7IH0KKyAgICBjb25zdCBDb250ZXh0TWVudUNvbnRleHQmIGNv
bnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQ7IH0KKyAgICBjb25zdCBIaXRUZXN0UmVz
dWx0JiBoaXRUZXN0UmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmhpdFRlc3RSZXN1
bHQoKTsgfQogCiAjaWYgVVNFKEFDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUykKLSAgICAgICAg
dm9pZCBzaG93Q29udGV4dE1lbnVBdChGcmFtZSosIGNvbnN0IEludFBvaW50JiBjbGlja1BvaW50
KTsKKyAgICB2b2lkIHNob3dDb250ZXh0TWVudUF0KEZyYW1lKiwgY29uc3QgSW50UG9pbnQmIGNs
aWNrUG9pbnQpOwogI2VuZGlmCiAKLSAgICBwcml2YXRlOgotICAgICAgICBQYXNzT3duUHRyPENv
bnRleHRNZW51PiBjcmVhdGVDb250ZXh0TWVudShFdmVudCopOwotICAgICAgICB2b2lkIHNob3dD
b250ZXh0TWVudShFdmVudCopOwotICAgICAgICAKLSAgICAgICAgdm9pZCBhcHBlbmRJdGVtKENv
bnRleHRNZW51SXRlbSYsIENvbnRleHRNZW51KiBwYXJlbnRNZW51KTsKLQotICAgICAgICB2b2lk
IGNyZWF0ZUFuZEFwcGVuZEZvbnRTdWJNZW51KENvbnRleHRNZW51SXRlbSYpOwotICAgICAgICB2
b2lkIGNyZWF0ZUFuZEFwcGVuZFNwZWxsaW5nQW5kR3JhbW1hclN1Yk1lbnUoQ29udGV4dE1lbnVJ
dGVtJik7Ci0gICAgICAgIHZvaWQgY3JlYXRlQW5kQXBwZW5kU3BlbGxpbmdTdWJNZW51KENvbnRl
eHRNZW51SXRlbSYpOwotICAgICAgICB2b2lkIGNyZWF0ZUFuZEFwcGVuZFNwZWVjaFN1Yk1lbnUo
Q29udGV4dE1lbnVJdGVtJiApOwotICAgICAgICB2b2lkIGNyZWF0ZUFuZEFwcGVuZFdyaXRpbmdE
aXJlY3Rpb25TdWJNZW51KENvbnRleHRNZW51SXRlbSYpOwotICAgICAgICB2b2lkIGNyZWF0ZUFu
ZEFwcGVuZFRleHREaXJlY3Rpb25TdWJNZW51KENvbnRleHRNZW51SXRlbSYpOwotICAgICAgICB2
b2lkIGNyZWF0ZUFuZEFwcGVuZFN1YnN0aXR1dGlvbnNTdWJNZW51KENvbnRleHRNZW51SXRlbSYp
OwotICAgICAgICB2b2lkIGNyZWF0ZUFuZEFwcGVuZFRyYW5zZm9ybWF0aW9uc1N1Yk1lbnUoQ29u
dGV4dE1lbnVJdGVtJik7CisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgIHZvaWQgc2hv
d0ltYWdlQ29udHJvbHNNZW51KEV2ZW50Kik7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBQYXNz
T3duUHRyPENvbnRleHRNZW51PiBjcmVhdGVDb250ZXh0TWVudShFdmVudCopOworICAgIHZvaWQg
c2hvd0NvbnRleHRNZW51KEV2ZW50Kik7CisgICAgCisgICAgdm9pZCBhcHBlbmRJdGVtKENvbnRl
eHRNZW51SXRlbSYsIENvbnRleHRNZW51KiBwYXJlbnRNZW51KTsKKworICAgIHZvaWQgY3JlYXRl
QW5kQXBwZW5kRm9udFN1Yk1lbnUoQ29udGV4dE1lbnVJdGVtJik7CisgICAgdm9pZCBjcmVhdGVB
bmRBcHBlbmRTcGVsbGluZ0FuZEdyYW1tYXJTdWJNZW51KENvbnRleHRNZW51SXRlbSYpOworICAg
IHZvaWQgY3JlYXRlQW5kQXBwZW5kU3BlbGxpbmdTdWJNZW51KENvbnRleHRNZW51SXRlbSYpOwor
ICAgIHZvaWQgY3JlYXRlQW5kQXBwZW5kU3BlZWNoU3ViTWVudShDb250ZXh0TWVudUl0ZW0mKTsK
KyAgICB2b2lkIGNyZWF0ZUFuZEFwcGVuZFdyaXRpbmdEaXJlY3Rpb25TdWJNZW51KENvbnRleHRN
ZW51SXRlbSYpOworICAgIHZvaWQgY3JlYXRlQW5kQXBwZW5kVGV4dERpcmVjdGlvblN1Yk1lbnUo
Q29udGV4dE1lbnVJdGVtJik7CisgICAgdm9pZCBjcmVhdGVBbmRBcHBlbmRTdWJzdGl0dXRpb25z
U3ViTWVudShDb250ZXh0TWVudUl0ZW0mKTsKKyAgICB2b2lkIGNyZWF0ZUFuZEFwcGVuZFRyYW5z
Zm9ybWF0aW9uc1N1Yk1lbnUoQ29udGV4dE1lbnVJdGVtJik7CiAjaWYgUExBVEZPUk0oR1RLKQot
ICAgICAgICB2b2lkIGNyZWF0ZUFuZEFwcGVuZFVuaWNvZGVTdWJNZW51KENvbnRleHRNZW51SXRl
bSYpOworICAgIHZvaWQgY3JlYXRlQW5kQXBwZW5kVW5pY29kZVN1Yk1lbnUoQ29udGV4dE1lbnVJ
dGVtJik7CiAjZW5kaWYKIAotICAgICAgICBQYWdlJiBtX3BhZ2U7Ci0gICAgICAgIENvbnRleHRN
ZW51Q2xpZW50JiBtX2NsaWVudDsKLSAgICAgICAgT3duUHRyPENvbnRleHRNZW51PiBtX2NvbnRl
eHRNZW51OwotICAgICAgICBSZWZQdHI8Q29udGV4dE1lbnVQcm92aWRlcj4gbV9tZW51UHJvdmlk
ZXI7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgbV9oaXRUZXN0UmVzdWx0OwotICAgIH07CisgICAg
UGFnZSYgbV9wYWdlOworICAgIENvbnRleHRNZW51Q2xpZW50JiBtX2NsaWVudDsKKyAgICBPd25Q
dHI8Q29udGV4dE1lbnU+IG1fY29udGV4dE1lbnU7CisgICAgUmVmUHRyPENvbnRleHRNZW51UHJv
dmlkZXI+IG1fbWVudVByb3ZpZGVyOworICAgIENvbnRleHRNZW51Q29udGV4dCBtX2NvbnRleHQ7
Cit9OwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggYTNiMjBmOS4uNzAzOWE1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKQEAgLTE5NCw2ICsxOTQsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgU2hhcmVkL0NoaWxkUHJvY2Vzcy5jcHAKICAgICBTaGFyZWQvQ2hpbGRQcm9jZXNzUHJv
eHkuY3BwCiAgICAgU2hhcmVkL0Nvbm5lY3Rpb25TdGFjay5jcHAKKyAgICBTaGFyZWQvQ29udGV4
dE1lbnVDb250ZXh0RGF0YS5jcHAKICAgICBTaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5jcHAK
ICAgICBTaGFyZWQvRWRpdG9yU3RhdGUuY3BwCiAgICAgU2hhcmVkL0ZvbnRJbmZvLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDcxNGE0YTYuLjkxMzAyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAor
MjAxNC0wMi0yNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UGlwZSBleHBlcmltZW50YWwgaW1hZ2UgY29udHJvbHMgbWVudSB1cCB0byBXZWJLaXQyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkzMzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBXZWJLaXQg
b2JqZWN0IHRvIHJlcHJlc2VudCB0aGUgZGF0YSBmcm9tIGEgQ29udGV4dE1lbnVDb250ZXh0IG9i
amVjdCB0aGF0IGNhbiBiZSBzaGFyZWQgdmlhIElQQzoKKyAgICAgICAgKiBTaGFyZWQvQ29udGV4
dE1lbnVDb250ZXh0RGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVu
dUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKToKKyAgICAgICAgKFdlYktpdDo6
Q29udGV4dE1lbnVDb250ZXh0RGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q29udGV4
dE1lbnVDb250ZXh0RGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQ29udGV4dE1lbnVD
b250ZXh0RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250ZXh0
RGF0YTo6d2ViSGl0VGVzdFJlc3VsdERhdGEpOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVu
dUNvbnRleHREYXRhOjppc0ltYWdlQ29udHJvbCk6CisKKyAgICAgICAgVXBkYXRlIHRoZSByZXN0
IG9mIFdLMiB0byB1c2UgdGhpcyBvYmplY3QgaW5zdGVhZCBvZiBXZWJIaXRUZXN0UmVzdWx0OjpE
YXRhIGRpcmVjdGx5OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1lbnUpOiBBbHNvIG1ha2Ug
YW4gRU5BQkxFKElNQUdFX0NPTlRST0xTKSBjaGFuZ2UgaGVyZS4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbjoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51OjpzaG93KToKKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE0LTAyLTI0ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBQREZW
aWV3Q29udHJvbGxlci4qLCB3aGljaCBpcyB1bnVzZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0
LmFtCmluZGV4IGQyMWQ0YjIuLmE0MzAzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtMzYwLDYgKzM2MCw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktp
dDIvU2hhcmVkL0NvbW1hbmRMaW5lLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db25uZWN0
aW9uU3RhY2suY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29ubmVjdGlvblN0YWNrLmgg
XAorCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcCBcCisJ
U291cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuaCBcCiAJU291cmNl
L1dlYktpdDIvU2hhcmVkL0NvcmVJUENTdXBwb3J0L1dlYkNvbnRleHRNZXNzYWdlS2luZHMuaCBc
CiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0RyYXdpbmdBcmVhSW5mby5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uOTFkY2NmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcApAQCAtMCwwICsxLDc3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udGV4dERhdGEuaCIK
KworI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudUNvbnRleHQuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitDb250ZXh0TWVu
dUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKCkKKyNpZiBFTkFCTEUoSU1BR0Vf
Q09OVFJPTFMpCisgICAgOiBtX2lzSW1hZ2VDb250cm9sKGZhbHNlKQorI2VuZGlmCit7Cit9CisK
K0NvbnRleHRNZW51Q29udGV4dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEoY29uc3QgQ29u
dGV4dE1lbnVDb250ZXh0JiBjb250ZXh0KQorICAgIDogbV93ZWJIaXRUZXN0UmVzdWx0RGF0YShX
ZWJIaXRUZXN0UmVzdWx0OjpEYXRhKGNvbnRleHQuaGl0VGVzdFJlc3VsdCgpKSkKKyNpZiBFTkFC
TEUoSU1BR0VfQ09OVFJPTFMpCisgICAgLCBtX2lzSW1hZ2VDb250cm9sKGNvbnRleHQuaXNJbWFn
ZUNvbnRyb2woKSkKKyNlbmRpZgoreworfQorCit2b2lkIENvbnRleHRNZW51Q29udGV4dERhdGE6
OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNv
ZGVyIDw8IG1fd2ViSGl0VGVzdFJlc3VsdERhdGE7CisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xT
KQorICAgIGVuY29kZXIgPDwgbV9pc0ltYWdlQ29udHJvbDsKKyNlbmRpZgorfQorCitib29sIENv
bnRleHRNZW51Q29udGV4dERhdGE6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2Rl
ciwgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYgY29udGV4dE1lbnVDb250ZXh0RGF0YSkKK3sKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRleHRNZW51Q29udGV4dERhdGEubV93ZWJIaXRUZXN0
UmVzdWx0RGF0YSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisjaWYgRU5BQkxF
KElNQUdFX0NPTlRST0xTKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29udGV4dE1lbnVDb250
ZXh0RGF0YS5tX2lzSW1hZ2VDb250cm9sKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlm
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29u
dGV4dE1lbnVDb250ZXh0RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjgxYjUxODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4
dE1lbnVDb250ZXh0RGF0YS5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIENvbnRleHRN
ZW51Q29udGV4dERhdGFfaAorI2RlZmluZSBDb250ZXh0TWVudUNvbnRleHREYXRhX2gKKworI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQorCisjaW5jbHVkZSAiV2ViSGl0VGVzdFJlc3VsdC5oIgor
CituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIEFyZ3VtZW50RGVjb2RlcjsKK2NsYXNzIEFyZ3VtZW50
RW5jb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGV4dE1lbnVDb250
ZXh0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ29udGV4dE1lbnVDb250ZXh0
RGF0YSB7CitwdWJsaWM6CisgICAgQ29udGV4dE1lbnVDb250ZXh0RGF0YSgpOworICAgIENvbnRl
eHRNZW51Q29udGV4dERhdGEoY29uc3QgV2ViQ29yZTo6Q29udGV4dE1lbnVDb250ZXh0Jik7Cisg
ICAgCisgICAgY29uc3QgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYgd2ViSGl0VGVzdFJlc3VsdERh
dGEoKSBjb25zdCB7IHJldHVybiBtX3dlYkhpdFRlc3RSZXN1bHREYXRhOyB9CisKKyNpZiBFTkFC
TEUoSU1BR0VfQ09OVFJPTFMpCisgICAgYm9vbCBpc0ltYWdlQ29udHJvbCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNJbWFnZUNvbnRyb2w7IH0KKyNlbmRpZgorCisgICAgdm9pZCBlbmNvZGUoSVBDOjpB
cmd1bWVudEVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpBcmd1
bWVudERlY29kZXImLCBDb250ZXh0TWVudUNvbnRleHREYXRhJik7CisKK3ByaXZhdGU6CisKKyAg
ICBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhIG1fd2ViSGl0VGVzdFJlc3VsdERhdGE7CisKKyNpZiBF
TkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgYm9vbCBtX2lzSW1hZ2VDb250cm9sOworI2VuZGlm
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDT05URVhU
X01FTlVTKQorI2VuZGlmIC8vIENvbnRleHRNZW51Q29udGV4dERhdGFfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjOWU0ZTk4Li5kYmNmZDM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzI1MSwyMiArMzI1
MSwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGlkZVBvcHVwTWVudSgpCiB9CiAKICNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKLXZvaWQgV2ViUGFnZVByb3h5OjpzaG93Q29udGV4dE1lbnUoY29u
c3QgSW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYg
aGl0VGVzdFJlc3VsdERhdGEsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYg
cHJvcG9zZWRJdGVtcywgSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpzaG93Q29udGV4dE1lbnUoY29uc3QgSW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29u
c3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYgY29udGV4dE1lbnVDb250ZXh0RGF0YSwgY29uc3Qg
VmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBwcm9wb3NlZEl0ZW1zLCBJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIGludGVybmFsU2hvd0NvbnRleHRNZW51KG1lbnVM
b2NhdGlvbiwgaGl0VGVzdFJlc3VsdERhdGEsIHByb3Bvc2VkSXRlbXMsIGRlY29kZXIpOworICAg
IGludGVybmFsU2hvd0NvbnRleHRNZW51KG1lbnVMb2NhdGlvbiwgY29udGV4dE1lbnVDb250ZXh0
RGF0YSwgcHJvcG9zZWRJdGVtcywgZGVjb2Rlcik7CiAgICAgCiAgICAgLy8gTm8gbWF0dGVyIHRo
ZSByZXN1bHQgb2YgaW50ZXJuYWxTaG93Q29udGV4dE1lbnUsIGFsd2F5cyBub3RpZnkgdGhlIFdl
YlByb2Nlc3MgdGhhdCB0aGUgbWVudSBpcyBoaWRkZW4gc28gaXQgc3RhcnRzIGhhbmRsaW5nIG1v
dXNlIGV2ZW50cyBhZ2Fpbi4KICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkNvbnRleHRNZW51SGlkZGVuKCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OmludGVybmFsU2hvd0NvbnRleHRNZW51KGNvbnN0IEludFBvaW50JiBtZW51TG9jYXRpb24sIGNv
bnN0IFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEmIGhpdFRlc3RSZXN1bHREYXRhLCBjb25zdCBWZWN0
b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIHByb3Bvc2VkSXRlbXMsIElQQzo6TWVzc2FnZURl
Y29kZXImIGRlY29kZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1l
bnUoY29uc3QgSW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgQ29udGV4dE1lbnVDb250ZXh0
RGF0YSYgY29udGV4dE1lbnVDb250ZXh0RGF0YSwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51
SXRlbURhdGE+JiBwcm9wb3NlZEl0ZW1zLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQog
ewogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAgICAgV2ViQ29udGV4dFVzZXJN
ZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgcHJvY2VzcygpKTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9hY3RpdmVDb250ZXh0TWVudUhpdFRlc3RSZXN1bHREYXRhID0gaGl0VGVzdFJlc3VsdERh
dGE7CisgICAgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhID0gY29udGV4dE1lbnVDb250
ZXh0RGF0YTsKIAogICAgIGlmICghbV9jb250ZXh0TWVudUNsaWVudC5oaWRlQ29udGV4dE1lbnUo
dGhpcykgJiYgbV9hY3RpdmVDb250ZXh0TWVudSkgewogICAgICAgICBtX2FjdGl2ZUNvbnRleHRN
ZW51LT5oaWRlQ29udGV4dE1lbnUoKTsKQEAgLTMyODAsMTMgKzMyODAsMjEgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmludGVybmFsU2hvd0NvbnRleHRNZW51KGNvbnN0IEludFBvaW50JiBtZW51TG9j
YXRpb24sIGNvbnN0IFcKICAgICAvLyBTaW5jZSBzaG93Q29udGV4dE1lbnUoKSBjYW4gc3BpbiBh
IG5lc3RlZCBydW4gbG9vcCB3ZSBuZWVkIHRvIHR1cm4gb2ZmIHRoZSByZXNwb25zaXZlbmVzcyB0
aW1lci4KICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RvcCgpOwogCi0g
ICAgLy8gR2l2ZSB0aGUgUGFnZUNvbnRleHRNZW51Q2xpZW50IG9uZSBsYXN0IHN3aXBlIGF0IGNo
YW5naW5nIHRoZSBtZW51LgorICAgIC8vIFVubGVzcyB0aGlzIGlzIGFuIGltYWdlIGNvbnRyb2ws
IGdpdmUgdGhlIFBhZ2VDb250ZXh0TWVudUNsaWVudCBvbmUgbGFzdCBzd2lwZSBhdCBjaGFuZ2lu
ZyB0aGUgbWVudS4KICAgICBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gaXRlbXM7Ci0g
ICAgaWYgKCFtX2NvbnRleHRNZW51Q2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVu
dSh0aGlzLCBwcm9wb3NlZEl0ZW1zLCBpdGVtcywgaGl0VGVzdFJlc3VsdERhdGEsIHVzZXJEYXRh
LmdldCgpKSkgewotICAgICAgICBpZiAoIW1fY29udGV4dE1lbnVDbGllbnQuc2hvd0NvbnRleHRN
ZW51KHRoaXMsIG1lbnVMb2NhdGlvbiwgcHJvcG9zZWRJdGVtcykpCi0gICAgICAgICAgICBtX2Fj
dGl2ZUNvbnRleHRNZW51LT5zaG93Q29udGV4dE1lbnUobWVudUxvY2F0aW9uLCBwcm9wb3NlZEl0
ZW1zKTsKLSAgICB9IGVsc2UgaWYgKCFtX2NvbnRleHRNZW51Q2xpZW50LnNob3dDb250ZXh0TWVu
dSh0aGlzLCBtZW51TG9jYXRpb24sIGl0ZW1zKSkKLSAgICAgICAgbV9hY3RpdmVDb250ZXh0TWVu
dS0+c2hvd0NvbnRleHRNZW51KG1lbnVMb2NhdGlvbiwgaXRlbXMpOworICAgIGJvb2wgdXNlUHJv
cG9zZWRJdGVtcyA9IHRydWU7CisKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgaWYg
KCFjb250ZXh0TWVudUNvbnRleHREYXRhLmlzSW1hZ2VDb250cm9sKCkgJiYgbV9jb250ZXh0TWVu
dUNsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUodGhpcywgcHJvcG9zZWRJdGVt
cywgaXRlbXMsIGNvbnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKSwg
dXNlckRhdGEuZ2V0KCkpKSB7CisjZWxzZQorICAgIGlmIChtX2NvbnRleHRNZW51Q2xpZW50Lmdl
dENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSh0aGlzLCBwcm9wb3NlZEl0ZW1zLCBpdGVtcywg
Y29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLCB1c2VyRGF0YS5n
ZXQoKSkpIHsKKyNlbmRpZgorICAgICAgICB1c2VQcm9wb3NlZEl0ZW1zID0gZmFsc2U7CisgICAg
fQorICAgIAorICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXNU
b1Nob3cgPSB1c2VQcm9wb3NlZEl0ZW1zID8gcHJvcG9zZWRJdGVtcyA6IGl0ZW1zOworICAgIGlm
ICghbV9jb250ZXh0TWVudUNsaWVudC5zaG93Q29udGV4dE1lbnUodGhpcywgbWVudUxvY2F0aW9u
LCBpdGVtc1RvU2hvdykpCisgICAgICAgIG1fYWN0aXZlQ29udGV4dE1lbnUtPnNob3dDb250ZXh0
TWVudShtZW51TG9jYXRpb24sIGl0ZW1zVG9TaG93KTsKICAgICAKICAgICBtX2NvbnRleHRNZW51
Q2xpZW50LmNvbnRleHRNZW51RGlzbWlzc2VkKHRoaXMpOwogfQpAQCAtMzMzNSwxNSArMzM0Mywx
NSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2Vi
Q29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKICAgICB9CiAjZW5kaWYKICAgICBpZiAoaXRlbS5h
Y3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKSB7Ci0gICAg
ICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLmRvd25sb2FkKHRoaXMsIFVSTChVUkwoKSwgbV9hY3Rp
dmVDb250ZXh0TWVudUhpdFRlc3RSZXN1bHREYXRhLmFic29sdXRlSW1hZ2VVUkwpKTsKKyAgICAg
ICAgbV9wcm9jZXNzLT5jb250ZXh0KCkuZG93bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2
ZUNvbnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZUlt
YWdlVVJMKSk7CiAgICAgICAgIHJldHVybjsgICAgCiAgICAgfQogICAgIGlmIChpdGVtLmFjdGlv
bigpID09IENvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzaykgewotICAgICAgICBt
X3Byb2Nlc3MtPmNvbnRleHQoKS5kb3dubG9hZCh0aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZlQ29u
dGV4dE1lbnVIaXRUZXN0UmVzdWx0RGF0YS5hYnNvbHV0ZUxpbmtVUkwpKTsKKyAgICAgICAgbV9w
cm9jZXNzLT5jb250ZXh0KCkuZG93bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRl
eHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZUxpbmtVUkwp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250
ZXh0TWVudUl0ZW1UYWdEb3dubG9hZE1lZGlhVG9EaXNrKSB7Ci0gICAgICAgIG1fcHJvY2Vzcy0+
Y29udGV4dCgpLmRvd25sb2FkKHRoaXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVudUhp
dFRlc3RSZXN1bHREYXRhLmFic29sdXRlTWVkaWFVUkwpKTsKKyAgICAgICAgbV9wcm9jZXNzLT5j
b250ZXh0KCkuZG93bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRNZW51Q29u
dGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZU1lZGlhVVJMKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJ
dGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggYzkyNGM5Ny4uZmNkM2YzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFQSVNl
c3Npb24uaCIKICNpbmNsdWRlICJBdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udGV4dERhdGEuaCIKICNpbmNs
dWRlICJEcmFnQ29udHJvbGxlckFjdGlvbi5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHku
aCIKICNpbmNsdWRlICJFZGl0b3JTdGF0ZS5oIgpAQCAtNTAsNyArNTEsNiBAQAogI2luY2x1ZGUg
IldlYkZpbmRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJGb3JtQ2xpZW50LmgiCiAjaW5jbHVkZSAi
V2ViRnJhbWVQcm94eS5oIgotI2luY2x1ZGUgIldlYkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRl
ICJXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKQEAgLTEwNjksOCArMTA2
OSw4IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICAvLyBDb250
ZXh0IE1lbnUuCi0gICAgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYsIGNvbnN0IFZl
Y3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYsIElQQzo6TWVzc2FnZURlY29kZXImKTsKLSAg
ICB2b2lkIGludGVybmFsU2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBt
ZW51TG9jYXRpb24sIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEmLCBjb25zdCBWZWN0b3I8
V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisgICAgdm9p
ZCBzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1lbnVMb2NhdGlvbiwg
Y29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVu
dUl0ZW1EYXRhPiYsIElQQzo6TWVzc2FnZURlY29kZXImKTsKKyAgICB2b2lkIGludGVybmFsU2hv
d0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtZW51TG9jYXRpb24sIGNvbnN0
IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVt
RGF0YT4mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAjZW5kaWYKIAogICAgIC8vIFNlYXJjaCBw
b3B1cCByZXN1bHRzCkBAIC0xMjcyLDcgKzEyNzIsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRy
PFdlYlBvcHVwTWVudVByb3h5PiBtX2FjdGl2ZVBvcHVwTWVudTsKICAgICBSZWZQdHI8V2ViQ29u
dGV4dE1lbnVQcm94eT4gbV9hY3RpdmVDb250ZXh0TWVudTsKLSAgICBXZWJIaXRUZXN0UmVzdWx0
OjpEYXRhIG1fYWN0aXZlQ29udGV4dE1lbnVIaXRUZXN0UmVzdWx0RGF0YTsKKyAgICBDb250ZXh0
TWVudUNvbnRleHREYXRhIG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YTsKICAgICBSZWZQ
dHI8V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eT4gbV9vcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lcjsKICAgICBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5IG1fZ2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CiAgICAgTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgppbmRleCAyMzhkMmRmLi4zY2RhMDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTIwNyw3ICsyMDcsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAg
ICAgIyBDb250ZXh0TWVudSBtZXNzYWdlcwotICAgIFNob3dDb250ZXh0TWVudShXZWJDb3JlOjpJ
bnRQb2ludCBtZW51TG9jYXRpb24sIFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdDo6RGF0YSBoaXRU
ZXN0UmVzdWx0RGF0YSwgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gaXRl
bXMsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZh
cmlhZGljCisgICAgU2hvd0NvbnRleHRNZW51KFdlYkNvcmU6OkludFBvaW50IG1lbnVMb2NhdGlv
biwgV2ViS2l0OjpDb250ZXh0TWVudUNvbnRleHREYXRhIGNvbnRleHRNZW51Q29udGV4dERhdGEs
IFZlY3RvcjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGE+IGl0ZW1zLCBXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwogI2VuZGlm
CiAKICAgICAjIEF1dGhlbnRpY2F0aW9uIG1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzgyYjY2Mi4uMTgzYmU5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNjU3LDYgKzY1NywxMCBAQAogCQk1MTAzMkYxRTE4MEY3OTE3MDA5NjFCQjcgLyogRGF0
YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDMyRjFDMTgwRjc5MTcwMDk2MUJCNyAvKiBE
YXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9OwogCQk1MTA2NEQz
NTE4OTc4MUM0MDA0QjJGRUIgLyogU1FMaXRlSURCQ3Vyc29yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDY0RDMzMTg5NzgxQzQwMDRCMkZFQiAv
KiBTUUxpdGVJREJDdXJzb3IuY3BwICovOyB9OwogCQk1MTA2NEQzNjE4OTc4MUM0MDA0QjJGRUIg
LyogU1FMaXRlSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTA2NEQzNDE4OTc4MUM0MDA0QjJGRUIgLyogU1FMaXRlSURCQ3Vyc29yLmgg
Ki87IH07CisJCTUxMDZEN0MxMThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHRE
YXRhLmNwcCBpbiBDb3B5IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMDZEN0JGMThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHREYXRhLmNwcCAq
LzsgfTsKKwkJNTEwNkQ3QzIxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERh
dGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEw
NkQ3QkYxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuY3BwICovOyB9
OworCQk1MTA2RDdDMzE4QkRCRTczMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5o
IGluIENvcHkgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNkQ3
QzAxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuaCAqLzsgfTsKKwkJ
NTEwNkQ3QzQxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDZEN0MwMThCREJF
NzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHREYXRhLmggKi87IH07CiAJCTUxMEFGRkI5
MTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBBRkZCNzE2NTQyMDQ4MDAxQkEwNUUg
LyogV2ViUmVzb3VyY2VMb2FkZXIuY3BwICovOyB9OwogCQk1MTBBRkZCQTE2NTQyMDQ4MDAxQkEw
NUUgLyogV2ViUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMEFGRkI4MTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxv
YWRlci5oICovOyB9OwogCQk1MTBDQzg0OTE2MTNDODVDMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nl
c3MuYXBwIGluIENvcHkgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEwQ0M4MEUxNjEzQzc5OTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzLmFwcCAqLzsgfTsKQEAg
LTE2MzQsMTAgKzE2MzgsMTIgQEAKIAkJCWRzdFBhdGggPSBXZWJLaXQyLmZyYW1ld29yazsKIAkJ
CWRzdFN1YmZvbGRlclNwZWMgPSAxOwogCQkJZmlsZXMgPSAoCisJCQkJNTEwNkQ3QzExOEJEQkU3
MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuY3BwIGluIENvcHkgRmlsZXMgKi8s
CiAJCQkJNTEwQ0M4NDkxNjEzQzg1QzAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzLmFwcCBpbiBD
b3B5IEZpbGVzICovLAogCQkJCUJDREUwQUJGMTMyNzI3MDgwMDEyNTlGQiAvKiBQbHVnaW5Qcm9j
ZXNzLmFwcCBpbiBDb3B5IEZpbGVzICovLAogCQkJCTUxQTYwQjJBMTgwQ0NFQjUwMEYzQkY1MCAv
KiBEYXRhYmFzZVByb2Nlc3MuYXBwIGluIENvcHkgRmlsZXMgKi8sCiAJCQkJMUE1MERCNjYxMTBB
M0Q1NzAwMEQzRkU1IC8qIFdlYlByb2Nlc3MuYXBwIGluIENvcHkgRmlsZXMgKi8sCisJCQkJNTEw
NkQ3QzMxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuaCBpbiBDb3B5
IEZpbGVzICovLAogCQkJKTsKIAkJCW5hbWUgPSAiQ29weSBGaWxlcyI7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTIzODcsNiArMjM5Myw4IEBACiAJCTUx
MDVCMEYzMTYzMDg3MkUwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IE5ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxMDY0RDMzMTg5NzgxQzQwMDRCMkZFQiAvKiBTUUxpdGVJREJDdXJzb3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMaXRlSURCQ3Vyc29y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwNjREMzQxODk3ODFDNDAwNEIy
RkVCIC8qIFNRTGl0ZUlEQkN1cnNvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTUUxpdGVJREJDdXJzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwNkQ3
QkYxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMDZEN0MwMThCREJFNzMwMDBBQjE2NiAv
KiBDb250ZXh0TWVudUNvbnRleHREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvbnRleHRNZW51Q29udGV4dERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTEwQUZGQjcxNjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlJlc291cmNlTG9hZGVyLmNwcDsg
cGF0aCA9IE5ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTBBRkZCODE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViUmVzb3VyY2VMb2FkZXIuaDsg
cGF0aCA9IE5ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTEwQUZGQ0UxNjU0MkNCRDAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgbmFtZSA9IFdlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTM4NzUsNiArMzg4Myw4IEBACiAJCQkJMUE2RjlGOEUxMUUxM0VGQzAwREIxMzcx
IC8qIENvbW1hbmRMaW5lLmggKi8sCiAJCQkJNTEzNjE4M0IxNjMxMjZEQTAwQTk5RERFIC8qIENv
bm5lY3Rpb25TdGFjay5jcHAgKi8sCiAJCQkJNTEzNjE4M0MxNjMxMjZEQTAwQTk5RERFIC8qIENv
bm5lY3Rpb25TdGFjay5oICovLAorCQkJCTUxMDZEN0JGMThCREJFNzMwMDBBQjE2NiAvKiBDb250
ZXh0TWVudUNvbnRleHREYXRhLmNwcCAqLywKKwkJCQk1MTA2RDdDMDE4QkRCRTczMDAwQUIxNjYg
LyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oICovLAogCQkJCUJDRTgxRDk2MTMxQUUwMjAwMDI0
MTkxMCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcCAqLywKIAkJCQlCQ0U4MUQ5NzEzMUFFMDIx
MDAyNDE5MTAgLyogRGljdGlvbmFyeVBvcHVwSW5mby5oICovLAogCQkJCUM1MTczODgwMTJERjhG
NEYwMEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFjdGlvbi5oICovLApAQCAtNjQ4OCw2ICs2NDk4
LDcgQEAKIAkJCQkxQUI4QTFFQzE4NDAwODA5MDBFOUFFNjkgLyogV0tQYWdlTG9hZGVyQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJEODRBMzEyN0Y2QUQxMDAxRUI5NjIgLyogTlBWYXJp
YW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4QUNBMTMxNjY3MEQ4OTAwNEMxOTQxIC8q
IE9iakNPYmplY3RHcmFwaC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwNkQ3QzQxOEJEQkU3MzAw
MEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
OEFDQTE1MTY2NzBEODkwMDRDMTk0MSAvKiBPYmpDT2JqZWN0R3JhcGhDb2RlcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDQ0Y2NzJEMTJDN0VERjcwMDhGOUMzNSAvKiBPcmlnaW5BbmREYXRhYmFz
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNUIxQzUxMTg5ODYwNkYwMDRGQ0Y5QiAvKiBXS05h
dmlnYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtODA4Niw2ICs4MDk3LDcgQEAKIAkJCQlDRDcz
QkE0NzEzMUFDQzlBMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzFCRTFFMTEyRDU0QTQxMDAwNEEyMjgg
LyogV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwRTVGRTYx
MkQ2OTcxNjAwMTJBNzJBIC8qIFdlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1MTA2RDdDMjE4QkRCRTczMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0
YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzBFNjA2MTEyRDZCQTkxMDAxMkE3MkEgLyogV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxMDY0RDM1MTg5NzgxQzQwMDRCMkZFQiAvKiBTUUxpdGVJREJDdXJzb3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkM1NENBQ0MxMkQ2NDI5MTAwNUM2N0IwIC8qIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAKaW5kZXggZjZjOTQwZS4uYjAwMzBk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRl
eHRNZW51LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29u
dGV4dE1lbnUuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJXZWJDb250ZXh0TWVu
dS5oIgogCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVXNl
ck1lc3NhZ2VDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKQEAg
LTY2LDExICs2NywxMSBAQCB2b2lkIFdlYkNvbnRleHRNZW51OjpzaG93KCkKICAgICBWZWN0b3I8
V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gbWVudUl0ZW1zOwogICAgIFJlZlB0cjxBUEk6Ok9iamVj
dD4gdXNlckRhdGE7CiAgICAgbWVudUl0ZW1zV2l0aFVzZXJEYXRhKG1lbnVJdGVtcywgdXNlckRh
dGEpOwotICAgIFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEgd2ViSGl0VGVzdFJlc3VsdERhdGEoY29u
dHJvbGxlci5oaXRUZXN0UmVzdWx0KCkpOworICAgIENvbnRleHRNZW51Q29udGV4dERhdGEgY29u
dGV4dE1lbnVDb250ZXh0RGF0YShjb250cm9sbGVyLmNvbnRleHQoKSk7CiAKICAgICAvLyBNYXJr
IHRoZSBXZWJQYWdlIGhhcyBoYXZpbmcgYSBzaG93biBjb250ZXh0IG1lbnUgdGhlbiBub3RpZnkg
dGhlIFVJUHJvY2Vzcy4KICAgICBtX3BhZ2UtPmNvbnRleHRNZW51U2hvd2luZygpOwotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Q29udGV4dE1lbnUodmlldy0+
Y29udGVudHNUb1dpbmRvdyhjb250cm9sbGVyLmhpdFRlc3RSZXN1bHQoKS5yb3VuZGVkUG9pbnRJ
bklubmVyTm9kZUZyYW1lKCkpLCB3ZWJIaXRUZXN0UmVzdWx0RGF0YSwgbWVudUl0ZW1zLCBJbmpl
Y3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvbnRleHRNZW51KHZpZXctPmNv
bnRlbnRzVG9XaW5kb3coY29udHJvbGxlci5oaXRUZXN0UmVzdWx0KCkucm91bmRlZFBvaW50SW5J
bm5lck5vZGVGcmFtZSgpKSwgY29udGV4dE1lbnVDb250ZXh0RGF0YSwgbWVudUl0ZW1zLCBJbmpl
Y3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KIAogdm9p
ZCBXZWJDb250ZXh0TWVudTo6aXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURh
dGEmIGl0ZW0pCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225249</attachid>
            <date>2014-02-26 06:11:02 -0800</date>
            <delta_ts>2014-02-26 13:59:25 -0800</delta_ts>
            <desc>Patch v6 - Build fixes</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>61498</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZjdhNWE4ZS4uNWM4OWEyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE2OTMsNiArMTY5Myw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwYWdl
L0Nocm9tZS5jcHAKICAgICBwYWdlL0NvbnNvbGUuY3BwCiAgICAgcGFnZS9Db250ZW50U2VjdXJp
dHlQb2xpY3kuY3BwCisgICAgcGFnZS9Db250ZXh0TWVudUNvbnRleHQuY3BwCiAgICAgcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCiAgICAgcGFnZS9DcnlwdG8uY3BwCiAgICAgcGFnZS9E
T01TZWN1cml0eVBvbGljeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmZWI1ZmE0Li4xMjc3MjEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTQtMDItMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIFBpcGUgZXhwZXJpbWVudGFsIGltYWdlIGNvbnRyb2xz
IG1lbnUgdXAgdG8gV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI5MzM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSGFuZGxlIGV2ZW50cyBmb3IgdGhlIGltYWdlIGNvbnRyb2wgc3RhcnRpbmcg
dGhlIGNvbnRleHQgbWVudSBwcm9jZXNzIGlmIGFwcHJvcHJpYXRlOgorICAgICAgICAqIGh0bWwv
c2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjpkZWZhdWx0RXZlbnRIYW5kbGVyKToK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmg6
CisKKyAgICAgICAgQWRkIGEgY2xhc3MgdG8gaG9sZCBhIEhpdFRlc3RSZXN1bHQgYW5kIGFkZGl0
aW9uIGluZm8gYWJvdXQgdGhlIGN1cnJlbnQgQ29udGV4dE1lbnUgaW52b2NhdGlvbjoKKyAgICAg
ICAgKiBwYWdlL0NvbnRleHRNZW51Q29udGV4dC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGV4dE1lbnVDb250ZXh0OjpDb250ZXh0TWVudUNvbnRleHQpOgorICAgICAgICAqIHBh
Z2UvQ29udGV4dE1lbnVDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4
dE1lbnVDb250ZXh0OjpoaXRUZXN0UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRN
ZW51Q29udGV4dDo6aXNJbWFnZUNvbnRyb2wpOgorCisgICAgICAgIFVwZGF0ZSBDb250ZXh0TWVu
dUNvbnRyb2xsZXIgdG8gd29yayB3aXRoIENvbnRleHRNZW51Q29udGV4dCBpbnN0ZWFkIG9mIEhp
dFRlc3RSZXN1bHQgZGlyZWN0bHk6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpzaG93Q29u
dGV4dE1lbnUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpjcmVh
dGVDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6
OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51
Q29udHJvbGxlcjo6cG9wdWxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250
cm9sbGVyOjphZGRJbnNwZWN0RWxlbWVudEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4
dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpzaG93SW1hZ2VDb250cm9sc01lbnUpOgorICAgICAg
ICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
eHRNZW51Q29udHJvbGxlcjo6c2V0Q29udGV4dE1lbnVDb250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmhpdFRlc3RSZXN1bHQpOgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAxNC0wMi0yNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgQnJlYWsgb3V0IEltYWdlQ29udHJvbHMgc3R5bGUgaW50byBh
biBleHRlcm5hbCBzdHlsZXNoZWV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAx
N2E2MGNhLi44NWYyMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQwNTQs
NiArNDA1NCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50
LmggXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250ZXh0LmNwcCBcCisJU291
cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
UHJvdmlkZXIuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvagppbmRleCBhZDVmMTQ1Li4xODY5NDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTY5NjcsNiArNjk2Nyw3IEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXGFuaW1hdGlvblxDb21wb3NpdGVBbmltYXRpb24u
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxDb25zb2xlLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcQ29udGVudFNlY3VyaXR5UG9saWN5LmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcQ29udGV4dE1lbnVDb250ZXh0
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcQ29udGV4dE1lbnVDb250
cm9sbGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcQ3J5cHRvLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcYW5pbWF0aW9uXENTU1Byb3Bl
cnR5QW5pbWF0aW9uLmNwcCIgLz4KQEAgLTE4NjgwLDYgKzE4NjgxLDcgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBhZ2VcQ29uc29sZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGFnZVxDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBhZ2VcQ29udGV4dE1lbnVDbGllbnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBhZ2VcQ29udGV4dE1lbnVDb250ZXh0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwYWdlXENvbnRleHRNZW51Q29udHJvbGxlci5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFnZVxDb250ZXh0TWVudVByb3ZpZGVyLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxwYWdlXENyeXB0by5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhmNjlmNWUuLjFiOGJjOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE3MzcsNiArMTczNyw4IEBACiAJCTUxMDE5NDQ1MTgzNkY3RTUwMDkyNTUyMyAvKiBJ
REJDdXJzb3JCYWNrZW5kT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEwMTk0NDMxODM2RjdFNDAwOTI1NTIzIC8qIElEQkN1cnNvckJh
Y2tlbmRPcGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTEwNTlEREQxODIwQjE3NjAwREZGOUIxIC8qIElEQlRyYW5zYWN0aW9uQmFj
a2VuZE9wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTEwNTlERDkxODIwQjE3NjAwREZGOUIxIC8qIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZE9wZXJhdGlvbnMuY3BwICovOyB9OwogCQk1MTA1OURERTE4MjBCMTc2MDBERkY5QjEgLyogSURC
VHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNTlEREExODIwQjE3NjAwREZGOUIxIC8qIElEQlRyYW5z
YWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk1MTA2RDdCRDE4QkRCNzZGMDAwQUIxNjYgLyogQ29udGV4dE1l
bnVDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMDZEN0JCMThCREI3NkYwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHQuY3BwICov
OyB9OworCQk1MTA2RDdCRTE4QkRCNzZGMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA2RDdCQzE4
QkRCNzZGMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEwQTMyNkYxODMxODQzMTAwM0M1MzI2
IC8qIElEQlNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMEEzMjZFMTgzMTg0MzEwMDNDNTMyNiAvKiBJREJTZXJ2ZXJDb25u
ZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTEwQjdEQjcxODJEOUY1RDAwOUJGOTU3IC8qIElEQlRyYW5zYWN0aW9uQmFja2VuZC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBCN0RCNTE4
MkQ5RjVEMDA5QkY5NTcgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5kLmNwcCAqLzsgfTsKIAkJNTEw
QjdEQjgxODJEOUY1RDAwOUJGOTU3IC8qIElEQlRyYW5zYWN0aW9uQmFja2VuZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQjdEQjYxODJEOUY1RDAw
OUJGOTU3IC8qIElEQlRyYW5zYWN0aW9uQmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NjI5LDYgKzg2MzEsOCBAQAogCQk1MTAxOTQ0
MzE4MzZGN0U0MDA5MjU1MjMgLyogSURCQ3Vyc29yQmFja2VuZE9wZXJhdGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ3Vyc29yQmFja2VuZE9wZXJhdGlvbnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwNTlERDkxODIwQjE3NjAwREZGOUIxIC8q
IElEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDU5RERBMTgyMEIxNzYwMERGRjlCMSAvKiBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTEwNkQ3QkIxOEJEQjc2RjAwMEFCMTY2IC8qIENvbnRleHRNZW51
Q29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZXh0
TWVudUNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTA2RDdCQzE4
QkRCNzZGMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbnRleHRNZW51Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTBBMzI2RTE4MzE4NDMxMDAzQzUzMjYgLyogSURCU2VydmVyQ29ubmVjdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJTZXJ2ZXJDb25uZWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEI3REI1MTgyRDlGNUQwMDlCRjk1
NyAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTEwQjdEQjYxODJEOUY1RDAwOUJGOTU3IC8qIElEQlRyYW5zYWN0aW9uQmFj
a2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJUcmFuc2FjdGlvbkJh
Y2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MDY2LDYgKzE2MDcwLDgg
QEAKIAkJCQk5N0M0NzFEOTEyRjkyNUJDMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5
LmNwcCAqLywKIAkJCQk5N0M0NzFEQTEyRjkyNUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5
UG9saWN5LmggKi8sCiAJCQkJMDY1QUQ0RjIwQjBDMkVEQTAwNUEyQjFEIC8qIENvbnRleHRNZW51
Q2xpZW50LmggKi8sCisJCQkJNTEwNkQ3QkIxOEJEQjc2RjAwMEFCMTY2IC8qIENvbnRleHRNZW51
Q29udGV4dC5jcHAgKi8sCisJCQkJNTEwNkQ3QkMxOEJEQjc2RjAwMEFCMTY2IC8qIENvbnRleHRN
ZW51Q29udGV4dC5oICovLAogCQkJCTA2NUFENEYzMEIwQzJFREEwMDVBMkIxRCAvKiBDb250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwICovLAogCQkJCTA2NUFENEY0MEIwQzJFREEwMDVBMkIxRCAvKiBD
b250ZXh0TWVudUNvbnRyb2xsZXIuaCAqLywKIAkJCQk3QURFNzIyNTEwQ0JCQjlCMDA2QjNCM0Eg
LyogQ29udGV4dE1lbnVQcm92aWRlci5oICovLApAQCAtMjQ1NDksNiArMjQ1NTUsNyBAQAogCQkJ
CTQ1MENFQkYxMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNDU2RkEyNzExQUQ0QTgzMDAyMEI0MjAgLyogTGFiZWxzTm9kZUxpc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTg1RUM5QUZCMEE3MUEyQzYwMEVFRUFFRCAvKiBMYW5ndWFnZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTEwNkQ3QkUxOEJEQjc2RjAwMEFCMTY2IC8qIENvbnRleHRN
ZW51Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjkxN0I1NjIxNDczNDk2QzAwNTJDOUQw
IC8qIExheWVyRmx1c2hTY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5MTdCNTYzMTQ3
MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk5M0Y3MkFGMzE2NjZFREZDMDAyQTAyQkQgLyogTGF5ZXJQb29sLmggaW4gSGVhZGVy
cyAqLywKQEAgLTI2NDEzLDYgKzI2NDIwLDcgQEAKIAkJCQk4NTAzMUIzQzBBNDRFRkM3MDBGOTky
RTAgLyogQmVmb3JlVW5sb2FkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJDM0RBMjMw
RDAwNkMxRDAwRUY2RjI2IC8qIEJpZGlDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
RTc4OThCMTEyMEU4MDIwMDYwRUNFNSAvKiBCaWRpUnVuLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUxMDZEN0JEMThCREI3NkYwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkQzMTYwOEMxMkIwMjZGNzAwQzFBMzU5IC8qIEJpcXVhZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGRDMxNjAyNDEyQjAyNjc2MDBDMUEzNTkgLyogQmlxdWFkRFNQS2Vy
bmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEQzU0RjA0MTM5OUIwREEwMDhEOTExNyAvKiBC
aXF1YWRGaWx0ZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFj
LmNwcAppbmRleCAyNWE4YWZlLi44YWVhYmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmNw
cApAQCAtMjgsNiArMjgsOSBAQAogCiAjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQogCisjaW5j
bHVkZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC02MSw2ICs2NCwxOCBAQCBQYXNzUmVmUHRyPEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYz4g
SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjptYXliZUNyZWF0ZQogICAgIHJldHVybiBjb250
cm9scy5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjpk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgeworICAgICAgICBpZiAoUGFnZSogcGFnZSA9
IGRvY3VtZW50KCkucGFnZSgpKQorICAgICAgICAgICAgcGFnZS0+Y29udGV4dE1lbnVDb250cm9s
bGVyKCkuc2hvd0ltYWdlQ29udHJvbHNNZW51KGV2ZW50KTsKKworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElNQUdF
X0NPTlRST0xTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0lt
YWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
bWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5oCmluZGV4IDhjMWRmOWIuLjI4M2QwYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xz
Um9vdEVsZW1lbnRNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1h
Z2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmgKQEAgLTQwLDYgKzQwLDggQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIEltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYyhEb2N1bWVudCYpOworCisg
ICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29udGV4dE1lbnVDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1l
bnVDb250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzliMjg5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRl
eHQuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ29udGV4dE1lbnVDb250ZXh0LmgiCisKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitDb250ZXh0TWVudUNvbnRleHQ6OkNvbnRleHRNZW51Q29u
dGV4dCgpCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgIDogbV9pc0ltYWdlQ29udHJv
bChmYWxzZSkKKyNlbmRpZgoreworfQorCitDb250ZXh0TWVudUNvbnRleHQ6OkNvbnRleHRNZW51
Q29udGV4dChjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0LCBib29sIGlzSW1hZ2VD
b250cm9sKQorICAgIDogbV9oaXRUZXN0UmVzdWx0KGhpdFRlc3RSZXN1bHQpCisjaWYgRU5BQkxF
KElNQUdFX0NPTlRST0xTKQorICAgICwgbV9pc0ltYWdlQ29udHJvbChpc0ltYWdlQ29udHJvbCkK
KyNlbmRpZgoreworICAgIEFTU0VSVF9VTlVTRUQoaXNJbWFnZUNvbnRyb2wsIHRydWUpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udGV4dC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmNTMzZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udGV4dC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisj
aWZuZGVmIENvbnRleHRNZW51Q29udGV4dF9oCisjZGVmaW5lIENvbnRleHRNZW51Q29udGV4dF9o
CisKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKworI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDb250ZXh0TWVudUNvbnRleHQgewor
cHVibGljOgorICAgIENvbnRleHRNZW51Q29udGV4dCgpOworICAgIENvbnRleHRNZW51Q29udGV4
dChjb25zdCBIaXRUZXN0UmVzdWx0JiwgYm9vbCBpc0ltYWdlQ29udHJvbCA9IGZhbHNlKTsKKwor
ICAgIGNvbnN0IEhpdFRlc3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQoKSBjb25zdCB7IHJldHVybiBt
X2hpdFRlc3RSZXN1bHQ7IH0KKworI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICBib29s
IGlzSW1hZ2VDb250cm9sKCkgY29uc3QgeyByZXR1cm4gbV9pc0ltYWdlQ29udHJvbDsgfQorI2Vu
ZGlmCisKK3ByaXZhdGU6CisKKyAgICBIaXRUZXN0UmVzdWx0IG1faGl0VGVzdFJlc3VsdDsKKwor
I2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICBib29sIG1faXNJbWFnZUNvbnRyb2w7Cisj
ZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShD
T05URVhUX01FTlVTKQorI2VuZGlmIC8vIENvbnRleHRNZW51Q29udGV4dF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggMGNhNjFjYi4uYzYx
ZThhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpzaG93Q29u
dGV4dE1lbnUoRXZlbnQqIGV2ZW50LCBQYXNzUmVmUHRyPENvbnRleHRNZW51CiAgICAgfQogCiAg
ICAgbV9tZW51UHJvdmlkZXItPnBvcHVsYXRlQ29udGV4dE1lbnUobV9jb250ZXh0TWVudS5nZXQo
KSk7Ci0gICAgaWYgKG1faGl0VGVzdFJlc3VsdC5pc1NlbGVjdGVkKCkpIHsKKyAgICBpZiAobV9j
b250ZXh0LmhpdFRlc3RSZXN1bHQoKS5pc1NlbGVjdGVkKCkpIHsKICAgICAgICAgYXBwZW5kSXRl
bSgqc2VwYXJhdG9ySXRlbSgpLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICAgICAgICAgcG9wdWxh
dGUoKTsKICAgICB9CkBAIC0xMzgsMTMgKzEzOCwxOCBAQCBQYXNzT3duUHRyPENvbnRleHRNZW51
PiBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNyZWF0ZUNvbnRleHRNZW51KEV2ZW50KiBldmVudCkK
ICAgICBNb3VzZUV2ZW50JiBtb3VzZUV2ZW50ID0gdG9Nb3VzZUV2ZW50KCpldmVudCk7CiAgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQobW91c2VFdmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkpOwogCi0g
ICAgaWYgKEZyYW1lKiBmcmFtZSA9IGV2ZW50LT50YXJnZXQoKS0+dG9Ob2RlKCktPmRvY3VtZW50
KCkuZnJhbWUoKSkKKyAgICBOb2RlKiBub2RlID0gZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKTsK
KyAgICBpZiAoRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAg
ICByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQobW91
c2VFdmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkpOwotCisgICAgCiAgICAgaWYgKCFyZXN1bHQuaW5u
ZXJOb25TaGFyZWROb2RlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgbV9oaXRU
ZXN0UmVzdWx0ID0gcmVzdWx0OworI2lmIEVOQUJMRShJTUFHRV9DT05UUk9MUykKKyAgICBtX2Nv
bnRleHQgPSBDb250ZXh0TWVudUNvbnRleHQocmVzdWx0LCBub2RlLT5pc0ltYWdlQ29udHJvbHNS
b290RWxlbWVudCgpKTsKKyNlbHNlCisgICAgbV9jb250ZXh0ID0gQ29udGV4dE1lbnVDb250ZXh0
KHJlc3VsdCk7CisjZW5kaWYKIAogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ29udGV4dE1lbnUp
OwogfQpAQCAtMjA4LDY1ICsyMTMsNjUgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNv
bnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIEZyYW1lKiBmcmFtZSA9IG1faGl0VGVzdFJlc3VsdC5pbm5lck5v
blNoYXJlZE5vZGUoKS0+ZG9jdW1lbnQoKS5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IG1f
Y29udGV4dC5oaXRUZXN0UmVzdWx0KCkuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50KCku
ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBzd2l0Y2gg
KGl0ZW0tPmFjdGlvbigpKSB7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0lu
TmV3V2luZG93OgotICAgICAgICBvcGVuTmV3V2luZG93KG1faGl0VGVzdFJlc3VsdC5hYnNvbHV0
ZUxpbmtVUkwoKSwgZnJhbWUpOworICAgICAgICBvcGVuTmV3V2luZG93KG1fY29udGV4dC5oaXRU
ZXN0UmVzdWx0KCkuYWJzb2x1dGVMaW5rVVJMKCksIGZyYW1lKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2s6CiAgICAgICAgIC8v
IEZJWE1FOiBTb21lIGRheSB3ZSBzaG91bGQgYmUgYWJsZSB0byBkbyB0aGlzIGZyb20gd2l0aGlu
IFdlYkNvcmUuIChCdWcgMTE3NzA5KQotICAgICAgICBtX2NsaWVudC5kb3dubG9hZFVSTChtX2hp
dFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCkpOworICAgICAgICBtX2NsaWVudC5kb3dubG9h
ZFVSTChtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlTGlua1VSTCgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJk
OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29weVVSTChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1
dGVMaW5rVVJMKCksIG1faGl0VGVzdFJlc3VsdC50ZXh0Q29udGVudCgpKTsKKyAgICAgICAgZnJh
bWUtPmVkaXRvcigpLmNvcHlVUkwobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUxp
bmtVUkwoKSwgbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS50ZXh0Q29udGVudCgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRv
dzoKLSAgICAgICAgb3Blbk5ld1dpbmRvdyhtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVS
TCgpLCBmcmFtZSk7CisgICAgICAgIG9wZW5OZXdXaW5kb3cobV9jb250ZXh0LmhpdFRlc3RSZXN1
bHQoKS5hYnNvbHV0ZUltYWdlVVJMKCksIGZyYW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrOgogICAgICAgICAvLyBGSVhN
RTogU29tZSBkYXkgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZG8gdGhpcyBmcm9tIHdpdGhpbiBXZWJD
b3JlLiAoQnVnIDExNzcwOSkKLSAgICAgICAgbV9jbGllbnQuZG93bmxvYWRVUkwobV9oaXRUZXN0
UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKSk7CisgICAgICAgIG1fY2xpZW50LmRvd25sb2FkVVJM
KG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVJbWFnZVVSTCgpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2FyZDoK
ICAgICAgICAgLy8gRklYTUU6IFRoZSBQYXN0ZWJvYXJkIGNsYXNzIGlzIG5vdCB3cml0dGVuIHll
dAogICAgICAgICAvLyBGb3Igbm93LCBjYWxsIGludG8gdGhlIGNsaWVudC4gVGhpcyBpcyB0ZW1w
b3JhcnkhCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb3B5SW1hZ2UobV9oaXRUZXN0UmVzdWx0
KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvcHlJbWFnZShtX2NvbnRleHQuaGl0VGVzdFJl
c3VsdCgpKTsKICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShF
RkwpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VVcmxUb0NsaXBib2FyZDoK
LSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvcHlVUkwobV9oaXRUZXN0UmVzdWx0LmFic29sdXRl
SW1hZ2VVUkwoKSwgbV9oaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCkpOworICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCkuY29weVVSTChtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlSW1h
Z2VVUkwoKSwgbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS50ZXh0Q29udGVudCgpKTsKICAgICAg
ICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ09wZW5NZWRpYUlu
TmV3V2luZG93OgotICAgICAgICBvcGVuTmV3V2luZG93KG1faGl0VGVzdFJlc3VsdC5hYnNvbHV0
ZU1lZGlhVVJMKCksIGZyYW1lKTsKKyAgICAgICAgb3Blbk5ld1dpbmRvdyhtX2NvbnRleHQuaGl0
VGVzdFJlc3VsdCgpLmFic29sdXRlTWVkaWFVUkwoKSwgZnJhbWUpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTWVkaWFUb0Rpc2s6CiAgICAgICAg
IC8vIEZJWE1FOiBTb21lIGRheSB3ZSBzaG91bGQgYmUgYWJsZSB0byBkbyB0aGlzIGZyb20gd2l0
aGluIFdlYkNvcmUuIChCdWcgMTE3NzA5KQotICAgICAgICBtX2NsaWVudC5kb3dubG9hZFVSTCht
X2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpKTsKKyAgICAgICAgbV9jbGllbnQuZG93
bmxvYWRVUkwobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZU1lZGlhVVJMKCkpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0NvcHlNZWRpYUxpbmtU
b0NsaXBib2FyZDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvcHlVUkwobV9oaXRUZXN0UmVz
dWx0LmFic29sdXRlTWVkaWFVUkwoKSwgbV9oaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCkpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29weVVSTChtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgp
LmFic29sdXRlTWVkaWFVUkwoKSwgbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS50ZXh0Q29udGVu
dCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVN
ZWRpYUNvbnRyb2xzOgotICAgICAgICBtX2hpdFRlc3RSZXN1bHQudG9nZ2xlTWVkaWFDb250cm9s
c0Rpc3BsYXkoKTsKKyAgICAgICAgbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS50b2dnbGVNZWRp
YUNvbnRyb2xzRGlzcGxheSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcDoKLSAgICAgICAgbV9oaXRUZXN0UmVzdWx0LnRvZ2dsZU1l
ZGlhTG9vcFBsYXliYWNrKCk7CisgICAgICAgIG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkudG9n
Z2xlTWVkaWFMb29wUGxheWJhY2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0
TWVudUl0ZW1UYWdUb2dnbGVWaWRlb0Z1bGxzY3JlZW46Ci0gICAgICAgIG1faGl0VGVzdFJlc3Vs
dC50b2dnbGVNZWRpYUZ1bGxzY3JlZW5TdGF0ZSgpOworICAgICAgICBtX2NvbnRleHQuaGl0VGVz
dFJlc3VsdCgpLnRvZ2dsZU1lZGlhRnVsbHNjcmVlblN0YXRlKCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRW50ZXJWaWRlb0Z1bGxzY3JlZW46Ci0gICAgICAg
IG1faGl0VGVzdFJlc3VsdC5lbnRlckZ1bGxzY3JlZW5Gb3JWaWRlbygpOworICAgICAgICBtX2Nv
bnRleHQuaGl0VGVzdFJlc3VsdCgpLmVudGVyRnVsbHNjcmVlbkZvclZpZGVvKCk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5UGF1c2U6Ci0gICAg
ICAgIG1faGl0VGVzdFJlc3VsdC50b2dnbGVNZWRpYVBsYXlTdGF0ZSgpOworICAgICAgICBtX2Nv
bnRleHQuaGl0VGVzdFJlc3VsdCgpLnRvZ2dsZU1lZGlhUGxheVN0YXRlKCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTWVkaWFNdXRlOgotICAgICAgICBtX2hp
dFRlc3RSZXN1bHQudG9nZ2xlTWVkaWFNdXRlU3RhdGUoKTsKKyAgICAgICAgbV9jb250ZXh0Lmhp
dFRlc3RSZXN1bHQoKS50b2dnbGVNZWRpYU11dGVTdGF0ZSgpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3V2luZG93OiB7CiAgICAgICAg
IERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KTsKQEAgLTM3NiwxMyArMzgxLDEzIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250
ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAgIG1fY2xp
ZW50Lmxvb2tVcEluRGljdGlvbmFyeShmcmFtZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnT3Blbkxpbms6Ci0gICAgICAgIGlmIChGcmFtZSogdGFyZ2V0RnJh
bWUgPSBtX2hpdFRlc3RSZXN1bHQudGFyZ2V0RnJhbWUoKSkKLSAgICAgICAgICAgIHRhcmdldEZy
YW1lLT5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QoZnJhbWUtPmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdChtX2hpdFRlc3RSZXN1
bHQuYWJzb2x1dGVMaW5rVVJMKCksIGZyYW1lLT5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkp
KSwgZmFsc2UsIGZhbHNlLCAwLCAwLCBNYXliZVNlbmRSZWZlcnJlcik7CisgICAgICAgIGlmIChG
cmFtZSogdGFyZ2V0RnJhbWUgPSBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLnRhcmdldEZyYW1l
KCkpCisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChG
cmFtZUxvYWRSZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBSZXNv
dXJjZVJlcXVlc3QobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUxpbmtVUkwoKSwg
ZnJhbWUtPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpLCBmYWxzZSwgZmFsc2UsIDAsIDAs
IE1heWJlU2VuZFJlZmVycmVyKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgb3Blbk5ld1dp
bmRvdyhtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCksIGZyYW1lKTsKKyAgICAgICAg
ICAgIG9wZW5OZXdXaW5kb3cobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUxpbmtV
UkwoKSwgZnJhbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z09wZW5MaW5rSW5UaGlzV2luZG93OgotICAgICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZEZyYW1l
UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLCBSZXNvdXJjZVJlcXVlc3QobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpLCBm
cmFtZS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKSksIGZhbHNlLCBmYWxzZSwgMCwgMCwg
TWF5YmVTZW5kUmVmZXJyZXIpOworICAgICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZEZyYW1lUmVx
dWVzdChGcmFtZUxvYWRSZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
LCBSZXNvdXJjZVJlcXVlc3QobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUxpbmtV
UkwoKSwgZnJhbWUtPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpLCBmYWxzZSwgZmFsc2Us
IDAsIDAsIE1heWJlU2VuZFJlZmVycmVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1UYWdCb2xkOgogICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiVG9n
Z2xlQm9sZCIpLmV4ZWN1dGUoKTsKQEAgLTQwMCw3ICs0MDUsNyBAQCB2b2lkIENvbnRleHRNZW51
Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVt
KQogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2luZzogewogICAgICAgICBS
ZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBmcmFtZS0+c2VsZWN0aW9uKCkudG9Ob3JtYWxp
emVkUmFuZ2UoKTsKICAgICAgICAgaWYgKCFzZWxlY3RlZFJhbmdlIHx8IHNlbGVjdGVkUmFuZ2Ut
PmNvbGxhcHNlZChJR05PUkVfRVhDRVBUSU9OKSkgewotICAgICAgICAgICAgRG9jdW1lbnQmIGRv
Y3VtZW50ID0gbV9oaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpLT5kb2N1bWVudCgp
OworICAgICAgICAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbV9jb250ZXh0LmhpdFRlc3RSZXN1
bHQoKS5pbm5lck5vblNoYXJlZE5vZGUoKS0+ZG9jdW1lbnQoKTsKICAgICAgICAgICAgIHNlbGVj
dGVkUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwogICAgICAgICAgICAgc2VsZWN0ZWRS
YW5nZS0+c2VsZWN0Tm9kZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKSwgSUdOT1JFX0VYQ0VQ
VElPTik7CiAgICAgICAgIH0KQEAgLTQ2OSw3ICs0NzQsNyBAQCB2b2lkIENvbnRleHRNZW51Q29u
dHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQog
I2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdD
aGFuZ2VCYWNrOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY2hhbmdlQmFja1RvUmVwbGFjZWRT
dHJpbmcobV9oaXRUZXN0UmVzdWx0LnJlcGxhY2VkU3RyaW5nKCkpOworICAgICAgICBmcmFtZS0+
ZWRpdG9yKCkuY2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcobV9jb250ZXh0LmhpdFRlc3RSZXN1
bHQoKS5yZXBsYWNlZFN0cmluZygpKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICNpZiBVU0Uo
QVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCkBAIC00OTgsNyArNTAzLDcgQEAgdm9pZCBDb250
ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRl
bSogaXRlbSkKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnSW5zcGVjdEVsZW1lbnQ6CiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2Uo
KSkKLSAgICAgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5pbnNwZWN0KG1faGl0
VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSk7CisgICAgICAgICAgICBwYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkuaW5zcGVjdChtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmlubmVy
Tm9uU2hhcmVkTm9kZSgpKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ0RpY3RhdGlvbkFsdGVybmF0aXZlOgpAQCAtODA0LDIwICs4MDksMjYgQEAg
dm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICBDb250ZXh0TWVudUl0
ZW0gU2VsZWN0QWxsSXRlbShBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTZWxlY3RBbGws
IGNvbnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbCgpKTsKICNlbmRpZgogCi0gICAgTm9kZSogbm9k
ZSA9IG1faGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKTsKKyAgICBOb2RlKiBub2Rl
ID0gbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAgICBp
ZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKICNpZiBQTEFURk9STShHVEspCi0gICAgaWYgKCFt
X2hpdFRlc3RSZXN1bHQuaXNDb250ZW50RWRpdGFibGUoKSAmJiAobm9kZS0+aXNFbGVtZW50Tm9k
ZSgpICYmIHRvRWxlbWVudChub2RlKS0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkpCisgICAgaWYg
KCFtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmlzQ29udGVudEVkaXRhYmxlKCkgJiYgKG5vZGUt
PmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPmlzRm9ybUNvbnRyb2xFbGVtZW50
KCkpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKICAgICBGcmFtZSogZnJhbWUgPSBub2RlLT5k
b2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKCFtX2hpdFRlc3RSZXN1bHQuaXNDb250ZW50RWRpdGFibGUoKSkgeworI2lmIEVOQUJM
RShJTUFHRV9DT05UUk9MUykKKyAgICAvLyBUaGUgZGVmYXVsdCBpbWFnZSBjb250cm9sIG1lbnUg
Z2V0cyBwb3B1bGF0ZWQgc29sZWx5IGJ5IHRoZSBwbGF0Zm9ybS4KKyAgICBpZiAobV9jb250ZXh0
LmlzSW1hZ2VDb250cm9sKCkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCisgICAgaWYgKCFt
X2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmlzQ29udGVudEVkaXRhYmxlKCkpIHsKICAgICAgICAg
RnJhbWVMb2FkZXImIGxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKTsKLSAgICAgICAgVVJMIGxpbmtV
UkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CisgICAgICAgIFVSTCBsaW5r
VVJMID0gbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUxpbmtVUkwoKTsKICAgICAg
ICAgaWYgKCFsaW5rVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKGxvYWRlci5jbGll
bnQoKS5jYW5IYW5kbGVSZXF1ZXN0KFJlc291cmNlUmVxdWVzdChsaW5rVVJMKSkpIHsKICAgICAg
ICAgICAgICAgICBhcHBlbmRJdGVtKE9wZW5MaW5rSXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7
CkBAIC04MjcsMjEgKzgzOCwyMSBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxh
dGUoKQogICAgICAgICAgICAgYXBwZW5kSXRlbShDb3B5TGlua0l0ZW0sIG1fY29udGV4dE1lbnUu
Z2V0KCkpOwogICAgICAgICB9CiAKLSAgICAgICAgVVJMIGltYWdlVVJMID0gbV9oaXRUZXN0UmVz
dWx0LmFic29sdXRlSW1hZ2VVUkwoKTsKKyAgICAgICAgVVJMIGltYWdlVVJMID0gbV9jb250ZXh0
LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUltYWdlVVJMKCk7CiAgICAgICAgIGlmICghaW1hZ2VV
UkwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAoIWxpbmtVUkwuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5n
ZXQoKSk7CiAKICAgICAgICAgICAgIGFwcGVuZEl0ZW0oT3BlbkltYWdlSW5OZXdXaW5kb3dJdGVt
LCBtX2NvbnRleHRNZW51LmdldCgpKTsKICAgICAgICAgICAgIGFwcGVuZEl0ZW0oRG93bmxvYWRJ
bWFnZUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwotICAgICAgICAgICAgaWYgKGltYWdlVVJM
LmlzTG9jYWxGaWxlKCkgfHwgbV9oaXRUZXN0UmVzdWx0LmltYWdlKCkpCisgICAgICAgICAgICBp
ZiAoaW1hZ2VVUkwuaXNMb2NhbEZpbGUoKSB8fCBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmlt
YWdlKCkpCiAgICAgICAgICAgICAgICAgYXBwZW5kSXRlbShDb3B5SW1hZ2VJdGVtLCBtX2NvbnRl
eHRNZW51LmdldCgpKTsKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICAg
ICAgICAgIGFwcGVuZEl0ZW0oQ29weUltYWdlVXJsSXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7
CiAjZW5kaWYKICAgICAgICAgfQogCi0gICAgICAgIFVSTCBtZWRpYVVSTCA9IG1faGl0VGVzdFJl
c3VsdC5hYnNvbHV0ZU1lZGlhVVJMKCk7CisgICAgICAgIFVSTCBtZWRpYVVSTCA9IG1fY29udGV4
dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVNZWRpYVVSTCgpOwogICAgICAgICBpZiAoIW1lZGlh
VVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKCFsaW5rVVJMLmlzRW1wdHkoKSB8fCAh
aW1hZ2VVUkwuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRv
ckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CkBAIC04NjMsNyArODc0LDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChpbWFnZVVSTC5pc0VtcHR5KCkgJiYgbGlua1VSTC5pc0VtcHR5KCkgJiYgbWVkaWFVUkwuaXNF
bXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAobV9oaXRUZXN0UmVzdWx0LmlzU2VsZWN0ZWQoKSkg
eworICAgICAgICAgICAgaWYgKG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuaXNTZWxlY3RlZCgp
KSB7CiAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvbkNvbnRhaW5zUG9zc2libGVXb3JkKGZy
YW1lKSkgewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICAgICAgICAgICAgICBTdHJpbmcg
c2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhm
cmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkpOwpAQCAtOTU5LDcgKzk3MCw3IEBAIHZvaWQg
Q29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHN0
cmluZyB3YXMgYXV0b2NvcnJlY3RlZCwgZ2VuZXJhdGUgYSBjb250ZXh0dWFsIG1lbnUgaXRlbSBh
bGxvd2luZyBpdCB0byBiZSBjaGFuZ2VkIGJhY2suCi0gICAgICAgICAgICAgICAgICAgIFN0cmlu
ZyByZXBsYWNlZFN0cmluZyA9IG1faGl0VGVzdFJlc3VsdC5yZXBsYWNlZFN0cmluZygpOworICAg
ICAgICAgICAgICAgICAgICBTdHJpbmcgcmVwbGFjZWRTdHJpbmcgPSBtX2NvbnRleHQuaGl0VGVz
dFJlc3VsdCgpLnJlcGxhY2VkU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghcmVw
bGFjZWRTdHJpbmcuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0
TWVudUl0ZW0gaXRlbShBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdDaGFuZ2VCYWNrLCBj
b250ZXh0TWVudUl0ZW1UYWdDaGFuZ2VCYWNrKHJlcGxhY2VkU3RyaW5nKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBhcHBlbmRJdGVtKGl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwpAQCAt
OTcyLDcgKzk4Myw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAK
ICAgICAgICAgICAgIGlmICghaGF2ZUNvbnRleHRNZW51SXRlbXNGb3JNaXNzcGVsbGluZ09yR3Jh
bW1lcikgewogICAgICAgICAgICAgICAgIC8vIFNwZWxsaW5nIGFuZCBncmFtbWFyIGNoZWNraW5n
IGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZXMuCi0gICAg
ICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzID0gbV9oaXRU
ZXN0UmVzdWx0LmRpY3RhdGlvbkFsdGVybmF0aXZlcygpOworICAgICAgICAgICAgICAgIFZlY3Rv
cjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyA9IG1fY29udGV4dC5oaXRUZXN0UmVzdWx0
KCkuZGljdGF0aW9uQWx0ZXJuYXRpdmVzKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFkaWN0YXRp
b25BbHRlcm5hdGl2ZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gaXRlbShBY3Rpb25UeXBlLCBDb250
ZXh0TWVudUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5hdGl2ZSwgZGljdGF0aW9uQWx0ZXJuYXRpdmVz
W2ldKTsKQEAgLTk4NCw3ICs5OTUsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9w
dWxhdGUoKQogICAgICAgICB9CiAKICAgICAgICAgRnJhbWVMb2FkZXImIGxvYWRlciA9IGZyYW1l
LT5sb2FkZXIoKTsKLSAgICAgICAgVVJMIGxpbmtVUkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1
dGVMaW5rVVJMKCk7CisgICAgICAgIFVSTCBsaW5rVVJMID0gbV9jb250ZXh0LmhpdFRlc3RSZXN1
bHQoKS5hYnNvbHV0ZUxpbmtVUkwoKTsKICAgICAgICAgaWYgKCFsaW5rVVJMLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgaWYgKGxvYWRlci5jbGllbnQoKS5jYW5IYW5kbGVSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdChsaW5rVVJMKSkpIHsKICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKE9wZW5M
aW5rSXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CkBAIC05OTUsNyArMTAwNiw3IEBAIHZvaWQg
Q29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgICAgICBhcHBlbmRJdGVt
KCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKG1faGl0VGVzdFJlc3VsdC5pc1NlbGVjdGVkKCkgJiYgIWluUGFzc3dvcmRGaWVs
ZCAmJiBzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFtZSkpIHsKKyAgICAgICAgaWYg
KG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkuaXNTZWxlY3RlZCgpICYmICFpblBhc3N3b3JkRmll
bGQgJiYgc2VsZWN0aW9uQ29udGFpbnNQb3NzaWJsZVdvcmQoZnJhbWUpKSB7CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgICAgICAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlz
cGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0
KCkpOwogICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIExvb2tVcEluRGljdGlvbmFyeUl0ZW0o
QWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5LCBjb250ZXh0
TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoc2VsZWN0ZWRTdHJpbmcpKTsKQEAgLTEwODQs
NyArMTA5NSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjphZGRJbnNwZWN0
RWxlbWVudEl0ZW0oKQogewotICAgIE5vZGUqIG5vZGUgPSBtX2hpdFRlc3RSZXN1bHQuaW5uZXJO
b25TaGFyZWROb2RlKCk7CisgICAgTm9kZSogbm9kZSA9IG1fY29udGV4dC5oaXRUZXN0UmVzdWx0
KCkuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm47
CiAKQEAgLTExMTIsNyArMTEyMyw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVj
a09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAgIGlmIChp
dGVtLnR5cGUoKSA9PSBTZXBhcmF0b3JUeXBlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
RnJhbWUqIGZyYW1lID0gbV9oaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpLT5kb2N1
bWVudCgpLmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gbV9jb250ZXh0LmhpdFRlc3RSZXN1
bHQoKS5pbm5lck5vblNoYXJlZE5vZGUoKS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTMxMCw0MCArMTMyMSw0MCBAQCB2b2lkIENv
bnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRl
bSYgaXRlbSkgY29uc3QKICNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnT3Blbk1lZGlhSW5OZXdXaW5kb3c6Ci0gICAgICAgICAgICBpZiAo
bV9oaXRUZXN0UmVzdWx0Lm1lZGlhSXNWaWRlbygpKQorICAgICAgICAgICAgaWYgKG1fY29udGV4
dC5oaXRUZXN0UmVzdWx0KCkubWVkaWFJc1ZpZGVvKCkpCiAgICAgICAgICAgICAgICAgaXRlbS5z
ZXRUaXRsZShjb250ZXh0TWVudUl0ZW1UYWdPcGVuVmlkZW9Jbk5ld1dpbmRvdygpKTsKICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpdGVtLnNldFRpdGxlKGNvbnRleHRNZW51SXRl
bVRhZ09wZW5BdWRpb0luTmV3V2luZG93KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRNZWRpYVRvRGlzazoKLSAgICAgICAgICAg
IGlmIChtX2hpdFRlc3RSZXN1bHQubWVkaWFJc1ZpZGVvKCkpCisgICAgICAgICAgICBpZiAobV9j
b250ZXh0LmhpdFRlc3RSZXN1bHQoKS5tZWRpYUlzVmlkZW8oKSkKICAgICAgICAgICAgICAgICBp
dGVtLnNldFRpdGxlKGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkVmlkZW9Ub0Rpc2soKSk7CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaXRlbS5zZXRUaXRsZShjb250ZXh0TWVu
dUl0ZW1UYWdEb3dubG9hZEF1ZGlvVG9EaXNrKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29weU1lZGlhTGlua1RvQ2xpcGJvYXJkOgotICAg
ICAgICAgICAgaWYgKG1faGl0VGVzdFJlc3VsdC5tZWRpYUlzVmlkZW8oKSkKKyAgICAgICAgICAg
IGlmIChtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLm1lZGlhSXNWaWRlbygpKQogICAgICAgICAg
ICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnQ29weVZpZGVvTGlua1RvQ2xp
cGJvYXJkKCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0
bGUoY29udGV4dE1lbnVJdGVtVGFnQ29weUF1ZGlvTGlua1RvQ2xpcGJvYXJkKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFD
b250cm9sczoKICNpZiBTVVBQT1JUU19UT0dHTEVfU0hPV19ISURFX01FRElBX0NPTlRST0xTCi0g
ICAgICAgICAgICBpdGVtLnNldFRpdGxlKG1faGl0VGVzdFJlc3VsdC5tZWRpYUNvbnRyb2xzRW5h
YmxlZCgpID8gY29udGV4dE1lbnVJdGVtVGFnSGlkZU1lZGlhQ29udHJvbHMoKSA6IGNvbnRleHRN
ZW51SXRlbVRhZ1Nob3dNZWRpYUNvbnRyb2xzKCkpOworICAgICAgICAgICAgaXRlbS5zZXRUaXRs
ZShtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLm1lZGlhQ29udHJvbHNFbmFibGVkKCkgPyBjb250
ZXh0TWVudUl0ZW1UYWdIaWRlTWVkaWFDb250cm9scygpIDogY29udGV4dE1lbnVJdGVtVGFnU2hv
d01lZGlhQ29udHJvbHMoKSk7CiAjZWxzZQotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBtX2hp
dFRlc3RSZXN1bHQubWVkaWFDb250cm9sc0VuYWJsZWQoKTsKKyAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5tZWRpYUNvbnRyb2xzRW5hYmxlZCgpOwog
I2VuZGlmCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdUb2dnbGVNZWRpYUxvb3A6Ci0gICAgICAgICAgICBzaG91bGRDaGVjayA9IG1faGl0VGVzdFJl
c3VsdC5tZWRpYUxvb3BFbmFibGVkKCk7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IG1fY29u
dGV4dC5oaXRUZXN0UmVzdWx0KCkubWVkaWFMb29wRW5hYmxlZCgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVG9nZ2xlVmlkZW9GdWxsc2NyZWVu
OgogI2lmIFNVUFBPUlRTX1RPR0dMRV9WSURFT19GVUxMU0NSRUVOCi0gICAgICAgICAgICBpdGVt
LnNldFRpdGxlKG1faGl0VGVzdFJlc3VsdC5tZWRpYUlzSW5GdWxsc2NyZWVuKCkgPyBjb250ZXh0
TWVudUl0ZW1UYWdFeGl0VmlkZW9GdWxsc2NyZWVuKCkgOiBjb250ZXh0TWVudUl0ZW1UYWdFbnRl
clZpZGVvRnVsbHNjcmVlbigpKTsKKyAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUobV9jb250ZXh0
LmhpdFRlc3RSZXN1bHQoKS5tZWRpYUlzSW5GdWxsc2NyZWVuKCkgPyBjb250ZXh0TWVudUl0ZW1U
YWdFeGl0VmlkZW9GdWxsc2NyZWVuKCkgOiBjb250ZXh0TWVudUl0ZW1UYWdFbnRlclZpZGVvRnVs
bHNjcmVlbigpKTsKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtVGFnRW50ZXJWaWRlb0Z1bGxzY3JlZW46Ci0gICAgICAgICAgICBzaG91bGRF
bmFibGUgPSBtX2hpdFRlc3RSZXN1bHQubWVkaWFTdXBwb3J0c0Z1bGxzY3JlZW4oKTsKKyAgICAg
ICAgICAgIHNob3VsZEVuYWJsZSA9IG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkubWVkaWFTdXBw
b3J0c0Z1bGxzY3JlZW4oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3V2luZG93OgogICAgICAgICBjYXNlIENvbnRleHRN
ZW51SXRlbVRhZ1NwZWxsaW5nR3Vlc3M6CkBAIC0xMzgyLDE0ICsxMzkzLDE0IEBAIHZvaWQgQ29u
dGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVt
JiBpdGVtKSBjb25zdAogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RpY3RhdGlvbkFs
dGVybmF0aXZlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnTWVkaWFQbGF5UGF1c2U6Ci0gICAgICAgICAgICBpZiAobV9oaXRUZXN0UmVzdWx0Lm1l
ZGlhUGxheWluZygpKQorICAgICAgICAgICAgaWYgKG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCku
bWVkaWFQbGF5aW5nKCkpCiAgICAgICAgICAgICAgICAgaXRlbS5zZXRUaXRsZShjb250ZXh0TWVu
dUl0ZW1UYWdNZWRpYVBhdXNlKCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
IGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5KCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTWVkaWFNdXRlOgotICAg
ICAgICAgICAgc2hvdWxkRW5hYmxlID0gbV9oaXRUZXN0UmVzdWx0Lm1lZGlhSGFzQXVkaW8oKTsK
LSAgICAgICAgICAgIHNob3VsZENoZWNrID0gc2hvdWxkRW5hYmxlICYmICBtX2hpdFRlc3RSZXN1
bHQubWVkaWFNdXRlZCgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gbV9jb250ZXh0Lmhp
dFRlc3RSZXN1bHQoKS5tZWRpYUhhc0F1ZGlvKCk7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9
IHNob3VsZEVuYWJsZSAmJiAgbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5tZWRpYU11dGVkKCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE0MTEsNiArMTQyMiwxNSBAQCB2b2lk
IENvbnRleHRNZW51Q29udHJvbGxlcjo6c2hvd0NvbnRleHRNZW51QXQoRnJhbWUqIGZyYW1lLCBj
b25zdCBJbnRQb2ludCYgY2xpYwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJP
TFMpCit2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6c2hvd0ltYWdlQ29udHJvbHNNZW51KEV2
ZW50KiBldmVudCkKK3sKKyAgICBjbGVhckNvbnRleHRNZW51KCk7CisgICAgaGFuZGxlQ29udGV4
dE1lbnVFdmVudChldmVudCk7CisgICAgbV9jbGllbnQuc2hvd0NvbnRleHRNZW51KCk7Cit9Cisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRF
WFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaApp
bmRleCBmZWYxMzUzLi5lODc4YjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1l
bnVDb250cm9sbGVyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShDT05URVhUX01F
TlVTKQogCi0jaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51
Q29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMzYsNjIgKzM2LDY3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIENvbnRleHRNZW51OwotICAgIGNs
YXNzIENvbnRleHRNZW51Q2xpZW50OwotICAgIGNsYXNzIENvbnRleHRNZW51SXRlbTsKLSAgICBj
bGFzcyBDb250ZXh0TWVudVByb3ZpZGVyOwotICAgIGNsYXNzIEV2ZW50OwotICAgIGNsYXNzIFBh
Z2U7CitjbGFzcyBDb250ZXh0TWVudTsKK2NsYXNzIENvbnRleHRNZW51Q2xpZW50OworY2xhc3Mg
Q29udGV4dE1lbnVJdGVtOworY2xhc3MgQ29udGV4dE1lbnVQcm92aWRlcjsKK2NsYXNzIEV2ZW50
OworY2xhc3MgUGFnZTsKIAotICAgIGNsYXNzIENvbnRleHRNZW51Q29udHJvbGxlciB7Ci0gICAg
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbnRleHRNZW51Q29udHJvbGxlcik7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgQ29udGV4dE1lbnVDb250cm9s
bGVyKFBhZ2UmLCBDb250ZXh0TWVudUNsaWVudCYpOwotICAgICAgICB+Q29udGV4dE1lbnVDb250
cm9sbGVyKCk7CitjbGFzcyBDb250ZXh0TWVudUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKENvbnRleHRNZW51Q29udHJvbGxlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworcHVibGljOgorICAgIENvbnRleHRNZW51Q29udHJvbGxlcihQYWdlJiwgQ29udGV4dE1lbnVD
bGllbnQmKTsKKyAgICB+Q29udGV4dE1lbnVDb250cm9sbGVyKCk7CiAKLSAgICAgICAgQ29udGV4
dE1lbnUqIGNvbnRleHRNZW51KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0TWVudS5nZXQoKTsg
fQotICAgICAgICB2b2lkIGNsZWFyQ29udGV4dE1lbnUoKTsKKyAgICBDb250ZXh0TWVudSogY29u
dGV4dE1lbnUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRNZW51LmdldCgpOyB9CisgICAgdm9p
ZCBjbGVhckNvbnRleHRNZW51KCk7CiAKLSAgICAgICAgdm9pZCBoYW5kbGVDb250ZXh0TWVudUV2
ZW50KEV2ZW50Kik7Ci0gICAgICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KEV2ZW50KiwgUGFzc1Jl
ZlB0cjxDb250ZXh0TWVudVByb3ZpZGVyPik7CisgICAgdm9pZCBoYW5kbGVDb250ZXh0TWVudUV2
ZW50KEV2ZW50Kik7CisgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoRXZlbnQqLCBQYXNzUmVmUHRy
PENvbnRleHRNZW51UHJvdmlkZXI+KTsKIAotICAgICAgICB2b2lkIHBvcHVsYXRlKCk7Ci0gICAg
ICAgIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKik7Ci0gICAg
ICAgIHZvaWQgYWRkSW5zcGVjdEVsZW1lbnRJdGVtKCk7CisgICAgdm9pZCBwb3B1bGF0ZSgpOwor
ICAgIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKik7CisgICAg
dm9pZCBhZGRJbnNwZWN0RWxlbWVudEl0ZW0oKTsKIAotICAgICAgICB2b2lkIGNoZWNrT3JFbmFi
bGVJZk5lZWRlZChDb250ZXh0TWVudUl0ZW0mKSBjb25zdDsKKyAgICB2b2lkIGNoZWNrT3JFbmFi
bGVJZk5lZWRlZChDb250ZXh0TWVudUl0ZW0mKSBjb25zdDsKIAotICAgICAgICB2b2lkIHNldEhp
dFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KSB7IG1faGl0VGVzdFJlc3Vs
dCA9IHJlc3VsdDsgfQotICAgICAgICBjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0
KCkgeyByZXR1cm4gbV9oaXRUZXN0UmVzdWx0OyB9CisgICAgdm9pZCBzZXRDb250ZXh0TWVudUNv
bnRleHQoY29uc3QgQ29udGV4dE1lbnVDb250ZXh0JiBjb250ZXh0KSB7IG1fY29udGV4dCA9IGNv
bnRleHQ7IH0KKyAgICBjb25zdCBDb250ZXh0TWVudUNvbnRleHQmIGNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRleHQ7IH0KKyAgICBjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVz
dWx0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKTsgfQogCiAjaWYg
VVNFKEFDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUykKLSAgICAgICAgdm9pZCBzaG93Q29udGV4
dE1lbnVBdChGcmFtZSosIGNvbnN0IEludFBvaW50JiBjbGlja1BvaW50KTsKKyAgICB2b2lkIHNo
b3dDb250ZXh0TWVudUF0KEZyYW1lKiwgY29uc3QgSW50UG9pbnQmIGNsaWNrUG9pbnQpOwogI2Vu
ZGlmCiAKLSAgICBwcml2YXRlOgotICAgICAgICBQYXNzT3duUHRyPENvbnRleHRNZW51PiBjcmVh
dGVDb250ZXh0TWVudShFdmVudCopOwotICAgICAgICB2b2lkIHNob3dDb250ZXh0TWVudShFdmVu
dCopOwotICAgICAgICAKLSAgICAgICAgdm9pZCBhcHBlbmRJdGVtKENvbnRleHRNZW51SXRlbSYs
IENvbnRleHRNZW51KiBwYXJlbnRNZW51KTsKLQotICAgICAgICB2b2lkIGNyZWF0ZUFuZEFwcGVu
ZEZvbnRTdWJNZW51KENvbnRleHRNZW51SXRlbSYpOwotICAgICAgICB2b2lkIGNyZWF0ZUFuZEFw
cGVuZFNwZWxsaW5nQW5kR3JhbW1hclN1Yk1lbnUoQ29udGV4dE1lbnVJdGVtJik7Ci0gICAgICAg
IHZvaWQgY3JlYXRlQW5kQXBwZW5kU3BlbGxpbmdTdWJNZW51KENvbnRleHRNZW51SXRlbSYpOwot
ICAgICAgICB2b2lkIGNyZWF0ZUFuZEFwcGVuZFNwZWVjaFN1Yk1lbnUoQ29udGV4dE1lbnVJdGVt
JiApOwotICAgICAgICB2b2lkIGNyZWF0ZUFuZEFwcGVuZFdyaXRpbmdEaXJlY3Rpb25TdWJNZW51
KENvbnRleHRNZW51SXRlbSYpOwotICAgICAgICB2b2lkIGNyZWF0ZUFuZEFwcGVuZFRleHREaXJl
Y3Rpb25TdWJNZW51KENvbnRleHRNZW51SXRlbSYpOwotICAgICAgICB2b2lkIGNyZWF0ZUFuZEFw
cGVuZFN1YnN0aXR1dGlvbnNTdWJNZW51KENvbnRleHRNZW51SXRlbSYpOwotICAgICAgICB2b2lk
IGNyZWF0ZUFuZEFwcGVuZFRyYW5zZm9ybWF0aW9uc1N1Yk1lbnUoQ29udGV4dE1lbnVJdGVtJik7
CisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgIHZvaWQgc2hvd0ltYWdlQ29udHJvbHNN
ZW51KEV2ZW50Kik7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBQYXNzT3duUHRyPENvbnRleHRN
ZW51PiBjcmVhdGVDb250ZXh0TWVudShFdmVudCopOworICAgIHZvaWQgc2hvd0NvbnRleHRNZW51
KEV2ZW50Kik7CisgICAgCisgICAgdm9pZCBhcHBlbmRJdGVtKENvbnRleHRNZW51SXRlbSYsIENv
bnRleHRNZW51KiBwYXJlbnRNZW51KTsKKworICAgIHZvaWQgY3JlYXRlQW5kQXBwZW5kRm9udFN1
Yk1lbnUoQ29udGV4dE1lbnVJdGVtJik7CisgICAgdm9pZCBjcmVhdGVBbmRBcHBlbmRTcGVsbGlu
Z0FuZEdyYW1tYXJTdWJNZW51KENvbnRleHRNZW51SXRlbSYpOworICAgIHZvaWQgY3JlYXRlQW5k
QXBwZW5kU3BlbGxpbmdTdWJNZW51KENvbnRleHRNZW51SXRlbSYpOworICAgIHZvaWQgY3JlYXRl
QW5kQXBwZW5kU3BlZWNoU3ViTWVudShDb250ZXh0TWVudUl0ZW0mKTsKKyAgICB2b2lkIGNyZWF0
ZUFuZEFwcGVuZFdyaXRpbmdEaXJlY3Rpb25TdWJNZW51KENvbnRleHRNZW51SXRlbSYpOworICAg
IHZvaWQgY3JlYXRlQW5kQXBwZW5kVGV4dERpcmVjdGlvblN1Yk1lbnUoQ29udGV4dE1lbnVJdGVt
Jik7CisgICAgdm9pZCBjcmVhdGVBbmRBcHBlbmRTdWJzdGl0dXRpb25zU3ViTWVudShDb250ZXh0
TWVudUl0ZW0mKTsKKyAgICB2b2lkIGNyZWF0ZUFuZEFwcGVuZFRyYW5zZm9ybWF0aW9uc1N1Yk1l
bnUoQ29udGV4dE1lbnVJdGVtJik7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICB2b2lkIGNy
ZWF0ZUFuZEFwcGVuZFVuaWNvZGVTdWJNZW51KENvbnRleHRNZW51SXRlbSYpOworICAgIHZvaWQg
Y3JlYXRlQW5kQXBwZW5kVW5pY29kZVN1Yk1lbnUoQ29udGV4dE1lbnVJdGVtJik7CiAjZW5kaWYK
IAotICAgICAgICBQYWdlJiBtX3BhZ2U7Ci0gICAgICAgIENvbnRleHRNZW51Q2xpZW50JiBtX2Ns
aWVudDsKLSAgICAgICAgT3duUHRyPENvbnRleHRNZW51PiBtX2NvbnRleHRNZW51OwotICAgICAg
ICBSZWZQdHI8Q29udGV4dE1lbnVQcm92aWRlcj4gbV9tZW51UHJvdmlkZXI7Ci0gICAgICAgIEhp
dFRlc3RSZXN1bHQgbV9oaXRUZXN0UmVzdWx0OwotICAgIH07CisgICAgUGFnZSYgbV9wYWdlOwor
ICAgIENvbnRleHRNZW51Q2xpZW50JiBtX2NsaWVudDsKKyAgICBPd25QdHI8Q29udGV4dE1lbnU+
IG1fY29udGV4dE1lbnU7CisgICAgUmVmUHRyPENvbnRleHRNZW51UHJvdmlkZXI+IG1fbWVudVBy
b3ZpZGVyOworICAgIENvbnRleHRNZW51Q29udGV4dCBtX2NvbnRleHQ7Cit9OwogCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIv
Q01ha2VMaXN0cy50eHQKaW5kZXggYTNiMjBmOS4uNzAzOWE1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50
eHQKQEAgLTE5NCw2ICsxOTQsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL0No
aWxkUHJvY2Vzcy5jcHAKICAgICBTaGFyZWQvQ2hpbGRQcm9jZXNzUHJveHkuY3BwCiAgICAgU2hh
cmVkL0Nvbm5lY3Rpb25TdGFjay5jcHAKKyAgICBTaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0
YS5jcHAKICAgICBTaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5jcHAKICAgICBTaGFyZWQvRWRp
dG9yU3RhdGUuY3BwCiAgICAgU2hhcmVkL0ZvbnRJbmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDcxNGE0
YTYuLjkxMzAyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxNC0wMi0yNSAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUGlwZSBleHBlcmltZW50
YWwgaW1hZ2UgY29udHJvbHMgbWVudSB1cCB0byBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkzMzkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBXZWJLaXQgb2JqZWN0IHRvIHJlcHJl
c2VudCB0aGUgZGF0YSBmcm9tIGEgQ29udGV4dE1lbnVDb250ZXh0IG9iamVjdCB0aGF0IGNhbiBi
ZSBzaGFyZWQgdmlhIElQQzoKKyAgICAgICAgKiBTaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0
YS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNvbnRleHREYXRhOjpD
b250ZXh0TWVudUNvbnRleHREYXRhKToKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250
ZXh0RGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250ZXh0RGF0
YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250ZXh0RGF0YTo6d2ViSGl0VGVz
dFJlc3VsdERhdGEpOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNvbnRleHREYXRhOjpp
c0ltYWdlQ29udHJvbCk6CisKKyAgICAgICAgVXBkYXRlIHRoZSByZXN0IG9mIFdLMiB0byB1c2Ug
dGhpcyBvYmplY3QgaW5zdGVhZCBvZiBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhIGRpcmVjdGx5Ogor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1lbnUpOiBBbHNvIG1ha2UgYW4gRU5BQkxFKElNQUdF
X0NPTlRST0xTKSBjaGFuZ2UgaGVyZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHRNZW51OjpzaG93KToKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE0LTAyLTI0ICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBQREZWaWV3Q29udHJvbGxlci4q
LCB3aGljaCBpcyB1bnVzZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
Lmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGQyMWQ0
YjIuLmE0MzAzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzYwLDYgKzM2
MCw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbW1h
bmRMaW5lLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db25uZWN0aW9uU3RhY2suY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29ubmVjdGlvblN0YWNrLmggXAorCVNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmNwcCBcCisJU291cmNlL1dlYktpdDIv
U2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVk
L0NvcmVJUENTdXBwb3J0L1dlYkNvbnRleHRNZXNzYWdlS2luZHMuaCBcCiAJU291cmNlL1dlYktp
dDIvU2hhcmVkL0RyYXdpbmdBcmVhSW5mby5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93
bmxvYWRzL0Rvd25sb2FkLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4
dE1lbnVDb250ZXh0RGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OTFkY2NmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0
TWVudUNvbnRleHREYXRhLmNwcApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udGV4dERhdGEuaCIKKworI2lmIEVOQUJMRShD
T05URVhUX01FTlVTKQorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudUNvbnRleHQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitDb250ZXh0TWVudUNvbnRleHREYXRhOjpD
b250ZXh0TWVudUNvbnRleHREYXRhKCkKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAg
OiBtX2lzSW1hZ2VDb250cm9sKGZhbHNlKQorI2VuZGlmCit7Cit9CisKK0NvbnRleHRNZW51Q29u
dGV4dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEoY29uc3QgQ29udGV4dE1lbnVDb250ZXh0
JiBjb250ZXh0KQorICAgIDogbV93ZWJIaXRUZXN0UmVzdWx0RGF0YShXZWJIaXRUZXN0UmVzdWx0
OjpEYXRhKGNvbnRleHQuaGl0VGVzdFJlc3VsdCgpKSkKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJP
TFMpCisgICAgLCBtX2lzSW1hZ2VDb250cm9sKGNvbnRleHQuaXNJbWFnZUNvbnRyb2woKSkKKyNl
bmRpZgoreworfQorCit2b2lkIENvbnRleHRNZW51Q29udGV4dERhdGE6OmVuY29kZShJUEM6OkFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fd2ViSGl0
VGVzdFJlc3VsdERhdGE7CisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xTKQorICAgIGVuY29kZXIg
PDwgbV9pc0ltYWdlQ29udHJvbDsKKyNlbmRpZgorfQorCitib29sIENvbnRleHRNZW51Q29udGV4
dERhdGE6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgQ29udGV4dE1lbnVD
b250ZXh0RGF0YSYgY29udGV4dE1lbnVDb250ZXh0RGF0YSkKK3sKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGNvbnRleHRNZW51Q29udGV4dERhdGEubV93ZWJIaXRUZXN0UmVzdWx0RGF0YSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisjaWYgRU5BQkxFKElNQUdFX0NPTlRST0xT
KQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29udGV4dE1lbnVDb250ZXh0RGF0YS5tX2lzSW1h
Z2VDb250cm9sKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQ09O
VEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVu
dUNvbnRleHREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0
RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYjUxODYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0
YS5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIENvbnRleHRNZW51Q29udGV4dERhdGFf
aAorI2RlZmluZSBDb250ZXh0TWVudUNvbnRleHREYXRhX2gKKworI2lmIEVOQUJMRShDT05URVhU
X01FTlVTKQorCisjaW5jbHVkZSAiV2ViSGl0VGVzdFJlc3VsdC5oIgorCituYW1lc3BhY2UgSVBD
IHsKK2NsYXNzIEFyZ3VtZW50RGVjb2RlcjsKK2NsYXNzIEFyZ3VtZW50RW5jb2RlcjsKK30KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGV4dE1lbnVDb250ZXh0OworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ29udGV4dE1lbnVDb250ZXh0RGF0YSB7CitwdWJsaWM6
CisgICAgQ29udGV4dE1lbnVDb250ZXh0RGF0YSgpOworICAgIENvbnRleHRNZW51Q29udGV4dERh
dGEoY29uc3QgV2ViQ29yZTo6Q29udGV4dE1lbnVDb250ZXh0Jik7CisgICAgCisgICAgY29uc3Qg
V2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYgd2ViSGl0VGVzdFJlc3VsdERhdGEoKSBjb25zdCB7IHJl
dHVybiBtX3dlYkhpdFRlc3RSZXN1bHREYXRhOyB9CisKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJP
TFMpCisgICAgYm9vbCBpc0ltYWdlQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbWFnZUNv
bnRyb2w7IH0KKyNlbmRpZgorCisgICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXIm
KSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImLCBD
b250ZXh0TWVudUNvbnRleHREYXRhJik7CisKK3ByaXZhdGU6CisKKyAgICBXZWJIaXRUZXN0UmVz
dWx0OjpEYXRhIG1fd2ViSGl0VGVzdFJlc3VsdERhdGE7CisKKyNpZiBFTkFCTEUoSU1BR0VfQ09O
VFJPTFMpCisgICAgYm9vbCBtX2lzSW1hZ2VDb250cm9sOworI2VuZGlmCit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQorI2VuZGlm
IC8vIENvbnRleHRNZW51Q29udGV4dERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCBjOWU0ZTk4Li5kYmNmZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzI1MSwyMiArMzI1MSwyMiBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6aGlkZVBvcHVwTWVudSgpCiB9CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKLXZvaWQgV2ViUGFnZVByb3h5OjpzaG93Q29udGV4dE1lbnUoY29uc3QgSW50UG9pbnQmIG1l
bnVMb2NhdGlvbiwgY29uc3QgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYgaGl0VGVzdFJlc3VsdERh
dGEsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgcHJvcG9zZWRJdGVtcywg
SVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpzaG93Q29u
dGV4dE1lbnUoY29uc3QgSW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgQ29udGV4dE1lbnVD
b250ZXh0RGF0YSYgY29udGV4dE1lbnVDb250ZXh0RGF0YSwgY29uc3QgVmVjdG9yPFdlYkNvbnRl
eHRNZW51SXRlbURhdGE+JiBwcm9wb3NlZEl0ZW1zLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNv
ZGVyKQogewotICAgIGludGVybmFsU2hvd0NvbnRleHRNZW51KG1lbnVMb2NhdGlvbiwgaGl0VGVz
dFJlc3VsdERhdGEsIHByb3Bvc2VkSXRlbXMsIGRlY29kZXIpOworICAgIGludGVybmFsU2hvd0Nv
bnRleHRNZW51KG1lbnVMb2NhdGlvbiwgY29udGV4dE1lbnVDb250ZXh0RGF0YSwgcHJvcG9zZWRJ
dGVtcywgZGVjb2Rlcik7CiAgICAgCiAgICAgLy8gTm8gbWF0dGVyIHRoZSByZXN1bHQgb2YgaW50
ZXJuYWxTaG93Q29udGV4dE1lbnUsIGFsd2F5cyBub3RpZnkgdGhlIFdlYlByb2Nlc3MgdGhhdCB0
aGUgbWVudSBpcyBoaWRkZW4gc28gaXQgc3RhcnRzIGhhbmRsaW5nIG1vdXNlIGV2ZW50cyBhZ2Fp
bi4KICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRleHRNZW51SGlk
ZGVuKCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmludGVybmFsU2hvd0Nv
bnRleHRNZW51KGNvbnN0IEludFBvaW50JiBtZW51TG9jYXRpb24sIGNvbnN0IFdlYkhpdFRlc3RS
ZXN1bHQ6OkRhdGEmIGhpdFRlc3RSZXN1bHREYXRhLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1l
bnVJdGVtRGF0YT4mIHByb3Bvc2VkSXRlbXMsIElQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1lbnUoY29uc3QgSW50UG9p
bnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYgY29udGV4dE1l
bnVDb250ZXh0RGF0YSwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBwcm9w
b3NlZEl0ZW1zLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJlZlB0cjxB
UEk6Ok9iamVjdD4gdXNlckRhdGE7CiAgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBt
ZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgcHJvY2VzcygpKTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKG1lc3NhZ2VEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9hY3RpdmVDb250
ZXh0TWVudUhpdFRlc3RSZXN1bHREYXRhID0gaGl0VGVzdFJlc3VsdERhdGE7CisgICAgbV9hY3Rp
dmVDb250ZXh0TWVudUNvbnRleHREYXRhID0gY29udGV4dE1lbnVDb250ZXh0RGF0YTsKIAogICAg
IGlmICghbV9jb250ZXh0TWVudUNsaWVudC5oaWRlQ29udGV4dE1lbnUodGhpcykgJiYgbV9hY3Rp
dmVDb250ZXh0TWVudSkgewogICAgICAgICBtX2FjdGl2ZUNvbnRleHRNZW51LT5oaWRlQ29udGV4
dE1lbnUoKTsKQEAgLTMyODAsMTMgKzMyODAsMjEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmludGVy
bmFsU2hvd0NvbnRleHRNZW51KGNvbnN0IEludFBvaW50JiBtZW51TG9jYXRpb24sIGNvbnN0IFcK
ICAgICAvLyBTaW5jZSBzaG93Q29udGV4dE1lbnUoKSBjYW4gc3BpbiBhIG5lc3RlZCBydW4gbG9v
cCB3ZSBuZWVkIHRvIHR1cm4gb2ZmIHRoZSByZXNwb25zaXZlbmVzcyB0aW1lci4KICAgICBtX3By
b2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RvcCgpOwogCi0gICAgLy8gR2l2ZSB0aGUg
UGFnZUNvbnRleHRNZW51Q2xpZW50IG9uZSBsYXN0IHN3aXBlIGF0IGNoYW5naW5nIHRoZSBtZW51
LgorICAgIC8vIFVubGVzcyB0aGlzIGlzIGFuIGltYWdlIGNvbnRyb2wsIGdpdmUgdGhlIFBhZ2VD
b250ZXh0TWVudUNsaWVudCBvbmUgbGFzdCBzd2lwZSBhdCBjaGFuZ2luZyB0aGUgbWVudS4KICAg
ICBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gaXRlbXM7Ci0gICAgaWYgKCFtX2NvbnRl
eHRNZW51Q2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSh0aGlzLCBwcm9wb3Nl
ZEl0ZW1zLCBpdGVtcywgaGl0VGVzdFJlc3VsdERhdGEsIHVzZXJEYXRhLmdldCgpKSkgewotICAg
ICAgICBpZiAoIW1fY29udGV4dE1lbnVDbGllbnQuc2hvd0NvbnRleHRNZW51KHRoaXMsIG1lbnVM
b2NhdGlvbiwgcHJvcG9zZWRJdGVtcykpCi0gICAgICAgICAgICBtX2FjdGl2ZUNvbnRleHRNZW51
LT5zaG93Q29udGV4dE1lbnUobWVudUxvY2F0aW9uLCBwcm9wb3NlZEl0ZW1zKTsKLSAgICB9IGVs
c2UgaWYgKCFtX2NvbnRleHRNZW51Q2xpZW50LnNob3dDb250ZXh0TWVudSh0aGlzLCBtZW51TG9j
YXRpb24sIGl0ZW1zKSkKLSAgICAgICAgbV9hY3RpdmVDb250ZXh0TWVudS0+c2hvd0NvbnRleHRN
ZW51KG1lbnVMb2NhdGlvbiwgaXRlbXMpOworICAgIGJvb2wgdXNlUHJvcG9zZWRJdGVtcyA9IHRy
dWU7CisKKyNpZiBFTkFCTEUoSU1BR0VfQ09OVFJPTFMpCisgICAgaWYgKCFjb250ZXh0TWVudUNv
bnRleHREYXRhLmlzSW1hZ2VDb250cm9sKCkgJiYgbV9jb250ZXh0TWVudUNsaWVudC5nZXRDb250
ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUodGhpcywgcHJvcG9zZWRJdGVtcywgaXRlbXMsIGNvbnRl
eHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKSwgdXNlckRhdGEuZ2V0KCkp
KSB7CisjZWxzZQorICAgIGlmIChtX2NvbnRleHRNZW51Q2xpZW50LmdldENvbnRleHRNZW51RnJv
bVByb3Bvc2VkTWVudSh0aGlzLCBwcm9wb3NlZEl0ZW1zLCBpdGVtcywgY29udGV4dE1lbnVDb250
ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLCB1c2VyRGF0YS5nZXQoKSkpIHsKKyNlbmRp
ZgorICAgICAgICB1c2VQcm9wb3NlZEl0ZW1zID0gZmFsc2U7CisgICAgfQorICAgIAorICAgIGNv
bnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXNUb1Nob3cgPSB1c2VQcm9w
b3NlZEl0ZW1zID8gcHJvcG9zZWRJdGVtcyA6IGl0ZW1zOworICAgIGlmICghbV9jb250ZXh0TWVu
dUNsaWVudC5zaG93Q29udGV4dE1lbnUodGhpcywgbWVudUxvY2F0aW9uLCBpdGVtc1RvU2hvdykp
CisgICAgICAgIG1fYWN0aXZlQ29udGV4dE1lbnUtPnNob3dDb250ZXh0TWVudShtZW51TG9jYXRp
b24sIGl0ZW1zVG9TaG93KTsKICAgICAKICAgICBtX2NvbnRleHRNZW51Q2xpZW50LmNvbnRleHRN
ZW51RGlzbWlzc2VkKHRoaXMpOwogfQpAQCAtMzMzNSwxNSArMzM0MywxNSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVt
RGF0YSYgaXRlbSkKICAgICB9CiAjZW5kaWYKICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250
ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKSB7Ci0gICAgICAgIG1fcHJvY2Vzcy0+
Y29udGV4dCgpLmRvd25sb2FkKHRoaXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVudUhp
dFRlc3RSZXN1bHREYXRhLmFic29sdXRlSW1hZ2VVUkwpKTsKKyAgICAgICAgbV9wcm9jZXNzLT5j
b250ZXh0KCkuZG93bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRNZW51Q29u
dGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZUltYWdlVVJMKSk7CiAgICAg
ICAgIHJldHVybjsgICAgCiAgICAgfQogICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRN
ZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzaykgewotICAgICAgICBtX3Byb2Nlc3MtPmNvbnRl
eHQoKS5kb3dubG9hZCh0aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVIaXRUZXN0
UmVzdWx0RGF0YS5hYnNvbHV0ZUxpbmtVUkwpKTsKKyAgICAgICAgbV9wcm9jZXNzLT5jb250ZXh0
KCkuZG93bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRNZW51Q29udGV4dERh
dGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZUxpbmtVUkwpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdE
b3dubG9hZE1lZGlhVG9EaXNrKSB7Ci0gICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLmRvd25s
b2FkKHRoaXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVudUhpdFRlc3RSZXN1bHREYXRh
LmFic29sdXRlTWVkaWFVUkwpKTsKKyAgICAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCkuZG93bmxv
YWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0
VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZU1lZGlhVVJMKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVs
bGluZ1doaWxlVHlwaW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggYzkyNGM5Ny4uZmNkM2YzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFQSVNlc3Npb24uaCIKICNpbmNs
dWRlICJBdXRvQ29ycmVjdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIkNvbnRleHRNZW51Q29udGV4dERhdGEuaCIKICNpbmNsdWRlICJEcmFnQ29udHJv
bGxlckFjdGlvbi5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKICNpbmNsdWRlICJF
ZGl0b3JTdGF0ZS5oIgpAQCAtNTAsNyArNTEsNiBAQAogI2luY2x1ZGUgIldlYkZpbmRDbGllbnQu
aCIKICNpbmNsdWRlICJXZWJGb3JtQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5o
IgotI2luY2x1ZGUgIldlYkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJXZWJQYWdlQ29udGV4
dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAj
aW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKQEAgLTEwNjksOCArMTA2OSw4IEBAIHByaXZhdGU6
CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICAvLyBDb250ZXh0IE1lbnUuCi0gICAg
dm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1lbnVMb2NhdGlv
biwgY29uc3QgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0
TWVudUl0ZW1EYXRhPiYsIElQQzo6TWVzc2FnZURlY29kZXImKTsKLSAgICB2b2lkIGludGVybmFs
U2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtZW51TG9jYXRpb24sIGNv
bnN0IFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJ
dGVtRGF0YT4mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisgICAgdm9pZCBzaG93Q29udGV4dE1l
bnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgQ29udGV4dE1l
bnVDb250ZXh0RGF0YSYsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYsIElQ
Qzo6TWVzc2FnZURlY29kZXImKTsKKyAgICB2b2lkIGludGVybmFsU2hvd0NvbnRleHRNZW51KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBtZW51TG9jYXRpb24sIGNvbnN0IENvbnRleHRNZW51Q29u
dGV4dERhdGEmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mLCBJUEM6Ok1l
c3NhZ2VEZWNvZGVyJik7CiAjZW5kaWYKIAogICAgIC8vIFNlYXJjaCBwb3B1cCByZXN1bHRzCkBA
IC0xMjcyLDcgKzEyNzIsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFdlYlBvcHVwTWVudVBy
b3h5PiBtX2FjdGl2ZVBvcHVwTWVudTsKICAgICBSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4g
bV9hY3RpdmVDb250ZXh0TWVudTsKLSAgICBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhIG1fYWN0aXZl
Q29udGV4dE1lbnVIaXRUZXN0UmVzdWx0RGF0YTsKKyAgICBDb250ZXh0TWVudUNvbnRleHREYXRh
IG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YTsKICAgICBSZWZQdHI8V2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJQcm94eT4gbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjsKICAgICBHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5IG1fZ2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXI7CiAgICAgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAy
MzhkMmRmLi4zY2RhMDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTIwNyw3ICsyMDcsNyBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgIyBDb250ZXh0TWVu
dSBtZXNzYWdlcwotICAgIFNob3dDb250ZXh0TWVudShXZWJDb3JlOjpJbnRQb2ludCBtZW51TG9j
YXRpb24sIFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdDo6RGF0YSBoaXRUZXN0UmVzdWx0RGF0YSwg
VmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gaXRlbXMsIFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCisgICAgU2hv
d0NvbnRleHRNZW51KFdlYkNvcmU6OkludFBvaW50IG1lbnVMb2NhdGlvbiwgV2ViS2l0OjpDb250
ZXh0TWVudUNvbnRleHREYXRhIGNvbnRleHRNZW51Q29udGV4dERhdGEsIFZlY3RvcjxXZWJLaXQ6
OldlYkNvbnRleHRNZW51SXRlbURhdGE+IGl0ZW1zLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNl
ck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwogI2VuZGlmCiAKICAgICAjIEF1dGhl
bnRpY2F0aW9uIG1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzgyYjY2Mi4uMTgzYmU5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjU3LDYgKzY1
NywxMCBAQAogCQk1MTAzMkYxRTE4MEY3OTE3MDA5NjFCQjcgLyogRGF0YWJhc2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMDMyRjFDMTgwRjc5MTcwMDk2MUJCNyAvKiBEYXRhYmFzZVRvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9OwogCQk1MTA2NEQzNTE4OTc4MUM0MDA0QjJG
RUIgLyogU1FMaXRlSURCQ3Vyc29yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMDY0RDMzMTg5NzgxQzQwMDRCMkZFQiAvKiBTUUxpdGVJREJDdXJz
b3IuY3BwICovOyB9OwogCQk1MTA2NEQzNjE4OTc4MUM0MDA0QjJGRUIgLyogU1FMaXRlSURCQ3Vy
c29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA2
NEQzNDE4OTc4MUM0MDA0QjJGRUIgLyogU1FMaXRlSURCQ3Vyc29yLmggKi87IH07CisJCTUxMDZE
N0MxMThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHREYXRhLmNwcCBpbiBDb3B5
IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDZEN0JGMThCREJF
NzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHREYXRhLmNwcCAqLzsgfTsKKwkJNTEwNkQ3
QzIxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNkQ3QkYxOEJEQkU3MzAw
MEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuY3BwICovOyB9OworCQk1MTA2RDdDMzE4
QkRCRTczMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oIGluIENvcHkgRmlsZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNkQ3QzAxOEJEQkU3MzAwMEFC
MTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuaCAqLzsgfTsKKwkJNTEwNkQ3QzQxOEJEQkU3
MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDZEN0MwMThCREJFNzMwMDBBQjE2NiAvKiBD
b250ZXh0TWVudUNvbnRleHREYXRhLmggKi87IH07CiAJCTUxMEFGRkI5MTY1NDIwNDgwMDFCQTA1
RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTBBRkZCNzE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VM
b2FkZXIuY3BwICovOyB9OwogCQk1MTBBRkZCQTE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3Vy
Y2VMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMEFGRkI4MTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5oICovOyB9Owog
CQk1MTBDQzg0OTE2MTNDODVDMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3MuYXBwIGluIENvcHkg
RmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQ0M4MEUxNjEzQzc5
OTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzLmFwcCAqLzsgfTsKQEAgLTE2MzQsMTAgKzE2Mzgs
MTIgQEAKIAkJCWRzdFBhdGggPSBXZWJLaXQyLmZyYW1ld29yazsKIAkJCWRzdFN1YmZvbGRlclNw
ZWMgPSAxOwogCQkJZmlsZXMgPSAoCisJCQkJNTEwNkQ3QzExOEJEQkU3MzAwMEFCMTY2IC8qIENv
bnRleHRNZW51Q29udGV4dERhdGEuY3BwIGluIENvcHkgRmlsZXMgKi8sCiAJCQkJNTEwQ0M4NDkx
NjEzQzg1QzAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzLmFwcCBpbiBDb3B5IEZpbGVzICovLAog
CQkJCUJDREUwQUJGMTMyNzI3MDgwMDEyNTlGQiAvKiBQbHVnaW5Qcm9jZXNzLmFwcCBpbiBDb3B5
IEZpbGVzICovLAogCQkJCTUxQTYwQjJBMTgwQ0NFQjUwMEYzQkY1MCAvKiBEYXRhYmFzZVByb2Nl
c3MuYXBwIGluIENvcHkgRmlsZXMgKi8sCiAJCQkJMUE1MERCNjYxMTBBM0Q1NzAwMEQzRkU1IC8q
IFdlYlByb2Nlc3MuYXBwIGluIENvcHkgRmlsZXMgKi8sCisJCQkJNTEwNkQ3QzMxOEJEQkU3MzAw
MEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuaCBpbiBDb3B5IEZpbGVzICovLAogCQkJ
KTsKIAkJCW5hbWUgPSAiQ29weSBGaWxlcyI7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKQEAgLTIzODcsNiArMjM5Myw4IEBACiAJCTUxMDVCMEYzMTYzMDg3MkUw
MEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
MDY0RDMzMTg5NzgxQzQwMDRCMkZFQiAvKiBTUUxpdGVJREJDdXJzb3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMaXRlSURCQ3Vyc29yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwNjREMzQxODk3ODFDNDAwNEIyRkVCIC8qIFNRTGl0ZUlE
QkN1cnNvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxpdGVJREJDdXJz
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwNkQ3QkYxOEJEQkU3MzAwMEFC
MTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxMDZEN0MwMThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNv
bnRleHREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRleHRNZW51
Q29udGV4dERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwQUZGQjcxNjU0
MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlJlc291cmNlTG9hZGVyLmNwcDsgcGF0aCA9IE5ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBB
RkZCODE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViUmVzb3VyY2VMb2FkZXIuaDsgcGF0aCA9IE5ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwQUZG
Q0UxNjU0MkNCRDAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9
IFdlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM4NzUs
NiArMzg4Myw4IEBACiAJCQkJMUE2RjlGOEUxMUUxM0VGQzAwREIxMzcxIC8qIENvbW1hbmRMaW5l
LmggKi8sCiAJCQkJNTEzNjE4M0IxNjMxMjZEQTAwQTk5RERFIC8qIENvbm5lY3Rpb25TdGFjay5j
cHAgKi8sCiAJCQkJNTEzNjE4M0MxNjMxMjZEQTAwQTk5RERFIC8qIENvbm5lY3Rpb25TdGFjay5o
ICovLAorCQkJCTUxMDZEN0JGMThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHRE
YXRhLmNwcCAqLywKKwkJCQk1MTA2RDdDMDE4QkRCRTczMDAwQUIxNjYgLyogQ29udGV4dE1lbnVD
b250ZXh0RGF0YS5oICovLAogCQkJCUJDRTgxRDk2MTMxQUUwMjAwMDI0MTkxMCAvKiBEaWN0aW9u
YXJ5UG9wdXBJbmZvLmNwcCAqLywKIAkJCQlCQ0U4MUQ5NzEzMUFFMDIxMDAyNDE5MTAgLyogRGlj
dGlvbmFyeVBvcHVwSW5mby5oICovLAogCQkJCUM1MTczODgwMTJERjhGNEYwMEVFM0Y0NyAvKiBE
cmFnQ29udHJvbGxlckFjdGlvbi5oICovLApAQCAtNjQ4OCw2ICs2NDk4LDcgQEAKIAkJCQkxQUI4
QTFFQzE4NDAwODA5MDBFOUFFNjkgLyogV0tQYWdlTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTJEODRBMzEyN0Y2QUQxMDAxRUI5NjIgLyogTlBWYXJpYW50RGF0YS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM4QUNBMTMxNjY3MEQ4OTAwNEMxOTQxIC8qIE9iakNPYmplY3RHcmFw
aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwNkQ3QzQxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRl
eHRNZW51Q29udGV4dERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOEFDQTE1MTY2NzBEODkw
MDRDMTk0MSAvKiBPYmpDT2JqZWN0R3JhcGhDb2RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
Q0Y2NzJEMTJDN0VERjcwMDhGOUMzNSAvKiBPcmlnaW5BbmREYXRhYmFzZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBNUIxQzUxMTg5ODYwNkYwMDRGQ0Y5QiAvKiBXS05hdmlnYXRpb24uaCBpbiBI
ZWFkZXJzICovLApAQCAtODA4Niw2ICs4MDk3LDcgQEAKIAkJCQlDRDczQkE0NzEzMUFDQzlBMDBF
RURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzFCRTFFMTEyRDU0QTQxMDAwNEEyMjggLyogV2ViR2VvbG9jYXRp
b25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwRTVGRTYxMkQ2OTcxNjAwMTJBNzJB
IC8qIFdlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTA2RDdD
MjE4QkRCRTczMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzBFNjA2MTEyRDZCQTkxMDAxMkE3MkEgLyogV2ViR2VvbG9jYXRpb25NYW5h
Z2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDY0RDM1MTg5Nzgx
QzQwMDRCMkZFQiAvKiBTUUxpdGVJREJDdXJzb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1
NENBQ0MxMkQ2NDI5MTAwNUM2N0IwIC8qIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkNvbnRleHRNZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJDb250ZXh0TWVudS5jcHAKaW5kZXggZjZjOTQwZS4uYjAwMzBkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwCkBA
IC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudS5oIgogCisjaW5jbHVk
ZSAiQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSGl0
VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMu
aCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKQEAgLTY2LDExICs2NywxMSBA
QCB2b2lkIFdlYkNvbnRleHRNZW51OjpzaG93KCkKICAgICBWZWN0b3I8V2ViQ29udGV4dE1lbnVJ
dGVtRGF0YT4gbWVudUl0ZW1zOwogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAg
ICAgbWVudUl0ZW1zV2l0aFVzZXJEYXRhKG1lbnVJdGVtcywgdXNlckRhdGEpOwotICAgIFdlYkhp
dFRlc3RSZXN1bHQ6OkRhdGEgd2ViSGl0VGVzdFJlc3VsdERhdGEoY29udHJvbGxlci5oaXRUZXN0
UmVzdWx0KCkpOworICAgIENvbnRleHRNZW51Q29udGV4dERhdGEgY29udGV4dE1lbnVDb250ZXh0
RGF0YShjb250cm9sbGVyLmNvbnRleHQoKSk7CiAKICAgICAvLyBNYXJrIHRoZSBXZWJQYWdlIGhh
cyBoYXZpbmcgYSBzaG93biBjb250ZXh0IG1lbnUgdGhlbiBub3RpZnkgdGhlIFVJUHJvY2Vzcy4K
ICAgICBtX3BhZ2UtPmNvbnRleHRNZW51U2hvd2luZygpOwotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpTaG93Q29udGV4dE1lbnUodmlldy0+Y29udGVudHNUb1dpbmRv
dyhjb250cm9sbGVyLmhpdFRlc3RSZXN1bHQoKS5yb3VuZGVkUG9pbnRJbklubmVyTm9kZUZyYW1l
KCkpLCB3ZWJIaXRUZXN0UmVzdWx0RGF0YSwgbWVudUl0ZW1zLCBJbmplY3RlZEJ1bmRsZVVzZXJN
ZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvbnRleHRNZW51KHZpZXctPmNvbnRlbnRzVG9XaW5kb3co
Y29udHJvbGxlci5oaXRUZXN0UmVzdWx0KCkucm91bmRlZFBvaW50SW5Jbm5lck5vZGVGcmFtZSgp
KSwgY29udGV4dE1lbnVDb250ZXh0RGF0YSwgbWVudUl0ZW1zLCBJbmplY3RlZEJ1bmRsZVVzZXJN
ZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJDb250ZXh0TWVu
dTo6aXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCg==
</data>
<flag name="review"
          id="249376"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>